rev 8032 - in kde-extras: . tora tora/branches tora/branches/upstream tora/branches/upstream/current tora/branches/upstream/current/config tora/branches/upstream/current/config/m4 tora/branches/upstream/current/debian tora/branches/upstream/current/doc tora/branches/upstream/current/doc/help tora/branches/upstream/current/doc/help/api tora/branches/upstream/current/doc/help/images tora/branches/upstream/current/doc/help/tora tora/branches/upstream/current/ext tora/branches/upstream/current/ext/loki tora/branches/upstream/current/ext/loki/loki-0.1.6 tora/branches/upstream/current/ext/loki/loki-0.1.6/include tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli tora/branches/upstream/current/ext/loki/loki-0.1.6/src tora/branches/upstream/current/ext/otl tora/branches/upstream/current/rpm tora/branches/upstream/current/src tora/branches/upstream/current/src/i18n tora/branches/upstream/current/src/icons tora/branches/upstream/current/src/templates tora/branches/upstream/current/src/windows tora/branches/upstream/current/src/windows/installer tora/branches/upstream/current/test tora/branches/upstream/current/test/configuration tora/branches/upstream/current/utils tora/branches/upstream/current/utils/chex

Michael Meskes meskes at alioth.debian.org
Thu Nov 22 09:20:09 UTC 2007


Author: meskes
Date: 2007-11-22 09:20:06 +0000 (Thu, 22 Nov 2007)
New Revision: 8032

Added:
   kde-extras/tora/
   kde-extras/tora/branches/
   kde-extras/tora/branches/upstream/
   kde-extras/tora/branches/upstream/current/
   kde-extras/tora/branches/upstream/current/AUTHORS
   kde-extras/tora/branches/upstream/current/BUGS
   kde-extras/tora/branches/upstream/current/COPYING
   kde-extras/tora/branches/upstream/current/ChangeLog
   kde-extras/tora/branches/upstream/current/INSTALL
   kde-extras/tora/branches/upstream/current/LICENSE.txt
   kde-extras/tora/branches/upstream/current/Makefile.OSX
   kde-extras/tora/branches/upstream/current/Makefile.am
   kde-extras/tora/branches/upstream/current/Makefile.in
   kde-extras/tora/branches/upstream/current/Makefile.mingw
   kde-extras/tora/branches/upstream/current/NEWS
   kde-extras/tora/branches/upstream/current/README
   kde-extras/tora/branches/upstream/current/README.CODESTYLE
   kde-extras/tora/branches/upstream/current/README.CVS
   kde-extras/tora/branches/upstream/current/README.LICENSE
   kde-extras/tora/branches/upstream/current/README.OSX
   kde-extras/tora/branches/upstream/current/README.RELEASE
   kde-extras/tora/branches/upstream/current/README.WINDOWS
   kde-extras/tora/branches/upstream/current/TODO
   kde-extras/tora/branches/upstream/current/aclocal.m4
   kde-extras/tora/branches/upstream/current/autogen.sh
   kde-extras/tora/branches/upstream/current/config.guess
   kde-extras/tora/branches/upstream/current/config.h.in
   kde-extras/tora/branches/upstream/current/config.sub
   kde-extras/tora/branches/upstream/current/config/
   kde-extras/tora/branches/upstream/current/config/config.guess
   kde-extras/tora/branches/upstream/current/config/config.sub
   kde-extras/tora/branches/upstream/current/config/depcomp
   kde-extras/tora/branches/upstream/current/config/install-sh
   kde-extras/tora/branches/upstream/current/config/ltmain.sh
   kde-extras/tora/branches/upstream/current/config/m4/
   kde-extras/tora/branches/upstream/current/config/m4/cppunit.m4
   kde-extras/tora/branches/upstream/current/config/m4/oracle.m4
   kde-extras/tora/branches/upstream/current/config/m4/pcre.m4
   kde-extras/tora/branches/upstream/current/config/m4/qtkde.m4
   kde-extras/tora/branches/upstream/current/config/m4/tora.m4
   kde-extras/tora/branches/upstream/current/config/missing
   kde-extras/tora/branches/upstream/current/config/mkinstalldirs
   kde-extras/tora/branches/upstream/current/config/texinfo.tex
   kde-extras/tora/branches/upstream/current/configure
   kde-extras/tora/branches/upstream/current/configure.ac
   kde-extras/tora/branches/upstream/current/debian/
   kde-extras/tora/branches/upstream/current/debian/README.Debian
   kde-extras/tora/branches/upstream/current/debian/changelog
   kde-extras/tora/branches/upstream/current/debian/control
   kde-extras/tora/branches/upstream/current/debian/copyright
   kde-extras/tora/branches/upstream/current/debian/debian.patch
   kde-extras/tora/branches/upstream/current/debian/dirs
   kde-extras/tora/branches/upstream/current/debian/docs
   kde-extras/tora/branches/upstream/current/debian/menu
   kde-extras/tora/branches/upstream/current/debian/rules
   kde-extras/tora/branches/upstream/current/debian/tora.wrapper
   kde-extras/tora/branches/upstream/current/debian/tora.xml
   kde-extras/tora/branches/upstream/current/depcomp
   kde-extras/tora/branches/upstream/current/doc/
   kde-extras/tora/branches/upstream/current/doc/Makefile.am
   kde-extras/tora/branches/upstream/current/doc/Makefile.in
   kde-extras/tora/branches/upstream/current/doc/help/
   kde-extras/tora/branches/upstream/current/doc/help/Makefile
   kde-extras/tora/branches/upstream/current/doc/help/Makefile.am
   kde-extras/tora/branches/upstream/current/doc/help/Makefile.in
   kde-extras/tora/branches/upstream/current/doc/help/additionalhelp.texi
   kde-extras/tora/branches/upstream/current/doc/help/alert.texi
   kde-extras/tora/branches/upstream/current/doc/help/analyze.texi
   kde-extras/tora/branches/upstream/current/doc/help/api.texi
   kde-extras/tora/branches/upstream/current/doc/help/api/
   kde-extras/tora/branches/upstream/current/doc/help/api/TODock.html
   kde-extras/tora/branches/upstream/current/doc/help/api/TOFileDialog.html
   kde-extras/tora/branches/upstream/current/doc/help/api/TOMessageBox.html
   kde-extras/tora/branches/upstream/current/doc/help/api/TOPrinter.html
   kde-extras/tora/branches/upstream/current/doc/help/api/all-globals.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TODock.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOFileDialog.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOMessageBox.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOPrinter.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBackground.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBarChart.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBusy.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toChangeConnection.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionProvider.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionSub.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionWidget.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__cacheObjects.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__connectionImpl.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__exception.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__objectName.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toDatatype.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toEditWidget.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toEditWidget__editHandler.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__columnInfo.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__datatype.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__extractor.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toFilesize.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelp.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpBrowser.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpContext.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpTool.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHighlightedText.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHtml.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLegendChart.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLineChart.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toListView.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLock.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLocker.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMain.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMainWindow.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMarkedText.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMemoEditor.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMultiLineEdit.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toNoBlockQuery.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toNoBlockQuery__queryTask.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toParamGet.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toParamGetButton.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPieChart.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPieConnector.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPopupButton.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQValue.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQValue__queryValue.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery__queryDescribe.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery__queryImpl.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResult.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultBar.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultColsComment.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols__resultCols.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols__resultColsEdit.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCombo.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultConstraint.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContent.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentEditor.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentEditor__contentItem.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentMemo.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentSingle.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultDepend.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultField.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultFilter.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultIndexes.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultItem.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLabel.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLine.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultListFormat.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLong.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultObject.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultPie.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultPlan.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultReferences.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultResources.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultStats.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultView.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewCheck.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewCheck__keyData.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewItem.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewItem__keyData.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewMLCheck.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewMLine.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSGAStatement.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSMTP.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__editorTokenizer.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__settings.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__statement.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__stringTokenizer.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__tokenizer.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL__definition.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL__version.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSemaphore.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSettingTab.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer__highlightInfo.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer__posibleHit.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabBar.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabBar__barTab.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabWidget.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTask.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplate.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateItem.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateProvider.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateSQL.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateSQLObject.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateText.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTextView.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toThread.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toThread__taskRunner.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTimer.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTool.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toToolWidget.html
   kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toVisualize.html
   kde-extras/tora/branches/upstream/current/doc/help/api/header-list.html
   kde-extras/tora/branches/upstream/current/doc/help/api/hier.html
   kde-extras/tora/branches/upstream/current/doc/help/api/index-long.html
   kde-extras/tora/branches/upstream/current/doc/help/api/index.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toBackground.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toBarChart.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toBusy.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toChangeConnection.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toConnection.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionProvider.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionSub.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionWidget.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__cacheObjects.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__connectionImpl.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__exception.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__objectName.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toDatatype.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toEditWidget.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toEditWidget__editHandler.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toExtract.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__columnInfo.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__datatype.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__extractor.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toFilesize.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toHelp.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toHelpBrowser.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toHelpContext.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toHelpTool.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toHighlightedText.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toHtml.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toLegendChart.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toLineChart.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toListView.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toLock.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toLocker.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toMain.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toMainWindow.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toMarkedText.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toMemoEditor.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toMultiLineEdit.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toNoBlockQuery.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toNoBlockQuery__queryTask.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toParamGet.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toParamGetButton.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toPieChart.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toPieConnector.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toPopupButton.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toQValue.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toQValue__queryValue.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toQuery.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toQuery__queryDescribe.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toQuery__queryImpl.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResult.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultBar.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultColsComment.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols__resultCols.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols__resultColsEdit.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultCombo.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultConstraint.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultContent.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentEditor.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentEditor__contentItem.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentMemo.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentSingle.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultDepend.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultField.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultFilter.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultIndexes.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultItem.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultLabel.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultLine.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultListFormat.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultLong.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultObject.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultPie.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultPlan.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultReferences.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultResources.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultStats.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultView.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewCheck.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewCheck__keyData.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewItem.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewItem__keyData.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewMLCheck.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewMLine.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSGAStatement.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSMTP.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSQL.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__editorTokenizer.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__settings.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__statement.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__stringTokenizer.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__tokenizer.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSQL__definition.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSQL__version.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSemaphore.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSettingTab.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer__highlightInfo.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer__posibleHit.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTabBar.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTabBar__barTab.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTabWidget.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTask.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTemplate.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateItem.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateProvider.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateSQL.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateSQLObject.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateText.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTextView.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toThread.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toThread__taskRunner.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTimer.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toTool.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toToolWidget.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toVisualize.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tobackground_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tobarchart_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tochangeconnection_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toconf_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toconnection_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/todatatype_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/todefaultkeywords_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toeditwidget_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toextract_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tofilesize_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tohelp_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tohelpbrowser_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tohighlightedtext_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tohtml_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tolegendchart_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tolinechart_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tomain_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tomainwindow_kde_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tomarkedtext_2_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tomarkedtext_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tomemoeditor_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tonoblockquery_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toparamget_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/topiechart_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toqvalue_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toreport_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresult_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultbar_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultcols_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultcombo_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultconstraint_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultcontent_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultdepend_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultfield_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultindexes_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultitem_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultlabel_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultline_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultlong_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultpie_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultplan_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultreferences_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultresources_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultstats_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/toresultview_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tosgastatement_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tosmtp_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tosql_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tosqlparse_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/totabwidget_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/totemplate_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/totextview_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tothread_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/totool_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/tovisualize_h.html
   kde-extras/tora/branches/upstream/current/doc/help/api/utils_h.html
   kde-extras/tora/branches/upstream/current/doc/help/browser.texi
   kde-extras/tora/branches/upstream/current/doc/help/charts.texi
   kde-extras/tora/branches/upstream/current/doc/help/common.texi
   kde-extras/tora/branches/upstream/current/doc/help/current.texi
   kde-extras/tora/branches/upstream/current/doc/help/database.texi
   kde-extras/tora/branches/upstream/current/doc/help/debugger.texi
   kde-extras/tora/branches/upstream/current/doc/help/editors.texi
   kde-extras/tora/branches/upstream/current/doc/help/extendingtora.texi
   kde-extras/tora/branches/upstream/current/doc/help/externalapi.texi
   kde-extras/tora/branches/upstream/current/doc/help/fonts.texi
   kde-extras/tora/branches/upstream/current/doc/help/help.texi
   kde-extras/tora/branches/upstream/current/doc/help/history.texi
   kde-extras/tora/branches/upstream/current/doc/help/images/
   kde-extras/tora/branches/upstream/current/doc/help/images/additionalhelp.png
   kde-extras/tora/branches/upstream/current/doc/help/images/addwatch.png
   kde-extras/tora/branches/upstream/current/doc/help/images/alert.png
   kde-extras/tora/branches/upstream/current/doc/help/images/analyze.png
   kde-extras/tora/branches/upstream/current/doc/help/images/browser.png
   kde-extras/tora/branches/upstream/current/doc/help/images/browserfilter.png
   kde-extras/tora/branches/upstream/current/doc/help/images/changewatch.png
   kde-extras/tora/branches/upstream/current/doc/help/images/charts.png
   kde-extras/tora/branches/upstream/current/doc/help/images/chartsetup.png
   kde-extras/tora/branches/upstream/current/doc/help/images/contentfilter.png
   kde-extras/tora/branches/upstream/current/doc/help/images/current.png
   kde-extras/tora/branches/upstream/current/doc/help/images/database.png
   kde-extras/tora/branches/upstream/current/doc/help/images/debugger.png
   kde-extras/tora/branches/upstream/current/doc/help/images/describe.png
   kde-extras/tora/branches/upstream/current/doc/help/images/difference.png
   kde-extras/tora/branches/upstream/current/doc/help/images/editmenu.png
   kde-extras/tora/branches/upstream/current/doc/help/images/filemenu.png
   kde-extras/tora/branches/upstream/current/doc/help/images/fonts.png
   kde-extras/tora/branches/upstream/current/doc/help/images/getparam.png
   kde-extras/tora/branches/upstream/current/doc/help/images/help.png
   kde-extras/tora/branches/upstream/current/doc/help/images/helpmenu.png
   kde-extras/tora/branches/upstream/current/doc/help/images/invalid.png
   kde-extras/tora/branches/upstream/current/doc/help/images/largelogo.png
   kde-extras/tora/branches/upstream/current/doc/help/images/lists.png
   kde-extras/tora/branches/upstream/current/doc/help/images/memo.png
   kde-extras/tora/branches/upstream/current/doc/help/images/newconnection.png
   kde-extras/tora/branches/upstream/current/doc/help/images/oracle.png
   kde-extras/tora/branches/upstream/current/doc/help/images/output.png
   kde-extras/tora/branches/upstream/current/doc/help/images/pfileeditor.png
   kde-extras/tora/branches/upstream/current/doc/help/images/preferences.png
   kde-extras/tora/branches/upstream/current/doc/help/images/priviledges.png
   kde-extras/tora/branches/upstream/current/doc/help/images/quota.png
   kde-extras/tora/branches/upstream/current/doc/help/images/resize.png
   kde-extras/tora/branches/upstream/current/doc/help/images/rollback.png
   kde-extras/tora/branches/upstream/current/doc/help/images/rollbacksetup.png
   kde-extras/tora/branches/upstream/current/doc/help/images/script.png
   kde-extras/tora/branches/upstream/current/doc/help/images/searchreplace.png
   kde-extras/tora/branches/upstream/current/doc/help/images/security.png
   kde-extras/tora/branches/upstream/current/doc/help/images/session.png
   kde-extras/tora/branches/upstream/current/doc/help/images/sgastatement.png
   kde-extras/tora/branches/upstream/current/doc/help/images/sgatrace.png
   kde-extras/tora/branches/upstream/current/doc/help/images/sqledit.png
   kde-extras/tora/branches/upstream/current/doc/help/images/storage.png
   kde-extras/tora/branches/upstream/current/doc/help/images/template.png
   kde-extras/tora/branches/upstream/current/doc/help/images/templateeditor.png
   kde-extras/tora/branches/upstream/current/doc/help/images/templatesetup.png
   kde-extras/tora/branches/upstream/current/doc/help/images/toolbar.png
   kde-extras/tora/branches/upstream/current/doc/help/images/tools.png
   kde-extras/tora/branches/upstream/current/doc/help/images/toolsmenu.png
   kde-extras/tora/branches/upstream/current/doc/help/images/tuning.png
   kde-extras/tora/branches/upstream/current/doc/help/images/visualize.png
   kde-extras/tora/branches/upstream/current/doc/help/images/windowsmenu.png
   kde-extras/tora/branches/upstream/current/doc/help/images/worksheet.png
   kde-extras/tora/branches/upstream/current/doc/help/images/worksheetsetup.png
   kde-extras/tora/branches/upstream/current/doc/help/images/workspace.png
   kde-extras/tora/branches/upstream/current/doc/help/invalid.texi
   kde-extras/tora/branches/upstream/current/doc/help/lists.texi
   kde-extras/tora/branches/upstream/current/doc/help/make-html
   kde-extras/tora/branches/upstream/current/doc/help/newconnection.texi
   kde-extras/tora/branches/upstream/current/doc/help/output.texi
   kde-extras/tora/branches/upstream/current/doc/help/preferences.texi
   kde-extras/tora/branches/upstream/current/doc/help/rollback.texi
   kde-extras/tora/branches/upstream/current/doc/help/script.texi
   kde-extras/tora/branches/upstream/current/doc/help/searchreplace.texi
   kde-extras/tora/branches/upstream/current/doc/help/security.texi
   kde-extras/tora/branches/upstream/current/doc/help/session.texi
   kde-extras/tora/branches/upstream/current/doc/help/sqledit.texi
   kde-extras/tora/branches/upstream/current/doc/help/storage.texi
   kde-extras/tora/branches/upstream/current/doc/help/template.texi
   kde-extras/tora/branches/upstream/current/doc/help/toc.htm
   kde-extras/tora/branches/upstream/current/doc/help/tools.texi
   kde-extras/tora/branches/upstream/current/doc/help/toolsetting.texi
   kde-extras/tora/branches/upstream/current/doc/help/tora.info
   kde-extras/tora/branches/upstream/current/doc/help/tora.texi
   kde-extras/tora/branches/upstream/current/doc/help/tora/
   kde-extras/tora/branches/upstream/current/doc/help/tora/Explain-plan.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/Getting-bind-parameters.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/Global-Settings.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/Index.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/Memo-editor.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/Object-description.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/SGA-Statement.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/Using-charts.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/What-privileges-do-you-need-to-run-TOra.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/additionalhelp.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/alert.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/analyze.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/api.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/browser.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/common.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/current.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/database.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/debugger.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/editors.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/extendingtora.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/externalapi.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/fonts.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/help.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/history.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/index.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/invalid.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/lists.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/newconnection.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/output.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/preferences.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/rollback.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/script.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/searchreplace.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/security.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/session.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/sqledit.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/storage.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/template.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/tools.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/toolsetting.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/trace.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/tuning.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/window.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/worksheet.html
   kde-extras/tora/branches/upstream/current/doc/help/tora/workspace.html
   kde-extras/tora/branches/upstream/current/doc/help/trace.texi
   kde-extras/tora/branches/upstream/current/doc/help/tuning.texi
   kde-extras/tora/branches/upstream/current/doc/help/window.texi
   kde-extras/tora/branches/upstream/current/doc/help/worksheet.texi
   kde-extras/tora/branches/upstream/current/doc/help/workspace.texi
   kde-extras/tora/branches/upstream/current/ext/
   kde-extras/tora/branches/upstream/current/ext/Makefile.am
   kde-extras/tora/branches/upstream/current/ext/Makefile.in
   kde-extras/tora/branches/upstream/current/ext/loki/
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/Makefile
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/AbstractFactory.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/AssocVector.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/CachedFactory.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/ConstPolicy.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/DataGenerators.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/EmptyType.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Factory.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Function.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Functor.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/HierarchyGenerators.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Key.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LockingPtr.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LokiExport.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LokiTypeInfo.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/MultiMethods.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/NullType.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/OrderedStatic.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Pimpl.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/RefToValue.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Register.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SPCachedFactory.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SafeFormat.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/ScopeGuard.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Sequence.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Singleton.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SmallObj.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SmartPtr.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/StrongPtr.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Threads.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Tuple.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypeManip.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypeTraits.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Typelist.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypelistMacros.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Visitor.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/allocatorstringstorage.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/cowstringopt.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string_details.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string_shell.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/simplestringstorage.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/smallstringopt.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/vectorstringstorage.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/readme.txt
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/static_check.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/platform.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/random.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_fill_iterator.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_memory.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_protocols.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_traits.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_vector.h
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Library.vcproj
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Makefile
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/OrderedStatic.cpp
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SafeFormat.cpp
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Singleton.cpp
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SmallObj.cpp
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SmartPtr.cpp
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/StrongPtr.cpp
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/make.msvc.bat
   kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/make.msvc.dll.bat
   kde-extras/tora/branches/upstream/current/ext/otl/
   kde-extras/tora/branches/upstream/current/ext/otl/otlv4.h
   kde-extras/tora/branches/upstream/current/install-sh
   kde-extras/tora/branches/upstream/current/ltconfig
   kde-extras/tora/branches/upstream/current/ltmain.sh
   kde-extras/tora/branches/upstream/current/missing
   kde-extras/tora/branches/upstream/current/mkinstalldirs
   kde-extras/tora/branches/upstream/current/rpm/
   kde-extras/tora/branches/upstream/current/rpm/tora.desktop
   kde-extras/tora/branches/upstream/current/rpm/tora.menu
   kde-extras/tora/branches/upstream/current/rpm/tora.sh
   kde-extras/tora/branches/upstream/current/rpm/tora.spec
   kde-extras/tora/branches/upstream/current/rpm/tora.spec.in
   kde-extras/tora/branches/upstream/current/src/
   kde-extras/tora/branches/upstream/current/src/LICENSE.h
   kde-extras/tora/branches/upstream/current/src/Makefile.am
   kde-extras/tora/branches/upstream/current/src/Makefile.in
   kde-extras/tora/branches/upstream/current/src/i18n/
   kde-extras/tora/branches/upstream/current/src/i18n/tora_fr.ts
   kde-extras/tora/branches/upstream/current/src/i18n/tora_it.ts
   kde-extras/tora/branches/upstream/current/src/i18n/tora_se.ts
   kde-extras/tora/branches/upstream/current/src/i18n/tora_toad.ts
   kde-extras/tora/branches/upstream/current/src/icons/
   kde-extras/tora/branches/upstream/current/src/icons/add.xpm
   kde-extras/tora/branches/upstream/current/src/icons/addfile.xpm
   kde-extras/tora/branches/upstream/current/src/icons/addindex.xpm
   kde-extras/tora/branches/upstream/current/src/icons/addproject.xpm
   kde-extras/tora/branches/upstream/current/src/icons/addrecord.xpm
   kde-extras/tora/branches/upstream/current/src/icons/addrole.xpm
   kde-extras/tora/branches/upstream/current/src/icons/addrollback.xpm
   kde-extras/tora/branches/upstream/current/src/icons/addtable.xpm
   kde-extras/tora/branches/upstream/current/src/icons/addtablespace.xpm
   kde-extras/tora/branches/upstream/current/src/icons/addtemplate.xpm
   kde-extras/tora/branches/upstream/current/src/icons/adduser.xpm
   kde-extras/tora/branches/upstream/current/src/icons/addwatch.xpm
   kde-extras/tora/branches/upstream/current/src/icons/axis.xpm
   kde-extras/tora/branches/upstream/current/src/icons/background.xpm
   kde-extras/tora/branches/upstream/current/src/icons/breakpoint.xpm
   kde-extras/tora/branches/upstream/current/src/icons/canceledit.xpm
   kde-extras/tora/branches/upstream/current/src/icons/changeconnect.xpm
   kde-extras/tora/branches/upstream/current/src/icons/changewatch.xpm
   kde-extras/tora/branches/upstream/current/src/icons/chart.xpm
   kde-extras/tora/branches/upstream/current/src/icons/clock.xpm
   kde-extras/tora/branches/upstream/current/src/icons/close.xpm
   kde-extras/tora/branches/upstream/current/src/icons/coalesce.xpm
   kde-extras/tora/branches/upstream/current/src/icons/commit.xpm
   kde-extras/tora/branches/upstream/current/src/icons/compile.xpm
   kde-extras/tora/branches/upstream/current/src/icons/connect.xpm
   kde-extras/tora/branches/upstream/current/src/icons/copy.xpm
   kde-extras/tora/branches/upstream/current/src/icons/copyuser.xpm
   kde-extras/tora/branches/upstream/current/src/icons/cut.xpm
   kde-extras/tora/branches/upstream/current/src/icons/database.xpm
   kde-extras/tora/branches/upstream/current/src/icons/deindent.xpm
   kde-extras/tora/branches/upstream/current/src/icons/delwatch.xpm
   kde-extras/tora/branches/upstream/current/src/icons/describe.xpm
   kde-extras/tora/branches/upstream/current/src/icons/disbreakpoint.xpm
   kde-extras/tora/branches/upstream/current/src/icons/disconnect.xpm
   kde-extras/tora/branches/upstream/current/src/icons/down.xpm
   kde-extras/tora/branches/upstream/current/src/icons/droptablespace.xpm
   kde-extras/tora/branches/upstream/current/src/icons/duplicaterecord.xpm
   kde-extras/tora/branches/upstream/current/src/icons/enablebreak.xpm
   kde-extras/tora/branches/upstream/current/src/icons/eraselog.xpm
   kde-extras/tora/branches/upstream/current/src/icons/execute.xpm
   kde-extras/tora/branches/upstream/current/src/icons/executeall.xpm
   kde-extras/tora/branches/upstream/current/src/icons/executestep.xpm
   kde-extras/tora/branches/upstream/current/src/icons/explainplan.xpm
   kde-extras/tora/branches/upstream/current/src/icons/fileopen.xpm
   kde-extras/tora/branches/upstream/current/src/icons/filesave.xpm
   kde-extras/tora/branches/upstream/current/src/icons/filter.xpm
   kde-extras/tora/branches/upstream/current/src/icons/forward.xpm
   kde-extras/tora/branches/upstream/current/src/icons/function.xpm
   kde-extras/tora/branches/upstream/current/src/icons/grid.xpm
   kde-extras/tora/branches/upstream/current/src/icons/indent.xpm
   kde-extras/tora/branches/upstream/current/src/icons/index.xpm
   kde-extras/tora/branches/upstream/current/src/icons/insertsaved.xpm
   kde-extras/tora/branches/upstream/current/src/icons/kill.xpm
   kde-extras/tora/branches/upstream/current/src/icons/largelogo.xpm
   kde-extras/tora/branches/upstream/current/src/icons/legend.xpm
   kde-extras/tora/branches/upstream/current/src/icons/logging.xpm
   kde-extras/tora/branches/upstream/current/src/icons/minus.xpm
   kde-extras/tora/branches/upstream/current/src/icons/modconstraint.xpm
   kde-extras/tora/branches/upstream/current/src/icons/modfile.xpm
   kde-extras/tora/branches/upstream/current/src/icons/modindex.xpm
   kde-extras/tora/branches/upstream/current/src/icons/modtable.xpm
   kde-extras/tora/branches/upstream/current/src/icons/modtablespace.xpm
   kde-extras/tora/branches/upstream/current/src/icons/movefile.xpm
   kde-extras/tora/branches/upstream/current/src/icons/new.xpm
   kde-extras/tora/branches/upstream/current/src/icons/next.xpm
   kde-extras/tora/branches/upstream/current/src/icons/nextbug.xpm
   kde-extras/tora/branches/upstream/current/src/icons/noclock.xpm
   kde-extras/tora/branches/upstream/current/src/icons/nofilter.xpm
   kde-extras/tora/branches/upstream/current/src/icons/offline.xpm
   kde-extras/tora/branches/upstream/current/src/icons/online.xpm
   kde-extras/tora/branches/upstream/current/src/icons/paste.xpm
   kde-extras/tora/branches/upstream/current/src/icons/prevbug.xpm
   kde-extras/tora/branches/upstream/current/src/icons/previous.xpm
   kde-extras/tora/branches/upstream/current/src/icons/print.xpm
   kde-extras/tora/branches/upstream/current/src/icons/readtablespace.xpm
   kde-extras/tora/branches/upstream/current/src/icons/recall.xpm
   kde-extras/tora/branches/upstream/current/src/icons/redo.xpm
   kde-extras/tora/branches/upstream/current/src/icons/refresh.xpm
   kde-extras/tora/branches/upstream/current/src/icons/return.xpm
   kde-extras/tora/branches/upstream/current/src/icons/returnfrom.xpm
   kde-extras/tora/branches/upstream/current/src/icons/rewind.xpm
   kde-extras/tora/branches/upstream/current/src/icons/rollback.xpm
   kde-extras/tora/branches/upstream/current/src/icons/saverecord.xpm
   kde-extras/tora/branches/upstream/current/src/icons/scansource.xpm
   kde-extras/tora/branches/upstream/current/src/icons/schema.xpm
   kde-extras/tora/branches/upstream/current/src/icons/search.xpm
   kde-extras/tora/branches/upstream/current/src/icons/sequence.xpm
   kde-extras/tora/branches/upstream/current/src/icons/shrink.xpm
   kde-extras/tora/branches/upstream/current/src/icons/single.xpm
   kde-extras/tora/branches/upstream/current/src/icons/sql.xpm
   kde-extras/tora/branches/upstream/current/src/icons/stepinto.xpm
   kde-extras/tora/branches/upstream/current/src/icons/stepover.xpm
   kde-extras/tora/branches/upstream/current/src/icons/stop.xpm
   kde-extras/tora/branches/upstream/current/src/icons/storageextents.xpm
   kde-extras/tora/branches/upstream/current/src/icons/synonym.xpm
   kde-extras/tora/branches/upstream/current/src/icons/table.xpm
   kde-extras/tora/branches/upstream/current/src/icons/toalert.xpm
   kde-extras/tora/branches/upstream/current/src/icons/toanalyze.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tobackup.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tobrowser.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tocurrent.xpm
   kde-extras/tora/branches/upstream/current/src/icons/todebug.xpm
   kde-extras/tora/branches/upstream/current/src/icons/togglebreak.xpm
   kde-extras/tora/branches/upstream/current/src/icons/toinvalid.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tolongops.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tooutput.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tora.xpm
   kde-extras/tora/branches/upstream/current/src/icons/toramini.xpm
   kde-extras/tora/branches/upstream/current/src/icons/torollback.xpm
   kde-extras/tora/branches/upstream/current/src/icons/toscript.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tosecurity.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tosession.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tosgatrace.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tosqledit.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tostorage.xpm
   kde-extras/tora/branches/upstream/current/src/icons/totemplate.xpm
   kde-extras/tora/branches/upstream/current/src/icons/totemporary.xpm
   kde-extras/tora/branches/upstream/current/src/icons/totuning.xpm
   kde-extras/tora/branches/upstream/current/src/icons/toworksheet.xpm
   kde-extras/tora/branches/upstream/current/src/icons/trash.xpm
   kde-extras/tora/branches/upstream/current/src/icons/tree.xpm
   kde-extras/tora/branches/upstream/current/src/icons/twirl.mng
   kde-extras/tora/branches/upstream/current/src/icons/undo.xpm
   kde-extras/tora/branches/upstream/current/src/icons/up.xpm
   kde-extras/tora/branches/upstream/current/src/icons/view.xpm
   kde-extras/tora/branches/upstream/current/src/icons/writetablespace.xpm
   kde-extras/tora/branches/upstream/current/src/main.cpp
   kde-extras/tora/branches/upstream/current/src/templates/
   kde-extras/tora/branches/upstream/current/src/templates/hints.tpl
   kde-extras/tora/branches/upstream/current/src/templates/log4plsql.tpl
   kde-extras/tora/branches/upstream/current/src/templates/sqlfunctions.tpl
   kde-extras/tora/branches/upstream/current/src/toabout.cpp
   kde-extras/tora/branches/upstream/current/src/toabout.h
   kde-extras/tora/branches/upstream/current/src/toaboutui.cpp
   kde-extras/tora/branches/upstream/current/src/toaboutui.h
   kde-extras/tora/branches/upstream/current/src/toaboutui.ui
   kde-extras/tora/branches/upstream/current/src/toalert.cpp
   kde-extras/tora/branches/upstream/current/src/toalert.h
   kde-extras/tora/branches/upstream/current/src/toanalyze.cpp
   kde-extras/tora/branches/upstream/current/src/toanalyze.h
   kde-extras/tora/branches/upstream/current/src/tobackground.cpp
   kde-extras/tora/branches/upstream/current/src/tobackground.h
   kde-extras/tora/branches/upstream/current/src/tobackgroundlabel.cpp
   kde-extras/tora/branches/upstream/current/src/tobackgroundlabel.h
   kde-extras/tora/branches/upstream/current/src/tobackup.cpp
   kde-extras/tora/branches/upstream/current/src/tobackup.h
   kde-extras/tora/branches/upstream/current/src/tobackuptool.cpp
   kde-extras/tora/branches/upstream/current/src/tobackuptool.h
   kde-extras/tora/branches/upstream/current/src/tobarchart.cpp
   kde-extras/tora/branches/upstream/current/src/tobarchart.h
   kde-extras/tora/branches/upstream/current/src/tobrowser.cpp
   kde-extras/tora/branches/upstream/current/src/tobrowser.h
   kde-extras/tora/branches/upstream/current/src/tobrowserconstraint.cpp
   kde-extras/tora/branches/upstream/current/src/tobrowserconstraint.h
   kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.cpp
   kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.h
   kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.ui
   kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.cpp
   kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.h
   kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.ui
   kde-extras/tora/branches/upstream/current/src/tobrowserindex.cpp
   kde-extras/tora/branches/upstream/current/src/tobrowserindex.h
   kde-extras/tora/branches/upstream/current/src/tobrowserindexui.cpp
   kde-extras/tora/branches/upstream/current/src/tobrowserindexui.h
   kde-extras/tora/branches/upstream/current/src/tobrowserindexui.ui
   kde-extras/tora/branches/upstream/current/src/tobrowsertable.cpp
   kde-extras/tora/branches/upstream/current/src/tobrowsertable.h
   kde-extras/tora/branches/upstream/current/src/tobrowsertableui.cpp
   kde-extras/tora/branches/upstream/current/src/tobrowsertableui.h
   kde-extras/tora/branches/upstream/current/src/tobrowsertableui.ui
   kde-extras/tora/branches/upstream/current/src/tochangeconnection.cpp
   kde-extras/tora/branches/upstream/current/src/tochangeconnection.h
   kde-extras/tora/branches/upstream/current/src/tochartalarmui.cpp
   kde-extras/tora/branches/upstream/current/src/tochartalarmui.h
   kde-extras/tora/branches/upstream/current/src/tochartalarmui.ui
   kde-extras/tora/branches/upstream/current/src/tochartmanager.cpp
   kde-extras/tora/branches/upstream/current/src/tochartmanager.h
   kde-extras/tora/branches/upstream/current/src/tochartsetupui.cpp
   kde-extras/tora/branches/upstream/current/src/tochartsetupui.h
   kde-extras/tora/branches/upstream/current/src/tochartsetupui.ui
   kde-extras/tora/branches/upstream/current/src/toconf.h
   kde-extras/tora/branches/upstream/current/src/toconfiguration.cpp
   kde-extras/tora/branches/upstream/current/src/toconfiguration.h
   kde-extras/tora/branches/upstream/current/src/toconnection.cpp
   kde-extras/tora/branches/upstream/current/src/toconnection.h
   kde-extras/tora/branches/upstream/current/src/tocurrent.cpp
   kde-extras/tora/branches/upstream/current/src/tocurrent.h
   kde-extras/tora/branches/upstream/current/src/todatabasesettingui.cpp
   kde-extras/tora/branches/upstream/current/src/todatabasesettingui.h
   kde-extras/tora/branches/upstream/current/src/todatabasesettingui.ui
   kde-extras/tora/branches/upstream/current/src/todatatype.cpp
   kde-extras/tora/branches/upstream/current/src/todatatype.h
   kde-extras/tora/branches/upstream/current/src/todebug.cpp
   kde-extras/tora/branches/upstream/current/src/todebug.h
   kde-extras/tora/branches/upstream/current/src/todebugchangeui.cpp
   kde-extras/tora/branches/upstream/current/src/todebugchangeui.h
   kde-extras/tora/branches/upstream/current/src/todebugchangeui.ui
   kde-extras/tora/branches/upstream/current/src/todebugtext.cpp
   kde-extras/tora/branches/upstream/current/src/todebugtext.h
   kde-extras/tora/branches/upstream/current/src/todebugwatch.cpp
   kde-extras/tora/branches/upstream/current/src/todebugwatch.h
   kde-extras/tora/branches/upstream/current/src/todebugwatch.ui
   kde-extras/tora/branches/upstream/current/src/todefaultkeywords.h
   kde-extras/tora/branches/upstream/current/src/todroptablespaceui.cpp
   kde-extras/tora/branches/upstream/current/src/todroptablespaceui.h
   kde-extras/tora/branches/upstream/current/src/todroptablespaceui.ui
   kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.cpp
   kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.h
   kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.ui
   kde-extras/tora/branches/upstream/current/src/toeditextensions.cpp
   kde-extras/tora/branches/upstream/current/src/toeditextensions.h
   kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.cpp
   kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.h
   kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.ui
   kde-extras/tora/branches/upstream/current/src/toeditwidget.cpp
   kde-extras/tora/branches/upstream/current/src/toeditwidget.h
   kde-extras/tora/branches/upstream/current/src/toextract.cpp
   kde-extras/tora/branches/upstream/current/src/toextract.h
   kde-extras/tora/branches/upstream/current/src/toextratranslations.cpp
   kde-extras/tora/branches/upstream/current/src/tofilesize.cpp
   kde-extras/tora/branches/upstream/current/src/tofilesize.h
   kde-extras/tora/branches/upstream/current/src/toglobalsetting.cpp
   kde-extras/tora/branches/upstream/current/src/toglobalsetting.h
   kde-extras/tora/branches/upstream/current/src/toglobalsettingui.cpp
   kde-extras/tora/branches/upstream/current/src/toglobalsettingui.h
   kde-extras/tora/branches/upstream/current/src/toglobalsettingui.ui
   kde-extras/tora/branches/upstream/current/src/tohelp.cpp
   kde-extras/tora/branches/upstream/current/src/tohelp.h
   kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.cpp
   kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.h
   kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.ui
   kde-extras/tora/branches/upstream/current/src/tohelpbrowser.h
   kde-extras/tora/branches/upstream/current/src/tohelpsetupui.cpp
   kde-extras/tora/branches/upstream/current/src/tohelpsetupui.h
   kde-extras/tora/branches/upstream/current/src/tohelpsetupui.ui
   kde-extras/tora/branches/upstream/current/src/tohighlightedtext.cpp
   kde-extras/tora/branches/upstream/current/src/tohighlightedtext.h
   kde-extras/tora/branches/upstream/current/src/tohtml.cpp
   kde-extras/tora/branches/upstream/current/src/tohtml.h
   kde-extras/tora/branches/upstream/current/src/toinvalid.cpp
   kde-extras/tora/branches/upstream/current/src/toinvalid.h
   kde-extras/tora/branches/upstream/current/src/tolegendchart.cpp
   kde-extras/tora/branches/upstream/current/src/tolegendchart.h
   kde-extras/tora/branches/upstream/current/src/tolinechart.cpp
   kde-extras/tora/branches/upstream/current/src/tolinechart.h
   kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.cpp
   kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.h
   kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.ui
   kde-extras/tora/branches/upstream/current/src/tolistviewformatter.cpp
   kde-extras/tora/branches/upstream/current/src/tolistviewformatter.h
   kde-extras/tora/branches/upstream/current/src/tolistviewformattercsv.cpp
   kde-extras/tora/branches/upstream/current/src/tolistviewformattercsv.h
   kde-extras/tora/branches/upstream/current/src/tolistviewformatterfactory.h
   kde-extras/tora/branches/upstream/current/src/tolistviewformatterhtml.cpp
   kde-extras/tora/branches/upstream/current/src/tolistviewformatterhtml.h
   kde-extras/tora/branches/upstream/current/src/tolistviewformatteridentifier.h
   kde-extras/tora/branches/upstream/current/src/tolistviewformattersql.cpp
   kde-extras/tora/branches/upstream/current/src/tolistviewformattersql.h
   kde-extras/tora/branches/upstream/current/src/tolistviewformattertabdel.cpp
   kde-extras/tora/branches/upstream/current/src/tolistviewformattertabdel.h
   kde-extras/tora/branches/upstream/current/src/tolistviewformattertext.cpp
   kde-extras/tora/branches/upstream/current/src/tolistviewformattertext.h
   kde-extras/tora/branches/upstream/current/src/tomain.cpp
   kde-extras/tora/branches/upstream/current/src/tomain.h
   kde-extras/tora/branches/upstream/current/src/tomainwindow.h
   kde-extras/tora/branches/upstream/current/src/tomainwindow.kde.h
   kde-extras/tora/branches/upstream/current/src/tomarkedtext.cpp
   kde-extras/tora/branches/upstream/current/src/tomarkedtext.h
   kde-extras/tora/branches/upstream/current/src/tomemoeditor.cpp
   kde-extras/tora/branches/upstream/current/src/tomemoeditor.h
   kde-extras/tora/branches/upstream/current/src/tomessageui.cpp
   kde-extras/tora/branches/upstream/current/src/tomessageui.h
   kde-extras/tora/branches/upstream/current/src/tomessageui.ui
   kde-extras/tora/branches/upstream/current/src/tomysqlkeywords.h
   kde-extras/tora/branches/upstream/current/src/tonewconnection.cpp
   kde-extras/tora/branches/upstream/current/src/tonewconnection.h
   kde-extras/tora/branches/upstream/current/src/tonewconnectionui.cpp
   kde-extras/tora/branches/upstream/current/src/tonewconnectionui.h
   kde-extras/tora/branches/upstream/current/src/tonewconnectionui.ui
   kde-extras/tora/branches/upstream/current/src/tonoblockquery.cpp
   kde-extras/tora/branches/upstream/current/src/tonoblockquery.h
   kde-extras/tora/branches/upstream/current/src/toocistub.cpp
   kde-extras/tora/branches/upstream/current/src/tooracleconnection.cpp
   kde-extras/tora/branches/upstream/current/src/tooracleextract.cpp
   kde-extras/tora/branches/upstream/current/src/tooraclepreload.cpp
   kde-extras/tora/branches/upstream/current/src/tooraclesettingui.cpp
   kde-extras/tora/branches/upstream/current/src/tooraclesettingui.h
   kde-extras/tora/branches/upstream/current/src/tooraclesettingui.ui
   kde-extras/tora/branches/upstream/current/src/tooutput.cpp
   kde-extras/tora/branches/upstream/current/src/tooutput.h
   kde-extras/tora/branches/upstream/current/src/toparamget.cpp
   kde-extras/tora/branches/upstream/current/src/toparamget.h
   kde-extras/tora/branches/upstream/current/src/topassword.cpp
   kde-extras/tora/branches/upstream/current/src/topiechart.cpp
   kde-extras/tora/branches/upstream/current/src/topiechart.h
   kde-extras/tora/branches/upstream/current/src/topreferences.cpp
   kde-extras/tora/branches/upstream/current/src/topreferences.h
   kde-extras/tora/branches/upstream/current/src/topreferencesui.cpp
   kde-extras/tora/branches/upstream/current/src/topreferencesui.h
   kde-extras/tora/branches/upstream/current/src/topreferencesui.ui
   kde-extras/tora/branches/upstream/current/src/toprofiler.cpp
   kde-extras/tora/branches/upstream/current/src/toprofiler.h
   kde-extras/tora/branches/upstream/current/src/toproject.cpp
   kde-extras/tora/branches/upstream/current/src/toproject.h
   kde-extras/tora/branches/upstream/current/src/toqsqlconnection.cpp
   kde-extras/tora/branches/upstream/current/src/toqvalue.h
   kde-extras/tora/branches/upstream/current/src/toreport.cpp
   kde-extras/tora/branches/upstream/current/src/toreport.h
   kde-extras/tora/branches/upstream/current/src/toresult.cpp
   kde-extras/tora/branches/upstream/current/src/toresult.h
   kde-extras/tora/branches/upstream/current/src/toresultbar.cpp
   kde-extras/tora/branches/upstream/current/src/toresultbar.h
   kde-extras/tora/branches/upstream/current/src/toresultcols.cpp
   kde-extras/tora/branches/upstream/current/src/toresultcols.h
   kde-extras/tora/branches/upstream/current/src/toresultcolscomment.cpp
   kde-extras/tora/branches/upstream/current/src/toresultcolscomment.h
   kde-extras/tora/branches/upstream/current/src/toresultcombo.cpp
   kde-extras/tora/branches/upstream/current/src/toresultcombo.h
   kde-extras/tora/branches/upstream/current/src/toresultconstraint.cpp
   kde-extras/tora/branches/upstream/current/src/toresultconstraint.h
   kde-extras/tora/branches/upstream/current/src/toresultcontent.cpp
   kde-extras/tora/branches/upstream/current/src/toresultcontent.h
   kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.cpp
   kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.h
   kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.ui
   kde-extras/tora/branches/upstream/current/src/toresultdepend.cpp
   kde-extras/tora/branches/upstream/current/src/toresultdepend.h
   kde-extras/tora/branches/upstream/current/src/toresultextract.cpp
   kde-extras/tora/branches/upstream/current/src/toresultextract.h
   kde-extras/tora/branches/upstream/current/src/toresultfield.cpp
   kde-extras/tora/branches/upstream/current/src/toresultfield.h
   kde-extras/tora/branches/upstream/current/src/toresultindexes.cpp
   kde-extras/tora/branches/upstream/current/src/toresultindexes.h
   kde-extras/tora/branches/upstream/current/src/toresultitem.cpp
   kde-extras/tora/branches/upstream/current/src/toresultitem.h
   kde-extras/tora/branches/upstream/current/src/toresultlabel.cpp
   kde-extras/tora/branches/upstream/current/src/toresultlabel.h
   kde-extras/tora/branches/upstream/current/src/toresultline.cpp
   kde-extras/tora/branches/upstream/current/src/toresultline.h
   kde-extras/tora/branches/upstream/current/src/toresultlistformatui.cpp
   kde-extras/tora/branches/upstream/current/src/toresultlistformatui.h
   kde-extras/tora/branches/upstream/current/src/toresultlistformatui.ui
   kde-extras/tora/branches/upstream/current/src/toresultlock.cpp
   kde-extras/tora/branches/upstream/current/src/toresultlock.h
   kde-extras/tora/branches/upstream/current/src/toresultlong.cpp
   kde-extras/tora/branches/upstream/current/src/toresultlong.h
   kde-extras/tora/branches/upstream/current/src/toresultparam.cpp
   kde-extras/tora/branches/upstream/current/src/toresultparam.h
   kde-extras/tora/branches/upstream/current/src/toresultpie.cpp
   kde-extras/tora/branches/upstream/current/src/toresultpie.h
   kde-extras/tora/branches/upstream/current/src/toresultplan.cpp
   kde-extras/tora/branches/upstream/current/src/toresultplan.h
   kde-extras/tora/branches/upstream/current/src/toresultreferences.cpp
   kde-extras/tora/branches/upstream/current/src/toresultreferences.h
   kde-extras/tora/branches/upstream/current/src/toresultresources.h
   kde-extras/tora/branches/upstream/current/src/toresultstats.cpp
   kde-extras/tora/branches/upstream/current/src/toresultstats.h
   kde-extras/tora/branches/upstream/current/src/toresultstorage.cpp
   kde-extras/tora/branches/upstream/current/src/toresultstorage.h
   kde-extras/tora/branches/upstream/current/src/toresultview.cpp
   kde-extras/tora/branches/upstream/current/src/toresultview.h
   kde-extras/tora/branches/upstream/current/src/torollback.cpp
   kde-extras/tora/branches/upstream/current/src/torollback.h
   kde-extras/tora/branches/upstream/current/src/torollbackdialogui.cpp
   kde-extras/tora/branches/upstream/current/src/torollbackdialogui.h
   kde-extras/tora/branches/upstream/current/src/torollbackdialogui.ui
   kde-extras/tora/branches/upstream/current/src/toscript.cpp
   kde-extras/tora/branches/upstream/current/src/toscript.h
   kde-extras/tora/branches/upstream/current/src/toscriptui.cpp
   kde-extras/tora/branches/upstream/current/src/toscriptui.h
   kde-extras/tora/branches/upstream/current/src/toscriptui.ui
   kde-extras/tora/branches/upstream/current/src/tosearchreplace.cpp
   kde-extras/tora/branches/upstream/current/src/tosearchreplace.h
   kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.cpp
   kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.h
   kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.ui
   kde-extras/tora/branches/upstream/current/src/tosecurity.cpp
   kde-extras/tora/branches/upstream/current/src/tosecurity.h
   kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.cpp
   kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.h
   kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.ui
   kde-extras/tora/branches/upstream/current/src/tosecurityroleui.cpp
   kde-extras/tora/branches/upstream/current/src/tosecurityroleui.h
   kde-extras/tora/branches/upstream/current/src/tosecurityroleui.ui
   kde-extras/tora/branches/upstream/current/src/tosecurityuserui.cpp
   kde-extras/tora/branches/upstream/current/src/tosecurityuserui.h
   kde-extras/tora/branches/upstream/current/src/tosecurityuserui.ui
   kde-extras/tora/branches/upstream/current/src/tosession.cpp
   kde-extras/tora/branches/upstream/current/src/tosession.h
   kde-extras/tora/branches/upstream/current/src/tosgastatement.cpp
   kde-extras/tora/branches/upstream/current/src/tosgastatement.h
   kde-extras/tora/branches/upstream/current/src/tosgatrace.cpp
   kde-extras/tora/branches/upstream/current/src/tosgatrace.h
   kde-extras/tora/branches/upstream/current/src/tosmtp.cpp
   kde-extras/tora/branches/upstream/current/src/tosmtp.h
   kde-extras/tora/branches/upstream/current/src/tosplash.cpp
   kde-extras/tora/branches/upstream/current/src/tosplash.h
   kde-extras/tora/branches/upstream/current/src/tosql.cpp
   kde-extras/tora/branches/upstream/current/src/tosql.h
   kde-extras/tora/branches/upstream/current/src/tosqledit.cpp
   kde-extras/tora/branches/upstream/current/src/tosqledit.h
   kde-extras/tora/branches/upstream/current/src/tosqlparse.cpp
   kde-extras/tora/branches/upstream/current/src/tosqlparse.h
   kde-extras/tora/branches/upstream/current/src/tostorage.cpp
   kde-extras/tora/branches/upstream/current/src/tostorage.h
   kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.cpp
   kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.h
   kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.ui
   kde-extras/tora/branches/upstream/current/src/tostoragedefinition.cpp
   kde-extras/tora/branches/upstream/current/src/tostoragedefinition.h
   kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.cpp
   kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.h
   kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.ui
   kde-extras/tora/branches/upstream/current/src/tostoragedialogui.cpp
   kde-extras/tora/branches/upstream/current/src/tostoragedialogui.h
   kde-extras/tora/branches/upstream/current/src/tostoragedialogui.ui
   kde-extras/tora/branches/upstream/current/src/tostorageprefsui.cpp
   kde-extras/tora/branches/upstream/current/src/tostorageprefsui.h
   kde-extras/tora/branches/upstream/current/src/tostorageprefsui.ui
   kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.cpp
   kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.h
   kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.ui
   kde-extras/tora/branches/upstream/current/src/tosyntaxsetup.cpp
   kde-extras/tora/branches/upstream/current/src/tosyntaxsetup.h
   kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.cpp
   kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.h
   kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.ui
   kde-extras/tora/branches/upstream/current/src/totableselect.cpp
   kde-extras/tora/branches/upstream/current/src/totableselect.h
   kde-extras/tora/branches/upstream/current/src/totabwidget.cpp
   kde-extras/tora/branches/upstream/current/src/totabwidget.h
   kde-extras/tora/branches/upstream/current/src/totemplate.cpp
   kde-extras/tora/branches/upstream/current/src/totemplate.h
   kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.cpp
   kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.h
   kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.ui
   kde-extras/tora/branches/upstream/current/src/totemplateeditui.cpp
   kde-extras/tora/branches/upstream/current/src/totemplateeditui.h
   kde-extras/tora/branches/upstream/current/src/totemplateeditui.ui
   kde-extras/tora/branches/upstream/current/src/totemplateprovider.cpp
   kde-extras/tora/branches/upstream/current/src/totemplatesetupui.cpp
   kde-extras/tora/branches/upstream/current/src/totemplatesetupui.h
   kde-extras/tora/branches/upstream/current/src/totemplatesetupui.ui
   kde-extras/tora/branches/upstream/current/src/totemporary.cpp
   kde-extras/tora/branches/upstream/current/src/totemporary.h
   kde-extras/tora/branches/upstream/current/src/totextview.cpp
   kde-extras/tora/branches/upstream/current/src/totextview.h
   kde-extras/tora/branches/upstream/current/src/tothread.cpp
   kde-extras/tora/branches/upstream/current/src/tothread.h
   kde-extras/tora/branches/upstream/current/src/totimer.cpp
   kde-extras/tora/branches/upstream/current/src/totimer.h
   kde-extras/tora/branches/upstream/current/src/totool.cpp
   kde-extras/tora/branches/upstream/current/src/totool.h
   kde-extras/tora/branches/upstream/current/src/totoolsettingui.cpp
   kde-extras/tora/branches/upstream/current/src/totoolsettingui.h
   kde-extras/tora/branches/upstream/current/src/totoolsettingui.ui
   kde-extras/tora/branches/upstream/current/src/totuning.cpp
   kde-extras/tora/branches/upstream/current/src/totuning.h
   kde-extras/tora/branches/upstream/current/src/totuningoverviewui.cpp
   kde-extras/tora/branches/upstream/current/src/totuningoverviewui.h
   kde-extras/tora/branches/upstream/current/src/totuningoverviewui.ui
   kde-extras/tora/branches/upstream/current/src/totuningsettingui.cpp
   kde-extras/tora/branches/upstream/current/src/totuningsettingui.h
   kde-extras/tora/branches/upstream/current/src/totuningsettingui.ui
   kde-extras/tora/branches/upstream/current/src/tovisualize.cpp
   kde-extras/tora/branches/upstream/current/src/tovisualize.h
   kde-extras/tora/branches/upstream/current/src/towaitevents.cpp
   kde-extras/tora/branches/upstream/current/src/towaitevents.h
   kde-extras/tora/branches/upstream/current/src/toworksheet.cpp
   kde-extras/tora/branches/upstream/current/src/toworksheet.h
   kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.cpp
   kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.h
   kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.ui
   kde-extras/tora/branches/upstream/current/src/toworksheetstatistic.cpp
   kde-extras/tora/branches/upstream/current/src/toworksheetstatistic.h
   kde-extras/tora/branches/upstream/current/src/utils.cpp
   kde-extras/tora/branches/upstream/current/src/utils.h
   kde-extras/tora/branches/upstream/current/src/windows/
   kde-extras/tora/branches/upstream/current/src/windows/Makefile
   kde-extras/tora/branches/upstream/current/src/windows/config.h
   kde-extras/tora/branches/upstream/current/src/windows/cregistry.cpp
   kde-extras/tora/branches/upstream/current/src/windows/cregistry.h
   kde-extras/tora/branches/upstream/current/src/windows/installer/
   kde-extras/tora/branches/upstream/current/src/windows/installer/tora.nsi
   kde-extras/tora/branches/upstream/current/src/windows/readme.txt
   kde-extras/tora/branches/upstream/current/src/windows/resource.h
   kde-extras/tora/branches/upstream/current/src/windows/tora.ico
   kde-extras/tora/branches/upstream/current/src/windows/tora.rc
   kde-extras/tora/branches/upstream/current/test/
   kde-extras/tora/branches/upstream/current/test/Makefile.am
   kde-extras/tora/branches/upstream/current/test/Makefile.in
   kde-extras/tora/branches/upstream/current/test/configuration/
   kde-extras/tora/branches/upstream/current/test/configuration/Makefile.am
   kde-extras/tora/branches/upstream/current/test/configuration/Makefile.in
   kde-extras/tora/branches/upstream/current/test/configuration/toconfigurationtest.cpp
   kde-extras/tora/branches/upstream/current/test/configuration/toconfigurationtest.h
   kde-extras/tora/branches/upstream/current/test/configuration/tomaintest.cpp
   kde-extras/tora/branches/upstream/current/utils/
   kde-extras/tora/branches/upstream/current/utils/Makefile.am
   kde-extras/tora/branches/upstream/current/utils/Makefile.in
   kde-extras/tora/branches/upstream/current/utils/chex/
   kde-extras/tora/branches/upstream/current/utils/chex/Makefile.am
   kde-extras/tora/branches/upstream/current/utils/chex/Makefile.in
   kde-extras/tora/branches/upstream/current/utils/chex/chex.cpp
Log:
[svn-inject] Installing original source of tora

Added: kde-extras/tora/branches/upstream/current/AUTHORS
===================================================================
--- kde-extras/tora/branches/upstream/current/AUTHORS	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/AUTHORS	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,3 @@
+Intrepid hackers.
+
+automake wants this file.

Added: kde-extras/tora/branches/upstream/current/BUGS
===================================================================
--- kde-extras/tora/branches/upstream/current/BUGS	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/BUGS	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,20 @@
+OCI:
+	Empty strings seem to be indicated as NULL values from the OCI call. (This seems to be an
+	Oracle bug since other programs have the same problem)
+
+Qt:
+	When using antialiased text doesn't draw left axis legend correctly in charts.
+	Looses clipboard when application closes.
+
+toGetToken:
+	Doesn't handle comments when going backwards.
+
+toMysqlConnection:
+	Doesn't handle other locales than latin1 correctly.
+
+toWaitEvents:
+	Doesn't clear when changinging session.
+
+Windows:
+	TOra 1.3.8 Windows (Address 0x39db15a0)
+	TOra 1.3.9 Windows (Address 0x39dd902e)

Added: kde-extras/tora/branches/upstream/current/COPYING
===================================================================
--- kde-extras/tora/branches/upstream/current/COPYING	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/COPYING	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,340 @@
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.

Added: kde-extras/tora/branches/upstream/current/ChangeLog
===================================================================
--- kde-extras/tora/branches/upstream/current/ChangeLog	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ChangeLog	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,3 @@
+2005-02-16  Henrik Johnson and others  <someemail>
+	* tora: automake wants this.
+

Added: kde-extras/tora/branches/upstream/current/INSTALL
===================================================================
--- kde-extras/tora/branches/upstream/current/INSTALL	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/INSTALL	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,236 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
+Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about.  Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory.  After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).  Here is a another example:
+
+     /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+configuration-related scripts to be executed by `/bin/bash'.
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+

Added: kde-extras/tora/branches/upstream/current/LICENSE.txt
===================================================================
--- kde-extras/tora/branches/upstream/current/LICENSE.txt	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/LICENSE.txt	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,350 @@
+
+ The Toolkit for Oracle is Copyright (C) 2003-2005 Quest Software, Inc.
+ Portions Copyright (C) 2005 Other Contributors
+ 
+ You may use, distribute and copy Toolkit for Oracle under the terms of
+ GNU General Public License version 2, which is displayed below.
+
+-------------------------------------------------------------------------
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+-------------------------------------------------------------------------

Added: kde-extras/tora/branches/upstream/current/Makefile.OSX
===================================================================
--- kde-extras/tora/branches/upstream/current/Makefile.OSX	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/Makefile.OSX	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,473 @@
+
+#####
+#
+# TOra - An Oracle Toolkit for DBA's and developers
+# Copyright (C) 2003-2005 Quest Software, Inc
+# Portions Copyright (C) 2005 Other Contributors
+# 
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation;  only version 2 of
+# the License is valid for this program.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+#      As a special exception, you have permission to link this program
+#      with the Oracle Client libraries and distribute executables, as long
+#      as you follow the requirements of the GNU GPL in regard to all of the
+#      software in the executable aside from Oracle client libraries.
+#
+#      Specifically you are not permitted to link this program with the
+#      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+#      And you are not permitted to distribute binaries compiled against
+#      these libraries without written consent from Quest Software, Inc.
+#      Observe that this does not disallow linking to the Qt Free Edition.
+#
+#      You may link this product with any GPL'd Qt library such as Qt/Free
+#
+# All trademarks belong to their respective owners.
+#
+#####
+
+# Sample Makefile for static MacOS X builds
+
+# Mac application directory
+MAC_APP_DIR = tora.app
+
+# Mac application contents directory
+CONTENTS_DIR = $(MAC_APP_DIR)/Contents
+
+# Mac binary location
+DESTDIR  = $(CONTENTS_DIR)/MacOS
+
+# Mac resources location
+RSCSDIR  = $(CONTENTS_DIR)/Resources
+
+# Directory for Qt-based help (as opposed to native MacOS help)
+HELPDIR  = $(RSCSDIR)/help
+
+# Additional includes needed to compile program
+INCLUDES="-I$(QTDIR)/mkspecs/macx-g++" "-I$(ORACLE_HOME)/rdbms/demo" "-I$(ORACLE_HOME)/plsql/public" "-I$(ORACLE_HOME)/rdbms/public" "-I$(ORACLE_HOME)/network/public" "-I$(QTDIR)/include"
+
+# C++ Compiler to use
+GCC="/usr/bin/g++3"
+
+# Additional libraries to link with
+LIBS_GLOB=-framework Carbon -framework QuickTime -lz -framework OpenGL -framework AGL
+
+# Standard C++ library
+STDCPP_SHARED=
+
+# Static version of C++ library (Only needed when linking statically
+STDCPP_STATIC=
+
+# Qt library
+QT_SHARED=
+
+# Static Qt library
+QT_STATIC= -lqt-mt
+
+# Path to Qt meta compiler
+MOC="$(QTDIR)/bin/moc"
+
+# Path to Qt interface compiler
+UIC="$(QTDIR)/bin/uic"
+
+# Path to Qt translation compiler
+LRELEASE="$(QTDIR)/bin/lrelease"
+
+# Path to Qt translation update
+LUPDATE="$(QTDIR)/bin/lupdate"
+
+# Additional paths to find libraries
+LFLAGS="-L$(ORACLE_HOME)/rdbms/lib" "-L$(QTDIR)/lib"
+
+# Oracle library
+ORACLE_SHARED=
+
+# Static Oracle libraries
+ORACLE_STATIC=-lclntst9
+
+# Oracle home path
+#ORACLE_HOME=
+
+# What to compile, can be tora for plugin version, tora-mono for monolithic, tora-static for static version
+TARGET=tora-static
+MAC_TARGET = $(DESTDIR)/$(TARGET)
+
+# MySQL found
+MYSQL_FOUND=0
+
+# MySQL library
+MYSQL_SHARED=
+
+# Static MySQL libraries
+MYSQL_STATIC=
+
+# Base directory of KDE installation
+KDE_BASE=
+
+# Additional defines to use while compiling, except for the normal these are available
+#   OTL_ORA9I          - Compile for Oracle 9.x
+#   OTL_ORA8I          - Compile for Oracle 8.1.x
+#   OTL_ORA8           - Compile for Oracle 8.0.x
+#   OTL_ORA_TIMESTAMP  - Include support for timestamps
+#   TO_NEW_CHECK       - Disable new version check globally
+#   TO_KDE             - Compile as KDE application
+DEFINES+=-DOTL_ORA9I -DOTL_ORA_TIMESTAMP -DOTL_ANSI_CPP
+DEFINES+=-D_REENTRANT -DDEFAULT_PLUGIN_DIR=\"$(INSTALLLIB)/tora\"
+DEFINES+=-DTOMONOLITHIC
+DEFINES+=-DQT_THREAD_SUPPORT
+DEFINES+=-DQT_NO_DEBUG
+
+# Where to find perl on your system
+PERL=/usr/bin/perl
+
+# Comment out this line if you want more output from compile
+.SILENT:
+
+# Additional flags set when using only the precompiler.
+CPPFLAGS_GLOB=
+
+# Additional flags to set when linking.
+LFLAGS_GLOB=-O3 
+
+# Additional flags set when compiling.
+CFLAGS_GLOB=-g -O3 -W -Wall
+
+############################################################################
+#
+# End of configuration part of Makefile
+#
+############################################################################
+
+TITLE=TOra
+
+API=	\
+	tochangeconnection.h	\
+	tobackground.h		\
+	tobarchart.h		\
+	toconf.h		\
+	toconnection.h		\
+	todefaultkeywords.h	\
+	toeditwidget.h		\
+	toextract.h		\
+	tofilesize.h		\
+	tohelp.h		\
+	tohelpbrowser.h		\
+	tohighlightedtext.h	\
+	tohtml.h		\
+	tolegendchart.h		\
+	tolinechart.h		\
+	tomain.h		\
+	tomainwindow.kde.h	\
+	tomarkedtext.2.h	\
+	tomarkedtext.h		\
+	tomemoeditor.h		\
+	tonoblockquery.h	\
+	toparamget.h		\
+	topiechart.h		\
+	toqvalue.h		\
+	toreport.h              \
+	toresult.h		\
+	toresultbar.h		\
+	toresultcols.h		\
+	toresultcombo.h         \
+	toresultconstraint.h	\
+	toresultcontent.h	\
+	toresultdepend.h	\
+	toresultfield.h		\
+	toresultindexes.h	\
+	toresultitem.h		\
+	toresultlabel.h		\
+	toresultline.h		\
+	toresultlong.h		\
+	toresultpie.h		\
+	toresultplan.h		\
+	toresultreferences.h	\
+	toresultresources.h	\
+	toresultstats.h		\
+	toresultview.h		\
+	tosgastatement.h	\
+	tosmtp.h                \
+	tosql.h			\
+	tosqlparse.h		\
+	totabwidget.h		\
+	totemplate.h		\
+	totextview.h            \
+	tothread.h		\
+	totool.h		\
+	tovisualize.h		\
+	utils.h
+
+SOURCES=\
+	toabout.cpp \
+	toaboutui.cpp \
+	toalert.cpp \
+	toanalyze.cpp \
+	tobackground.cpp \
+	tobackup.cpp \
+	tobarchart.cpp \
+	tobrowser.cpp \
+	tobrowserconstraintui.cpp \
+	tobrowserfilterui.cpp \
+	tobrowserindexui.cpp \
+	tobrowsertableui.cpp \
+	tochangeconnection.cpp \
+	tochartalarmui.cpp \
+	tochartmanager.cpp \
+	tochartsetupui.cpp \
+	toconnection.cpp \
+	tocurrent.cpp \
+	todatabasesettingui.cpp \
+	todebug.cpp \
+	todebugchangeui.cpp \
+	todebugtext.cpp \
+	todebugwatch.cpp \
+	toeditextensiongotoui.cpp \
+	toeditextensions.cpp \
+	toeditextensionsetupui.cpp \
+	toeditwidget.cpp \
+	toextract.cpp \
+	tofilesize.cpp \
+	toglobalsetting.cpp \
+	toglobalsettingui.cpp \
+	tohelp.cpp \
+	tohelpaddfileui.cpp \
+	tohelpsetupui.cpp \
+	tohighlightedtext.cpp \
+	tohtml.cpp \
+	toinvalid.cpp \
+	tolegendchart.cpp \
+	tolinechart.cpp \
+	tolinechartsetupui.cpp \
+	tomain.cpp \
+	tomarkedtext.cpp \
+	tomemoeditor.cpp \
+	tomessageui.cpp \
+	tonewconnection.cpp \
+	tonewconnectionui.cpp \
+	tonoblockquery.cpp \
+	tooracleconnection.cpp \
+	tooracleextract.cpp \
+	tooraclepreload.cpp \
+	tooraclesettingui.cpp \
+	tooutput.cpp \
+	toparamget.cpp \
+	topassword.cpp \
+	topiechart.cpp \
+	topreferences.cpp \
+	topreferencesui.cpp \
+	toprofiler.cpp \
+	toproject.cpp \
+	toqsqlconnection.cpp \
+	toreport.cpp \
+	toresult.cpp \
+	toresultbar.cpp \
+	toresultcols.cpp \
+	toresultcombo.cpp \
+	toresultconstraint.cpp \
+	toresultcontent.cpp \
+	toresultcontentfilterui.cpp \
+	toresultdepend.cpp \
+	toresultextract.cpp \
+	toresultfield.cpp \
+	toresultindexes.cpp \
+	toresultitem.cpp \
+	toresultlabel.cpp \
+	toresultline.cpp \
+	toresultlistformatui.cpp \
+	toresultlock.cpp \
+	toresultlong.cpp \
+	toresultparam.cpp \
+	toresultpie.cpp \
+	toresultplan.cpp \
+	toresultreferences.cpp \
+	toresultstats.cpp \
+	toresultstorage.cpp \
+	toresultview.cpp \
+	torollback.cpp \
+	torollbackdialogui.cpp \
+	toscript.cpp \
+	toscriptui.cpp \
+	tosearchreplace.cpp \
+	tosearchreplaceui.cpp \
+	tosecurity.cpp \
+	tosecurityquotaui.cpp \
+	tosecurityroleui.cpp \
+	tosecurityuserui.cpp \
+	tosession.cpp \
+	tosgastatement.cpp \
+	tosgatrace.cpp \
+	tosmtp.cpp \
+	tosql.cpp \
+	tosqledit.cpp \
+	tosqlparse.cpp \
+	tostorage.cpp \
+	tostoragedatafileui.cpp \
+	tostoragedefinition.cpp \
+	tostoragedefinitionui.cpp \
+	tostoragedialogui.cpp \
+	tostorageprefsui.cpp \
+	tostoragetablespaceui.cpp \
+	tosyntaxsetup.cpp \
+	tosyntaxsetupui.cpp \
+	totabwidget.cpp \
+	totemplate.cpp \
+	totemplateaddfileui.cpp \
+	totemplateeditui.cpp \
+	totemplateprovider.cpp \
+	totemplatesetupui.cpp \
+	totemporary.cpp \
+	totextview.cpp \
+	tothread.cpp \
+	totool.cpp \
+	totoolsettingui.cpp \
+	totuning.cpp \
+	totuningoverviewui.cpp \
+	totuningsettingui.cpp \
+	tovisualize.cpp \
+	towaitevents.cpp \
+	toworksheet.cpp \
+	toworksheetsetupui.cpp \
+	toworksheetstatistic.cpp \
+	utils.cpp
+
+default: all
+include $(ORACLE_HOME)/rdbms/lib/env_rdbms.mk
+
+TRANSLATIONS=\
+	tora_se.ts\
+	tora_fr.ts\
+	tora_it.ts\
+
+CPPFLAGS=$(CPPFLAGS_GLOB) $(DEFINES) $(INCLUDES)
+CFLAGS=$(CFLAGS_GLOB) $(INCLUDES) $(DEFINES)
+
+OBJECTS=$(filter %.o,$(SOURCES:%.cpp=objs/%.o))
+TRANSOBJ=$(filter %.qm,$(TRANSLATIONS:%.ts=%.qm))
+
+DEPENDS=$(filter %.d,$(SOURCES:%.cpp=.depends/%.d)) .depends/main.d
+
+vpath %.h $(INCLUDE)
+
+.PHONY: all clean fixmod install distclean
+
+all: $(MAC_TARGET) lrelease
+
+#$(OBJECTS): Makefile Makefile.common
+
+.depends/%.d: %.cpp
+	@echo Making dependencies for $<
+	if [ ! -d .depends ] ; then mkdir -p .depends ; fi
+	$(GCC) -MM $(CPPFLAGS) $< > $@.tmp && \
+		( sed "s/^\(.*\.\)o\([ :]*\)/objs\/\1o \
+		$(subst /,\\/,$@)\2/g" < $@.tmp > $@ ; rm -f $@.tmp )
+
+include $(DEPENDS)
+
+%.moc: %.h
+	@echo Metacompiling $<
+	$(MOC) -o $@ $<
+
+%.cpp %.h: %.ui
+	echo Generating $(<:%.ui=%.cpp) \& $(<:%.ui=%.h)
+	$(UIC) -o $(<:%.ui=%.h) $<
+	$(UIC) -i $(<:%.ui=%.h) -o  $(<:%.ui=%.cpp) $<
+
+objs/%.o: %.cpp
+	@echo Compiling $<
+	if [ ! -d objs ] ; then mkdir -p objs ; fi
+	$(GCC) $(CFLAGS) -o $@ -c $<
+
+%.o : objs/%.o
+	@echo Faulty dependency, forgot the objs/ part
+
+$(MAC_TARGET):  $(TARGET) \
+		$(CONTENTS_DIR)/Info.plist \
+		$(CONTENTS_DIR)/PkgInfo \
+		$(HELPDIR) \
+		install-common
+	test -d $(DESTDIR)/ || mkdir -p $(DESTDIR)/
+	-cp -p $(TARGET) $(DESTDIR)/tora
+
+$(CONTENTS_DIR)/PkgInfo: 
+	@test -d $(CONTENTS_DIR)/ || mkdir -p $(CONTENTS_DIR)/
+	-rm -fr $(CONTENTS_DIR)/PkgInfo >/dev/null 2>&1
+	@echo "APPL????" > $(CONTENTS_DIR)/PkgInfo
+
+$(CONTENTS_DIR)/Info.plist: 
+	@test -d $(CONTENTS_DIR)/ || mkdir -p $(CONTENTS_DIR)/
+	-rm -fr $(CONTENTS_DIR)/Info.plist >/dev/null 2>&1
+	@sed -e "s, at ICON@,application.icns,g" -e "s, at EXECUTABLE@,tora,g" $(QTDIR)/mkspecs/macx-g++/Info.plist.app > $(CONTENTS_DIR)/Info.plist
+
+$(HELPDIR):
+	@test -d $(RSCSDIR)/ || mkdir -p $(RSCSDIR)/
+	-cp -pr help $(RSCSDIR)/
+
+install-common: lrelease
+	@test -d $(RSCSDIR)/ || mkdir -p $(RSCSDIR)/
+	-cp icons/tora.xpm $(RSCSDIR)/ >/dev/null 2>&1
+	-cp templates/*.tpl $(RSCSDIR)/ >/dev/null 2>&1
+	-cp  *.qm $(RSCSDIR)/ >/dev/null 2>&1
+
+clean:
+	@echo Cleaning $(TITLE)
+	-rm -rf objs tora tora-static tora-mono >/dev/null 2>&1
+	-rm -f *~ >/dev/null 2>&1
+	-rm -f *~ */*~ >/dev/null 2>&1
+	-rm -f *.bak >/dev/null 2>&1
+	-rm -rf plugins >/dev/null 2>&1
+	-rm -rf $(MAC_APP_DIR)
+	-for a in *.ui ; \
+             do rm -f `$(PERL) -e '$$_=shift(@ARGV); s/\.[^\.]*$$//; print "$$_.h\n$$_.cpp";' $$a`; \
+         done
+
+distclean: clean
+	-rm -rf .depends >/dev/null 2>&1
+	-rm -rf .xvpics >/dev/null 2>&1
+	-rm -rf icons/.xvpics >/dev/null 2>&1
+	-rm -f *.moc >/dev/null 2>&1 
+	-rm -f rpmcommon rpmoracle rpmmysql >/dev/null 2>&1 
+	-rm -f \#*\# >/dev/null 2>&1
+	-rm -f configure.setup >/dev/null 2>&1
+
+# Keyboard shortcuts
+
+main.cpp: tora_toad.h
+
+tora_toad.h: tora_toad.qm
+	$(PERL) chex.pl < $< > $@
+
+tora_toad.qm: tora_toad.ts
+	$(LRELEASE) $<
+
+# Static target, easier to distribute
+
+tora-static: $(OBJECTS) main.cpp
+	@echo Linking $@
+	$(GCC) $(LFLAGS) $(CFLAGS) $(LFLAGS_GLOB) -DTOMONOLITHIC -o $@ \
+		$(OBJECTS) main.cpp $(QT_STATIC) $(STDCPP_STATIC) \
+		$(ORACLE_STATIC) $(LIBS_GLOB) $(MYSQL_STATIC)
+
+tora.pro: Makefile
+	echo "# Not indended to be used for anything except lupdate" > tora.pro
+	echo 'SOURCES=	\' >> tora.pro
+	echo '	main.cpp\' >> tora.pro
+	echo '	toextratranslations.cpp\' >> tora.pro
+	echo "	$(SOURCES)" >> tora.pro
+	echo 'TRANSLATIONS=$(TRANSLATIONS)' >> tora.pro
+
+lupdate: tora.pro
+	$(LUPDATE) tora.pro
+
+lrelease: tora.pro $(TRANSLATIONS)
+	$(LRELEASE) tora.pro
+

Added: kde-extras/tora/branches/upstream/current/Makefile.am
===================================================================
--- kde-extras/tora/branches/upstream/current/Makefile.am	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/Makefile.am	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+ACLOCAL_AMFLAGS = -I config/m4
+READMES = README\
+	README.CODESTYLE \
+	README.CVS \
+	README.LICENSE \
+	README.OSX \
+	README.RELEASE \
+	README.WINDOWS 
+
+EXTRA_DIST = debian \
+	rpm \
+	BUGS \
+	COPYING \
+	Makefile.OSX \
+	Makefile.mingw \
+	$(READMES) \
+	LICENSE.txt \
+	config/m4 \
+	autogen.sh
+
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+
+SUBDIRS = utils src ext test doc

Added: kde-extras/tora/branches/upstream/current/Makefile.in
===================================================================
--- kde-extras/tora/branches/upstream/current/Makefile.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/Makefile.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,759 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = .
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
+	$(top_srcdir)/configure $(top_srcdir)/rpm/tora.spec.in AUTHORS \
+	COPYING ChangeLog INSTALL NEWS TODO config.guess config.sub \
+	config/config.guess config/config.sub config/depcomp \
+	config/install-sh config/ltmain.sh config/missing \
+	config/mkinstalldirs config/texinfo.tex depcomp install-sh \
+	ltconfig ltmain.sh missing mkinstalldirs
+subdir = .
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/m4/cppunit.m4 \
+	$(top_srcdir)/config/m4/oracle.m4 \
+	$(top_srcdir)/config/m4/pcre.m4 \
+	$(top_srcdir)/config/m4/qtkde.m4 \
+	$(top_srcdir)/config/m4/tora.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+ configure.lineno configure.status.lineno
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES = rpm/tora.spec
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+distdir = $(PACKAGE)-$(VERSION)
+top_distdir = $(distdir)
+am__remove_distdir = \
+  { test ! -d $(distdir) \
+    || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
+         && rm -fr $(distdir); }; }
+DIST_ARCHIVES = $(distdir).tar.gz
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_FALSE = @CPPUNIT_FALSE@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CPPUNIT_TRUE = @CPPUNIT_TRUE@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MONO_FALSE = @ENABLE_MONO_FALSE@
+ENABLE_MONO_TRUE = @ENABLE_MONO_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GREP = @GREP@
+HAVE_ORACLE_FALSE = @HAVE_ORACLE_FALSE@
+HAVE_ORACLE_TRUE = @HAVE_ORACLE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISODATE = @ISODATE@
+KDECONFIG = @KDECONFIG@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBXINERAMA = @LIBXINERAMA@
+LIBZ = @LIBZ@
+LIB_DCOP = @LIB_DCOP@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KFILE = @LIB_KFILE@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIO = @LIB_KIO@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+LUPDATE = @LUPDATE@
+MAKEINFO = @MAKEINFO@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+OBJEXT = @OBJEXT@
+ORACLE_CXXFLAGS = @ORACLE_CXXFLAGS@
+ORACLE_LDFLAGS = @ORACLE_LDFLAGS@
+ORACLE_LIBS = @ORACLE_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_LIBS = @PCRE_LIBS@
+QSCINTILLA_CXXFLAGS = @QSCINTILLA_CXXFLAGS@
+QSCINTILLA_LDFLAGS = @QSCINTILLA_LDFLAGS@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TORA_LINK_OTHERS = @TORA_LINK_OTHERS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+ACLOCAL_AMFLAGS = -I config/m4
+READMES = README\
+	README.CODESTYLE \
+	README.CVS \
+	README.LICENSE \
+	README.OSX \
+	README.RELEASE \
+	README.WINDOWS 
+
+EXTRA_DIST = debian \
+	rpm \
+	BUGS \
+	COPYING \
+	Makefile.OSX \
+	Makefile.mingw \
+	$(READMES) \
+	LICENSE.txt \
+	config/m4 \
+	autogen.sh
+
+SUBDIRS = utils src ext test doc
+all: config.h
+	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+
+.SUFFIXES:
+am--refresh:
+	@:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \
+	      cd $(srcdir) && $(AUTOMAKE) --gnu  \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    echo ' $(SHELL) ./config.status'; \
+	    $(SHELL) ./config.status;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	$(SHELL) ./config.status --recheck
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+
+config.h: stamp-h1
+	@if test ! -f $@; then \
+	  rm -f stamp-h1; \
+	  $(MAKE) stamp-h1; \
+	else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+	@rm -f stamp-h1
+	cd $(top_builddir) && $(SHELL) ./config.status config.h
+$(srcdir)/config.h.in:  $(am__configure_deps) 
+	cd $(top_srcdir) && $(AUTOHEADER)
+	rm -f stamp-h1
+	touch $@
+
+distclean-hdr:
+	-rm -f config.h stamp-h1
+rpm/tora.spec: $(top_builddir)/config.status $(top_srcdir)/rpm/tora.spec.in
+	cd $(top_builddir) && $(SHELL) ./config.status $@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	$(am__remove_distdir)
+	mkdir $(distdir)
+	$(mkdir_p) $(distdir)/config $(distdir)/config/m4 $(distdir)/rpm
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
+	-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+	  ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+	  ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
+	|| chmod -R a+r $(distdir)
+dist-gzip: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+dist-bzip2: distdir
+	tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+	$(am__remove_distdir)
+
+dist-tarZ: distdir
+	tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+	$(am__remove_distdir)
+
+dist-shar: distdir
+	shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+	$(am__remove_distdir)
+
+dist-zip: distdir
+	-rm -f $(distdir).zip
+	zip -rq $(distdir).zip $(distdir)
+	$(am__remove_distdir)
+
+dist dist-all: distdir
+	tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+	$(am__remove_distdir)
+
+# This target untars the dist file and tries a VPATH configuration.  Then
+# it guarantees that the distribution is self-contained by making another
+# tarfile.
+distcheck: dist
+	case '$(DIST_ARCHIVES)' in \
+	*.tar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+	*.tar.bz2*) \
+	  bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+	*.tar.Z*) \
+	  uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+	*.shar.gz*) \
+	  GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
+	*.zip*) \
+	  unzip $(distdir).zip ;;\
+	esac
+	chmod -R a-w $(distdir); chmod a+w $(distdir)
+	mkdir $(distdir)/_build
+	mkdir $(distdir)/_inst
+	chmod a-w $(distdir)
+	dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+	  && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+	  && cd $(distdir)/_build \
+	  && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+	    $(DISTCHECK_CONFIGURE_FLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) \
+	  && $(MAKE) $(AM_MAKEFLAGS) dvi \
+	  && $(MAKE) $(AM_MAKEFLAGS) check \
+	  && $(MAKE) $(AM_MAKEFLAGS) install \
+	  && $(MAKE) $(AM_MAKEFLAGS) installcheck \
+	  && $(MAKE) $(AM_MAKEFLAGS) uninstall \
+	  && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
+	        distuninstallcheck \
+	  && chmod -R a-w "$$dc_install_base" \
+	  && ({ \
+	       (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
+	       && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
+	            distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
+	      } || { rm -rf "$$dc_destdir"; exit 1; }) \
+	  && rm -rf "$$dc_destdir" \
+	  && $(MAKE) $(AM_MAKEFLAGS) dist \
+	  && rm -rf $(DIST_ARCHIVES) \
+	  && $(MAKE) $(AM_MAKEFLAGS) distcleancheck
+	$(am__remove_distdir)
+	@(echo "$(distdir) archives ready for distribution: "; \
+	  list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+	  sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
+distuninstallcheck:
+	@cd $(distuninstallcheck_dir) \
+	&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+	   || { echo "ERROR: files left after uninstall:" ; \
+	        if test -n "$(DESTDIR)"; then \
+	          echo "  (check DESTDIR support)"; \
+	        fi ; \
+	        $(distuninstallcheck_listfiles) ; \
+	        exit 1; } >&2
+distcleancheck: distclean
+	@if test '$(srcdir)' = . ; then \
+	  echo "ERROR: distcleancheck can only run from a VPATH build" ; \
+	  exit 1 ; \
+	fi
+	@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
+	  || { echo "ERROR: files left in build directory after distclean:" ; \
+	       $(distcleancheck_listfiles) ; \
+	       exit 1; } >&2
+check-am: all-am
+check: check-recursive
+all-am: Makefile config.h
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr \
+	distclean-libtool distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+	-rm -rf $(top_srcdir)/autom4te.cache
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+	check-am clean clean-generic clean-libtool clean-recursive \
+	ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+	dist-hook dist-shar dist-tarZ dist-zip distcheck distclean \
+	distclean-generic distclean-hdr distclean-libtool \
+	distclean-recursive distclean-tags distcleancheck distdir \
+	distuninstallcheck dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+	tags tags-recursive uninstall uninstall-am uninstall-info-am
+
+
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: kde-extras/tora/branches/upstream/current/Makefile.mingw
===================================================================
--- kde-extras/tora/branches/upstream/current/Makefile.mingw	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/Makefile.mingw	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,521 @@
+#####
+#
+# TOra - An Oracle Toolkit for DBA's and developers
+# Copyright (C) 2003-2005 Quest Software, Inc
+# Portions Copyright (C) 2005 Other Contributors
+# 
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation;  only version 2 of
+# the License is valid for this program.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+#      As a special exception, you have permission to link this program
+#      with the Oracle Client libraries and distribute executables, as long
+#      as you follow the requirements of the GNU GPL in regard to all of the
+#      software in the executable aside from Oracle client libraries.
+#
+#      Specifically you are not permitted to link this program with the
+#      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+#      And you are not permitted to distribute binaries compiled against
+#      these libraries without written consent from Quest Software, Inc.
+#      Observe that this does not disallow linking to the Qt Free Edition.
+#
+#      You may link this product with any GPL'd Qt library such as Qt/Free
+#
+# All trademarks belong to their respective owners.
+#
+#####
+
+# Locations of OCI Dll and home, QT and QScintilla
+#    paths below are just an example
+OCI_DLL=/c/oracle/ora81/bin/oci.dll
+OCI_HOME=/c/oracle/ora81/oci
+QTDIR=/c/qt-3
+
+##Perl
+PERL=/c/Perl/bin/perl
+
+# Where to create installation bundle
+INSTALLDIR=/c/TOra
+
+# OTL is now in external directory
+OTL_DIR=../ext/otl
+
+#Loki
+LOKI_DIR=../ext/loki/loki-0.1.6
+
+# What to compile, can be tora for tora-mono for monolithic, tora-static for static version
+# (for Windows build these targets seems to have no difference so they better left default)
+TARGET=tora
+
+# Additional includes needed to compile program
+INCLUDES="-I$(OCI_HOME)/include" \
+	 "-I$(QTDIR)/include" \
+	"-I$(OTL_DIR)" \
+	"-I$(LOKI_DIR)/include"
+
+# C++ Compiler to use
+GCC=g++
+
+# Additional libraries to link with
+LIBS_GLOB=-lwsock32
+
+# Standard C++ library
+STDCPP_SHARED=-lstdc++
+
+# Static version of C++ library (Only needed when linking statically
+STDCPP_STATIC=
+
+# Qt and QScintilla libraries (QScintilla is only shared on Windows)
+QT_SHARED=-lqt-mt
+QT_SCINTILLA=-lqscintilla
+
+# Static Qt library
+QT_STATIC=
+
+# Path to Qt meta compiler
+MOC="$(QTDIR)/bin/moc"
+
+# Path to Qt interface compiler
+UIC="$(QTDIR)/bin/uic"
+
+# Path to Qt translation compiler
+LRELEASE="$(QTDIR)/bin/lrelease"
+
+# Path to Qt translation update
+LUPDATE="$(QTDIR)/bin/lupdate"
+
+# Additional paths to find libraries
+LFLAGS="-L$(QTDIR)/lib" "-Llib"
+
+# Oracle OCI export library
+OCI_LIB=lib/liboci.a
+
+# Oracle library
+ORACLE_SHARED=-loci
+
+# Static Oracle libraries
+ORACLE_STATIC=$(STATIC_ORACLETTLIBS)
+
+# MySQL found
+MYSQL_FOUND=0
+
+# MySQL library
+MYSQL_SHARED=
+
+# Static MySQL libraries
+MYSQL_STATIC=
+
+# Additional defines to use while compiling, except for the normal these are available
+#   OTL_ORA9I          - Compile for Oracle 9.x
+#   OTL_ORA8I          - Compile for Oracle 8.1.x
+#   OTL_ORA8           - Compile for Oracle 8.0.x
+#   OTL_ORA_TIMESTAMP  - Include support for timestamps
+#   TO_NEW_CHECK       - Disable new version check globally
+DEFINES+=-DOTL_ORA8I -DOTL_ORA_TIMESTAMP -DOTL_ANSI_CPP -DOTL_EXCEPTION_ENABLE_ERROR_OFFSET
+DEFINES+=-D_REENTRANT
+DEFINES+=-DQT_THREAD_SUPPORT
+DEFINES+=-DTOMONOLITHIC
+DEFINES+=-DWIN32 -D_WIN32
+DEFINES+=-D_int64="long long"
+
+# Comment out this line if you want more output from compile
+.SILENT:
+
+# Additional flags set when using only the precompiler.
+CPPFLAGS_GLOB=
+
+# Additional flags to set when linking.
+LFLAGS_GLOB=-O2
+
+# Additional flags set when compiling.
+CFLAGS_GLOB=-O2 -W -Wall -c -mthreads -w
+
+############################################################################
+#
+# End of configuration part of Makefile
+#
+############################################################################
+
+TITLE=TOra
+
+API=	\
+	tochangeconnection.h	\
+	tobackground.h		\
+	tobackgroundlabel.h		\
+	tobackuptool.h          \
+	tobarchart.h		\
+	toconf.h		\
+	toconfiguration.h       \
+	toconnection.h		\
+	todatatype.h		\
+	todefaultkeywords.h	\
+	toeditwidget.h		\
+	toextract.h		\
+	tofilesize.h		\
+	tohelp.h		\
+	tohelpbrowser.h		\
+	tohighlightedtext.h	\
+	tohtml.h		\
+	tolegendchart.h		\
+	tolinechart.h		\
+	tolistviewformatter.h \
+	tolistviewformattercsv.h \
+	tolistviewformatterfactory.h \
+	tolistviewformatterhtml.h \
+	tolistviewformatteridentifier.h \
+	tolistviewformattersql.h \
+	tolistviewformattertabdel.h \
+	tolistviewformattertext.h \
+	tomain.h		\
+	tomainwindow.kde.h	\
+	tomarkedtext.h		\
+	tomemoeditor.h		\
+	tonoblockquery.h	\
+	toparamget.h		\
+	topiechart.h		\
+	toqvalue.h		\
+	toreport.h              \
+	toresult.h		\
+	toresultbar.h		\
+	toresultcols.h		\
+	toresultcolscomment.h		\
+	toresultcombo.h         \
+	toresultconstraint.h	\
+	toresultcontent.h	\
+	toresultdepend.h	\
+	toresultfield.h		\
+	toresultindexes.h	\
+	toresultitem.h		\
+	toresultlabel.h		\
+	toresultline.h		\
+	toresultlong.h		\
+	toresultpie.h		\
+	toresultplan.h		\
+	toresultreferences.h	\
+	toresultresources.h	\
+	toresultstats.h		\
+	toresultview.h		\
+	tosgastatement.h	\
+	tosmtp.h                \
+	tosql.h			\
+	tosqlparse.h		\
+	totabwidget.h		\
+	totemplate.h		\
+	totextview.h            \
+	tothread.h		\
+	totimer.h		\
+	totool.h		\
+	tovisualize.h		\
+	utils.h
+
+SOURCES=\
+	toabout.cpp \
+	toalert.cpp \
+	toanalyze.cpp \
+	tobackground.cpp \
+	tobackgroundlabel.cpp \
+	tobackup.cpp \
+	tobackuptool.cpp \
+	tobarchart.cpp \
+	tobrowser.cpp \
+	tobrowserconstraint.cpp \
+	tobrowserindex.cpp \
+	tobrowsertable.cpp \
+	tochangeconnection.cpp \
+	tochartmanager.cpp \
+	toconnection.cpp \
+	toconfiguration.cpp \
+	tocurrent.cpp \
+	todatatype.cpp \
+	todebug.cpp \
+	todebugtext.cpp \
+	toeditextensions.cpp \
+	toeditwidget.cpp \
+	toextract.cpp \
+	tofilesize.cpp \
+	toglobalsetting.cpp \
+	tohelp.cpp \
+	tohighlightedtext.cpp \
+	tohtml.cpp \
+	toinvalid.cpp \
+	tolegendchart.cpp \
+	tolinechart.cpp \
+	tolistviewformatter.cpp \
+	tolistviewformattercsv.cpp \
+	tolistviewformatterhtml.cpp \
+	tolistviewformattersql.cpp \
+	tolistviewformattertabdel.cpp \
+	tolistviewformattertext.cpp \
+	tomain.cpp \
+	tomarkedtext.cpp \
+	tomemoeditor.cpp \
+	tonewconnection.cpp \
+	tonoblockquery.cpp \
+	tooracleconnection.cpp \
+	tooracleextract.cpp \
+	tooraclepreload.cpp \
+	tooutput.cpp \
+	toparamget.cpp \
+	topassword.cpp \
+	topiechart.cpp \
+	topreferences.cpp \
+	toprofiler.cpp \
+	toproject.cpp \
+	toqsqlconnection.cpp \
+	toreport.cpp \
+	toresult.cpp \
+	toresultbar.cpp \
+	toresultcols.cpp \
+	toresultcolscomment.cpp \
+	toresultcombo.cpp \
+	toresultconstraint.cpp \
+	toresultcontent.cpp \
+	toresultdepend.cpp \
+	toresultextract.cpp \
+	toresultfield.cpp \
+	toresultindexes.cpp \
+	toresultitem.cpp \
+	toresultlabel.cpp \
+	toresultline.cpp \
+	toresultlock.cpp \
+	toresultlong.cpp \
+	toresultparam.cpp \
+	toresultpie.cpp \
+	toresultplan.cpp \
+	toresultreferences.cpp \
+	toresultstats.cpp \
+	toresultstorage.cpp \
+	toresultview.cpp \
+	torollback.cpp \
+	toscript.cpp \
+	tosearchreplace.cpp \
+	tosecurity.cpp \
+	tosession.cpp \
+	tosgastatement.cpp \
+	tosgatrace.cpp \
+	tosmtp.cpp \
+	tosplash.cpp \
+	tosql.cpp \
+	tosqledit.cpp \
+	tosqlparse.cpp \
+	tostorage.cpp \
+	tostoragedefinition.cpp \
+	tosyntaxsetup.cpp \
+	totableselect.cpp \
+	totabwidget.cpp \
+	totemplate.cpp \
+	totemplateprovider.cpp \
+	totemporary.cpp \
+	totextview.cpp \
+	tothread.cpp \
+	totimer.cpp \
+	totool.cpp \
+	totuning.cpp \
+	tovisualize.cpp \
+	towaitevents.cpp \
+	toworksheet.cpp \
+	toworksheetstatistic.cpp \
+	utils.cpp \
+	$(LOKI_DIR)/src/OrderedStatic.cpp \
+	$(LOKI_DIR)/src/SafeFormat.cpp \
+	$(LOKI_DIR)/src/Singleton.cpp \
+	$(LOKI_DIR)/src/SmallObj.cpp \
+	$(LOKI_DIR)/src/SmartPtr.cpp
+
+UI_FILES = \
+	toaboutui.ui \
+	tobrowserconstraintui.ui \
+	tobrowserfilterui.ui \
+	tobrowserindexui.ui \
+	tobrowsertableui.ui \
+	todroptablespaceui.ui \
+	tooraclesettingui.ui \
+	tostoragetablespaceui.ui \
+	tochartalarmui.ui \
+	topreferencesui.ui \
+	tosyntaxsetupui.ui \
+	tochartsetupui.ui \
+	toresultcontentfilterui.ui \
+	totemplateaddfileui.ui \
+	todatabasesettingui.ui \
+	toresultlistformatui.ui \
+	totemplateeditui.ui \
+	todebugchangeui.ui \
+	torollbackdialogui.ui \
+	totemplatesetupui.ui \
+	todebugwatch.ui \
+	toscriptui.ui \
+	totoolsettingui.ui \
+	toeditextensiongotoui.ui \
+	tosearchreplaceui.ui \
+	totuningoverviewui.ui \
+	toeditextensionsetupui.ui \
+	tosecurityquotaui.ui \
+	totuningsettingui.ui \
+	toglobalsettingui.ui \
+	tosecurityroleui.ui \
+	toworksheetsetupui.ui \
+	tohelpaddfileui.ui \
+	tosecurityuserui.ui \
+	tohelpsetupui.ui \
+	tostoragedatafileui.ui \
+	tolinechartsetupui.ui \
+	tostoragedefinitionui.ui \
+	tomessageui.ui \
+	tostoragedialogui.ui \
+	tonewconnectionui.ui \
+	tostorageprefsui.ui
+
+GENERATED_SOURCES=$(UI_FILES:%.ui=%.cpp)
+
+default: all
+
+TRANSLATIONS=\
+	i18n/tora_se.ts\
+	i18n/tora_fr.ts\
+	i18n/tora_it.ts\
+
+CPPFLAGS=$(CPPFLAGS_GLOB) $(DEFINES) $(INCLUDES)
+CFLAGS=$(CFLAGS_GLOB) $(INCLUDES) $(DEFINES)
+
+OBJECTS=$(filter %.o,$(SOURCES:%.cpp=objs/%.o) $(GENERATED_SOURCES:%.cpp=objs/%.o)) objs/main.o
+TRANSOBJ=$(filter %.qm,$(TRANSLATIONS:%.ts=%.qm))
+
+DEPENDS=$(filter %.d,$(SOURCES:%.cpp=.depends/%.d)) .depends/main.d
+
+vpath %.h $(INCLUDE)
+
+.PHONY: all clean fixmod install distclean oraclelib
+
+all: $(TARGET)
+
+%.moc: %.h
+	@echo Metacompiling $<
+	$(MOC) -o $@ $<
+
+%.cpp %.h: %.ui
+	@echo Generating $(<:%.ui=%.cpp) \& $(<:%.ui=%.h)
+	$(UIC) -o $(<:%.ui=%.h) $<
+	$(UIC) -i $(<:%.ui=%.h) -o $(<:%.ui=%.cpp) $<
+
+plugins/%.tso:
+	@echo Linking plugin $@
+	if [ ! -d plugins ] ; then mkdir -p plugins ; fi
+	$(GCC) -shared $(LFLAGS) $(LFLAGS_GLOB) $(CFLAGS) $(QT_SHARED) -o $@ $^
+
+objs/%.o: %.cpp
+	@echo Compiling $<
+	if [ ! -d objs ] ; then mkdir -p objs ; fi
+	$(GCC) $(CFLAGS) -o $@ -c $<
+
+%.o : objs/%.o
+	@echo Faulty dependency, forgot the objs/ part
+	
+$(OCI_LIB): $(OCI_DLL)
+	@echo Preparing OCI library $@
+	if [ ! -d lib ] ; then mkdir -p lib ; fi
+	pexports -o $< > lib/oci.def
+	dlltool --def lib/oci.def --output-lib $@
+	-rm -f lib/oci.def
+
+.depends/%.d: %.cpp
+	@echo Making dependencies for $<
+	if [ ! -d `dirname $@` ] ; then mkdir -p `dirname $@` ; fi
+	$(GCC) -MM -MG $(CPPFLAGS) $< > $@.tmp && \
+		( sed "s/^\(.*\.\)o\([ :]*\)/objs\/\1o \
+		$(subst /,\\/,$@)\2/g" < $@.tmp > $@ ; rm -f $@.tmp )
+
+include $(DEPENDS)
+
+windows/%.o:
+	@echo Making $<
+	$(MAKE) -C windows
+	
+install-common: 
+	if [ \! -f $(TARGET) ] ; then cp tora $(TARGET) ; fi
+	mkdir -p $(INSTALLDIR)
+	mkdir -p $(INSTALLDIR)/help
+	-cp templates/*.tpl $(INSTALLDIR) >/dev/null 2>&1
+	-cp -r help/* $(INSTALLDIR)/help >/dev/null 2>&1
+	-cp  *.qm $(INSTALLDIR) >/dev/null 2>&1
+
+install: $(TARGET) install-common
+	@echo Install $(TARGET) to $(INSTALLDIR)
+	cp $(TARGET).exe $(INSTALLDIR)
+	-strip -s $(INSTALLDIR)/$(TARGET).exe >/dev/null 2>&1
+
+install-debug: tora install-common
+	@echo Install tora with debugging symbols to $(INSTALLDIR)
+	cp tora.exe $(INSTALLDIR)
+
+uninstall:
+	@echo Uninstalling from $(INSTALLDIR)
+	-rm -rf $(INSTALLDIR)
+
+clean:
+	@echo Cleaning $(TITLE)
+	-rm -rf objs tora tora-static tora-mono >/dev/null 2>&1
+	-rm -f *~ >/dev/null 2>&1
+	-rm -f *~ */*~ >/dev/null 2>&1
+	-rm -f *.bak >/dev/null 2>&1
+	-rm -rf plugins >/dev/null 2>&1
+	-rm -rf lib >/dev/null 2>&1
+	-for a in *.ui ; \
+            do rm -f `$(PERL) -e '$$_=shift(@ARGV); s/\.[^\.]*$$//; print "$$_.h\n$$_.cpp";' $$a`; \
+         done
+
+distclean: clean
+	-rm -rf .depends >/dev/null 2>&1
+	-rm -rf .xvpics >/dev/null 2>&1
+	-rm -rf icons/.xvpics >/dev/null 2>&1
+	-rm -f *.moc >/dev/null 2>&1 
+	-rm -f rpmcommon rpmoracle rpmmysql >/dev/null 2>&1 
+	-rm -f \#*\# >/dev/null 2>&1
+	-rm -f Makefile >/dev/null 2>&1
+	-rm -f configure.setup >/dev/null 2>&1
+
+# Specific rule for generation of LICENSE.h file
+config.h: windows/config.h
+	@echo Creating default config.h
+	@cp $< $@
+	
+# Keyboard shortcuts
+
+main.cpp: tora_toad.h
+
+tora_toad.h: tora_toad.qm chex.exe
+	chex.exe $< > $@
+
+chex.exe: ../utils/chex/chex.cpp
+	$(GCC) $< -o $@
+
+tora_toad.qm: i18n/tora_toad.ts
+	$(LRELEASE) $<
+
+
+# Static target, easier to distribute (oracle is always shared on Windows)
+
+tora-static: $(OCI_LIB) $(OBJECTS) windows/tora.o windows/cregistry.o
+	@echo Linking $@
+	$(GCC) $(LFLAGS) $(LFLAGS_GLOB) -o -mwindows $@ $(OBJECTS) windows/tora.o windows/cregistry.o \
+		$(LIBS_GLOB) $(QT_STATIC) $(ORACLE_SHARED) $(STDCPP_STATIC) $(MYSQL_STATIC) \
+		$(QT_SCINTILLA)
+
+
+# The binary for the tora
+
+tora:   $(OCI_LIB) $(OBJECTS) windows/tora.o windows/cregistry.o
+	@echo Linking $@
+	$(GCC) $(LFLAGS) $(LFLAGS_GLOB) -mwindows -o $@ $(OBJECTS) windows/tora.o windows/cregistry.o \
+		$(LIBS_GLOB) $(QT_SHARED) $(ORACLE_SHARED) $(STDCPP_SHARED) \
+		$(QT_SCINTILLA)

Added: kde-extras/tora/branches/upstream/current/NEWS
===================================================================
--- kde-extras/tora/branches/upstream/current/NEWS	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/NEWS	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,2463 @@
+1.3.22svn:
+2006-03-01: Autocompletion first step
+2006-03-03: Autocompletion second step
+2006-03-03: Fixed bug #1437575
+2006-03-03: update to version 1.3.22svn the windows client too
+2006-03-07: fixed some bug with completion
+2006-03-09: fixed a bug with indentetion (inserted empty lines)
+2006-03-13: update Makefile.mingw to reflect chec.pl-> chex.cpp change
+2006-03-13: When searching for tnsnames.ora look to TNS_ADMIN on Windows too, to support Oracle Instant Client user
+2006-03-14: Remove references to TOAD and OAS and various conditional compiles for them
+2006-03-14: Remove Quotes part of about dialog.
+2006-03-14: Fix problem with last character of sql entry box
+2006-03-14: Apply patch #1438322 to regain some QT3.1 compatability for RHEL-3
+2006-03-18: Reverted patch #1438322: it hangs tora PL/SQL Debugger
+2006-03-18: Fixed autocompletion on Linux
+2006-03-20: Linux autocompletion works on Windows too. Remove the ifdef
+2006-04-05: Fixed compilation on windows. Re-added missing patch from Michael Meskes
+2006-04-13: Apply patch from Andrew Gilmore to fix rpm spec builds as non-root user
+2006-04-24: Add drop tablespace functionality
+2006-11-21: Apply patch from Michael (m0m) for memo editor width and other size issues
+2006-11-21: Applied patch for postgres 8 schema browsing cleanup from Theo Schlossnagle
+2006-11-21: Applied patch from Michael for syntax highlighting font issues
+2007-09-10: Applied patches from Andreas Piesk for explain plan handling and window splitter sizes.
+2007-09-13: Applied patches from Andreas Piesk for better data type decoding
+2007-09-13: Applied patches from Andreas Piesk for config build support for Ora 10gR2
+2007-09-13: Updated to latest OTL release 4.0.157
+2007-09-13: Fixed Makefile.am for building html in docs
+2007-09-15: Change code to consistently use .html extension
+2007-09-15: Add decoding of more oracle data types and better handling of describe failure
+2007-09-17: Applied patches from Andreas Piesk for better explain plan handling, warning cleanup
+2007-09-17: Applied patches from Andreas Piesk for better oracle version detection
+2007-09-17: Applied patches from Andreas Piesk for update to loki-0.1.6
+
+1.3.21:
+
+2006-02-08: Applied patch from Pawe=B3 Kucharczyk to fix storage queries used against Ora 10gR2. 
+2006-02-18: Readded Check Syntax to SQL Worksheet (many thanks to Sergei Kuchin of otl)
+2006-02-18: minor changes to PL/SQL Debugger. Solved a bug where the debugger stops on every call of a stored function, now when compiling the current position of the cursor is mantained
+2006-02-18: Now when you open the search and replace dialog, the focus is always on the search field
+
+1.3.20:
+
+2005-12-30: Applied patch #1393915 to return some Pl/SQL functionality w/ QScintilla
+2005-01-02: Applied patch #1393554 to resize connection dialog fields automatically
+2006-01-06: Applied patch #1398328 to better handle oracle version comparisons
+2006-01-10: Applied patch for bug #1213388 for parsing of RETURN SELF AS RESULT
+2006-01-11: Applied patch from Michael Kaes for status bar NULL msg behavior.
+2006-01-20: Upgraded to otl 4.0.126 to obtain the error position in SQL statement
+2006-01-20: Fixed copy from the menu and Ctrl+C
+2006-01-20: Fix from Thomas Porschberg for building with Oracle Instant Client 10g
+2006-01-20: Fix for bug 957911
+2006-01-21: Patch #1245301 from Mike Fleetwood (Charts in Server Tuning with 10g)
+2006-01-27: turned autoindent on
+2006-01-29: first (incomplete) implementation of the autocompletion API
+2006-01-31: remove (for now) autocompletion API. It crashes on Windows
+2006-01-31: fix for bug #1322120
+2006-01-31: Search now scroll to the found item
+
+1.3.19:
+
+2005-09-15: First QScintilla port
+2005-09-01: Updates to debian build rules
+2005-09-01: Applied patch #144512 to fix setenv bug #1242423
+
+1.3.18: 2005-06-29
+
+2005-06-29: Fixes to build system
+2005-06-29: Default spec file to build rpms for mandrake and redhat
+2005-06-29: Other misc. updates to get build process cleaner.
+
+1.3.17: 2005-06-29
+
+2005-03-12: Fix bug 1017639 with table script for partitioned tables
+2005-03-14: Fix crasher when displaying memo dialog from toparamget.cpp
+2005-03-19: Fix index extraction bug from 1109904
+2005-03-19: Fix minor bugs in todebug.cpp + bug 877682
+2005-03-20: Added support for type TIMESTAMP in column listing in table browser
+2005-03-20: Fix bug with NVARCHAR2/NCHAR2 field size in browser (new query for oracle 9)
+2005-04-02: updated otl to 4.0.110
+2005-04-02: Fix bug with NVARCHAR2/NCHAR2 fields not displaying properly (Bug# 1115326)
+2005-05-19: Applied patch 1175927 to fix memory leak.
+2005-05-19: Applied patch 1186247 to convert more code to STL.
+2005-05-19: Applied patch 1180569 to allow removing breakpoints.
+2005-05-20: Applied patch 1186958 to convert min/max to std routines
+2005-05-20: Applied patch 1188297, more refactoring
+2005-06-06: Applied patch for bug 12545, KDE support for sqlnet connections
+2005-06-07: Applied patch for issue 1187925 by Volker Goetz
+
+1.3.16: 2005-03-04
+
+2005-02-26: Fix label text in ui for prefs, bug #1152550
+2005-02-25: Applied patch to otlv.h attached to bug 984908
+2005-02-21: Applied gentoo ebuild patch from Nuno Araujo to improve oracle build
+2005-02-24: Applied patch to correct bug #909636 with creating a new proc in PL/SQL Debugger
+2005-02-24: Added doc info about building on oracle instant client. Still waiting for appropriate configure patch.
+2005-02-24: Applied modified patch to support oracle instant client
+2005-02-24: Fix const issue with otlv4 header which impacted SuSE builds (bug #1037007)
+2005-02-24: Fix bug 996589 and support REMARK in addition to REM in SQL.
+2005-02-24: Fix bug 1004631 missing ctype header
+2005-02-24: Try to fix bug 1054655 by searching lib32 first.
+2005-02-24: Added "Insert Saved Query" toolbar button, first draft. Replaces entire editor text.
+
+1.3.15: 2005-02-17
+
+2005-02-17: Textual updates, new urls, new logo, etc.
+2005-02-17: Applied patch #952545 for fixing toinvalid invalid object recompilation
+2005-02-17: Removed references to commercial license and registration
+2005-02-17: Applied patch to put open/save/etc. at more standard initial position and resize connection popup (#1001613)
+2005-02-17: Applied patch to show partition info for query plans (#1001615)
+2005-02-17: Applied patch 1025950 to fix bug 1001826
+2005-02-17: Applied patch 1048530 to correct races/crash
+2005-02-17: Applied patch 1055777 to correct problem with queries that failed segfaulting
+2005-02-17: Applied patch 1055783 to correct parsing/extraction of triggers
+2005-02-17: Applied patch 1057806 to correctly free memory
+2005-02-17: Applied patch 1058979 to correctly free memory
+2005-02-17: Applied patch 1059686 to fix memory leak
+2005-02-17: Applied patch 1074869 to fix a configure.pl problem with quoting
+2005-02-17: Applied patch from bug #1120268 to fix segfault
+2005-02-17: Applied patch 984360 to fix builds under Qt 3.1 (i.e. RHEL3)
+
+1.3.14.1: 2004-07-01
+
+2004-06-30: Fixed resolving the application path in Windows.
+2004-06-30: Fixed printing under KDE.
+2004-06-30: Fixed width of column calculation.
+2004-06-30: Updated version.
+2004-06-30: Fixed truncate table command.
+2004-06-30: Rearranged some objectfiles in plugins so it works again.
+2004-06-30: Removed unsupported legacy MySQL stuff from configure.
+2004-06-30: Fixed problem with CTRL+T key shortcut.
+
+1.3.14: 2004-06-29
+
+2004-06-28: Added PostgreSQL default port.
+2004-06-28: Fixed indentation of Quotes under windows.
+2004-06-22: Changed homepage back to original again.
+2004-06-20: Fixed install. (Thanx Robert Ham)
+2004-06-10: Fixed performance problem in scripting tool. (Thanx Ivan Brezina)
+2004-06-10: Multiple selection in invalid tool. (Thanx Alexander Sheremet)
+2004-06-10: Some performance updates for iterating through lists. (Thanx Ivan Brezina)
+2004-06-04: Updated about with new homepage location.
+2004-06-04: Somw Windows compile fixes.
+2004-06-04: Fixed bug in drop index.
+2004-05-24: Flush privileges on changes on access tables.
+2004-05-24: Emit a signal from a content editor when changes are store to the DB.
+2004-05-24: Fixed build problem with KDE 3.1 or earlier.
+2004-05-21: Save changes in content editors before destroying them.
+2004-05-19: Ignore case when finding lobs in content editor.
+2004-05-19: Fixed problem with passing options to QSql client.
+2004-05-19: Added support for binary values in QSql and Oracle backends.
+2004-05-19: Added support for binary values in content editor.
+2004-05-19: Added support for binary in query values.
+2004-05-19: Fixed problem with empty host and history.
+2004-05-19: Changed logo to say Quest.
+2004-05-18: Changed release script to precompile uic files.
+2004-05-18: Only generate uic and moc files that are missing on configure.
+2004-05-18: Implemented more options for MySQL connection including SSL and Compress.
+2004-05-18: Implemented new more flexible handling of options for connections.
+2004-05-18: Enable selectAll for list views.
+2004-05-18: Added truncate, check, optimize and analyze table functions in browser.
+2004-05-18: Multi selects in browser.
+2004-05-13: KDE compile fixes.
+2004-05-13: Added dropdown history of parameters.
+2004-05-13: Parameter history are no longer connection specific.
+2004-05-13: Add ; to end of toSQL templates.
+2004-05-13: Don't show expandable if no children in toSQL templates.
+2004-05-06: Fixed RAW handling for Oracle.
+2004-04-27: Fixed warnings in new gcc version in qt legacy source.
+2004-04-24: Worked over TOAD and TO_NO_ORACLE defines.
+2004-04-23: Added support for MySQL in toResultParam class.
+2004-04-23: Changed how init strings in connections are stored (Using QStrings instead of QCString).
+2004-04-23: Added function to change database and get init strings for connections.
+2004-04-23: Added support for changing the schema in the worksheet.
+2004-04-21: Indicate if there are errors in debugger windows. (Thanx Francesco Dandrea)
+2004-04-21: Unquote object fix in debugger.0 (Thanx Francesco Dandrea)
+2004-04-21: Changed MySQL extractor comments from // to --.
+2004-04-21: Changed script header comments to -- from rem.
+2004-04-19: Removed compile warning in worksheet of unused variable.
+2004-03-30: Ignore errors on rollback when rollbacking QSqlConnections.
+2004-03-30: Ignore errors on rollback on stop in analyze.
+2004-03-30: Changed size policy of table and schema comboboxes when editing indexes or constraints.
+2004-03-30: Changed size of icon for main window (From 16x16 which became really small when changing windows to 32x32).
+2004-03-29: Fixed spelling of ODBC connection provider to QSql name.
+2004-03-29: Switched around Undo and Redo keybindings for TOAD.
+2004-03-29: Improved error reporting on failed queries for QSql provider.
+2004-03-29: Fixed some SQL worksheet to editor references.
+2004-03-26: Some minor linux buildfixes.
+2004-03-25: Fixed table lookup key shortcut.
+2004-03-25: Removed TOra reference in new version check.
+2004-03-25: Fixed problem with browser remembering removed filters on restart.
+2004-03-25: Problem in index list with duplicates.
+2004-03-25: Worksheet => SQL Editor.
+2004-03-25: Change order of execute next and all.
+2004-03-25: Indicate active filter
+2004-03-25: Define filter problem in import/export.
+2004-03-25: Change keep alive text to longer description.
+2004-03-25: Remove additional help.
+2004-03-25: Execute directory when selecting log should be execute directly.
+2004-03-25: Add an apply button to options dialog.
+2004-03-25: Fixed refresh default to 30 seconds.
+2004-03-25: Fixed problem with off by one in highlighted text on Windows.
+2004-03-24: Fixed resolving of program directory in windows.
+2004-03-24: Fixed no new check configure stuff. (Thanx Peter Eisentraut)
+2004-03-24: Unquote constraints better in MySQL extractor.
+2004-03-23: Don't allow to add indexes or constraints when no table is selected.
+2004-03-23: Updated Makefile.sample.
+2004-03-23: Fixed problem with help context.
+2004-03-23: Fixed oracle index description to conform to new version.
+2004-03-23: Adapted index editing to new index description.
+2004-03-23: Changed how type in indexes are reported in the index description.
+2004-03-23: Added context menu to session list.
+2004-03-23: Added shortcut to mark a selection in session browser.
+2004-03-23: Fixed context menu for analyze tool.
+2004-03-23: Fixed context menu of light worksheets.
+2004-03-23: Added context menu to some browsertabs.
+2004-03-23: Added context menu for worksheet.
+2004-03-23: Fix problem with empty owner in analyzer.
+2004-03-23: Moved create toolbar to always be visiable regardless of current tool.
+2004-03-23: Make toResults work even though they don't have a toolwidget above them.
+2004-03-23: Made it posible to select schema when creating new table.
+2004-03-23: Made it posible to work on several different tables in index dialog.
+2004-03-23: Added a toConnectionWidget class to be able to use results without tool widgets in most cases.
+2004-03-22: Removed some TOra references regarding upgrade check.
+2004-03-22: Added option (default on) for having describes in another window in worksheet.
+2004-03-22: Added option for using onlyforward queries on QSql provider.
+2004-03-22: Added a stretchable widget at the end of the template toolbar.
+2004-03-22: Changed name of SQL template to project manager.
+2004-03-22: Added MySQL access tab in browser.
+2004-03-22: Remember non standard port correctly in new connection dialog.
+2004-03-22: Fixed missreading of some invalid dates from MySQL.
+2004-03-20: Show all columns of scripting lists.
+2004-03-20: Changed to use closebuttons of Qt docks for templates.
+2004-03-20: Added browser tool create menu.'
+2004-03-20: Added add index functionality.
+2004-03-19: Some build stuff fixes.
+2004-03-19: Fixed startup on other tab in browser.
+2004-03-19: Fixed about dialog size.
+2004-03-19: Fixed translation of welcome message.
+2004-03-19: Added toolbar for index tab.
+2004-03-19: Added option to drop index.
+2004-03-19: Refresh screen after making changes in browser.
+2004-03-19: Added drop table button.
+2004-03-19: Don't let main window manage toolbars for child windows.
+2004-03-18: Fixed UI to modify indexes.
+2004-03-18: Fixed quoting of rename datafiles.
+2004-03-18: Fixed problem with closing queries to quickly on QSql provider.
+2004-03-18: Fixed problem with every non select query being execute twice.
+2004-03-18: Removed valid check for QSqlProvider since NULL:s are apparently invalid.
+2004-03-18: Fixed handling of NULL:s in toQSqlProvider.
+2004-03-18: Work around MySQL missrepresenting some values as NULL when they are not (Dates specifically).
+2004-03-18: Fixed unitialized warning in browser filter.
+2004-03-18: Fixed uninitialized value of datatype widget.
+2004-03-18: Changed initial size of modify constraint dialog.
+2004-03-18: Fill in all shortcuts of TOAD bindings to not give any fuzzy ideas to the translator.
+2004-03-18: Export to file of results now use Windows newlines on Win32.
+2004-03-18: Fixed problem with analyze command failing and not quitting.
+2004-03-18: Fixed MySQL analyzer when running on specified database.
+2004-03-18: Mark MySQL connection to only handle one query at a time.
+2004-03-18: Made default of object cache behavior configurable.
+2004-03-17: Removed unused prototype for logMessage in toConnection.
+2004-03-17: Made cacheDir a static function of toConnection.
+2004-03-17: Changed how directory cache files are generated to TEMP on windows.
+2004-03-17: Fixed some default password issues in new connection dialog.
+2004-03-17: Added support for editing constraints.
+2004-03-17: Added option to hide header of columns view.
+2004-03-17: Support for C++ style comments in syntax highlighting.
+2004-03-17: Fixed unquoting of MySQL names.
+2004-03-17: Changed filename of database object cache to work better with non Oracle databases.
+2004-03-17: Support via extractor under constraint tab if available.
+2004-03-17: Fixed app name of extraction header.
+2004-03-16: Hide options in worksheet to applicable to non Oracle.
+2004-03-16: Added RULE hints for some Oracle queries.
+2004-03-16: Fixed better support for MySQL procedural statements.
+2004-03-16: Support for C++ style comments in SQL parser.
+2004-03-16: Keep track of analyzer in syntax setup dialog.
+2004-03-16: Some adjustments for help.
+2004-03-15: Added signal before menues are display in listviews.
+2004-03-15: Hide mode if only one mode is available.
+2004-03-15: Added port to new connection list.
+2004-03-15: Call QListView doubleclick event toListView.
+2004-03-15: Fixed clicking and doubleclicking in the connection history list.
+2004-03-15: Only check if resources are supported to determine if information tab is shown.
+2004-03-15: Changed button text from clean sheet to new sheet in debugger.
+2004-03-12: Changed icon of visualize.
+2004-03-12: Updated configure script for the new binding generation.
+2004-03-12: Added option for enabling TOAD bindings.
+2004-03-12: Added TOAD compatibility bindings.
+2004-03-12: Added keyboard shortcut for save as.
+2004-03-12: Added replace keyboard shortcut back (Customizable this time).
+2004-03-12: Added function to compare key sequences to key events.
+2004-03-12: Don't include keybindings in search & replace dialog.
+2004-03-12: Changed keybinding for copy user or role (Duplicate).
+2004-03-12: Changed keybinding for add role (Duplicate).
+2004-03-12: Changed keybinding for add user (Duplicate).
+2004-03-12: Added keyboard shortcut CTRL+A to select all.
+2004-03-12: Changed default keybinding for Change current connection to CTRL+Shift+U from CTRL+U.
+2004-03-12: Changed default keybinding for commit from CTRL+L to CTRL+SHIFT+C.
+2004-03-12: Added keybindings to uppercase/lowercase commands.
+2004-03-12: Added some tuning stuff to the session list screen for MySQL.
+2004-03-11: Added new class to connect values of a piechart to a line or barchart.
+2004-03-11: Added filter to piecharts.
+2004-03-11: Fixed problem with piechart queries having more than 2 columns.
+2004-03-11: Added posibility to have labels first in pie chart.
+2004-03-11: Fixed indentation of elsif.
+2004-03-11: Added boolean as a default keyword.
+2004-03-11: Fixed spelling of TRIGGER in debugger. (Thanx Stephen)
+2004-03-11: Fixed numeric sorting in lists and content editor.
+2004-03-11: Support Oracle versions with 2 digits in version detection.
+2004-03-11: Updated sample makefile.
+2004-03-11: Added change connection button to worksheet (Which mysteriously was removed yesterday).
+2004-03-10: Enable or disable explain plan button depending if supported by database.
+2004-03-10: Removed stuff from worksheet menu not applicable to current database.
+2004-03-10: Hide statistics button in worksheet if not supported.
+2004-03-10: Hide information tab if neither LongOps or Resources are supported.
+2004-03-10: Added new sourcefile to configure and sample makefile.
+2004-03-10: Changed default location of tools toolbar to top.
+2004-03-10: Moved connection toolbar.
+2004-03-10: Moved table buttons over first pane instead of second pane.
+2004-03-10: Always call cancel on nonblocking queries that are not read to the end before deleting them (Needed for MySQL).
+2004-03-10: Implemented canceling for MySQL queries.
+2004-03-10: Set forwardOnly for QSqlQueries.
+2004-03-09: Fixed delete of column order in QSql provider.
+2004-03-09: Fixed some bugs regarding analyze for MySQL.
+2004-03-08: Fixed can handle of script to actually check extractor support.
+2004-03-05: Add an extra newline at end of migration script for MySQL tables.
+2004-03-05: Fixed some Windows build errors.
+2004-03-05: Changed version to 1.3.14.
+2004-03-05: Removed some unused tab-related stuff in toResult.
+2004-03-04: Made toResult see if connection was changed since last refresh when figuring out if result is valid.
+2004-03-04: Fixed problem when no extra parameters for column specified.
+2004-03-04: Fixed problem with column list on MySQL not in object cache.
+2004-03-04: Fixed problem when changing connection in browser.
+2004-03-04: Fixed problem when changing schema in browser.
+2004-03-04: Hide size and precision in datatype widget if not wanted when changing datatype.
+2004-03-04: Don't generate prompts or header in SQL when changing table.
+2004-03-04: Added equality operators for parsed statements.
+2004-03-04: Changed how renames are encoded in migration descriptions.
+2004-03-04: Fixed bug i migration code of extractor.
+2004-03-01: Fixed some Windows specific compilation problems.
+2004-02-29: Moved extracting column data into toExtract.
+2004-02-27: Fill out the migration data for applying changes when editing tables.
+2004-02-27: Moved createFromParse to general extractor.
+2004-02-26: Fixed so that create table dialog works with Oracle too.
+2004-02-26: Made Oracle extractor also use the EXTRA field to describe columns.
+2004-02-26: Set caption of memo editors.
+2004-02-26: Fill out dialog of edit table with contents of current table.
+2004-02-25: Fixed exception in constructor of toResultResources.
+2004-02-25: Reorganize SQL so Oracle definitions are never first if other implementations exists.
+2004-02-25: Use SHOW COLUMNS command to display information on MySQL columns.
+2004-02-25: Don't load Oracle SQL if no Oracle support.
+2004-02-25: Added index columns for MySQL.
+2004-02-25: Fixed problem with indexes under MySQL.
+2004-02-25: Made getting parameter resize behaviour better.
+2004-02-25: Fixed a bug in laying out tab bars.
+2004-02-25: Fixed potential crash in toTabWidget when widget was removed.
+2004-02-24: Made a bunch of modifications to the edit table dialog.
+2004-02-24: Added new widget to define table column datatype.
+2004-02-24: Added support for extractors to report available datatypes. 
+2004-02-24: Added index tab for MySQL in browser.
+2004-02-24: Fixed sorting of modules in configure.pl.
+2004-02-23: Add a new function in a result filter to be called before every query is executed.
+2004-02-23: Added duplicate removal in browser filter.
+2004-02-20: Fixed hang when comparing things that were actually equal.
+2004-02-18: Added support for setting table comments in column view for MySQL.
+2004-02-18: Fixed application lock on execution of faulty QSql query.
+2004-02-18: Made posible to specificy which columns of show (Or any query) is interesting for QSql provider.
+2004-02-18: Included table comments for MySQL in object cache.
+2004-02-18: New syntax for MySQL queries allow iteration of queries over multible tables/databases.
+2004-02-18: Save databases in object cache for MySQL tables.
+2004-02-18: Allow both analyze and optimize of MySQL tables in statistics tool.
+2004-02-18: Improved object cache for MySQL (Now scans all available databases).
+2004-02-17: Make cursor busy during entire extraction procedure to remove flickering cursor.
+2004-02-17: Fix so that the correct analyzer is used in tokenizers when parsing.
+2004-02-17: Fix so that the correct analyzer is used in tokenizers when using highlighted text input.
+2004-02-17: Take account of connection when auto indenting in edit extension.
+2004-02-17: Made SQL parser and tokenizers use quote character from analyzer.
+2004-02-17: Made syntax analyzer supply a quote character used for the database.
+2004-02-17: Don't upper object names while parsing extraction list.
+2004-02-17: Added some more utility functions to SQL parser.
+2004-02-13: Added support for different syntax analyzers in SQL parser.
+2004-02-13: Added support for MySQL in analyzer tool.
+2004-02-13: Fixed a const declaration of syntax highlighter.
+2004-02-13: Added specific MySQL syntax analyzer.
+2004-02-13: Made worksheet switch analyzer based on connection.
+2004-02-13: Made connection able to provide a syntax analyzer.
+2004-01-22: Fixed bug in oracle extractor. (Thanx Rico Hendriks)
+2004-01-22: Fixed some spelling errors. (Thanx Rico Hendriks)
+
+1.3.13: Released 2004-01-20
+
+2004-01-19: Fixed problem with highlighted text in windows.
+2004-01-18: Fixed memory corruption when missing internet connection.
+2004-01-18: Some minor Windows compilation fixes.
+2004-01-11: Fixed uncought exceptions from enabling or disbling constraints in browser.
+2004-01-06: Changed copyright from Underscore to Quest Software.
+2003-12-24: Fixed parsing problem with ' at end of line in multiline strings.
+2003-12-23: Clear debugger object selection when current editor is closed. (Thanx Francesco Dandrea)
+2003-12-23: Fixed bug which changed schema for open debugger editors. (Thanx Francesco Dandrea)
+2003-12-23: Pass on option OTL_ANSI_CPP to OTL.
+2003-12-23: Upgraded OTL to 4.0.70.
+2003-12-16: Fixed problem in debugger with scaning source and disappearing contenttree.
+2003-11-21: Fixed bug with package code completion. (Thanx Francesco Dandrea)
+2003-11-21: Added close all editors to debugger. (Thanx Francesco Dandrea)
+2003-11-20: Changed order of libstdc++ paths in configure.
+2003-11-19: Work around OTL bug when reading large LOB:s.
+2003-11-19: Fixed for configure to handle QTDIR variable in makefile... again..
+2003-11-18: Fixed missing sourcefile from OSX makefile.
+2003-11-18: Fixed for configure to handle QTDIR variable in makefile.
+2003-11-18: Added duplicate row functionality to content editor.
+2003-11-09: Don't check to save changes when selecting a new package. (Thanx Francesco Dandrea)
+2003-11-06: Fixed refresh for content editor.
+2003-11-06: Removed a lot of latin1 explicit translations in content editor for legibility.
+2003-11-06: Only specify non null values of inserts in content editor.
+2003-11-04: Implemented migrate sequence.
+2003-11-04: Implemented migrate role.
+2003-10-28: Upgraded OTL to version 4.0.68.
+2003-10-26: Fixed quoting for PostgreSQL.
+2003-10-25: Fixed sorting in profiler. (Thanx Francesco Dandrea)
+2003-10-25: Don't allow debugger to have no editors. (Thanx Francesco Dandrea)
+2003-10-21: Dropped Qt 2.x compatibility from configure.
+2003-10-21: Fixed Qt 3.0 compatibility issue.
+2003-10-21: Added goto line functionality to edit extension. (Thanx Francesco Dandrea)
+2003-10-21: Made poping up a selection dialog select the search text. (Thanx Francesco Dandrea)
+2003-10-21: Merged Mac OS-X build patch into main source. (Thanx Rick Hall)
+
+1.3.12: Released 2003-10-20
+
+2003-10-20: Fixed partition support from below.
+2003-10-20: Fixed font problem in windows.
+2003-10-20: Changed version.
+2003-10-19: Some small windows fixes.
+2003-10-19: Added initial partitioning support in browser.
+2003-10-13: Fixed enabling XFT in Qt only mode.
+2003-10-13: Fixed bug in finding function to execute.
+2003-10-13: Added functionality to close debugger editors.
+2003-09-12: Added parse all function to worksheet.
+2003-09-12: Added parse functionality to connection 
+2003-08-26: Fixed problem with X11 style pasting in editor. (Thanx again Volker Goetz)
+2003-08-21: Fixed indenting on EXCEPTION keyword and complex statements.
+2003-08-21: Fixed compile of toresultview.cpp in Qt earlier than 3.1.
+2003-08-21: Added NOCOPY keyword.
+2003-08-21: Fixed problem with deleting some Oracle queries. (Thanx Volker Goetz)
+2003-08-21: Differentiate between no debug info and variable not found in debugger. (Thanx Francesco Dandrea)
+2003-08-21: Made update content work on more than one package per editor.
+2003-08-21: Made debugger able to handle more open windows.
+
+1.3.11: Released 2003-08-09
+
+2003-08-09: Some last minute windows fixes.
+2003-08-04: Some fixes to how tool window sizes are restored from sessions.
+2003-08-01: Added continue execution in debugger. (Thanx Francesco Dandrea)
+2003-07-31: Added toTabWidget to API.
+2003-07-31: Fixed compile problems with Forte compile. (Thanx Francesco Dandrea)
+2003-07-31: Made configure accept beta versions Qt.
+2003-07-30: Fixes for tab widget pane hiding. (Thanx Oliver Jehle)
+2003-07-30: Fixed problem with non oracle index listings in browser.
+2003-07-30: Removed initial extra space in index object type descriptions.
+2003-07-30: Fixed problem with looking in destination table view in schema comparison.
+2003-07-30: Added support for trigger status in oracle extractor.
+2003-07-30: Added enable/disable constraints/trigger buttons to browser.
+2003-07-30: Fixed problem with multiline check list view items.
+2003-07-30: Enable buttons in browser depending on extraction support.
+2003-07-29: Only invalidate layout after all result read in resultitem.
+2003-07-29: Fixed really tricky bug with multiline strings in editors.
+2003-07-28: Fixed problem with restoring window sizes on session restore.
+2003-07-28: Added tooltips of piecharts.
+2003-07-28: Added toolbutton for explain plan in worksheet.
+2003-07-28: Fixed problem with SQL not being updated on some queries on connectionchange.
+2003-07-28: Hide tabs instead of disabling them when not handled. (Thanx Oliver Jehle)
+2003-07-28: Fixed problem with switching connection in database browser.
+2003-07-28: Use new utility function to check DB type. (Thanx Oliver Jehle)
+2003-07-27: Added mandrake RPM build to release scripts.
+2003-07-27: Fixed problem with background not display correctly initially.
+2003-07-27: Fixed maximized state detection when saving and restoring session.
+2003-07-27: Fixed problem with locking up X11 on showing window sometimes (Don't hide row/col in statusbar).
+2003-07-27: Removing bunch of windows newlines.
+2003-07-27: Fixed Qt 3.0 compile problem.
+2003-07-27: Fixed code completion on package members.
+2003-07-27: Added more internal lock types.
+2003-07-27: Don't show main window until after import of session (For more flickerfree startup).
+2003-07-27: Added tab stop setting.
+2003-07-27: Fixed QSql crash on non query statements.
+2003-07-27: Fixed initialization of allfilter in content editor.
+2003-07-27: Indicate if filter is used in content editor by pressing down the filter button.
+2003-07-27: Made filter criterias shared between all content editors.
+2003-07-27: Fixed problem with UNICODE chars being truncated.
+2003-07-27: Fixed oracle quote to correct quote stuff with non ident chars.
+2003-07-27: Don't pool connections if they don't have results.
+2003-07-26: Added parameter name parsing in debugger.
+2003-07-26: Fixed problem parsing non packages in debugger.
+2003-07-26: Added variable names parsing in debugger again.
+2003-07-26: Don't signal error in debugger on userbreak.
+2003-07-26: Fixed problem in debugger in windows.
+2003-07-26: Fixed compile problems in legacy mysql connection provider.
+2003-07-26: Changed how width is calculated in resultcols.
+2003-07-26: Added experimental SAP support. (Thanx Oliver Jehle)
+2003-07-25: Added ugly hack to remove version of Oracle lib in RPM:s.
+2003-07-25: Added check for temporary tool to only be enabled for 8.0 or later.
+2003-07-25: Updated version to 1.3.11.
+2003-07-25: Switched twirl back to GIF version since MNG works so poorly.
+2003-07-25: Reserve size for check in checklist items.
+2003-07-25: Fixed SQL in rollback tool.
+
+1.3.10: Released 2003-07-25
+
+2003-07-24: Fixed problem with all column expand on refresh of resultviews.
+2003-07-24: Work around bug in Qt/Win 3.2.0 and fontmetrics.
+2003-07-24: Fixed problem with missing new option in debugwatch.
+2003-07-24: Some last minute fixes for Windows.
+2003-07-24: Make sure tabs update on refresh in session view.
+2003-07-24: Replaced all header streatch calls with resizemode calls.
+2003-07-24: Fixed horrific bug in map import.
+2003-07-24: Fixed problem with filter not being saved in session sometimes.
+2003-07-24: Fixed width of content editor filter setup.
+2003-07-24: Workaround Oracle bug when using filters and content editor.
+2003-07-24: Show license nag screen on primary screen only on multiple screen configurations.
+2003-07-24: Fixed recompile bug in invalid objects tool.
+2003-07-24: Added support for invalid indexes in the invalid tool.
+2003-07-24: Optimized rollback view (Loosed some precision though). (Thanx Jeff Price)
+2003-07-24: Don't list temporary or secondary tables in analyze tool.
+2003-07-24: Find long ops based on sid and serial in sessions.
+2003-07-24: Fixed code completion again.
+2003-07-24: Moved tools toolbar back to old position, works better.
+2003-07-24: Make X11 link dynamically in the tora-static (Seems to crash otherwise on XFree4.3)
+2003-07-23: Moved connection toolbar to the left of the tools if they all are on top. (Tools now change size)
+2003-07-23: Hide tools not supported by current connection instead of just disabling them.
+2003-07-23: Added posibility for connection providers not to handle more than one query per real connection at a time.
+2003-07-23: Fixed unusual problem with background only queries.
+2003-07-23: Updated sample Makefile to reflect new features.
+2003-07-22: Fixed compile warning in OTL.
+2003-07-22: Updated swedish translation.
+2003-07-22: Added support for timestamp.
+2003-07-22: Update static to include SSL support for PostgreSQL.
+2003-07-22: Changed release script to only create one binary which is static with all but Oracle.
+2003-07-22: Changed installation to use a shellscript to set up library path for Oracle libs unless plugins.
+2003-07-22: Don't make static imply static oracle. To get static oracle use specific switch.
+2003-07-22: Update API doc.
+2003-07-22: Added new autodetect functionality of watches in debugger.
+2003-07-22: Made problems in debugger be visible in more places than the log.
+2003-07-22: Update log even if something went wrong. (Especially the log)
+2003-07-22: Save edited state of editors.
+2003-07-22: Separated GUI and handler of chart manager. (Should hopefully fix some focusing problems)
+2003-07-22: Added 1 parse, 1 execute selection of SGA Trace tool.
+2003-07-22: Made all listviews in the debugger be expanded.
+2003-07-22: Added some keywords.
+2003-07-22: Updated debugger to use new SQL parse framework.
+2003-07-21: Fixed problem with lineno not being copied in parsed statements.
+2003-07-21: Added temporary object tool. (Thanx Oliver Jehle)
+2003-07-21: Fixed bug in trigger extraction. (Thanx Daniel Vérité)
+2003-07-21: Fixed memory corruption bug in toGetSessionType. (Thanx Daniel Vérité)
+2003-07-13: Added partial italian translation. (Thanx Paolo Magnoli)
+2003-05-12: Set mimetype to text/html when copying to HTML.
+2003-05-12: Fixed HTML exporting of lists.
+2003-05-04: Fixed invisible menu in debugger.
+2003-06-02: Fixed some missing Q_OBJECT declarations.
+2003-05-28: Fixed bug with multiline list items.
+2003-05-26: Remember if template window was open or not.
+2003-05-26: Save values in extra columns of template SQL items.
+2003-05-20: Fixed refresh on long ops view in worksheet.
+2003-05-15: Fixed problem with Qt non static plugins in configure. (Thanx Oliver Jehle)
+2003-04-30: Added rollback catch define to utils.h.
+2003-04-30: Save configuration on exit.
+2003-04-29: Save objects instead of widgets in connections.
+2003-04-24: Added fix to really weird bug to do with statement pooling in otl.
+2003-04-24: Minor change to how refresh is made in schema browser.
+2003-04-24: Made refresh on result cols update object cache for table.
+2003-04-23: Fixed bug when destructing QSql driver. (Thanx Laramie Leavitt)
+2003-04-23: Made session filter look at both serial and session id.
+2003-04-23: Made columns in left pane of schema browser and template help fill entire listview.
+2003-04-23: Added new filter functionality for sessions view.
+2003-04-23: Remember sortorder when refreshing resultlists.
+2003-04-23: Remember sort order of sessions.
+2003-04-23: Change recompile all to recompile selection in invalid objects.
+2003-04-23: Added set module call on new connections.
+2003-04-23: Added show SQL for analyze tool.
+2003-04-23: Added blocks column in storage object list tool.
+2003-04-08: Added define TOAPPNAME for application name and use it where needed.
+2003-04-08: Fixed problem with treebased browsing of code.
+2003-04-08: Fixed problems with '' in sql parser.
+2003-04-08: Fixed column resizing problem on numeric only values.
+2003-04-08: Removed some functionality when compiling for OAS (Proprietary project)
+2003-03-19: Make Enter work same as Return in syntax highlighting.
+2003-03-13: Added while, out and type reserved words.
+2003-03-10: Added option to execute when selecting from log.
+2003-03-10: Some more work on the mandrake spec file.
+2003-03-10: Changed version.
+2003-03-10: Added a dummy plugin to preload oracle libraries from ORACLE_HOME path.
+2003-03-08: Created Mandrake Linux specific RPM.
+2003-02-08: Fixed problem with not making outer john to v$process in Session viewer.
+2003-02-08: Added some more keywords.
+
+1.3.9.2: Released 2003-02-16
+
+2003-02-15: If paramget data
+2003-02-15: Use SQL parse in parts of the debugger.
+2003-02-15: Fixed SIGSEGV problem in listviews.
+2003-02-15: Fixed twirl not showing initially... again.
+2003-02-15: Don't expand filenames if the file exist without extension.
+2003-02-15: Made charts obey number formatting as well.
+2003-02-14: Change password when it has expired.
+2003-02-14: Get password from new connection instead of the password editor in new connections.
+2003-02-14: Fixed problem with getting sizing in oracle extractor.
+2003-02-13: Fixed problem with connectionhistory.
+2003-02-13: Format BLOB:s as hex when reading.
+2003-02-13: Check if tools are supported on a database when creating windows.
+2003-02-13: Fixed problem with non Oracle databases and worksheets.
+2003-02-13: Updated to new version of OTL.
+
+1.3.9.1: Released 2003-02-12
+
+2003-02-12: Added option to disable snapshot too old detection (Disabled by default).
+2003-02-12: Fixed indent problem with before mentioned case.
+2003-02-12: Fixed case problem in select sql parse.
+2003-02-12: Don't need resize workaround for Qt 3.1 anymore.
+2003-02-12: Added buttons for traversing previous entries.
+2003-02-12: Added windows legacy bindings for copy/paste/delete.
+2003-02-12: Get block size from parameters not alloced/free space (Much faster).
+2003-02-12: Changed version to 1.3.9.1.
+2003-02-11: Make it posible to view execution plan etc when recalling logged results.
+2003-02-11: Recall log results by clicking into logging list of worksheet.
+2003-02-11: Removed include of sstream.
+2003-02-11: Made toNull/Unnull use toQValues.
+2003-02-11: Made readValue return toQValues in noblock query.
+2003-02-11: Expand in tooltip precision of numerical resultsets.
+2003-02-11: Content editor always use maximum precision when reading numbers.
+2003-02-11: Fixed problem with code completion.
+2003-02-11: Added list of extents for schema browser extent viewer.
+2003-02-11: Fixed problems with multilinetext.
+2003-02-11: Added long ops to resources tab in worksheet.
+2003-02-11: Removed progress in sessionview (Long ops still there and that works better).
+2003-02-10: Changed tuning to remove some implicit number to character conversions.
+2003-02-10: Fixed problem with first tool... again.
+2003-02-10: Fixed hang in alert messenger... again.
+2003-02-10: Definable number format.
+2003-02-10: Added periodic refresh functionality to worksheet.
+2003-02-10: Fixed bug in sorting in SGA trace. (Thanx Jeff Price)
+2003-02-10: Made all of current session run in background queries.
+2003-02-10: Fixed problem with twirl not showing up until it first moves.
+2003-02-10: Made security manager much faster when selecting user with many object grants.
+2003-02-10: Fixed bug with multiple entries of tablespaces in security manager.
+2003-02-10: Removed a lot of flickering when selecting a user in security manager.
+2003-02-10: Selectively removed some obscure keywords (That are also common english words).
+2003-02-10: Updated reserved words to Oracle 9i.
+2003-02-10: Added block to uppercase/lowercase stuff to edit extension.
+2003-02-10: Use obfuscation of passwords when saving sessions too.
+2003-02-10: Added column alignment option to listview menu.
+2003-02-10: Fixed release script to generate correct Oracle9 rpm.
+2003-02-10: Don't update history if not enabled in worksheet.
+2003-02-10: Updated version.
+2003-02-10: Fixed compile problem with Qt2 in toBackground.
+2003-02-10: Fixed problem sorting negative numbers.
+2003-02-10: Removed debug printf from worksheet.
+2003-02-10: Fixed problem with styles not being presented right.
+2003-02-10: Fixed problem with alert messenger ending up as default tool.
+
+1.3.9: Released 2003-02-09
+
+2003-02-09: Made extract to directory generate a tora project file.
+2003-02-09: Fixed problem with detecting Oracle versions on Personal Oracle servers.
+2003-02-08: Fixed a newly introduced SIGSEGV in the storage manager.
+2003-02-08: Fixed a SIGSEGV in toResultViewCheck::setText.
+2003-02-08: Strip \r before executing anything for Oracle since it seems to choke on it.
+2003-02-08: Fixed ignoring of initial / again in worksheet.
+2003-02-08: Some fixes in generating static binaries.
+2003-02-07: Added default option to only show active sessions in sessionmanager.
+2003-02-07: Changed default pane in session to current statement.
+2003-02-07: Added long ops pane to session manager.
+2003-02-07: Added progress from long ops to session view.
+2003-02-07: Other minor windows compilation fixes.
+2003-02-07: Fixed problem with settings not being saved in windows.
+2003-02-07: Don't repaint entire editor when entering ' in an editor.
+2003-02-06: Fixed problem with toObfuscate.
+2003-02-06: Stop query before traversing log.
+2003-02-06: Fixed problem with text depending on allText content in listviews.
+2003-02-06: Fixed problem with columns not being extracted from triggers.
+2003-02-06: Made TriggerInfo be in right SQL group.
+2003-02-05: Report error to UI not just console in alert messenger.
+2003-02-05: Fixed lock in alert messenger when not privy to use it.
+2003-02-05: Added checks if saving to registry in windows fails.
+2003-02-05: Fixed spelling error of update check.
+2003-02-05: Optimization of result list by caching info we need (Huge improvement on sorting).
+2003-02-05: Fixed problem with allText not working in multiline listviewitems.
+2003-02-04: If saving result in worksheet save them when executing all.
+2003-02-04: Execute all only select what has actually been executed.
+2003-02-04: Execute all only executes rest from current cursor position.
+2003-02-04: Progress dialog on execute all.
+2003-02-04: Added some more quotes.
+2003-02-04: Fixed compile clash with pthread in tooutput.cpp.
+2003-02-04: Fixed a minor bug when saving results in worksheet.
+2003-02-04: Real performance boost on resorting of results.
+2003-02-04: Changed twirl logo to MNG instead of GIF.
+2003-02-04: Updated sample makefile to reflect real makefile.
+2003-02-04: Click on background twirl icon and see list of running queries.
+2003-02-04: Keep track of what is executing on connections.
+2003-02-03: Try to use as close popup menu as posible when enabling items in menues.
+2003-02-03: Use erase functions to erase old connection history.
+2003-02-03: Added functions to erase configuration keys.
+2003-02-03: Updated swedish translation.
+2003-02-03: Updated version to 1.3.9.
+2003-02-03: Obfuscate passwords before saving them to the registry.
+2003-02-03: Added functions to obfuscate text.
+2003-02-03: Added commit distance option in script plugin.
+2003-02-02: Added tablespace in extent widget (Thanx Oliver Jehle)
+2003-02-02: Added option of commit distance when creating table contents in extractor.
+2003-02-01: Added extent view in browser.
+2003-02-01: Added result extent class.
+2003-02-01: Fixed problem with lots of parameters to configure. (Thanx Mihai Ibanescu)
+2003-02-01: Changed resize rows to 500 from 200 in resultviews.
+2003-02-01: Added option to never read object cache. (Thanx Oliver Jehle)
+2003-02-01: Added keybinding to stop all queries. (Thanx Oliver Jehle)
+2003-02-01: Added UI to script to output extraction to file instead of editor.
+2003-02-01: Made extractor output to stream instead of strings.
+2003-02-01: Fixed warning in Qt only.
+2003-01-31: Remember what was open in template editor after it has been closed.
+2003-01-31: Insert executed statement when executing from log in worksheet.
+2003-01-31: Fixed problem in extractor on some indexes.
+2003-01-30: Show active sessions in session manager.
+2003-01-30: Fixed bug so you can add new users/roles in security manager.
+2003-01-23: Added delete history connection in connect dialog. (Thanx Oliver Jehle)
+2003-01-23: Added funtionality for custom popup menues for listviews. (Thanx Oliver Jehle)
+2003-01-23: Added a keep alive option to the database settings.
+2003-01-17: Fixed compile warning in result columns.
+2003-01-16: Add recompile all to invalid objects.
+2003-01-16: Added support for object cache disk caching (Whoah, lot of caching there) (Thanx Oliver Jehle)
+2003-01-16: Improved order of dirs in configure. (Thanx Oliver Jehle)
+2003-01-16: Remember last filter in browser. (Thanx Oliver Jehle)
+2002-12-13: Made configure detect lupdate.
+2002-10-29: Fix configure problem with qt-mt.
+2002-10-23: Use msleep if QT_THREAD_SUPPORT to help fink users.
+2002-10-23: Added column with server PID to session view.
+2002-10-23: Fixed problem with translated chartlabels.
+2002-10-09: Don't add multiple include paths or a -I/usr/include.
+
+1.3.8: Released 2002-10-05
+
+2002-10-05: Made warning messages display message in a text editor.
+2002-10-05: Some unused parameter fixed for gcc-2.95.3.
+2002-10-05: Fixed some windows specific problems.
+2002-10-05: Made the stub OCI work again under windows.
+2002-10-05: Fixed specfiles for release.
+2002-10-04: Made it posible to use non thread support Qt version.
+2002-10-02: Another fix for OSX.
+2002-10-02: Renamed LICENSE file.
+2002-10-02: Another fix for gcc-3.2 in configure.pl.
+2002-10-01: Expand toResultItems to fit size.
+2002-10-01: Add support for modifying comments in DB browser.
+2002-10-01: Made toResultItem a little more reusable.
+2002-09-30: Fixed analyze stats in columnview with Oracle 8.
+2002-09-30: Made configure work on Mandrake 9.
+2002-09-24: Applied some Os X changes to configure (Thanx Olof Jönsson).
+2002-09-24: Require multithread version of Qt.
+2002-09-24: Use Qt implementation of semaphores always.
+2002-09-09: Updated the originator of a quote (Thanx Matt Bush).
+2002-09-09: Fixed uninitialized value bug in resultview.
+2002-09-09: Fixed a bunch of warnings for unused variables.
+2002-09-09: Fixed a very minor potential bug in connectionprovider.
+2002-09-09: Minor optimization of editor printing.
+2002-09-09: Fixed focus out problem with sql text editor.
+2002-09-02: Fixed problem with incorrect background of toolbars in KDE styles.
+2002-09-02: Fixed a bunch of gcc-3.2 warnings.
+2002-08-26: Removed toFind since gcc-3.2 seems to have problems with it.
+2002-08-26: Fixed deadlocks when threadcreation failed.
+2002-08-26: Made threads throw exceptions on errors.
+2002-08-26: Fixed problem with exceptions in connection providor destructor.
+2002-08-12: Added empty french translation.
+2002-08-08: Fixed problem with edit file menu not being updated correctly.
+2002-08-08: Fixed compile problem on windows.
+2002-08-08: Fixed quote.
+2002-08-08: Fixed problem with disabling tools and locales and the default tool.
+
+1.3.7: Released 2002-08-05
+
+2002-08-01: Fixed problem with some windowmenu commands.
+2002-08-01: Fixed problem with shortcuts for file/edit stuff not being available until menu was shown.
+2002-07-31: Fixed problem with qApp not being initialized when translations were used.
+2002-07-31: Added initial support for BSD in configure.
+2002-07-31: Fixed problem with worksheet when session plugin not loaded.
+2002-07-31: Fixed problem with compiling without mysql or oracle.
+2002-07-30: Fixed problem with lrelease and Qt2.
+2002-07-30: Set sorting of objects in security manager.
+2002-07-30: Fixed problem with changing connection in security manager.
+2002-07-30: Finished the swedish translation of TOra.
+2002-07-30: Some Qt2/non KDE fixes.
+2002-07-30: Fixed problem with CSV format separators.
+2002-07-28: Fixed problem with setIconSet on parameter ignored.
+2002-07-28: Added some Log4PL/SQL support to toOutput.
+2002-07-28: Added template docs for Log4PL/SQL (Thanx Guillaume Moulard).
+2002-07-28: Fixed problem with reading all initially on content editor.
+2002-07-28: Fixed problem with Qt only compile.
+2002-07-19: Added top buffers/row in sga trace.
+2002-07-18: Added option to set locale to global options.
+2002-07-18: Some more missing translations added.
+2002-07-18: Better support for translations in Makefile.
+2002-07-17: Made error reporting to stdout go to stderr.
+2002-07-17: Some fixes to classes which used tr but didn't have a Q_OBJECT.
+2002-07-17: Added lupdate support for Makefile.
+2002-07-17: Added stub for swedish translation.
+2002-07-17: Added a file with a bunch of extra translations needed.
+2002-07-17: Fixed a bug in toTranslateMayby function.
+2002-07-17: Improved error reporting for Oracle 7 dataases.
+2002-07-17: Fixed problem with setting cursor position to error in worksheet.
+2002-07-15: Made result content only disregard LONG and LOBs when connected to Oracle database.
+2002-07-15: Made tool keys be QCString.
+2002-07-15: Made toSQL more QCString friendly.
+2002-07-12: Made import/exportData use QCString as prefix.
+2002-07-12: Made saveMap take QCString as key datatype.
+2002-07-12: Internationalization workover of code.
+2002-07-12: Changed accessing config using QCString, not QString.
+2002-07-05: Fixed problem with column extraction and datascale in extractor.
+2002-07-02: Changed version to 1.3.7 again.
+
+1.3.6.1: Released 2002-07-05
+
+2002-07-04: Fixed a bug in restore the size & position of the main window from sessions.
+2002-07-04: Changed windows license to be free for academic use.
+2002-07-04: Removed license.c file from CVS repository (Not needed for nonlicensed version).
+2002-07-04: Rewrote toresultlistformatui.uui to 2.x Qt format.
+2002-07-04: Fixed refresh in SGA trace.
+2002-07-04: Fixed problem in worksheet with executionplan not updating.
+2002-07-04: Fixed problem with modifying tempfiles in storagemanager.
+2002-07-04: Added units to long ops in SGA trace.
+2002-07-04: Added unfinished long operations to SGA trace.
+2002-07-04: Applied patch to sync debian distribution (Thanx Michael Meskes).
+2002-07-04: Increased readahead in backgroundqueries.
+2002-07-04: A large speedup in contenteditor.
+2002-07-04: Worked around QPrinter problem with from/to pages being unitialized.
+2002-07-04: Don't sort numbered listviews.
+2002-07-03: Don't autoresize listviews when read more fixed number of rows.
+2002-07-03: Fixed problem with background color being wrong in highlighted text.
+2002-07-03: Fixed problem with comboboxes not resized to correct size.
+2002-07-03: Fixed problem with temporary tablespaces in tuning.
+2002-07-03: Fixed problem with extentmanagement for Oracle 8.0 in storage manager.
+2002-07-03: Fixed problem with menues not behaving like they should.
+2002-07-03: Fixed some minor exception problems.
+2002-07-03: Fixed a bug with not disabling unsupported features for different databases.
+2002-07-03: Added new template to view SQL dictionary.
+2002-07-02: Save last format used when exporting result as text.
+2002-07-02: Fixed problem with starting alert manager without privs to use it.
+2002-07-02: Improved error reporting with invalid ORACLE_HOME.
+2002-07-02: Changed version to 1.3.7.
+2002-07-02: Don't add a minimum extent clause to locally managed tablespaces.
+2002-07-02: Added posibility to specify separator and delimiter for CSV format.
+2002-07-02: Fixed problem with security account info for Oracle 7.3.
+
+1.3.6: Released 2002-07-01
+
+2002-07-01: Some fixes for windows.
+2002-06-27: Fixed for Qt2 in content editor.
+2002-06-27: Be aware of exceptions in destructors.
+2002-06-27: Fixed problem with code completion on all but first occurance.
+2002-06-27: Fixed problem with statements ending in "...end".
+2002-06-19: Worked over so that makefiles actually work when $ROOT is set.
+2002-06-19: Fixed problem with unhandled exception in server tuning.
+2002-06-19: Clear filename of resultfields when restating query.
+2002-06-19: Also fixed the MySQL connection provider as regard to port.
+2002-06-19: Now ports are specified as a colon after host instead of DB.
+2002-06-19: Applied patch for fixing package building. (Thanx Erik Selberg)
+2002-06-06: Implemented replace in content editor.
+2002-06-06: Added default values to configure help output.
+2002-06-06: Fixed problem with searching on text not shown in listviews.
+2002-06-06: New edit widget framework to fascilitate search & replace.
+2002-06-06: Fixed problem with not being able to select from menues.
+2002-06-05: Change worksheet caption on save to reflect new filename.
+2002-06-04: Added option to open file in new worksheet.
+2002-06-04: Fixed problem with docks when not compiling with KDE support.
+2002-06-04: Fixed problem with writing file without KDE support.
+2002-06-04: Bugfix of highlighted text drawing.
+2002-06-04: Fixed problem with multiline comments in worksheet.
+2002-06-03: Huge speedimprovement in rendering of highlighted text when Xft is used (Moderate increase otherwise).
+2002-06-03: Fixed problem with keyboard shortcuts sometimes not working.
+2002-06-03: Display filename in title of worksheet.
+2002-05-31: Fixed KDE base detection to use KWin instead of kappfinder.
+2002-05-30: Fixed KDE KPrinter detection. (Thanx Volker Goetz)
+2002-05-30: Some more work on the migration framework for oracle.
+2002-05-27: Fixed compile problem in waitstate when compiling with Qt2.
+2002-05-27: Made configure search for shared libraries called .sl as well as .so (HP-UX).
+2002-05-27: Display filename when asking to save file in worksheet.
+2002-05-23: Don't pass connection to toolbar.
+2002-05-23: Code review of uncaught exceptions, huge number of changes.
+2002-05-23: Fixed problem with opening errounus templates.
+2002-05-23: Fixed problem with errors in rc file and SQL file.
+2002-05-21: Fixed problem with marked text execution in worksheet.
+2002-05-16: Fixed problem with else if of SQL indentation.
+2002-05-16: Fixed problem with else if of SQL parser.
+2002-05-10: Fixed problem with view extraction column order.
+2002-05-07: Fixed problem with session wait event analyzer.
+2002-04-28: Fixed restoring session in schema browser.
+2002-04-28: Fixed problem with object and primary key of same name in oracle extractor.
+2002-04-28: Fixed problem with background labels in tuning.
+2002-04-28: Fixed problem with enabling chart tabs in tuning.
+2002-04-26: Fixed problem regarding IS NULL in sql parser.
+2002-04-26: Fixed problem with expanding checked items in schema comparison.
+2002-04-26: Fixed problem with really large multiline listitems.
+2002-04-26: Keep track of last directory file was opened or saved in.
+2002-04-25: Some fixes to the INSTALL file.
+2002-04-24: Applied patch to make configure detect Qt snapshots.
+2002-04-20: Added wait state analyzer to session manager.
+2002-04-20: Added session support for waitstate analyzer.
+2002-04-20: Added only explain plan in worksheet.
+2002-04-19: Always recompile everything on configure.
+2002-04-19: Updated version to 1.3.6 again.
+2002-04-19: Fixed compile problem on Solaris.
+2002-04-19: Added option to globally disable upgrade check.
+
+1.3.5.1: Released 2002-04-18
+
+2002-04-18: Always add -ldl if you are compiling for Linux.
+2002-04-18: Fixed default value of schema value in browser.
+2002-04-18: Try to find static mysql library even though linking with Qt3.
+2002-04-18: Changed version to 1.3.5.1 and release immediately.
+2002-04-18: Fixed problem with mysql only getting first 100 rows.
+2002-04-18: Fixed spelling error in help.
+2002-04-17: Changed release script to generate two static binaries only.
+2002-04-17: Made file IO access DB in background in tuning.
+2002-04-17: Updated version to 1.3.6.
+2002-04-17: Fixed spelling error of tuning dialog.
+2002-04-17: Update to contributors section of about.
+2002-04-17: Made overview window of tuning poll in background.
+
+1.3.5: Released 2002-04-17
+
+2002-04-16: Fixed wrong caption of license window in Windows.
+2002-04-16: Fixed configure problem with mysql and Qt3.
+2002-04-16: Added confirmation to change password tool.
+2002-04-16: Some fixes to the oci stub.
+2002-04-15: Fixed to rpm files.
+2002-04-15: Some minor Qt2 fixes.
+2002-04-15: Made use of result combos in all user lists where applicable.
+2002-04-15: Added additional items functionality to result combos.
+2002-04-15: Removed empty HTML table from API documentation.
+2002-04-15: Fixed problem with ORA-24344 not being correctly reported.
+2002-04-15: Don't log errors from OCI_SUCCESS_WITH_INFO returns.
+2002-04-15: Don't display status messages from other threads than main thread (Can crash).
+2002-04-15: Temporary ignore SQL*Plus scripting commands until framework complete in worksheet.
+2002-04-15: Fixed parsing of case within other statements in sql parser.
+2002-04-15: Made worksheet use new SQL parser to get statements.
+2002-04-15: Made SQL parser handle SQL*Plus specific commands correctly (End on newline, not ;)
+2002-04-15: Added end of line functionality to tokenizer.
+2002-04-15: Added new function to parse one statement from a tokenizer.
+2002-04-15: New tokenizer classes for the SQL parser, should make it much more adaptable to other uses.
+2002-04-14: Fixed problem with missing style.
+2002-04-14: Fixed problem with describing insert statements.
+2002-04-14: Another stab at fixing extraction of sources in oracle extraction.
+2002-04-14: Added support for the Qt Style factory if Qt3.
+2002-04-12: Don't block UI while reading users in schema browser.
+2002-04-12: Added new widget, combobox with background reading of query to add values.
+2002-04-11: Changed registry key for windows settings.
+2002-04-11: Added an OCI stub to be able to use TOra without Oracle in Windows.
+2002-04-10: Implemented migrateSource for oracle extrator.
+2002-04-10: Better criteria specification in session manager.
+2002-04-10: Fixed bug with submenu saved SQL in worksheet.
+2002-04-10: Display only analyzed/not analyzed objects in statistics manager.
+2002-04-10: Added support for indexes in statistics manager.
+2002-04-10: Added all schemas option to statistics manager.
+2002-04-09: Implemented the initial fetch of content editor for MySQL.
+2002-04-09: Fixed spelling error in a dialog window.
+2002-04-09: Fixed problem with not null columns in postgresql.
+2002-04-09: Added better datatype description in postgresql.
+2002-04-09: Added recent files to end of file menu.
+2002-04-09: Reserve range for last file in menues.
+2002-04-09: Support specified file in editors.
+2002-04-09: Added posibility to specify file to open in editwidgets.
+2002-04-09: Added posibility to use several chart tabs in tuning.
+2002-04-09: Added option to specify if synonym object cache is needed.
+2002-04-04: Fixed problem with multiline comments in worksheet.
+2002-03-26: Speedup of content editor.
+2002-03-14: Made stop all disabled if no connection exists.
+2002-03-11: Fixed problem with doubleclicking on history entries in connection dialog.
+2002-03-10: Fixed  default values of columns in extractor again.
+2002-03-10: Went through source and made delete[] match new[].
+2002-03-09: Fixed problem with default values of columns in extractor.
+2002-03-09: Fixed another problem with the content editor on non oracle connections.
+2002-03-08: Fixed describing descending indexes.
+2002-03-08: Continued work on migration extractor for Oracle.
+2002-03-07: Fixed content editor filter.
+2002-03-07: Improved error reporting of QSql provider.
+2002-03-07: Simplified project management by making both lists select synchonized.
+2002-03-07: Consistently use item selection in security manager (Fixes crash).
+2002-03-06: Fixed bug in debugger.
+2002-03-06: Added URL to TOra homepage in about dialog.
+2002-03-06: Fixed kdeversion for new headerfiles in KDE 3.
+2002-03-05: Fixed a weird semaphore assignment in noblock query.
+2002-03-05: Hopefully fixed bug with empty chartmanager window in Windows.
+2002-03-05: Changed icon on reread object cache to the refresh icon.
+2002-03-05: Abort incremental search with escape.
+2002-03-05: Changed version to 1.3.5.
+
+1.3.4: Released 2002-03-04
+
+2002-03-04: Fixed packaging of helpfiles in rpms.
+2002-03-04: Added support for moving around project items.
+2002-03-04: Added an optional after argument to template items.
+2002-03-04: Added a quote.
+2002-03-04: Added order support to SQL project.
+2002-03-03: Added a method to open a worksheet on a specific file.
+2002-03-03: Added open file method to editor.
+2002-03-03: Added template for SQL projects.
+2002-03-02: Save template filter on save session.
+2002-03-01: Fixed some valgrind warnings.
+2002-03-01: Template provider save & restore state functionality.
+2002-03-01: Fixed crash when updating stuff with QSql provider.
+2002-02-28: Fixed Qt3 problem with checkboxes in QButtonGroup.
+2002-02-28: Made it posible to use resultsets without tool widget parents.
+2002-02-28: Fixed problem with font settings for code and text.
+2002-02-28: Fixed indication of uniqueness of MySQL indexes.
+2002-02-27: Added workaround for broken fontmetrics in Qt.
+2002-02-27: Fixed using returning clause in content editor on views.
+2002-02-27: Don't give error when setting filter in browser and not having access to tablespaces.
+2002-02-25: Fixed problem with column statistics on Oracle7.
+2002-02-23: Added a doubleclick option to a template item.
+2002-02-23: Added filter setting to template DB browser.
+2002-02-23: Added toolbar to template help.
+2002-02-23: Add new objects in debugger to objectcache.
+2002-02-22: Fixed minor problem with exception reporting in oracle connection.
+2002-02-22: Fixed problem with table extracting in 7.3 oracle.
+2002-02-22: Fixed a potential problem with errors in long statements.
+2002-02-22: Added assign as an ignored word in the worksheet.
+2002-02-22: Made parameters for paramget be connection specific.
+2002-02-22: Fixed problem with SET keyword in worksheet.
+2002-02-22: Fixed bug with initial fetch in content editor.
+2002-02-22: Added small tool to change password.
+2002-02-17: Applied Debian packaging patch (Thanx Michael Meskes).
+2002-02-17; Fixed problem with compile under gcc-3.0.
+2002-02-15: Improved postgresql support for index and sequence (Thanx Volker Götz).
+2002-02-13: Don't show chartmanager menu if window hidden.
+2002-02-13: Delete oracle connections in separate threads to work around OCI bug.
+2002-02-11: Fixed problem with cancel on save of result.
+2002-02-09: Applied patch to fix versions in PostgreSQL (Thanx Volker Götz).
+2002-02-05: Fixed problem with creating table called package.
+2002-01-31: Don't keep track of target session ID (Not used) in debugger.
+2002-01-28: Another fix for reading multichar lobs.
+2002-01-28: Fixed update check.
+2002-01-28: Fixes to content editor for editing LOB fields.
+2002-01-28: Fixed tooltip on tablespace/datafile view button in storagemanager.
+2002-01-28: Fixed problem with 0 free being null in storage manager.
+2002-01-28: Updated version to 1.3.4.
+
+1.3.3: Released 2002-01-28
+
+2002-01-27: New debian files.
+2002-01-26: Another stab at multichar lobs.
+2002-01-26: Fixed -n problem with echo on solaris.
+2002-01-26: Some Qt2 fixes.
+2002-01-26: Synched up configure and Makefile.sample.
+2002-01-26: Fixed KDE/Qt version consistency check.
+2002-01-26: Configure for compiling with mysql support and Qt2 only.
+2002-01-25: More fixes to non oracle configure.
+2002-01-25: Added optional upgrade check. (Only Qt3)
+2002-01-25: Only build plugin based TOra on linux.
+2002-01-25: Fixed problem compiling without mysql & oracle support in configure.
+2002-01-25: Better support for Oracle versions in configure.pl.
+2002-01-25: Added ORACLE_HOME to Makefile in configure.pl.
+2002-01-24: Fixed problem in configure when not including oracle support.
+2002-01-24: Fixed reading CLOB:s.
+2002-01-22: Applied patch for kcc support. (Thanx Bo Johansson)
+2002-01-21: Don't do the resize of columns in table in Qt2 (Buggy Qt, seems to work in 3)
+2002-01-21: Some fixes to errors when reading LOB:s.
+2002-01-21: Added email alerting to chart manager.
+2002-01-21: Added toSMTP class to send email alerts.
+2002-01-21: Fixed KDE installation into the KMenu.
+2002-01-20: Fixed KDE3 linkage problem in configure.
+2002-01-19: Fixed problem with lob overflow.
+2002-01-18: Added edit widget textview.
+2002-01-18: Finished schema report generation.
+2002-01-18: Some changes to how segment attributes are described.
+2002-01-18: Added escape function to html class.
+2002-01-18: Fixed bug with references always pointing to same schema as originating table.
+2002-01-18: Added columndefinition to view description.
+2002-01-17: Include comments for views in extractor.
+2002-01-17: Some minor changes to how indexes are described.
+2002-01-17: Fixed incorrect capitalization of tablecolumns in described columns.
+2002-01-17: Fixed problem with search & describe in script tool.
+2002-01-17: Always sort the string N/A last in lists.
+2002-01-17: Started new schemo report functionality.
+2002-01-17: Added NONE to all describe types that doesn't include schema as top context.
+2002-01-17: Changed PL/SQL tab name to code. (More DB generic)
+2002-01-17: Added status column of code objects in browser.
+2002-01-17: Added dialog informing of waiting for objectcache.
+2002-01-16: Added RMAN info into backup tool.
+2002-01-16: Added archive log info to backup tool.
+2002-01-16: Fixed problem with extent view being updated even if hidden in storage manager.
+2002-01-16: Added option for autoextendgraph in storage manager.
+2002-01-16: Fixed missing include of qtoolbar.h.
+2002-01-16: Fixed problem with slow tablespace query in storage manager.
+2002-01-16: Fixed problem with Oracle7 in storage manager.
+2002-01-16: Added spaces around / in availability column of storage manager.
+2002-01-15: Implemented migrate in toExtract.
+2002-01-15: Updated version.
+2002-01-15: Change label of copy format selection dialog.
+2002-01-15: Fix for external authentication.
+2002-01-15: Fixed clipboard selection mode. (Thanx Volker Götz)
+2002-01-15: Fixed problem with toExtract and missing type.
+2002-01-15: Fixed problem with toExtract not calling initialize.
+
+1.3.2: Released 2002-01-15
+
+2002-01-14: Some fixes to fileextensions.
+2002-01-14: Fixed some windows issues.
+2002-01-14: Fixed problem copying selection from content editor without header.
+2002-01-14: Added automatic resizing of content editor columns.
+2002-01-14: Added last describe stuff in oracle provider.
+2002-01-14: Made some fixes to tree lists copy.
+2002-01-14: Don't update session list on timer update, just the tabs.
+2002-01-14: Fixed problem with disabled extent view in storage manager initially.
+2002-01-14: Added support for only files in storage manager.
+2002-01-14: Added contributors to end of about dialog.
+2002-01-14: More PostgreSQL patches. (Thanx Volker Götz)
+2002-01-14: Cache all object types on postgresql connection.
+2002-01-14: Fixed bug with filename extension.
+2002-01-14: Changed the free bars in storage manager to also show auto extend.
+2002-01-14: Fixed problem with stripping ; when using case.
+2002-01-14: Added maxbytes to storage manager.
+2002-01-14: Removed user_bytes from storage manager.
+2002-01-14: Some Qt only fixes.
+2002-01-14: Column comment support in PostgreSQL (Thanx Stefan Rinkeskär).
+2002-01-14: Added transaction user tab in rollback.
+2002-01-14: Added last SQL column in sessions.
+2002-01-13: Don't update secondary tabs in worksheet if error occured.
+2002-01-13: Fixed problem with getParams error reporting.
+2002-01-13: Moved clipboard setup from toMain to main function.
+2002-01-13: Add .sql to files if extension is missing.
+2002-01-13: Moved visualization tab in worksheet.
+2002-01-13: Added stop all running queries button.
+2002-01-13: Changed font setup to editor setup.
+2002-01-13: Added option for extensions in editors.
+2002-01-13: Applied patch for improved PostgreSQL support. (Thanx Volker Götz)
+2002-01-13: Added support for set without ending ; on line in worksheet.
+2002-01-13: Ignore worksheet lines starting with '@' character.
+2002-01-13: Fixed problem with next/previous memo editor buttons in lists.
+2002-01-13: Disable coalesced by default in storage manager.
+2002-01-13: Don't sort sga trace result in listview by default.
+2002-01-13: Changed name of Windows menu to Window menu.
+2002-01-13: Applied patch for fixing copy problem in X11. (Thanx Volkor Götz)
+2002-01-13: Fixed problem with no alphanumerical source packages.
+2002-01-13: Implemented describe in Oracle extractor.
+2002-01-12: Fixed bug in describe of snap tables.
+2002-01-12: Added case sensetivity in Oracle extractor.
+2002-01-12: Implemented create in Oracle extractor.
+2002-01-10: Implemented Oracle drop as a proof of concept for extractor.
+2002-01-10: Fixed problem with forgetting to delete progress in extractor.
+2002-01-10: Use new extractor stuff in result extract class.
+2002-01-10: New DB generic extractor framework in place.
+2002-01-03: Added two more quotes.
+2002-01-02: Changed version to 1.3.2.
+2002-01-02: Some more tweaks on the QSql connection provider.
+2002-01-02: Fixed problem with buttons not activating on some connection changes.
+2002-01-02: Added clear chart to context menu of line chart.
+2002-01-02: Implement synonym map in QSql connection.
+2002-01-02: Added support for hidden parameters in parameter editor.
+2002-01-02: Fixed problem with dividing by seconds in wait event display.
+2002-01-02: Made the wait event display ms instead of 1/100s.
+2002-01-02: Fixed problem with CPU in wait event analyzer.
+2002-01-02: Fixed show extent bug in storage if off by default.
+2002-01-02: Fixed problem compiling Qt only with Qt < 3.
+
+1.3.1: Released 2002-01-02
+
+2002-01-01: Some more PostgreSQL fixes.
+2002-01-01: Added some SQL for PostgreSQL (Thanx Volker Götz)
+2002-01-01: Fixed problem with PostgreSQL.
+2001-12-29: A few more fixes to auto indentation.
+2001-12-29: Fixed problem with create or replace in debugger.
+2001-12-29: Accept KDE 2.1 includefiles in configure.pl
+2001-12-29: Fixes to tora-static.spec.
+2001-12-29: Fixed removing Makefile on distclean.
+2001-12-29: Fixed problem with oversized toolbars in Qt only versions.
+2001-12-29: Fixed problem with maximizing first toolwindow.
+2001-12-29: Made tora-static include postgresql.
+2001-12-29: Update connectionmode from provider.
+2001-12-29: Some of the usual last minute fixes.
+2001-12-29: Fixed problem with saving last session and non tool windows.
+2001-12-28: Always refresh SGA trace on refresh.
+2001-12-28: Fixed problem with going to last record in content editor.
+2001-12-28: Added protection against statusmessage flooding.
+2001-12-28: Handle failure to create threads more gracefully.
+2001-12-28: Very preliminary PostrgreSQL, Microsoft SQL and ODBC support.
+2001-12-28: Renumbered tools again, order unchanged.
+2001-12-28: Added port specification (: after hostname) to MySQL and QSql drivers.
+2001-12-27: Fixed problem with loosing all passwords if using empty password.
+2001-12-27: Fixed problem with MySQL and new browser optimisation (Don't optimize).
+2001-12-27: Fixed not null indication in native MySQL provider.
+2001-12-27: Direct MySQL support disabled when Qt3 is used.
+2001-12-27: Removed pesky QSqlDatabase warning from query implementation.
+2001-12-27: Added error indication to firstResult signal of result long.
+2001-12-27: Fixed small bug with read all on eof result long.
+2001-12-27: Fixed problems with windows menu and hidden windows.
+2001-12-27: Added a QSql connection provider.
+2001-12-27: Use simplifyWhiteSpace when displaying errors in statusbar.
+2001-12-27: Added initialize function to toConnectionProvider.
+2001-12-27: Use toListView in new connection dialog.
+2001-12-27: Fallback on stringfont (Backward compatibility).
+2001-12-27: Removed clone call from connection implementation (Not used).
+2001-12-27: Some fixes for Qt only compile.
+2001-12-27: Workaround false windows compiler warning in toHtml.
+2001-12-27: Fixed bug regarding colon at end of line in blocks and executionplans.
+2001-12-27: Fixed bug regarding newlines at end of statement and indenting.
+2001-12-26: Never return extra newlines at end of indented PL/SQL.
+2001-12-26: Handle child items in v$sql correctly.
+2001-12-26: Fixed some problems with dialog box message alerting.
+2001-12-26: Improved performance when using filter in schema browser.
+2001-12-25: Set icon on charts.
+2001-12-25: Added ability to open chart track file.
+2001-12-25: Save persistent chart manager settings in config file.
+2001-12-25: Fixed problem with incremental search.
+2001-12-25: Added chart tracking to file in chart manager.
+2001-12-25: Added chart alarms in chart manager.
+2001-12-24: Can copy chart with other parent than the workspace.
+2001-12-24: Added search icon and toolbutton.
+2001-12-24: Went through menues to add ... where window pops up.
+2001-12-23: Created TOra .desktop file.
+2001-12-23: Detect KDE base to install icons and desktop file in configure.
+2001-12-23: Detect kde3 better in configure.
+2001-12-23: Worked over toSQL and made sure it is always passed as const.
+2001-12-23: Added query with toSQL and parameteres to toResult.
+2001-12-23: Made connection and timer public in toResult.
+2001-12-23: Added chart manager tool.
+2001-12-23: Added chart handling hooks to main window.
+2001-12-23: Added options to set default display and chart samples (Including unlimited)
+2001-12-23: Make charts able to store more values than displayed.
+2001-12-23: Added scrollbars to line and barcharts.
+2001-12-23: Added line numbers in statement structure list.
+2001-12-23: Removed a lot of overhead in statement structure list.
+2001-12-23: Added info about control file records to tuning screen.
+2001-12-23: Changed default name in alert.
+2001-12-23: Added new backup manager tool (Will house rman stuff later).
+2001-12-23: Fixed configure to use otlv4.
+2001-12-23: Added resource limits tab to current.
+2001-12-23: Changed tree step size to 15 for a listviews.
+2001-12-23: Fixed rounding problem in piechart.
+2001-12-23: Display original sort order with first column in wait event analyzer.
+2001-12-23: Use new disable stuff in charts in wait event analyzer.
+2001-12-23: No describe under cursor in lite worksheet.
+2001-12-23: Added option to disable charts in line and barcharts.
+2001-12-22: Don't clear plan on execute in worksheet.
+2001-12-22: Explain plan now works on SQL within on anonymous PL/SQL blocks.
+2001-12-22: Don't explain plan anything that isn't a DML.
+2001-12-22: Improved unique ident generator for plans.
+2001-12-22: Added library cache view to tuning.
+2001-12-22: Don't update non chart tabs automatically in tuning.
+2001-12-22: Changed SGAStatement to use new explain plan functionality.
+2001-12-22: Always read plans on normal connection instead of background.
+2001-12-22: Added functionality to explain plans in other schemas.
+2001-12-22: Some more of the endless indentation tweaking.
+2001-12-22: Made getToken return binds as one token.
+2001-12-22: Added accessed objects to session.
+2001-12-21: Fixed SIGSEGV bug for MySQL in table indexes.
+2001-12-21: Improved MySQL support in database browser.
+2001-12-21: Fixed bug when using the Windows close menu item.
+2001-12-21: Remove reference to Qt version in about.
+2001-12-21: Change name of alert tool to alert messenger.
+2001-12-20: Changed sort order of this file.
+2001-12-20: Include waitstate selection in saved session.
+2001-12-20: Added ability to sort waitstatelist.
+2001-12-20: Added values in waitstate list.
+2001-12-20: Don't read stuff in background if modal widget open that isn't parent.
+2001-12-20: Ask before opening new file in changed editor.
+2001-12-20: Added tooltip to background running queries.
+2001-12-20: Fixed no SQLNet connection in oracle provider.
+2001-12-20: Improved resultcols when object cache not ready.
+2001-12-19: Added open cursors number in oracle settings.
+2001-12-19: Enabled stream pooling since it seems to work now.
+2001-12-19: Upgraded to OTL 4.0.
+2001-12-19: Fixed SIGSEGV on execute in lite worksheet.
+2001-12-19: Always start reading object cache when choosing reread in menu.
+2001-12-19: Added option to never read object cache unless mandatory.
+2001-12-19: Some more fixes to when profiler tables are missing.
+2001-12-18: Check if profiler tables exists on profiler startup, not in execute.
+2001-12-18: Fixed bug with permanent & online mixed up in new tablespace dialog.
+2001-12-18: Added support for tempfiles in storage manager.
+2001-12-18: Fixed problem with toolbar in security manager.
+2001-12-18: Fixed problem with missing license in Qt3.
+2001-12-18: Better indentation of creating tables.
+2001-12-18: Added incremental search menu items.
+2001-12-18: Mew specfile for static to match the new basic one.
+2001-12-18: New specfile with oracle and MySQL in separate packages.
+2001-12-17: Changed version to 1.3.1.
+2001-12-17: Fixed sorting of waitstates according to suggestions from Fritz Hoogland.
+2001-12-17: Fixed some capital letters in menues.
+2001-12-17: Fixed paths with /ust.
+2001-12-17: Some more fiddling with the analyzer.
+2001-12-16: Last fixes to be able to compile in KDE3.
+2001-12-16: Fixes to configure if KDE3 is used.
+2001-12-16: Fixes to configure if Qt is not in a standard place.
+2001-12-16: Plugin support for all ELF systems.
+2001-12-16: Don't generate useless .new file when saving map.
+2001-12-16: Make configure able to generate which plugins to what rpm packages.
+2001-12-16: Added toLegendChart to api.
+2001-12-15: Added some more quotes.
+2001-12-15: Big workover and cleanup of headerfiles.
+2001-12-15: Split tomain.h into toMain declaration and utils.h.
+
+1.3.0: Released 2001-12-17
+
+2001-11-06: Some minor API changes to the editwidget interface.
+2001-11-06: Fixed a really ugly toThread bug in linux & windows.
+2001-11-06: Added drop changes from parameter editor and fixed update problem.
+2001-11-06: Fixed polling problem with session statistics.
+2001-11-09: Took up work on the migrate functionality of toExtract.
+2001-11-09: Much quicker startup of toScript tool.
+2001-11-13: Added table aware content editor filter.
+2001-11-19: Added signal on linecharts when values are added.
+2001-11-19: Added methods to stop/start automatic updating of charts.
+2001-11-19: Added options to disable tabs in tuning view.
+2001-11-19: Fixed identifier bug in explain plan.
+2001-11-19: Added saved plan browser to statistics manager.
+2001-11-19: Add oracle columns to explain plan in constructor.
+2001-11-19: Added functions to import/export data from linecharts.
+2001-11-19: Added functions to export a listview to file.
+2001-11-19: Added ability to save, load & compare worksheet statistics.
+2001-11-20: Fixed focus in worksheet to be on editor on startup.
+2001-11-20: Started writing functions to save state of application to file.
+2001-11-21: Added open, save, close session menu items.
+2001-11-21: Added session support to worksheet.
+2001-11-21: Added options to automatically save and restore sessions on startup.
+2001-11-21: Added toExpandFile to the API.
+2001-11-21: Fixed semaphore problem in cancel of oracle query.
+2001-11-21: Added session support to PL/SQL debugger.
+2001-11-21: Fixed a delay problem when deleting noblockqueries.
+2001-11-21: Added wait event analyzer to tuning.
+2001-11-21: Added legend only chart.
+2001-11-21: Made more chart colors available.
+2001-11-21: Don't draw piecharts if all values are 0.
+2001-11-21: Display wait events in ms, nor 100s of second.
+2001-11-21: Fixed help context on bind parameter.
+2001-11-22: Added single record form editor in content editor.
+2001-11-22: Added session support to browser.
+2001-11-22: Fixed problem with filter on toresultlongs.
+2001-11-22: Removed a memory leak in filter buffers.
+2001-11-22: Added columns to legend chart.
+2001-11-22: Made some improvements and bugfixes to tuning waits.
+2001-11-22: Use non solid brushes for chart colors.
+2001-11-22: Fixed problems with restored session tools window caption.
+2001-11-22: Fixed problem with resetting statistics in worksheet.
+2001-11-22: Fixed problem stoping query in worksheet.
+2001-11-23: Fixed problem with deleting last statistic in worksheet statistics.
+2001-11-23: Made visualize able to handle more than 1 title column.
+2001-11-24: Separated tool and edit toolbar in main window.
+2001-11-24: Some minor changes to the toEditWidget interface.
+2001-11-24: Added start of editor extensions.
+2001-11-26: Fixed problem with compiling in debugger.
+2001-11-26: Implemented block indent in editor.
+2001-11-26: Added editor settings tab under tools.
+2001-11-27: Changed references from www.globecom.net to www.globecom.se.
+2001-11-28: Apply changes to session to all open sessions in connection.
+2001-11-28: Fixed problem with tora-mono in editwidget.
+2001-11-28: Added key shortcuts to indent/deindent.
+2001-11-28: Started on PL/SQL profiler.
+2001-11-28: Commented out OCIReset (Doesn't work with Oracle 8.0).
+2001-11-29: Fixes for bourn shell in configure.
+2001-11-29: Changes to toConnectionProvider to be able to provide several providers.
+2001-11-29: Redrew the clock icons.
+2001-11-29: Fixed problem with exceptions in provider being thrown.
+2001-11-29: Fixed completion with overloaded functions.
+2001-11-29: Added datatype to function completion.
+2001-11-30: Completed PL/SQL profiler.
+2001-12-01: Reordered tools.
+2001-12-01: Separated connection toolbar from tools.
+2001-12-01: Remove list print scale option.
+2001-12-01: Added option to move tools toolbar to left.
+2001-12-01: Removed desktop aware option in windows.
+2001-12-01: Show result tab in profiler after run.
+2001-12-01: Show about dialog on new version instead of license.
+2001-12-01: Fixed problem with remembering object name when changing schema.
+2001-12-01: Wait a small amount of time before updating right on browser.
+2001-12-01: Added keyboard shortcut ALT+N to move focus to browser object list.
+2001-12-01: Fixed problem with reading errors in debugger.
+2001-12-01: Added information about where to buy commercial licenses if not freeware.
+2001-12-01: Added top SQL to sga trace tool.
+2001-12-01: Added some basic statistics to the session list.
+2001-12-01: Fixed refresh in session list.
+2001-12-01: Don't start charts until first query.
+2001-12-03: Always try to store last session under default name.
+2001-12-03: Added menu entry to restore last session.
+2001-12-03: Added option to hide extent view in storage manager.
+2001-12-03: Rewrote storage preferences using designer.
+2001-12-03: Totally revamped configure.
+2001-12-05: Some Qt only fixes.
+2001-12-05: Made memo editor follow current item in listviews.
+2001-12-05: Made memo editor follow current position in content editor.
+2001-12-05: Fixed a really pesky toBrowser problem when changing top tab.
+2001-12-05: Added doubleclick to connect in connection dialog.
+2001-12-05: Made default selection mode in lists be extended instead of Normal.
+2001-12-05: Display column name in memo editor when displaying lists.
+2001-12-05: Display column name in memo editor when displaying content editor.
+2001-12-06: Implemented copy selection from lists.
+2001-12-06: Added support for Oracle9 in tuning.
+2001-12-06: Fixed SIGSEGV problem in pending locks.
+2001-12-06: Fixed some really tricky multiple query cancel problems.
+2001-12-06: Added fallback on query lock wrong value.
+2001-12-06: Added blocking locks to tuning window.
+2001-12-06: Changed shortcut of options tab in tuning.
+2001-12-06: Change to general page on add in security manager.
+2001-12-06: Fixed problem with changed selection in security manager.
+2001-12-06: Fixed problem with rownumber in resultlong.
+2001-12-06: Fixed a memory leak on copying charts.
+2001-12-06: Added new selection stuff to content editor as well.
+2001-12-06: Added new option with default format of exported lists.
+2001-12-06: Remove error line on destruct in editor.
+2001-12-06: Fixed problem with multiline comments in paramget.
+2001-12-06: Fixed problem with multiline comments in worksheet.
+2001-12-06: Fixed wrong menu titles on toolmenues.
+2001-12-06: Fixed problem with closing all windows.
+2001-12-06: Save explain plan in worksheet statistics if available.
+2001-12-06: Worksheet statistic browser now displays execution plan if available.
+2001-12-06: Added hide button in worksheet statistics for each set.
+2001-12-06: Export charts also save open state of items.
+2001-12-06: Changed name of todebugchange.ui to todebugchangeui.ui
+2001-12-07: Fixed missplaced toolbar for explain plan browser.
+2001-12-07: Fixed samples in charts after importing data.
+2001-12-07: Try finding SQL for "Any" if none found for provider.
+2001-12-07: Changed default version in SQL editor to Any:Any.
+2001-12-08: Started toSQLParse.
+2001-12-09: Moved toGetToken to toSQLParse.
+2001-12-09: Fixed lots of problems with getToken.
+2001-12-09: Added function to parse PL/SQL into a token tree to toSQLParse.
+2001-12-09: Added PL/SQL indent functions to toSQLParse.
+2001-12-09: Modified toEditWidget settings to include indent settings.
+2001-12-10: Added support for comments in auto indent.
+2001-12-11: Fixed problems with template browsing in MySQL.
+2001-12-11: Some more fixes to auto indent.
+2001-12-11: Fixed problem with current statement in sessions.
+2001-12-11: Made insert with mark visible outside toMarkedText.
+2001-12-11: Wrote obfuscation indent function.
+2001-12-11: Added user interface functions for auto indent.
+2001-12-11: Fixed problem with is in auto indent.
+2001-12-11: Added option to display emptystrings as '' instead of NULL as {null}.
+2001-12-11: Added preferred alignment in query descriptions.
+2001-12-11: Added fallback datatype unknown in Oracle provider.
+2001-12-11: Made toResultView/Long honor AlignRight from query description.
+2001-12-11: Made toTemplateSQL work in background (Tree DB browser in background).
+2001-12-11: Fixed problem with closing main window and edit extensions.
+2001-12-11: Fixed problem with block indent/deindent.
+2001-12-11: Don't use ExpandTabs in toHighlightedText (Qt bug in >= 3.0.0).
+2001-12-11: Align # column right as well.
+2001-12-11: Implemented better support for multiline text in toResultContent.
+2001-12-11: Popup memo editor automatically if editing multiline in content editor.
+2001-12-11: Honor alignment from query in content editor.
+2001-12-11: Added functionality to add handle NULL in memo editors.
+2001-12-11: Fixed problems with rowid in IOT and content editor.
+2001-12-11: Fixed problem with statusbar and no change in content editor.
+2001-12-11: Fixed rightbottom docks in KDE.
+2001-12-11: Split templates in two docked windows.
+2001-12-11: Added content editor to view and tables.
+2001-12-11: Made single selection in template list.
+2001-12-12: Added all tabs in schema browser to template schema browser.
+2001-12-12: Fixed synonym handling in template browser.
+2001-12-12: Fixed sorting of numerical values in content editor.
+2001-12-12: Changed to on type editing in content editor.
+2001-12-12: Minor tweak on indentation.
+2001-12-12: Leave duration label when query done in worksheet.
+2001-12-13: A whole bunch of windows fixes.
+2001-12-13: Some last minute tweaking of the PL/SQL indenter.
+2001-12-13: Some changes to the commercial about text.
+2001-12-13: Minor change of wording in configure output.
+2001-12-13: Don't log Abort Execution error in worksheet.
+2001-12-13: Don't forget to display linking in custom plugins in configure.
+2001-12-13: Fixed building static oracle on Oracle9.
+2001-12-13: Fix to indent block.
+2001-12-13: A bunch of Qt 3.0 fixes.
+2001-12-13: Add new connections to dropdown list in toScript.
+2001-12-13: Removed closed connections from dropdown list in toScript.
+2001-12-14: Some more Qt3 fixes and Qt only fixes.
+2001-12-14: Fixed windows icons in executable.
+2001-12-14: Added MySQL support to windows version.
+2001-12-14: Don't show sort indicators in lists.
+2001-12-14: Don't try to find mysql if specified not to.
+2001-12-14: Don't find compiler named kgcc.
+2001-12-14: Fixed cleaning plugin directory on install.
+2001-12-14: Detect KDE version used by KDE in configure.
+2001-12-14: Added Qt version detection to configure and Qt3 plugin type.
+2001-12-15: Incremental search in editors.
+2001-12-15: Changed some key bindings in menu to free up CTRL+S and R.
+
+1.1.5: Released 2001-11-26
+
+2001-11-02: Fixed problems with linecharts.
+2001-11-02: Fixed problems with analyze not updating.
+2001-11-02: Added auto long option (Off by default).
+2001-11-02: Always reread a query on refresh.
+2001-11-02: Fixed problem in describe table family.
+2001-11-02: Fixed problem with about dialog.
+2001-11-02: Fixed problem with export long values to text files.
+2001-11-02: Added registration stuff for non freeware version.
+2001-11-02: Fixed problem with add tablespace/datafile dialog.
+2001-11-02: Fixed problem with exception in constructor of queries.
+2001-11-03: Made animation speed vary depending on how many tasks running.
+2001-11-03: Made animation longer in twirl logo.
+2001-11-03: Fixed problem with crashing toanalyze on stop.
+2001-11-05: Made some flicker improvements to the content editor.
+2001-11-05: Fixed problem with reading all in content editor.
+2001-11-05: Removed moving to long temporarily.
+2001-11-05: A lot of checks added to nonblocking query.
+2001-11-05: Added duration indication in worksheet of running query.
+2001-11-06: Added option for displaying errors in dialogs (For newbies).
+2001-11-06: Changed how to navigate in the content editor with keys.
+2001-11-06: Branched TORA12 for 1.2 release.
+2001-11-06: Added option to limit LOB/LONG selects (Default to 30000 bytes).
+2001-11-06: Removed references to stream pooling.
+2001-11-06: Fixed help context of oracle settings.
+2001-11-07: Fixed problem with windows menu not being updated on new tool.
+2001-11-07: Always save options on new connection (For connectionhistory).
+2001-11-07: Some minor fixes to configure (Thanx Roman Stepanov).
+2001-11-07: Fixed crash when changing objects in debugger and compiling.
+2001-11-07: Fixed problem with unitialized variable in -- comments.
+2001-11-08: Changed copyright and license. Windows version is now no longer free.
+2001-11-08: Removed lots of workarounds for Visual C++ since Qt with RTTI availble.
+2001-11-08: Removed cursor flickering in template DB browser.
+2001-11-08: Fixed some problems with stopping a background query.
+2001-11-10: Don't repaint window on show in tuning.
+2001-11-10: Fixed some syncing problems with threads in windows.
+2001-11-10: Fixed newly introduced problem with noblockquery (After 1.1.4).
+2001-11-10: A fix on how old threads are deleted in unix.
+2001-11-11: Don't run content editor in long thread.
+2001-11-11: Don't update on change tab unless tab actually changed in session.
+2001-11-11: Improved problem with loosing open cursors in otl on cancel.
+2001-11-11: Added OCIReset after OCIBreak (As per the OCI manual).
+2001-11-11: Assume OTL isn't threadsafe except per connection.
+2001-11-11: Fixed SIGSEGV in session manager.
+2001-11-11: Flicker fix for content editor.
+2001-11-11: Applied patch to extract intermedia text indexes. (From Selcuk Ozturk)
+2001-11-11: Added indication of installtime.
+2001-11-11: Fixed problem with initial license not showing cancel button.
+2001-11-11: Don't bother with license on startup if not free version.
+2001-11-12: Patch to fix extracting intermedia text indexes. (From Selcuk Ozturk)
+2001-11-12: Made it possible to run configure without which command.
+2001-11-12: Made configure.pl search for gcc in $PATH.
+2001-11-12: Check KDE version in configure.pl (Above 2.1).
+2001-11-13: Fixed search and replace match at end of last line.
+2001-11-13: Made configure work if perl is in the path.
+2001-11-13: Removed --with-static option from configure since it only works for me.
+2001-11-13: Fixed code completion problem.
+2001-11-13: Added option to read object cache on first use (On by default).
+2001-11-13: Added option to run background queries on separate connection (Off by default).
+2001-11-13: Added option to limit initial read in content editor.
+2001-11-14: Made don't reread same query default on.
+2001-11-14: Added help button to preferences.
+2001-11-14: Fixed problem with resultcontent and criteria (Newly introduced).
+2001-11-14: Don't reread users except on refresh in browser.
+2001-11-14: Always reread data on explicit refresh from databrowser.
+2001-11-14: Made column view also refresh on explicit databrowser refresh.
+2001-11-14: Fixed keeping selection after refresh in browser.
+2001-11-14: Selecting current item in help on context help now works.
+2001-11-14: Added support for function indexes in schema browser.
+2001-11-14: Fixed support for function indexes in extractor.
+2001-11-14: Fixed problem with second browser pane not updating correctly.
+2001-11-15: Realised that UTF8 conversion can make a string 5 times longer.
+2001-11-15: Fixed a problem in OTL when using UTF-8 conversions.
+2001-11-15: Fixed update in content editor with long editors.
+2001-11-15: Fixed SIGSEGV on cancelling running oracle queries.
+2001-11-15: Added option to keep execution plans.
+2001-11-16: Added onebutton shortcut to add SQL to Saved SQL in worksheet.
+2001-11-17: Applied patch for completion on package members. (From Selcuk Ozturk)
+2001-11-19: Fixed problem with timer in worksheet after first result.
+2001-11-19: Fixed problem with rownum in result content for non oracle DB.
+2001-11-20: Fixed focus in all the other tools on startup as well.
+2001-11-22: Fixed problem with legend in charts.
+2001-11-22: Change label of refresh to reexecute in worksheet.
+2001-11-27: Added new about text for windows version.
+2001-11-27: Bunch of Windows compile fixes.
+2001-11-27: Fixed $HOME to my documents conversion for windows.
+
+1.1.4: Released 2001-11-02
+
+2001-10-22: Address sys tablespace, don't assume synonyms are right.
+2001-10-23: Fixed typo in extract.
+2001-10-24: Always run queries in long running query mode in worksheet.
+2001-10-24: Don't use Qt3.0 for static binaries. Trouble with fontmetrics.
+2001-10-24: Updated RPM:s for 1.1.4 and 1.2 release.
+2001-10-24: Improved content editor (Thanx Selcuk Ozturk).
+2001-10-25: Added result history in worksheet (Disabled by default).
+2001-10-25: Fixed problem with cache reading indication only working once.
+2001-10-25: Bind now instead of lazy when using plugins.
+2001-10-25: Reorganized plugins a minor bit.
+2001-10-25: Added configure option to link Oracle statically.
+2001-10-25: Use oracle static option in distribution.
+2001-10-25: Improved navigation of content editor.
+2001-10-25: Set default password to empty string instead of manager.
+2001-10-26: Fixed problem in light worksheet.
+2001-10-26: Accept ? as a placeholder in toParamGet (Compatible with DBI).
+2001-10-26: Minor fix to code completion when stepping into code complete.
+2001-10-26: Fixed really ugly race condition in noblock query.
+2001-10-26: Added msleep function to toThread.
+2001-10-26: Fixed minor kcc compiler problem.
+2001-10-26: Improved update in content editor (Thanx Selcuk Ozturk).
+2001-10-28: Fixed warning with compiling using egcs.
+2001-10-28: Fixed problem with setting statusmessage when painting text.
+2001-10-28: Made the saved SQL part of the worksheet hierarchical.
+2001-10-29: Minor change to code completion behaviour.
+2001-10-29: Fixed problem with executeAll queries.
+2001-10-29: Fixed problem with syntax highlighting on last row in editor.
+2001-10-29: Close sessions if possible after parallel analyze.
+2001-10-29: Added file open/save to memo editor.
+2001-10-29: Updated documentation to new 1.2 features.
+2001-10-29: Improved handling of private synonyms in browser.
+2001-10-29: Added some key bindings for connection management.
+2001-10-29: Added another template file containing optimizer hints.
+2001-10-29: Changed how default templates are handled.
+2001-10-29: Set focus on editor when droping text on them.
+2001-10-29: Some focus fixes.
+2001-10-30: Only set error offset if > 0 in oracle exception.
+2001-10-31: Don't ignore lines starting with set in worksheet.
+2001-10-31: Made result charts update in background (Not blocking UI).
+2001-10-31: Made toresultlong read data more quickly.
+2001-10-31: Use toResultLong instead of toResultView wherever possible.
+2001-10-31: Adapted most important toResult* class to use toNoBlockQuery.
+2001-10-31: Added an option to not refresh results if exactly same query.
+2001-10-31: Fixed problem with toResultDepend.
+2001-11-01: Added background activity indicator in the status bar.
+2001-11-01: Changed order of statusbar items.
+2001-11-01: Finnished moving last toResults to noblockquery.
+2001-11-01: Handle errors in background results better.
+2001-11-01: Added a toResultLabel class.
+2001-11-01: Fixed problem with window shortcuts not updated correctly.
+2001-11-01: Bunch of windows fixes.
+2001-11-01: Some fixes on execute newline separated in worksheet.
+2001-11-01: Don't default result lists to reading all data.
+
+1.1.3: Released 2001-10-19
+
+2001-10-08: Added some quotes.
+2001-10-08: Made some optimizations to analyzeLine (Don't use UNICODE).
+2001-10-08: Fixed problem with setText and analyzeLine.
+2001-10-09: Fixed problem with duplicated connections that are lost.
+2001-10-09: Fixed problem with extracting partitions.
+2001-10-09: Fixed problem with NULL default in debugger.
+2001-10-09: Fixed problem with reexecuting queries without binds.
+2001-10-09: Disabled OTL stream spooling due to problems with it.
+2001-10-09: Fixed problem with cut enabled/disabled for editors.
+2001-10-09: Started working on updating the documentation.
+2001-10-09: Updated version to 1.1.3.
+2001-10-09: Fixed problem with creating tablespace.
+2001-10-10: Fixed problem with comment syntax highlighting.
+2001-10-10: Fixed problem with zoom in last value charts.
+2001-10-10: Fixed problem with stop button not being disabled sometimes.
+2001-10-10: Fixed problem with aborting object caching on connection close.
+2001-10-10: Set default version in new sql editor.
+2001-10-10: Hide cancel button if not license about.
+2001-10-10: Removed all references to long sessions option.
+2001-10-10: Removed all comments from SQL in toExtract.
+2001-10-10: Fixed misspelling of autoallocate in storage.
+2001-10-11: Control A selected entire editor always.
+2001-10-11: Fixed a really ugly bug in syntax highlighter.
+2001-10-11: Fixed a weird multiline syntax highlighting bug in windows.
+2001-10-11: Change date size buffer in oracle extraction to 100 bytes.
+2001-10-11: Removed some debug information.
+2001-10-11: Added parse error offset information to oracle.
+2001-10-11: Strip non oracle stuff from otl.h.
+2001-10-11: Added option to move to error in worksheet.
+2001-10-11: Added support for reverse indexes in extract.
+2001-10-11: Removed charts list in chart setup.
+2001-10-14: Fixed problem with px_process stuff in tuning.
+2001-10-14: Fixed min value in bar chart.
+2001-10-14: Fixed problem with edit menu without having edited anything.
+2001-10-16: Fixed problem when compiling with Qt 3.
+2001-10-16: Use Qt3.0 for static builds.
+2001-10-16: Added option to set different fonts for SQL and other text.
+2001-10-17: Added option to generate HTML of lists.
+2001-10-17: Added indication of object caching.
+2001-10-17: Made debugger handle initial create or replace.
+2001-10-17: Fixed problem with save as.
+2001-10-18: Fixed problem with primary keys and extraction.
+2001-10-18: Fixed problem with copy of barchart.
+2001-10-18: Display name of worksheet if loading files.
+2001-10-18: Generate HTML page, not just table when exporting HTML.
+2001-10-18: Made HTML export a little prettier.
+
+1.1.2: Released 2001-10-07
+
+2001-09-24: Fixes for Oracle7 in toStorage.
+2001-09-24: Implemented an extended object cache instead of table cache.
+2001-09-24: Read object cache in background instead of when needed.
+2001-09-24: toResultCols uses new object cache.
+2001-09-24: Made aborting queries correctly on windows work.
+2001-09-24: Removed thread kill since it is no long needed and cludgy.
+2001-09-25: Added comments to table completion.
+2001-09-25: Added visualization of worksheet data.
+2001-09-25: Zooming charts used one sample to many on left edge.
+2001-09-25: Security manager now uses object cache.
+2001-09-26: Some Oracle8 fixes for tuning.
+2001-09-26: Changed version to 1.1.2.
+2001-09-27: Don't allow list scale < 0.001.
+2001-09-27: Added options and license tuning tabs.
+2001-09-27: Added max free extent column to storage manager.
+2001-09-27: Added hitrate to rollback manager.
+2001-09-27: Don't exit in toExtract on exception (Skip object instead).
+2001-09-27: Added keyboard shortcuts to change tabs in worksheet.
+2001-09-27: Fixed drawing of background outside edit area in editors.
+2001-09-28: Speedup of drawing background fix, also set background on normal editor.
+2001-09-28: Fixed alignment of column name in extract.
+2001-09-29: Done parameter editor.
+2001-09-30: Added auto indent to editors.
+2001-09-30: Added filter option to filter on list of objects.
+2001-09-30: Make insert toggle overwrite in editors.
+2001-09-30: Made commit needed more intelligent in worksheet.
+2001-09-30: Fixed problem with need commit flag not being cleared.
+2001-10-01: Fixed problem with default parameters in debugger.
+2001-10-01: List synonyms owner or pointing to objects owner by user.
+2001-10-01: Set default value in param get in debugger.
+2001-10-01: Use toListView in sql editor.
+2001-10-01: Fixed some partition issues in toExtract.
+2001-10-01: Fix for mysql and column browser and table information.
+2001-10-02: Made toExtract much less dependent on dba views.
+2001-10-02: Changed how partitions are described.
+2001-10-02: Shortcut to reexecute entries from worksheet log.
+2001-10-02: Fixed bug with readonly editors and cut.
+2001-10-02: Made memo editors larger by default.
+2001-10-02: Made printing of lists work in Windows.
+2001-10-02: Various Visual C++ fixes.
+2001-10-02: Made printing of lists use same fonts as on screen.
+2001-10-02: Comment out DBA buttons for tables.
+2001-10-02: Fixed assert error output in configure.
+2001-10-03: Removed commit/rollback from worksheet.
+2001-10-03: Made the connectionlist indicate wether commit is needed.
+2001-10-03: Fixed toolbar in light worksheet.
+2001-10-03: Don't delete connection before emitting it will be removed.
+2001-10-03: Added support for Oracle7 in tuning tool.
+2001-10-03: Allow non string parameters in worksheet for oracle.
+2001-10-03: Made changing connections work in tuning.
+2001-10-04: Ignore store and spool commands in worksheet.
+2001-10-04: Don't change connection if same as before.
+2001-10-04: Don't print selection on row (Problem on some BW printers).
+2001-10-04: Added object list to storage.
+2001-10-04: Display extents in storage.
+2001-10-05: Fixed insertion of objects with schema.
+2001-10-05: Implemented multiline aware syntax highlighter.
+2001-10-05: Implemented C-style comment highlighting.
+2001-10-05: Fixed problem in storage manager. (Thanx Martin)
+2001-10-05: Changed size of new connection window.
+2001-10-05: Reorganization of drawing linechart class.
+2001-10-05: Made barchart be descendant of linechart.
+2001-10-06: Made it possible to set up line & barcharts.
+2001-10-06: Use bytes not userbytes on available in storage.
+2001-10-06: Printing of piechart.
+2001-10-07: Added new statistics gathering tool.
+2001-10-07: Use object cache to get objectlist in debugger.
+2001-10-07: Removed some obsoleted API pages.
+2001-10-07: Fixed problem with margins of labels in toolbars in windows.
+2001-10-07: Some windows fixed.
+2001-10-07: Added possibility to cancel running background queries.
+2001-10-07: Fixed bug with multiple running background queries.
+2001-10-07: Cancel all background queries when deleting connection.
+2001-10-07: Extract SID from TNS_NAMES if not using SQL*Net when connecting.
+2001-10-07: Fixed a race condition in connections (Especially closing them).
+
+1.1.1: Released 2001-09-24
+
+2001-09-10: Fixed bug with no graphs being drawn.
+2001-09-10: Fixed some problems with Qt3 support.
+2001-09-10: Fixed problem with non QToolBar dock in Qt.
+2001-09-10: Fixed problem with database name in tool toolbars.
+2001-09-10: Dont use QSettings for Qt 3.0, stick with the old working one.
+2001-09-10: Fixed problem with added database in template DB browser.
+2001-09-10: Made template handle any connection.
+2001-09-10: Made template db browser handle mysql better.
+2001-09-10: Fixed problems with extra info in template browser.
+2001-09-10: Fixed problem with changing connection in workspace.
+2001-09-10: After a bit discussion about licensing with Daniel Pearson changed back to GPL.
+2001-09-12: Handle pixmap to xpm conversion better.
+2001-09-12: Fixed problem with schema extractor.
+2001-09-12: Set client info when opening connection.
+2001-09-12: Fixed problem with binds and sql address resolution.
+2001-09-12: Added support for MySQL in explain plan.
+2001-09-12: Added note that gnu make must be used.
+2001-09-12: Updates to the INSTALL file for 1.1 changes of the install.
+2001-09-13: Fixed problem with deleting rows in toResultContent.
+2001-09-13: Fixed problem with missing time.h header for solaris.
+2001-09-13: Created a light version of the worksheet for the browser.
+2001-09-13: Made changing connection in tools cascade to subtools as well.
+2001-09-14: Made a light version of worksheet.
+2001-09-14: Fixed some NULL problems with toExtract.
+2001-09-14: Added script tabs to database browser.
+2001-09-14: Don't list chained IOT parts in table browser.
+2001-09-14: Display comment of table in table information instead of own tab.
+2001-09-14: Fixed some tab ordering in dialogs.
+2001-09-15: Fixed problem with rollback in main window.
+2001-09-15: Added some buttons to administrate tables in browser.
+2001-09-15: Added long operation listings to SGA trace.
+2001-09-15: Fixed some problem with duplicat aborts.
+2001-09-16: Fixed sql templates with more than one columns.
+2001-09-16: Remade some of the ugliest icons.
+2001-09-16: Fixed problem with cursor on CTRL+Left/Right.
+2001-09-16: Fixed problem with configure and gcc-3.0.0.
+2001-09-16: Added CPU time to wait chart.
+2001-09-16: Added object search to schema comparison.
+2001-09-16: Added alert tool.
+2001-09-17: Renumbered tools a bit.
+2001-09-17: Added option to maximize main window on startup.
+2001-09-17: Added code completion to toHighlightedText.
+2001-09-17: Removed timer from results.
+2001-09-17: Made it possible to use shortkeys in sub worksheets.
+2001-09-17: Added describe under cursor to worksheet.
+2001-09-17: Lots of Oracle 7 improvements.
+2001-09-17: Optimized toResultCols.
+2001-09-17: Handle escaped columns in completion.
+2001-09-18: Added table lookup on CTRL+t.
+2001-09-18: Moved object and column functions to connectionImpl.
+2001-09-18: Improved some busy indications.
+2001-09-18: Added code completion for MySQL connections.
+2001-09-18: Added quote function to connectionImpl.
+2001-09-18: Rewrote toResultCols to be more generic.
+2001-09-19: Fixed problem extracting partitions.
+2001-09-19: Used stream pooling of otl (Improve performance).
+2001-09-19: Improved performance of statistics.
+2001-09-19: Added setting tabs for connections types.
+2001-09-19: Add Oracle setting tab.
+2001-09-19: Display some object info on top of column descriptions.
+2001-09-19: Removed comments from views and tables (In column desc now) in browser.
+2001-09-19: Display in red if completion is missing.
+2001-09-19: Don't reset sorting in result cols.
+2001-09-19: Make sure synonyms are after actual tables in tablename list.
+2001-09-19: Remove duplicates in table completion.
+2001-09-19: Fixed some problems with logged in user case.
+2001-09-19: Added option to clear object cache for connection.
+2001-09-19: Made possible to display errors in memo editor.
+2001-09-19: Fixed duplicate entry in status history on error in worksheet.
+2001-09-19: Added invalid object browser tool.
+2001-09-19: Made it possible to use toExtract without progress indication.
+2001-09-19: Fixed tooltip problem in toResultCols.
+2001-09-19: Fixed problem with triggers in Oracle8.
+2001-09-19: Fixed SQL type in show no coalesced storage and Oracle 8.
+2001-09-21: Made it possible to compile without Oracle (MySQL only).
+2001-09-21: Added copy, cut and paste to memo editor.
+2001-09-21: More Oracle 7 fixes (In toExtract this time).
+2001-09-21: Some windows fixes.
+2001-09-21: Include code in toResultExtract.
+2001-09-21: Fixed problem with table lookup at end of editor.
+2001-09-21: Don't use toSQL for enabling timed statistics in worksheet.
+2001-09-21: Implemented easy execution of predefined SQL in worksheet.
+2001-09-22: Fixed multiple provider support in SQL editor.
+2001-09-22: Added dependencies to template database browser.
+2001-09-22: Some UI improvements of SQL editor.
+2001-09-22: Made a workover for the template editor.
+2001-09-23: Implemented new interface to standard Ui menu items.
+2001-09-23: Reorganized objectfiles in plugins.
+2001-09-23: Set icons on windows in create window instead of every tool.
+2001-09-23: Fixed problem with busy cursor not being cleared when multithreading.
+2001-09-23: Fixed problem adding new versions to sql.
+2001-09-23: Use fontmetrics of list to check if tooltip necessary.
+2001-09-23: Added tool menu to storage, tuning and security tool.
+2001-09-23: Fixed problem with output polling.
+2001-09-23: Added tool menu to the rest of the tools.
+2001-09-23: Switch to result pane on extraction in toscript.
+2001-09-23: Made it possible to save changes in memo editor by CTRL+Return.
+2001-09-24: Made isMainThread work in windows.
+
+1.1.0: Released 2001-09-09
+
+2001-08-01: Added pie chart class.
+2001-08-02: Fixed release script to grab correct tag if specified.
+2001-08-02: Added another quote.
+2001-08-02: Merge from the 0.14 release.
+2001-08-07: Added line chart class.
+2001-08-07: Get connection from toToolWidget in toResult classes.
+2001-08-07: Added piechart of waitstates in session.
+2001-08-07: Added posibility to change connection in tool (Not debug yet).
+2001-08-07: New connection dialog with connection history.
+2001-08-07: Display wait cursor when query is executed.
+2001-08-07: Set default parameters when doubleclicking on line.
+2001-08-08: Ability to disable tools in options.
+2001-08-08: Ability to select default tool to pop up on new connection.
+2001-08-08: Added barchart class.
+2001-08-08: Added filter to content editor.
+2001-08-08: Added posibility to delete rows in content editor.
+2001-08-08: Added optional timer to tool widget.
+2001-08-08: Added filter on tablespace in database browser.
+2001-08-08: Added refresh to tuning tool.
+2001-08-08: Charts describing activity in tuning database.
+2001-08-08: Display file I/O in session.
+2001-08-08: Fixed cursor bug in highlighted text concerning tabs.
+2001-08-09: Added more choices to refresh time.
+2001-08-09: Improved statistics in worksheet.
+2001-08-09: New server overview in server tuning.
+2001-08-09: Fixed problem with many parameters in toParamGet.
+2001-08-10: Added support for using memo editor in dialogs.
+2001-08-10: Added memo editing in toParamGet.
+2001-08-10: Made toParamGet resizable.
+2001-08-10: Added default chart sample setting.
+2001-08-10: Added posibility to create chart with unlimited samples.
+2001-08-10: Lots of off by one pixel errors in charts fixed.
+2001-08-10: Some fixes to configure to make work on more systems.
+2001-08-10: Just generate binary packages on release and only copy same release.
+2001-08-11: Include statistics from parallel servers in sessionstatistics.
+2001-08-12: Added zooming to linecharts.
+2001-08-13: Added zooming to barcharts.
+2001-08-13: Made it possible to get snapshot of chart by doubleclicking on it.
+2001-08-13: Fixed problem with automatic scaling in tobarchart.
+2001-08-13: Start timer automatically in tuner.
+2001-08-13: Improved SGA trace.
+2001-08-13: Mechanism to have horizontal headers in toResultItem.
+2001-08-13: Improved SGA information.
+2001-08-14: Removed parallel query sessions from client count in tuning.
+2001-08-14: File I/O statistics.
+2001-08-14: Fixed some SQL for the tuning.
+2001-08-14: Added hitrates moment values to tuning.
+2001-08-14: Fixed problem with replace not working.
+2001-08-15: Remove max size limit when reading queries.
+2001-08-15: Fixed large LOB reading in OTL.
+2001-08-15: Read all of LOB when reading query.
+2001-08-15: Removed needing to pass description to read value.
+2001-08-15: Rewritten generic DB access interface (Nice 5000 line change).
+2001-08-15: New Oracle DB access provider.
+2001-08-16: Fixed a lot of problem with new DB access.
+2001-08-16: Fixed problem with default value in changing watches.
+2001-08-17: Added documentation to the connection API.
+2001-08-17: Fixed problem with large toResultItems.
+2001-08-17: Started implementing tool connection handling code.
+2001-08-17: As a proof of concept debugger doesn't support Oracle 7 databases.
+2001-08-17: Added support for canHandle in changeConnection class.
+2001-08-17: Fixed a couple of utf8 bugs.
+2001-08-17: Changed operator () in toSQL to return QString.
+2001-08-18: Merged help from 1.0 version.
+2001-08-20: Changed the LICENSE and deleted section 9.
+2001-08-20: Fixed bug with readble columns in resultitem.
+2001-08-20: Fixed problem with y-axis legend and Xft.
+2001-08-20: Fixed some warnings for gcc-2.96.
+2001-08-20: Removed the ugly TO_NAMESPACE hack.
+2001-08-20: Lots of gcc-3.0 fixes, now compiles using gcc-3.0.1.
+2001-08-20: Re made toSyntaxSetupUI in designer.
+2001-08-20: Don't include ui.cpp files into other cpp files.
+2001-08-20: Time executing using hundreds of a second.
+2001-08-20: Time duration using hundreds of seconds in worksheet.
+2001-08-20: Display duration in statusmessage in worksheet.
+2001-08-21: Added code completion option to syntax setup (Not implemented yet).
+2001-08-22: Added a license check stub.
+2001-08-22: Added provider support to toSQL.
+2001-08-22: Caching of object info in connection.
+2001-08-22: Describe widget now handles synonyms in comments and analyzeinfo.
+2001-08-22: Added ability to display SQL executed in security manager.
+2001-08-22: Remade storage manager dialogs in designer.
+2001-08-22: Display SQL to be used by modifying objects in storage manager.
+2001-08-23: Fixed bug in rollback.
+2001-08-23: Renamed toQuery::queryValue to toQValue.
+2001-08-23: Did some include file dependency cleanups.
+2001-08-23: Fixed problem with public rollback. (Thanx Joachim Zetzsche)
+2001-08-24: Read nulls in explain plan.
+2001-08-24: Busy while execute in target in debugger.
+2001-08-24: Fixed problem with extracting package bodies.
+2001-08-24: Made rethrow shorter in toExtract.
+2001-08-25: Remade rollback dialog in designer and added show sql.
+2001-08-25: Don't display null in rollback manager.
+2001-08-25: Added readQueryNull member to query class.
+2001-08-27: Don't include parallel queries in statistics (Not reliable anyway).
+2001-08-27: Save unsaved data in all open content editors on commit.
+2001-08-27: Fixed memory leak in toparamget.
+2001-08-28: Fixed uncaught exception from toparamget.
+2001-08-28: Improved file I/O statistics in tuning.
+2001-08-28: Changed license to QPL.
+2001-08-28: Fixed bug with empty list in toBrowser.
+2001-08-28: Show non relational tables in tobrowser. (Thanx Naprstek)
+2001-08-28: Fixed problem with negative coordinates in chart zoom.
+2001-08-29: Force uppercase to tablespace names on creation. (Thanx Massimiliano Ziccardi)
+2001-08-29: Choose export file format when exporting lists.
+2001-08-29: Remade about dialog in designer.
+2001-08-29: Added about stuff for tools.
+2001-08-30: Fixed problem in result statistic select.
+2001-08-30: Made preferences resizable.
+2001-08-30: Set list font in content editor.
+2001-08-30: Fixed some preferences layouts.
+2001-08-31: Don't build tora-mdk and tora-qt anymore.
+2001-08-31: Updated keyword list (Thanx Jan Pruner).
+2001-09-02: Sort lists numerical even if last two chars are not digits.
+2001-09-02: Some compilefixes for non KDE and gcc-3.0 support.
+2001-09-03: Added some DBA layouts for browser.
+2001-09-03: Display synonyms owned by user or pointing to objects owned by user.
+2001-09-05: Added mysql connection provider.
+2001-09-05: Add support for changing connections in toresultviews.
+2001-09-05: Some fixes in debugtext when changing data.
+2001-09-06: Some rather extensive toResult changes in the API.
+2001-09-07: Finnished MySQL support in browser and worksheet.
+2001-09-09: A bunch of Windows fixes so TOra compiles in Windows again.
+
+0.14: Released 2001-08-02 (Branched TORA10 for 1.0 release)
+
+2001-07-12: Added check for Oracle Client in windows installer.
+2001-07-12: Removed the index.html file.
+2001-07-12: Fixed update problem with statistics in worksheet.
+2001-07-12: Added 3 more quotes (Only really criticall fixes now, eh?).
+2001-07-12: Fixed a workaround for the Qt layout bug on maximized windows.
+2001-07-12: Fixed rpm packaging problem.
+2001-07-12: Fixed spell error in rpm category.
+2001-07-12: Added msvcrt.dll to windows installation.
+2001-07-12: Fixed some bugs in extract (From DDL::Oracle).
+2001-07-18: Popup new worksheet if opening new connection to same DB.
+2001-07-18: Fixed cursor position in highlighted text.
+2001-07-18: Fixed a really nasty deadlock in tononblockquery.
+2001-07-18: Allow cancel in Windows (Will still run till first row in background).
+2001-07-18: Added cancel entries in log for worksheet.
+2001-07-18: Added duration entries in log for worksheet.
+2001-07-18: Fixed another pesky bug with long running queries.
+2001-07-22: Fixed some potential problems with browser.
+2001-07-23: Removed all 31 and 41 sized buffer and replaced with 101.
+2001-07-24: Applied a patch for forked make to work (Thanx Jonas Rathert).
+2001-07-24: Reenable style selection for Qt.
+2001-07-29: Maximize tool window if there is only one.
+2001-07-29: Only fix layout on maximized tool windows.
+2001-07-31: Fixed problem with queries that doesn't return any rows.
+2001-08-01: Fixed some lock problems in toDebug.
+2001-08-01: Update errors on recompile in debugger.
+2001-08-01: Handle changing errors without leaving dangling statusmessages.
+2001-08-01: Fixed a nasty buffer overrun in toHtml.
+2001-08-01: Improved cancelling queries when using QThread.
+2001-08-01: Fixed workaround in layout bug.
+2001-08-02: Fixed toc.htm to display properly without KDE support.
+2001-08-02: Changed 1.0 version to 0.14.
+
+0.13: Released 2001-07-11
+
+2001-07-02: Upgraded to 3.2.20 of OTL.
+2001-07-02: Rewrote tns_names finding on Windows.
+2001-07-02: New bindings and context menu for DB browser.
+2001-07-02: Fixed coredump in toMain (Thanx Norbert Kiesel).
+2001-07-03: Added status message history.
+2001-07-03: Don't copy xpm files to help, help will use png.
+2001-07-03: Always update schema list in db browser when refreshing.
+2001-07-03: Display the short key number in the caption of toolwindows.
+2001-07-03: Started the main help pages. The main roadblock on the way to 1.0.
+2001-07-04: Fixed typo in Makefile.common (Thanx Jonas Rathert).
+2001-07-04: Rewrote settings for worksheet to use designer.
+2001-07-04: Added option to remove numbering column in worksheet.
+2001-07-04: Another parsing fix for worksheet.
+2001-07-04: Allow saving list to export them as files.
+2001-07-05: Added help quick key to dialogs.
+2001-07-05: Made help a dialog again.
+2001-07-06: Ask to create plan table if it doesn't exist when explaining plan.
+2001-07-06: Updated documentation to the 1.0 release so I don't forget it.
+2001-07-06: Added option to specify message history size.
+2001-07-06: Enable timed statistics in session when using statistics in worksheet.
+2001-07-06: Collapsed Data and Description to one Resuiolt tab in worksheet.
+2001-07-06: Fixed bug in prefetch for resultlong.
+2001-07-06: Don't hang when reading all in resultlong.
+2001-07-06: Last part of general documentation done, only the tools left.
+2001-07-06: Fixed update problem in statistic widget.
+2001-07-06: Removed lots of stdio.h includes.
+2001-07-06: Compile in target thread in debugger.
+2001-07-06: Fixed potential racecondition in debugger.
+2001-07-06: Added ability to add new sql in sql editor.
+2001-07-06: Fixed some minor bugs in the sql editor.
+2001-07-06: Fixed some minor bugs in template editor.
+2001-07-06: Fixed bug in browser package body.
+2001-07-07: Fixed problem with default binds in worksheet.
+2001-07-07: Changed binding for toggle breakpoint in debugger.
+2001-07-07: Added help context to toolwidget.
+2001-07-07: Put all the result plugins in one package.
+2001-07-07: Fixed problem with browser grabbing focus.
+2001-07-07: Try finding g++ as well as gcc.
+2001-07-07: Fix for compiling for Solaris 2.6 in configure.
+2001-07-08: Changed bindings for filter in browser.
+2001-07-08: Tried to be more intelligent when to save data in contenteditor.
+2001-07-08: Moved auto commit from worksheet to database settings.
+2001-07-08: Check the autocommit in content as well.
+2001-07-08: Added an option to change the connection to that of the current window when changing window.
+2001-07-08: Added key binding to select schema in debugger.
+2001-07-08: Shuffled around some keybindings in debugger to.
+2001-07-08: Fixed enabled on some items in debugger menu.
+2001-07-09: Enable debugging in target session instead of parent.
+2001-07-09: Fixed bug with NULL and changing watch.
+2001-07-09: Fixed a few bugs with handling arrays in watches.
+2001-07-09: Hide unimplemented buttons in extraction.
+2001-07-09: Allow resizing of add watch and change watch.
+2001-07-09: Fixed bug toScript to disable include prompts.
+2001-07-10: Removed extra status message in resultview query.
+2001-07-10: Fixed bug with object owner in wrong place in current.
+2001-07-10: Added parameters to tuning.
+2001-07-10: Added help context to extract module.
+2001-07-10: Fixed some spelling in extract.
+2001-07-10: Fixed Qt compile problem in browser.
+2001-07-10: Added warning when dropping rollback segment.
+2001-07-10: Removed sort order from sga trace.
+2001-07-11: Fixed spelling in toextract (Thanx Stefan Rindeskär).
+2001-07-11: Changed name of grants tab in current.
+2001-07-11: Added help context to template help.
+2001-07-11: Fixed problem creating triggers in worksheet.
+2001-07-11: Fixed problem with duplicate getting params in worksheet.
+2001-07-11: Added messagebox to ask about starting new template help.
+2001-07-11: Added help context to template editor.
+2001-07-11: Changed Name to Context in helpcontext.
+2001-07-11: Fixed versions in specfiles.
+2001-07-11: Done with user manual.
+2001-07-11: Added add.xpm icon.
+2001-07-11: Added up.xpm icon.
+
+0.12: Released 2001-07-01
+
+2001-06-06: Fixed problem with explain plan in toWorksheet.
+2001-06-07: Fixed problem with toConnection::longOperationFree.
+2001-06-07: Started documenting API using kdoc.
+2001-06-07: Head slightly changed to not confuse kdoc.
+2001-06-07: Minor cleanups in the API.
+2001-06-07: Added toToolWidget as baseclass for tool widgets.
+2001-06-07: Fixed bug in autocommit in worksheet.
+2001-06-13: Changed nextTag to nextToken in toHtml and made search static.
+2001-06-13: Added api target in Makefile.
+2001-06-13: Some fixes for Solaris.
+2001-06-13: Lots of api documentation writing.
+2001-06-13: Fixed toc.htm of help to contain API references.
+2001-06-14: Added tutorial for writing tools for TOra to API help.
+2001-06-14: Fixed problem with rollback tool.
+2001-06-14: Fixed problem with toSyntaxHighlighter.
+2001-06-15: Fixed the last part of the API documentation.
+2001-06-17: Some configure fixes.
+2001-06-19: Added status messages to help out how toResultContents work.
+2001-06-19: Fixed problem with saving data in update of toResultContents.
+2001-06-24: Cleanups and bugfixes in toResultCols.
+2001-06-26: Fixed problem with caption in main window for KDE.
+2001-06-26: Fixed a couple of parsing problems in worksheet (Neverending!).
+2001-06-27: Fixed a program with toSGAStatement and changing tabs.
+2001-06-27: Some windows fixes.
+2001-06-27: Removed memory debugging stuff (Useless).
+2001-06-27: Don't do dynamic casting on objects in Qt since Qt might not have RTTI information.
+2001-06-27: Fixed bug in semaphores if using QThread.
+2001-06-27: Added makefile for windows.
+2001-06-29: Support for Oracle 9 manuals in help.
+2001-06-29: Saving settings in Windows registry.
+2001-06-30: Set icon on main window.
+2001-06-30: Added icon and resourcefile for windows build.
+2001-07-01: Finding paths through registry in windows.
+2001-07-01: Fixing rpms for api documentation.
+2001-07-01: Changed license to allow using Qt Non Commercial for Windows.
+2001-07-01: Minor fixes to release script.
+2001-07-01: Some fixes to the help viewer.
+
+0.11: Released 2001-06-03
+
+2001-05-25: Move application declaration outside try catch in main.
+2001-05-25: Added the messageboxes on exception again.
+2001-05-25: Some additional windows fixes.
+2001-05-26: Added help system in place (Still no help though).
+2001-05-26: Fixed sorting of indicators in toTuning.
+2001-05-26: Minor fix on the logo to work better on other backgrounds.
+2001-05-26: Added some util function for reading files and comparing lists.
+2001-05-26: A bunch of Solaris fixes from Norbert Kiesel (Thanx).
+2001-05-26: Added privilege type to tocurrent privlist.
+2001-05-26: Install all *.xpm to help dir on install.
+2001-05-26: Added help install to rpms as well.
+2001-05-26: Some updates and bugfixes to toCurrent.
+2001-05-26: Fixed to the INSTALL files and releasetora.sh to incorporate help.
+2001-05-26: More fixes to the PL/SQL parsing of worksheet (Will it ever end).
+2001-05-26: Some cleanup to improve compilation speed.
+2001-05-28: Make distclean clean a little more.
+2001-05-28: Added simple HTML parser.
+2001-05-28: Added additional manuals to help viewer (Oracle compatible).
+2001-05-28: Use KHTML if KDE as help viewer.
+2001-05-28: Collapsed TORA10 branch (Everything done do far should be in 1.0).
+2001-05-29: Some layout changes to global settings.
+2001-05-29: Sort tool tabs in alphabetic order in settings.
+2001-05-30: Keep track of which is default and not in toParamGet.
+2001-05-30: Fixed refresh button bug in toCurrent.
+2001-05-30: Major rewrite of toHtml to be really fast.
+2001-05-30: Added another quote.
+2001-05-30: Fixed directory selection of help directory.
+2001-05-30: Major overhaul of the file reading/writing of TOra.
+2001-05-30: Support for KIO in KDE.
+2001-05-30: Added support for search in help.
+2001-05-30: Added option to add entire Oracle manual collection in help setup.
+2001-05-31: Some Qt fixes.
+2001-05-31: Added an optional memory debugging framework.
+2001-05-31: Added forward/backward buttons to help.
+2001-05-31: Fixed problem with missing .torarc.
+2001-05-31: Use KPrinter if available.
+2001-05-31: Fixed problem with missing .torasql.
+2001-06-01: Done with aggregate functions in PL/SQL documentation.
+2001-06-02: Done with analytic,char to char and char to number functions in PL/SQL documentation.
+2001-06-03: Done with the rest of PL/SQL documentation.
+2001-06-03: Enable KDE if available by default.
+2001-06-04: Fixed packaging problems with static and qt packages.
+
+0.10: Released 2001-05-25
+
+2001-05-20: Added missing addtemplate.xpm
+2001-05-20: Fixed the --without-rpath option to work.
+2001-05-20: Fixes for installing tora-mono using the install.
+2001-05-20: Some fixes to the template editor.
+2001-05-20: Implemented option to include DB in title or not.
+2001-05-20: Implemented option of size unit.
+2001-05-20: Added option to read all entries of tables.
+2001-05-20: Added option to select font in result.
+2001-05-20: Added some icons in the browser.
+2001-05-20: Open list if selected children in security.
+2001-05-21: Added search to results.
+2001-05-21: Fixed problem with disabled menu for toListView.
+2001-05-21: Only update changed columns in toResultContent.
+2001-05-21: Fixed SEGV in toReadValue and large hex longs.
+2001-05-21: Add search in toResultContent.
+2001-05-21: Added drag from toResultContent.
+2001-05-21: Added drop to toResultContent.
+2001-05-21: Include schema when dragging schema objects in templates.
+2001-05-21: Restore original if there are problems storing toResultContent.
+2001-05-21: Fixed to drag in toListView.
+2001-05-22: Added context menu and memo edit to toResultContent.
+2001-05-22: Fixed readonly bug in toMemoEditor.
+2001-05-22: Added support for KDE 2.1 (Weird colors in toolbars though).
+2001-05-22: Applied patch for uninitialised buffers (Thanx Frank Pavageau).
+2001-05-22: Don't change values when changing unit in toFilesize.
+2001-05-22: Added functionality to modify tablespaces.
+2001-05-22: Added functionality to OTL for connecting as SYS_DBA/SYS_OPER.
+2001-05-22: Changed back to printfs in main.
+2001-05-22: Added functionality to connect as SYS_DBA/SYS_OPER in toConnection.
+2001-05-22: Rewrote SQL in toResultStorage.
+2001-05-22: Added functionality to modify datafiles.
+2001-05-22: Added tool to get information about current session.
+2001-05-22: Autodetect KDE version.
+2001-05-23: Don't use fixkde.pl anymore.
+2001-05-23: Support for Qt 3.0.
+2001-05-23: Massive configure.pl updates.
+2001-05-23: Fixed problem with undefined font.
+2001-05-23: Some build changes.
+2001-05-24: Added filter functionality to toResultView.
+2001-05-24: Added filter in schema browser.
+2001-05-25: Added some functions for more advanced queries of toSQL.
+2001-05-25: Added server tuning tool.
+2001-05-25: Added server statistics to toResultStats.
+2001-05-25: Fixed precision in toResultStats to 15 digits.
+2001-05-25: Added the releasetora.sh script to document how builds are made.
+2001-05-25: Pressing toTemplate tool again when open closes it.
+2001-05-25: Fixed pesky coredump in toBrowserTemplate.
+2001-05-25: Updated rpm and README to be more up2date with featurelist.
+
+0.9.1: Released 2001-05-20
+
+2001-05-20: Added some more info to the table in the schema browser.
+2001-05-20: Fixed problem with Makefile.install.
+2001-05-20: Some fixes to the README and release scripts.
+2001-05-20: Optionally skip rpath in configure.pl
+2001-05-20: Fixed the specfiles to install the tpl file.
+
+0.9: Released 2001-05-19
+
+2001-05-08: Extended TODO with some extra items.
+2001-05-08: Added drag & drop for toResultViews.
+2001-05-09: Added new logos (Thanx Peter Nyborg).
+2001-05-09: Adopted about to new logos.
+2001-05-09: Added the fabled context menu to results.
+2001-05-09: Added option to edit system SQL from results.
+2001-05-09: Added files for supporting debian (Thanx Robert Cheramy).
+2001-05-10: Removed multiline strings since Visual C++ doesn't like them.
+2001-05-10: Always popup default tool when creating connection.
+2001-05-10: Fixed parameter parsing again.
+2001-05-10: Lots of changes to push code through Visual C++.
+2001-05-10: Changed how LICENSE.h is generated.
+2001-05-11: Removed tryLock and tryDown in tothread.
+2001-05-11: Added option to compile using QThread instead of PThreads.
+2001-05-11: Added some more quotes.
+2001-05-11: Fixed problem in toResultCols and "" tables.
+2001-05-13: Minor change to license.
+2001-05-13: TOra now compiles for windows (Check the new license though).
+2001-05-13: Fixed problem with rpath in configure (Thanx Ferdinand Gassauer).
+2001-05-14: Moved TOVERSION from Makefile to toconf.h.
+2001-05-14: Outcommented suspect change of width in tohighlightedtext.cpp.
+2001-05-14: Use "" instead of QString::null in empty descriptions of toSQL.
+2001-05-14: Some fixes to KDE support.
+2001-05-14: Added support for KDE in configure.
+2001-05-14: Fixed argument parsing again.
+2001-05-15: Add first row of query as default binding variables in lowercase.
+2001-05-16: Split toResultView into a toListView which doesn't have toResult.
+2001-05-16: Added template window. (No content yet though).
+2001-05-16: Use KDE standard dialogs if KDE application.
+2001-05-17: Added start of text and db browser template.
+2001-05-17: Added loadMap/saveMap functions to toTool.
+2001-05-17: Fixed problem browsing function source.
+2001-05-18: Added editor for text templates.
+2001-05-18: Added option about how to emulate docks if not using KDE.
+2001-05-18: Added check for 2.2 version of KDE in configure.
+2001-05-18: Export functionality to toResultList.
+2001-05-18: Some more unicode fixes.
+2001-05-18: Added support for binds when executing all.
+2001-05-19: Added describe functionality to worksheet.
+2001-05-19: Fixed problem with toResultCols and one parameter.
+2001-05-19: Added option to include extra libraries in linking.
+
+0.8: Released 2001-05-07
+
+2001-03-24: Fixed bug in quotes.
+2001-03-24: Set need commit when editing toResultContent.
+2001-03-24: Fixed bug regarding long running sessions and toOutput.
+2001-03-24: Fixed bug regarding deselection role in toSecurity.
+2001-03-24: Added comments to Makefile.setup in configure script.
+2001-03-24: Separated settings and the rest into Makefile.setup better.
+2001-03-24: Added a README and INSTALL file.
+2001-03-25: Added doc files to rpms.
+2001-03-26: Fixed NLS bug in toNoBlockQuery (Worksheet).
+2001-03-26: Added select sorting on toResultView.
+2001-03-26: Removed bugs regarding double \\ in some tooltips (Thanx Christopher R. Redinger)
+2001-03-26: Fixed numbering bug if column view.
+2001-03-26: Enabled sorting of content.
+2001-03-26: Set local8bit codec from LANG environment variable.
+2001-03-27: Started trying to make it possible to compile TOra as a KDE application.
+2001-03-27: Use local8bit when reading in toWorksheet.
+2001-03-28: Modified regexp to verify Qt version in configure.
+2001-03-28: Minor modification of how dependency files are generated.
+2001-03-28: Moved around a bit between clean/distclean in Makefile.common.
+2001-03-29: Made it possible to get toSQL as QString.
+2001-03-31: Added toExtract plugin, no tool uses this yet.
+2001-03-31: Fixed bug in toAllocBar.
+2001-04-01: Default version of sql change to 8.1.
+2001-04-01: Added Oracle 8.0 support in toResultStorage.
+2001-04-01: Fixed sql in Global:Address.
+2001-04-01: Added all option in saveSQL to toSQL.
+2001-04-01: Added default timeout to status messages.
+2001-04-01: Don't forget to emit done on error in longrunning queries.
+2001-04-01: Added icon to toSQLEdit window.
+2001-04-01: Added lots of options to toExtract.
+2001-04-02: Disable drop tablespace if tablespace is online.
+2001-04-02: Added default values to columns in toExtract.
+2001-04-03: Display worksheet menu if child to active window.
+2001-04-03: Minor unicode fix in worksheet.
+2001-04-03: Ignore prompt and set in worksheet.
+2001-04-03: toIsIdent takes QChar instead of char.
+2001-04-03: Minor Unicode fix in toDebug.
+2001-04-03: View correct results of long running query in statusbar also.
+2001-04-03: Added tooltip virtual function so you can copy different content than the tooltip.
+2001-04-03: Fixed copying of the toResultCols.
+2001-04-04: Create foreign constraints separately from table in toExtract.
+2001-04-04: If toResultItem contains numeric value sort numerically.
+2001-04-06: Ignore rem in worksheet.
+2001-04-06: Ignore lone / on line in worksheet.
+2001-04-07: Fixed SQL parsing in Worksheet... again.
+2001-04-07: Fixed bug when resultlong encounteres error.
+2001-04-08: Fixed problem with Execute All in worksheet.
+2001-04-08: Added destination objects to toScript.
+2001-04-21: Fix of extraction of profiles from new DDL::Oracle version.
+2001-04-23: Added a quote.
+2001-04-26: Fixed a few compile warnings on GCC 2.96.
+2001-04-26: Fixed bug with missing default file in worksheet.
+2001-04-27: Added bugfix to font selection bug in Qt 2.3.
+2001-04-27: Added option to disable/enable antialiasing.
+2001-04-27: Changed default of desktop aware to true.
+2001-04-30: Check that gcc is compatible even if specified manually.
+2001-04-30: Added check not to allow 2.96 version of gcc (See BUGS).
+2001-04-30: Fixed bug in makefile regarding %.ui headerfiles.
+2001-04-30: Changed CC to GCC in Makefile.
+2001-04-30: Made configure output less after actual configure.
+2001-04-30: New version of otl (3.2.18)
+2001-05-02: Added create plan table button.
+2001-05-02: Fixed executeAll in worksheet.
+2001-05-02: Fixed problem with comments in worksheet with PL/SQL.
+2001-05-02: Made toExtract extract content of tables.
+2001-05-02: Fixed problem loading large files.
+2001-05-03: Final changes to make extract actually work (Whoopeee!)
+2001-05-03: Added check buttons to toResultView.
+2001-05-07: Added search & replace.
+2001-05-07: Fixed saving settings on color keywords.
+2001-05-07: Fixed typo in SQL edit menu.
+2001-05-07: Fixed support for some more exotic datatypes.
+2001-05-07: Linking X11 static as well for static target.
+2001-05-07: Added rpath to $ORACLE_HOME/lib.
+
+0.7: Released 2001-03-24
+
+2001-02-27: Mixed up precision/scale in column definition.
+2001-03-01: Added support for separate session in worksheet.
+2001-03-01: Added tool menu for worksheet.
+2001-03-02: toResult no longer returns result in string.
+2001-03-02: Added statistics and stop button in worksheet.
+2001-03-02: Better page down support in toResultView.
+2001-03-02: Fixed a really pesky bug in toReadValue.
+2001-03-02: Created hierachichal depend widget.
+2001-03-02: Fixed bug when readiing config and sql.
+2001-03-03: Added printing support of result views and marked text.
+2001-03-03: Fixed file path bug when opening/saving (again).
+2001-03-03: Made readAll a little bit more responsive in result view.
+2001-03-04: Added name to toResultView, mainly for printing.
+2001-03-05: Split and rewrote global settings widget.
+2001-03-05: Added option to ignore desktop settings (Don't work with KDE for me).
+2001-03-07: There now are 3 spec files for mdk, others and static (RedHat)
+2001-03-07: Removed build reqs part (libqt2-devel/qt2-devel controversy)
+2001-03-07: Changed name of plugins to tso not to be misinterpreted as shared libraries.
+2001-03-09: Fixed bug regarding missing config file.
+2001-03-13: Added Unicode UTF8 support.
+2001-03-13: Don't erase plugin dir from settings if running monolithic.
+2001-03-13: Went over toResultViews so names are set correctly (Mostly)
+2001-03-13: Added another quote.
+2001-03-13: Fixed bug in toWorksheet regarding refresh with parameters.
+2001-03-13: Fixed configure to generate empty dependfiles.
+2001-03-21: Fixed commit problem with long connections.
+2001-03-21: Fixed bug in setting env when missing NLS_LANG (Thanx rhwang).
+2001-03-23: Added security manager.
+2001-03-23: Fixed listview traversion in toDebug.
+2001-03-24: Changed undo to CTRL+Y (Standard Qt)
+2001-03-24: Changed toResultContent to be editable (In browser).
+2001-03-24: Accept Qt > 2.2 (Including 2.3 and 3.0) in configure script.
+
+0.6: Released 2001-02-23
+
+2001-02-13: Added support for building static RPM
+2001-02-13: Link StdC++ statically as well in tora-static
+2001-02-13: Added namespace support (Will work with Standard C++)
+2001-02-14: Link oracle libs statically as well in tora-static
+2001-02-17: Added a whole bunch of quotes.
+2001-02-19: Removed a lot of flickering when changing packages in toDebug.
+2001-02-20: Added dependency views to database browser.
+2001-02-20: Pass path instead of filename to file open dialog.
+2001-02-20: Removed some more flickering in text editing (Don't use repaint).
+2001-02-21: Added version detection in toConnection.
+2001-02-21: Added SQL dictionary functionality.
+2001-02-22: Adopted TOra to use SQL dictionary (Woah, that was boring)
+2001-02-22: Added customSetup function to tools, called when toMain is setup.
+2001-02-22: Don't hide row/column labels since it doesn't seem to work.
+2001-02-22: Fixed bug in toParamGet that added \n to end of all statements.
+2001-02-22: Added autoLoad parameter to toWorksheet widget to be able to use it in sql editor.
+2001-02-22: Added SQL dictionary editor tool.
+2001-02-22: Made : be separator in configurationfiles instead of \\, backwards compatible though.
+2001-02-22: Made configure quit if configure.pl failed. (Thanx Robert Cheramy)
+2001-02-23: Added index/access to all menues so tools can add themselves anywhere in the menus.
+2001-02-23: Move SQL editor to edit menu.
+
+0.5: Released 2001-02-12
+
+2001-01-28: Fixed bug in explain plan.
+2001-01-28: Fix bug regarding CREATE when parsing PL/SQL in worksheet.
+2001-01-28: Created TOra icon.
+2001-01-28: Fixed bug regarding variable fonts and upper case keywords option.
+2001-01-28: Added option to disable PL/SQL parsing of worksheet content.
+2001-01-28: Fixed a new change watch dialog.
+2001-01-28: Changed to OTL v3.2.12.
+2001-01-28: Fixed bug in debugger if neither IN or OUT is specified for parameter.
+2001-01-28: Fixed to use toResultViewItem in Parameters in toDebug.
+2001-01-29: Changed configure to run uic and moc where needed (Got rid of those sleep thingies).
+2001-01-29: Added ability to specify NULL as parameters in toParamGet.
+2001-01-31: Display tooltip of content of statusbar.
+2001-01-31: Added -lpthread to configure.pl script, needed on some distibutions.
+2001-02-02: Added plugin functionality.
+2001-02-02: Included an unmodified version of the GPL (Had removed the appendix).
+2001-02-02: Minor change in largelogo.xpm.
+2001-02-02: Added static compile option.
+2001-02-06: Installed new otl which makes patch unnecessary (Some fixes required though)
+2001-02-06: Created splash screen while loading plugins.
+2001-02-06: Fixed bug in toResultItem regarding eof queries.
+2001-02-09: Added support for TNS_ADMIN in finding tnsnames.ora. (Petr Sindylek)
+2001-02-10: Support for connecting through shared memory.
+2001-02-12: Added rpm spec file.
+
+0.4: Released 2001-01-27
+
+2001-01-17: Added option in storage tool to display Coalesced column.
+2001-01-17: Divide CurBlk by 1000000 instead of 1000 in rollback display.
+2001-01-17: Added connection add/delWidget calls toRollback and toStorage.
+2001-01-17: Fixed a moc bug in configure.pl (Thanx P. Laux).
+2001-01-17: Include block if possible in rollback monitor (Not in transaction start).
+2001-01-20: Removed any reference to FALSE or TRUE (Use true/false instead).
+2001-01-20: Fixed bug parsing PL/SQL in toWorksheet.
+2001-01-20: Figured out how to use Qt designer more intelligently, integrated uic in Makefile.
+2001-01-20: Added settings to configure syntax highlighting.
+2001-01-20: Added functionality to display error lines in toHighlightedText.
+2001-01-20: Separated body and declaration in toBrowser.
+2001-01-21: Fixed bug regarding tabs in toHighlightedText.
+2001-01-21: Added support for .ui files in configure script.
+2001-01-21: Added inital PL/SQL debugger tool.
+2001-01-21: Added thread support classes.
+2001-01-22: Added binding support in worksheet.
+2001-01-22: Changed to use list of strings for queries (Big change).
+2001-01-23: Fixed bug in toResultCols.
+2001-01-23: Fixed bug in PL/SQL parsing of worksheet.
+2001-01-23: Make toTool::toolWindow take QWidget as first parameter.
+2001-01-23: Added support for bind variables in worksheet.
+2001-01-24: Stop forcing char when querying.
+2001-01-24: Changed otl so it forces char on number and date columns unless explicitly forced.
+2001-01-24: Added support for CLOB/BLOB column types.
+2001-01-25: Added enable/disable to SQL output.
+2001-01-26: Added location of editor to statusbar.
+2001-01-27: Finnished first working version of PL/SQL debugger.
+2001-01-27: Configure script find moc better and work with Oracle 8.0 (Thanx Uwe Schneider).
+
+0.3: Released 2001-01-17

Added: kde-extras/tora/branches/upstream/current/README
===================================================================
--- kde-extras/tora/branches/upstream/current/README	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/README	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,83 @@
+TOra - Toolkit for Oracle
+=========================
+Copyright (C) 2003-2005 Quest Software, Inc (http://www.quest.com/)
+Portions Copyright (C) 2005 Other Contributors
+
+For information about license see the LICENSE.txt file. It is distributed 
+under the GPL which basically means that any derivatory work must be 
+released under an open source license as well.
+
+TOra is supported for running with an Oracle 8.1.7 or newer
+client installation. It has been verified to work with Oracle 10g.
+
+In addition, TOra also supports postgres and mysql if your Qt library
+is compiled with that support.
+
+Toolkit for Oracle is a program for Oracle developers and administrators. The
+features that are available so far is (As of version 1.2):
+
+* Handles multiple connections
+* Support Oracle & MySQL
+* Advanced SQL Worksheet
+	* Explain plan
+	* PL/SQL auto indentation
+	* Statement statistics
+	* Error location indication
+	* SQL syntax highlighting
+	* Code completion
+	* Visualization of result
+	* PL/SQL block parsing
+	* Statement statistics comparison
+* Schema browser
+	* Table & view editing
+	* References & dependencies
+	* Reverse engeneering of objects
+	* Tab & tree based browsing
+	* Object & data filtering
+* PL/SQL Editor/Debugger
+	* Breakpoints
+	* Watches
+	* Line stepping
+	* SQL Output viewing
+	* Structure tree parsing
+* Server tuning
+	* Server overview
+	* Tuning charts
+	* Wait state analyzer
+	* I/O by tablespace & file
+	* Performance indicators
+	* Server statistics
+	* Parameter editor (P-file editor)
+* Security manager
+* Storage manager with object & extent viewer
+
+* Session manager
+* Rollback manager with snapshot too old detection
+* SGA and long operations trace
+* Current session information
+
+* PL/SQL profiler
+* Explain plan browser
+* Statistics manager
+* DBMS alert tool
+* Invalid object browser
+* SQL Output viewer
+* Database/schema comparison and search
+* Extract schema objects to SQL script
+
+* Easily extendable
+* Possible to add support for new or older Oracle versions without programming.
+* SQL template help
+* Full UNICODE support
+* Printing of any list, text or chart
+
+For installation instructions se the file INSTALL.
+
+TOra is developed by a community of Open Source developers. The original 
+(pre 1.3.15) development was done by Henrik Johnson of Quest Software, Inc.
+
+The homepage for the TOra project is http://tora.sourceforge.net. If you 
+encounter problems you can find both mailinglists and bugtracking tools 
+from this page.
+
+Oracle is copyright of Oracle Corporation.

Added: kde-extras/tora/branches/upstream/current/README.CODESTYLE
===================================================================
--- kde-extras/tora/branches/upstream/current/README.CODESTYLE	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/README.CODESTYLE	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,17 @@
+Coding style for TOra:
+======================
+
+TOra source code is formatted with AStyle code formatter 
+
+   http://sourceforge.net/projects/astyle/ 
+   
+with the following formatting options:
+
+   astyle --convert-tabs --pad=oper --indent=spaces=4 --brackets=break
+
+All code should be formatted with the above options before 
+checking in.
+
+The otl.h is an exception from this because formatting of such immense 
+amount of template code is not handled by AStyle very well (it's breaking 
+some code from OTL).
\ No newline at end of file

Added: kde-extras/tora/branches/upstream/current/README.CVS
===================================================================
--- kde-extras/tora/branches/upstream/current/README.CVS	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/README.CVS	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,15 @@
+General Policies about CVS Commits:
+-----------------------------------
+
+If it's controversial or sigificant, please discuss on tora-develop first.
+
+Don't break stuff. Let's try and make sure to test a compile at least on a
+few standard platforms first.
+
+Mandrake
+Fedora Core
+
+Work on windows support is primarily directed at getting functional with the
+QT/Free for windows port, with eventual move to the QT/4 GPL release. For now
+Henrik may be able to do some binary builds for us when he has time with
+the existing QT/Windows commercial release.

Added: kde-extras/tora/branches/upstream/current/README.LICENSE
===================================================================
--- kde-extras/tora/branches/upstream/current/README.LICENSE	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/README.LICENSE	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,5 @@
+TOra is licensed under the GPL. Copyright in the code is held by a combination of the
+various authors. Originally there was a license exception for commercial binary-only
+builds with the closed source Qt. This is no longer the case, and the relase is fully
+GPL'd. Builds for windows can be made using any Qt release that is compatible with
+the GPL.

Added: kde-extras/tora/branches/upstream/current/README.OSX
===================================================================
--- kde-extras/tora/branches/upstream/current/README.OSX	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/README.OSX	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,35 @@
+Using TOra on OS-X is unsupported, this file and the accompaning
+changes have been contributed by Rick Hall <rphall at sourceforge.net>.
+
+  This build assumes that you have Oracle 9.2.0 installed on the target Mac in
+the default installation directory (/Users/oracle/9iR2) and that you've
+installed Qt 3.2.1 for the Mac in the default directory (/usr/local/qt).
+Qt must be configured and built with the static and multi-threaded options
+(./configure -static -thread). You must set the QTDIR environment variable
+as described in the QT documentation.
+ 
+  To build for Mac OS-X:
+ 
+  1) Copy "Makefile.OSX" to "Makefile" and modify it for your environment
+(if necessary).
+
+  2) Run the configure script
+ 
+     ./configure --only-prepare
+ 
+  3) Run the Makefile
+ 
+     make
+ 
+  4) The Mac version of TOra will built in a "tora.app" directory. The
+directory is the application bundle. Copy it to some convenient location, like
+your desktop or /Applications folder.
+ 
+  5) Before you can run TOra, you must configure the ORACLE_HOME environment
+variable so that it is found when tora.app is doubled clicked from the Finder.
+It is not sufficient to set ORACLE_HOME in your $(HOME)/.bash_profile startup
+script. If one doesn't already exist, you must create a properties file located
+at $(HOME)/.MacOSX/environment.plist, and the file must contain the ORACLE_HOME
+key-value pair. See the documentation for property lists and the Property List
+Builder which is available from developer.apple.com, or just hack away at the
+example of environment.plist which is attached.

Added: kde-extras/tora/branches/upstream/current/README.RELEASE
===================================================================
--- kde-extras/tora/branches/upstream/current/README.RELEASE	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/README.RELEASE	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,28 @@
+Release Procedures:
+===================
+
+Source tarball:
+---------------
+Check out the tora module from CVS
+Edit the configure.in file to set the version number
+Edit the NEWS file to set a release date
+Commit, and then tag the release "cvs tag TORA_1_3_XX"
+
+configure
+make dist
+
+upload to upload.sf.net:/incoming/
+
+	curl -T tora-1.3.xx.tar.gz ftp://upload.sf.net/incoming/
+
+add new release to the 'tora' package
+
+RPM binaries:
+-------------
+No set procedure yet, still deciding on a standardized RPM to use.
+
+Static binary tarball:
+----------------------
+No longer producing this, too specific to particular builds and difficult to resolve some
+Qt dependencies with static only.
+

Added: kde-extras/tora/branches/upstream/current/README.WINDOWS
===================================================================
--- kde-extras/tora/branches/upstream/current/README.WINDOWS	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/README.WINDOWS	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,82 @@
+Build notes for how TOra has been getting built with the Commercial 
+release of Qt for Windows.
+
+    1. Unpack the source in Linux (On a drive accessible from Windows).
+    2. Run  configure  from  Linux.  This  will  run  all the uic and moc
+       commands  that  are  needed  (It  is  vital  that you use the same
+       version  of  Qt  on  Windows  and Linux in this step since the moc
+       output can differ between Qt versions).
+    3. Build it in Windows using Visual Studio where I simply include all
+       the files needed (Everything except the old mysql provider and the
+       Oracle preload file I think). Up until yesterday I have been using
+       Visual  Studio  6.0,  but  I compiled TOra sourcecode using Visual
+       Studio .Net 2003 too so that works great also.
+       
+
+Building with MINGW.
+
+    At the moment this only works with QT3/Windows Free Edition port 
+    (http://qtwin.sourceforge.net/).
+
+    The makefiles were only tested in Mingw MSYS environment so it is 
+    advised that you obtain and install full MINGW and MSYS packages
+    from http://www.mingw.org. 
+    
+    This requires mingw compiled binaries of QT which could be obtained
+    at http://qtwin.sourceforge.net/
+    
+    Please note that for TOra to work properly QT has to be compiled 
+    with RTTI support in mingw. If the available QT binary does not 
+    work then please compile  your own version of it following HOWTO 
+    instructions on http://qtwin.sourceforge.net/ website and using 
+    -rtti configuration parameter.
+    
+    1. Get and install (or build) QT3/Windows Free Edition from 
+         http://qtwin.sourceforge.net/
+       
+    2. Get the QScintilla sources here
+        http://www.riverbankcomputing.co.uk/qscintilla/index.php
+    
+    3. Obtain TOra sources
+    
+    4. Modify the qscintilla\build.cmd file in TOra directory with
+       your environment settings (MINGW, QT and QScintilla paths)
+    
+    5. Build and install QScintilla by running qscintilla\build.cmd
+    
+    6. Copy Makefile.migw to src/Makefile in your TOra directory
+    
+    7. Edit src/Makefile and change path for QTDIR, OCI_DLL and OCI_HOME
+       (and optionally for INSTALLDIR). Optionally edit the TARGET to 
+       set the desirable executable. Also check the CFLAGS_GLOB and 
+       LFLAGS_GLOB for the debug option (-g) depending on whether you 
+       want debug executable or not. You may also need to create default
+       version of config.h
+    
+    8. Run 'make' in MSYS environment from TOra src directory.
+    
+    9. Optionally run 'make install' - this will strip down the executable
+       and copy the necessary files (not yet all of them) to the install 
+       directory (INSTALLDIR)
+       
+       
+Building Windows installer.
+
+    1. Obtain and install NSIS installer software from 
+        http://nsis.sourceforge.net
+    
+    2. Copy all the distribution files with desired directory structure
+       to the src/windows/installer/files directory within your TOra directory 
+       structure (or use it as INSTALLDIR when building TOra and use step 9 
+       of above build instrucstions).
+       
+    3. Run NSIS compiler GUI and then drag and drop the tora.nsi file from
+        src/windows/installer directory in TOra to the compiler GUI window and 
+        wait till installer will finish the build.
+    
+    
+Please report any bugs should you find them as this port is still in the
+experimental stage.
+
+
+    

Added: kde-extras/tora/branches/upstream/current/TODO
===================================================================
--- kde-extras/tora/branches/upstream/current/TODO	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/TODO	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,135 @@
+QSscintilla port:
+
+* More integrated QScintilla features (toMarkedText class)
+    The toMarkedText class is still using its own version of the search/replace 
+    functionality from the pre-QScintilla times. Since QextScintilla has powerful 
+    search mechanism (regex support etc) - this needs to be integrated and the old 
+    one got rid of.
+
+  - fix insert(str, select). see toMarkedText::insert
+
+* Finish implementation of syntax colouring editor component (toHighlightedText class)
+    Code completion in SQL editor (using QextScintillaAPIs class), better integration 
+    with lexer class (QextScintillaLexer). We also probably need to override 
+    QextScintillaLexerSQL to better suit TOra purposes.
+    
+* Subtask from previous - integrate toSyntaxAnalyzer with QextScintillaLexer (or our 
+    subclass of it). This is needed to because toSyntaxAnalyzer used all over TOra to 
+    do validity checks of SQL, parameter parsing and other related things (not just 
+    syntax colouring). Hence it would make much more sense to integrate it with 
+    QextScintillaLexer where the latter can take keyword lists out of toSyntaxAnalyzer.
+    
+* Syntax colouring configuration options (toSyntaxSetup class and UI dialog) 
+    This has to be reimplemented to use QextScintillaLexer class instead of toSyntaxAnalyzer. 
+    
+* PL/SQL debugging (toDebugText class)
+    This has to be updated to use marker facilities provided by QextScintilla 
+    
+    
+Previous TODO:
+
+
+Extended functionality:
+
+* SQL Browser
+	Add information about partitions.
+	Modify tables
+		Caching/Nocaching
+			ALTER TABLE ... CACHE/NOCACHE
+		Deallocate Unused Space
+			ALTER TABLE ... DEALLOCATE UNUSED
+		Add columns
+		Remove columns
+		Add constraints
+		Remove constraints
+	Rename table (And everything else)
+		ALTER TABLE ... RENAME TO ...
+	DB Links
+	Libraries
+	Materialized Views
+	Dimensions
+	Partitions
+* toResultContent improvements
+	Make it possible to reorder columns in toResultContent.
+	Add tooltips like in result lists.
+* Editor improvements
+	CVS support (Or whatever this is called in windows).
+	PL/SQL doc (Like JavaDoc).
+	Synchonize editors that edit the same file.
+* Debugger
+	Don't lock during execution
+	Support for Oracle 7
+	Support for multiple open editors
+	Attaching to remote debugging session
+	Support for one referential cursor output variable
+* Full support for Oracle 9i.
+	Support for undo tablespaces.
+	Support for list partitions in extractor
+* Add consumer group settings to security manager.
+* Extract grants from objects.
+* Implement extract of temporary tables.
+* Implement migration, resize and report in toExtract.
+* Lots of more template texts including SQL syntax.
+* Ability to change/move redofiles.
+* Go through changes in DDL::Oracle and incorporate in toExtract.
+* Printing of toResultItems.
+* Different highlighter depending on connection.
+* Default names to listen to in alert.
+* Make menues and toolbuttons work for QLineEdit & QComboBox.
+* Use object cache in script object lists.
+* Optionaly drop before create in toExtract.
+* Ability to modify rollback segment.
+* Ability to drop tablespaces.
+* Information about controlfiles in tuning.
+* Use object cache in browser if possible.
+* Add support to run profiling in background.
+* Track session statistics while profiling.
+* Proxy connection provider.
+* Store worksheet statistic on save session.
+* Configure key bindings.
+* Use QTable to display the result in the worksheet.
+* Improved visualisation of any list and any columns.
+* Session:Long operations(v$session_longops)
+* Archive log info
+* Rollback:Shrink rollback segment(ALTER ROLLBACK SEGMENT TO {value})
+* Separate refresh of session info and session list.
+* Add auto extend information to the storage manager.
+* Add copy datafile/tablespace in storage manager.
+* Add warning when changing to Default Storage when disabled in modify tablespace in storage.
+* Enable copy in main window on lists.
+* Explain plan without execute in worksheet.
+* Option to select newline format on saved text.
+* Make legacy CTRL+Shift etc keyboard bindings available.
+* Don't display statements not in the SGA in the SGA trace.
+* Include public objects in script tool.
+* Option wether tool button open new window or an already open tool.
+* Include status of code objects in browsertool.
+* Implement printing of text view.
+* Plugin interface to alerttypes.
+* Handle AQ_ priviledges correctly in security manager (Using DBMS_AQADM package).
+* Easier to grant all priviledges to a user.
+* Save column order of open tools when saving/restoring session.
+* Remember settings in print dialog.
+* Make it posible to configure CSV separator/delimiter in chartmanager.
+* Save state of SQL output window.
+* Make session waitstate analyzer also keep track of what SQL is executed.
+* Don't update tabs which never can be updated in session manager.
+* Add tooltips in waitstate charts to display waitstate name and value.
+* Make default schema any an option.
+* Initially sort descending on columns in SGA trace.
+
+New tools:
+
+* SQL Builder?
+* Visual reverse engineering of DB.
+* Change impact analyzing tool.
+* Alert log viewer.
+* Recent events:
+	* Number of redo switches
+	* Users added withing 30 days
+	* Roles added withing 30 days
+	* Datafiles added within 30 days
+	* Objects added within 30 days
+	* Objects edited within 30 days
+* SQL*Loader controlfile generator.
+* Replication manager.

Added: kde-extras/tora/branches/upstream/current/aclocal.m4
===================================================================
--- kde-extras/tora/branches/upstream/current/aclocal.m4	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/aclocal.m4	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,7253 @@
+# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005  Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 48 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+         [],
+         [m4_define([AC_PROVIDE_IFELSE],
+	         [m4_ifdef([AC_PROVIDE_$1],
+		           [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+  AC_PROVIDE_IFELSE([AC_PROG_CXX],
+    [AC_LIBTOOL_CXX],
+    [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+  ])])
+dnl And a similar setup for Fortran 77 support
+  AC_PROVIDE_IFELSE([AC_PROG_F77],
+    [AC_LIBTOOL_F77],
+    [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+  AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+    [AC_LIBTOOL_GCJ],
+    [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+      [AC_LIBTOOL_GCJ],
+      [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+	[AC_LIBTOOL_GCJ],
+      [ifdef([AC_PROG_GCJ],
+	     [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([A][M_PROG_GCJ],
+	     [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+       ifdef([LT_AC_PROG_GCJ],
+	     [define([LT_AC_PROG_GCJ],
+		defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g']
+
+# Same as above, but do not quote variable references.
+[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g']
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    AC_PATH_MAGIC
+  fi
+  ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+    [AC_HELP_STRING([--with-pic],
+	[try to use only PIC/non-PIC objects @<:@default=use both@:>@])],
+    [pic_mode="$withval"],
+    [pic_mode=default])
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])dnl
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+])# _LT_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename.  Skip known compiler wrappers and cross-prefix.
+AC_DEFUN([_LT_CC_BASENAME],
+[for cc_temp in $1""; do
+  case $cc_temp in
+    compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;;
+    distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_COMPILER_BOILERPLATE
+
+
+# _LT_LINKER_BOILERPLATE
+# ----------------------
+# Check for linker boilerplate output or warnings with
+# the simple link test code.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+])# _LT_LINKER_BOILERPLATE
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# Links a minimal program and checks the executable
+# for the system default hardcoded library path. In most cases,
+# this is /usr/lib:/lib, but when the MPI compilers are used
+# the location of the communication and MPI libs are included too.
+# If we don't find anything, use the default library path according
+# to the aix ld manual.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi],[])
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+	     [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+	 [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X[$]1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+[$]*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+       echo_test_string=`eval $cmd` &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL [$]0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "[$]0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+    [AC_HELP_STRING([--disable-libtool-lock],
+	[avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf,
+    [AC_LANG_PUSH(C)
+     AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no])
+     AC_LANG_POP])
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)    LD="${LD-ld} -64" ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+  AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+  AC_CHECK_TOOL(AS, as, false)
+  AC_CHECK_TOOL(OBJDUMP, objdump, false)
+  ;;
+  ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#		[OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+  ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$3"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$5], , :, [$5])
+else
+    ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+#                          [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+  [$2=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $3"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&AS_MESSAGE_LOG_FD
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         $2=yes
+       fi
+     else
+       $2=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+    ifelse([$4], , :, [$4])
+else
+    ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# find the maximum length of command line arguments
+AC_MSG_CHECKING([the maximum length of command line arguments])
+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
+  i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ 	]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+    while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    teststring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+])
+if test -n $lt_cv_sys_max_cmd_len ; then
+  AC_MSG_RESULT($lt_cv_sys_max_cmd_len)
+else
+  AC_MSG_RESULT(none)
+fi
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# ------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+#                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ---------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "$cross_compiling" = yes; then :
+  [$4]
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+[#line __oline__ "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+    exit (status);
+}]
+EOF
+  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) $1 ;;
+      x$lt_dlneed_uscore) $2 ;;
+      x$lt_dlunknown|x*) $3 ;;
+    esac
+  else :
+    # compilation failed
+    $3
+  fi
+fi
+rm -fr conftest*
+])# _LT_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# ----------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ])
+   ;;
+
+  *)
+    AC_CHECK_FUNC([shl_load],
+	  [lt_cv_dlopen="shl_load"],
+      [AC_CHECK_LIB([dld], [shl_load],
+	    [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+	[AC_CHECK_FUNC([dlopen],
+	      [lt_cv_dlopen="dlopen"],
+	  [AC_CHECK_LIB([dl], [dlopen],
+		[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],
+	    [AC_CHECK_LIB([svld], [dlopen],
+		  [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
+	      [AC_CHECK_LIB([dld], [dld_link],
+		    [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+	      ])
+	    ])
+	  ])
+	])
+      ])
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    AC_CACHE_CHECK([whether a program can dlopen itself],
+	  lt_cv_dlopen_self, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes,
+	    lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross)
+    ])
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
+    	  lt_cv_dlopen_self_static, [dnl
+	  _LT_AC_TRY_DLOPEN_SELF(
+	    lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes,
+	    lt_cv_dlopen_self_static=no,  lt_cv_dlopen_self_static=cross)
+      ])
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+  [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&AS_MESSAGE_LOG_FD
+   echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+     fi
+   fi
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  AC_MSG_CHECKING([if we can lock with hard links])
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  AC_MSG_RESULT([$hard_links])
+  if test "$hard_links" = no; then
+    AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe])
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_OBJDIR],
+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir],
+[rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null])
+objdir=$lt_cv_objdir
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+   test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+   test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+     test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+    # Linking always hardcodes the temporary library directory.
+    _LT_AC_TAGVAR(hardcode_action, $1)=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[striplib=
+old_striplib=
+AC_MSG_CHECKING([whether stripping libraries is possible])
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  AC_MSG_RESULT([yes])
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         AC_MSG_RESULT([yes])
+       else
+  AC_MSG_RESULT([no])
+fi
+       ;;
+   *)
+  AC_MSG_RESULT([no])
+    ;;
+  esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[[01]] | aix4.[[01]].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[[45]]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[123]]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[[01]]* | freebsdelf3.[[01]]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  freebsd*) # from 4.6 on
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix3*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+    if AC_TRY_EVAL(ac_compile); then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[[89]] | openbsd2.[[89]].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+AC_MSG_RESULT([$dynamic_linker])
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+    [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+        [include additional configurations @<:@automatic@:>@])],
+    [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    AC_MSG_WARN([output file `$ofile' does not exist])
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+    else
+      AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+    fi
+  fi
+  if test -z "$LTCFLAGS"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+    "") ;;
+    *)  AC_MSG_ERROR([invalid tag name: $tagname])
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      AC_MSG_ERROR([tag name \"$tagname\" already exists])
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+	    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+	    (test "X$CXX" != "Xg++"))) ; then
+	  AC_LIBTOOL_LANG_CXX_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+	  AC_LIBTOOL_LANG_F77_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+	  AC_LIBTOOL_LANG_GCJ_CONFIG
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+	AC_LIBTOOL_LANG_RC_CONFIG
+	;;
+
+      *)
+	AC_MSG_ERROR([Unsupported tag name: $tagname])
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    AC_MSG_ERROR([unable to update list of available tagged configurations.])
+  fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 DLLs
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+    [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+	[build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_shared=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+# set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+    [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+	[build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_static=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'.  If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+    [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+    [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])],
+    [p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac],
+    [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'.  If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+   [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+    then ac_cv_prog_egrep='grep -E'
+    else ac_cv_prog_egrep='egrep'
+    fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD,
+[case $MAGIC_CMD in
+[[\\/*] |  ?:[\\/]*])
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+dnl $ac_dummy forces splitting on constant user-supplied paths.
+dnl POSIX.2 word splitting is done only on the output of word expansions,
+dnl not every word.  This closes a longstanding sh security hole.
+  ac_dummy="ifelse([$2], , $PATH, [$2])"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$1; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/$1"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac])
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  AC_MSG_RESULT($MAGIC_CMD)
+else
+  AC_MSG_RESULT(no)
+fi
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+  else
+    MAGIC_CMD=:
+  fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+    [AC_HELP_STRING([--with-gnu-ld],
+	[assume the C compiler uses GNU ld @<:@default=no@:>@])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  AC_MSG_CHECKING([for ld used by $CC])
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  AC_MSG_CHECKING([for GNU ld])
+else
+  AC_MSG_CHECKING([for non-GNU ld])
+fi
+AC_CACHE_VAL(lt_cv_path_LD,
+[if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi])
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  AC_MSG_RESULT($LD)
+else
+  AC_MSG_RESULT(no)
+fi
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac])
+with_gnu_ld=$lt_cv_prog_gnu_ld
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+#   -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[AC_CACHE_CHECK([for $LD option to reload object files],
+  lt_cv_ld_reload_flag,
+  [lt_cv_ld_reload_flag='-r'])
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+#  -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise dependent libraries],
+lt_cv_deplibs_check_method,
+[lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[[45]]*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]']
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix3*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+])
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM,
+[if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then 
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*)
+  # These system don't have libm, or don't need it
+  ;;
+*-ncr-sysv4.3*)
+  AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
+  AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm")
+  ;;
+*)
+  AC_CHECK_LIB(m, cos, LIBM="-lm")
+  ;;
+esac
+])# AC_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments.  Note that
+# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
+# it is assumed to be `libltdl'.  LIBLTDL will be prefixed with
+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+# (note the single quotes!).  If your package is not flat and you're not
+# using automake, define top_builddir and top_srcdir appropriately in
+# the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  case $enable_ltdl_convenience in
+  no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+  "") enable_ltdl_convenience=yes
+      ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+  esac
+  LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+  LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments.  Note that
+# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
+# and an installed libltdl is not found, it is assumed to be `libltdl'.
+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and top_srcdir
+# appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+  AC_CHECK_LIB(ltdl, lt_dlinit,
+  [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+  [if test x"$enable_ltdl_install" = xno; then
+     AC_MSG_WARN([libltdl not installed, but installation disabled])
+   else
+     enable_ltdl_install=yes
+   fi
+  ])
+  if test x"$enable_ltdl_install" = x"yes"; then
+    ac_configure_args="$ac_configure_args --enable-ltdl-install"
+    LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+    LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+  else
+    ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+    LIBLTDL="-lltdl"
+    LTDLINCL=
+  fi
+  # For backwards non-gettext consistent compatibility...
+  INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ------------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  AC_PROG_CXXCPP
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+  [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+    [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+      [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+	 [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+	   [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# -------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[lt_save_CC="$CC"
+AC_LANG_PUSH(C)
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF
+
+# Report which library types will actually be built
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+    ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  $as_unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  $as_unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+  AC_PROG_LD
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+	;;
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    _LT_AC_TAGVAR(archive_cmds, $1)=''
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[[012]]|aix4.[[012]].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	else
+	  # We have old collect2
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+	fi
+	;;
+      esac
+      shared_flag='-shared'
+      if test "$aix_use_runtimelinking" = yes; then
+	shared_flag="$shared_flag "'${wl}-G'
+      fi
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      _LT_AC_SYS_LIBPATH_AIX
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	_LT_AC_SYS_LIBPATH_AIX
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	# Exported symbols can be pulled into shared objects from archives
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	# This is similar to how AIX traditionally builds its shared libraries.
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+    ;;
+
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+    # as there is no search path for DLLs.
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+    _LT_AC_TAGVAR(always_export_symbols, $1)=no
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+  ;;
+      darwin* | rhapsody*)
+        case $host_os in
+        rhapsody* | darwin1.[[012]])
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[[012]])
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+        esac
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+    if test "$GXX" = yes ; then
+      lt_int_apple_cc_single_mod=no
+      output_verbose_link_cmd='echo'
+      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+       lt_int_apple_cc_single_mod=yes
+      fi
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+       _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      else
+          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+        _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          else
+            _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          fi
+            _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+          ;;
+      esac
+      fi
+        ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      ghcx*)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  freebsd[[12]]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  freebsd-elf*)
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    ;;
+  freebsd* | kfreebsd*-gnu | dragonfly*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC*)
+      # FIXME: insert proper C++ library support
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    aCC*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+      case $host_cpu in
+      hppa*64*|ia64*)
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+        ;;
+      *)
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+        ;;
+      esac
+    fi
+    case $host_cpu in
+    hppa*64*|ia64*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+    *)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      aCC*)
+	case $host_cpu in
+	hppa*64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case $host_cpu in
+	    hppa*64*)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    ia64*)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    *)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  interix3*)
+    _LT_AC_TAGVAR(hardcode_direct, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+    # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+    # Instead, shared libraries are loaded at an image base (0x10000000 by
+    # default) and relocated if they conflict, which is a slow very memory
+    # consuming and fragmenting process.  To avoid this, we pick a random,
+    # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+    # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC*)
+	# SGI C++
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	  else
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+	;;
+    esac
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc*)
+	# Intel C++
+	with_gnu_ld=yes
+	# version 8.0 and above of icpc choke on multiply defined symbols
+	# if we add $predep_objects and $postdep_objects, however 7.1 and
+	# earlier do not add the objects themselves.
+	case `$CC -V 2>&1` in
+	*"Version 7."*)
+  	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+  	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	*)  # Version 8.0 or newer
+	  tmp_idyn=
+	  case $host_cpu in
+	    ia64*) tmp_idyn=' -i_dynamic';;
+	  esac
+  	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	esac
+	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      pgCC*)
+        # Portland Group C++ compiler
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+  	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+        ;;
+      cxx*)
+	# Compaq C++
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx*)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  openbsd*)
+    _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    fi
+    output_verbose_link_cmd='echo'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx*)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	_LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      cxx*)
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	 _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      lcc*)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.2, 5.x and Centerline C++
+        _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+	_LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag}  ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	case $host_os in
+	  solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker. We must also pass each convience library through
+	    # to the system linker between allextract/defaultextract.
+	    # The C++ compiler will combine linker options so we
+	    # cannot just pass the convience library names through
+	    # without $wl.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+	output_verbose_link_cmd='echo'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx*)
+	# Green Hills C++ Compiler
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	_LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
+    ;;
+  sysv5* | sco3.2v5* | sco5v6*)
+    # Note: We can NOT use -z defs as we might desire, because we do not
+    # link with -lc, and that would cause any symbols used from libc to
+    # always be unresolved, which means just about no library would
+    # ever link correctly.  If we're not using GNU ld we use -z text
+    # though, which does catch some bad symbols but isn't as heavy-handed
+    # as -z defs.
+    # For security reasons, it is highly recommended that you always
+    # use absolute paths for naming shared libraries, and exclude the
+    # DT_RUNPATH tag from executables and libraries.  But doing so
+    # requires that you compile everything twice, which is a pain.
+    # So that behaviour is only enabled if SCOABSPATH is set to a
+    # non-empty value in the environment.  Most likely only useful for
+    # creating official distributions of packages.
+    # This is a hack until libtool officially supports absolute path
+    # names for shared libraries.
+    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC*)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
+# ------------------------------------
+# Figure out "hidden" library dependencies from verbose
+# compiler output when linking a shared library.
+# Parse the compiler output and extract the necessary
+# objects, libraries and library flags.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+dnl we can't use the lt_simple_compile_test_code here,
+dnl because it contains code intended for an executable,
+dnl not a library.  It's possible we should let each
+dnl tag define a new lt_????_link_test_code variable,
+dnl but it's only used here...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+      subroutine foo
+      implicit none
+      integer*4 a
+      a=0
+      return
+      end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+  private int a;
+  public void bar (void) {
+    a = 0;
+  }
+};
+EOF
+])
+dnl Parse the compiler output and extract the necessary
+dnl objects, libraries and library flags.
+if AC_TRY_EVAL(ac_compile); then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+	   else
+	     _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdeps, $1)"; then
+	   _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+	 else
+	   _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$_LT_AC_TAGVAR(predep_objects, $1)"; then
+	   _LT_AC_TAGVAR(predep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+	 fi
+       else
+	 if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+	 else
+	   _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_TAGVAR(postdep_objects, $1) $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling $1 test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+ifelse([$1],[CXX],
+[case $host_os in
+interix3*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_AC_TAGVAR(predep_objects,$1)=
+  _LT_AC_TAGVAR(postdep_objects,$1)=
+  _LT_AC_TAGVAR(postdeps,$1)=
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+    ;;
+  esac
+  ;;
+esac
+])
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+AC_MSG_CHECKING([if libtool supports shared libraries])
+AC_MSG_RESULT([$can_build_shared])
+
+AC_MSG_CHECKING([whether to build shared libraries])
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+AC_MSG_RESULT([$enable_shared])
+
+AC_MSG_CHECKING([whether to build static libraries])
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+AC_MSG_RESULT([$enable_static])
+
+_LT_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# -------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined.  Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then create an initial libtool script
+# with a default configuration from the untagged config vars.  Otherwise
+# add code to config.status for appending the configuration named by
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    _LT_AC_TAGVAR(compiler, $1) \
+    _LT_AC_TAGVAR(CC, $1) \
+    _LT_AC_TAGVAR(LD, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+    _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+    _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+    _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+    _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+    _LT_AC_TAGVAR(old_archive_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+    _LT_AC_TAGVAR(predep_objects, $1) \
+    _LT_AC_TAGVAR(postdep_objects, $1) \
+    _LT_AC_TAGVAR(predeps, $1) \
+    _LT_AC_TAGVAR(postdeps, $1) \
+    _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+    _LT_AC_TAGVAR(archive_cmds, $1) \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(postinstall_cmds, $1) \
+    _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+    _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+    _LT_AC_TAGVAR(no_undefined_flag, $1) \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+    _LT_AC_TAGVAR(hardcode_automatic, $1) \
+    _LT_AC_TAGVAR(module_cmds, $1) \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+    _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+    _LT_AC_TAGVAR(exclude_expsyms, $1) \
+    _LT_AC_TAGVAR(include_expsyms, $1); do
+
+    case $var in
+    _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_cmds, $1) | \
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(module_cmds, $1) | \
+    _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+    _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+    _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\[$]0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+    ;;
+  esac
+
+ifelse([$1], [],
+  [cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  AC_MSG_NOTICE([creating $ofile])],
+  [cfgfile="$ofile"])
+
+  cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_[]_LT_AC_TAGVAR(predep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_[]_LT_AC_TAGVAR(postdep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+])
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+  _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+    lt_cv_prog_compiler_rtti_exceptions,
+    [-fno-rtti -fno-exceptions], [],
+    [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+AC_MSG_CHECKING([command to parse $NM output from $compiler object])
+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe],
+[
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[[BCDEGRST]]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[[BCDT]]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[[ABCDGISTW]]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDEGRST]]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+linux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[[ABCDGIRSTW]]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[[BCDEGRST]]'
+  ;;
+osf*)
+  symcode='[[BCDEGQRST]]'
+  ;;
+solaris*)
+  symcode='[[BDRT]]'
+  ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
+sysv4)
+  symcode='[[DFNSTU]]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ 	]]\($symcode$symcode*\)[[ 	]][[ 	]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if AC_TRY_EVAL(ac_compile); then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)"
+	  if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD
+    fi
+  else
+    echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+])
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  AC_MSG_RESULT(failed)
+else
+  AC_MSG_RESULT(ok)
+fi
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+      ;;
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	else
+	  _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+           _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+           ;;
+         esac
+       ;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | kfreebsd*-gnu | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux*)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	    ;;
+	  icpc* | ecpc*)
+	    # Intel C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    ;;
+	  pgCC*)
+	    # Portland Group C++ compiler.
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+	;;
+    esac
+  fi
+],
+[
+  if test "$GCC" = yes; then
+    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+      ;;
+
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      else
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # PIC (with -KPIC) is the default.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+        ;;
+      ccc*)
+        _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+        # All Alpha code is PIC.
+        _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      # All OSF/1 code is PIC.
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+      *)
+	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    unicos*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+  AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+    _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+    [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+    [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+     "" | " "*) ;;
+     *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+     esac],
+    [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+     _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+    ;;
+  *)
+    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    else
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+],[
+  runpath_var=
+  _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+  _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+  _LT_AC_TAGVAR(archive_cmds, $1)=
+  _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+  _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+  _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+  _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+  _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+  _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+  _LT_AC_TAGVAR(module_cmds, $1)=
+  _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+  _LT_AC_TAGVAR(always_export_symbols, $1)=no
+  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  _LT_AC_TAGVAR(include_expsyms, $1)=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  _LT_CC_BASENAME([$compiler])
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+      # as there is no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=no
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    interix3*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) 
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+      fi
+      ;;
+    esac
+
+    if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+      runpath_var=
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+	else
+	  _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      _LT_AC_TAGVAR(archive_cmds, $1)=''
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[[012]]|aix4.[[012]].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  else
+  	  # We have old collect2
+  	  _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+  	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+  	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       _LT_AC_SYS_LIBPATH_AIX
+       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 _LT_AC_SYS_LIBPATH_AIX
+	 _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      # see comment about different semantics on the GNU ld section
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    bsdi[[45]]*)
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+      # FIXME: Should let the user specify the lib program.
+      _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+      _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[[012]])
+         _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[[012]])
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+      _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         _LT_AC_TAGVAR(ld_shlibs, $1)=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    freebsd1*)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	_LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	_LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	  ;;
+	*)
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    newsos6)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    openbsd*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+	   _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+	   ;;
+	 *)
+	   _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+      else
+	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+      ;;
+
+    solaris*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      case $host_os in
+      solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
+        ;;
+	motorola)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    sysv4.3*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	_LT_AC_TAGVAR(ld_shlibs, $1)=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      ;;
+
+    *)
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+      ;;
+    esac
+  fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+  # Assume -lc should be added
+  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $_LT_AC_TAGVAR(archive_cmds, $1) in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      AC_MSG_CHECKING([whether -lc should be explicitly linked in])
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+	pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+        if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+        then
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+        else
+	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+        fi
+        _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+      ;;
+    esac
+  fi
+  ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# #  ifdef __CYGWIN32__
+# #    define __CYGWIN__ __CYGWIN32__
+# #  endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+#   __hDllInstance_base = hInst;
+#   return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL],   [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED],  [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC],  [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD],        [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM],        [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+  test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+  AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# NOTE: This macro has been submitted for inclusion into   #
+#  GNU Autoconf as AC_PROG_SED.  When it is available in   #
+#  a released version of Autoconf we should remove this    #
+#  macro and use it instead.                               #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible.  Prefer GNU sed if found.
+AC_DEFUN([LT_AC_PROG_SED],
+[AC_MSG_CHECKING([for a sed that does not truncate output])
+AC_CACHE_VAL(lt_cv_path_SED,
+[# Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+])
+SED=$lt_cv_path_SED
+AC_MSG_RESULT([$SED])
+])
+
+# Copyright (C) 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION so it can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+	 [AM_AUTOMAKE_VERSION([1.9.6])])
+
+# AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'.  In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory.  The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run.  This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+#    fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+#    fails if $ac_aux_dir is absolute,
+#    fails when called from a subdirectory in a VPATH build with
+#          a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir.  In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir.  That would be:
+#   am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+#   MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH.  The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# AM_CONDITIONAL                                            -*- Autoconf -*-
+
+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 7
+
+# AM_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$1], [TRUE],  [AC_FATAL([$0: invalid condition: $1])],
+	[$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl
+AC_SUBST([$1_TRUE])
+AC_SUBST([$1_FALSE])
+if $2; then
+  $1_TRUE=
+  $1_FALSE='#'
+else
+  $1_TRUE='#'
+  $1_FALSE=
+fi
+AC_CONFIG_COMMANDS_PRE(
+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then
+  AC_MSG_ERROR([[conditional "$1" was never defined.
+Usually this means the macro was only invoked conditionally.]])
+fi])])
+
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 8
+
+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be
+# written in clear, in which case automake, when reading aclocal.m4,
+# will think it sees a *use*, and therefore will trigger all it's
+# C support machinery.  Also note that it means that autoscan, seeing
+# CC etc. in the Makefile, will ask for an AC_PROG_CC use...
+
+
+# _AM_DEPENDENCIES(NAME)
+# ----------------------
+# See how the compiler implements dependency checking.
+# NAME is "CC", "CXX", "GCJ", or "OBJC".
+# We try a few techniques and use that to set a single cache variable.
+#
+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was
+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular
+# dependency, and given that the user is not expected to run this macro,
+# just rely on AC_PROG_CC.
+AC_DEFUN([_AM_DEPENDENCIES],
+[AC_REQUIRE([AM_SET_DEPDIR])dnl
+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl
+AC_REQUIRE([AM_MAKE_INCLUDE])dnl
+AC_REQUIRE([AM_DEP_TRACK])dnl
+
+ifelse([$1], CC,   [depcc="$CC"   am_compiler_list=],
+       [$1], CXX,  [depcc="$CXX"  am_compiler_list=],
+       [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'],
+       [$1], GCJ,  [depcc="$GCJ"  am_compiler_list='gcc3 gcc'],
+                   [depcc="$$1"   am_compiler_list=])
+
+AC_CACHE_CHECK([dependency style of $depcc],
+               [am_cv_$1_dependencies_compiler_type],
+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_$1_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_$1_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_$1_dependencies_compiler_type=none
+fi
+])
+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type])
+AM_CONDITIONAL([am__fastdep$1], [
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_$1_dependencies_compiler_type" = gcc3])
+])
+
+
+# AM_SET_DEPDIR
+# -------------
+# Choose a directory name for dependency files.
+# This macro is AC_REQUIREd in _AM_DEPENDENCIES
+AC_DEFUN([AM_SET_DEPDIR],
+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl
+])
+
+
+# AM_DEP_TRACK
+# ------------
+AC_DEFUN([AM_DEP_TRACK],
+[AC_ARG_ENABLE(dependency-tracking,
+[  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])
+])
+
+# Generate code to set up dependency tracking.              -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+#serial 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`AS_DIRNAME("$mf")`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`AS_DIRNAME(["$file"])`
+    AS_MKDIR_P([$dirpart/$fdir])
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+])# _AM_OUTPUT_DEPENDENCY_COMMANDS
+
+
+# AM_OUTPUT_DEPENDENCY_COMMANDS
+# -----------------------------
+# This macro should only be invoked once -- use via AC_REQUIRE.
+#
+# This code is only required when automatic dependency tracking
+# is enabled.  FIXME.  This creates each `.P' file that we will
+# need in order to bootstrap the dependency handling code.
+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
+[AC_CONFIG_COMMANDS([depfiles],
+     [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS],
+     [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
+])
+
+# Do all the work for Automake.                             -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# This macro actually does too much.  Some checks are only needed if
+# your package does certain things.  But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out.  PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition.  After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.58])dnl
+dnl Autoconf wants to disallow AM_ names.  We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+              [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+	      		     [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+                  [_AM_DEPENDENCIES(CC)],
+                  [define([AC_PROG_CC],
+                          defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+                  [_AM_DEPENDENCIES(CXX)],
+                  [define([AC_PROG_CXX],
+                          defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated.  The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $1 | $1:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot.  For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Check to see how 'make' treats includes.	            -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# AM_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+AC_MSG_CHECKING([for style of include used by $am_make])
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+AC_SUBST([am__include])
+AC_SUBST([am__quote])
+AC_MSG_RESULT([$_am_result])
+rm -f confinc confmf
+])
+
+# Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise.
+#
+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories
+# created by `make install' are always world readable, even if the
+# installer happens to have an overly restrictive umask (e.g. 077).
+# This was a mistake.  There are at least two reasons why we must not
+# use `-m 0755':
+#   - it causes special bits like SGID to be ignored,
+#   - it may be too restrictive (some setups expect 775 directories).
+#
+# Do not use -m 0755 and let people choose whatever they expect by
+# setting umask.
+#
+# We cannot accept any implementation of `mkdir' that recognizes `-p'.
+# Some implementations (such as Solaris 8's) are not thread-safe: if a
+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c'
+# concurrently, both version can detect that a/ is missing, but only
+# one can create it and the other will error out.  Consequently we
+# restrict ourselves to GNU make (using the --version option ensures
+# this.)
+AC_DEFUN([AM_PROG_MKDIR_P],
+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
+  #   $(mkdir_p) $(somedir)
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
+else
+  # On NextStep and OpenStep, the `mkdir' command does not
+  # recognize any option.  It will interpret all options as
+  # directories to create, and then abort because `.' already
+  # exists.
+  for d in ./-p ./--version;
+  do
+    test -d $d && rmdir $d
+  done
+  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+  if test -f "$ac_aux_dir/mkinstalldirs"; then
+    mkdir_p='$(mkinstalldirs)'
+  else
+    mkdir_p='$(install_sh) -d'
+  fi
+fi
+AC_SUBST([mkdir_p])])
+
+# Helper functions for option handling.                     -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME.  Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane.    -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$[*]" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$[*]" != "X $srcdir/configure conftest.file" \
+      && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      AC_MSG_ERROR([ls -t appears to fail.  Make sure there is not a broken
+alias in your environment])
+   fi
+
+   test "$[2]" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries.  This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+  AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Check how to create a tarball.                            -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005  Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+#     tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+#     $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+     [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+     [m4_case([$1], [ustar],, [pax],,
+              [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+  case $_am_tool in
+  gnutar)
+    for _am_tar in tar gnutar gtar;
+    do
+      AM_RUN_LOG([$_am_tar --version]) && break
+    done
+    am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+    am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+    am__untar="$_am_tar -xf -"
+    ;;
+  plaintar)
+    # Must skip GNU tar: if it does not support --format= it doesn't create
+    # ustar tarball either.
+    (tar --version) >/dev/null 2>&1 && continue
+    am__tar='tar chf - "$$tardir"'
+    am__tar_='tar chf - "$tardir"'
+    am__untar='tar xf -'
+    ;;
+  pax)
+    am__tar='pax -L -x $1 -w "$$tardir"'
+    am__tar_='pax -L -x $1 -w "$tardir"'
+    am__untar='pax -r'
+    ;;
+  cpio)
+    am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+    am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+    am__untar='cpio -i -H $1 -d'
+    ;;
+  none)
+    am__tar=false
+    am__tar_=false
+    am__untar=false
+    ;;
+  esac
+
+  # If the value was cached, stop now.  We just wanted to have am__tar
+  # and am__untar set.
+  test -n "${am_cv_prog_tar_$1}" && break
+
+  # tar/untar a dummy directory, and stop if the command works
+  rm -rf conftest.dir
+  mkdir conftest.dir
+  echo GrepMe > conftest.dir/file
+  AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+  rm -rf conftest.dir
+  if test -s conftest.tar; then
+    AM_RUN_LOG([$am__untar <conftest.tar])
+    grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+  fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([config/m4/cppunit.m4])
+m4_include([config/m4/oracle.m4])
+m4_include([config/m4/pcre.m4])
+m4_include([config/m4/qtkde.m4])
+m4_include([config/m4/tora.m4])

Added: kde-extras/tora/branches/upstream/current/autogen.sh
===================================================================
--- kde-extras/tora/branches/upstream/current/autogen.sh	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/autogen.sh	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,112 @@
+#!/bin/sh
+
+CURRENT_AUTOMAKE_VERSION="1.10"
+CURRENT_AUTOCONF_VERSION="2.61"
+CURRENT_LIBTOOLIZE_VERSION="1.5.22"
+
+me=$0
+
+err() {
+    echo "$me: $1"
+    exit 1
+}
+
+check_libtoolize_version() {
+LIBTOOLIZE=libtoolize
+CUR_DIR=`pwd`
+TESTDIR="special_dir_$$"
+mkdir $TESTDIR && cd $TESTDIR
+LIBTOOLIZE_STRING=`$LIBTOOLIZE --version | head -n 1`
+case $LIBTOOLIZE_STRING in
+  libtoolize*${CURRENT_LIBTOOLIZE_VERSION}* )
+    echo "execute: $LIBTOOLIZE_STRING ..."
+    break;
+    ;;
+  libtoolize* ) 
+    echo "execute: $LIBTOOLIZE_STRING ..."
+    echo "*** TOra suggests ${CURRENT_LIBTOOLIZE_VERSION} !"
+    echo "*** http://www.gnu.org/software/libtool/libtool.html"
+    ;;
+esac
+cd $CUR_DIR 
+rmdir $TESTDIR
+}
+
+check_automake_version() {
+AUTOMAKE=automake
+CUR_DIR=`pwd`
+TESTDIR="special_dir_$$"
+mkdir $TESTDIR && cd $TESTDIR
+AUTOMAKE_STRING=`$AUTOMAKE --version | head -n 1`
+case $AUTOMAKE_STRING in
+  automake*${CURRENT_AUTOMAKE_VERSION}* )
+    echo "execute: $AUTOMAKE_STRING ..."
+    break;
+    ;;
+  automake*1.6.* | automake*1.7* | automake*1.8* | automake*1.9* ) 
+    echo "execute: $AUTOMAKE_STRING ..."
+    echo "*** TOra suggests ${CURRENT_AUTOMAKE_VERSION} !"
+    echo "*** http://www.gnu.org/software/automake"
+    ;;
+esac
+cd $CUR_DIR 
+rmdir $TESTDIR
+}
+
+check_autoconf_version() {
+AUTOCONF=autoconf
+CUR_DIR=`pwd`
+TESTDIR="special_dir_$$"
+mkdir $TESTDIR && cd $TESTDIR
+AUTOCONF_STRING=`$AUTOCONF --version | head -n 1`
+case $AUTOCONF_STRING in
+  autoconf*${CURRENT_AUTOCONF_VERSION}* )
+    echo "execute: $AUTOCONF_STRING ..."
+    break;
+    ;;
+  autoconf*2.* )
+    echo "execute: $AUTOCONF_STRING ..."
+    echo "*** TOra suggests ${CURRENT_AUTOCONF_VERSION} !"
+    echo "*** http://www.gnu.org/software/autoconf "
+    ;;
+esac
+cd $CUR_DIR
+rmdir $TESTDIR
+}
+
+rm -f config.cache
+rm -f config.log
+rm -f configure
+rm -f aclocal.m4
+
+echo "execute: aclocal ..."
+aclocal -I config/m4
+if test "$?" != "0"; then
+   err "aclocal failed. exit."
+fi
+
+echo "execute: autoheader ..."
+autoheader --force
+if test "$?" != "0"; then
+   err "autoheader failed. exit."
+fi
+
+check_libtoolize_version
+libtoolize --force --copy --automake
+if test "$?" != "0"; then
+   err "libtoolize failed. exit."
+fi
+
+check_automake_version
+automake --add-missing --copy --force-missing
+if test "$?" != "0"; then
+   err "automake failed. exit."
+fi
+
+check_autoconf_version
+autoconf --force
+if test "$?" != "0"; then
+   err "autoconf failed. exit."
+fi
+
+


Property changes on: kde-extras/tora/branches/upstream/current/autogen.sh
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/config/config.guess
===================================================================
--- kde-extras/tora/branches/upstream/current/config/config.guess	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/config.guess	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1471 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-12-13'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Originally written by Per Bothner <per at bothner.com>.
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ; set_cc_for_build= ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep __ELF__ >/dev/null
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	# Debian GNU/NetBSD machines have a different userland, and
+	# thus, need a distinct triplet. However, they do not need
+	# kernel version information, so it can be replaced with a
+	# suitable tag, in the style of linux-gnu.
+	case "${UNAME_VERSION}" in
+	    Debian*)
+		release='-gnu'
+		;;
+	    *)
+		release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+		;;
+	esac
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit ;;
+    *:OpenBSD:*:*)
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+	exit ;;
+    *:ekkoBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+	exit ;;
+    macppc:MirBSD:*:*)
+	echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    *:MirBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+	exit ;;
+    alpha:OSF1:*:*)
+	case $UNAME_RELEASE in
+	*4.0)
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+		;;
+	*5.*)
+	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+		;;
+	esac
+	# According to Compaq, /usr/sbin/psrinfo has been available on
+	# OSF/1 and Tru64 systems produced since 1995.  I hope that
+	# covers most systems running today.  This code pipes the CPU
+	# types through head -n 1, so we only detect the type of CPU 0.
+	ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+	case "$ALPHA_CPU_TYPE" in
+	    "EV4 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV4.5 (21064)")
+		UNAME_MACHINE="alpha" ;;
+	    "LCA4 (21066/21068)")
+		UNAME_MACHINE="alpha" ;;
+	    "EV5 (21164)")
+		UNAME_MACHINE="alphaev5" ;;
+	    "EV5.6 (21164A)")
+		UNAME_MACHINE="alphaev56" ;;
+	    "EV5.6 (21164PC)")
+		UNAME_MACHINE="alphapca56" ;;
+	    "EV5.7 (21164PC)")
+		UNAME_MACHINE="alphapca57" ;;
+	    "EV6 (21264)")
+		UNAME_MACHINE="alphaev6" ;;
+	    "EV6.7 (21264A)")
+		UNAME_MACHINE="alphaev67" ;;
+	    "EV6.8CB (21264C)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8AL (21264B)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.8CX (21264D)")
+		UNAME_MACHINE="alphaev68" ;;
+	    "EV6.9A (21264/EV69A)")
+		UNAME_MACHINE="alphaev69" ;;
+	    "EV7 (21364)")
+		UNAME_MACHINE="alphaev7" ;;
+	    "EV7.9 (21364A)")
+		UNAME_MACHINE="alphaev79" ;;
+	esac
+	# A Pn.n version is a patched version.
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit ;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit ;;
+    *:z/VM:*:*)
+	echo s390-ibm-zvmoe
+	exit ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+	exit ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit ;;
+    arm:riscos:*:*|arm:RISCOS:*:*)
+	echo arm-unknown-riscos
+	exit ;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit ;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit ;;
+    DRS?6000:unix:4.0:6*)
+	echo sparc-icl-nx6
+	exit ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7; exit ;;
+	esac ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    i86pc:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit ;;
+    m68k:machten:*:*)
+	echo m68k-apple-machten${UNAME_RELEASE}
+	exit ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c &&
+	  dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
+	  SYSTEM_NAME=`$dummy $dummyarg` &&
+	    { echo "$SYSTEM_NAME"; exit; }
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+	echo powerpc-harris-powermax
+	exit ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
+	exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
+		then
+			echo "$SYSTEM_NAME"
+		else
+			echo rs6000-ibm-aix3.2.5
+		fi
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit ;;
+    *:AIX:*:[45])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit ;;                             # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    test -z "$HP_ARCH" && HP_ARCH=hppa
+		fi ;;
+	esac
+	if [ ${HP_ARCH} = "hppa2.0w" ]
+	then
+	    eval $set_cc_for_build
+
+	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
+	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
+	    # generating 64-bit code.  GNU and HP use different nomenclature:
+	    #
+	    # $ CC_FOR_BUILD=cc ./config.guess
+	    # => hppa2.0w-hp-hpux11.23
+	    # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
+	    # => hppa64-hp-hpux11.23
+
+	    if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
+		grep __LP64__ >/dev/null
+	    then
+		HP_ARCH="hppa2.0w"
+	    else
+		HP_ARCH="hppa64"
+	    fi
+	fi
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
+		{ echo "$SYSTEM_NAME"; exit; }
+	echo unknown-hitachi-hiuxwe2
+	exit ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    *:UNICOS/mp:*:*)
+	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+	exit ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit ;;
+    *:FreeBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit ;;
+    i*:windows32*:*)
+    	# uname -m includes "-pc" on this system.
+    	echo ${UNAME_MACHINE}-mingw32
+	exit ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit ;;
+    x86:Interix*:[345]*)
+	echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+	exit ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+	echo i${UNAME_MACHINE}-pc-mks
+	exit ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i586-pc-interix
+	exit ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit ;;
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+	echo x86_64-unknown-cygwin
+	exit ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit ;;
+    *:GNU:*:*)
+	# the GNU system
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit ;;
+    *:GNU/*:*:*)
+	# other systems with GNU libc and userland
+	echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+	exit ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    cris:Linux:*:*)
+	echo cris-axis-linux-gnu
+	exit ;;
+    crisv32:Linux:*:*)
+	echo crisv32-axis-linux-gnu
+	exit ;;
+    frv:Linux:*:*)
+    	echo frv-unknown-linux-gnu
+	exit ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m32r*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    mips:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mipsel
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^CPU/{s: ::g;p;}'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    mips64:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips64
+	#undef mips64el
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mips64el
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips64
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^CPU/{s: ::g;p;}'`"
+	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit ;;
+    sh64*:Linux:*:*)
+    	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit ;;
+    vax:Linux:*:*)
+	echo ${UNAME_MACHINE}-dec-linux-gnu
+	exit ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	# Set LC_ALL=C to ensure ld outputs messages in English.
+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#if defined(__INTEL_COMPILER) || defined(__PGI)
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+	#ifdef __dietlibc__
+	LIBC=dietlibc
+	#endif
+EOF
+	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '/^LIBC/{s: ::g;p;}'`"
+	test x"${LIBC}" != x && {
+		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+		exit
+	}
+	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+	;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit ;;
+    i*86:syllable:*:*)
+	echo ${UNAME_MACHINE}-pc-syllable
+	exit ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit ;;
+    i*86:*:5:[678]*)
+    	# UnixWare 7.x, OpenUNIX and OpenServer 6.
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+	echo i386-pc-msdosdjgpp
+        exit ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit ;;
+    M680?0:D-NIX:5.3:*)
+	echo m68k-diab-dnix
+	exit ;;
+    M68*:*:R3V[5678]*:*)
+	test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && { echo i486-ncr-sysv4; exit; } ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel at ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit ;;
+    i*86:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo ${UNAME_MACHINE}-stratus-vos
+	exit ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit ;;
+    *:Darwin:*:*)
+	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+	case $UNAME_PROCESSOR in
+	    unknown) UNAME_PROCESSOR=powerpc ;;
+	esac
+	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+	exit ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+	echo nse-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+	exit ;;
+    *:DragonFly:*:*)
+	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+	exit ;;
+    *:*VMS:*:*)
+    	UNAME_MACHINE=`(uname -p) 2>/dev/null`
+	case "${UNAME_MACHINE}" in
+	    A*) echo alpha-dec-vms ; exit ;;
+	    I*) echo ia64-dec-vms ; exit ;;
+	    V*) echo vax-dec-vms ; exit ;;
+	esac ;;
+    *:XENIX:*:SysV)
+	echo i386-pc-xenix
+	exit ;;
+    i*86:skyos:*:*)
+	echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+	exit ;;
+    i*86:rdos:*:*)
+	echo ${UNAME_MACHINE}-pc-rdos
+	exit ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix\n"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+	{ echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit ;;
+    c34*)
+	echo c34-convex-bsd
+	exit ;;
+    c38*)
+	echo c38-convex-bsd
+	exit ;;
+    c4*)
+	echo c4-convex-bsd
+	exit ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:


Property changes on: kde-extras/tora/branches/upstream/current/config/config.guess
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/config/config.sub
===================================================================
--- kde-extras/tora/branches/upstream/current/config/config.sub	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/config.sub	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1602 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-12-11'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit ;;
+    --version | -v )
+       echo "$version" ; exit ;;
+    --help | --h* | -h )
+       echo "$usage"; exit ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit ;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+  uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+  storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis | -knuth | -cray)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco6)
+		os=-sco5v6
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco5v6*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| am33_2.0 \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| bfin \
+	| c4x | clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k | iq2000 \
+	| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa32r2 | mipsisa32r2el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64r2 | mipsisa64r2el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| mt \
+	| msp430 \
+	| ns16k | ns32k \
+	| or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+	| sparcv8 | sparcv9 | sparcv9b \
+	| spu | strongarm \
+	| tahoe | thumb | tic4x | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m32c)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+	ms1)
+		basic_machine=mt-unknown
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* \
+	| bfin-* | bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+	| clipper-* | craynv-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* | iq2000-* \
+	| m32r-* | m32rle-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa32r2-* | mipsisa32r2el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64r2-* | mipsisa64r2el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39-* | mipstx39el-* \
+	| mmix-* \
+	| mt-* \
+	| msp430-* \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+	| sparclite-* \
+	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+	| xstormy16-* | xtensa-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	m32c-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+    	abacus)
+		basic_machine=abacus-unknown
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64)
+		basic_machine=x86_64-pc
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	craynv)
+		basic_machine=craynv-cray
+		os=-unicosmp
+		;;
+	cr16c)
+		basic_machine=cr16c-unknown
+		os=-elf
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	crisv32 | crisv32-* | etraxfs*)
+		basic_machine=crisv32-axis
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	crx)
+		basic_machine=crx-unknown
+		os=-elf
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	djgpp)
+		basic_machine=i586-pc
+		os=-msdosdjgpp
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	ms1-*)
+		basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	openrisc | openrisc-*)
+		basic_machine=or32-unknown
+		;;
+	os400)
+		basic_machine=powerpc-ibm
+		os=-os400
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2 | pentiumiii | pentium3)
+		basic_machine=i686-pc
+		;;
+	pentium4)
+		basic_machine=i786-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentium4-*)
+		basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rdos)
+		basic_machine=i386-pc
+		os=-rdos
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sei)
+		basic_machine=mips-sei
+		os=-seiux
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tic55x | c55x*)
+		basic_machine=tic55x-unknown
+		os=-coff
+		;;
+	tic6x | c6x*)
+		basic_machine=tic6x-unknown
+		os=-coff
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	tpf)
+		basic_machine=s390x-ibm
+		os=-tpf
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	xbox)
+		basic_machine=i686-pc
+		os=-mingw32
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	mmix)
+		basic_machine=mmix-knuth
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+		basic_machine=sh-unknown
+		;;
+	sparc | sparcv8 | sparcv9 | sparcv9b)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
+	      | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku* | -rdos*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto-qnx*)
+		;;
+	-nto*)
+		os=`echo $os | sed -e 's|nto|nto-qnx|'`
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux-dietlibc)
+		os=-linux-dietlibc
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+        -os400*)
+		os=-os400
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-syllable*)
+		os=-syllable
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+        -tpf*)
+		os=-tpf
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-aros*)
+		os=-aros
+		;;
+	-kaos*)
+		os=-kaos
+		;;
+	-zvmoe)
+		os=-zvmoe
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	spu-*)
+		os=-elf
+		;;
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+    c4x-* | tic4x-*)
+        os=-coff
+        ;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-haiku)
+		os=-haiku
+		;;
+	*-ibm)
+		os=-aix
+		;;
+    	*-knuth)
+		os=-mmixware
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-os400*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-tpf*)
+				vendor=ibm
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:


Property changes on: kde-extras/tora/branches/upstream/current/config/config.sub
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/config/depcomp
===================================================================
--- kde-extras/tora/branches/upstream/current/config/depcomp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/depcomp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,530 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2005-07-09.11
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+case $1 in
+  '')
+     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: depcomp [--help] [--version] PROGRAM [ARGS]
+
+Run PROGRAMS ARGS to compile a file, generating dependencies
+as side-effects.
+
+Environment variables:
+  depmode     Dependency tracking mode.
+  source      Source file read by `PROGRAMS ARGS'.
+  object      Object file output by `PROGRAMS ARGS'.
+  DEPDIR      directory where to store dependencies.
+  depfile     Dependency file to output.
+  tmpdepfile  Temporary file to use when outputing dependencies.
+  libtool     Whether libtool is used (yes/no).
+
+Report bugs to <bug-automake at gnu.org>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "depcomp $scriptversion"
+    exit $?
+    ;;
+esac
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
+depfile=${depfile-`echo "$object" |
+  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+  stat=$?
+
+  if test -f "$tmpdepfile"; then :
+  else
+    stripped=`echo "$stripped" | sed 's,^.*/,,'`
+    tmpdepfile="$stripped.u"
+  fi
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    outname="$stripped.o"
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      # With Tru64 cc, shared objects can also be used to make a
+      # static library.  This mecanism is used in libtool 1.4 series to
+      # handle both shared and static libraries in a single compilation.
+      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+      #
+      # With libtool 1.5 this exception was removed, and libtool now
+      # generates 2 separate objects for the 2 libraries.  These two
+      # compilations output dependencies in in $dir.libs/$base.o.d and
+      # in $dir$base.o.d.  We have to check for both files, because
+      # one of the two compilations can be disabled.  We should prefer
+      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+      # automatically cleaned when .libs/ is deleted, while ignoring
+      # the former would cause a distcleancheck panic.
+      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
+      tmpdepfile2=$dir$base.o.d          # libtool 1.5
+      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
+      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1=$dir$base.o.d
+      tmpdepfile2=$dir$base.d
+      tmpdepfile3=$dir$base.d
+      tmpdepfile4=$dir$base.d
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+      exit $stat
+   fi
+
+   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
+   do
+     test -f "$tmpdepfile" && break
+   done
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:


Property changes on: kde-extras/tora/branches/upstream/current/config/depcomp
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/config/install-sh
===================================================================
--- kde-extras/tora/branches/upstream/current/config/install-sh	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/install-sh	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,323 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2005-05-14.22
+
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+chmodcmd="$chmodprog 0755"
+chowncmd=
+chgrpcmd=
+stripcmd=
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=
+dst=
+dir_arg=
+dstarg=
+no_target_directory=
+
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
+   or: $0 [OPTION]... SRCFILES... DIRECTORY
+   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
+   or: $0 [OPTION]... -d DIRECTORIES...
+
+In the 1st form, copy SRCFILE to DSTFILE.
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
+In the 4th, create DIRECTORIES.
+
+Options:
+-c         (ignored)
+-d         create directories instead of installing files.
+-g GROUP   $chgrpprog installed files to GROUP.
+-m MODE    $chmodprog installed files to MODE.
+-o USER    $chownprog installed files to USER.
+-s         $stripprog installed files.
+-t DIRECTORY  install into DIRECTORY.
+-T         report an error if DSTFILE is a directory.
+--help     display this help and exit.
+--version  display version info and exit.
+
+Environment variables override the default commands:
+  CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+"
+
+while test -n "$1"; do
+  case $1 in
+    -c) shift
+        continue;;
+
+    -d) dir_arg=true
+        shift
+        continue;;
+
+    -g) chgrpcmd="$chgrpprog $2"
+        shift
+        shift
+        continue;;
+
+    --help) echo "$usage"; exit $?;;
+
+    -m) chmodcmd="$chmodprog $2"
+        shift
+        shift
+        continue;;
+
+    -o) chowncmd="$chownprog $2"
+        shift
+        shift
+        continue;;
+
+    -s) stripcmd=$stripprog
+        shift
+        continue;;
+
+    -t) dstarg=$2
+	shift
+	shift
+	continue;;
+
+    -T) no_target_directory=true
+	shift
+	continue;;
+
+    --version) echo "$0 $scriptversion"; exit $?;;
+
+    *)  # When -d is used, all remaining arguments are directories to create.
+	# When -t is used, the destination is already specified.
+	test -n "$dir_arg$dstarg" && break
+        # Otherwise, the last argument is the destination.  Remove it from $@.
+	for arg
+	do
+          if test -n "$dstarg"; then
+	    # $@ is not empty: it contains at least $arg.
+	    set fnord "$@" "$dstarg"
+	    shift # fnord
+	  fi
+	  shift # arg
+	  dstarg=$arg
+	done
+	break;;
+  esac
+done
+
+if test -z "$1"; then
+  if test -z "$dir_arg"; then
+    echo "$0: no input file specified." >&2
+    exit 1
+  fi
+  # It's OK to call `install-sh -d' without argument.
+  # This can happen when creating conditional directories.
+  exit 0
+fi
+
+for src
+do
+  # Protect names starting with `-'.
+  case $src in
+    -*) src=./$src ;;
+  esac
+
+  if test -n "$dir_arg"; then
+    dst=$src
+    src=
+
+    if test -d "$dst"; then
+      mkdircmd=:
+      chmodcmd=
+    else
+      mkdircmd=$mkdirprog
+    fi
+  else
+    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+    # might cause directories to be created, which would be especially bad
+    # if $src (and thus $dsttmp) contains '*'.
+    if test ! -f "$src" && test ! -d "$src"; then
+      echo "$0: $src does not exist." >&2
+      exit 1
+    fi
+
+    if test -z "$dstarg"; then
+      echo "$0: no destination specified." >&2
+      exit 1
+    fi
+
+    dst=$dstarg
+    # Protect names starting with `-'.
+    case $dst in
+      -*) dst=./$dst ;;
+    esac
+
+    # If destination is a directory, append the input filename; won't work
+    # if double slashes aren't ignored.
+    if test -d "$dst"; then
+      if test -n "$no_target_directory"; then
+	echo "$0: $dstarg: Is a directory" >&2
+	exit 1
+      fi
+      dst=$dst/`basename "$src"`
+    fi
+  fi
+
+  # This sed command emulates the dirname command.
+  dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+
+  # Make sure that the destination directory exists.
+
+  # Skip lots of stat calls in the usual case.
+  if test ! -d "$dstdir"; then
+    defaultIFS='
+	 '
+    IFS="${IFS-$defaultIFS}"
+
+    oIFS=$IFS
+    # Some sh's can't handle IFS=/ for some reason.
+    IFS='%'
+    set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+    shift
+    IFS=$oIFS
+
+    pathcomp=
+
+    while test $# -ne 0 ; do
+      pathcomp=$pathcomp$1
+      shift
+      if test ! -d "$pathcomp"; then
+        $mkdirprog "$pathcomp"
+	# mkdir can fail with a `File exist' error in case several
+	# install-sh are creating the directory concurrently.  This
+	# is OK.
+	test -d "$pathcomp" || exit
+      fi
+      pathcomp=$pathcomp/
+    done
+  fi
+
+  if test -n "$dir_arg"; then
+    $doit $mkdircmd "$dst" \
+      && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+      && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+      && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+
+  else
+    dstfile=`basename "$dst"`
+
+    # Make a couple of temp file names in the proper directory.
+    dsttmp=$dstdir/_inst.$$_
+    rmtmp=$dstdir/_rm.$$_
+
+    # Trap to clean up those temp files at exit.
+    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+    trap '(exit $?); exit' 1 2 13 15
+
+    # Copy the file name to the temp name.
+    $doit $cpprog "$src" "$dsttmp" &&
+
+    # and set any options; do chmod last to preserve setuid bits.
+    #
+    # If any of these fail, we abort the whole thing.  If we want to
+    # ignore errors from any of these, just make sure not to ignore
+    # errors from the above "$doit $cpprog $src $dsttmp" command.
+    #
+    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+      && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+      && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+      && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
+
+    # Now rename the file to the real destination.
+    { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
+      || {
+	   # The rename failed, perhaps because mv can't rename something else
+	   # to itself, or perhaps because mv is so ancient that it does not
+	   # support -f.
+
+	   # Now remove or move aside any old file at destination location.
+	   # We try this two ways since rm can't unlink itself on some
+	   # systems and the destination file might be busy for other
+	   # reasons.  In this case, the final cleanup might fail but the new
+	   # file should still install successfully.
+	   {
+	     if test -f "$dstdir/$dstfile"; then
+	       $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+	       || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
+	       || {
+		 echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+		 (exit 1); exit 1
+	       }
+	     else
+	       :
+	     fi
+	   } &&
+
+	   # Now rename the file to the real destination.
+	   $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+	 }
+    }
+  fi || { (exit 1); exit 1; }
+done
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+{
+  (exit 0); exit 0
+}
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:


Property changes on: kde-extras/tora/branches/upstream/current/config/install-sh
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/config/ltmain.sh
===================================================================
--- kde-extras/tora/branches/upstream/current/config/ltmain.sh	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/ltmain.sh	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,6933 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# define SED for historic ltconfig's generated by Libtool 1.3
+test -z "$SED" && SED=sed
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.22
+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
+
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  SP2NL='tr \040 \012'
+  NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  SP2NL='tr \100 \n'
+  NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+  eval "if test \"\${$lt_var+set}\" = set; then
+         save_$lt_var=\$$lt_var
+         $lt_var=C
+         export $lt_var
+       fi"
+done
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+duplicate_deps=no
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$my_tmpdir"; then
+	# Failing that, at least try and use $RANDOM to avoid a race
+	my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+	save_mktempdir_umask=`umask`
+	umask 0077
+	$mkdir "$my_tmpdir"
+	umask $save_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$my_tmpdir" || {
+        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+	exit $EXIT_FAILURE
+      }
+    fi
+
+    $echo "X$my_tmpdir" | $Xsed
+}
+
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 | \
+	$SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	case $arg in
+	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	CC_quoted="$CC_quoted $arg"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	    # Double-quote args containing other shell metacharacters.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    CC_quoted="$CC_quoted $arg"
+	  done
+	    case "$@ " in
+	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  $echo "$modename: unable to infer tagged configuration"
+	  $echo "$modename: specify a tag with \`--tag'" 1>&2
+	  exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+
+    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+      exit $EXIT_FAILURE
+    fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+    my_status=""
+
+    $show "${rm}r $my_gentop"
+    $run ${rm}r "$my_gentop"
+    $show "$mkdir $my_gentop"
+    $run $mkdir "$my_gentop"
+    my_status=$?
+    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+      exit $my_status
+    fi
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+      my_xlib_u=$my_xlib
+      while :; do
+        case " $extracted_archives " in
+       *" $my_xlib_u "*)
+         extracted_serial=`expr $extracted_serial + 1`
+         my_xlib_u=lt$extracted_serial-$my_xlib ;;
+       *) break ;;
+       esac
+      done
+      extracted_archives="$extracted_archives $my_xlib_u"
+      my_xdir="$my_gentop/$my_xlib_u"
+
+      $show "${rm}r $my_xdir"
+      $run ${rm}r "$my_xdir"
+      $show "$mkdir $my_xdir"
+      $run $mkdir "$my_xdir"
+      exit_status=$?
+      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+	exit $exit_status
+      fi
+      case $host in
+      *-darwin*)
+	$show "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	if test -z "$run"; then
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+	  if test -n "$darwin_arches"; then 
+	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	      cd "$darwin_curdir"
+	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	    done # $darwin_arches
+      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      lipo -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    ${rm}r unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd "$darwin_orig_dir"
+ 	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	fi # $run
+	;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+        ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+    done
+    func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+#eval std_shrext=\"$shrext_cmds\"
+
+# And fixing for Darwin sucks for everybody else
+if test -z "$shrext_cmds" && test -n "$shrext"; then
+	eval shrext_cmds=\"$shrext\"
+fi
+
+eval std_shrext=\"$shrext_cmds\"
+
+# This value is evaluated to 32768, so place it here as a compatilibity hack
+# because older libtool.m4 didn't define this variable
+test -z "$max_cmd_len" && max_cmd_len=32768
+
+disable_libs=no
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+	$echo "$progname: invalid tag name: $tagname" 1>&2
+	exit $EXIT_FAILURE
+	;;
+      esac
+
+      case $tagname in
+      CC)
+	# Don't test for the "default" C tag, as we know, it's there, but
+	# not specially marked.
+	;;
+      *)
+	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+	  taglist="$taglist $tagname"
+	  # Evaluate the configuration.
+	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+	else
+	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
+	fi
+	;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    $echo
+    $echo "Copyright (C) 2005  Free Software Foundation, Inc."
+    $echo "This is free software; see the source for copying conditions.  There is NO"
+    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    exit $?
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+    done
+    exit $?
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    $echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $echo "enable shared libraries"
+    else
+      $echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $echo "enable static libraries"
+    else
+      $echo "disable static libraries"
+    fi
+    exit $?
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --tag)
+    prevopt="--tag"
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+fi
+
+case $disable_libs in
+no) 
+  ;;
+shared)
+  build_libtool_libs=no
+  build_old_libs=yes
+  ;;
+static)
+  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+  ;;
+esac
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  if test -n "$libobj" ; then
+	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-static | -prefer-pic | -prefer-non-pic)
+	  later="$later $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+ 	  for arg in $args; do
+	    IFS="$save_ifs"
+
+	    # Double-quote args containing other shell metacharacters.
+	    # Many Bourne shells cannot handle close brackets correctly
+	    # in scan sets, so we specify it separately.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    lastarg="$lastarg $arg"
+	  done
+	  IFS="$save_ifs"
+	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	  # Add the arguments to base_compile.
+	  base_compile="$base_compile $lastarg"
+	  continue
+	  ;;
+
+	* )
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, and some SunOS ksh mistreat backslash-escaping
+      # in scan sets (worked around with variable expansion),
+      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
+      # at all, so we specify them separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit $EXIT_FAILURE
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    *.obj) xform=obj ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+    case $qlibobj in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qlibobj="\"$qlibobj\"" ;;
+    esac
+    test "X$libobj" != "X$qlibobj" \
+	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
+	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+      $echo "$srcfile" > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+    case $qsrcfile in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+      qsrcfile="\"$qsrcfile\"" ;;
+    esac
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      if test ! -d "${xdir}$objdir"; then
+	$show "$mkdir ${xdir}$objdir"
+	$run $mkdir ${xdir}$objdir
+	exit_status=$?
+	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+	  exit $exit_status
+	fi
+      fi
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	$show "$mv $output_obj $lobj"
+	if $run $mv $output_obj $lobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt $@"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    notinst_path= # paths that contain not-installed libtool libraries
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static | -static-libtool-libs)
+    case $arg in
+    -all-static)
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=yes
+	  ;;
+    -static)
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	  prefer_static_libs=built
+	  ;;
+    -static-libtool-libs)
+      if test -z "$pic_flag" && test -n "$link_static_flag"; then
+        dlopen_self=$dlopen_self_static
+      fi
+      prefer_static_libs=yes
+      ;;
+    esac
+	build_libtool_libs=no
+	build_old_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat $save_arg`
+	    do
+#	      moreargs="$moreargs $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		# If there is no directory component, then add one.
+		case $arg in
+		*/* | *\\*) . $arg ;;
+		*) . ./$arg ;;
+		esac
+
+		if test -z "$pic_object" || \
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none && \
+		   test "$non_pic_object" = none; then
+		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+
+		# Extract subdirectory from the argument.
+		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		if test "X$xdir" = "X$arg"; then
+		  xdir=
+		else
+		  xdir="$xdir/"
+		fi
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      dlfiles="$dlfiles $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    dlprefiles="$dlprefiles $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  libobjs="$libobjs $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		else
+		  # If the PIC object exists, use it instead.
+		  # $xdir was prepended to $pic_object above.
+		  non_pic_object="$pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if test -z "$run"; then
+		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+		  exit $EXIT_FAILURE
+		else
+		  # Dry-run case.
+
+		  # Extract subdirectory from the argument.
+		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		  if test "X$xdir" = "X$arg"; then
+		    xdir=
+		  else
+		    xdir="$xdir/"
+		  fi
+
+		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+		  libobjs="$libobjs $pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      fi
+	    done
+	  else
+	    $echo "$modename: link input file \`$save_arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	xcclinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	shrext)
+  	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+	darwin_framework|darwin_framework_skip)
+	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  prev=
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit $EXIT_FAILURE
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework|-arch|-isysroot)
+	case " $CC " in
+	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
+		prev=darwin_framework_skip ;;
+	  *) compiler_flags="$compiler_flags $arg"
+	     prev=darwin_framework ;;
+	esac
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+	continue
+	;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    absdir="$dir"
+	    notinst_path="$notinst_path $dir"
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    deplibs="$deplibs -framework System"
+	    continue
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      -model)
+	compile_command="$compile_command $arg"
+	compiler_flags="$compiler_flags $arg"
+	finalize_command="$finalize_command $arg"
+	prev=xcompiler
+	continue
+	;;
+
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	compiler_flags="$compiler_flags $arg"
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
+      # -q* pass through compiler args for the IBM compiler
+      # -m* pass through architecture-specific compiler args for GCC
+      # -m*, -t[45]*, -txscale* pass through architecture-specific
+      # compiler args for GCC
+      # -pg pass through profiling flag for GCC
+      # @file GCC response files
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+      -t[45]*|-txscale*|@*)
+
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        compiler_flags="$compiler_flags $arg"
+        continue
+        ;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static | -static-libtool-libs)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.$objext)
+	# A standard object.
+	objs="$objs $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  # If there is no directory component, then add one.
+	  case $arg in
+	  */* | *\\*) . $arg ;;
+	  *) . ./$arg ;;
+	  esac
+
+	  if test -z "$pic_object" || \
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none && \
+	     test "$non_pic_object" = none; then
+	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$arg"; then
+	    xdir=
+ 	  else
+	    xdir="$xdir/"
+	  fi
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		dlfiles="$dlfiles $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      dlprefiles="$dlprefiles $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    libobjs="$libobjs $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  else
+	    # If the PIC object exists, use it instead.
+	    # $xdir was prepended to $pic_object above.
+	    non_pic_object="$pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if test -z "$run"; then
+	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+	    exit $EXIT_FAILURE
+	  else
+	    # Dry-run case.
+
+	    # Extract subdirectory from the argument.
+	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$arg"; then
+	      xdir=
+	    else
+	      xdir="$xdir/"
+	    fi
+
+	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+	    libobjs="$libobjs $pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      exit_status=$?
+      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+	exit $exit_status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplications in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    esac
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  esac
+	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    compiler_flags="$compiler_flags $deplib"
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		  library_names=
+		  old_library=
+		  case $lib in
+		  */* | *\\*) . $lib ;;
+		  *) . ./$lib ;;
+		  esac
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+		    test "X$ladir" = "X$lib" && ladir="."
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+	        ;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    valid_a_lib=no
+	    case $deplibs_check_method in
+	      match_pattern*)
+		set dummy $deplibs_check_method
+	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+		if eval $echo \"$deplib\" 2>/dev/null \
+		    | $SED 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		  valid_a_lib=yes
+		fi
+		;;
+	      pass_all)
+		valid_a_lib=yes
+		;;
+            esac
+	    if test "$valid_a_lib" != yes; then
+	      $echo
+	      $echo "*** Warning: Trying to link with static lib archive $deplib."
+	      $echo "*** I have the capability to make that library automatically link in when"
+	      $echo "*** you link to this library.  But I can only do this if you have a"
+	      $echo "*** shared version of the library, which you do not appear to have"
+	      $echo "*** because the file extensions .$libext of this argument makes me believe"
+	      $echo "*** that it is just a static archive that I should not used here."
+	    else
+	      $echo
+	      $echo "*** Warning: Linking the shared library $output against the"
+	      $echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      newdlprefiles="$newdlprefiles $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      newdlfiles="$newdlfiles $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit $EXIT_FAILURE
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  else
+	    dir="$ladir/$objdir"
+	    absdir="$abs_ladir/$objdir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  fi
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+         { { test "$prefer_static_libs" = no ||
+             test "$prefer_static_libs,$installed" = "built,yes"; } ||
+           test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath " in
+	      *" $dir "*) ;;
+	      *" $absdir "*) ;;
+	      *) temp_rpath="$temp_rpath $absdir" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	use_static_libs=$prefer_static_libs
+	if test "$use_static_libs" = built && test "$installed" = yes ; then
+	  use_static_libs=no
+	fi
+	if test -n "$library_names" &&
+	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on
+	  # some systems (darwin)
+	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
+	    $echo
+	    if test "$linkmode" = prog; then
+	      $echo "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $echo "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $echo "*** $linklib is not portable!"
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$extract_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$old_archive_from_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+		    *-*-unixware7*) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a module then we can not link against
+		    # it, someone is ignoring the new warnings I added
+		    if /usr/bin/file -L $add 2> /dev/null |
+                      $EGREP ": [^:]* bundle" >/dev/null ; then
+		      $echo "** Warning, lib $linklib is a module, not a shared library"
+		      if test -z "$old_library" ; then
+		        $echo
+		        $echo "** And there doesn't seem to be a static archive available"
+		        $echo "** The link will probably fail, sorry"
+		      else
+		        add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case $libdir in
+		    [\\/]*)
+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit $EXIT_FAILURE
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+	        add="$inst_prefix_dir$libdir/$linklib"
+	      else
+	        add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case $libdir in
+		  [\\/]*)
+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    $echo
+	    $echo "*** Warning: This system can not link to static lib archive $lib."
+	    $echo "*** I have the capability to make that library automatically link in when"
+	    $echo "*** you link to this library.  But I can only do this if you have a"
+	    $echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      $echo "*** But as you try to build a module library, libtool will still create "
+	      $echo "*** a static module, that should work as long as the dlopening application"
+	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		$echo
+		$echo "*** However, this would only work if libtool was able to extract symbol"
+		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		$echo "*** not find such a program.  So, this module is probably useless."
+		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit $EXIT_FAILURE
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="$absdir"
+		fi
+		depdepl=
+		case $host in
+		*-*-darwin*)
+		  # we do not want to link against static libs,
+		  # but need to link against shared
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$path/$depdepl" ; then
+		      depdepl="$path/$depdepl"
+		    fi
+		    # do not add paths which are already there
+		    case " $newlib_search_path " in
+		    *" $path "*) ;;
+		    *) newlib_search_path="$newlib_search_path $path";;
+		    esac
+		  fi
+		  path=""
+		  ;;
+		*)
+		  path="-L$path"
+		  ;;
+		esac
+		;;
+	      -l*)
+		case $host in
+		*-*-darwin*)
+		  # Again, we only want to link against shared libraries
+		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+		  for tmp in $newlib_search_path ; do
+		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
+		      eval depdepl="$tmp/lib$tmp_libs.dylib"
+		      break
+		    fi
+		  done
+		  path=""
+		  ;;
+		*) continue ;;
+		esac
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	      case " $deplibs " in
+	      *" $depdepl "*) ;;
+	      *) deplibs="$depdepl $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  tmp_libs="$tmp_libs $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit $EXIT_FAILURE
+	else
+	  $echo
+	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  $echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$2"
+	  number_minor="$3"
+	  number_revision="$4"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  darwin|linux|osf|windows|none)
+	    current=`expr $number_major + $number_minor`
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    current=`expr $number_major + $number_minor - 1`
+	    age="$number_minor"
+	    revision="$number_minor"
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$2"
+	  revision="$3"
+	  age="$4"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  major=`expr $current - $age + 1`
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$echo "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+	         then
+		   continue
+		 fi
+	       fi
+	       removelist="$removelist $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	if test -n "$removelist"; then
+	  $show "${rm}r $removelist"
+	  $run ${rm}r $removelist
+	fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+#      for path in $notinst_path; do
+#	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+#	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+#	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+#      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    ;;
+ 	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+      if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name=`expr $i : '-l\(.*\)'`
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    newdeplibs="$newdeplibs $i"
+		    i=""
+		    ;;
+		  esac
+	        fi
+		if test -n "$i" ; then
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    $echo
+		    $echo "*** Warning: dynamic linker does not accept needed library $i."
+		    $echo "*** I have the capability to make that library automatically link in when"
+		    $echo "*** you link to this library.  But I can only do this if you have a"
+		    $echo "*** shared version of the library, which I believe you do not have"
+		    $echo "*** because a test_compile did reveal that the linker did not use it for"
+		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      name=`expr $i : '-l\(.*\)'`
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		$rm conftest
+		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      newdeplibs="$newdeplibs $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval \\$echo \"$libname_spec\"`
+		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		    set dummy $deplib_matches
+		    deplib_match=$2
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      newdeplibs="$newdeplibs $i"
+		    else
+		      droppeddeps=yes
+		      $echo
+		      $echo "*** Warning: dynamic linker does not accept needed library $i."
+		      $echo "*** I have the capability to make that library automatically link in when"
+		      $echo "*** you link to this library.  But I can only do this if you have a"
+		      $echo "*** shared version of the library, which you do not appear to have"
+		      $echo "*** because a test_compile did reveal that the linker did not use this one"
+		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  $echo
+		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  $echo "*** make it link in!  You will probably need to install it or some"
+		  $echo "*** library that it depends on before this library will be fully"
+		  $echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name=`expr $a_deplib : '-l\(.*\)'`
+	    # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | ${SED} 10q \
+			 | $EGREP "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name=`expr $a_deplib : '-l\(.*\)'`
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval $echo \"$potent_lib\" 2>/dev/null \
+		        | ${SED} 10q \
+		        | $EGREP "$match_pattern_regex" > /dev/null; then
+		      newdeplibs="$newdeplibs $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	    -e 's/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+	    done
+	  fi
+	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
+	    | grep . >/dev/null; then
+	    $echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      $echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    $echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    $echo
+	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    $echo "*** a static module, that should work as long as the dlopening"
+	    $echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      $echo
+	      $echo "*** However, this would only work if libtool was able to extract symbol"
+	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      $echo "*** not find such a program.  So, this module is probably useless."
+	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    $echo "*** The inter-library dependencies that have been dropped here will be"
+	    $echo "*** automatically added whenever a program is linked with this library"
+	    $echo "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      $echo
+	      $echo "*** Since this library must not contain undefined symbols,"
+	      $echo "*** because either the platform does not support them or"
+	      $echo "*** it was explicitly requested with -no-undefined,"
+	      $echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $deplibs " in
+	  *" -L$path/$objdir "*)
+	    new_libs="$new_libs -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) new_libs="$new_libs $deplib" ;;
+	  esac
+	  ;;
+	*) new_libs="$new_libs $deplib" ;;
+	esac
+      done
+      deplibs="$new_libs"
+
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+	    else
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	    fi
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	linknames=
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      eval cmd=\"$cmd\"
+	      if len=`expr "X$cmd" : ".*"` &&
+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	        $show "$cmd"
+	        $run eval "$cmd" || exit $?
+	        skipped_export=false
+	      else
+	        # The command line is too long to execute in one step.
+	        $show "using reloadable object file for export list..."
+	        skipped_export=:
+		# Break out early, otherwise skipped_export may be
+		# set to false by a later but shorter cmd.
+		break
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	tmp_deplibs=
+	inst_prefix_arg=
+	for test_deplib in $deplibs; do
+		case " $convenience " in
+		*" $test_deplib "*) ;;
+		*)
+			if test -n "$inst_prefix_dir" && (echo "$test_deplib" | grep -- "$inst_prefix_dir" >/dev/null); then
+				inst_prefix_arg="$inst_prefix_arg $test_deplib"
+			else
+				tmp_deplibs="$tmp_deplibs $test_deplib"
+			fi
+			;;
+		esac
+	done
+	deplibs="$tmp_deplibs"
+	if test -n "$inst_prefix_arg"; then
+		deplibs="$inst_prefix_arg $deplibs"
+	fi
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    libobjs="$libobjs $func_extract_archives_result"
+	  fi
+	fi
+	
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval test_cmds=\"$archive_expsym_cmds\"
+	  cmds=$archive_expsym_cmds
+	else
+	  eval test_cmds=\"$archive_cmds\"
+	  cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" &&
+	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise.
+	  $echo "creating reloadable object files..."
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  delfiles=
+	  last_robj=
+	  k=1
+	  output=$output_objdir/$output_la-${k}.$objext
+	  # Loop over the list of objects to be linked.
+	  for obj in $save_libobjs
+	  do
+	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+	    if test "X$objlist" = X ||
+	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+		 test "$len" -le "$max_cmd_len"; }; then
+	      objlist="$objlist $obj"
+	    else
+	      # The command $test_cmds is almost too long, add a
+	      # command to the queue.
+	      if test "$k" -eq 1 ; then
+		# The first file doesn't have a previous command to add.
+		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+	      else
+		# All subsequent reloadable object files will link in
+		# the last one created.
+		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+	      fi
+	      last_robj=$output_objdir/$output_la-${k}.$objext
+	      k=`expr $k + 1`
+	      output=$output_objdir/$output_la-${k}.$objext
+	      objlist=$obj
+	      len=1
+	    fi
+	  done
+	  # Handle the remaining objects by creating one last
+	  # reloadable object file.  All subsequent reloadable object
+	  # files will link in the last one created.
+	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+	  if ${skipped_export-false}; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    libobjs=$output
+	    # Append the command to create the export file.
+	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+	  # Set up a command to remove the reloadable object files
+	  # after they are used.
+	  i=0
+	  while test "$i" -lt "$k"
+	  do
+	    i=`expr $i + 1`
+	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+	  done
+
+	  $echo "creating a temporary reloadable object file: $output"
+
+	  # Loop through the commands generated above and execute them.
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $concat_cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    cmds=$archive_expsym_cmds
+	  else
+	    cmds=$archive_cmds
+	    fi
+	  fi
+
+	  # Append the command to remove the reloadable object files
+	  # to the just-reset $cmds.
+	  eval cmds=\"\$cmds~\$rm $delfiles\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || {
+	    lt_exit=$?
+
+	    # Restore the uninstalled library and exit
+	    if test "$mode" = relink; then
+	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+	    fi
+
+	    exit $lt_exit
+	  }
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+
+	  if test -n "$convenience"; then
+	    if test -z "$whole_archive_flag_spec"; then
+	      $show "${rm}r $gentop"
+	      $run ${rm}r "$gentop"
+	    fi
+	  fi
+
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec and hope we can get by with
+      # turning comma into space..
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+      reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+	else
+	  gentop="$output_objdir/${obj}x"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      cmds=$reload_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $run eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	cmds=$reload_cmds
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      esac
+
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $compile_deplibs " in
+	  *" -L$path/$objdir "*)
+	    new_libs="$new_libs -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $compile_deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) new_libs="$new_libs $deplib" ;;
+	  esac
+	  ;;
+	*) new_libs="$new_libs $deplib" ;;
+	esac
+      done
+      compile_deplibs="$new_libs"
+
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$outputname.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+              case $host in
+              *cygwin* | *mingw* )
+	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+                ;;
+              esac
+	    else
+	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+              case $host in
+              *cygwin* | *mingw* )
+	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+                ;;
+              esac
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval '$echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" |
+		if sort -k 3 </dev/null >/dev/null 2>&1; then
+		  sort -k 3
+		else
+		  sort +2
+		fi |
+		uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+	    case $host in
+	    *cygwin* | *mingw* )
+	  $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs */
+struct {
+"
+	      ;;
+	    * )
+	  $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+	      ;;
+	    esac
+
+
+	  $echo >> "$output_objdir/$dlsyms" "\
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+          case $host in
+          *cygwin* | *mingw* )
+            if test -f "$output_objdir/${outputname}.def" ; then
+              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+            else
+              compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+              finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+             fi
+            ;;
+          * )
+            compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+            finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+            ;;
+          esac
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+      fi
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	exit_status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $exit_status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+	case $progpath in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+            output_name=`basename $output`
+            output_path=`dirname $output`
+            cwrappersource="$output_path/$objdir/lt-$output_name.c"
+            cwrapper="$output_path/$output_name.exe"
+            $rm $cwrappersource $cwrapper
+            trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+/* -DDEBUG is fairly common in CFLAGS.  */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int    check_executable(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  DEBUG("(main) argv[0]      : %s\n",argv[0]);
+  DEBUG("(main) program_name : %s\n",program_name);
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+            cat >> $cwrappersource <<EOF
+  newargz[0] = (char *) xstrdup("$SHELL");
+EOF
+
+            cat >> $cwrappersource <<"EOF"
+  newargz[1] = find_executable(argv[0]);
+  if (newargz[1] == NULL)
+    lt_fatal("Couldn't find %s", argv[0]);
+  DEBUG("(main) found exe at : %s\n",newargz[1]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe");
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+
+  for (i=0; i<argc+1; i++)
+  {
+    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
+    ;
+  }
+
+EOF
+
+            case $host_os in
+              mingw*)
+                cat >> $cwrappersource <<EOF
+  execv("$SHELL",(char const **)newargz);
+EOF
+              ;;
+              *)
+                cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+              ;;
+            esac
+
+            cat >> $cwrappersource <<"EOF"
+  return 127;
+}
+
+void *
+xmalloc (size_t num)
+{
+  void * p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+const char *
+base_name (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return base;
+}
+
+int
+check_executable(const char * path)
+{
+  struct stat st;
+
+  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0) &&
+      (
+        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+       ((st.st_mode & S_IXUSR) == S_IXUSR))
+      )
+    return 1;
+  else
+    return 0;
+}
+
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise */
+char *
+find_executable (const char* wrapper)
+{
+  int has_slash = 0;
+  const char* p;
+  const char* p_next;
+  /* static buffer for getcwd */
+  char tmp[LT_PATHMAX + 1];
+  int tmp_len;
+  char* concat_name;
+
+  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
+
+  /* Absolute path? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+  {
+    concat_name = xstrdup (wrapper);
+    if (check_executable(concat_name))
+      return concat_name;
+    XFREE(concat_name);
+  }
+  else
+  {
+#endif
+    if (IS_DIR_SEPARATOR (wrapper[0]))
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable(concat_name))
+        return concat_name;
+      XFREE(concat_name);
+    }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  }
+#endif
+
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+    {
+      has_slash = 1;
+      break;
+    }
+  if (!has_slash)
+  {
+    /* no slashes; search PATH */
+    const char* path = getenv ("PATH");
+    if (path != NULL)
+    {
+      for (p = path; *p; p = p_next)
+      {
+        const char* q;
+        size_t p_len;
+        for (q = p; *q; q++)
+          if (IS_PATH_SEPARATOR(*q))
+            break;
+        p_len = q - p;
+        p_next = (*q == '\0' ? q : q + 1);
+        if (p_len == 0)
+        {
+          /* empty path: current directory */
+          if (getcwd (tmp, LT_PATHMAX) == NULL)
+            lt_fatal ("getcwd failed");
+          tmp_len = strlen(tmp);
+          concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+          memcpy (concat_name, tmp, tmp_len);
+          concat_name[tmp_len] = '/';
+          strcpy (concat_name + tmp_len + 1, wrapper);
+        }
+        else
+        {
+          concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+          memcpy (concat_name, p, p_len);
+          concat_name[p_len] = '/';
+          strcpy (concat_name + p_len + 1, wrapper);
+        }
+        if (check_executable(concat_name))
+          return concat_name;
+        XFREE(concat_name);
+      }
+    }
+    /* not found in PATH; assume curdir */
+  }
+  /* Relative path | not found in path: prepend cwd */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  tmp_len = strlen(tmp);
+  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable(concat_name))
+    return concat_name;
+  XFREE(concat_name);
+  return NULL;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert(str != NULL);
+  assert(pat != NULL);
+
+  len = strlen(str);
+  patlen = strlen(pat);
+
+  if (patlen <= len)
+  {
+    str += len - patlen;
+    if (strcmp(str, pat) == 0)
+      *str = '\0';
+  }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+          const char * message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+EOF
+          # we should really use a build-platform specific compiler
+          # here, but OTOH, the wrappers (shell script and this C one)
+          # are only useful if you want to execute the "real" binary.
+          # Since the "real" binary is built for $host, then this
+          # wrapper might as well be built for $host, too.
+          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+          ;;
+        esac
+        $rm $output
+        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '\${1+\"\$@\"}'='\"\$@\"'
+  setopt NO_GLOB_SUBST
+else
+  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  $echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit $EXIT_FAILURE
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \$*\"
+      exit $EXIT_FAILURE
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	generated="$generated $gentop"
+
+	func_extract_archives $gentop $addlibs
+	oldobjs="$oldobjs $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  $echo "copying selected object files to avoid basename conflicts..."
+
+	  if test -z "$gentop"; then
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "$mkdir $gentop"
+	    $run $mkdir "$gentop"
+	    exit_status=$?
+	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+	      exit $exit_status
+	    fi
+	  fi
+
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		counter=`expr $counter + 1`
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      $run ln "$obj" "$gentop/$newobj" ||
+	      $run cp "$obj" "$gentop/$newobj"
+	      oldobjs="$oldobjs $gentop/$newobj"
+	      ;;
+	    *) oldobjs="$oldobjs $obj" ;;
+	    esac
+	  done
+	fi
+
+	eval cmds=\"$old_archive_cmds\"
+
+	if len=`expr "X$cmds" : ".*"` &&
+	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  $echo "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  for obj in $save_oldobjs
+	  do
+	    oldobjs="$objlist $obj"
+	    objlist="$objlist $obj"
+	    eval test_cmds=\"$old_archive_cmds\"
+	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+	       test "$len" -le "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+	        RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+        eval cmd=\"$cmd\"
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlfiles="$newdlfiles $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlprefiles="$newdlprefiles $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest=$arg
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) 
+      	case " $install_prog " in
+	*[\\\ /]cp\ *) ;;
+	*) prev=$arg ;;
+	esac
+	;;
+      -g | -m | -o) prev=$arg ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*)
+	;;
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest=$arg
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  if test "$inst_prefix_dir" = "$destdir"; then
+	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
+	  else
+	    relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
+	  fi
+
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
+	    # so we also need to try rm && ln -s.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  cmds=$postinstall_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || {
+	      lt_exit=$?
+
+	      # Restore the uninstalled library and exit
+	      if test "$mode" = relink; then
+		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+	      fi
+
+	      exit $lt_exit
+	    }
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      file=`$echo $file|${SED} 's,.exe$,,'`
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # Note that it is not necessary on cygwin/mingw to append a dot to
+	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
+	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
+	  # `FILE.' does not work on cygwin managed mounts.
+	  #
+	  # If there is no directory component, then add one.
+	  case $wrapper in
+	  */* | *\\*) . ${wrapper} ;;
+	  *) . ./${wrapper} ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # Note that it is not necessary on cygwin/mingw to append a dot to
+	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
+	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
+	  # `FILE.' does not work on cygwin managed mounts.
+	  #
+	  # If there is no directory component, then add one.
+	  case $wrapper in
+	  */* | *\\*) . ${wrapper} ;;
+	  *) . ./${wrapper} ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir=`func_mktempdir`
+	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyway 
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      cmds=$old_postinstall_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  cmds=$finish_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit $EXIT_SUCCESS
+
+    $echo "X----------------------------------------------------------------------" | $Xsed
+    $echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $echo "   $libdir"
+    done
+    $echo
+    $echo "If you ever happen to want to link against installed libraries"
+    $echo "in a given directory, LIBDIR, you must either use libtool, and"
+    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $echo
+    $echo "See any operating system documentation about shared libraries for"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "X----------------------------------------------------------------------" | $Xsed
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit $EXIT_FAILURE
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+      do
+       eval "if test \"\${save_$lt_var+set}\" = set; then
+               $lt_var=\$save_$lt_var; export $lt_var
+             else
+               $lt_unset $lt_var
+             fi"
+      done
+
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$origobjdir"
+      else
+	objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+	  case "$mode" in
+	  clean)
+	    case "  $library_names " in
+	    # "  " in the beginning catches empty $dlname
+	    *" $dlname "*) ;;
+	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
+	    esac
+	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+	    ;;
+	  uninstall)
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      cmds=$postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      cmds=$old_postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	    ;;
+	  esac
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+	  # Read the .lo file
+	  . $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" \
+	     && test "$pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" \
+	     && test "$non_pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    file=`$echo $file|${SED} 's,.exe$,,'`
+	    noexename=`$echo $name|${SED} 's,.exe$,,'`
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    rmfiles="$rmfiles $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	    relink_command=
+	    . $dir/$noexename
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      rmfiles="$rmfiles $objdir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool at gnu.org>."
+  exit $EXIT_SUCCESS
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+                    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+                    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of uninstalled libtool libraries
+  -static-libtool-libs
+                    do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+                    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+disable_libs=shared
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+disable_libs=static
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:

Added: kde-extras/tora/branches/upstream/current/config/m4/cppunit.m4
===================================================================
--- kde-extras/tora/branches/upstream/current/config/m4/cppunit.m4	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/m4/cppunit.m4	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,83 @@
+##   -*- mode: autoconf; tab-width: 2; -*-
+
+dnl
+dnl AM_PATH_CPPUNIT(MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+dnl
+AC_DEFUN([AM_PATH_CPPUNIT],
+[
+
+AC_ARG_WITH(cppunit-prefix,[  --with-cppunit-prefix=PFX   Prefix where CppUnit is installed (optional)],
+            cppunit_config_prefix="$withval", cppunit_config_prefix="")
+AC_ARG_WITH(cppunit-exec-prefix,[  --with-cppunit-exec-prefix=PFX  Exec prefix where CppUnit is installed (optional)],
+            cppunit_config_exec_prefix="$withval", cppunit_config_exec_prefix="")
+
+  if test x$cppunit_config_exec_prefix != x ; then
+     cppunit_config_args="$cppunit_config_args --exec-prefix=$cppunit_config_exec_prefix"
+     if test x${CPPUNIT_CONFIG+set} != xset ; then
+        CPPUNIT_CONFIG=$cppunit_config_exec_prefix/bin/cppunit-config
+     fi
+  fi
+  if test x$cppunit_config_prefix != x ; then
+     cppunit_config_args="$cppunit_config_args --prefix=$cppunit_config_prefix"
+     if test x${CPPUNIT_CONFIG+set} != xset ; then
+        CPPUNIT_CONFIG=$cppunit_config_prefix/bin/cppunit-config
+     fi
+  fi
+
+  AC_PATH_PROG(CPPUNIT_CONFIG, cppunit-config, no)
+  cppunit_version_min=$1
+
+  AC_MSG_CHECKING(for Cppunit - version >= $cppunit_version_min)
+  no_cppunit=""
+  if test "$CPPUNIT_CONFIG" = "no" ; then
+    no_cppunit=yes
+    AC_MSG_RESULT(no)
+  else
+    CPPUNIT_CFLAGS=`$CPPUNIT_CONFIG --cflags`
+    CPPUNIT_LIBS=`$CPPUNIT_CONFIG --libs`
+    cppunit_version=`$CPPUNIT_CONFIG --version`
+
+    cppunit_major_version=`echo $cppunit_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    cppunit_minor_version=`echo $cppunit_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    cppunit_micro_version=`echo $cppunit_version | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+
+    cppunit_major_min=`echo $cppunit_version_min | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+    cppunit_minor_min=`echo $cppunit_version_min | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+    cppunit_micro_min=`echo $cppunit_version_min | \
+           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+
+    cppunit_version_proper=`expr \
+        $cppunit_major_version \> $cppunit_major_min \| \
+        $cppunit_major_version \= $cppunit_major_min \& \
+        $cppunit_minor_version \> $cppunit_minor_min \| \
+        $cppunit_major_version \= $cppunit_major_min \& \
+        $cppunit_minor_version \= $cppunit_minor_min \& \
+        $cppunit_micro_version \>= $cppunit_micro_min `
+
+    if test "$cppunit_version_proper" = "1" ; then
+      AC_MSG_RESULT([$cppunit_major_version.$cppunit_minor_version.$cppunit_micro_version])
+    else
+      AC_MSG_RESULT(no)
+      no_cppunit=yes
+    fi
+  fi
+
+  if test "x$no_cppunit" = x ; then
+     ifelse([$2], , :, [$2])     
+  else
+     CPPUNIT_CFLAGS=""
+     CPPUNIT_LIBS=""
+     ifelse([$3], , :, [$3])
+  fi
+
+  AC_SUBST(CPPUNIT_CFLAGS)
+  AC_SUBST(CPPUNIT_LIBS)
+])
+
+
+

Added: kde-extras/tora/branches/upstream/current/config/m4/oracle.m4
===================================================================
--- kde-extras/tora/branches/upstream/current/config/m4/oracle.m4	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/m4/oracle.m4	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,222 @@
+dnl mrj
+dnl check if we have oracle then test it. otherwise, RESULT no.
+AC_DEFUN([MRJ_CHECK_ORACLE],
+[
+  AC_MSG_CHECKING([for oracle])
+
+  dnl the default
+  have_oracle=yes
+
+  AC_ARG_WITH(oracle,
+  [  --with-oracle=DIR       enable support for Oracle (default ORACLE_HOME)],
+  [
+    if test $withval = no; then
+      have_oracle=no
+    elif test $withval != yes; then
+      ORACLE_HOME=$withval
+    fi
+  ], )
+
+  oracle_user_inc=
+  AC_ARG_WITH(oracle-includes,
+  [  --with-oracle-includes=DIR
+                          set oracle include dir (default ORACLE_HOME/subdirs)],
+  [
+    have_oracle=yes
+    oracle_user_inc=$withval
+  ], )
+
+  oracle_user_lib=
+  AC_ARG_WITH(oracle-libraries,
+  [  --with-oracle-libraries=DIR
+                          set oracle lib dir (default ORACLE_HOME/lib)],
+  [
+    have_oracle=yes
+    oracle_user_lib=$withval
+  ], )
+
+  oracle_user_otl_ver=
+  AC_ARG_WITH(oci-version,
+  [[  --with-oci-version=[8, 8I, 9I, 10G, 10G_R2]
+                          this is the version of the client, not the database.]],
+  [
+    have_oracle=yes
+    oracle_user_otl_ver=$withval
+  ], )
+
+  oracle_user_instant=
+  AC_ARG_WITH(instant-client,
+  [[  --with-instant-client
+                          define if compiling against Oracle Instant Client.
+                          Disables testing for ORACLE_HOME and tnsnames.]],
+  [
+    have_oracle=yes
+    oracle_user_instant=$withval
+  ], )
+
+  cflags_ora_save=$CFLAGS
+  ldflags_ora_save=$LDFLAGS
+  libs_ora_save=$LIBS
+
+  ora_cflags=
+  ora_libdir=
+  ora_ldflags=
+  ora_lib=-lclntsh
+
+  if test $have_oracle = no; then
+    dnl yeah, this is backwards.
+    AC_DEFINE(TO_NO_ORACLE, 1, [Define if you do _not_ have Oracle.])
+    AC_MSG_RESULT(no)
+  elif test "x$oracle_user_instant" != "x"; then
+    dnl user says we're running on the instant client libraries.
+    AC_DEFINE(TO_INSTANT_CLIENT, 1, [Define if compiled against Oracle Instant Client])
+
+    if test "x$oracle_user_lib" = "x" && test "x$oracle_user_inc" = "x"; then
+      dnl try to find oracle includes for instant client
+      dnl these are from the rpm install. they're all i know of so far.
+
+      for dir in `ls /usr/lib/oracle/`; do
+        echo "trying $dir" >&5
+        if expr $dir \> 10 >/dev/null; then
+          oracle_user_otl_ver=10G
+        fi
+        ora_ldflags="-L/usr/lib/oracle/$dir/client/lib"
+
+        incdir=/usr/include/oracle/$dir/client
+        if ! test -d $incdir; then
+          AC_MSG_ERROR([$incdir doesn't exist. Please install the sdk package or use --oracle-includes.])
+        fi
+        ora_cflags="-I$incdir"
+        break
+      done
+    else
+      ora_ldflags="-L$oracle_user_lib"
+      ora_cflags="-I$oracle_user_inc"
+    fi
+  elif test "x$ORACLE_HOME" != "x"; then
+    AC_MSG_RESULT($ORACLE_HOME)
+
+    dnl try to find oracle includes
+    ora_check_inc="
+      $oracle_user_inc
+      $ORACLE_HOME/rdbms/demo
+      $ORACLE_HOME/plsql/public
+      $ORACLE_HOME/rdbms/public
+      $ORACLE_HOME/network/public
+      $ORACLE_HOME/sdk/
+      $ORACLE_HOME/include/"
+
+    for dir in $ora_check_inc; do
+      if test -d $dir; then
+        ora_cflags="$ora_cflags -I$dir"
+      fi
+    done
+
+    ora_check_lib="
+      $oracle_user_lib
+      $ORACLE_HOME/lib
+      $ORACLE_HOME/lib32
+      $ORACLE_HOME/lib64"
+
+    for dir in $ora_check_lib; do
+      if test -d $dir; then
+        ora_ldflags="$ora_ldflags -L$dir"
+      fi
+    done
+  else
+    dnl test if we have includes or libraries
+    if test -z "$oracle_user_lib" || test -z "$oracle_user_inc"; then
+       AC_MSG_WARN(no)
+       have_oracle=no
+     else
+      ora_ldflags="-L$oracle_user_lib"
+      ora_cflags="-I$oracle_user_inc"
+    fi
+  fi
+
+  if test "x$ORACLE_HOME" != "x"; then
+    dnl check real quick that ORACLE_HOME doesn't end with a slash
+    dnl for some stupid reason, the 10g instant client bombs.
+    ora_home_oops=`echo $ORACLE_HOME | $AWK '/\/@S|@/ {print "oops"}'`
+    if test "$ora_home_oops" = "oops"; then
+      AC_MSG_WARN([Your ORACLE_HOME environment variable ends with a
+slash (i.e. /). Oracle 10g Instant Client is known to have a problem
+with this. If you get the message "otl_initialize failed!" at the
+console when running TOra, this is probably why.])
+    fi
+  fi
+
+  if test $have_oracle = yes; then
+    AC_MSG_CHECKING([oci works])
+    CFLAGS="$CFLAGS $ora_cflags"
+    LDFLAGS="$LDFLAGS $ora_ldflags"
+    LIBS="$ora_lib"
+  
+    # i pulled this from one of the examples in the demo dir.
+    AC_RUN_IFELSE([[
+      #include <oci.h>
+      Lda_Def lda;
+      ub4     hda [HDA_SIZE/(sizeof(ub4))];
+  
+      int main(int c, char **v) {
+        return 0;
+      }
+    ]], [found_oracle=yes],
+    [found_oracle=no], )
+  
+    if test $found_oracle = no; then
+      AC_MSG_ERROR([Couldn't compile and run a simpile OCI app.
+      Try setting ORACLE_HOME or check config.log.
+      Otherwise, make sure ORACLE_HOME/lib is in /etc/ld.so.conf or LD_LIBRARY_PATH])
+    fi
+  
+    sqlplus=
+    if test -x "$ORACLE_HOME/bin/sqlplus"; then
+      sqlplus="$ORACLE_HOME/bin/sqlplus"
+    fi
+    if test "x${sqlplus}" = "x"; then
+      if test -x "$ORACLE_HOME/bin/sqlplusO"; then
+        sqlplus="$ORACLE_HOME/bin/sqlplusO"
+      fi
+    fi
+  
+    if test "x$oracle_user_otl_ver" != "x"; then
+      otl_ver=$oracle_user_otl_ver
+    elif test "x${sqlplus}" = "x"; then
+      AC_MSG_ERROR([Couldn't find sqlplus. Set the Oracle version manually.])
+    else
+      # get oracle oci version. know a better way?
+      sqlplus_ver=`$sqlplus -? | $AWK '/Release/ {print @S|@3}'`
+      echo "sqlplus_ver: $sqlplus_ver" >&5
+  
+      if expr $sqlplus_ver \> 10.2 >/dev/null; then
+        otl_ver=10G_R2
+      elif expr $sqlplus_ver \> 10 >/dev/null; then
+        otl_ver=10G
+      elif expr $sqlplus_ver \> 9 >/dev/null; then
+        otl_ver=9I
+      elif expr $sqlplus_ver \< 8.1 >/dev/null; then
+        otl_ver=8
+      else
+        otl_ver=8I
+      fi
+    fi
+  
+    ora_cflags="$ora_cflags -DOTL_ORA${otl_ver} -DOTL_ORA_TIMESTAMP -DOTL_ANSI_CPP -DOTL_FUNC_THROW_SPEC_ON -DOTL_EXCEPTION_ENABLE_ERROR_OFFSET -DOTL_ORA_UNICODE"
+  
+    # don't change flags for all targets, just export ORA variables.
+    CFLAGS=$cflags_ora_save
+    AC_SUBST(ORACLE_CXXFLAGS, $ora_cflags)
+  
+    LDFLAGS=$ldflags_ora_save
+    AC_SUBST(ORACLE_LDFLAGS, $ora_ldflags)
+  
+    LIBS=$libs_ora_save
+    AC_SUBST(ORACLE_LIBS, $ora_lib)
+  
+    # AM_CONDITIONAL in configure.in uses this variable to enable oracle
+    # targets.
+    enable_oracle=yes
+    AC_MSG_RESULT(yes)
+  fi
+])

Added: kde-extras/tora/branches/upstream/current/config/m4/pcre.m4
===================================================================
--- kde-extras/tora/branches/upstream/current/config/m4/pcre.m4	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/m4/pcre.m4	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,40 @@
+dnl http://autoconf-archive.cryp.to/ax_path_lib_pcre.html
+AC_DEFUN([AX_PATH_LIB_PCRE],[dnl
+AC_MSG_CHECKING([lib pcre])
+AC_ARG_WITH(pcre,
+[  --with-pcre[[=prefix]]    compile xmlpcre part (via libpcre check)],,
+     with_pcre="yes")
+if test ".$with_pcre" = ".no" ; then
+  AC_MSG_RESULT([disabled])
+  m4_ifval($2,$2)
+else
+  AC_MSG_RESULT([(testing)])
+  AC_CHECK_LIB(pcre, pcre_study)
+  if test "$ac_cv_lib_pcre_pcre_study" = "yes" ; then
+     PCRE_LIBS="-lpcre"
+     AC_MSG_CHECKING([lib pcre])
+     AC_MSG_RESULT([$PCRE_LIBS])
+     m4_ifval($1,$1)
+  else
+     OLDLDFLAGS="$LDFLAGS" ; LDFLAGS="$LDFLAGS -L$with_pcre/lib"
+     OLDCPPFLAGS="$CPPFLAGS" ; CPPFLAGS="$CPPFLAGS -I$with_pcre/include"
+     AC_CHECK_LIB(pcre, pcre_compile)
+     CPPFLAGS="$OLDCPPFLAGS"
+     LDFLAGS="$OLDLDFLAGS"
+     if test "$ac_cv_lib_pcre_pcre_compile" = "yes" ; then
+        AC_MSG_RESULT(.setting PCRE_LIBS -L$with_pcre/lib -lpcre)
+        PCRE_LIBS="-L$with_pcre/lib -lpcre"
+        test -d "$with_pcre/include" && PCRE_CFLAGS="-I$with_pcre/include"
+        AC_MSG_CHECKING([lib pcre])
+        AC_MSG_RESULT([$PCRE_LIBS])
+        m4_ifval($1,$1)
+     else
+        AC_MSG_CHECKING([lib pcre])
+        AC_MSG_RESULT([no, (WARNING)])
+        m4_ifval($2,$2)
+     fi
+  fi
+fi
+AC_SUBST([PCRE_LIBS], $PCRE_LIBS)
+AC_SUBST([PCRE_CFLAGS], $PCRE_CFLAGS)
+])

Added: kde-extras/tora/branches/upstream/current/config/m4/qtkde.m4
===================================================================
--- kde-extras/tora/branches/upstream/current/config/m4/qtkde.m4	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/m4/qtkde.m4	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,5139 @@
+##   -*- mode: autoconf; tab-width: 2; -*-
+
+dnl mrjohnson0: nicked this from a kdevelop-started package
+dnl - it didn't work without KDE, so i fixed that.
+dnl - then it didn't work on the mac, so i removed the libtool stuff.
+dnl - then it still had some problems, so my hacks are all over the place.
+dnl
+dnl blame me. mrjohnson0 at users.sourceforge.net :-)
+
+dnl    This file is part of the KDE libraries/packages
+dnl    Copyright (C) 1997 Janos Farkas (chexum at shadow.banki.hu)
+dnl              (C) 1997,98,99 Stephan Kulow (coolo at kde.org)
+
+dnl    This file is free software; you can redistribute it and/or
+dnl    modify it under the terms of the GNU Library General Public
+dnl    License as published by the Free Software Foundation; either
+dnl    version 2 of the License, or (at your option) any later version.
+
+dnl    This library is distributed in the hope that it will be useful,
+dnl    but WITHOUT ANY WARRANTY; without even the implied warranty of
+dnl    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+dnl    Library General Public License for more details.
+
+dnl    You should have received a copy of the GNU Library General Public License
+dnl    along with this library; see the file COPYING.LIB.  If not, write to
+dnl    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+dnl    Boston, MA 02111-1307, USA.
+
+dnl ------------------------------------------------------------------------
+dnl Forward compatibility macros (make autoconf 2.13 look like 2.50),
+dnl thanks to Raja R Harinath.
+dnl ------------------------------------------------------------------------
+dnl
+dnl ifdef([_AC_PATH_X_XMKMF],[],
+dnl    [AC_DEFUN([_AC_PATH_X_XMKMF],[AC_PATH_X_XMKMF])])
+dnl ifdef([AC_OUTPUT_SUBDIRS],[],
+dnl    [AC_DEFUN([AC_OUTPUT_SUBDIRS],[subdirs=$1; _AC_OUTPUT_SUBDIRS])])
+
+
+dnl ------------------------------------------------------------------------
+dnl mrj
+dnl check for kde. if not, skip the rest of the kde tests.
+AC_DEFUN([TORA_HAVE_KDE],
+[
+  AC_MSG_CHECKING([have kde])
+  have_kde=yes
+  AC_ARG_WITH(kde,
+  [  --with-kde              compile against kde (default yes)],
+  [
+     have_kde=$withval
+  ],)
+
+  AC_MSG_RESULT($have_kde)
+  if test $have_kde != yes; then
+    kde_qtver=0
+  else
+    AC_PATH_KDE
+    AC_DEFINE(TO_KDE, 1, [Define if you have KDE.])
+  fi
+
+  AC_PATH_QT
+
+  KDE_CREATE_LIBS_ALIASES
+  KDE_CHECK_STL
+])
+
+
+dnl mrj
+dnl check for qscintilla, fail if no
+AC_DEFUN([TORA_CHECK_QSCINTILLA],
+[
+  AC_REQUIRE([TORA_HAVE_KDE])
+  AC_MSG_CHECKING([for qscintilla])
+
+  scin_cflags=
+  scin_ldflags=
+
+  qscintilla_user_inc=
+  AC_ARG_WITH(qscintilla-includes,
+  [  --with-qscintilla-includes=DIR
+                          QScintilla header file location],
+  [
+     qscintilla_user_inc=$withval
+  ], )
+
+  qscintilla_user_lib=
+  AC_ARG_WITH(qscintilla-libraries,
+  [   --with-qscintilla-libraries
+                          QScintilla library dir],
+  [
+    qscintilla_user_lib=$withval
+  ], )
+
+  scin_check_inc="
+    $qscintilla_user_inc
+    /usr/include/qscintilla"
+
+  for dir in $scin_check_inc; do
+    if test -d $dir; then
+      scin_cflags="$scin_cflags -I$dir"
+    fi
+  done
+
+  scin_check_lib="
+    $qscintilla_user_lib"
+
+  for dir in $scin_check_lib; do
+    if test -d $dir; then
+      scin_ldflags="$scin_ldflags -L$dir"
+    fi
+  done
+
+  dnl test that the library works
+  cflags_scin_save=$CXXFLAGS
+  ldflags_scin_save=$LDFLAGS
+  libs_scin_save=$LIBS
+
+  CXXFLAGS="$CXXFLAGS $KDE_INCLUDES $QT_INCLUDES $scin_cflags"
+  LDFLAGS="$LDFLAGS
+    @KDE_LDFLAGS@ \
+    @X_LDFLAGS@ \
+    @QT_LDFLAGS@ \
+    @LIB_KPARTS@ \
+    @LIB_KDEPRINT@ \
+    @LIB_KDECORE@ \
+    @LIB_KDEUI@ \
+    @LIB_KIO@ \
+    @LIB_KFILE@ \
+    @LIB_DCOP@ \
+    @LIB_KHTML@ \
+    $scin_ldflags"
+  LIBS="-lqscintilla"
+
+  AC_LANG_PUSH(C++)
+
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <qextscintilla.h>
+#include <qextscintillalexersql.h>
+    ]],
+    [[QextScintillaLexerSQL sqlLexer(0);]])],
+    scin_works=yes,
+    scin_works=no)
+
+  AC_LANG_POP([C++])
+
+  if test $scin_works = no; then
+    AC_MSG_ERROR([Couldn't compile a simple QScintilla application. See config.log or specify its location with --with-qscintilla-includes])
+  fi
+
+  CXXFLAGS=$cflags_scin_save
+  LDFLAGS=$ldflags_scin_save
+  LIBS=$libs_scin_save
+
+  AC_SUBST(QSCINTILLA_CXXFLAGS, $scin_cflags)
+  AC_SUBST(QSCINTILLA_LDFLAGS, $scin_ldflags)
+  AC_MSG_RESULT(yes)
+])
+
+
+dnl --------------------------------------------------
+dnl find out if we're running qt/mac native.
+dnl doesn't print "checking..." messages because it's included from AC_PATH_QT
+dnl --------------------------------------------------
+AC_DEFUN([TORA_CHECK_MAC_NATIVE],
+[
+
+  ac_cppflags_safe="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS -I$qt_incdir $all_includes $X_CFLAGS"
+
+  dnl only run the preprocessor, this will always fail if compiling
+  dnl without the proper qt/mac includes.
+  AC_PREPROC_IFELSE([
+#include <qapplication.h>
+
+#ifndef Q_OS_MACX
+# error no
+#endif
+  ],
+  have_qt_mac_native=yes,
+  have_qt_mac_native=no)
+
+  if test $have_qt_mac_native = no; then
+    echo "no mac native" >&AS_MESSAGE_LOG_FD()
+  else
+    echo "using mac native" >&AS_MESSAGE_LOG_FD()
+    dnl don't bother testing, these should always work on the mac.
+    dnl if these change in future OS releases, then we'll add some checks.
+    LIBS="$LIBS -bind_at_load -framework Carbon -framework QuickTime -lz -framework OpenGL -framework AGL"
+  fi
+
+  CPPFLAGS="$ac_cppflags_safe"
+])
+
+
+dnl ------------------------------------------------------------------------
+dnl Try to find the Qt headers and libraries.
+dnl $(QT_LDFLAGS) will be -Lqtliblocation (if needed)
+dnl and $(QT_INCLUDES) will be -Iqthdrlocation (if needed)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_PATH_QT],
+[
+  dnl AC_REQUIRE([K_PATH_X]) don't use until later, after qt native check
+  AC_REQUIRE([AC_PATH_XTRA])
+
+  dnl ------------------------------------------------------------------------
+  dnl Add configure flag to enable linking to MT version of Qt library.
+  dnl ------------------------------------------------------------------------
+
+  AC_ARG_ENABLE(
+    mt,
+    [  --disable-mt            link to non-threaded Qt (deprecated)],
+    kde_use_qt_mt=$enableval,
+    [
+      if test $kde_qtver = 3 || test $kde_qtver = 0; then
+        kde_use_qt_mt=yes
+      else
+        kde_use_qt_mt=no
+      fi
+    ]
+  )
+  
+  USING_QT_MT=""
+  
+  dnl ------------------------------------------------------------------------
+  dnl If we not get --disable-qt-mt then adjust some vars for the host.
+  dnl ------------------------------------------------------------------------
+  
+  KDE_MT_LDFLAGS=
+  KDE_MT_LIBS=
+  if test "x$kde_use_qt_mt" = "xyes"; then
+    KDE_CHECK_THREADING
+    if test "x$kde_use_threading" = "xyes"; then
+      CXXFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CXXFLAGS"
+      KDE_MT_LDFLAGS="$USE_THREADS"
+      KDE_MT_LIBS="$LIBPTHREAD"
+    else
+      kde_use_qt_mt=no
+    fi
+  fi
+  AC_SUBST(KDE_MT_LDFLAGS)
+  AC_SUBST(KDE_MT_LIBS)
+  
+  kde_qt_was_given=yes
+  
+  dnl ------------------------------------------------------------------------
+  dnl If we haven't been told how to link to Qt, we work it out for ourselves.
+  dnl ------------------------------------------------------------------------
+  if test -z "$LIBQT_GLOB"; then
+    if test "x$kde_use_qt_emb" = "xyes"; then
+      LIBQT_GLOB="libqte.*"
+    else
+      LIBQT_GLOB="libqt.*"
+    fi
+  fi
+  
+  if test -z "$LIBQT"; then
+  dnl ------------------------------------------------------------
+  dnl If we got --enable-embedded then adjust the Qt library name.
+  dnl ------------------------------------------------------------
+    if test "x$kde_use_qt_emb" = "xyes"; then
+      qtlib="qte"
+    else
+      qtlib="qt"
+    fi
+  
+    kde_int_qt="-l$qtlib"
+  else
+    kde_int_qt="$LIBQT"
+    kde_lib_qt_set=yes
+  fi
+  
+  if test -z "$LIBQPE"; then
+  dnl ------------------------------------------------------------
+  dnl If we got --enable-palmtop then add -lqpe to the link line
+  dnl ------------------------------------------------------------
+    if test "x$kde_use_qt_emb" = "xyes"; then
+      if test "x$kde_use_qt_emb_palm" = "xyes"; then
+        LIB_QPE="-lqpe"
+      else
+        LIB_QPE=""
+      fi
+    else
+      LIB_QPE=""
+    fi
+  fi
+  
+  dnl ------------------------------------------------------------------------
+  dnl If we got --enable-qt-mt then adjust the Qt library name for the host.
+  dnl ------------------------------------------------------------------------
+  
+  if test "x$kde_use_qt_mt" = "xyes"; then
+    if test -z "$LIBQT"; then
+      LIBQT="-l$qtlib-mt"
+      kde_int_qt="-l$qtlib-mt"
+    else
+      LIBQT="-l$qtlib-mt"
+      kde_int_qt="$qtlib-mt"
+    fi
+    LIBQT_GLOB="lib$qtlib-mt.*"
+    USING_QT_MT="using -mt"
+  else
+    LIBQT="-l$qtlib"
+  fi
+  
+  if test $kde_qtver != 1; then
+    AC_FIND_PNG
+    AC_FIND_JPEG
+    LIBQT="$LIBQT $LIBPNG $LIBJPEG"
+  fi
+  
+  AC_MSG_CHECKING([for Qt])
+  
+  ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO
+  qt_libraries=""
+  qt_includes=""
+  AC_ARG_WITH(qt-dir,
+      [  --with-qt-dir=DIR       where the root of Qt is installed ],
+      [  ac_qt_includes="$withval"/include
+         ac_qt_libraries="$withval"/lib
+         ac_qt_bindir="$withval"/bin
+      ])
+  
+  AC_ARG_WITH(qt-includes,
+      [  --with-qt-includes=DIR  where the Qt includes are. ],
+      [
+         ac_qt_includes="$withval"
+      ])
+  
+  AC_ARG_WITH(qt-include,
+      [  --with-qt-include=DIR   same as above. ],
+      [
+         ac_qt_includes="$ac_qt_includes $withval"
+      ])
+
+  kde_qt_libs_given=no
+  
+  AC_ARG_WITH(qt-libraries,
+      [  --with-qt-libraries=DIR where the Qt library is installed.],
+      [  ac_qt_libraries="$withval"
+         kde_qt_libs_given=yes
+      ])
+  
+  AC_CACHE_VAL(ac_cv_have_qt,
+  [#try to guess Qt locations
+  
+  qt_incdirs=""
+  for dir in $kde_qt_dirs; do
+     qt_incdirs="$qt_incdirs $dir/include $dir"
+  done
+  qt_incdirs="$QTINC
+              $qt_incdirs
+              /usr/local/qt/include
+              /usr/include/qt
+              /usr/include/qt2
+              /usr/include/qt3
+              /usr/include
+              /usr/X11R6/include/X11/qt
+              /usr/X11R6/include/qt
+              /usr/X11R6/include/qt2
+              /usr/X11R6/include/qt3
+              /Developer/qt/include
+              /sw/include/qt
+              /usr/qt/3/include
+              $x_includes"
+  if test "$ac_qt_includes" != "NO"; then
+     qt_incdirs="$ac_qt_includes $qt_incdirs"
+  fi
+  
+  if test $kde_qtver != 1 && test $kde_qtver != 0; then
+    kde_qt_header=qstyle.h
+  else
+    kde_qt_header=qglobal.h
+  fi
+  
+  AC_FIND_FILE($kde_qt_header, $qt_incdirs, qt_incdir)
+  ac_qt_includes="$qt_incdir"
+  
+  qt_libdirs="$QTLIB
+              $qt_libdirs
+              /Developer/qt/lib
+              /sw/lib
+              /usr/X11R6/lib
+              /usr/lib
+              /usr/local/qt/lib
+              /usr/qt/3/lib
+              $x_libraries"
+  if test "$ac_qt_libraries" != "NO"; then
+    qt_libdir=$ac_qt_libraries
+  else
+    qt_libdirs="$ac_qt_libraries $qt_libdirs"
+    # if the Qt was given, the chance is too big that libqt.* doesn't exist
+    qt_libdir=NONE
+    for dir in $qt_libdirs; do
+      try="ls -1 $dir/${LIBQT_GLOB}"
+      if test -n "`$try 2> /dev/null`"; then
+        qt_libdir=$dir; break
+      else
+        echo "tried $dir" >&AS_MESSAGE_LOG_FD()
+      fi
+    done
+  fi
+  
+  ac_qt_libraries="$qt_libdir"
+  
+  AC_LANG_PUSH(C++)
+  
+  dnl before we try to compile, check for native qt on the mac.
+  dnl it requires additional flags.
+  dnl this check must be run after the above tests to find the qt dir,
+  dnl but before trying to compile because we have no other way to know
+  dnl if we're compiling against qt/x11 or qt/mac. if we need to add
+  dnl more platforms with custom libraries in this manner, i'll probably
+  dnl separate the qt tests into testing linking/compiling and finding QTDIR.
+  TORA_CHECK_MAC_NATIVE
+
+  case $host in
+  *-*-cygwin*)
+      dnl no x for windows
+      ;;
+  *)
+    if test $have_qt_mac_native != yes && test "x$kde_use_qt_emb" != "xyes"; then
+      dnl don't append this until we're sure we're not using a native qt.
+      K_PATH_X
+      LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $LIBSM $LIBSOCKET"
+    fi
+    ;;
+  esac
+ 
+  ac_cxxflags_safe="$CXXFLAGS"
+  ac_ldflags_safe="$LDFLAGS"
+  ac_libs_safe="$LIBS"
+  
+  CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes $X_CFLAGS"
+  LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS"
+  LIBS="$LIBS $LIBQT $KDE_MT_LIBS $X_LIBS"
+
+  KDE_PRINT_QT_PROGRAM
+  
+  if AC_TRY_EVAL(ac_link) && test -s conftest; then
+    rm -f conftest*
+  else
+    echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD()
+    cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD()
+    ac_qt_libraries="NO"
+  fi
+  rm -f conftest*
+  CXXFLAGS="$ac_cxxflags_safe"
+  LDFLAGS="$ac_ldflags_safe"
+  LIBS="$ac_libs_safe"
+  
+  AC_LANG_POP([C++])
+  if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then
+    ac_cv_have_qt="have_qt=no"
+    ac_qt_notfound=""
+    missing_qt_mt=""
+    if test "$ac_qt_includes" = NO; then
+      if test "$ac_qt_libraries" = NO; then
+        ac_qt_notfound="(headers and libraries)";
+      else
+        ac_qt_notfound="(headers)";
+      fi
+    else
+      if test "x$kde_use_qt_mt" = "xyes"; then
+         missing_qt_mt="Make sure that you have compiled Qt with thread support!"
+         ac_qt_notfound="(library $qtlib-mt)";
+      else
+         ac_qt_notfound="(library $qtlib)";
+      fi
+    fi
+  
+    AC_MSG_ERROR([Qt ($kde_qt_minversion) $ac_qt_notfound not found.
+      Please check your installation! For more details about this problem,
+      look at the end of config.log.$missing_qt_mt])
+  else
+    have_qt="yes"
+  fi
+  ])
+  
+  eval "$ac_cv_have_qt"
+  
+  if test "$have_qt" != yes; then
+    AC_MSG_RESULT([$have_qt]);
+  else
+    ac_cv_have_qt="have_qt=yes \
+      ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries"
+    qt_libraries="$ac_qt_libraries"
+    qt_includes="$ac_qt_includes"
+  
+    AC_SUBST(qt_libraries)
+    AC_SUBST(qt_includes)
+  
+    AC_MSG_RESULT([      libqt:     $LIBQT,
+      libraries: $ac_qt_libraries,
+      headers:   $ac_qt_includes $USING_QT_MT])
+  fi
+  
+  if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then
+   QT_INCLUDES=""
+  else
+   QT_INCLUDES="-I$qt_includes"
+   all_includes="$QT_INCLUDES $all_includes"
+  fi
+  
+  if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then
+   QT_LDFLAGS=""
+  else
+   QT_LDFLAGS="-L$qt_libraries $LIBQT"
+   all_libraries="$all_libraries $QT_LDFLAGS"
+  fi
+  test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS"
+  
+  AC_SUBST(QT_INCLUDES)
+  AC_SUBST(QT_LDFLAGS)
+  AC_PATH_QT_MOC_UIC
+  
+  dnl KDE_CHECK_QT_JPEG
+  
+  if test $have_qt_mac_native != yes; then
+    if test "x$kde_use_qt_emb" != "xyes"; then
+      LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBPNG) -lXext $(LIB_X11) $(LIBSM)'
+    else
+      LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBPNG)'
+    fi
+    test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS"
+  fi
+  
+  AC_SUBST(LIB_QT)
+  AC_SUBST(LIB_QPE)
+  
+  AC_SUBST(kde_qtver)
+])
+
+
+
+AC_DEFUN([KDE_USE_QT],
+[
+  if test -z "$1"; then
+    # Current default Qt version: 3.1
+    kde_qtver=3
+    kde_qtsubver=1
+  else
+    kde_qtsubver=`echo "$1" | sed -e 's#[0-9][0-9]*\.\([0-9][0-9]*\).*#\1#'`
+    # following is the check if subversion isnt found in passed argument
+    if test "$kde_qtsubver" = "$1"; then
+      kde_qtsubver=1
+    fi
+    kde_qtver=`echo "$1" | sed -e 's#^\([0-9][0-9]*\)\..*#\1#'`
+    if test "$kde_qtver" = "1"; then
+      kde_qtsubver=42
+    fi
+  fi
+  
+  if test -z "$2"; then
+    if test "$kde_qtver" = "2"; then
+      if test $kde_qtsubver -gt 0; then
+        kde_qt_minversion=">= Qt 2.2.2"
+      else
+        kde_qt_minversion=">= Qt 2.0.2"
+      fi
+    fi
+    if test "$kde_qtver" = "3"; then
+      if test $kde_qtsubver -gt 0; then
+        kde_qt_minversion=">= Qt 3.1.0"
+      else
+        kde_qt_minversion=">= Qt 3.0"
+      fi
+    fi
+    if test "$kde_qtver" = "1"; then
+      kde_qt_minversion=">= 1.42 and < 2.0"
+    fi
+  else
+     kde_qt_minversion=$2
+  fi
+  
+  if test -z "$3"; then
+     if test $kde_qtver = 3; then
+       if test $kde_qtsubver -gt 0; then
+         kde_qt_verstring="QT_VERSION >= 0x030100"
+       else
+         kde_qt_verstring="QT_VERSION >= 300"
+       fi
+     fi
+     if test $kde_qtver = 2; then
+       if test $kde_qtsubver -gt 0; then
+         kde_qt_verstring="QT_VERSION >= 222"
+       else
+         kde_qt_verstring="QT_VERSION >= 200"
+       fi
+     fi
+     if test $kde_qtver = 1; then
+      kde_qt_verstring="QT_VERSION >= 142 && QT_VERSION < 200"
+     fi
+  else
+     kde_qt_verstring=$3
+  fi
+  
+  if test $kde_qtver = 3; then
+    kde_qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt /usr/share/qt3"
+  fi
+  if test $kde_qtver = 2; then
+     kde_qt_dirs="$QTDIR /usr/lib/qt2 /usr/lib/qt"
+  fi
+  if test $kde_qtver = 1; then
+     kde_qt_dirs="$QTDIR /usr/lib/qt"
+  fi
+])
+
+
+# KDE_PATH_X_DIRECT
+dnl Internal subroutine of AC_PATH_X.
+dnl Set ac_x_includes and/or ac_x_libraries.
+AC_DEFUN([KDE_PATH_X_DIRECT],
+[
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+if test "$ac_x_includes" = NO; then
+  # Guess where to find include files, by looking for this one X11 .h file.
+  test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h
+
+  # First, try using that file with no special directory specified.
+AC_PREPROC_IFELSE([#include <$x_direct_test_include>],
+[# We can compile using X headers with no special include directory.
+ac_x_includes=],
+[# Look for the header file in a standard set of common directories.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+  for ac_dir in               \
+    /usr/X11/include          \
+    /usr/X11R6/include        \
+    /usr/X11R5/include        \
+    /usr/X11R4/include        \
+                              \
+    /usr/include/X11          \
+    /usr/include/X11R6        \
+    /usr/include/X11R5        \
+    /usr/include/X11R4        \
+                              \
+    /usr/local/X11/include    \
+    /usr/local/X11R6/include  \
+    /usr/local/X11R5/include  \
+    /usr/local/X11R4/include  \
+                              \
+    /usr/local/include/X11    \
+    /usr/local/include/X11R6  \
+    /usr/local/include/X11R5  \
+    /usr/local/include/X11R4  \
+                              \
+    /usr/X386/include         \
+    /usr/x386/include         \
+    /usr/XFree86/include/X11  \
+                              \
+    /usr/include              \
+    /usr/local/include        \
+    /usr/unsupported/include  \
+    /usr/athena/include       \
+    /usr/local/x11r5/include  \
+    /usr/lpp/Xamples/include  \
+                              \
+    /usr/openwin/include      \
+    /usr/openwin/share/include \
+    ; \
+  do
+    if test -r "$ac_dir/$x_direct_test_include"; then
+      ac_x_includes=$ac_dir
+      break
+    fi
+  done])
+fi # $ac_x_includes = NO
+
+if test "$ac_x_libraries" = NO; then
+  # Check for the libraries.
+
+  test -z "$x_direct_test_library" && x_direct_test_library=Xt
+  test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc
+
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS="$LIBS"
+  LIBS="-l$x_direct_test_library $LIBS"
+
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[${x_direct_test_function}()]])],
+# AC_TRY_LINK(, [${x_direct_test_function}()],
+[LIBS="$ac_save_LIBS"
+# We can link X programs with no special library path.
+ac_x_libraries=],
+[LIBS="$ac_save_LIBS"
+# First see if replacing the include by lib works.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+for ac_dir in `echo "$ac_x_includes" | sed s/include/lib/` \
+    /usr/X11/lib                        \
+    /usr/X11R6/lib                      \
+    /usr/X11R5/lib                      \
+    /usr/X11R4/lib                      \
+                                        \
+    /usr/lib/X11                        \
+    /usr/lib/X11R6                      \
+    /usr/lib/X11R5                      \
+    /usr/lib/X11R4                      \
+                                        \
+    /usr/local/X11/lib                  \
+    /usr/local/X11R6/lib                \
+    /usr/local/X11R5/lib                \
+    /usr/local/X11R4/lib                \
+                                        \
+    /usr/local/lib/X11                  \
+    /usr/local/lib/X11R6                \
+    /usr/local/lib/X11R5                \
+    /usr/local/lib/X11R4                \
+                                        \
+    /usr/X386/lib                       \
+    /usr/x386/lib                       \
+    /usr/XFree86/lib/X11                \
+                                        \
+    /usr/lib                            \
+    /usr/local/lib                      \
+    /usr/unsupported/lib                \
+    /usr/athena/lib                     \
+    /usr/local/x11r5/lib                \
+    /usr/lpp/Xamples/lib                \
+    /lib/usr/lib/X11                    \
+                                        \
+    /usr/openwin/lib                    \
+    /usr/openwin/share/lib              \
+    ; \
+do
+dnl Don't even attempt the hair of trying to link an X program!
+
+dnl mrj: i removed the suffix {kdelibsuff} references above, so we
+dnl have to also test them here, too. this is needed because not all 64 bit
+dnl platforms use lib64 path exclusively (debian amd64 for one).
+
+  for ac_extension in a so sl; do
+    if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then
+      echo "tried x dir $ac_dir" >&AS_MESSAGE_LOG_FD()
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+
+    for kdelibsuff in 32 64; do
+      ac_x_dir_with_suff=`echo $ac_dir | sed "s/lib/lib${kdelibsuff}/"`
+      if test -r $ac_x_dir_with_suff/lib${x_direct_test_library}.$ac_extension; then
+        echo "tried x dir $ac_dir" >&AS_MESSAGE_LOG_FD()
+        ac_x_libraries=$ac_dir
+        break 3
+      fi
+    done
+  done
+done])
+fi # $ac_x_libraries = NO
+])
+
+
+dnl ------------------------------------------------------------------------
+dnl Find a file (or one of more files in a list of dirs)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_FIND_FILE],
+[
+$3=NO
+for i in $2;
+do
+  for j in $1;
+  do
+    echo "configure: __oline__: $i/$j" >&AS_MESSAGE_LOG_FD()
+    if test -r "$i/$j"; then
+      echo "taking that" >&AS_MESSAGE_LOG_FD()
+      $3=$i
+      break 2
+    fi
+  done
+done
+])
+
+dnl KDE_FIND_PATH(programm-name, variable-name, list of directories,
+dnl	if-not-found, test-parameter)
+AC_DEFUN([KDE_FIND_PATH],
+[
+   AC_MSG_CHECKING([for $1])
+   if test -n "$$2"; then
+        kde_cv_path="$$2";
+   else
+        kde_cache=`echo $1 | sed 'y%./+-%__p_%'`
+
+        AC_CACHE_VAL(kde_cv_path_$kde_cache,
+        [
+        kde_cv_path="NONE"
+	dirs="$3"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/$1"; then
+	    if test -n "$5"
+	    then
+              evalstr="$dir/$1 $5 2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/$1"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/$1"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+        ])
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      AC_MSG_RESULT(not found)
+      $4
+   else
+      AC_MSG_RESULT($kde_cv_path)
+      $2=$kde_cv_path
+
+   fi
+])
+
+AC_DEFUN([KDE_MOC_ERROR_MESSAGE],
+[
+    AC_MSG_ERROR([No Qt meta object compiler (moc) found!
+Please check whether you installed Qt correctly.
+You need to have a running moc binary.
+configure tried to run $ac_cv_path_moc and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable MOC to the right one before running
+configure.
+])
+])
+
+AC_DEFUN([KDE_UIC_ERROR_MESSAGE],
+[
+    AC_MSG_WARN([No Qt ui compiler (uic) found!
+Please check whether you installed Qt correctly.
+You need to have a running uic binary.
+configure tried to run $ac_cv_path_uic and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable UIC to the right one before running
+configure.
+])
+])
+
+AC_DEFUN([KDE_LRELEASE_ERROR_MESSAGE],
+[
+    AC_MSG_WARN([No lrelease found!
+Please check whether you installed Qt correctly.
+You need to have a running lrelease binary.
+configure tried to run $ac_cv_path_lrelease and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable LRELEASE to the right one before running
+configure.
+])
+])
+
+AC_DEFUN([KDE_LUPDATE_ERROR_MESSAGE],
+[
+    AC_MSG_WARN([No lupdate found!
+Please check whether you installed Qt correctly.
+You need to have a running lupdate binary.
+configure tried to run $ac_cv_path_lupdate and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable LUPDATE to the right one before running
+configure.
+])
+])
+
+AC_DEFUN([KDE_CHECK_UIC_FLAG],
+[
+    AC_MSG_CHECKING([whether uic supports -$1 ])
+    kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'`
+    AC_CACHE_VAL(kde_cv_prog_uic_$kde_cache,
+    [
+        cat >conftest.ui <<EOT
+        <!DOCTYPE UI><UI version="3" stdsetdef="1"></UI>
+EOT
+        ac_uic_testrun="$UIC_PATH -$1 $2 conftest.ui >/dev/null"
+        if AC_TRY_EVAL(ac_uic_testrun); then
+            eval "kde_cv_prog_uic_$kde_cache=yes"
+        else
+            eval "kde_cv_prog_uic_$kde_cache=no"
+        fi
+        rm -f conftest*
+    ])
+
+    if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then
+        AC_MSG_RESULT([yes])
+        :
+        $3
+    else
+        AC_MSG_RESULT([no])
+        :
+        $4
+    fi
+])
+
+dnl ------------------------------------------------------------------------
+dnl mrj: hacked to find lrelease and lupdate, too
+dnl Find the meta object compiler and the ui compiler in the PATH,
+dnl in $QTDIR/bin, and some more usual places
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_PATH_QT_MOC_UIC],
+[
+   qt_bindirs=""
+   for dir in $kde_qt_dirs; do
+      qt_bindirs="$qt_bindirs $dir/bin $dir/src/moc"
+   done
+   qt_bindirs="$qt_bindirs /usr/bin /usr/X11R6/bin /usr/local/qt/bin"
+   if test ! "$ac_qt_bindir" = "NO"; then
+      qt_bindirs="$ac_qt_bindir $qt_bindirs"
+   fi
+
+   KDE_FIND_PATH(lrelease, LRELEASE, [$qt_bindirs], [KDE_LRELEASE_ERROR_MESSAGE])
+   KDE_FIND_PATH(lupdate, LUPDATE, [$qt_bindirs], [KDE_LUPDATE_ERROR_MESSAGE])
+
+   KDE_FIND_PATH(moc, MOC, [$qt_bindirs], [KDE_MOC_ERROR_MESSAGE])
+   if test -z "$UIC_NOT_NEEDED"; then
+     KDE_FIND_PATH(uic, UIC_PATH, [$qt_bindirs], [UIC_PATH=""])
+     if test -z "$UIC_PATH" ; then
+       KDE_UIC_ERROR_MESSAGE
+       exit 1
+     else
+       KDE_CHECK_UIC_FLAG(L,[/nonexistant],ac_uic_supports_libpath=yes,ac_uic_supports_libpath=no)
+       KDE_CHECK_UIC_FLAG(nounload,,ac_uic_supports_nounload=yes,ac_uic_supports_nounload=no)
+
+       UIC=$UIC_PATH
+       if test x$ac_uic_supports_libpath = xyes; then
+           UIC="$UIC -L \$(kde_widgetdir)"
+       fi
+       if test x$ac_uic_supports_nounload = xyes; then
+           UIC="$UIC -nounload"
+       fi
+     fi
+   else
+     UIC="echo uic not available: "
+   fi
+
+   AC_SUBST(LRELEASE)
+   AC_SUBST(LUPDATE)
+   AC_SUBST(MOC)
+   AC_SUBST(UIC)
+
+   UIC_TR="i18n"
+   if test $kde_qtver = 3; then
+     UIC_TR="tr2i18n"
+   fi
+
+   AC_SUBST(UIC_TR)
+])
+
+AC_DEFUN([KDE_SET_PATHS],
+[
+  kde_cv_all_paths="kde_have_all_paths=\"yes\" \
+	kde_htmldir=\"$kde_htmldir\" \
+	kde_appsdir=\"$kde_appsdir\" \
+	kde_icondir=\"$kde_icondir\" \
+	kde_sounddir=\"$kde_sounddir\" \
+	kde_datadir=\"$kde_datadir\" \
+	kde_locale=\"$kde_locale\" \
+	kde_cgidir=\"$kde_cgidir\" \
+	kde_confdir=\"$kde_confdir\" \
+	kde_mimedir=\"$kde_mimedir\" \
+	kde_toolbardir=\"$kde_toolbardir\" \
+	kde_wallpaperdir=\"$kde_wallpaperdir\" \
+	kde_templatesdir=\"$kde_templatesdir\" \
+	kde_bindir=\"$kde_bindir\" \
+	kde_servicesdir=\"$kde_servicesdir\" \
+	kde_servicetypesdir=\"$kde_servicetypesdir\" \
+	kde_moduledir=\"$kde_moduledir\" \
+   kde_styledir=\"$kde_styledir\" \
+	kde_widgetdir=\"$kde_widgetdir\" \
+	kde_result=$1"
+])
+
+AC_DEFUN([KDE_SET_DEFAULT_PATHS],
+[
+if test "$1" = "default"; then
+
+  if test -z "$kde_htmldir"; then
+    kde_htmldir='\${prefix}/share/doc/HTML'
+  fi
+  if test -z "$kde_appsdir"; then
+    kde_appsdir='\${prefix}/share/applnk'
+  fi
+  if test -z "$kde_icondir"; then
+    kde_icondir='\${prefix}/share/icons'
+  fi
+  if test -z "$kde_sounddir"; then
+    kde_sounddir='\${prefix}/share/sounds'
+  fi
+  if test -z "$kde_datadir"; then
+    kde_datadir='\${prefix}/share/apps'
+  fi
+  if test -z "$kde_locale"; then
+    kde_locale='\${prefix}/share/locale'
+  fi
+  if test -z "$kde_cgidir"; then
+    kde_cgidir='\${exec_prefix}/cgi-bin'
+  fi
+  if test -z "$kde_confdir"; then
+    kde_confdir='\${prefix}/share/config'
+  fi
+  if test -z "$kde_mimedir"; then
+    kde_mimedir='\${prefix}/share/mimelnk'
+  fi
+  if test -z "$kde_toolbardir"; then
+    kde_toolbardir='\${prefix}/share/toolbar'
+  fi
+  if test -z "$kde_wallpaperdir"; then
+    kde_wallpaperdir='\${prefix}/share/wallpapers'
+  fi
+  if test -z "$kde_templatesdir"; then
+    kde_templatesdir='\${prefix}/share/templates'
+  fi
+  if test -z "$kde_bindir"; then
+    kde_bindir='\${exec_prefix}/bin'
+  fi
+  if test -z "$kde_servicesdir"; then
+    kde_servicesdir='\${prefix}/share/services'
+  fi
+  if test -z "$kde_servicetypesdir"; then
+    kde_servicetypesdir='\${prefix}/share/servicetypes'
+  fi
+  if test -z "$kde_moduledir"; then
+    if test "$kde_qtver" = "2"; then
+      kde_moduledir='\${libdir}/kde2'
+    else
+      kde_moduledir='\${libdir}/kde3'
+    fi
+  fi
+  if test -z "$kde_styledir"; then
+    kde_styledir='\${libdir}/kde3/plugins/styles'
+  fi
+  if test -z "$kde_widgetdir"; then
+    kde_widgetdir='\${libdir}/kde3/plugins/designer'
+  fi
+
+  KDE_SET_PATHS(defaults)
+
+else
+
+  if test $kde_qtver = 1; then
+     AC_MSG_ERROR([KDE 1 is too old])
+  else
+     AC_MSG_ERROR([path checking not yet supported for KDE 2])
+  fi
+
+fi
+])
+
+AC_DEFUN([KDE_CHECK_PATHS_FOR_COMPLETENESS],
+[ if test -z "$kde_htmldir" || test -z "$kde_appsdir" ||
+   test -z "$kde_icondir" || test -z "$kde_sounddir" ||
+   test -z "$kde_datadir" || test -z "$kde_locale"  ||
+   test -z "$kde_cgidir"  || test -z "$kde_confdir" ||
+   test -z "$kde_mimedir" || test -z "$kde_toolbardir" ||
+   test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" ||
+   test -z "$kde_bindir" || test -z "$kde_servicesdir" ||
+   test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" ||
+   test -z "$kde_styledir" || test -z "kde_widgetdir" 
+   test "x$kde_have_all_paths" != "xyes"; then
+     kde_have_all_paths=no
+  fi
+])
+
+AC_DEFUN([KDE_MISSING_PROG_ERROR],
+[
+    AC_MSG_ERROR([The important program $1 was not found!
+Please check whether you installed KDE correctly.
+])
+])
+
+AC_DEFUN([KDE_MISSING_ARTS_ERROR],
+[
+    AC_MSG_ERROR([The important program $1 was not found!
+Please check whether you installed aRts correctly.
+])
+])
+
+AC_DEFUN([KDE_SUBST_PROGRAMS],
+[
+
+        kde_default_bindirs="/usr/bin /usr/local/bin /opt/local/bin /usr/X11R6/bin /opt/kde/bin /opt/kde3/bin /usr/kde/bin /usr/local/kde/bin"
+        test -n "$KDEDIR" && kde_default_bindirs="$KDEDIR/bin $kde_default_bindirs"
+        if test -n "$KDEDIRS"; then
+           kde_save_IFS=$IFS
+           IFS=:
+           for dir in $KDEDIRS; do
+                kde_default_bindirs="$dir/bin $kde_default_bindirs "
+           done
+           IFS=$kde_save_IFS
+        fi
+        kde_default_bindirs="$exec_prefix/bin $prefix/bin $kde_default_bindirs"
+        KDE_FIND_PATH(dcopidl, DCOPIDL, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl)])
+        KDE_FIND_PATH(dcopidl2cpp, DCOPIDL2CPP, [$kde_default_bindirs], [KDE_MISSING_PROG_ERROR(dcopidl2cpp)])
+        KDE_FIND_PATH(mcopidl, MCOPIDL, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(mcopidl)])
+        KDE_FIND_PATH(artsc-config, ARTSCCONFIG, [$kde_default_bindirs], [KDE_MISSING_ARTS_ERROR(artsc-config)])
+        KDE_FIND_PATH(kde-config, KDECONFIG, [$kde_default_bindirs])
+        KDE_FIND_PATH(meinproc, MEINPROC, [$kde_default_bindirs])
+      
+        if test -n "$MEINPROC" && test ! "$MEINPROC" = "compiled"; then  
+ 	    kde_sharedirs="/usr/share/kde /usr/local/share /usr/share /opt/kde3/share /opt/kde/share $prefix/share"
+            test -n "$KDEDIR" && kde_sharedirs="$KDEDIR/share $kde_sharedirs"
+            AC_FIND_FILE(apps/ksgmltools2/customization/kde-chunk.xsl, $kde_sharedirs, KDE_XSL_STYLESHEET)
+	    if test "$KDE_XSL_STYLESHEET" = "NO"; then
+		KDE_XSL_STYLESHEET=""
+	    else
+                KDE_XSL_STYLESHEET="$KDE_XSL_STYLESHEET/apps/ksgmltools2/customization/kde-chunk.xsl"
+	    fi
+        fi
+
+        DCOP_DEPENDENCIES='$(DCOPIDL)'
+        AC_SUBST(DCOPIDL)
+        AC_SUBST(DCOPIDL2CPP)
+        AC_SUBST(DCOP_DEPENDENCIES)
+        AC_SUBST(MCOPIDL)
+        AC_SUBST(ARTSCCONFIG)
+        AC_SUBST(KDECONFIG)
+	AC_SUBST(MEINPROC)
+ 	AC_SUBST(KDE_XSL_STYLESHEET)
+
+        if test -x "$KDECONFIG"; then # it can be "compiled"
+          kde_libs_prefix=`$KDECONFIG --prefix`
+          if test -z "$kde_libs_prefix" || test ! -x "$kde_libs_prefix"; then
+               AC_MSG_ERROR([$KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs.
+                          This means it has been moved since you installed it.
+                          This won't work. Please recompile kdelibs for the new prefix.
+                          ])
+           fi
+           kde_libs_htmldir=`$KDECONFIG --install html --expandvars`
+        else
+           kde_libs_prefix='$(prefix)'
+           kde_libs_htmldir='$(kde_htmldir)'
+        fi
+        AC_SUBST(kde_libs_prefix)
+        AC_SUBST(kde_libs_htmldir)
+])dnl
+
+AC_DEFUN([AC_CREATE_KFSSTND],
+[
+
+AC_MSG_CHECKING([for KDE paths])
+kde_result=""
+kde_cached_paths=yes
+AC_CACHE_VAL(kde_cv_all_paths,
+[
+  KDE_SET_DEFAULT_PATHS($1)
+  kde_cached_paths=no
+])
+
+eval "$ac_cv_have_kde"
+# mrj, don't test if we don't have kde
+if test $have_kde = "no"; then
+  AC_MSG_RESULT(no)
+else
+  eval "$kde_cv_all_paths"
+  KDE_CHECK_PATHS_FOR_COMPLETENESS
+  if test "$kde_have_all_paths" = "no" && test "$kde_cached_paths" = "yes"; then
+    # wrong values were cached, may be, we can set better ones
+    kde_result=
+    kde_htmldir= kde_appsdir= kde_icondir= kde_sounddir=
+    kde_datadir= kde_locale=  kde_cgidir=  kde_confdir=
+    kde_mimedir= kde_toolbardir= kde_wallpaperdir= kde_templatesdir=
+    kde_bindir= kde_servicesdir= kde_servicetypesdir= kde_moduledir=
+    kde_have_all_paths=
+    kde_styledir=
+    kde_widgetdir=
+    KDE_SET_DEFAULT_PATHS($1)
+    eval "$kde_cv_all_paths"
+    KDE_CHECK_PATHS_FOR_COMPLETENESS
+    kde_result="$kde_result (cache overridden)"
+  fi
+
+  if test "$kde_have_all_paths" = "no"; then
+    AC_MSG_ERROR([configure could not run a little KDE program to test the environment.
+Since it had compiled and linked before, it must be a strange problem on your system.
+Look at config.log for details. If you are not able to fix this, look at
+http://www.kde.org/faq/installation.html or any www.kde.org mirror.
+(If you're using an egcs version on Linux, you may update binutils!)
+])
+  else
+    rm -f conftest*
+    AC_MSG_RESULT($kde_result)
+  fi
+
+  bindir=$kde_bindir
+
+  KDE_SUBST_PROGRAMS
+fi
+])
+
+AC_DEFUN([AC_SUBST_KFSSTND],
+[
+AC_SUBST(kde_htmldir)
+AC_SUBST(kde_appsdir)
+AC_SUBST(kde_icondir)
+AC_SUBST(kde_sounddir)
+AC_SUBST(kde_datadir)
+AC_SUBST(kde_locale)
+AC_SUBST(kde_confdir)
+AC_SUBST(kde_mimedir)
+AC_SUBST(kde_wallpaperdir)
+AC_SUBST(kde_bindir)
+dnl for KDE 2
+AC_SUBST(kde_templatesdir)
+AC_SUBST(kde_servicesdir)
+AC_SUBST(kde_servicetypesdir)
+AC_SUBST(kde_moduledir)
+AC_SUBST(kde_styledir)
+AC_SUBST(kde_widgetdir)
+if test "$kde_qtver" = 1; then
+  kde_minidir="$kde_icondir/mini"
+else
+# for KDE 1 - this breaks KDE2 apps using minidir, but
+# that's the plan ;-/
+  kde_minidir="/dev/null"
+fi
+dnl AC_SUBST(kde_minidir)
+dnl AC_SUBST(kde_cgidir)
+dnl AC_SUBST(kde_toolbardir)
+])
+
+AC_DEFUN([KDE_MISC_TESTS],
+[
+   AC_LANG(C)
+   dnl Checks for libraries.
+   AC_CHECK_LIB(util, main, [LIBUTIL="-lutil"]) dnl for *BSD 
+   AC_SUBST(LIBUTIL)
+   AC_CHECK_LIB(compat, main, [LIBCOMPAT="-lcompat"]) dnl for *BSD
+   AC_SUBST(LIBCOMPAT)
+   kde_have_crypt=
+   AC_CHECK_LIB(crypt, crypt, [LIBCRYPT="-lcrypt"; kde_have_crypt=yes],
+      AC_CHECK_LIB(c, crypt, [kde_have_crypt=yes], [
+        AC_MSG_WARN([you have no crypt in either libcrypt or libc.
+You should install libcrypt from another source or configure with PAM
+support])
+	kde_have_crypt=no
+      ]))
+   AC_SUBST(LIBCRYPT)
+   if test $kde_have_crypt = yes; then
+      AC_DEFINE_UNQUOTED(HAVE_CRYPT, 1, [Defines if your system has the crypt function])
+   fi
+   AC_CHECK_SOCKLEN_T
+   AC_LANG(C)
+   AC_CHECK_LIB(dnet, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"])
+   if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      AC_CHECK_LIB(dnet_stub, dnet_ntoa,
+        [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"])
+   fi
+   AC_CHECK_FUNC(inet_ntoa)
+   if test $ac_cv_func_inet_ntoa = no; then
+     AC_CHECK_LIB(nsl, inet_ntoa, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl")
+   fi
+   AC_CHECK_FUNC(connect)
+   if test $ac_cv_func_connect = no; then
+      AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", ,
+        $X_EXTRA_LIBS)
+   fi
+
+   AC_CHECK_FUNC(remove)
+   if test $ac_cv_func_remove = no; then
+      AC_CHECK_LIB(posix, remove, X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix")
+   fi
+
+   # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+   AC_CHECK_FUNC(shmat, ,
+     AC_CHECK_LIB(ipc, shmat, X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"))
+   
+   # darwin needs this to initialize the environment
+   AC_CHECK_HEADERS(crt_externs.h)
+   AC_CHECK_FUNC(_NSGetEnviron, [AC_DEFINE(HAVE_NSGETENVIRON, 1, [Define if your system needs _NSGetEnviron to set up the environment])])
+ 
+   # more headers that need to be explicitly included on darwin
+   AC_CHECK_HEADERS(sys/types.h stdint.h)
+
+   # darwin requires a poll emulation library
+   AC_CHECK_LIB(poll, poll, LIB_POLL="-lpoll")
+
+   # CoreAudio framework
+   AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [
+     AC_DEFINE(HAVE_COREAUDIO, 1, [Define if you have the CoreAudio API])
+     FRAMEWORK_COREAUDIO="-framework CoreAudio"
+   ])
+
+   AC_CHECK_RES_INIT
+   AC_SUBST(LIB_POLL)
+   AC_SUBST(FRAMEWORK_COREAUDIO)
+   LIBSOCKET="$X_EXTRA_LIBS"
+   AC_SUBST(LIBSOCKET)
+   AC_SUBST(X_EXTRA_LIBS)
+   AC_CHECK_LIB(ucb, killpg, [LIBUCB="-lucb"]) dnl for Solaris2.4
+   AC_SUBST(LIBUCB)
+
+   case $host in  dnl this *is* LynxOS specific
+   *-*-lynxos* )
+        AC_MSG_CHECKING([LynxOS header file wrappers])
+        [CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"]
+        AC_MSG_RESULT(disabled)
+        AC_CHECK_LIB(bsd, gethostbyname, [LIBSOCKET="-lbsd"]) dnl for LynxOS
+         ;;
+    esac
+
+   KDE_CHECK_TYPES
+   KDE_CHECK_LIBDL
+
+AH_VERBATIM(_AIX_STRINGS_H_BZERO,
+[
+/*
+ * AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
+ * that defines bzero.
+ */
+
+#if defined(_AIX)
+#include <strings.h>
+#endif
+])
+
+AC_CHECK_FUNCS([vsnprintf snprintf])
+
+AH_VERBATIM(_TRU64,[
+/*
+ * On HP-UX, the declaration of vsnprintf() is needed every time !
+ */
+
+#if !defined(HAVE_VSNPRINTF) || defined(hpux)
+#if __STDC__
+#include <stdarg.h>
+#include <stdlib.h>
+#else
+#include <varargs.h>
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
+#ifdef __cplusplus
+extern "C"
+#endif
+int snprintf(char *str, size_t n, char const *fmt, ...);
+#endif
+])
+
+])
+
+dnl ------------------------------------------------------------------------
+dnl Find the header files and libraries for X-Windows. Extended the
+dnl macro AC_PATH_X
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([K_PATH_X],
+[
+AC_REQUIRE([KDE_MISC_TESTS])dnl - may not have kde
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+AC_ARG_ENABLE(
+  embedded,
+  [  --enable-embedded       link to Qt-embedded, don't use X],
+  kde_use_qt_emb=$enableval,
+  kde_use_qt_emb=no
+)
+
+AC_ARG_ENABLE(
+  qtopia,
+  [  --enable-qtopia         link to Qt-embedded, link to the Qtopia Environment],
+  kde_use_qt_emb_palm=$enableval,
+  kde_use_qt_emb_palm=no
+)
+
+if test "$kde_use_qt_emb" = "no"; then
+
+AC_MSG_CHECKING(for X)
+AC_LANG_PUSH(C)
+AC_CACHE_VAL(kde_cv_have_x,
+[# One or both of the vars are not set, and there is no cached value.
+if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then
+   kde_x_includes=NO
+else
+   kde_x_includes=$x_includes
+fi
+if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then
+   kde_x_libraries=NO
+else
+   kde_x_libraries=$x_libraries
+fi
+
+# below we use the standard autoconf calls
+ac_x_libraries=$kde_x_libraries
+ac_x_includes=$kde_x_includes
+
+KDE_PATH_X_DIRECT
+dnl AC_PATH_X_XMKMF picks /usr/lib as the path for the X libraries.
+dnl Unfortunately, if compiling with the N32 ABI, this is not the correct
+dnl location. The correct location is /usr/lib32 or an undefined value
+dnl (the linker is smart enough to pick the correct default library).
+dnl Things work just fine if you use just AC_PATH_X_DIRECT.
+dnl Solaris has a similar problem. AC_PATH_X_XMKMF forces x_includes to
+dnl /usr/openwin/include, which doesn't work. /usr/include does work, so
+dnl x_includes should be left alone.
+case "$host" in
+mips-sgi-irix6*)
+  ;;
+*-*-solaris*)
+  ;;
+*)
+  _AC_PATH_X_XMKMF
+  if test -z "$ac_x_includes"; then
+    ac_x_includes="."
+  fi
+  if test -z "$ac_x_libraries"; then
+    ac_x_libraries="/usr/lib${kdelibsuff}"
+  fi
+esac
+#from now on we use our own again
+
+# when the user already gave --x-includes, we ignore
+# what the standard autoconf macros told us.
+if test "$kde_x_includes" = NO; then
+  kde_x_includes=$ac_x_includes
+fi
+
+# for --x-libraries too
+if test "$kde_x_libraries" = NO; then
+  kde_x_libraries=$ac_x_libraries
+fi
+
+if test "$kde_x_includes" = NO; then
+  AC_MSG_ERROR([Can't find X includes. Please check your installation and add the correct paths!])
+fi
+
+if test "$kde_x_libraries" = NO; then
+  AC_MSG_ERROR([Can't find X libraries. Please check your installation and add the correct paths!])
+fi
+
+# Record where we found X for the cache.
+kde_cv_have_x="have_x=yes \
+         kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries"
+])dnl
+
+eval "$kde_cv_have_x"
+
+if test "$have_x" != yes; then
+  AC_MSG_RESULT($have_x)
+  no_x=yes
+else
+  AC_MSG_RESULT([libraries $kde_x_libraries, headers $kde_x_includes])
+fi
+
+if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then
+  X_INCLUDES=""
+  x_includes="."; dnl better than nothing :-
+ else
+  x_includes=$kde_x_includes
+  X_INCLUDES="-I$x_includes"
+fi
+
+if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE; then
+  X_LDFLAGS=""
+  x_libraries="/usr/lib"; dnl better than nothing :-
+ else
+  x_libraries=$kde_x_libraries
+  X_LDFLAGS="-L$x_libraries"
+fi
+all_includes="$X_INCLUDES"
+all_libraries="$X_LDFLAGS"
+
+AC_SUBST(X_INCLUDES)
+AC_SUBST(X_LDFLAGS)
+AC_SUBST(x_libraries)
+AC_SUBST(x_includes)
+
+# Check for libraries that X11R6 Xt/Xaw programs need.
+ac_save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS $X_LDFLAGS"
+# SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+# check for ICE first), but we must link in the order -lSM -lICE or
+# we get undefined symbols.  So assume we have SM if we have ICE.
+# These have to be linked with before -lX11, unlike the other
+# libraries we check for below, so use a different variable.
+#  --interran at uluru.Stanford.EDU, kb at cs.umb.edu.
+AC_CHECK_LIB(ICE, IceConnectionNumber,
+  [LIBSM="-lSM -lICE"], , $X_EXTRA_LIBS)
+AC_SUBST(LIBSM)
+LDFLAGS="$ac_save_LDFLAGS"
+
+AC_SUBST(X_PRE_LIBS)
+
+LIB_X11='-lX11 $(LIBSOCKET)'
+AC_SUBST(LIB_X11)
+
+AC_MSG_CHECKING(for libXext)
+AC_CACHE_VAL(kde_cv_have_libXext,
+[
+kde_ldflags_safe="$LDFLAGS"
+kde_libs_safe="$LIBS"
+
+LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS"
+LIBS="-lXext -lX11 $LIBSOCKET"
+
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <stdio.h>
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+#endif
+]], 
+[[printf("hello Xext\n");]])],
+kde_cv_have_libXext=yes,
+kde_cv_have_libXext=no
+   )
+
+LDFLAGS=$kde_ldflags_safe
+LIBS=$kde_libs_safe
+ ])
+
+AC_MSG_RESULT($kde_cv_have_libXext)
+
+if test "$kde_cv_have_libXext" = "no"; then
+  AC_MSG_ERROR([We need a working libXext to proceed. Since configure
+can't find it itself, we stop here assuming that make wouldn't find
+them either.])
+fi
+
+AC_MSG_CHECKING(for Xinerama)
+
+ AC_ARG_WITH(xinerama,
+  [  --with-xinerama         enable support for Xinerama ],
+  [
+    no_xinerama=no
+  ], [
+    no_xinerama=yes
+  ]
+)
+
+kde_save_LDFLAGS="$LDFLAGS"
+kde_save_CFLAGS="$CFLAGS"
+kde_save_LIBS="$LIBS"
+LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS"
+CFLAGS="$CFLAGS -I$x_includes"
+LIBS="-lXinerama -lXext"
+
+if test "x$no_xinerama" = "xno"; then
+
+  AC_CACHE_VAL(ac_cv_have_xinerama,
+  [
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+        #include <X11/Xlib.h>
+  			#include <X11/extensions/Xinerama.h>]],
+				[[XineramaIsActive(NULL);]])],
+		  [ac_cv_have_xinerama="yes"],
+		  [ac_cv_have_xinerama="no"])
+  ])
+else
+  ac_cv_have_xinerama=no;
+fi
+
+AC_MSG_RESULT($ac_cv_have_xinerama)
+
+LIBXINERAMA=""
+
+if test "$ac_cv_have_xinerama" = "yes"; then
+  AC_DEFINE(HAVE_XINERAMA, 1, [Define if you want Xinerama support])
+  LIBXINERAMA="-lXinerama"
+fi
+
+AC_SUBST(LIBXINERAMA)
+
+LDFLAGS="$kde_save_LDFLAGS"
+CFLAGS="$kde_save_CFLAGS"
+LIBS="$kde_save_LIBS"
+
+LIB_XEXT="-lXext"
+QTE_NORTTI=""
+
+else
+  dnl We're using QT Embedded
+  CXXFLAGS=-DQWS
+  CXXFLAGS="$CXXFLAGS -fno-rtti"
+  QTE_NORTTI="-fno-rtti -DQWS"
+  X_PRE_LIBS=""
+  LIB_X11=""
+  LIB_XEXT=""
+  LIBSM=""
+  X_INCLUDES=""
+  X_LDFLAGS=""
+  x_includes=""
+  x_libraries=""
+  AC_SUBST(X_PRE_LIBS)
+  AC_SUBST(LIB_X11)
+  AC_SUBST(LIBSM)
+  AC_SUBST(X_INCLUDES)
+  AC_SUBST(X_LDFLAGS)
+  AC_SUBST(x_includes)
+  AC_SUBST(x_libraries)
+fi
+AC_SUBST(QTE_NORTTI)
+AC_SUBST(LIB_XEXT)
+
+
+AC_LANG_POP([C])
+
+])
+
+AC_DEFUN([KDE_PRINT_QT_PROGRAM],
+[
+cat > conftest.$ac_ext <<EOF
+#include "confdefs.h"
+#include <qglobal.h>
+#include <qapplication.h>
+#include <qevent.h>
+#include <qstring.h>
+/* #include <qstyle.h> */
+
+int main() {
+  QString::fromLatin1("Elvis is alive");
+  return 0;
+}
+EOF
+])
+
+AC_DEFUN([KDE_CHECK_UIC_PLUGINS],
+[
+AC_REQUIRE([AC_PATH_QT_MOC_UIC])
+
+if test x$ac_uic_supports_libpath = xyes; then
+
+AC_MSG_CHECKING([if UIC has KDE plugins available])
+AC_CACHE_VAL(kde_cv_uic_plugins,
+[
+cat > actest.ui << EOF
+<!DOCTYPE UI><UI version="3.0" stdsetdef="1">
+<class>NewConnectionDialog</class>
+<widget class="QDialog">
+   <widget class="KLineEdit">
+        <property name="name">
+           <cstring>testInput</cstring>
+        </property>
+   </widget>
+</widget>
+</UI>
+EOF
+       
+
+
+kde_cv_uic_plugins=no
+kde_line="$UIC_PATH -L $kde_widgetdir"
+if test x$ac_uic_supports_nounload = xyes; then
+   kde_line="$kde_line -nounload"
+fi
+kde_line="$kde_line -impl actest.h actest.ui > actest.cpp"
+if AC_TRY_EVAL(kde_line); then
+	if test -f actest.cpp && grep klineedit actest.cpp > /dev/null; then
+		kde_cv_uic_plugins=yes
+	fi
+fi
+rm -f actest.ui actest.cpp
+])
+
+if test "$kde_cv_uic_plugins" = yes; then
+	AC_MSG_RESULT([yes])
+else
+	AC_MSG_ERROR([not found - you need to install kdelibs first.])
+fi
+fi
+])
+
+AC_DEFUN([KDE_CHECK_FINAL],
+[
+  AC_ARG_ENABLE(final, [  --enable-final          build size optimized apps (experimental - needs lots of memory)],
+	kde_use_final=$enableval, kde_use_final=no)
+
+  KDE_COMPILER_REPO
+  if test "x$kde_use_final" = "xyes"; then
+      KDE_USE_FINAL_TRUE=""
+      KDE_USE_FINAL_FALSE="#"
+   else
+      KDE_USE_FINAL_TRUE="#"
+      KDE_USE_FINAL_FALSE=""
+  fi
+  AC_SUBST(KDE_USE_FINAL_TRUE)
+  AC_SUBST(KDE_USE_FINAL_FALSE)
+
+  AC_ARG_ENABLE(closure, [  --disable-closure       don't delay template instantiation],
+  	kde_use_closure=$enableval, kde_use_closure=yes)
+
+  if test "x$kde_use_closure" = "xyes"; then
+       KDE_USE_CLOSURE_TRUE=""
+       KDE_USE_CLOSURE_FALSE="#"
+#       CXXFLAGS="$CXXFLAGS $REPO"
+  else
+       KDE_USE_CLOSURE_TRUE="#"
+       KDE_USE_CLOSURE_FALSE=""
+  fi
+  AC_SUBST(KDE_USE_CLOSURE_TRUE)
+  AC_SUBST(KDE_USE_CLOSURE_FALSE)
+])
+
+
+dnl ------------------------------------------------------------------------
+dnl Now, the same with KDE
+dnl $(KDE_LDFLAGS) will be the kdeliblocation (if needed)
+dnl and $(kde_includes) will be the kdehdrlocation (if needed)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_BASE_PATH_KDE],
+[
+KDE_USE_QT
+KDE_CHECK_LIB64
+
+AC_MSG_CHECKING([for KDE])
+
+if test "${prefix}" != NONE; then
+  kde_includes=${prefix}/include
+  ac_kde_includes=$prefix/include
+
+  if test "${exec_prefix}" != NONE; then
+     kde_libraries=${libdir}
+     ac_kde_libraries=$libdir
+     if test "$ac_kde_libraries" = '${exec_prefix}/lib'${kdelibsuff}; then
+	ac_kde_libraries=$exec_prefix/lib${kdelibsuff}
+     fi
+  else
+     kde_libraries=${prefix}/lib${kdelibsuff}
+     ac_kde_libraries=$prefix/lib${kdelibsuff}
+  fi
+else
+  ac_kde_includes=
+  ac_kde_libraries=
+  kde_libraries=""
+  kde_includes=""
+fi
+
+AC_CACHE_VAL(ac_cv_have_kde,
+[#try to guess kde locations
+
+if test "$kde_qtver" = 1; then
+  kde_check_header="ksock.h"
+  kde_check_lib="libkdecore.la"
+else
+  kde_check_header="ksharedptr.h"
+  kde_check_lib="libkio.la"
+fi
+
+if test -z "$1"; then
+
+kde_incdirs="/usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde3/include /opt/kde/include $x_includes $qt_includes"
+test -n "$KDEDIR" && kde_incdirs="$KDEDIR/include $KDEDIR/include/kde $KDEDIR $kde_incdirs"
+kde_incdirs="$ac_kde_includes $kde_incdirs"
+AC_FIND_FILE($kde_check_header, $kde_incdirs, kde_incdir)
+ac_kde_includes="$kde_incdir"
+
+if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then
+ AC_MSG_ERROR([
+In the prefix you've chosen there are no KDE headers installed. This will fail.
+Check this please and use another prefix (or use --without-kde)!])
+fi
+
+kde_libdirs="/usr/lib/kde/lib${kdelibsuff} /usr/local/kde/lib${kdelibsuff} /usr/kde/lib${kdelibsuff} /usr/lib${kdelibsuff}/kde /usr/lib${kdelibsuff}/kde3 /usr/lib${kdelibsuff} /usr/X11R6/lib${kdelibsuff} /usr/local/lib${kdelibsuff} /opt/kde3/lib${kdelibsuff} /opt/kde/lib${kdelibsuff} /usr/X11R6/kde/lib${kdelibsuff}"
+test -n "$KDEDIR" && kde_libdirs="$KDEDIR/lib${kdelibsuff} $KDEDIR $kde_libdirs"
+kde_libdirs="$ac_kde_libraries $libdir $kde_libdirs"
+AC_FIND_FILE($kde_check_lib, $kde_libdirs, kde_libdir)
+ac_kde_libraries="$kde_libdir"
+
+kde_widgetdir=NO
+dnl this might be somewhere else
+AC_FIND_FILE("kde3/plugins/designer/kdewidgets.la", $kde_libdirs, kde_widgetdir)
+
+if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then
+AC_MSG_ERROR([
+in the prefix, you've chosen, are no KDE libraries installed. This will fail.
+So, check this please and use another prefix!])
+fi
+
+if test -n "$kde_widgetdir" && test ! -r "$kde_widgetdir/kde3/plugins/designer/kdewidgets.la"; then
+AC_MSG_ERROR([
+I can't find the designer plugins. These are required and should have been installed
+by kdelibs])
+fi
+
+if test -n "$kde_widgetdir"; then
+    kde_widgetdir="$kde_widgetdir/kde3/plugins/designer"
+fi
+
+
+if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO || test "$kde_widgetdir" = NO; then
+  ac_cv_have_kde="have_kde=no"
+else
+  ac_cv_have_kde="have_kde=yes \
+    ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries"
+fi
+
+else dnl test -z $1
+
+  ac_cv_have_kde="have_kde=no"
+
+fi
+])dnl
+
+eval "$ac_cv_have_kde"
+
+if test $have_kde = "yes"; then
+  AC_DEFINE(TO_KDE, 1, [Define if you have KDE.])
+fi
+
+if test "$have_kde" != "yes"; then
+ if test "${prefix}" = NONE; then
+  ac_kde_prefix="$ac_default_prefix"
+ else
+  ac_kde_prefix="$prefix"
+ fi
+ if test "$exec_prefix" = NONE; then
+  ac_kde_exec_prefix="$ac_kde_prefix"
+  AC_MSG_RESULT([will be installed in $ac_kde_prefix])
+ else
+  ac_kde_exec_prefix="$exec_prefix"
+  AC_MSG_RESULT([will be installed in $ac_kde_prefix and $ac_kde_exec_prefix])
+ fi
+
+ kde_libraries="${libdir}"
+ kde_includes=${ac_kde_prefix}/include
+
+else
+  ac_cv_have_kde="have_kde=yes \
+    ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries"
+  AC_MSG_RESULT([libraries $ac_kde_libraries, headers $ac_kde_includes])
+
+  kde_libraries="$ac_kde_libraries"
+  kde_includes="$ac_kde_includes"
+fi
+AC_SUBST(kde_libraries)
+AC_SUBST(kde_includes)
+
+if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes"  || test "$kde_includes" = "/usr/include"; then
+ KDE_INCLUDES=""
+else
+ KDE_INCLUDES="-I$kde_includes"
+ all_includes="$KDE_INCLUDES $all_includes"
+fi
+ 
+KDE_LDFLAGS="-L$kde_libraries"
+if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then 
+ all_libraries="$all_libraries $KDE_LDFLAGS"
+fi
+
+AC_SUBST(KDE_LDFLAGS)
+AC_SUBST(KDE_INCLUDES)
+
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+all_libraries="$all_libraries $USER_LDFLAGS"
+all_includes="$all_includes $USER_INCLUDES"
+AC_SUBST(all_includes)
+AC_SUBST(all_libraries)
+
+dnl will re-run test in some cases
+dnl if test -z "$1"; then
+dnl KDE_CHECK_UIC_PLUGINS
+dnl fi
+
+ac_kde_libraries="$kde_libdir"
+
+AC_SUBST(AUTODIRS)
+
+
+])
+
+AC_DEFUN([KDE_CHECK_EXTRA_LIBS],
+[
+AC_MSG_CHECKING(for extra includes)
+AC_ARG_WITH(extra-includes, [  --with-extra-includes=DIR
+                          adds non standard include paths],
+  kde_use_extra_includes="$withval",
+  kde_use_extra_includes=NONE
+)
+kde_extra_includes=
+if test -n "$kde_use_extra_includes" && \
+   test "$kde_use_extra_includes" != "NONE"; then
+
+   ac_save_ifs=$IFS
+   IFS=':'
+   for dir in $kde_use_extra_includes; do
+     kde_extra_includes="$kde_extra_includes $dir"
+     USER_INCLUDES="$USER_INCLUDES -I$dir"
+   done
+   IFS=$ac_save_ifs
+   kde_use_extra_includes="added"
+else
+   kde_use_extra_includes="no"
+fi
+AC_SUBST(USER_INCLUDES)
+
+AC_MSG_RESULT($kde_use_extra_includes)
+
+kde_extra_libs=
+AC_MSG_CHECKING(for extra libs)
+AC_ARG_WITH(extra-libs, [  --with-extra-libs=DIR   adds non standard library paths],
+  kde_use_extra_libs=$withval,
+  kde_use_extra_libs=NONE
+)
+if test -n "$kde_use_extra_libs" && \
+   test "$kde_use_extra_libs" != "NONE"; then
+
+   ac_save_ifs=$IFS
+   IFS=':'
+   for dir in $kde_use_extra_libs; do
+     kde_extra_libs="$kde_extra_libs $dir"
+     KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir"
+     USER_LDFLAGS="$USER_LDFLAGS -L$dir"
+   done
+   IFS=$ac_save_ifs
+   kde_use_extra_libs="added"
+else
+   kde_use_extra_libs="no"
+fi
+
+AC_SUBST(USER_LDFLAGS)
+
+AC_MSG_RESULT($kde_use_extra_libs)
+
+])
+
+AC_DEFUN([KDE_CHECK_KDEQTADDON],
+[
+AC_MSG_CHECKING(for kde-qt-addon)
+AC_CACHE_VAL(kde_cv_have_kdeqtaddon,
+[
+ kde_ldflags_safe="$LDFLAGS"
+ kde_libs_safe="$LIBS"
+ kde_cxxflags_safe="$CXXFLAGS"
+
+ LIBS="-lkde-qt-addon $LIBQT $LIBS"
+ CXXFLAGS="$CXXFLAGS -I$prefix/include -I$prefix/include/kde $all_includes"
+ LDFLAGS="$LDFLAGS $all_libraries $USER_LDFLAGS"
+
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+   #include <qdom.h>
+ ]],
+ [[
+   QDomDocument doc;
+ ]])],
+  kde_cv_have_kdeqtaddon=yes,
+  kde_cv_have_kdeqtaddon=no
+ )
+
+ LDFLAGS=$kde_ldflags_safe
+ LIBS=$kde_libs_safe
+ CXXFLAGS=$kde_cxxflags_safe
+])
+
+AC_MSG_RESULT($kde_cv_have_kdeqtaddon)
+
+if test "$kde_cv_have_kdeqtaddon" = "no"; then
+  AC_MSG_ERROR([Can't find libkde-qt-addon. You need to install it first.
+It is a separate package (and CVS module) named kde-qt-addon.])
+fi
+])
+
+AC_DEFUN([KDE_CHECK_KIMGIO],
+[
+   AC_BASE_PATH_KDE
+   KDE_CHECK_EXTRA_LIBS
+   AC_FIND_TIFF
+   AC_FIND_JPEG
+   AC_FIND_PNG
+   KDE_CREATE_LIBS_ALIASES
+
+   if test "$1" = "existance"; then
+     AC_LANG_PUSH(C++)
+     kde_save_LIBS="$LIBS"
+     LIBS="$LIBS $all_libraries $LIBJPEG $LIBTIFF $LIBPNG $LIBQT -lm"
+     AC_CHECK_LIB(kimgio, kimgioRegister, [
+      LIBKIMGIO_EXISTS=yes],LIBKIMGIO_EXISTS=no)
+     LIBS="$kde_save_LIBS"
+     AC_LANG_POP([C++])
+   else
+     LIBKIMGIO_EXISTS=yes
+   fi
+
+   if test "$LIBKIMGIO_EXISTS" = "yes"; then
+     LIB_KIMGIO='-lkimgio'
+   else
+     LIB_KIMGIO=''
+   fi
+   AC_SUBST(LIB_KIMGIO)
+])
+
+AC_DEFUN([KDE_CREATE_LIBS_ALIASES],
+[
+if test $kde_qtver = 3; then
+   AC_SUBST(LIB_KDECORE, "-lkdecore")
+   AC_SUBST(LIB_KDEUI, "-lkdeui")
+   AC_SUBST(LIB_KIO, "-lkio")
+   AC_SUBST(LIB_SMB, "-lsmb")
+   AC_SUBST(LIB_KAB, "-lkab")
+   AC_SUBST(LIB_KABC, "-lkabc")
+   AC_SUBST(LIB_KHTML, "-lkhtml")
+   AC_SUBST(LIB_KSPELL, "-lkspell")
+   AC_SUBST(LIB_KPARTS, "-lkparts")
+   AC_SUBST(LIB_KDEPRINT, "-lkdeprint")
+   AC_SUBST(LIB_DCOP, "-lDCOP")
+# these are for backward compatibility
+   AC_SUBST(LIB_KSYCOCA, "-lkio")
+   AC_SUBST(LIB_KFILE, "-lkio")
+elif test $kde_qtver = 2; then
+   AC_SUBST(LIB_KDECORE, "-lkdecore")
+   AC_SUBST(LIB_KDEUI, "-lkdeui")
+   AC_SUBST(LIB_KIO, "-lkio")
+   AC_SUBST(LIB_KSYCOCA, "-lksycoca")
+   AC_SUBST(LIB_SMB, "-lsmb")
+   AC_SUBST(LIB_KFILE, "-lkfile")
+   AC_SUBST(LIB_KAB, "-lkab")
+   AC_SUBST(LIB_KHTML, "-lkhtml")
+   AC_SUBST(LIB_KSPELL, "-lkspell")
+   AC_SUBST(LIB_KPARTS, "-lkparts")
+   AC_SUBST(LIB_KDEPRINT, "-lkdeprint")
+   AC_SUBST(LIB_DCOP, "-lDCOP")
+else
+   AC_SUBST(LIB_KDECORE, "")
+   AC_SUBST(LIB_KDEUI, "")
+   AC_SUBST(LIB_KIO, "")
+   AC_SUBST(LIB_SMB, "")
+   AC_SUBST(LIB_KAB, "")
+   AC_SUBST(LIB_KABC, "")
+   AC_SUBST(LIB_KHTML, "")
+   AC_SUBST(LIB_KSPELL, "")
+   AC_SUBST(LIB_KPARTS, "")
+   AC_SUBST(LIB_KDEPRINT, "")
+   AC_SUBST(LIB_DCOP, "")
+fi
+])
+
+AC_DEFUN([AC_PATH_KDE],
+[
+  KDE_MISC_TESTS
+  K_PATH_X
+  AC_BASE_PATH_KDE
+  AC_ARG_ENABLE(path-check, [  --disable-path-check    don't try to find out, where to install],
+  [
+  if test "$enableval" = "no";
+    then ac_use_path_checking="default"
+    else ac_use_path_checking=""
+  fi
+  ],
+  [
+  if test "$kde_qtver" = 1;
+    then ac_use_path_checking=""
+    else ac_use_path_checking="default"
+  fi
+  ]
+  )
+
+  AC_CREATE_KFSSTND($ac_use_path_checking)
+
+  AC_SUBST_KFSSTND
+])
+
+dnl KDE_CHECK_FUNC_EXT(<func>, [headers], [sample-use], [C prototype], [autoheader define], [call if found])
+AC_DEFUN([KDE_CHECK_FUNC_EXT],
+[
+AC_MSG_CHECKING(for $1)
+AC_CACHE_VAL(kde_cv_func_$1,
+[
+AC_LANG_PUSH(C++)
+save_CXXFLAGS="$CXXFLAGS"
+kde_safe_LIBS="$LIBS"
+LIBS="$LIBS $X_EXTRA_LIBS"
+if test "$GXX" = "yes"; then
+  CXXFLAGS="$CXXFLAGS -pedantic-errors"
+fi
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+$2
+]],
+[[
+$3
+]])],
+kde_cv_func_$1=yes,
+kde_cv_func_$1=no)
+CXXFLAGS="$save_CXXFLAGS"
+LIBS=$kde_safe_LIBS
+AC_LANG_POP([C++])
+])
+
+AC_MSG_RESULT($kde_cv_func_$1)
+
+AC_MSG_CHECKING([if $1 needs custom prototype])
+AC_CACHE_VAL(kde_cv_proto_$1,
+[
+if test "x$kde_cv_func_$1" = xyes; then
+  kde_cv_proto_$1=no
+else
+  case "$1" in
+	setenv|unsetenv|usleep|random|srandom|seteuid|mkstemps|mkstemp|revoke|vsnprintf|strlcpy|strlcat)
+		kde_cv_proto_$1="yes - in libkdefakes"
+		;;
+	*)
+		kde_cv_proto_$1=unknown
+		;;
+  esac
+fi
+
+if test "x$kde_cv_proto_$1" = xunknown; then
+
+AC_LANG_PUSH(C++)
+  kde_safe_libs=$LIBS
+  LIBS="$LIBS $X_EXTRA_LIBS"
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+  $2
+  extern "C" $4;
+]],
+[[
+$3
+]])],
+[ kde_cv_func_$1=yes
+  kde_cv_proto_$1=yes ],
+  [kde_cv_proto_$1="$1 unavailable"]
+)
+LIBS=$kde_safe_libs
+AC_LANG_POP([C++])
+fi
+])
+AC_MSG_RESULT($kde_cv_proto_$1)
+
+if test "x$kde_cv_func_$1" = xyes; then
+  AC_DEFINE(HAVE_$5, 1, [Define if you have $1])
+  $6
+fi
+if test "x$kde_cv_proto_$1" = xno; then
+  AC_DEFINE(HAVE_$5_PROTO, 1,
+  [Define if you have the $1 prototype])
+fi
+
+AH_VERBATIM([_HAVE_$5_PROTO],
+[
+#if !defined(HAVE_$5_PROTO)
+#ifdef __cplusplus
+extern "C"
+#endif
+$4;
+#endif
+])
+])
+
+AC_DEFUN([AC_CHECK_SETENV],
+[
+	KDE_CHECK_FUNC_EXT(setenv, [
+#include <stdlib.h>
+], 
+		[setenv("VAR", "VALUE", 1);],
+	        [int setenv (const char *, const char *, int)],
+		[SETENV])
+])
+
+AC_DEFUN([AC_CHECK_UNSETENV],
+[
+	KDE_CHECK_FUNC_EXT(unsetenv, [
+#include <stdlib.h>
+], 
+		[unsetenv("VAR");],
+	        [void unsetenv (const char *)],
+		[UNSETENV])
+])
+
+AC_DEFUN([AC_CHECK_GETDOMAINNAME],
+[
+	KDE_CHECK_FUNC_EXT(getdomainname, [
+#include <stdlib.h>
+#include <unistd.h>
+], 
+		[
+char buffer[200];
+getdomainname(buffer, 200);
+], 	
+	        [int getdomainname (char *, unsigned int)],
+		[GETDOMAINNAME])
+])
+
+AC_DEFUN([AC_CHECK_GETHOSTNAME],
+[
+	KDE_CHECK_FUNC_EXT(gethostname, [
+#include <stdlib.h>
+#include <unistd.h>
+], 
+		[
+char buffer[200];
+gethostname(buffer, 200);
+], 	
+	        [int gethostname (char *, unsigned int)],
+		[GETHOSTNAME])
+])
+
+AC_DEFUN([AC_CHECK_USLEEP],
+[
+	KDE_CHECK_FUNC_EXT(usleep, [
+#include <unistd.h>
+], 
+		[
+usleep(200);
+], 	
+	        [int usleep (unsigned int)],
+		[USLEEP])
+])
+
+
+AC_DEFUN([AC_CHECK_RANDOM],
+[
+	KDE_CHECK_FUNC_EXT(random, [
+#include <stdlib.h>
+], 
+		[
+random();
+], 	
+	        [long int random(void)],
+		[RANDOM])
+
+	KDE_CHECK_FUNC_EXT(srandom, [
+#include <stdlib.h>
+], 
+		[
+srandom(27);
+], 	
+	        [void srandom(unsigned int)],
+		[SRANDOM])
+
+])
+
+AC_DEFUN([AC_CHECK_INITGROUPS],
+[
+	KDE_CHECK_FUNC_EXT(initgroups, [
+#include <sys/types.h>
+#include <unistd.h>
+#include <grp.h>
+],
+	[
+char buffer[200];
+initgroups(buffer, 27);
+],
+	[int initgroups(const char *, gid_t)],
+	[INITGROUPS])
+])
+
+AC_DEFUN([AC_CHECK_MKSTEMP],
+[
+	KDE_CHECK_FUNC_EXT(mkstemp, [
+#include <stdlib.h>
+],
+	[
+mkstemp("/tmp/aaaXXXXXX");
+],
+	[int mkstemp(char *)],
+	[MKSTEMP])
+])
+
+AC_DEFUN([AC_CHECK_MKSTEMPS],
+[
+	KDE_CHECK_FUNC_EXT(mkstemps, [
+#include <stdlib.h>
+#include <unistd.h>
+],
+	[
+mkstemps("/tmp/aaaXXXXXX", 6);
+],
+	[int mkstemps(char *, int)],
+	[MKSTEMPS])
+])
+
+AC_DEFUN([AC_CHECK_RES_INIT],
+[
+  AC_MSG_CHECKING([if res_init needs -lresolv])
+  kde_libs_safe="$LIBS"
+  LIBS="$LIBS $X_EXTRA_LIBS -lresolv"
+	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+    ]],
+    [[res_init(); ]])],
+    [
+      LIBRESOLV="-lresolv"
+      AC_MSG_RESULT(yes)
+      AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function])
+    ],
+    [ AC_MSG_RESULT(no) ]
+  )
+  LIBS="$kde_libs_safe"
+  AC_SUBST(LIBRESOLV)
+
+  AC_MSG_CHECKING([if res_init is available])
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+    ]],
+    [[
+      res_init();
+    ]])],
+    [
+      AC_MSG_RESULT(yes)
+      AC_DEFINE(HAVE_RES_INIT, 1, [Define if you have the res_init function])
+    ],
+    [ AC_MSG_RESULT(no) ]
+  )
+])
+
+AC_DEFUN([AC_CHECK_STRLCPY],
+[
+	KDE_CHECK_FUNC_EXT(strlcpy, [
+#include <string.h>
+],
+[ char buf[20];
+  strlcpy(buf, "KDE function test", sizeof(buf));
+],
+ 	[unsigned long strlcpy(char*, const char*, unsigned long)],
+	[STRLCPY])
+])
+
+AC_DEFUN([AC_CHECK_STRLCAT],
+[
+	KDE_CHECK_FUNC_EXT(strlcat, [
+#include <string.h>
+],
+[ char buf[20];
+  buf[0]='\0';
+  strlcat(buf, "KDE function test", sizeof(buf));
+],
+ 	[unsigned long strlcat(char*, const char*, unsigned long)],
+	[STRLCAT])
+])
+
+AC_DEFUN([AC_FIND_GIF],
+   [AC_MSG_CHECKING([for giflib])
+AC_CACHE_VAL(ac_cv_lib_gif,
+[ac_save_LIBS="$LIBS"
+if test "x$kde_use_qt_emb" != "xyes"; then
+LIBS="$all_libraries -lgif -lX11 $LIBSOCKET"
+else
+LIBS="$all_libraries -lgif"
+fi
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[			
+#ifdef __cplusplus
+extern "C" {
+#endif
+int GifLastError(void);
+#ifdef __cplusplus
+}
+#endif
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+]],
+            [[return GifLastError();]])],
+            eval "ac_cv_lib_gif=yes",
+            eval "ac_cv_lib_gif=no")
+LIBS="$ac_save_LIBS"
+])dnl
+if eval "test \"`echo $ac_cv_lib_gif`\" = yes"; then
+  AC_MSG_RESULT(yes)
+  AC_DEFINE_UNQUOTED(HAVE_LIBGIF, 1, [Define if you have libgif])
+else
+  AC_MSG_ERROR(You need giflib30. Please install the kdesupport package)
+fi
+])
+
+AC_DEFUN([KDE_FIND_JPEG_HELPER],
+[
+AC_MSG_CHECKING([for libjpeg$2])
+AC_CACHE_VAL(ac_cv_lib_jpeg_$1,
+[
+AC_LANG(C)
+ac_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -ljpeg$2 -lm"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[			
+/* Override any gcc2 internal prototype to avoid an error.  */
+struct jpeg_decompress_struct;
+typedef struct jpeg_decompress_struct * j_decompress_ptr;
+typedef int size_t;
+#ifdef __cplusplus
+extern "C" {
+#endif
+    void jpeg_CreateDecompress(j_decompress_ptr cinfo,
+                                    int version, size_t structsize);
+#ifdef __cplusplus
+}
+#endif
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+]],
+            [[jpeg_CreateDecompress(0L, 0, 0);]])],
+            eval "ac_cv_lib_jpeg_$1=-ljpeg$2",
+            eval "ac_cv_lib_jpeg_$1=no")
+LIBS="$ac_save_LIBS"
+CFLAGS="$ac_save_CFLAGS"
+])
+
+if eval "test ! \"`echo $ac_cv_lib_jpeg_$1`\" = no"; then
+  LIBJPEG="$ac_cv_lib_jpeg_$1"
+  AC_MSG_RESULT($ac_cv_lib_jpeg_$1)
+else
+  AC_MSG_RESULT(no)
+  $3
+fi
+
+])
+
+AC_DEFUN([AC_FIND_JPEG],
+[
+dnl first look for libraries
+KDE_FIND_JPEG_HELPER(6b, 6b,
+   KDE_FIND_JPEG_HELPER(normal, [],
+    [
+       LIBJPEG=
+    ]
+   )
+)
+
+dnl then search the headers (can't use simply AC_TRY_xxx, as jpeglib.h
+dnl requires system dependent includes loaded before it)
+jpeg_incdirs="$includedir /usr/include /usr/local/include $kde_extra_includes"
+AC_FIND_FILE(jpeglib.h, $jpeg_incdirs, jpeg_incdir)
+test "x$jpeg_incdir" = xNO && jpeg_incdir=
+
+dnl if headers _and_ libraries are missing, this is no error, and we
+dnl continue with a warning (the user will get no jpeg support in khtml)
+dnl if only one is missing, it means a configuration error, but we still
+dnl only warn
+if test -n "$jpeg_incdir" && test -n "$LIBJPEG" ; then
+  AC_DEFINE_UNQUOTED(HAVE_LIBJPEG, 1, [Define if you have libjpeg])
+else
+  if test -n "$jpeg_incdir" || test -n "$LIBJPEG" ; then
+    AC_MSG_WARN([
+There is an installation error in jpeg support. You seem to have only one
+of either the headers _or_ the libraries installed. You may need to either
+provide correct --with-extra-... options, or the development package of
+libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/
+Disabling JPEG support.
+])
+  else
+    AC_MSG_WARN([libjpeg not found. disable JPEG support.])
+  fi
+  jpeg_incdir=
+  LIBJPEG=
+fi
+
+AC_SUBST(LIBJPEG)
+AH_VERBATIM(_AC_CHECK_JPEG,
+[/*
+ * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
+ * headers and I'm too lazy to write a configure test as long as only
+ * unixware is related
+ */
+#ifdef _UNIXWARE
+#define HAVE_BOOLEAN
+#endif
+])
+])
+
+AC_DEFUN([KDE_CHECK_QT_JPEG],
+[
+AC_MSG_CHECKING([if Qt needs $LIBJPEG])
+AC_CACHE_VAL(kde_cv_qt_jpeg,
+[
+AC_LANG_PUSH(C++)
+ac_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS $LIBQT"
+LIBS=`echo $LIBS | sed "s/$LIBJPEG//"`
+ac_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[			
+#include <qapplication.h>
+]],
+            [[
+            int argc;
+            char** argv;
+            QApplication app(argc, argv);]])],
+            eval "kde_cv_qt_jpeg=no",
+            eval "kde_cv_qt_jpeg=yes")
+LIBS="$ac_save_LIBS"
+CXXFLAGS="$ac_save_CXXFLAGS"
+AC_LANG_POP([C++])
+])
+
+if eval "test ! \"`echo $kde_cv_qt_jpeg`\" = no"; then
+  AC_MSG_RESULT(yes)
+  LIBJPEG_QT='$(LIBJPEG)'
+else
+  AC_MSG_RESULT(no)
+  LIBJPEG_QT=
+fi
+
+])
+
+AC_DEFUN([AC_FIND_ZLIB],
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_MSG_CHECKING([for libz])
+AC_CACHE_VAL(ac_cv_lib_z,
+[
+AC_LANG([C])
+kde_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET"
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+
+#include<zlib.h>
+]], [[return (zlibVersion() == ZLIB_VERSION); ]])],[eval "ac_cv_lib_z='-lz'"],[eval "ac_cv_lib_z=no"])
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+])
+if test ! "$ac_cv_lib_z" = no; then
+  AC_DEFINE_UNQUOTED(HAVE_LIBZ, 1, [Define if you have libz])
+  LIBZ="$ac_cv_lib_z"
+  AC_SUBST(LIBZ)
+  AC_MSG_RESULT($ac_cv_lib_z)
+else
+  AC_MSG_ERROR(not found. Check your installation and look into config.log)
+  LIBZ=""
+  AC_SUBST(LIBZ)
+fi
+])
+
+AC_DEFUN([KDE_TRY_TIFFLIB],
+[
+AC_MSG_CHECKING([for libtiff $1])
+
+AC_CACHE_VAL(kde_cv_libtiff_$1,
+[
+AC_LANG_PUSH(C++)
+kde_save_LIBS="$LIBS"
+if test "x$kde_use_qt_emb" != "xyes"; then
+LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lX11 $LIBSOCKET -lm"
+else
+LIBS="$all_libraries $USER_LDFLAGS -l$1 $LIBJPEG $LIBZ -lm"
+fi
+kde_save_CXXFLAGS="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $all_includes $USER_INCLUDES"
+
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include<tiffio.h>
+]],
+    [[return (TIFFOpen( "", "r") == 0); ]])],
+[
+    kde_cv_libtiff_$1="-l$1 $LIBJPEG $LIBZ"
+], [
+    kde_cv_libtiff_$1=no
+])
+
+LIBS="$kde_save_LIBS"
+CXXFLAGS="$kde_save_CXXFLAGS"
+AC_LANG_POP([C++])
+])
+
+if test "$kde_cv_libtiff_$1" = "no"; then
+    AC_MSG_RESULT(no)
+    LIBTIFF=""
+    $3
+else
+    LIBTIFF="$kde_cv_libtiff_$1"
+    AC_MSG_RESULT(yes)
+    AC_DEFINE_UNQUOTED(HAVE_LIBTIFF, 1, [Define if you have libtiff])
+    $2
+fi
+
+])
+
+AC_DEFUN([AC_FIND_TIFF],
+[
+AC_REQUIRE([K_PATH_X])
+AC_REQUIRE([AC_FIND_ZLIB])
+AC_REQUIRE([AC_FIND_JPEG])
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+KDE_TRY_TIFFLIB(tiff, [],
+   KDE_TRY_TIFFLIB(tiff34))
+
+AC_SUBST(LIBTIFF)
+])
+
+
+AC_DEFUN([AC_FIND_PNG],
+[
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_REQUIRE([AC_FIND_ZLIB])
+AC_MSG_CHECKING([for libpng])
+AC_CACHE_VAL(ac_cv_lib_png,
+[
+kde_save_LIBS="$LIBS"
+if test "x$kde_use_qt_emb" != "xyes"; then
+LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm -lX11 $LIBSOCKET"
+else
+LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm"
+fi
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+AC_LANG(C)
+AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+    #include<png.h>
+    ]],
+    [[
+    png_structp png_ptr = png_create_read_struct(  /* image ptr */
+		PNG_LIBPNG_VER_STRING, 0, 0, 0 );
+    return( png_ptr != 0 );
+    ]])],
+    eval "ac_cv_lib_png='-lpng $LIBZ -lm'",
+    eval "ac_cv_lib_png=no"
+)
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+])dnl
+if eval "test ! \"`echo $ac_cv_lib_png`\" = no"; then
+  AC_DEFINE_UNQUOTED(HAVE_LIBPNG, 1, [Define if you have libpng])
+  LIBPNG="$ac_cv_lib_png"
+  AC_SUBST(LIBPNG)
+  AC_MSG_RESULT($ac_cv_lib_png)
+else
+  AC_MSG_RESULT(no)
+  LIBPNG=""
+  AC_SUBST(LIBPNG)
+fi
+])
+
+AC_DEFUN([AC_CHECK_BOOL],
+[
+  AC_DEFINE_UNQUOTED(HAVE_BOOL, 1, [You _must_ have bool])
+])
+
+AC_DEFUN([AC_CHECK_GNU_EXTENSIONS],
+[
+AC_MSG_CHECKING(if you need GNU extensions)
+AC_CACHE_VAL(ac_cv_gnu_extensions,
+[
+cat > conftest.c << EOF
+#include <features.h>
+
+#ifdef __GNU_LIBRARY__
+yes
+#endif
+EOF
+
+if (eval "$ac_cpp conftest.c") 2>&5 |
+  egrep "yes" >/dev/null 2>&1; then
+  rm -rf conftest*
+  ac_cv_gnu_extensions=yes
+else
+  ac_cv_gnu_extensions=no
+fi
+])
+
+AC_MSG_RESULT($ac_cv_gnu_extensions)
+if test "$ac_cv_gnu_extensions" = "yes"; then
+  AC_DEFINE_UNQUOTED(_GNU_SOURCE, 1, [Define if you need to use the GNU extensions])
+fi
+])
+
+AC_DEFUN([KDE_CHECK_COMPILER_FLAG],
+[
+AC_MSG_CHECKING(whether $CXX supports -$1)
+kde_cache=`echo $1 | sed 'y% .=/+-%____p_%'`
+AC_CACHE_VAL(kde_cv_prog_cxx_$kde_cache,
+[
+  AC_LANG_PUSH(C++)
+  save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -$1"
+
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+]],[[ return 0; ]])], [eval "kde_cv_prog_cxx_$kde_cache=yes"], [])
+  CXXFLAGS="$save_CXXFLAGS"
+  AC_LANG_POP([C++])
+])
+if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then
+ AC_MSG_RESULT(yes)
+ :
+ $2
+else
+ AC_MSG_RESULT(no)
+ :
+ $3
+fi
+])
+
+dnl AC_REMOVE_FORBIDDEN removes forbidden arguments from variables
+dnl use: AC_REMOVE_FORBIDDEN(CC, [-forbid -bad-option whatever])
+dnl it's all white-space separated
+AC_DEFUN([AC_REMOVE_FORBIDDEN],
+[ __val=$$1
+  __forbid=" $2 "
+  if test -n "$__val"; then
+    __new=""
+    ac_save_IFS=$IFS
+    IFS=" 	"
+    for i in $__val; do
+      case "$__forbid" in
+        *" $i "*) AC_MSG_WARN([found forbidden $i in $1, removing it]) ;;
+	*) # Careful to not add spaces, where there were none, because otherwise
+	   # libtool gets confused, if we change e.g. CXX
+	   if test -z "$__new" ; then __new=$i ; else __new="$__new $i" ; fi ;;
+      esac
+    done
+    IFS=$ac_save_IFS
+    $1=$__new
+  fi
+])
+
+dnl AC_VALIDIFY_CXXFLAGS checks for forbidden flags the user may have given
+AC_DEFUN([AC_VALIDIFY_CXXFLAGS],
+[dnl
+if test "x$kde_use_qt_emb" != "xyes"; then
+ AC_REMOVE_FORBIDDEN(CXX, [-fno-rtti -rpath])
+ AC_REMOVE_FORBIDDEN(CXXFLAGS, [-fno-rtti -rpath])
+else
+ AC_REMOVE_FORBIDDEN(CXX, [-rpath])
+ AC_REMOVE_FORBIDDEN(CXXFLAGS, [-rpath])
+fi
+])
+
+AC_DEFUN([AC_CHECK_COMPILERS],
+[
+  AC_ARG_ENABLE(debug,[  --enable-debug[=ARG]    enables debug symbols (yes|no|full) [default=no]],
+  [
+    case $enableval in
+      yes)
+        kde_use_debug_code="yes"
+        kde_use_debug_define=no
+        ;;
+      full)
+        kde_use_debug_code="full"
+        kde_use_debug_define=no
+        ;;
+      *)
+        kde_use_debug_code="no"
+        kde_use_debug_define=yes
+        ;;
+    esac
+  ], 
+    [kde_use_debug_code="no"
+      kde_use_debug_define=no
+  ])
+
+  dnl Just for configure --help
+  AC_ARG_ENABLE(dummyoption,[  --disable-debug         disables debug output and debug symbols [default=no]],[],[])
+
+  AC_ARG_ENABLE(strict,[  --enable-strict         compiles with strict compiler options (may not work!)],
+   [
+    if test $enableval = "no"; then
+         kde_use_strict_options="no"
+       else
+         kde_use_strict_options="yes"
+    fi
+   ], [kde_use_strict_options="no"])
+
+  AC_ARG_ENABLE(warnings,[  --disable-warnings      disables compilation with -Wall and similiar],
+   [
+    if test $enableval = "no"; then
+         kde_use_warnings="no"
+       else
+         kde_use_warnings="yes"
+    fi
+   ], [kde_use_warnings="yes"])
+
+  dnl enable warnings for debug build
+  if test "$kde_use_debug_code" != "no"; then
+    kde_use_warnings=yes
+  fi
+
+  AC_ARG_ENABLE(profile,[  --enable-profile        creates profiling infos [default=no]],
+    [kde_use_profiling=$enableval],
+    [kde_use_profiling="no"]
+  )
+
+  AC_ARG_ENABLE(gcov,[  --enable-gcov           enables gcov test coverage support [default=no]],
+    [kde_use_gcov=$enableval],
+    [kde_use_gcov=no]
+  )
+
+  dnl this prevents stupid AC_PROG_CC to add "-g" to the default CFLAGS
+  CFLAGS=" $CFLAGS"
+
+  AC_PROG_CC 
+
+  AC_PROG_CPP
+
+  if test "$GCC" = "yes"; then
+    if test "$kde_use_debug_code" != "no"; then
+      if test $kde_use_debug_code = "full" || test $kde_use_gcov = "yes"; then
+        CFLAGS="-g3 $CFLAGS"
+      else
+        CFLAGS="-g -O2 $CFLAGS"
+      fi
+    else
+      CFLAGS="-O2 $CFLAGS"
+    fi
+  fi
+
+  if test "$kde_use_debug_define" = "yes"; then
+    CFLAGS="-DNDEBUG $CFLAGS"
+  fi
+
+
+  case "$host" in
+  *-*-sysv4.2uw*) CFLAGS="-D_UNIXWARE $CFLAGS";;
+  *-*-sysv5uw7*) CFLAGS="-D_UNIXWARE7 $CFLAGS";;
+  esac
+
+  if test -z "$LDFLAGS" && test "$kde_use_debug_code" = "no" && test "$GCC" = "yes"; then
+     LDFLAGS=""
+  fi
+
+  CXXFLAGS=" $CXXFLAGS"
+
+  AC_PROG_CXX
+
+  if test "$GXX" = "yes" || test "$CXX" = "KCC"; then
+    if test "$kde_use_debug_code" != "no"; then
+      if test "$CXX" = "KCC"; then
+        CXXFLAGS="+K0 -Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings $CXXFLAGS"
+      else
+        if test "$kde_use_debug_code" = "full"; then
+          CXXFLAGS="-g3 $CXXFLAGS"
+        else
+          CXXFLAGS="-g -O2 $CXXFLAGS"
+        fi
+      fi
+      KDE_CHECK_COMPILER_FLAG(fno-builtin,[CXXFLAGS="-fno-builtin $CXXFLAGS"])
+
+      dnl convenience compiler flags
+      KDE_CHECK_COMPILER_FLAG(Woverloaded-virtual, [WOVERLOADED_VIRTUAL="-Woverloaded-virtual"], [WOVERLOADED_VRITUAL=""])
+      AC_SUBST(WOVERLOADED_VIRTUAL)
+    else
+      if test "$CXX" = "KCC"; then
+        CXXFLAGS="+K3 $CXXFLAGS"
+      else
+        CXXFLAGS="-O2 $CXXFLAGS"
+      fi  
+    fi
+  fi
+
+  if test "$kde_use_debug_define" = "yes"; then
+    CXXFLAGS="-DNDEBUG -DNO_DEBUG $CXXFLAGS"
+  fi  
+
+  if test "$kde_use_profiling" = "yes"; then
+    KDE_CHECK_COMPILER_FLAG(pg,
+    [
+      CFLAGS="-pg $CFLAGS"
+      CXXFLAGS="-pg $CXXFLAGS"
+    ])
+  fi
+
+  if test "$kde_use_gcov" = "yes"; then
+    KDE_CHECK_COMPILER_FLAG(fprofile-arcs,
+    [
+      CFLAGS="-fprofile-arcs -ftest-coverage $CFLAGS"
+      CXXFLAGS="-fprofile-arcs -ftest-coverage $CXXFLAGS"
+    ])
+  fi
+
+  if test "$kde_use_warnings" = "yes"; then
+      if test "$GCC" = "yes"; then
+        case $host in
+          *-*-linux-gnu)	
+            CFLAGS="-ansi -W -Wall -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -D_XOPEN_SOURCE=500 -D_BSD_SOURCE $CFLAGS"
+            CXXFLAGS="-ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion $CXXFLAGS"
+          ;;
+        esac
+        CXXFLAGS="-Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings $CXXFLAGS"
+        KDE_CHECK_COMPILER_FLAG(Wundef,[CXXFLAGS="-Wundef $CXXFLAGS"])
+        KDE_CHECK_COMPILER_FLAG(Wno-long-long,[CXXFLAGS="-Wno-long-long $CXXFLAGS"])
+        KDE_CHECK_COMPILER_FLAG(Wnon-virtual-dtor,[CXXFLAGS="-Wnon-virtual-dtor $CXXFLAGS"])
+     fi
+  fi
+
+  if test "$GCC" = "yes" && test "$kde_use_strict_options" = "yes"; then
+    CXXFLAGS="-Wcast-qual -Wshadow -Wcast-align $CXXFLAGS"
+  fi
+    
+  if test "$GXX" = "yes"; then
+    dnl mrj, don't do that. tora source uses exceptions.
+    dnl KDE_CHECK_COMPILER_FLAG(fno-exceptions,[CXXFLAGS="$CXXFLAGS -fno-exceptions"])
+    KDE_CHECK_COMPILER_FLAG(fno-check-new, [CXXFLAGS="$CXXFLAGS -fno-check-new"])
+    KDE_CHECK_COMPILER_FLAG(fexceptions, [USE_EXCEPTIONS="-fexceptions"], USE_EXCEPTIONS=	)
+  fi
+  if test "$CXX" = "KCC"; then
+    dnl unfortunately we currently cannot disable exception support in KCC
+    dnl because doing so is binary incompatible and Qt by default links with exceptions :-(
+    dnl KDE_CHECK_COMPILER_FLAG(-no_exceptions,[CXXFLAGS="$CXXFLAGS --no_exceptions"])
+    dnl KDE_CHECK_COMPILER_FLAG(-exceptions, [USE_EXCEPTIONS="--exceptions"], USE_EXCEPTIONS=	)
+
+    AC_ARG_ENABLE(pch,[  --enable-pch            enables precompiled header support (currently only KCC) [default=no]],
+    [
+      kde_use_pch=$enableval
+    ],[kde_use_pch=no])
+ 
+    if test "$kde_use_pch" = "yes"; then
+      dnl TODO: support --pch-dir!
+      KDE_CHECK_COMPILER_FLAG(-pch,[CXXFLAGS="$CXXFLAGS --pch"])
+      dnl the below works (but the dir must exist), but it's
+      dnl useless for a whole package.
+      dnl The are precompiled headers for each source file, so when compiling
+      dnl from scratch, it doesn't make a difference, and they take up
+      dnl around ~5Mb _per_ sourcefile.
+      dnl KDE_CHECK_COMPILER_FLAG(-pch_dir /tmp,
+      dnl   [CXXFLAGS="$CXXFLAGS --pch_dir `pwd`/pcheaders"])
+    fi
+    dnl this flag controls inlining. by default KCC inlines in optimisation mode
+    dnl all implementations that are defined inside the class {} declaration. 
+    dnl because of templates-compatibility with broken gcc compilers, this
+    dnl can cause excessive inlining. This flag limits it to a sane level
+    KDE_CHECK_COMPILER_FLAG(-inline_keyword_space_time=6,[CXXFLAGS="$CXXFLAGS --inline_keyword_space_time=6"])
+    KDE_CHECK_COMPILER_FLAG(-inline_auto_space_time=2,[CXXFLAGS="$CXXFLAGS --inline_auto_space_time=2"])
+    KDE_CHECK_COMPILER_FLAG(-inline_implicit_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_implicit_space_time=2.0"])
+    KDE_CHECK_COMPILER_FLAG(-inline_generated_space_time=2.0,[CXXFLAGS="$CXXFLAGS --inline_generated_space_time=2.0"])
+    dnl Some source files are shared between multiple executables
+    dnl (or libraries) and some of those need template instantiations.
+    dnl In that case KCC needs to compile those sources with
+    dnl --one_instantiation_per_object.  To make it easy for us we compile
+    dnl _all_ objects with that flag (--one_per is a shorthand).
+    KDE_CHECK_COMPILER_FLAG(-one_per, [CXXFLAGS="$CXXFLAGS --one_per"])
+  fi
+  AC_SUBST(USE_EXCEPTIONS)
+  dnl obsolete macro - provided to keep things going
+  USE_RTTI=
+  AC_SUBST(USE_RTTI)
+
+  case "$host" in
+      *-*-irix*)  test "$GXX" = yes && CXXFLAGS="-D_LANGUAGE_C_PLUS_PLUS -D__LANGUAGE_C_PLUS_PLUS $CXXFLAGS" ;;
+      *-*-sysv4.2uw*) CXXFLAGS="-D_UNIXWARE $CXXFLAGS";;
+      *-*-sysv5uw7*) CXXFLAGS="-D_UNIXWARE7 $CXXFLAGS";;
+      *-*-solaris*) 
+        if test "$GXX" = yes; then
+          libstdcpp=`$CXX -print-file-name=libstdc++.so`
+          if test ! -f $libstdcpp; then
+             AC_MSG_ERROR([You've compiled gcc without --enable-shared. This doesn't work with KDE. Please recompile gcc with --enable-shared to receive a libstdc++.so])
+          fi
+        fi
+        ;;
+  esac
+
+  AC_VALIDIFY_CXXFLAGS
+
+  AC_PROG_CXXCPP
+
+  if test "$GCC" = yes; then
+     NOOPT_CXXFLAGS=-O0
+     NOOPT_CFLAGS=-O0
+  fi
+
+  AC_SUBST(NOOPT_CXXFLAGS)
+  AC_SUBST(NOOPT_CFLAGS)
+
+  KDE_CHECK_FINAL
+
+  ifdef([AM_DEPENDENCIES], AC_REQUIRE([KDE_ADD_DEPENDENCIES]), [])
+])
+
+AC_DEFUN([KDE_ADD_DEPENDENCIES],
+[
+   [A]M_DEPENDENCIES(CC)
+   [A]M_DEPENDENCIES(CXX)
+])
+
+AC_DEFUN([KDE_CHECK_LIB64],
+[
+    kdelibsuff=none
+    AC_ARG_ENABLE(libsuffix,
+    AS_HELP_STRING(--enable-libsuffix,/lib directory suffix (64,32,none)),
+            kdelibsuff=$enableval)
+    if test "$kdelibsuff" = "none"; then
+        if test -d /lib64 ; then
+            kdelibsuff=64
+        else
+            kdelibsuff=
+        fi
+    fi
+    if test -z "$kdelibsuff"; then
+        AC_MSG_RESULT([not using lib directory suffix])
+        AC_DEFINE(KDELIBSUFF, [""], Suffix for lib directories)
+    else
+        if test "$libdir" = '${exec_prefix}/lib'; then
+            libdir="$libdir${kdelibsuff}"
+            AC_SUBST([libdir], ["$libdir"])  dnl ugly hack for lib64 platforms
+        fi
+        AC_DEFINE_UNQUOTED(KDELIBSUFF, ["\"${kdelibsuff}\""], Suffix for lib directories)
+        AC_MSG_RESULT([using lib directory suffix $kdelibsuff])
+    fi
+])
+
+AC_DEFUN([KDE_CHECK_TYPES],
+[  AC_CHECK_SIZEOF(int, 4)dnl
+  AC_CHECK_SIZEOF(long, 4)dnl
+  AC_CHECK_SIZEOF(char *, 4)dnl
+  AC_CHECK_SIZEOF(char, 1)dnl
+])dnl
+
+AC_DEFUN([KDE_DO_IT_ALL],
+[
+AC_CANONICAL_SYSTEM
+AC_ARG_PROGRAM
+AM_INIT_AUTOMAKE($1, $2)
+AM_DISABLE_LIBRARIES
+AC_PREFIX_DEFAULT(${KDEDIR:-/usr/local/kde})
+AC_CHECK_COMPILERS
+AM_KDE_WITH_NLS
+AC_PATH_KDE
+])
+
+dnl Check for the type of the third argument of getsockname
+AC_DEFUN([AC_CHECK_SOCKLEN_T], [
+  AC_MSG_CHECKING(for socklen_t)
+  AC_CACHE_VAL(ac_cv_socklen_t, [
+    AC_LANG_PUSH(C++)
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+
+#include <sys/types.h>
+#include <sys/socket.h>
+      ]],[[socklen_t a=0;getsockname(0,(struct sockaddr*)0, &a); ]])],
+      ac_cv_socklen_t=socklen_t,
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+
+#include <sys/types.h>
+#include <sys/socket.h>
+        ]],[[int a=0;getsockname(0,(struct sockaddr*)0, &a); ]])],
+        ac_cv_socklen_t=int,
+        ac_cv_socklen_t=size_t
+      )
+    )
+    AC_LANG_POP([C++])
+  ])
+
+  AC_MSG_RESULT($ac_cv_socklen_t)
+  if test "$ac_cv_socklen_t" != "socklen_t"; then
+    AC_DEFINE_UNQUOTED(socklen_t, $ac_cv_socklen_t,
+        [Define the real type of socklen_t])
+  fi
+  AC_DEFINE_UNQUOTED(ksize_t, socklen_t, [Compatibility define])
+
+])
+
+dnl This is a merge of some macros out of the gettext aclocal.m4
+dnl since we don't need anything, I took the things we need
+dnl the copyright for them is:
+dnl >
+dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
+dnl This Makefile.in is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl This program is distributed in the hope that it will be useful,
+dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+dnl PARTICULAR PURPOSE.
+dnl >
+dnl for this file it is relicensed under LGPL
+
+AC_DEFUN([AM_KDE_WITH_NLS],
+  [
+    dnl If we use NLS figure out what method
+
+    AM_PATH_PROG_WITH_TEST_KDE(MSGFMT, msgfmt,
+        [test -n "`$ac_dir/$ac_word --version 2>&1 | grep 'GNU gettext'`"], msgfmt)
+    AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
+
+     if test -z "`$GMSGFMT --version 2>&1 | grep 'GNU gettext'`"; then
+        AC_MSG_RESULT([found msgfmt program is not GNU msgfmt; ignore it])
+        GMSGFMT=":"
+      fi
+      MSGFMT=$GMSGFMT
+      AC_SUBST(GMSGFMT)
+      AC_SUBST(MSGFMT)
+
+      AM_PATH_PROG_WITH_TEST_KDE(XGETTEXT, xgettext,
+	[test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
+
+      dnl Test whether we really found GNU xgettext.
+      if test "$XGETTEXT" != ":"; then
+	dnl If it is no GNU xgettext we define it as : so that the
+	dnl Makefiles still can work.
+	if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
+	  : ;
+	else
+	  AC_MSG_RESULT(
+	    [found xgettext programs is not GNU xgettext; ignore it])
+	  XGETTEXT=":"
+	fi
+      fi
+     AC_SUBST(XGETTEXT)
+
+  ])
+
+# Search path for a program which passes the given test.
+# Ulrich Drepper <drepper at cygnus.com>, 1996.
+
+
+# Stephan Kulow: I appended a _KDE against name conflicts
+
+dnl AM_PATH_PROG_WITH_TEST_KDE(VARIABLE, PROG-TO-CHECK-FOR,
+dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+
+AC_DEFUN([AM_PATH_PROG_WITH_TEST_KDE],
+[# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL(ac_cv_path_$1,
+[case "[$]$1" in
+  /*)
+  ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+  ;;
+  *)
+  IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}:"
+  for ac_dir in ifelse([$5], , $PATH, [$5]); do
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      if [$3]; then
+	ac_cv_path_$1="$ac_dir/$ac_word"
+	break
+      fi
+    fi
+  done
+  IFS="$ac_save_ifs"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+  ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test -n "[$]$1"; then
+  AC_MSG_RESULT([$]$1)
+else
+  AC_MSG_RESULT(no)
+fi
+AC_SUBST($1)dnl
+])
+
+
+# Check whether LC_MESSAGES is available in <locale.h>.
+# Ulrich Drepper <drepper at cygnus.com>, 1995.
+
+AC_DEFUN([AM_LC_MESSAGES],
+  [if test $ac_cv_header_locale_h = yes; then
+    AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
+      [
+       AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+        #include <locale.h>]], [[return LC_MESSAGES]])],
+       am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
+    if test $am_cv_val_LC_MESSAGES = yes; then
+      AC_DEFINE(HAVE_LC_MESSAGES, 1, [Define if your locale.h file contains LC_MESSAGES])
+    fi
+  fi])
+
+dnl From Jim Meyering.
+dnl FIXME: migrate into libit.
+
+AC_DEFUN([AM_FUNC_OBSTACK],
+[AC_CACHE_CHECK([for obstacks], am_cv_func_obstack,
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include "obstack.h"]],
+	      [[struct obstack *mem;obstack_free(mem,(char *) 0)]])],
+	      am_cv_func_obstack=yes,
+	      am_cv_func_obstack=no)])
+ if test $am_cv_func_obstack = yes; then
+   AC_DEFINE(HAVE_OBSTACK)
+ else
+   LIBOBJS="$LIBOBJS obstack.o"
+ fi
+])
+
+dnl From Jim Meyering.  Use this if you use the GNU error.[ch].
+dnl FIXME: Migrate into libit
+
+AC_DEFUN([AM_FUNC_ERROR_AT_LINE],
+[AC_CACHE_CHECK([for error_at_line], am_cv_lib_error_at_line,
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[error_at_line(0, 0, "", 0, "");]])],
+              am_cv_lib_error_at_line=yes,
+	      am_cv_lib_error_at_line=no)])
+ if test $am_cv_lib_error_at_line = no; then
+   LIBOBJS="$LIBOBJS error.o"
+ fi
+ AC_SUBST(LIBOBJS)dnl
+])
+
+# Macro to add for using GNU gettext.
+# Ulrich Drepper <drepper at cygnus.com>, 1995.
+
+# Stephan Kulow: I put a KDE in it to avoid name conflicts
+
+AC_DEFUN([AM_KDE_GNU_GETTEXT],
+  [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+   AC_REQUIRE([AC_PROG_RANLIB])dnl
+   AC_REQUIRE([AC_HEADER_STDC])dnl
+   AC_REQUIRE([AC_TYPE_OFF_T])dnl
+   AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+   AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+   AC_REQUIRE([AC_FUNC_MMAP])dnl
+   AC_REQUIRE([AM_KDE_WITH_NLS])dnl
+   AC_CHECK_HEADERS([limits.h locale.h nl_types.h string.h values.h alloca.h])
+   AC_CHECK_FUNCS([getcwd munmap putenv setlocale strchr strcasecmp \
+__argz_count __argz_stringify __argz_next])
+
+   AC_MSG_CHECKING(for stpcpy)
+   AC_CACHE_VAL(kde_cv_func_stpcpy,
+   [
+   kde_safe_cxxflags=$CXXFLAGS
+   CXXFLAGS="-Wmissing-prototypes -Werror"
+   AC_LANG_PUSH(C++)
+   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+   #include <string.h>
+   ]],
+   [[
+   char buffer[200];
+   stpcpy(buffer, buffer);
+   ]])],
+   kde_cv_func_stpcpy=yes,
+   kde_cv_func_stpcpy=no)
+   AC_LANG_POP([C++])
+   CXXFLAGS=$kde_safe_cxxflags
+   ])
+   AC_MSG_RESULT($kde_cv_func_stpcpy)
+   if eval "test \"`echo $kde_cv_func_stpcpy`\" = yes"; then
+     AC_DEFINE(HAVE_STPCPY, 1, [Define if you have stpcpy])
+   fi
+
+   AM_LC_MESSAGES
+
+   if test "x$CATOBJEXT" != "x"; then
+     if test "x$ALL_LINGUAS" = "x"; then
+       LINGUAS=
+     else
+       AC_MSG_CHECKING(for catalogs to be installed)
+       NEW_LINGUAS=
+       for lang in ${LINGUAS=$ALL_LINGUAS}; do
+         case "$ALL_LINGUAS" in
+          *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
+         esac
+       done
+       LINGUAS=$NEW_LINGUAS
+       AC_MSG_RESULT($LINGUAS)
+     fi
+
+     dnl Construct list of names of catalog files to be constructed.
+     if test -n "$LINGUAS"; then
+       for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
+     fi
+   fi
+
+  ])
+
+AC_DEFUN([AC_HAVE_XPM],
+ [AC_REQUIRE_CPP()dnl
+  AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+ test -z "$XPM_LDFLAGS" && XPM_LDFLAGS=
+ test -z "$XPM_INCLUDE" && XPM_INCLUDE=
+
+ AC_ARG_WITH(xpm, [  --without-xpm           disable color pixmap XPM tests],
+	xpm_test=$withval, xpm_test="yes")
+ if test "x$xpm_test" = xno; then
+   ac_cv_have_xpm=no
+ else
+   AC_MSG_CHECKING(for XPM)
+   AC_CACHE_VAL(ac_cv_have_xpm,
+   [
+    AC_LANG(C)
+    ac_save_ldflags="$LDFLAGS"
+    ac_save_cflags="$CFLAGS"
+    if test "x$kde_use_qt_emb" != "xyes"; then
+      LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm -lX11 -lXext $LIBZ $LIBSOCKET"
+    else
+      LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS $LDFLAGS $XPM_LDFLAGS $all_libraries -lXpm $LIBZ $LIBSOCKET"
+    fi
+    CFLAGS="$CFLAGS $X_INCLUDES $USER_INCLUDES"
+    test -n "$XPM_INCLUDE" && CFLAGS="-I$XPM_INCLUDE $CFLAGS"
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <X11/xpm.h>]],[[]])],
+	ac_cv_have_xpm="yes",ac_cv_have_xpm="no")
+    LDFLAGS="$ac_save_ldflags"
+    CFLAGS="$ac_save_cflags"
+   ])dnl
+
+  if test "$ac_cv_have_xpm" = no; then
+    AC_MSG_RESULT(no)
+    XPM_LDFLAGS=""
+    XPMINC=""
+    $2
+  else
+    AC_DEFINE(HAVE_XPM, 1, [Define if you have XPM support])
+    if test "$XPM_LDFLAGS" = ""; then
+       XPMLIB='-lXpm $(LIB_X11)'
+    else
+       XPMLIB="-L$XPM_LDFLAGS -lXpm "'$(LIB_X11)'
+    fi
+    if test "$XPM_INCLUDE" = ""; then
+       XPMINC=""
+    else
+       XPMINC="-I$XPM_INCLUDE"
+    fi
+    AC_MSG_RESULT(yes)
+    $1
+  fi
+ fi
+ AC_SUBST(XPMINC)
+ AC_SUBST(XPMLIB)
+])
+
+AC_DEFUN([AC_HAVE_DPMS],
+ [AC_REQUIRE_CPP()dnl
+  AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+ test -z "$DPMS_LDFLAGS" && DPMS_LDFLAGS=
+ test -z "$DPMS_INCLUDE" && DPMS_INCLUDE=
+ DPMS_LIB=
+
+ AC_ARG_WITH(dpms, [  --without-dpms          disable DPMS power saving],
+	dpms_test=$withval, dpms_test="yes")
+ if test "x$dpms_test" = xno; then
+   ac_cv_have_dpms=no
+ else
+   AC_MSG_CHECKING(for DPMS)
+   dnl Note: ac_cv_have_dpms can be no, yes, or -lXdpms.
+   dnl 'yes' means DPMS_LIB="", '-lXdpms' means DPMS_LIB="-lXdpms".
+   AC_CACHE_VAL(ac_cv_have_dpms,
+   [
+    if test "x$kde_use_qt_emb" = "xyes"; then
+      AC_MSG_RESULT(no)
+      ac_cv_have_dpms="no"
+    else
+      AC_LANG(C)
+      ac_save_ldflags="$LDFLAGS"
+      ac_save_cflags="$CFLAGS"
+      ac_save_libs="$LIBS"
+      LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries -lX11 -lXext $LIBSOCKET"
+      CFLAGS="$CFLAGS $X_INCLUDES"
+      test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[											 
+	  #include <X11/Xproto.h>
+	  #include <X11/X.h>
+	  #include <X11/Xlib.h>
+	  #include <X11/extensions/dpms.h>
+	  int foo_test_dpms()
+	  { return DPMSSetTimeouts( 0, 0, 0, 0 ); }]],[[]])],
+	  ac_cv_have_dpms="yes", [
+              LDFLAGS="$ac_save_ldflags"
+              CFLAGS="$ac_save_cflags"
+              LDFLAGS="$LDFLAGS $DPMS_LDFLAGS $all_libraries -lX11 -lXext $LIBSOCKET"
+              LIBS="$LIBS -lXdpms"
+              CFLAGS="$CFLAGS $X_INCLUDES"
+              test -n "$DPMS_INCLUDE" && CFLAGS="-I$DPMS_INCLUDE $CFLAGS"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+	          #include <X11/Xproto.h>
+        	  #include <X11/X.h>
+        	  #include <X11/Xlib.h>
+        	  #include <X11/extensions/dpms.h>
+        	  int foo_test_dpms()
+        	  { return DPMSSetTimeouts( 0, 0, 0, 0 ); }]],[[]])],
+        	  [
+                  ac_cv_have_dpms="-lXdpms"
+                  ],ac_cv_have_dpms="no")
+              ])
+      LDFLAGS="$ac_save_ldflags"
+      CFLAGS="$ac_save_cflags"
+      LIBS="$ac_save_libs"
+    fi
+   ])dnl
+
+  if test "$ac_cv_have_dpms" = no; then
+    AC_MSG_RESULT(no)
+    DPMS_LDFLAGS=""
+    DPMSINC=""
+    $2
+  else
+    AC_DEFINE(HAVE_DPMS, 1, [Define if you have DPMS support])
+    if test "$ac_cv_have_dpms" = "-lXdpms"; then
+       DPMS_LIB="-lXdpms"
+    fi
+    if test "$DPMS_LDFLAGS" = ""; then
+       DPMSLIB="$DPMS_LIB "'$(LIB_X11)'
+    else
+       DPMSLIB="$DPMS_LDFLAGS $DPMS_LIB "'$(LIB_X11)'
+    fi
+    if test "$DPMS_INCLUDE" = ""; then
+       DPMSINC=""
+    else
+       DPMSINC="-I$DPMS_INCLUDE"
+    fi
+    AC_MSG_RESULT(yes)
+    $1
+  fi
+ fi
+ AC_SUBST(DPMSINC)
+ AC_SUBST(DPMSLIB)
+])
+
+AC_DEFUN([AC_HAVE_GL],
+ [AC_REQUIRE_CPP()dnl
+  AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+
+ test -z "$GL_LDFLAGS" && GL_LDFLAGS=
+ test -z "$GL_INCLUDE" && GL_INCLUDE=
+
+ AC_ARG_WITH(gl, [  --without-gl            disable 3D GL modes],
+	gl_test=$withval, gl_test="yes")
+ if test "x$kde_use_qt_emb" = "xyes"; then
+   # GL and Qt Embedded is a no-go for now.
+   ac_cv_have_gl=no
+ elif test "x$gl_test" = xno; then
+   ac_cv_have_gl=no
+ else
+   AC_MSG_CHECKING(for GL)
+   AC_CACHE_VAL(ac_cv_have_gl,
+   [
+    AC_LANG_PUSH(C++)
+    ac_save_ldflags="$LDFLAGS"
+    ac_save_cxxflags="$CXXFLAGS"
+    LDFLAGS="$LDFLAGS $GL_LDFLAGS $X_LDFLAGS $all_libraries -lMesaGL -lMesaGLU"
+    test "x$kde_use_qt_emb" != xyes && LDFLAGS="$LDFLAGS -lX11"
+    LDFLAGS="$LDFLAGS $LIB_XEXT -lm $LIBSOCKET"
+    CXXFLAGS="$CFLAGS $X_INCLUDES"
+    test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS"
+     AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <GL/gl.h>
+#include <GL/glu.h>
+]], [[]])],
+	ac_cv_have_gl="mesa", ac_cv_have_gl="no")
+    if test "x$ac_cv_have_gl" = "xno"; then
+      LDFLAGS="$ac_save_ldflags $X_LDFLAGS $GL_LDFLAGS $all_libraries -lGLU -lGL"
+      test "x$kde_use_qt_emb" != xyes && LDFLAGS="$LDFLAGS -lX11"
+      LDFLAGS="$LDFLAGS $LIB_XEXT -lm $LIBSOCKET"
+      CXXFLAGS="$ac_save_cflags $X_INCLUDES"
+      test -n "$GL_INCLUDE" && CFLAGS="-I$GL_INCLUDE $CFLAGS"
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <GL/gl.h>
+#include <GL/glu.h>
+]], [[]])],
+	  ac_cv_have_gl="yes", ac_cv_have_gl="no")
+    fi
+    AC_LANG_POP([C++])
+    LDFLAGS="$ac_save_ldflags"
+    CXXFLAGS="$ac_save_cxxflags"
+   ])dnl
+
+  if test "$ac_cv_have_gl" = "no"; then
+    AC_MSG_RESULT(no)
+    GL_LDFLAGS=""
+    GLINC=""
+    $2
+  else
+    AC_DEFINE(HAVE_GL, 1, [Defines if you have GL (Mesa, OpenGL, ...)])
+    if test "$GL_LDFLAGS" = ""; then
+       if test "$ac_cv_have_gl" = "mesa"; then
+          GLLIB='-lMesaGLU -lMesaGL $(LIB_X11)'
+       else
+          GLLIB='-lGLU -lGL $(LIB_X11)'
+       fi
+    else
+       if test "$ac_cv_have_gl" = "mesa"; then
+          GLLIB="$GL_LDFLAGS -lMesaGLU -lMesaGL "'$(LIB_X11)'
+       else
+          GLLIB="$GL_LDFLAGS -lGLU -lGL "'$(LIB_X11)'
+       fi
+    fi
+    if test "$GL_INCLUDE" = ""; then
+       GLINC=""
+    else
+       GLINC="-I$GL_INCLUDE"
+    fi
+    AC_MSG_RESULT($ac_cv_have_gl)
+    $1
+  fi
+ fi
+ AC_SUBST(GLINC)
+ AC_SUBST(GLLIB)
+])
+
+
+ dnl shadow password and PAM magic - maintained by ossi at kde.org
+
+AC_DEFUN([KDE_PAM], [
+  AC_REQUIRE([KDE_CHECK_LIBDL])
+
+  AC_ARG_WITH(pam,
+    [  --with-pam[=ARG]        enable support for PAM: ARG=[yes|no|service name]],
+    [ if test "x$withval" = "xyes"; then
+        use_pam=yes
+        pam_service=kde
+      elif test "x$withval" = "xno"; then
+        use_pam=no
+      else
+        use_pam=yes
+        pam_service=$withval
+      fi
+      ac_cv_path_pam="use_pam=$use_pam pam_service=$pam_service"
+    ], [
+      AC_CACHE_VAL(ac_cv_path_pam,
+        [ use_pam=no
+          AC_CHECK_LIB(pam, pam_start,
+            [ AC_CHECK_HEADER(security/pam_appl.h,
+                [ use_pam=yes
+                  pam_service=kde ]) 
+            ], , $LIBDL)
+          ac_cv_path_pam="use_pam=$use_pam pam_service=$pam_service"
+        ])
+    ])
+  eval "$ac_cv_path_pam"
+
+  AC_MSG_CHECKING(for PAM)
+  if test "x$use_pam" = xno; then
+    AC_MSG_RESULT(no)
+    PAMLIBS=""
+  else
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(HAVE_PAM, 1, [Defines if you have PAM (Pluggable Authentication Modules)])
+    PAMLIBS="$PAM_MISC_LIB -lpam $LIBDL"
+
+    dnl test whether struct pam_message is const (Linux) or not (Sun)
+    AC_MSG_CHECKING(for const pam_message)
+    AC_EGREP_HEADER([struct pam_message], security/pam_appl.h,
+      [ AC_EGREP_HEADER([const struct pam_message], security/pam_appl.h,
+                        [AC_MSG_RESULT([const: Linux-type PAM])],
+                        [AC_MSG_RESULT([nonconst: Sun-type PAM])
+                        AC_DEFINE(PAM_MESSAGE_NONCONST, 1, [Define if your PAM support takes non-const arguments (Solaris)])]
+                        )],
+      [AC_MSG_RESULT([not found - assume const, Linux-type PAM])])
+  fi
+
+  AC_SUBST(PAMLIBS)
+])
+
+dnl DEF_PAM_SERVICE(arg name, full name, define name)
+AC_DEFUN([DEF_PAM_SERVICE], [
+  AC_ARG_WITH($1-pam,
+    [  --with-$1-pam=[val]    override PAM service from --with-pam for $2],
+    [ if test "x$use_pam" = xyes; then
+        $3_PAM_SERVICE="$withval"
+      else
+        AC_MSG_ERROR([Cannot use use --with-$1-pam, as no PAM was detected.
+You may want to enforce it by using --with-pam.])
+      fi
+    ], 
+    [ if test "x$use_pam" = xyes; then
+        $3_PAM_SERVICE="$pam_service"
+      fi
+    ])
+    if test -n "$$3_PAM_SERVICE"; then
+      AC_MSG_RESULT([The PAM service used by $2 will be $$3_PAM_SERVICE])
+      AC_DEFINE_UNQUOTED($3_PAM_SERVICE, "$$3_PAM_SERVICE", [The PAM service to be used by $2])
+    fi
+    AC_SUBST($3_PAM_SERVICE)
+])
+
+AC_DEFUN([KDE_SHADOWPASSWD], [
+  AC_REQUIRE([KDE_PAM])
+
+  AC_CHECK_LIB(shadow, getspent,
+    [ LIBSHADOW="-lshadow"
+      ac_use_shadow=yes
+    ],
+    [ dnl for UnixWare
+      AC_CHECK_LIB(gen, getspent, 
+        [ LIBGEN="-lgen"
+          ac_use_shadow=yes
+        ], 
+        [ AC_CHECK_FUNC(getspent, 
+            [ ac_use_shadow=yes ],
+            [ ac_use_shadow=no ])
+	])
+    ])
+  AC_SUBST(LIBSHADOW)
+  AC_SUBST(LIBGEN)
+  
+  AC_MSG_CHECKING([for shadow passwords])
+
+  AC_ARG_WITH(shadow,
+    [  --with-shadow		  If you want shadow password support ],
+    [ if test "x$withval" != "xno"; then
+        use_shadow=yes
+      else
+        use_shadow=no
+      fi
+    ], [
+      use_shadow="$ac_use_shadow"
+    ])
+
+  if test "x$use_shadow" = xyes; then
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(HAVE_SHADOW, 1, [Define if you use shadow passwords])
+  else
+    AC_MSG_RESULT(no)
+    LIBSHADOW=
+    LIBGEN=
+  fi
+
+  dnl finally make the relevant binaries setuid root, if we have shadow passwds.
+  dnl this still applies, if we could use it indirectly through pam.
+  if test "x$use_shadow" = xyes || 
+     ( test "x$use_pam" = xyes && test "x$ac_use_shadow" = xyes ); then
+      case $host in
+      *-*-freebsd* | *-*-netbsd* | *-*-openbsd*)
+	SETUIDFLAGS="-m 4755 -o root";;
+      *)
+	SETUIDFLAGS="-m 4755";;
+      esac
+  fi
+  AC_SUBST(SETUIDFLAGS)
+
+])
+
+AC_DEFUN([KDE_PASSWDLIBS], [
+  AC_REQUIRE([KDE_MISC_TESTS]) dnl for LIBCRYPT
+  AC_REQUIRE([KDE_PAM])
+  AC_REQUIRE([KDE_SHADOWPASSWD])
+
+  if test "x$use_pam" = "xyes"; then 
+    PASSWDLIBS="$PAMLIBS"
+  else
+    PASSWDLIBS="$LIBCRYPT $LIBSHADOW $LIBGEN"
+  fi
+
+  dnl FreeBSD uses a shadow-like setup, where /etc/passwd holds the users, but
+  dnl /etc/master.passwd holds the actual passwords.  /etc/master.passwd requires
+  dnl root to read, so kcheckpass needs to be root (even when using pam, since pam
+  dnl may need to read /etc/master.passwd).
+  case $host in
+  *-*-freebsd*)
+    SETUIDFLAGS="-m 4755 -o root"
+    ;;
+  *)
+    ;;
+  esac
+
+  AC_SUBST(PASSWDLIBS)
+])
+
+AC_DEFUN([KDE_CHECK_LIBDL],
+[
+AC_CHECK_LIB(dl, dlopen, [
+LIBDL="-ldl"
+ac_cv_have_dlfcn=yes
+])
+
+AC_CHECK_LIB(dld, shl_unload, [
+LIBDL="-ldld"
+ac_cv_have_shload=yes
+])
+
+AC_SUBST(LIBDL)
+])
+
+AC_DEFUN([KDE_CHECK_DLOPEN],
+[
+KDE_CHECK_LIBDL
+AC_CHECK_HEADERS(dlfcn.h dl.h)
+if test "$ac_cv_header_dlfcn_h" = "no"; then
+  ac_cv_have_dlfcn=no
+fi
+
+if test "$ac_cv_header_dl_h" = "no"; then
+  ac_cv_have_shload=no
+fi
+
+dnl XXX why change enable_dlopen? its already set by autoconf's AC_ARG_ENABLE
+dnl (MM)
+AC_ARG_ENABLE(dlopen,
+[  --disable-dlopen        link statically [default=no]] ,
+enable_dlopen=$enableval,
+enable_dlopen=yes)
+
+# override the user's opinion, if we know it better ;)
+if test "$ac_cv_have_dlfcn" = "no" && test "$ac_cv_have_shload" = "no"; then
+  enable_dlopen=no
+fi
+
+if test "$ac_cv_have_dlfcn" = "yes"; then
+  AC_DEFINE_UNQUOTED(HAVE_DLFCN, 1, [Define if you have dlfcn])
+fi
+
+if test "$ac_cv_have_shload" = "yes"; then
+  AC_DEFINE_UNQUOTED(HAVE_SHLOAD, 1, [Define if you have shload])
+fi
+
+if test "$enable_dlopen" = no ; then
+  test -n "$1" && eval $1
+else
+  test -n "$2" && eval $2
+fi
+
+])
+
+AC_DEFUN([KDE_ADD_INCLUDES],
+[
+if test -z "$1"; then
+  test_include="Pix.h"
+else
+  test_include="$1"
+fi
+
+AC_MSG_CHECKING([for libg++ ($test_include)])
+
+AC_CACHE_VAL(kde_cv_libgpp_includes,
+[
+kde_cv_libgpp_includes=no
+
+   for ac_dir in               \
+                               \
+     /usr/include/g++          \
+     /usr/include              \
+     /usr/unsupported/include  \
+     /opt/include              \
+     $extra_include            \
+     ; \
+   do
+     if test -r "$ac_dir/$test_include"; then
+       kde_cv_libgpp_includes=$ac_dir
+       break
+     fi
+   done
+])
+
+AC_MSG_RESULT($kde_cv_libgpp_includes)
+if test "$kde_cv_libgpp_includes" != "no"; then
+  all_includes="-I$kde_cv_libgpp_includes $all_includes $USER_INCLUDES"
+fi
+])
+])
+
+
+AC_DEFUN([KDE_CHECK_MICO],
+[
+AC_REQUIRE([KDE_CHECK_LIBDL])
+AC_REQUIRE([KDE_MISC_TESTS])
+AC_MSG_CHECKING(for MICO)
+
+if test -z "$MICODIR"; then
+    kde_micodir=/usr/local
+ else
+    kde_micodir="$MICODIR"
+fi
+
+AC_ARG_WITH(micodir,
+  [  --with-micodir=micodir  where mico is installed ],
+  kde_micodir=$withval,
+  kde_micodir=$kde_micodir
+)
+
+AC_CACHE_VAL(kde_cv_mico_incdir,
+[
+  mico_incdirs="$kde_micodir/include /usr/include /usr/local/include /usr/local/include /opt/local/include $kde_extra_includes"
+AC_FIND_FILE(CORBA.h, $mico_incdirs, kde_cv_mico_incdir)
+
+])
+kde_micodir=`echo $kde_cv_mico_incdir | sed -e 's#/include##'`
+
+if test ! -r  $kde_micodir/include/CORBA.h; then
+  AC_MSG_ERROR([No CORBA.h found, specify another micodir])
+fi
+
+AC_MSG_RESULT($kde_micodir)
+
+MICO_INCLUDES=-I$kde_micodir/include
+AC_SUBST(MICO_INCLUDES)
+MICO_LDFLAGS=-L$kde_micodir/lib
+AC_SUBST(MICO_LDFLAGS)
+micodir=$kde_micodir
+AC_SUBST(micodir)
+
+AC_MSG_CHECKING([for MICO version])
+AC_CACHE_VAL(kde_cv_mico_version,
+[
+AC_LANG(C)
+cat >conftest.$ac_ext <<EOF
+#include <stdio.h>
+#include <mico/version.h>
+int main() {
+
+   printf("MICO_VERSION=%s\n",MICO_VERSION);
+   return (0);
+}
+EOF
+ac_compile='${CC-gcc} $CFLAGS $MICO_INCLUDES conftest.$ac_ext -o conftest'
+if AC_TRY_EVAL(ac_compile); then
+  if eval `./conftest 2>&5`; then
+    kde_cv_mico_version=$MICO_VERSION
+  else
+    AC_MSG_ERROR([your system is not able to execute a small application to
+    find MICO version! Check $kde_micodir/include/mico/version.h])
+  fi
+else
+  AC_MSG_ERROR([your system is not able to compile a small application to
+  find MICO version! Check $kde_micodir/include/mico/version.h])
+fi
+])
+
+dnl installed MICO version
+mico_v_maj=`echo $kde_cv_mico_version | sed -e 's/^\(.*\)\..*\..*$/\1/'`
+mico_v_mid=`echo $kde_cv_mico_version | sed -e 's/^.*\.\(.*\)\..*$/\1/'`
+mico_v_min=`echo $kde_cv_mico_version | sed -e 's/^.*\..*\.\(.*\)$/\1/'`
+
+if test "x$1" = "x"; then
+ req_version="2.3.0"
+else
+ req_version=$1
+fi
+
+dnl required MICO version
+req_v_maj=`echo $req_version | sed -e 's/^\(.*\)\..*\..*$/\1/'`
+req_v_mid=`echo $req_version | sed -e 's/^.*\.\(.*\)\..*$/\1/'`
+req_v_min=`echo $req_version | sed -e 's/^.*\..*\.\(.*\)$/\1/'`
+
+if test "$mico_v_maj" -lt "$req_v_maj" || \
+   ( test "$mico_v_maj" -eq "$req_v_maj" && \
+        test "$mico_v_mid" -lt "$req_v_mid" ) || \
+   ( test "$mico_v_mid" -eq "$req_v_mid" && \
+        test "$mico_v_min" -lt "$req_v_min" )
+
+then
+  AC_MSG_ERROR([found MICO version $kde_cv_mico_version but version $req_version \
+at least is required. You should upgrade MICO.])
+else
+  AC_MSG_RESULT([$kde_cv_mico_version (minimum version $req_version, ok)])
+fi
+
+LIBMICO="-lmico$kde_cv_mico_version $LIBCRYPT $LIBSOCKET $LIBDL"
+AC_SUBST(LIBMICO)
+if test -z "$IDL"; then
+  IDL='$(kde_bindir)/cuteidl'
+fi
+AC_SUBST(IDL)
+IDL_DEPENDENCIES='$(kde_includes)/CUTE.h'
+AC_SUBST(IDL_DEPENDENCIES)
+
+idldir="\$(includedir)/idl"
+AC_SUBST(idldir)
+
+])
+
+AC_DEFUN([KDE_CHECK_MINI_STL],
+[
+AC_REQUIRE([KDE_CHECK_MICO])
+
+AC_MSG_CHECKING(if we use mico's mini-STL)
+AC_CACHE_VAL(kde_cv_have_mini_stl,
+[
+AC_LANG_PUSH(C++)
+kde_save_cxxflags="$CXXFLAGS"
+CXXFLAGS="$CXXFLAGS $MICO_INCLUDES"
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <mico/config.h>
+]],
+[[
+#ifdef HAVE_MINI_STL
+#error "nothing"
+#endif
+]])],
+kde_cv_have_mini_stl=no,
+kde_cv_have_mini_stl=yes)
+CXXFLAGS="$kde_save_cxxflags"
+AC_LANG_POP([C++])
+])
+
+if test "x$kde_cv_have_mini_stl" = "xyes"; then
+   AC_MSG_RESULT(yes)
+   $1
+else
+   AC_MSG_RESULT(no)
+   $2
+fi
+])
+
+])
+
+
+AC_DEFUN([KDE_CHECK_LIBPTHREAD],
+[
+AC_CHECK_LIB(pthread, pthread_create, [LIBPTHREAD="-lpthread"] )
+AC_SUBST(LIBPTHREAD)
+])
+
+AC_DEFUN([KDE_CHECK_PTHREAD_OPTION],
+[
+    AC_ARG_ENABLE(
+      kernel-threads,
+      [  --enable-kernel-threads Enable the use of the LinuxThreads port on FreeBSD/i386 only.],
+      kde_use_kernthreads=$enableval,
+      kde_use_kernthreads=no)
+
+    if test "$kde_use_kernthreads" = "yes"; then
+      ac_save_CXXFLAGS="$CXXFLAGS"
+      ac_save_CFLAGS="$CFLAGS"
+      CXXFLAGS="-I/usr/local/include/pthread/linuxthreads $CXXFLAGS"
+      CFLAGS="-I/usr/local/include/pthread/linuxthreads $CFLAGS"
+      AC_CHECK_HEADERS(pthread/linuxthreads/pthread.h)
+      CXXFLAGS="$ac_save_CXXFLAGS"
+      CFLAGS="$ac_save_CFLAGS"
+      if test "$ac_cv_header_pthread_linuxthreads_pthread_h" = "no"; then
+        kde_use_kernthreads=no
+      else
+        dnl Add proper -I and -l statements
+        AC_CHECK_LIB(lthread, pthread_join, [LIBPTHREAD="-llthread -llgcc_r"]) dnl for FreeBSD
+        if test "x$LIBPTHREAD" = "x"; then
+          kde_use_kernthreads=no
+        else
+          USE_THREADS="-D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads"
+        fi
+      fi
+    else 
+      USE_THREADS=""
+      if test -z "$LIBPTHREAD"; then
+        KDE_CHECK_COMPILER_FLAG(pthread, [USE_THREADS="-pthread"] )
+      fi
+    fi
+
+    AH_VERBATIM(__svr_define, [
+#if defined(__SVR4) && !defined(__svr4__)
+#define __svr4__ 1
+#endif
+])
+    case $host_os in
+ 	solaris*)
+		KDE_CHECK_COMPILER_FLAG(mt, [USE_THREADS="-mt"])
+                CXXFLAGS="$CXXFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4"
+    		;;
+        freebsd*)
+                CXXFLAGS="$CXXFLAGS -D_THREAD_SAFE"
+                ;;
+        aix*)
+                CXXFLAGS="$CXXFLAGS -D_THREAD_SAFE"
+                LIBPTHREAD="$LIBPTHREAD -lc_r"
+                ;;
+        linux*) CXXFLAGS="$CXXFLAGS -D_REENTRANT"
+                if test "$CXX" = "KCC"; then
+                  CXXFLAGS="$CXXFLAGS --thread_safe"
+                  NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS --thread_safe"
+                fi
+                ;;
+	*)
+		;;
+    esac
+    AC_SUBST(USE_THREADS)
+    AC_SUBST(LIBPTHREAD)
+])
+
+AC_DEFUN([KDE_CHECK_THREADING],
+[
+  AC_REQUIRE([KDE_CHECK_LIBPTHREAD])
+  AC_REQUIRE([KDE_CHECK_PTHREAD_OPTION])
+  dnl default is yes if libpthread is found and no if no libpthread is available
+  if test -z "$LIBPTHREAD"; then
+    if test -z "$USE_THREADS"; then
+      kde_check_threading_default=no
+    else
+      kde_check_threading_default=yes
+    fi
+  else
+    kde_check_threading_default=yes
+  fi
+
+  AC_ARG_ENABLE(
+    threading,
+    [  --disable-threading     disables threading even if libpthread found ],
+    kde_use_threading=$enableval, kde_use_threading=$kde_check_threading_default)
+
+  if test "x$kde_use_threading" = "xyes"; then
+    AC_DEFINE(HAVE_LIBPTHREAD, 1, [Define if you have a working libpthread])
+  fi
+])
+
+AC_DEFUN([KDE_CHECK_STL_SGI],
+[
+    AC_MSG_CHECKING([if STL implementation is SGI like])
+    AC_CACHE_VAL(kde_cv_stl_type_sgi,
+    [
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <string>
+using namespace std;
+]],[[
+  string astring="Hallo Welt.";
+  astring.erase(0, 6); // now astring is "Welt"
+  return 0;
+]])], kde_cv_stl_type_sgi=yes,
+   kde_cv_stl_type_sgi=no)
+])
+
+   AC_MSG_RESULT($kde_cv_stl_type_sgi)
+
+   if test "$kde_cv_stl_type_sgi" = "yes"; then
+	AC_DEFINE_UNQUOTED(HAVE_SGI_STL, 1, [Define if you have a STL implementation by SGI])
+   fi
+])
+
+AC_DEFUN([KDE_CHECK_STL_HP],
+[
+    AC_MSG_CHECKING([if STL implementation is HP like])
+    AC_CACHE_VAL(kde_cv_stl_type_hp,
+    [
+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <string>
+using namespace std;
+]],[[
+  string astring="Hello World";
+  astring.remove(0, 6); // now astring is "World"
+  return 0;
+]])], kde_cv_stl_type_hp=yes,
+   kde_cv_stl_type_hp=no)
+])
+   AC_MSG_RESULT($kde_cv_stl_type_hp)
+
+   if test "$kde_cv_stl_type_hp" = "yes"; then
+	AC_DEFINE_UNQUOTED(HAVE_HP_STL, 1, [Define if you have a STL implementation by HP])
+   fi
+])
+
+AC_DEFUN([KDE_CHECK_STL],
+[
+    AC_LANG_PUSH(C++)
+    ac_save_CXXFLAGS="$CXXFLAGS"
+    CXXFLAGS="`echo $CXXFLAGS | sed s/-fno-exceptions//`"
+    KDE_CHECK_STL_SGI
+
+    if test "$kde_cv_stl_type_sgi" = "no"; then
+       KDE_CHECK_STL_HP
+
+       if test "$kde_cv_stl_type_hp" = "no"; then
+         AC_MSG_ERROR("no known STL type found - did you forget to install libstdc++[-devel] ?")
+       fi
+    fi
+
+    CXXFLAGS="$ac_save_CXXFLAGS"
+    AC_LANG_POP([C++])
+])
+
+AC_DEFUN([AC_FIND_QIMGIO],
+   [AC_REQUIRE([AC_FIND_JPEG])
+AC_REQUIRE([KDE_CHECK_EXTRA_LIBS])
+AC_MSG_CHECKING([for qimgio])
+AC_CACHE_VAL(ac_cv_lib_qimgio,
+[
+AC_LANG_PUSH(C++)
+ac_save_LIBS="$LIBS"
+ac_save_CXXFLAGS="$CXXFLAGS"
+LIBS="$all_libraries -lqimgio -lpng -lz $LIBJPEG $LIBQT"
+CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes"
+AC_TRY_RUN(dnl
+[
+#include <qimageio.h>
+#include <qstring.h>
+int main() {
+		QString t = "hallo";
+		t.fill('t');
+		qInitImageIO();
+}
+],
+            ac_cv_lib_qimgio=yes,
+            ac_cv_lib_qimgio=no,
+	    ac_cv_lib_qimgio=no)
+LIBS="$ac_save_LIBS"
+CXXFLAGS="$ac_save_CXXFLAGS"
+AC_LANG_POP(C++)
+])dnl
+if eval "test \"`echo $ac_cv_lib_qimgio`\" = yes"; then
+  LIBQIMGIO="-lqimgio -lpng -lz $LIBJPEG"
+  AC_MSG_RESULT(yes)
+  AC_DEFINE_UNQUOTED(HAVE_QIMGIO, 1, [Define if you have the Qt extension qimgio available])
+  AC_SUBST(LIBQIMGIO)
+else
+  AC_MSG_RESULT(not found)
+fi
+])
+
+AC_DEFUN([KDE_CHECK_ANSI],
+[
+])
+
+AC_DEFUN([KDE_CHECK_INSURE],
+[
+  AC_ARG_ENABLE(insure, [  --enable-insure             use insure++ for debugging [default=no]],
+  [
+  if test $enableval = "no"; dnl
+	then ac_use_insure="no"
+	else ac_use_insure="yes"
+   fi
+  ], [ac_use_insure="no"])
+
+  AC_MSG_CHECKING(if we will use Insure++ to debug)
+  AC_MSG_RESULT($ac_use_insure)
+  if test "$ac_use_insure" = "yes"; dnl
+       then CC="insure"; CXX="insure"; dnl CFLAGS="$CLAGS -fno-rtti -fno-exceptions "????
+   fi
+])
+
+AC_DEFUN([AM_DISABLE_LIBRARIES],
+[
+    AC_PROVIDE([AM_ENABLE_STATIC])
+    AC_PROVIDE([AM_ENABLE_SHARED])
+    enable_static=no
+    enable_shared=yes
+])
+
+
+AC_DEFUN([AC_CHECK_UTMP_FILE],
+[
+    AC_MSG_CHECKING([for utmp file])
+
+    AC_CACHE_VAL(kde_cv_utmp_file,
+    [
+    kde_cv_utmp_file=no
+
+    for ac_file in    \
+                      \
+	/var/run/utmp \
+	/var/adm/utmp \
+	/etc/utmp     \
+     ; \
+    do
+     if test -r "$ac_file"; then
+       kde_cv_utmp_file=$ac_file
+       break
+     fi
+    done
+    ])
+
+    if test "$kde_cv_utmp_file" != "no"; then
+	AC_DEFINE_UNQUOTED(UTMP, "$kde_cv_utmp_file", [Define the file for utmp entries])
+	$1
+	AC_MSG_RESULT($kde_cv_utmp_file)
+    else
+    	$2
+	AC_MSG_RESULT([non found])
+    fi
+])
+
+
+AC_DEFUN([KDE_CREATE_SUBDIRSLIST],
+[
+
+DO_NOT_COMPILE="$DO_NOT_COMPILE CVS debian bsd-port admin"
+
+if test ! -s $srcdir/subdirs; then
+  dnl Note: Makefile.common creates subdirs, so this is just a fallback
+  TOPSUBDIRS=""
+  files=`cd $srcdir && ls -1`
+  dirs=`for i in $files; do if test -d $i; then echo $i; fi; done`
+  for i in $dirs; do
+    echo $i >> $srcdir/subdirs
+  done
+fi
+
+if test -s $srcdir/inst-apps; then
+  ac_topsubdirs="`cat $srcdir/inst-apps`"
+else
+  ac_topsubdirs="`cat $srcdir/subdirs`"
+fi
+
+for i in $ac_topsubdirs; do
+  AC_MSG_CHECKING([if $i should be compiled])
+  if test -d $srcdir/$i; then
+    install_it="yes"
+    for j in $DO_NOT_COMPILE; do
+      if test $i = $j; then
+        install_it="no"
+      fi
+    done
+  else
+    install_it="no"
+  fi
+  AC_MSG_RESULT($install_it)
+  vari=`echo $i | sed -e 's,[[-+.]],_,g'`
+  if test $install_it = "yes"; then
+    TOPSUBDIRS="$TOPSUBDIRS $i"
+    eval "$vari""_SUBDIR_included=yes"
+  else
+    eval "$vari""_SUBDIR_included=no"
+  fi
+done
+
+AC_SUBST(TOPSUBDIRS)
+])
+
+AC_DEFUN([KDE_CHECK_NAMESPACES],
+[
+AC_MSG_CHECKING(whether C++ compiler supports namespaces)
+AC_LANG_PUSH(C++)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],
+[[
+namespace Foo {
+  extern int i;
+  namespace Bar {
+    extern int i;
+  }
+}
+
+int Foo::i = 0;
+int Foo::Bar::i = 1;
+]])],[
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(HAVE_NAMESPACES)
+], [
+AC_MSG_RESULT(no)
+])
+AC_LANG_POP([C++])
+])
+
+AC_DEFUN([KDE_CHECK_NEWLIBS],
+[
+
+])
+
+dnl ------------------------------------------------------------------------
+dnl Check for S_ISSOCK macro. Doesn't exist on Unix SCO. faure at kde.org
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_CHECK_S_ISSOCK],
+[
+AC_MSG_CHECKING(for S_ISSOCK)
+AC_CACHE_VAL(ac_cv_have_s_issock,
+[
+AC_LANG_PUSH(C)
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#include <sys/stat.h>
+]],
+[[
+struct stat buff;
+int b = S_ISSOCK( buff.st_mode );
+]])],
+ac_cv_have_s_issock=yes,
+ac_cv_have_s_issock=no)
+AC_LANG_POP([C])
+])
+AC_MSG_RESULT($ac_cv_have_s_issock)
+if test "$ac_cv_have_s_issock" = "yes"; then
+  AC_DEFINE_UNQUOTED(HAVE_S_ISSOCK, 1, [Define if sys/stat.h declares S_ISSOCK.])
+fi
+
+AH_VERBATIM(_ISSOCK,
+[
+#ifndef HAVE_S_ISSOCK
+#define HAVE_S_ISSOCK
+#define S_ISSOCK(mode) (1==0)
+#endif
+])
+
+])
+
+dnl ------------------------------------------------------------------------
+dnl Check for MAXPATHLEN macro, defines KDEMAXPATHLEN. faure at kde.org
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([AC_CHECK_KDEMAXPATHLEN],
+[
+AC_MSG_CHECKING(for MAXPATHLEN)
+AC_CACHE_VAL(ac_cv_maxpathlen,
+[
+AC_LANG(C)
+cat > conftest.$ac_ext <<EOF
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+#endif
+#include <stdio.h>
+#include <sys/param.h>
+#ifndef MAXPATHLEN
+#define MAXPATHLEN 1024
+#endif
+
+KDE_HELLO MAXPATHLEN
+
+EOF
+
+ac_try="$ac_cpp conftest.$ac_ext 2>/dev/null | grep '^KDE_HELLO' >conftest.out"
+
+if AC_TRY_EVAL(ac_try) && test -s conftest.out; then
+    ac_cv_maxpathlen=`sed 's#KDE_HELLO ##' conftest.out`
+else
+    ac_cv_maxpathlen=1024
+fi
+
+rm conftest.*
+
+])
+AC_MSG_RESULT($ac_cv_maxpathlen)
+AC_DEFINE_UNQUOTED(KDEMAXPATHLEN,$ac_cv_maxpathlen, [Define a safe value for MAXPATHLEN] )
+])
+
+dnl -------------------------------------------------------------------------
+dnl See if the compiler supports a template repository         bero at redhat.de
+dnl -------------------------------------------------------------------------
+AC_DEFUN([KDE_COMPILER_REPO],
+[
+  REPO=""
+  NOREPO=""
+
+  KDE_CHECK_COMPILER_FLAG(frepo,
+   [
+     REPO="-frepo"
+     NOREPO="-fno-repo"
+   ])
+
+  if test -z "$REPO"; then
+  KDE_CHECK_COMPILER_FLAG(instances=explicit,
+  [
+     REPO="-instances=explicit"
+     NOREPO="-instances=extern"
+  ])
+  fi
+
+  if test -n "$REPO"; then
+     AC_DEFINE_UNQUOTED(HAVE_TEMPLATE_REPOSITORY, 1,
+		[C++ compiler supports template repository])
+     $1
+  fi
+
+  AC_SUBST(REPO)
+  AC_SUBST(NOREPO)
+])
+
+AC_DEFUN([KDE_CHECK_HEADER],
+[
+   AC_LANG_PUSH(C++)
+   kde_safe_cppflags=$CPPFLAGS
+   CPPFLAGS="$CPPFLAGS $all_includes"
+   AC_CHECK_HEADER($1, $2, $3, $4)
+   CPPFLAGS=$kde_safe_cppflags
+   AC_LANG_POP([C++])
+])
+
+AC_DEFUN([KDE_CHECK_HEADERS],
+[
+   AH_CHECK_HEADERS([$1])
+   AC_LANG_PUSH(C++)
+   kde_safe_cppflags=$CPPFLAGS
+   CPPFLAGS="$CPPFLAGS $all_includes"
+   AC_CHECK_HEADERS([$1], [$2], [$3], [$4])
+   CPPFLAGS=$kde_safe_cppflags
+   AC_LANG_POP([C++])
+])
+
+AC_DEFUN([KDE_FAST_CONFIGURE],
+[
+  dnl makes configure fast (needs perl)
+  AC_ARG_ENABLE(fast-perl, [  --disable-fast-perl     disable fast Makefile generation (needs perl)],
+      with_fast_perl=$enableval, with_fast_perl=yes)
+])
+
+AC_DEFUN([KDE_CONF_FILES],
+[
+  val=
+  if test -f $srcdir/configure.files ; then
+    val=`sed -e 's%^%\$(top_srcdir)/%' $srcdir/configure.files`
+  fi
+  CONF_FILES=
+  if test -n "$val" ; then
+    for i in $val ; do
+      CONF_FILES="$CONF_FILES $i"
+    done
+  fi
+  AC_SUBST(CONF_FILES)
+])dnl
+
+pushdef([AC_PROG_INSTALL],
+[
+  dnl our own version, testing for a -p flag
+  popdef([AC_PROG_INSTALL])
+  dnl as AC_PROG_INSTALL works as it works we first have
+  dnl to save if the user didn't specify INSTALL, as the
+  dnl autoconf one overwrites INSTALL and we have no chance to find
+  dnl out afterwards
+  test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL
+  test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM
+  test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT
+  AC_PROG_INSTALL
+
+  if test -z "$kde_save_INSTALL_given" ; then
+    # OK, user hasn't given any INSTALL, autoconf found one for us
+    # now we test, if it supports the -p flag
+    AC_MSG_CHECKING(for -p flag to install)
+    rm -f confinst.$$.* > /dev/null 2>&1
+    echo "Testtest" > confinst.$$.orig
+    ac_res=no
+    if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then
+      if test -f confinst.$$.new ; then
+        # OK, -p seems to do no harm to install
+	INSTALL="${INSTALL} -p"
+	ac_res=yes
+      fi
+    fi
+    rm -f confinst.$$.*
+    AC_MSG_RESULT($ac_res)
+  fi
+  dnl the following tries to resolve some signs and wonders coming up
+  dnl with different autoconf/automake versions
+  dnl e.g.:
+  dnl  *automake 1.4 install-strip sets A_M_INSTALL_PROGRAM_FLAGS to -s
+  dnl   and has INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(A_M_INSTALL_PROGRAM_FLAGS)
+  dnl   it header-vars.am, so there the actual INSTALL_PROGRAM gets the -s
+  dnl  *automake 1.4a (and above) use INSTALL_STRIP_FLAG and only has
+  dnl   INSTALL_PROGRAM = @INSTALL_PROGRAM@ there, but changes the
+  dnl   install- at DIR@PROGRAMS targets to explicitly use that flag
+  dnl  *autoconf 2.13 is dumb, and thinks it can use INSTALL_PROGRAM as
+  dnl   INSTALL_SCRIPT, which breaks with automake <= 1.4
+  dnl  *autoconf >2.13 (since 10.Apr 1999) has not that failure
+  dnl  *sometimes KDE does not use the install- at DIR@PROGRAM targets from
+  dnl   automake (due to broken Makefile.am or whatever) to install programs,
+  dnl   and so does not see the -s flag in automake > 1.4
+  dnl to clean up that mess we:
+  dnl  +set INSTALL_PROGRAM to use INSTALL_STRIP_FLAG
+  dnl   which cleans KDE's program with automake > 1.4;
+  dnl  +set INSTALL_SCRIPT to only use INSTALL, to clean up autoconf's problems
+  dnl   with automake<=1.4
+  dnl  note that dues to this sometimes two '-s' flags are used (if KDE
+  dnl   properly uses install- at DIR@PROGRAMS, but I don't care
+  dnl
+  dnl And to all this comes, that I even can't write in comments variable
+  dnl  names used by automake, because it is so stupid to think I wanted to
+  dnl  _use_ them, therefor I have written A_M_... instead of AM_
+  dnl hmm, I wanted to say something ... ahh yes: Arghhh.
+
+  if test -z "$kde_save_INSTALL_PROGRAM_given" ; then
+    INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)'
+  fi
+  if test -z "$kde_save_INSTALL_SCRIPT_given" ; then
+    INSTALL_SCRIPT='${INSTALL}'
+  fi
+])dnl
+
+AC_DEFUN([KDE_LANG_CPLUSPLUS],
+[AC_LANG_CPLUSPLUS
+ac_link='rm -rf SunWS_cache; ${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AS_MESSAGE_LOG_FD()'
+pushdef([AC_LANG_CPLUSPLUS], [popdef([AC_LANG_CPLUSPLUS]) KDE_LANG_CPLUSPLUS])
+])
+
+pushdef([AC_LANG_CPLUSPLUS],
+[popdef([AC_LANG_CPLUSPLUS])
+KDE_LANG_CPLUSPLUS
+])
+
+AC_DEFUN([KDE_CHECK_LONG_LONG],
+[
+AC_MSG_CHECKING(for long long)
+AC_CACHE_VAL(kde_cv_c_long_long,
+[
+  AC_LANG_PUSH(C++)
+   AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
+  long long foo = 0;
+  foo = foo+1;
+  ]])],
+  kde_cv_c_long_long=yes, kde_cv_c_long_long=no)
+  AC_LANG_POP([C++])
+])
+AC_MSG_RESULT($kde_cv_c_long_long)
+if test "$kde_cv_c_long_long" = yes; then
+   AC_DEFINE(HAVE_LONG_LONG, 1, [Define if you have long long as datatype])
+fi
+])
+
+AC_DEFUN([KDE_CHECK_LIB],
+[
+     kde_save_LDFLAGS="$LDFLAGS"
+     dnl AC_CHECK_LIB modifies LIBS, so save it here
+     kde_save_LIBS="$LIBS"
+     LDFLAGS="$LDFLAGS $all_libraries"
+     case $host_os in
+      aix*) LDFLAGS="-brtl $LDFLAGS"
+	test "$GCC" = yes && LDFLAGS="-Wl,$LDFLAGS"
+	;;
+     esac
+     AC_CHECK_LIB($1, $2, $3, $4, $5)
+     LDFLAGS="$kde_save_LDFLAGS"
+     LIBS="$kde_save_LIBS"
+])
+
+AC_DEFUN([KDE_JAVA_PREFIX],
+[
+	dir=`dirname "$1"`
+	base=`basename "$1"`
+	list=`ls -1 $dir 2> /dev/null`
+	for entry in $list; do 
+		if test -d $dir/$entry/bin; then
+			case $entry in
+			   $base)
+				javadirs="$javadirs $dir/$entry/bin"
+				;;
+			esac
+		elif test -d $dir/$entry/jre/bin; then
+			case $entry in
+			   $base)
+				javadirs="$javadirs $dir/$entry/jre/bin"
+				;;
+			esac
+		fi
+	done
+])
+
+dnl KDE_CHEC_JAVA_DIR(onlyjre)
+AC_DEFUN([KDE_CHECK_JAVA_DIR],
+[
+
+AC_ARG_WITH(java,
+[  --with-java=javadir     use java installed in javadir, --without-java disables ],
+[  ac_java_dir=$withval
+], ac_java_dir=""
+)
+
+AC_MSG_CHECKING([for Java])
+
+dnl at this point ac_java_dir is either a dir, 'no' to disable, or '' to say look in $PATH
+if test "x$ac_java_dir" = "xno"; then
+   kde_java_bindir=no
+   kde_java_includedir=no
+   kde_java_libjvmdir=no
+   kde_java_libhpidir=no
+else
+  if test "x$ac_java_dir" = "x"; then
+     
+     
+      dnl No option set -> look in $PATH
+      KDE_JAVA_PREFIX(/usr/j2se)
+      KDE_JAVA_PREFIX(/usr/j*dk*)
+      KDE_JAVA_PREFIX(/usr/lib/j*dk*)
+      KDE_JAVA_PREFIX(/opt/j*sdk*)
+      KDE_JAVA_PREFIX(/usr/lib/java*)
+      KDE_JAVA_PREFIX(/usr/java*)
+      KDE_JAVA_PREFIX(/usr/java/j*dk*)
+      KDE_JAVA_PREFIX(/usr/java/j*re*)
+      KDE_JAVA_PREFIX(/usr/lib/SunJava2*)
+      KDE_JAVA_PREFIX(/usr/lib/SunJava*)
+      KDE_JAVA_PREFIX(/usr/lib/IBMJava2*)
+      KDE_JAVA_PREFIX(/usr/lib/IBMJava*)
+      KDE_JAVA_PREFIX(/opt/java*)
+    
+      kde_cv_path="NONE"
+      kde_save_IFS=$IFS
+      IFS=':'
+      for dir in $PATH; do
+	  javadirs="$javadirs $dir"
+      done
+      IFS=$kde_save_IFS
+      jredirs=
+
+      for dir in $javadirs; do
+	  if test ! -d $dir; then break; fi
+          if test -x "$dir/java"; then
+                libjvmdir=`find $dir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1`
+		if test ! -f $libjvmdir/libjvm.so; then continue; fi
+		jredirs="$jredirs $dir"
+	  fi
+      done
+
+      JAVAC=
+      JAVA=
+      kde_java_bindir=no
+      for dir in $jredirs; do
+	  JAVA="$dir/java"
+	  kde_java_bindir=$dir
+	  if test -x "$dir/javac"; then
+		JAVAC="$dir/javac"
+                break
+	  fi
+      done
+
+      if test -n "$JAVAC"; then
+          dnl this substitution might not work - well, we test for jni.h below
+          kde_java_includedir=`echo $JAVAC | sed -e 's,bin/javac$,include/,'`
+      else
+          kde_java_includedir=no
+      fi
+  else
+    dnl config option set
+    kde_java_bindir=$ac_java_dir/bin
+    if test -x $ac_java_dir/bin/java && test ! -x $ac_java_dir/bin/javac; then
+	kde_java_includedir=no
+    else
+        kde_java_includedir=$ac_java_dir/include
+    fi
+  fi
+fi
+
+dnl At this point kde_java_bindir and kde_java_includedir are either set or "no"
+if test "x$kde_java_bindir" != "xno"; then
+
+  dnl Look for libjvm.so
+  kde_java_libjvmdir=`find $kde_java_bindir/.. -name libjvm.so | sed 's,libjvm.so,,'|head -n 1`
+  dnl Look for libhpi.so and avoid green threads
+  kde_java_libhpidir=`find $kde_java_bindir/.. -name libhpi.so | grep -v green | sed 's,libhpi.so,,' | head -n 1`
+
+  dnl Now check everything's fine under there
+  dnl the include dir is our flag for having the JDK
+  if test -d "$kde_java_includedir"; then
+    if test ! -x "$kde_java_bindir/javac"; then
+      AC_MSG_ERROR([javac not found under $kde_java_bindir - it seems you passed a wrong --with-java.])
+    fi
+    if test ! -x "$kde_java_bindir/javah"; then
+      AC_MSG_ERROR([javah not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.])
+    fi
+    if test ! -x "$kde_java_bindir/jar"; then
+      AC_MSG_ERROR([jar not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.])
+    fi
+    if test ! -r "$kde_java_includedir/jni.h"; then
+      AC_MSG_ERROR([jni.h not found under $kde_java_includedir. Use --with-java or --without-java.])
+    fi
+
+    jni_includes="-I$kde_java_includedir"
+    dnl Strange thing, jni.h requires jni_md.h which is under genunix here..
+    dnl and under linux here..
+    test -d "$kde_java_includedir/linux" && jni_includes="$jni_includes -I$kde_java_includedir/linux"
+    test -d "$kde_java_includedir/solaris" && jni_includes="$jni_includes -I$kde_java_includedir/solaris"
+    test -d "$kde_java_includedir/genunix" && jni_includes="$jni_includes -I$kde_java_includedir/genunix"
+
+  else
+    JAVAC=
+    jni_includes=
+  fi
+
+  if test ! -r "$kde_java_libjvmdir/libjvm.so"; then
+     AC_MSG_ERROR([libjvm.so not found under $kde_java_libjvmdir. Use --without-java.])
+  fi 
+
+  if test ! -x "$kde_java_bindir/java"; then
+      AC_MSG_ERROR([java not found under $kde_java_bindir. javac was found though! Use --with-java or --without-java.])
+  fi
+
+  if test ! -r "$kde_java_libhpidir/libhpi.so"; then
+    AC_MSG_ERROR([libhpi.so not found under $kde_java_libhpidir. Use --without-java.])
+  fi
+
+  if test -n "$jni_includes"; then
+    dnl Check for JNI version
+    AC_LANG_PUSH(C++)
+    ac_cxxflags_safe="$CXXFLAGS"
+    CXXFLAGS="$CXXFLAGS $all_includes $jni_includes"
+
+    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+  #include <jni.h>
+	      ]],
+	      [[
+  #ifndef JNI_VERSION_1_2
+  Syntax Error
+  #endif
+	      ]])],[ kde_jni_works=yes ],
+	      [ kde_jni_works=no ])
+
+    if test $kde_jni_works = no; then
+      AC_MSG_ERROR([Incorrect version of $kde_java_includedir/jni.h.
+		    You need to have Java Development Kit (JDK) version 1.2. 
+
+		    Use --with-java to specify another location.
+		    Use --without-java to configure without java support.
+		    Or download a newer JDK and try again. 
+		    See e.g. http://java.sun.com/products/jdk/1.2 ])
+    fi
+
+    CXXFLAGS="$ac_cxxflags_safe"    
+    AC_LANG_POP([C++])
+
+    dnl All tests ok, inform and subst the variables
+
+    JAVAC=$kde_java_bindir/javac
+    JAVAH=$kde_java_bindir/javah
+    JAR=$kde_java_bindir/jar
+    AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is])
+    JVMLIBS="-L$kde_java_libjvmdir -ljvm -L$kde_java_libhpidir -lhpi"
+    AC_MSG_RESULT([java JDK in $kde_java_bindir])
+
+  else
+      AC_DEFINE_UNQUOTED(PATH_JAVA, "$kde_java_bindir/java", [Define where your java executable is])
+      AC_MSG_RESULT([java JRE in $kde_java_bindir])
+  fi
+else # no
+  AC_MSG_RESULT([none found])
+fi
+
+AC_SUBST(JAVAC)
+AC_SUBST(JAVAH)
+AC_SUBST(JAR)
+AC_SUBST(JVMLIBS)
+AC_SUBST(jni_includes)
+
+# for backward compat
+kde_cv_java_includedir=$kde_java_includedir
+kde_cv_java_bindir=$kde_java_bindir
+])
+
+dnl this is a redefinition of autoconf 2.5x's AC_FOREACH.
+dnl When the argument list becomes big, as in KDE for AC_OUTPUT in
+dnl big packages, m4_foreach is dog-slow.  So use our own version of
+dnl it.  (matz at kde.org)
+m4_define([mm_foreach],
+[m4_pushdef([$1])_mm_foreach($@)m4_popdef([$1])])
+m4_define([mm_car], [[$1]])
+m4_define([mm_car2], [[$@]])
+m4_define([_mm_foreach],
+[m4_if(m4_quote($2), [], [],
+       [m4_define([$1], [mm_car($2)])$3[]_mm_foreach([$1],
+                                                     mm_car2(m4_shift($2)),
+                                                     [$3])])])
+m4_define([AC_FOREACH],
+[mm_foreach([$1], m4_split(m4_normalize([$2])), [$3])])
+
+AC_DEFUN([KDE_NEED_FLEX],
+[
+kde_libs_safe=$LIBS
+LIBS="$LIBS $USER_LDFLAGS"
+AM_PROG_LEX
+LIBS=$kde_libs_safe
+if test -z "$LEXLIB"; then
+    AC_MSG_ERROR([You need to have flex installed.])
+fi
+AC_SUBST(LEXLIB)
+])
+
+AC_DEFUN([AC_PATH_QTOPIA],
+[
+  dnl TODO: use AC_CACHE_VAL
+
+  if test -z "$1"; then
+    qtopia_minver_maj=1
+    qtopia_minver_min=5
+    qtopia_minver_pat=0
+  else
+    qtopia_minver_maj=`echo "$1" | sed -e "s/^\(.*\)\..*\..*$/\1/"`
+    qtopia_minver_min=`echo "$1" | sed -e "s/^.*\.\(.*\)\..*$/\1/"`
+    qtopia_minver_pat=`echo "$1" | sed -e "s/^.*\..*\.\(.*\)$/\1/"`
+  fi
+
+  qtopia_minver="$qtopia_minver_maj$qtopia_minver_min$qtopia_minver_pat"
+  qtopia_minverstr="$qtopia_minver_maj.$qtopia_minver_min.$qtopia_minver_pat"
+
+  dnl mrj, don't do that   AC_REQUIRE([AC_PATH_QT])
+
+  AC_MSG_CHECKING([for Qtopia])
+
+  LIB_QTOPIA="-lqpe"
+  AC_SUBST(LIB_QTOPIA)
+
+  kde_qtopia_dirs="$QPEDIR /opt/Qtopia"
+
+  ac_qtopia_incdir=NO
+
+  AC_ARG_WITH(qtopia-dir,
+              [  --with-qtopia-dir=DIR   where the root of Qtopia is installed ],
+              [  ac_qtopia_incdir="$withval"/include] ) 
+  
+  qtopia_incdirs=""
+  for dir in $kde_qtopia_dirs; do
+    qtopia_incdirs="$qtopia_incdirs $dir/include"
+  done
+
+  if test ! "$ac_qtopia_incdir" = "NO"; then
+    qtopia_incdirs="$ac_qtopia_incdir $qtopia_incdirs"
+  fi
+
+  qtopia_incdir=""
+  AC_FIND_FILE(qpe/qpeapplication.h, $qtopia_incdirs, qtopia_incdir)
+  ac_qtopia_incdir="$qtopia_incdir"
+
+  if test -z "$qtopia_incdir"; then
+    AC_MSG_ERROR([Cannot find Qtopia headers. Please check your installation.])
+  fi
+
+  qtopia_ver_maj=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION "\(.*\)\..*\..*".*,\1,p'`;
+  qtopia_ver_min=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\.\(.*\)\..*".*,\1,p'`;
+  qtopia_ver_pat=`cat $qtopia_incdir/qpe/version.h | sed -n -e 's,.*QPE_VERSION ".*\..*\.\(.*\)".*,\1,p'`;
+
+  qtopia_ver="$qtopia_ver_maj$qtopia_ver_min$qtopia_ver_pat"
+  qtopia_verstr="$qtopia_ver_maj.$qtopia_ver_min.$qtopia_ver_pat"
+  if test "$qtopia_ver" -lt "$qtopia_minver"; then
+    AC_MSG_ERROR([found Qtopia version $qtopia_verstr but version $qtopia_minverstr
+is required.])
+  fi
+
+  AC_LANG_PUSH(C++)
+
+  ac_cxxflags_safe="$CXXFLAGS"
+  ac_ldflags_safe="$LDFLAGS"
+  ac_libs_safe="$LIBS"
+
+  CXXFLAGS="$CXXFLAGS -I$qtopia_incdir $all_includes"
+  LDFLAGS="$LDFLAGS $QT_LDFLAGS $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS"
+  LIBS="$LIBS $LIB_QTOPIA $LIBQT"
+
+  cat > conftest.$ac_ext <<EOF
+#include "confdefs.h"
+#include <qpe/qpeapplication.h>
+#include <qpe/version.h>
+
+int main( int argc, char **argv )
+{
+    QPEApplication app( argc, argv );
+    return 0;
+}
+EOF
+
+  if AC_TRY_EVAL(ac_link) && test -s conftest; then
+    rm -f conftest*
+  else
+    rm -f conftest*
+    AC_MSG_ERROR([Cannot link small Qtopia Application. For more details look at
+the end of config.log])
+  fi
+
+  CXXFLAGS="$ac_cxxflags_safe"
+  LDFLAGS="$ac_ldflags_safe"
+  LIBS="$ac_libs_safe"
+
+  AC_LANG_POP([C++])
+
+  QTOPIA_INCLUDES="-I$qtopia_incdir"
+  AC_SUBST(QTOPIA_INCLUDES)
+
+  AC_MSG_RESULT([found version $qtopia_verstr with headers at $qtopia_incdir])
+])
+
+
+AC_DEFUN([KDE_INIT_DOXYGEN],
+[
+AC_MSG_CHECKING([for Qt docs])
+kde_qtdir=
+if test "${with_qt_dir+set}" = set; then
+  kde_qtdir="$with_qt_dir"
+fi
+
+AC_FIND_FILE(qsql.html, [ $kde_qtdir/doc/html $QTDIR/doc/html /usr/share/doc/packages/qt3/html /usr/lib/qt/doc /usr/lib/qt3/doc /usr/lib/qt3/doc/html /usr/doc/qt3/html /usr/doc/qt3 /usr/share/doc/qt3-doc /usr/share/qt3/doc/html ], QTDOCDIR)
+AC_MSG_RESULT($QTDOCDIR)
+
+AC_SUBST(QTDOCDIR)
+
+KDE_FIND_PATH(dot, DOT, [], [])
+if test -n "$DOT"; then
+  KDE_HAVE_DOT="YES"
+else
+  KDE_HAVE_DOT="NO"
+fi
+AC_SUBST(KDE_HAVE_DOT)
+KDE_FIND_PATH(doxygen, DOXYGEN, [], [])
+AC_SUBST(DOXYGEN)
+
+DOXYGEN_PROJECT_NAME="$1"
+DOXYGEN_PROJECT_NUMBER="$2"
+AC_SUBST(DOXYGEN_PROJECT_NAME)
+AC_SUBST(DOXYGEN_PROJECT_NUMBER)
+
+KDE_HAS_DOXYGEN=no
+if test -n "$DOXYGEN" && test -x "$DOXYGEN" && test -f $QTDOCDIR/qsql.html; then
+  KDE_HAS_DOXYGEN=yes
+fi
+AC_SUBST(KDE_HAS_DOXYGEN)
+
+])
+
+
+AC_DEFUN([AC_FIND_BZIP2],
+[
+AC_MSG_CHECKING([for bzDecompress in libbz2])
+AC_CACHE_VAL(ac_cv_lib_bzip2,
+[
+AC_LANG(C)
+kde_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -lbz2 $LIBSOCKET"
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+#define BZ_NO_STDIO
+#include<bzlib.h>
+]],
+            [[ bz_stream s; (void) bzDecompress(&s); ]])],
+            eval "ac_cv_lib_bzip2='-lbz2'",
+            eval "ac_cv_lib_bzip2=no")
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+])dnl
+AC_MSG_RESULT($ac_cv_lib_bzip2)
+
+if test ! "$ac_cv_lib_bzip2" = no; then
+  BZIP2DIR=bzip2
+
+  LIBBZ2="$ac_cv_lib_bzip2"
+  AC_SUBST(LIBBZ2)
+
+else
+
+   cxx_shared_flag=
+   ld_shared_flag=
+   KDE_CHECK_COMPILER_FLAG(shared, [
+	ld_shared_flag="-shared"
+   ])
+   KDE_CHECK_COMPILER_FLAG(fPIC, [
+        cxx_shared_flag="-fPIC"
+   ])
+
+   AC_MSG_CHECKING([for BZ2_bzDecompress in (shared) libbz2])
+   AC_CACHE_VAL(ac_cv_lib_bzip2_prefix,
+   [
+   AC_LANG_CPLUSPLUS
+   kde_save_LIBS="$LIBS"
+   LIBS="$all_libraries $USER_LDFLAGS $ld_shared_flag -lbz2 $LIBSOCKET"
+   kde_save_CXXFLAGS="$CXXFLAGS"
+   CXXFLAGS="$CFLAGS $cxx_shared_flag $all_includes $USER_INCLUDES"
+
+	 AC_LINK_IFELSE([AC_LANG_PROGRAM([[		
+   #define BZ_NO_STDIO
+   #include<bzlib.h>
+   ]],
+               [[ bz_stream s; (void) BZ2_bzDecompress(&s); ]])],
+               eval "ac_cv_lib_bzip2_prefix='-lbz2'",
+               eval "ac_cv_lib_bzip2_prefix=no")
+   LIBS="$kde_save_LIBS"
+   CXXFLAGS="$kde_save_CXXFLAGS"
+   ])dnl
+
+   AC_MSG_RESULT($ac_cv_lib_bzip2_prefix)
+   
+
+
+   if test ! "$ac_cv_lib_bzip2_prefix" = no; then
+     BZIP2DIR=bzip2
+    
+     LIBBZ2="$ac_cv_lib_bzip2_prefix"
+     AC_SUBST(LIBBZ2)
+
+     AC_DEFINE(NEED_BZ2_PREFIX, 1, [Define if the libbz2 functions need the BZ2_ prefix])
+   dnl else, we just ignore this
+   fi
+
+fi
+AM_CONDITIONAL(include_BZIP2, test -n "$BZIP2DIR")
+])
+
+dnl ------------------------------------------------------------------------
+dnl Try to find the SSL headers and libraries.
+dnl $(SSL_LDFLAGS) will be -Lsslliblocation (if needed)
+dnl and $(SSL_INCLUDES) will be -Isslhdrlocation (if needed)
+dnl ------------------------------------------------------------------------
+dnl
+AC_DEFUN([KDE_CHECK_SSL],
+[
+LIBSSL="-lssl -lcrypto"
+AC_REQUIRE([KDE_CHECK_LIB64])
+
+ac_ssl_includes=NO ac_ssl_libraries=NO
+ssl_libraries=""
+ssl_includes=""
+AC_ARG_WITH(ssl-dir,
+    [  --with-ssl-dir=DIR      where the root of OpenSSL is installed],
+    [  ac_ssl_includes="$withval"/include
+       ac_ssl_libraries="$withval"/lib$kdelibsuff
+    ])
+
+want_ssl=yes
+AC_ARG_WITH(ssl,
+    [  --without-ssl           disable SSL checks],
+    [want_ssl=$withval])
+
+if test $want_ssl = yes; then
+
+AC_MSG_CHECKING(for OpenSSL)
+
+AC_CACHE_VAL(ac_cv_have_ssl,
+[#try to guess OpenSSL locations
+  
+  ssl_incdirs="/usr/include /usr/local/include /usr/ssl/include /usr/local/ssl/include $prefix/include $kde_extra_includes"
+  ssl_incdirs="$ac_ssl_includes $ssl_incdirs"
+  AC_FIND_FILE(openssl/ssl.h, $ssl_incdirs, ssl_incdir)
+  ac_ssl_includes="$ssl_incdir"
+
+  ssl_libdirs="/usr/lib$kdelibsuff /usr/local/lib$kdelibsuff /usr/ssl/lib$kdelibsuff /usr/local/ssl/lib$kdelibsuff $libdir $prefix/lib$kdelibsuff $exec_prefix/lib$kdelibsuff $kde_extra_libs"
+  if test ! "$ac_ssl_libraries" = "NO"; then
+    ssl_libdirs="$ac_ssl_libraries $ssl_libdirs"
+  fi
+
+  test=NONE
+  ssl_libdir=NONE
+  for dir in $ssl_libdirs; do
+    try="ls -1 $dir/libssl*"
+    if test=`eval $try 2> /dev/null`; then ssl_libdir=$dir; break; else echo "tried $dir" >&AS_MESSAGE_LOG_FD()  ; fi
+  done
+
+  ac_ssl_libraries="$ssl_libdir"
+
+  AC_LANG_PUSH(C)
+
+  ac_cflags_safe="$CFLAGS"
+  ac_ldflags_safe="$LDFLAGS"
+  ac_libs_safe="$LIBS"
+
+  CFLAGS="$CFLAGS -I$ssl_incdir $all_includes"
+  LDFLAGS="$LDFLAGS -L$ssl_libdir $all_libraries"
+  LIBS="$LIBS $LIBSSL -lRSAglue -lrsaref"
+
+	 AC_LINK_IFELSE([AC_LANG_PROGRAM([[]]
+  ,[[void RSAPrivateEncrypt(void);RSAPrivateEncrypt();]])],
+  ac_ssl_rsaref="yes", ac_ssl_rsaref="no"
+  )
+
+  CFLAGS="$ac_cflags_safe"
+  LDFLAGS="$ac_ldflags_safe"
+  LIBS="$ac_libs_safe"
+
+  AC_LANG_POP([C])
+
+  if test "$ac_ssl_includes" = NO || test "$ac_ssl_libraries" = NO; then
+    have_ssl=no
+  else
+    have_ssl=yes;
+  fi
+
+  ])
+
+  eval "$ac_cv_have_ssl"
+
+  AC_MSG_RESULT([libraries $ac_ssl_libraries, headers $ac_ssl_includes])
+
+  AC_MSG_CHECKING([whether OpenSSL uses rsaref])
+  AC_MSG_RESULT($ac_ssl_rsaref)
+
+  AC_MSG_CHECKING([for easter eggs])
+  AC_MSG_RESULT([none found])
+
+else
+  have_ssl=no
+fi
+
+if test "$have_ssl" = yes; then
+  AC_MSG_CHECKING(for OpenSSL version)
+  dnl Check for SSL version
+  AC_CACHE_VAL(ac_cv_ssl_version,
+  [
+    AC_LANG_PUSH(C)
+
+    cat >conftest.$ac_ext <<EOF
+#include <openssl/opensslv.h>
+#include <stdio.h>
+    int main() {
+ 
+#ifndef OPENSSL_VERSION_NUMBER
+      printf("ssl_version=\\"error\\"\n");
+#else
+      if (OPENSSL_VERSION_NUMBER < 0x00906000)
+        printf("ssl_version=\\"old\\"\n");
+      else
+        printf("ssl_version=\\"ok\\"\n");
+#endif
+     return (0);
+    }
+EOF
+
+    ac_compile='${CC-gcc} $CFLAGS -I$ac_ssl_includes conftest.$ac_ext -o conftest'
+    if AC_TRY_EVAL(ac_compile); then 
+
+      if eval `./conftest 2>&5`; then
+        if test $ssl_version = error; then
+          AC_MSG_ERROR([$ssl_incdir/openssl/opensslv.h doesn't define OPENSSL_VERSION_NUMBER !])
+        else
+          if test $ssl_version = old; then
+            AC_MSG_WARN([OpenSSL version too old. Upgrade to 0.9.6 at least, see http://www.openssl.org. SSL support disabled.])
+            have_ssl=no
+          fi
+        fi
+        ac_cv_ssl_version="ssl_version=$ssl_version"
+      else
+        AC_MSG_ERROR([Your system couldn't run a small SSL test program.
+        Check config.log, and if you can't figure it out, send a mail to 
+        David Faure <faure at kde.org>, attaching your config.log])
+      fi
+
+    else
+      AC_MSG_ERROR([Your system couldn't link a small SSL test program.
+      Check config.log, and if you can't figure it out, send a mail to 
+      David Faure <faure at kde.org>, attaching your config.log])
+    fi 
+
+    AC_LANG_POP([C])
+
+  ])
+
+  eval "$ac_cv_ssl_version"
+  AC_MSG_RESULT($ssl_version)
+fi
+
+if test "$have_ssl" != yes; then
+  LIBSSL="";
+else
+  AC_DEFINE(HAVE_SSL, 1, [If we are going to use OpenSSL])
+  ac_cv_have_ssl="have_ssl=yes \
+    ac_ssl_includes=$ac_ssl_includes ac_ssl_libraries=$ac_ssl_libraries ac_ssl_rsaref=$ac_ssl_rsaref"
+  
+  
+  ssl_libraries="$ac_ssl_libraries"
+  ssl_includes="$ac_ssl_includes"
+
+  if test "$ac_ssl_rsaref" = yes; then
+    LIBSSL="-lssl -lcrypto -lRSAglue -lrsaref" 
+  fi
+
+  if test $ssl_version = "old"; then
+    AC_DEFINE(HAVE_OLD_SSL_API, 1, [Define if you have OpenSSL < 0.9.6])
+  fi
+fi
+
+if test "$ssl_includes" = "/usr/include" || test  "$ssl_includes" = "/usr/local/include" || test -z "$ssl_includes"; then
+ SSL_INCLUDES="";
+else
+ SSL_INCLUDES="-I$ssl_includes"
+fi
+
+if test "$ssl_libraries" = "/usr/lib" || test "$ssl_libraries" = "/usr/local/lib" || test -z "$ssl_libraries"; then
+ SSL_LDFLAGS=""
+else
+ SSL_LDFLAGS="-L$ssl_libraries -R$ssl_libraries"
+fi
+
+AC_SUBST(SSL_INCLUDES)
+AC_SUBST(SSL_LDFLAGS)
+AC_SUBST(LIBSSL)
+])
+
+AC_DEFUN([KDE_CHECK_STRLCPY],
+[
+  AC_CHECK_STRLCPY
+  AC_CHECK_STRLCAT
+  AC_CHECK_SIZEOF(size_t)
+  AC_CHECK_SIZEOF(unsigned long)
+
+  AC_MSG_CHECKING([sizeof(size_t) == sizeof(unsigned long)])
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[
+    #if SIZEOF_SIZE_T != SIZEOF_UNSIGNED_LONG
+       choke me
+    #endif
+    ]])],[AC_MSG_RESULT([yes])],[
+      AC_MSG_RESULT([no])
+      AC_MSG_ERROR([
+       Apparently on your system our assumption sizeof(size_t) == sizeof(unsigned long)
+       does not apply. Oops.
+      ])
+  ])
+])
+
+

Added: kde-extras/tora/branches/upstream/current/config/m4/tora.m4
===================================================================
--- kde-extras/tora/branches/upstream/current/config/m4/tora.m4	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/m4/tora.m4	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+##   -*- mode: autoconf; tab-width: 2; -*-
+
+
+dnl mrj: set default prefix for tora
+AC_DEFUN([mrj_SET_PREFIX],
+[
+    AC_PREFIX_DEFAULT(/usr/local/tora)
+])
+
+AC_DEFUN([TORA_CHECK_PLUGIN],
+[
+  AC_MSG_CHECKING([enable plugin support])
+  AC_ARG_ENABLE(plugin,
+  [  --enable-plugin         enable support for plugins. (default no)],
+  [ enable_plugin=yes ],
+  [ enable_plugin=no ])
+
+  AC_MSG_RESULT($enable_plugin)
+])
+
+AC_DEFUN([TORA_CHECK_MONO],
+[
+  AC_MSG_CHECKING([if monolithic build])
+  AC_ARG_ENABLE(mono,
+  [  --enable-mono           build monolithic (default no)],
+  [ enable_mono=yes ],
+  [ enable_mono=yes ])
+
+  if test $enable_mono = no; then
+    enable_plugin=no
+  fi
+
+  if test $enable_plugin != yes; then
+    AC_DEFINE(TOMONOLITHIC, 1, [True if using monolithic build.])
+  fi
+
+  AC_MSG_RESULT($enable_mono)
+])
+
+dnl check if we need to link against our libtool libraries
+AC_DEFUN([TORA_CHECK_LINK_LIBS],
+[
+  AC_MSG_CHECKING([whether to link plugins into binary])
+
+  if test $enable_plugin = no && test $enable_mono = no; then
+    AC_MSG_RESULT([need link])
+    TORA_LINK_OTHERS=lib_LTLIBRARIES
+    AC_SUBST(TORA_LINK_OTHERS)
+  else
+    AC_MSG_RESULT(no)
+    TORA_LINK_OTHERS=none
+    AC_SUBST(TORA_LINK_OTHERS)
+  fi
+])
+
+AC_DEFUN([TORA_LIBTOOL_ALL],
+[
+  AC_LIBTOOL_DLOPEN
+  dnl AC_LIB_LTDL
+  dnl AC_SUBST(LTDLINCL)
+  dnl AC_SUBST(LIBLTDL)
+  dnl AC_DEFINE(HAVE_LTDL, 1, [Always set when using autotools build.])
+  dnl check for dlopen, must be called before AC_PROG_LIBTOOL
+  AC_PROG_LIBTOOL
+  AC_SUBST([LIBTOOL_DEPS])
+])
+
+

Added: kde-extras/tora/branches/upstream/current/config/missing
===================================================================
--- kde-extras/tora/branches/upstream/current/config/missing	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/missing	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,360 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2005-06-08.21
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
+#   Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+msg="missing on your system"
+
+case "$1" in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  # Exit code 63 means version mismatch.  This often happens
+  # when the user try to use an ancient version of a tool on
+  # a file that requires a minimum version.  In this case we
+  # we should proceed has if the program had been absent, or
+  # if --run hadn't been passed.
+  if test $? = 63; then
+    run=:
+    msg="probably too old"
+  fi
+  ;;
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
+
+Send bug reports to <bug-automake at gnu.org>."
+    exit $?
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing $scriptversion (GNU Automake)"
+    exit $?
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+esac
+
+# Now exit if we have it, but it failed.  Also exit now if we
+# don't have it and --version was passed (most likely to detect
+# the program).
+case "$1" in
+  lex|yacc)
+    # Not GNU programs, they don't have --version.
+    ;;
+
+  tar)
+    if test -n "$run"; then
+       echo 1>&2 "ERROR: \`tar' requires --run"
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       exit 1
+    fi
+    ;;
+
+  *)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
+       # Could not run --version or --help.  This is probably someone
+       # running `$TOOL --version' or `$TOOL --help' to check whether
+       # $TOOL exists and not knowing $TOOL uses missing.
+       exit 1
+    fi
+    ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+  aclocal*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case "$f" in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, but is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' $msg.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f y.tab.h ]; then
+	echo >y.tab.h
+    fi
+    if [ ! -f y.tab.c ]; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f lex.yy.c ]; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+    fi
+    if [ -f "$file" ]; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit 1
+    fi
+    ;;
+
+  makeinfo)
+    echo 1>&2 "\
+WARNING: \`$1' is $msg.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    # The file to touch is that specified with -o ...
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      # ... or it is the one specified with @setfilename ...
+      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
+      # ... or it is derived from the source name (dir/f.texi becomes f.info)
+      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+    fi
+    # If the file does not exist, the user really needs makeinfo;
+    # let's fail without touching anything.
+    test -f $file || exit 1
+    touch $file
+    ;;
+
+  tar)
+    shift
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case "$firstarg" in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case "$firstarg" in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and is $msg.
+         You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:


Property changes on: kde-extras/tora/branches/upstream/current/config/missing
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/config/mkinstalldirs
===================================================================
--- kde-extras/tora/branches/upstream/current/config/mkinstalldirs	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/mkinstalldirs	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,158 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+
+scriptversion=2005-06-29.22
+
+# Original author: Noah Friedman <friedman at prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain.
+#
+# This file is maintained in Automake, please report
+# bugs to <bug-automake at gnu.org> or send patches to
+# <automake-patches at gnu.org>.
+
+errstatus=0
+dirmode=
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
+
+Create each directory DIR (with mode MODE, if specified), including all
+leading file name components.
+
+Report bugs to <bug-automake at gnu.org>."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage"
+      exit $?
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --version)
+      echo "$0 $scriptversion"
+      exit $?
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+# Solaris 8's mkdir -p isn't thread-safe.  If you mkdir -p a/b and
+# mkdir -p a/c at the same time, both will detect that a is missing,
+# one will create a, then the other will try to create a and die with
+# a "File exists" error.  This is a problem when calling mkinstalldirs
+# from a parallel make.  We use --version in the probe to restrict
+# ourselves to GNU mkdir, which is thread-safe.
+case $dirmode in
+  '')
+    if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    else
+      # On NextStep and OpenStep, the `mkdir' command does not
+      # recognize any option.  It will interpret all options as
+      # directories to create, and then abort because `.' already
+      # exists.
+      test -d ./-p && rmdir ./-p
+      test -d ./--version && rmdir ./--version
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 &&
+       test ! -d ./--version; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    else
+      # Clean up after NextStep and OpenStep mkdir.
+      for d in ./-m ./-p ./--version "./$dirmode";
+      do
+        test -d $d && rmdir $d
+      done
+    fi
+    ;;
+esac
+
+for file
+do
+  case $file in
+    /*) pathcomp=/ ;;
+    *)  pathcomp= ;;
+  esac
+  oIFS=$IFS
+  IFS=/
+  set fnord $file
+  shift
+  IFS=$oIFS
+
+  for d
+  do
+    test "x$d" = x && continue
+
+    pathcomp=$pathcomp$d
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+	errstatus=$lasterr
+      else
+	if test ! -z "$dirmode"; then
+	  echo "chmod $dirmode $pathcomp"
+	  lasterr=
+	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+	  if test ! -z "$lasterr"; then
+	    errstatus=$lasterr
+	  fi
+	fi
+      fi
+    fi
+
+    pathcomp=$pathcomp/
+  done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-end: "$"
+# End:


Property changes on: kde-extras/tora/branches/upstream/current/config/mkinstalldirs
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/config/texinfo.tex
===================================================================
--- kde-extras/tora/branches/upstream/current/config/texinfo.tex	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config/texinfo.tex	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,7210 @@
+% texinfo.tex -- TeX macros to handle Texinfo files.
+%
+% Load plain if necessary, i.e., if running under initex.
+\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
+%
+\def\texinfoversion{2005-07-05.19}
+%
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software
+% Foundation, Inc.
+%
+% This texinfo.tex file is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public License as
+% published by the Free Software Foundation; either version 2, or (at
+% your option) any later version.
+%
+% This texinfo.tex file is distributed in the hope that it will be
+% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+% General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this texinfo.tex file; see the file COPYING.  If not, write
+% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+% Boston, MA 02110-1301, USA.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction.  (This has been our intent since Texinfo was invented.)
+%
+% Please try the latest version of texinfo.tex before submitting bug
+% reports; you can get the latest version from:
+%   http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
+%   ftp://tug.org/tex/texinfo.tex
+%     (and all CTAN mirrors, see http://www.ctan.org).
+% The texinfo.tex in any given distribution could well be out
+% of date, so if that's what you're using, please check.
+%
+% Send bug reports to bug-texinfo at gnu.org.  Please include including a
+% complete document in each bug report with which we can reproduce the
+% problem.  Patches are, of course, greatly appreciated.
+%
+% To process a Texinfo manual with TeX, it's most reliable to use the
+% texi2dvi shell script that comes with the distribution.  For a simple
+% manual foo.texi, however, you can get away with this:
+%   tex foo.texi
+%   texindex foo.??
+%   tex foo.texi
+%   tex foo.texi
+%   dvips foo.dvi -o  # or whatever; this makes foo.ps.
+% The extra TeX runs get the cross-reference information correct.
+% Sometimes one run after texindex suffices, and sometimes you need more
+% than two; texi2dvi does it as many times as necessary.
+%
+% It is possible to adapt texinfo.tex for other languages, to some
+% extent.  You can get the existing language-specific files from the
+% full Texinfo distribution.
+%
+% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
+
+
+\message{Loading texinfo [version \texinfoversion]:}
+
+% If in a .fmt file, print the version number
+% and turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+\everyjob{\message{[Texinfo version \texinfoversion]}%
+  \catcode`+=\active \catcode`\_=\active}
+
+\message{Basics,}
+\chardef\other=12
+
+% We never want plain's \outer definition of \+ in Texinfo.
+% For @tex, we can use \tabalign.
+\let\+ = \relax
+
+% Save some plain tex macros whose names we will redefine.
+\let\ptexb=\b
+\let\ptexbullet=\bullet
+\let\ptexc=\c
+\let\ptexcomma=\,
+\let\ptexdot=\.
+\let\ptexdots=\dots
+\let\ptexend=\end
+\let\ptexequiv=\equiv
+\let\ptexexclam=\!
+\let\ptexfootnote=\footnote
+\let\ptexgtr=>
+\let\ptexhat=^
+\let\ptexi=\i
+\let\ptexindent=\indent
+\let\ptexinsert=\insert
+\let\ptexlbrace=\{
+\let\ptexless=<
+\let\ptexnewwrite\newwrite
+\let\ptexnoindent=\noindent
+\let\ptexplus=+
+\let\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+
+% If this character appears in an error message or help string, it
+% starts a new line in the output.
+\newlinechar = `^^J
+
+% Use TeX 3.0's \inputlineno to get the line number, for better error
+% messages, but if we're using an old version of TeX, don't do anything.
+%
+\ifx\inputlineno\thisisundefined
+  \let\linenumber = \empty % Pre-3.0.
+\else
+  \def\linenumber{l.\the\inputlineno:\space}
+\fi
+
+% Set up fixed words for English if not already set.
+\ifx\putwordAppendix\undefined  \gdef\putwordAppendix{Appendix}\fi
+\ifx\putwordChapter\undefined   \gdef\putwordChapter{Chapter}\fi
+\ifx\putwordfile\undefined      \gdef\putwordfile{file}\fi
+\ifx\putwordin\undefined        \gdef\putwordin{in}\fi
+\ifx\putwordIndexIsEmpty\undefined     \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordInfo\undefined      \gdef\putwordInfo{Info}\fi
+\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
+\ifx\putwordMethodon\undefined  \gdef\putwordMethodon{Method on}\fi
+\ifx\putwordNoTitle\undefined   \gdef\putwordNoTitle{No Title}\fi
+\ifx\putwordof\undefined        \gdef\putwordof{of}\fi
+\ifx\putwordon\undefined        \gdef\putwordon{on}\fi
+\ifx\putwordpage\undefined      \gdef\putwordpage{page}\fi
+\ifx\putwordsection\undefined   \gdef\putwordsection{section}\fi
+\ifx\putwordSection\undefined   \gdef\putwordSection{Section}\fi
+\ifx\putwordsee\undefined       \gdef\putwordsee{see}\fi
+\ifx\putwordSee\undefined       \gdef\putwordSee{See}\fi
+\ifx\putwordShortTOC\undefined  \gdef\putwordShortTOC{Short Contents}\fi
+\ifx\putwordTOC\undefined       \gdef\putwordTOC{Table of Contents}\fi
+%
+\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
+\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
+\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
+\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
+\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
+\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
+\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
+\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
+\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
+\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
+\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
+\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
+%
+\ifx\putwordDefmac\undefined    \gdef\putwordDefmac{Macro}\fi
+\ifx\putwordDefspec\undefined   \gdef\putwordDefspec{Special Form}\fi
+\ifx\putwordDefvar\undefined    \gdef\putwordDefvar{Variable}\fi
+\ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
+\ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
+
+% In some macros, we cannot use the `\? notation---the left quote is
+% in some cases the escape char.
+\chardef\backChar  = `\\
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\plusChar  = `\+
+\chardef\questChar = `\?
+\chardef\semiChar  = `\;
+\chardef\underChar = `\_
+
+\chardef\spaceChar = `\ %
+\chardef\spacecat = 10
+\def\spaceisspace{\catcode\spaceChar=\spacecat}
+
+{% for help with debugging.
+ % example usage: \expandafter\show\activebackslash
+ \catcode`\! = 0 \catcode`\\ = \active
+ !global!def!activebackslash{\}
+}
+
+% Ignore a token.
+%
+\def\gobble#1{}
+
+% The following is used inside several \edef's.
+\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname}
+
+% Hyphenation fixes.
+\hyphenation{
+  Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script
+  ap-pen-dix bit-map bit-maps
+  data-base data-bases eshell fall-ing half-way long-est man-u-script
+  man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm
+  par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces
+  spell-ing spell-ings
+  stand-alone strong-est time-stamp time-stamps which-ever white-space
+  wide-spread wrap-around
+}
+
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt}
+
+% @| inserts a changebar to the left of the current line.  It should
+% surround any changed text.  This approach does *not* work if the
+% change spans more than two lines of output.  To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change).
+%
+\def\|{%
+  % \vadjust can only be used in horizontal mode.
+  \leavevmode
+  %
+  % Append this vertical mode material after the current line in the output.
+  \vadjust{%
+    % We want to insert a rule with the height and depth of the current
+    % leading; that is exactly what \strutbox is supposed to record.
+    \vskip-\baselineskip
+    %
+    % \vadjust-items are inserted at the left edge of the type.  So
+    % the \llap here moves out into the left-hand margin.
+    \llap{%
+      %
+      % For a thicker or thinner bar, change the `1pt'.
+      \vrule height\baselineskip width1pt
+      %
+      % This is the space between the bar and the text.
+      \hskip 12pt
+    }%
+  }%
+}
+
+% Sometimes it is convenient to have everything in the transcript file
+% and nothing on the terminal.  We don't just call \tracingall here,
+% since that produces some useless output on the terminal.  We also make
+% some effort to order the tracing commands to reduce output in the log
+% file; cf. trace.sty in LaTeX.
+%
+\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
+\def\loggingall{%
+  \tracingstats2
+  \tracingpages1
+  \tracinglostchars2  % 2 gives us more in etex
+  \tracingparagraphs1
+  \tracingoutput1
+  \tracingmacros2
+  \tracingrestores1
+  \showboxbreadth\maxdimen \showboxdepth\maxdimen
+  \ifx\eTeXversion\undefined\else % etex gives us more logging
+    \tracingscantokens1
+    \tracingifs1
+    \tracinggroups1
+    \tracingnesting2
+    \tracingassigns1
+  \fi
+  \tracingcommands3  % 3 gives us more in etex
+  \errorcontextlines16
+}%
+
+% add check for \lastpenalty to plain's definitions.  If the last thing
+% we did was a \nobreak, we don't want to insert more space.
+%
+\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
+  \removelastskip\penalty-50\smallskip\fi\fi}
+\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
+  \removelastskip\penalty-100\medskip\fi\fi}
+\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
+  \removelastskip\penalty-200\bigskip\fi\fi}
+
+% For @cropmarks command.
+% Do @cropmarks to get crop marks.
+%
+\newif\ifcropmarks
+\let\cropmarks = \cropmarkstrue
+%
+% Dimensions to add cropmarks at corners.
+% Added by P. A. MacKay, 12 Nov. 1986
+%
+\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
+\newdimen\cornerlong  \cornerlong=1pc
+\newdimen\cornerthick \cornerthick=.3pt
+\newdimen\topandbottommargin \topandbottommargin=.75in
+
+% Main output routine.
+\chardef\PAGE = 255
+\output = {\onepageout{\pagecontents\PAGE}}
+
+\newbox\headlinebox
+\newbox\footlinebox
+
+% \onepageout takes a vbox as an argument.  Note that \pagecontents
+% does insertions, but you have to call it yourself.
+\def\onepageout#1{%
+  \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
+  %
+  \ifodd\pageno  \advance\hoffset by \bindingoffset
+  \else \advance\hoffset by -\bindingoffset\fi
+  %
+  % Do this outside of the \shipout so @code etc. will be expanded in
+  % the headline as they should be, not taken literally (outputting ''code).
+  \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+  \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
+  %
+  {%
+    % Have to do this stuff outside the \shipout because we want it to
+    % take effect in \write's, yet the group defined by the \vbox ends
+    % before the \shipout runs.
+    %
+    \indexdummies         % don't expand commands in the output.
+    \shipout\vbox{%
+      % Do this early so pdf references go to the beginning of the page.
+      \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
+      %
+      \ifcropmarks \vbox to \outervsize\bgroup
+        \hsize = \outerhsize
+        \vskip-\topandbottommargin
+        \vtop to0pt{%
+          \line{\ewtop\hfil\ewtop}%
+          \nointerlineskip
+          \line{%
+            \vbox{\moveleft\cornerthick\nstop}%
+            \hfill
+            \vbox{\moveright\cornerthick\nstop}%
+          }%
+          \vss}%
+        \vskip\topandbottommargin
+        \line\bgroup
+          \hfil % center the page within the outer (page) hsize.
+          \ifodd\pageno\hskip\bindingoffset\fi
+          \vbox\bgroup
+      \fi
+      %
+      \unvbox\headlinebox
+      \pagebody{#1}%
+      \ifdim\ht\footlinebox > 0pt
+        % Only leave this space if the footline is nonempty.
+        % (We lessened \vsize for it in \oddfootingxxx.)
+        % The \baselineskip=24pt in plain's \makefootline has no effect.
+        \vskip 2\baselineskip
+        \unvbox\footlinebox
+      \fi
+      %
+      \ifcropmarks
+          \egroup % end of \vbox\bgroup
+        \hfil\egroup % end of (centering) \line\bgroup
+        \vskip\topandbottommargin plus1fill minus1fill
+        \boxmaxdepth = \cornerthick
+        \vbox to0pt{\vss
+          \line{%
+            \vbox{\moveleft\cornerthick\nsbot}%
+            \hfill
+            \vbox{\moveright\cornerthick\nsbot}%
+          }%
+          \nointerlineskip
+          \line{\ewbot\hfil\ewbot}%
+        }%
+      \egroup % \vbox from first cropmarks clause
+      \fi
+    }% end of \shipout\vbox
+  }% end of group with \indexdummies
+  \advancepageno
+  \ifnum\outputpenalty>-20000 \else\dosupereject\fi
+}
+
+\newinsert\margin \dimen\margin=\maxdimen
+
+\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
+{\catcode`\@ =11
+\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
+% marginal hacks, juha at viisa.uucp (Juha Takala)
+\ifvoid\margin\else % marginal info is present
+  \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
+\dimen@=\dp#1 \unvbox#1
+\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
+\ifr at ggedbottom \kern-\dimen@ \vfil \fi}
+}
+
+% Here are the rules for the cropmarks.  Note that they are
+% offset so that the space between them is truly \outerhsize or \outervsize
+% (P. A. MacKay, 12 November, 1986)
+%
+\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
+\def\nstop{\vbox
+  {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
+\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
+\def\nsbot{\vbox
+  {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
+
+% Parse an argument, then pass it to #1.  The argument is the rest of
+% the input line (except we remove a trailing comment).  #1 should be a
+% macro which expects an ordinary undelimited TeX argument.
+%
+\def\parsearg{\parseargusing{}}
+\def\parseargusing#1#2{%
+  \def\next{#2}%
+  \begingroup
+    \obeylines
+    \spaceisspace
+    #1%
+    \parseargline\empty% Insert the \empty token, see \finishparsearg below.
+}
+
+{\obeylines %
+  \gdef\parseargline#1^^M{%
+    \endgroup % End of the group started in \parsearg.
+    \argremovecomment #1\comment\ArgTerm%
+  }%
+}
+
+% First remove any @comment, then any @c comment.
+\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+
+% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space.
+%
+% \argremovec might leave us with trailing space, e.g.,
+%    @end itemize  @c foo
+% This space token undergoes the same procedure and is eventually removed
+% by \finishparsearg.
+%
+\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M}
+\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M}
+\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{%
+  \def\temp{#3}%
+  \ifx\temp\empty
+    % We cannot use \next here, as it holds the macro to run;
+    % thus we reuse \temp.
+    \let\temp\finishparsearg
+  \else
+    \let\temp\argcheckspaces
+  \fi
+  % Put the space token in:
+  \temp#1 #3\ArgTerm
+}
+
+% If a _delimited_ argument is enclosed in braces, they get stripped; so
+% to get _exactly_ the rest of the line, we had to prevent such situation.
+% We prepended an \empty token at the very beginning and we expand it now,
+% just before passing the control to \next.
+% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
+% either the null string, or it ends with \^^M---thus there is no danger
+% that a pair of braces would be stripped.
+%
+% But first, we have to remove the trailing space token.
+%
+\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}}
+
+% \parseargdef\foo{...}
+%	is roughly equivalent to
+% \def\foo{\parsearg\Xfoo}
+% \def\Xfoo#1{...}
+%
+% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
+% favourite TeX trick.  --kasal, 16nov03
+
+\def\parseargdef#1{%
+  \expandafter \doparseargdef \csname\string#1\endcsname #1%
+}
+\def\doparseargdef#1#2{%
+  \def#2{\parsearg#1}%
+  \def#1##1%
+}
+
+% Several utility definitions with active space:
+{
+  \obeyspaces
+  \gdef\obeyedspace{ }
+
+  % Make each space character in the input produce a normal interword
+  % space in the output.  Don't allow a line break at this space, as this
+  % is used only in environments like @example, where each line of input
+  % should produce a line of output anyway.
+  %
+  \gdef\sepspaces{\obeyspaces\let =\tie}
+
+  % If an index command is used in an @example environment, any spaces
+  % therein should become regular spaces in the raw index file, not the
+  % expansion of \tie (\leavevmode \penalty \@M \ ).
+  \gdef\unsepspaces{\let =\space}
+}
+
+
+\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
+
+% Define the framework for environments in texinfo.tex.  It's used like this:
+%
+%   \envdef\foo{...}
+%   \def\Efoo{...}
+%
+% It's the responsibility of \envdef to insert \begingroup before the
+% actual body; @end closes the group after calling \Efoo.  \envdef also
+% defines \thisenv, so the current environment is known; @end checks
+% whether the environment name matches.  The \checkenv macro can also be
+% used to check whether the current environment is the one expected.
+%
+% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
+% are not treated as enviroments; they don't open a group.  (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At runtime, environments start with this:
+\def\startenvironment#1{\begingroup\def\thisenv{#1}}
+% initialize
+\let\thisenv\empty
+
+% ... but they get defined via ``\envdef\foo{...}'':
+\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
+\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+
+% Check whether we're in the right environment:
+\def\checkenv#1{%
+  \def\temp{#1}%
+  \ifx\thisenv\temp
+  \else
+    \badenverr
+  \fi
+}
+
+% Evironment mismatch, #1 expected:
+\def\badenverr{%
+  \errhelp = \EMsimple
+  \errmessage{This command can appear only \inenvironment\temp,
+    not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+  \ifx#1\empty
+    out of any environment%
+  \else
+    in environment \expandafter\string#1%
+  \fi
+}
+
+% @end foo executes the definition of \Efoo.
+% But first, it executes a specialized version of \checkenv
+%
+\parseargdef\end{%
+  \if 1\csname iscond.#1\endcsname
+  \else
+    % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+    \expandafter\checkenv\csname#1\endcsname
+    \csname E#1\endcsname
+    \endgroup
+  \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
+\def\@{{\tt\char64}}
+
+% This is turned off because it was never documented
+% and you can use @w{...} around a quote to suppress ligatures.
+%% Define @` and @' to be the same as ` and '
+%% but suppressing ligatures.
+%\def\`{{`}}
+%\def\'{{'}}
+
+% Used to generate quoted braces.
+\def\mylbrace {{\tt\char123}}
+\def\myrbrace {{\tt\char125}}
+\let\{=\mylbrace
+\let\}=\myrbrace
+\begingroup
+  % Definitions to produce \{ and \} commands for indices,
+  % and @{ and @} for the aux/toc files.
+  \catcode`\{ = \other \catcode`\} = \other
+  \catcode`\[ = 1 \catcode`\] = 2
+  \catcode`\! = 0 \catcode`\\ = \other
+  !gdef!lbracecmd[\{]%
+  !gdef!rbracecmd[\}]%
+  !gdef!lbraceatcmd[@{]%
+  !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \c
+\let\dotaccent = \.
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \t
+\let\ubaraccent = \b
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+  \def\temp{#1}%
+  \ifx\temp\imacro \ptexi
+  \else\ifx\temp\jmacro \j
+  \else \errmessage{@dotless can be used only with i or j}%
+  \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence.  (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo.  Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+  L\kern-.36em
+  {\setbox0=\hbox{T}%
+   \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
+  \kern-.15em
+  \TeX
+}
+
+% Be sure we're in horizontal mode when doing a tie, since we make space
+% equivalent to this in @example-like environments. Otherwise, a space
+% at the beginning of a line will start with \penalty -- and
+% since \penalty is valid in vertical mode, we'd end up putting the
+% penalty on the vertical list instead of in the new paragraph.
+{\catcode`@ = 11
+ % Avoid using \@M directly, because that causes trouble
+ % if the definition is written into an index file.
+ \global\let\tiepenalty = \@M
+ \gdef\tie{\leavevmode\penalty\tiepenalty\ }
+}
+
+% @: forces normal size whitespace following.
+\def\:{\spacefactor=1000 }
+
+% @* forces a line break.
+\def\*{\hfil\break\hbox{}\ignorespaces}
+
+% @/ allows a line break.
+\let\/=\allowbreak
+
+% @. is an end-of-sentence period.
+\def\.{.\spacefactor=\endofsentencespacefactor\space}
+
+% @! is an end-of-sentence bang.
+\def\!{!\spacefactor=\endofsentencespacefactor\space}
+
+% @? is an end-of-sentence query.
+\def\?{?\spacefactor=\endofsentencespacefactor\space}
+
+% @frenchspacing on|off  says whether to put extra space after punctuation.
+% 
+\def\onword{on}
+\def\offword{off}
+%
+\parseargdef\frenchspacing{%
+  \def\temp{#1}%
+  \ifx\temp\onword \plainfrenchspacing
+  \else\ifx\temp\offword \plainnonfrenchspacing
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+  \fi\fi
+}
+
+% @w prevents a word break.  Without the \leavevmode, @w at the
+% beginning of a paragraph, when TeX is still in vertical mode, would
+% produce a whole line of output instead of starting the paragraph.
+\def\w#1{\leavevmode\hbox{#1}}
+
+% @group ... @end group forces ... to be all on one page, by enclosing
+% it in a TeX vbox.  We use \vtop instead of \vbox to construct the box
+% to keep its height that of a normal line.  According to the rules for
+% \topskip (p.114 of the TeXbook), the glue inserted is
+% max (\topskip - \ht (first item), 0).  If that height is large,
+% therefore, no glue is inserted, and the space between the headline and
+% the text is small, which looks bad.
+%
+% Another complication is that the group might be very large.  This can
+% cause the glue on the previous page to be unduly stretched, because it
+% does not have much material.  In this case, it's better to add an
+% explicit \vfill so that the extra space is at the bottom.  The
+% threshold for doing this is if the group is more than \vfilllimit
+% percent of a page (\vfilllimit can be changed inside of @tex).
+%
+\newbox\groupbox
+\def\vfilllimit{0.7}
+%
+\envdef\group{%
+  \ifnum\catcode`\^^M=\active \else
+    \errhelp = \groupinvalidhelp
+    \errmessage{@group invalid in context where filling is enabled}%
+  \fi
+  \startsavinginserts
+  %
+  \setbox\groupbox = \vtop\bgroup
+    % Do @comment since we are called inside an environment such as
+    % @example, where each end-of-line in the input causes an
+    % end-of-line in the output.  We don't want the end-of-line after
+    % the `@group' to put extra space in the output.  Since @group
+    % should appear on a line by itself (according to the Texinfo
+    % manual), we don't worry about eating any user text.
+    \comment
+}
+%
+% The \vtop produces a box with normal height and large depth; thus, TeX puts
+% \baselineskip glue before it, and (when the next line of text is done)
+% \lineskip glue after it.  Thus, space below is not quite equal to space
+% above.  But it's pretty close.
+\def\Egroup{%
+    % To get correct interline space between the last line of the group
+    % and the first line afterwards, we have to propagate \prevdepth.
+    \endgraf % Not \par, as it may have been set to \lisppar.
+    \global\dimen1 = \prevdepth
+  \egroup           % End the \vtop.
+  % \dimen0 is the vertical size of the group's box.
+  \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
+  % \dimen2 is how much space is left on the page (more or less).
+  \dimen2 = \pageheight   \advance\dimen2 by -\pagetotal
+  % if the group doesn't fit on the current page, and it's a big big
+  % group, force a page break.
+  \ifdim \dimen0 > \dimen2
+    \ifdim \pagetotal < \vfilllimit\pageheight
+      \page
+    \fi
+  \fi
+  \box\groupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+%
+% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
+% message, so this ends up printing `@group can only ...'.
+%
+\newhelp\groupinvalidhelp{%
+group can only be used in environments such as @example,^^J%
+where each line of input produces a line of output.}
+
+% @need space-in-mils
+% forces a page break if there is not space-in-mils remaining.
+
+\newdimen\mil  \mil=0.001in
+
+% Old definition--didn't work.
+%\parseargdef\need{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
+%\prevdepth=-1000pt
+%}}
+
+\parseargdef\need{%
+  % Ensure vertical mode, so we don't make a big box in the middle of a
+  % paragraph.
+  \par
+  %
+  % If the @need value is less than one line space, it's useless.
+  \dimen0 = #1\mil
+  \dimen2 = \ht\strutbox
+  \advance\dimen2 by \dp\strutbox
+  \ifdim\dimen0 > \dimen2
+    %
+    % Do a \strut just to make the height of this box be normal, so the
+    % normal leading is inserted relative to the preceding line.
+    % And a page break here is fine.
+    \vtop to #1\mil{\strut\vfil}%
+    %
+    % TeX does not even consider page breaks if a penalty added to the
+    % main vertical list is 10000 or more.  But in order to see if the
+    % empty box we just added fits on the page, we must make it consider
+    % page breaks.  On the other hand, we don't want to actually break the
+    % page after the empty box.  So we use a penalty of 9999.
+    %
+    % There is an extremely small chance that TeX will actually break the
+    % page at this \penalty, if there are no other feasible breakpoints in
+    % sight.  (If the user is using lots of big @group commands, which
+    % almost-but-not-quite fill up a page, TeX will have a hard time doing
+    % good page breaking, for example.)  However, I could not construct an
+    % example where a page broke at this \penalty; if it happens in a real
+    % document, then we can reconsider our strategy.
+    \penalty9999
+    %
+    % Back up by the size of the box, whether we did a page break or not.
+    \kern -#1\mil
+    %
+    % Do not allow a page break right after this kern.
+    \nobreak
+  \fi
+}
+
+% @br   forces paragraph break (and is undocumented).
+
+\let\br = \par
+
+% @page forces the start of a new page.
+%
+\def\page{\par\vfill\supereject}
+
+% @exdent text....
+% outputs text on separate line in roman font, starting at standard page margin
+
+% This records the amount of indent in the innermost environment.
+% That's how much \exdent should take out.
+\newskip\exdentamount
+
+% This defn is used inside fill environments such as @defun.
+\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}
+
+% This defn is used inside nofill environments such as @example.
+\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount
+  \leftline{\hskip\leftskip{\rm#1}}}}
+
+% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
+% paragraph.  For more general purposes, use the \margin insertion
+% class.  WHICH is `l' or `r'.
+%
+\newskip\inmarginspacing \inmarginspacing=1cm
+\def\strutdepth{\dp\strutbox}
+%
+\def\doinmargin#1#2{\strut\vadjust{%
+  \nobreak
+  \kern-\strutdepth
+  \vtop to \strutdepth{%
+    \baselineskip=\strutdepth
+    \vss
+    % if you have multiple lines of stuff to put here, you'll need to
+    % make the vbox yourself of the appropriate size.
+    \ifx#1l%
+      \llap{\ignorespaces #2\hskip\inmarginspacing}%
+    \else
+      \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
+    \fi
+    \null
+  }%
+}}
+\def\inleftmargin{\doinmargin l}
+\def\inrightmargin{\doinmargin r}
+%
+% @inmargin{TEXT [, RIGHT-TEXT]}
+% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
+% else use TEXT for both).
+%
+\def\inmargin#1{\parseinmargin #1,,\finish}
+\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
+  \setbox0 = \hbox{\ignorespaces #2}%
+  \ifdim\wd0 > 0pt
+    \def\lefttext{#1}%  have both texts
+    \def\righttext{#2}%
+  \else
+    \def\lefttext{#1}%  have only one text
+    \def\righttext{#1}%
+  \fi
+  %
+  \ifodd\pageno
+    \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
+  \else
+    \def\temp{\inleftmargin\lefttext}%
+  \fi
+  \temp
+}
+
+% @include file    insert text of that file as input.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+  \pushthisfilestack
+  \def\thisfile{#1}%
+  {%
+    \makevalueexpandable
+    \def\temp{\input #1 }%
+    \expandafter
+  }\temp
+  \popthisfilestack
+}
+\def\filenamecatcodes{%
+  \catcode`\\=\other
+  \catcode`~=\other
+  \catcode`^=\other
+  \catcode`_=\other
+  \catcode`|=\other
+  \catcode`<=\other
+  \catcode`>=\other
+  \catcode`+=\other
+  \catcode`-=\other
+}
+
+\def\pushthisfilestack{%
+  \expandafter\pushthisfilestackX\popthisfilestack\StackTerm
+}
+\def\pushthisfilestackX{%
+  \expandafter\pushthisfilestackY\thisfile\StackTerm
+}
+\def\pushthisfilestackY #1\StackTerm #2\StackTerm {%
+  \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}%
+}
+
+\def\popthisfilestack{\errthisfilestackempty}
+\def\errthisfilestackempty{\errmessage{Internal error:
+  the stack of filenames is empty.}}
+
+\def\thisfile{}
+
+% @center line
+% outputs that line, centered.
+%
+\parseargdef\center{%
+  \ifhmode
+    \let\next\centerH
+  \else
+    \let\next\centerV
+  \fi
+  \next{\hfil \ignorespaces#1\unskip \hfil}%
+}
+\def\centerH#1{%
+  {%
+    \hfil\break
+    \advance\hsize by -\leftskip
+    \advance\hsize by -\rightskip
+    \line{#1}%
+    \break
+  }%
+}
+\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
+
+% @sp n   outputs n lines of vertical space
+
+\parseargdef\sp{\vskip #1\baselineskip}
+
+% @comment ...line which is ignored...
+% @c is the same as @comment
+% @ignore ... @end ignore  is another way to write a comment
+
+\def\comment{\begingroup \catcode`\^^M=\other%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
+\commentxxx}
+{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
+
+\let\c=\comment
+
+% @paragraphindent NCHARS
+% We'll use ems for NCHARS, close enough.
+% NCHARS can also be the word `asis' or `none'.
+% We cannot feasibly implement @paragraphindent asis, though.
+%
+\def\asisword{asis} % no translation, these are keywords
+\def\noneword{none}
+%
+\parseargdef\paragraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \defaultparindent = 0pt
+    \else
+      \defaultparindent = #1em
+    \fi
+  \fi
+  \parindent = \defaultparindent
+}
+
+% @exampleindent NCHARS
+% We'll use ems for NCHARS like @paragraphindent.
+% It seems @exampleindent asis isn't necessary, but
+% I preserve it to make it similar to @paragraphindent.
+\parseargdef\exampleindent{%
+  \def\temp{#1}%
+  \ifx\temp\asisword
+  \else
+    \ifx\temp\noneword
+      \lispnarrowing = 0pt
+    \else
+      \lispnarrowing = #1em
+    \fi
+  \fi
+}
+
+% @firstparagraphindent WORD
+% If WORD is `none', then suppress indentation of the first paragraph
+% after a section heading.  If WORD is `insert', then do indent at such
+% paragraphs.
+%
+% The paragraph indentation is suppressed or not by calling
+% \suppressfirstparagraphindent, which the sectioning commands do.
+% We switch the definition of this back and forth according to WORD.
+% By default, we suppress indentation.
+%
+\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
+\def\insertword{insert}
+%
+\parseargdef\firstparagraphindent{%
+  \def\temp{#1}%
+  \ifx\temp\noneword
+    \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent
+  \else\ifx\temp\insertword
+    \let\suppressfirstparagraphindent = \relax
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @firstparagraphindent option `\temp'}%
+  \fi\fi
+}
+
+% Here is how we actually suppress indentation.  Redefine \everypar to
+% \kern backwards by \parindent, and then reset itself to empty.
+%
+% We also make \indent itself not actually do anything until the next
+% paragraph.
+%
+\gdef\dosuppressfirstparagraphindent{%
+  \gdef\indent{%
+    \restorefirstparagraphindent
+    \indent
+  }%
+  \gdef\noindent{%
+    \restorefirstparagraphindent
+    \noindent
+  }%
+  \global\everypar = {%
+    \kern -\parindent
+    \restorefirstparagraphindent
+  }%
+}
+
+\gdef\restorefirstparagraphindent{%
+  \global \let \indent = \ptexindent
+  \global \let \noindent = \ptexnoindent
+  \global \everypar = {}%
+}
+
+
+% @asis just yields its argument.  Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}.  So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+  \catcode\underChar = \active
+  \gdef\mathunderscore{%
+    \catcode\underChar=\active
+    \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+  }
+}
+% Another complication: we want \\ (and @\) to output a \ character.
+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
+% this is not advertised and we don't care.  Texinfo does not
+% otherwise define @\.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+  \tex
+  \mathunderscore
+  \let\\ = \mathbackslash
+  \mathactive
+  $\finishmath
+}
+\def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+  \catcode`^ = \active
+  \catcode`< = \active
+  \catcode`> = \active
+  \catcode`+ = \active
+  \gdef\mathactive{%
+    \let^ = \ptexhat
+    \let< = \ptexless
+    \let> = \ptexgtr
+    \let+ = \ptexplus
+  }
+}
+
+% @bullet and @minus need the same treatment as @math, just above.
+\def\bullet{$\ptexbullet$}
+\def\minus{$-$}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in a typewriter
+% font as three actual period characters.
+%
+\def\dots{%
+  \leavevmode
+  \hbox to 1.5em{%
+    \hskip 0pt plus 0.25fil
+    .\hfil.\hfil.%
+    \hskip 0pt plus 0.5fil
+  }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+  \dots
+  \spacefactor=\endofsentencespacefactor
+}
+
+% @comma{} is so commas can be inserted into text without messing up
+% Texinfo's parsing.
+%
+\let\comma = ,
+
+% @refill is a no-op.
+\let\refill=\relax
+
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate (before @setfilename).
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% @setfilename is done at the beginning of every texinfo file.
+% So open here the files we need to have open while reading the input.
+% This makes it possible to make a .fmt file for texinfo.
+\def\setfilename{%
+   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
+   \iflinks
+     \tryauxfile
+     % Open the new aux file.  TeX will close it automatically at exit.
+     \immediate\openout\auxfile=\jobname.aux
+   \fi % \openindices needs to do some work in any case.
+   \openindices
+   \let\setfilename=\comment % Ignore extra @setfilename cmds.
+   %
+   % If texinfo.cnf is present on the system, read it.
+   % Useful for site-wide @afourpaper, etc.
+   \openin 1 texinfo.cnf
+   \ifeof 1 \else \input texinfo.cnf \fi
+   \closein 1
+   %
+   \comment % Ignore the actual filename.
+}
+
+% Called from \setfilename.
+%
+\def\openindices{%
+  \newindex{cp}%
+  \newcodeindex{fn}%
+  \newcodeindex{vr}%
+  \newcodeindex{tp}%
+  \newcodeindex{ky}%
+  \newcodeindex{pg}%
+}
+
+% @bye.
+\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
+
+
+\message{pdf,}
+% adobe `portable' document format
+\newcount\tempnum
+\newcount\lnkcount
+\newtoks\filename
+\newcount\filenamelength
+\newcount\pgn
+\newtoks\toksA
+\newtoks\toksB
+\newtoks\toksC
+\newtoks\toksD
+\newbox\boxA
+\newcount\countA
+\newif\ifpdf
+\newif\ifpdfmakepagedest
+
+% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
+% can be set).  So we test for \relax and 0 as well as \undefined,
+% borrowed from ifpdf.sty.
+\ifx\pdfoutput\undefined
+\else
+  \ifx\pdfoutput\relax
+  \else
+    \ifcase\pdfoutput
+    \else
+      \pdftrue
+    \fi
+  \fi
+\fi
+
+% PDF uses PostScript string constants for the names of xref targets, to
+% for display in the outlines, and in other places.  Thus, we have to
+% double any backslashes.  Otherwise, a name like "\node" will be
+% interpreted as a newline (\n), followed by o, d, e.  Not good.
+% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
+% (and related messages, the final outcome is that it is up to the TeX
+% user to double the backslashes and otherwise make the string valid, so
+% that's we do).
+
+% double active backslashes.
+% 
+{\catcode`\@=0 \catcode`\\=\active
+ @gdef at activebackslash{@catcode`@\=@active @otherbackslash}
+ @gdef at activebackslashdouble{%
+   @catcode at backChar=@active
+   @let\=@doublebackslash}
+}
+
+% To handle parens, we must adopt a different approach, since parens are
+% not active characters.  hyperref.dtx (which has the same problem as
+% us) handles it with this amazing macro to replace tokens.  I've
+% tinkered with it a little for texinfo, but it's definitely from there.
+% 
+% #1 is the tokens to replace.
+% #2 is the replacement.
+% #3 is the control sequence with the string.
+% 
+\def\HyPsdSubst#1#2#3{%
+  \def\HyPsdReplace##1#1##2\END{%
+    ##1%
+    \ifx\\##2\\%
+    \else
+      #2%
+      \HyReturnAfterFi{%
+        \HyPsdReplace##2\END
+      }%
+    \fi
+  }%
+  \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
+}
+\long\def\HyReturnAfterFi#1\fi{\fi#1}
+
+% #1 is a control sequence in which to do the replacements.
+\def\backslashparens#1{%
+  \xdef#1{#1}% redefine it as its expansion; the definition is simply
+             % \lastnode when called from \setref -> \pdfmkdest.
+  \HyPsdSubst{(}{\backslashlparen}{#1}%
+  \HyPsdSubst{)}{\backslashrparen}{#1}%
+}
+
+{\catcode\exclamChar = 0 \catcode\backChar = \other
+ !gdef!backslashlparen{\(}%
+ !gdef!backslashrparen{\)}%
+}
+
+\ifpdf
+  \input pdfcolor
+  \pdfcatalog{/PageMode /UseOutlines}%
+  \def\dopdfimage#1#2#3{%
+    \def\imagewidth{#2}%
+    \def\imageheight{#3}%
+    % without \immediate, pdftex seg faults when the same image is
+    % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
+    \ifnum\pdftexversion < 14
+      \immediate\pdfimage
+    \else
+      \immediate\pdfximage
+    \fi
+      \ifx\empty\imagewidth\else width \imagewidth \fi
+      \ifx\empty\imageheight\else height \imageheight \fi
+      \ifnum\pdftexversion<13
+         #1.pdf%
+       \else
+         {#1.pdf}%
+       \fi
+    \ifnum\pdftexversion < 14 \else
+      \pdfrefximage \pdflastximage
+    \fi}
+  \def\pdfmkdest#1{{%
+    % We have to set dummies so commands such as @code, and characters
+    % such as \, aren't expanded when present in a section title.
+    \atdummies
+    \activebackslashdouble
+    \def\pdfdestname{#1}%
+    \backslashparens\pdfdestname
+    \pdfdest name{\pdfdestname} xyz%
+  }}%
+  %
+  % used to mark target names; must be expandable.
+  \def\pdfmkpgn#1{#1}%
+  %
+  \let\linkcolor = \Blue  % was Cyan, but that seems light?
+  \def\endlink{\Black\pdfendlink}
+  % Adding outlines to PDF; macros for calculating structure of outlines
+  % come from Petr Olsak
+  \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
+    \else \csname#1\endcsname \fi}
+  \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
+    \advance\tempnum by 1
+    \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
+  %
+  % #1 is the section text, which is what will be displayed in the
+  % outline by the pdf viewer.  #2 is the pdf expression for the number
+  % of subentries (or empty, for subsubsections).  #3 is the node text,
+  % which might be empty if this toc entry had no corresponding node.
+  % #4 is the page number
+  %
+  \def\dopdfoutline#1#2#3#4{%
+    % Generate a link to the node text if that exists; else, use the
+    % page number.  We could generate a destination for the section
+    % text in the case where a section has no node, but it doesn't
+    % seem worth the trouble, since most documents are normally structured.
+    \def\pdfoutlinedest{#3}%
+    \ifx\pdfoutlinedest\empty
+      \def\pdfoutlinedest{#4}%
+    \else
+      % Doubled backslashes in the name.
+      {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
+       \backslashparens\pdfoutlinedest}%
+    \fi
+    %
+    % Also double the backslashes in the display string.
+    {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
+     \backslashparens\pdfoutlinetext}%
+    %
+    \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
+  }
+  %
+  \def\pdfmakeoutlines{%
+    \begingroup
+      % Thanh's hack / proper braces in bookmarks
+      \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
+      \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
+      %
+      % Read toc silently, to get counts of subentries for \pdfoutline.
+      \def\numchapentry##1##2##3##4{%
+	\def\thischapnum{##2}%
+	\def\thissecnum{0}%
+	\def\thissubsecnum{0}%
+      }%
+      \def\numsecentry##1##2##3##4{%
+	\advancenumber{chap\thischapnum}%
+	\def\thissecnum{##2}%
+	\def\thissubsecnum{0}%
+      }%
+      \def\numsubsecentry##1##2##3##4{%
+	\advancenumber{sec\thissecnum}%
+	\def\thissubsecnum{##2}%
+      }%
+      \def\numsubsubsecentry##1##2##3##4{%
+	\advancenumber{subsec\thissubsecnum}%
+      }%
+      \def\thischapnum{0}%
+      \def\thissecnum{0}%
+      \def\thissubsecnum{0}%
+      %
+      % use \def rather than \let here because we redefine \chapentry et
+      % al. a second time, below.
+      \def\appentry{\numchapentry}%
+      \def\appsecentry{\numsecentry}%
+      \def\appsubsecentry{\numsubsecentry}%
+      \def\appsubsubsecentry{\numsubsubsecentry}%
+      \def\unnchapentry{\numchapentry}%
+      \def\unnsecentry{\numsecentry}%
+      \def\unnsubsecentry{\numsubsecentry}%
+      \def\unnsubsubsecentry{\numsubsubsecentry}%
+      \readdatafile{toc}%
+      %
+      % Read toc second time, this time actually producing the outlines.
+      % The `-' means take the \expnumber as the absolute number of
+      % subentries, which we calculated on our first read of the .toc above.
+      %
+      % We use the node names as the destinations.
+      \def\numchapentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}%
+      \def\numsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}%
+      \def\numsubsecentry##1##2##3##4{%
+        \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}%
+      \def\numsubsubsecentry##1##2##3##4{% count is always zero
+        \dopdfoutline{##1}{}{##3}{##4}}%
+      %
+      % PDF outlines are displayed using system fonts, instead of
+      % document fonts.  Therefore we cannot use special characters,
+      % since the encoding is unknown.  For example, the eogonek from
+      % Latin 2 (0xea) gets translated to a | character.  Info from
+      % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
+      %
+      % xx to do this right, we have to translate 8-bit characters to
+      % their "best" equivalent, based on the @documentencoding.  Right
+      % now, I guess we'll just let the pdf reader have its way.
+      \indexnofonts
+      \setupdatafile
+      \activebackslash
+      \input \jobname.toc
+    \endgroup
+  }
+  %
+  \def\skipspaces#1{\def\PP{#1}\def\D{|}%
+    \ifx\PP\D\let\nextsp\relax
+    \else\let\nextsp\skipspaces
+      \ifx\p\space\else\addtokens{\filename}{\PP}%
+        \advance\filenamelength by 1
+      \fi
+    \fi
+    \nextsp}
+  \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+  \ifnum\pdftexversion < 14
+    \let \startlink \pdfannotlink
+  \else
+    \let \startlink \pdfstartlink
+  \fi
+  \def\pdfurl#1{%
+    \begingroup
+      \normalturnoffactive\def\@{@}%
+      \makevalueexpandable
+      \leavevmode\Red
+      \startlink attr{/Border [0 0 0]}%
+        user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
+    \endgroup}
+  \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
+  \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
+  \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
+  \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
+  \def\maketoks{%
+    \expandafter\poptoks\the\toksA|ENDTOKS|\relax
+    \ifx\first0\adn0
+    \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
+    \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
+    \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
+    \else
+      \ifnum0=\countA\else\makelink\fi
+      \ifx\first.\let\next=\done\else
+        \let\next=\maketoks
+        \addtokens{\toksB}{\the\toksD}
+        \ifx\first,\addtokens{\toksB}{\space}\fi
+      \fi
+    \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \next}
+  \def\makelink{\addtokens{\toksB}%
+    {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
+  \def\pdflink#1{%
+    \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
+    \linkcolor #1\endlink}
+  \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+  \let\pdfmkdest = \gobble
+  \let\pdfurl = \gobble
+  \let\endlink = \relax
+  \let\linkcolor = \relax
+  \let\pdfmakeoutlines = \relax
+\fi  % \ifx\pdfoutput
+
+
+\message{fonts,}
+
+% Change the current font style to #1, remembering it in \curfontstyle.
+% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in
+% italics, not bold italics.
+%
+\def\setfontstyle#1{%
+  \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd.
+  \csname ten#1\endcsname  % change the current font
+}
+
+% Select #1 fonts with the current style.
+%
+\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname}
+
+\def\rm{\fam=0 \setfontstyle{rm}}
+\def\it{\fam=\itfam \setfontstyle{it}}
+\def\sl{\fam=\slfam \setfontstyle{sl}}
+\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
+\def\tt{\fam=\ttfam \setfontstyle{tt}}
+
+% Texinfo sort of supports the sans serif font style, which plain TeX does not.
+% So we set up a \sf.
+\newfam\sffam
+\def\sf{\fam=\sffam \setfontstyle{sf}}
+\let\li = \sf % Sometimes we call it \li, not \sf.
+
+% We don't need math for this font style.
+\def\ttsl{\setfontstyle{ttsl}}
+
+% Default leading.
+\newdimen\textleading  \textleading = 13.2pt
+
+% Set the baselineskip to #1, and the lineskip and strut size
+% correspondingly.  There is no deep meaning behind these magic numbers
+% used as factors; they just match (closely enough) what Knuth defined.
+%
+\def\lineskipfactor{.08333}
+\def\strutheightpercent{.70833}
+\def\strutdepthpercent {.29167}
+%
+\def\setleading#1{%
+  \normalbaselineskip = #1\relax
+  \normallineskip = \lineskipfactor\normalbaselineskip
+  \normalbaselines
+  \setbox\strutbox =\hbox{%
+    \vrule width0pt height\strutheightpercent\baselineskip
+                    depth \strutdepthpercent \baselineskip
+  }%
+}
+
+% Set the font macro #1 to the font named #2, adding on the
+% specified font prefix (normally `cm').
+% #3 is the font's design size, #4 is a scale factor
+\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\undefined
+\def\fontprefix{cm}
+\fi
+% Support font families that don't use the same naming scheme as CM.
+\def\rmshape{r}
+\def\rmbshape{bx}               %where the normal face is bold
+\def\bfshape{b}
+\def\bxshape{bx}
+\def\ttshape{tt}
+\def\ttbshape{tt}
+\def\ttslshape{sltt}
+\def\itshape{ti}
+\def\itbshape{bxti}
+\def\slshape{sl}
+\def\slbshape{bxsl}
+\def\sfshape{ss}
+\def\sfbshape{ss}
+\def\scshape{csc}
+\def\scbshape{csc}
+
+% Text fonts (11.2pt, magstep1).
+\def\textnominalsize{11pt}
+\edef\mainmagstep{\magstephalf}
+\setfont\textrm\rmshape{10}{\mainmagstep}
+\setfont\texttt\ttshape{10}{\mainmagstep}
+\setfont\textbf\bfshape{10}{\mainmagstep}
+\setfont\textit\itshape{10}{\mainmagstep}
+\setfont\textsl\slshape{10}{\mainmagstep}
+\setfont\textsf\sfshape{10}{\mainmagstep}
+\setfont\textsc\scshape{10}{\mainmagstep}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}
+\font\texti=cmmi10 scaled \mainmagstep
+\font\textsy=cmsy10 scaled \mainmagstep
+
+% A few fonts for @defun names and args.
+\setfont\defbf\bfshape{10}{\magstep1}
+\setfont\deftt\ttshape{10}{\magstep1}
+\setfont\defttsl\ttslshape{10}{\magstep1}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+
+% Fonts for indices, footnotes, small examples (9pt).
+\def\smallnominalsize{9pt}
+\setfont\smallrm\rmshape{9}{1000}
+\setfont\smalltt\ttshape{9}{1000}
+\setfont\smallbf\bfshape{10}{900}
+\setfont\smallit\itshape{9}{1000}
+\setfont\smallsl\slshape{9}{1000}
+\setfont\smallsf\sfshape{9}{1000}
+\setfont\smallsc\scshape{10}{900}
+\setfont\smallttsl\ttslshape{10}{900}
+\font\smalli=cmmi9
+\font\smallsy=cmsy9
+
+% Fonts for small examples (8pt).
+\def\smallernominalsize{8pt}
+\setfont\smallerrm\rmshape{8}{1000}
+\setfont\smallertt\ttshape{8}{1000}
+\setfont\smallerbf\bfshape{10}{800}
+\setfont\smallerit\itshape{8}{1000}
+\setfont\smallersl\slshape{8}{1000}
+\setfont\smallersf\sfshape{8}{1000}
+\setfont\smallersc\scshape{10}{800}
+\setfont\smallerttsl\ttslshape{10}{800}
+\font\smalleri=cmmi8
+\font\smallersy=cmsy8
+
+% Fonts for title page (20.4pt):
+\def\titlenominalsize{20pt}
+\setfont\titlerm\rmbshape{12}{\magstep3}
+\setfont\titleit\itbshape{10}{\magstep4}
+\setfont\titlesl\slbshape{10}{\magstep4}
+\setfont\titlett\ttbshape{12}{\magstep3}
+\setfont\titlettsl\ttslshape{10}{\magstep4}
+\setfont\titlesf\sfbshape{17}{\magstep1}
+\let\titlebf=\titlerm
+\setfont\titlesc\scbshape{10}{\magstep4}
+\font\titlei=cmmi12 scaled \magstep3
+\font\titlesy=cmsy10 scaled \magstep4
+\def\authorrm{\secrm}
+\def\authortt{\sectt}
+
+% Chapter (and unnumbered) fonts (17.28pt).
+\def\chapnominalsize{17pt}
+\setfont\chaprm\rmbshape{12}{\magstep2}
+\setfont\chapit\itbshape{10}{\magstep3}
+\setfont\chapsl\slbshape{10}{\magstep3}
+\setfont\chaptt\ttbshape{12}{\magstep2}
+\setfont\chapttsl\ttslshape{10}{\magstep3}
+\setfont\chapsf\sfbshape{17}{1000}
+\let\chapbf=\chaprm
+\setfont\chapsc\scbshape{10}{\magstep3}
+\font\chapi=cmmi12 scaled \magstep2
+\font\chapsy=cmsy10 scaled \magstep3
+
+% Section fonts (14.4pt).
+\def\secnominalsize{14pt}
+\setfont\secrm\rmbshape{12}{\magstep1}
+\setfont\secit\itbshape{10}{\magstep2}
+\setfont\secsl\slbshape{10}{\magstep2}
+\setfont\sectt\ttbshape{12}{\magstep1}
+\setfont\secttsl\ttslshape{10}{\magstep2}
+\setfont\secsf\sfbshape{12}{\magstep1}
+\let\secbf\secrm
+\setfont\secsc\scbshape{10}{\magstep2}
+\font\seci=cmmi12 scaled \magstep1
+\font\secsy=cmsy10 scaled \magstep2
+
+% Subsection fonts (13.15pt).
+\def\ssecnominalsize{13pt}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}
+\setfont\ssecit\itbshape{10}{1315}
+\setfont\ssecsl\slbshape{10}{1315}
+\setfont\ssectt\ttbshape{12}{\magstephalf}
+\setfont\ssecttsl\ttslshape{10}{1315}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}
+\let\ssecbf\ssecrm
+\setfont\ssecsc\scbshape{10}{1315}
+\font\sseci=cmmi12 scaled \magstephalf
+\font\ssecsy=cmsy10 scaled 1315
+
+% Reduced fonts for @acro in text (10pt).
+\def\reducednominalsize{10pt}
+\setfont\reducedrm\rmshape{10}{1000}
+\setfont\reducedtt\ttshape{10}{1000}
+\setfont\reducedbf\bfshape{10}{1000}
+\setfont\reducedit\itshape{10}{1000}
+\setfont\reducedsl\slshape{10}{1000}
+\setfont\reducedsf\sfshape{10}{1000}
+\setfont\reducedsc\scshape{10}{1000}
+\setfont\reducedttsl\ttslshape{10}{1000}
+\font\reducedi=cmmi10
+\font\reducedsy=cmsy10
+
+% In order for the font changes to affect most math symbols and letters,
+% we have to define the \textfont of the standard families.  Since
+% texinfo doesn't allow for producing subscripts and superscripts except
+% in the main text, we don't bother to reset \scriptfont and
+% \scriptscriptfont (which would also require loading a lot more fonts).
+%
+\def\resetmathfonts{%
+  \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
+  \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
+  \textfont\ttfam=\tentt \textfont\sffam=\tensf
+}
+
+% The font-changing commands redefine the meanings of \tenSTYLE, instead
+% of just \STYLE.  We do this because \STYLE needs to also set the
+% current \fam for math mode.  Our \STYLE (e.g., \rm) commands hardwire
+% \tenSTYLE to set the current font.
+%
+% Each font-changing command also sets the names \lsize (one size lower)
+% and \lllsize (three sizes lower).  These relative commands are used in
+% the LaTeX logo and acronyms.
+%
+% This all needs generalizing, badly.
+%
+\def\textfonts{%
+  \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
+  \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
+  \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy
+  \let\tenttsl=\textttsl
+  \def\curfontsize{text}%
+  \def\lsize{reduced}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{\textleading}}
+\def\titlefonts{%
+  \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
+  \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
+  \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
+  \let\tenttsl=\titlettsl
+  \def\curfontsize{title}%
+  \def\lsize{chap}\def\lllsize{subsec}%
+  \resetmathfonts \setleading{25pt}}
+\def\titlefont#1{{\titlefonts\rm #1}}
+\def\chapfonts{%
+  \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
+  \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
+  \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy
+  \let\tenttsl=\chapttsl
+  \def\curfontsize{chap}%
+  \def\lsize{sec}\def\lllsize{text}%
+  \resetmathfonts \setleading{19pt}}
+\def\secfonts{%
+  \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
+  \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
+  \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy
+  \let\tenttsl=\secttsl
+  \def\curfontsize{sec}%
+  \def\lsize{subsec}\def\lllsize{reduced}%
+  \resetmathfonts \setleading{16pt}}
+\def\subsecfonts{%
+  \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
+  \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
+  \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy
+  \let\tenttsl=\ssecttsl
+  \def\curfontsize{ssec}%
+  \def\lsize{text}\def\lllsize{small}%
+  \resetmathfonts \setleading{15pt}}
+\let\subsubsecfonts = \subsecfonts
+\def\reducedfonts{%
+  \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl
+  \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc
+  \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy
+  \let\tenttsl=\reducedttsl
+  \def\curfontsize{reduced}%
+  \def\lsize{small}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallfonts{%
+  \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
+  \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
+  \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
+  \let\tenttsl=\smallttsl
+  \def\curfontsize{small}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{10.5pt}}
+\def\smallerfonts{%
+  \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
+  \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
+  \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
+  \let\tenttsl=\smallerttsl
+  \def\curfontsize{smaller}%
+  \def\lsize{smaller}\def\lllsize{smaller}%
+  \resetmathfonts \setleading{9.5pt}}
+
+% Set the fonts to use with the @small... environments.
+\let\smallexamplefonts = \smallfonts
+
+% About \smallexamplefonts.  If we use \smallfonts (9pt), @smallexample
+% can fit this many characters:
+%   8.5x11=86   smallbook=72  a4=90  a5=69
+% If we use \scriptfonts (8pt), then we can fit this many characters:
+%   8.5x11=90+  smallbook=80  a4=90+  a5=77
+% For me, subjectively, the few extra characters that fit aren't worth
+% the additional smallness of 8pt.  So I'm making the default 9pt.
+%
+% By the way, for comparison, here's what fits with @example (10pt):
+%   8.5x11=71  smallbook=60  a4=75  a5=58
+%
+% I wish the USA used A4 paper.
+% --karl, 24jan03.
+
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\textfonts \rm
+
+% Define these so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}
+\setfont\shortcontbf\bfshape{10}{\magstep1}  % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}
+\setfont\shortconttt\ttshape{12}{1000}
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
+                    \ptexslash\fi\fi\fi}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally uses \ttsl.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally use \sl.  We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\let\var=\smartslanted
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% @b, explicit bold.
+\def\b#1{{\bf #1}}
+\let\strong=\b
+
+% @sansserif, explicit sans.
+\def\sansserif#1{{\sf #1}}
+
+% We can't just use \exhyphenpenalty, because that only has effect at
+% the end of a paragraph.  Restore normal hyphenation at the end of the
+% group within which \nohyphenation is presumably called.
+%
+\def\nohyphenation{\hyphenchar\font = -1  \aftergroup\restorehyphenation}
+\def\restorehyphenation{\hyphenchar\font = `- }
+
+% Set sfcode to normal for the chars that usually have another value.
+% Can't use plain's \frenchspacing because it uses the `\x notation, and
+% sometimes \x has an active definition that messes things up.
+%
+\catcode`@=11
+  \def\plainfrenchspacing{%
+    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
+    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+    \def\endofsentencespacefactor{1000}% for @. and friends
+  }
+  \def\plainnonfrenchspacing{%
+    \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000
+    \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250
+    \def\endofsentencespacefactor{3000}% for @. and friends
+  }
+\catcode`@=\other
+\def\endofsentencespacefactor{3000}% default
+
+\def\t#1{%
+  {\tt \rawbackslash \plainfrenchspacing #1}%
+  \null
+}
+\def\samp#1{`\tclose{#1}'\null}
+\setfont\keyrm\rmshape{8}{1000}
+\font\keysy=cmsy9
+\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+  \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+    \vbox{\hrule\kern-0.4pt
+     \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+    \kern-0.4pt\hrule}%
+  \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+% The old definition, with no lozenge:
+%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
+\def\ctrl #1{{\tt \rawbackslash \hat}#1}
+
+% @file, @option are the same as @samp.
+\let\file=\samp
+\let\option=\samp
+
+% @code is a modification of @t,
+% which makes spaces the same size as normal in the surrounding text.
+\def\tclose#1{%
+  {%
+    % Change normal interword space to be same as for the current font.
+    \spaceskip = \fontdimen2\font
+    %
+    % Switch to typewriter.
+    \tt
+    %
+    % But `\ ' produces the large typewriter interword space.
+    \def\ {{\spaceskip = 0pt{} }}%
+    %
+    % Turn off hyphenation.
+    \nohyphenation
+    %
+    \rawbackslash
+    \plainfrenchspacing
+    #1%
+  }%
+  \null
+}
+
+% We *must* turn on hyphenation at `-' and `_' in @code.
+% Otherwise, it is too hard to avoid overfull hboxes
+% in the Emacs manual, the Library manual, etc.
+
+% Unfortunately, TeX uses one parameter (\hyphenchar) to control
+% both hyphenation at - and hyphenation within words.
+% We must therefore turn them both off (\tclose does that)
+% and arrange explicitly to hyphenate at a dash.
+%  -- rms.
+{
+  \catcode`\-=\active
+  \catcode`\_=\active
+  %
+  \global\def\code{\begingroup
+    \catcode`\-=\active  \catcode`\_=\active
+    \ifallowcodebreaks
+     \let-\codedash
+     \let_\codeunder
+    \else
+     \let-\realdash
+     \let_\realunder
+    \fi
+    \codex
+  }
+}
+
+\def\realdash{-}
+\def\codedash{-\discretionary{}{}{}}
+\def\codeunder{%
+  % this is all so @math{@code{var_name}+1} can work.  In math mode, _
+  % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
+  % will therefore expand the active definition of _, which is us
+  % (inside @code that is), therefore an endless loop.
+  \ifusingtt{\ifmmode
+               \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
+             \else\normalunderscore \fi
+             \discretionary{}{}{}}%
+            {\_}%
+}
+\def\codex #1{\tclose{#1}\endgroup}
+
+% An additional complication: the above will allow breaks after, e.g.,
+% each of the four underscores in __typeof__.  This is undesirable in
+% some manuals, especially if they don't have long identifiers in
+% general.  @allowcodebreaks provides a way to control this.
+% 
+\newif\ifallowcodebreaks  \allowcodebreakstrue
+
+\def\keywordtrue{true}
+\def\keywordfalse{false}
+
+\parseargdef\allowcodebreaks{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\keywordtrue
+    \allowcodebreakstrue
+  \else\ifx\txiarg\keywordfalse
+    \allowcodebreaksfalse
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+  \fi\fi
+}
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+%   `example' (@kbd uses ttsl only inside of @example and friends),
+%   or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+  \def\txiarg{#1}%
+  \ifx\txiarg\worddistinct
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+  \else\ifx\txiarg\wordexample
+    \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+  \else\ifx\txiarg\wordcode
+    \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+  \else
+    \errhelp = \EMsimple
+    \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
+  \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct.'
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\look}}\fi
+\else{\tclose{\kbdfont\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @uref (abbreviation for `urlref') takes an optional (comma-separated)
+% second argument specifying the text to display and an optional third
+% arg as text to display instead of (rather than in addition to) the url
+% itself.  First (mandatory) arg is the url.  Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#1,#2,#3,#4\finish{\begingroup
+  \unsepspaces
+  \pdfurl{#1}%
+  \setbox0 = \hbox{\ignorespaces #3}%
+  \ifdim\wd0 > 0pt
+    \unhbox0 % third arg given, show only that
+  \else
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0 > 0pt
+      \ifpdf
+        \unhbox0             % PDF: 2nd arg given, show only it
+      \else
+        \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
+      \fi
+    \else
+      \code{#1}% only url given, so show it
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% @url synonym for @uref, since that's how everyone uses it.
+%
+\let\url=\uref
+
+% rms does not like angle brackets --karl, 17may97.
+% So now @email is just like @uref, unless we are pdf.
+%
+%\def\email#1{\angleleft{\tt #1}\angleright}
+\ifpdf
+  \def\email#1{\doemail#1,,\finish}
+  \def\doemail#1,#2,#3\finish{\begingroup
+    \unsepspaces
+    \pdfurl{mailto:#1}%
+    \setbox0 = \hbox{\ignorespaces #2}%
+    \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
+    \endlink
+  \endgroup}
+\else
+  \let\email=\uref
+\fi
+
+% Check if we are currently using a typewriter font.  Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Typeset a dimension, e.g., `in' or `pt'.  The only reason for the
+% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
+%
+\def\dmn#1{\thinspace #1}
+
+\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
+
+% @l was never documented to mean ``switch to the Lisp font'',
+% and it is not used as such in any manual I can find.  We need it for
+% Polish suppressed-l.  --karl, 22sep96.
+%\def\l#1{{\li #1}\null}
+
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}}              % roman font
+\def\sc#1{{\smallcaps#1}}       % smallcaps font
+\def\ii#1{{\it #1}}             % italic font
+
+% @acronym for "FBI", "NATO", and the like.
+% We print this one point size smaller, since it's intended for
+% all-uppercase.
+% 
+\def\acronym#1{\doacronym #1,,\finish}
+\def\doacronym#1,#2,#3\finish{%
+  {\selectfonts\lsize #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @abbr for "Comput. J." and the like.
+% No font change, but don't do end-of-sentence spacing.
+% 
+\def\abbr#1{\doabbr #1,,\finish}
+\def\doabbr#1,#2,#3\finish{%
+  {\plainfrenchspacing #1}%
+  \def\temp{#2}%
+  \ifx\temp\empty \else
+    \space ({\unsepspaces \ignorespaces \temp \unskip})%
+  \fi
+}
+
+% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
+%
+\def\pounds{{\it\$}}
+
+% @euro{} comes from a separate font, depending on the current style.
+% We use the free feym* fonts from the eurosym package by Henrik
+% Theiling, which support regular, slanted, bold and bold slanted (and
+% "outlined" (blackboard board, sort of) versions, which we don't need).
+% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
+% 
+% Although only regular is the truly official Euro symbol, we ignore
+% that.  The Euro is designed to be slightly taller than the regular
+% font height.
+% 
+% feymr - regular
+% feymo - slanted
+% feybr - bold
+% feybo - bold slanted
+% 
+% There is no good (free) typewriter version, to my knowledge.
+% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
+% Hmm.
+% 
+% Also doesn't work in math.  Do we need to do math with euro symbols?
+% Hope not.
+% 
+% 
+\def\euro{{\eurofont e}}
+\def\eurofont{%
+  % We set the font at each command, rather than predefining it in
+  % \textfonts and the other font-switching commands, so that
+  % installations which never need the symbol don't have to have the
+  % font installed.
+  % 
+  % There is only one designed size (nominal 10pt), so we always scale
+  % that to the current nominal size.
+  % 
+  % By the way, simply using "at 1em" works for cmr10 and the like, but
+  % does not work for cmbx10 and other extended/shrunken fonts.
+  % 
+  \def\eurosize{\csname\curfontsize nominalsize\endcsname}%
+  %
+  \ifx\curfontstyle\bfstylename 
+    % bold:
+    \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
+  \else 
+    % regular:
+    \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
+  \fi
+  \thiseurofont
+}
+
+% @registeredsymbol - R in a circle.  The font for the R should really
+% be smaller yet, but lllsize is the best we can do for now.
+% Adapted from the plain.tex definition of \copyright.
+%
+\def\registeredsymbol{%
+  $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}%
+               \hfil\crcr\Orb}}%
+    }$%
+}
+
+% Laurent Siebenmann reports \Orb undefined with:
+%  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
+% so we'll define it if necessary.
+% 
+\ifx\Orb\undefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+
+\message{page headings,}
+
+\newskip\titlepagetopglue \titlepagetopglue = 1.5in
+\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
+
+% First the title page.  Must do @settitle before @titlepage.
+\newif\ifseenauthor
+\newif\iffinishedtitlepage
+
+% Do an implicit @contents or @shortcontents after @end titlepage if the
+% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
+%
+\newif\ifsetcontentsaftertitlepage
+ \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
+\newif\ifsetshortcontentsaftertitlepage
+ \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
+
+\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+        \endgroup\page\hbox{}\page}
+
+\envdef\titlepage{%
+  % Open one extra group, as we want to close it in the middle of \Etitlepage.
+  \begingroup
+    \parindent=0pt \textfonts
+    % Leave some space at the very top of the page.
+    \vglue\titlepagetopglue
+    % No rule at page bottom unless we print one at the top with @title.
+    \finishedtitlepagetrue
+    %
+    % Most title ``pages'' are actually two pages long, with space
+    % at the top of the second.  We don't want the ragged left on the second.
+    \let\oldpage = \page
+    \def\page{%
+      \iffinishedtitlepage\else
+	 \finishtitlepage
+      \fi
+      \let\page = \oldpage
+      \page
+      \null
+    }%
+}
+
+\def\Etitlepage{%
+    \iffinishedtitlepage\else
+	\finishtitlepage
+    \fi
+    % It is important to do the page break before ending the group,
+    % because the headline and footline are only empty inside the group.
+    % If we use the new definition of \page, we always get a blank page
+    % after the title page, which we certainly don't want.
+    \oldpage
+  \endgroup
+  %
+  % Need this before the \...aftertitlepage checks so that if they are
+  % in effect the toc pages will come out with page numbers.
+  \HEADINGSon
+  %
+  % If they want short, they certainly want long too.
+  \ifsetshortcontentsaftertitlepage
+    \shortcontents
+    \contents
+    \global\let\shortcontents = \relax
+    \global\let\contents = \relax
+  \fi
+  %
+  \ifsetcontentsaftertitlepage
+    \contents
+    \global\let\contents = \relax
+    \global\let\shortcontents = \relax
+  \fi
+}
+
+\def\finishtitlepage{%
+  \vskip4pt \hrule height 2pt width \hsize
+  \vskip\titlepagebottomglue
+  \finishedtitlepagetrue
+}
+
+%%% Macros to be used within @titlepage:
+
+\let\subtitlerm=\tenrm
+\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
+
+\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
+		\let\tt=\authortt}
+
+\parseargdef\title{%
+  \checkenv\titlepage
+  \leftline{\titlefonts\rm #1}
+  % print a rule at the page bottom also.
+  \finishedtitlepagefalse
+  \vskip4pt \hrule height 4pt width \hsize \vskip4pt
+}
+
+\parseargdef\subtitle{%
+  \checkenv\titlepage
+  {\subtitlefont \rightline{#1}}%
+}
+
+% @author should come last, but may come many times.
+% It can also be used inside @quotation.
+%
+\parseargdef\author{%
+  \def\temp{\quotation}%
+  \ifx\thisenv\temp
+    \def\quotationauthor{#1}% printed in \Equotation.
+  \else
+    \checkenv\titlepage
+    \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
+    {\authorfont \leftline{#1}}%
+  \fi
+}
+
+
+%%% Set up page headings and footings.
+
+\let\thispage=\folio
+
+\newtoks\evenheadline    % headline on even pages
+\newtoks\oddheadline     % headline on odd pages
+\newtoks\evenfootline    % footline on even pages
+\newtoks\oddfootline     % footline on odd pages
+
+% Now make TeX use those variables
+\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
+                            \else \the\evenheadline \fi}}
+\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
+                            \else \the\evenfootline \fi}\HEADINGShook}
+\let\HEADINGShook=\relax
+
+% Commands to set those variables.
+% For example, this is what  @headings on  does
+% @evenheading @thistitle|@thispage|@thischapter
+% @oddheading @thischapter|@thispage|@thistitle
+% @evenfooting @thisfile||
+% @oddfooting ||@thisfile
+
+
+\def\evenheading{\parsearg\evenheadingxxx}
+\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish}
+\def\evenheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddheading{\parsearg\oddheadingxxx}
+\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish}
+\def\oddheadingyyy #1\|#2\|#3\|#4\finish{%
+\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
+
+\def\evenfooting{\parsearg\evenfootingxxx}
+\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish}
+\def\evenfootingyyy #1\|#2\|#3\|#4\finish{%
+\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
+
+\def\oddfooting{\parsearg\oddfootingxxx}
+\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish}
+\def\oddfootingyyy #1\|#2\|#3\|#4\finish{%
+  \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
+  %
+  % Leave some space for the footline.  Hopefully ok to assume
+  % @evenfooting will not be used by itself.
+  \global\advance\pageheight by -\baselineskip
+  \global\advance\vsize by -\baselineskip
+}
+
+\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
+
+
+% @headings double      turns headings on for double-sided printing.
+% @headings single      turns headings on for single-sided printing.
+% @headings off         turns them off.
+% @headings on          same as @headings double, retained for compatibility.
+% @headings after       turns on double-sided headings after this page.
+% @headings doubleafter turns on double-sided headings after this page.
+% @headings singleafter turns on single-sided headings after this page.
+% By default, they are off at the start of a document,
+% and turned `on' after @end titlepage.
+
+\def\headings #1 {\csname HEADINGS#1\endcsname}
+
+\def\HEADINGSoff{%
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% When we turn headings on, set the page number to 1.
+% For double-sided printing, put current file name in lower left corner,
+% chapter name on inside top of right hand pages, document
+% title on inside top of left hand pages, and page numbers on outside top
+% edge of all pages.
+\def\HEADINGSdouble{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+\let\contentsalignmacro = \chappager
+
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingle{%
+\global\pageno=1
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+\def\HEADINGSon{\HEADINGSdouble}
+
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\let\HEADINGSdoubleafter=\HEADINGSafter
+\def\HEADINGSdoublex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\folio\hfil\thistitle}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chapoddpage
+}
+
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
+\def\HEADINGSsinglex{%
+\global\evenfootline={\hfil}
+\global\oddfootline={\hfil}
+\global\evenheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\let\contentsalignmacro = \chappager
+}
+
+% Subroutines used in generating headings
+% This produces Day Month Year style of output.
+% Only define if not already defined, in case a txi-??.tex file has set
+% up a different format (e.g., txi-cs.tex does this).
+\ifx\today\undefined
+\def\today{%
+  \number\day\space
+  \ifcase\month
+  \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
+  \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
+  \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
+  \fi
+  \space\number\year}
+\fi
+
+% @settitle line...  specifies the title of the document, for headings.
+% It generates no output of its own.
+\def\thistitle{\putwordNoTitle}
+\def\settitle{\parsearg{\gdef\thistitle}}
+
+
+\message{tables,}
+% Tables -- @table, @ftable, @vtable, @item(x).
+
+% default indentation of table text
+\newdimen\tableindent \tableindent=.8in
+% default indentation of @itemize and @enumerate text
+\newdimen\itemindent  \itemindent=.3in
+% margin between end of table item and start of table text.
+\newdimen\itemmargin  \itemmargin=.1in
+
+% used internally for \itemindent minus \itemmargin
+\newdimen\itemmax
+
+% Note @table, @ftable, and @vtable define @item, @itemx, etc., with
+% these defs.
+% They also define \itemindex
+% to index the item name in whatever manner is desired (perhaps none).
+
+\newif\ifitemxneedsnegativevskip
+
+\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
+
+\def\internalBitem{\smallbreak \parsearg\itemzzz}
+\def\internalBitemx{\itemxpar \parsearg\itemzzz}
+
+\def\itemzzz #1{\begingroup %
+  \advance\hsize by -\rightskip
+  \advance\hsize by -\tableindent
+  \setbox0=\hbox{\itemindicate{#1}}%
+  \itemindex{#1}%
+  \nobreak % This prevents a break before @itemx.
+  %
+  % If the item text does not fit in the space we have, put it on a line
+  % by itself, and do not allow a page break either before or after that
+  % line.  We do not start a paragraph here because then if the next
+  % command is, e.g., @kindex, the whatsit would get put into the
+  % horizontal list on a line by itself, resulting in extra blank space.
+  \ifdim \wd0>\itemmax
+    %
+    % Make this a paragraph so we get the \parskip glue and wrapping,
+    % but leave it ragged-right.
+    \begingroup
+      \advance\leftskip by-\tableindent
+      \advance\hsize by\tableindent
+      \advance\rightskip by0pt plus1fil
+      \leavevmode\unhbox0\par
+    \endgroup
+    %
+    % We're going to be starting a paragraph, but we don't want the
+    % \parskip glue -- logically it's part of the @item we just started.
+    \nobreak \vskip-\parskip
+    %
+    % Stop a page break at the \parskip glue coming up.  However, if
+    % what follows is an environment such as @example, there will be no
+    % \parskip glue; then the negative vskip we just inserted would
+    % cause the example and the item to crash together.  So we use this
+    % bizarre value of 10001 as a signal to \aboveenvbreak to insert
+    % \parskip glue after all.  Section titles are handled this way also.
+    % 
+    \penalty 10001
+    \endgroup
+    \itemxneedsnegativevskipfalse
+  \else
+    % The item text fits into the space.  Start a paragraph, so that the
+    % following text (if any) will end up on the same line.
+    \noindent
+    % Do this with kerns and \unhbox so that if there is a footnote in
+    % the item text, it can migrate to the main vertical list and
+    % eventually be printed.
+    \nobreak\kern-\tableindent
+    \dimen0 = \itemmax  \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
+    \unhbox0
+    \nobreak\kern\dimen0
+    \endgroup
+    \itemxneedsnegativevskiptrue
+  \fi
+}
+
+\def\item{\errmessage{@item while not in a list environment}}
+\def\itemx{\errmessage{@itemx while not in a list environment}}
+
+% @table, @ftable, @vtable.
+\envdef\table{%
+  \let\itemindex\gobble
+  \tablecheck{table}%
+}
+\envdef\ftable{%
+  \def\itemindex ##1{\doind {fn}{\code{##1}}}%
+  \tablecheck{ftable}%
+}
+\envdef\vtable{%
+  \def\itemindex ##1{\doind {vr}{\code{##1}}}%
+  \tablecheck{vtable}%
+}
+\def\tablecheck#1{%
+  \ifnum \the\catcode`\^^M=\active
+    \endgroup
+    \errmessage{This command won't work in this context; perhaps the problem is
+      that we are \inenvironment\thisenv}%
+    \def\next{\doignore{#1}}%
+  \else
+    \let\next\tablex
+  \fi
+  \next
+}
+\def\tablex#1{%
+  \def\itemindicate{#1}%
+  \parsearg\tabley
+}
+\def\tabley#1{%
+  {%
+    \makevalueexpandable
+    \edef\temp{\noexpand\tablez #1\space\space\space}%
+    \expandafter
+  }\temp \endtablez
+}
+\def\tablez #1 #2 #3 #4\endtablez{%
+  \aboveenvbreak
+  \ifnum 0#1>0 \advance \leftskip by #1\mil \fi
+  \ifnum 0#2>0 \tableindent=#2\mil \fi
+  \ifnum 0#3>0 \advance \rightskip by #3\mil \fi
+  \itemmax=\tableindent
+  \advance \itemmax by -\itemmargin
+  \advance \leftskip by \tableindent
+  \exdentamount=\tableindent
+  \parindent = 0pt
+  \parskip = \smallskipamount
+  \ifdim \parskip=0pt \parskip=2pt \fi
+  \let\item = \internalBitem
+  \let\itemx = \internalBitemx
+}
+\def\Etable{\endgraf\afterenvbreak}
+\let\Eftable\Etable
+\let\Evtable\Etable
+\let\Eitemize\Etable
+\let\Eenumerate\Etable
+
+% This is the counter used by @enumerate, which is really @itemize
+
+\newcount \itemno
+
+\envdef\itemize{\parsearg\doitemize}
+
+\def\doitemize#1{%
+  \aboveenvbreak
+  \itemmax=\itemindent
+  \advance\itemmax by -\itemmargin
+  \advance\leftskip by \itemindent
+  \exdentamount=\itemindent
+  \parindent=0pt
+  \parskip=\smallskipamount
+  \ifdim\parskip=0pt \parskip=2pt \fi
+  \def\itemcontents{#1}%
+  % @itemize with no arg is equivalent to @itemize @bullet.
+  \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+  \let\item=\itemizeitem
+}
+
+% Definition of @item while inside @itemize and @enumerate.
+%
+\def\itemizeitem{%
+  \advance\itemno by 1  % for enumerations
+  {\let\par=\endgraf \smallbreak}% reasonable place to break
+  {%
+   % If the document has an @itemize directly after a section title, a
+   % \nobreak will be last on the list, and \sectionheading will have
+   % done a \vskip-\parskip.  In that case, we don't want to zero
+   % parskip, or the item text will crash with the heading.  On the
+   % other hand, when there is normal text preceding the item (as there
+   % usually is), we do want to zero parskip, or there would be too much
+   % space.  In that case, we won't have a \nobreak before.  At least
+   % that's the theory.
+   \ifnum\lastpenalty<10000 \parskip=0in \fi
+   \noindent
+   \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+   \vadjust{\penalty 1200}}% not good to break after first line of item.
+  \flushcr
+}
+
+% \splitoff TOKENS\endmark defines \first to be the first token in
+% TOKENS, and \rest to be the remainder.
+%
+\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
+
+% Allow an optional argument of an uppercase letter, lowercase letter,
+% or number, to specify the first label in the enumerated list.  No
+% argument is the same as `1'.
+%
+\envparseargdef\enumerate{\enumeratey #1  \endenumeratey}
+\def\enumeratey #1 #2\endenumeratey{%
+  % If we were given no argument, pretend we were given `1'.
+  \def\thearg{#1}%
+  \ifx\thearg\empty \def\thearg{1}\fi
+  %
+  % Detect if the argument is a single token.  If so, it might be a
+  % letter.  Otherwise, the only valid thing it can be is a number.
+  % (We will always have one token, because of the test we just made.
+  % This is a good thing, since \splitoff doesn't work given nothing at
+  % all -- the first parameter is undelimited.)
+  \expandafter\splitoff\thearg\endmark
+  \ifx\rest\empty
+    % Only one token in the argument.  It could still be anything.
+    % A ``lowercase letter'' is one whose \lccode is nonzero.
+    % An ``uppercase letter'' is one whose \lccode is both nonzero, and
+    %   not equal to itself.
+    % Otherwise, we assume it's a number.
+    %
+    % We need the \relax at the end of the \ifnum lines to stop TeX from
+    % continuing to look for a <number>.
+    %
+    \ifnum\lccode\expandafter`\thearg=0\relax
+      \numericenumerate % a number (we hope)
+    \else
+      % It's a letter.
+      \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
+        \lowercaseenumerate % lowercase letter
+      \else
+        \uppercaseenumerate % uppercase letter
+      \fi
+    \fi
+  \else
+    % Multiple tokens in the argument.  We hope it's a number.
+    \numericenumerate
+  \fi
+}
+
+% An @enumerate whose labels are integers.  The starting integer is
+% given in \thearg.
+%
+\def\numericenumerate{%
+  \itemno = \thearg
+  \startenumeration{\the\itemno}%
+}
+
+% The starting (lowercase) letter is in \thearg.
+\def\lowercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more lowercase letters in @enumerate; get a bigger
+                  alphabet}%
+    \fi
+    \char\lccode\itemno
+  }%
+}
+
+% The starting (uppercase) letter is in \thearg.
+\def\uppercaseenumerate{%
+  \itemno = \expandafter`\thearg
+  \startenumeration{%
+    % Be sure we're not beyond the end of the alphabet.
+    \ifnum\itemno=0
+      \errmessage{No more uppercase letters in @enumerate; get a bigger
+                  alphabet}
+    \fi
+    \char\uccode\itemno
+  }%
+}
+
+% Call \doitemize, adding a period to the first argument and supplying the
+% common last two arguments.  Also subtract one from the initial value in
+% \itemno, since @item increments \itemno.
+%
+\def\startenumeration#1{%
+  \advance\itemno by -1
+  \doitemize{#1.}\flushcr
+}
+
+% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
+% to @enumerate.
+%
+\def\alphaenumerate{\enumerate{a}}
+\def\capsenumerate{\enumerate{A}}
+\def\Ealphaenumerate{\Eenumerate}
+\def\Ecapsenumerate{\Eenumerate}
+
+
+% @multitable macros
+% Amy Hendrickson, 8/18/94, 3/6/96
+%
+% @multitable ... @end multitable will make as many columns as desired.
+% Contents of each column will wrap at width given in preamble.  Width
+% can be specified either with sample text given in a template line,
+% or in percent of \hsize, the current width of text on page.
+
+% Table can continue over pages but will only break between lines.
+
+% To make preamble:
+%
+% Either define widths of columns in terms of percent of \hsize:
+%   @multitable @columnfractions .25 .3 .45
+%   @item ...
+%
+%   Numbers following @columnfractions are the percent of the total
+%   current hsize to be used for each column. You may use as many
+%   columns as desired.
+
+
+% Or use a template:
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item ...
+%   using the widest term desired in each column.
+
+% Each new table line starts with @item, each subsequent new column
+% starts with @tab. Empty columns may be produced by supplying @tab's
+% with nothing between them for as many times as empty columns are needed,
+% ie, @tab at tab@tab will produce two empty columns.
+
+% @item, @tab do not need to be on their own lines, but it will not hurt
+% if they are.
+
+% Sample multitable:
+
+%   @multitable {Column 1 template} {Column 2 template} {Column 3 template}
+%   @item first col stuff @tab second col stuff @tab third col
+%   @item
+%   first col stuff
+%   @tab
+%   second col stuff
+%   @tab
+%   third col
+%   @item first col stuff @tab second col stuff
+%   @tab Many paragraphs of text may be used in any column.
+%
+%         They will wrap at the width determined by the template.
+%   @item at tab@tab This will be in third column.
+%   @end multitable
+
+% Default dimensions may be reset by user.
+% @multitableparskip is vertical space between paragraphs in table.
+% @multitableparindent is paragraph indent in table.
+% @multitablecolmargin is horizontal space to be left between columns.
+% @multitablelinespace is space to leave between table items, baseline
+%                                                            to baseline.
+%   0pt means it depends on current normal line spacing.
+%
+\newskip\multitableparskip
+\newskip\multitableparindent
+\newdimen\multitablecolspace
+\newskip\multitablelinespace
+\multitableparskip=0pt
+\multitableparindent=6pt
+\multitablecolspace=12pt
+\multitablelinespace=0pt
+
+% Macros used to set up halign preamble:
+%
+\let\endsetuptable\relax
+\def\xendsetuptable{\endsetuptable}
+\let\columnfractions\relax
+\def\xcolumnfractions{\columnfractions}
+\newif\ifsetpercent
+
+% #1 is the @columnfraction, usually a decimal number like .5, but might
+% be just 1.  We just use it, whatever it is.
+%
+\def\pickupwholefraction#1 {%
+  \global\advance\colcount by 1
+  \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}%
+  \setuptable
+}
+
+\newcount\colcount
+\def\setuptable#1{%
+  \def\firstarg{#1}%
+  \ifx\firstarg\xendsetuptable
+    \let\go = \relax
+  \else
+    \ifx\firstarg\xcolumnfractions
+      \global\setpercenttrue
+    \else
+      \ifsetpercent
+         \let\go\pickupwholefraction
+      \else
+         \global\advance\colcount by 1
+         \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
+                   % separator; typically that is always in the input, anyway.
+         \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
+      \fi
+    \fi
+    \ifx\go\pickupwholefraction
+      % Put the argument back for the \pickupwholefraction call, so
+      % we'll always have a period there to be parsed.
+      \def\go{\pickupwholefraction#1}%
+    \else
+      \let\go = \setuptable
+    \fi%
+  \fi
+  \go
+}
+
+% multitable-only commands.
+%
+% @headitem starts a heading row, which we typeset in bold.
+% Assignments have to be global since we are inside the implicit group
+% of an alignment entry.  Note that \everycr resets \everytab.
+\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+%
+% A \tab used to include \hskip1sp.  But then the space in a template
+% line is not enough.  That is bad.  So let's go back to just `&' until
+% we encounter the problem it was intended to solve again.
+%					--karl, nathan at acm.org, 20apr99.
+\def\tab{\checkenv\multitable &\the\everytab}%
+
+% @multitable ... @end multitable definitions:
+%
+\newtoks\everytab  % insert after every tab.
+%
+\envdef\multitable{%
+  \vskip\parskip
+  \startsavinginserts
+  %
+  % @item within a multitable starts a normal row.
+  % We use \def instead of \let so that if one of the multitable entries
+  % contains an @itemize, we don't choke on the \item (seen as \crcr aka
+  % \endtemplate) expanding \doitemize.
+  \def\item{\crcr}%
+  %
+  \tolerance=9500
+  \hbadness=9500
+  \setmultitablespacing
+  \parskip=\multitableparskip
+  \parindent=\multitableparindent
+  \overfullrule=0pt
+  \global\colcount=0
+  %
+  \everycr = {%
+    \noalign{%
+      \global\everytab={}%
+      \global\colcount=0 % Reset the column counter.
+      % Check for saved footnotes, etc.
+      \checkinserts
+      % Keeps underfull box messages off when table breaks over pages.
+      %\filbreak
+	% Maybe so, but it also creates really weird page breaks when the
+	% table breaks over pages. Wouldn't \vfil be better?  Wait until the
+	% problem manifests itself, so it can be fixed for real --karl.
+    }%
+  }%
+  %
+  \parsearg\domultitable
+}
+\def\domultitable#1{%
+  % To parse everything between @multitable and @item:
+  \setuptable#1 \endsetuptable
+  %
+  % This preamble sets up a generic column definition, which will
+  % be used as many times as user calls for columns.
+  % \vtop will set a single line and will also let text wrap and
+  % continue for many paragraphs if desired.
+  \halign\bgroup &%
+    \global\advance\colcount by 1
+    \multistrut
+    \vtop{%
+      % Use the current \colcount to find the correct column width:
+      \hsize=\expandafter\csname col\the\colcount\endcsname
+      %
+      % In order to keep entries from bumping into each other
+      % we will add a \leftskip of \multitablecolspace to all columns after
+      % the first one.
+      %
+      % If a template has been used, we will add \multitablecolspace
+      % to the width of each template entry.
+      %
+      % If the user has set preamble in terms of percent of \hsize we will
+      % use that dimension as the width of the column, and the \leftskip
+      % will keep entries from bumping into each other.  Table will start at
+      % left margin and final column will justify at right margin.
+      %
+      % Make sure we don't inherit \rightskip from the outer environment.
+      \rightskip=0pt
+      \ifnum\colcount=1
+	% The first column will be indented with the surrounding text.
+	\advance\hsize by\leftskip
+      \else
+	\ifsetpercent \else
+	  % If user has not set preamble in terms of percent of \hsize
+	  % we will advance \hsize by \multitablecolspace.
+	  \advance\hsize by \multitablecolspace
+	\fi
+       % In either case we will make \leftskip=\multitablecolspace:
+      \leftskip=\multitablecolspace
+      \fi
+      % Ignoring space at the beginning and end avoids an occasional spurious
+      % blank line, when TeX decides to break the line at the space before the
+      % box from the multistrut, so the strut ends up on a line by itself.
+      % For example:
+      % @multitable @columnfractions .11 .89
+      % @item @code{#}
+      % @tab Legal holiday which is valid in major parts of the whole country.
+      % Is automatically provided with highlighting sequences respectively
+      % marking characters.
+      \noindent\ignorespaces##\unskip\multistrut
+    }\cr
+}
+\def\Emultitable{%
+  \crcr
+  \egroup % end the \halign
+  \global\setpercentfalse
+}
+
+\def\setmultitablespacing{%
+  \def\multistrut{\strut}% just use the standard line spacing
+  %
+  % Compute \multitablelinespace (if not defined by user) for use in
+  % \multitableparskip calculation.  We used define \multistrut based on
+  % this, but (ironically) that caused the spacing to be off.
+  % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100.
+\ifdim\multitablelinespace=0pt
+\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
+\global\advance\multitablelinespace by-\ht0
+\fi
+%% Test to see if parskip is larger than space between lines of
+%% table. If not, do nothing.
+%%        If so, set to same dimension as multitablelinespace.
+\ifdim\multitableparskip>\multitablelinespace
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi%
+\ifdim\multitableparskip=0pt
+\global\multitableparskip=\multitablelinespace
+\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
+                                      %% than skip between lines in the table.
+\fi}
+
+
+\message{conditionals,}
+
+% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext,
+% @ifnotxml always succeed.  They currently do nothing; we don't
+% attempt to check whether the conditionals are properly nested.  But we
+% have to remember that they are conditionals, so that @end doesn't
+% attempt to close an environment group.
+%
+\def\makecond#1{%
+  \expandafter\let\csname #1\endcsname = \relax
+  \expandafter\let\csname iscond.#1\endcsname = 1
+}
+\makecond{iftex}
+\makecond{ifnotdocbook}
+\makecond{ifnothtml}
+\makecond{ifnotinfo}
+\makecond{ifnotplaintext}
+\makecond{ifnotxml}
+
+% Ignore @ignore, @ifhtml, @ifinfo, and the like.
+%
+\def\direntry{\doignore{direntry}}
+\def\documentdescription{\doignore{documentdescription}}
+\def\docbook{\doignore{docbook}}
+\def\html{\doignore{html}}
+\def\ifdocbook{\doignore{ifdocbook}}
+\def\ifhtml{\doignore{ifhtml}}
+\def\ifinfo{\doignore{ifinfo}}
+\def\ifnottex{\doignore{ifnottex}}
+\def\ifplaintext{\doignore{ifplaintext}}
+\def\ifxml{\doignore{ifxml}}
+\def\ignore{\doignore{ignore}}
+\def\menu{\doignore{menu}}
+\def\xml{\doignore{xml}}
+
+% Ignore text until a line `@end #1', keeping track of nested conditionals.
+%
+% A count to remember the depth of nesting.
+\newcount\doignorecount
+
+\def\doignore#1{\begingroup
+  % Scan in ``verbatim'' mode:
+  \catcode`\@ = \other
+  \catcode`\{ = \other
+  \catcode`\} = \other
+  %
+  % Make sure that spaces turn into tokens that match what \doignoretext wants.
+  \spaceisspace
+  %
+  % Count number of #1's that we've seen.
+  \doignorecount = 0
+  %
+  % Swallow text until we reach the matching `@end #1'.
+  \dodoignore{#1}%
+}
+
+{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source.
+  \obeylines %
+  %
+  \gdef\dodoignore#1{%
+    % #1 contains the command name as a string, e.g., `ifinfo'.
+    %
+    % Define a command to find the next `@end #1', which must be on a line
+    % by itself.
+    \long\def\doignoretext##1^^M at end #1{\doignoretextyyy##1^^M@#1\_STOP_}%
+    % And this command to find another #1 command, at the beginning of a
+    % line.  (Otherwise, we would consider a line `@c @ifset', for
+    % example, to count as an @ifset for nesting.)
+    \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}%
+    %
+    % And now expand that command.
+    \obeylines %
+    \doignoretext ^^M%
+  }%
+}
+
+\def\doignoreyyy#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty			% Nothing found.
+    \let\next\doignoretextzzz
+  \else					% Found a nested condition, ...
+    \advance\doignorecount by 1
+    \let\next\doignoretextyyy		% ..., look for another.
+    % If we're here, #1 ends with ^^M\ifinfo (for example).
+  \fi
+  \next #1% the token \_STOP_ is present just after this macro.
+}
+
+% We have to swallow the remaining "\_STOP_".
+%
+\def\doignoretextzzz#1{%
+  \ifnum\doignorecount = 0	% We have just found the outermost @end.
+    \let\next\enddoignore
+  \else				% Still inside a nested condition.
+    \advance\doignorecount by -1
+    \let\next\doignoretext      % Look for the next @end.
+  \fi
+  \next
+}
+
+% Finish off ignored text.
+\def\enddoignore{\endgroup\ignorespaces}
+
+
+% @set VAR sets the variable VAR to an empty value.
+% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
+%
+% Since we want to separate VAR from REST-OF-LINE (which might be
+% empty), we can't just use \parsearg; we have to insert a space of our
+% own to delimit the rest of the line, and then take it out again if we
+% didn't need it.
+% We rely on the fact that \parsearg sets \catcode`\ =10.
+%
+\parseargdef\set{\setyyy#1 \endsetyyy}
+\def\setyyy#1 #2\endsetyyy{%
+  {%
+    \makevalueexpandable
+    \def\temp{#2}%
+    \edef\next{\gdef\makecsname{SET#1}}%
+    \ifx\temp\empty
+      \next{}%
+    \else
+      \setzzz#2\endsetzzz
+    \fi
+  }%
+}
+% Remove the trailing space \setxxx inserted.
+\def\setzzz#1 \endsetzzz{\next{#1}}
+
+% @clear VAR clears (i.e., unsets) the variable VAR.
+%
+\parseargdef\clear{%
+  {%
+    \makevalueexpandable
+    \global\expandafter\let\csname SET#1\endcsname=\relax
+  }%
+}
+
+% @value{foo} gets the text saved in variable foo.
+\def\value{\begingroup\makevalueexpandable\valuexxx}
+\def\valuexxx#1{\expandablevalue{#1}\endgroup}
+{
+  \catcode`\- = \active \catcode`\_ = \active
+  %
+  \gdef\makevalueexpandable{%
+    \let\value = \expandablevalue
+    % We don't want these characters active, ...
+    \catcode`\-=\other \catcode`\_=\other
+    % ..., but we might end up with active ones in the argument if
+    % we're called from @code, as @code{@value{foo-bar_}}, though.
+    % So \let them to their normal equivalents.
+    \let-\realdash \let_\normalunderscore
+  }
+}
+
+% We have this subroutine so that we can handle at least some @value's
+% properly in indexes (we call \makevalueexpandable in \indexdummies).
+% The command has to be fully expandable (if the variable is set), since
+% the result winds up in the index file.  This means that if the
+% variable's value contains other Texinfo commands, it's almost certain
+% it will fail (although perhaps we could fix that with sufficient work
+% to do a one-level expansion on the result, instead of complete).
+%
+\def\expandablevalue#1{%
+  \expandafter\ifx\csname SET#1\endcsname\relax
+    {[No value for ``#1'']}%
+    \message{Variable `#1', used in @value, is not set.}%
+  \else
+    \csname SET#1\endcsname
+  \fi
+}
+
+% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
+% with @set.
+%
+% To get special treatment of `@end ifset,' call \makeond and the redefine.
+%
+\makecond{ifset}
+\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}}
+\def\doifset#1#2{%
+  {%
+    \makevalueexpandable
+    \let\next=\empty
+    \expandafter\ifx\csname SET#2\endcsname\relax
+      #1% If not set, redefine \next.
+    \fi
+    \expandafter
+  }\next
+}
+\def\ifsetfail{\doignore{ifset}}
+
+% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
+% defined with @set, or has been undefined with @clear.
+%
+% The `\else' inside the `\doifset' parameter is a trick to reuse the
+% above code: if the variable is not set, do nothing, if it is set,
+% then redefine \next to \ifclearfail.
+%
+\makecond{ifclear}
+\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}}
+\def\ifclearfail{\doignore{ifclear}}
+
+% @dircategory CATEGORY  -- specify a category of the dir file
+% which this file should belong to.  Ignore this in TeX.
+\let\dircategory=\comment
+
+% @defininfoenclose.
+\let\definfoenclose=\comment
+
+
+\message{indexing,}
+% Index generation facilities
+
+% Define \newwrite to be identical to plain tex's \newwrite
+% except not \outer, so it can be used within macros and \if's.
+\edef\newwrite{\makecsname{ptexnewwrite}}
+
+% \newindex {foo} defines an index named foo.
+% It automatically defines \fooindex such that
+% \fooindex ...rest of line... puts an entry in the index foo.
+% It also defines \fooindfile to be the number of the output channel for
+% the file that accumulates this index.  The file's extension is foo.
+% The name of an index should be no more than 2 characters long
+% for the sake of vms.
+%
+\def\newindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
+    \noexpand\doindex{#1}}
+}
+
+% @defindex foo  ==  \newindex{foo}
+%
+\def\defindex{\parsearg\newindex}
+
+% Define @defcodeindex, like @defindex except put all entries in @code.
+%
+\def\defcodeindex{\parsearg\newcodeindex}
+%
+\def\newcodeindex#1{%
+  \iflinks
+    \expandafter\newwrite \csname#1indfile\endcsname
+    \openout \csname#1indfile\endcsname \jobname.#1
+  \fi
+  \expandafter\xdef\csname#1index\endcsname{%
+    \noexpand\docodeindex{#1}}%
+}
+
+
+% @synindex foo bar    makes index foo feed into index bar.
+% Do this instead of @defindex foo if you don't want it as a separate index.
+%
+% @syncodeindex foo bar   similar, but put all entries made for index foo
+% inside @code.
+%
+\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
+\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
+
+% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
+% #3 the target index (bar).
+\def\dosynindex#1#2#3{%
+  % Only do \closeout if we haven't already done it, else we'll end up
+  % closing the target index.
+  \expandafter \ifx\csname donesynindex#2\endcsname \undefined
+    % The \closeout helps reduce unnecessary open files; the limit on the
+    % Acorn RISC OS is a mere 16 files.
+    \expandafter\closeout\csname#2indfile\endcsname
+    \expandafter\let\csname\donesynindex#2\endcsname = 1
+  \fi
+  % redefine \fooindfile:
+  \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
+  \expandafter\let\csname#2indfile\endcsname=\temp
+  % redefine \fooindex:
+  \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
+}
+
+% Define \doindex, the driver for all \fooindex macros.
+% Argument #1 is generated by the calling \fooindex macro,
+%  and it is "foo", the name of the index.
+
+% \doindex just uses \parsearg; it calls \doind for the actual work.
+% This is because \doind is more useful to call from other macros.
+
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+
+\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
+\def\singleindexer #1{\doind{\indexname}{#1}}
+
+% like the previous two, but they put @code around the argument.
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
+\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+
+% Take care of Texinfo commands that can appear in an index entry.
+% Since there are some commands we want to expand, and others we don't,
+% we have to laboriously prevent expansion for those that we don't.
+%
+\def\indexdummies{%
+  \escapechar = `\\     % use backslash in output files.
+  \def\@{@}% change to @@ when we switch to @ as escape char in index files.
+  \def\ {\realbackslash\space }%
+  % Need these in case \tex is in effect and \{ is a \delimiter again.
+  % But can't use \lbracecmd and \rbracecmd because texindex assumes
+  % braces and backslashes are used only as delimiters.
+  \let\{ = \mylbrace
+  \let\} = \myrbrace
+  %
+  % Do the redefinitions.
+  \commondummies
+}
+
+% For the aux and toc files, @ is the escape character.  So we want to
+% redefine everything using @ as the escape character (instead of
+% \realbackslash, still used for index files).  When everything uses @,
+% this will be simpler.
+%
+\def\atdummies{%
+  \def\@{@@}%
+  \def\ {@ }%
+  \let\{ = \lbraceatcmd
+  \let\} = \rbraceatcmd
+  %
+  % Do the redefinitions.
+  \commondummies
+}
+
+% Called from \indexdummies and \atdummies.
+%
+\def\commondummies{%
+  %
+  % \definedummyword defines \#1 as \string\#1\space, thus effectively
+  % preventing its expansion.  This is used only for control% words,
+  % not control letters, because the \space would be incorrect for
+  % control characters, but is needed to separate the control word
+  % from whatever follows.
+  %
+  % For control letters, we have \definedummyletter, which omits the
+  % space.
+  %
+  % These can be used both for control words that take an argument and
+  % those that do not.  If it is followed by {arg} in the input, then
+  % that will dutifully get written to the index (or wherever).
+  %
+  \def\definedummyword  ##1{\def##1{\string##1\space}}%
+  \def\definedummyletter##1{\def##1{\string##1}}%
+  \let\definedummyaccent\definedummyletter
+  %
+  \commondummiesnofonts
+  %
+  \definedummyletter\_%
+  %
+  % Non-English letters.
+  \definedummyword\AA
+  \definedummyword\AE
+  \definedummyword\L
+  \definedummyword\OE
+  \definedummyword\O
+  \definedummyword\aa
+  \definedummyword\ae
+  \definedummyword\l
+  \definedummyword\oe
+  \definedummyword\o
+  \definedummyword\ss
+  \definedummyword\exclamdown
+  \definedummyword\questiondown
+  \definedummyword\ordf
+  \definedummyword\ordm
+  %
+  % Although these internal commands shouldn't show up, sometimes they do.
+  \definedummyword\bf
+  \definedummyword\gtr
+  \definedummyword\hat
+  \definedummyword\less
+  \definedummyword\sf
+  \definedummyword\sl
+  \definedummyword\tclose
+  \definedummyword\tt
+  %
+  \definedummyword\LaTeX
+  \definedummyword\TeX
+  %
+  % Assorted special characters.
+  \definedummyword\bullet
+  \definedummyword\comma
+  \definedummyword\copyright
+  \definedummyword\registeredsymbol
+  \definedummyword\dots
+  \definedummyword\enddots
+  \definedummyword\equiv
+  \definedummyword\error
+  \definedummyword\euro
+  \definedummyword\expansion
+  \definedummyword\minus
+  \definedummyword\pounds
+  \definedummyword\point
+  \definedummyword\print
+  \definedummyword\result
+  %
+  % We want to disable all macros so that they are not expanded by \write.
+  \macrolist
+  %
+  \normalturnoffactive
+  %
+  % Handle some cases of @value -- where it does not contain any
+  % (non-fully-expandable) commands.
+  \makevalueexpandable
+}
+
+% \commondummiesnofonts: common to \commondummies and \indexnofonts.
+%
+% Better have this without active chars.
+{
+  \catcode`\~=\other
+  \gdef\commondummiesnofonts{%
+    % Control letters and accents.
+    \definedummyletter\!%
+    \definedummyaccent\"%
+    \definedummyaccent\'%
+    \definedummyletter\*%
+    \definedummyaccent\,%
+    \definedummyletter\.%
+    \definedummyletter\/%
+    \definedummyletter\:%
+    \definedummyaccent\=%
+    \definedummyletter\?%
+    \definedummyaccent\^%
+    \definedummyaccent\`%
+    \definedummyaccent\~%
+    \definedummyword\u
+    \definedummyword\v
+    \definedummyword\H
+    \definedummyword\dotaccent
+    \definedummyword\ringaccent
+    \definedummyword\tieaccent
+    \definedummyword\ubaraccent
+    \definedummyword\udotaccent
+    \definedummyword\dotless
+    %
+    % Texinfo font commands.
+    \definedummyword\b
+    \definedummyword\i
+    \definedummyword\r
+    \definedummyword\sc
+    \definedummyword\t
+    %
+    % Commands that take arguments.
+    \definedummyword\acronym
+    \definedummyword\cite
+    \definedummyword\code
+    \definedummyword\command
+    \definedummyword\dfn
+    \definedummyword\emph
+    \definedummyword\env
+    \definedummyword\file
+    \definedummyword\kbd
+    \definedummyword\key
+    \definedummyword\math
+    \definedummyword\option
+    \definedummyword\samp
+    \definedummyword\strong
+    \definedummyword\tie
+    \definedummyword\uref
+    \definedummyword\url
+    \definedummyword\var
+    \definedummyword\verb
+    \definedummyword\w
+  }
+}
+
+% \indexnofonts is used when outputting the strings to sort the index
+% by, and when constructing control sequence names.  It eliminates all
+% control sequences and just writes whatever the best ASCII sort string
+% would be for a given command (usually its argument).
+%
+\def\indexnofonts{%
+  % Accent commands should become @asis.
+  \def\definedummyaccent##1{\let##1\asis}%
+  % We can just ignore other control letters.
+  \def\definedummyletter##1{\let##1\empty}%
+  % Hopefully, all control words can become @asis.
+  \let\definedummyword\definedummyaccent
+  %
+  \commondummiesnofonts
+  %
+  % Don't no-op \tt, since it isn't a user-level command
+  % and is used in the definitions of the active chars like <, >, |, etc.
+  % Likewise with the other plain tex font commands.
+  %\let\tt=\asis
+  %
+  \def\ { }%
+  \def\@{@}%
+  % how to handle braces?
+  \def\_{\normalunderscore}%
+  %
+  % Non-English letters.
+  \def\AA{AA}%
+  \def\AE{AE}%
+  \def\L{L}%
+  \def\OE{OE}%
+  \def\O{O}%
+  \def\aa{aa}%
+  \def\ae{ae}%
+  \def\l{l}%
+  \def\oe{oe}%
+  \def\o{o}%
+  \def\ss{ss}%
+  \def\exclamdown{!}%
+  \def\questiondown{?}%
+  \def\ordf{a}%
+  \def\ordm{o}%
+  %
+  \def\LaTeX{LaTeX}%
+  \def\TeX{TeX}%
+  %
+  % Assorted special characters.
+  % (The following {} will end up in the sort string, but that's ok.)
+  \def\bullet{bullet}%
+  \def\comma{,}%
+  \def\copyright{copyright}%
+  \def\registeredsymbol{R}%
+  \def\dots{...}%
+  \def\enddots{...}%
+  \def\equiv{==}%
+  \def\error{error}%
+  \def\euro{euro}%
+  \def\expansion{==>}%
+  \def\minus{-}%
+  \def\pounds{pounds}%
+  \def\point{.}%
+  \def\print{-|}%
+  \def\result{=>}%
+  %
+  % We need to get rid of all macros, leaving only the arguments (if present).
+  % Of course this is not nearly correct, but it is the best we can do for now.
+  % makeinfo does not expand macros in the argument to @deffn, which ends up
+  % writing an index entry, and texindex isn't prepared for an index sort entry
+  % that starts with \.
+  % 
+  % Since macro invocations are followed by braces, we can just redefine them
+  % to take a single TeX argument.  The case of a macro invocation that
+  % goes to end-of-line is not handled.
+  % 
+  \macrolist
+}
+
+\let\indexbackslash=0  %overridden during \printindex.
+\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
+
+% Most index entries go through here, but \dosubind is the general case.
+% #1 is the index name, #2 is the entry text.
+\def\doind#1#2{\dosubind{#1}{#2}{}}
+
+% Workhorse for all \fooindexes.
+% #1 is name of index, #2 is stuff to put there, #3 is subentry --
+% empty if called from \doind, as we usually are (the main exception
+% is with most defuns, which call us directly).
+%
+\def\dosubind#1#2#3{%
+  \iflinks
+  {%
+    % Store the main index entry text (including the third arg).
+    \toks0 = {#2}%
+    % If third arg is present, precede it with a space.
+    \def\thirdarg{#3}%
+    \ifx\thirdarg\empty \else
+      \toks0 = \expandafter{\the\toks0 \space #3}%
+    \fi
+    %
+    \edef\writeto{\csname#1indfile\endcsname}%
+    %
+    \ifvmode
+      \dosubindsanitize
+    \else
+      \dosubindwrite
+    \fi
+  }%
+  \fi
+}
+
+% Write the entry in \toks0 to the index file:
+%
+\def\dosubindwrite{%
+  % Put the index entry in the margin if desired.
+  \ifx\SETmarginindex\relax\else
+    \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}%
+  \fi
+  %
+  % Remember, we are within a group.
+  \indexdummies % Must do this here, since \bf, etc expand at this stage
+  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
+      % so it will be output as is; and it will print as backslash.
+  %
+  % Process the index entry with all font commands turned off, to
+  % get the string to sort by.
+  {\indexnofonts
+   \edef\temp{\the\toks0}% need full expansion
+   \xdef\indexsorttmp{\temp}%
+  }%
+  %
+  % Set up the complete index entry, with both the sort key and
+  % the original text, including any font commands.  We write
+  % three arguments to \entry to the .?? file (four in the
+  % subentry case), texindex reduces to two when writing the .??s
+  % sorted result.
+  \edef\temp{%
+    \write\writeto{%
+      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+  }%
+  \temp
+}
+
+% Take care of unwanted page breaks:
+%
+% If a skip is the last thing on the list now, preserve it
+% by backing up by \lastskip, doing the \write, then inserting
+% the skip again.  Otherwise, the whatsit generated by the
+% \write will make \lastskip zero.  The result is that sequences
+% like this:
+% @end defun
+% @tindex whatever
+% @defun ...
+% will have extra space inserted, because the \medbreak in the
+% start of the @defun won't see the skip inserted by the @end of
+% the previous defun.
+%
+% But don't do any of this if we're not in vertical mode.  We
+% don't want to do a \vskip and prematurely end a paragraph.
+%
+% Avoid page breaks due to these extra skips, too.
+%
+% But wait, there is a catch there:
+% We'll have to check whether \lastskip is zero skip.  \ifdim is not
+% sufficient for this purpose, as it ignores stretch and shrink parts
+% of the skip.  The only way seems to be to check the textual
+% representation of the skip.
+%
+% The following is almost like \def\zeroskipmacro{0.0pt} except that
+% the ``p'' and ``t'' characters have catcode \other, not 11 (letter).
+%
+\edef\zeroskipmacro{\expandafter\the\csname z at skip\endcsname}
+%
+% ..., ready, GO:
+%
+\def\dosubindsanitize{%
+  % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
+  \skip0 = \lastskip
+  \edef\lastskipmacro{\the\lastskip}%
+  \count255 = \lastpenalty
+  %
+  % If \lastskip is nonzero, that means the last item was a
+  % skip.  And since a skip is discardable, that means this
+  % -\skip0 glue we're inserting is preceded by a
+  % non-discardable item, therefore it is not a potential
+  % breakpoint, therefore no \nobreak needed.
+  \ifx\lastskipmacro\zeroskipmacro
+  \else
+    \vskip-\skip0
+  \fi
+  %
+  \dosubindwrite
+  %
+  \ifx\lastskipmacro\zeroskipmacro
+    % If \lastskip was zero, perhaps the last item was a penalty, and
+    % perhaps it was >=10000, e.g., a \nobreak.  In that case, we want
+    % to re-insert the same penalty (values >10000 are used for various
+    % signals); since we just inserted a non-discardable item, any
+    % following glue (such as a \parskip) would be a breakpoint.  For example:
+    % 
+    %   @deffn deffn-whatever
+    %   @vindex index-whatever
+    %   Description.
+    % would allow a break between the index-whatever whatsit
+    % and the "Description." paragraph.
+    \ifnum\count255>9999 \penalty\count255 \fi
+  \else
+    % On the other hand, if we had a nonzero \lastskip,
+    % this make-up glue would be preceded by a non-discardable item
+    % (the whatsit from the \write), so we must insert a \nobreak.
+    \nobreak\vskip\skip0
+  \fi
+}
+
+% The index entry written in the file actually looks like
+%  \entry {sortstring}{page}{topic}
+% or
+%  \entry {sortstring}{page}{topic}{subtopic}
+% The texindex program reads in these files and writes files
+% containing these kinds of lines:
+%  \initial {c}
+%     before the first topic whose initial is c
+%  \entry {topic}{pagelist}
+%     for a topic that is used without subtopics
+%  \primary {topic}
+%     for the beginning of a topic that is used with subtopics
+%  \secondary {subtopic}{pagelist}
+%     for each subtopic.
+
+% Define the user-accessible indexing commands
+% @findex, @vindex, @kindex, @cindex.
+
+\def\findex {\fnindex}
+\def\kindex {\kyindex}
+\def\cindex {\cpindex}
+\def\vindex {\vrindex}
+\def\tindex {\tpindex}
+\def\pindex {\pgindex}
+
+\def\cindexsub {\begingroup\obeylines\cindexsub}
+{\obeylines %
+\gdef\cindexsub "#1" #2^^M{\endgroup %
+\dosubind{cp}{#2}{#1}}}
+
+% Define the macros used in formatting output of the sorted index material.
+
+% @printindex causes a particular index (the ??s file) to get printed.
+% It does not print any chapter heading (usually an @unnumbered).
+%
+\parseargdef\printindex{\begingroup
+  \dobreak \chapheadingskip{10000}%
+  %
+  \smallfonts \rm
+  \tolerance = 9500
+  \everypar = {}% don't want the \kern\-parindent from indentation suppression.
+  %
+  % See if the index file exists and is nonempty.
+  % Change catcode of @ here so that if the index file contains
+  % \initial {@}
+  % as its first line, TeX doesn't complain about mismatched braces
+  % (because it thinks @} is a control sequence).
+  \catcode`\@ = 11
+  \openin 1 \jobname.#1s
+  \ifeof 1
+    % \enddoublecolumns gets confused if there is no text in the index,
+    % and it loses the chapter title and the aux file entries for the
+    % index.  The easiest way to prevent this problem is to make sure
+    % there is some text.
+    \putwordIndexNonexistent
+  \else
+    %
+    % If the index file exists but is empty, then \openin leaves \ifeof
+    % false.  We have to make TeX try to read something from the file, so
+    % it can discover if there is anything in it.
+    \read 1 to \temp
+    \ifeof 1
+      \putwordIndexIsEmpty
+    \else
+      % Index files are almost Texinfo source, but we use \ as the escape
+      % character.  It would be better to use @, but that's too big a change
+      % to make right now.
+      \def\indexbackslash{\backslashcurfont}%
+      \catcode`\\ = 0
+      \escapechar = `\\
+      \begindoublecolumns
+      \input \jobname.#1s
+      \enddoublecolumns
+    \fi
+  \fi
+  \closein 1
+\endgroup}
+
+% These macros are used by the sorted index file itself.
+% Change them to control the appearance of the index.
+
+\def\initial#1{{%
+  % Some minor font changes for the special characters.
+  \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
+  %
+  % Remove any glue we may have, we'll be inserting our own.
+  \removelastskip
+  %
+  % We like breaks before the index initials, so insert a bonus.
+  \nobreak
+  \vskip 0pt plus 3\baselineskip
+  \penalty 0
+  \vskip 0pt plus -3\baselineskip
+  %
+  % Typeset the initial.  Making this add up to a whole number of
+  % baselineskips increases the chance of the dots lining up from column
+  % to column.  It still won't often be perfect, because of the stretch
+  % we need before each entry, but it's better.
+  %
+  % No shrink because it confuses \balancecolumns.
+  \vskip 1.67\baselineskip plus .5\baselineskip
+  \leftline{\secbf #1}%
+  % Do our best not to break after the initial.
+  \nobreak
+  \vskip .33\baselineskip plus .1\baselineskip
+}}
+
+% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
+% then page number (#2) flushed to the right margin.  It is used for index
+% and table of contents entries.  The paragraph is indented by \leftskip.
+%
+% A straightforward implementation would start like this:
+%	\def\entry#1#2{...
+% But this frozes the catcodes in the argument, and can cause problems to
+% @code, which sets - active.  This problem was fixed by a kludge---
+% ``-'' was active throughout whole index, but this isn't really right.
+%
+% The right solution is to prevent \entry from swallowing the whole text.
+%                                 --kasal, 21nov03
+\def\entry{%
+  \begingroup
+    %
+    % Start a new paragraph if necessary, so our assignments below can't
+    % affect previous text.
+    \par
+    %
+    % Do not fill out the last line with white space.
+    \parfillskip = 0in
+    %
+    % No extra space above this paragraph.
+    \parskip = 0in
+    %
+    % Do not prefer a separate line ending with a hyphen to fewer lines.
+    \finalhyphendemerits = 0
+    %
+    % \hangindent is only relevant when the entry text and page number
+    % don't both fit on one line.  In that case, bob suggests starting the
+    % dots pretty far over on the line.  Unfortunately, a large
+    % indentation looks wrong when the entry text itself is broken across
+    % lines.  So we use a small indentation and put up with long leaders.
+    %
+    % \hangafter is reset to 1 (which is the value we want) at the start
+    % of each paragraph, so we need not do anything with that.
+    \hangindent = 2em
+    %
+    % When the entry text needs to be broken, just fill out the first line
+    % with blank space.
+    \rightskip = 0pt plus1fil
+    %
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus1pt
+    %
+    % Swallow the left brace of the text (first parameter):
+    \afterassignment\doentry
+    \let\temp =
+}
+\def\doentry{%
+    \bgroup % Instead of the swallowed brace.
+      \noindent
+      \aftergroup\finishentry
+      % And now comes the text of the entry.
+}
+\def\finishentry#1{%
+    % #1 is the page number.
+    %
+    % The following is kludged to not output a line of dots in the index if
+    % there are no page numbers.  The next person who breaks this will be
+    % cursed by a Unix daemon.
+    \def\tempa{{\rm }}%
+    \def\tempb{#1}%
+    \edef\tempc{\tempa}%
+    \edef\tempd{\tempb}%
+    \ifx\tempc\tempd
+      \ %
+    \else
+      %
+      % If we must, put the page number on a line of its own, and fill out
+      % this line with blank space.  (The \hfil is overwhelmed with the
+      % fill leaders glue in \indexdotfill if the page number does fit.)
+      \hfil\penalty50
+      \null\nobreak\indexdotfill % Have leaders before the page number.
+      %
+      % The `\ ' here is removed by the implicit \unskip that TeX does as
+      % part of (the primitive) \par.  Without it, a spurious underfull
+      % \hbox ensues.
+      \ifpdf
+	\pdfgettoks#1.%
+	\ \the\toksA
+      \else
+	\ #1%
+      \fi
+    \fi
+    \par
+  \endgroup
+}
+
+% Like \dotfill except takes at least 1 em.
+\def\indexdotfill{\cleaders
+  \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
+
+\def\primary #1{\line{#1\hfil}}
+
+\newskip\secondaryindent \secondaryindent=0.5cm
+\def\secondary#1#2{{%
+  \parfillskip=0in
+  \parskip=0in
+  \hangindent=1in
+  \hangafter=1
+  \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
+  \ifpdf
+    \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
+  \else
+    #2
+  \fi
+  \par
+}}
+
+% Define two-column mode, which we use to typeset indexes.
+% Adapted from the TeXbook, page 416, which is to say,
+% the manmac.tex format used to print the TeXbook itself.
+\catcode`\@=11
+
+\newbox\partialpage
+\newdimen\doublecolumnhsize
+
+\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+  % Grab any single-column material above us.
+  \output = {%
+    %
+    % Here is a possibility not foreseen in manmac: if we accumulate a
+    % whole lot of material, we might end up calling this \output
+    % routine twice in a row (see the doublecol-lose test, which is
+    % essentially a couple of indexes with @setchapternewpage off).  In
+    % that case we just ship out what is in \partialpage with the normal
+    % output routine.  Generally, \partialpage will be empty when this
+    % runs and this will be a no-op.  See the indexspread.tex test case.
+    \ifvoid\partialpage \else
+      \onepageout{\pagecontents\partialpage}%
+    \fi
+    %
+    \global\setbox\partialpage = \vbox{%
+      % Unvbox the main output page.
+      \unvbox\PAGE
+      \kern-\topskip \kern\baselineskip
+    }%
+  }%
+  \eject % run that output routine to set \partialpage
+  %
+  % Use the double-column output routine for subsequent pages.
+  \output = {\doublecolumnout}%
+  %
+  % Change the page size parameters.  We could do this once outside this
+  % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
+  % format, but then we repeat the same computation.  Repeating a couple
+  % of assignments once per index is clearly meaningless for the
+  % execution time, so we may as well do it in one place.
+  %
+  % First we halve the line length, less a little for the gutter between
+  % the columns.  We compute the gutter based on the line length, so it
+  % changes automatically with the paper format.  The magic constant
+  % below is chosen so that the gutter has the same value (well, +-<1pt)
+  % as it did when we hard-coded it.
+  %
+  % We put the result in a separate register, \doublecolumhsize, so we
+  % can restore it in \pagesofar, after \hsize itself has (potentially)
+  % been clobbered.
+  %
+  \doublecolumnhsize = \hsize
+    \advance\doublecolumnhsize by -.04154\hsize
+    \divide\doublecolumnhsize by 2
+  \hsize = \doublecolumnhsize
+  %
+  % Double the \vsize as well.  (We don't need a separate register here,
+  % since nobody clobbers \vsize.)
+  \vsize = 2\vsize
+}
+
+% The double-column output routine for all double-column pages except
+% the last.
+%
+\def\doublecolumnout{%
+  \splittopskip=\topskip \splitmaxdepth=\maxdepth
+  % Get the available space for the double columns -- the normal
+  % (undoubled) page height minus any material left over from the
+  % previous page.
+  \dimen@ = \vsize
+  \divide\dimen@ by 2
+  \advance\dimen@ by -\ht\partialpage
+  %
+  % box0 will be the left-hand column, box2 the right.
+  \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
+  \onepageout\pagesofar
+  \unvbox255
+  \penalty\outputpenalty
+}
+%
+% Re-output the contents of the output page -- any previous material,
+% followed by the two boxes we just split, in box0 and box2.
+\def\pagesofar{%
+  \unvbox\partialpage
+  %
+  \hsize = \doublecolumnhsize
+  \wd0=\hsize \wd2=\hsize
+  \hbox to\pagewidth{\box0\hfil\box2}%
+}
+%
+% All done with double columns.
+\def\enddoublecolumns{%
+  \output = {%
+    % Split the last of the double-column material.  Leave it on the
+    % current page, no automatic page break.
+    \balancecolumns
+    %
+    % If we end up splitting too much material for the current page,
+    % though, there will be another page break right after this \output
+    % invocation ends.  Having called \balancecolumns once, we do not
+    % want to call it again.  Therefore, reset \output to its normal
+    % definition right away.  (We hope \balancecolumns will never be
+    % called on to balance too much material, but if it is, this makes
+    % the output somewhat more palatable.)
+    \global\output = {\onepageout{\pagecontents\PAGE}}%
+  }%
+  \eject
+  \endgroup % started in \begindoublecolumns
+  %
+  % \pagegoal was set to the doubled \vsize above, since we restarted
+  % the current page.  We're now back to normal single-column
+  % typesetting, so reset \pagegoal to the normal \vsize (after the
+  % \endgroup where \vsize got restored).
+  \pagegoal = \vsize
+}
+%
+% Called at the end of the double column material.
+\def\balancecolumns{%
+  \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
+  \dimen@ = \ht0
+  \advance\dimen@ by \topskip
+  \advance\dimen@ by-\baselineskip
+  \divide\dimen@ by 2 % target to split to
+  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen at .}%
+  \splittopskip = \topskip
+  % Loop until we get a decent breakpoint.
+  {%
+    \vbadness = 10000
+    \loop
+      \global\setbox3 = \copy0
+      \global\setbox1 = \vsplit3 to \dimen@
+    \ifdim\ht3>\dimen@
+      \global\advance\dimen@ by 1pt
+    \repeat
+  }%
+  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
+  \setbox0=\vbox to\dimen@{\unvbox1}%
+  \setbox2=\vbox to\dimen@{\unvbox3}%
+  %
+  \pagesofar
+}
+\catcode`\@ = \other
+
+
+\message{sectioning,}
+% Chapters, sections, etc.
+
+% \unnumberedno is an oxymoron, of course.  But we count the unnumbered
+% sections so that we can refer to them unambiguously in the pdf
+% outlines by their "section number".  We avoid collisions with chapter
+% numbers by starting them at 10000.  (If a document ever has 10000
+% chapters, we're in trouble anyway, I'm sure.)
+\newcount\unnumberedno \unnumberedno = 10000
+\newcount\chapno
+\newcount\secno        \secno=0
+\newcount\subsecno     \subsecno=0
+\newcount\subsubsecno  \subsubsecno=0
+
+% This counter is funny since it counts through charcodes of letters A, B, ...
+\newcount\appendixno  \appendixno = `\@
+%
+% \def\appendixletter{\char\the\appendixno}
+% We do the following ugly conditional instead of the above simple
+% construct for the sake of pdftex, which needs the actual
+% letter in the expansion, not just typeset.
+%
+\def\appendixletter{%
+  \ifnum\appendixno=`A A%
+  \else\ifnum\appendixno=`B B%
+  \else\ifnum\appendixno=`C C%
+  \else\ifnum\appendixno=`D D%
+  \else\ifnum\appendixno=`E E%
+  \else\ifnum\appendixno=`F F%
+  \else\ifnum\appendixno=`G G%
+  \else\ifnum\appendixno=`H H%
+  \else\ifnum\appendixno=`I I%
+  \else\ifnum\appendixno=`J J%
+  \else\ifnum\appendixno=`K K%
+  \else\ifnum\appendixno=`L L%
+  \else\ifnum\appendixno=`M M%
+  \else\ifnum\appendixno=`N N%
+  \else\ifnum\appendixno=`O O%
+  \else\ifnum\appendixno=`P P%
+  \else\ifnum\appendixno=`Q Q%
+  \else\ifnum\appendixno=`R R%
+  \else\ifnum\appendixno=`S S%
+  \else\ifnum\appendixno=`T T%
+  \else\ifnum\appendixno=`U U%
+  \else\ifnum\appendixno=`V V%
+  \else\ifnum\appendixno=`W W%
+  \else\ifnum\appendixno=`X X%
+  \else\ifnum\appendixno=`Y Y%
+  \else\ifnum\appendixno=`Z Z%
+  % The \the is necessary, despite appearances, because \appendixletter is
+  % expanded while writing the .toc file.  \char\appendixno is not
+  % expandable, thus it is written literally, thus all appendixes come out
+  % with the same letter (or @) in the toc without it.
+  \else\char\the\appendixno
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
+
+% Each @chapter defines this as the name of the chapter.
+% page headings and footings can use it.  @section does likewise.
+% However, they are not reliable, because we don't use marks.
+\def\thischapter{}
+\def\thissection{}
+
+\newcount\absseclevel % used to calculate proper heading level
+\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count
+
+% @raisesections: treat @section as chapter, @subsection as section, etc.
+\def\raisesections{\global\advance\secbase by -1}
+\let\up=\raisesections % original BFox name
+
+% @lowersections: treat @chapter as section, @section as subsection, etc.
+\def\lowersections{\global\advance\secbase by 1}
+\let\down=\lowersections % original BFox name
+
+% we only have subsub.
+\chardef\maxseclevel = 3
+%
+% A numbered section within an unnumbered changes to unnumbered too.
+% To achive this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unmlevel = \maxseclevel
+%
+% Trace whether the current chapter is an appendix or not:
+% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
+\def\chapheadtype{N}
+
+% Choose a heading macro
+% #1 is heading type
+% #2 is heading level
+% #3 is text for heading
+\def\genhead#1#2#3{%
+  % Compute the abs. sec. level:
+  \absseclevel=#2
+  \advance\absseclevel by \secbase
+  % Make sure \absseclevel doesn't fall outside the range:
+  \ifnum \absseclevel < 0
+    \absseclevel = 0
+  \else
+    \ifnum \absseclevel > 3
+      \absseclevel = 3
+    \fi
+  \fi
+  % The heading type:
+  \def\headtype{#1}%
+  \if \headtype U%
+    \ifnum \absseclevel < \unmlevel
+      \chardef\unmlevel = \absseclevel
+    \fi
+  \else
+    % Check for appendix sections:
+    \ifnum \absseclevel = 0
+      \edef\chapheadtype{\headtype}%
+    \else
+      \if \headtype A\if \chapheadtype N%
+	\errmessage{@appendix... within a non-appendix chapter}%
+      \fi\fi
+    \fi
+    % Check for numbered within unnumbered:
+    \ifnum \absseclevel > \unmlevel
+      \def\headtype{U}%
+    \else
+      \chardef\unmlevel = 3
+    \fi
+  \fi
+  % Now print the heading:
+  \if \headtype U%
+    \ifcase\absseclevel
+	\unnumberedzzz{#3}%
+    \or \unnumberedseczzz{#3}%
+    \or \unnumberedsubseczzz{#3}%
+    \or \unnumberedsubsubseczzz{#3}%
+    \fi
+  \else
+    \if \headtype A%
+      \ifcase\absseclevel
+	  \appendixzzz{#3}%
+      \or \appendixsectionzzz{#3}%
+      \or \appendixsubseczzz{#3}%
+      \or \appendixsubsubseczzz{#3}%
+      \fi
+    \else
+      \ifcase\absseclevel
+	  \chapterzzz{#3}%
+      \or \seczzz{#3}%
+      \or \numberedsubseczzz{#3}%
+      \or \numberedsubsubseczzz{#3}%
+      \fi
+    \fi
+  \fi
+  \suppressfirstparagraphindent
+}
+
+% an interface:
+\def\numhead{\genhead N}
+\def\apphead{\genhead A}
+\def\unnmhead{\genhead U}
+
+% @chapter, @appendix, @unnumbered.  Increment top-level counter, reset
+% all lower-level sectioning counters to zero.
+%
+% Also set \chaplevelprefix, which we prepend to @float sequence numbers
+% (e.g., figures), q.v.  By default (before any chapter), that is empty.
+\let\chaplevelprefix = \empty
+%
+\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz
+\def\chapterzzz#1{%
+  % section resetting is \global in case the chapter is in a group, such
+  % as an @include file.
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\chapno by 1
+  %
+  % Used for \float.
+  \gdef\chaplevelprefix{\the\chapno.}%
+  \resetallfloatnos
+  %
+  \message{\putwordChapter\space \the\chapno}%
+  %
+  % Write the actual heading.
+  \chapmacro{#1}{Ynumbered}{\the\chapno}%
+  %
+  % So @section and the like are numbered underneath this chapter.
+  \global\let\section = \numberedsec
+  \global\let\subsection = \numberedsubsec
+  \global\let\subsubsection = \numberedsubsubsec
+}
+
+\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\def\appendixzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\appendixno by 1
+  \gdef\chaplevelprefix{\appendixletter.}%
+  \resetallfloatnos
+  %
+  \def\appendixnum{\putwordAppendix\space \appendixletter}%
+  \message{\appendixnum}%
+  %
+  \chapmacro{#1}{Yappendix}{\appendixletter}%
+  %
+  \global\let\section = \appendixsec
+  \global\let\subsection = \appendixsubsec
+  \global\let\subsubsection = \appendixsubsubsec
+}
+
+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\def\unnumberedzzz#1{%
+  \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+    \global\advance\unnumberedno by 1
+  %
+  % Since an unnumbered has no number, no prefix for figures.
+  \global\let\chaplevelprefix = \empty
+  \resetallfloatnos
+  %
+  % This used to be simply \message{#1}, but TeX fully expands the
+  % argument to \message.  Therefore, if #1 contained @-commands, TeX
+  % expanded them.  For example, in `@unnumbered The @cite{Book}', TeX
+  % expanded @cite (which turns out to cause errors because \cite is meant
+  % to be executed, not expanded).
+  %
+  % Anyway, we don't want the fully-expanded definition of @cite to appear
+  % as a result of the \message, we just want `@cite' itself.  We use
+  % \the<toks register> to achieve this: TeX expands \the<toks> only once,
+  % simply yielding the contents of <toks register>.  (We also do this for
+  % the toc entries.)
+  \toks0 = {#1}%
+  \message{(\the\toks0)}%
+  %
+  \chapmacro{#1}{Ynothing}{\the\unnumberedno}%
+  %
+  \global\let\section = \unnumberedsec
+  \global\let\subsection = \unnumberedsubsec
+  \global\let\subsubsection = \unnumberedsubsubsec
+}
+
+% @centerchap is like @unnumbered, but the heading is centered.
+\outer\parseargdef\centerchap{%
+  % Well, we could do the following in a group, but that would break
+  % an assumption that \chapmacro is called at the outermost level.
+  % Thus we are safer this way:		--kasal, 24feb04
+  \let\centerparametersmaybe = \centerparameters
+  \unnmhead0{#1}%
+  \let\centerparametersmaybe = \relax
+}
+
+% @top is like @unnumbered.
+\let\top\unnumbered
+
+% Sections.
+\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
+\def\seczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
+}
+
+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz#1{%
+  \global\subsecno=0 \global\subsubsecno=0  \global\advance\secno by 1
+  \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz#1{%
+  \global\subsubsecno=0  \global\advance\subsecno by 1
+  \sectionheading{#1}{subsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynumbered}%
+                 {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Yappendix}%
+                 {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\def\unnumberedsubsubseczzz#1{%
+  \global\advance\subsubsecno by 1
+  \sectionheading{#1}{subsubsec}{Ynothing}%
+                 {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+% These macros control what the section commands do, according
+% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
+% Define them by default for a numbered chapter.
+\let\section = \numberedsec
+\let\subsection = \numberedsubsec
+\let\subsubsection = \numberedsubsubsec
+
+% Define @majorheading, @heading and @subheading
+
+% NOTE on use of \vbox for chapter headings, section headings, and such:
+%       1) We use \vbox rather than the earlier \line to permit
+%          overlong headings to fold.
+%       2) \hyphenpenalty is set to 10000 because hyphenation in a
+%          heading is obnoxious; this forbids it.
+%       3) Likewise, headings look best if no \parindent is used, and
+%          if justification is not attempted.  Hence \raggedright.
+
+
+\def\majorheading{%
+  {\advance\chapheadingskip by 10pt \chapbreak }%
+  \parsearg\chapheadingzzz
+}
+
+\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
+\def\chapheadingzzz#1{%
+  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                    \parindent=0pt\raggedright
+                    \rm #1\hfill}}%
+  \bigskip \par\penalty 200\relax
+  \suppressfirstparagraphindent
+}
+
+% @heading, @subheading, @subsubheading.
+\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{}
+  \suppressfirstparagraphindent}
+
+% These macros generate a chapter, section, etc. heading only
+% (including whitespace, linebreaking, etc. around it),
+% given all the information in convenient, parsed form.
+
+%%% Args are the skip and penalty (usually negative)
+\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip\chapheadingskip
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
+
+\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
+
+\def\CHAPPAGoff{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chapbreak
+\global\let\pagealignmacro=\chappager}
+
+\def\CHAPPAGon{%
+\global\let\contentsalignmacro = \chappager
+\global\let\pchapsepmacro=\chappager
+\global\let\pagealignmacro=\chappager
+\global\def\HEADINGSon{\HEADINGSsingle}}
+
+\def\CHAPPAGodd{%
+\global\let\contentsalignmacro = \chapoddpage
+\global\let\pchapsepmacro=\chapoddpage
+\global\let\pagealignmacro=\chapoddpage
+\global\def\HEADINGSon{\HEADINGSdouble}}
+
+\CHAPPAGon
+
+% Chapter opening.
+%
+% #1 is the text, #2 is the section type (Ynumbered, Ynothing,
+% Yappendix, Yomitfromtoc), #3 the chapter number.
+%
+% To test against our argument.
+\def\Ynothingkeyword{Ynothing}
+\def\Yomitfromtockeyword{Yomitfromtoc}
+\def\Yappendixkeyword{Yappendix}
+%
+\def\chapmacro#1#2#3{%
+  \pchapsepmacro
+  {%
+    \chapfonts \rm
+    %
+    % Have to define \thissection before calling \donoderef, because the
+    % xref code eventually uses it.  On the other hand, it has to be called
+    % after \pchapsepmacro, or the headline will change too soon.
+    \gdef\thissection{#1}%
+    \gdef\thischaptername{#1}%
+    %
+    % Only insert the separating space if we have a chapter/appendix
+    % number, and don't print the unnumbered ``number''.
+    \def\temptype{#2}%
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unnchap}%
+      \gdef\thischapter{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+      \def\toctype{omit}%
+      \gdef\thischapter{}%
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+      \def\toctype{app}%
+      % We don't substitute the actual chapter name into \thischapter
+      % because we don't want its macros evaluated now.  And we don't
+      % use \thissection because that changes with each section.
+      %
+      \xdef\thischapter{\putwordAppendix{} \appendixletter:
+                        \noexpand\thischaptername}%
+    \else
+      \setbox0 = \hbox{#3\enspace}%
+      \def\toctype{numchap}%
+      \xdef\thischapter{\putwordChapter{} \the\chapno:
+                        \noexpand\thischaptername}%
+    \fi\fi\fi
+    %
+    % Write the toc entry for this chapter.  Must come before the
+    % \donoderef, because we include the current node name in the toc
+    % entry, and \donoderef resets it to empty.
+    \writetocentry{\toctype}{#1}{#3}%
+    %
+    % For pdftex, we have to write out the node definition (aka, make
+    % the pdfdest) after any page break, but before the actual text has
+    % been typeset.  If the destination for the pdf outline is after the
+    % text, then jumping from the outline may wind up with the text not
+    % being visible, for instance under high magnification.
+    \donoderef{#2}%
+    %
+    % Typeset the actual heading.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+          \hangindent=\wd0 \centerparametersmaybe
+          \unhbox0 #1\par}%
+  }%
+  \nobreak\bigskip % no page break after a chapter title
+  \nobreak
+}
+
+% @centerchap -- centered and unnumbered.
+\let\centerparametersmaybe = \relax
+\def\centerparameters{%
+  \advance\rightskip by 3\rightskip
+  \leftskip = \rightskip
+  \parfillskip = 0pt
+}
+
+
+% I don't think this chapter style is supported any more, so I'm not
+% updating it with the new noderef stuff.  We'll see.  --karl, 11aug03.
+%
+\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
+%
+\def\unnchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt\raggedright
+                       \rm #1\hfill}}\bigskip \par\nobreak
+}
+\def\chfopen #1#2{\chapoddpage {\chapfonts
+\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
+\par\penalty 5000 %
+}
+\def\centerchfopen #1{%
+\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
+                       \parindent=0pt
+                       \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
+}
+\def\CHAPFopen{%
+  \global\let\chapmacro=\chfopen
+  \global\let\centerchapmacro=\centerchfopen}
+
+
+% Section titles.  These macros combine the section number parts and
+% call the generic \sectionheading to do the printing.
+%
+\newskip\secheadingskip
+\def\secheadingbreak{\dobreak \secheadingskip{-1000}}
+
+% Subsection titles.
+\newskip\subsecheadingskip
+\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}}
+
+% Subsubsection titles.
+\def\subsubsecheadingskip{\subsecheadingskip}
+\def\subsubsecheadingbreak{\subsecheadingbreak}
+
+
+% Print any size, any type, section title.
+%
+% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is
+% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the
+% section number.
+%
+\def\sectionheading#1#2#3#4{%
+  {%
+    % Switch to the right set of fonts.
+    \csname #2fonts\endcsname \rm
+    %
+    % Insert space above the heading.
+    \csname #2headingbreak\endcsname
+    %
+    % Only insert the space after the number if we have a section number.
+    \def\sectionlevel{#2}%
+    \def\temptype{#3}%
+    %
+    \ifx\temptype\Ynothingkeyword
+      \setbox0 = \hbox{}%
+      \def\toctype{unn}%
+      \gdef\thissection{#1}%
+    \else\ifx\temptype\Yomitfromtockeyword
+      % for @headings -- no section number, don't include in toc,
+      % and don't redefine \thissection.
+      \setbox0 = \hbox{}%
+      \def\toctype{omit}%
+      \let\sectionlevel=\empty
+    \else\ifx\temptype\Yappendixkeyword
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{app}%
+      \gdef\thissection{#1}%
+    \else
+      \setbox0 = \hbox{#4\enspace}%
+      \def\toctype{num}%
+      \gdef\thissection{#1}%
+    \fi\fi\fi
+    %
+    % Write the toc entry (before \donoderef).  See comments in \chfplain.
+    \writetocentry{\toctype\sectionlevel}{#1}{#4}%
+    %
+    % Write the node reference (= pdf destination for pdftex).
+    % Again, see comments in \chfplain.
+    \donoderef{#3}%
+    %
+    % Output the actual section heading.
+    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+          \hangindent=\wd0  % zero if no section number
+          \unhbox0 #1}%
+  }%
+  % Add extra space after the heading -- half of whatever came above it.
+  % Don't allow stretch, though.
+  \kern .5 \csname #2headingskip\endcsname
+  %
+  % Do not let the kern be a potential breakpoint, as it would be if it
+  % was followed by glue.
+  \nobreak
+  %
+  % We'll almost certainly start a paragraph next, so don't let that
+  % glue accumulate.  (Not a breakpoint because it's preceded by a
+  % discardable item.)
+  \vskip-\parskip
+  % 
+  % This is purely so the last item on the list is a known \penalty >
+  % 10000.  This is so \startdefun can avoid allowing breakpoints after
+  % section headings.  Otherwise, it would insert a valid breakpoint between:
+  % 
+  %   @section sec-whatever
+  %   @deffn def-whatever
+  \penalty 10001
+}
+
+
+\message{toc,}
+% Table of contents.
+\newwrite\tocfile
+
+% Write an entry to the toc file, opening it if necessary.
+% Called from @chapter, etc.
+%
+% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno}
+% We append the current node name (if any) and page number as additional
+% arguments for the \{chap,sec,...}entry macros which will eventually
+% read this.  The node name is used in the pdf outlines as the
+% destination to jump to.
+%
+% We open the .toc file for writing here instead of at @setfilename (or
+% any other fixed time) so that @contents can be anywhere in the document.
+% But if #1 is `omit', then we don't do anything.  This is used for the
+% table of contents chapter openings themselves.
+%
+\newif\iftocfileopened
+\def\omitkeyword{omit}%
+%
+\def\writetocentry#1#2#3{%
+  \edef\writetoctype{#1}%
+  \ifx\writetoctype\omitkeyword \else
+    \iftocfileopened\else
+      \immediate\openout\tocfile = \jobname.toc
+      \global\tocfileopenedtrue
+    \fi
+    %
+    \iflinks
+      {\atdummies
+       \edef\temp{%
+         \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}%
+       \temp
+      }
+    \fi
+  \fi
+  %
+  % Tell \shipout to create a pdf destination on each page, if we're
+  % writing pdf.  These are used in the table of contents.  We can't
+  % just write one on every page because the title pages are numbered
+  % 1 and 2 (the page numbers aren't printed), and so are the first
+  % two pages of the document.  Thus, we'd have two destinations named
+  % `1', and two named `2'.
+  \ifpdf \global\pdfmakepagedesttrue \fi
+}
+
+
+% These characters do not print properly in the Computer Modern roman
+% fonts, so we must take special care.  This is more or less redundant
+% with the Texinfo input format setup at the end of this file.
+% 
+\def\activecatcodes{%
+  \catcode`\"=\active
+  \catcode`\$=\active
+  \catcode`\<=\active
+  \catcode`\>=\active
+  \catcode`\\=\active
+  \catcode`\^=\active
+  \catcode`\_=\active
+  \catcode`\|=\active
+  \catcode`\~=\active
+}
+
+
+% Read the toc file, which is essentially Texinfo input.
+\def\readtocfile{%
+  \setupdatafile
+  \activecatcodes
+  \input \jobname.toc
+}
+
+\newskip\contentsrightmargin \contentsrightmargin=1in
+\newcount\savepageno
+\newcount\lastnegativepageno \lastnegativepageno = -1
+
+% Prepare to read what we've written to \tocfile.
+%
+\def\startcontents#1{%
+  % If @setchapternewpage on, and @headings double, the contents should
+  % start on an odd page, unlike chapters.  Thus, we maintain
+  % \contentsalignmacro in parallel with \pagealignmacro.
+  % From: Torbjorn Granlund <tege at matematik.su.se>
+  \contentsalignmacro
+  \immediate\closeout\tocfile
+  %
+  % Don't need to put `Contents' or `Short Contents' in the headline.
+  % It is abundantly clear what they are.
+  \def\thischapter{}%
+  \chapmacro{#1}{Yomitfromtoc}{}%
+  %
+  \savepageno = \pageno
+  \begingroup                  % Set up to handle contents files properly.
+    \raggedbottom              % Worry more about breakpoints than the bottom.
+    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    %
+    % Roman numerals for page numbers.
+    \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
+}
+
+
+% Normal (long) toc.
+\def\contents{%
+  \startcontents{\putwordTOC}%
+    \openin 1 \jobname.toc
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+    \ifeof 1 \else
+      \pdfmakeoutlines
+    \fi
+    \closein 1
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+
+% And just the chapters.
+\def\summarycontents{%
+  \startcontents{\putwordShortTOC}%
+    %
+    \let\numchapentry = \shortchapentry
+    \let\appentry = \shortchapentry
+    \let\unnchapentry = \shortunnchapentry
+    % We want a true roman here for the page numbers.
+    \secfonts
+    \let\rm=\shortcontrm \let\bf=\shortcontbf
+    \let\sl=\shortcontsl \let\tt=\shortconttt
+    \rm
+    \hyphenpenalty = 10000
+    \advance\baselineskip by 1pt % Open it up a little.
+    \def\numsecentry##1##2##3##4{}
+    \let\appsecentry = \numsecentry
+    \let\unnsecentry = \numsecentry
+    \let\numsubsecentry = \numsecentry
+    \let\appsubsecentry = \numsecentry
+    \let\unnsubsecentry = \numsecentry
+    \let\numsubsubsecentry = \numsecentry
+    \let\appsubsubsecentry = \numsecentry
+    \let\unnsubsubsecentry = \numsecentry
+    \openin 1 \jobname.toc
+    \ifeof 1 \else
+      \readtocfile
+    \fi
+    \closein 1
+    \vfill \eject
+    \contentsalignmacro % in case @setchapternewpage odd is in effect
+  \endgroup
+  \lastnegativepageno = \pageno
+  \global\pageno = \savepageno
+}
+\let\shortcontents = \summarycontents
+
+% Typeset the label for a chapter or appendix for the short contents.
+% The arg is, e.g., `A' for an appendix, or `3' for a chapter.
+%
+\def\shortchaplabel#1{%
+  % This space should be enough, since a single number is .5em, and the
+  % widest letter (M) is 1em, at least in the Computer Modern fonts.
+  % But use \hss just in case.
+  % (This space doesn't include the extra space that gets added after
+  % the label; that gets put in by \shortchapentry above.)
+  %
+  % We'd like to right-justify chapter numbers, but that looks strange
+  % with appendix letters.  And right-justifying numbers and
+  % left-justifying letters looks strange when there is less than 10
+  % chapters.  Have to read the whole toc once to know how many chapters
+  % there are before deciding ...
+  \hbox to 1em{#1\hss}%
+}
+
+% These macros generate individual entries in the table of contents.
+% The first argument is the chapter or section name.
+% The last argument is the page number.
+% The arguments in between are the chapter number, section number, ...
+
+% Chapters, in the main contents.
+\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
+%
+% Chapters, in the short toc.
+% See comments in \dochapentry re vbox and related settings.
+\def\shortchapentry#1#2#3#4{%
+  \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+}
+
+% Appendices, in the main contents.
+% Need the word Appendix, and a fixed-size box.
+%
+\def\appendixbox#1{%
+  % We use M since it's probably the widest letter.
+  \setbox0 = \hbox{\putwordAppendix{} M}%
+  \hbox to \wd0{\putwordAppendix{} #1\hss}}
+%
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+
+% Unnumbered chapters.
+\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+
+% Sections.
+\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
+\let\appsecentry=\numsecentry
+\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}}
+
+% Subsections.
+\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsecentry=\numsubsecentry
+\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}}
+
+% And subsubsections.
+\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}}
+\let\appsubsubsecentry=\numsubsubsecentry
+\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}}
+
+% This parameter controls the indentation of the various levels.
+% Same as \defaultparindent.
+\newdimen\tocindent \tocindent = 15pt
+
+% Now for the actual typesetting. In all these, #1 is the text and #2 is the
+% page number.
+%
+% If the toc has to be broken over pages, we want it to be at chapters
+% if at all possible; hence the \penalty.
+\def\dochapentry#1#2{%
+   \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
+   \begingroup
+     \chapentryfonts
+     \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+   \endgroup
+   \nobreak\vskip .25\baselineskip plus.1\baselineskip
+}
+
+\def\dosecentry#1#2{\begingroup
+  \secentryfonts \leftskip=\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsecentry#1#2{\begingroup
+  \subsecentryfonts \leftskip=2\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+\def\dosubsubsecentry#1#2{\begingroup
+  \subsubsecentryfonts \leftskip=3\tocindent
+  \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+\endgroup}
+
+% We use the same \entry macro as for the index entries.
+\let\tocentry = \entry
+
+% Space between chapter (or whatever) number and the title.
+\def\labelspace{\hskip1em \relax}
+
+\def\dopageno#1{{\rm #1}}
+\def\doshortpageno#1{{\rm #1}}
+
+\def\chapentryfonts{\secfonts \rm}
+\def\secentryfonts{\textfonts}
+\def\subsecentryfonts{\textfonts}
+\def\subsubsecentryfonts{\textfonts}
+
+
+\message{environments,}
+% @foo ... @end foo.
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, it should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+   \advance\hsize by -2\dimen2 % Rules.
+   \vbox{%
+      \hrule height\dimen2
+      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
+         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+         \kern3pt\vrule width\dimen2}% Space to right.
+      \hrule height\dimen2}
+    \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
+
+% @tex ... @end tex    escapes into raw Tex temporarily.
+% One exception: @ is still an escape character, so that @end tex works.
+% But \@ or @@ will get a plain tex @ character.
+
+\envdef\tex{%
+  \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
+  \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
+  \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
+  \catcode `\%=14
+  \catcode `\+=\other
+  \catcode `\"=\other
+  \catcode `\|=\other
+  \catcode `\<=\other
+  \catcode `\>=\other
+  \escapechar=`\\
+  %
+  \let\b=\ptexb
+  \let\bullet=\ptexbullet
+  \let\c=\ptexc
+  \let\,=\ptexcomma
+  \let\.=\ptexdot
+  \let\dots=\ptexdots
+  \let\equiv=\ptexequiv
+  \let\!=\ptexexclam
+  \let\i=\ptexi
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \let\{=\ptexlbrace
+  \let\+=\tabalign
+  \let\}=\ptexrbrace
+  \let\/=\ptexslash
+  \let\*=\ptexstar
+  \let\t=\ptext
+  \let\frenchspacing=\plainfrenchspacing
+  %
+  \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
+  \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
+  \def\@{@}%
+}
+% There is no need to define \Etex.
+
+% Define @lisp ... @end lisp.
+% @lisp environment forms a group so it can rebind things,
+% including the definition of @end lisp (which normally is erroneous).
+
+% Amount to narrow the margins by for @lisp.
+\newskip\lispnarrowing \lispnarrowing=0.4in
+
+% This is the definition that ^^M gets inside @lisp, @example, and other
+% such environments.  \null is better than a space, since it doesn't
+% have any width.
+\def\lisppar{\null\endgraf}
+
+% This space is always present above and below environments.
+\newskip\envskipamount \envskipamount = 0pt
+
+% Make spacing and below environment symmetrical.  We use \parskip here
+% to help in doing that, since in @example-like environments \parskip
+% is reset to zero; thus the \afterenvbreak inserts no space -- but the
+% start of the next paragraph will insert \parskip.
+%
+\def\aboveenvbreak{{%
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
+  \ifnum \lastpenalty=10000 \else
+    \advance\envskipamount by \parskip
+    \endgraf
+    \ifdim\lastskip<\envskipamount
+      \removelastskip
+      % it's not a good place to break if the last penalty was \nobreak
+      % or better ...
+      \ifnum\lastpenalty<10000 \penalty-50 \fi
+      \vskip\envskipamount
+    \fi
+  \fi
+}}
+
+\let\afterenvbreak = \aboveenvbreak
+
+% \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
+% also clear it, so that its embedded environments do the narrowing again.
+\let\nonarrowing=\relax
+
+% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
+% environment contents.
+\font\circle=lcircle10
+\newdimen\circthick
+\newdimen\cartouter\newdimen\cartinner
+\newskip\normbskip\newskip\normpskip\newskip\normlskip
+\circthick=\fontdimen8\circle
+%
+\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
+\def\ctr{{\hskip 6pt\circle\char'010}}
+\def\cbl{{\circle\char'012\hskip -6pt}}
+\def\cbr{{\hskip 6pt\circle\char'011}}
+\def\carttop{\hbox to \cartouter{\hskip\lskip
+        \ctl\leaders\hrule height\circthick\hfil\ctr
+        \hskip\rskip}}
+\def\cartbot{\hbox to \cartouter{\hskip\lskip
+        \cbl\leaders\hrule height\circthick\hfil\cbr
+        \hskip\rskip}}
+%
+\newskip\lskip\newskip\rskip
+
+\envdef\cartouche{%
+  \ifhmode\par\fi  % can't be in the midst of a paragraph.
+  \startsavinginserts
+  \lskip=\leftskip \rskip=\rightskip
+  \leftskip=0pt\rightskip=0pt % we want these *outside*.
+  \cartinner=\hsize \advance\cartinner by-\lskip
+  \advance\cartinner by-\rskip
+  \cartouter=\hsize
+  \advance\cartouter by 18.4pt	% allow for 3pt kerns on either
+				% side, and for 6pt waste from
+				% each corner char, and rule thickness
+  \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
+  % Flag to tell @lisp, etc., not to narrow margin.
+  \let\nonarrowing = t%
+  \vbox\bgroup
+      \baselineskip=0pt\parskip=0pt\lineskip=0pt
+      \carttop
+      \hbox\bgroup
+	  \hskip\lskip
+	  \vrule\kern3pt
+	  \vbox\bgroup
+	      \kern3pt
+	      \hsize=\cartinner
+	      \baselineskip=\normbskip
+	      \lineskip=\normlskip
+	      \parskip=\normpskip
+	      \vskip -\parskip
+	      \comment % For explanation, see the end of \def\group.
+}
+\def\Ecartouche{%
+              \ifhmode\par\fi
+	      \kern3pt
+	  \egroup
+	  \kern3pt\vrule
+	  \hskip\rskip
+      \egroup
+      \cartbot
+  \egroup
+  \checkinserts
+}
+
+
+% This macro is called at the beginning of all the @example variants,
+% inside a group.
+\def\nonfillstart{%
+  \aboveenvbreak
+  \hfuzz = 12pt % Don't be fussy
+  \sepspaces % Make spaces be word-separators rather than space tokens.
+  \let\par = \lisppar % don't ignore blank lines
+  \obeylines % each line of input is a line of output
+  \parskip = 0pt
+  \parindent = 0pt
+  \emergencystretch = 0pt % don't try to avoid overfull boxes
+  \ifx\nonarrowing\relax
+    \advance \leftskip by \lispnarrowing
+    \exdentamount=\lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \let\exdent=\nofillexdent
+}
+
+% If you want all examples etc. small: @set dispenvsize small.
+% If you want even small examples the full size: @set dispenvsize nosmall.
+% This affects the following displayed environments:
+%    @example, @display, @format, @lisp
+%
+\def\smallword{small}
+\def\nosmallword{nosmall}
+\let\SETdispenvsize\relax
+\def\setnormaldispenv{%
+  \ifx\SETdispenvsize\smallword
+    \smallexamplefonts \rm
+  \fi
+}
+\def\setsmalldispenv{%
+  \ifx\SETdispenvsize\nosmallword
+  \else
+    \smallexamplefonts \rm
+  \fi
+}
+
+% We often define two environments, @foo and @smallfoo.
+% Let's do it by one command:
+\def\makedispenv #1#2{
+  \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
+  \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+  \expandafter\let\csname E#1\endcsname \afterenvbreak
+  \expandafter\let\csname Esmall#1\endcsname \afterenvbreak
+}
+
+% Define two synonyms:
+\def\maketwodispenvs #1#2#3{
+  \makedispenv{#1}{#3}
+  \makedispenv{#2}{#3}
+}
+
+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel at xerox.
+%
+\maketwodispenvs {lisp}{example}{%
+  \nonfillstart
+  \tt
+  \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+  \gobble       % eat return
+}
+
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenv {display}{%
+  \nonfillstart
+  \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenv{format}{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+
+% @flushleft: same as @format, but doesn't obey \SETdispenvsize.
+\envdef\flushleft{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \gobble
+}
+\let\Eflushleft = \afterenvbreak
+
+% @flushright.
+%
+\envdef\flushright{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  \advance\leftskip by 0pt plus 1fill
+  \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @quotation does normal linebreaking (hence we can't use \nonfillstart)
+% and narrows the margins.  We keep \parskip nonzero in general, since
+% we're doing normal filling.  So, when using \aboveenvbreak and
+% \afterenvbreak, temporarily make \parskip 0.
+%
+\envdef\quotation{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \advance\rightskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+  \parsearg\quotationlabel
+}
+
+% We have retained a nonzero parskip for the environment, since we're
+% doing normal filling.
+%
+\def\Equotation{%
+  \par
+  \ifx\quotationauthor\undefined\else
+    % indent a bit.
+    \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+  \fi
+  {\parskip=0pt \afterenvbreak}%
+}
+
+% If we're given an argument, typeset it in bold with a colon after.
+\def\quotationlabel#1{%
+  \def\temp{#1}%
+  \ifx\temp\empty \else
+    {\bf #1: }%
+  \fi
+}
+
+
+% LaTeX-like @verbatim... at end verbatim and @verb{<char>...<char>}
+% If we want to allow any <char> as delimiter,
+% we need the curly braces so that makeinfo sees the @verb command, eg:
+% `@verbx...x' would look like the '@verbx' command.  --janneke at gnu.org
+%
+% [Knuth]: Donald Ervin Knuth, 1996.  The TeXbook.
+%
+% [Knuth] p.344; only we need to do the other characters Texinfo sets
+% active too.  Otherwise, they get lost as the first character on a
+% verbatim line.
+\def\dospecials{%
+  \do\ \do\\\do\{\do\}\do\$\do\&%
+  \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
+  \do\<\do\>\do\|\do\@\do+\do\"%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+  \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% [Knuth] pp. 380,381,391
+% Disable Spanish ligatures ?` and !` of \tt font
+\begingroup
+  \catcode`\`=\active\gdef`{\relax\lq}
+\endgroup
+%
+% Setup for the @verb command.
+%
+% Eight spaces for a tab
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
+\endgroup
+%
+\def\setupverb{%
+  \tt  % easiest (and conventionally used) font for verbatim
+  \def\par{\leavevmode\endgraf}%
+  \catcode`\`=\active
+  \tabeightspaces
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+}
+
+% Setup for the @verbatim environment
+%
+% Real tab expansion
+\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
+%
+\def\starttabbox{\setbox0=\hbox\bgroup}
+\begingroup
+  \catcode`\^^I=\active
+  \gdef\tabexpand{%
+    \catcode`\^^I=\active
+    \def^^I{\leavevmode\egroup
+      \dimen0=\wd0 % the width so far, or since the previous tab
+      \divide\dimen0 by\tabw
+      \multiply\dimen0 by\tabw % compute previous multiple of \tabw
+      \advance\dimen0 by\tabw  % advance to next multiple of \tabw
+      \wd0=\dimen0 \box0 \starttabbox
+    }%
+  }
+\endgroup
+\def\setupverbatim{%
+  \let\nonarrowing = t%
+  \nonfillstart
+  % Easiest (and conventionally used) font for verbatim
+  \tt
+  \def\par{\leavevmode\egroup\box0\endgraf}%
+  \catcode`\`=\active
+  \tabexpand
+  % Respect line breaks,
+  % print special symbols as themselves, and
+  % make each space count
+  % must do in this order:
+  \obeylines \uncatcodespecials \sepspaces
+  \everypar{\starttabbox}%
+}
+
+% Do the @verb magic: verbatim text is quoted by unique
+% delimiter characters.  Before first delimiter expect a
+% right brace, after last delimiter expect closing brace:
+%
+%    \def\doverb'{'<char>#1<char>'}'{#1}
+%
+% [Knuth] p. 382; only eat outer {}
+\begingroup
+  \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other
+  \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
+\endgroup
+%
+\def\verb{\begingroup\setupverb\doverb}
+%
+%
+% Do the @verbatim magic: define the macro \doverbatim so that
+% the (first) argument ends when '@end verbatim' is reached, ie:
+%
+%     \def\doverbatim#1 at end verbatim{#1}
+%
+% For Texinfo it's a lot easier than for LaTeX,
+% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
+% we need not redefine '\', '{' and '}'.
+%
+% Inspired by LaTeX's verbatim command set [latex.ltx]
+%
+\begingroup
+  \catcode`\ =\active
+  \obeylines %
+  % ignore everything up to the first ^^M, that's the newline at the end
+  % of the @verbatim input line itself.  Otherwise we get an extra blank
+  % line in the output.
+  \xdef\doverbatim#1^^M#2 at end verbatim{#2\noexpand\end\gobble verbatim}%
+  % We really want {...\end verbatim} in the body of the macro, but
+  % without the active space; thus we have to use \xdef and \gobble.
+\endgroup
+%
+\envdef\verbatim{%
+    \setupverbatim\doverbatim
+}
+\let\Everbatim = \afterenvbreak
+
+
+% @verbatiminclude FILE - insert text of file in verbatim environment.
+%
+\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude}
+%
+\def\doverbatiminclude#1{%
+  {%
+    \makevalueexpandable
+    \setupverbatim
+    \input #1
+    \afterenvbreak
+  }%
+}
+
+% @copying ... @end copying.
+% Save the text away for @insertcopying later.
+%
+% We save the uninterpreted tokens, rather than creating a box.
+% Saving the text in a box would be much easier, but then all the
+% typesetting commands (@smallbook, font changes, etc.) have to be done
+% beforehand -- and a) we want @copying to be done first in the source
+% file; b) letting users define the frontmatter in as flexible order as
+% possible is very desirable.
+%
+\def\copying{\checkenv{}\begingroup\scanargctxt\docopying}
+\def\docopying#1 at end copying{\endgroup\def\copyingtext{#1}}
+%
+\def\insertcopying{%
+  \begingroup
+    \parindent = 0pt  % paragraph indentation looks wrong on title page
+    \scanexp\copyingtext
+  \endgroup
+}
+
+\message{defuns,}
+% @defun etc.
+
+\newskip\defbodyindent \defbodyindent=.4in
+\newskip\defargsindent \defargsindent=50pt
+\newskip\deflastargmargin \deflastargmargin=18pt
+
+% Start the processing of @deffn:
+\def\startdefun{%
+  \ifnum\lastpenalty<10000
+    \medbreak
+  \else
+    % If there are two @def commands in a row, we'll have a \nobreak,
+    % which is there to keep the function description together with its
+    % header.  But if there's nothing but headers, we need to allow a
+    % break somewhere.  Check specifically for penalty 10002, inserted
+    % by \defargscommonending, instead of 10000, since the sectioning
+    % commands also insert a nobreak penalty, and we don't want to allow
+    % a break between a section heading and a defun.
+    % 
+    \ifnum\lastpenalty=10002 \penalty2000 \fi
+    %
+    % Similarly, after a section heading, do not allow a break.
+    % But do insert the glue.
+    \medskip  % preceded by discardable penalty, so not a breakpoint
+  \fi
+  %
+  \parindent=0in
+  \advance\leftskip by \defbodyindent
+  \exdentamount=\defbodyindent
+}
+
+\def\dodefunx#1{%
+  % First, check whether we are in the right environment:
+  \checkenv#1%
+  %
+  % As above, allow line break if we have multiple x headers in a row.
+  % It's not a great place, though.
+  \ifnum\lastpenalty=10002 \penalty3000 \fi
+  %
+  % And now, it's time to reuse the body of the original defun:
+  \expandafter\gobbledefun#1%
+}
+\def\gobbledefun#1\startdefun{}
+
+% \printdefunline \deffnheader{text}
+%
+\def\printdefunline#1#2{%
+  \begingroup
+    % call \deffnheader:
+    #1#2 \endheader
+    % common ending:
+    \interlinepenalty = 10000
+    \advance\rightskip by 0pt plus 1fil
+    \endgraf
+    \nobreak\vskip -\parskip
+    \penalty 10002  % signal to \startdefun and \dodefunx
+    % Some of the @defun-type tags do not enable magic parentheses,
+    % rendering the following check redundant.  But we don't optimize.
+    \checkparencounts
+  \endgroup
+}
+
+\def\Edefun{\endgraf\medbreak}
+
+% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
+% the only thing remainnig is to define \deffnheader.
+%
+\def\makedefun#1{%
+  \expandafter\let\csname E#1\endcsname = \Edefun
+  \edef\temp{\noexpand\domakedefun
+    \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}%
+  \temp
+}
+
+% \domakedefun \deffn \deffnx \deffnheader
+%
+% Define \deffn and \deffnx, without parameters.
+% \deffnheader has to be defined explicitly.
+%
+\def\domakedefun#1#2#3{%
+  \envdef#1{%
+    \startdefun
+    \parseargusing\activeparens{\printdefunline#3}%
+  }%
+  \def#2{\dodefunx#1}%
+  \def#3%
+}
+
+%%% Untyped functions:
+
+% @deffn category name args
+\makedefun{deffn}{\deffngeneral{}}
+
+% @deffn category class name args
+\makedefun{defop}#1 {\defopon{#1\ \putwordon}}
+
+% \defopon {category on}class name args
+\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deffngeneral {subind}category name args
+%
+\def\deffngeneral#1#2 #3 #4\endheader{%
+  % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}.
+  \dosubind{fn}{\code{#3}}{#1}%
+  \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
+}
+
+%%% Typed functions:
+
+% @deftypefn category type name args
+\makedefun{deftypefn}{\deftypefngeneral{}}
+
+% @deftypeop category class type name args
+\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}}
+
+% \deftypeopon {category on}class type name args
+\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypefngeneral {subind}category type name args
+%
+\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{fn}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Typed variables:
+
+% @deftypevr category type var args
+\makedefun{deftypevr}{\deftypecvgeneral{}}
+
+% @deftypecv category class type var args
+\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}}
+
+% \deftypecvof {category of}class type var args
+\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} }
+
+% \deftypecvgeneral {subind}category type var args
+%
+\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{%
+  \dosubind{vr}{\code{#4}}{#1}%
+  \defname{#2}{#3}{#4}\defunargs{#5\unskip}%
+}
+
+%%% Untyped variables:
+
+% @defvr category var args
+\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
+
+% @defcv category class var args
+\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}}
+
+% \defcvof {category of}class var args
+\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
+
+%%% Type:
+% @deftp category name args
+\makedefun{deftp}#1 #2 #3\endheader{%
+  \doind{tp}{\code{#2}}%
+  \defname{#1}{}{#2}\defunargs{#3\unskip}%
+}
+
+% Remaining @defun-like shortcuts:
+\makedefun{defun}{\deffnheader{\putwordDeffunc} }
+\makedefun{defmac}{\deffnheader{\putwordDefmac} }
+\makedefun{defspec}{\deffnheader{\putwordDefspec} }
+\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} }
+\makedefun{defvar}{\defvrheader{\putwordDefvar} }
+\makedefun{defopt}{\defvrheader{\putwordDefopt} }
+\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} }
+\makedefun{defmethod}{\defopon\putwordMethodon}
+\makedefun{deftypemethod}{\deftypeopon\putwordMethodon}
+\makedefun{defivar}{\defcvof\putwordInstanceVariableof}
+\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof}
+
+% \defname, which formats the name of the @def (not the args).
+% #1 is the category, such as "Function".
+% #2 is the return type, if any.
+% #3 is the function name.
+%
+% We are followed by (but not passed) the arguments, if any.
+%
+\def\defname#1#2#3{%
+  % Get the values of \leftskip and \rightskip as they were outside the @def...
+  \advance\leftskip by -\defbodyindent
+  %
+  % How we'll format the type name.  Putting it in brackets helps
+  % distinguish it from the body text that may end up on the next line
+  % just below it.
+  \def\temp{#1}%
+  \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
+  %
+  % Figure out line sizes for the paragraph shape.
+  % The first line needs space for \box0; but if \rightskip is nonzero,
+  % we need only space for the part of \box0 which exceeds it:
+  \dimen0=\hsize  \advance\dimen0 by -\wd0  \advance\dimen0 by \rightskip
+  % The continuations:
+  \dimen2=\hsize  \advance\dimen2 by -\defargsindent
+  % (plain.tex says that \dimen1 should be used only as global.)
+  \parshape 2 0in \dimen0 \defargsindent \dimen2
+  %
+  % Put the type name to the right margin.
+  \noindent
+  \hbox to 0pt{%
+    \hfil\box0 \kern-\hsize
+    % \hsize has to be shortened this way:
+    \kern\leftskip
+    % Intentionally do not respect \rightskip, since we need the space.
+  }%
+  %
+  % Allow all lines to be underfull without complaint:
+  \tolerance=10000 \hbadness=10000
+  \exdentamount=\defbodyindent
+  {%
+    % defun fonts. We use typewriter by default (used to be bold) because:
+    % . we're printing identifiers, they should be in tt in principle.
+    % . in languages with many accents, such as Czech or French, it's
+    %   common to leave accents off identifiers.  The result looks ok in
+    %   tt, but exceedingly strange in rm.
+    % . we don't want -- and --- to be treated as ligatures.
+    % . this still does not fix the ?` and !` ligatures, but so far no
+    %   one has made identifiers using them :).
+    \df \tt
+    \def\temp{#2}% return value type
+    \ifx\temp\empty\else \tclose{\temp} \fi
+    #3% output function name
+  }%
+  {\rm\enskip}% hskip 0.5 em of \tenrm
+  %
+  \boldbrax
+  % arguments will be output next, if any.
+}
+
+% Print arguments in slanted roman (not ttsl), inconsistently with using
+% tt for the name.  This is because literal text is sometimes needed in
+% the argument list (groff manual), and ttsl and tt are not very
+% distinguishable.  Prevent hyphenation at `-' chars.
+%
+\def\defunargs#1{%
+  % use sl by default (not ttsl),
+  % tt for the names.
+  \df \sl \hyphenchar\font=0
+  %
+  % On the other hand, if an argument has two dashes (for instance), we
+  % want a way to get ttsl.  Let's try @var for that.
+  \let\var=\ttslanted
+  #1%
+  \sl\hyphenchar\font=45
+}
+
+% We want ()&[] to print specially on the defun line.
+%
+\def\activeparens{%
+  \catcode`\(=\active \catcode`\)=\active
+  \catcode`\[=\active \catcode`\]=\active
+  \catcode`\&=\active
+}
+
+% Make control sequences which act like normal parenthesis chars.
+\let\lparen = ( \let\rparen = )
+
+% Be sure that we always have a definition for `(', etc.  For example,
+% if the fn name has parens in it, \boldbrax will not be in effect yet,
+% so TeX would otherwise complain about undefined control sequence.
+{
+  \activeparens
+  \global\let(=\lparen \global\let)=\rparen
+  \global\let[=\lbrack \global\let]=\rbrack
+  \global\let& = \&
+
+  \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
+  \gdef\magicamp{\let&=\amprm}
+}
+
+\newcount\parencount
+
+% If we encounter &foo, then turn on ()-hacking afterwards
+\newif\ifampseen
+\def\amprm#1 {\ampseentrue{\bf\&#1 }}
+
+\def\parenfont{%
+  \ifampseen
+    % At the first level, print parens in roman,
+    % otherwise use the default font.
+    \ifnum \parencount=1 \rm \fi
+  \else
+    % The \sf parens (in \boldbrax) actually are a little bolder than
+    % the contained text.  This is especially needed for [ and ] .
+    \sf
+  \fi
+}
+\def\infirstlevel#1{%
+  \ifampseen
+    \ifnum\parencount=1
+      #1%
+    \fi
+  \fi
+}
+\def\bfafterword#1 {#1 \bf}
+
+\def\opnr{%
+  \global\advance\parencount by 1
+  {\parenfont(}%
+  \infirstlevel \bfafterword
+}
+\def\clnr{%
+  {\parenfont)}%
+  \infirstlevel \sl
+  \global\advance\parencount by -1
+}
+
+\newcount\brackcount
+\def\lbrb{%
+  \global\advance\brackcount by 1
+  {\bf[}%
+}
+\def\rbrb{%
+  {\bf]}%
+  \global\advance\brackcount by -1
+}
+
+\def\checkparencounts{%
+  \ifnum\parencount=0 \else \badparencount \fi
+  \ifnum\brackcount=0 \else \badbrackcount \fi
+}
+\def\badparencount{%
+  \errmessage{Unbalanced parentheses in @def}%
+  \global\parencount=0
+}
+\def\badbrackcount{%
+  \errmessage{Unbalanced square braces in @def}%
+  \global\brackcount=0
+}
+
+
+\message{macros,}
+% @macro.
+
+% To do this right we need a feature of e-TeX, \scantokens,
+% which we arrange to emulate with a temporary file in ordinary TeX.
+\ifx\eTeXversion\undefined
+  \newwrite\macscribble
+  \def\scantokens#1{%
+    \toks0={#1}%
+    \immediate\openout\macscribble=\jobname.tmp
+    \immediate\write\macscribble{\the\toks0}%
+    \immediate\closeout\macscribble
+    \input \jobname.tmp
+  }
+\fi
+
+\def\scanmacro#1{%
+  \begingroup
+    \newlinechar`\^^M
+    \let\xeatspaces\eatspaces
+    % Undo catcode changes of \startcontents and \doprintindex
+    % When called from @insertcopying or (short)caption, we need active
+    % backslash to get it printed correctly.  Previously, we had
+    % \catcode`\\=\other instead.  We'll see whether a problem appears
+    % with macro expansion.				--kasal, 19aug04
+    \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+    % ... and \example
+    \spaceisspace
+    %
+    % Append \endinput to make sure that TeX does not see the ending newline.
+    %
+    % I've verified that it is necessary both for e-TeX and for ordinary TeX
+    %							--kasal, 29nov03
+    \scantokens{#1\endinput}%
+  \endgroup
+}
+
+\def\scanexp#1{%
+  \edef\temp{\noexpand\scanmacro{#1}}%
+  \temp
+}
+
+\newcount\paramno   % Count of parameters
+\newtoks\macname    % Macro name
+\newif\ifrecursive  % Is it recursive?
+
+% List of all defined macros in the form
+%    \definedummyword\macro1\definedummyword\macro2...
+% Currently is also contains all @aliases; the list can be split
+% if there is a need.
+\def\macrolist{}
+
+% Add the macro to \macrolist
+\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname}
+\def\addtomacrolistxxx#1{%
+     \toks0 = \expandafter{\macrolist\definedummyword#1}%
+     \xdef\macrolist{\the\toks0}%
+}
+
+% Utility routines.
+% This does \let #1 = #2, with \csnames; that is,
+%   \let \csname#1\endcsname = \csname#2\endcsname
+% (except of course we have to play expansion games).
+% 
+\def\cslet#1#2{%
+  \expandafter\let
+  \csname#1\expandafter\endcsname
+  \csname#2\endcsname
+}
+
+% Trim leading and trailing spaces off a string.
+% Concepts from aro-bend problem 15 (see CTAN).
+{\catcode`\@=11
+\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
+\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
+\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
+\def\unbrace#1{#1}
+\unbrace{\gdef\trim@@@ #1 } #2@{#1}
+}
+
+% Trim a single trailing ^^M off a string.
+{\catcode`\^^M=\other \catcode`\Q=3%
+\gdef\eatcr #1{\eatcra #1Q^^MQ}%
+\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
+\gdef\eatcrb#1Q#2Q{#1}%
+}
+
+% Macro bodies are absorbed as an argument in a context where
+% all characters are catcode 10, 11 or 12, except \ which is active
+% (as in normal texinfo). It is necessary to change the definition of \.
+
+% It's necessary to have hard CRs when the macro is executed. This is
+% done by  making ^^M (\endlinechar) catcode 12 when reading the macro
+% body, and then making it the \newlinechar in \scanmacro.
+
+\def\scanctxt{%
+  \catcode`\"=\other
+  \catcode`\+=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\@=\other
+  \catcode`\^=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\~=\other
+}
+
+\def\scanargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+  \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+  \scanctxt
+  \catcode`\{=\other
+  \catcode`\}=\other
+  \catcode`\^^M=\other
+  \usembodybackslash
+}
+
+\def\macroargctxt{%
+  \scanctxt
+  \catcode`\\=\other
+}
+
+% \mbodybackslash is the definition of \ in @macro bodies.
+% It maps \foo\ => \csname macarg.foo\endcsname => #N
+% where N is the macro parameter number.
+% We define \csname macarg.\endcsname to be \realbackslash, so
+% \\ in macro replacement text gets you a backslash.
+
+{\catcode`@=0 @catcode`@\=@active
+ @gdef at usembodybackslash{@let\=@mbodybackslash}
+ @gdef at mbodybackslash#1\{@csname macarg.#1 at endcsname}
+}
+\expandafter\def\csname macarg.\endcsname{\realbackslash}
+
+\def\macro{\recursivefalse\parsearg\macroxxx}
+\def\rmacro{\recursivetrue\parsearg\macroxxx}
+
+\def\macroxxx#1{%
+  \getargs{#1}%           now \macname is the macname and \argl the arglist
+  \ifx\argl\empty       % no arguments
+     \paramno=0%
+  \else
+     \expandafter\parsemargdef \argl;%
+  \fi
+  \if1\csname ismacro.\the\macname\endcsname
+     \message{Warning: redefining \the\macname}%
+  \else
+     \expandafter\ifx\csname \the\macname\endcsname \relax
+     \else \errmessage{Macro name \the\macname\space already defined}\fi
+     \global\cslet{macsave.\the\macname}{\the\macname}%
+     \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
+     \addtomacrolist{\the\macname}%
+  \fi
+  \begingroup \macrobodyctxt
+  \ifrecursive \expandafter\parsermacbody
+  \else \expandafter\parsemacbody
+  \fi}
+
+\parseargdef\unmacro{%
+  \if1\csname ismacro.#1\endcsname
+    \global\cslet{#1}{macsave.#1}%
+    \global\expandafter\let \csname ismacro.#1\endcsname=0%
+    % Remove the macro name from \macrolist:
+    \begingroup
+      \expandafter\let\csname#1\endcsname \relax
+      \let\definedummyword\unmacrodo
+      \xdef\macrolist{\macrolist}%
+    \endgroup
+  \else
+    \errmessage{Macro #1 not defined}%
+  \fi
+}
+
+% Called by \do from \dounmacro on each macro.  The idea is to omit any
+% macro definitions that have been changed to \relax.
+%
+\def\unmacrodo#1{%
+  \ifx #1\relax
+    % remove this
+  \else
+    \noexpand\definedummyword \noexpand#1%
+  \fi
+}
+
+% This makes use of the obscure feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
+\def\getargs#1{\getargsxxx#1{}}
+\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
+\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacargs#1{\def\argl{#1}}
+
+% Parse the optional {params} list.  Set up \paramno and \paramlist
+% so \defmacro knows what to do.  Define \macarg.blah for each blah
+% in the params list, to be ##N where N is the position in that list.
+% That gets used by \mbodybackslash (above).
+
+% We need to get `macro parameter char #' into several definitions.
+% The technique used is stolen from LaTeX:  let \hash be something
+% unexpandable, insert that wherever you need a #, and then redefine
+% it to # just before using the token list produced.
+%
+% The same technique is used to protect \eatspaces till just before
+% the macro is used.
+
+\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
+        \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+\def\parsemargdefxxx#1,{%
+  \if#1;\let\next=\relax
+  \else \let\next=\parsemargdefxxx
+    \advance\paramno by 1%
+    \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+        {\xeatspaces{\hash\the\paramno}}%
+    \edef\paramlist{\paramlist\hash\the\paramno,}%
+  \fi\next}
+
+% These two commands read recursive and nonrecursive macro bodies.
+% (They're different since rec and nonrec macros end differently.)
+
+\long\def\parsemacbody#1 at end macro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\long\def\parsermacbody#1 at end rmacro%
+{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+
+% This defines the macro itself. There are six cases: recursive and
+% nonrecursive macros of zero, one, and many arguments.
+% Much magic with \expandafter here.
+% \xdef is used so that macro definitions will survive the file
+% they're defined in; @include reads the file inside a group.
+\def\defmacro{%
+  \let\hash=##% convert placeholders to macro parameter chars
+  \ifrecursive
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\scanmacro{\temp}}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+         \egroup\noexpand\scanmacro{\temp}}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+        \csname\the\macname xxx\endcsname
+          \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+    \fi
+  \else
+    \ifcase\paramno
+    % 0
+      \expandafter\xdef\csname\the\macname\endcsname{%
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \or % 1
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \noexpand\braceorline
+         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
+      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+        \egroup
+        \noexpand\norecurse{\the\macname}%
+        \noexpand\scanmacro{\temp}\egroup}%
+    \else % many
+      \expandafter\xdef\csname\the\macname\endcsname{%
+         \bgroup\noexpand\macroargctxt
+         \expandafter\noexpand\csname\the\macname xx\endcsname}%
+      \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+          \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+      \expandafter\expandafter
+      \expandafter\xdef
+      \expandafter\expandafter
+      \csname\the\macname xxx\endcsname
+      \paramlist{%
+          \egroup
+          \noexpand\norecurse{\the\macname}%
+          \noexpand\scanmacro{\temp}\egroup}%
+    \fi
+  \fi}
+
+\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
+
+% \braceorline decides whether the next nonwhitespace character is a
+% {.  If so it reads up to the closing }, if not, it reads the whole
+% line.  Whatever was read is then fed to the next control sequence
+% as an argument (by \parsebrace or \parsearg)
+\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
+\def\braceorlinexxx{%
+  \ifx\nchar\bgroup\else
+    \expandafter\parsearg
+  \fi \next}
+
+
+% @alias.
+% We need some trickery to remove the optional spaces around the equal
+% sign.  Just make them active and then expand them all to nothing.
+\def\alias{\parseargusing\obeyspaces\aliasxxx}
+\def\aliasxxx #1{\aliasyyy#1\relax}
+\def\aliasyyy #1=#2\relax{%
+  {%
+    \expandafter\let\obeyedspace=\empty
+    \addtomacrolist{#1}%
+    \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}%
+  }%
+  \next
+}
+
+
+\message{cross references,}
+
+\newwrite\auxfile
+
+\newif\ifhavexrefs    % True if xref values are known.
+\newif\ifwarnedxrefs  % True if we warned once that they aren't known.
+
+% @inforef is relatively simple.
+\def\inforef #1{\inforefzzz #1,,,,**}
+\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+  node \samp{\ignorespaces#1{}}}
+
+% @node's only job in TeX is to define \lastnode, which is used in
+% cross-references.  The @node line might or might not have commas, and
+% might or might not have spaces before the first comma, like:
+% @node foo , bar , ...
+% We don't want such trailing spaces in the node name.
+%
+\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse}
+%
+% also remove a trailing comma, in case of something like this:
+% @node Help-Cross,  ,  , Cross-refs
+\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse}
+\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}}
+
+\let\nwnode=\node
+\let\lastnode=\empty
+
+% Write a cross-reference definition for the current node.  #1 is the
+% type (Ynumbered, Yappendix, Ynothing).
+%
+\def\donoderef#1{%
+  \ifx\lastnode\empty\else
+    \setref{\lastnode}{#1}%
+    \global\let\lastnode=\empty
+  \fi
+}
+
+% @anchor{NAME} -- define xref target at arbitrary point.
+%
+\newcount\savesfregister
+%
+\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
+\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
+\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
+
+% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
+% anchor), which consists of three parts:
+% 1) NAME-title - the current sectioning name taken from \thissection,
+%                 or the anchor name.
+% 2) NAME-snt   - section number and type, passed as the SNT arg, or
+%                 empty for anchors.
+% 3) NAME-pg    - the page number.
+%
+% This is called from \donoderef, \anchor, and \dofloat.  In the case of
+% floats, there is an additional part, which is not written here:
+% 4) NAME-lof   - the text as it should appear in a @listoffloats.
+%
+\def\setref#1#2{%
+  \pdfmkdest{#1}%
+  \iflinks
+    {%
+      \atdummies  % preserve commands, but don't expand them
+      \edef\writexrdef##1##2{%
+	\write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
+	  ##1}{##2}}% these are parameters of \writexrdef
+      }%
+      \toks0 = \expandafter{\thissection}%
+      \immediate \writexrdef{title}{\the\toks0 }%
+      \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+      \writexrdef{pg}{\folio}% will be written later, during \shipout
+    }%
+  \fi
+}
+
+% @xref, @pxref, and @ref generate cross-references.  For \xrefX, #1 is
+% the node name, #2 the name of the Info cross-reference, #3 the printed
+% node name, #4 the name of the Info file, #5 the name of the printed
+% manual.  All but the node name can be omitted.
+%
+\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
+\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
+\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
+  \unsepspaces
+  \def\printedmanual{\ignorespaces #5}%
+  \def\printedrefname{\ignorespaces #3}%
+  \setbox1=\hbox{\printedmanual\unskip}%
+  \setbox0=\hbox{\printedrefname\unskip}%
+  \ifdim \wd0 = 0pt
+    % No printed node name was explicitly given.
+    \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
+      % Use the node name inside the square brackets.
+      \def\printedrefname{\ignorespaces #1}%
+    \else
+      % Use the actual chapter/section title appear inside
+      % the square brackets.  Use the real section title if we have it.
+      \ifdim \wd1 > 0pt
+        % It is in another manual, so we don't have it.
+        \def\printedrefname{\ignorespaces #1}%
+      \else
+        \ifhavexrefs
+          % We know the real title if we have the xref values.
+          \def\printedrefname{\refx{#1-title}{}}%
+        \else
+          % Otherwise just copy the Info node name.
+          \def\printedrefname{\ignorespaces #1}%
+        \fi%
+      \fi
+    \fi
+  \fi
+  %
+  % Make link in pdf output.
+  \ifpdf
+    \leavevmode
+    \getfilename{#4}%
+    {\turnoffactive
+     % See comments at \activebackslashdouble.
+     {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+      \backslashparens\pdfxrefdest}%
+     %
+     \ifnum\filenamelength>0
+       \startlink attr{/Border [0 0 0]}%
+         goto file{\the\filename.pdf} name{\pdfxrefdest}%
+     \else
+       \startlink attr{/Border [0 0 0]}%
+         goto name{\pdfmkpgn{\pdfxrefdest}}%
+     \fi
+    }%
+    \linkcolor
+  \fi
+  %
+  % Float references are printed completely differently: "Figure 1.2"
+  % instead of "[somenode], p.3".  We distinguish them by the
+  % LABEL-title being set to a magic string.
+  {%
+    % Have to otherify everything special to allow the \csname to
+    % include an _ in the xref name, etc.
+    \indexnofonts
+    \turnoffactive
+    \expandafter\global\expandafter\let\expandafter\Xthisreftitle
+      \csname XR#1-title\endcsname
+  }%
+  \iffloat\Xthisreftitle
+    % If the user specified the print name (third arg) to the ref,
+    % print it instead of our usual "Figure 1.2".
+    \ifdim\wd0 = 0pt
+      \refx{#1-snt}%
+    \else
+      \printedrefname
+    \fi
+    %
+    % if the user also gave the printed manual name (fifth arg), append
+    % "in MANUALNAME".
+    \ifdim \wd1 > 0pt
+      \space \putwordin{} \cite{\printedmanual}%
+    \fi
+  \else
+    % node/anchor (non-float) references.
+    %
+    % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
+    % insert empty discretionaries after hyphens, which means that it will
+    % not find a line break at a hyphen in a node names.  Since some manuals
+    % are best written with fairly long node names, containing hyphens, this
+    % is a loss.  Therefore, we give the text of the node name again, so it
+    % is as if TeX is seeing it for the first time.
+    \ifdim \wd1 > 0pt
+      \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
+    \else
+      % _ (for example) has to be the character _ for the purposes of the
+      % control sequence corresponding to the node, but it has to expand
+      % into the usual \leavevmode...\vrule stuff for purposes of
+      % printing. So we \turnoffactive for the \refx-snt, back on for the
+      % printing, back off for the \refx-pg.
+      {\turnoffactive
+       % Only output a following space if the -snt ref is nonempty; for
+       % @unnumbered and @anchor, it won't be.
+       \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
+       \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
+      }%
+      % output the `[mynode]' via a macro so it can be overridden.
+      \xrefprintnodename\printedrefname
+      %
+      % But we always want a comma and a space:
+      ,\space
+      %
+      % output the `page 3'.
+      \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+    \fi
+  \fi
+  \endlink
+\endgroup}
+
+% This macro is called from \xrefX for the `[nodename]' part of xref
+% output.  It's a separate macro only so it can be changed more easily,
+% since square brackets don't work well in some documents.  Particularly
+% one that Bob is working on :).
+%
+\def\xrefprintnodename#1{[#1]}
+
+% Things referred to by \setref.
+%
+\def\Ynothing{}
+\def\Yomitfromtoc{}
+\def\Ynumbered{%
+  \ifnum\secno=0
+    \putwordChapter at tie \the\chapno
+  \else \ifnum\subsecno=0
+    \putwordSection at tie \the\chapno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection at tie \the\chapno.\the\secno.\the\subsecno
+  \else
+    \putwordSection at tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+\def\Yappendix{%
+  \ifnum\secno=0
+     \putwordAppendix at tie @char\the\appendixno{}%
+  \else \ifnum\subsecno=0
+     \putwordSection at tie @char\the\appendixno.\the\secno
+  \else \ifnum\subsubsecno=0
+    \putwordSection at tie @char\the\appendixno.\the\secno.\the\subsecno
+  \else
+    \putwordSection at tie
+      @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
+  \fi\fi\fi
+}
+
+% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
+% If its value is nonempty, SUFFIX is output afterward.
+%
+\def\refx#1#2{%
+  {%
+    \indexnofonts
+    \otherbackslash
+    \expandafter\global\expandafter\let\expandafter\thisrefX
+      \csname XR#1\endcsname
+  }%
+  \ifx\thisrefX\relax
+    % If not defined, say something at least.
+    \angleleft un\-de\-fined\angleright
+    \iflinks
+      \ifhavexrefs
+        \message{\linenumber Undefined cross reference `#1'.}%
+      \else
+        \ifwarnedxrefs\else
+          \global\warnedxrefstrue
+          \message{Cross reference values unknown; you must run TeX again.}%
+        \fi
+      \fi
+    \fi
+  \else
+    % It's defined, so just use it.
+    \thisrefX
+  \fi
+  #2% Output the suffix in any case.
+}
+
+% This is the macro invoked by entries in the aux file.  Usually it's
+% just a \def (we prepend XR to the control sequence name to avoid
+% collisions).  But if this is a float type, we have more work to do.
+%
+\def\xrdef#1#2{%
+  \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value.
+  %
+  % Was that xref control sequence that we just defined for a float?
+  \expandafter\iffloat\csname XR#1\endcsname
+    % it was a float, and we have the (safe) float type in \iffloattype.
+    \expandafter\let\expandafter\floatlist
+      \csname floatlist\iffloattype\endcsname
+    %
+    % Is this the first time we've seen this float type?
+    \expandafter\ifx\floatlist\relax
+      \toks0 = {\do}% yes, so just \do
+    \else
+      % had it before, so preserve previous elements in list.
+      \toks0 = \expandafter{\floatlist\do}%
+    \fi
+    %
+    % Remember this xref in the control sequence \floatlistFLOATTYPE,
+    % for later use in \listoffloats.
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}%
+  \fi
+}
+
+% Read the last existing aux file, if any.  No error if none exists.
+%
+\def\tryauxfile{%
+  \openin 1 \jobname.aux
+  \ifeof 1 \else
+    \readdatafile{aux}%
+    \global\havexrefstrue
+  \fi
+  \closein 1
+}
+
+\def\setupdatafile{%
+  \catcode`\^^@=\other
+  \catcode`\^^A=\other
+  \catcode`\^^B=\other
+  \catcode`\^^C=\other
+  \catcode`\^^D=\other
+  \catcode`\^^E=\other
+  \catcode`\^^F=\other
+  \catcode`\^^G=\other
+  \catcode`\^^H=\other
+  \catcode`\^^K=\other
+  \catcode`\^^L=\other
+  \catcode`\^^N=\other
+  \catcode`\^^P=\other
+  \catcode`\^^Q=\other
+  \catcode`\^^R=\other
+  \catcode`\^^S=\other
+  \catcode`\^^T=\other
+  \catcode`\^^U=\other
+  \catcode`\^^V=\other
+  \catcode`\^^W=\other
+  \catcode`\^^X=\other
+  \catcode`\^^Z=\other
+  \catcode`\^^[=\other
+  \catcode`\^^\=\other
+  \catcode`\^^]=\other
+  \catcode`\^^^=\other
+  \catcode`\^^_=\other
+  % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
+  % in xref tags, i.e., node names.  But since ^^e4 notation isn't
+  % supported in the main text, it doesn't seem desirable.  Furthermore,
+  % that is not enough: for node names that actually contain a ^
+  % character, we would end up writing a line like this: 'xrdef {'hat
+  % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
+  % argument, and \hat is not an expandable control sequence.  It could
+  % all be worked out, but why?  Either we support ^^ or we don't.
+  %
+  % The other change necessary for this was to define \auxhat:
+  % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
+  % and then to call \auxhat in \setq.
+  %
+  \catcode`\^=\other
+  %
+  % Special characters.  Should be turned off anyway, but...
+  \catcode`\~=\other
+  \catcode`\[=\other
+  \catcode`\]=\other
+  \catcode`\"=\other
+  \catcode`\_=\other
+  \catcode`\|=\other
+  \catcode`\<=\other
+  \catcode`\>=\other
+  \catcode`\$=\other
+  \catcode`\#=\other
+  \catcode`\&=\other
+  \catcode`\%=\other
+  \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
+  %
+  % This is to support \ in node names and titles, since the \
+  % characters end up in a \csname.  It's easier than
+  % leaving it active and making its active definition an actual \
+  % character.  What I don't understand is why it works in the *value*
+  % of the xrdef.  Seems like it should be a catcode12 \, and that
+  % should not typeset properly.  But it works, so I'm moving on for
+  % now.  --karl, 15jan04.
+  \catcode`\\=\other
+  %
+  % Make the characters 128-255 be printing characters.
+  {%
+    \count1=128
+    \def\loop{%
+      \catcode\count1=\other
+      \advance\count1 by 1
+      \ifnum \count1<256 \loop \fi
+    }%
+  }%
+  %
+  % @ is our escape character in .aux files, and we need braces.
+  \catcode`\{=1
+  \catcode`\}=2
+  \catcode`\@=0
+}
+
+\def\readdatafile#1{%
+\begingroup
+  \setupdatafile
+  \input\jobname.#1
+\endgroup}
+
+\message{insertions,}
+% including footnotes.
+
+\newcount \footnoteno
+
+% The trailing space in the following definition for supereject is
+% vital for proper filling; pages come out unaligned when you do a
+% pagealignmacro call if that space before the closing brace is
+% removed. (Generally, numeric constants should always be followed by a
+% space to prevent strange expansion errors.)
+\def\supereject{\par\penalty -20000\footnoteno =0 }
+
+% @footnotestyle is meaningful for info output only.
+\let\footnotestyle=\comment
+
+{\catcode `\@=11
+%
+% Auto-number footnotes.  Otherwise like plain.
+\gdef\footnote{%
+  \let\indent=\ptexindent
+  \let\noindent=\ptexnoindent
+  \global\advance\footnoteno by \@ne
+  \edef\thisfootno{$^{\the\footnoteno}$}%
+  %
+  % In case the footnote comes at the end of a sentence, preserve the
+  % extra spacing after we do the footnote number.
+  \let\@sf\empty
+  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi
+  %
+  % Remove inadvertent blank space before typesetting the footnote number.
+  \unskip
+  \thisfootno\@sf
+  \dofootnote
+}%
+
+% Don't bother with the trickery in plain.tex to not require the
+% footnote text as a parameter.  Our footnotes don't need to be so general.
+%
+% Oh yes, they do; otherwise, @ifset (and anything else that uses
+% \parseargline) fails inside footnotes because the tokens are fixed when
+% the footnote is read.  --karl, 16nov96.
+%
+\gdef\dofootnote{%
+  \insert\footins\bgroup
+  % We want to typeset this text as a normal paragraph, even if the
+  % footnote reference occurs in (for example) a display environment.
+  % So reset some parameters.
+  \hsize=\pagewidth
+  \interlinepenalty\interfootnotelinepenalty
+  \splittopskip\ht\strutbox % top baseline for broken footnotes
+  \splitmaxdepth\dp\strutbox
+  \floatingpenalty\@MM
+  \leftskip\z at skip
+  \rightskip\z at skip
+  \spaceskip\z at skip
+  \xspaceskip\z at skip
+  \parindent\defaultparindent
+  %
+  \smallfonts \rm
+  %
+  % Because we use hanging indentation in footnotes, a @noindent appears
+  % to exdent this text, so make it be a no-op.  makeinfo does not use
+  % hanging indentation so @noindent can still be needed within footnote
+  % text after an @example or the like (not that this is good style).
+  \let\noindent = \relax
+  %
+  % Hang the footnote text off the number.  Use \everypar in case the
+  % footnote extends for more than one paragraph.
+  \everypar = {\hang}%
+  \textindent{\thisfootno}%
+  %
+  % Don't crash into the line above the footnote text.  Since this
+  % expands into a box, it must come within the paragraph, lest it
+  % provide a place where TeX can split the footnote.
+  \footstrut
+  \futurelet\next\fo at t
+}
+}%end \catcode `\@=11
+
+% In case a @footnote appears in a vbox, save the footnote text and create
+% the real \insert just after the vbox finished.  Otherwise, the insertion
+% would be lost.
+% Similarily, if a @footnote appears inside an alignment, save the footnote
+% text to a box and make the \insert when a row of the table is finished.
+% And the same can be done for other insert classes.  --kasal, 16nov03.
+
+% Replace the \insert primitive by a cheating macro.
+% Deeper inside, just make sure that the saved insertions are not spilled
+% out prematurely.
+%
+\def\startsavinginserts{%
+  \ifx \insert\ptexinsert
+    \let\insert\saveinsert
+  \else
+    \let\checkinserts\relax
+  \fi
+}
+
+% This \insert replacement works for both \insert\footins{foo} and
+% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}.
+%
+\def\saveinsert#1{%
+  \edef\next{\noexpand\savetobox \makeSAVEname#1}%
+  \afterassignment\next
+  % swallow the left brace
+  \let\temp =
+}
+\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}}
+\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1}
+
+\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi}
+
+\def\placesaveins#1{%
+  \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname
+    {\box#1}%
+}
+
+% eat @SAVE -- beware, all of them have catcode \other:
+{
+  \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials  %  ;-)
+  \gdef\gobblesave @SAVE{}
+}
+
+% initialization:
+\def\newsaveins #1{%
+  \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}%
+  \next
+}
+\def\newsaveinsX #1{%
+  \csname newbox\endcsname #1%
+  \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts
+    \checksaveins #1}%
+}
+
+% initialize:
+\let\checkinserts\empty
+\newsaveins\footins
+\newsaveins\margin
+
+
+% @image.  We use the macros from epsf.tex to support this.
+% If epsf.tex is not installed and @image is used, we complain.
+%
+% Check for and read epsf.tex up front.  If we read it only at @image
+% time, we might be inside a group, and then its definitions would get
+% undone and the next image would fail.
+\openin 1 = epsf.tex
+\ifeof 1 \else
+  % Do not bother showing banner with epsf.tex v2.7k (available in
+  % doc/epsf.tex and on ctan).
+  \def\epsfannounce{\toks0 = }%
+  \input epsf.tex
+\fi
+\closein 1
+%
+% We will only complain once about lack of epsf.tex.
+\newif\ifwarnednoepsf
+\newhelp\noepsfhelp{epsf.tex must be installed for images to
+  work.  It is also included in the Texinfo distribution, or you can get
+  it from ftp://tug.org/tex/epsf.tex.}
+%
+\def\image#1{%
+  \ifx\epsfbox\undefined
+    \ifwarnednoepsf \else
+      \errhelp = \noepsfhelp
+      \errmessage{epsf.tex not found, images will be ignored}%
+      \global\warnednoepsftrue
+    \fi
+  \else
+    \imagexxx #1,,,,,\finish
+  \fi
+}
+%
+% Arguments to @image:
+% #1 is (mandatory) image filename; we tack on .eps extension.
+% #2 is (optional) width, #3 is (optional) height.
+% #4 is (ignored optional) html alt text.
+% #5 is (ignored optional) extension.
+% #6 is just the usual extra ignored arg for parsing this stuff.
+\newif\ifimagevmode
+\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
+  \catcode`\^^M = 5     % in case we're inside an example
+  \normalturnoffactive  % allow _ et al. in names
+  % If the image is by itself, center it.
+  \ifvmode
+    \imagevmodetrue
+    \nobreak\bigskip
+    % Usually we'll have text after the image which will insert
+    % \parskip glue, so insert it here too to equalize the space
+    % above and below.
+    \nobreak\vskip\parskip
+    \nobreak
+    \line\bgroup\hss
+  \fi
+  %
+  % Output the image.
+  \ifpdf
+    \dopdfimage{#1}{#2}{#3}%
+  \else
+    % \epsfbox itself resets \epsf?size at each figure.
+    \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
+    \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
+    \epsfbox{#1.eps}%
+  \fi
+  %
+  \ifimagevmode \hss \egroup \bigbreak \fi  % space after the image
+\endgroup}
+
+
+% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables,
+% etc.  We don't actually implement floating yet, we always include the
+% float "here".  But it seemed the best name for the future.
+%
+\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish}
+
+% There may be a space before second and/or third parameter; delete it.
+\def\eatcommaspace#1, {#1,}
+
+% #1 is the optional FLOATTYPE, the text label for this float, typically
+% "Figure", "Table", "Example", etc.  Can't contain commas.  If omitted,
+% this float will not be numbered and cannot be referred to.
+%
+% #2 is the optional xref label.  Also must be present for the float to
+% be referable.
+%
+% #3 is the optional positioning argument; for now, it is ignored.  It
+% will somehow specify the positions allowed to float to (here, top, bottom).
+%
+% We keep a separate counter for each FLOATTYPE, which we reset at each
+% chapter-level command.
+\let\resetallfloatnos=\empty
+%
+\def\dofloat#1,#2,#3,#4\finish{%
+  \let\thiscaption=\empty
+  \let\thisshortcaption=\empty
+  %
+  % don't lose footnotes inside @float.
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \startsavinginserts
+  %
+  % We can't be used inside a paragraph.
+  \par
+  %
+  \vtop\bgroup
+    \def\floattype{#1}%
+    \def\floatlabel{#2}%
+    \def\floatloc{#3}% we do nothing with this yet.
+    %
+    \ifx\floattype\empty
+      \let\safefloattype=\empty
+    \else
+      {%
+        % the floattype might have accents or other special characters,
+        % but we need to use it in a control sequence name.
+        \indexnofonts
+        \turnoffactive
+        \xdef\safefloattype{\floattype}%
+      }%
+    \fi
+    %
+    % If label is given but no type, we handle that as the empty type.
+    \ifx\floatlabel\empty \else
+      % We want each FLOATTYPE to be numbered separately (Figure 1,
+      % Table 1, Figure 2, ...).  (And if no label, no number.)
+      %
+      \expandafter\getfloatno\csname\safefloattype floatno\endcsname
+      \global\advance\floatno by 1
+      %
+      {%
+        % This magic value for \thissection is output by \setref as the
+        % XREFLABEL-title value.  \xrefX uses it to distinguish float
+        % labels (which have a completely different output format) from
+        % node and anchor labels.  And \xrdef uses it to construct the
+        % lists of floats.
+        %
+        \edef\thissection{\floatmagic=\safefloattype}%
+        \setref{\floatlabel}{Yfloat}%
+      }%
+    \fi
+    %
+    % start with \parskip glue, I guess.
+    \vskip\parskip
+    %
+    % Don't suppress indentation if a float happens to start a section.
+    \restorefirstparagraphindent
+}
+
+% we have these possibilities:
+% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap
+% @float Foo,lbl & no caption:    Foo 1.1
+% @float Foo & @caption{Cap}:     Foo: Cap
+% @float Foo & no caption:        Foo
+% @float ,lbl & Caption{Cap}:     1.1: Cap
+% @float ,lbl & no caption:       1.1
+% @float & @caption{Cap}:         Cap
+% @float & no caption:
+%
+\def\Efloat{%
+    \let\floatident = \empty
+    %
+    % In all cases, if we have a float type, it comes first.
+    \ifx\floattype\empty \else \def\floatident{\floattype}\fi
+    %
+    % If we have an xref label, the number comes next.
+    \ifx\floatlabel\empty \else
+      \ifx\floattype\empty \else % if also had float type, need tie first.
+        \appendtomacro\floatident{\tie}%
+      \fi
+      % the number.
+      \appendtomacro\floatident{\chaplevelprefix\the\floatno}%
+    \fi
+    %
+    % Start the printed caption with what we've constructed in
+    % \floatident, but keep it separate; we need \floatident again.
+    \let\captionline = \floatident
+    %
+    \ifx\thiscaption\empty \else
+      \ifx\floatident\empty \else
+	\appendtomacro\captionline{: }% had ident, so need a colon between
+      \fi
+      %
+      % caption text.
+      \appendtomacro\captionline{\scanexp\thiscaption}%
+    \fi
+    %
+    % If we have anything to print, print it, with space before.
+    % Eventually this needs to become an \insert.
+    \ifx\captionline\empty \else
+      \vskip.5\parskip
+      \captionline
+      %
+      % Space below caption.
+      \vskip\parskip
+    \fi
+    %
+    % If have an xref label, write the list of floats info.  Do this
+    % after the caption, to avoid chance of it being a breakpoint.
+    \ifx\floatlabel\empty \else
+      % Write the text that goes in the lof to the aux file as
+      % \floatlabel-lof.  Besides \floatident, we include the short
+      % caption if specified, else the full caption if specified, else nothing.
+      {%
+        \atdummies
+        % since we read the caption text in the macro world, where ^^M
+        % is turned into a normal character, we have to scan it back, so
+        % we don't write the literal three characters "^^M" into the aux file.
+	\scanexp{%
+	  \xdef\noexpand\gtemp{%
+	    \ifx\thisshortcaption\empty
+	      \thiscaption
+	    \else
+	      \thisshortcaption
+	    \fi
+	  }%
+	}%
+        \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident
+	  \ifx\gtemp\empty \else : \gtemp \fi}}%
+      }%
+    \fi
+  \egroup  % end of \vtop
+  %
+  % place the captured inserts
+  %
+  % BEWARE: when the floats start float, we have to issue warning whenever an
+  % insert appears inside a float which could possibly float. --kasal, 26may04
+  %
+  \checkinserts
+}
+
+% Append the tokens #2 to the definition of macro #1, not expanding either.
+%
+\def\appendtomacro#1#2{%
+  \expandafter\def\expandafter#1\expandafter{#1#2}%
+}
+
+% @caption, @shortcaption
+%
+\def\caption{\docaption\thiscaption}
+\def\shortcaption{\docaption\thisshortcaption}
+\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption}
+\def\defcaption#1#2{\egroup \def#1{#2}}
+
+% The parameter is the control sequence identifying the counter we are
+% going to use.  Create it if it doesn't exist and assign it to \floatno.
+\def\getfloatno#1{%
+  \ifx#1\relax
+      % Haven't seen this figure type before.
+      \csname newcount\endcsname #1%
+      %
+      % Remember to reset this floatno at the next chap.
+      \expandafter\gdef\expandafter\resetallfloatnos
+        \expandafter{\resetallfloatnos #1=0 }%
+  \fi
+  \let\floatno#1%
+}
+
+% \setref calls this to get the XREFLABEL-snt value.  We want an @xref
+% to the FLOATLABEL to expand to "Figure 3.1".  We call \setref when we
+% first read the @float command.
+%
+\def\Yfloat{\floattype at tie \chaplevelprefix\the\floatno}%
+
+% Magic string used for the XREFLABEL-title value, so \xrefX can
+% distinguish floats from other xref types.
+\def\floatmagic{!!float!!}
+
+% #1 is the control sequence we are passed; we expand into a conditional
+% which is true if #1 represents a float ref.  That is, the magic
+% \thissection value which we \setref above.
+%
+\def\iffloat#1{\expandafter\doiffloat#1==\finish}
+%
+% #1 is (maybe) the \floatmagic string.  If so, #2 will be the
+% (safe) float type for this float.  We set \iffloattype to #2.
+%
+\def\doiffloat#1=#2=#3\finish{%
+  \def\temp{#1}%
+  \def\iffloattype{#2}%
+  \ifx\temp\floatmagic
+}
+
+% @listoffloats FLOATTYPE - print a list of floats like a table of contents.
+%
+\parseargdef\listoffloats{%
+  \def\floattype{#1}% floattype
+  {%
+    % the floattype might have accents or other special characters,
+    % but we need to use it in a control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safefloattype{\floattype}%
+  }%
+  %
+  % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE.
+  \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax
+    \ifhavexrefs
+      % if the user said @listoffloats foo but never @float foo.
+      \message{\linenumber No `\safefloattype' floats to list.}%
+    \fi
+  \else
+    \begingroup
+      \leftskip=\tocindent  % indent these entries like a toc
+      \let\do=\listoffloatsdo
+      \csname floatlist\safefloattype\endcsname
+    \endgroup
+  \fi
+}
+
+% This is called on each entry in a list of floats.  We're passed the
+% xref label, in the form LABEL-title, which is how we save it in the
+% aux file.  We strip off the -title and look up \XRLABEL-lof, which
+% has the text we're supposed to typeset here.
+%
+% Figures without xref labels will not be included in the list (since
+% they won't appear in the aux file).
+%
+\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish}
+\def\listoffloatsdoentry#1-title\finish{{%
+  % Can't fully expand XR#1-lof because it can contain anything.  Just
+  % pass the control sequence.  On the other hand, XR#1-pg is just the
+  % page number, and we want to fully expand that so we can get a link
+  % in pdf output.
+  \toksA = \expandafter{\csname XR#1-lof\endcsname}%
+  %
+  % use the same \entry macro we use to generate the TOC and index.
+  \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}%
+  \writeentry
+}}
+
+\message{localization,}
+% and i18n.
+
+% @documentlanguage is usually given very early, just after
+% @setfilename.  If done too late, it may not override everything
+% properly.  Single argument is the language abbreviation.
+% It would be nice if we could set up a hyphenation file here.
+%
+\parseargdef\documentlanguage{%
+  \tex % read txi-??.tex file in plain TeX.
+    % Read the file if it exists.
+    \openin 1 txi-#1.tex
+    \ifeof 1
+      \errhelp = \nolanghelp
+      \errmessage{Cannot read language file txi-#1.tex}%
+    \else
+      \input txi-#1.tex
+    \fi
+    \closein 1
+  \endgroup
+}
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty.  Maybe you need to install it?  In the current directory
+should work if nowhere else does.}
+
+
+% @documentencoding should change something in TeX eventually, most
+% likely, but for now just recognize it.
+\let\documentencoding = \comment
+
+
+% Page size parameters.
+%
+\newdimen\defaultparindent \defaultparindent = 15pt
+
+\chapheadingskip = 15pt plus 4pt minus 2pt
+\secheadingskip = 12pt plus 3pt minus 2pt
+\subsecheadingskip = 9pt plus 2pt minus 2pt
+
+% Prevent underfull vbox error messages.
+\vbadness = 10000
+
+% Don't be so finicky about underfull hboxes, either.
+\hbadness = 2000
+
+% Following George Bush, just get rid of widows and orphans.
+\widowpenalty=10000
+\clubpenalty=10000
+
+% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
+% using an old version of TeX, don't do anything.  We want the amount of
+% stretch added to depend on the line length, hence the dependence on
+% \hsize.  We call this whenever the paper size is set.
+%
+\def\setemergencystretch{%
+  \ifx\emergencystretch\thisisundefined
+    % Allow us to assign to \emergencystretch anyway.
+    \def\emergencystretch{\dimen0}%
+  \else
+    \emergencystretch = .15\hsize
+  \fi
+}
+
+% Parameters in order: 1) textheight; 2) textwidth;
+% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip;
+% 7) physical page height; 8) physical page width.
+%
+% We also call \setleading{\textleading}, so the caller should define
+% \textleading.  The caller should also set \parskip.
+%
+\def\internalpagesizes#1#2#3#4#5#6#7#8{%
+  \voffset = #3\relax
+  \topskip = #6\relax
+  \splittopskip = \topskip
+  %
+  \vsize = #1\relax
+  \advance\vsize by \topskip
+  \outervsize = \vsize
+  \advance\outervsize by 2\topandbottommargin
+  \pageheight = \vsize
+  %
+  \hsize = #2\relax
+  \outerhsize = \hsize
+  \advance\outerhsize by 0.5in
+  \pagewidth = \hsize
+  %
+  \normaloffset = #4\relax
+  \bindingoffset = #5\relax
+  %
+  \ifpdf
+    \pdfpageheight #7\relax
+    \pdfpagewidth #8\relax
+  \fi
+  %
+  \setleading{\textleading}
+  %
+  \parindent = \defaultparindent
+  \setemergencystretch
+}
+
+% @letterpaper (the default).
+\def\letterpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % If page is nothing but text, make it come out even.
+  \internalpagesizes{46\baselineskip}{6in}%
+                    {\voffset}{.25in}%
+                    {\bindingoffset}{36pt}%
+                    {11in}{8.5in}%
+}}
+
+% Use @smallbook to reset parameters for 7x9.25 trim size.
+\def\smallbook{{\globaldefs = 1
+  \parskip = 2pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.5in}{5in}%
+                    {\voffset}{.25in}%
+                    {\bindingoffset}{16pt}%
+                    {9.25in}{7in}%
+  %
+  \lispnarrowing = 0.3in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .5cm
+}}
+
+% Use @smallerbook to reset parameters for 6x9 trim size.
+% (Just testing, parameters still in flux.)
+\def\smallerbook{{\globaldefs = 1
+  \parskip = 1.5pt plus 1pt
+  \textleading = 12pt
+  %
+  \internalpagesizes{7.4in}{4.8in}%
+                    {-.2in}{-.4in}%
+                    {0pt}{14pt}%
+                    {9in}{6in}%
+  %
+  \lispnarrowing = 0.25in
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = .4cm
+}}
+
+% Use @afourpaper to print on European A4 paper.
+\def\afourpaper{{\globaldefs = 1
+  \parskip = 3pt plus 2pt minus 1pt
+  \textleading = 13.2pt
+  %
+  % Double-side printing via postscript on Laserjet 4050
+  % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
+  % To change the settings for a different printer or situation, adjust
+  % \normaloffset until the front-side and back-side texts align.  Then
+  % do the same for \bindingoffset.  You can set these for testing in
+  % your texinfo source file like this:
+  % @tex
+  % \global\normaloffset = -6mm
+  % \global\bindingoffset = 10mm
+  % @end tex
+  \internalpagesizes{51\baselineskip}{160mm}
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{44pt}%
+                    {297mm}{210mm}%
+  %
+  \tolerance = 700
+  \hfuzz = 1pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 5mm
+}}
+
+% Use @afivepaper to print on European A5 paper.
+% From romildo at urano.iceb.ufop.br, 2 July 2000.
+% He also recommends making @example and @lisp be small.
+\def\afivepaper{{\globaldefs = 1
+  \parskip = 2pt plus 1pt minus 0.1pt
+  \textleading = 12.5pt
+  %
+  \internalpagesizes{160mm}{120mm}%
+                    {\voffset}{\hoffset}%
+                    {\bindingoffset}{8pt}%
+                    {210mm}{148mm}%
+  %
+  \lispnarrowing = 0.2in
+  \tolerance = 800
+  \hfuzz = 1.2pt
+  \contentsrightmargin = 0pt
+  \defbodyindent = 2mm
+  \tableindent = 12mm
+}}
+
+% A specific text layout, 24x15cm overall, intended for A4 paper.
+\def\afourlatex{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{237mm}{150mm}%
+                    {\voffset}{4.6mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  %
+  % Must explicitly reset to 0 because we call \afourpaper.
+  \globaldefs = 0
+}}
+
+% Use @afourwide to print on A4 paper in landscape format.
+\def\afourwide{{\globaldefs = 1
+  \afourpaper
+  \internalpagesizes{241mm}{165mm}%
+                    {\voffset}{-2.95mm}%
+                    {\bindingoffset}{7mm}%
+                    {297mm}{210mm}%
+  \globaldefs = 0
+}}
+
+% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
+% Perhaps we should allow setting the margins, \topskip, \parskip,
+% and/or leading, also. Or perhaps we should compute them somehow.
+%
+\parseargdef\pagesizes{\pagesizesyyy #1,,\finish}
+\def\pagesizesyyy#1,#2,#3\finish{{%
+  \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
+  \globaldefs = 1
+  %
+  \parskip = 3pt plus 2pt minus 1pt
+  \setleading{\textleading}%
+  %
+  \dimen0 = #1
+  \advance\dimen0 by \voffset
+  %
+  \dimen2 = \hsize
+  \advance\dimen2 by \normaloffset
+  %
+  \internalpagesizes{#1}{\hsize}%
+                    {\voffset}{\normaloffset}%
+                    {\bindingoffset}{44pt}%
+                    {\dimen0}{\dimen2}%
+}}
+
+% Set default to letter.
+%
+\letterpaper
+
+
+\message{and turning on texinfo input format.}
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\catcode`\$=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+\def\normaldollar{$}%$ font-lock fix
+
+% This macro is used to make a character print one way in \tt
+% (where it can probably be output as-is), and another way in other fonts,
+% where something hairier probably needs to be done.
+%
+% #1 is what to print if we are indeed using \tt; #2 is what to print
+% otherwise.  Since all the Computer Modern typewriter fonts have zero
+% interword stretch (and shrink), and it is reasonable to expect all
+% typewriter fonts to have this, we can check that font parameter.
+%
+\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
+
+% Same as above, but check for italic font.  Actually this also catches
+% non-italic slanted fonts since it is impossible to distinguish them from
+% italic fonts.  But since this is only used by $ and it uses \sl anyway
+% this is not a problem.
+\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
+
+% Turn off all special characters except @
+% (and those which the user can use as if they were ordinary).
+% Most of these we simply print from the \tt font, but for some, we can
+% use math or other variants that look better in normal text.
+
+\catcode`\"=\active
+\def\activedoublequote{{\tt\char34}}
+\let"=\activedoublequote
+\catcode`\~=\active
+\def~{{\tt\char126}}
+\chardef\hat=`\^
+\catcode`\^=\active
+\def^{{\tt \hat}}
+
+\catcode`\_=\active
+\def_{\ifusingtt\normalunderscore\_}
+\let\realunder=_
+% Subroutine for the previous macro.
+\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+
+\catcode`\|=\active
+\def|{{\tt\char124}}
+\chardef \less=`\<
+\catcode`\<=\active
+\def<{{\tt \less}}
+\chardef \gtr=`\>
+\catcode`\>=\active
+\def>{{\tt \gtr}}
+\catcode`\+=\active
+\def+{{\tt \char 43}}
+\catcode`\$=\active
+\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \everyjob (or @setfilename) turn them on.
+% \otherifyactive is called near the end of this file.
+\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
+
+\catcode`\@=0
+
+% \backslashcurfont outputs one backslash character in current font,
+% as in \char`\\.
+\global\chardef\backslashcurfont=`\\
+\global\let\rawbackslashxx=\backslashcurfont  % let existing .??s files work
+
+% \rawbackslash defines an active \ to do \backslashcurfont.
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+{\catcode`\\=\active
+ @gdef at rawbackslash{@let\=@backslashcurfont}
+ @gdef at otherbackslash{@let\=@realbackslash}
+}
+
+% \realbackslash is an actual character `\' with catcode other, and
+% \doublebackslash is two of them (for the pdf outlines).
+{\catcode`\\=\other @gdef at realbackslash{\} @gdef at doublebackslash{\\}}
+
+% \normalbackslash outputs one backslash in fixed width font.
+\def\normalbackslash{{\tt\backslashcurfont}}
+
+\catcode`\\=\active
+
+% Used sometimes to turn off (effectively) the active characters
+% even after parsing them.
+ at def@turnoffactive{%
+  @let"=@normaldoublequote
+  @let\=@realbackslash
+  @let~=@normaltilde
+  @let^=@normalcaret
+  @let_=@normalunderscore
+  @let|=@normalverticalbar
+  @let<=@normalless
+  @let>=@normalgreater
+  @let+=@normalplus
+  @let$=@normaldollar %$ font-lock fix
+  @unsepspaces
+}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.  (Thus, \ is not expandable when this is in
+% effect.)
+%
+ at def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
+
+% Make _ and + \other characters, temporarily.
+% This is canceled by @fixbackslash.
+ at otherifyactive
+
+% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
+% That is what \eatinput is for; after that, the `\' should revert to printing
+% a backslash.
+%
+ at gdef@eatinput input texinfo{@fixbackslash}
+ at global@let\ = @eatinput
+
+% On the other hand, perhaps the file did not have a `\input texinfo'. Then
+% the first `\{ in the file would cause an error. This macro tries to fix
+% that, assuming it is called before the first `\' could plausibly occur.
+% Also turn back on active characters that might appear in the input
+% file name, in case not using a pre-dumped format.
+%
+ at gdef@fixbackslash{%
+  @ifx\@eatinput @let\ = @normalbackslash @fi
+  @catcode`+=@active
+  @catcode`@_=@active
+}
+
+% Say @foo, not \foo, in error messages.
+ at escapechar = `@@
+
+% These look ok in all fonts, so just make them not special.
+ at catcode`@& = @other
+ at catcode`@# = @other
+ at catcode`@% = @other
+
+
+ at c Local variables:
+ at c eval: (add-hook 'write-file-hooks 'time-stamp)
+ at c page-delimiter: "^\\\\message"
+ at c time-stamp-start: "def\\\\texinfoversion{"
+ at c time-stamp-format: "%:y-%02m-%02d.%02H"
+ at c time-stamp-end: "}"
+ at c End:
+
+ at c vim:sw=2:
+
+ at ignore
+   arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
+ at end ignore

Added: kde-extras/tora/branches/upstream/current/config.guess
===================================================================
--- kde-extras/tora/branches/upstream/current/config.guess	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config.guess	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1363 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002 Free Software Foundation, Inc.
+
+timestamp='2002-10-21'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Per Bothner <per at bothner.com>.
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# This shell variable is my proudest work .. or something. --bje
+
+set_cc_for_build='tmpdir=${TMPDIR-/tmp}/config-guess-$$ ;
+(old=`umask` && umask 077 && mkdir $tmpdir && umask $old && unset old)
+   || (echo "$me: cannot create $tmpdir" >&2 && exit 1) ;
+dummy=$tmpdir/dummy ;
+files="$dummy.c $dummy.o $dummy.rel $dummy" ;
+trap '"'"'rm -f $files; rmdir $tmpdir; exit 1'"'"' 1 2 15 ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+	for c in cc gcc c89 c99 ; do
+	  if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+	     CC_FOR_BUILD="$c"; break ;
+	  fi ;
+	done ;
+	rm -f $files ;
+	if test x"$CC_FOR_BUILD" = x ; then
+	  CC_FOR_BUILD=no_compiler_found ;
+	fi
+	;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ;
+unset files'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi at noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+	PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+	# NetBSD (nbsd) targets should (where applicable) match one or
+	# more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+	# *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+	# switched to ELF, *-*-netbsd* would select the old
+	# object file format.  This provides both forward
+	# compatibility and a consistent mechanism for selecting the
+	# object file format.
+	#
+	# Note: NetBSD doesn't particularly care about the vendor
+	# portion of the name.  We always set it to "unknown".
+	sysctl="sysctl -n hw.machine_arch"
+	UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+	    /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+	case "${UNAME_MACHINE_ARCH}" in
+	    armeb) machine=armeb-unknown ;;
+	    arm*) machine=arm-unknown ;;
+	    sh3el) machine=shl-unknown ;;
+	    sh3eb) machine=sh-unknown ;;
+	    *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+	esac
+	# The Operating System including object format, if it has switched
+	# to ELF recently, or will in the future.
+	case "${UNAME_MACHINE_ARCH}" in
+	    arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+		eval $set_cc_for_build
+		if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+			| grep __ELF__ >/dev/null
+		then
+		    # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+		    # Return netbsd for either.  FIX?
+		    os=netbsd
+		else
+		    os=netbsdelf
+		fi
+		;;
+	    *)
+	        os=netbsd
+		;;
+	esac
+	# The OS release
+	release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+	# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+	# contains redundant information, the shorter form:
+	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+	echo "${machine}-${os}${release}"
+	exit 0 ;;
+    amiga:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    arc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    hp300:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mac68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    macppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+	echo m88k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    mvmeppc:OpenBSD:*:*)
+	echo powerpc-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    pmax:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sgi:OpenBSD:*:*)
+	echo mipseb-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    sun3:OpenBSD:*:*)
+	echo m68k-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    wgrisc:OpenBSD:*:*)
+	echo mipsel-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    *:OpenBSD:*:*)
+	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+	exit 0 ;;
+    alpha:OSF1:*:*)
+	if test $UNAME_RELEASE = "V4.0"; then
+		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+	fi
+	# A Vn.n version is a released version.
+	# A Tn.n version is a released field test version.
+	# A Xn.n version is an unreleased experimental baselevel.
+	# 1.2 uses "1.2" for uname -r.
+	eval $set_cc_for_build
+	cat <<EOF >$dummy.s
+	.data
+\$Lformat:
+	.byte 37,100,45,37,120,10,0	# "%d-%x\n"
+
+	.text
+	.globl main
+	.align 4
+	.ent main
+main:
+	.frame \$30,16,\$26,0
+	ldgp \$29,0(\$27)
+	.prologue 1
+	.long 0x47e03d80 # implver \$0
+	lda \$2,-1
+	.long 0x47e20c21 # amask \$2,\$1
+	lda \$16,\$Lformat
+	mov \$0,\$17
+	not \$1,\$18
+	jsr \$26,printf
+	ldgp \$29,0(\$26)
+	mov 0,\$16
+	jsr \$26,exit
+	.end main
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.s 2>/dev/null
+	if test "$?" = 0 ; then
+		case `$dummy` in
+			0-0)
+				UNAME_MACHINE="alpha"
+				;;
+			1-0)
+				UNAME_MACHINE="alphaev5"
+				;;
+			1-1)
+				UNAME_MACHINE="alphaev56"
+				;;
+			1-101)
+				UNAME_MACHINE="alphapca56"
+				;;
+			2-303)
+				UNAME_MACHINE="alphaev6"
+				;;
+			2-307)
+				UNAME_MACHINE="alphaev67"
+				;;
+			2-1307)
+				UNAME_MACHINE="alphaev68"
+				;;
+			3-1307)
+				UNAME_MACHINE="alphaev7"
+				;;
+		esac
+	fi
+	rm -f $dummy.s $dummy && rmdir $tmpdir
+	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+	exit 0 ;;
+    Alpha\ *:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# Should we change UNAME_MACHINE based on the output of uname instead
+	# of the specific Alpha model?
+	echo alpha-pc-interix
+	exit 0 ;;
+    21064:Windows_NT:50:3)
+	echo alpha-dec-winnt3.5
+	exit 0 ;;
+    Amiga*:UNIX_System_V:4.0:*)
+	echo m68k-unknown-sysv4
+	exit 0;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-amigaos
+	exit 0 ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+	echo ${UNAME_MACHINE}-unknown-morphos
+	exit 0 ;;
+    *:OS/390:*:*)
+	echo i370-ibm-openedition
+	exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+	echo arm-acorn-riscix${UNAME_RELEASE}
+	exit 0;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+	echo hppa1.1-hitachi-hiuxmpp
+	exit 0;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+	# akee at wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+	if test "`(/bin/universe) 2>/dev/null`" = att ; then
+		echo pyramid-pyramid-sysv3
+	else
+		echo pyramid-pyramid-bsd
+	fi
+	exit 0 ;;
+    NILE*:*:*:dcosx)
+	echo pyramid-pyramid-svr4
+	exit 0 ;;
+    DRS?6000:UNIX_SV:4.2*:7*)
+	case `/usr/bin/uname -p` in
+	    sparc) echo sparc-icl-nx7 && exit 0 ;;
+	esac ;;
+    sun4H:SunOS:5.*:*)
+	echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+	echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    i86pc:SunOS:5.*:*)
+	echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:6*:*)
+	# According to config.sub, this is the proper way to canonicalize
+	# SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+	# it's likely to be more like Solaris than SunOS4.
+	echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    sun4*:SunOS:*:*)
+	case "`/usr/bin/arch -k`" in
+	    Series*|S4*)
+		UNAME_RELEASE=`uname -v`
+		;;
+	esac
+	# Japanese Language versions have a version number like `4.1.3-JL'.
+	echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+	exit 0 ;;
+    sun3*:SunOS:*:*)
+	echo m68k-sun-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    sun*:*:4.2BSD:*)
+	UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+	test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+	case "`/bin/arch`" in
+	    sun3)
+		echo m68k-sun-sunos${UNAME_RELEASE}
+		;;
+	    sun4)
+		echo sparc-sun-sunos${UNAME_RELEASE}
+		;;
+	esac
+	exit 0 ;;
+    aushp:SunOS:*:*)
+	echo sparc-auspex-sunos${UNAME_RELEASE}
+	exit 0 ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+	echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+	exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
+    powerpc:machten:*:*)
+	echo powerpc-apple-machten${UNAME_RELEASE}
+	exit 0 ;;
+    RISC*:Mach:*:*)
+	echo mips-dec-mach_bsd4.3
+	exit 0 ;;
+    RISC*:ULTRIX:*:*)
+	echo mips-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+	echo vax-dec-ultrix${UNAME_RELEASE}
+	exit 0 ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+	echo clipper-intergraph-clix${UNAME_RELEASE}
+	exit 0 ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+	int main (int argc, char *argv[]) {
+#else
+	int main (argc, argv) int argc; char *argv[]; {
+#endif
+	#if defined (host_mips) && defined (MIPSEB)
+	#if defined (SYSTYPE_SYSV)
+	  printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_SVR4)
+	  printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+	#endif
+	#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+	  printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+	#endif
+	#endif
+	  exit (-1);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c \
+	  && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+	  && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+	rm -f $dummy.c $dummy && rmdir $tmpdir
+	echo mips-mips-riscos${UNAME_RELEASE}
+	exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+	echo powerpc-motorola-powermax
+	exit 0 ;;
+    Motorola:*:4.3:PL8-*)
+	echo powerpc-harris-powermax
+	exit 0 ;;
+    Night_Hawk:*:*:PowerMAX_OS)
+	echo powerpc-harris-powermax
+	exit 0 ;;
+    Night_Hawk:Power_UNIX:*:*)
+	echo powerpc-harris-powerunix
+	exit 0 ;;
+    m88k:CX/UX:7*:*)
+	echo m88k-harris-cxux7
+	exit 0 ;;
+    m88k:*:4*:R4*)
+	echo m88k-motorola-sysv4
+	exit 0 ;;
+    m88k:*:3*:R3*)
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+	if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+	then
+	    if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+	       [ ${TARGET_BINARY_INTERFACE}x = x ]
+	    then
+		echo m88k-dg-dgux${UNAME_RELEASE}
+	    else
+		echo m88k-dg-dguxbcs${UNAME_RELEASE}
+	    fi
+	else
+	    echo i586-dg-dgux${UNAME_RELEASE}
+	fi
+ 	exit 0 ;;
+    M88*:DolphinOS:*:*)	# DolphinOS (SVR3)
+	echo m88k-dolphin-sysv3
+	exit 0 ;;
+    M88*:*:R3*:*)
+	# Delta 88k system running SVR3
+	echo m88k-motorola-sysv3
+	exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+	echo m88k-tektronix-sysv3
+	exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+	echo m68k-tektronix-bsd
+	exit 0 ;;
+    *:IRIX*:*:*)
+	echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+	exit 0 ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+	echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+	exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+	echo i386-ibm-aix
+	exit 0 ;;
+    ia64:AIX:*:*)
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+	exit 0 ;;
+    *:AIX:2:3)
+	if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+		eval $set_cc_for_build
+		sed 's/^		//' << EOF >$dummy.c
+		#include <sys/systemcfg.h>
+
+		main()
+			{
+			if (!__power_pc())
+				exit(1);
+			puts("powerpc-ibm-aix3.2.5");
+			exit(0);
+			}
+EOF
+		$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+		rm -f $dummy.c $dummy && rmdir $tmpdir
+		echo rs6000-ibm-aix3.2.5
+	elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+		echo rs6000-ibm-aix3.2.4
+	else
+		echo rs6000-ibm-aix3.2
+	fi
+	exit 0 ;;
+    *:AIX:*:[45])
+	IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+	if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+		IBM_ARCH=rs6000
+	else
+		IBM_ARCH=powerpc
+	fi
+	if [ -x /usr/bin/oslevel ] ; then
+		IBM_REV=`/usr/bin/oslevel`
+	else
+		IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+	fi
+	echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+	exit 0 ;;
+    *:AIX:*:*)
+	echo rs6000-ibm-aix
+	exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+	echo romp-ibm-bsd4.4
+	exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+	echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+	exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+	echo rs6000-bull-bosx
+	exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+	echo m68k-bull-sysv3
+	exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+	echo m68k-hp-bsd
+	exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+	echo m68k-hp-bsd4.4
+	exit 0 ;;
+    9000/[34678]??:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	case "${UNAME_MACHINE}" in
+	    9000/31? )            HP_ARCH=m68000 ;;
+	    9000/[34]?? )         HP_ARCH=m68k ;;
+	    9000/[678][0-9][0-9])
+		if [ -x /usr/bin/getconf ]; then
+		    sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+			  '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+		fi
+		if [ "${HP_ARCH}" = "" ]; then
+		    eval $set_cc_for_build
+		    sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+              	{
+              	case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+              	case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+              	case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+              	    switch (bits)
+              		{
+              		case 64: puts ("hppa2.0w"); break;
+              		case 32: puts ("hppa2.0n"); break;
+              		default: puts ("hppa2.0"); break;
+              		} break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+              	    puts ("hppa2.0"); break;
+              #endif
+              	default: puts ("hppa1.0"); break;
+              	}
+                  exit (0);
+              }
+EOF
+		    (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+		    if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
+		    rm -f $dummy.c $dummy && rmdir $tmpdir
+		fi ;;
+	esac
+	echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+	exit 0 ;;
+    ia64:HP-UX:*:*)
+	HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+	echo ia64-hp-hpux${HPUX_REV}
+	exit 0 ;;
+    3050*:HI-UX:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <unistd.h>
+	int
+	main ()
+	{
+	  long cpu = sysconf (_SC_CPU_VERSION);
+	  /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+	     true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+	     results, however.  */
+	  if (CPU_IS_PA_RISC (cpu))
+	    {
+	      switch (cpu)
+		{
+		  case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+		  case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+		  default: puts ("hppa-hitachi-hiuxwe2"); break;
+		}
+	    }
+	  else if (CPU_IS_HP_MC68K (cpu))
+	    puts ("m68k-hitachi-hiuxwe2");
+	  else puts ("unknown-hitachi-hiuxwe2");
+	  exit (0);
+	}
+EOF
+	$CC_FOR_BUILD -o $dummy $dummy.c && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+	rm -f $dummy.c $dummy && rmdir $tmpdir
+	echo unknown-hitachi-hiuxwe2
+	exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+	echo hppa1.1-hp-bsd
+	exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+	echo hppa1.0-hp-bsd
+	exit 0 ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+	echo hppa1.0-hp-mpeix
+	exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+	echo hppa1.1-hp-osf
+	exit 0 ;;
+    hp8??:OSF1:*:*)
+	echo hppa1.0-hp-osf
+	exit 0 ;;
+    i*86:OSF1:*:*)
+	if [ -x /usr/sbin/sysversion ] ; then
+	    echo ${UNAME_MACHINE}-unknown-osf1mk
+	else
+	    echo ${UNAME_MACHINE}-unknown-osf1
+	fi
+	exit 0 ;;
+    parisc*:Lites*:*:*)
+	echo hppa1.1-hp-lites
+	exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+	echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+	echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+	echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+	echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+	echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*[A-Z]90:*:*:*)
+	echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+	| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+	      -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+	      -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*TS:*:*:*)
+	echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*T3D:*:*:*)
+	echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*T3E:*:*:*)
+	echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    CRAY*SV1:*:*:*)
+	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+	exit 0 ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit 0 ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    sparc*:BSD/OS:*:*)
+	echo sparc-unknown-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    *:BSD/OS:*:*)
+	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+	exit 0 ;;
+    *:FreeBSD:*:*)
+	# Determine whether the default compiler uses glibc.
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#if __GLIBC__ >= 2
+	LIBC=gnu
+	#else
+	LIBC=
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	rm -f $dummy.c && rmdir $tmpdir
+	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
+	exit 0 ;;
+    i*:CYGWIN*:*)
+	echo ${UNAME_MACHINE}-pc-cygwin
+	exit 0 ;;
+    i*:MINGW*:*)
+	echo ${UNAME_MACHINE}-pc-mingw32
+	exit 0 ;;
+    i*:PW*:*)
+	echo ${UNAME_MACHINE}-pc-pw32
+	exit 0 ;;
+    x86:Interix*:3*)
+	echo i386-pc-interix3
+	exit 0 ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+	# How do we know it's Interix rather than the generic POSIX subsystem?
+	# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+	# UNAME_MACHINE based on the output of uname instead of i386?
+	echo i386-pc-interix
+	exit 0 ;;
+    i*:UWIN*:*)
+	echo ${UNAME_MACHINE}-pc-uwin
+	exit 0 ;;
+    p*:CYGWIN*:*)
+	echo powerpcle-unknown-cygwin
+	exit 0 ;;
+    prep*:SunOS:5.*:*)
+	echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+	exit 0 ;;
+    *:GNU:*:*)
+	echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+	exit 0 ;;
+    i*86:Minix:*:*)
+	echo ${UNAME_MACHINE}-pc-minix
+	exit 0 ;;
+    arm*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    ia64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    m68*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    mips:Linux:*:*)
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#undef CPU
+	#undef mips
+	#undef mipsel
+	#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+	CPU=mipsel
+	#else
+	#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+	CPU=mips
+	#else
+	CPU=
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+	rm -f $dummy.c && rmdir $tmpdir
+	test x"${CPU}" != x && echo "${CPU}-pc-linux-gnu" && exit 0
+	;;
+    ppc:Linux:*:*)
+	echo powerpc-unknown-linux-gnu
+	exit 0 ;;
+    ppc64:Linux:*:*)
+	echo powerpc64-unknown-linux-gnu
+	exit 0 ;;
+    alpha:Linux:*:*)
+	case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+	  EV5)   UNAME_MACHINE=alphaev5 ;;
+	  EV56)  UNAME_MACHINE=alphaev56 ;;
+	  PCA56) UNAME_MACHINE=alphapca56 ;;
+	  PCA57) UNAME_MACHINE=alphapca56 ;;
+	  EV6)   UNAME_MACHINE=alphaev6 ;;
+	  EV67)  UNAME_MACHINE=alphaev67 ;;
+	  EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+	objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+	if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+	echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+	exit 0 ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+	# Look for CPU level
+	case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+	  PA7*) echo hppa1.1-unknown-linux-gnu ;;
+	  PA8*) echo hppa2.0-unknown-linux-gnu ;;
+	  *)    echo hppa-unknown-linux-gnu ;;
+	esac
+	exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+	echo hppa64-unknown-linux-gnu
+	exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+	echo ${UNAME_MACHINE}-ibm-linux
+	exit 0 ;;
+    sh*:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+	echo ${UNAME_MACHINE}-unknown-linux-gnu
+	exit 0 ;;
+    x86_64:Linux:*:*)
+	echo x86_64-unknown-linux-gnu
+	exit 0 ;;
+    i*86:Linux:*:*)
+	# The BFD linker knows what the default object file format is, so
+	# first see if it will tell us. cd to the root directory to prevent
+	# problems with other programs or directories called `ld' in the path.
+	# Set LC_ALL=C to ensure ld outputs messages in English.
+	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+			 | sed -ne '/supported targets:/!d
+				    s/[ 	][ 	]*/ /g
+				    s/.*supported targets: *//
+				    s/ .*//
+				    p'`
+        case "$ld_supported_targets" in
+	  elf32-i386)
+		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+		;;
+	  a.out-i386-linux)
+		echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+		exit 0 ;;
+	  coff-i386)
+		echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+		exit 0 ;;
+	  "")
+		# Either a pre-BFD a.out linker (linux-gnuoldld) or
+		# one that does not give us useful --help.
+		echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+		exit 0 ;;
+	esac
+	# Determine whether the default compiler is a.out or elf
+	eval $set_cc_for_build
+	sed 's/^	//' << EOF >$dummy.c
+	#include <features.h>
+	#ifdef __ELF__
+	# ifdef __GLIBC__
+	#  if __GLIBC__ >= 2
+	LIBC=gnu
+	#  else
+	LIBC=gnulibc1
+	#  endif
+	# else
+	LIBC=gnulibc1
+	# endif
+	#else
+	#ifdef __INTEL_COMPILER
+	LIBC=gnu
+	#else
+	LIBC=gnuaout
+	#endif
+	#endif
+EOF
+	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+	rm -f $dummy.c && rmdir $tmpdir
+	test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+	test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+	;;
+    i*86:DYNIX/ptx:4*:*)
+	# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+	# earlier versions are messed up and put the nodename in both
+	# sysname and nodename.
+	echo i386-sequent-sysv4
+	exit 0 ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+	# I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+	echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+	exit 0 ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+	UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+	if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+		echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+	else
+		echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+	fi
+	exit 0 ;;
+    i*86:*:5:[78]*)
+	case `/bin/uname -X | grep "^Machine"` in
+	    *486*)	     UNAME_MACHINE=i486 ;;
+	    *Pentium)	     UNAME_MACHINE=i586 ;;
+	    *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+	esac
+	echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+	exit 0 ;;
+    i*86:*:3.2:*)
+	if test -f /usr/options/cb.name; then
+		UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+		echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+	elif /bin/uname -X 2>/dev/null >/dev/null ; then
+		UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+		(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+		(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+			&& UNAME_MACHINE=i586
+		(/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		(/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+			&& UNAME_MACHINE=i686
+		echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+	else
+		echo ${UNAME_MACHINE}-pc-sysv32
+	fi
+	exit 0 ;;
+    i*86:*DOS:*:*)
+	echo ${UNAME_MACHINE}-pc-msdosdjgpp
+	exit 0 ;;
+    pc:*:*:*)
+	# Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+	echo i386-pc-msdosdjgpp
+        exit 0 ;;
+    Intel:Mach:3*:*)
+	echo i386-pc-mach3
+	exit 0 ;;
+    paragon:*:*:*)
+	echo i860-intel-osf1
+	exit 0 ;;
+    i860:*:4.*:*) # i860-SVR4
+	if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+	  echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+	else # Add other i860-SVR4 vendors below as they are discovered.
+	  echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+	fi
+	exit 0 ;;
+    mini*:CTIX:SYS*5:*)
+	# "miniframe"
+	echo m68010-convergent-sysv
+	exit 0 ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+	echo m68k-convergent-sysv
+	exit 0 ;;
+    M68*:*:R3V[567]*:*)
+	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0)
+	OS_REL=''
+	test -r /etc/.relid \
+	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+	/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+	  && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+	/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+	  && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+	echo m68k-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+	echo m68k-atari-sysv4
+	exit 0 ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+	echo i386-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+	echo sparc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    rs6000:LynxOS:2.*:*)
+	echo rs6000-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+	echo powerpc-unknown-lynxos${UNAME_RELEASE}
+	exit 0 ;;
+    SM[BE]S:UNIX_SV:*:*)
+	echo mips-dde-sysv${UNAME_RELEASE}
+	exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
+    RM*:SINIX-*:*:*)
+	echo mips-sni-sysv4
+	exit 0 ;;
+    *:SINIX-*:*:*)
+	if uname -p 2>/dev/null >/dev/null ; then
+		UNAME_MACHINE=`(uname -p) 2>/dev/null`
+		echo ${UNAME_MACHINE}-sni-sysv4
+	else
+		echo ns32k-sni-sysv
+	fi
+	exit 0 ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel at ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+	# From Gerald Hewes <hewes at openmarket.com>.
+	# How about differentiating between stratus architectures? -djm
+	echo hppa1.1-stratus-sysv4
+	exit 0 ;;
+    *:*:*:FTX*)
+	# From seanf at swdc.stratus.com.
+	echo i860-stratus-sysv4
+	exit 0 ;;
+    *:VOS:*:*)
+	# From Paul.Green at stratus.com.
+	echo hppa1.1-stratus-vos
+	exit 0 ;;
+    mc68*:A/UX:*:*)
+	echo m68k-apple-aux${UNAME_RELEASE}
+	exit 0 ;;
+    news*:NEWS-OS:6*:*)
+	echo mips-sony-newsos6
+	exit 0 ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+	if [ -d /usr/nec ]; then
+	        echo mips-nec-sysv${UNAME_RELEASE}
+	else
+	        echo mips-unknown-sysv${UNAME_RELEASE}
+	fi
+        exit 0 ;;
+    BeBox:BeOS:*:*)	# BeOS running on hardware made by Be, PPC only.
+	echo powerpc-be-beos
+	exit 0 ;;
+    BeMac:BeOS:*:*)	# BeOS running on Mac or Mac clone, PPC only.
+	echo powerpc-apple-beos
+	exit 0 ;;
+    BePC:BeOS:*:*)	# BeOS running on Intel PC compatible.
+	echo i586-pc-beos
+	exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+	echo sx4-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+	echo sx5-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    SX-6:SUPER-UX:*:*)
+	echo sx6-nec-superux${UNAME_RELEASE}
+	exit 0 ;;
+    Power*:Rhapsody:*:*)
+	echo powerpc-apple-rhapsody${UNAME_RELEASE}
+	exit 0 ;;
+    *:Rhapsody:*:*)
+	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+	exit 0 ;;
+    *:Darwin:*:*)
+	echo `uname -p`-apple-darwin${UNAME_RELEASE}
+	exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+	UNAME_PROCESSOR=`uname -p`
+	if test "$UNAME_PROCESSOR" = "x86"; then
+		UNAME_PROCESSOR=i386
+		UNAME_MACHINE=pc
+	fi
+	echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+	exit 0 ;;
+    *:QNX:*:4*)
+	echo i386-pc-qnx
+	exit 0 ;;
+    NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
+	echo nsr-tandem-nsk${UNAME_RELEASE}
+	exit 0 ;;
+    *:NonStop-UX:*:*)
+	echo mips-compaq-nonstopux
+	exit 0 ;;
+    BS2000:POSIX*:*:*)
+	echo bs2000-siemens-sysv
+	exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+	echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+	exit 0 ;;
+    *:Plan9:*:*)
+	# "uname -m" is not consistent, so use $cputype instead. 386
+	# is converted to i386 for consistency with other x86
+	# operating systems.
+	if test "$cputype" = "386"; then
+	    UNAME_MACHINE=i386
+	else
+	    UNAME_MACHINE="$cputype"
+	fi
+	echo ${UNAME_MACHINE}-unknown-plan9
+	exit 0 ;;
+    i*86:OS/2:*:*)
+	# If we were able to find `uname', then EMX Unix compatibility
+	# is probably installed.
+	echo ${UNAME_MACHINE}-pc-os2-emx
+	exit 0 ;;
+    *:TOPS-10:*:*)
+	echo pdp10-unknown-tops10
+	exit 0 ;;
+    *:TENEX:*:*)
+	echo pdp10-unknown-tenex
+	exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+	echo pdp10-dec-tops20
+	exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+	echo pdp10-xkl-tops20
+	exit 0 ;;
+    *:TOPS-20:*:*)
+	echo pdp10-unknown-tops20
+	exit 0 ;;
+    *:ITS:*:*)
+	echo pdp10-unknown-its
+	exit 0 ;;
+    i*86:XTS-300:*:STOP)
+	echo ${UNAME_MACHINE}-unknown-stop
+	exit 0 ;;
+    i*86:atheos:*:*)
+	echo ${UNAME_MACHINE}-unknown-atheos
+	exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+	  ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+	printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+	printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && rm -f $dummy.c $dummy && rmdir $tmpdir && exit 0
+rm -f $dummy.c $dummy && rmdir $tmpdir
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+	echo c1-convex-bsd
+	exit 0 ;;
+    c2*)
+	if getsysinfo -f scalar_acc
+	then echo c32-convex-bsd
+	else echo c2-convex-bsd
+	fi
+	exit 0 ;;
+    c34*)
+	echo c34-convex-bsd
+	exit 0 ;;
+    c38*)
+	echo c38-convex-bsd
+	exit 0 ;;
+    c4*)
+	echo c4-convex-bsd
+	exit 0 ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+    ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches at gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:


Property changes on: kde-extras/tora/branches/upstream/current/config.guess
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/config.h.in
===================================================================
--- kde-extras/tora/branches/upstream/current/config.h.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config.h.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,292 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define to 1 if the `closedir' function returns void instead of `int'. */
+#undef CLOSEDIR_VOID
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#undef CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#undef C_ALLOCA
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#undef HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#undef HAVE_ALLOCA_H
+
+/* Define if you have the CoreAudio API */
+#undef HAVE_COREAUDIO
+
+/* Define to 1 if you have the <crt_externs.h> header file. */
+#undef HAVE_CRT_EXTERNS_H
+
+/* Defines if your system has the crypt function */
+#undef HAVE_CRYPT
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define if you have a STL implementation by HP */
+#undef HAVE_HP_STL
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define if you have libjpeg */
+#undef HAVE_LIBJPEG
+
+/* Define to 1 if you have the `pcre' library (-lpcre). */
+#undef HAVE_LIBPCRE
+
+/* Define if you have libpng */
+#undef HAVE_LIBPNG
+
+/* Define if you have a working libpthread */
+#undef HAVE_LIBPTHREAD
+
+/* Define if you have libz */
+#undef HAVE_LIBZ
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+   to 0 otherwise. */
+#undef HAVE_MALLOC
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#undef HAVE_NDIR_H
+
+/* Define if your system needs _NSGetEnviron to set up the environment */
+#undef HAVE_NSGETENVIRON
+
+/* Define to 1 if you have the <pthread/linuxthreads/pthread.h> header file.
+   */
+#undef HAVE_PTHREAD_LINUXTHREADS_PTHREAD_H
+
+/* Define if you have the res_init function */
+#undef HAVE_RES_INIT
+
+/* Define to 1 if you have the `setenv' function. */
+#undef HAVE_SETENV
+
+/* Define if you have a STL implementation by SGI */
+#undef HAVE_SGI_STL
+
+/* Define to 1 if you have the `snprintf' function. */
+#undef HAVE_SNPRINTF
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if `st_blocks' is member of `struct stat'. */
+#undef HAVE_STRUCT_STAT_ST_BLOCKS
+
+/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use
+   `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */
+#undef HAVE_ST_BLOCKS
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/mkdev.h> header file. */
+#undef HAVE_SYS_MKDEV_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+#undef HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#undef HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/sysmacros.h> header file. */
+#undef HAVE_SYS_SYSMACROS_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <time.h> header file. */
+#undef HAVE_TIME_H
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#undef HAVE_VSNPRINTF
+
+/* Define if you want Xinerama support */
+#undef HAVE_XINERAMA
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Suffix for lib directories */
+#undef KDELIBSUFF
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
+   */
+#undef MAJOR_IN_MKDEV
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in
+   <sysmacros.h>. */
+#undef MAJOR_IN_SYSMACROS
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* The size of `char', as computed by sizeof. */
+#undef SIZEOF_CHAR
+
+/* The size of `char *', as computed by sizeof. */
+#undef SIZEOF_CHAR_P
+
+/* The size of `int', as computed by sizeof. */
+#undef SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#undef SIZEOF_LONG
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+	STACK_DIRECTION > 0 => grows toward higher addresses
+	STACK_DIRECTION < 0 => grows toward lower addresses
+	STACK_DIRECTION = 0 => direction of growth unknown */
+#undef STACK_DIRECTION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* True if using monolithic build. */
+#undef TOMONOLITHIC
+
+/* Define if compiled against Oracle Instant Client */
+#undef TO_INSTANT_CLIENT
+
+/* Define if you have KDE. */
+#undef TO_KDE
+
+/* Define if you do _not_ have Oracle. */
+#undef TO_NO_ORACLE
+
+/* Version number of package */
+#undef VERSION
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#undef X_DISPLAY_MISSING
+
+/*
+ * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
+ * headers and I'm too lazy to write a configure test as long as only
+ * unixware is related
+ */
+#ifdef _UNIXWARE
+#define HAVE_BOOLEAN
+#endif
+
+
+
+/*
+ * AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
+ * that defines bzero.
+ */
+
+#if defined(_AIX)
+#include <strings.h>
+#endif
+
+
+
+/*
+ * On HP-UX, the declaration of vsnprintf() is needed every time !
+ */
+
+#if !defined(HAVE_VSNPRINTF) || defined(hpux)
+#if __STDC__
+#include <stdarg.h>
+#include <stdlib.h>
+#else
+#include <varargs.h>
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
+#ifdef __cplusplus
+extern "C"
+#endif
+int snprintf(char *str, size_t n, char const *fmt, ...);
+#endif
+
+
+
+#if defined(__SVR4) && !defined(__svr4__)
+#define __svr4__ 1
+#endif
+
+
+/* Compatibility define */
+#undef ksize_t
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#undef size_t
+
+/* Define the real type of socklen_t */
+#undef socklen_t

Added: kde-extras/tora/branches/upstream/current/config.sub
===================================================================
--- kde-extras/tora/branches/upstream/current/config.sub	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/config.sub	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1473 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002 Free Software Foundation, Inc.
+
+timestamp='2002-09-05'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Please send patches to <config-patches at gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#	CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#	CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches at gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )	# Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | freebsd*-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+	-sun*os*)
+		# Prevent following clause from handling this invalid input.
+		;;
+	-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+	-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+	-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+	-apple | -axis)
+		os=
+		basic_machine=$1
+		;;
+	-sim | -cisco | -oki | -wec | -winbond)
+		os=
+		basic_machine=$1
+		;;
+	-scout)
+		;;
+	-wrs)
+		os=-vxworks
+		basic_machine=$1
+		;;
+	-chorusos*)
+		os=-chorusos
+		basic_machine=$1
+		;;
+ 	-chorusrdb)
+ 		os=-chorusrdb
+		basic_machine=$1
+ 		;;
+	-hiux*)
+		os=-hiuxwe2
+		;;
+	-sco5)
+		os=-sco3.2v5
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco4)
+		os=-sco3.2v4
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2.[4-9]*)
+		os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco3.2v[4-9]*)
+		# Don't forget version if it is 3.2v4 or newer.
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-sco*)
+		os=-sco3.2v2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-udk*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-isc)
+		os=-isc2.2
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-clix*)
+		basic_machine=clipper-intergraph
+		;;
+	-isc*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+		;;
+	-lynx*)
+		os=-lynxos
+		;;
+	-ptx*)
+		basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+		;;
+	-windowsnt*)
+		os=`echo $os | sed -e 's/windowsnt/winnt/'`
+		;;
+	-psos*)
+		os=-psos
+		;;
+	-mint | -mint[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+	# Recognize the basic CPU types without company name.
+	# Some are omitted here because they have special meanings below.
+	1750a | 580 \
+	| a29k \
+	| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+	| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+	| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+	| clipper \
+	| d10v | d30v | dlx | dsp16xx \
+	| fr30 | frv \
+	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+	| i370 | i860 | i960 | ia64 \
+	| ip2k \
+	| m32r | m68000 | m68k | m88k | mcore \
+	| mips | mipsbe | mipseb | mipsel | mipsle \
+	| mips16 \
+	| mips64 | mips64el \
+	| mips64vr | mips64vrel \
+	| mips64orion | mips64orionel \
+	| mips64vr4100 | mips64vr4100el \
+	| mips64vr4300 | mips64vr4300el \
+	| mips64vr5000 | mips64vr5000el \
+	| mipsisa32 | mipsisa32el \
+	| mipsisa64 | mipsisa64el \
+	| mipsisa64sb1 | mipsisa64sb1el \
+	| mipsisa64sr71k | mipsisa64sr71kel \
+	| mipstx39 | mipstx39el \
+	| mn10200 | mn10300 \
+	| ns16k | ns32k \
+	| openrisc | or32 \
+	| pdp10 | pdp11 | pj | pjl \
+	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+	| pyramid \
+	| sh | sh[1234] | sh3e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh64 | sh64le \
+	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
+	| strongarm \
+	| tahoe | thumb | tic80 | tron \
+	| v850 | v850e \
+	| we32k \
+	| x86 | xscale | xstormy16 | xtensa \
+	| z8k)
+		basic_machine=$basic_machine-unknown
+		;;
+	m6811 | m68hc11 | m6812 | m68hc12)
+		# Motorola 68HC11/12.
+		basic_machine=$basic_machine-unknown
+		os=-none
+		;;
+	m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+		;;
+
+	# We use `pc' rather than `unknown'
+	# because (1) that's what they normally are, and
+	# (2) the word "unknown" tends to confuse beginning users.
+	i*86 | x86_64)
+	  basic_machine=$basic_machine-pc
+	  ;;
+	# Object if more than one company name word.
+	*-*-*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+	# Recognize the basic CPU types with company name.
+	580-* \
+	| a29k-* \
+	| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+	| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+	| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+	| arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+	| avr-* \
+	| bs2000-* \
+	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \
+	| clipper-* | cydra-* \
+	| d10v-* | d30v-* | dlx-* \
+	| elxsi-* \
+	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+	| h8300-* | h8500-* \
+	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+	| i*86-* | i860-* | i960-* | ia64-* \
+	| ip2k-* \
+	| m32r-* \
+	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+	| m88110-* | m88k-* | mcore-* \
+	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+	| mips16-* \
+	| mips64-* | mips64el-* \
+	| mips64vr-* | mips64vrel-* \
+	| mips64orion-* | mips64orionel-* \
+	| mips64vr4100-* | mips64vr4100el-* \
+	| mips64vr4300-* | mips64vr4300el-* \
+	| mips64vr5000-* | mips64vr5000el-* \
+	| mipsisa32-* | mipsisa32el-* \
+	| mipsisa64-* | mipsisa64el-* \
+	| mipsisa64sb1-* | mipsisa64sb1el-* \
+	| mipsisa64sr71k-* | mipsisa64sr71kel-* \
+	| mipstx39 | mipstx39el \
+	| none-* | np1-* | ns16k-* | ns32k-* \
+	| orion-* \
+	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+	| pyramid-* \
+	| romp-* | rs6000-* \
+	| sh-* | sh[1234]-* | sh3e-* | sh[34]eb-* | shbe-* \
+	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
+	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+	| tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \
+	| v850-* | v850e-* | vax-* \
+	| we32k-* \
+	| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
+	| xtensa-* \
+	| ymp-* \
+	| z8k-*)
+		;;
+	# Recognize the various machine names and aliases which stand
+	# for a CPU type and a company and sometimes even an OS.
+	386bsd)
+		basic_machine=i386-unknown
+		os=-bsd
+		;;
+	3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+		basic_machine=m68000-att
+		;;
+	3b*)
+		basic_machine=we32k-att
+		;;
+	a29khif)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	adobe68k)
+		basic_machine=m68010-adobe
+		os=-scout
+		;;
+	alliant | fx80)
+		basic_machine=fx80-alliant
+		;;
+	altos | altos3068)
+		basic_machine=m68k-altos
+		;;
+	am29k)
+		basic_machine=a29k-none
+		os=-bsd
+		;;
+	amd64-*)
+		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	amdahl)
+		basic_machine=580-amdahl
+		os=-sysv
+		;;
+	amiga | amiga-*)
+		basic_machine=m68k-unknown
+		;;
+	amigaos | amigados)
+		basic_machine=m68k-unknown
+		os=-amigaos
+		;;
+	amigaunix | amix)
+		basic_machine=m68k-unknown
+		os=-sysv4
+		;;
+	apollo68)
+		basic_machine=m68k-apollo
+		os=-sysv
+		;;
+	apollo68bsd)
+		basic_machine=m68k-apollo
+		os=-bsd
+		;;
+	aux)
+		basic_machine=m68k-apple
+		os=-aux
+		;;
+	balance)
+		basic_machine=ns32k-sequent
+		os=-dynix
+		;;
+	c90)
+		basic_machine=c90-cray
+		os=-unicos
+		;;
+	convex-c1)
+		basic_machine=c1-convex
+		os=-bsd
+		;;
+	convex-c2)
+		basic_machine=c2-convex
+		os=-bsd
+		;;
+	convex-c32)
+		basic_machine=c32-convex
+		os=-bsd
+		;;
+	convex-c34)
+		basic_machine=c34-convex
+		os=-bsd
+		;;
+	convex-c38)
+		basic_machine=c38-convex
+		os=-bsd
+		;;
+	cray | j90)
+		basic_machine=j90-cray
+		os=-unicos
+		;;
+	crds | unos)
+		basic_machine=m68k-crds
+		;;
+	cris | cris-* | etrax*)
+		basic_machine=cris-axis
+		;;
+	da30 | da30-*)
+		basic_machine=m68k-da30
+		;;
+	decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+		basic_machine=mips-dec
+		;;
+	decsystem10* | dec10*)
+		basic_machine=pdp10-dec
+		os=-tops10
+		;;
+	decsystem20* | dec20*)
+		basic_machine=pdp10-dec
+		os=-tops20
+		;;
+	delta | 3300 | motorola-3300 | motorola-delta \
+	      | 3300-motorola | delta-motorola)
+		basic_machine=m68k-motorola
+		;;
+	delta88)
+		basic_machine=m88k-motorola
+		os=-sysv3
+		;;
+	dpx20 | dpx20-*)
+		basic_machine=rs6000-bull
+		os=-bosx
+		;;
+	dpx2* | dpx2*-bull)
+		basic_machine=m68k-bull
+		os=-sysv3
+		;;
+	ebmon29k)
+		basic_machine=a29k-amd
+		os=-ebmon
+		;;
+	elxsi)
+		basic_machine=elxsi-elxsi
+		os=-bsd
+		;;
+	encore | umax | mmax)
+		basic_machine=ns32k-encore
+		;;
+	es1800 | OSE68k | ose68k | ose | OSE)
+		basic_machine=m68k-ericsson
+		os=-ose
+		;;
+	fx2800)
+		basic_machine=i860-alliant
+		;;
+	genix)
+		basic_machine=ns32k-ns
+		;;
+	gmicro)
+		basic_machine=tron-gmicro
+		os=-sysv
+		;;
+	go32)
+		basic_machine=i386-pc
+		os=-go32
+		;;
+	h3050r* | hiux*)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	h8300hms)
+		basic_machine=h8300-hitachi
+		os=-hms
+		;;
+	h8300xray)
+		basic_machine=h8300-hitachi
+		os=-xray
+		;;
+	h8500hms)
+		basic_machine=h8500-hitachi
+		os=-hms
+		;;
+	harris)
+		basic_machine=m88k-harris
+		os=-sysv3
+		;;
+	hp300-*)
+		basic_machine=m68k-hp
+		;;
+	hp300bsd)
+		basic_machine=m68k-hp
+		os=-bsd
+		;;
+	hp300hpux)
+		basic_machine=m68k-hp
+		os=-hpux
+		;;
+	hp3k9[0-9][0-9] | hp9[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k2[0-9][0-9] | hp9k31[0-9])
+		basic_machine=m68000-hp
+		;;
+	hp9k3[2-9][0-9])
+		basic_machine=m68k-hp
+		;;
+	hp9k6[0-9][0-9] | hp6[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hp9k7[0-79][0-9] | hp7[0-79][0-9])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k78[0-9] | hp78[0-9])
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+		# FIXME: really hppa2.0-hp
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][13679] | hp8[0-9][13679])
+		basic_machine=hppa1.1-hp
+		;;
+	hp9k8[0-9][0-9] | hp8[0-9][0-9])
+		basic_machine=hppa1.0-hp
+		;;
+	hppa-next)
+		os=-nextstep3
+		;;
+	hppaosf)
+		basic_machine=hppa1.1-hp
+		os=-osf
+		;;
+	hppro)
+		basic_machine=hppa1.1-hp
+		os=-proelf
+		;;
+	i370-ibm* | ibm*)
+		basic_machine=i370-ibm
+		;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+	i*86v32)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv32
+		;;
+	i*86v4*)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv4
+		;;
+	i*86v)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-sysv
+		;;
+	i*86sol2)
+		basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+		os=-solaris2
+		;;
+	i386mach)
+		basic_machine=i386-mach
+		os=-mach
+		;;
+	i386-vsta | vsta)
+		basic_machine=i386-unknown
+		os=-vsta
+		;;
+	iris | iris4d)
+		basic_machine=mips-sgi
+		case $os in
+		    -irix*)
+			;;
+		    *)
+			os=-irix4
+			;;
+		esac
+		;;
+	isi68 | isi)
+		basic_machine=m68k-isi
+		os=-sysv
+		;;
+	m88k-omron*)
+		basic_machine=m88k-omron
+		;;
+	magnum | m3230)
+		basic_machine=mips-mips
+		os=-sysv
+		;;
+	merlin)
+		basic_machine=ns32k-utek
+		os=-sysv
+		;;
+	mingw32)
+		basic_machine=i386-pc
+		os=-mingw32
+		;;
+	miniframe)
+		basic_machine=m68000-convergent
+		;;
+	*mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+		basic_machine=m68k-atari
+		os=-mint
+		;;
+	mips3*-*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+		;;
+	mips3*)
+		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+		;;
+	mmix*)
+		basic_machine=mmix-knuth
+		os=-mmixware
+		;;
+	monitor)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	morphos)
+		basic_machine=powerpc-unknown
+		os=-morphos
+		;;
+	msdos)
+		basic_machine=i386-pc
+		os=-msdos
+		;;
+	mvs)
+		basic_machine=i370-ibm
+		os=-mvs
+		;;
+	ncr3000)
+		basic_machine=i486-ncr
+		os=-sysv4
+		;;
+	netbsd386)
+		basic_machine=i386-unknown
+		os=-netbsd
+		;;
+	netwinder)
+		basic_machine=armv4l-rebel
+		os=-linux
+		;;
+	news | news700 | news800 | news900)
+		basic_machine=m68k-sony
+		os=-newsos
+		;;
+	news1000)
+		basic_machine=m68030-sony
+		os=-newsos
+		;;
+	news-3600 | risc-news)
+		basic_machine=mips-sony
+		os=-newsos
+		;;
+	necv70)
+		basic_machine=v70-nec
+		os=-sysv
+		;;
+	next | m*-next )
+		basic_machine=m68k-next
+		case $os in
+		    -nextstep* )
+			;;
+		    -ns2*)
+		      os=-nextstep2
+			;;
+		    *)
+		      os=-nextstep3
+			;;
+		esac
+		;;
+	nh3000)
+		basic_machine=m68k-harris
+		os=-cxux
+		;;
+	nh[45]000)
+		basic_machine=m88k-harris
+		os=-cxux
+		;;
+	nindy960)
+		basic_machine=i960-intel
+		os=-nindy
+		;;
+	mon960)
+		basic_machine=i960-intel
+		os=-mon960
+		;;
+	nonstopux)
+		basic_machine=mips-compaq
+		os=-nonstopux
+		;;
+	np1)
+		basic_machine=np1-gould
+		;;
+	nsr-tandem)
+		basic_machine=nsr-tandem
+		;;
+	op50n-* | op60c-*)
+		basic_machine=hppa1.1-oki
+		os=-proelf
+		;;
+	or32 | or32-*)
+		basic_machine=or32-unknown
+		os=-coff
+		;;
+	OSE68000 | ose68000)
+		basic_machine=m68000-ericsson
+		os=-ose
+		;;
+	os68k)
+		basic_machine=m68k-none
+		os=-os68k
+		;;
+	pa-hitachi)
+		basic_machine=hppa1.1-hitachi
+		os=-hiuxwe2
+		;;
+	paragon)
+		basic_machine=i860-intel
+		os=-osf
+		;;
+	pbd)
+		basic_machine=sparc-tti
+		;;
+	pbb)
+		basic_machine=m68k-tti
+		;;
+	pc532 | pc532-*)
+		basic_machine=ns32k-pc532
+		;;
+	pentium | p5 | k5 | k6 | nexgen | viac3)
+		basic_machine=i586-pc
+		;;
+	pentiumpro | p6 | 6x86 | athlon | athlon_*)
+		basic_machine=i686-pc
+		;;
+	pentiumii | pentium2)
+		basic_machine=i686-pc
+		;;
+	pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+		basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumpro-* | p6-* | 6x86-* | athlon-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pentiumii-* | pentium2-*)
+		basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	pn)
+		basic_machine=pn-gould
+		;;
+	power)	basic_machine=power-ibm
+		;;
+	ppc)	basic_machine=powerpc-unknown
+		;;
+	ppc-*)	basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppcle | powerpclittle | ppc-le | powerpc-little)
+		basic_machine=powerpcle-unknown
+		;;
+	ppcle-* | powerpclittle-*)
+		basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64)	basic_machine=powerpc64-unknown
+		;;
+	ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+		basic_machine=powerpc64le-unknown
+		;;
+	ppc64le-* | powerpc64little-*)
+		basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+		;;
+	ps2)
+		basic_machine=i386-ibm
+		;;
+	pw32)
+		basic_machine=i586-unknown
+		os=-pw32
+		;;
+	rom68k)
+		basic_machine=m68k-rom68k
+		os=-coff
+		;;
+	rm[46]00)
+		basic_machine=mips-siemens
+		;;
+	rtpc | rtpc-*)
+		basic_machine=romp-ibm
+		;;
+	s390 | s390-*)
+		basic_machine=s390-ibm
+		;;
+	s390x | s390x-*)
+		basic_machine=s390x-ibm
+		;;
+	sa29200)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	sb1)
+		basic_machine=mipsisa64sb1-unknown
+		;;
+	sb1el)
+		basic_machine=mipsisa64sb1el-unknown
+		;;
+	sequent)
+		basic_machine=i386-sequent
+		;;
+	sh)
+		basic_machine=sh-hitachi
+		os=-hms
+		;;
+	sparclite-wrs | simso-wrs)
+		basic_machine=sparclite-wrs
+		os=-vxworks
+		;;
+	sps7)
+		basic_machine=m68k-bull
+		os=-sysv2
+		;;
+	spur)
+		basic_machine=spur-unknown
+		;;
+	st2000)
+		basic_machine=m68k-tandem
+		;;
+	stratus)
+		basic_machine=i860-stratus
+		os=-sysv4
+		;;
+	sun2)
+		basic_machine=m68000-sun
+		;;
+	sun2os3)
+		basic_machine=m68000-sun
+		os=-sunos3
+		;;
+	sun2os4)
+		basic_machine=m68000-sun
+		os=-sunos4
+		;;
+	sun3os3)
+		basic_machine=m68k-sun
+		os=-sunos3
+		;;
+	sun3os4)
+		basic_machine=m68k-sun
+		os=-sunos4
+		;;
+	sun4os3)
+		basic_machine=sparc-sun
+		os=-sunos3
+		;;
+	sun4os4)
+		basic_machine=sparc-sun
+		os=-sunos4
+		;;
+	sun4sol2)
+		basic_machine=sparc-sun
+		os=-solaris2
+		;;
+	sun3 | sun3-*)
+		basic_machine=m68k-sun
+		;;
+	sun4)
+		basic_machine=sparc-sun
+		;;
+	sun386 | sun386i | roadrunner)
+		basic_machine=i386-sun
+		;;
+	sv1)
+		basic_machine=sv1-cray
+		os=-unicos
+		;;
+	symmetry)
+		basic_machine=i386-sequent
+		os=-dynix
+		;;
+	t3d)
+		basic_machine=alpha-cray
+		os=-unicos
+		;;
+	t3e)
+		basic_machine=alphaev5-cray
+		os=-unicos
+		;;
+	t90)
+		basic_machine=t90-cray
+		os=-unicos
+		;;
+        tic4x | c4x*)
+		basic_machine=tic4x-unknown
+		os=-coff
+		;;
+	tic54x | c54x*)
+		basic_machine=tic54x-unknown
+		os=-coff
+		;;
+	tx39)
+		basic_machine=mipstx39-unknown
+		;;
+	tx39el)
+		basic_machine=mipstx39el-unknown
+		;;
+	toad1)
+		basic_machine=pdp10-xkl
+		os=-tops20
+		;;
+	tower | tower-32)
+		basic_machine=m68k-ncr
+		;;
+	udi29k)
+		basic_machine=a29k-amd
+		os=-udi
+		;;
+	ultra3)
+		basic_machine=a29k-nyu
+		os=-sym1
+		;;
+	v810 | necv810)
+		basic_machine=v810-nec
+		os=-none
+		;;
+	vaxv)
+		basic_machine=vax-dec
+		os=-sysv
+		;;
+	vms)
+		basic_machine=vax-dec
+		os=-vms
+		;;
+	vpp*|vx|vx-*)
+		basic_machine=f301-fujitsu
+		;;
+	vxworks960)
+		basic_machine=i960-wrs
+		os=-vxworks
+		;;
+	vxworks68)
+		basic_machine=m68k-wrs
+		os=-vxworks
+		;;
+	vxworks29k)
+		basic_machine=a29k-wrs
+		os=-vxworks
+		;;
+	w65*)
+		basic_machine=w65-wdc
+		os=-none
+		;;
+	w89k-*)
+		basic_machine=hppa1.1-winbond
+		os=-proelf
+		;;
+	windows32)
+		basic_machine=i386-pc
+		os=-windows32-msvcrt
+		;;
+	xps | xps100)
+		basic_machine=xps100-honeywell
+		;;
+	ymp)
+		basic_machine=ymp-cray
+		os=-unicos
+		;;
+	z8k-*-coff)
+		basic_machine=z8k-unknown
+		os=-sim
+		;;
+	none)
+		basic_machine=none-none
+		os=-none
+		;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+	w89k)
+		basic_machine=hppa1.1-winbond
+		;;
+	op50n)
+		basic_machine=hppa1.1-oki
+		;;
+	op60c)
+		basic_machine=hppa1.1-oki
+		;;
+	romp)
+		basic_machine=romp-ibm
+		;;
+	rs6000)
+		basic_machine=rs6000-ibm
+		;;
+	vax)
+		basic_machine=vax-dec
+		;;
+	pdp10)
+		# there are many clones, so DEC is not a safe bet
+		basic_machine=pdp10-unknown
+		;;
+	pdp11)
+		basic_machine=pdp11-dec
+		;;
+	we32k)
+		basic_machine=we32k-att
+		;;
+	sh3 | sh4 | sh3eb | sh4eb | sh[1234]le | sh3ele)
+		basic_machine=sh-unknown
+		;;
+	sh64)
+		basic_machine=sh64-unknown
+		;;
+	sparc | sparcv9 | sparcv9b)
+		basic_machine=sparc-sun
+		;;
+	cydra)
+		basic_machine=cydra-cydrome
+		;;
+	orion)
+		basic_machine=orion-highlevel
+		;;
+	orion105)
+		basic_machine=clipper-highlevel
+		;;
+	mac | mpw | mac-mpw)
+		basic_machine=m68k-apple
+		;;
+	pmac | pmac-mpw)
+		basic_machine=powerpc-apple
+		;;
+	*-unknown)
+		# Make sure to match an already-canonicalized machine name.
+		;;
+	*)
+		echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+		exit 1
+		;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+	*-digital*)
+		basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+		;;
+	*-commodore*)
+		basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+		;;
+	*)
+		;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+	# -solaris* is a basic system type, with this one exception.
+	-solaris1 | -solaris1.*)
+		os=`echo $os | sed -e 's|solaris1|sunos4|'`
+		;;
+	-solaris)
+		os=-solaris2
+		;;
+	-svr4*)
+		os=-sysv4
+		;;
+	-unixware*)
+		os=-sysv4.2uw
+		;;
+	-gnu/linux*)
+		os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+		;;
+	# First accept the basic system types.
+	# The portable systems comes first.
+	# Each alternative MUST END IN A *, to match a version number.
+	# -sysv* is not here because it comes later, after sysvr4.
+	-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+	      | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+	      | -aos* \
+	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+	      | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
+	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+	      | -chorusos* | -chorusrdb* \
+	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+	      | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* | -powermax*)
+	# Remember, each alternative MUST END IN *, to match a version number.
+		;;
+	-qnx*)
+		case $basic_machine in
+		    x86-* | i*86-*)
+			;;
+		    *)
+			os=-nto$os
+			;;
+		esac
+		;;
+	-nto*)
+		os=-nto-qnx
+		;;
+	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+		;;
+	-mac*)
+		os=`echo $os | sed -e 's|mac|macos|'`
+		;;
+	-linux*)
+		os=`echo $os | sed -e 's|linux|linux-gnu|'`
+		;;
+	-sunos5*)
+		os=`echo $os | sed -e 's|sunos5|solaris2|'`
+		;;
+	-sunos6*)
+		os=`echo $os | sed -e 's|sunos6|solaris3|'`
+		;;
+	-opened*)
+		os=-openedition
+		;;
+	-wince*)
+		os=-wince
+		;;
+	-osfrose*)
+		os=-osfrose
+		;;
+	-osf*)
+		os=-osf
+		;;
+	-utek*)
+		os=-bsd
+		;;
+	-dynix*)
+		os=-bsd
+		;;
+	-acis*)
+		os=-aos
+		;;
+	-atheos*)
+		os=-atheos
+		;;
+	-386bsd)
+		os=-bsd
+		;;
+	-ctix* | -uts*)
+		os=-sysv
+		;;
+	-nova*)
+		os=-rtmk-nova
+		;;
+	-ns2 )
+		os=-nextstep2
+		;;
+	-nsk*)
+		os=-nsk
+		;;
+	# Preserve the version number of sinix5.
+	-sinix5.*)
+		os=`echo $os | sed -e 's|sinix|sysv|'`
+		;;
+	-sinix*)
+		os=-sysv4
+		;;
+	-triton*)
+		os=-sysv3
+		;;
+	-oss*)
+		os=-sysv3
+		;;
+	-svr4)
+		os=-sysv4
+		;;
+	-svr3)
+		os=-sysv3
+		;;
+	-sysvr4)
+		os=-sysv4
+		;;
+	# This must come after -sysvr4.
+	-sysv*)
+		;;
+	-ose*)
+		os=-ose
+		;;
+	-es1800*)
+		os=-ose
+		;;
+	-xenix)
+		os=-xenix
+		;;
+	-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+		os=-mint
+		;;
+	-none)
+		;;
+	*)
+		# Get rid of the `-' at the beginning of $os.
+		os=`echo $os | sed 's/[^-]*-//'`
+		echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+		exit 1
+		;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+	*-acorn)
+		os=-riscix1.2
+		;;
+	arm*-rebel)
+		os=-linux
+		;;
+	arm*-semi)
+		os=-aout
+		;;
+	# This must come before the *-dec entry.
+	pdp10-*)
+		os=-tops20
+		;;
+	pdp11-*)
+		os=-none
+		;;
+	*-dec | vax-*)
+		os=-ultrix4.2
+		;;
+	m68*-apollo)
+		os=-domain
+		;;
+	i386-sun)
+		os=-sunos4.0.2
+		;;
+	m68000-sun)
+		os=-sunos3
+		# This also exists in the configure program, but was not the
+		# default.
+		# os=-sunos4
+		;;
+	m68*-cisco)
+		os=-aout
+		;;
+	mips*-cisco)
+		os=-elf
+		;;
+	mips*-*)
+		os=-elf
+		;;
+	or32-*)
+		os=-coff
+		;;
+	*-tti)	# must be before sparc entry or we get the wrong os.
+		os=-sysv3
+		;;
+	sparc-* | *-sun)
+		os=-sunos4.1.1
+		;;
+	*-be)
+		os=-beos
+		;;
+	*-ibm)
+		os=-aix
+		;;
+	*-wec)
+		os=-proelf
+		;;
+	*-winbond)
+		os=-proelf
+		;;
+	*-oki)
+		os=-proelf
+		;;
+	*-hp)
+		os=-hpux
+		;;
+	*-hitachi)
+		os=-hiux
+		;;
+	i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+		os=-sysv
+		;;
+	*-cbm)
+		os=-amigaos
+		;;
+	*-dg)
+		os=-dgux
+		;;
+	*-dolphin)
+		os=-sysv3
+		;;
+	m68k-ccur)
+		os=-rtu
+		;;
+	m88k-omron*)
+		os=-luna
+		;;
+	*-next )
+		os=-nextstep
+		;;
+	*-sequent)
+		os=-ptx
+		;;
+	*-crds)
+		os=-unos
+		;;
+	*-ns)
+		os=-genix
+		;;
+	i370-*)
+		os=-mvs
+		;;
+	*-next)
+		os=-nextstep3
+		;;
+	*-gould)
+		os=-sysv
+		;;
+	*-highlevel)
+		os=-bsd
+		;;
+	*-encore)
+		os=-bsd
+		;;
+	*-sgi)
+		os=-irix
+		;;
+	*-siemens)
+		os=-sysv4
+		;;
+	*-masscomp)
+		os=-rtu
+		;;
+	f30[01]-fujitsu | f700-fujitsu)
+		os=-uxpv
+		;;
+	*-rom68k)
+		os=-coff
+		;;
+	*-*bug)
+		os=-coff
+		;;
+	*-apple)
+		os=-macos
+		;;
+	*-atari*)
+		os=-mint
+		;;
+	*)
+		os=-none
+		;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+	*-unknown)
+		case $os in
+			-riscix*)
+				vendor=acorn
+				;;
+			-sunos*)
+				vendor=sun
+				;;
+			-aix*)
+				vendor=ibm
+				;;
+			-beos*)
+				vendor=be
+				;;
+			-hpux*)
+				vendor=hp
+				;;
+			-mpeix*)
+				vendor=hp
+				;;
+			-hiux*)
+				vendor=hitachi
+				;;
+			-unos*)
+				vendor=crds
+				;;
+			-dgux*)
+				vendor=dg
+				;;
+			-luna*)
+				vendor=omron
+				;;
+			-genix*)
+				vendor=ns
+				;;
+			-mvs* | -opened*)
+				vendor=ibm
+				;;
+			-ptx*)
+				vendor=sequent
+				;;
+			-vxsim* | -vxworks* | -windiss*)
+				vendor=wrs
+				;;
+			-aux*)
+				vendor=apple
+				;;
+			-hms*)
+				vendor=hitachi
+				;;
+			-mpw* | -macos*)
+				vendor=apple
+				;;
+			-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+				vendor=atari
+				;;
+			-vos*)
+				vendor=stratus
+				;;
+		esac
+		basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+		;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:


Property changes on: kde-extras/tora/branches/upstream/current/config.sub
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/configure
===================================================================
--- kde-extras/tora/branches/upstream/current/configure	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/configure	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,33710 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.61 for tora 1.3.22.
+#
+# Report bugs to <tora-develop at lists.sourceforge.net>.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+as_nl='
+'
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+  if (eval ":") 2>/dev/null; then
+  as_have_required=yes
+else
+  as_have_required=no
+fi
+
+  if test $as_have_required = yes && 	 (eval ":
+(as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=\$LINENO
+  as_lineno_2=\$LINENO
+  test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+  test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+  :
+else
+  as_candidate_shells=
+    as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  case $as_dir in
+	 /*)
+	   for as_base in sh bash ksh sh5; do
+	     as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+	   done;;
+       esac
+done
+IFS=$as_save_IFS
+
+
+      for as_shell in $as_candidate_shells $SHELL; do
+	 # Try only shells that exist, to save several forks.
+	 if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+		{ ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+  CONFIG_SHELL=$as_shell
+	       as_have_required=yes
+	       if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+  (exit $1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+  break
+fi
+
+fi
+
+      done
+
+      if test "x$CONFIG_SHELL" != x; then
+  for as_var in BASH_ENV ENV
+        do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+        done
+        export CONFIG_SHELL
+        exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+    if test $as_have_required = no; then
+  echo This script requires a shell more modern than all the
+      echo shells that I found on your system.  Please install a
+      echo modern shell, or manually run the script under such a
+      echo shell if you do have one.
+      { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+  (exit \$1)
+}
+as_func_success () {
+  as_func_return 0
+}
+as_func_failure () {
+  as_func_return 1
+}
+as_func_ret_success () {
+  return 0
+}
+as_func_ret_failure () {
+  return 1
+}
+
+exitcode=0
+if as_func_success; then
+  :
+else
+  exitcode=1
+  echo as_func_success failed.
+fi
+
+if as_func_failure; then
+  exitcode=1
+  echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+  :
+else
+  exitcode=1
+  echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+  exitcode=1
+  echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+  :
+else
+  exitcode=1
+  echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+  echo No shell found that supports shell functions.
+  echo Please tell autoconf at gnu.org about your system,
+  echo including any error possibly output before this
+  echo message
+}
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s='ln -s'
+  # ... but there are two gotchas:
+  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+  # In both cases, we have to default to `cp -p'.
+  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+    as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+        test -d "$1/.";
+      else
+	case $1 in
+        -*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+  # Remove one level of quotation (which was required for Make).
+  ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+  ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+       echo_test_string=`eval $cmd` &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+    then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+   echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+   test "X$echo_testing_string" = "X$echo_test_string"; then
+  :
+else
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for dir in $PATH /usr/ucb; do
+    IFS="$lt_save_ifs"
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+       test "X$echo_testing_string" = "X$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running configure again with it.
+      ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf %s\n'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+	 test "X$echo_testing_string" = "X$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+	   test "X$echo_testing_string" = 'X\t' &&
+	   echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+	   test "X$echo_testing_string" = "X$echo_test_string"; then
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+	  then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "$0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='tora'
+PACKAGE_TARNAME='tora'
+PACKAGE_VERSION='1.3.22'
+PACKAGE_STRING='tora 1.3.22'
+PACKAGE_BUGREPORT='tora-develop at lists.sourceforge.net'
+
+ac_unique_file="src/main.cpp"
+ac_default_prefix=/usr/local/tora
+# Factoring default headers for most tests.
+ac_includes_default="\
+#include <stdio.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+#  include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_STRING_H
+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
+#  include <memory.h>
+# endif
+# include <string.h>
+#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDINT_H
+# include <stdint.h>
+#endif
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif"
+
+ac_subst_vars='SHELL
+PATH_SEPARATOR
+PACKAGE_NAME
+PACKAGE_TARNAME
+PACKAGE_VERSION
+PACKAGE_STRING
+PACKAGE_BUGREPORT
+exec_prefix
+prefix
+program_transform_name
+bindir
+sbindir
+libexecdir
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+INSTALL_PROGRAM
+INSTALL_SCRIPT
+INSTALL_DATA
+CYGPATH_W
+PACKAGE
+VERSION
+ACLOCAL
+AUTOCONF
+AUTOMAKE
+AUTOHEADER
+MAKEINFO
+install_sh
+STRIP
+INSTALL_STRIP_PROGRAM
+mkdir_p
+AWK
+SET_MAKE
+am__leading_dot
+AMTAR
+am__tar
+am__untar
+ISODATE
+build
+build_cpu
+build_vendor
+build_os
+host
+host_cpu
+host_vendor
+host_os
+CC
+CFLAGS
+LDFLAGS
+CPPFLAGS
+ac_ct_CC
+EXEEXT
+OBJEXT
+DEPDIR
+am__include
+am__quote
+AMDEP_TRUE
+AMDEP_FALSE
+AMDEPBACKSLASH
+CCDEPMODE
+am__fastdepCC_TRUE
+am__fastdepCC_FALSE
+CXX
+CXXFLAGS
+ac_ct_CXX
+CXXDEPMODE
+am__fastdepCXX_TRUE
+am__fastdepCXX_FALSE
+CPP
+GREP
+EGREP
+ALLOCA
+LIBOBJS
+TORA_LINK_OTHERS
+LN_S
+ECHO
+AR
+RANLIB
+CXXCPP
+F77
+FFLAGS
+ac_ct_F77
+LIBTOOL
+LIBTOOL_DEPS
+LIBUTIL
+LIBCOMPAT
+LIBCRYPT
+LIBRESOLV
+LIB_POLL
+FRAMEWORK_COREAUDIO
+LIBSOCKET
+X_EXTRA_LIBS
+LIBUCB
+LIBDL
+XMKMF
+X_INCLUDES
+X_LDFLAGS
+x_libraries
+x_includes
+LIBSM
+X_PRE_LIBS
+LIB_X11
+LIBXINERAMA
+QTE_NORTTI
+LIB_XEXT
+kde_libraries
+kde_includes
+KDE_LDFLAGS
+KDE_INCLUDES
+USER_INCLUDES
+USER_LDFLAGS
+all_includes
+all_libraries
+AUTODIRS
+DCOPIDL
+DCOPIDL2CPP
+DCOP_DEPENDENCIES
+MCOPIDL
+ARTSCCONFIG
+KDECONFIG
+MEINPROC
+KDE_XSL_STYLESHEET
+kde_libs_prefix
+kde_libs_htmldir
+kde_htmldir
+kde_appsdir
+kde_icondir
+kde_sounddir
+kde_datadir
+kde_locale
+kde_confdir
+kde_mimedir
+kde_wallpaperdir
+kde_bindir
+kde_templatesdir
+kde_servicesdir
+kde_servicetypesdir
+kde_moduledir
+kde_styledir
+kde_widgetdir
+X_CFLAGS
+X_LIBS
+LIBPTHREAD
+USE_THREADS
+KDE_MT_LDFLAGS
+KDE_MT_LIBS
+LIBZ
+LIBPNG
+LIBJPEG
+qt_libraries
+qt_includes
+QT_INCLUDES
+QT_LDFLAGS
+LRELEASE
+LUPDATE
+MOC
+UIC
+UIC_TR
+LIB_QT
+LIB_QPE
+kde_qtver
+LIB_KDECORE
+LIB_KDEUI
+LIB_KIO
+LIB_SMB
+LIB_KAB
+LIB_KABC
+LIB_KHTML
+LIB_KSPELL
+LIB_KPARTS
+LIB_KDEPRINT
+LIB_DCOP
+LIB_KSYCOCA
+LIB_KFILE
+ORACLE_CXXFLAGS
+ORACLE_LDFLAGS
+ORACLE_LIBS
+QSCINTILLA_CXXFLAGS
+QSCINTILLA_LDFLAGS
+PCRE_LIBS
+PCRE_CFLAGS
+CPPUNIT_CONFIG
+CPPUNIT_CFLAGS
+CPPUNIT_LIBS
+CPPUNIT_TRUE
+CPPUNIT_FALSE
+ENABLE_MONO_TRUE
+ENABLE_MONO_FALSE
+HAVE_ORACLE_TRUE
+HAVE_ORACLE_FALSE
+LTLIBOBJS'
+ac_subst_files=''
+      ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CXX
+CXXFLAGS
+CCC
+CPP
+CXXCPP
+F77
+FFLAGS
+XMKMF'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+  # If the previous option needs an argument, assign it.
+  if test -n "$ac_prev"; then
+    eval $ac_prev=\$ac_option
+    ac_prev=
+    continue
+  fi
+
+  case $ac_option in
+  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *)	ac_optarg=yes ;;
+  esac
+
+  # Accept the important Cygnus configure options, so we can diagnose typos.
+
+  case $ac_dashdash$ac_option in
+  --)
+    ac_dashdash=yes ;;
+
+  -bindir | --bindir | --bindi | --bind | --bin | --bi)
+    ac_prev=bindir ;;
+  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+    bindir=$ac_optarg ;;
+
+  -build | --build | --buil | --bui | --bu)
+    ac_prev=build_alias ;;
+  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+    build_alias=$ac_optarg ;;
+
+  -cache-file | --cache-file | --cache-fil | --cache-fi \
+  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+    ac_prev=cache_file ;;
+  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+    cache_file=$ac_optarg ;;
+
+  --config-cache | -C)
+    cache_file=config.cache ;;
+
+  -datadir | --datadir | --datadi | --datad)
+    ac_prev=datadir ;;
+  -datadir=* | --datadir=* | --datadi=* | --datad=*)
+    datadir=$ac_optarg ;;
+
+  -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+  | --dataroo | --dataro | --datar)
+    ac_prev=datarootdir ;;
+  -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+  | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+    datarootdir=$ac_optarg ;;
+
+  -disable-* | --disable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+    eval enable_$ac_feature=no ;;
+
+  -docdir | --docdir | --docdi | --doc | --do)
+    ac_prev=docdir ;;
+  -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+    docdir=$ac_optarg ;;
+
+  -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+    ac_prev=dvidir ;;
+  -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+    dvidir=$ac_optarg ;;
+
+  -enable-* | --enable-*)
+    ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+   { (exit 1); exit 1; }; }
+    ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+    eval enable_$ac_feature=\$ac_optarg ;;
+
+  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+  | --exec | --exe | --ex)
+    ac_prev=exec_prefix ;;
+  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+  | --exec=* | --exe=* | --ex=*)
+    exec_prefix=$ac_optarg ;;
+
+  -gas | --gas | --ga | --g)
+    # Obsolete; use --with-gas.
+    with_gas=yes ;;
+
+  -help | --help | --hel | --he | -h)
+    ac_init_help=long ;;
+  -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+    ac_init_help=recursive ;;
+  -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+    ac_init_help=short ;;
+
+  -host | --host | --hos | --ho)
+    ac_prev=host_alias ;;
+  -host=* | --host=* | --hos=* | --ho=*)
+    host_alias=$ac_optarg ;;
+
+  -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+    ac_prev=htmldir ;;
+  -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+  | --ht=*)
+    htmldir=$ac_optarg ;;
+
+  -includedir | --includedir | --includedi | --included | --include \
+  | --includ | --inclu | --incl | --inc)
+    ac_prev=includedir ;;
+  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+  | --includ=* | --inclu=* | --incl=* | --inc=*)
+    includedir=$ac_optarg ;;
+
+  -infodir | --infodir | --infodi | --infod | --info | --inf)
+    ac_prev=infodir ;;
+  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+    infodir=$ac_optarg ;;
+
+  -libdir | --libdir | --libdi | --libd)
+    ac_prev=libdir ;;
+  -libdir=* | --libdir=* | --libdi=* | --libd=*)
+    libdir=$ac_optarg ;;
+
+  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+  | --libexe | --libex | --libe)
+    ac_prev=libexecdir ;;
+  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+  | --libexe=* | --libex=* | --libe=*)
+    libexecdir=$ac_optarg ;;
+
+  -localedir | --localedir | --localedi | --localed | --locale)
+    ac_prev=localedir ;;
+  -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+    localedir=$ac_optarg ;;
+
+  -localstatedir | --localstatedir | --localstatedi | --localstated \
+  | --localstate | --localstat | --localsta | --localst | --locals)
+    ac_prev=localstatedir ;;
+  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+  | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+    localstatedir=$ac_optarg ;;
+
+  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+    ac_prev=mandir ;;
+  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+    mandir=$ac_optarg ;;
+
+  -nfp | --nfp | --nf)
+    # Obsolete; use --without-fp.
+    with_fp=no ;;
+
+  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+  | --no-cr | --no-c | -n)
+    no_create=yes ;;
+
+  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+    no_recursion=yes ;;
+
+  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+  | --oldin | --oldi | --old | --ol | --o)
+    ac_prev=oldincludedir ;;
+  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+    oldincludedir=$ac_optarg ;;
+
+  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+    ac_prev=prefix ;;
+  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+    prefix=$ac_optarg ;;
+
+  -program-prefix | --program-prefix | --program-prefi | --program-pref \
+  | --program-pre | --program-pr | --program-p)
+    ac_prev=program_prefix ;;
+  -program-prefix=* | --program-prefix=* | --program-prefi=* \
+  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+    program_prefix=$ac_optarg ;;
+
+  -program-suffix | --program-suffix | --program-suffi | --program-suff \
+  | --program-suf | --program-su | --program-s)
+    ac_prev=program_suffix ;;
+  -program-suffix=* | --program-suffix=* | --program-suffi=* \
+  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+    program_suffix=$ac_optarg ;;
+
+  -program-transform-name | --program-transform-name \
+  | --program-transform-nam | --program-transform-na \
+  | --program-transform-n | --program-transform- \
+  | --program-transform | --program-transfor \
+  | --program-transfo | --program-transf \
+  | --program-trans | --program-tran \
+  | --progr-tra | --program-tr | --program-t)
+    ac_prev=program_transform_name ;;
+  -program-transform-name=* | --program-transform-name=* \
+  | --program-transform-nam=* | --program-transform-na=* \
+  | --program-transform-n=* | --program-transform-=* \
+  | --program-transform=* | --program-transfor=* \
+  | --program-transfo=* | --program-transf=* \
+  | --program-trans=* | --program-tran=* \
+  | --progr-tra=* | --program-tr=* | --program-t=*)
+    program_transform_name=$ac_optarg ;;
+
+  -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+    ac_prev=pdfdir ;;
+  -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+    pdfdir=$ac_optarg ;;
+
+  -psdir | --psdir | --psdi | --psd | --ps)
+    ac_prev=psdir ;;
+  -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+    psdir=$ac_optarg ;;
+
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil)
+    silent=yes ;;
+
+  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+    ac_prev=sbindir ;;
+  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+  | --sbi=* | --sb=*)
+    sbindir=$ac_optarg ;;
+
+  -sharedstatedir | --sharedstatedir | --sharedstatedi \
+  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+  | --sharedst | --shareds | --shared | --share | --shar \
+  | --sha | --sh)
+    ac_prev=sharedstatedir ;;
+  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+  | --sha=* | --sh=*)
+    sharedstatedir=$ac_optarg ;;
+
+  -site | --site | --sit)
+    ac_prev=site ;;
+  -site=* | --site=* | --sit=*)
+    site=$ac_optarg ;;
+
+  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+    ac_prev=srcdir ;;
+  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+    srcdir=$ac_optarg ;;
+
+  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+  | --syscon | --sysco | --sysc | --sys | --sy)
+    ac_prev=sysconfdir ;;
+  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+    sysconfdir=$ac_optarg ;;
+
+  -target | --target | --targe | --targ | --tar | --ta | --t)
+    ac_prev=target_alias ;;
+  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+    target_alias=$ac_optarg ;;
+
+  -v | -verbose | --verbose | --verbos | --verbo | --verb)
+    verbose=yes ;;
+
+  -version | --version | --versio | --versi | --vers | -V)
+    ac_init_version=: ;;
+
+  -with-* | --with-*)
+    ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+    eval with_$ac_package=\$ac_optarg ;;
+
+  -without-* | --without-*)
+    ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid package name: $ac_package" >&2
+   { (exit 1); exit 1; }; }
+    ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+    eval with_$ac_package=no ;;
+
+  --x)
+    # Obsolete; use --with-x.
+    with_x=yes ;;
+
+  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+  | --x-incl | --x-inc | --x-in | --x-i)
+    ac_prev=x_includes ;;
+  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+    x_includes=$ac_optarg ;;
+
+  -x-libraries | --x-libraries | --x-librarie | --x-librari \
+  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+    ac_prev=x_libraries ;;
+  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+    x_libraries=$ac_optarg ;;
+
+  -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; }
+    ;;
+
+  *=*)
+    ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+    # Reject names that are not valid shell variable names.
+    expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+      { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+   { (exit 1); exit 1; }; }
+    eval $ac_envvar=\$ac_optarg
+    export $ac_envvar ;;
+
+  *)
+    # FIXME: should be removed in autoconf 3.0.
+    echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+    expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+      echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+    : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+    ;;
+
+  esac
+done
+
+if test -n "$ac_prev"; then
+  ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+  { echo "$as_me: error: missing argument to $ac_option" >&2
+   { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute directory names.
+for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
+		datadir sysconfdir sharedstatedir localstatedir includedir \
+		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+		libdir localedir mandir
+do
+  eval ac_val=\$$ac_var
+  case $ac_val in
+    [\\/$]* | ?:[\\/]* )  continue;;
+    NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+  esac
+  { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+   { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+  if test "x$build_alias" = x; then
+    cross_compiling=maybe
+    echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+    If a cross compiler is detected then cross compile mode will be used." >&2
+  elif test "x$build_alias" != "x$host_alias"; then
+    cross_compiling=yes
+  fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+  { echo "$as_me: error: Working directory cannot be determined" >&2
+   { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+  { echo "$as_me: error: pwd does not report name of working directory" >&2
+   { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+  ac_srcdir_defaulted=yes
+  # Try the directory containing this script, then the parent directory.
+  ac_confdir=`$as_dirname -- "$0" ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$0" : 'X\(//\)[^/]' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$0" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  srcdir=$ac_confdir
+  if test ! -r "$srcdir/$ac_unique_file"; then
+    srcdir=..
+  fi
+else
+  ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+  test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+  { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+   { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+	cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+   { (exit 1); exit 1; }; }
+	pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+  srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+  eval ac_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_env_${ac_var}_value=\$${ac_var}
+  eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+  eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+  # Omit some internal or obsolete options to make the list less imposing.
+  # This message is too long to be a string in the A/UX 3.1 sh.
+  cat <<_ACEOF
+\`configure' configures tora 1.3.22 to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE.  See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+  -h, --help              display this help and exit
+      --help=short        display options specific to this package
+      --help=recursive    display the short help of all the included packages
+  -V, --version           display version information and exit
+  -q, --quiet, --silent   do not print \`checking...' messages
+      --cache-file=FILE   cache test results in FILE [disabled]
+  -C, --config-cache      alias for \`--cache-file=config.cache'
+  -n, --no-create         do not create output files
+      --srcdir=DIR        find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+  --prefix=PREFIX         install architecture-independent files in PREFIX
+			  [$ac_default_prefix]
+  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
+			  [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc.  You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+  --bindir=DIR           user executables [EPREFIX/bin]
+  --sbindir=DIR          system admin executables [EPREFIX/sbin]
+  --libexecdir=DIR       program executables [EPREFIX/libexec]
+  --sysconfdir=DIR       read-only single-machine data [PREFIX/etc]
+  --sharedstatedir=DIR   modifiable architecture-independent data [PREFIX/com]
+  --localstatedir=DIR    modifiable single-machine data [PREFIX/var]
+  --libdir=DIR           object code libraries [EPREFIX/lib]
+  --includedir=DIR       C header files [PREFIX/include]
+  --oldincludedir=DIR    C header files for non-gcc [/usr/include]
+  --datarootdir=DIR      read-only arch.-independent data root [PREFIX/share]
+  --datadir=DIR          read-only architecture-independent data [DATAROOTDIR]
+  --infodir=DIR          info documentation [DATAROOTDIR/info]
+  --localedir=DIR        locale-dependent data [DATAROOTDIR/locale]
+  --mandir=DIR           man documentation [DATAROOTDIR/man]
+  --docdir=DIR           documentation root [DATAROOTDIR/doc/tora]
+  --htmldir=DIR          html documentation [DOCDIR]
+  --dvidir=DIR           dvi documentation [DOCDIR]
+  --pdfdir=DIR           pdf documentation [DOCDIR]
+  --psdir=DIR            ps documentation [DOCDIR]
+_ACEOF
+
+  cat <<\_ACEOF
+
+Program names:
+  --program-prefix=PREFIX            prepend PREFIX to installed program names
+  --program-suffix=SUFFIX            append SUFFIX to installed program names
+  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names
+
+X features:
+  --x-includes=DIR    X include files are in DIR
+  --x-libraries=DIR   X library files are in DIR
+
+System types:
+  --build=BUILD     configure for building on BUILD [guessed]
+  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+  case $ac_init_help in
+     short | recursive ) echo "Configuration of tora 1.3.22:";;
+   esac
+  cat <<\_ACEOF
+
+Optional Features:
+  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
+  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
+  --disable-dependency-tracking  speeds up one-time build
+  --enable-dependency-tracking   do not reject slow dependency extractors
+  --enable-plugin         enable support for plugins. (default no)
+  --enable-mono           build monolithic (default no)
+  --enable-shared[=PKGS]  build shared libraries [default=yes]
+  --enable-static[=PKGS]  build static libraries [default=yes]
+  --enable-fast-install[=PKGS]
+                          optimize for fast installation [default=yes]
+  --disable-libtool-lock  avoid locking (might break parallel builds)
+  --enable-libsuffix      /lib directory suffix (64,32,none)
+  --enable-embedded       link to Qt-embedded, don't use X
+  --enable-qtopia         link to Qt-embedded, link to the Qtopia Environment
+  --disable-path-check    don't try to find out, where to install
+  --disable-mt            link to non-threaded Qt (deprecated)
+  --enable-kernel-threads Enable the use of the LinuxThreads port on FreeBSD/i386 only.
+  --disable-threading     disables threading even if libpthread found
+
+Optional Packages:
+  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  --with-pic              try to use only PIC/non-PIC objects [default=use
+                          both]
+  --with-tags[=TAGS]      include additional configurations [automatic]
+  --with-kde              compile against kde (default yes)
+  --with-xinerama         enable support for Xinerama
+  --with-extra-includes=DIR
+                          adds non standard include paths
+  --with-extra-libs=DIR   adds non standard library paths
+  --with-x                use the X Window System
+  --with-qt-dir=DIR       where the root of Qt is installed
+  --with-qt-includes=DIR  where the Qt includes are.
+  --with-qt-include=DIR   same as above.
+  --with-qt-libraries=DIR where the Qt library is installed.
+  --with-oracle=DIR       enable support for Oracle (default ORACLE_HOME)
+  --with-oracle-includes=DIR
+                          set oracle include dir (default ORACLE_HOME/subdirs)
+  --with-oracle-libraries=DIR
+                          set oracle lib dir (default ORACLE_HOME/lib)
+  --with-oci-version=[8, 8I, 9I, 10G, 10G_R2]
+                          this is the version of the client, not the database.
+  --with-instant-client
+                          define if compiling against Oracle Instant Client.
+                          Disables testing for ORACLE_HOME and tnsnames.
+  --with-qscintilla-includes=DIR
+                          QScintilla header file location
+   --with-qscintilla-libraries
+                          QScintilla library dir
+  --with-pcre[=prefix]    compile xmlpcre part (via libpcre check)
+  --with-cppunit-prefix=PFX   Prefix where CppUnit is installed (optional)
+  --with-cppunit-exec-prefix=PFX  Exec prefix where CppUnit is installed (optional)
+
+Some influential environment variables:
+  CC          C compiler command
+  CFLAGS      C compiler flags
+  LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
+              nonstandard directory <lib dir>
+  LIBS        libraries to pass to the linker, e.g. -l<library>
+  CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+              you have headers in a nonstandard directory <include dir>
+  CXX         C++ compiler command
+  CXXFLAGS    C++ compiler flags
+  CPP         C preprocessor
+  CXXCPP      C++ preprocessor
+  F77         Fortran 77 compiler command
+  FFLAGS      Fortran 77 compiler flags
+  XMKMF       Path to xmkmf, Makefile generator for X Window System
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+Report bugs to <tora-develop at lists.sourceforge.net>.
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+  # If there are subdirs, report their specific --help.
+  for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+    test -d "$ac_dir" || continue
+    ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+    cd "$ac_dir" || { ac_status=$?; continue; }
+    # Check for guested configure.
+    if test -f "$ac_srcdir/configure.gnu"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+    elif test -f "$ac_srcdir/configure"; then
+      echo &&
+      $SHELL "$ac_srcdir/configure" --help=recursive
+    else
+      echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+    fi || ac_status=$?
+    cd "$ac_pwd" || { ac_status=$?; break; }
+  done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+  cat <<\_ACEOF
+tora configure 1.3.22
+generated by GNU Autoconf 2.61
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+  exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by tora $as_me 1.3.22, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
+
+  $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null     || echo unknown`
+
+/bin/arch              = `(/bin/arch) 2>/dev/null              || echo unknown`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null       || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo      = `(/usr/bin/hostinfo) 2>/dev/null      || echo unknown`
+/bin/machine           = `(/bin/machine) 2>/dev/null           || echo unknown`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null       || echo unknown`
+/bin/universe          = `(/bin/universe) 2>/dev/null          || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+  for ac_arg
+  do
+    case $ac_arg in
+    -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+    -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+    | -silent | --silent | --silen | --sile | --sil)
+      continue ;;
+    *\'*)
+      ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+    esac
+    case $ac_pass in
+    1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+    2)
+      ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+      if test $ac_must_keep_next = true; then
+	ac_must_keep_next=false # Got value, back to normal.
+      else
+	case $ac_arg in
+	  *=* | --config-cache | -C | -disable-* | --disable-* \
+	  | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+	  | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+	  | -with-* | --with-* | -without-* | --without-* | --x)
+	    case "$ac_configure_args0 " in
+	      "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+	    esac
+	    ;;
+	  -* ) ac_must_keep_next=true ;;
+	esac
+      fi
+      ac_configure_args="$ac_configure_args '$ac_arg'"
+      ;;
+    esac
+  done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log.  We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+  # Save into config.log some information that might help in debugging.
+  {
+    echo
+
+    cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+    echo
+    # The following way of writing the cache mishandles newlines in values,
+(
+  for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+  (set) 2>&1 |
+    case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      sed -n \
+	"s/'\''/'\''\\\\'\'''\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+      ;; #(
+    *)
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+)
+    echo
+
+    cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+    echo
+    for ac_var in $ac_subst_vars
+    do
+      eval ac_val=\$$ac_var
+      case $ac_val in
+      *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+      esac
+      echo "$ac_var='\''$ac_val'\''"
+    done | sort
+    echo
+
+    if test -n "$ac_subst_files"; then
+      cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+      echo
+      for ac_var in $ac_subst_files
+      do
+	eval ac_val=\$$ac_var
+	case $ac_val in
+	*\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+	esac
+	echo "$ac_var='\''$ac_val'\''"
+      done | sort
+      echo
+    fi
+
+    if test -s confdefs.h; then
+      cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+      echo
+      cat confdefs.h
+      echo
+    fi
+    test "$ac_signal" != 0 &&
+      echo "$as_me: caught signal $ac_signal"
+    echo "$as_me: exit $exit_status"
+  } >&5
+  rm -f core *.core core.conftest.* &&
+    rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+    exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+  trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -n "$CONFIG_SITE"; then
+  set x "$CONFIG_SITE"
+elif test "x$prefix" != xNONE; then
+  set x "$prefix/share/config.site" "$prefix/etc/config.site"
+else
+  set x "$ac_default_prefix/share/config.site" \
+	"$ac_default_prefix/etc/config.site"
+fi
+shift
+for ac_site_file
+do
+  if test -r "$ac_site_file"; then
+    { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+    sed 's/^/| /' "$ac_site_file" >&5
+    . "$ac_site_file"
+  fi
+done
+
+if test -r "$cache_file"; then
+  # Some versions of bash will fail to source /dev/null (special
+  # files actually), so we avoid doing that.
+  if test -f "$cache_file"; then
+    { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+    case $cache_file in
+      [\\/]* | ?:[\\/]* ) . "$cache_file";;
+      *)                      . "./$cache_file";;
+    esac
+  fi
+else
+  { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+  >$cache_file
+fi
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+  eval ac_old_set=\$ac_cv_env_${ac_var}_set
+  eval ac_new_set=\$ac_env_${ac_var}_set
+  eval ac_old_val=\$ac_cv_env_${ac_var}_value
+  eval ac_new_val=\$ac_env_${ac_var}_value
+  case $ac_old_set,$ac_new_set in
+    set,)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,set)
+      { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+      ac_cache_corrupted=: ;;
+    ,);;
+    *)
+      if test "x$ac_old_val" != "x$ac_new_val"; then
+	{ echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+	{ echo "$as_me:$LINENO:   former value:  $ac_old_val" >&5
+echo "$as_me:   former value:  $ac_old_val" >&2;}
+	{ echo "$as_me:$LINENO:   current value: $ac_new_val" >&5
+echo "$as_me:   current value: $ac_new_val" >&2;}
+	ac_cache_corrupted=:
+      fi;;
+  esac
+  # Pass precious variables to config.status.
+  if test "$ac_new_set" = set; then
+    case $ac_new_val in
+    *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+    *) ac_arg=$ac_var=$ac_new_val ;;
+    esac
+    case " $ac_configure_args " in
+      *" '$ac_arg' "*) ;; # Avoid dups.  Use of quotes ensures accuracy.
+      *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+    esac
+  fi
+done
+if $ac_cache_corrupted; then
+  { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+  { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ac_aux_dir=
+for ac_dir in config "$srcdir"/config; do
+  if test -f "$ac_dir/install-sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f "$ac_dir/install.sh"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
+  elif test -f "$ac_dir/shtool"; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/shtool install -c"
+    break
+  fi
+done
+if test -z "$ac_aux_dir"; then
+  { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in config \"$srcdir\"/config" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+ac_config_guess="$SHELL $ac_aux_dir/config.guess"  # Please don't use this var.
+ac_config_sub="$SHELL $ac_aux_dir/config.sub"  # Please don't use this var.
+ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
+
+
+# Every other copy of the package version number gets its value from here
+am__api_version="1.9"
+
+
+          test -n "$INSTALL" && kde_save_INSTALL_given=$INSTALL
+  test -n "$INSTALL_PROGRAM" && kde_save_INSTALL_PROGRAM_given=$INSTALL_PROGRAM
+  test -n "$INSTALL_SCRIPT" && kde_save_INSTALL_SCRIPT_given=$INSTALL_SCRIPT
+  # Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	    break 3
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+done
+IFS=$as_save_IFS
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+
+  if test -z "$kde_save_INSTALL_given" ; then
+    # OK, user hasn't given any INSTALL, autoconf found one for us
+    # now we test, if it supports the -p flag
+    { echo "$as_me:$LINENO: checking for -p flag to install" >&5
+echo $ECHO_N "checking for -p flag to install... $ECHO_C" >&6; }
+    rm -f confinst.$$.* > /dev/null 2>&1
+    echo "Testtest" > confinst.$$.orig
+    ac_res=no
+    if ${INSTALL} -p confinst.$$.orig confinst.$$.new > /dev/null 2>&1 ; then
+      if test -f confinst.$$.new ; then
+        # OK, -p seems to do no harm to install
+	INSTALL="${INSTALL} -p"
+	ac_res=yes
+      fi
+    fi
+    rm -f confinst.$$.*
+    { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+  fi
+
+  if test -z "$kde_save_INSTALL_PROGRAM_given" ; then
+    INSTALL_PROGRAM='${INSTALL} $(INSTALL_STRIP_FLAG)'
+  fi
+  if test -z "$kde_save_INSTALL_SCRIPT_given" ; then
+    INSTALL_SCRIPT='${INSTALL}'
+  fi
+
+{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments.  Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+   set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+   if test "$*" = "X"; then
+      # -L didn't work.
+      set X `ls -t $srcdir/configure conftest.file`
+   fi
+   rm -f conftest.file
+   if test "$*" != "X $srcdir/configure conftest.file" \
+      && test "$*" != "X conftest.file $srcdir/configure"; then
+
+      # If neither matched, then we have a broken ls.  This can happen
+      # if, for instance, CONFIG_SHELL is bash and it inherits a
+      # broken ls alias from the environment.  This has actually
+      # happened.  Such a system could not be considered "sane".
+      { { echo "$as_me:$LINENO: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail.  Make sure there is not a broken
+alias in your environment" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+
+   test "$2" = conftest.file
+   )
+then
+   # Ok.
+   :
+else
+   { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+test "$program_prefix" != NONE &&
+  program_transform_name="s&^&$program_prefix&;$program_transform_name"
+# Use a double $ so make ignores it.
+test "$program_suffix" != NONE &&
+  program_transform_name="s&\$&$program_suffix&;$program_transform_name"
+# Double any \ or $.  echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm -f conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+  am_missing_run="$MISSING --run "
+else
+  am_missing_run=
+  { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then
+  # We used to keeping the `.' as first argument, in order to
+  # allow $(mkdir_p) to be used without argument.  As in
+  #   $(mkdir_p) $(somedir)
+  # where $(somedir) is conditionally defined.  However this is wrong
+  # for two reasons:
+  #  1. if the package is installed by a user who cannot write `.'
+  #     make install will fail,
+  #  2. the above comment should most certainly read
+  #     $(mkdir_p) $(DESTDIR)$(somedir)
+  #     so it does not work when $(somedir) is undefined and
+  #     $(DESTDIR) is not.
+  #  To support the latter case, we have to write
+  #     test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir),
+  #  so the `.' trick is pointless.
+  mkdir_p='mkdir -p --'
+else
+  # On NextStep and OpenStep, the `mkdir' command does not
+  # recognize any option.  It will interpret all options as
+  # directories to create, and then abort because `.' already
+  # exists.
+  for d in ./-p ./--version;
+  do
+    test -d $d && rmdir $d
+  done
+  # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists.
+  if test -f "$ac_aux_dir/mkinstalldirs"; then
+    mkdir_p='$(mkinstalldirs)'
+  else
+    mkdir_p='$(install_sh) -d'
+  fi
+fi
+
+for ac_prog in gawk mawk nawk awk
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AWK"; then
+  ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AWK="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+  { echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$AWK" && break
+done
+
+{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
+set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.make <<\_ACEOF
+SHELL = /bin/sh
+all:
+	@echo '@@@%%%=$(MAKE)=@@@%%%'
+_ACEOF
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+case `${MAKE-make} -f conftest.make 2>/dev/null` in
+  *@@@%%%=?*=@@@%%%*)
+    eval ac_cv_prog_make_${ac_make}_set=yes;;
+  *)
+    eval ac_cv_prog_make_${ac_make}_set=no;;
+esac
+rm -f conftest.make
+fi
+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+  SET_MAKE=
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+  SET_MAKE="MAKE=${MAKE-make}"
+fi
+
+rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+  am__leading_dot=.
+else
+  am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+
+# test to see if srcdir already configured
+if test "`cd $srcdir && pwd`" != "`pwd`" &&
+   test -f $srcdir/config.status; then
+  { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+  if (cygpath --version) >/dev/null 2>/dev/null; then
+    CYGPATH_W='cygpath -w'
+  else
+    CYGPATH_W=echo
+  fi
+fi
+
+
+# Define the identity of the package.
+ PACKAGE='tora'
+ VERSION='1.3.22'
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE "$PACKAGE"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define VERSION "$VERSION"
+_ACEOF
+
+# Some tools Automake needs.
+
+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"}
+
+
+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"}
+
+
+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"}
+
+
+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"}
+
+
+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"}
+
+install_sh=${install_sh-"$am_aux_dir/install-sh"}
+
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'.  However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+if test "$cross_compiling" != no; then
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+fi
+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
+
+# We need awk for the "check" target.  The system "awk" is bad on
+# some platforms.
+# Always define AMTAR for backward compatibility.
+
+AMTAR=${AMTAR-"${am_missing_run}tar"}
+
+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'
+
+
+
+
+
+
+# create a config.h file (Automake will add -DHAVE_CONFIG_H)
+
+ac_config_headers="$ac_config_headers config.h"
+
+
+
+
+
+
+
+ISODATE=`date +%Y-%m-%d`
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+  { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+   { (exit 1); exit 1; }; }
+
+{ echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
+if test "${ac_cv_build+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_build_alias=$build_alias
+test "x$ac_build_alias" = x &&
+  ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+test "x$ac_build_alias" = x &&
+  { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+   { (exit 1); exit 1; }; }
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+  { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+echo "$as_me: error: invalid value of canonical build" >&2;}
+   { (exit 1); exit 1; }; };;
+esac
+build=$ac_cv_build
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_build
+shift
+build_cpu=$1
+build_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+build_os=$*
+IFS=$ac_save_IFS
+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac
+
+
+{ echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
+if test "${ac_cv_host+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "x$host_alias" = x; then
+  ac_cv_host=$ac_cv_build
+else
+  ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
+    { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+echo "$as_me: error: invalid value of canonical host" >&2;}
+   { (exit 1); exit 1; }; };;
+esac
+host=$ac_cv_host
+ac_save_IFS=$IFS; IFS='-'
+set x $ac_cv_host
+shift
+host_cpu=$1
+host_vendor=$2
+shift; shift
+# Remember, the first character of IFS is used to create $*,
+# except with old shells:
+host_os=$*
+IFS=$ac_save_IFS
+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
+
+
+
+# Checks for programs.
+# Find a good install program.  We prefer a C program (faster),
+# so one script is as good as another.  But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+  ./ | .// | /cC/* | \
+  /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+  ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+  /usr/ucb/* ) ;;
+  *)
+    # OSF1 and SCO ODT 3.0 have their own names for install.
+    # Don't use installbsd from OSF since it installs stuff as root
+    # by default.
+    for ac_prog in ginstall scoinst install; do
+      for ac_exec_ext in '' $ac_executable_extensions; do
+	if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+	  if test $ac_prog = install &&
+	    grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # AIX install.  It has an incompatible calling convention.
+	    :
+	  elif test $ac_prog = install &&
+	    grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+	    # program-specific install script used by HP pwplus--don't use.
+	    :
+	  else
+	    ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+	    break 3
+	  fi
+	fi
+      done
+    done
+    ;;
+esac
+done
+IFS=$as_save_IFS
+
+
+fi
+  if test "${ac_cv_path_install+set}" = set; then
+    INSTALL=$ac_cv_path_install
+  else
+    # As a last resort, use the slow shell script.  Don't cache a
+    # value for INSTALL within a source directory, because that will
+    # break other packages using the cache if that directory is
+    # removed, or if the value is a relative name.
+    INSTALL=$ac_install_sh
+  fi
+fi
+{ echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="gcc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+else
+  CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="${ac_tool_prefix}cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  fi
+fi
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+  ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
+fi
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+  if test -n "$ac_tool_prefix"; then
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+    test -n "$CC" && break
+  done
+fi
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CC="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CC=$ac_ct_CC
+  fi
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+#
+# List of possible output files, starting from the most likely.
+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
+# only as a last resort.  b.out is created by i960 compilers.
+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
+#
+# The IRIX 6 linker writes into existing files which may not be
+# executable, retaining their permissions.  Remove them first so a
+# subsequent execution test works.
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+	;;
+    [ab].out )
+	# We found the default executable, but exeext='' is most
+	# certainly right.
+	break;;
+    *.* )
+        if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+	then :; else
+	   ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	fi
+	# We set ac_cv_exeext here because the later test for it is not
+	# safe: cross compilers may not add the suffix if given an `-o'
+	# argument, so we may need to know it at that point already.
+	# Even if this section looks crufty: it has the advantage of
+	# actually working.
+	break;;
+    * )
+	break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+  ac_file=''
+fi
+
+{ echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6; }
+if test -z "$ac_file"; then
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+  if { ac_try='./$ac_file'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+	cross_compiling=yes
+    else
+	{ { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+  fi
+fi
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6; }
+
+{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+	  break;;
+    * ) break;;
+  esac
+done
+else
+  { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+if test "${ac_cv_objext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CFLAGS=""
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_c_werror_flag=$ac_save_c_werror_flag
+	 CFLAGS="-g"
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
+else
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
+fi
+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh.  */
+struct buf { int x; };
+FILE * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+     char **p;
+     int i;
+{
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+	-Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cc_c89=$ac_arg
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+
+fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6; } ;;
+  xno)
+    { echo "$as_me:$LINENO: result: unsupported" >&5
+echo "${ECHO_T}unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+	@echo done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+   am__include=include
+   am__quote=
+   _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+   echo '.include "confinc"' > confmf
+   if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+      am__include=.include
+      am__quote="\""
+      _am_result=BSD
+   fi
+fi
+
+
+{ echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then
+  enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+  am_depcomp="$ac_aux_dir/depcomp"
+  AMDEPBACKSLASH='\'
+fi
+
+
+if test "x$enable_dependency_tracking" != xno; then
+  AMDEP_TRUE=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+
+
+depcc="$CC"   am_compiler_list=
+
+{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CC_dependencies_compiler_type=none
+fi
+
+fi
+{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
+else
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
+fi
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+  if test -n "$CCC"; then
+    CXX=$CCC
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$CXX"; then
+  ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+  { echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+    test -n "$CXX" && break
+  done
+fi
+if test -z "$CXX"; then
+  ac_ct_CXX=$CXX
+  for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_CXX"; then
+  ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_CXX="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$ac_ct_CXX" && break
+done
+
+  if test "x$ac_ct_CXX" = x; then
+    CXX="g++"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    CXX=$ac_ct_CXX
+  fi
+fi
+
+  fi
+fi
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+   ac_cxx_werror_flag=yes
+   ac_cv_prog_cxx_g=no
+   CXXFLAGS="-g"
+   cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	CXXFLAGS=""
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+	 CXXFLAGS="-g"
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_cxx_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+  CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+  if test "$GXX" = yes; then
+    CXXFLAGS="-g -O2"
+  else
+    CXXFLAGS="-g"
+  fi
+else
+  if test "$GXX" = yes; then
+    CXXFLAGS="-O2"
+  else
+    CXXFLAGS=
+  fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+depcc="$CXX"  am_compiler_list=
+
+{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+  # We make a subdir and do the tests there.  Otherwise we can end up
+  # making bogus files that we don't know about and never remove.  For
+  # instance it was reported that on HP-UX the gcc test will end up
+  # making a dummy file named `D' -- because `-MD' means `put the output
+  # in D'.
+  mkdir conftest.dir
+  # Copy depcomp to subdir because otherwise we won't find it if we're
+  # using a relative directory.
+  cp "$am_depcomp" conftest.dir
+  cd conftest.dir
+  # We will build objects and dependencies in a subdirectory because
+  # it helps to detect inapplicable dependency modes.  For instance
+  # both Tru64's cc and ICC support -MD to output dependencies as a
+  # side effect of compilation, but ICC will put the dependencies in
+  # the current directory while Tru64 will put them in the object
+  # directory.
+  mkdir sub
+
+  am_cv_CXX_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  fi
+  for depmode in $am_compiler_list; do
+    # Setup a source with many dependencies, because some compilers
+    # like to wrap large dependency lists on column 80 (with \), and
+    # we should not choose a depcomp mode which is confused by this.
+    #
+    # We need to recreate these files for each test, as the compiler may
+    # overwrite some of them when testing with obscure command lines.
+    # This happens at least with the AIX C compiler.
+    : > sub/conftest.c
+    for i in 1 2 3 4 5 6; do
+      echo '#include "conftst'$i'.h"' >> sub/conftest.c
+      # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with
+      # Solaris 8's {/usr,}/bin/sh.
+      touch sub/conftst$i.h
+    done
+    echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+    case $depmode in
+    nosideeffect)
+      # after this tag, mechanisms are not by side-effect, so they'll
+      # only be used when explicitly requested
+      if test "x$enable_dependency_tracking" = xyes; then
+	continue
+      else
+	break
+      fi
+      ;;
+    none) break ;;
+    esac
+    # We check with `-c' and `-o' for the sake of the "dashmstdout"
+    # mode.  It turns out that the SunPro C++ compiler does not properly
+    # handle `-M -o', and we need to detect this.
+    if depmode=$depmode \
+       source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+       depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+       $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \
+         >/dev/null 2>conftest.err &&
+       grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+       grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 &&
+       ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+      # icc doesn't choke on unknown options, it will just issue warnings
+      # or remarks (even with -Werror).  So we grep stderr for any message
+      # that says an option was ignored or not supported.
+      # When given -MP, icc 7.0 and 7.1 complain thusly:
+      #   icc: Command line warning: ignoring option '-M'; no argument required
+      # The diagnosis changed in icc 8.0:
+      #   icc: Command line remark: option '-MP' not supported
+      if (grep 'ignoring option' conftest.err ||
+          grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+        am_cv_CXX_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
+  done
+
+  cd ..
+  rm -rf conftest.dir
+else
+  am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+
+
+if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+  am__fastdepCXX_TRUE=
+  am__fastdepCXX_FALSE='#'
+else
+  am__fastdepCXX_TRUE='#'
+  am__fastdepCXX_FALSE=
+fi
+
+
+# Extract the first word of "makeinfo", so it can be a program name with args.
+set dummy makeinfo; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_MAKEINFO+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$MAKEINFO"; then
+  ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_MAKEINFO="makeinfo"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_prog_MAKEINFO" && ac_cv_prog_MAKEINFO="no"
+fi
+fi
+MAKEINFO=$ac_cv_prog_MAKEINFO
+if test -n "$MAKEINFO"; then
+  { echo "$as_me:$LINENO: result: $MAKEINFO" >&5
+echo "${ECHO_T}$MAKEINFO" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+if test "${MAKEINFO}" = no; then
+   { { echo "$as_me:$LINENO: error: makeinfo not found" >&5
+echo "$as_me: error: makeinfo not found" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+# Checks for header files.
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+  CPP=
+fi
+if test -z "$CPP"; then
+  if test "${ac_cv_prog_CPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CPP needs to be expanded
+    for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CPP=$CPP
+
+fi
+  CPP=$ac_cv_prog_CPP
+else
+  ac_cv_prog_CPP=$CPP
+fi
+{ echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Extract the first word of "grep ggrep" to use in msg output
+if test -z "$GREP"; then
+set dummy grep ggrep; ac_prog_name=$2
+if test "${ac_cv_path_GREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_path_GREP_found=false
+# Loop through the user's path and test for each of PROGNAME-LIST
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in grep ggrep; do
+  for ac_exec_ext in '' $ac_executable_extensions; do
+    ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+    { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+    # Check for GNU ac_path_GREP and select it if it is found.
+  # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+
+    $ac_path_GREP_found && break 3
+  done
+done
+
+done
+IFS=$as_save_IFS
+
+
+fi
+
+GREP="$ac_cv_path_GREP"
+if test -z "$GREP"; then
+  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+else
+  ac_cv_path_GREP=$GREP
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     # Extract the first word of "egrep" to use in msg output
+if test -z "$EGREP"; then
+set dummy egrep; ac_prog_name=$2
+if test "${ac_cv_path_EGREP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_path_EGREP_found=false
+# Loop through the user's path and test for each of PROGNAME-LIST
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_prog in egrep; do
+  for ac_exec_ext in '' $ac_executable_extensions; do
+    ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+    { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+    # Check for GNU ac_path_EGREP and select it if it is found.
+  # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    ac_count=`expr $ac_count + 1`
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
+  done
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+
+    $ac_path_EGREP_found && break 3
+  done
+done
+
+done
+IFS=$as_save_IFS
+
+
+fi
+
+EGREP="$ac_cv_path_EGREP"
+if test -z "$EGREP"; then
+  { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+else
+  ac_cv_path_EGREP=$EGREP
+fi
+
+
+   fi
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_header_stdc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then
+  :
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then
+  :
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+		   (('a' <= (c) && (c) <= 'i') \
+		     || ('j' <= (c) && (c) <= 'r') \
+		     || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+	|| toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  :
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+		  inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+for ac_header in unistd.h sys/param.h sys/time.h time.h sys/mkdev.h sys/sysmacros.h string.h memory.h fcntl.h dirent.h sys/ndir.h ndir.h alloca.h locale.h utime.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------------------------- ##
+## Report this to tora-develop at lists.sourceforge.net ##
+## ------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ echo "$as_me:$LINENO: checking whether sys/types.h defines makedev" >&5
+echo $ECHO_N "checking whether sys/types.h defines makedev... $ECHO_C" >&6; }
+if test "${ac_cv_header_sys_types_h_makedev+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+int
+main ()
+{
+return makedev(0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_header_sys_types_h_makedev=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_header_sys_types_h_makedev=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_types_h_makedev" >&5
+echo "${ECHO_T}$ac_cv_header_sys_types_h_makedev" >&6; }
+
+if test $ac_cv_header_sys_types_h_makedev = no; then
+if test "${ac_cv_header_sys_mkdev_h+set}" = set; then
+  { echo "$as_me:$LINENO: checking for sys/mkdev.h" >&5
+echo $ECHO_N "checking for sys/mkdev.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_sys_mkdev_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_mkdev_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_mkdev_h" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking sys/mkdev.h usability" >&5
+echo $ECHO_N "checking sys/mkdev.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <sys/mkdev.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking sys/mkdev.h presence" >&5
+echo $ECHO_N "checking sys/mkdev.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/mkdev.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: sys/mkdev.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: sys/mkdev.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: sys/mkdev.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: sys/mkdev.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: sys/mkdev.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: sys/mkdev.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: sys/mkdev.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/mkdev.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: sys/mkdev.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------------------------- ##
+## Report this to tora-develop at lists.sourceforge.net ##
+## ------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for sys/mkdev.h" >&5
+echo $ECHO_N "checking for sys/mkdev.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_sys_mkdev_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_sys_mkdev_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_mkdev_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_mkdev_h" >&6; }
+
+fi
+if test $ac_cv_header_sys_mkdev_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define MAJOR_IN_MKDEV 1
+_ACEOF
+
+fi
+
+
+
+  if test $ac_cv_header_sys_mkdev_h = no; then
+    if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then
+  { echo "$as_me:$LINENO: checking for sys/sysmacros.h" >&5
+echo $ECHO_N "checking for sys/sysmacros.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_sysmacros_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_sysmacros_h" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking sys/sysmacros.h usability" >&5
+echo $ECHO_N "checking sys/sysmacros.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <sys/sysmacros.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking sys/sysmacros.h presence" >&5
+echo $ECHO_N "checking sys/sysmacros.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/sysmacros.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: sys/sysmacros.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: sys/sysmacros.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: sys/sysmacros.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: sys/sysmacros.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------------------------- ##
+## Report this to tora-develop at lists.sourceforge.net ##
+## ------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for sys/sysmacros.h" >&5
+echo $ECHO_N "checking for sys/sysmacros.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_sys_sysmacros_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_sys_sysmacros_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_sys_sysmacros_h" >&5
+echo "${ECHO_T}$ac_cv_header_sys_sysmacros_h" >&6; }
+
+fi
+if test $ac_cv_header_sys_sysmacros_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define MAJOR_IN_SYSMACROS 1
+_ACEOF
+
+fi
+
+
+  fi
+fi
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments.  Useless!
+{ echo "$as_me:$LINENO: checking for working alloca.h" >&5
+echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; }
+if test "${ac_cv_working_alloca_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+			  if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_working_alloca_h=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_working_alloca_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA_H 1
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for alloca" >&5
+echo $ECHO_N "checking for alloca... $ECHO_C" >&6; }
+if test "${ac_cv_func_alloca_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef _MSC_VER
+#  include <malloc.h>
+#  define alloca _alloca
+# else
+#  ifdef HAVE_ALLOCA_H
+#   include <alloca.h>
+#  else
+#   ifdef _AIX
+ #pragma alloca
+#   else
+#    ifndef alloca /* predefined by HP cc +Olibcalls */
+char *alloca ();
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+				    if (p) return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_alloca_works=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_alloca_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+else
+  # The SVR3 libPW and SVR4 libucb both contain incompatible functions
+# that cause trouble.  Some versions do not even contain alloca or
+# contain a buggy version.  If you still want to use their alloca,
+# use ar to extract alloca.o from them instead of compiling alloca.c.
+
+ALLOCA=\${LIBOBJDIR}alloca.$ac_objext
+
+cat >>confdefs.h <<\_ACEOF
+#define C_ALLOCA 1
+_ACEOF
+
+
+{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; }
+if test "${ac_cv_os_cray+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if defined CRAY && ! defined CRAY2
+webecray
+#else
+wenotbecray
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "webecray" >/dev/null 2>&1; then
+  ac_cv_os_cray=yes
+else
+  ac_cv_os_cray=no
+fi
+rm -f conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+echo "${ECHO_T}$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+  for ac_func in _getb67 GETB67 getb67; do
+    as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+    break
+fi
+
+  done
+fi
+
+{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; }
+if test "${ac_cv_c_stack_direction+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_c_stack_direction=0
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+find_stack_direction ()
+{
+  static char *addr = 0;
+  auto char dummy;
+  if (addr == 0)
+    {
+      addr = &dummy;
+      return find_stack_direction ();
+    }
+  else
+    return (&dummy > addr) ? 1 : -1;
+}
+
+int
+main ()
+{
+  return find_stack_direction () < 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_c_stack_direction=1
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+
+for ac_header in stdlib.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------------------------- ##
+## Report this to tora-develop at lists.sourceforge.net ##
+## ------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
+echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6; }
+if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_func_malloc_0_nonnull=no
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#if defined STDC_HEADERS || defined HAVE_STDLIB_H
+# include <stdlib.h>
+#else
+char *malloc ();
+#endif
+
+int
+main ()
+{
+return ! malloc (0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_malloc_0_nonnull=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_malloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
+echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MALLOC 1
+_ACEOF
+
+else
+  cat >>confdefs.h <<\_ACEOF
+#define HAVE_MALLOC 0
+_ACEOF
+
+   case " $LIBOBJS " in
+  *" malloc.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS malloc.$ac_objext"
+ ;;
+esac
+
+
+cat >>confdefs.h <<\_ACEOF
+#define malloc rpl_malloc
+_ACEOF
+
+fi
+
+
+
+
+
+
+for ac_func in snprintf vsnprintf setenv
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+{ echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5
+echo $ECHO_N "checking for stdbool.h that conforms to C99... $ECHO_C" >&6; }
+if test "${ac_cv_header_stdbool_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdbool.h>
+#ifndef bool
+ "error: bool is not defined"
+#endif
+#ifndef false
+ "error: false is not defined"
+#endif
+#if false
+ "error: false is not 0"
+#endif
+#ifndef true
+ "error: true is not defined"
+#endif
+#if true != 1
+ "error: true is not 1"
+#endif
+#ifndef __bool_true_false_are_defined
+ "error: __bool_true_false_are_defined is not defined"
+#endif
+
+	struct s { _Bool s: 1; _Bool t; } s;
+
+	char a[true == 1 ? 1 : -1];
+	char b[false == 0 ? 1 : -1];
+	char c[__bool_true_false_are_defined == 1 ? 1 : -1];
+	char d[(bool) 0.5 == true ? 1 : -1];
+	bool e = &s;
+	char f[(_Bool) 0.0 == false ? 1 : -1];
+	char g[true];
+	char h[sizeof (_Bool)];
+	char i[sizeof s.t];
+	enum { j = false, k = true, l = false * true, m = true * 256 };
+	_Bool n[m];
+	char o[sizeof n == m * sizeof n[0] ? 1 : -1];
+	char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
+#	if defined __xlc__ || defined __GNUC__
+	 /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+	    reported by James Lemley on 2005-10-05; see
+	    http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+	    This test is not quite right, since xlc is allowed to
+	    reject this program, as the initializer for xlcbug is
+	    not one of the forms that C requires support for.
+	    However, doing the test right would require a runtime
+	    test, and that would make cross-compilation harder.
+	    Let us hope that IBM fixes the xlc bug, and also adds
+	    support for this kind of constant expression.  In the
+	    meantime, this test will reject xlc, which is OK, since
+	    our stdbool.h substitute should suffice.  We also test
+	    this with GCC, where it should work, to detect more
+	    quickly whether someone messes up the test in the
+	    future.  */
+	 char digs[] = "0123456789";
+	 int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+#	endif
+	/* Catch a bug in an HP-UX C compiler.  See
+	   http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+	   http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+	 */
+	_Bool q = true;
+	_Bool *pq = &q;
+
+int
+main ()
+{
+
+	*pq |= q;
+	*pq |= ! q;
+	/* Refer to every declared value, to avoid compiler optimizations.  */
+	return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
+		+ !m + !n + !o + !p + !q + !pq);
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_header_stdbool_h=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_header_stdbool_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5
+echo "${ECHO_T}$ac_cv_header_stdbool_h" >&6; }
+{ echo "$as_me:$LINENO: checking for _Bool" >&5
+echo $ECHO_N "checking for _Bool... $ECHO_C" >&6; }
+if test "${ac_cv_type__Bool+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+typedef _Bool ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type__Bool=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type__Bool=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5
+echo "${ECHO_T}$ac_cv_type__Bool" >&6; }
+if test $ac_cv_type__Bool = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+if test $ac_cv_header_stdbool_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STDBOOL_H 1
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking whether struct tm is in sys/time.h or time.h" >&5
+echo $ECHO_N "checking whether struct tm is in sys/time.h or time.h... $ECHO_C" >&6; }
+if test "${ac_cv_struct_tm+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <time.h>
+
+int
+main ()
+{
+struct tm tm;
+				     int *p = &tm.tm_sec;
+ 				     return !p;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_struct_tm=time.h
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_struct_tm=sys/time.h
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_struct_tm" >&5
+echo "${ECHO_T}$ac_cv_struct_tm" >&6; }
+if test $ac_cv_struct_tm = sys/time.h; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TM_IN_SYS_TIME 1
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5
+echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6; }
+if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static struct stat ac_aggr;
+if (ac_aggr.st_blocks)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_member_struct_stat_st_blocks=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+static struct stat ac_aggr;
+if (sizeof ac_aggr.st_blocks)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_member_struct_stat_st_blocks=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_member_struct_stat_st_blocks=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5
+echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6; }
+if test $ac_cv_member_struct_stat_st_blocks = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ST_BLOCKS 1
+_ACEOF
+
+else
+  case " $LIBOBJS " in
+  *" fileblocks.$ac_objext "* ) ;;
+  *) LIBOBJS="$LIBOBJS fileblocks.$ac_objext"
+ ;;
+esac
+
+fi
+
+
+
+
+
+
+
+ac_header_dirent=no
+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
+  as_ac_Header=`echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_hdr that defines DIR" >&5
+echo $ECHO_N "checking for $ac_hdr that defines DIR... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <sys/types.h>
+#include <$ac_hdr>
+
+int
+main ()
+{
+if ((DIR *) 0)
+return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  eval "$as_ac_Header=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+_ACEOF
+
+ac_header_dirent=$ac_hdr; break
+fi
+
+done
+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
+if test $ac_header_dirent = dirent.h; then
+  { echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
+if test "${ac_cv_search_opendir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char opendir ();
+int
+main ()
+{
+return opendir ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' dir; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_search_opendir=$ac_res
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+  if test "${ac_cv_search_opendir+set}" = set; then
+  break
+fi
+done
+if test "${ac_cv_search_opendir+set}" = set; then
+  :
+else
+  ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+else
+  { echo "$as_me:$LINENO: checking for library containing opendir" >&5
+echo $ECHO_N "checking for library containing opendir... $ECHO_C" >&6; }
+if test "${ac_cv_search_opendir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char opendir ();
+int
+main ()
+{
+return opendir ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' x; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_search_opendir=$ac_res
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext
+  if test "${ac_cv_search_opendir+set}" = set; then
+  break
+fi
+done
+if test "${ac_cv_search_opendir+set}" = set; then
+  :
+else
+  ac_cv_search_opendir=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_search_opendir" >&5
+echo "${ECHO_T}$ac_cv_search_opendir" >&6; }
+ac_res=$ac_cv_search_opendir
+if test "$ac_res" != no; then
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+fi
+
+fi
+
+{ echo "$as_me:$LINENO: checking whether closedir returns void" >&5
+echo $ECHO_N "checking whether closedir returns void... $ECHO_C" >&6; }
+if test "${ac_cv_func_closedir_void+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  ac_cv_func_closedir_void=yes
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header_dirent>
+#ifndef __cplusplus
+int closedir ();
+#endif
+
+int
+main ()
+{
+return closedir (opendir (".")) != 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_func_closedir_void=no
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_closedir_void=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_closedir_void" >&5
+echo "${ECHO_T}$ac_cv_func_closedir_void" >&6; }
+if test $ac_cv_func_closedir_void = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define CLOSEDIR_VOID 1
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_size_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+typedef size_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_size_t=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_size_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
+if test $ac_cv_type_size_t = yes; then
+  :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+
+# for NLS support. Call them in this order!
+# WITH_NLS is for the po files
+# AM_KDE_WITH_NLS
+
+
+  { echo "$as_me:$LINENO: checking enable plugin support" >&5
+echo $ECHO_N "checking enable plugin support... $ECHO_C" >&6; }
+  # Check whether --enable-plugin was given.
+if test "${enable_plugin+set}" = set; then
+  enableval=$enable_plugin;  enable_plugin=yes
+else
+   enable_plugin=no
+fi
+
+
+  { echo "$as_me:$LINENO: result: $enable_plugin" >&5
+echo "${ECHO_T}$enable_plugin" >&6; }
+
+
+  { echo "$as_me:$LINENO: checking if monolithic build" >&5
+echo $ECHO_N "checking if monolithic build... $ECHO_C" >&6; }
+  # Check whether --enable-mono was given.
+if test "${enable_mono+set}" = set; then
+  enableval=$enable_mono;  enable_mono=yes
+else
+   enable_mono=yes
+fi
+
+
+  if test $enable_mono = no; then
+    enable_plugin=no
+  fi
+
+  if test $enable_plugin != yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TOMONOLITHIC 1
+_ACEOF
+
+  fi
+
+  { echo "$as_me:$LINENO: result: $enable_mono" >&5
+echo "${ECHO_T}$enable_mono" >&6; }
+
+
+  { echo "$as_me:$LINENO: checking whether to link plugins into binary" >&5
+echo $ECHO_N "checking whether to link plugins into binary... $ECHO_C" >&6; }
+
+  if test $enable_plugin = no && test $enable_mono = no; then
+    { echo "$as_me:$LINENO: result: need link" >&5
+echo "${ECHO_T}need link" >&6; }
+    TORA_LINK_OTHERS=lib_LTLIBRARIES
+
+  else
+    { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+    TORA_LINK_OTHERS=none
+
+  fi
+
+# Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_shared=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+# Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_static=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=yes
+fi
+
+
+# Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+	IFS="$lt_save_ifs"
+	if test "X$pkg" = "X$p"; then
+	  enable_fast_install=yes
+	fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; }
+if test "${lt_cv_path_SED+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # Loop through the user's path and test for sed and gsed.
+# Then use that list of sed's as ones to test for truncation.
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for lt_ac_prog in sed gsed; do
+    for ac_exec_ext in '' $ac_executable_extensions; do
+      if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+        lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
+      fi
+    done
+  done
+done
+lt_ac_max=0
+lt_ac_count=0
+# Add /usr/xpg4/bin/sed as it is typically found on Solaris
+# along with /bin/sed that truncates output.
+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
+  test ! -f $lt_ac_sed && continue
+  cat /dev/null > conftest.in
+  lt_ac_count=0
+  echo $ECHO_N "0123456789$ECHO_C" >conftest.in
+  # Check for GNU sed and select it if it is found.
+  if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then
+    lt_cv_path_SED=$lt_ac_sed
+    break
+  fi
+  while true; do
+    cat conftest.in conftest.in >conftest.tmp
+    mv conftest.tmp conftest.in
+    cp conftest.in conftest.nl
+    echo >>conftest.nl
+    $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break
+    cmp -s conftest.out conftest.nl || break
+    # 10000 chars as input seems more than enough
+    test $lt_ac_count -gt 10 && break
+    lt_ac_count=`expr $lt_ac_count + 1`
+    if test $lt_ac_count -gt $lt_ac_max; then
+      lt_ac_max=$lt_ac_count
+      lt_cv_path_SED=$lt_ac_sed
+    fi
+  done
+done
+
+fi
+
+SED=$lt_cv_path_SED
+{ echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6; }
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+else
+  { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_ld_reload_flag='-r'
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
+
+{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
+if test "${lt_cv_path_NM+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
+	  break
+	  ;;
+	*)
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
+	  ;;
+	esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6; }
+NM="$lt_cv_path_NM"
+
+{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6; }
+fi
+
+{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+
+case $host_os in
+aix4* | aix5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
+
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
+
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump'.
+  lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
+
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+freebsd* | kfreebsd*-gnu | dragonfly*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
+
+gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
+    ;;
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
+    ;;
+  *)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+interix3*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+netbsd*)
+  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
+
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
+
+nto-qnx*)
+  lt_cv_deplibs_check_method=unknown
+  ;;
+
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
+
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
+esac
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
+
+
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+# Some flags need to be propagated to the compiler or linker for good
+# libtool support.
+case $host in
+ia64-*-hpux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *ELF-32*)
+      HPUX_IA64_MODE="32"
+      ;;
+    *ELF-64*)
+      HPUX_IA64_MODE="64"
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+*-*-irix6*)
+  # Find out which ABI we are using.
+  echo '#line 7542 "configure"' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+   if test "$lt_cv_prog_gnu_ld" = yes; then
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -melf32bsmip"
+      ;;
+    *N32*)
+      LD="${LD-ld} -melf32bmipn32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -melf64bmip"
+      ;;
+    esac
+   else
+    case `/usr/bin/file conftest.$ac_objext` in
+    *32-bit*)
+      LD="${LD-ld} -32"
+      ;;
+    *N32*)
+      LD="${LD-ld} -n32"
+      ;;
+    *64-bit*)
+      LD="${LD-ld} -64"
+      ;;
+    esac
+   fi
+  fi
+  rm -rf conftest*
+  ;;
+
+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.o` in
+    *32-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_i386"
+          ;;
+        ppc64-*linux*|powerpc64-*linux*)
+          LD="${LD-ld} -m elf32ppclinux"
+          ;;
+        s390x-*linux*)
+          LD="${LD-ld} -m elf_s390"
+          ;;
+        sparc64-*linux*)
+          LD="${LD-ld} -m elf32_sparc"
+          ;;
+      esac
+      ;;
+    *64-bit*)
+      case $host in
+        x86_64-*linux*)
+          LD="${LD-ld} -m elf_x86_64"
+          ;;
+        ppc*-*linux*|powerpc*-*linux*)
+          LD="${LD-ld} -m elf64ppc"
+          ;;
+        s390*-*linux*)
+          LD="${LD-ld} -m elf64_s390"
+          ;;
+        sparc*-*linux*)
+          LD="${LD-ld} -m elf64_sparc"
+          ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+*-*-sco3.2v5*)
+  # On SCO OpenServer 5, we need -belf to get full-featured binaries.
+  SAVE_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -belf"
+  { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+     cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  lt_cv_cc_needs_belf=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	lt_cv_cc_needs_belf=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+     ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6; }
+  if test x"$lt_cv_cc_needs_belf" != x"yes"; then
+    # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
+    CFLAGS="$SAVE_CFLAGS"
+  fi
+  ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)    LD="${LD-ld} -64" ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------------------------- ##
+## Report this to tora-develop at lists.sourceforge.net ##
+## ------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+    (test "X$CXX" != "Xg++"))) ; then
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; }
+if test -z "$CXXCPP"; then
+  if test "${ac_cv_prog_CXXCPP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+      # Double quotes because CXXCPP needs to be expanded
+    for CXXCPP in "$CXX -E" "/lib/cpp"
+    do
+      ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  break
+fi
+
+    done
+    ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+  CXXCPP=$ac_cv_prog_CXXCPP
+else
+  ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_preproc_warn_flag in '' yes
+do
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> exists even on freestanding compilers.
+  # On the NeXT, cc -E runs the code through the compiler's parser,
+  # not just through cpp. "Syntax error" is here to catch this case.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  # OK, works on sane cases.  Now check whether nonexistent headers
+  # can be detected and how.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # Broken: success on invalid input.
+continue
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+  :
+else
+  { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$F77"; then
+  ac_cv_prog_F77="$F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_F77="$ac_tool_prefix$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+  { echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+    test -n "$F77" && break
+  done
+fi
+if test -z "$F77"; then
+  ac_ct_F77=$F77
+  for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_F77"; then
+  ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_F77="$ac_prog"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  test -n "$ac_ct_F77" && break
+done
+
+  if test "x$ac_ct_F77" = x; then
+    F77=""
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    F77=$ac_ct_F77
+  fi
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler --version >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -v >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compiler -V >&5") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file.  (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; }
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+      program main
+#ifndef __GNUC__
+       choke me
+#endif
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_compiler_gnu=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_f77_g+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_prog_f77_g=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_prog_f77_g=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+  FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-g -O2"
+  else
+    FFLAGS="-g"
+  fi
+else
+  if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+    FFLAGS="-O2"
+  else
+    FFLAGS=
+  fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+    i=0
+  teststring="ABCD"
+
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
+
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
+
+  cygwin* | mingw*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
+
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
+  osf*)
+    # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+    # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
+    fi
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ 	]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    # If test is not a shell built-in, we'll probably end up computing a
+    # maximum length that is only half of the actual maximum length, but
+    # we can't tell.
+    SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+    while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+	       = "XX$teststring") >/dev/null 2>&1 &&
+	    new_result=`expr "X$teststring" : ".*" 2>&1` &&
+	    lt_cv_sys_max_cmd_len=$new_result &&
+	    test $i != 17 # 1/2 MB should be enough
+    do
+      i=`expr $i + 1`
+      teststring=$teststring$teststring
+    done
+    teststring=
+    # Add a significant safety factor because C++ compilers can tack on massive
+    # amounts of additional arguments before passing them to the linker.
+    # It appears as though 1/2 is a usable value.
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    ;;
+  esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6; }
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'"
+
+# Transform an extracted symbol line into symbol name and symbol address
+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw* | pw32*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDEGRST]'
+  fi
+  lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+  lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  ;;
+linux*)
+  if test "$host_cpu" = ia64; then
+    symcode='[ABCDGIRSTW]'
+    lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+    lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/  {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/  {\"\2\", (lt_ptr) \&\2},/p'"
+  fi
+  ;;
+irix* | nonstopux*)
+  symcode='[BCDEGRST]'
+  ;;
+osf*)
+  symcode='[BCDEGQRST]'
+  ;;
+solaris*)
+  symcode='[BDRT]'
+  ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# Handle CRLF in mingw tool chain
+opt_cr=
+case $build_os in
+mingw*)
+  opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+  symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol.
+  symxfrm="\\1 $ac_symprfx\\2 \\2"
+
+  # Write the raw and C identifiers.
+  lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode$symcode*\)[ 	][ 	]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+
+  rm -f conftest*
+  cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5
+  (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s "$nlist"; then
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if grep ' nm_test_var$' "$nlist" >/dev/null; then
+	if grep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+	  cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+	  $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/  {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+	  cat <<\EOF >> conftest.$ac_ext
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$ac_objext conftstm.$ac_objext
+	  lt_save_LIBS="$LIBS"
+	  lt_save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$ac_objext"
+	  CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+	  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext}; then
+	    pipe_works=yes
+	  fi
+	  LIBS="$lt_save_LIBS"
+	  CFLAGS="$lt_save_CFLAGS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+  fi
+  rm -f conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    lt_cv_sys_global_symbol_pipe=
+  fi
+done
+
+fi
+
+if test -z "$lt_cv_sys_global_symbol_pipe"; then
+  lt_cv_sys_global_symbol_to_cdecl=
+fi
+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
+  { echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6; }
+else
+  { echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6; }
+fi
+
+{ echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6; }
+if test "${lt_cv_objdir+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  lt_cv_objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  lt_cv_objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+case $host_os in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e 1s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_AR="${ac_tool_prefix}ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+  ac_ct_AR=$AR
+  # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_AR="ar"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    AR=$ac_ct_AR
+  fi
+else
+  AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_RANLIB="ranlib"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    RANLIB=$ac_ct_RANLIB
+  fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_STRIP="${ac_tool_prefix}strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_prog_ac_ct_STRIP="strip"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet.  If you think this
+configuration is useful to you, please write to autoconf at gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+    STRIP=$ac_ct_STRIP
+  fi
+else
+  STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+fi
+
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+  if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+    { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/${ac_tool_prefix}file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+  if test -n "$ac_tool_prefix"; then
+    { echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $MAGIC_CMD in
+[\\/*] |  ?:[\\/]*)
+  lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path.
+  ;;
+*)
+  lt_save_MAGIC_CMD="$MAGIC_CMD"
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  ac_dummy="/usr/bin$PATH_SEPARATOR$PATH"
+  for ac_dir in $ac_dummy; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/file; then
+      lt_cv_path_MAGIC_CMD="$ac_dir/file"
+      if test -n "$file_magic_test_file"; then
+	case $deplibs_check_method in
+	"file_magic "*)
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
+	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+	    $EGREP "$file_magic_regex" > /dev/null; then
+	    :
+	  else
+	    cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+	  fi ;;
+	esac
+      fi
+      break
+    fi
+  done
+  IFS="$lt_save_ifs"
+  MAGIC_CMD="$lt_save_MAGIC_CMD"
+  ;;
+esac
+fi
+
+MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
+if test -n "$MAGIC_CMD"; then
+  { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+  else
+    MAGIC_CMD=:
+  fi
+fi
+
+  fi
+  ;;
+esac
+
+enable_dlopen=yes
+enable_win32_dll=no
+
+# Check whether --enable-libtool-lock was given.
+if test "${enable_libtool_lock+set}" = set; then
+  enableval=$enable_libtool_lock;
+fi
+
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then
+  withval=$with_pic; pic_mode="$withval"
+else
+  pic_mode=default
+fi
+
+test -z "$pic_mode" && pic_mode=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+lt_save_CC="$CC"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+# Source file extension for C test sources.
+ac_ext=c
+
+# Object file extension for compiled C test sources.
+objext=o
+objext=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9327: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:9331: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl=
+lt_prog_compiler_pic=
+lt_prog_compiler_static=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl='-Wl,'
+    lt_prog_compiler_static='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic='-fno-common'
+      ;;
+
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static='-Bstatic'
+      else
+	lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic='-qnocommon'
+         lt_prog_compiler_wl='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-KPIC'
+	lt_prog_compiler_static='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl='-Wl,'
+	lt_prog_compiler_pic='-fpic'
+	lt_prog_compiler_static='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl='-Qoption ld '
+      lt_prog_compiler_pic='-PIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic='-Kconform_pic'
+	lt_prog_compiler_static='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_can_build_shared=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic='-pic'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared=no
+      ;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9595: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:9599: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_prog_compiler_pic_works" = xyes; then
+    case $lt_prog_compiler_pic in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
+     esac
+else
+    lt_prog_compiler_pic=
+     lt_prog_compiler_can_build_shared=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic=
+    ;;
+  *)
+    lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works=yes
+       fi
+     else
+       lt_prog_compiler_static_works=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; }
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:9699: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:9703: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+  runpath_var=
+  allow_undefined_flag=
+  enable_shared_with_static_runtimes=no
+  archive_cmds=
+  archive_expsym_cmds=
+  old_archive_From_new_cmds=
+  old_archive_from_expsyms_cmds=
+  export_dynamic_flag_spec=
+  whole_archive_flag_spec=
+  thread_safe_flag_spec=
+  hardcode_libdir_flag_spec=
+  hardcode_libdir_flag_spec_ld=
+  hardcode_libdir_separator=
+  hardcode_direct=no
+  hardcode_minus_L=no
+  hardcode_shlibpath_var=unsupported
+  link_all_deplibs=unknown
+  hardcode_automatic=no
+  module_cmds=
+  module_expsym_cmds=
+  always_export_symbols=no
+  export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec='-L$libdir'
+      allow_undefined_flag=unsupported
+      always_export_symbols=no
+      enable_shared_with_static_runtimes=yes
+      export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    interix3*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec=
+      export_dynamic_flag_spec=
+      whole_archive_flag_spec=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag=unsupported
+      always_export_symbols=yes
+      archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds=''
+      hardcode_direct=yes
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L=yes
+  	  hardcode_libdir_flag_spec='-L$libdir'
+  	  hardcode_libdir_separator=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag="-z nodefs"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag=' ${wl}-bernotok'
+	  allow_undefined_flag=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec='$convenience'
+	  archive_cmds_need_lc=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec=' '
+      allow_undefined_flag=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc=no
+      hardcode_direct=no
+      hardcode_automatic=yes
+      hardcode_shlibpath_var=unsupported
+      whole_archive_flag_spec=''
+      link_all_deplibs=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+      archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_direct=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L=yes
+      export_dynamic_flag_spec='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	hardcode_direct=yes
+	export_dynamic_flag_spec='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_libdir_flag_spec_ld='+b $libdir'
+	  hardcode_direct=no
+	  hardcode_shlibpath_var=no
+	  ;;
+	*)
+	  hardcode_direct=yes
+	  export_dynamic_flag_spec='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      link_all_deplibs=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    newsos6)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct=yes
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      hardcode_shlibpath_var=no
+      ;;
+
+    openbsd*)
+      hardcode_direct=yes
+      hardcode_shlibpath_var=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_minus_L=yes
+      allow_undefined_flag=unsupported
+      archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag=' -expect_unresolved \*'
+	archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec='-rpath $libdir'
+      fi
+      hardcode_libdir_separator=:
+      ;;
+
+    solaris*)
+      no_undefined_flag=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec='-R$libdir'
+      hardcode_shlibpath_var=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_direct=yes
+      hardcode_minus_L=yes
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds='$CC -r -o $output$reload_objs'
+	  hardcode_direct=no
+        ;;
+	motorola)
+	  archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var=no
+      export_dynamic_flag_spec='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec='-L$libdir'
+      hardcode_shlibpath_var=no
+      ;;
+
+    *)
+      ld_shlibs=no
+      ;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl
+	pic_flag=$lt_prog_compiler_pic
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag
+        allow_undefined_flag=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc=no
+        else
+	  archive_cmds_need_lc=yes
+        fi
+        allow_undefined_flag=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  freebsd*) # from 4.6 on
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix3*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 11164 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var" || \
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+striplib=
+old_striplib=
+{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+   darwin*)
+       if test -n "$STRIP" ; then
+         striplib="$STRIP -x"
+         { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+       else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+       ;;
+   *)
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+    ;;
+  esac
+fi
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+   ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+   ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dl_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+   ;;
+
+  *)
+    { echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; }
+if test "${ac_cv_func_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shl_load
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_shl_load || defined __stub___shl_load
+choke me
+#endif
+
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_shl_load=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6; }
+if test $ac_cv_func_shl_load = yes; then
+  lt_cv_dlopen="shl_load"
+else
+  { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dld_shl_load=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dld_shl_load=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
+if test $ac_cv_lib_dld_shl_load = yes; then
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+  { echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
+if test "${ac_cv_func_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef dlopen
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_dlopen || defined __stub___dlopen
+choke me
+#endif
+
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
+if test $ac_cv_func_dlopen = yes; then
+  lt_cv_dlopen="dlopen"
+else
+  { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dl_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
+if test $ac_cv_lib_dl_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_svld_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_svld_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; }
+if test $ac_cv_lib_svld_dlopen = yes; then
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dld_dld_link=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dld_dld_link=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
+if test $ac_cv_lib_dld_dld_link = yes; then
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+
+fi
+
+    ;;
+  esac
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
+
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+    { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 12028 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self" >&6; }
+
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  	  if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<EOF
+#line 12128 "configure"
+#include "confdefs.h"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL		RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL		DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL		0
+#  endif
+#endif
+
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW		DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW	RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW	DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW	0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=42;}
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
+
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
+
+    exit (status);
+}
+EOF
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
+
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6; }
+    fi
+
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
+
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+
+# Report which library types will actually be built
+{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+    ;;
+esac
+{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+{ echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6; }
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler \
+    CC \
+    LD \
+    lt_prog_compiler_wl \
+    lt_prog_compiler_pic \
+    lt_prog_compiler_static \
+    lt_prog_compiler_no_builtin_flag \
+    export_dynamic_flag_spec \
+    thread_safe_flag_spec \
+    whole_archive_flag_spec \
+    enable_shared_with_static_runtimes \
+    old_archive_cmds \
+    old_archive_from_new_cmds \
+    predep_objects \
+    postdep_objects \
+    predeps \
+    postdeps \
+    compiler_lib_search_path \
+    archive_cmds \
+    archive_expsym_cmds \
+    postinstall_cmds \
+    postuninstall_cmds \
+    old_archive_from_expsyms_cmds \
+    allow_undefined_flag \
+    no_undefined_flag \
+    export_symbols_cmds \
+    hardcode_libdir_flag_spec \
+    hardcode_libdir_flag_spec_ld \
+    hardcode_libdir_separator \
+    hardcode_automatic \
+    module_cmds \
+    module_expsym_cmds \
+    lt_cv_prog_compiler_c_o \
+    exclude_expsyms \
+    include_expsyms; do
+
+    case $var in
+    old_archive_cmds | \
+    old_archive_from_new_cmds | \
+    archive_cmds | \
+    archive_expsym_cmds | \
+    module_cmds | \
+    module_expsym_cmds | \
+    old_archive_from_expsyms_cmds | \
+    export_symbols_cmds | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="${ofile}T"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  $rm -f "$cfgfile"
+  { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+  cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A sed program that does not truncate output.
+SED=$lt_SED
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="$SED -e 1s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_predep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_postdep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+  case $host_os in
+  aix3*)
+    cat <<\EOF >> "$cfgfile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+  sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1)
+
+  mv -f "$cfgfile" "$ofile" || \
+    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+  chmod +x "$ofile"
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags was given.
+if test "${with_tags+set}" = set; then
+  withval=$with_tags; tagnames="$withval"
+fi
+
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+  if test ! -f "${ofile}"; then
+    { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+  fi
+
+  if test -z "$LTCC"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+    if test -z "$LTCC"; then
+      { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+    else
+      { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+    fi
+  fi
+  if test -z "$LTCFLAGS"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+  fi
+
+  # Extract list of available tagged configurations in $ofile.
+  # Note that this assumes the entire list is on one line.
+  available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+  lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+  for tagname in $tagnames; do
+    IFS="$lt_save_ifs"
+    # Check whether tagname contains only valid characters
+    case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+    "") ;;
+    *)  { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+    esac
+
+    if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+    then
+      { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    # Update the list of available tags.
+    if test -n "$tagname"; then
+      echo appending configuration tag \"$tagname\" to $ofile
+
+      case $tagname in
+      CXX)
+	if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+	    ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+	    (test "X$CXX" != "Xg++"))) ; then
+	  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+lt_save_LD=$LD
+lt_save_GCC=$GCC
+GCC=$GXX
+lt_save_with_gnu_ld=$with_gnu_ld
+lt_save_path_LD=$lt_cv_path_LD
+if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
+  lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
+else
+  $as_unset lt_cv_prog_gnu_ld
+fi
+if test -n "${lt_cv_path_LDCXX+set}"; then
+  lt_cv_path_LD=$lt_cv_path_LDCXX
+else
+  $as_unset lt_cv_path_LD
+fi
+test -z "${LDCXX+set}" || LD=$LDCXX
+CC=${CXX-"c++"}
+compiler=$CC
+compiler_CXX=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+  lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+  lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+  # Set up default GNU C++ configuration
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
+  esac
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+else
+  { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+	test "$with_gnu_ld" != no && break
+	;;
+      *)
+	test "$with_gnu_ld" != yes && break
+	;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
+fi
+
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+   { (exit 1); exit 1; }; }
+{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+  # Check if GNU C++ uses GNU ld as the underlying linker, since the
+  # archiving commands below assume that GNU ld is being used.
+  if test "$with_gnu_ld" = yes; then
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+    hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to
+    #     investigate it a little bit more. (MM)
+    wlarc='${wl}'
+
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if eval "`$CC -print-prog-name=ld` --help 2>&1" | \
+	grep 'no-whole-archive' > /dev/null; then
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    else
+      whole_archive_flag_spec_CXX=
+    fi
+  else
+    with_gnu_ld=no
+    wlarc=
+
+    # A generic and very simple default shared library creation
+    # command for GNU C++ for the case where it uses the native
+    # linker, instead of GNU ld.  If possible, this setting should
+    # overridden to take advantage of the native linker features on
+    # the platform it is being used on.
+    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+  fi
+
+  # Commands to make compiler produce verbose output that lists
+  # what "hidden" libraries, object files and flags are used when
+  # linking a shared library.
+  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+else
+  GXX=no
+  with_gnu_ld=no
+  wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+ld_shlibs_CXX=yes
+case $host_os in
+  aix3*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  aix4* | aix5*)
+    if test "$host_cpu" = ia64; then
+      # On IA64, the linker does run time linking by default, so we don't
+      # have to do anything special.
+      aix_use_runtimelinking=no
+      exp_sym_flag='-Bexport'
+      no_entry_flag=""
+    else
+      aix_use_runtimelinking=no
+
+      # Test if we are trying to use run time linking or normal
+      # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+      # need to do runtime linking.
+      case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	for ld_flag in $LDFLAGS; do
+	  case $ld_flag in
+	  *-brtl*)
+	    aix_use_runtimelinking=yes
+	    break
+	    ;;
+	  esac
+	done
+	;;
+      esac
+
+      exp_sym_flag='-bexport'
+      no_entry_flag='-bnoentry'
+    fi
+
+    # When large executables or shared objects are built, AIX ld can
+    # have problems creating the table of contents.  If linking a library
+    # or program results in "error TOC overflow" add -mminimal-toc to
+    # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+    # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+    archive_cmds_CXX=''
+    hardcode_direct_CXX=yes
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes; then
+      case $host_os in aix4.[012]|aix4.[012].*)
+      # We only want to do this on AIX 4.2 and lower, the check
+      # below for broken collect2 doesn't work under 4.3+
+	collect2name=`${CC} -print-prog-name=collect2`
+	if test -f "$collect2name" && \
+	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	then
+	  # We have reworked collect2
+	  hardcode_direct_CXX=yes
+	else
+	  # We have old collect2
+	  hardcode_direct_CXX=unsupported
+	  # It fails to find uninstalled libraries when the uninstalled
+	  # path is not listed in the libpath.  Setting hardcode_minus_L
+	  # to unsupported forces relinking
+	  hardcode_minus_L_CXX=yes
+	  hardcode_libdir_flag_spec_CXX='-L$libdir'
+	  hardcode_libdir_separator_CXX=
+	fi
+	;;
+      esac
+      shared_flag='-shared'
+      if test "$aix_use_runtimelinking" = yes; then
+	shared_flag="$shared_flag "'${wl}-G'
+      fi
+    else
+      # not using gcc
+      if test "$host_cpu" = ia64; then
+	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+	# chokes on -Wl,-G. The following line is correct:
+	shared_flag='-G'
+      else
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag='${wl}-G'
+	else
+	  shared_flag='${wl}-bM:SRE'
+	fi
+      fi
+    fi
+
+    # It seems that -bexpall does not export symbols beginning with
+    # underscore (_), so it is better to generate a list of symbols to export.
+    always_export_symbols_CXX=yes
+    if test "$aix_use_runtimelinking" = yes; then
+      # Warning - without using the other runtime loading flags (-brtl),
+      # -berok will link without error, but may produce a broken library.
+      allow_undefined_flag_CXX='-berok'
+      # Determine the default libpath from the value encoded in an empty executable.
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+      hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+     else
+      if test "$host_cpu" = ia64; then
+	hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
+	allow_undefined_flag_CXX="-z nodefs"
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+      else
+	# Determine the default libpath from the value encoded in an empty executable.
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+	# Warning - without using the other run time loading flags,
+	# -berok will link without error, but may produce a broken library.
+	no_undefined_flag_CXX=' ${wl}-bernotok'
+	allow_undefined_flag_CXX=' ${wl}-berok'
+	# Exported symbols can be pulled into shared objects from archives
+	whole_archive_flag_spec_CXX='$convenience'
+	archive_cmds_need_lc_CXX=yes
+	# This is similar to how AIX traditionally builds its shared libraries.
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+      fi
+    fi
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag_CXX=unsupported
+      # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+    ;;
+
+  chorus*)
+    case $cc_basename in
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+
+  cygwin* | mingw* | pw32*)
+    # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+    # as there is no search path for DLLs.
+    hardcode_libdir_flag_spec_CXX='-L$libdir'
+    allow_undefined_flag_CXX=unsupported
+    always_export_symbols_CXX=no
+    enable_shared_with_static_runtimes_CXX=yes
+
+    if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      # If the export-symbols file already is a .def file (1st line
+      # is EXPORTS), use it as is; otherwise, prepend...
+      archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	cp $export_symbols $output_objdir/$soname.def;
+      else
+	echo EXPORTS > $output_objdir/$soname.def;
+	cat $export_symbols >> $output_objdir/$soname.def;
+      fi~
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+  ;;
+      darwin* | rhapsody*)
+        case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+        esac
+      archive_cmds_need_lc_CXX=no
+      hardcode_direct_CXX=no
+      hardcode_automatic_CXX=yes
+      hardcode_shlibpath_var_CXX=unsupported
+      whole_archive_flag_spec_CXX=''
+      link_all_deplibs_CXX=yes
+
+    if test "$GXX" = yes ; then
+      lt_int_apple_cc_single_mod=no
+      output_verbose_link_cmd='echo'
+      if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+       lt_int_apple_cc_single_mod=yes
+      fi
+      if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+       archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      else
+          archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+        fi
+        module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+          if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          else
+            archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          fi
+            module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+          archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+          module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+          archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_CXX=no
+          ;;
+      esac
+      fi
+        ;;
+
+  dgux*)
+    case $cc_basename in
+      ec++*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      ghcx*)
+	# Green Hills C++ Compiler
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  freebsd[12]*)
+    # C++ shared libraries reported to be fairly broken before switch to ELF
+    ld_shlibs_CXX=no
+    ;;
+  freebsd-elf*)
+    archive_cmds_need_lc_CXX=no
+    ;;
+  freebsd* | kfreebsd*-gnu | dragonfly*)
+    # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+    # conventions
+    ld_shlibs_CXX=yes
+    ;;
+  gnu*)
+    ;;
+  hpux9*)
+    hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    hardcode_direct_CXX=yes
+    hardcode_minus_L_CXX=yes # Not in the search PATH,
+				# but as the default
+				# location of the library.
+
+    case $cc_basename in
+    CC*)
+      # FIXME: insert proper C++ library support
+      ld_shlibs_CXX=no
+      ;;
+    aCC*)
+      archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      # Commands to make compiler produce verbose output that lists
+      # what "hidden" libraries, object files and flags are used when
+      # linking a shared library.
+      #
+      # There doesn't appear to be a way to prevent this compiler from
+      # explicitly linking system object files so we need to strip them
+      # from the output so that they don't get included in the library
+      # dependencies.
+      output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+      ;;
+    *)
+      if test "$GXX" = yes; then
+        archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+        # FIXME: insert proper C++ library support
+        ld_shlibs_CXX=no
+      fi
+      ;;
+    esac
+    ;;
+  hpux10*|hpux11*)
+    if test $with_gnu_ld = no; then
+      hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_CXX=:
+
+      case $host_cpu in
+      hppa*64*|ia64*)
+	hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+        ;;
+      *)
+	export_dynamic_flag_spec_CXX='${wl}-E'
+        ;;
+      esac
+    fi
+    case $host_cpu in
+    hppa*64*|ia64*)
+      hardcode_direct_CXX=no
+      hardcode_shlibpath_var_CXX=no
+      ;;
+    *)
+      hardcode_direct_CXX=yes
+      hardcode_minus_L_CXX=yes # Not in the search PATH,
+					      # but as the default
+					      # location of the library.
+      ;;
+    esac
+
+    case $cc_basename in
+      CC*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      aCC*)
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	esac
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test $with_gnu_ld = no; then
+	    case $host_cpu in
+	    hppa*64*)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    ia64*)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    *)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    esac
+	  fi
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  interix3*)
+    hardcode_direct_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+    # Instead, shared libraries are loaded at an image base (0x10000000 by
+    # default) and relocated if they conflict, which is a slow very memory
+    # consuming and fragmenting process.  To avoid this, we pick a random,
+    # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+    # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+    archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC*)
+	# SGI C++
+	archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	# Archives containing C++ object files must be created using
+	# "CC -ar", where "CC" is the IRIX C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+	;;
+      *)
+	if test "$GXX" = yes; then
+	  if test "$with_gnu_ld" = no; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	  else
+	    archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+	  fi
+	fi
+	link_all_deplibs_CXX=yes
+	;;
+    esac
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator_CXX=:
+    ;;
+  linux*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+	archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib'
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+	;;
+      icpc*)
+	# Intel C++
+	with_gnu_ld=yes
+	# version 8.0 and above of icpc choke on multiply defined symbols
+	# if we add $predep_objects and $postdep_objects, however 7.1 and
+	# earlier do not add the objects themselves.
+	case `$CC -V 2>&1` in
+	*"Version 7."*)
+  	  archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+  	  archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	*)  # Version 8.0 or newer
+	  tmp_idyn=
+	  case $host_cpu in
+	    ia64*) tmp_idyn=' -i_dynamic';;
+	  esac
+  	  archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	  archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+	  ;;
+	esac
+	archive_cmds_need_lc_CXX=no
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+	;;
+      pgCC*)
+        # Portland Group C++ compiler
+	archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+  	archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+        ;;
+      cxx*)
+	# Compaq C++
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname  -o $lib ${wl}-retain-symbols-file $wl$export_symbols'
+
+	runpath_var=LD_RUN_PATH
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+    esac
+    ;;
+  lynxos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  m88k*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  mvs*)
+    case $cc_basename in
+      cxx*)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds_CXX='$LD -Bshareable  -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+      wlarc=
+      hardcode_libdir_flag_spec_CXX='-R$libdir'
+      hardcode_direct_CXX=yes
+      hardcode_shlibpath_var_CXX=no
+    fi
+    # Workaround some broken pre-1.5 toolchains
+    output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"'
+    ;;
+  openbsd2*)
+    # C++ shared libraries are fairly broken
+    ld_shlibs_CXX=no
+    ;;
+  openbsd*)
+    hardcode_direct_CXX=yes
+    hardcode_shlibpath_var_CXX=no
+    archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+    if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+      archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+      export_dynamic_flag_spec_CXX='${wl}-E'
+      whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+    fi
+    output_verbose_link_cmd='echo'
+    ;;
+  osf3*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# "CC -Bstatic", where "CC" is the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx*)
+	allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	  archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  osf4* | osf5*)
+    case $cc_basename in
+      KCC*)
+	# Kuck and Associates, Inc. (KAI) C++ Compiler
+
+	# KCC will only create a shared library if the output file
+	# ends with ".so" (or ".sl" for HP-UX), so rename the library
+	# to its proper name (with version) after linking.
+	archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib'
+
+	hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Archives containing C++ object files must be created using
+	# the KAI C++ compiler.
+	old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+	;;
+      RCC*)
+	# Rational C++ 2.4.1
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      cxx*)
+	allow_undefined_flag_CXX=' -expect_unresolved \*'
+	archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~
+	  echo "-hidden">> $lib.exp~
+	  $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp  `test -n "$verstring" && echo -set_version	$verstring` -update_registry ${output_objdir}/so_locations -o $lib~
+	  $rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+	hardcode_libdir_separator_CXX=:
+
+	# Commands to make compiler produce verbose output that lists
+	# what "hidden" libraries, object files and flags are used when
+	# linking a shared library.
+	#
+	# There doesn't appear to be a way to prevent this compiler from
+	# explicitly linking system object files so we need to strip them
+	# from the output so that they don't get included in the library
+	# dependencies.
+	output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	;;
+      *)
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+	 archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+	  hardcode_libdir_separator_CXX=:
+
+	  # Commands to make compiler produce verbose output that lists
+	  # what "hidden" libraries, object files and flags are used when
+	  # linking a shared library.
+	  output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"'
+
+	else
+	  # FIXME: insert proper C++ library support
+	  ld_shlibs_CXX=no
+	fi
+	;;
+    esac
+    ;;
+  psos*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  sunos4*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.x
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      lcc*)
+	# Lucid
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  solaris*)
+    case $cc_basename in
+      CC*)
+	# Sun C++ 4.2, 5.x and Centerline C++
+        archive_cmds_need_lc_CXX=yes
+	no_undefined_flag_CXX=' -zdefs'
+	archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	$CC -G${allow_undefined_flag}  ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	hardcode_libdir_flag_spec_CXX='-R$libdir'
+	hardcode_shlibpath_var_CXX=no
+	case $host_os in
+	  solaris2.[0-5] | solaris2.[0-5].*) ;;
+	  *)
+	    # The C++ compiler is used as linker so we must use $wl
+	    # flag to pass the commands to the underlying system
+	    # linker. We must also pass each convience library through
+	    # to the system linker between allextract/defaultextract.
+	    # The C++ compiler will combine linker options so we
+	    # cannot just pass the convience library names through
+	    # without $wl.
+	    # Supported since Solaris 2.6 (maybe 2.5.1?)
+	    whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+	    ;;
+	esac
+	link_all_deplibs_CXX=yes
+
+	output_verbose_link_cmd='echo'
+
+	# Archives containing C++ object files must be created using
+	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
+	# necessary to make sure instantiated templates are included
+	# in the archive.
+	old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+	;;
+      gcx*)
+	# Green Hills C++ Compiler
+	archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+
+	# The C++ compiler must be used to create the archive.
+	old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+	;;
+      *)
+	# GNU C++ compiler with Solaris linker
+	if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+	  no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+	  if $CC --version | grep -v '^2\.7' > /dev/null; then
+	    archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  else
+	    # g++ 2.7 appears to require `-G' NOT `-shared' on this
+	    # platform.
+	    archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+	    archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+
+	    # Commands to make compiler produce verbose output that lists
+	    # what "hidden" libraries, object files and flags are used when
+	    # linking a shared library.
+	    output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\""
+	  fi
+
+	  hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+	fi
+	;;
+    esac
+    ;;
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+    no_undefined_flag_CXX='${wl}-z,text'
+    archive_cmds_need_lc_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
+    ;;
+  sysv5* | sco3.2v5* | sco5v6*)
+    # Note: We can NOT use -z defs as we might desire, because we do not
+    # link with -lc, and that would cause any symbols used from libc to
+    # always be unresolved, which means just about no library would
+    # ever link correctly.  If we're not using GNU ld we use -z text
+    # though, which does catch some bad symbols but isn't as heavy-handed
+    # as -z defs.
+    # For security reasons, it is highly recommended that you always
+    # use absolute paths for naming shared libraries, and exclude the
+    # DT_RUNPATH tag from executables and libraries.  But doing so
+    # requires that you compile everything twice, which is a pain.
+    # So that behaviour is only enabled if SCOABSPATH is set to a
+    # non-empty value in the environment.  Most likely only useful for
+    # creating official distributions of packages.
+    # This is a hack until libtool officially supports absolute path
+    # names for shared libraries.
+    no_undefined_flag_CXX='${wl}-z,text'
+    allow_undefined_flag_CXX='${wl}-z,nodefs'
+    archive_cmds_need_lc_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+    export_dynamic_flag_spec_CXX='${wl}-Bexport'
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
+    ;;
+  tandem*)
+    case $cc_basename in
+      NCC*)
+	# NonStop-UX NCC 3.20
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+      *)
+	# FIXME: insert proper C++ library support
+	ld_shlibs_CXX=no
+	;;
+    esac
+    ;;
+  vxworks*)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+  *)
+    # FIXME: insert proper C++ library support
+    ld_shlibs_CXX=no
+    ;;
+esac
+{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+  Foo (void) { a = 0; }
+private:
+  int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  # Parse the compiler output and extract the necessary
+  # objects, libraries and library flags.
+
+  # Sentinel used to keep track of whether or not we are before
+  # the conftest object file.
+  pre_test_object_deps_done=no
+
+  # The `*' in the case matches for architectures that use `case' in
+  # $output_verbose_cmd can trigger glob expansion during the loop
+  # eval without this substitution.
+  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+  for p in `eval $output_verbose_link_cmd`; do
+    case $p in
+
+    -L* | -R* | -l*)
+       # Some compilers place space between "-{L,R}" and the path.
+       # Remove the space.
+       if test $p = "-L" \
+	  || test $p = "-R"; then
+	 prev=$p
+	 continue
+       else
+	 prev=
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 case $p in
+	 -L* | -R*)
+	   # Internal compiler library paths should come after those
+	   # provided the user.  The postdeps already come after the
+	   # user supplied libs so there is no need to process them.
+	   if test -z "$compiler_lib_search_path_CXX"; then
+	     compiler_lib_search_path_CXX="${prev}${p}"
+	   else
+	     compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}"
+	   fi
+	   ;;
+	 # The "-l" case would never come before the object being
+	 # linked, so don't bother handling this case.
+	 esac
+       else
+	 if test -z "$postdeps_CXX"; then
+	   postdeps_CXX="${prev}${p}"
+	 else
+	   postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+	 fi
+       fi
+       ;;
+
+    *.$objext)
+       # This assumes that the test object file only shows up
+       # once in the compiler output.
+       if test "$p" = "conftest.$objext"; then
+	 pre_test_object_deps_done=yes
+	 continue
+       fi
+
+       if test "$pre_test_object_deps_done" = no; then
+	 if test -z "$predep_objects_CXX"; then
+	   predep_objects_CXX="$p"
+	 else
+	   predep_objects_CXX="$predep_objects_CXX $p"
+	 fi
+       else
+	 if test -z "$postdep_objects_CXX"; then
+	   postdep_objects_CXX="$p"
+	 else
+	   postdep_objects_CXX="$postdep_objects_CXX $p"
+	 fi
+       fi
+       ;;
+
+    *) ;; # Ignore the rest.
+
+    esac
+  done
+
+  # Clean up.
+  rm -f a.out a.exe
+else
+  echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix3*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    postdeps_CXX='-lCstd -lCrun'
+    ;;
+  esac
+  ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+  # C++ specific cases for pic, static, wl, etc.
+  if test "$GXX" = yes; then
+    lt_prog_compiler_wl_CXX='-Wl,'
+    lt_prog_compiler_static_CXX='-static'
+
+    case $host_os in
+    aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_CXX='-Bstatic'
+      fi
+      ;;
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
+      ;;
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+    mingw* | os2* | pw32*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
+      ;;
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_CXX='-fno-common'
+      ;;
+    *djgpp*)
+      # DJGPP does not support shared libraries at all
+      lt_prog_compiler_pic_CXX=
+      ;;
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_CXX=-Kconform_pic
+      fi
+      ;;
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	;;
+      *)
+	lt_prog_compiler_pic_CXX='-fPIC'
+	;;
+      esac
+      ;;
+    *)
+      lt_prog_compiler_pic_CXX='-fPIC'
+      ;;
+    esac
+  else
+    case $host_os in
+      aix4* | aix5*)
+	# All AIX code is PIC.
+	if test "$host_cpu" = ia64; then
+	  # AIX 5 now supports IA64 processor
+	  lt_prog_compiler_static_CXX='-Bstatic'
+	else
+	  lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+	fi
+	;;
+      chorus*)
+	case $cc_basename in
+	cxch68*)
+	  # Green Hills C++ Compiler
+	  # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a"
+	  ;;
+	esac
+	;;
+       darwin*)
+         # PIC is the default on this platform
+         # Common symbols not allowed in MH_DYLIB files
+         case $cc_basename in
+           xlc*)
+           lt_prog_compiler_pic_CXX='-qnocommon'
+           lt_prog_compiler_wl_CXX='-Wl,'
+           ;;
+         esac
+       ;;
+      dgux*)
+	case $cc_basename in
+	  ec++*)
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  ghcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      freebsd* | kfreebsd*-gnu | dragonfly*)
+	# FreeBSD uses GNU C++
+	;;
+      hpux9* | hpux10* | hpux11*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    if test "$host_cpu" != ia64; then
+	      lt_prog_compiler_pic_CXX='+Z'
+	    fi
+	    ;;
+	  aCC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    case $host_cpu in
+	    hppa*64*|ia64*)
+	      # +Z the default
+	      ;;
+	    *)
+	      lt_prog_compiler_pic_CXX='+Z'
+	      ;;
+	    esac
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
+      irix5* | irix6* | nonstopux*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    # CC pic flag -KPIC is the default.
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      linux*)
+	case $cc_basename in
+	  KCC*)
+	    # KAI C++ Compiler
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    lt_prog_compiler_pic_CXX='-fPIC'
+	    ;;
+	  icpc* | ecpc*)
+	    # Intel C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-static'
+	    ;;
+	  pgCC*)
+	    # Portland Group C++ compiler.
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-fpic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  cxx*)
+	    # Compaq C++
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      lynxos*)
+	;;
+      m88k*)
+	;;
+      mvs*)
+	case $cc_basename in
+	  cxx*)
+	    lt_prog_compiler_pic_CXX='-W c,exportall'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      netbsd*)
+	;;
+      osf3* | osf4* | osf5*)
+	case $cc_basename in
+	  KCC*)
+	    lt_prog_compiler_wl_CXX='--backend -Wl,'
+	    ;;
+	  RCC*)
+	    # Rational C++ 2.4.1
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  cxx*)
+	    # Digital/Compaq C++
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    # Make sure the PIC flag is empty.  It appears that all Alpha
+	    # Linux and Compaq Tru64 Unix objects are PIC.
+	    lt_prog_compiler_pic_CXX=
+	    lt_prog_compiler_static_CXX='-non_shared'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      psos*)
+	;;
+      solaris*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.2, 5.x and Centerline C++
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    lt_prog_compiler_wl_CXX='-Qoption ld '
+	    ;;
+	  gcx*)
+	    # Green Hills C++ Compiler
+	    lt_prog_compiler_pic_CXX='-PIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sunos4*)
+	case $cc_basename in
+	  CC*)
+	    # Sun C++ 4.x
+	    lt_prog_compiler_pic_CXX='-pic'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	  lcc*)
+	    # Lucid
+	    lt_prog_compiler_pic_CXX='-pic'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      tandem*)
+	case $cc_basename in
+	  NCC*)
+	    # NonStop-UX NCC 3.20
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    ;;
+	  *)
+	    ;;
+	esac
+	;;
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
+	;;
+      vxworks*)
+	;;
+      *)
+	lt_prog_compiler_can_build_shared_CXX=no
+	;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_CXX=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14467: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:14471: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+    case $lt_prog_compiler_pic_CXX in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+     esac
+else
+    lt_prog_compiler_pic_CXX=
+     lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_CXX=
+    ;;
+  *)
+    lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works_CXX=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_CXX=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:14571: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:14575: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_CXX=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+  export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  case $host_os in
+  aix4* | aix5*)
+    # If we're using GNU nm, then we don't want the "-C" option.
+    # -C means demangle to AIX nm, but means don't demangle with GNU nm
+    if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+      export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    else
+      export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+    fi
+    ;;
+  pw32*)
+    export_symbols_cmds_CXX="$ltdll_cmds"
+  ;;
+  cygwin* | mingw*)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  *)
+    export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  ;;
+  esac
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_CXX=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_CXX in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_CXX
+	pic_flag=$lt_prog_compiler_pic_CXX
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+        allow_undefined_flag_CXX=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_CXX=no
+        else
+	  archive_cmds_need_lc_CXX=yes
+        fi
+        allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  freebsd*) # from 4.6 on
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix3*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 15107 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+   test -n "$runpath_var_CXX" || \
+   test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_CXX" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+     test "$hardcode_minus_L_CXX" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_CXX=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_CXX=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_CXX=unsupported
+fi
+{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_CXX \
+    CC_CXX \
+    LD_CXX \
+    lt_prog_compiler_wl_CXX \
+    lt_prog_compiler_pic_CXX \
+    lt_prog_compiler_static_CXX \
+    lt_prog_compiler_no_builtin_flag_CXX \
+    export_dynamic_flag_spec_CXX \
+    thread_safe_flag_spec_CXX \
+    whole_archive_flag_spec_CXX \
+    enable_shared_with_static_runtimes_CXX \
+    old_archive_cmds_CXX \
+    old_archive_from_new_cmds_CXX \
+    predep_objects_CXX \
+    postdep_objects_CXX \
+    predeps_CXX \
+    postdeps_CXX \
+    compiler_lib_search_path_CXX \
+    archive_cmds_CXX \
+    archive_expsym_cmds_CXX \
+    postinstall_cmds_CXX \
+    postuninstall_cmds_CXX \
+    old_archive_from_expsyms_cmds_CXX \
+    allow_undefined_flag_CXX \
+    no_undefined_flag_CXX \
+    export_symbols_cmds_CXX \
+    hardcode_libdir_flag_spec_CXX \
+    hardcode_libdir_flag_spec_ld_CXX \
+    hardcode_libdir_separator_CXX \
+    hardcode_automatic_CXX \
+    module_cmds_CXX \
+    module_expsym_cmds_CXX \
+    lt_cv_prog_compiler_c_o_CXX \
+    exclude_expsyms_CXX \
+    include_expsyms_CXX; do
+
+    case $var in
+    old_archive_cmds_CXX | \
+    old_archive_from_new_cmds_CXX | \
+    archive_cmds_CXX | \
+    archive_expsym_cmds_CXX | \
+    module_cmds_CXX | \
+    module_expsym_cmds_CXX | \
+    old_archive_from_expsyms_cmds_CXX | \
+    export_symbols_cmds_CXX | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_predep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_postdep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6; }
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+{ echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6; }
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_F77='-Wl,'
+    lt_prog_compiler_static_F77='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_F77='-fno-common'
+      ;;
+
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_F77=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_F77=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_F77='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      else
+	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_F77='-qnocommon'
+         lt_prog_compiler_wl_F77='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-KPIC'
+	lt_prog_compiler_static_F77='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-fpic'
+	lt_prog_compiler_static_F77='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_F77='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_F77='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_F77='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_F77='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_F77='-Qoption ld '
+      lt_prog_compiler_pic_F77='-PIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_F77='-Kconform_pic'
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_F77='-pic'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_F77=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:16165: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:16169: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; }
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+    case $lt_prog_compiler_pic_F77 in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+     esac
+else
+    lt_prog_compiler_pic_F77=
+     lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_F77=
+    ;;
+  *)
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works_F77=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works_F77=yes
+       fi
+     else
+       lt_prog_compiler_static_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; }
+
+if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+    :
+else
+    lt_prog_compiler_static_F77=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_F77=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:16269: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:16273: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_F77=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+  runpath_var=
+  allow_undefined_flag_F77=
+  enable_shared_with_static_runtimes_F77=no
+  archive_cmds_F77=
+  archive_expsym_cmds_F77=
+  old_archive_From_new_cmds_F77=
+  old_archive_from_expsyms_cmds_F77=
+  export_dynamic_flag_spec_F77=
+  whole_archive_flag_spec_F77=
+  thread_safe_flag_spec_F77=
+  hardcode_libdir_flag_spec_F77=
+  hardcode_libdir_flag_spec_ld_F77=
+  hardcode_libdir_separator_F77=
+  hardcode_direct_F77=no
+  hardcode_minus_L_F77=no
+  hardcode_shlibpath_var_F77=unsupported
+  link_all_deplibs_F77=unknown
+  hardcode_automatic_F77=no
+  module_cmds_F77=
+  module_expsym_cmds_F77=
+  always_export_symbols_F77=no
+  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_F77=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_F77=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_F77=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_F77=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_F77=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=no
+      enable_shared_with_static_runtimes_F77=yes
+      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    interix3*)
+      hardcode_direct_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec_F77='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs_F77=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs_F77=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_F77" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_F77=
+      export_dynamic_flag_spec_F77=
+      whole_archive_flag_spec_F77=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=yes
+      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_F77=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_F77=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_F77=''
+      hardcode_direct_F77=yes
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_F77=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_F77=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_F77=yes
+  	  hardcode_libdir_flag_spec_F77='-L$libdir'
+  	  hardcode_libdir_separator_F77=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_F77=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_F77='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_F77="-z nodefs"
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_f77_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_F77=' ${wl}-bernotok'
+	  allow_undefined_flag_F77=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_F77='$convenience'
+	  archive_cmds_need_lc_F77=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_F77=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_F77=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_F77=' '
+      allow_undefined_flag_F77=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_F77='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_F77=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_F77=no
+      hardcode_direct_F77=no
+      hardcode_automatic_F77=yes
+      hardcode_shlibpath_var_F77=unsupported
+      whole_archive_flag_spec_F77=''
+      link_all_deplibs_F77=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+      archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_F77=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_F77=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_direct_F77=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_F77=:
+
+	hardcode_direct_F77=yes
+	export_dynamic_flag_spec_F77='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L_F77=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_F77=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+	  ;;
+	*)
+	  hardcode_direct_F77=yes
+	  export_dynamic_flag_spec_F77='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      link_all_deplibs_F77=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    newsos6)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_F77='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_F77='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      allow_undefined_flag_F77=unsupported
+      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_F77=:
+      ;;
+
+    solaris*)
+      no_undefined_flag_F77=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_shlibpath_var_F77=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs_F77=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_F77='$CC -r -o $output$reload_objs'
+	  hardcode_direct_F77=no
+        ;;
+	motorola)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_F77=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_F77=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+      no_undefined_flag_F77='${wl}-z,text'
+      archive_cmds_need_lc_F77=no
+      hardcode_shlibpath_var_F77=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag_F77='${wl}-z,text'
+      allow_undefined_flag_F77='${wl}-z,nodefs'
+      archive_cmds_need_lc_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
+      export_dynamic_flag_spec_F77='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
+      ;;
+
+    *)
+      ld_shlibs_F77=no
+      ;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6; }
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_F77=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_F77 in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_F77
+	pic_flag=$lt_prog_compiler_pic_F77
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+        allow_undefined_flag_F77=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_F77=no
+        else
+	  archive_cmds_need_lc_F77=yes
+        fi
+        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  freebsd*) # from 4.6 on
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix3*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 17714 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+   test -n "$runpath_var_F77" || \
+   test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_F77" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+     test "$hardcode_minus_L_F77" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_F77=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_F77=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_F77=unsupported
+fi
+{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6; }
+
+if test "$hardcode_action_F77" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_F77 \
+    CC_F77 \
+    LD_F77 \
+    lt_prog_compiler_wl_F77 \
+    lt_prog_compiler_pic_F77 \
+    lt_prog_compiler_static_F77 \
+    lt_prog_compiler_no_builtin_flag_F77 \
+    export_dynamic_flag_spec_F77 \
+    thread_safe_flag_spec_F77 \
+    whole_archive_flag_spec_F77 \
+    enable_shared_with_static_runtimes_F77 \
+    old_archive_cmds_F77 \
+    old_archive_from_new_cmds_F77 \
+    predep_objects_F77 \
+    postdep_objects_F77 \
+    predeps_F77 \
+    postdeps_F77 \
+    compiler_lib_search_path_F77 \
+    archive_cmds_F77 \
+    archive_expsym_cmds_F77 \
+    postinstall_cmds_F77 \
+    postuninstall_cmds_F77 \
+    old_archive_from_expsyms_cmds_F77 \
+    allow_undefined_flag_F77 \
+    no_undefined_flag_F77 \
+    export_symbols_cmds_F77 \
+    hardcode_libdir_flag_spec_F77 \
+    hardcode_libdir_flag_spec_ld_F77 \
+    hardcode_libdir_separator_F77 \
+    hardcode_automatic_F77 \
+    module_cmds_F77 \
+    module_expsym_cmds_F77 \
+    lt_cv_prog_compiler_c_o_F77 \
+    exclude_expsyms_F77 \
+    include_expsyms_F77; do
+
+    case $var in
+    old_archive_cmds_F77 | \
+    old_archive_from_new_cmds_F77 | \
+    archive_cmds_F77 | \
+    archive_expsym_cmds_F77 | \
+    module_cmds_F77 | \
+    module_expsym_cmds_F77 | \
+    old_archive_from_expsyms_cmds_F77 | \
+    export_symbols_cmds_F77 | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_predep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_postdep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      GCJ)
+	if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+LD_GCJ="$LD"
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+  lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_rtti_exceptions=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="-fno-rtti -fno-exceptions"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:18492: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:18496: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_rtti_exceptions=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+    lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+    :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_GCJ='-Wl,'
+    lt_prog_compiler_static_GCJ='-static'
+
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
+      ;;
+
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_GCJ='-fno-common'
+      ;;
+
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_GCJ=no
+      enable_shared=no
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_GCJ=-Kconform_pic
+      fi
+      ;;
+
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='-fPIC'
+	;;
+      esac
+      ;;
+
+    *)
+      lt_prog_compiler_pic_GCJ='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      else
+	lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_GCJ='-qnocommon'
+         lt_prog_compiler_wl_GCJ='-Wl,'
+         ;;
+       esac
+       ;;
+
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+      ;;
+
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_GCJ='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    newsos6)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-KPIC'
+	lt_prog_compiler_static_GCJ='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_GCJ='-Wl,'
+	lt_prog_compiler_pic_GCJ='-fpic'
+	lt_prog_compiler_static_GCJ='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_GCJ='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_GCJ='-non_shared'
+        ;;
+      esac
+      ;;
+
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_GCJ='-non_shared'
+      ;;
+
+    solaris*)
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_GCJ='-Wl,';;
+      esac
+      ;;
+
+    sunos4*)
+      lt_prog_compiler_wl_GCJ='-Qoption ld '
+      lt_prog_compiler_pic_GCJ='-PIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_GCJ='-Kconform_pic'
+	lt_prog_compiler_static_GCJ='-Bstatic'
+      fi
+      ;;
+
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    unicos*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+
+    uts4*)
+      lt_prog_compiler_pic_GCJ='-pic'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
+    *)
+      lt_prog_compiler_can_build_shared_GCJ=no
+      ;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_GCJ=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:18760: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:18764: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s "$ac_outfile"; then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings other than the usual output.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; }
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+    case $lt_prog_compiler_pic_GCJ in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+     esac
+else
+    lt_prog_compiler_pic_GCJ=
+     lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_GCJ=
+    ;;
+  *)
+    lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+    ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works_GCJ=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works_GCJ=yes
+       fi
+     else
+       lt_prog_compiler_static_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; }
+
+if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+    :
+else
+    lt_prog_compiler_static_GCJ=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
+   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
+   -e 's:$: $lt_compiler_flag:'`
+   (eval echo "\"\$as_me:18864: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:18868: \$? = $ac_status" >&5
+   if (exit $ac_status) && test -s out/conftest2.$ac_objext
+   then
+     # The compiler can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_GCJ=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6; }
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+  runpath_var=
+  allow_undefined_flag_GCJ=
+  enable_shared_with_static_runtimes_GCJ=no
+  archive_cmds_GCJ=
+  archive_expsym_cmds_GCJ=
+  old_archive_From_new_cmds_GCJ=
+  old_archive_from_expsyms_cmds_GCJ=
+  export_dynamic_flag_spec_GCJ=
+  whole_archive_flag_spec_GCJ=
+  thread_safe_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_GCJ=
+  hardcode_libdir_flag_spec_ld_GCJ=
+  hardcode_libdir_separator_GCJ=
+  hardcode_direct_GCJ=no
+  hardcode_minus_L_GCJ=no
+  hardcode_shlibpath_var_GCJ=unsupported
+  link_all_deplibs_GCJ=unknown
+  hardcode_automatic_GCJ=no
+  module_cmds_GCJ=
+  module_expsym_cmds_GCJ=
+  always_export_symbols_GCJ=no
+  export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_GCJ=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
+
+  ld_shlibs_GCJ=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
+
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_GCJ='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_GCJ=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
+
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+
+      # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_GCJ=no
+      ;;
+
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_GCJ=unsupported
+	# Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=no
+      enable_shared_with_static_runtimes_GCJ=yes
+      export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    interix3*)
+      hardcode_direct_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
+    linux*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
+      ;;
+
+    solaris*)
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_GCJ=no
+	cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs_GCJ=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs_GCJ=no
+	  fi
+	;;
+      esac
+      ;;
+
+    sunos4*)
+      archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_GCJ=no
+      fi
+      ;;
+    esac
+
+    if test "$ld_shlibs_GCJ" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_GCJ=
+      export_dynamic_flag_spec_GCJ=
+      whole_archive_flag_spec_GCJ=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_GCJ=unsupported
+      always_export_symbols_GCJ=yes
+      archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_GCJ=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_GCJ=unsupported
+      fi
+      ;;
+
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
+
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	  ;;
+	esac
+
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
+
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+
+      archive_cmds_GCJ=''
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_GCJ=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_GCJ=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_GCJ=yes
+  	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
+  	  hardcode_libdir_separator_GCJ=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
+
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_GCJ=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_GCJ='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+       hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_GCJ="-z nodefs"
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+	 hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_GCJ=' ${wl}-bernotok'
+	  allow_undefined_flag_GCJ=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_GCJ='$convenience'
+	  archive_cmds_need_lc_GCJ=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
+      fi
+      ;;
+
+    amigaos*)
+      archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      # see comment about different semantics on the GNU ld section
+      ld_shlibs_GCJ=no
+      ;;
+
+    bsdi[45]*)
+      export_dynamic_flag_spec_GCJ=-rdynamic
+      ;;
+
+    cygwin* | mingw* | pw32*)
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_GCJ=' '
+      allow_undefined_flag_GCJ=unsupported
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_GCJ='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+      enable_shared_with_static_runtimes_GCJ=yes
+      ;;
+
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_GCJ=no
+      hardcode_direct_GCJ=no
+      hardcode_automatic_GCJ=yes
+      hardcode_shlibpath_var_GCJ=unsupported
+      whole_archive_flag_spec_GCJ=''
+      link_all_deplibs_GCJ=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+      archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_GCJ=no
+          ;;
+      esac
+    fi
+      ;;
+
+    dgux*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    freebsd1*)
+      ld_shlibs_GCJ=no
+      ;;
+
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      else
+	archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_direct_GCJ=yes
+
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
+      hardcode_minus_L_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_GCJ=:
+
+	hardcode_direct_GCJ=yes
+	export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L_GCJ=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      else
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_GCJ=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+	  hardcode_direct_GCJ=no
+	  hardcode_shlibpath_var_GCJ=no
+	  ;;
+	*)
+	  hardcode_direct_GCJ=yes
+	  export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_GCJ=yes
+	  ;;
+	esac
+      fi
+      ;;
+
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    newsos6)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_GCJ=yes
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    openbsd*)
+      hardcode_direct_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_GCJ='${wl}-E'
+      else
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_GCJ='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+	   ;;
+       esac
+      fi
+      ;;
+
+    os2*)
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_minus_L_GCJ=yes
+      allow_undefined_flag_GCJ=unsupported
+      archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
+
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+      fi
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_GCJ=' -expect_unresolved \*'
+	archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_GCJ='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_GCJ=:
+      ;;
+
+    solaris*)
+      no_undefined_flag_GCJ=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-R$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
+      esac
+      link_all_deplibs_GCJ=yes
+      ;;
+
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_direct_GCJ=yes
+      hardcode_minus_L_GCJ=yes
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+	  hardcode_direct_GCJ=no
+        ;;
+	motorola)
+	  archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    sysv4.3*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_shlibpath_var_GCJ=no
+      export_dynamic_flag_spec_GCJ='-Bexport'
+      ;;
+
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_GCJ=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_GCJ=yes
+      fi
+      ;;
+
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+      no_undefined_flag_GCJ='${wl}-z,text'
+      archive_cmds_need_lc_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag_GCJ='${wl}-z,text'
+      allow_undefined_flag_GCJ='${wl}-z,nodefs'
+      archive_cmds_need_lc_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
+      ;;
+
+    uts4*)
+      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_GCJ='-L$libdir'
+      hardcode_shlibpath_var_GCJ=no
+      ;;
+
+    *)
+      ld_shlibs_GCJ=no
+      ;;
+    esac
+  fi
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6; }
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_GCJ=yes
+
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_GCJ in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
+      ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+	pic_flag=$lt_prog_compiler_pic_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_GCJ=no
+        else
+	  archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; }
+      ;;
+    esac
+  fi
+  ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
+
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
+
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
+
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
+
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
+
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
+
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
+
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+    ;;
+  esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+  else
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+  fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  freebsd*) # from 4.6 on
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
+
+interix3*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
+
+  # find out which ABI we are using
+  libsuff=
+  case "$host_cpu" in
+  x86_64*|s390x*|powerpc64*)
+    echo '#line 20329 "configure"' > conftest.$ac_ext
+    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+      case `/usr/bin/file conftest.$ac_objext` in
+      *64-bit*)
+        libsuff=64
+        sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+        ;;
+      esac
+    fi
+    rm -rf conftest*
+    ;;
+  esac
+
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
+  fi
+
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
+
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
+
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
+
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
+
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
+
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+   test -n "$runpath_var_GCJ" || \
+   test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_GCJ" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6; }
+
+if test "$hardcode_action_GCJ" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_GCJ \
+    CC_GCJ \
+    LD_GCJ \
+    lt_prog_compiler_wl_GCJ \
+    lt_prog_compiler_pic_GCJ \
+    lt_prog_compiler_static_GCJ \
+    lt_prog_compiler_no_builtin_flag_GCJ \
+    export_dynamic_flag_spec_GCJ \
+    thread_safe_flag_spec_GCJ \
+    whole_archive_flag_spec_GCJ \
+    enable_shared_with_static_runtimes_GCJ \
+    old_archive_cmds_GCJ \
+    old_archive_from_new_cmds_GCJ \
+    predep_objects_GCJ \
+    postdep_objects_GCJ \
+    predeps_GCJ \
+    postdeps_GCJ \
+    compiler_lib_search_path_GCJ \
+    archive_cmds_GCJ \
+    archive_expsym_cmds_GCJ \
+    postinstall_cmds_GCJ \
+    postuninstall_cmds_GCJ \
+    old_archive_from_expsyms_cmds_GCJ \
+    allow_undefined_flag_GCJ \
+    no_undefined_flag_GCJ \
+    export_symbols_cmds_GCJ \
+    hardcode_libdir_flag_spec_GCJ \
+    hardcode_libdir_flag_spec_ld_GCJ \
+    hardcode_libdir_separator_GCJ \
+    hardcode_automatic_GCJ \
+    module_cmds_GCJ \
+    module_expsym_cmds_GCJ \
+    lt_cv_prog_compiler_c_o_GCJ \
+    exclude_expsyms_GCJ \
+    include_expsyms_GCJ; do
+
+    case $var in
+    old_archive_cmds_GCJ | \
+    old_archive_from_new_cmds_GCJ | \
+    archive_cmds_GCJ | \
+    archive_expsym_cmds_GCJ | \
+    module_cmds_GCJ | \
+    module_expsym_cmds_GCJ | \
+    old_archive_from_expsyms_cmds_GCJ | \
+    export_symbols_cmds_GCJ | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_predep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_postdep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	else
+	  tagname=""
+	fi
+	;;
+
+      RC)
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# Code to be used in simple link tests
+lt_simple_link_test_code="$lt_simple_compile_test_code"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
+
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
+# Allow CC to be a program name with arguments.
+compiler=$CC
+
+
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
+
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_RC \
+    CC_RC \
+    LD_RC \
+    lt_prog_compiler_wl_RC \
+    lt_prog_compiler_pic_RC \
+    lt_prog_compiler_static_RC \
+    lt_prog_compiler_no_builtin_flag_RC \
+    export_dynamic_flag_spec_RC \
+    thread_safe_flag_spec_RC \
+    whole_archive_flag_spec_RC \
+    enable_shared_with_static_runtimes_RC \
+    old_archive_cmds_RC \
+    old_archive_from_new_cmds_RC \
+    predep_objects_RC \
+    postdep_objects_RC \
+    predeps_RC \
+    postdeps_RC \
+    compiler_lib_search_path_RC \
+    archive_cmds_RC \
+    archive_expsym_cmds_RC \
+    postinstall_cmds_RC \
+    postuninstall_cmds_RC \
+    old_archive_from_expsyms_cmds_RC \
+    allow_undefined_flag_RC \
+    no_undefined_flag_RC \
+    export_symbols_cmds_RC \
+    hardcode_libdir_flag_spec_RC \
+    hardcode_libdir_flag_spec_ld_RC \
+    hardcode_libdir_separator_RC \
+    hardcode_automatic_RC \
+    module_cmds_RC \
+    module_expsym_cmds_RC \
+    lt_cv_prog_compiler_c_o_RC \
+    exclude_expsyms_RC \
+    include_expsyms_RC; do
+
+    case $var in
+    old_archive_cmds_RC | \
+    old_archive_from_new_cmds_RC | \
+    archive_cmds_RC | \
+    archive_expsym_cmds_RC | \
+    module_cmds_RC | \
+    module_expsym_cmds_RC | \
+    old_archive_from_expsyms_cmds_RC | \
+    export_symbols_cmds_RC | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+cfgfile="$ofile"
+
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
+
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=\`echo $lt_predep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=\`echo $lt_postdep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC
+
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+	;;
+
+      *)
+	{ { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+   { (exit 1); exit 1; }; }
+	;;
+      esac
+
+      # Append the new tag name to the list of available tags.
+      if test -n "$tagname" ; then
+      available_tags="$available_tags $tagname"
+    fi
+    fi
+  done
+  IFS="$lt_save_ifs"
+
+  # Now substitute the updated list of available tags.
+  if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+    mv "${ofile}T" "$ofile"
+    chmod +x "$ofile"
+  else
+    rm -f "${ofile}T"
+    { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    kdelibsuff=none
+    # Check whether --enable-libsuffix was given.
+if test "${enable_libsuffix+set}" = set; then
+  enableval=$enable_libsuffix; kdelibsuff=$enableval
+fi
+
+    if test "$kdelibsuff" = "none"; then
+        if test -d /lib64 ; then
+            kdelibsuff=64
+        else
+            kdelibsuff=
+        fi
+    fi
+    if test -z "$kdelibsuff"; then
+        { echo "$as_me:$LINENO: result: not using lib directory suffix" >&5
+echo "${ECHO_T}not using lib directory suffix" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define KDELIBSUFF ""
+_ACEOF
+
+    else
+        if test "$libdir" = '${exec_prefix}/lib'; then
+            libdir="$libdir${kdelibsuff}"
+            libdir="$libdir"
+          fi
+
+cat >>confdefs.h <<_ACEOF
+#define KDELIBSUFF "\"${kdelibsuff}\""
+_ACEOF
+
+        { echo "$as_me:$LINENO: result: using lib directory suffix $kdelibsuff" >&5
+echo "${ECHO_T}using lib directory suffix $kdelibsuff" >&6; }
+    fi
+
+
+{ echo "$as_me:$LINENO: checking for extra includes" >&5
+echo $ECHO_N "checking for extra includes... $ECHO_C" >&6; }
+
+# Check whether --with-extra-includes was given.
+if test "${with_extra_includes+set}" = set; then
+  withval=$with_extra_includes; kde_use_extra_includes="$withval"
+else
+  kde_use_extra_includes=NONE
+
+fi
+
+kde_extra_includes=
+if test -n "$kde_use_extra_includes" && \
+   test "$kde_use_extra_includes" != "NONE"; then
+
+   ac_save_ifs=$IFS
+   IFS=':'
+   for dir in $kde_use_extra_includes; do
+     kde_extra_includes="$kde_extra_includes $dir"
+     USER_INCLUDES="$USER_INCLUDES -I$dir"
+   done
+   IFS=$ac_save_ifs
+   kde_use_extra_includes="added"
+else
+   kde_use_extra_includes="no"
+fi
+
+
+{ echo "$as_me:$LINENO: result: $kde_use_extra_includes" >&5
+echo "${ECHO_T}$kde_use_extra_includes" >&6; }
+
+kde_extra_libs=
+{ echo "$as_me:$LINENO: checking for extra libs" >&5
+echo $ECHO_N "checking for extra libs... $ECHO_C" >&6; }
+
+# Check whether --with-extra-libs was given.
+if test "${with_extra_libs+set}" = set; then
+  withval=$with_extra_libs; kde_use_extra_libs=$withval
+else
+  kde_use_extra_libs=NONE
+
+fi
+
+if test -n "$kde_use_extra_libs" && \
+   test "$kde_use_extra_libs" != "NONE"; then
+
+   ac_save_ifs=$IFS
+   IFS=':'
+   for dir in $kde_use_extra_libs; do
+     kde_extra_libs="$kde_extra_libs $dir"
+     KDE_EXTRA_RPATH="$KDE_EXTRA_RPATH -R $dir"
+     USER_LDFLAGS="$USER_LDFLAGS -L$dir"
+   done
+   IFS=$ac_save_ifs
+   kde_use_extra_libs="added"
+else
+   kde_use_extra_libs="no"
+fi
+
+
+
+{ echo "$as_me:$LINENO: result: $kde_use_extra_libs" >&5
+echo "${ECHO_T}$kde_use_extra_libs" >&6; }
+
+
+{ echo "$as_me:$LINENO: checking for X" >&5
+echo $ECHO_N "checking for X... $ECHO_C" >&6; }
+
+
+# Check whether --with-x was given.
+if test "${with_x+set}" = set; then
+  withval=$with_x;
+fi
+
+# $have_x is `yes', `no', `disabled', or empty when we do not yet know.
+if test "x$with_x" = xno; then
+  # The user explicitly disabled X.
+  have_x=disabled
+else
+  case $x_includes,$x_libraries in #(
+    *\'*) { { echo "$as_me:$LINENO: error: Cannot use X directory names containing '" >&5
+echo "$as_me: error: Cannot use X directory names containing '" >&2;}
+   { (exit 1); exit 1; }; };; #(
+    *,NONE | NONE,*) if test "${ac_cv_have_x+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+ac_x_includes=no ac_x_libraries=no
+rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+	@echo incroot='${INCROOT}'
+usrlibdir:
+	@echo usrlibdir='${USRLIBDIR}'
+libdir:
+	@echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+	 test -f "$ac_im_libdir/libX11.$ac_extension"; then
+	ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+	/usr/include) ac_x_includes= ;;
+	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+	/usr/lib | /lib) ;;
+	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
+
+# Standard set of common directories for X headers.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+ac_x_header_dirs='
+/usr/X11/include
+/usr/X11R6/include
+/usr/X11R5/include
+/usr/X11R4/include
+
+/usr/include/X11
+/usr/include/X11R6
+/usr/include/X11R5
+/usr/include/X11R4
+
+/usr/local/X11/include
+/usr/local/X11R6/include
+/usr/local/X11R5/include
+/usr/local/X11R4/include
+
+/usr/local/include/X11
+/usr/local/include/X11R6
+/usr/local/include/X11R5
+/usr/local/include/X11R4
+
+/usr/X386/include
+/usr/x386/include
+/usr/XFree86/include/X11
+
+/usr/include
+/usr/local/include
+/usr/unsupported/include
+/usr/athena/include
+/usr/local/x11r5/include
+/usr/lpp/Xamples/include
+
+/usr/openwin/include
+/usr/openwin/share/include'
+
+if test "$ac_x_includes" = no; then
+  # Guess where to find include files, by looking for Xlib.h.
+  # First, try using that file with no special directory specified.
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  for ac_dir in $ac_x_header_dirs; do
+  if test -r "$ac_dir/X11/Xlib.h"; then
+    ac_x_includes=$ac_dir
+    break
+  fi
+done
+fi
+
+rm -f conftest.err conftest.$ac_ext
+fi # $ac_x_includes = no
+
+if test "$ac_x_libraries" = no; then
+  # Check for the libraries.
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS=$LIBS
+  LIBS="-lX11 $LIBS"
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <X11/Xlib.h>
+int
+main ()
+{
+XrmInitialize ()
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  LIBS=$ac_save_LIBS
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	LIBS=$ac_save_LIBS
+for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g`
+do
+  # Don't even attempt the hair of trying to link an X program!
+  for ac_extension in a so sl; do
+    if test -r "$ac_dir/libX11.$ac_extension"; then
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+  done
+done
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = no
+
+case $ac_x_includes,$ac_x_libraries in #(
+  no,* | *,no | *\'*)
+    # Didn't find X, or a directory has "'" in its name.
+    ac_cv_have_x="have_x=no";; #(
+  *)
+    # Record where we found X for the cache.
+    ac_cv_have_x="have_x=yes\
+	ac_x_includes='$ac_x_includes'\
+	ac_x_libraries='$ac_x_libraries'"
+esac
+fi
+;; #(
+    *) have_x=yes;;
+  esac
+  eval "$ac_cv_have_x"
+fi # $with_x != no
+
+if test "$have_x" != yes; then
+  { echo "$as_me:$LINENO: result: $have_x" >&5
+echo "${ECHO_T}$have_x" >&6; }
+  no_x=yes
+else
+  # If each of the values was on the command line, it overrides each guess.
+  test "x$x_includes" = xNONE && x_includes=$ac_x_includes
+  test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries
+  # Update the cache value to reflect the command line values.
+  ac_cv_have_x="have_x=yes\
+	ac_x_includes='$x_includes'\
+	ac_x_libraries='$x_libraries'"
+  { echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5
+echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6; }
+fi
+
+if test "$no_x" = yes; then
+  # Not all programs may use this symbol, but it does not hurt to define it.
+
+cat >>confdefs.h <<\_ACEOF
+#define X_DISPLAY_MISSING 1
+_ACEOF
+
+  X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS=
+else
+  if test -n "$x_includes"; then
+    X_CFLAGS="$X_CFLAGS -I$x_includes"
+  fi
+
+  # It would also be nice to do this for all -L options, not just this one.
+  if test -n "$x_libraries"; then
+    X_LIBS="$X_LIBS -L$x_libraries"
+    # For Solaris; some versions of Sun CC require a space after -R and
+    # others require no space.  Words are not sufficient . . . .
+    { echo "$as_me:$LINENO: checking whether -R must be followed by a space" >&5
+echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6; }
+    ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries"
+    ac_xsave_c_werror_flag=$ac_c_werror_flag
+    ac_c_werror_flag=yes
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+       X_LIBS="$X_LIBS -R$x_libraries"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	LIBS="$ac_xsave_LIBS -R $x_libraries"
+       cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+	  X_LIBS="$X_LIBS -R $x_libraries"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	{ echo "$as_me:$LINENO: result: neither works" >&5
+echo "${ECHO_T}neither works" >&6; }
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+    ac_c_werror_flag=$ac_xsave_c_werror_flag
+    LIBS=$ac_xsave_LIBS
+  fi
+
+  # Check for system-dependent libraries X programs must link with.
+  # Do this before checking for the system-independent R6 libraries
+  # (-lICE), since we may need -lsocket or whatever for X linking.
+
+  if test "$ISC" = yes; then
+    X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet"
+  else
+    # Martyn Johnson says this is needed for Ultrix, if the X
+    # libraries were built with DECnet support.  And Karl Berry says
+    # the Alpha needs dnet_stub (dnet does not exist).
+    ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11"
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char XOpenDisplay ();
+int
+main ()
+{
+return XOpenDisplay ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  :
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	{ echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
+echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dnet_dnet_ntoa=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dnet_dnet_ntoa=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+    if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
+echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+    fi
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+    LIBS="$ac_xsave_LIBS"
+
+    # msh at cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT,
+    # to get the SysV transport functions.
+    # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4)
+    # needs -lnsl.
+    # The nsl library prevents programs from opening the X display
+    # on Irix 5.2, according to T.E. Dickey.
+    # The functions gethostbyname, getservbyname, and inet_addr are
+    # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking.
+    { echo "$as_me:$LINENO: checking for gethostbyname" >&5
+echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6; }
+if test "${ac_cv_func_gethostbyname+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define gethostbyname to an innocuous variant, in case <limits.h> declares gethostbyname.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define gethostbyname innocuous_gethostbyname
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char gethostbyname (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef gethostbyname
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_gethostbyname || defined __stub___gethostbyname
+choke me
+#endif
+
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_gethostbyname=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_gethostbyname=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6; }
+
+    if test $ac_cv_func_gethostbyname = no; then
+      { echo "$as_me:$LINENO: checking for gethostbyname in -lnsl" >&5
+echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_nsl_gethostbyname=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_nsl_gethostbyname=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6; }
+if test $ac_cv_lib_nsl_gethostbyname = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+      if test $ac_cv_lib_nsl_gethostbyname = no; then
+	{ echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
+echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; }
+if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_bsd_gethostbyname=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_bsd_gethostbyname=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test $ac_cv_lib_bsd_gethostbyname = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd"
+fi
+
+      fi
+    fi
+
+    # lieder at skyler.mavd.honeywell.com says without -lsocket,
+    # socket/setsockopt and other routines are undefined under SCO ODT
+    # 2.0.  But -lsocket is broken on IRIX 5.2 (and is not necessary
+    # on later versions), says Simon Leinen: it contains gethostby*
+    # variants that don't use the name server (or something).  -lsocket
+    # must be given before -lnsl if both are needed.  We assume that
+    # if connect needs -lnsl, so does gethostbyname.
+    { echo "$as_me:$LINENO: checking for connect" >&5
+echo $ECHO_N "checking for connect... $ECHO_C" >&6; }
+if test "${ac_cv_func_connect+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define connect to an innocuous variant, in case <limits.h> declares connect.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define connect innocuous_connect
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char connect (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef connect
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_connect || defined __stub___connect
+choke me
+#endif
+
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_connect=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_connect=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
+echo "${ECHO_T}$ac_cv_func_connect" >&6; }
+
+    if test $ac_cv_func_connect = no; then
+      { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
+echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; }
+if test "${ac_cv_lib_socket_connect+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_socket_connect=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_socket_connect=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; }
+if test $ac_cv_lib_socket_connect = yes; then
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+    fi
+
+    # Guillermo Gomez says -lposix is necessary on A/UX.
+    { echo "$as_me:$LINENO: checking for remove" >&5
+echo $ECHO_N "checking for remove... $ECHO_C" >&6; }
+if test "${ac_cv_func_remove+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define remove to an innocuous variant, in case <limits.h> declares remove.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define remove innocuous_remove
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char remove (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef remove
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_remove || defined __stub___remove
+choke me
+#endif
+
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_remove=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_remove=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
+echo "${ECHO_T}$ac_cv_func_remove" >&6; }
+
+    if test $ac_cv_func_remove = no; then
+      { echo "$as_me:$LINENO: checking for remove in -lposix" >&5
+echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; }
+if test "${ac_cv_lib_posix_remove+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_posix_remove=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_posix_remove=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; }
+if test $ac_cv_lib_posix_remove = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+    fi
+
+    # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+    { echo "$as_me:$LINENO: checking for shmat" >&5
+echo $ECHO_N "checking for shmat... $ECHO_C" >&6; }
+if test "${ac_cv_func_shmat+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shmat to an innocuous variant, in case <limits.h> declares shmat.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shmat innocuous_shmat
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shmat (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shmat
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_shmat || defined __stub___shmat
+choke me
+#endif
+
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_shmat=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_shmat=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
+echo "${ECHO_T}$ac_cv_func_shmat" >&6; }
+
+    if test $ac_cv_func_shmat = no; then
+      { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
+echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; }
+if test "${ac_cv_lib_ipc_shmat+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_ipc_shmat=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_ipc_shmat=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; }
+if test $ac_cv_lib_ipc_shmat = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+    fi
+  fi
+
+  # Check for libraries that X11R6 Xt/Xaw programs need.
+  ac_save_LDFLAGS=$LDFLAGS
+  test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries"
+  # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+  # check for ICE first), but we must link in the order -lSM -lICE or
+  # we get undefined symbols.  So assume we have SM if we have ICE.
+  # These have to be linked with before -lX11, unlike the other
+  # libraries we check for below, so use a different variable.
+  # John Interrante, Karl Berry
+  { echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
+echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; }
+if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
+  X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"
+fi
+
+  LDFLAGS=$ac_save_LDFLAGS
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5
+echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6; }
+if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_create ();
+int
+main ()
+{
+return pthread_create ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_pthread_pthread_create=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_pthread_pthread_create=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5
+echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6; }
+if test $ac_cv_lib_pthread_pthread_create = yes; then
+  LIBPTHREAD="-lpthread"
+fi
+
+
+
+
+    # Check whether --enable-kernel-threads was given.
+if test "${enable_kernel_threads+set}" = set; then
+  enableval=$enable_kernel_threads; kde_use_kernthreads=$enableval
+else
+  kde_use_kernthreads=no
+fi
+
+
+    if test "$kde_use_kernthreads" = "yes"; then
+      ac_save_CXXFLAGS="$CXXFLAGS"
+      ac_save_CFLAGS="$CFLAGS"
+      CXXFLAGS="-I/usr/local/include/pthread/linuxthreads $CXXFLAGS"
+      CFLAGS="-I/usr/local/include/pthread/linuxthreads $CFLAGS"
+
+for ac_header in pthread/linuxthreads/pthread.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------------------------- ##
+## Report this to tora-develop at lists.sourceforge.net ##
+## ------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+      CXXFLAGS="$ac_save_CXXFLAGS"
+      CFLAGS="$ac_save_CFLAGS"
+      if test "$ac_cv_header_pthread_linuxthreads_pthread_h" = "no"; then
+        kde_use_kernthreads=no
+      else
+                { echo "$as_me:$LINENO: checking for pthread_join in -llthread" >&5
+echo $ECHO_N "checking for pthread_join in -llthread... $ECHO_C" >&6; }
+if test "${ac_cv_lib_lthread_pthread_join+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-llthread  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_join ();
+int
+main ()
+{
+return pthread_join ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_lthread_pthread_join=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_lthread_pthread_join=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_lthread_pthread_join" >&5
+echo "${ECHO_T}$ac_cv_lib_lthread_pthread_join" >&6; }
+if test $ac_cv_lib_lthread_pthread_join = yes; then
+  LIBPTHREAD="-llthread -llgcc_r"
+fi
+         if test "x$LIBPTHREAD" = "x"; then
+          kde_use_kernthreads=no
+        else
+          USE_THREADS="-D_THREAD_SAFE -I/usr/local/include/pthread/linuxthreads"
+        fi
+      fi
+    else
+      USE_THREADS=""
+      if test -z "$LIBPTHREAD"; then
+
+{ echo "$as_me:$LINENO: checking whether $CXX supports -pthread" >&5
+echo $ECHO_N "checking whether $CXX supports -pthread... $ECHO_C" >&6; }
+kde_cache=`echo pthread | sed 'y% .=/+-%____p_%'`
+if { as_var=kde_cv_prog_cxx_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -pthread"
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+ return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "kde_cv_prog_cxx_$kde_cache=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+  CXXFLAGS="$save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ :
+ USE_THREADS="-pthread"
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ :
+
+fi
+
+      fi
+    fi
+
+
+
+    case $host_os in
+ 	solaris*)
+
+{ echo "$as_me:$LINENO: checking whether $CXX supports -mt" >&5
+echo $ECHO_N "checking whether $CXX supports -mt... $ECHO_C" >&6; }
+kde_cache=`echo mt | sed 'y% .=/+-%____p_%'`
+if { as_var=kde_cv_prog_cxx_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+  save_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS="$CXXFLAGS -mt"
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+ return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "kde_cv_prog_cxx_$kde_cache=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+  CXXFLAGS="$save_CXXFLAGS"
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+if eval "test \"`echo '$kde_cv_prog_cxx_'$kde_cache`\" = yes"; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ :
+ USE_THREADS="-mt"
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ :
+
+fi
+
+                CXXFLAGS="$CXXFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -DUSE_SOLARIS -DSVR4"
+    		;;
+        freebsd*)
+                CXXFLAGS="$CXXFLAGS -D_THREAD_SAFE"
+                ;;
+        aix*)
+                CXXFLAGS="$CXXFLAGS -D_THREAD_SAFE"
+                LIBPTHREAD="$LIBPTHREAD -lc_r"
+                ;;
+        linux*) CXXFLAGS="$CXXFLAGS -D_REENTRANT"
+                if test "$CXX" = "KCC"; then
+                  CXXFLAGS="$CXXFLAGS --thread_safe"
+                  NOOPT_CXXFLAGS="$NOOPT_CXXFLAGS --thread_safe"
+                fi
+                ;;
+	*)
+		;;
+    esac
+
+
+
+
+
+{ echo "$as_me:$LINENO: checking for libz" >&5
+echo $ECHO_N "checking for libz... $ECHO_C" >&6; }
+if test "${ac_cv_lib_z+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+kde_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -lz $LIBSOCKET"
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+#include<zlib.h>
+
+int
+main ()
+{
+return (zlibVersion() == ZLIB_VERSION);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "ac_cv_lib_z='-lz'"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "ac_cv_lib_z=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+
+fi
+
+if test ! "$ac_cv_lib_z" = no; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBZ 1
+_ACEOF
+
+  LIBZ="$ac_cv_lib_z"
+
+  { echo "$as_me:$LINENO: result: $ac_cv_lib_z" >&5
+echo "${ECHO_T}$ac_cv_lib_z" >&6; }
+else
+  { { echo "$as_me:$LINENO: error: not found. Check your installation and look into config.log" >&5
+echo "$as_me: error: not found. Check your installation and look into config.log" >&2;}
+   { (exit 1); exit 1; }; }
+  LIBZ=""
+
+fi
+
+
+
+  { echo "$as_me:$LINENO: checking have kde" >&5
+echo $ECHO_N "checking have kde... $ECHO_C" >&6; }
+  have_kde=yes
+
+# Check whether --with-kde was given.
+if test "${with_kde+set}" = set; then
+  withval=$with_kde;
+     have_kde=$withval
+
+fi
+
+
+  { echo "$as_me:$LINENO: result: $have_kde" >&5
+echo "${ECHO_T}$have_kde" >&6; }
+  if test $have_kde != yes; then
+    kde_qtver=0
+  else
+
+
+   ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+      { echo "$as_me:$LINENO: checking for main in -lutil" >&5
+echo $ECHO_N "checking for main in -lutil... $ECHO_C" >&6; }
+if test "${ac_cv_lib_util_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lutil  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_util_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_util_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_util_main" >&5
+echo "${ECHO_T}$ac_cv_lib_util_main" >&6; }
+if test $ac_cv_lib_util_main = yes; then
+  LIBUTIL="-lutil"
+fi
+
+   { echo "$as_me:$LINENO: checking for main in -lcompat" >&5
+echo $ECHO_N "checking for main in -lcompat... $ECHO_C" >&6; }
+if test "${ac_cv_lib_compat_main+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcompat  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+int
+main ()
+{
+return main ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_compat_main=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_compat_main=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_compat_main" >&5
+echo "${ECHO_T}$ac_cv_lib_compat_main" >&6; }
+if test $ac_cv_lib_compat_main = yes; then
+  LIBCOMPAT="-lcompat"
+fi
+
+   kde_have_crypt=
+   { echo "$as_me:$LINENO: checking for crypt in -lcrypt" >&5
+echo $ECHO_N "checking for crypt in -lcrypt... $ECHO_C" >&6; }
+if test "${ac_cv_lib_crypt_crypt+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcrypt  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt ();
+int
+main ()
+{
+return crypt ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_crypt_crypt=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_crypt_crypt=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_crypt" >&5
+echo "${ECHO_T}$ac_cv_lib_crypt_crypt" >&6; }
+if test $ac_cv_lib_crypt_crypt = yes; then
+  LIBCRYPT="-lcrypt"; kde_have_crypt=yes
+else
+  { echo "$as_me:$LINENO: checking for crypt in -lc" >&5
+echo $ECHO_N "checking for crypt in -lc... $ECHO_C" >&6; }
+if test "${ac_cv_lib_c_crypt+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char crypt ();
+int
+main ()
+{
+return crypt ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_c_crypt=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_c_crypt=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_crypt" >&5
+echo "${ECHO_T}$ac_cv_lib_c_crypt" >&6; }
+if test $ac_cv_lib_c_crypt = yes; then
+  kde_have_crypt=yes
+else
+
+        { echo "$as_me:$LINENO: WARNING: you have no crypt in either libcrypt or libc.
+You should install libcrypt from another source or configure with PAM
+support" >&5
+echo "$as_me: WARNING: you have no crypt in either libcrypt or libc.
+You should install libcrypt from another source or configure with PAM
+support" >&2;}
+	kde_have_crypt=no
+
+fi
+
+fi
+
+
+   if test $kde_have_crypt = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_CRYPT 1
+_ACEOF
+
+   fi
+
+  { echo "$as_me:$LINENO: checking for socklen_t" >&5
+echo $ECHO_N "checking for socklen_t... $ECHO_C" >&6; }
+  if test "${ac_cv_socklen_t+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int
+main ()
+{
+socklen_t a=0;getsockname(0,(struct sockaddr*)0, &a);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_socklen_t=socklen_t
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int
+main ()
+{
+int a=0;getsockname(0,(struct sockaddr*)0, &a);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_socklen_t=int
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_socklen_t=size_t
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+fi
+
+
+  { echo "$as_me:$LINENO: result: $ac_cv_socklen_t" >&5
+echo "${ECHO_T}$ac_cv_socklen_t" >&6; }
+  if test "$ac_cv_socklen_t" != "socklen_t"; then
+
+cat >>confdefs.h <<_ACEOF
+#define socklen_t $ac_cv_socklen_t
+_ACEOF
+
+  fi
+
+cat >>confdefs.h <<_ACEOF
+#define ksize_t socklen_t
+_ACEOF
+
+
+
+   ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+   { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet" >&5
+echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dnet_dnet_ntoa=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dnet_dnet_ntoa=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_dnet_ntoa" >&5
+echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6; }
+if test $ac_cv_lib_dnet_dnet_ntoa = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"
+fi
+
+   if test $ac_cv_lib_dnet_dnet_ntoa = no; then
+      { echo "$as_me:$LINENO: checking for dnet_ntoa in -ldnet_stub" >&5
+echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldnet_stub  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dnet_ntoa ();
+int
+main ()
+{
+return dnet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dnet_stub_dnet_ntoa=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dnet_stub_dnet_ntoa=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5
+echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; }
+if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"
+fi
+
+   fi
+   { echo "$as_me:$LINENO: checking for inet_ntoa" >&5
+echo $ECHO_N "checking for inet_ntoa... $ECHO_C" >&6; }
+if test "${ac_cv_func_inet_ntoa+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define inet_ntoa to an innocuous variant, in case <limits.h> declares inet_ntoa.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define inet_ntoa innocuous_inet_ntoa
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char inet_ntoa (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef inet_ntoa
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char inet_ntoa ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_inet_ntoa || defined __stub___inet_ntoa
+choke me
+#endif
+
+int
+main ()
+{
+return inet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_inet_ntoa=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_inet_ntoa=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_inet_ntoa" >&5
+echo "${ECHO_T}$ac_cv_func_inet_ntoa" >&6; }
+
+   if test $ac_cv_func_inet_ntoa = no; then
+     { echo "$as_me:$LINENO: checking for inet_ntoa in -lnsl" >&5
+echo $ECHO_N "checking for inet_ntoa in -lnsl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_nsl_inet_ntoa+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lnsl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char inet_ntoa ();
+int
+main ()
+{
+return inet_ntoa ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_nsl_inet_ntoa=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_nsl_inet_ntoa=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_nsl_inet_ntoa" >&5
+echo "${ECHO_T}$ac_cv_lib_nsl_inet_ntoa" >&6; }
+if test $ac_cv_lib_nsl_inet_ntoa = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl"
+fi
+
+   fi
+   { echo "$as_me:$LINENO: checking for connect" >&5
+echo $ECHO_N "checking for connect... $ECHO_C" >&6; }
+if test "${ac_cv_func_connect+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define connect to an innocuous variant, in case <limits.h> declares connect.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define connect innocuous_connect
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char connect (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef connect
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_connect || defined __stub___connect
+choke me
+#endif
+
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_connect=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_connect=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_connect" >&5
+echo "${ECHO_T}$ac_cv_func_connect" >&6; }
+
+   if test $ac_cv_func_connect = no; then
+      { echo "$as_me:$LINENO: checking for connect in -lsocket" >&5
+echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6; }
+if test "${ac_cv_lib_socket_connect+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char connect ();
+int
+main ()
+{
+return connect ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_socket_connect=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_socket_connect=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_socket_connect" >&5
+echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6; }
+if test $ac_cv_lib_socket_connect = yes; then
+  X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS"
+fi
+
+   fi
+
+   { echo "$as_me:$LINENO: checking for remove" >&5
+echo $ECHO_N "checking for remove... $ECHO_C" >&6; }
+if test "${ac_cv_func_remove+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define remove to an innocuous variant, in case <limits.h> declares remove.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define remove innocuous_remove
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char remove (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef remove
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_remove || defined __stub___remove
+choke me
+#endif
+
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_remove=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_remove=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_remove" >&5
+echo "${ECHO_T}$ac_cv_func_remove" >&6; }
+
+   if test $ac_cv_func_remove = no; then
+      { echo "$as_me:$LINENO: checking for remove in -lposix" >&5
+echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6; }
+if test "${ac_cv_lib_posix_remove+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lposix  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char remove ();
+int
+main ()
+{
+return remove ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_posix_remove=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_posix_remove=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_posix_remove" >&5
+echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6; }
+if test $ac_cv_lib_posix_remove = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix"
+fi
+
+   fi
+
+   # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
+   { echo "$as_me:$LINENO: checking for shmat" >&5
+echo $ECHO_N "checking for shmat... $ECHO_C" >&6; }
+if test "${ac_cv_func_shmat+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define shmat to an innocuous variant, in case <limits.h> declares shmat.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define shmat innocuous_shmat
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shmat (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef shmat
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_shmat || defined __stub___shmat
+choke me
+#endif
+
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func_shmat=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func_shmat=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_shmat" >&5
+echo "${ECHO_T}$ac_cv_func_shmat" >&6; }
+if test $ac_cv_func_shmat = yes; then
+  :
+else
+  { echo "$as_me:$LINENO: checking for shmat in -lipc" >&5
+echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6; }
+if test "${ac_cv_lib_ipc_shmat+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lipc  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shmat ();
+int
+main ()
+{
+return shmat ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_ipc_shmat=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_ipc_shmat=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_ipc_shmat" >&5
+echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6; }
+if test $ac_cv_lib_ipc_shmat = yes; then
+  X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc"
+fi
+
+fi
+
+
+   # darwin needs this to initialize the environment
+
+for ac_header in crt_externs.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------------------------- ##
+## Report this to tora-develop at lists.sourceforge.net ##
+## ------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+   { echo "$as_me:$LINENO: checking for _NSGetEnviron" >&5
+echo $ECHO_N "checking for _NSGetEnviron... $ECHO_C" >&6; }
+if test "${ac_cv_func__NSGetEnviron+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define _NSGetEnviron to an innocuous variant, in case <limits.h> declares _NSGetEnviron.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define _NSGetEnviron innocuous__NSGetEnviron
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char _NSGetEnviron (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef _NSGetEnviron
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char _NSGetEnviron ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub__NSGetEnviron || defined __stub____NSGetEnviron
+choke me
+#endif
+
+int
+main ()
+{
+return _NSGetEnviron ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_func__NSGetEnviron=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_func__NSGetEnviron=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func__NSGetEnviron" >&5
+echo "${ECHO_T}$ac_cv_func__NSGetEnviron" >&6; }
+if test $ac_cv_func__NSGetEnviron = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_NSGETENVIRON 1
+_ACEOF
+
+fi
+
+
+   # more headers that need to be explicitly included on darwin
+
+
+for ac_header in sys/types.h stdint.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------------------------- ##
+## Report this to tora-develop at lists.sourceforge.net ##
+## ------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+   # darwin requires a poll emulation library
+   { echo "$as_me:$LINENO: checking for poll in -lpoll" >&5
+echo $ECHO_N "checking for poll in -lpoll... $ECHO_C" >&6; }
+if test "${ac_cv_lib_poll_poll+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpoll  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char poll ();
+int
+main ()
+{
+return poll ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_poll_poll=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_poll_poll=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_poll_poll" >&5
+echo "${ECHO_T}$ac_cv_lib_poll_poll" >&6; }
+if test $ac_cv_lib_poll_poll = yes; then
+  LIB_POLL="-lpoll"
+fi
+
+
+   # CoreAudio framework
+   if test "${ac_cv_header_CoreAudio_CoreAudio_h+set}" = set; then
+  { echo "$as_me:$LINENO: checking for CoreAudio/CoreAudio.h" >&5
+echo $ECHO_N "checking for CoreAudio/CoreAudio.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_CoreAudio_CoreAudio_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_CoreAudio_CoreAudio_h" >&5
+echo "${ECHO_T}$ac_cv_header_CoreAudio_CoreAudio_h" >&6; }
+else
+  # Is the header compilable?
+{ echo "$as_me:$LINENO: checking CoreAudio/CoreAudio.h usability" >&5
+echo $ECHO_N "checking CoreAudio/CoreAudio.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+#include <CoreAudio/CoreAudio.h>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_header_compiler=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking CoreAudio/CoreAudio.h presence" >&5
+echo $ECHO_N "checking CoreAudio/CoreAudio.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+#include <CoreAudio/CoreAudio.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  ac_header_preproc=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So?  What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+  yes:no: )
+    { echo "$as_me:$LINENO: WARNING: CoreAudio/CoreAudio.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: CoreAudio/CoreAudio.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+    { echo "$as_me:$LINENO: WARNING: CoreAudio/CoreAudio.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: CoreAudio/CoreAudio.h: proceeding with the compiler's result" >&2;}
+    ac_header_preproc=yes
+    ;;
+  no:yes:* )
+    { echo "$as_me:$LINENO: WARNING: CoreAudio/CoreAudio.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: CoreAudio/CoreAudio.h: present but cannot be compiled" >&2;}
+    { echo "$as_me:$LINENO: WARNING: CoreAudio/CoreAudio.h:     check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: CoreAudio/CoreAudio.h:     check for missing prerequisite headers?" >&2;}
+    { echo "$as_me:$LINENO: WARNING: CoreAudio/CoreAudio.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: CoreAudio/CoreAudio.h: see the Autoconf documentation" >&2;}
+    { echo "$as_me:$LINENO: WARNING: CoreAudio/CoreAudio.h:     section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: CoreAudio/CoreAudio.h:     section \"Present But Cannot Be Compiled\"" >&2;}
+    { echo "$as_me:$LINENO: WARNING: CoreAudio/CoreAudio.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: CoreAudio/CoreAudio.h: proceeding with the preprocessor's result" >&2;}
+    { echo "$as_me:$LINENO: WARNING: CoreAudio/CoreAudio.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: CoreAudio/CoreAudio.h: in the future, the compiler will take precedence" >&2;}
+    ( cat <<\_ASBOX
+## ------------------------------------------------- ##
+## Report this to tora-develop at lists.sourceforge.net ##
+## ------------------------------------------------- ##
+_ASBOX
+     ) | sed "s/^/$as_me: WARNING:     /" >&2
+    ;;
+esac
+{ echo "$as_me:$LINENO: checking for CoreAudio/CoreAudio.h" >&5
+echo $ECHO_N "checking for CoreAudio/CoreAudio.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_CoreAudio_CoreAudio_h+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_cv_header_CoreAudio_CoreAudio_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_CoreAudio_CoreAudio_h" >&5
+echo "${ECHO_T}$ac_cv_header_CoreAudio_CoreAudio_h" >&6; }
+
+fi
+if test $ac_cv_header_CoreAudio_CoreAudio_h = yes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_COREAUDIO 1
+_ACEOF
+
+     FRAMEWORK_COREAUDIO="-framework CoreAudio"
+
+fi
+
+
+
+
+  { echo "$as_me:$LINENO: checking if res_init needs -lresolv" >&5
+echo $ECHO_N "checking if res_init needs -lresolv... $ECHO_C" >&6; }
+  kde_libs_safe="$LIBS"
+  LIBS="$LIBS $X_EXTRA_LIBS -lresolv"
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+
+int
+main ()
+{
+res_init();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+
+      LIBRESOLV="-lresolv"
+      { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_RES_INIT 1
+_ACEOF
+
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	 { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+  LIBS="$kde_libs_safe"
+
+
+  { echo "$as_me:$LINENO: checking if res_init is available" >&5
+echo $ECHO_N "checking if res_init is available... $ECHO_C" >&6; }
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <resolv.h>
+
+int
+main ()
+{
+
+      res_init();
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+
+      { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_RES_INIT 1
+_ACEOF
+
+
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	 { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+
+
+   LIBSOCKET="$X_EXTRA_LIBS"
+
+
+   { echo "$as_me:$LINENO: checking for killpg in -lucb" >&5
+echo $ECHO_N "checking for killpg in -lucb... $ECHO_C" >&6; }
+if test "${ac_cv_lib_ucb_killpg+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lucb  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char killpg ();
+int
+main ()
+{
+return killpg ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_ucb_killpg=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_ucb_killpg=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_ucb_killpg" >&5
+echo "${ECHO_T}$ac_cv_lib_ucb_killpg" >&6; }
+if test $ac_cv_lib_ucb_killpg = yes; then
+  LIBUCB="-lucb"
+fi
+
+
+   case $host in     *-*-lynxos* )
+        { echo "$as_me:$LINENO: checking LynxOS header file wrappers" >&5
+echo $ECHO_N "checking LynxOS header file wrappers... $ECHO_C" >&6; }
+        CFLAGS="$CFLAGS -D__NO_INCLUDE_WARN__"
+        { echo "$as_me:$LINENO: result: disabled" >&5
+echo "${ECHO_T}disabled" >&6; }
+        { echo "$as_me:$LINENO: checking for gethostbyname in -lbsd" >&5
+echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6; }
+if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lbsd  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char gethostbyname ();
+int
+main ()
+{
+return gethostbyname ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_bsd_gethostbyname=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_bsd_gethostbyname=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_bsd_gethostbyname" >&5
+echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6; }
+if test $ac_cv_lib_bsd_gethostbyname = yes; then
+  LIBSOCKET="-lbsd"
+fi
+          ;;
+    esac
+
+     { echo "$as_me:$LINENO: checking for int" >&5
+echo $ECHO_N "checking for int... $ECHO_C" >&6; }
+if test "${ac_cv_type_int+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+typedef int ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_int=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_int=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5
+echo "${ECHO_T}$ac_cv_type_int" >&6; }
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ echo "$as_me:$LINENO: checking size of int" >&5
+echo $ECHO_N "checking size of int... $ECHO_C" >&6; }
+if test "${ac_cv_sizeof_int+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef int ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef int ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr $ac_mid + 1`
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef int ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef int ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_hi=`expr '(' $ac_mid ')' - 1`
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef int ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_int=$ac_lo;;
+'') if test "$ac_cv_type_int" = yes; then
+     { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+   else
+     ac_cv_sizeof_int=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef int ac__type_sizeof_;
+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (ac__type_sizeof_))))
+	return 1;
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (ac__type_sizeof_))))
+	return 1;
+      fprintf (f, "%lu\n", i);
+    }
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_int=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_int" = yes; then
+     { { echo "$as_me:$LINENO: error: cannot compute sizeof (int)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (int)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+   else
+     ac_cv_sizeof_int=0
+   fi
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5
+echo "${ECHO_T}$ac_cv_sizeof_int" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_INT $ac_cv_sizeof_int
+_ACEOF
+
+  { echo "$as_me:$LINENO: checking for long" >&5
+echo $ECHO_N "checking for long... $ECHO_C" >&6; }
+if test "${ac_cv_type_long+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+typedef long ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_long=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_long=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5
+echo "${ECHO_T}$ac_cv_type_long" >&6; }
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ echo "$as_me:$LINENO: checking size of long" >&5
+echo $ECHO_N "checking size of long... $ECHO_C" >&6; }
+if test "${ac_cv_sizeof_long+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef long ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef long ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr $ac_mid + 1`
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef long ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef long ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_hi=`expr '(' $ac_mid ')' - 1`
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef long ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_long=$ac_lo;;
+'') if test "$ac_cv_type_long" = yes; then
+     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+   else
+     ac_cv_sizeof_long=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef long ac__type_sizeof_;
+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (ac__type_sizeof_))))
+	return 1;
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (ac__type_sizeof_))))
+	return 1;
+      fprintf (f, "%lu\n", i);
+    }
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_long=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_long" = yes; then
+     { { echo "$as_me:$LINENO: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (long)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+   else
+     ac_cv_sizeof_long=0
+   fi
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5
+echo "${ECHO_T}$ac_cv_sizeof_long" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_LONG $ac_cv_sizeof_long
+_ACEOF
+
+  { echo "$as_me:$LINENO: checking for char *" >&5
+echo $ECHO_N "checking for char *... $ECHO_C" >&6; }
+if test "${ac_cv_type_char_p+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+typedef char * ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_char_p=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_char_p=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_char_p" >&5
+echo "${ECHO_T}$ac_cv_type_char_p" >&6; }
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ echo "$as_me:$LINENO: checking size of char *" >&5
+echo $ECHO_N "checking size of char *... $ECHO_C" >&6; }
+if test "${ac_cv_sizeof_char_p+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char * ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char * ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr $ac_mid + 1`
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char * ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char * ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_hi=`expr '(' $ac_mid ')' - 1`
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char * ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_char_p=$ac_lo;;
+'') if test "$ac_cv_type_char_p" = yes; then
+     { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char *)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+   else
+     ac_cv_sizeof_char_p=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char * ac__type_sizeof_;
+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (ac__type_sizeof_))))
+	return 1;
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (ac__type_sizeof_))))
+	return 1;
+      fprintf (f, "%lu\n", i);
+    }
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_char_p=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_char_p" = yes; then
+     { { echo "$as_me:$LINENO: error: cannot compute sizeof (char *)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char *)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+   else
+     ac_cv_sizeof_char_p=0
+   fi
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char_p" >&5
+echo "${ECHO_T}$ac_cv_sizeof_char_p" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_CHAR_P $ac_cv_sizeof_char_p
+_ACEOF
+
+  { echo "$as_me:$LINENO: checking for char" >&5
+echo $ECHO_N "checking for char... $ECHO_C" >&6; }
+if test "${ac_cv_type_char+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+typedef char ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+  return 0;
+if (sizeof (ac__type_new_))
+  return 0;
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_cv_type_char=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_type_char=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_char" >&5
+echo "${ECHO_T}$ac_cv_type_char" >&6; }
+
+# The cast to long int works around a bug in the HP C Compiler
+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
+# This bug is HP SR number 8606223364.
+{ echo "$as_me:$LINENO: checking size of char" >&5
+echo $ECHO_N "checking size of char... $ECHO_C" >&6; }
+if test "${ac_cv_sizeof_char+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  if test "$cross_compiling" = yes; then
+  # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=0 ac_mid=0
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr $ac_mid + 1`
+			if test $ac_lo -le $ac_mid; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=-1 ac_mid=-1
+  while :; do
+    cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_lo=$ac_mid; break
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_hi=`expr '(' $ac_mid ')' - 1`
+			if test $ac_mid -le $ac_hi; then
+			  ac_lo= ac_hi=
+			  break
+			fi
+			ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  done
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo= ac_hi=
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+# Binary search between lo and hi bounds.
+while test "x$ac_lo" != "x$ac_hi"; do
+  ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  ac_hi=$ac_mid
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_char=$ac_lo;;
+'') if test "$ac_cv_type_char" = yes; then
+     { { echo "$as_me:$LINENO: error: cannot compute sizeof (char)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+   else
+     ac_cv_sizeof_char=0
+   fi ;;
+esac
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+$ac_includes_default
+   typedef char ac__type_sizeof_;
+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+  FILE *f = fopen ("conftest.val", "w");
+  if (! f)
+    return 1;
+  if (((long int) (sizeof (ac__type_sizeof_))) < 0)
+    {
+      long int i = longval ();
+      if (i != ((long int) (sizeof (ac__type_sizeof_))))
+	return 1;
+      fprintf (f, "%ld\n", i);
+    }
+  else
+    {
+      unsigned long int i = ulongval ();
+      if (i != ((long int) (sizeof (ac__type_sizeof_))))
+	return 1;
+      fprintf (f, "%lu\n", i);
+    }
+  return ferror (f) || fclose (f) != 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  ac_cv_sizeof_char=`cat conftest.val`
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_char" = yes; then
+     { { echo "$as_me:$LINENO: error: cannot compute sizeof (char)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (char)
+See \`config.log' for more details." >&2;}
+   { (exit 77); exit 77; }; }
+   else
+     ac_cv_sizeof_char=0
+   fi
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_char" >&5
+echo "${ECHO_T}$ac_cv_sizeof_char" >&6; }
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define SIZEOF_CHAR $ac_cv_sizeof_char
+_ACEOF
+
+
+
+{ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dl_dlopen=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dl_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
+if test $ac_cv_lib_dl_dlopen = yes; then
+
+LIBDL="-ldl"
+ac_cv_have_dlfcn=yes
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking for shl_unload in -ldld" >&5
+echo $ECHO_N "checking for shl_unload in -ldld... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dld_shl_unload+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_unload ();
+int
+main ()
+{
+return shl_unload ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_dld_shl_unload=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_dld_shl_unload=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_unload" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_unload" >&6; }
+if test $ac_cv_lib_dld_shl_unload = yes; then
+
+LIBDL="-ldld"
+ac_cv_have_shload=yes
+
+fi
+
+
+
+
+
+
+
+
+
+
+for ac_func in vsnprintf snprintf
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $ac_func (); below.
+    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+    <limits.h> exists even on freestanding compilers.  */
+
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+
+#undef $ac_func
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char $ac_func ();
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "$as_ac_var=yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+	       { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+
+
+
+# Check whether --enable-embedded was given.
+if test "${enable_embedded+set}" = set; then
+  enableval=$enable_embedded; kde_use_qt_emb=$enableval
+else
+  kde_use_qt_emb=no
+
+fi
+
+
+# Check whether --enable-qtopia was given.
+if test "${enable_qtopia+set}" = set; then
+  enableval=$enable_qtopia; kde_use_qt_emb_palm=$enableval
+else
+  kde_use_qt_emb_palm=no
+
+fi
+
+
+if test "$kde_use_qt_emb" = "no"; then
+
+{ echo "$as_me:$LINENO: checking for X" >&5
+echo $ECHO_N "checking for X... $ECHO_C" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+if test "${kde_cv_have_x+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then
+   kde_x_includes=NO
+else
+   kde_x_includes=$x_includes
+fi
+if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then
+   kde_x_libraries=NO
+else
+   kde_x_libraries=$x_libraries
+fi
+
+# below we use the standard autoconf calls
+ac_x_libraries=$kde_x_libraries
+ac_x_includes=$kde_x_includes
+
+
+
+
+if test "$ac_x_includes" = NO; then
+  # Guess where to find include files, by looking for this one X11 .h file.
+  test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h
+
+  # First, try using that file with no special directory specified.
+cat >conftest.$ac_ext <<_ACEOF
+#include <$x_direct_test_include>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Look for the header file in a standard set of common directories.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+  for ac_dir in               \
+    /usr/X11/include          \
+    /usr/X11R6/include        \
+    /usr/X11R5/include        \
+    /usr/X11R4/include        \
+                              \
+    /usr/include/X11          \
+    /usr/include/X11R6        \
+    /usr/include/X11R5        \
+    /usr/include/X11R4        \
+                              \
+    /usr/local/X11/include    \
+    /usr/local/X11R6/include  \
+    /usr/local/X11R5/include  \
+    /usr/local/X11R4/include  \
+                              \
+    /usr/local/include/X11    \
+    /usr/local/include/X11R6  \
+    /usr/local/include/X11R5  \
+    /usr/local/include/X11R4  \
+                              \
+    /usr/X386/include         \
+    /usr/x386/include         \
+    /usr/XFree86/include/X11  \
+                              \
+    /usr/include              \
+    /usr/local/include        \
+    /usr/unsupported/include  \
+    /usr/athena/include       \
+    /usr/local/x11r5/include  \
+    /usr/lpp/Xamples/include  \
+                              \
+    /usr/openwin/include      \
+    /usr/openwin/share/include \
+    ; \
+  do
+    if test -r "$ac_dir/$x_direct_test_include"; then
+      ac_x_includes=$ac_dir
+      break
+    fi
+  done
+fi
+
+rm -f conftest.err conftest.$ac_ext
+fi # $ac_x_includes = NO
+
+if test "$ac_x_libraries" = NO; then
+  # Check for the libraries.
+
+  test -z "$x_direct_test_library" && x_direct_test_library=Xt
+  test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc
+
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS="$LIBS"
+  LIBS="-l$x_direct_test_library $LIBS"
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+${x_direct_test_function}()
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  # AC_TRY_LINK(, [${x_direct_test_function}()],
+LIBS="$ac_save_LIBS"
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	LIBS="$ac_save_LIBS"
+# First see if replacing the include by lib works.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+for ac_dir in `echo "$ac_x_includes" | sed s/include/lib/` \
+    /usr/X11/lib                        \
+    /usr/X11R6/lib                      \
+    /usr/X11R5/lib                      \
+    /usr/X11R4/lib                      \
+                                        \
+    /usr/lib/X11                        \
+    /usr/lib/X11R6                      \
+    /usr/lib/X11R5                      \
+    /usr/lib/X11R4                      \
+                                        \
+    /usr/local/X11/lib                  \
+    /usr/local/X11R6/lib                \
+    /usr/local/X11R5/lib                \
+    /usr/local/X11R4/lib                \
+                                        \
+    /usr/local/lib/X11                  \
+    /usr/local/lib/X11R6                \
+    /usr/local/lib/X11R5                \
+    /usr/local/lib/X11R4                \
+                                        \
+    /usr/X386/lib                       \
+    /usr/x386/lib                       \
+    /usr/XFree86/lib/X11                \
+                                        \
+    /usr/lib                            \
+    /usr/local/lib                      \
+    /usr/unsupported/lib                \
+    /usr/athena/lib                     \
+    /usr/local/x11r5/lib                \
+    /usr/lpp/Xamples/lib                \
+    /lib/usr/lib/X11                    \
+                                        \
+    /usr/openwin/lib                    \
+    /usr/openwin/share/lib              \
+    ; \
+do
+
+
+  for ac_extension in a so sl; do
+    if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then
+      echo "tried x dir $ac_dir" >&5
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+
+    for kdelibsuff in 32 64; do
+      ac_x_dir_with_suff=`echo $ac_dir | sed "s/lib/lib${kdelibsuff}/"`
+      if test -r $ac_x_dir_with_suff/lib${x_direct_test_library}.$ac_extension; then
+        echo "tried x dir $ac_dir" >&5
+        ac_x_libraries=$ac_dir
+        break 3
+      fi
+    done
+  done
+done
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = NO
+
+case "$host" in
+mips-sgi-irix6*)
+  ;;
+*-*-solaris*)
+  ;;
+*)
+  rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+	@echo incroot='${INCROOT}'
+usrlibdir:
+	@echo usrlibdir='${USRLIBDIR}'
+libdir:
+	@echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+	 test -f "$ac_im_libdir/libX11.$ac_extension"; then
+	ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+	/usr/include) ac_x_includes= ;;
+	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+	/usr/lib | /lib) ;;
+	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
+
+  if test -z "$ac_x_includes"; then
+    ac_x_includes="."
+  fi
+  if test -z "$ac_x_libraries"; then
+    ac_x_libraries="/usr/lib${kdelibsuff}"
+  fi
+esac
+#from now on we use our own again
+
+# when the user already gave --x-includes, we ignore
+# what the standard autoconf macros told us.
+if test "$kde_x_includes" = NO; then
+  kde_x_includes=$ac_x_includes
+fi
+
+# for --x-libraries too
+if test "$kde_x_libraries" = NO; then
+  kde_x_libraries=$ac_x_libraries
+fi
+
+if test "$kde_x_includes" = NO; then
+  { { echo "$as_me:$LINENO: error: Can't find X includes. Please check your installation and add the correct paths!" >&5
+echo "$as_me: error: Can't find X includes. Please check your installation and add the correct paths!" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+if test "$kde_x_libraries" = NO; then
+  { { echo "$as_me:$LINENO: error: Can't find X libraries. Please check your installation and add the correct paths!" >&5
+echo "$as_me: error: Can't find X libraries. Please check your installation and add the correct paths!" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# Record where we found X for the cache.
+kde_cv_have_x="have_x=yes \
+         kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries"
+
+fi
+
+eval "$kde_cv_have_x"
+
+if test "$have_x" != yes; then
+  { echo "$as_me:$LINENO: result: $have_x" >&5
+echo "${ECHO_T}$have_x" >&6; }
+  no_x=yes
+else
+  { echo "$as_me:$LINENO: result: libraries $kde_x_libraries, headers $kde_x_includes" >&5
+echo "${ECHO_T}libraries $kde_x_libraries, headers $kde_x_includes" >&6; }
+fi
+
+if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then
+  X_INCLUDES=""
+  x_includes=".";  else
+  x_includes=$kde_x_includes
+  X_INCLUDES="-I$x_includes"
+fi
+
+if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE; then
+  X_LDFLAGS=""
+  x_libraries="/usr/lib";  else
+  x_libraries=$kde_x_libraries
+  X_LDFLAGS="-L$x_libraries"
+fi
+all_includes="$X_INCLUDES"
+all_libraries="$X_LDFLAGS"
+
+
+
+
+
+
+# Check for libraries that X11R6 Xt/Xaw programs need.
+ac_save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS $X_LDFLAGS"
+# SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+# check for ICE first), but we must link in the order -lSM -lICE or
+# we get undefined symbols.  So assume we have SM if we have ICE.
+# These have to be linked with before -lX11, unlike the other
+# libraries we check for below, so use a different variable.
+#  --interran at uluru.Stanford.EDU, kb at cs.umb.edu.
+{ echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
+echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; }
+if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
+  LIBSM="-lSM -lICE"
+fi
+
+
+LDFLAGS="$ac_save_LDFLAGS"
+
+
+
+LIB_X11='-lX11 $(LIBSOCKET)'
+
+
+{ echo "$as_me:$LINENO: checking for libXext" >&5
+echo $ECHO_N "checking for libXext... $ECHO_C" >&6; }
+if test "${kde_cv_have_libXext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+kde_ldflags_safe="$LDFLAGS"
+kde_libs_safe="$LIBS"
+
+LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS"
+LIBS="-lXext -lX11 $LIBSOCKET"
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+#endif
+
+int
+main ()
+{
+printf("hello Xext\n");
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  kde_cv_have_libXext=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	kde_cv_have_libXext=no
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+LDFLAGS=$kde_ldflags_safe
+LIBS=$kde_libs_safe
+
+fi
+
+
+{ echo "$as_me:$LINENO: result: $kde_cv_have_libXext" >&5
+echo "${ECHO_T}$kde_cv_have_libXext" >&6; }
+
+if test "$kde_cv_have_libXext" = "no"; then
+  { { echo "$as_me:$LINENO: error: We need a working libXext to proceed. Since configure
+can't find it itself, we stop here assuming that make wouldn't find
+them either." >&5
+echo "$as_me: error: We need a working libXext to proceed. Since configure
+can't find it itself, we stop here assuming that make wouldn't find
+them either." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+{ echo "$as_me:$LINENO: checking for Xinerama" >&5
+echo $ECHO_N "checking for Xinerama... $ECHO_C" >&6; }
+
+
+# Check whether --with-xinerama was given.
+if test "${with_xinerama+set}" = set; then
+  withval=$with_xinerama;
+    no_xinerama=no
+
+else
+
+    no_xinerama=yes
+
+
+fi
+
+
+kde_save_LDFLAGS="$LDFLAGS"
+kde_save_CFLAGS="$CFLAGS"
+kde_save_LIBS="$LIBS"
+LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS"
+CFLAGS="$CFLAGS -I$x_includes"
+LIBS="-lXinerama -lXext"
+
+if test "x$no_xinerama" = "xno"; then
+
+  if test "${ac_cv_have_xinerama+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+        #include <X11/Xlib.h>
+  			#include <X11/extensions/Xinerama.h>
+int
+main ()
+{
+XineramaIsActive(NULL);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_have_xinerama="yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_have_xinerama="no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+else
+  ac_cv_have_xinerama=no;
+fi
+
+{ echo "$as_me:$LINENO: result: $ac_cv_have_xinerama" >&5
+echo "${ECHO_T}$ac_cv_have_xinerama" >&6; }
+
+LIBXINERAMA=""
+
+if test "$ac_cv_have_xinerama" = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_XINERAMA 1
+_ACEOF
+
+  LIBXINERAMA="-lXinerama"
+fi
+
+
+
+LDFLAGS="$kde_save_LDFLAGS"
+CFLAGS="$kde_save_CFLAGS"
+LIBS="$kde_save_LIBS"
+
+LIB_XEXT="-lXext"
+QTE_NORTTI=""
+
+else
+    CXXFLAGS=-DQWS
+  CXXFLAGS="$CXXFLAGS -fno-rtti"
+  QTE_NORTTI="-fno-rtti -DQWS"
+  X_PRE_LIBS=""
+  LIB_X11=""
+  LIB_XEXT=""
+  LIBSM=""
+  X_INCLUDES=""
+  X_LDFLAGS=""
+  x_includes=""
+  x_libraries=""
+
+
+
+
+
+
+
+fi
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+  if test -z ""; then
+    # Current default Qt version: 3.1
+    kde_qtver=3
+    kde_qtsubver=1
+  else
+    kde_qtsubver=`echo "" | sed -e 's#[0-9][0-9]*\.\([0-9][0-9]*\).*#\1#'`
+    # following is the check if subversion isnt found in passed argument
+    if test "$kde_qtsubver" = ""; then
+      kde_qtsubver=1
+    fi
+    kde_qtver=`echo "" | sed -e 's#^\([0-9][0-9]*\)\..*#\1#'`
+    if test "$kde_qtver" = "1"; then
+      kde_qtsubver=42
+    fi
+  fi
+
+  if test -z ""; then
+    if test "$kde_qtver" = "2"; then
+      if test $kde_qtsubver -gt 0; then
+        kde_qt_minversion=">= Qt 2.2.2"
+      else
+        kde_qt_minversion=">= Qt 2.0.2"
+      fi
+    fi
+    if test "$kde_qtver" = "3"; then
+      if test $kde_qtsubver -gt 0; then
+        kde_qt_minversion=">= Qt 3.1.0"
+      else
+        kde_qt_minversion=">= Qt 3.0"
+      fi
+    fi
+    if test "$kde_qtver" = "1"; then
+      kde_qt_minversion=">= 1.42 and < 2.0"
+    fi
+  else
+     kde_qt_minversion=
+  fi
+
+  if test -z ""; then
+     if test $kde_qtver = 3; then
+       if test $kde_qtsubver -gt 0; then
+         kde_qt_verstring="QT_VERSION >= 0x030100"
+       else
+         kde_qt_verstring="QT_VERSION >= 300"
+       fi
+     fi
+     if test $kde_qtver = 2; then
+       if test $kde_qtsubver -gt 0; then
+         kde_qt_verstring="QT_VERSION >= 222"
+       else
+         kde_qt_verstring="QT_VERSION >= 200"
+       fi
+     fi
+     if test $kde_qtver = 1; then
+      kde_qt_verstring="QT_VERSION >= 142 && QT_VERSION < 200"
+     fi
+  else
+     kde_qt_verstring=
+  fi
+
+  if test $kde_qtver = 3; then
+    kde_qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt /usr/share/qt3"
+  fi
+  if test $kde_qtver = 2; then
+     kde_qt_dirs="$QTDIR /usr/lib/qt2 /usr/lib/qt"
+  fi
+  if test $kde_qtver = 1; then
+     kde_qt_dirs="$QTDIR /usr/lib/qt"
+  fi
+
+
+    kdelibsuff=none
+    # Check whether --enable-libsuffix was given.
+if test "${enable_libsuffix+set}" = set; then
+  enableval=$enable_libsuffix; kdelibsuff=$enableval
+fi
+
+    if test "$kdelibsuff" = "none"; then
+        if test -d /lib64 ; then
+            kdelibsuff=64
+        else
+            kdelibsuff=
+        fi
+    fi
+    if test -z "$kdelibsuff"; then
+        { echo "$as_me:$LINENO: result: not using lib directory suffix" >&5
+echo "${ECHO_T}not using lib directory suffix" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define KDELIBSUFF ""
+_ACEOF
+
+    else
+        if test "$libdir" = '${exec_prefix}/lib'; then
+            libdir="$libdir${kdelibsuff}"
+            libdir="$libdir"
+          fi
+
+cat >>confdefs.h <<_ACEOF
+#define KDELIBSUFF "\"${kdelibsuff}\""
+_ACEOF
+
+        { echo "$as_me:$LINENO: result: using lib directory suffix $kdelibsuff" >&5
+echo "${ECHO_T}using lib directory suffix $kdelibsuff" >&6; }
+    fi
+
+
+{ echo "$as_me:$LINENO: checking for KDE" >&5
+echo $ECHO_N "checking for KDE... $ECHO_C" >&6; }
+
+if test "${prefix}" != NONE; then
+  kde_includes=${prefix}/include
+  ac_kde_includes=$prefix/include
+
+  if test "${exec_prefix}" != NONE; then
+     kde_libraries=${libdir}
+     ac_kde_libraries=$libdir
+     if test "$ac_kde_libraries" = '${exec_prefix}/lib'${kdelibsuff}; then
+	ac_kde_libraries=$exec_prefix/lib${kdelibsuff}
+     fi
+  else
+     kde_libraries=${prefix}/lib${kdelibsuff}
+     ac_kde_libraries=$prefix/lib${kdelibsuff}
+  fi
+else
+  ac_kde_includes=
+  ac_kde_libraries=
+  kde_libraries=""
+  kde_includes=""
+fi
+
+if test "${ac_cv_have_kde+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  #try to guess kde locations
+
+if test "$kde_qtver" = 1; then
+  kde_check_header="ksock.h"
+  kde_check_lib="libkdecore.la"
+else
+  kde_check_header="ksharedptr.h"
+  kde_check_lib="libkio.la"
+fi
+
+if test -z ""; then
+
+kde_incdirs="/usr/lib/kde/include /usr/local/kde/include /usr/local/include /usr/kde/include /usr/include/kde /usr/include /opt/kde3/include /opt/kde/include $x_includes $qt_includes"
+test -n "$KDEDIR" && kde_incdirs="$KDEDIR/include $KDEDIR/include/kde $KDEDIR $kde_incdirs"
+kde_incdirs="$ac_kde_includes $kde_incdirs"
+
+kde_incdir=NO
+for i in $kde_incdirs;
+do
+  for j in $kde_check_header;
+  do
+    echo "configure: 28275: $i/$j" >&5
+    if test -r "$i/$j"; then
+      echo "taking that" >&5
+      kde_incdir=$i
+      break 2
+    fi
+  done
+done
+
+ac_kde_includes="$kde_incdir"
+
+if test -n "$ac_kde_includes" && test ! -r "$ac_kde_includes/$kde_check_header"; then
+ { { echo "$as_me:$LINENO: error:
+In the prefix you've chosen there are no KDE headers installed. This will fail.
+Check this please and use another prefix (or use --without-kde)!" >&5
+echo "$as_me: error:
+In the prefix you've chosen there are no KDE headers installed. This will fail.
+Check this please and use another prefix (or use --without-kde)!" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+kde_libdirs="/usr/lib/kde/lib${kdelibsuff} /usr/local/kde/lib${kdelibsuff} /usr/kde/lib${kdelibsuff} /usr/lib${kdelibsuff}/kde /usr/lib${kdelibsuff}/kde3 /usr/lib${kdelibsuff} /usr/X11R6/lib${kdelibsuff} /usr/local/lib${kdelibsuff} /opt/kde3/lib${kdelibsuff} /opt/kde/lib${kdelibsuff} /usr/X11R6/kde/lib${kdelibsuff}"
+test -n "$KDEDIR" && kde_libdirs="$KDEDIR/lib${kdelibsuff} $KDEDIR $kde_libdirs"
+kde_libdirs="$ac_kde_libraries $libdir $kde_libdirs"
+
+kde_libdir=NO
+for i in $kde_libdirs;
+do
+  for j in $kde_check_lib;
+  do
+    echo "configure: 28305: $i/$j" >&5
+    if test -r "$i/$j"; then
+      echo "taking that" >&5
+      kde_libdir=$i
+      break 2
+    fi
+  done
+done
+
+ac_kde_libraries="$kde_libdir"
+
+kde_widgetdir=NO
+
+kde_widgetdir=NO
+for i in $kde_libdirs;
+do
+  for j in "kde3/plugins/designer/kdewidgets.la";
+  do
+    echo "configure: 28323: $i/$j" >&5
+    if test -r "$i/$j"; then
+      echo "taking that" >&5
+      kde_widgetdir=$i
+      break 2
+    fi
+  done
+done
+
+
+if test -n "$ac_kde_libraries" && test ! -r "$ac_kde_libraries/$kde_check_lib"; then
+{ { echo "$as_me:$LINENO: error:
+in the prefix, you've chosen, are no KDE libraries installed. This will fail.
+So, check this please and use another prefix!" >&5
+echo "$as_me: error:
+in the prefix, you've chosen, are no KDE libraries installed. This will fail.
+So, check this please and use another prefix!" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+if test -n "$kde_widgetdir" && test ! -r "$kde_widgetdir/kde3/plugins/designer/kdewidgets.la"; then
+{ { echo "$as_me:$LINENO: error:
+I can't find the designer plugins. These are required and should have been installed
+by kdelibs" >&5
+echo "$as_me: error:
+I can't find the designer plugins. These are required and should have been installed
+by kdelibs" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+if test -n "$kde_widgetdir"; then
+    kde_widgetdir="$kde_widgetdir/kde3/plugins/designer"
+fi
+
+
+if test "$ac_kde_includes" = NO || test "$ac_kde_libraries" = NO || test "$kde_widgetdir" = NO; then
+  ac_cv_have_kde="have_kde=no"
+else
+  ac_cv_have_kde="have_kde=yes \
+    ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries"
+fi
+
+else
+  ac_cv_have_kde="have_kde=no"
+
+fi
+
+fi
+
+eval "$ac_cv_have_kde"
+
+if test $have_kde = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TO_KDE 1
+_ACEOF
+
+fi
+
+if test "$have_kde" != "yes"; then
+ if test "${prefix}" = NONE; then
+  ac_kde_prefix="$ac_default_prefix"
+ else
+  ac_kde_prefix="$prefix"
+ fi
+ if test "$exec_prefix" = NONE; then
+  ac_kde_exec_prefix="$ac_kde_prefix"
+  { echo "$as_me:$LINENO: result: will be installed in $ac_kde_prefix" >&5
+echo "${ECHO_T}will be installed in $ac_kde_prefix" >&6; }
+ else
+  ac_kde_exec_prefix="$exec_prefix"
+  { echo "$as_me:$LINENO: result: will be installed in $ac_kde_prefix and $ac_kde_exec_prefix" >&5
+echo "${ECHO_T}will be installed in $ac_kde_prefix and $ac_kde_exec_prefix" >&6; }
+ fi
+
+ kde_libraries="${libdir}"
+ kde_includes=${ac_kde_prefix}/include
+
+else
+  ac_cv_have_kde="have_kde=yes \
+    ac_kde_includes=$ac_kde_includes ac_kde_libraries=$ac_kde_libraries"
+  { echo "$as_me:$LINENO: result: libraries $ac_kde_libraries, headers $ac_kde_includes" >&5
+echo "${ECHO_T}libraries $ac_kde_libraries, headers $ac_kde_includes" >&6; }
+
+  kde_libraries="$ac_kde_libraries"
+  kde_includes="$ac_kde_includes"
+fi
+
+
+
+if test "$kde_includes" = "$x_includes" || test "$kde_includes" = "$qt_includes"  || test "$kde_includes" = "/usr/include"; then
+ KDE_INCLUDES=""
+else
+ KDE_INCLUDES="-I$kde_includes"
+ all_includes="$KDE_INCLUDES $all_includes"
+fi
+
+KDE_LDFLAGS="-L$kde_libraries"
+if test ! "$kde_libraries" = "$x_libraries" && test ! "$kde_libraries" = "$qt_libraries" ; then
+ all_libraries="$all_libraries $KDE_LDFLAGS"
+fi
+
+
+
+
+
+
+all_libraries="$all_libraries $USER_LDFLAGS"
+all_includes="$all_includes $USER_INCLUDES"
+
+
+
+
+ac_kde_libraries="$kde_libdir"
+
+
+
+
+
+  # Check whether --enable-path-check was given.
+if test "${enable_path_check+set}" = set; then
+  enableval=$enable_path_check;
+  if test "$enableval" = "no";
+    then ac_use_path_checking="default"
+    else ac_use_path_checking=""
+  fi
+
+else
+
+  if test "$kde_qtver" = 1;
+    then ac_use_path_checking=""
+    else ac_use_path_checking="default"
+  fi
+
+
+fi
+
+
+
+
+{ echo "$as_me:$LINENO: checking for KDE paths" >&5
+echo $ECHO_N "checking for KDE paths... $ECHO_C" >&6; }
+kde_result=""
+kde_cached_paths=yes
+if test "${kde_cv_all_paths+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+if test "$ac_use_path_checking" = "default"; then
+
+  if test -z "$kde_htmldir"; then
+    kde_htmldir='\${prefix}/share/doc/HTML'
+  fi
+  if test -z "$kde_appsdir"; then
+    kde_appsdir='\${prefix}/share/applnk'
+  fi
+  if test -z "$kde_icondir"; then
+    kde_icondir='\${prefix}/share/icons'
+  fi
+  if test -z "$kde_sounddir"; then
+    kde_sounddir='\${prefix}/share/sounds'
+  fi
+  if test -z "$kde_datadir"; then
+    kde_datadir='\${prefix}/share/apps'
+  fi
+  if test -z "$kde_locale"; then
+    kde_locale='\${prefix}/share/locale'
+  fi
+  if test -z "$kde_cgidir"; then
+    kde_cgidir='\${exec_prefix}/cgi-bin'
+  fi
+  if test -z "$kde_confdir"; then
+    kde_confdir='\${prefix}/share/config'
+  fi
+  if test -z "$kde_mimedir"; then
+    kde_mimedir='\${prefix}/share/mimelnk'
+  fi
+  if test -z "$kde_toolbardir"; then
+    kde_toolbardir='\${prefix}/share/toolbar'
+  fi
+  if test -z "$kde_wallpaperdir"; then
+    kde_wallpaperdir='\${prefix}/share/wallpapers'
+  fi
+  if test -z "$kde_templatesdir"; then
+    kde_templatesdir='\${prefix}/share/templates'
+  fi
+  if test -z "$kde_bindir"; then
+    kde_bindir='\${exec_prefix}/bin'
+  fi
+  if test -z "$kde_servicesdir"; then
+    kde_servicesdir='\${prefix}/share/services'
+  fi
+  if test -z "$kde_servicetypesdir"; then
+    kde_servicetypesdir='\${prefix}/share/servicetypes'
+  fi
+  if test -z "$kde_moduledir"; then
+    if test "$kde_qtver" = "2"; then
+      kde_moduledir='\${libdir}/kde2'
+    else
+      kde_moduledir='\${libdir}/kde3'
+    fi
+  fi
+  if test -z "$kde_styledir"; then
+    kde_styledir='\${libdir}/kde3/plugins/styles'
+  fi
+  if test -z "$kde_widgetdir"; then
+    kde_widgetdir='\${libdir}/kde3/plugins/designer'
+  fi
+
+
+  kde_cv_all_paths="kde_have_all_paths=\"yes\" \
+	kde_htmldir=\"$kde_htmldir\" \
+	kde_appsdir=\"$kde_appsdir\" \
+	kde_icondir=\"$kde_icondir\" \
+	kde_sounddir=\"$kde_sounddir\" \
+	kde_datadir=\"$kde_datadir\" \
+	kde_locale=\"$kde_locale\" \
+	kde_cgidir=\"$kde_cgidir\" \
+	kde_confdir=\"$kde_confdir\" \
+	kde_mimedir=\"$kde_mimedir\" \
+	kde_toolbardir=\"$kde_toolbardir\" \
+	kde_wallpaperdir=\"$kde_wallpaperdir\" \
+	kde_templatesdir=\"$kde_templatesdir\" \
+	kde_bindir=\"$kde_bindir\" \
+	kde_servicesdir=\"$kde_servicesdir\" \
+	kde_servicetypesdir=\"$kde_servicetypesdir\" \
+	kde_moduledir=\"$kde_moduledir\" \
+   kde_styledir=\"$kde_styledir\" \
+	kde_widgetdir=\"$kde_widgetdir\" \
+	kde_result=defaults"
+
+
+else
+
+  if test $kde_qtver = 1; then
+     { { echo "$as_me:$LINENO: error: KDE 1 is too old" >&5
+echo "$as_me: error: KDE 1 is too old" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+     { { echo "$as_me:$LINENO: error: path checking not yet supported for KDE 2" >&5
+echo "$as_me: error: path checking not yet supported for KDE 2" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+
+fi
+
+  kde_cached_paths=no
+
+fi
+
+
+eval "$ac_cv_have_kde"
+# mrj, don't test if we don't have kde
+if test $have_kde = "no"; then
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+else
+  eval "$kde_cv_all_paths"
+   if test -z "$kde_htmldir" || test -z "$kde_appsdir" ||
+   test -z "$kde_icondir" || test -z "$kde_sounddir" ||
+   test -z "$kde_datadir" || test -z "$kde_locale"  ||
+   test -z "$kde_cgidir"  || test -z "$kde_confdir" ||
+   test -z "$kde_mimedir" || test -z "$kde_toolbardir" ||
+   test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" ||
+   test -z "$kde_bindir" || test -z "$kde_servicesdir" ||
+   test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" ||
+   test -z "$kde_styledir" || test -z "kde_widgetdir"
+   test "x$kde_have_all_paths" != "xyes"; then
+     kde_have_all_paths=no
+  fi
+
+  if test "$kde_have_all_paths" = "no" && test "$kde_cached_paths" = "yes"; then
+    # wrong values were cached, may be, we can set better ones
+    kde_result=
+    kde_htmldir= kde_appsdir= kde_icondir= kde_sounddir=
+    kde_datadir= kde_locale=  kde_cgidir=  kde_confdir=
+    kde_mimedir= kde_toolbardir= kde_wallpaperdir= kde_templatesdir=
+    kde_bindir= kde_servicesdir= kde_servicetypesdir= kde_moduledir=
+    kde_have_all_paths=
+    kde_styledir=
+    kde_widgetdir=
+
+if test "$ac_use_path_checking" = "default"; then
+
+  if test -z "$kde_htmldir"; then
+    kde_htmldir='\${prefix}/share/doc/HTML'
+  fi
+  if test -z "$kde_appsdir"; then
+    kde_appsdir='\${prefix}/share/applnk'
+  fi
+  if test -z "$kde_icondir"; then
+    kde_icondir='\${prefix}/share/icons'
+  fi
+  if test -z "$kde_sounddir"; then
+    kde_sounddir='\${prefix}/share/sounds'
+  fi
+  if test -z "$kde_datadir"; then
+    kde_datadir='\${prefix}/share/apps'
+  fi
+  if test -z "$kde_locale"; then
+    kde_locale='\${prefix}/share/locale'
+  fi
+  if test -z "$kde_cgidir"; then
+    kde_cgidir='\${exec_prefix}/cgi-bin'
+  fi
+  if test -z "$kde_confdir"; then
+    kde_confdir='\${prefix}/share/config'
+  fi
+  if test -z "$kde_mimedir"; then
+    kde_mimedir='\${prefix}/share/mimelnk'
+  fi
+  if test -z "$kde_toolbardir"; then
+    kde_toolbardir='\${prefix}/share/toolbar'
+  fi
+  if test -z "$kde_wallpaperdir"; then
+    kde_wallpaperdir='\${prefix}/share/wallpapers'
+  fi
+  if test -z "$kde_templatesdir"; then
+    kde_templatesdir='\${prefix}/share/templates'
+  fi
+  if test -z "$kde_bindir"; then
+    kde_bindir='\${exec_prefix}/bin'
+  fi
+  if test -z "$kde_servicesdir"; then
+    kde_servicesdir='\${prefix}/share/services'
+  fi
+  if test -z "$kde_servicetypesdir"; then
+    kde_servicetypesdir='\${prefix}/share/servicetypes'
+  fi
+  if test -z "$kde_moduledir"; then
+    if test "$kde_qtver" = "2"; then
+      kde_moduledir='\${libdir}/kde2'
+    else
+      kde_moduledir='\${libdir}/kde3'
+    fi
+  fi
+  if test -z "$kde_styledir"; then
+    kde_styledir='\${libdir}/kde3/plugins/styles'
+  fi
+  if test -z "$kde_widgetdir"; then
+    kde_widgetdir='\${libdir}/kde3/plugins/designer'
+  fi
+
+
+  kde_cv_all_paths="kde_have_all_paths=\"yes\" \
+	kde_htmldir=\"$kde_htmldir\" \
+	kde_appsdir=\"$kde_appsdir\" \
+	kde_icondir=\"$kde_icondir\" \
+	kde_sounddir=\"$kde_sounddir\" \
+	kde_datadir=\"$kde_datadir\" \
+	kde_locale=\"$kde_locale\" \
+	kde_cgidir=\"$kde_cgidir\" \
+	kde_confdir=\"$kde_confdir\" \
+	kde_mimedir=\"$kde_mimedir\" \
+	kde_toolbardir=\"$kde_toolbardir\" \
+	kde_wallpaperdir=\"$kde_wallpaperdir\" \
+	kde_templatesdir=\"$kde_templatesdir\" \
+	kde_bindir=\"$kde_bindir\" \
+	kde_servicesdir=\"$kde_servicesdir\" \
+	kde_servicetypesdir=\"$kde_servicetypesdir\" \
+	kde_moduledir=\"$kde_moduledir\" \
+   kde_styledir=\"$kde_styledir\" \
+	kde_widgetdir=\"$kde_widgetdir\" \
+	kde_result=defaults"
+
+
+else
+
+  if test $kde_qtver = 1; then
+     { { echo "$as_me:$LINENO: error: KDE 1 is too old" >&5
+echo "$as_me: error: KDE 1 is too old" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+     { { echo "$as_me:$LINENO: error: path checking not yet supported for KDE 2" >&5
+echo "$as_me: error: path checking not yet supported for KDE 2" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+
+fi
+
+    eval "$kde_cv_all_paths"
+     if test -z "$kde_htmldir" || test -z "$kde_appsdir" ||
+   test -z "$kde_icondir" || test -z "$kde_sounddir" ||
+   test -z "$kde_datadir" || test -z "$kde_locale"  ||
+   test -z "$kde_cgidir"  || test -z "$kde_confdir" ||
+   test -z "$kde_mimedir" || test -z "$kde_toolbardir" ||
+   test -z "$kde_wallpaperdir" || test -z "$kde_templatesdir" ||
+   test -z "$kde_bindir" || test -z "$kde_servicesdir" ||
+   test -z "$kde_servicetypesdir" || test -z "$kde_moduledir" ||
+   test -z "$kde_styledir" || test -z "kde_widgetdir"
+   test "x$kde_have_all_paths" != "xyes"; then
+     kde_have_all_paths=no
+  fi
+
+    kde_result="$kde_result (cache overridden)"
+  fi
+
+  if test "$kde_have_all_paths" = "no"; then
+    { { echo "$as_me:$LINENO: error: configure could not run a little KDE program to test the environment.
+Since it had compiled and linked before, it must be a strange problem on your system.
+Look at config.log for details. If you are not able to fix this, look at
+http://www.kde.org/faq/installation.html or any www.kde.org mirror.
+(If you're using an egcs version on Linux, you may update binutils!)
+" >&5
+echo "$as_me: error: configure could not run a little KDE program to test the environment.
+Since it had compiled and linked before, it must be a strange problem on your system.
+Look at config.log for details. If you are not able to fix this, look at
+http://www.kde.org/faq/installation.html or any www.kde.org mirror.
+(If you're using an egcs version on Linux, you may update binutils!)
+" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    rm -f conftest*
+    { echo "$as_me:$LINENO: result: $kde_result" >&5
+echo "${ECHO_T}$kde_result" >&6; }
+  fi
+
+  bindir=$kde_bindir
+
+
+
+        kde_default_bindirs="/usr/bin /usr/local/bin /opt/local/bin /usr/X11R6/bin /opt/kde/bin /opt/kde3/bin /usr/kde/bin /usr/local/kde/bin"
+        test -n "$KDEDIR" && kde_default_bindirs="$KDEDIR/bin $kde_default_bindirs"
+        if test -n "$KDEDIRS"; then
+           kde_save_IFS=$IFS
+           IFS=:
+           for dir in $KDEDIRS; do
+                kde_default_bindirs="$dir/bin $kde_default_bindirs "
+           done
+           IFS=$kde_save_IFS
+        fi
+        kde_default_bindirs="$exec_prefix/bin $prefix/bin $kde_default_bindirs"
+
+   { echo "$as_me:$LINENO: checking for dcopidl" >&5
+echo $ECHO_N "checking for dcopidl... $ECHO_C" >&6; }
+   if test -n "$DCOPIDL"; then
+        kde_cv_path="$DCOPIDL";
+   else
+        kde_cache=`echo dcopidl | sed 'y%./+-%__p_%'`
+
+        if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        kde_cv_path="NONE"
+	dirs="$kde_default_bindirs"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/dcopidl"; then
+	    if test -n ""
+	    then
+              evalstr="$dir/dcopidl  2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/dcopidl"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/dcopidl"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+
+fi
+
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+
+    { { echo "$as_me:$LINENO: error: The important program dcopidl was not found!
+Please check whether you installed KDE correctly.
+" >&5
+echo "$as_me: error: The important program dcopidl was not found!
+Please check whether you installed KDE correctly.
+" >&2;}
+   { (exit 1); exit 1; }; }
+
+   else
+      { echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+echo "${ECHO_T}$kde_cv_path" >&6; }
+      DCOPIDL=$kde_cv_path
+
+   fi
+
+
+   { echo "$as_me:$LINENO: checking for dcopidl2cpp" >&5
+echo $ECHO_N "checking for dcopidl2cpp... $ECHO_C" >&6; }
+   if test -n "$DCOPIDL2CPP"; then
+        kde_cv_path="$DCOPIDL2CPP";
+   else
+        kde_cache=`echo dcopidl2cpp | sed 'y%./+-%__p_%'`
+
+        if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        kde_cv_path="NONE"
+	dirs="$kde_default_bindirs"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/dcopidl2cpp"; then
+	    if test -n ""
+	    then
+              evalstr="$dir/dcopidl2cpp  2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/dcopidl2cpp"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/dcopidl2cpp"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+
+fi
+
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+
+    { { echo "$as_me:$LINENO: error: The important program dcopidl2cpp was not found!
+Please check whether you installed KDE correctly.
+" >&5
+echo "$as_me: error: The important program dcopidl2cpp was not found!
+Please check whether you installed KDE correctly.
+" >&2;}
+   { (exit 1); exit 1; }; }
+
+   else
+      { echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+echo "${ECHO_T}$kde_cv_path" >&6; }
+      DCOPIDL2CPP=$kde_cv_path
+
+   fi
+
+
+   { echo "$as_me:$LINENO: checking for mcopidl" >&5
+echo $ECHO_N "checking for mcopidl... $ECHO_C" >&6; }
+   if test -n "$MCOPIDL"; then
+        kde_cv_path="$MCOPIDL";
+   else
+        kde_cache=`echo mcopidl | sed 'y%./+-%__p_%'`
+
+        if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        kde_cv_path="NONE"
+	dirs="$kde_default_bindirs"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/mcopidl"; then
+	    if test -n ""
+	    then
+              evalstr="$dir/mcopidl  2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/mcopidl"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/mcopidl"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+
+fi
+
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+
+    { { echo "$as_me:$LINENO: error: The important program mcopidl was not found!
+Please check whether you installed aRts correctly.
+" >&5
+echo "$as_me: error: The important program mcopidl was not found!
+Please check whether you installed aRts correctly.
+" >&2;}
+   { (exit 1); exit 1; }; }
+
+   else
+      { echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+echo "${ECHO_T}$kde_cv_path" >&6; }
+      MCOPIDL=$kde_cv_path
+
+   fi
+
+
+   { echo "$as_me:$LINENO: checking for artsc-config" >&5
+echo $ECHO_N "checking for artsc-config... $ECHO_C" >&6; }
+   if test -n "$ARTSCCONFIG"; then
+        kde_cv_path="$ARTSCCONFIG";
+   else
+        kde_cache=`echo artsc-config | sed 'y%./+-%__p_%'`
+
+        if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        kde_cv_path="NONE"
+	dirs="$kde_default_bindirs"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/artsc-config"; then
+	    if test -n ""
+	    then
+              evalstr="$dir/artsc-config  2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/artsc-config"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/artsc-config"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+
+fi
+
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+
+    { { echo "$as_me:$LINENO: error: The important program artsc-config was not found!
+Please check whether you installed aRts correctly.
+" >&5
+echo "$as_me: error: The important program artsc-config was not found!
+Please check whether you installed aRts correctly.
+" >&2;}
+   { (exit 1); exit 1; }; }
+
+   else
+      { echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+echo "${ECHO_T}$kde_cv_path" >&6; }
+      ARTSCCONFIG=$kde_cv_path
+
+   fi
+
+
+   { echo "$as_me:$LINENO: checking for kde-config" >&5
+echo $ECHO_N "checking for kde-config... $ECHO_C" >&6; }
+   if test -n "$KDECONFIG"; then
+        kde_cv_path="$KDECONFIG";
+   else
+        kde_cache=`echo kde-config | sed 'y%./+-%__p_%'`
+
+        if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        kde_cv_path="NONE"
+	dirs="$kde_default_bindirs"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/kde-config"; then
+	    if test -n ""
+	    then
+              evalstr="$dir/kde-config  2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/kde-config"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/kde-config"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+
+fi
+
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+
+   else
+      { echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+echo "${ECHO_T}$kde_cv_path" >&6; }
+      KDECONFIG=$kde_cv_path
+
+   fi
+
+
+   { echo "$as_me:$LINENO: checking for meinproc" >&5
+echo $ECHO_N "checking for meinproc... $ECHO_C" >&6; }
+   if test -n "$MEINPROC"; then
+        kde_cv_path="$MEINPROC";
+   else
+        kde_cache=`echo meinproc | sed 'y%./+-%__p_%'`
+
+        if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        kde_cv_path="NONE"
+	dirs="$kde_default_bindirs"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/meinproc"; then
+	    if test -n ""
+	    then
+              evalstr="$dir/meinproc  2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/meinproc"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/meinproc"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+
+fi
+
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+
+   else
+      { echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+echo "${ECHO_T}$kde_cv_path" >&6; }
+      MEINPROC=$kde_cv_path
+
+   fi
+
+
+        if test -n "$MEINPROC" && test ! "$MEINPROC" = "compiled"; then
+ 	    kde_sharedirs="/usr/share/kde /usr/local/share /usr/share /opt/kde3/share /opt/kde/share $prefix/share"
+            test -n "$KDEDIR" && kde_sharedirs="$KDEDIR/share $kde_sharedirs"
+
+KDE_XSL_STYLESHEET=NO
+for i in $kde_sharedirs;
+do
+  for j in apps/ksgmltools2/customization/kde-chunk.xsl;
+  do
+    echo "configure: 29146: $i/$j" >&5
+    if test -r "$i/$j"; then
+      echo "taking that" >&5
+      KDE_XSL_STYLESHEET=$i
+      break 2
+    fi
+  done
+done
+
+	    if test "$KDE_XSL_STYLESHEET" = "NO"; then
+		KDE_XSL_STYLESHEET=""
+	    else
+                KDE_XSL_STYLESHEET="$KDE_XSL_STYLESHEET/apps/ksgmltools2/customization/kde-chunk.xsl"
+	    fi
+        fi
+
+        DCOP_DEPENDENCIES='$(DCOPIDL)'
+
+
+
+
+
+
+
+
+
+        if test -x "$KDECONFIG"; then # it can be "compiled"
+          kde_libs_prefix=`$KDECONFIG --prefix`
+          if test -z "$kde_libs_prefix" || test ! -x "$kde_libs_prefix"; then
+               { { echo "$as_me:$LINENO: error: $KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs.
+                          This means it has been moved since you installed it.
+                          This won't work. Please recompile kdelibs for the new prefix.
+                          " >&5
+echo "$as_me: error: $KDECONFIG --prefix outputed the non existant prefix '$kde_libs_prefix' for kdelibs.
+                          This means it has been moved since you installed it.
+                          This won't work. Please recompile kdelibs for the new prefix.
+                          " >&2;}
+   { (exit 1); exit 1; }; }
+           fi
+           kde_libs_htmldir=`$KDECONFIG --install html --expandvars`
+        else
+           kde_libs_prefix='$(prefix)'
+           kde_libs_htmldir='$(kde_htmldir)'
+        fi
+
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+if test "$kde_qtver" = 1; then
+  kde_minidir="$kde_icondir/mini"
+else
+# for KDE 1 - this breaks KDE2 apps using minidir, but
+# that's the plan ;-/
+  kde_minidir="/dev/null"
+fi
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define TO_KDE 1
+_ACEOF
+
+  fi
+
+
+
+
+
+  # Check whether --enable-mt was given.
+if test "${enable_mt+set}" = set; then
+  enableval=$enable_mt; kde_use_qt_mt=$enableval
+else
+
+      if test $kde_qtver = 3 || test $kde_qtver = 0; then
+        kde_use_qt_mt=yes
+      else
+        kde_use_qt_mt=no
+      fi
+
+
+fi
+
+
+  USING_QT_MT=""
+
+
+  KDE_MT_LDFLAGS=
+  KDE_MT_LIBS=
+  if test "x$kde_use_qt_mt" = "xyes"; then
+
+
+
+    if test -z "$LIBPTHREAD"; then
+    if test -z "$USE_THREADS"; then
+      kde_check_threading_default=no
+    else
+      kde_check_threading_default=yes
+    fi
+  else
+    kde_check_threading_default=yes
+  fi
+
+  # Check whether --enable-threading was given.
+if test "${enable_threading+set}" = set; then
+  enableval=$enable_threading; kde_use_threading=$enableval
+else
+  kde_use_threading=$kde_check_threading_default
+fi
+
+
+  if test "x$kde_use_threading" = "xyes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBPTHREAD 1
+_ACEOF
+
+  fi
+
+    if test "x$kde_use_threading" = "xyes"; then
+      CXXFLAGS="$USE_THREADS -DQT_THREAD_SUPPORT $CXXFLAGS"
+      KDE_MT_LDFLAGS="$USE_THREADS"
+      KDE_MT_LIBS="$LIBPTHREAD"
+    else
+      kde_use_qt_mt=no
+    fi
+  fi
+
+
+
+  kde_qt_was_given=yes
+
+        if test -z "$LIBQT_GLOB"; then
+    if test "x$kde_use_qt_emb" = "xyes"; then
+      LIBQT_GLOB="libqte.*"
+    else
+      LIBQT_GLOB="libqt.*"
+    fi
+  fi
+
+  if test -z "$LIBQT"; then
+          if test "x$kde_use_qt_emb" = "xyes"; then
+      qtlib="qte"
+    else
+      qtlib="qt"
+    fi
+
+    kde_int_qt="-l$qtlib"
+  else
+    kde_int_qt="$LIBQT"
+    kde_lib_qt_set=yes
+  fi
+
+  if test -z "$LIBQPE"; then
+          if test "x$kde_use_qt_emb" = "xyes"; then
+      if test "x$kde_use_qt_emb_palm" = "xyes"; then
+        LIB_QPE="-lqpe"
+      else
+        LIB_QPE=""
+      fi
+    else
+      LIB_QPE=""
+    fi
+  fi
+
+
+  if test "x$kde_use_qt_mt" = "xyes"; then
+    if test -z "$LIBQT"; then
+      LIBQT="-l$qtlib-mt"
+      kde_int_qt="-l$qtlib-mt"
+    else
+      LIBQT="-l$qtlib-mt"
+      kde_int_qt="$qtlib-mt"
+    fi
+    LIBQT_GLOB="lib$qtlib-mt.*"
+    USING_QT_MT="using -mt"
+  else
+    LIBQT="-l$qtlib"
+  fi
+
+  if test $kde_qtver != 1; then
+
+
+
+{ echo "$as_me:$LINENO: checking for libpng" >&5
+echo $ECHO_N "checking for libpng... $ECHO_C" >&6; }
+if test "${ac_cv_lib_png+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+kde_save_LIBS="$LIBS"
+if test "x$kde_use_qt_emb" != "xyes"; then
+LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm -lX11 $LIBSOCKET"
+else
+LIBS="$LIBS $all_libraries $USER_LDFLAGS -lpng $LIBZ -lm"
+fi
+kde_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+    #include<png.h>
+
+int
+main ()
+{
+
+    png_structp png_ptr = png_create_read_struct(  /* image ptr */
+		PNG_LIBPNG_VER_STRING, 0, 0, 0 );
+    return( png_ptr != 0 );
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "ac_cv_lib_png='-lpng $LIBZ -lm'"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "ac_cv_lib_png=no"
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS="$kde_save_LIBS"
+CFLAGS="$kde_save_CFLAGS"
+
+fi
+if eval "test ! \"`echo $ac_cv_lib_png`\" = no"; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPNG 1
+_ACEOF
+
+  LIBPNG="$ac_cv_lib_png"
+
+  { echo "$as_me:$LINENO: result: $ac_cv_lib_png" >&5
+echo "${ECHO_T}$ac_cv_lib_png" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+  LIBPNG=""
+
+fi
+
+
+
+{ echo "$as_me:$LINENO: checking for libjpeg6b" >&5
+echo $ECHO_N "checking for libjpeg6b... $ECHO_C" >&6; }
+if test "${ac_cv_lib_jpeg_6b+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -ljpeg6b -lm"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+struct jpeg_decompress_struct;
+typedef struct jpeg_decompress_struct * j_decompress_ptr;
+typedef int size_t;
+#ifdef __cplusplus
+extern "C" {
+#endif
+    void jpeg_CreateDecompress(j_decompress_ptr cinfo,
+                                    int version, size_t structsize);
+#ifdef __cplusplus
+}
+#endif
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+
+int
+main ()
+{
+jpeg_CreateDecompress(0L, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "ac_cv_lib_jpeg_6b=-ljpeg6b"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "ac_cv_lib_jpeg_6b=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS="$ac_save_LIBS"
+CFLAGS="$ac_save_CFLAGS"
+
+fi
+
+
+if eval "test ! \"`echo $ac_cv_lib_jpeg_6b`\" = no"; then
+  LIBJPEG="$ac_cv_lib_jpeg_6b"
+  { echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_6b" >&5
+echo "${ECHO_T}$ac_cv_lib_jpeg_6b" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+
+{ echo "$as_me:$LINENO: checking for libjpeg" >&5
+echo $ECHO_N "checking for libjpeg... $ECHO_C" >&6; }
+if test "${ac_cv_lib_jpeg_normal+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_save_LIBS="$LIBS"
+LIBS="$all_libraries $USER_LDFLAGS -ljpeg -lm"
+ac_save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS $all_includes $USER_INCLUDES"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any gcc2 internal prototype to avoid an error.  */
+struct jpeg_decompress_struct;
+typedef struct jpeg_decompress_struct * j_decompress_ptr;
+typedef int size_t;
+#ifdef __cplusplus
+extern "C" {
+#endif
+    void jpeg_CreateDecompress(j_decompress_ptr cinfo,
+                                    int version, size_t structsize);
+#ifdef __cplusplus
+}
+#endif
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+
+int
+main ()
+{
+jpeg_CreateDecompress(0L, 0, 0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  eval "ac_cv_lib_jpeg_normal=-ljpeg"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	eval "ac_cv_lib_jpeg_normal=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS="$ac_save_LIBS"
+CFLAGS="$ac_save_CFLAGS"
+
+fi
+
+
+if eval "test ! \"`echo $ac_cv_lib_jpeg_normal`\" = no"; then
+  LIBJPEG="$ac_cv_lib_jpeg_normal"
+  { echo "$as_me:$LINENO: result: $ac_cv_lib_jpeg_normal" >&5
+echo "${ECHO_T}$ac_cv_lib_jpeg_normal" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+
+       LIBJPEG=
+
+
+fi
+
+
+
+fi
+
+
+
+jpeg_incdirs="$includedir /usr/include /usr/local/include $kde_extra_includes"
+
+jpeg_incdir=NO
+for i in $jpeg_incdirs;
+do
+  for j in jpeglib.h;
+  do
+    echo "configure: 29635: $i/$j" >&5
+    if test -r "$i/$j"; then
+      echo "taking that" >&5
+      jpeg_incdir=$i
+      break 2
+    fi
+  done
+done
+
+test "x$jpeg_incdir" = xNO && jpeg_incdir=
+
+if test -n "$jpeg_incdir" && test -n "$LIBJPEG" ; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBJPEG 1
+_ACEOF
+
+else
+  if test -n "$jpeg_incdir" || test -n "$LIBJPEG" ; then
+    { echo "$as_me:$LINENO: WARNING:
+There is an installation error in jpeg support. You seem to have only one
+of either the headers _or_ the libraries installed. You may need to either
+provide correct --with-extra-... options, or the development package of
+libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/
+Disabling JPEG support.
+" >&5
+echo "$as_me: WARNING:
+There is an installation error in jpeg support. You seem to have only one
+of either the headers _or_ the libraries installed. You may need to either
+provide correct --with-extra-... options, or the development package of
+libjpeg6b. You can get a source package of libjpeg from http://www.ijg.org/
+Disabling JPEG support.
+" >&2;}
+  else
+    { echo "$as_me:$LINENO: WARNING: libjpeg not found. disable JPEG support." >&5
+echo "$as_me: WARNING: libjpeg not found. disable JPEG support." >&2;}
+  fi
+  jpeg_incdir=
+  LIBJPEG=
+fi
+
+
+
+
+
+    LIBQT="$LIBQT $LIBPNG $LIBJPEG"
+  fi
+
+  { echo "$as_me:$LINENO: checking for Qt" >&5
+echo $ECHO_N "checking for Qt... $ECHO_C" >&6; }
+
+  ac_qt_includes=NO ac_qt_libraries=NO ac_qt_bindir=NO
+  qt_libraries=""
+  qt_includes=""
+
+# Check whether --with-qt-dir was given.
+if test "${with_qt_dir+set}" = set; then
+  withval=$with_qt_dir;   ac_qt_includes="$withval"/include
+         ac_qt_libraries="$withval"/lib
+         ac_qt_bindir="$withval"/bin
+
+fi
+
+
+
+# Check whether --with-qt-includes was given.
+if test "${with_qt_includes+set}" = set; then
+  withval=$with_qt_includes;
+         ac_qt_includes="$withval"
+
+fi
+
+
+
+# Check whether --with-qt-include was given.
+if test "${with_qt_include+set}" = set; then
+  withval=$with_qt_include;
+         ac_qt_includes="$ac_qt_includes $withval"
+
+fi
+
+
+  kde_qt_libs_given=no
+
+
+# Check whether --with-qt-libraries was given.
+if test "${with_qt_libraries+set}" = set; then
+  withval=$with_qt_libraries;   ac_qt_libraries="$withval"
+         kde_qt_libs_given=yes
+
+fi
+
+
+  if test "${ac_cv_have_qt+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  #try to guess Qt locations
+
+  qt_incdirs=""
+  for dir in $kde_qt_dirs; do
+     qt_incdirs="$qt_incdirs $dir/include $dir"
+  done
+  qt_incdirs="$QTINC
+              $qt_incdirs
+              /usr/local/qt/include
+              /usr/include/qt
+              /usr/include/qt2
+              /usr/include/qt3
+              /usr/include
+              /usr/X11R6/include/X11/qt
+              /usr/X11R6/include/qt
+              /usr/X11R6/include/qt2
+              /usr/X11R6/include/qt3
+              /Developer/qt/include
+              /sw/include/qt
+              /usr/qt/3/include
+              $x_includes"
+  if test "$ac_qt_includes" != "NO"; then
+     qt_incdirs="$ac_qt_includes $qt_incdirs"
+  fi
+
+  if test $kde_qtver != 1 && test $kde_qtver != 0; then
+    kde_qt_header=qstyle.h
+  else
+    kde_qt_header=qglobal.h
+  fi
+
+
+qt_incdir=NO
+for i in $qt_incdirs;
+do
+  for j in $kde_qt_header;
+  do
+    echo "configure: 29768: $i/$j" >&5
+    if test -r "$i/$j"; then
+      echo "taking that" >&5
+      qt_incdir=$i
+      break 2
+    fi
+  done
+done
+
+  ac_qt_includes="$qt_incdir"
+
+  qt_libdirs="$QTLIB
+              $qt_libdirs
+              /Developer/qt/lib
+              /sw/lib
+              /usr/X11R6/lib
+              /usr/lib
+              /usr/local/qt/lib
+              /usr/qt/3/lib
+              $x_libraries"
+  if test "$ac_qt_libraries" != "NO"; then
+    qt_libdir=$ac_qt_libraries
+  else
+    qt_libdirs="$ac_qt_libraries $qt_libdirs"
+    # if the Qt was given, the chance is too big that libqt.* doesn't exist
+    qt_libdir=NONE
+    for dir in $qt_libdirs; do
+      try="ls -1 $dir/${LIBQT_GLOB}"
+      if test -n "`$try 2> /dev/null`"; then
+        qt_libdir=$dir; break
+      else
+        echo "tried $dir" >&5
+      fi
+    done
+  fi
+
+  ac_qt_libraries="$qt_libdir"
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+  ac_cppflags_safe="$CPPFLAGS"
+  CPPFLAGS="$CPPFLAGS -I$qt_incdir $all_includes $X_CFLAGS"
+
+      cat >conftest.$ac_ext <<_ACEOF
+
+#include <qapplication.h>
+
+#ifndef Q_OS_MACX
+# error no
+#endif
+
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  have_qt_mac_native=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  have_qt_mac_native=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+  if test $have_qt_mac_native = no; then
+    echo "no mac native" >&5
+  else
+    echo "using mac native" >&5
+            LIBS="$LIBS -bind_at_load -framework Carbon -framework QuickTime -lz -framework OpenGL -framework AGL"
+  fi
+
+  CPPFLAGS="$ac_cppflags_safe"
+
+
+  case $host in
+  *-*-cygwin*)
+            ;;
+  *)
+    if test $have_qt_mac_native != yes && test "x$kde_use_qt_emb" != "xyes"; then
+
+
+
+# Check whether --enable-embedded was given.
+if test "${enable_embedded+set}" = set; then
+  enableval=$enable_embedded; kde_use_qt_emb=$enableval
+else
+  kde_use_qt_emb=no
+
+fi
+
+
+# Check whether --enable-qtopia was given.
+if test "${enable_qtopia+set}" = set; then
+  enableval=$enable_qtopia; kde_use_qt_emb_palm=$enableval
+else
+  kde_use_qt_emb_palm=no
+
+fi
+
+
+if test "$kde_use_qt_emb" = "no"; then
+
+{ echo "$as_me:$LINENO: checking for X" >&5
+echo $ECHO_N "checking for X... $ECHO_C" >&6; }
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+if test "${kde_cv_have_x+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  # One or both of the vars are not set, and there is no cached value.
+if test "{$x_includes+set}" = set || test "$x_includes" = NONE; then
+   kde_x_includes=NO
+else
+   kde_x_includes=$x_includes
+fi
+if test "{$x_libraries+set}" = set || test "$x_libraries" = NONE; then
+   kde_x_libraries=NO
+else
+   kde_x_libraries=$x_libraries
+fi
+
+# below we use the standard autoconf calls
+ac_x_libraries=$kde_x_libraries
+ac_x_includes=$kde_x_includes
+
+
+
+
+if test "$ac_x_includes" = NO; then
+  # Guess where to find include files, by looking for this one X11 .h file.
+  test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h
+
+  # First, try using that file with no special directory specified.
+cat >conftest.$ac_ext <<_ACEOF
+#include <$x_direct_test_include>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } >/dev/null && {
+	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       }; then
+  # We can compile using X headers with no special include directory.
+ac_x_includes=
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+  # Look for the header file in a standard set of common directories.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+  for ac_dir in               \
+    /usr/X11/include          \
+    /usr/X11R6/include        \
+    /usr/X11R5/include        \
+    /usr/X11R4/include        \
+                              \
+    /usr/include/X11          \
+    /usr/include/X11R6        \
+    /usr/include/X11R5        \
+    /usr/include/X11R4        \
+                              \
+    /usr/local/X11/include    \
+    /usr/local/X11R6/include  \
+    /usr/local/X11R5/include  \
+    /usr/local/X11R4/include  \
+                              \
+    /usr/local/include/X11    \
+    /usr/local/include/X11R6  \
+    /usr/local/include/X11R5  \
+    /usr/local/include/X11R4  \
+                              \
+    /usr/X386/include         \
+    /usr/x386/include         \
+    /usr/XFree86/include/X11  \
+                              \
+    /usr/include              \
+    /usr/local/include        \
+    /usr/unsupported/include  \
+    /usr/athena/include       \
+    /usr/local/x11r5/include  \
+    /usr/lpp/Xamples/include  \
+                              \
+    /usr/openwin/include      \
+    /usr/openwin/share/include \
+    ; \
+  do
+    if test -r "$ac_dir/$x_direct_test_include"; then
+      ac_x_includes=$ac_dir
+      break
+    fi
+  done
+fi
+
+rm -f conftest.err conftest.$ac_ext
+fi # $ac_x_includes = NO
+
+if test "$ac_x_libraries" = NO; then
+  # Check for the libraries.
+
+  test -z "$x_direct_test_library" && x_direct_test_library=Xt
+  test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc
+
+  # See if we find them without any special options.
+  # Don't add to $LIBS permanently.
+  ac_save_LIBS="$LIBS"
+  LIBS="-l$x_direct_test_library $LIBS"
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+int
+main ()
+{
+${x_direct_test_function}()
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  # AC_TRY_LINK(, [${x_direct_test_function}()],
+LIBS="$ac_save_LIBS"
+# We can link X programs with no special library path.
+ac_x_libraries=
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	LIBS="$ac_save_LIBS"
+# First see if replacing the include by lib works.
+# Check X11 before X11Rn because it is often a symlink to the current release.
+for ac_dir in `echo "$ac_x_includes" | sed s/include/lib/` \
+    /usr/X11/lib                        \
+    /usr/X11R6/lib                      \
+    /usr/X11R5/lib                      \
+    /usr/X11R4/lib                      \
+                                        \
+    /usr/lib/X11                        \
+    /usr/lib/X11R6                      \
+    /usr/lib/X11R5                      \
+    /usr/lib/X11R4                      \
+                                        \
+    /usr/local/X11/lib                  \
+    /usr/local/X11R6/lib                \
+    /usr/local/X11R5/lib                \
+    /usr/local/X11R4/lib                \
+                                        \
+    /usr/local/lib/X11                  \
+    /usr/local/lib/X11R6                \
+    /usr/local/lib/X11R5                \
+    /usr/local/lib/X11R4                \
+                                        \
+    /usr/X386/lib                       \
+    /usr/x386/lib                       \
+    /usr/XFree86/lib/X11                \
+                                        \
+    /usr/lib                            \
+    /usr/local/lib                      \
+    /usr/unsupported/lib                \
+    /usr/athena/lib                     \
+    /usr/local/x11r5/lib                \
+    /usr/lpp/Xamples/lib                \
+    /lib/usr/lib/X11                    \
+                                        \
+    /usr/openwin/lib                    \
+    /usr/openwin/share/lib              \
+    ; \
+do
+
+
+  for ac_extension in a so sl; do
+    if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then
+      echo "tried x dir $ac_dir" >&5
+      ac_x_libraries=$ac_dir
+      break 2
+    fi
+
+    for kdelibsuff in 32 64; do
+      ac_x_dir_with_suff=`echo $ac_dir | sed "s/lib/lib${kdelibsuff}/"`
+      if test -r $ac_x_dir_with_suff/lib${x_direct_test_library}.$ac_extension; then
+        echo "tried x dir $ac_dir" >&5
+        ac_x_libraries=$ac_dir
+        break 3
+      fi
+    done
+  done
+done
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+fi # $ac_x_libraries = NO
+
+case "$host" in
+mips-sgi-irix6*)
+  ;;
+*-*-solaris*)
+  ;;
+*)
+  rm -f -r conftest.dir
+if mkdir conftest.dir; then
+  cd conftest.dir
+  cat >Imakefile <<'_ACEOF'
+incroot:
+	@echo incroot='${INCROOT}'
+usrlibdir:
+	@echo usrlibdir='${USRLIBDIR}'
+libdir:
+	@echo libdir='${LIBDIR}'
+_ACEOF
+  if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then
+    # GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+    for ac_var in incroot usrlibdir libdir; do
+      eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`"
+    done
+    # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR.
+    for ac_extension in a so sl; do
+      if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" &&
+	 test -f "$ac_im_libdir/libX11.$ac_extension"; then
+	ac_im_usrlibdir=$ac_im_libdir; break
+      fi
+    done
+    # Screen out bogus values from the imake configuration.  They are
+    # bogus both because they are the default anyway, and because
+    # using them would break gcc on systems where it needs fixed includes.
+    case $ac_im_incroot in
+	/usr/include) ac_x_includes= ;;
+	*) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;;
+    esac
+    case $ac_im_usrlibdir in
+	/usr/lib | /lib) ;;
+	*) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;;
+    esac
+  fi
+  cd ..
+  rm -f -r conftest.dir
+fi
+
+  if test -z "$ac_x_includes"; then
+    ac_x_includes="."
+  fi
+  if test -z "$ac_x_libraries"; then
+    ac_x_libraries="/usr/lib${kdelibsuff}"
+  fi
+esac
+#from now on we use our own again
+
+# when the user already gave --x-includes, we ignore
+# what the standard autoconf macros told us.
+if test "$kde_x_includes" = NO; then
+  kde_x_includes=$ac_x_includes
+fi
+
+# for --x-libraries too
+if test "$kde_x_libraries" = NO; then
+  kde_x_libraries=$ac_x_libraries
+fi
+
+if test "$kde_x_includes" = NO; then
+  { { echo "$as_me:$LINENO: error: Can't find X includes. Please check your installation and add the correct paths!" >&5
+echo "$as_me: error: Can't find X includes. Please check your installation and add the correct paths!" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+if test "$kde_x_libraries" = NO; then
+  { { echo "$as_me:$LINENO: error: Can't find X libraries. Please check your installation and add the correct paths!" >&5
+echo "$as_me: error: Can't find X libraries. Please check your installation and add the correct paths!" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+# Record where we found X for the cache.
+kde_cv_have_x="have_x=yes \
+         kde_x_includes=$kde_x_includes kde_x_libraries=$kde_x_libraries"
+
+fi
+
+eval "$kde_cv_have_x"
+
+if test "$have_x" != yes; then
+  { echo "$as_me:$LINENO: result: $have_x" >&5
+echo "${ECHO_T}$have_x" >&6; }
+  no_x=yes
+else
+  { echo "$as_me:$LINENO: result: libraries $kde_x_libraries, headers $kde_x_includes" >&5
+echo "${ECHO_T}libraries $kde_x_libraries, headers $kde_x_includes" >&6; }
+fi
+
+if test -z "$kde_x_includes" || test "x$kde_x_includes" = xNONE; then
+  X_INCLUDES=""
+  x_includes=".";  else
+  x_includes=$kde_x_includes
+  X_INCLUDES="-I$x_includes"
+fi
+
+if test -z "$kde_x_libraries" || test "x$kde_x_libraries" = xNONE; then
+  X_LDFLAGS=""
+  x_libraries="/usr/lib";  else
+  x_libraries=$kde_x_libraries
+  X_LDFLAGS="-L$x_libraries"
+fi
+all_includes="$X_INCLUDES"
+all_libraries="$X_LDFLAGS"
+
+
+
+
+
+
+# Check for libraries that X11R6 Xt/Xaw programs need.
+ac_save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS $X_LDFLAGS"
+# SM needs ICE to (dynamically) link under SunOS 4.x (so we have to
+# check for ICE first), but we must link in the order -lSM -lICE or
+# we get undefined symbols.  So assume we have SM if we have ICE.
+# These have to be linked with before -lX11, unlike the other
+# libraries we check for below, so use a different variable.
+#  --interran at uluru.Stanford.EDU, kb at cs.umb.edu.
+{ echo "$as_me:$LINENO: checking for IceConnectionNumber in -lICE" >&5
+echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6; }
+if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lICE $X_EXTRA_LIBS $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char IceConnectionNumber ();
+int
+main ()
+{
+return IceConnectionNumber ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_ICE_IceConnectionNumber=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_ICE_IceConnectionNumber=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5
+echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6; }
+if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then
+  LIBSM="-lSM -lICE"
+fi
+
+
+LDFLAGS="$ac_save_LDFLAGS"
+
+
+
+LIB_X11='-lX11 $(LIBSOCKET)'
+
+
+{ echo "$as_me:$LINENO: checking for libXext" >&5
+echo $ECHO_N "checking for libXext... $ECHO_C" >&6; }
+if test "${kde_cv_have_libXext+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+kde_ldflags_safe="$LDFLAGS"
+kde_libs_safe="$LIBS"
+
+LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS"
+LIBS="-lXext -lX11 $LIBSOCKET"
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <stdio.h>
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+#endif
+
+int
+main ()
+{
+printf("hello Xext\n");
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  kde_cv_have_libXext=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	kde_cv_have_libXext=no
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+LDFLAGS=$kde_ldflags_safe
+LIBS=$kde_libs_safe
+
+fi
+
+
+{ echo "$as_me:$LINENO: result: $kde_cv_have_libXext" >&5
+echo "${ECHO_T}$kde_cv_have_libXext" >&6; }
+
+if test "$kde_cv_have_libXext" = "no"; then
+  { { echo "$as_me:$LINENO: error: We need a working libXext to proceed. Since configure
+can't find it itself, we stop here assuming that make wouldn't find
+them either." >&5
+echo "$as_me: error: We need a working libXext to proceed. Since configure
+can't find it itself, we stop here assuming that make wouldn't find
+them either." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+{ echo "$as_me:$LINENO: checking for Xinerama" >&5
+echo $ECHO_N "checking for Xinerama... $ECHO_C" >&6; }
+
+
+# Check whether --with-xinerama was given.
+if test "${with_xinerama+set}" = set; then
+  withval=$with_xinerama;
+    no_xinerama=no
+
+else
+
+    no_xinerama=yes
+
+
+fi
+
+
+kde_save_LDFLAGS="$LDFLAGS"
+kde_save_CFLAGS="$CFLAGS"
+kde_save_LIBS="$LIBS"
+LDFLAGS="$LDFLAGS $X_LDFLAGS $USER_LDFLAGS"
+CFLAGS="$CFLAGS -I$x_includes"
+LIBS="-lXinerama -lXext"
+
+if test "x$no_xinerama" = "xno"; then
+
+  if test "${ac_cv_have_xinerama+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+	cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+        #include <X11/Xlib.h>
+  			#include <X11/extensions/Xinerama.h>
+int
+main ()
+{
+XineramaIsActive(NULL);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_have_xinerama="yes"
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_have_xinerama="no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+
+fi
+
+else
+  ac_cv_have_xinerama=no;
+fi
+
+{ echo "$as_me:$LINENO: result: $ac_cv_have_xinerama" >&5
+echo "${ECHO_T}$ac_cv_have_xinerama" >&6; }
+
+LIBXINERAMA=""
+
+if test "$ac_cv_have_xinerama" = "yes"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_XINERAMA 1
+_ACEOF
+
+  LIBXINERAMA="-lXinerama"
+fi
+
+
+
+LDFLAGS="$kde_save_LDFLAGS"
+CFLAGS="$kde_save_CFLAGS"
+LIBS="$kde_save_LIBS"
+
+LIB_XEXT="-lXext"
+QTE_NORTTI=""
+
+else
+    CXXFLAGS=-DQWS
+  CXXFLAGS="$CXXFLAGS -fno-rtti"
+  QTE_NORTTI="-fno-rtti -DQWS"
+  X_PRE_LIBS=""
+  LIB_X11=""
+  LIB_XEXT=""
+  LIBSM=""
+  X_INCLUDES=""
+  X_LDFLAGS=""
+  x_includes=""
+  x_libraries=""
+
+
+
+
+
+
+
+fi
+
+
+
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+      LIBQT="$LIBQT $X_PRE_LIBS -lXext -lX11 $LIBSM $LIBSOCKET"
+    fi
+    ;;
+  esac
+
+  ac_cxxflags_safe="$CXXFLAGS"
+  ac_ldflags_safe="$LDFLAGS"
+  ac_libs_safe="$LIBS"
+
+  CXXFLAGS="$CXXFLAGS -I$qt_incdir $all_includes $X_CFLAGS"
+  LDFLAGS="$LDFLAGS -L$qt_libdir $all_libraries $USER_LDFLAGS $KDE_MT_LDFLAGS"
+  LIBS="$LIBS $LIBQT $KDE_MT_LIBS $X_LIBS"
+
+
+cat > conftest.$ac_ext <<EOF
+#include "confdefs.h"
+#include <qglobal.h>
+#include <qapplication.h>
+#include <qevent.h>
+#include <qstring.h>
+/* #include <qstyle.h> */
+
+int main() {
+  QString::fromLatin1("Elvis is alive");
+  return 0;
+}
+EOF
+
+
+  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && test -s conftest; then
+    rm -f conftest*
+  else
+    echo "configure: failed program was:" >&5
+    cat conftest.$ac_ext >&5
+    ac_qt_libraries="NO"
+  fi
+  rm -f conftest*
+  CXXFLAGS="$ac_cxxflags_safe"
+  LDFLAGS="$ac_ldflags_safe"
+  LIBS="$ac_libs_safe"
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+  if test "$ac_qt_includes" = NO || test "$ac_qt_libraries" = NO; then
+    ac_cv_have_qt="have_qt=no"
+    ac_qt_notfound=""
+    missing_qt_mt=""
+    if test "$ac_qt_includes" = NO; then
+      if test "$ac_qt_libraries" = NO; then
+        ac_qt_notfound="(headers and libraries)";
+      else
+        ac_qt_notfound="(headers)";
+      fi
+    else
+      if test "x$kde_use_qt_mt" = "xyes"; then
+         missing_qt_mt="Make sure that you have compiled Qt with thread support!"
+         ac_qt_notfound="(library $qtlib-mt)";
+      else
+         ac_qt_notfound="(library $qtlib)";
+      fi
+    fi
+
+    { { echo "$as_me:$LINENO: error: Qt ($kde_qt_minversion) $ac_qt_notfound not found.
+      Please check your installation! For more details about this problem,
+      look at the end of config.log.$missing_qt_mt" >&5
+echo "$as_me: error: Qt ($kde_qt_minversion) $ac_qt_notfound not found.
+      Please check your installation! For more details about this problem,
+      look at the end of config.log.$missing_qt_mt" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    have_qt="yes"
+  fi
+
+fi
+
+
+  eval "$ac_cv_have_qt"
+
+  if test "$have_qt" != yes; then
+    { echo "$as_me:$LINENO: result: $have_qt" >&5
+echo "${ECHO_T}$have_qt" >&6; };
+  else
+    ac_cv_have_qt="have_qt=yes \
+      ac_qt_includes=$ac_qt_includes ac_qt_libraries=$ac_qt_libraries"
+    qt_libraries="$ac_qt_libraries"
+    qt_includes="$ac_qt_includes"
+
+
+
+
+    { echo "$as_me:$LINENO: result:       libqt:     $LIBQT,
+      libraries: $ac_qt_libraries,
+      headers:   $ac_qt_includes $USING_QT_MT" >&5
+echo "${ECHO_T}      libqt:     $LIBQT,
+      libraries: $ac_qt_libraries,
+      headers:   $ac_qt_includes $USING_QT_MT" >&6; }
+  fi
+
+  if test "$qt_includes" = "$x_includes" || test -z "$qt_includes"; then
+   QT_INCLUDES=""
+  else
+   QT_INCLUDES="-I$qt_includes"
+   all_includes="$QT_INCLUDES $all_includes"
+  fi
+
+  if test "$qt_libraries" = "$x_libraries" || test -z "$qt_libraries"; then
+   QT_LDFLAGS=""
+  else
+   QT_LDFLAGS="-L$qt_libraries $LIBQT"
+   all_libraries="$all_libraries $QT_LDFLAGS"
+  fi
+  test -z "$KDE_MT_LDFLAGS" || all_libraries="$all_libraries $KDE_MT_LDFLAGS"
+
+
+
+
+   qt_bindirs=""
+   for dir in $kde_qt_dirs; do
+      qt_bindirs="$qt_bindirs $dir/bin $dir/src/moc"
+   done
+   qt_bindirs="$qt_bindirs /usr/bin /usr/X11R6/bin /usr/local/qt/bin"
+   if test ! "$ac_qt_bindir" = "NO"; then
+      qt_bindirs="$ac_qt_bindir $qt_bindirs"
+   fi
+
+
+   { echo "$as_me:$LINENO: checking for lrelease" >&5
+echo $ECHO_N "checking for lrelease... $ECHO_C" >&6; }
+   if test -n "$LRELEASE"; then
+        kde_cv_path="$LRELEASE";
+   else
+        kde_cache=`echo lrelease | sed 'y%./+-%__p_%'`
+
+        if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        kde_cv_path="NONE"
+	dirs="$qt_bindirs"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/lrelease"; then
+	    if test -n ""
+	    then
+              evalstr="$dir/lrelease  2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/lrelease"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/lrelease"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+
+fi
+
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+
+    { echo "$as_me:$LINENO: WARNING: No lrelease found!
+Please check whether you installed Qt correctly.
+You need to have a running lrelease binary.
+configure tried to run $ac_cv_path_lrelease and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable LRELEASE to the right one before running
+configure.
+" >&5
+echo "$as_me: WARNING: No lrelease found!
+Please check whether you installed Qt correctly.
+You need to have a running lrelease binary.
+configure tried to run $ac_cv_path_lrelease and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable LRELEASE to the right one before running
+configure.
+" >&2;}
+
+   else
+      { echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+echo "${ECHO_T}$kde_cv_path" >&6; }
+      LRELEASE=$kde_cv_path
+
+   fi
+
+
+   { echo "$as_me:$LINENO: checking for lupdate" >&5
+echo $ECHO_N "checking for lupdate... $ECHO_C" >&6; }
+   if test -n "$LUPDATE"; then
+        kde_cv_path="$LUPDATE";
+   else
+        kde_cache=`echo lupdate | sed 'y%./+-%__p_%'`
+
+        if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        kde_cv_path="NONE"
+	dirs="$qt_bindirs"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/lupdate"; then
+	    if test -n ""
+	    then
+              evalstr="$dir/lupdate  2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/lupdate"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/lupdate"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+
+fi
+
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+
+    { echo "$as_me:$LINENO: WARNING: No lupdate found!
+Please check whether you installed Qt correctly.
+You need to have a running lupdate binary.
+configure tried to run $ac_cv_path_lupdate and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable LUPDATE to the right one before running
+configure.
+" >&5
+echo "$as_me: WARNING: No lupdate found!
+Please check whether you installed Qt correctly.
+You need to have a running lupdate binary.
+configure tried to run $ac_cv_path_lupdate and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable LUPDATE to the right one before running
+configure.
+" >&2;}
+
+   else
+      { echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+echo "${ECHO_T}$kde_cv_path" >&6; }
+      LUPDATE=$kde_cv_path
+
+   fi
+
+
+
+   { echo "$as_me:$LINENO: checking for moc" >&5
+echo $ECHO_N "checking for moc... $ECHO_C" >&6; }
+   if test -n "$MOC"; then
+        kde_cv_path="$MOC";
+   else
+        kde_cache=`echo moc | sed 'y%./+-%__p_%'`
+
+        if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        kde_cv_path="NONE"
+	dirs="$qt_bindirs"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/moc"; then
+	    if test -n ""
+	    then
+              evalstr="$dir/moc  2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/moc"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/moc"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+
+fi
+
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+
+    { { echo "$as_me:$LINENO: error: No Qt meta object compiler (moc) found!
+Please check whether you installed Qt correctly.
+You need to have a running moc binary.
+configure tried to run $ac_cv_path_moc and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable MOC to the right one before running
+configure.
+" >&5
+echo "$as_me: error: No Qt meta object compiler (moc) found!
+Please check whether you installed Qt correctly.
+You need to have a running moc binary.
+configure tried to run $ac_cv_path_moc and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable MOC to the right one before running
+configure.
+" >&2;}
+   { (exit 1); exit 1; }; }
+
+   else
+      { echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+echo "${ECHO_T}$kde_cv_path" >&6; }
+      MOC=$kde_cv_path
+
+   fi
+
+   if test -z "$UIC_NOT_NEEDED"; then
+
+   { echo "$as_me:$LINENO: checking for uic" >&5
+echo $ECHO_N "checking for uic... $ECHO_C" >&6; }
+   if test -n "$UIC_PATH"; then
+        kde_cv_path="$UIC_PATH";
+   else
+        kde_cache=`echo uic | sed 'y%./+-%__p_%'`
+
+        if { as_var=kde_cv_path_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        kde_cv_path="NONE"
+	dirs="$qt_bindirs"
+	kde_save_IFS=$IFS
+	IFS=':'
+	for dir in $PATH; do
+	  dirs="$dirs $dir"
+        done
+	IFS=$kde_save_IFS
+
+        for dir in $dirs; do
+	  if test -x "$dir/uic"; then
+	    if test -n ""
+	    then
+              evalstr="$dir/uic  2>&1 "
+	      if eval $evalstr; then
+                kde_cv_path="$dir/uic"
+                break
+	      fi
+            else
+		kde_cv_path="$dir/uic"
+                break
+	    fi
+          fi
+        done
+
+        eval "kde_cv_path_$kde_cache=$kde_cv_path"
+
+
+fi
+
+
+      eval "kde_cv_path=\"`echo '$kde_cv_path_'$kde_cache`\""
+
+   fi
+
+   if test -z "$kde_cv_path" || test "$kde_cv_path" = NONE; then
+      { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+      UIC_PATH=""
+   else
+      { echo "$as_me:$LINENO: result: $kde_cv_path" >&5
+echo "${ECHO_T}$kde_cv_path" >&6; }
+      UIC_PATH=$kde_cv_path
+
+   fi
+
+     if test -z "$UIC_PATH" ; then
+
+    { echo "$as_me:$LINENO: WARNING: No Qt ui compiler (uic) found!
+Please check whether you installed Qt correctly.
+You need to have a running uic binary.
+configure tried to run $ac_cv_path_uic and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable UIC to the right one before running
+configure.
+" >&5
+echo "$as_me: WARNING: No Qt ui compiler (uic) found!
+Please check whether you installed Qt correctly.
+You need to have a running uic binary.
+configure tried to run $ac_cv_path_uic and the test didn't
+succeed. If configure shouldn't have tried this one, set
+the environment variable UIC to the right one before running
+configure.
+" >&2;}
+
+       exit 1
+     else
+
+    { echo "$as_me:$LINENO: checking whether uic supports -L " >&5
+echo $ECHO_N "checking whether uic supports -L ... $ECHO_C" >&6; }
+    kde_cache=`echo L | sed 'y% .=/+-%____p_%'`
+    if { as_var=kde_cv_prog_uic_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        cat >conftest.ui <<EOT
+        <!DOCTYPE UI><UI version="3" stdsetdef="1"></UI>
+EOT
+        ac_uic_testrun="$UIC_PATH -L /nonexistant conftest.ui >/dev/null"
+        if { (eval echo "$as_me:$LINENO: \"$ac_uic_testrun\"") >&5
+  (eval $ac_uic_testrun) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+            eval "kde_cv_prog_uic_$kde_cache=yes"
+        else
+            eval "kde_cv_prog_uic_$kde_cache=no"
+        fi
+        rm -f conftest*
+
+fi
+
+
+    if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then
+        { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+        :
+        ac_uic_supports_libpath=yes
+    else
+        { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+        :
+        ac_uic_supports_libpath=no
+    fi
+
+
+    { echo "$as_me:$LINENO: checking whether uic supports -nounload " >&5
+echo $ECHO_N "checking whether uic supports -nounload ... $ECHO_C" >&6; }
+    kde_cache=`echo nounload | sed 'y% .=/+-%____p_%'`
+    if { as_var=kde_cv_prog_uic_$kde_cache; eval "test \"\${$as_var+set}\" = set"; }; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+        cat >conftest.ui <<EOT
+        <!DOCTYPE UI><UI version="3" stdsetdef="1"></UI>
+EOT
+        ac_uic_testrun="$UIC_PATH -nounload  conftest.ui >/dev/null"
+        if { (eval echo "$as_me:$LINENO: \"$ac_uic_testrun\"") >&5
+  (eval $ac_uic_testrun) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+            eval "kde_cv_prog_uic_$kde_cache=yes"
+        else
+            eval "kde_cv_prog_uic_$kde_cache=no"
+        fi
+        rm -f conftest*
+
+fi
+
+
+    if eval "test \"`echo '$kde_cv_prog_uic_'$kde_cache`\" = yes"; then
+        { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+        :
+        ac_uic_supports_nounload=yes
+    else
+        { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+        :
+        ac_uic_supports_nounload=no
+    fi
+
+
+       UIC=$UIC_PATH
+       if test x$ac_uic_supports_libpath = xyes; then
+           UIC="$UIC -L \$(kde_widgetdir)"
+       fi
+       if test x$ac_uic_supports_nounload = xyes; then
+           UIC="$UIC -nounload"
+       fi
+     fi
+   else
+     UIC="echo uic not available: "
+   fi
+
+
+
+
+
+
+   UIC_TR="i18n"
+   if test $kde_qtver = 3; then
+     UIC_TR="tr2i18n"
+   fi
+
+
+
+
+
+  if test $have_qt_mac_native != yes; then
+    if test "x$kde_use_qt_emb" != "xyes"; then
+      LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBPNG) -lXext $(LIB_X11) $(LIBSM)'
+    else
+      LIB_QT="$kde_int_qt $LIBJPEG_QT "'$(LIBPNG)'
+    fi
+    test -z "$KDE_MT_LIBS" || LIB_QT="$LIB_QT $KDE_MT_LIBS"
+  fi
+
+
+
+
+
+
+
+
+if test $kde_qtver = 3; then
+   LIB_KDECORE="-lkdecore"
+
+   LIB_KDEUI="-lkdeui"
+
+   LIB_KIO="-lkio"
+
+   LIB_SMB="-lsmb"
+
+   LIB_KAB="-lkab"
+
+   LIB_KABC="-lkabc"
+
+   LIB_KHTML="-lkhtml"
+
+   LIB_KSPELL="-lkspell"
+
+   LIB_KPARTS="-lkparts"
+
+   LIB_KDEPRINT="-lkdeprint"
+
+   LIB_DCOP="-lDCOP"
+
+# these are for backward compatibility
+   LIB_KSYCOCA="-lkio"
+
+   LIB_KFILE="-lkio"
+
+elif test $kde_qtver = 2; then
+   LIB_KDECORE="-lkdecore"
+
+   LIB_KDEUI="-lkdeui"
+
+   LIB_KIO="-lkio"
+
+   LIB_KSYCOCA="-lksycoca"
+
+   LIB_SMB="-lsmb"
+
+   LIB_KFILE="-lkfile"
+
+   LIB_KAB="-lkab"
+
+   LIB_KHTML="-lkhtml"
+
+   LIB_KSPELL="-lkspell"
+
+   LIB_KPARTS="-lkparts"
+
+   LIB_KDEPRINT="-lkdeprint"
+
+   LIB_DCOP="-lDCOP"
+
+else
+   LIB_KDECORE=""
+
+   LIB_KDEUI=""
+
+   LIB_KIO=""
+
+   LIB_SMB=""
+
+   LIB_KAB=""
+
+   LIB_KABC=""
+
+   LIB_KHTML=""
+
+   LIB_KSPELL=""
+
+   LIB_KPARTS=""
+
+   LIB_KDEPRINT=""
+
+   LIB_DCOP=""
+
+fi
+
+
+    ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+    ac_save_CXXFLAGS="$CXXFLAGS"
+    CXXFLAGS="`echo $CXXFLAGS | sed s/-fno-exceptions//`"
+
+    { echo "$as_me:$LINENO: checking if STL implementation is SGI like" >&5
+echo $ECHO_N "checking if STL implementation is SGI like... $ECHO_C" >&6; }
+    if test "${kde_cv_stl_type_sgi+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <string>
+using namespace std;
+
+int
+main ()
+{
+
+  string astring="Hallo Welt.";
+  astring.erase(0, 6); // now astring is "Welt"
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  kde_cv_stl_type_sgi=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	kde_cv_stl_type_sgi=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+
+   { echo "$as_me:$LINENO: result: $kde_cv_stl_type_sgi" >&5
+echo "${ECHO_T}$kde_cv_stl_type_sgi" >&6; }
+
+   if test "$kde_cv_stl_type_sgi" = "yes"; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_SGI_STL 1
+_ACEOF
+
+   fi
+
+
+    if test "$kde_cv_stl_type_sgi" = "no"; then
+
+    { echo "$as_me:$LINENO: checking if STL implementation is HP like" >&5
+echo $ECHO_N "checking if STL implementation is HP like... $ECHO_C" >&6; }
+    if test "${kde_cv_stl_type_hp+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+      cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <string>
+using namespace std;
+
+int
+main ()
+{
+
+  string astring="Hello World";
+  astring.remove(0, 6); // now astring is "World"
+  return 0;
+
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  kde_cv_stl_type_hp=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	kde_cv_stl_type_hp=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+
+   { echo "$as_me:$LINENO: result: $kde_cv_stl_type_hp" >&5
+echo "${ECHO_T}$kde_cv_stl_type_hp" >&6; }
+
+   if test "$kde_cv_stl_type_hp" = "yes"; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_HP_STL 1
+_ACEOF
+
+   fi
+
+
+       if test "$kde_cv_stl_type_hp" = "no"; then
+         { { echo "$as_me:$LINENO: error: \"no known STL type found - did you forget to install libstdc++-devel ?\"" >&5
+echo "$as_me: error: \"no known STL type found - did you forget to install libstdc++-devel ?\"" >&2;}
+   { (exit 1); exit 1; }; }
+       fi
+    fi
+
+    CXXFLAGS="$ac_save_CXXFLAGS"
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+  { echo "$as_me:$LINENO: checking for oracle" >&5
+echo $ECHO_N "checking for oracle... $ECHO_C" >&6; }
+
+    have_oracle=yes
+
+
+# Check whether --with-oracle was given.
+if test "${with_oracle+set}" = set; then
+  withval=$with_oracle;
+    if test $withval = no; then
+      have_oracle=no
+    elif test $withval != yes; then
+      ORACLE_HOME=$withval
+    fi
+
+fi
+
+
+  oracle_user_inc=
+
+# Check whether --with-oracle-includes was given.
+if test "${with_oracle_includes+set}" = set; then
+  withval=$with_oracle_includes;
+    have_oracle=yes
+    oracle_user_inc=$withval
+
+fi
+
+
+  oracle_user_lib=
+
+# Check whether --with-oracle-libraries was given.
+if test "${with_oracle_libraries+set}" = set; then
+  withval=$with_oracle_libraries;
+    have_oracle=yes
+    oracle_user_lib=$withval
+
+fi
+
+
+  oracle_user_otl_ver=
+
+# Check whether --with-oci-version was given.
+if test "${with_oci_version+set}" = set; then
+  withval=$with_oci_version;
+    have_oracle=yes
+    oracle_user_otl_ver=$withval
+
+fi
+
+
+  oracle_user_instant=
+
+# Check whether --with-instant-client was given.
+if test "${with_instant_client+set}" = set; then
+  withval=$with_instant_client;
+    have_oracle=yes
+    oracle_user_instant=$withval
+
+fi
+
+
+  cflags_ora_save=$CFLAGS
+  ldflags_ora_save=$LDFLAGS
+  libs_ora_save=$LIBS
+
+  ora_cflags=
+  ora_libdir=
+  ora_ldflags=
+  ora_lib=-lclntsh
+
+  if test $have_oracle = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TO_NO_ORACLE 1
+_ACEOF
+
+    { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+  elif test "x$oracle_user_instant" != "x"; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TO_INSTANT_CLIENT 1
+_ACEOF
+
+
+    if test "x$oracle_user_lib" = "x" && test "x$oracle_user_inc" = "x"; then
+
+      for dir in `ls /usr/lib/oracle/`; do
+        echo "trying $dir" >&5
+        if expr $dir \> 10 >/dev/null; then
+          oracle_user_otl_ver=10G
+        fi
+        ora_ldflags="-L/usr/lib/oracle/$dir/client/lib"
+
+        incdir=/usr/include/oracle/$dir/client
+        if ! test -d $incdir; then
+          { { echo "$as_me:$LINENO: error: $incdir doesn't exist. Please install the sdk package or use --oracle-includes." >&5
+echo "$as_me: error: $incdir doesn't exist. Please install the sdk package or use --oracle-includes." >&2;}
+   { (exit 1); exit 1; }; }
+        fi
+        ora_cflags="-I$incdir"
+        break
+      done
+    else
+      ora_ldflags="-L$oracle_user_lib"
+      ora_cflags="-I$oracle_user_inc"
+    fi
+  elif test "x$ORACLE_HOME" != "x"; then
+    { echo "$as_me:$LINENO: result: $ORACLE_HOME" >&5
+echo "${ECHO_T}$ORACLE_HOME" >&6; }
+
+        ora_check_inc="
+      $oracle_user_inc
+      $ORACLE_HOME/rdbms/demo
+      $ORACLE_HOME/plsql/public
+      $ORACLE_HOME/rdbms/public
+      $ORACLE_HOME/network/public
+      $ORACLE_HOME/sdk/
+      $ORACLE_HOME/include/"
+
+    for dir in $ora_check_inc; do
+      if test -d $dir; then
+        ora_cflags="$ora_cflags -I$dir"
+      fi
+    done
+
+    ora_check_lib="
+      $oracle_user_lib
+      $ORACLE_HOME/lib
+      $ORACLE_HOME/lib32
+      $ORACLE_HOME/lib64"
+
+    for dir in $ora_check_lib; do
+      if test -d $dir; then
+        ora_ldflags="$ora_ldflags -L$dir"
+      fi
+    done
+  else
+        if test -z "$oracle_user_lib" || test -z "$oracle_user_inc"; then
+       { echo "$as_me:$LINENO: WARNING: no" >&5
+echo "$as_me: WARNING: no" >&2;}
+       have_oracle=no
+     else
+      ora_ldflags="-L$oracle_user_lib"
+      ora_cflags="-I$oracle_user_inc"
+    fi
+  fi
+
+  if test "x$ORACLE_HOME" != "x"; then
+            ora_home_oops=`echo $ORACLE_HOME | $AWK '/\/$/ {print "oops"}'`
+    if test "$ora_home_oops" = "oops"; then
+      { echo "$as_me:$LINENO: WARNING: Your ORACLE_HOME environment variable ends with a
+slash (i.e. /). Oracle 10g Instant Client is known to have a problem
+with this. If you get the message \"otl_initialize failed!\" at the
+console when running TOra, this is probably why." >&5
+echo "$as_me: WARNING: Your ORACLE_HOME environment variable ends with a
+slash (i.e. /). Oracle 10g Instant Client is known to have a problem
+with this. If you get the message \"otl_initialize failed!\" at the
+console when running TOra, this is probably why." >&2;}
+    fi
+  fi
+
+  if test $have_oracle = yes; then
+    { echo "$as_me:$LINENO: checking oci works" >&5
+echo $ECHO_N "checking oci works... $ECHO_C" >&6; }
+    CFLAGS="$CFLAGS $ora_cflags"
+    LDFLAGS="$LDFLAGS $ora_ldflags"
+    LIBS="$ora_lib"
+
+    # i pulled this from one of the examples in the demo dir.
+    if test "$cross_compiling" = yes; then
+  { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+   { (exit 1); exit 1; }; }
+else
+  cat >conftest.$ac_ext <<_ACEOF
+
+      #include <oci.h>
+      Lda_Def lda;
+      ub4     hda [HDA_SIZE/(sizeof(ub4))];
+
+      int main(int c, char **v) {
+        return 0;
+      }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  found_oracle=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+found_oracle=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+    if test $found_oracle = no; then
+      { { echo "$as_me:$LINENO: error: Couldn't compile and run a simpile OCI app.
+      Try setting ORACLE_HOME or check config.log.
+      Otherwise, make sure ORACLE_HOME/lib is in /etc/ld.so.conf or LD_LIBRARY_PATH" >&5
+echo "$as_me: error: Couldn't compile and run a simpile OCI app.
+      Try setting ORACLE_HOME or check config.log.
+      Otherwise, make sure ORACLE_HOME/lib is in /etc/ld.so.conf or LD_LIBRARY_PATH" >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+
+    sqlplus=
+    if test -x "$ORACLE_HOME/bin/sqlplus"; then
+      sqlplus="$ORACLE_HOME/bin/sqlplus"
+    fi
+    if test "x${sqlplus}" = "x"; then
+      if test -x "$ORACLE_HOME/bin/sqlplusO"; then
+        sqlplus="$ORACLE_HOME/bin/sqlplusO"
+      fi
+    fi
+
+    if test "x$oracle_user_otl_ver" != "x"; then
+      otl_ver=$oracle_user_otl_ver
+    elif test "x${sqlplus}" = "x"; then
+      { { echo "$as_me:$LINENO: error: Couldn't find sqlplus. Set the Oracle version manually." >&5
+echo "$as_me: error: Couldn't find sqlplus. Set the Oracle version manually." >&2;}
+   { (exit 1); exit 1; }; }
+    else
+      # get oracle oci version. know a better way?
+      sqlplus_ver=`$sqlplus -? | $AWK '/Release/ {print $3}'`
+      echo "sqlplus_ver: $sqlplus_ver" >&5
+
+      if expr $sqlplus_ver \> 10.2 >/dev/null; then
+        otl_ver=10G_R2
+      elif expr $sqlplus_ver \> 10 >/dev/null; then
+        otl_ver=10G
+      elif expr $sqlplus_ver \> 9 >/dev/null; then
+        otl_ver=9I
+      elif expr $sqlplus_ver \< 8.1 >/dev/null; then
+        otl_ver=8
+      else
+        otl_ver=8I
+      fi
+    fi
+
+    ora_cflags="$ora_cflags -DOTL_ORA${otl_ver} -DOTL_ORA_TIMESTAMP -DOTL_ANSI_CPP -DOTL_FUNC_THROW_SPEC_ON -DOTL_EXCEPTION_ENABLE_ERROR_OFFSET -DOTL_ORA_UNICODE"
+
+    # don't change flags for all targets, just export ORA variables.
+    CFLAGS=$cflags_ora_save
+    ORACLE_CXXFLAGS=$ora_cflags
+
+
+    LDFLAGS=$ldflags_ora_save
+    ORACLE_LDFLAGS=$ora_ldflags
+
+
+    LIBS=$libs_ora_save
+    ORACLE_LIBS=$ora_lib
+
+
+    # AM_CONDITIONAL in configure.in uses this variable to enable oracle
+    # targets.
+    enable_oracle=yes
+    { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+  fi
+
+
+
+  { echo "$as_me:$LINENO: checking for qscintilla" >&5
+echo $ECHO_N "checking for qscintilla... $ECHO_C" >&6; }
+
+  scin_cflags=
+  scin_ldflags=
+
+  qscintilla_user_inc=
+
+# Check whether --with-qscintilla-includes was given.
+if test "${with_qscintilla_includes+set}" = set; then
+  withval=$with_qscintilla_includes;
+     qscintilla_user_inc=$withval
+
+fi
+
+
+  qscintilla_user_lib=
+
+# Check whether --with-qscintilla-libraries was given.
+if test "${with_qscintilla_libraries+set}" = set; then
+  withval=$with_qscintilla_libraries;
+    qscintilla_user_lib=$withval
+
+fi
+
+
+  scin_check_inc="
+    $qscintilla_user_inc
+    /usr/include/qscintilla"
+
+  for dir in $scin_check_inc; do
+    if test -d $dir; then
+      scin_cflags="$scin_cflags -I$dir"
+    fi
+  done
+
+  scin_check_lib="
+    $qscintilla_user_lib"
+
+  for dir in $scin_check_lib; do
+    if test -d $dir; then
+      scin_ldflags="$scin_ldflags -L$dir"
+    fi
+  done
+
+    cflags_scin_save=$CXXFLAGS
+  ldflags_scin_save=$LDFLAGS
+  libs_scin_save=$LIBS
+
+  CXXFLAGS="$CXXFLAGS $KDE_INCLUDES $QT_INCLUDES $scin_cflags"
+  LDFLAGS="$LDFLAGS
+    @KDE_LDFLAGS@ \
+    @X_LDFLAGS@ \
+    @QT_LDFLAGS@ \
+    @LIB_KPARTS@ \
+    @LIB_KDEPRINT@ \
+    @LIB_KDECORE@ \
+    @LIB_KDEUI@ \
+    @LIB_KIO@ \
+    @LIB_KFILE@ \
+    @LIB_DCOP@ \
+    @LIB_KHTML@ \
+    $scin_ldflags"
+  LIBS="-lqscintilla"
+
+  ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+  cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+#include <qextscintilla.h>
+#include <qextscintillalexersql.h>
+
+int
+main ()
+{
+QextScintillaLexerSQL sqlLexer(0);
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_compile") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_cxx_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest.$ac_objext; then
+  scin_works=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	scin_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+  ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  if test $scin_works = no; then
+    { { echo "$as_me:$LINENO: error: Couldn't compile a simple QScintilla application. See config.log or specify its location with --with-qscintilla-includes" >&5
+echo "$as_me: error: Couldn't compile a simple QScintilla application. See config.log or specify its location with --with-qscintilla-includes" >&2;}
+   { (exit 1); exit 1; }; }
+  fi
+
+  CXXFLAGS=$cflags_scin_save
+  LDFLAGS=$ldflags_scin_save
+  LIBS=$libs_scin_save
+
+  QSCINTILLA_CXXFLAGS=$scin_cflags
+
+  QSCINTILLA_LDFLAGS=$scin_ldflags
+
+  { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+{ echo "$as_me:$LINENO: checking lib pcre" >&5
+echo $ECHO_N "checking lib pcre... $ECHO_C" >&6; }
+
+# Check whether --with-pcre was given.
+if test "${with_pcre+set}" = set; then
+  withval=$with_pcre;
+else
+  with_pcre="yes"
+fi
+
+if test ".$with_pcre" = ".no" ; then
+  { echo "$as_me:$LINENO: result: disabled" >&5
+echo "${ECHO_T}disabled" >&6; }
+
+else
+  { echo "$as_me:$LINENO: result: (testing)" >&5
+echo "${ECHO_T}(testing)" >&6; }
+
+{ echo "$as_me:$LINENO: checking for pcre_study in -lpcre" >&5
+echo $ECHO_N "checking for pcre_study in -lpcre... $ECHO_C" >&6; }
+if test "${ac_cv_lib_pcre_pcre_study+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpcre  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pcre_study ();
+int
+main ()
+{
+return pcre_study ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_pcre_pcre_study=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_pcre_pcre_study=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_pcre_pcre_study" >&5
+echo "${ECHO_T}$ac_cv_lib_pcre_pcre_study" >&6; }
+if test $ac_cv_lib_pcre_pcre_study = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPCRE 1
+_ACEOF
+
+  LIBS="-lpcre $LIBS"
+
+fi
+
+  if test "$ac_cv_lib_pcre_pcre_study" = "yes" ; then
+     PCRE_LIBS="-lpcre"
+     { echo "$as_me:$LINENO: checking lib pcre" >&5
+echo $ECHO_N "checking lib pcre... $ECHO_C" >&6; }
+     { echo "$as_me:$LINENO: result: $PCRE_LIBS" >&5
+echo "${ECHO_T}$PCRE_LIBS" >&6; }
+
+  else
+     OLDLDFLAGS="$LDFLAGS" ; LDFLAGS="$LDFLAGS -L$with_pcre/lib"
+     OLDCPPFLAGS="$CPPFLAGS" ; CPPFLAGS="$CPPFLAGS -I$with_pcre/include"
+
+{ echo "$as_me:$LINENO: checking for pcre_compile in -lpcre" >&5
+echo $ECHO_N "checking for pcre_compile in -lpcre... $ECHO_C" >&6; }
+if test "${ac_cv_lib_pcre_pcre_compile+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpcre  $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pcre_compile ();
+int
+main ()
+{
+return pcre_compile ();
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+  (eval "$ac_link") 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && {
+	 test -z "$ac_c_werror_flag" ||
+	 test ! -s conftest.err
+       } && test -s conftest$ac_exeext &&
+       $as_test_x conftest$ac_exeext; then
+  ac_cv_lib_pcre_pcre_compile=yes
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+	ac_cv_lib_pcre_pcre_compile=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+      conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_pcre_pcre_compile" >&5
+echo "${ECHO_T}$ac_cv_lib_pcre_pcre_compile" >&6; }
+if test $ac_cv_lib_pcre_pcre_compile = yes; then
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPCRE 1
+_ACEOF
+
+  LIBS="-lpcre $LIBS"
+
+fi
+
+     CPPFLAGS="$OLDCPPFLAGS"
+     LDFLAGS="$OLDLDFLAGS"
+     if test "$ac_cv_lib_pcre_pcre_compile" = "yes" ; then
+        { echo "$as_me:$LINENO: result: .setting PCRE_LIBS -L$with_pcre/lib -lpcre" >&5
+echo "${ECHO_T}.setting PCRE_LIBS -L$with_pcre/lib -lpcre" >&6; }
+        PCRE_LIBS="-L$with_pcre/lib -lpcre"
+        test -d "$with_pcre/include" && PCRE_CFLAGS="-I$with_pcre/include"
+        { echo "$as_me:$LINENO: checking lib pcre" >&5
+echo $ECHO_N "checking lib pcre... $ECHO_C" >&6; }
+        { echo "$as_me:$LINENO: result: $PCRE_LIBS" >&5
+echo "${ECHO_T}$PCRE_LIBS" >&6; }
+
+     else
+        { echo "$as_me:$LINENO: checking lib pcre" >&5
+echo $ECHO_N "checking lib pcre... $ECHO_C" >&6; }
+        { echo "$as_me:$LINENO: result: no, (WARNING)" >&5
+echo "${ECHO_T}no, (WARNING)" >&6; }
+
+     fi
+  fi
+fi
+PCRE_LIBS=$PCRE_LIBS
+
+PCRE_CFLAGS=$PCRE_CFLAGS
+
+
+
+
+
+# Check whether --with-cppunit-prefix was given.
+if test "${with_cppunit_prefix+set}" = set; then
+  withval=$with_cppunit_prefix; cppunit_config_prefix="$withval"
+else
+  cppunit_config_prefix=""
+fi
+
+
+# Check whether --with-cppunit-exec-prefix was given.
+if test "${with_cppunit_exec_prefix+set}" = set; then
+  withval=$with_cppunit_exec_prefix; cppunit_config_exec_prefix="$withval"
+else
+  cppunit_config_exec_prefix=""
+fi
+
+
+  if test x$cppunit_config_exec_prefix != x ; then
+     cppunit_config_args="$cppunit_config_args --exec-prefix=$cppunit_config_exec_prefix"
+     if test x${CPPUNIT_CONFIG+set} != xset ; then
+        CPPUNIT_CONFIG=$cppunit_config_exec_prefix/bin/cppunit-config
+     fi
+  fi
+  if test x$cppunit_config_prefix != x ; then
+     cppunit_config_args="$cppunit_config_args --prefix=$cppunit_config_prefix"
+     if test x${CPPUNIT_CONFIG+set} != xset ; then
+        CPPUNIT_CONFIG=$cppunit_config_prefix/bin/cppunit-config
+     fi
+  fi
+
+  # Extract the first word of "cppunit-config", so it can be a program name with args.
+set dummy cppunit-config; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_CPPUNIT_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $CPPUNIT_CONFIG in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_CPPUNIT_CONFIG="$CPPUNIT_CONFIG" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  for ac_exec_ext in '' $ac_executable_extensions; do
+  if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+    ac_cv_path_CPPUNIT_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+done
+IFS=$as_save_IFS
+
+  test -z "$ac_cv_path_CPPUNIT_CONFIG" && ac_cv_path_CPPUNIT_CONFIG="no"
+  ;;
+esac
+fi
+CPPUNIT_CONFIG=$ac_cv_path_CPPUNIT_CONFIG
+if test -n "$CPPUNIT_CONFIG"; then
+  { echo "$as_me:$LINENO: result: $CPPUNIT_CONFIG" >&5
+echo "${ECHO_T}$CPPUNIT_CONFIG" >&6; }
+else
+  { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+  cppunit_version_min=1.10.2
+
+  { echo "$as_me:$LINENO: checking for Cppunit - version >= $cppunit_version_min" >&5
+echo $ECHO_N "checking for Cppunit - version >= $cppunit_version_min... $ECHO_C" >&6; }
+  no_cppunit=""
+  if test "$CPPUNIT_CONFIG" = "no" ; then
+    no_cppunit=yes
+    { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+  else
+    CPPUNIT_CFLAGS=`$CPPUNIT_CONFIG --cflags`
+    CPPUNIT_LIBS=`$CPPUNIT_CONFIG --libs`
+    cppunit_version=`$CPPUNIT_CONFIG --version`
+
+    cppunit_major_version=`echo $cppunit_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    cppunit_minor_version=`echo $cppunit_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    cppunit_micro_version=`echo $cppunit_version | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+
+    cppunit_major_min=`echo $cppunit_version_min | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
+    cppunit_minor_min=`echo $cppunit_version_min | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
+    cppunit_micro_min=`echo $cppunit_version_min | \
+           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
+
+    cppunit_version_proper=`expr \
+        $cppunit_major_version \> $cppunit_major_min \| \
+        $cppunit_major_version \= $cppunit_major_min \& \
+        $cppunit_minor_version \> $cppunit_minor_min \| \
+        $cppunit_major_version \= $cppunit_major_min \& \
+        $cppunit_minor_version \= $cppunit_minor_min \& \
+        $cppunit_micro_version \>= $cppunit_micro_min `
+
+    if test "$cppunit_version_proper" = "1" ; then
+      { echo "$as_me:$LINENO: result: $cppunit_major_version.$cppunit_minor_version.$cppunit_micro_version" >&5
+echo "${ECHO_T}$cppunit_major_version.$cppunit_minor_version.$cppunit_micro_version" >&6; }
+    else
+      { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+      no_cppunit=yes
+    fi
+  fi
+
+  if test "x$no_cppunit" = x ; then
+     found_cppunit=yes
+  else
+     CPPUNIT_CFLAGS=""
+     CPPUNIT_LIBS=""
+     :
+  fi
+
+
+
+
+
+
+if test "x$found_cppunit" = "xyes"; then
+  CPPUNIT_TRUE=
+  CPPUNIT_FALSE='#'
+else
+  CPPUNIT_TRUE='#'
+  CPPUNIT_FALSE=
+fi
+
+
+# Makefile.am uses these
+
+
+if test "$enable_mono" = yes; then
+  ENABLE_MONO_TRUE=
+  ENABLE_MONO_FALSE='#'
+else
+  ENABLE_MONO_TRUE='#'
+  ENABLE_MONO_FALSE=
+fi
+
+
+
+if test "$enable_oracle" = yes; then
+  HAVE_ORACLE_TRUE=
+  HAVE_ORACLE_FALSE='#'
+else
+  HAVE_ORACLE_TRUE='#'
+  HAVE_ORACLE_FALSE=
+fi
+
+
+ac_config_files="$ac_config_files Makefile"
+
+ac_config_files="$ac_config_files utils/Makefile"
+
+ac_config_files="$ac_config_files utils/chex/Makefile"
+
+ac_config_files="$ac_config_files src/Makefile"
+
+ac_config_files="$ac_config_files test/Makefile"
+
+ac_config_files="$ac_config_files test/configuration/Makefile"
+
+ac_config_files="$ac_config_files ext/Makefile"
+
+ac_config_files="$ac_config_files doc/Makefile"
+
+ac_config_files="$ac_config_files doc/help/Makefile"
+
+ac_config_files="$ac_config_files rpm/tora.spec"
+
+cat >confcache <<\_ACEOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs, see configure's option --config-cache.
+# It is not useful on other systems.  If it contains results you don't
+# want to keep, you may remove or edit it.
+#
+# config.status only pays attention to the cache file if you give it
+# the --recheck option to rerun configure.
+#
+# `ac_cv_env_foo' variables (set or unset) will be overridden when
+# loading this file, other *unset* `ac_cv_foo' will be assigned the
+# following values.
+
+_ACEOF
+
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, we kill variables containing newlines.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(
+  for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do
+    eval ac_val=\$$ac_var
+    case $ac_val in #(
+    *${as_nl}*)
+      case $ac_var in #(
+      *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+      esac
+      case $ac_var in #(
+      _ | IFS | as_nl) ;; #(
+      *) $as_unset $ac_var ;;
+      esac ;;
+    esac
+  done
+
+  (set) 2>&1 |
+    case $as_nl`(ac_space=' '; set) 2>&1` in #(
+    *${as_nl}ac_space=\ *)
+      # `set' does not quote correctly, so add quotes (double-quote
+      # substitution turns \\\\ into \\, and sed turns \\ into \).
+      sed -n \
+	"s/'/'\\\\''/g;
+	  s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p"
+      ;; #(
+    *)
+      # `set' quotes correctly as required by POSIX, so do not add quotes.
+      sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+      ;;
+    esac |
+    sort
+) |
+  sed '
+     /^ac_cv_env_/b end
+     t clear
+     :clear
+     s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+     t end
+     s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
+     :end' >>confcache
+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
+  if test -w "$cache_file"; then
+    test "x$cache_file" != "x/dev/null" &&
+      { echo "$as_me:$LINENO: updating cache $cache_file" >&5
+echo "$as_me: updating cache $cache_file" >&6;}
+    cat confcache >$cache_file
+  else
+    { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+  fi
+fi
+rm -f confcache
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+DEFS=-DHAVE_CONFIG_H
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+  # 1. Remove the extension, and $U if already installed.
+  ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+  ac_i=`echo "$ac_i" | sed "$ac_script"`
+  # 2. Prepend LIBOBJDIR.  When used with automake>=1.10 LIBOBJDIR
+  #    will be set to the directory where LIBOBJS objects are built.
+  ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+  ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${CPPUNIT_TRUE}" && test -z "${CPPUNIT_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"CPPUNIT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"CPPUNIT\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${ENABLE_MONO_TRUE}" && test -z "${ENABLE_MONO_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"ENABLE_MONO\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"ENABLE_MONO\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_ORACLE_TRUE}" && test -z "${HAVE_ORACLE_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"HAVE_ORACLE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_ORACLE\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization.  ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+  emulate sh
+  NULLCMD=:
+  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+  # is contrary to our usage.  Disable this feature.
+  alias -g '${1+"$@"}'='"$@"'
+  setopt NO_GLOB_SUBST
+else
+  case `(set -o) 2>/dev/null` in
+  *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+  echo "#! /bin/sh" >conf$$.sh
+  echo  "exit 0"   >>conf$$.sh
+  chmod +x conf$$.sh
+  if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+    PATH_SEPARATOR=';'
+  else
+    PATH_SEPARATOR=:
+  fi
+  rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+as_nl='
+'
+IFS=" ""	$as_nl"
+
+# Find who we are.  Look in the path if we contain no directory separator.
+case $0 in
+  *[\\/]* ) as_myself=$0 ;;
+  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+  test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+     ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+  as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+  echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+  { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+  LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+  LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+  LC_TELEPHONE LC_TIME
+do
+  if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+    eval $as_var=C; export $as_var
+  else
+    ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+  fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+  as_lineno_1=$LINENO
+  as_lineno_2=$LINENO
+  test "x$as_lineno_1" != "x$as_lineno_2" &&
+  test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+  # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+  # uniformly replaced by the line number.  The first 'sed' inserts a
+  # line-number line after each line using $LINENO; the second 'sed'
+  # does the real work.  The second script uses 'N' to pair each
+  # line-number line with the line containing $LINENO, and appends
+  # trailing '-' during substitution so that $LINENO is not a special
+  # case at line end.
+  # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+  # scripts with optimization help from Paolo Bonzini.  Blame Lee
+  # E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+   { (exit 1); exit 1; }; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+  as_dirname=dirname
+else
+  as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+  case `echo 'x\c'` in
+  *c*) ECHO_T='	';;	# ECHO_T is single tab character.
+  *)   ECHO_C='\c';;
+  esac;;
+*)
+  ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+  rm -f conf$$.dir/conf$$.file
+else
+  rm -f conf$$.dir
+  mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s='ln -s'
+  # ... but there are two gotchas:
+  # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+  # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+  # In both cases, we have to default to `cp -p'.
+  ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+    as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+  as_ln_s=ln
+else
+  as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+  as_mkdir_p=:
+else
+  test -d ./-p && rmdir ./-p
+  as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+  as_test_x='test -x'
+else
+  if ls -dL / >/dev/null 2>&1; then
+    as_ls_L_option=L
+  else
+    as_ls_L_option=
+  fi
+  as_test_x='
+    eval sh -c '\''
+      if test -d "$1"; then
+        test -d "$1/.";
+      else
+	case $1 in
+        -*)set "./$1";;
+	esac;
+	case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+	???[sx]*):;;*)false;;esac;fi
+    '\'' sh
+  '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by tora $as_me 1.3.22, which was
+generated by GNU Autoconf 2.61.  Invocation command line was
+
+  CONFIG_FILES    = $CONFIG_FILES
+  CONFIG_HEADERS  = $CONFIG_HEADERS
+  CONFIG_LINKS    = $CONFIG_LINKS
+  CONFIG_COMMANDS = $CONFIG_COMMANDS
+  $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+  -h, --help       print this help, then exit
+  -V, --version    print version number and configuration settings, then exit
+  -q, --quiet      do not print progress messages
+  -d, --debug      don't remove temporary files
+      --recheck    update $as_me by reconfiguring in the same conditions
+  --file=FILE[:TEMPLATE]
+		   instantiate the configuration file FILE
+  --header=FILE[:TEMPLATE]
+		   instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf at gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+tora config.status 1.3.22
+configured by $0, generated by GNU Autoconf 2.61,
+  with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2006 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+INSTALL='$INSTALL'
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value.  By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+  case $1 in
+  --*=*)
+    ac_option=`expr "X$1" : 'X\([^=]*\)='`
+    ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+    ac_shift=:
+    ;;
+  *)
+    ac_option=$1
+    ac_optarg=$2
+    ac_shift=shift
+    ;;
+  esac
+
+  case $ac_option in
+  # Handling of the options.
+  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+    ac_cs_recheck=: ;;
+  --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+    echo "$ac_cs_version"; exit ;;
+  --debug | --debu | --deb | --de | --d | -d )
+    debug=: ;;
+  --file | --fil | --fi | --f )
+    $ac_shift
+    CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+    ac_need_defaults=false;;
+  --header | --heade | --head | --hea )
+    $ac_shift
+    CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+    ac_need_defaults=false;;
+  --he | --h)
+    # Conflict between --help and --header
+    { echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; };;
+  --help | --hel | -h )
+    echo "$ac_cs_usage"; exit ;;
+  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+  | -silent | --silent | --silen | --sile | --sil | --si | --s)
+    ac_cs_silent=: ;;
+
+  # This is an error.
+  -*) { echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+   { (exit 1); exit 1; }; } ;;
+
+  *) ac_config_targets="$ac_config_targets $1"
+     ac_need_defaults=false ;;
+
+  esac
+  shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+  exec 6>/dev/null
+  ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+  echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+  CONFIG_SHELL=$SHELL
+  export CONFIG_SHELL
+  exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+exec 5>>config.log
+{
+  echo
+  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+  echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+  case $ac_config_target in
+    "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
+    "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
+    "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+    "utils/Makefile") CONFIG_FILES="$CONFIG_FILES utils/Makefile" ;;
+    "utils/chex/Makefile") CONFIG_FILES="$CONFIG_FILES utils/chex/Makefile" ;;
+    "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+    "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;;
+    "test/configuration/Makefile") CONFIG_FILES="$CONFIG_FILES test/configuration/Makefile" ;;
+    "ext/Makefile") CONFIG_FILES="$CONFIG_FILES ext/Makefile" ;;
+    "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;;
+    "doc/help/Makefile") CONFIG_FILES="$CONFIG_FILES doc/help/Makefile" ;;
+    "rpm/tora.spec") CONFIG_FILES="$CONFIG_FILES rpm/tora.spec" ;;
+
+  *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+   { (exit 1); exit 1; }; };;
+  esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used.  Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+  test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+  test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+  test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience.  Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+  tmp=
+  trap 'exit_status=$?
+  { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+  trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+  tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+  test -n "$tmp" && test -d "$tmp"
+}  ||
+{
+  tmp=./conf$$-$RANDOM
+  (umask 077 && mkdir "$tmp")
+} ||
+{
+   echo "$me: cannot create a temporary directory in ." >&2
+   { (exit 1); exit 1; }
+}
+
+#
+# Set up the sed scripts for CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+
+_ACEOF
+
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  cat >conf$$subs.sed <<_ACEOF
+SHELL!$SHELL$ac_delim
+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
+PACKAGE_NAME!$PACKAGE_NAME$ac_delim
+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
+PACKAGE_STRING!$PACKAGE_STRING$ac_delim
+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
+exec_prefix!$exec_prefix$ac_delim
+prefix!$prefix$ac_delim
+program_transform_name!$program_transform_name$ac_delim
+bindir!$bindir$ac_delim
+sbindir!$sbindir$ac_delim
+libexecdir!$libexecdir$ac_delim
+datarootdir!$datarootdir$ac_delim
+datadir!$datadir$ac_delim
+sysconfdir!$sysconfdir$ac_delim
+sharedstatedir!$sharedstatedir$ac_delim
+localstatedir!$localstatedir$ac_delim
+includedir!$includedir$ac_delim
+oldincludedir!$oldincludedir$ac_delim
+docdir!$docdir$ac_delim
+infodir!$infodir$ac_delim
+htmldir!$htmldir$ac_delim
+dvidir!$dvidir$ac_delim
+pdfdir!$pdfdir$ac_delim
+psdir!$psdir$ac_delim
+libdir!$libdir$ac_delim
+localedir!$localedir$ac_delim
+mandir!$mandir$ac_delim
+DEFS!$DEFS$ac_delim
+ECHO_C!$ECHO_C$ac_delim
+ECHO_N!$ECHO_N$ac_delim
+ECHO_T!$ECHO_T$ac_delim
+LIBS!$LIBS$ac_delim
+build_alias!$build_alias$ac_delim
+host_alias!$host_alias$ac_delim
+target_alias!$target_alias$ac_delim
+INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
+INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
+INSTALL_DATA!$INSTALL_DATA$ac_delim
+CYGPATH_W!$CYGPATH_W$ac_delim
+PACKAGE!$PACKAGE$ac_delim
+VERSION!$VERSION$ac_delim
+ACLOCAL!$ACLOCAL$ac_delim
+AUTOCONF!$AUTOCONF$ac_delim
+AUTOMAKE!$AUTOMAKE$ac_delim
+AUTOHEADER!$AUTOHEADER$ac_delim
+MAKEINFO!$MAKEINFO$ac_delim
+install_sh!$install_sh$ac_delim
+STRIP!$STRIP$ac_delim
+INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
+mkdir_p!$mkdir_p$ac_delim
+AWK!$AWK$ac_delim
+SET_MAKE!$SET_MAKE$ac_delim
+am__leading_dot!$am__leading_dot$ac_delim
+AMTAR!$AMTAR$ac_delim
+am__tar!$am__tar$ac_delim
+am__untar!$am__untar$ac_delim
+ISODATE!$ISODATE$ac_delim
+build!$build$ac_delim
+build_cpu!$build_cpu$ac_delim
+build_vendor!$build_vendor$ac_delim
+build_os!$build_os$ac_delim
+host!$host$ac_delim
+host_cpu!$host_cpu$ac_delim
+host_vendor!$host_vendor$ac_delim
+host_os!$host_os$ac_delim
+CC!$CC$ac_delim
+CFLAGS!$CFLAGS$ac_delim
+LDFLAGS!$LDFLAGS$ac_delim
+CPPFLAGS!$CPPFLAGS$ac_delim
+ac_ct_CC!$ac_ct_CC$ac_delim
+EXEEXT!$EXEEXT$ac_delim
+OBJEXT!$OBJEXT$ac_delim
+DEPDIR!$DEPDIR$ac_delim
+am__include!$am__include$ac_delim
+am__quote!$am__quote$ac_delim
+AMDEP_TRUE!$AMDEP_TRUE$ac_delim
+AMDEP_FALSE!$AMDEP_FALSE$ac_delim
+AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
+CCDEPMODE!$CCDEPMODE$ac_delim
+am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
+am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
+CXX!$CXX$ac_delim
+CXXFLAGS!$CXXFLAGS$ac_delim
+ac_ct_CXX!$ac_ct_CXX$ac_delim
+CXXDEPMODE!$CXXDEPMODE$ac_delim
+am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
+am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
+CPP!$CPP$ac_delim
+GREP!$GREP$ac_delim
+EGREP!$EGREP$ac_delim
+ALLOCA!$ALLOCA$ac_delim
+LIBOBJS!$LIBOBJS$ac_delim
+TORA_LINK_OTHERS!$TORA_LINK_OTHERS$ac_delim
+LN_S!$LN_S$ac_delim
+ECHO!$ECHO$ac_delim
+_ACEOF
+
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
+    break
+  elif $ac_last_try; then
+    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+  ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+CEOF$ac_eof
+_ACEOF
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  cat >conf$$subs.sed <<_ACEOF
+AR!$AR$ac_delim
+RANLIB!$RANLIB$ac_delim
+CXXCPP!$CXXCPP$ac_delim
+F77!$F77$ac_delim
+FFLAGS!$FFLAGS$ac_delim
+ac_ct_F77!$ac_ct_F77$ac_delim
+LIBTOOL!$LIBTOOL$ac_delim
+LIBTOOL_DEPS!$LIBTOOL_DEPS$ac_delim
+LIBUTIL!$LIBUTIL$ac_delim
+LIBCOMPAT!$LIBCOMPAT$ac_delim
+LIBCRYPT!$LIBCRYPT$ac_delim
+LIBRESOLV!$LIBRESOLV$ac_delim
+LIB_POLL!$LIB_POLL$ac_delim
+FRAMEWORK_COREAUDIO!$FRAMEWORK_COREAUDIO$ac_delim
+LIBSOCKET!$LIBSOCKET$ac_delim
+X_EXTRA_LIBS!$X_EXTRA_LIBS$ac_delim
+LIBUCB!$LIBUCB$ac_delim
+LIBDL!$LIBDL$ac_delim
+XMKMF!$XMKMF$ac_delim
+X_INCLUDES!$X_INCLUDES$ac_delim
+X_LDFLAGS!$X_LDFLAGS$ac_delim
+x_libraries!$x_libraries$ac_delim
+x_includes!$x_includes$ac_delim
+LIBSM!$LIBSM$ac_delim
+X_PRE_LIBS!$X_PRE_LIBS$ac_delim
+LIB_X11!$LIB_X11$ac_delim
+LIBXINERAMA!$LIBXINERAMA$ac_delim
+QTE_NORTTI!$QTE_NORTTI$ac_delim
+LIB_XEXT!$LIB_XEXT$ac_delim
+kde_libraries!$kde_libraries$ac_delim
+kde_includes!$kde_includes$ac_delim
+KDE_LDFLAGS!$KDE_LDFLAGS$ac_delim
+KDE_INCLUDES!$KDE_INCLUDES$ac_delim
+USER_INCLUDES!$USER_INCLUDES$ac_delim
+USER_LDFLAGS!$USER_LDFLAGS$ac_delim
+all_includes!$all_includes$ac_delim
+all_libraries!$all_libraries$ac_delim
+AUTODIRS!$AUTODIRS$ac_delim
+DCOPIDL!$DCOPIDL$ac_delim
+DCOPIDL2CPP!$DCOPIDL2CPP$ac_delim
+DCOP_DEPENDENCIES!$DCOP_DEPENDENCIES$ac_delim
+MCOPIDL!$MCOPIDL$ac_delim
+ARTSCCONFIG!$ARTSCCONFIG$ac_delim
+KDECONFIG!$KDECONFIG$ac_delim
+MEINPROC!$MEINPROC$ac_delim
+KDE_XSL_STYLESHEET!$KDE_XSL_STYLESHEET$ac_delim
+kde_libs_prefix!$kde_libs_prefix$ac_delim
+kde_libs_htmldir!$kde_libs_htmldir$ac_delim
+kde_htmldir!$kde_htmldir$ac_delim
+kde_appsdir!$kde_appsdir$ac_delim
+kde_icondir!$kde_icondir$ac_delim
+kde_sounddir!$kde_sounddir$ac_delim
+kde_datadir!$kde_datadir$ac_delim
+kde_locale!$kde_locale$ac_delim
+kde_confdir!$kde_confdir$ac_delim
+kde_mimedir!$kde_mimedir$ac_delim
+kde_wallpaperdir!$kde_wallpaperdir$ac_delim
+kde_bindir!$kde_bindir$ac_delim
+kde_templatesdir!$kde_templatesdir$ac_delim
+kde_servicesdir!$kde_servicesdir$ac_delim
+kde_servicetypesdir!$kde_servicetypesdir$ac_delim
+kde_moduledir!$kde_moduledir$ac_delim
+kde_styledir!$kde_styledir$ac_delim
+kde_widgetdir!$kde_widgetdir$ac_delim
+X_CFLAGS!$X_CFLAGS$ac_delim
+X_LIBS!$X_LIBS$ac_delim
+LIBPTHREAD!$LIBPTHREAD$ac_delim
+USE_THREADS!$USE_THREADS$ac_delim
+KDE_MT_LDFLAGS!$KDE_MT_LDFLAGS$ac_delim
+KDE_MT_LIBS!$KDE_MT_LIBS$ac_delim
+LIBZ!$LIBZ$ac_delim
+LIBPNG!$LIBPNG$ac_delim
+LIBJPEG!$LIBJPEG$ac_delim
+qt_libraries!$qt_libraries$ac_delim
+qt_includes!$qt_includes$ac_delim
+QT_INCLUDES!$QT_INCLUDES$ac_delim
+QT_LDFLAGS!$QT_LDFLAGS$ac_delim
+LRELEASE!$LRELEASE$ac_delim
+LUPDATE!$LUPDATE$ac_delim
+MOC!$MOC$ac_delim
+UIC!$UIC$ac_delim
+UIC_TR!$UIC_TR$ac_delim
+LIB_QT!$LIB_QT$ac_delim
+LIB_QPE!$LIB_QPE$ac_delim
+kde_qtver!$kde_qtver$ac_delim
+LIB_KDECORE!$LIB_KDECORE$ac_delim
+LIB_KDEUI!$LIB_KDEUI$ac_delim
+LIB_KIO!$LIB_KIO$ac_delim
+LIB_SMB!$LIB_SMB$ac_delim
+LIB_KAB!$LIB_KAB$ac_delim
+LIB_KABC!$LIB_KABC$ac_delim
+LIB_KHTML!$LIB_KHTML$ac_delim
+LIB_KSPELL!$LIB_KSPELL$ac_delim
+LIB_KPARTS!$LIB_KPARTS$ac_delim
+LIB_KDEPRINT!$LIB_KDEPRINT$ac_delim
+LIB_DCOP!$LIB_DCOP$ac_delim
+LIB_KSYCOCA!$LIB_KSYCOCA$ac_delim
+_ACEOF
+
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
+    break
+  elif $ac_last_try; then
+    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+  ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+CEOF$ac_eof
+_ACEOF
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+  cat >conf$$subs.sed <<_ACEOF
+LIB_KFILE!$LIB_KFILE$ac_delim
+ORACLE_CXXFLAGS!$ORACLE_CXXFLAGS$ac_delim
+ORACLE_LDFLAGS!$ORACLE_LDFLAGS$ac_delim
+ORACLE_LIBS!$ORACLE_LIBS$ac_delim
+QSCINTILLA_CXXFLAGS!$QSCINTILLA_CXXFLAGS$ac_delim
+QSCINTILLA_LDFLAGS!$QSCINTILLA_LDFLAGS$ac_delim
+PCRE_LIBS!$PCRE_LIBS$ac_delim
+PCRE_CFLAGS!$PCRE_CFLAGS$ac_delim
+CPPUNIT_CONFIG!$CPPUNIT_CONFIG$ac_delim
+CPPUNIT_CFLAGS!$CPPUNIT_CFLAGS$ac_delim
+CPPUNIT_LIBS!$CPPUNIT_LIBS$ac_delim
+CPPUNIT_TRUE!$CPPUNIT_TRUE$ac_delim
+CPPUNIT_FALSE!$CPPUNIT_FALSE$ac_delim
+ENABLE_MONO_TRUE!$ENABLE_MONO_TRUE$ac_delim
+ENABLE_MONO_FALSE!$ENABLE_MONO_FALSE$ac_delim
+HAVE_ORACLE_TRUE!$HAVE_ORACLE_TRUE$ac_delim
+HAVE_ORACLE_FALSE!$HAVE_ORACLE_FALSE$ac_delim
+LTLIBOBJS!$LTLIBOBJS$ac_delim
+_ACEOF
+
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 18; then
+    break
+  elif $ac_last_try; then
+    { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+   { (exit 1); exit 1; }; }
+  else
+    ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+  fi
+done
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+  ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+  ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-3.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+:end
+s/|#_!!_#|//g
+CEOF$ac_eof
+_ACEOF
+
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+  ac_vpsub='/^[	 ]*VPATH[	 ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[	 ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[	 ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+fi # test -n "$CONFIG_FILES"
+
+
+for ac_tag in  :F $CONFIG_FILES  :H $CONFIG_HEADERS    :C $CONFIG_COMMANDS
+do
+  case $ac_tag in
+  :[FHLC]) ac_mode=$ac_tag; continue;;
+  esac
+  case $ac_mode$ac_tag in
+  :[FHL]*:*);;
+  :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+   { (exit 1); exit 1; }; };;
+  :[FH]-) ac_tag=-:-;;
+  :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+  esac
+  ac_save_IFS=$IFS
+  IFS=:
+  set x $ac_tag
+  IFS=$ac_save_IFS
+  shift
+  ac_file=$1
+  shift
+
+  case $ac_mode in
+  :L) ac_source=$1;;
+  :[FH])
+    ac_file_inputs=
+    for ac_f
+    do
+      case $ac_f in
+      -) ac_f="$tmp/stdin";;
+      *) # Look for the file first in the build tree, then in the source tree
+	 # (if the path is not absolute).  The absolute path cannot be DOS-style,
+	 # because $ac_f cannot contain `:'.
+	 test -f "$ac_f" ||
+	   case $ac_f in
+	   [\\/$]*) false;;
+	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+	   esac ||
+	   { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+   { (exit 1); exit 1; }; };;
+      esac
+      ac_file_inputs="$ac_file_inputs $ac_f"
+    done
+
+    # Let's still pretend it is `configure' which instantiates (i.e., don't
+    # use $as_me), people would be surprised to read:
+    #    /* config.h.  Generated by config.status.  */
+    configure_input="Generated from "`IFS=:
+	  echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+    if test x"$ac_file" != x-; then
+      configure_input="$ac_file.  $configure_input"
+      { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+    fi
+
+    case $ac_tag in
+    *:-:* | *:-) cat >"$tmp/stdin";;
+    esac
+    ;;
+  esac
+
+  ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$ac_file" : 'X\(//\)[^/]' \| \
+	 X"$ac_file" : 'X\(//\)$' \| \
+	 X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$ac_file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  { as_dir="$ac_dir"
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+  ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+  ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+  # A ".." for each directory in $ac_dir_suffix.
+  ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+  case $ac_top_builddir_sub in
+  "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+  *)  ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+  esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+  .)  # We are building in place.
+    ac_srcdir=.
+    ac_top_srcdir=$ac_top_builddir_sub
+    ac_abs_top_srcdir=$ac_pwd ;;
+  [\\/]* | ?:[\\/]* )  # Absolute name.
+    ac_srcdir=$srcdir$ac_dir_suffix;
+    ac_top_srcdir=$srcdir
+    ac_abs_top_srcdir=$srcdir ;;
+  *) # Relative name.
+    ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+    ac_top_srcdir=$ac_top_build_prefix$srcdir
+    ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+  case $ac_mode in
+  :F)
+  #
+  # CONFIG_FILE
+  #
+
+  case $INSTALL in
+  [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
+  *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
+  esac
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If the template does not know about datarootdir, expand it.
+# FIXME: This hack should be removed a few years after 2.60.
+ac_datarootdir_hack=; ac_datarootdir_seen=
+
+case `sed -n '/datarootdir/ {
+  p
+  q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+' $ac_file_inputs` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+  { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+  ac_datarootdir_hack='
+  s&@datadir@&$datadir&g
+  s&@docdir@&$docdir&g
+  s&@infodir@&$infodir&g
+  s&@localedir@&$localedir&g
+  s&@mandir@&$mandir&g
+    s&\\\${datarootdir}&$datarootdir&g' ;;
+esac
+_ACEOF
+
+# Neutralize VPATH when `$srcdir' = `.'.
+# Shell code in configure.ac might set extrasub.
+# FIXME: do we really want to maintain this feature?
+cat >>$CONFIG_STATUS <<_ACEOF
+  sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s&@configure_input@&$configure_input&;t t
+s&@top_builddir@&$ac_top_builddir_sub&;t t
+s&@srcdir@&$ac_srcdir&;t t
+s&@abs_srcdir@&$ac_abs_srcdir&;t t
+s&@top_srcdir@&$ac_top_srcdir&;t t
+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t
+s&@builddir@&$ac_builddir&;t t
+s&@abs_builddir@&$ac_abs_builddir&;t t
+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
+s&@INSTALL@&$ac_INSTALL&;t t
+$ac_datarootdir_hack
+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" >$tmp/out
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+  { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+  { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+  { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&5
+echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined.  Please make sure it is defined." >&2;}
+
+  rm -f "$tmp/stdin"
+  case $ac_file in
+  -) cat "$tmp/out"; rm -f "$tmp/out";;
+  *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+  esac
+ ;;
+  :H)
+  #
+  # CONFIG_HEADER
+  #
+_ACEOF
+
+# Transform confdefs.h into a sed script `conftest.defines', that
+# substitutes the proper values into config.h.in to produce config.h.
+rm -f conftest.defines conftest.tail
+# First, append a space to every undef/define line, to ease matching.
+echo 's/$/ /' >conftest.defines
+# Then, protect against being on the right side of a sed subst, or in
+# an unquoted here document, in config.status.  If some macros were
+# called several times there might be several #defines for the same
+# symbol, which is useless.  But do not sort them, since the last
+# AC_DEFINE must be honored.
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
+# NAME is the cpp macro being defined, VALUE is the value it is being given.
+# PARAMS is the parameter list in the macro definition--in most cases, it's
+# just an empty string.
+ac_dA='s,^\\([	 #]*\\)[^	 ]*\\([	 ]*'
+ac_dB='\\)[	 (].*,\\1define\\2'
+ac_dC=' '
+ac_dD=' ,'
+
+uniq confdefs.h |
+  sed -n '
+	t rset
+	:rset
+	s/^[	 ]*#[	 ]*define[	 ][	 ]*//
+	t ok
+	d
+	:ok
+	s/[\\&,]/\\&/g
+	s/^\('"$ac_word_re"'\)\(([^()]*)\)[	 ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
+	s/^\('"$ac_word_re"'\)[	 ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
+  ' >>conftest.defines
+
+# Remove the space that was appended to ease matching.
+# Then replace #undef with comments.  This is necessary, for
+# example, in the case of _POSIX_SOURCE, which is predefined and required
+# on some systems where configure will not decide to define it.
+# (The regexp can be short, since the line contains either #define or #undef.)
+echo 's/ $//
+s,^[	 #]*u.*,/* & */,' >>conftest.defines
+
+# Break up conftest.defines:
+ac_max_sed_lines=50
+
+# First sed command is:	 sed -f defines.sed $ac_file_inputs >"$tmp/out1"
+# Second one is:	 sed -f defines.sed "$tmp/out1" >"$tmp/out2"
+# Third one will be:	 sed -f defines.sed "$tmp/out2" >"$tmp/out1"
+# et cetera.
+ac_in='$ac_file_inputs'
+ac_out='"$tmp/out1"'
+ac_nxt='"$tmp/out2"'
+
+while :
+do
+  # Write a here document:
+    cat >>$CONFIG_STATUS <<_ACEOF
+    # First, check the format of the line:
+    cat >"\$tmp/defines.sed" <<\\CEOF
+/^[	 ]*#[	 ]*undef[	 ][	 ]*$ac_word_re[	 ]*\$/b def
+/^[	 ]*#[	 ]*define[	 ][	 ]*$ac_word_re[(	 ]/b def
+b
+:def
+_ACEOF
+  sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
+  echo 'CEOF
+    sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
+  ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
+  sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
+  grep . conftest.tail >/dev/null || break
+  rm -f conftest.defines
+  mv conftest.tail conftest.defines
+done
+rm -f conftest.defines conftest.tail
+
+echo "ac_result=$ac_in" >>$CONFIG_STATUS
+cat >>$CONFIG_STATUS <<\_ACEOF
+  if test x"$ac_file" != x-; then
+    echo "/* $configure_input  */" >"$tmp/config.h"
+    cat "$ac_result" >>"$tmp/config.h"
+    if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+      { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+    else
+      rm -f $ac_file
+      mv "$tmp/config.h" $ac_file
+    fi
+  else
+    echo "/* $configure_input  */"
+    cat "$ac_result"
+  fi
+  rm -f "$tmp/out12"
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+  case $_am_header in
+    $ac_file | $ac_file:* )
+      break ;;
+    * )
+      _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+  esac
+done
+echo "timestamp for $ac_file" >`$as_dirname -- $ac_file ||
+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X$ac_file : 'X\(//\)[^/]' \| \
+	 X$ac_file : 'X\(//\)$' \| \
+	 X$ac_file : 'X\(/\)' \| . 2>/dev/null ||
+echo X$ac_file |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+  :C)  { echo "$as_me:$LINENO: executing $ac_file commands" >&5
+echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+  esac
+
+
+  case $ac_file$ac_mode in
+    "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do
+  # Strip MF so we end up with the name of the file.
+  mf=`echo "$mf" | sed -e 's/:.*$//'`
+  # Check whether this is an Automake generated Makefile or not.
+  # We used to match only the files named `Makefile.in', but
+  # some people rename them; so instead we look at the file content.
+  # Grep'ing the first line is not enough: some people post-process
+  # each Makefile.in and add a new line on top of each file to say so.
+  # So let's grep whole file.
+  if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then
+    dirpart=`$as_dirname -- "$mf" ||
+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$mf" : 'X\(//\)[^/]' \| \
+	 X"$mf" : 'X\(//\)$' \| \
+	 X"$mf" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$mf" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+  else
+    continue
+  fi
+  # Extract the definition of DEPDIR, am__include, and am__quote
+  # from the Makefile without running `make'.
+  DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
+  test -z "$DEPDIR" && continue
+  am__include=`sed -n 's/^am__include = //p' < "$mf"`
+  test -z "am__include" && continue
+  am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
+  # When using ansi2knr, U may be empty or an underscore; expand it
+  U=`sed -n 's/^U = //p' < "$mf"`
+  # Find all dependency output files, they are included files with
+  # $(DEPDIR) in their names.  We invoke sed twice because it is the
+  # simplest approach to changing $(DEPDIR) to its actual value in the
+  # expansion.
+  for file in `sed -n "
+    s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \
+       sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do
+    # Make sure the directory exists.
+    test -f "$dirpart/$file" && continue
+    fdir=`$as_dirname -- "$file" ||
+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$file" : 'X\(//\)[^/]' \| \
+	 X"$file" : 'X\(//\)$' \| \
+	 X"$file" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$file" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+    { as_dir=$dirpart/$fdir
+  case $as_dir in #(
+  -*) as_dir=./$as_dir;;
+  esac
+  test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+    as_dirs=
+    while :; do
+      case $as_dir in #(
+      *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+      *) as_qdir=$as_dir;;
+      esac
+      as_dirs="'$as_qdir' $as_dirs"
+      as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+	 X"$as_dir" : 'X\(//\)[^/]' \| \
+	 X"$as_dir" : 'X\(//\)$' \| \
+	 X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$as_dir" |
+    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)[^/].*/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+      test -d "$as_dir" && break
+    done
+    test -z "$as_dirs" || eval "mkdir $as_dirs"
+  } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
+   { (exit 1); exit 1; }; }; }
+    # echo "creating $dirpart/$file"
+    echo '# dummy' > "$dirpart/$file"
+  done
+done
+ ;;
+
+  esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded.  So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status.  When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+  ac_cs_success=:
+  ac_config_status_args=
+  test "$silent" = yes &&
+    ac_config_status_args="$ac_config_status_args --quiet"
+  exec 5>/dev/null
+  $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+  exec 5>>config.log
+  # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+  # would make configure fail if this is the last instruction.
+  $ac_cs_success || { (exit 1); exit 1; }
+fi
+


Property changes on: kde-extras/tora/branches/upstream/current/configure
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/configure.ac
===================================================================
--- kde-extras/tora/branches/upstream/current/configure.ac	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/configure.ac	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,71 @@
+# Process this file with autoconf to produce a configure script.
+
+AC_INIT([tora],[1.3.22],[tora-develop at lists.sourceforge.net])
+AC_PREREQ([2.59])
+AC_CONFIG_AUX_DIR(config)
+# Every other copy of the package version number gets its value from here
+AM_INIT_AUTOMAKE
+
+# create a config.h file (Automake will add -DHAVE_CONFIG_H)
+AC_CONFIG_SRCDIR([src/main.cpp])
+AC_CONFIG_HEADER([config.h])
+mrj_SET_PREFIX
+
+AC_SUBST(PACKAGE_VERSION)
+
+ISODATE=`date +%Y-%m-%d`
+AC_SUBST(ISODATE)
+
+AC_CANONICAL_HOST
+
+# Checks for programs.
+AC_PROG_INSTALL
+AC_PROG_CC
+AC_PROG_CXX
+AC_CHECK_PROG([MAKEINFO], [makeinfo], [makeinfo], [no])
+if test "${MAKEINFO}" = no; then
+   AC_MSG_ERROR([makeinfo not found])
+fi
+# Checks for header files.
+AC_HEADER_STDC
+AC_CHECK_HEADERS(unistd.h sys/param.h sys/time.h time.h sys/mkdev.h sys/sysmacros.h string.h memory.h fcntl.h dirent.h sys/ndir.h ndir.h alloca.h locale.h utime.h)
+AC_HEADER_MAJOR
+AC_FUNC_ALLOCA
+AC_FUNC_MALLOC
+AC_CHECK_FUNCS(snprintf vsnprintf setenv)
+AC_HEADER_STDBOOL
+AC_STRUCT_TM
+AC_STRUCT_ST_BLOCKS
+AC_FUNC_CLOSEDIR_VOID
+AC_TYPE_SIZE_T
+
+# for NLS support. Call them in this order!
+# WITH_NLS is for the po files
+# AM_KDE_WITH_NLS
+
+TORA_CHECK_PLUGIN
+TORA_CHECK_MONO
+TORA_CHECK_LINK_LIBS
+TORA_LIBTOOL_ALL
+TORA_HAVE_KDE
+MRJ_CHECK_ORACLE
+TORA_CHECK_QSCINTILLA
+AX_PATH_LIB_PCRE
+AM_PATH_CPPUNIT([1.10.2], found_cppunit=yes)
+AM_CONDITIONAL([CPPUNIT], [test "x$found_cppunit" = "xyes"])
+
+# Makefile.am uses these
+AM_CONDITIONAL(ENABLE_MONO, test "$enable_mono" = yes)
+AM_CONDITIONAL(HAVE_ORACLE, test "$enable_oracle" = yes)
+
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([utils/Makefile])
+AC_CONFIG_FILES([utils/chex/Makefile])
+AC_CONFIG_FILES([src/Makefile])
+AC_CONFIG_FILES([test/Makefile])
+AC_CONFIG_FILES([test/configuration/Makefile])
+AC_CONFIG_FILES([ext/Makefile])
+AC_CONFIG_FILES([doc/Makefile])
+AC_CONFIG_FILES([doc/help/Makefile])
+AC_CONFIG_FILES([rpm/tora.spec])
+AC_OUTPUT

Added: kde-extras/tora/branches/upstream/current/debian/README.Debian
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/README.Debian	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/README.Debian	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,7 @@
+tora for Debian
+---------------
+
+This version contains only the qt3 database interface. Neither the
+native MySQL nor the native Oracle interface is built in.
+
+ -- Michael Meskes <meskes at debian.org>, Fri, 25 Jan 2002 09:37:32 +0100

Added: kde-extras/tora/branches/upstream/current/debian/changelog
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/changelog	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/changelog	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,272 @@
+tora (1.3.21pre22-1) unstable; urgency=low
+
+  * Applied latest upstream pre1.3.22 patch.
+  * Moved to qscintilla 1.7.
+  * Made tora work correctly with UTF8, closes: 418524
+  
+ -- Michael Meskes <meskes at debian.org>  Tue, 22 May 2007 15:35:55 +0200
+
+tora (1.3.21-3) unstable; urgency=low
+
+  * Added XDG menu support, closes: #354166
+  
+ -- Michael Meskes <meskes at debian.org>  Mon, 17 Apr 2006 13:41:02 +0200
+ 
+tora (1.3.21-2) unstable; urgency=low
+
+  * Added patch by Martin Michlmayr to make tora compile with G++ 4.1,
+    closes: #357810
+  * Fixed URL in copyright file, closes: #358394
+  
+ -- Michael Meskes <meskes at debian.org>  Fri, 24 Mar 2006 13:30:31 +0100
+
+tora (1.3.21-1) unstable; urgency=low
+
+  * New upstream version, fixing the bug that urged me to call autogen.sh and
+    thus making the package build again without build-depending on automake et
+    al., closes: #352513
+  * Added most of the debian specific patch to upstream sources.
+  
+ -- Michael Meskes <meskes at debian.org>  Mon, 13 Feb 2006 15:02:29 +0100
+
+tora (1.3.20-1) unstable; urgency=low
+
+  * New upstream version.
+  * Use the 16x16 icon that is provided by upstream. 
+  
+ -- Michael Meskes <meskes at debian.org>  Sat, 11 Feb 2006 10:24:33 +0100
+
+tora (1.3.18-4) unstable; urgency=low
+
+  * Changed QODBC to QODBC3 one more time, closes: #347373
+
+ -- Michael Meskes <meskes at debian.org>  Thu, 12 Jan 2006 13:32:24 +0100
+
+tora (1.3.18-3) unstable; urgency=low
+
+  * Updated libtool so hopefully Debian GNU/k*BSD is supported now
+    closes: #342702
+  * Added 16x16 menu icon
+  * Updated debhelper to version 4
+
+ -- Michael Meskes <meskes at debian.org>  Sun, 11 Dec 2005 19:03:49 +0100
+
+tora (1.3.18-2) unstable; urgency=low
+
+  * Added --enable-libsuffix= to make sure kdelibs are found even on sparc,
+    closes: #328124
+
+ -- Michael Meskes <meskes at debian.org>  Fri, 16 Sep 2005 08:48:14 +0200
+ 
+tora (1.3.18-1) unstable; urgency=low
+
+  * New upstream version 
+  * Compiled against KDE 3.4.2, closes: #312432
+
+ -- Michael Meskes <meskes at debian.org>  Tue,  6 Sep 2005 13:32:17 +0200
+ 
+tora (1.3.16-1) unstable; urgency=low
+
+  * New upstream version 
+
+ -- Michael Meskes <meskes at debian.org>  Sun,  6 Mar 2005 11:08:40 +0100
+ 
+tora (1.3.15-1) unstable; urgency=low
+
+  * New upstream version 
+  * Changed QODBC to QODBC3, closes #285510
+
+ -- Michael Meskes <meskes at debian.org>  Fri,  4 Mar 2005 11:26:34 +0100
+ 
+tora (1.3.14.1-3) unstable; urgency=low
+
+  * This time really add the build-depend on kdebase-bin
+
+ -- Michael Meskes <meskes at debian.org>  Mon,  5 Jul 2004 20:26:14 +0200
+
+tora (1.3.14.1-2) unstable; urgency=low
+
+  * Build-depend on kdebase-bin (closes: #253765)
+  * Changed configure.pl to check for kdcop instead of kwin.
+
+ -- Michael Meskes <meskes at debian.org>  Mon,  5 Jul 2004 12:47:34 +0200
+
+tora (1.3.14.1-1) unstable; urgency=low
+
+  * New upstream version.
+  * Made sure KDE files are installed (closes: #253765)
+
+ -- Michael Meskes <meskes at debian.org>  Sun,  4 Jul 2004 17:12:34 +0200
+
+tora (1.3.13-3) unstable; urgency=low
+
+  * Updated standards version.
+  * Added man page.
+  * Added symlink from /usr/share/doc/tora to help files.
+  * Make sure all built files are cleaned.
+  * Compile without "new check".
+  * Added kderemove="y" to menu entry.  Use icons already installed in
+    KDE structure; don't install twice.  Improved menu text.
+  * Updated copyright.
+
+ -- Michael Meskes <meskes at debian.org>  Wed, 24 Mar 2004 19:27:28 +0100
+
+tora (1.3.13-2) unstable; urgency=low
+
+  * Added icon, improved capitalization of menu entry.
+
+ -- Michael Meskes <meskes at debian.org>  Mon, 01 Mar 2004 11:30:15 +0100
+
+tora (1.3.13-1) unstable; urgency=low
+
+  * New upstream version 
+
+ -- Michael Meskes <meskes at debian.org>  Sun, 15 Feb 2004 10:47:47 +0100
+
+tora (1.3.12-1) unstable; urgency=low
+
+  * New upstream version 
+
+ -- Michael Meskes <meskes at debian.org>  Tue, 21 Oct 2003 19:13:32 +0200
+
+tora (1.3.11-1) unstable; urgency=low
+
+  * New upstream version 
+  * Moved help files from /usr/lib to /usr/share
+
+ -- Michael Meskes <meskes at debian.org>  Sun, 31 Aug 2003 12:15:51 +0200
+
+tora (1.3.9.2-3) unstable; urgency=low
+
+  * Removed full screen opening (closes: #167590)
+  * Added patch from CVS so changed values are saved.
+  * Added my patches to doc/
+
+ -- Michael Meskes <meskes at debian.org>  Sun, 15 Jun 2003 14:31:11 +0200
+
+tora (1.3.9.2-2) unstable; urgency=low
+
+  * Include qobjectlist.h instead of qobjcoll.h (closes: #181522)
+  * Include qt3-compat-headers in Build-Depends until kdelibs4-dev is fixed
+  * Made sure qt3-mt is used (closes: #183063)
+
+ -- Michael Meskes <meskes at debian.org>  Mon, 24 Feb 2003 14:31:50 +0100
+
+tora (1.3.9.2-1) unstable; urgency=low
+
+  * New upstream version
+  * Compiled against new libqt3 (closes: #181091)
+
+ -- Michael Meskes <meskes at debian.org>  Mon, 17 Feb 2003 00:56:12 +0100
+
+tora (1.3.8-1) unstable; urgency=low
+
+  * New upstream version
+
+ -- Michael Meskes <meskes at debian.org>  Fri, 11 Oct 2002 09:09:50 +0200
+
+tora (1.3.7-4) unstable; urgency=low
+
+  * Fixed dependancy to list -mt qt3 modules (closes: #154259)
+  * Added several fixes to compiler warnings from CVS.
+
+ -- Michael Meskes <meskes at debian.org>  Sun,  1 Sep 2002 11:44:46 +0200
+
+tora (1.3.7-3) unstable; urgency=low
+
+  * Added compiler optimization (closes: #159036).
+  
+ -- Michael Meskes <meskes at debian.org>  Sun,  1 Sep 2002 11:44:46 +0200
+tora (1.3.7-2) unstable; urgency=low
+
+  * Fixed Built-Depends to note that qt 3.0.5 or greater is needed
+    (closes: #156420).
+
+ -- Michael Meskes <meskes at debian.org>  Mon, 12 Aug 2002 18:07:51 +0200
+ 
+tora (1.3.7-1) unstable; urgency=low
+
+  * New upstream version.
+  * Compiled against libqt3 3.0.5 which should fix missing connection provider
+    problem (closes: #154259).
+
+ -- Michael Meskes <meskes at debian.org>  Mon, 12 Aug 2002 13:57:08 +0200
+tora (1.3.6.1-2) unstable; urgency=low
+
+  * Changed Suggests to Depends as tora won't work without a database
+    connector. (closes: #152251)
+
+ -- Michael Meskes <meskes at debian.org>  Sun, 14 Jul 2002 09:54:07 +0200
+
+tora (1.3.6.1-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Michael Meskes <meskes at debian.org>  Fri,  5 Jul 2002 12:29:52 +0200
+
+tora (1.3.6-1) unstable; urgency=low
+
+  * New upstream version.
+  * Added some more patches from CVS to fix several minor bugs.
+
+ -- Michael Meskes <meskes at debian.org>  Wed,  3 Jul 2002 10:37:51 +0200
+ 
+tora (1.3.5.1-1) unstable; urgency=low
+
+  * New upstream version with several minor bugfixes
+
+ -- Michael Meskes <meskes at debian.org>  Fri, 19 Apr 2002 10:32:16 +0200
+
+tora (1.3.5-1) unstable; urgency=low
+
+  * New upstream version with new style selection code and other improvements.
+  * Fixed spelling bug in help file (closes: 143344).
+
+ -- Michael Meskes <meskes at debian.org>  Wed, 17 Apr 2002 19:54:18 +0200
+tora (1.3.4-3) unstable; urgency=low
+
+  * Deactivated style selection stuff (ENABLE_STYLE) to make tora compile
+    again (closes: 141919, 142128).
+
+ -- Michael Meskes <meskes at debian.org>  Sun, 14 Apr 2002 14:54:47 +0200
+ 
+tora (1.3.4-2) unstable; urgency=low
+
+  * Added upstream fixes.
+  * Added menu entry.
+
+ -- Michael Meskes <meskes at debian.org>  Sat,  9 Mar 2002 20:23:02 +0100
+ 
+tora (1.3.4-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Michael Meskes <meskes at debian.org>  Thu,  7 Mar 2002 12:42:50 +0100
+
+
+tora (1.3.3-4) unstable; urgency=low
+
+  * Added more upstream fixes (closes: 133777)
+
+ -- Michael Meskes <meskes at debian.org>  Sun,  3 Mar 2002 11:26:44 +0100
+
+tora (1.3.3-3) unstable; urgency=low
+
+  * Added some upstream fixes (closes: 134133)
+
+ -- Michael Meskes <meskes at debian.org>  Sun, 17 Feb 2002 18:42:01 +0100
+
+tora (1.3.3-2) unstable; urgency=low
+
+  * Added Suggests for database modules (closes: 132724)
+  * Added some upstream fixes
+  * Added missing images (closes: 132791)
+
+ -- Michael Meskes <meskes at debian.org>  Wed, 13 Feb 2002 20:13:34 +0100
+
+tora (1.3.3-1) unstable; urgency=low
+
+  * Initial Release (closes: 130650)
+
+ -- Michael Meskes <meskes at debian.org>  Fri, 25 Jan 2002 09:37:32 +0100
+

Added: kde-extras/tora/branches/upstream/current/debian/control
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/control	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/control	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,15 @@
+Source: tora
+Section: misc
+Priority: optional
+Maintainer: Michael Meskes <meskes at debian.org>
+Build-Depends: debhelper (>> 4.0.0), g++, libqt3-mt-dev (>= 3.1.1-1), libqt3-compat-headers, kdelibs4-dev, docbook-xml (>= 4.2), xsltproc, docbook-xsl, kdebase-bin, libqscintilla-dev
+Standards-Version: 3.6.2
+
+Package: tora
+Architecture: any
+Depends: libqt3-mt-psql|libqt3-mt-odbc|libqt3-mt-mysql, ${shlibs:Depends}
+Description: A graphical toolkit for database developers and administrators
+ Tora features a schema browser, SQL worksheet, PL/SQL editor & debugger,
+ storage manager, rollback segment monitor, instance manager, and SQL output
+ viewer. Via qt3 it can access PostgreSQL and MySQL directly. Any other
+ database systems can be accessed via ODBC.

Added: kde-extras/tora/branches/upstream/current/debian/copyright
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/copyright	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/copyright	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,17 @@
+This package was debianized by Michael Meskes <meskes at debian.org> on
+Fri, 25 Jan 2002 09:37:32 +0100.
+
+It was downloaded from http://tora.sourceforge.net/
+
+Upstream Author: Henrik Johnson <tora at underscore.se>
+		 Nathan Neulinger <nneul at umr.edu>
+
+Copyright:
+Toolkit for Oracle is Copyright (C) 2000-2001,2001 Underscore AB
+Toolkit for Oracle is Copyright (C) 2003-2005 Quest Software, Inc.
+
+You may use, distribute and copy Toolkit for Oracle under the terms of
+GNU General Public License version 2.
+
+On Debian GNU/Linux systems, a copy of the GNU GPL can be found in
+/usr/share/common-licenses/GPL.

Added: kde-extras/tora/branches/upstream/current/debian/debian.patch
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/debian.patch	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/debian.patch	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+diff --exclude debian -ruN tora_1.3.20.orig/toglobalsetting.cpp tora-1.3.20/toglobalsetting.cpp
+--- tora_1.3.20.orig/toglobalsetting.cpp	2005-04-19 12:30:42.000000000 +0200
++++ tora-1.3.20/toglobalsetting.cpp	2006-02-11 13:23:54.000000000 +0100
+@@ -84,7 +84,7 @@
+     HistorySize->setValue(toTool::globalConfig(CONF_STATUS_SAVE,
+                           DEFAULT_STATUS_SAVE).toInt());
+     IncludeDB->setChecked(!toTool::globalConfig(CONF_DB_TITLE, "Yes").isEmpty());
+-    MaximizeMain->setChecked(!toTool::globalConfig(CONF_MAXIMIZE_MAIN, "Yes").isEmpty());
++    MaximizeMain->setChecked(!toTool::globalConfig(CONF_MAXIMIZE_MAIN, "").isEmpty());
+     Statusbar->setChecked(!toTool::globalConfig(CONF_MESSAGE_STATUSBAR, "").isEmpty());
+     RestoreSession->setChecked(!toTool::globalConfig(CONF_RESTORE_SESSION, "").isEmpty());
+     HelpDirectory->setText(toHelpPath());
+diff --exclude debian -ruN tora_1.3.20.orig/tomain.cpp tora-1.3.20/tomain.cpp
+--- tora_1.3.20.orig/tomain.cpp	2005-06-28 22:29:35.000000000 +0200
++++ tora-1.3.20/tomain.cpp	2006-02-11 13:24:17.000000000 +0100
+@@ -484,7 +484,7 @@
+         TOCATCH
+     }
+ 
+-    if (!toTool::globalConfig(CONF_MAXIMIZE_MAIN, "Yes").isEmpty() && Connections.empty() )
++    if (!toTool::globalConfig(CONF_MAXIMIZE_MAIN, "").isEmpty() && Connections.empty() )
+         showMaximized();
+     else
+         show();
+ 

Added: kde-extras/tora/branches/upstream/current/debian/dirs
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/dirs	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/dirs	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,6 @@
+usr/bin
+usr/share/tora/help/images
+usr/lib/tora
+usr/share/icons/hicolor/32x32/apps
+usr/share/icons/hicolor/16x16/apps
+usr/share/applications

Added: kde-extras/tora/branches/upstream/current/debian/docs
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/docs	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/docs	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,5 @@
+BUGS
+NEWS
+README
+TODO
+debian/debian.patch

Added: kde-extras/tora/branches/upstream/current/debian/menu
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/menu	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/menu	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,8 @@
+?package(tora):\
+  needs="X11"\
+  section="Apps/Databases"\
+  title="TOra"\
+  command="/usr/bin/tora"\
+  kderemove="y"\
+  icon32x32="/usr/share/icons/hicolor/32x32/apps/tora.xpm"\
+  icon16x16="/usr/share/icons/hicolor/16x16/apps/tora.xpm"

Added: kde-extras/tora/branches/upstream/current/debian/rules
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/rules	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/rules	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,90 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# This is the debhelper compatability version to use.
+export DH_COMPAT=4
+
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+
+configure: configure-stamp
+configure-stamp:
+	dh_testdir
+	# Add here commands to configure the package.
+	./configure --prefix=/usr --without-oracle --without-rpath --disable-new-check --with-kde --enable-libsuffix=
+
+	touch configure-stamp
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+	dh_testdir
+
+	# Add here commands to compile the package.
+	$(MAKE) CFLAGS_GLOB="-O2 -W -g -fPIC -Wall -Wno-unused" libdir=/usr/lib/tora
+	$(XP) $(DB2MAN) debian/tora.xml
+
+	touch build-stamp
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+
+	# Add here commands to clean up after the build process.
+	-$(MAKE) distclean
+	rm -f *.qm tora.pro license/tolicenseui.h license/tolicenseui.cpp license/tolicense.moc license/tolicenseui.moc
+	rm -f tora.1
+
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+
+	# Add here commands to install the package into debian/tora.
+	$(MAKE) install DESTDIR=$(CURDIR)/debian/tora libdir=/usr/lib/tora
+	-install --owner root --group root --mode=644 $(CURDIR)/help/* $(CURDIR)/debian/tora/usr/share/tora/help
+	-install --owner root --group root --mode=644 $(CURDIR)/help/images/* $(CURDIR)/debian/tora/usr/share/tora/help/images
+	-mv $(CURDIR)/debian/tora/usr/lib/tora/help $(CURDIR)/debian/tora/usr/share/tora
+	dh_link usr/share/tora/help usr/lib/tora/help
+	dh_link usr/share/tora/help usr/share/doc/tora/help
+	-install --owner root --group root --mode=644 $(CURDIR)/icons/tora.xpm $(CURDIR)/debian/tora/usr/share/icons/hicolor/32x32/apps
+	-install --owner root --group root --mode=644 $(CURDIR)/icons/toramini.xpm $(CURDIR)/debian/tora/usr/share/icons/hicolor/16x16/apps/tora.xpm
+	-install --owner root --group root --mode=644 $(CURDIR)/debian/tora.desktop $(CURDIR)/debian/tora/usr/share/applications
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+	dh_testdir
+	dh_testroot
+	dh_installdocs
+	dh_installexamples
+	dh_installmenu
+	dh_installman tora.1
+	dh_installinfo
+	dh_installchangelogs 
+	dh_link
+	dh_strip
+	chmod 644 `pwd`/debian/tora/usr/lib/tora/libto*
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_shlibdeps
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure


Property changes on: kde-extras/tora/branches/upstream/current/debian/rules
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/debian/tora.wrapper
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/tora.wrapper	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/tora.wrapper	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Support script to properly set environments for TORA to run
+
+export QTDIR=/usr/share/qt
+
+exec /usr/lib/tora/tora.real "$@"

Added: kde-extras/tora/branches/upstream/current/debian/tora.xml
===================================================================
--- kde-extras/tora/branches/upstream/current/debian/tora.xml	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/debian/tora.xml	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,88 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+  <!ENTITY dhfirstname "<firstname>Peter</firstname>">
+  <!ENTITY dhsurname   "<surname>Eisentraut</surname>">
+  <!-- Please adjust the date whenever revising the manpage. -->
+  <!ENTITY dhdate      "<date>March 22, 2004</date>">
+  <!ENTITY dhsection   "<manvolnum>1</manvolnum>">
+  <!ENTITY dhemail     "<email>peter_e at gmx.net</email>">
+  <!ENTITY dhusername  "Peter Eisentraut">
+  <!ENTITY dhucpackage "<refentrytitle>TORA</refentrytitle>">
+
+  <!ENTITY debian      "<productname>Debian</productname>">
+  <!ENTITY gnu         "<acronym>GNU</acronym>">
+  <!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+  <refentryinfo>
+    <address>&dhemail;</address>
+
+    <author>
+      &dhfirstname;
+      &dhsurname;
+    </author>
+
+    <copyright>
+      <year>2004</year>
+      <holder>&dhusername;</holder>
+    </copyright>
+
+    &dhdate;
+  </refentryinfo>
+
+  <refmeta>
+    &dhucpackage;
+    &dhsection;
+  </refmeta>
+
+  <refnamediv>
+    <refname>tora</refname>
+    <refpurpose>A graphical toolkit for database developers and administrators</refpurpose>
+  </refnamediv>
+
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>tora</command>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+
+  <refsect1>
+    <title>DESCRIPTION</title>
+
+    <para>This manual page documents briefly the program
+      <command>tora</command>.</para>
+
+    <para>This manual page was written for the &debian; distribution
+      because the original program does not have a manual page.</para>
+
+    <para><application>Tora</application> is a graphical toolkit for
+    database developers and administrators.  It features a schema browser,
+    SQL worksheet, PL/SQL editor and debugger, storage manager, rollback
+    segment monitor, instance manager, and SQL output viewer.  Via QT3 it
+    can access PostgreSQL and MySQL directly.  Any other database systems
+    can be accessed via ODBC.</para>
+  </refsect1>
+
+  <refsect1>
+    <title>SEE ALSO</title>
+
+    <para><command>tora</command> has an integrated online help
+    system.</para>
+  </refsect1>
+
+  <refsect1>
+    <title>AUTHOR</title>
+
+    <para>This manual page was written by &dhusername; &dhemail; for
+      the &debian; system (but may be used by others).  Permission is
+      granted to copy, distribute and/or modify this document under
+      the terms of the &gnu; General Public License, Version 2 any 
+      later version published by the Free Software Foundation.</para>
+
+    <para>On Debian systems, the complete text of the GNU General Public
+     License can be found in <filename>/usr/share/common-licenses/GPL</filename>.</para>
+  </refsect1>
+</refentry>

Added: kde-extras/tora/branches/upstream/current/depcomp
===================================================================
--- kde-extras/tora/branches/upstream/current/depcomp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/depcomp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,479 @@
+#! /bin/sh
+
+# depcomp - compile a program generating dependencies as side-effects
+# Copyright 1999, 2000, 2003 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Alexandre Oliva <oliva at dcc.unicamp.br>.
+
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then
+  echo "depcomp: Variables source, object and depmode must be set" 1>&2
+  exit 1
+fi
+# `libtool' can also be set to `yes' or `no'.
+
+if test -z "$depfile"; then
+   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
+   dir=`echo "$object" | sed 's,/.*$,/,'`
+   if test "$dir" = "$object"; then
+      dir=
+   fi
+   # FIXME: should be _deps on DOS.
+   depfile="$dir.deps/$base"
+fi
+
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
+
+rm -f "$tmpdepfile"
+
+# Some modes work just like other modes, but use different flags.  We
+# parameterize here, but still list the modes in the big case below,
+# to make depend.m4 easier to write.  Note that we *cannot* use a case
+# here, because this file can only contain one case statement.
+if test "$depmode" = hp; then
+  # HP compiler uses -M and no extra arg.
+  gccflag=-M
+  depmode=gcc
+fi
+
+if test "$depmode" = dashXmstdout; then
+   # This is just like dashmstdout with a different argument.
+   dashmflag=-xM
+   depmode=dashmstdout
+fi
+
+case "$depmode" in
+gcc3)
+## gcc 3 implements dependency tracking that does exactly what
+## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
+## it if -MD -MP comes after the -MF stuff.  Hmm.
+  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  mv "$tmpdepfile" "$depfile"
+  ;;
+
+gcc)
+## There are various ways to get dependency output from gcc.  Here's
+## why we pick this rather obscure method:
+## - Don't want to use -MD because we'd like the dependencies to end
+##   up in a subdir.  Having to rename by hand is ugly.
+##   (We might end up doing this anyway to support other compilers.)
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
+##   -MM, not -M (despite what the docs say).
+## - Using -M directly means running the compiler twice (even worse
+##   than renaming).
+  if test -z "$gccflag"; then
+    gccflag=-MD,
+  fi
+  "$@" -Wp,"$gccflag$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
+## The second -e expression handles DOS-style file names with drive letters.
+  sed -e 's/^[^:]*: / /' \
+      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
+## This next piece of magic avoids the `deleted header file' problem.
+## The problem is that when a header file which appears in a .P file
+## is deleted, the dependency causes make to die (because there is
+## typically no way to rebuild the header).  We avoid this by adding
+## dummy dependencies for each header file.  Too bad gcc doesn't do
+## this for us directly.
+  tr ' ' '
+' < "$tmpdepfile" |
+## Some versions of gcc put a space before the `:'.  On the theory
+## that the space means something, we add a space to the output as
+## well.
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+hp)
+  # This case exists only to let depend.m4 do its work.  It works by
+  # looking at the text of this script.  This case will never be run,
+  # since it is checked for above.
+  exit 1
+  ;;
+
+sgi)
+  if test "$libtool" = yes; then
+    "$@" "-Wp,-MDupdate,$tmpdepfile"
+  else
+    "$@" -MDupdate "$tmpdepfile"
+  fi
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+
+  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
+    echo "$object : \\" > "$depfile"
+
+    # Clip off the initial element (the dependent).  Don't try to be
+    # clever and replace this with sed code, as IRIX sed won't handle
+    # lines with more than a fixed number of characters (4096 in
+    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
+    # the IRIX cc adds comments like `#:fec' to the end of the
+    # dependency line.
+    tr ' ' '
+' < "$tmpdepfile" \
+    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
+    tr '
+' ' ' >> $depfile
+    echo >> $depfile
+
+    # The second pass generates a dummy entry for each header file.
+    tr ' ' '
+' < "$tmpdepfile" \
+   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
+   >> $depfile
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+aix)
+  # The C for AIX Compiler uses -M and outputs the dependencies
+  # in a .u file.  In older versions, this file always lives in the
+  # current directory.  Also, the AIX compiler puts `$object:' at the
+  # start of each line; $object doesn't have directory information.
+  # Version 6 uses the directory in both cases.
+  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
+  tmpdepfile="$stripped.u"
+  if test "$libtool" = yes; then
+    "$@" -Wc,-M
+  else
+    "$@" -M
+  fi
+  stat=$?
+
+  if test -f "$tmpdepfile"; then :
+  else
+    stripped=`echo "$stripped" | sed 's,^.*/,,'`
+    tmpdepfile="$stripped.u"
+  fi
+
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+
+  if test -f "$tmpdepfile"; then
+    outname="$stripped.o"
+    # Each line is of the form `foo.o: dependent.h'.
+    # Do two passes, one to just change these to
+    # `$object: dependent.h' and one to simply `dependent.h:'.
+    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
+    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
+  else
+    # The sourcefile does not contain any dependencies, so just
+    # store a dummy comment line, to avoid errors with the Makefile
+    # "include basename.Plo" scheme.
+    echo "#dummy" > "$depfile"
+  fi
+  rm -f "$tmpdepfile"
+  ;;
+
+icc)
+  # Intel's C compiler understands `-MD -MF file'.  However on
+  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
+  # ICC 7.0 will fill foo.d with something like
+  #    foo.o: sub/foo.c
+  #    foo.o: sub/foo.h
+  # which is wrong.  We want:
+  #    sub/foo.o: sub/foo.c
+  #    sub/foo.o: sub/foo.h
+  #    sub/foo.c:
+  #    sub/foo.h:
+  # ICC 7.1 will output
+  #    foo.o: sub/foo.c sub/foo.h
+  # and will wrap long lines using \ :
+  #    foo.o: sub/foo.c ... \
+  #     sub/foo.h ... \
+  #     ...
+
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -eq 0; then :
+  else
+    rm -f "$tmpdepfile"
+    exit $stat
+  fi
+  rm -f "$depfile"
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
+  # Do two passes, one to just change these to
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
+    sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+tru64)
+   # The Tru64 compiler uses -MD to generate dependencies as a side
+   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+   # dependencies in `foo.d' instead, so we check for that too.
+   # Subdirectories are respected.
+   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
+   test "x$dir" = "x$object" && dir=
+   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+
+   if test "$libtool" = yes; then
+      tmpdepfile1="$dir.libs/$base.lo.d"
+      tmpdepfile2="$dir.libs/$base.d"
+      "$@" -Wc,-MD
+   else
+      tmpdepfile1="$dir$base.o.d"
+      tmpdepfile2="$dir$base.d"
+      "$@" -MD
+   fi
+
+   stat=$?
+   if test $stat -eq 0; then :
+   else
+      rm -f "$tmpdepfile1" "$tmpdepfile2"
+      exit $stat
+   fi
+
+   if test -f "$tmpdepfile1"; then
+      tmpdepfile="$tmpdepfile1"
+   else
+      tmpdepfile="$tmpdepfile2"
+   fi
+   if test -f "$tmpdepfile"; then
+      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
+      # That's a tab and a space in the [].
+      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
+   else
+      echo "#dummy" > "$depfile"
+   fi
+   rm -f "$tmpdepfile"
+   ;;
+
+#nosideeffect)
+  # This comment above is used by automake to tell side-effect
+  # dependency tracking mechanisms from slower ones.
+
+dashmstdout)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  test -z "$dashmflag" && dashmflag=-M
+  # Require at least two characters before searching for `:'
+  # in the target name.  This is to cope with DOS-style filenames:
+  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
+  "$@" $dashmflag |
+    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  tr ' ' '
+' < "$tmpdepfile" | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+dashXmstdout)
+  # This case only exists to satisfy depend.m4.  It is never actually
+  # run, as this mode is specially recognized in the preamble.
+  exit 1
+  ;;
+
+makedepend)
+  "$@" || exit $?
+  # Remove any Libtool call
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+  # X makedepend
+  shift
+  cleared=no
+  for arg in "$@"; do
+    case $cleared in
+    no)
+      set ""; shift
+      cleared=yes ;;
+    esac
+    case "$arg" in
+    -D*|-I*)
+      set fnord "$@" "$arg"; shift ;;
+    # Strip any option that makedepend may not understand.  Remove
+    # the object too, otherwise makedepend will parse it as a source file.
+    -*|$object)
+      ;;
+    *)
+      set fnord "$@" "$arg"; shift ;;
+    esac
+  done
+  obj_suffix="`echo $object | sed 's/^.*\././'`"
+  touch "$tmpdepfile"
+  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
+  rm -f "$depfile"
+  cat < "$tmpdepfile" > "$depfile"
+  sed '1,2d' "$tmpdepfile" | tr ' ' '
+' | \
+## Some versions of the HPUX 10.20 sed can't process this invocation
+## correctly.  Breaking it into two sed invocations is a workaround.
+    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile" "$tmpdepfile".bak
+  ;;
+
+cpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout.
+  "$@" || exit $?
+
+  # Remove the call to Libtool.
+  if test "$libtool" = yes; then
+    while test $1 != '--mode=compile'; do
+      shift
+    done
+    shift
+  fi
+
+  # Remove `-o $object'.
+  IFS=" "
+  for arg
+  do
+    case $arg in
+    -o)
+      shift
+      ;;
+    $object)
+      shift
+      ;;
+    *)
+      set fnord "$@" "$arg"
+      shift # fnord
+      shift # $arg
+      ;;
+    esac
+  done
+
+  "$@" -E |
+    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
+    sed '$ s: \\$::' > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  cat < "$tmpdepfile" >> "$depfile"
+  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+msvisualcpp)
+  # Important note: in order to support this mode, a compiler *must*
+  # always write the preprocessed file to stdout, regardless of -o,
+  # because we must use -o when running libtool.
+  "$@" || exit $?
+  IFS=" "
+  for arg
+  do
+    case "$arg" in
+    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+	set fnord "$@"
+	shift
+	shift
+	;;
+    *)
+	set fnord "$@" "$arg"
+	shift
+	shift
+	;;
+    esac
+  done
+  "$@" -E |
+  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+  rm -f "$depfile"
+  echo "$object : \\" > "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile"
+  echo "	" >> "$depfile"
+  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+  rm -f "$tmpdepfile"
+  ;;
+
+none)
+  exec "$@"
+  ;;
+
+*)
+  echo "Unknown depmode $depmode" 1>&2
+  exit 1
+  ;;
+esac
+
+exit 0


Property changes on: kde-extras/tora/branches/upstream/current/depcomp
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/doc/Makefile.am
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/Makefile.am	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/Makefile.am	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,21 @@
+EXTRA_DIST = help
+
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+
+tora_docdir = $(DESTDIR)$(libdir)
+
+install-data-hook:
+	rm -rf $(tora_docdir)/help
+	cp -dpR $(top_builddir)/doc/help/tora $(tora_docdir)/help 
+	cp $(tora_docdir)/help/index.html $(tora_docdir)/help/toc.html
+	cp -dpR $(top_srcdir)/doc/help/images $(tora_docdir)/help
+	cp -dpR $(top_srcdir)/doc/help/api $(tora_docdir)/help
+
+manualdir = $(top_builddir)/doc/help
+
+all-local:
+	echo Making HTML in $(manualdir)
+	cd $(manualdir) && make html
+
+SUBDIRS = help

Added: kde-extras/tora/branches/upstream/current/doc/Makefile.in
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/Makefile.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/Makefile.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,607 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/m4/cppunit.m4 \
+	$(top_srcdir)/config/m4/oracle.m4 \
+	$(top_srcdir)/config/m4/pcre.m4 \
+	$(top_srcdir)/config/m4/qtkde.m4 \
+	$(top_srcdir)/config/m4/tora.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_FALSE = @CPPUNIT_FALSE@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CPPUNIT_TRUE = @CPPUNIT_TRUE@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MONO_FALSE = @ENABLE_MONO_FALSE@
+ENABLE_MONO_TRUE = @ENABLE_MONO_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GREP = @GREP@
+HAVE_ORACLE_FALSE = @HAVE_ORACLE_FALSE@
+HAVE_ORACLE_TRUE = @HAVE_ORACLE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISODATE = @ISODATE@
+KDECONFIG = @KDECONFIG@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBXINERAMA = @LIBXINERAMA@
+LIBZ = @LIBZ@
+LIB_DCOP = @LIB_DCOP@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KFILE = @LIB_KFILE@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIO = @LIB_KIO@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+LUPDATE = @LUPDATE@
+MAKEINFO = @MAKEINFO@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+OBJEXT = @OBJEXT@
+ORACLE_CXXFLAGS = @ORACLE_CXXFLAGS@
+ORACLE_LDFLAGS = @ORACLE_LDFLAGS@
+ORACLE_LIBS = @ORACLE_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_LIBS = @PCRE_LIBS@
+QSCINTILLA_CXXFLAGS = @QSCINTILLA_CXXFLAGS@
+QSCINTILLA_LDFLAGS = @QSCINTILLA_LDFLAGS@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TORA_LINK_OTHERS = @TORA_LINK_OTHERS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+EXTRA_DIST = help
+tora_docdir = $(DESTDIR)$(libdir)
+manualdir = $(top_builddir)/doc/help
+SUBDIRS = help
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  doc/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
+check-am: all-am
+check: check-recursive
+all-am: Makefile all-local
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+	@$(NORMAL_INSTALL)
+	$(MAKE) $(AM_MAKEFLAGS) install-data-hook
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am all-local check \
+	check-am clean clean-generic clean-libtool clean-recursive \
+	ctags ctags-recursive dist-hook distclean distclean-generic \
+	distclean-libtool distclean-recursive distclean-tags distdir \
+	dvi dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-data-hook install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	installdirs-am maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+	tags tags-recursive uninstall uninstall-am uninstall-info-am
+
+
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+
+install-data-hook:
+	rm -rf $(tora_docdir)/help
+	cp -dpR $(top_builddir)/doc/help/tora $(tora_docdir)/help 
+	cp $(tora_docdir)/help/index.html $(tora_docdir)/help/toc.html
+	cp -dpR $(top_srcdir)/doc/help/images $(tora_docdir)/help
+	cp -dpR $(top_srcdir)/doc/help/api $(tora_docdir)/help
+
+all-local:
+	echo Making HTML in $(manualdir)
+	cd $(manualdir) && make html
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: kde-extras/tora/branches/upstream/current/doc/help/Makefile
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/Makefile	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/Makefile	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,623 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# doc/help/Makefile.  Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+srcdir = .
+top_srcdir = ../..
+
+pkgdatadir = $(datadir)/tora
+pkglibdir = $(libdir)/tora
+pkgincludedir = $(includedir)/tora
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = /usr/bin/install -c -p
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = i686-pc-linux-gnu
+host_triplet = i686-pc-linux-gnu
+subdir = doc/help
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/m4/cppunit.m4 \
+	$(top_srcdir)/config/m4/oracle.m4 \
+	$(top_srcdir)/config/m4/pcre.m4 \
+	$(top_srcdir)/config/m4/qtkde.m4 \
+	$(top_srcdir)/config/m4/tora.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+INFO_DEPS = $(srcdir)/tora.info
+TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/config
+DVIS = tora.dvi
+PDFS = tora.pdf
+PSS = tora.ps
+HTMLS = tora.html
+TEXINFOS = tora.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
+am__installdirs = "$(DESTDIR)$(infodir)"
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /local/tora/tora/config/missing --run aclocal-1.9
+ALLOCA = 
+AMDEP_FALSE = #
+AMDEP_TRUE = 
+AMTAR = ${SHELL} /local/tora/tora/config/missing --run tar
+AR = ar
+ARTSCCONFIG = 
+AUTOCONF = ${SHELL} /local/tora/tora/config/missing --run autoconf
+AUTODIRS = 
+AUTOHEADER = ${SHELL} /local/tora/tora/config/missing --run autoheader
+AUTOMAKE = ${SHELL} /local/tora/tora/config/missing --run automake-1.9
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS = 
+CPPUNIT_CFLAGS = 
+CPPUNIT_CONFIG = /usr/bin/cppunit-config
+CPPUNIT_FALSE = #
+CPPUNIT_LIBS = -lcppunit -ldl
+CPPUNIT_TRUE = 
+CXX = g++
+CXXCPP = g++ -E
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS =  -DQT_THREAD_SUPPORT -g -O2 -D_REENTRANT
+CYGPATH_W = echo
+DCOPIDL = 
+DCOPIDL2CPP = 
+DCOP_DEPENDENCIES = 
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO = echo
+ECHO_C = 
+ECHO_N = -n
+ECHO_T = 
+EGREP = /bin/grep -E
+ENABLE_MONO_FALSE = #
+ENABLE_MONO_TRUE = 
+EXEEXT = 
+F77 = g77
+FFLAGS = -g -O2
+FRAMEWORK_COREAUDIO = 
+GREP = /bin/grep
+HAVE_ORACLE_FALSE = #
+HAVE_ORACLE_TRUE = 
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL} $(INSTALL_STRIP_FLAG)
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
+ISODATE = 2007-09-18
+KDECONFIG = 
+KDE_INCLUDES = 
+KDE_LDFLAGS = 
+KDE_MT_LDFLAGS = 
+KDE_MT_LIBS = -lpthread
+KDE_XSL_STYLESHEET = 
+LDFLAGS = 
+LIBCOMPAT = 
+LIBCRYPT = 
+LIBDL = 
+LIBJPEG = -ljpeg
+LIBOBJS = 
+LIBPNG = -lpng -lz -lm
+LIBPTHREAD = -lpthread
+LIBRESOLV = 
+LIBS = -lpcre 
+LIBSM = -lSM -lICE
+LIBSOCKET = 
+LIBTOOL = $(SHELL) $(top_builddir)/libtool
+LIBTOOL_DEPS = config/ltmain.sh
+LIBUCB = 
+LIBUTIL = 
+LIBXINERAMA = 
+LIBZ = -lz
+LIB_DCOP = 
+LIB_KAB = 
+LIB_KABC = 
+LIB_KDECORE = 
+LIB_KDEPRINT = 
+LIB_KDEUI = 
+LIB_KFILE = 
+LIB_KHTML = 
+LIB_KIO = 
+LIB_KPARTS = 
+LIB_KSPELL = 
+LIB_KSYCOCA = 
+LIB_POLL = 
+LIB_QPE = 
+LIB_QT = -lqt-mt  $(LIBPNG) -lXext $(LIB_X11) $(LIBSM) -lpthread
+LIB_SMB = 
+LIB_X11 = -lX11 $(LIBSOCKET)
+LIB_XEXT = -lXext
+LN_S = ln -s
+LRELEASE = /usr/lib/qt3/bin/lrelease
+LTLIBOBJS = 
+LUPDATE = /usr/lib/qt3/bin/lupdate
+MAKEINFO = ${SHELL} /local/tora/tora/config/missing --run makeinfo
+MCOPIDL = 
+MEINPROC = 
+MOC = /usr/lib/qt3/bin/moc
+OBJEXT = o
+ORACLE_CXXFLAGS =  -I/usr/oracle/rdbms/demo -I/usr/oracle/rdbms/public -DOTL_ORA10G_R2 -DOTL_ORA_TIMESTAMP -DOTL_ANSI_CPP -DOTL_FUNC_THROW_SPEC_ON -DOTL_EXCEPTION_ENABLE_ERROR_OFFSET -DOTL_ORA_UNICODE
+ORACLE_LDFLAGS =  -L/usr/oracle/lib
+ORACLE_LIBS = -lclntsh
+PACKAGE = tora
+PACKAGE_BUGREPORT = tora-develop at lists.sourceforge.net
+PACKAGE_NAME = tora
+PACKAGE_STRING = tora 1.3.22
+PACKAGE_TARNAME = tora
+PACKAGE_VERSION = 1.3.22
+PATH_SEPARATOR = :
+PCRE_CFLAGS = 
+PCRE_LIBS = -lpcre
+QSCINTILLA_CXXFLAGS = 
+QSCINTILLA_LDFLAGS = 
+QTE_NORTTI = 
+QT_INCLUDES = -I/usr/lib/qt3/include
+QT_LDFLAGS = -L/usr/lib/qt3/lib -lqt-mt -lpng -lz -lm -ljpeg  -lSM -lICE -lXext -lX11 -lSM -lICE 
+RANLIB = ranlib
+SET_MAKE = 
+SHELL = /bin/sh
+STRIP = strip
+TORA_LINK_OTHERS = none
+UIC = /usr/lib/qt3/bin/uic -L $(kde_widgetdir) -nounload
+UIC_TR = i18n
+USER_INCLUDES = 
+USER_LDFLAGS = 
+USE_THREADS = 
+VERSION = 1.3.22
+XMKMF = 
+X_CFLAGS = 
+X_EXTRA_LIBS = 
+X_INCLUDES = 
+X_LDFLAGS = 
+X_LIBS = 
+X_PRE_LIBS =  -lSM -lICE
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+ac_ct_F77 = g77
+all_includes = -I/usr/lib/qt3/include 
+all_libraries =  -L/usr/lib/qt3/lib -lqt-mt -lpng -lz -lm -ljpeg  -lSM -lICE -lXext -lX11 -lSM -lICE 
+am__fastdepCC_FALSE = #
+am__fastdepCC_TRUE = 
+am__fastdepCXX_FALSE = #
+am__fastdepCXX_TRUE = 
+am__include = include
+am__leading_dot = .
+am__quote = 
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build = i686-pc-linux-gnu
+build_alias = 
+build_cpu = i686
+build_os = linux-gnu
+build_vendor = pc
+datadir = ${datarootdir}
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host = i686-pc-linux-gnu
+host_alias = 
+host_cpu = i686
+host_os = linux-gnu
+host_vendor = pc
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = /local/tora/tora/config/install-sh
+kde_appsdir = 
+kde_bindir = 
+kde_confdir = 
+kde_datadir = 
+kde_htmldir = 
+kde_icondir = 
+kde_includes = 
+kde_libraries = 
+kde_libs_htmldir = 
+kde_libs_prefix = 
+kde_locale = 
+kde_mimedir = 
+kde_moduledir = 
+kde_qtver = 0
+kde_servicesdir = 
+kde_servicetypesdir = 
+kde_sounddir = 
+kde_styledir = 
+kde_templatesdir = 
+kde_wallpaperdir = 
+kde_widgetdir = 
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = mkdir -p --
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr
+program_transform_name = s,x,x,
+psdir = ${docdir}
+qt_includes = /usr/lib/qt3/include
+qt_libraries = /usr/lib/qt3/lib
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+sysconfdir = ${prefix}/etc
+target_alias = 
+x_includes = .
+x_libraries = /usr/lib
+info_TEXINFOS = tora.texi 
+tora_TEXINFO = \
+	additionalhelp.texi \
+	alert.texi \
+	analyze.texi \
+	api.texi \
+	browser.texi \
+	charts.texi \
+	common.texi \
+	current.texi \
+	database.texi \
+	debugger.texi \
+	editors.texi \
+	extendingtora.texi \
+	externalapi.texi \
+	fonts.texi \
+	help.texi \
+	history.texi \
+	invalid.texi \
+	lists.texi \
+	newconnection.texi \
+	output.texi \
+	preferences.texi \
+	rollback.texi \
+	script.texi \
+	searchreplace.texi \
+	security.texi \
+	session.texi \
+	sqledit.texi \
+	storage.texi \
+	template.texi \
+	tools.texi \
+	toolsetting.texi \
+	tora.texi \
+	trace.texi \
+	tuning.texi \
+	window.texi \
+	worksheet.texi \
+	workspace.texi 
+
+SUFFIXES = .html
+html_docs = tora/index.html
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .html .dvi .info .pdf .ps .texi
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/help/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  doc/help/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+
+.texi.info:
+	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+	am__cwd=`pwd` && cd $(srcdir) && \
+	rm -rf $$backupdir && mkdir $$backupdir && \
+	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+	  done; \
+	else :; fi && \
+	cd "$$am__cwd"; \
+	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+	 -o $@ $<; \
+	then \
+	  rc=0; \
+	  cd $(srcdir); \
+	else \
+	  rc=$$?; \
+	  cd $(srcdir) && \
+	  $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+	fi; \
+	rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+	$(TEXI2DVI) $<
+
+.texi.pdf:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+	$(TEXI2PDF) $<
+$(srcdir)/tora.info: tora.texi 
+tora.dvi: tora.texi 
+tora.pdf: tora.texi 
+tora.html: tora.texi 
+.dvi.ps:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	$(DVIPS) -o $@ $<
+
+uninstall-info-am:
+	@$(PRE_UNINSTALL)
+	@if (install-info --version && \
+	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+	  list='$(INFO_DEPS)'; \
+	  for file in $$list; do \
+	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+	    install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+	  done; \
+	else :; fi
+	@$(NORMAL_UNINSTALL)
+	@list='$(INFO_DEPS)'; \
+	for file in $$list; do \
+	  relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	  relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  (if cd "$(DESTDIR)$(infodir)"; then \
+	     echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+	     rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+	   else :; fi); \
+	done
+
+dist-info: $(INFO_DEPS)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	list='$(INFO_DEPS)'; \
+	for base in $$list; do \
+	  case $$base in \
+	    $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+	  esac; \
+	  if test -f $$base; then d=.; else d=$(srcdir); fi; \
+	  for file in $$d/$$base*; do \
+	    relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+	    test -f $(distdir)/$$relfile || \
+	      cp -p $$file $(distdir)/$$relfile; \
+	  done; \
+	done
+
+mostlyclean-aminfo:
+	-rm -rf tora.aux tora.cp tora.cps tora.fn tora.fns tora.ky tora.kys tora.log \
+	  tora.pg tora.pgs tora.tmp tora.toc tora.tp tora.tps tora.vr \
+	  tora.vrs tora.dvi tora.pdf tora.ps tora.html
+
+maintainer-clean-aminfo:
+	@list='$(INFO_DEPS)'; for i in $$list; do \
+	  i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+	  rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+	done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-info dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile $(INFO_DEPS)
+installdirs:
+	for dir in "$(DESTDIR)$(infodir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am: $(DVIS)
+
+html-am: $(HTMLS)
+
+info: info-am
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-info-am
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-info-am: $(INFO_DEPS)
+	@$(NORMAL_INSTALL)
+	test -z "$(infodir)" || $(mkdir_p) "$(DESTDIR)$(infodir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	list='$(INFO_DEPS)'; \
+	for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	  esac; \
+	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
+	  file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+                       $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+	    if test -f $$ifile; then \
+	      relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
+	      echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
+	      $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
+	    else : ; fi; \
+	  done; \
+	done
+	@$(POST_INSTALL)
+	@if (install-info --version && \
+	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+	  list='$(INFO_DEPS)'; \
+	  for file in $$list; do \
+	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+	    install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+	  done; \
+	else : ; fi
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+	maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am: $(PDFS)
+
+ps: ps-am
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	dist-hook dist-info distclean distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-aminfo \
+	maintainer-clean-generic mostlyclean mostlyclean-aminfo \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	uninstall uninstall-am uninstall-info-am
+
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+
+$(html_docs): $(tora_TEXINFO)
+	$(MAKEINFO) --html $(top_srcdir)/doc/help/tora.texi
+
+.texi.html:
+	$(MAKEINFO) --html $<
+
+all: html
+
+.PHONY: html
+html: $(html_docs)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: kde-extras/tora/branches/upstream/current/doc/help/Makefile.am
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/Makefile.am	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/Makefile.am	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,58 @@
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+
+info_TEXINFOS = tora.texi 
+
+tora_TEXINFO = \
+	additionalhelp.texi \
+	alert.texi \
+	analyze.texi \
+	api.texi \
+	browser.texi \
+	charts.texi \
+	common.texi \
+	current.texi \
+	database.texi \
+	debugger.texi \
+	editors.texi \
+	extendingtora.texi \
+	externalapi.texi \
+	fonts.texi \
+	help.texi \
+	history.texi \
+	invalid.texi \
+	lists.texi \
+	newconnection.texi \
+	output.texi \
+	preferences.texi \
+	rollback.texi \
+	script.texi \
+	searchreplace.texi \
+	security.texi \
+	session.texi \
+	sqledit.texi \
+	storage.texi \
+	template.texi \
+	tools.texi \
+	toolsetting.texi \
+	tora.texi \
+	trace.texi \
+	tuning.texi \
+	window.texi \
+	worksheet.texi \
+	workspace.texi 
+
+SUFFIXES = .html
+
+html_docs = tora/index.html
+
+$(html_docs): $(tora_TEXINFO)
+	$(MAKEINFO) --html $(top_srcdir)/doc/help/tora.texi
+
+.texi.html:
+	$(MAKEINFO) --html $<
+
+all: html
+
+.PHONY: html
+html: $(html_docs)

Added: kde-extras/tora/branches/upstream/current/doc/help/Makefile.in
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/Makefile.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/Makefile.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,623 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = doc/help
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/m4/cppunit.m4 \
+	$(top_srcdir)/config/m4/oracle.m4 \
+	$(top_srcdir)/config/m4/pcre.m4 \
+	$(top_srcdir)/config/m4/qtkde.m4 \
+	$(top_srcdir)/config/m4/tora.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+INFO_DEPS = $(srcdir)/tora.info
+TEXINFO_TEX = $(top_srcdir)/config/texinfo.tex
+am__TEXINFO_TEX_DIR = $(top_srcdir)/config
+DVIS = tora.dvi
+PDFS = tora.pdf
+PSS = tora.ps
+HTMLS = tora.html
+TEXINFOS = tora.texi
+TEXI2DVI = texi2dvi
+TEXI2PDF = $(TEXI2DVI) --pdf --batch
+MAKEINFOHTML = $(MAKEINFO) --html
+AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS)
+DVIPS = dvips
+am__installdirs = "$(DESTDIR)$(infodir)"
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_FALSE = @CPPUNIT_FALSE@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CPPUNIT_TRUE = @CPPUNIT_TRUE@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MONO_FALSE = @ENABLE_MONO_FALSE@
+ENABLE_MONO_TRUE = @ENABLE_MONO_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GREP = @GREP@
+HAVE_ORACLE_FALSE = @HAVE_ORACLE_FALSE@
+HAVE_ORACLE_TRUE = @HAVE_ORACLE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISODATE = @ISODATE@
+KDECONFIG = @KDECONFIG@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBXINERAMA = @LIBXINERAMA@
+LIBZ = @LIBZ@
+LIB_DCOP = @LIB_DCOP@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KFILE = @LIB_KFILE@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIO = @LIB_KIO@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+LUPDATE = @LUPDATE@
+MAKEINFO = @MAKEINFO@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+OBJEXT = @OBJEXT@
+ORACLE_CXXFLAGS = @ORACLE_CXXFLAGS@
+ORACLE_LDFLAGS = @ORACLE_LDFLAGS@
+ORACLE_LIBS = @ORACLE_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_LIBS = @PCRE_LIBS@
+QSCINTILLA_CXXFLAGS = @QSCINTILLA_CXXFLAGS@
+QSCINTILLA_LDFLAGS = @QSCINTILLA_LDFLAGS@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TORA_LINK_OTHERS = @TORA_LINK_OTHERS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+info_TEXINFOS = tora.texi 
+tora_TEXINFO = \
+	additionalhelp.texi \
+	alert.texi \
+	analyze.texi \
+	api.texi \
+	browser.texi \
+	charts.texi \
+	common.texi \
+	current.texi \
+	database.texi \
+	debugger.texi \
+	editors.texi \
+	extendingtora.texi \
+	externalapi.texi \
+	fonts.texi \
+	help.texi \
+	history.texi \
+	invalid.texi \
+	lists.texi \
+	newconnection.texi \
+	output.texi \
+	preferences.texi \
+	rollback.texi \
+	script.texi \
+	searchreplace.texi \
+	security.texi \
+	session.texi \
+	sqledit.texi \
+	storage.texi \
+	template.texi \
+	tools.texi \
+	toolsetting.texi \
+	tora.texi \
+	trace.texi \
+	tuning.texi \
+	window.texi \
+	worksheet.texi \
+	workspace.texi 
+
+SUFFIXES = .html
+html_docs = tora/index.html
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .html .dvi .info .pdf .ps .texi
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  doc/help/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  doc/help/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+
+.texi.info:
+	restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+	am__cwd=`pwd` && cd $(srcdir) && \
+	rm -rf $$backupdir && mkdir $$backupdir && \
+	if ($(MAKEINFO) --version) >/dev/null 2>&1; then \
+	  for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \
+	    if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \
+	  done; \
+	else :; fi && \
+	cd "$$am__cwd"; \
+	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \
+	 -o $@ $<; \
+	then \
+	  rc=0; \
+	  cd $(srcdir); \
+	else \
+	  rc=$$?; \
+	  cd $(srcdir) && \
+	  $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+	fi; \
+	rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+	$(TEXI2DVI) $<
+
+.texi.pdf:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+	$(TEXI2PDF) $<
+$(srcdir)/tora.info: tora.texi 
+tora.dvi: tora.texi 
+tora.pdf: tora.texi 
+tora.html: tora.texi 
+.dvi.ps:
+	TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+	$(DVIPS) -o $@ $<
+
+uninstall-info-am:
+	@$(PRE_UNINSTALL)
+	@if (install-info --version && \
+	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+	  list='$(INFO_DEPS)'; \
+	  for file in $$list; do \
+	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \
+	    install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+	  done; \
+	else :; fi
+	@$(NORMAL_UNINSTALL)
+	@list='$(INFO_DEPS)'; \
+	for file in $$list; do \
+	  relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	  relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  (if cd "$(DESTDIR)$(infodir)"; then \
+	     echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \
+	     rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \
+	   else :; fi); \
+	done
+
+dist-info: $(INFO_DEPS)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	list='$(INFO_DEPS)'; \
+	for base in $$list; do \
+	  case $$base in \
+	    $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \
+	  esac; \
+	  if test -f $$base; then d=.; else d=$(srcdir); fi; \
+	  for file in $$d/$$base*; do \
+	    relfile=`expr "$$file" : "$$d/\(.*\)"`; \
+	    test -f $(distdir)/$$relfile || \
+	      cp -p $$file $(distdir)/$$relfile; \
+	  done; \
+	done
+
+mostlyclean-aminfo:
+	-rm -rf tora.aux tora.cp tora.cps tora.fn tora.fns tora.ky tora.kys tora.log \
+	  tora.pg tora.pgs tora.tmp tora.toc tora.tp tora.tps tora.vr \
+	  tora.vrs tora.dvi tora.pdf tora.ps tora.html
+
+maintainer-clean-aminfo:
+	@list='$(INFO_DEPS)'; for i in $$list; do \
+	  i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \
+	  rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \
+	done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-info dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile $(INFO_DEPS)
+installdirs:
+	for dir in "$(DESTDIR)$(infodir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am: $(DVIS)
+
+html-am: $(HTMLS)
+
+info: info-am
+
+info-am: $(INFO_DEPS)
+
+install-data-am: install-info-am
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-info-am: $(INFO_DEPS)
+	@$(NORMAL_INSTALL)
+	test -z "$(infodir)" || $(mkdir_p) "$(DESTDIR)$(infodir)"
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	list='$(INFO_DEPS)'; \
+	for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	  esac; \
+	  if test -f $$file; then d=.; else d=$(srcdir); fi; \
+	  file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \
+	  for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \
+                       $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \
+	    if test -f $$ifile; then \
+	      relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
+	      echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
+	      $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
+	    else : ; fi; \
+	  done; \
+	done
+	@$(POST_INSTALL)
+	@if (install-info --version && \
+	     install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \
+	  list='$(INFO_DEPS)'; \
+	  for file in $$list; do \
+	    relfile=`echo "$$file" | sed 's|^.*/||'`; \
+	    echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\
+	    install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\
+	  done; \
+	else : ; fi
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+	maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am: $(PDFS)
+
+ps: ps-am
+
+ps-am: $(PSS)
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	dist-hook dist-info distclean distclean-generic \
+	distclean-libtool distdir dvi dvi-am html html-am info info-am \
+	install install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-aminfo \
+	maintainer-clean-generic mostlyclean mostlyclean-aminfo \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	uninstall uninstall-am uninstall-info-am
+
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+
+$(html_docs): $(tora_TEXINFO)
+	$(MAKEINFO) --html $(top_srcdir)/doc/help/tora.texi
+
+.texi.html:
+	$(MAKEINFO) --html $<
+
+all: html
+
+.PHONY: html
+html: $(html_docs)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: kde-extras/tora/branches/upstream/current/doc/help/additionalhelp.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/additionalhelp.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/additionalhelp.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+ at node  additionalhelp
+ at subsection Additional Help Settings
+ at cindex Additional Help Settings
+
+This page is used to configure extra manuals for viewing in the TOra help viewer. Specifically the Oracle HTML based manuals which contents can be parsed and included in the left pane contents tree of the TOra help.
+
+ at image{images/additionalhelp}
+
+If you have compiled TOra with KDE support (Not Windows or Qt versions) you can point this to any HTTP location. You could even use the help browser to browse the Oracle manuals directly from Technet if you wanted to (Free membership required).
+
+ at table @samp
+ at item Remove path
+This will remove the currently selected manual from the list.
+ at samp{Remove path}
+
+ at item Oracle Manuals
+This is a quick way to add a collection of manuals. When you select this button a dialog will pop up and ask you for a filename. In Oracle 8 this should be the index page that contains the links to the manuals. Observe that this is not the page which links to the different book categories. In Oracle 9i you should point it to the docindex.htm file in the base directory of the documentation. If successful all the manuals available on the page is added to the list of manuals.
+ at samp{Oracle Manuals}
+
+ at item Add path
+Add a manual to the list of manuals. This pop up a dialog asking for the name of the manual and the location of the manuals table of contents HTML file (toc.html).
+ at samp{Add path}
+
+ at end table
+

Added: kde-extras/tora/branches/upstream/current/doc/help/alert.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/alert.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/alert.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,33 @@
+ at node alert
+ at section Alert Tool
+ at cindex Alert Tool
+This tool is usefull for debugging database packages that send or depend on receiving dbms alerts.
+
+ at image{images/alert}
+
+This tool is controled solely from it's toolbar which is followed by a list containing the alerts received so far on the watched alerts. The toolbar contains the following controls.
+
+ at table @asis
+ at item Registered
+This list contains the alerts that are registered for listening. To add a new alert simply write the name in this combo box and press return or the register current button immediately to the right. To remove an alert select it in the list and press the remove registered button. at samp{Registered}.
+
+ at item @strong{Register current}
+Register the name currently entered in the registered combo box.
+
+ at item @strong{Remove registered}
+Stop listening to the registered alert currently selected in the registered combo box. 	
+
+ at item @strong{Name}	
+Name of the alert to send. 	
+
+ at item @strong{Message}
+Message to send in an alert. Pressing return in this lineedit will send the alert. 	
+
+ at item @strong{Edit message in memo}
+Edit the message in a memo editor, usefull for sending newlines and longer messages. 	
+
+ at item @strong{Send alert}
+Send the currently defined alert. You can also send an alert by pressing return in the message line editor.
+
+ at end table
+

Added: kde-extras/tora/branches/upstream/current/doc/help/analyze.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/analyze.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/analyze.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,46 @@
+ at node analyze
+ at section Statistics manager
+ at cindex Statistics manager
+
+This tool is usefull for collecting statistics and analyze tables in parallel. You can also use it to browse collected statistics.
+
+ at image{images/analyze}
+
+You control the interface through the controls in the toolbar. The rest of the interface simply displays currently available tables in the current schema. When collecting statistics only the selected items in the tablelist are analyzed.
+
+ at table @samp
+ at item Refresh
+Refresh the table list from the database.
+ at samp{Refresh}
+
+ at item Schema
+The next control is which schema to investigate tables for.
+ at samp{Schema}
+
+ at item Operation
+What operation to perform. Select one of @strong{compute statistics}, @strong{estimate statistics}, @strong{delete statistics} and @strong{validate references}.
+ at samp{Operation}
+
+ at item Target
+Depending on the @strong{operation} you can sometimes select what kind of statistic to collect. Choose between @strong{all}, @strong{table}, @strong{indexed columns} and @strong{local indexes}.
+ at samp{Target}
+
+ at item Sample
+If the @strong{operation} is @strong{estimate statistics} you can choose how large sample should be used to estimate the statistic information in percent of total amount of data.
+ at samp{Sample}
+
+ at item Parallel
+Indicate the number of separate connections to open to the database and run collecting statistics concurrently when collecting.
+ at samp{Parallel}
+
+ at item Start analyzing
+Press this button to perform the indicated operation on the tables selected in the list below the toolbar.
+ at samp{Start analyzing}
+
+
+ at item Stop
+Stop current run. Before the stop button you can also see information about the currently running statistics gathering run if any is running.
+ at samp{Stop}
+
+ at end table
+

Added: kde-extras/tora/branches/upstream/current/doc/help/api/TODock.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/TODock.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/TODock.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,40 @@
+<HTML>
+<HEAD>
+<TITLE>class TODock</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class TODock</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ The class to use for a dock widget. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-TODock.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<center><H4>No members</H4></center>
+<HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ The class to use for a dock widget.
+ </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/TOFileDialog.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/TOFileDialog.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/TOFileDialog.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,40 @@
+<HTML>
+<HEAD>
+<TITLE>class TOFileDialog</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class TOFileDialog</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ The class to use for a file dialog. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html">QFileDialog</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-TOFileDialog.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<center><H4>No members</H4></center>
+<HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ The class to use for a file dialog.
+ </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/TOMessageBox.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/TOMessageBox.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/TOMessageBox.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,40 @@
+<HTML>
+<HEAD>
+<TITLE>class TOMessageBox</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class TOMessageBox</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ The class to use for a messagebox. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html">QMessageBox</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-TOMessageBox.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<center><H4>No members</H4></center>
+<HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ The class to use for a messagebox.
+ </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/TOPrinter.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/TOPrinter.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/TOPrinter.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,40 @@
+<HTML>
+<HEAD>
+<TITLE>class TOPrinter</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class TOPrinter</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ The class to use for a printer object. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html">QPrinter</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-TOPrinter.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<center><H4>No members</H4></center>
+<HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ The class to use for a printer object.
+ </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/all-globals.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/all-globals.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/all-globals.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,682 @@
+<HTML>
+<HEAD>
+<TITLE>tora Globals</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>tora Globals</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h3>toconnection.h</h3><ul>
+<LI>typedef toQuery::queryDescribe  <A HREF="#ref437">toQDescribe</A>
+</LI>
+<LI>typedef std::list<toQDescribe>  <A HREF="#ref438">toQDescList</A>
+</LI>
+</ul>
+<h3>tomain.h</h3><ul>
+<LI><A HREF="toMain.html">toMain</A> *&nbsp;<b><A HREF="#ref461">toMainWidget</A></b> (void) 
+</LI>
+</ul>
+<h3>toqvalue.h</h3><ul>
+<LI>typedef std::list<toQValue>  <A HREF="#ref475">toQList</A>
+</LI>
+</ul>
+<h3>toreport.h</h3><ul>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref476">toGenerateReport</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &desc) 
+</LI>
+</ul>
+<h3>utils.h</h3><ul>
+<LI>void &nbsp;<b><A HREF="#ref533">toStatusMessage</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,bool save=false,bool log=true) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref534">toSQLToAddress</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref535">toSQLString</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &address) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref536">toReadableColumn</A></b> (<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &col) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref537">toNow</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref538">toSetSessionType</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref539">toGetSessionType</A></b> (void) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstringlist.html">QStringList</A> &nbsp;<b><A HREF="#ref540">toGetSessionTypes</A></b> (void) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qcombobox.html">QComboBox</A> *&nbsp;<b><A HREF="#ref541">toRefreshCreate</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &def=QString::null,
+			   <A HREF="/usr/lib/qt3/doc/html/qcombobox.html">QComboBox</A> *item=NULL) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref542">toRefreshParse</A></b> (<A HREF="toTimer.html">toTimer</A> *timer,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str=QString::null) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref543">toMonolithic</A></b> (void) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref544">toDeepCopy</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *&nbsp;<b><A HREF="#ref545">toAllocBar</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+<LI><A HREF="TODock.html">TODock</A> *&nbsp;<b><A HREF="#ref546">toAllocDock</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,
+		    const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &db,
+		    const <A HREF="/usr/lib/qt3/doc/html/qpixmap.html">QPixmap</A> &icon) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref547">toAttachDock</A></b> (<A HREF="TODock.html">TODock</A> *dock,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *container,QMainWindow::ToolBarDock place) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref548">toSizeDecode</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qkeysequence.html">QKeySequence</A> &nbsp;<b><A HREF="#ref549">toKeySequence</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &keysequence) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref550">toCheckKeyEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qkeyevent.html">QKeyEvent</A> *event,const <A HREF="/usr/lib/qt3/doc/html/qkeysequence.html">QKeySequence</A> &key) 
+</LI>
+<LI>template <class T> T &nbsp;<b><A HREF="#ref551">toShift</A></b> (std::list<T> &lst) 
+</LI>
+<LI>template <class T> void &nbsp;<b><A HREF="#ref552">toUnShift</A></b> (std::list<T> &lst,const T &str) 
+</LI>
+<LI>template <class T> T &nbsp;<b><A HREF="#ref553">toPop</A></b> (std::list<T> &lst) 
+</LI>
+<LI>template <class T> void &nbsp;<b><A HREF="#ref554">toPush</A></b> (std::list<T> &lst,const T &str) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qfont.html">QFont</A> &nbsp;<b><A HREF="#ref555">toStringToFont</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref556">toFontToString</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qfont.html">QFont</A> &fnt) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref557">toHelpPath</A></b> (void) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<b><A HREF="#ref558">toReadFile</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref559">toWriteFile</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &data) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref560">toWriteFile</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &data) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref561">toCompareLists</A></b> (<A HREF="/usr/lib/qt3/doc/html/qstringlist.html">QStringList</A> &l1,<A HREF="/usr/lib/qt3/doc/html/qstringlist.html">QStringList</A> &l2,unsigned int len) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref562">toSetEnv</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &var,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref563">toUnSetEnv</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &var) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref564">toOpenFilename</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filter,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref565">toSaveFilename</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filter,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref566">toToolMenuIndex</A></b> (void) 
+</LI>
+<LI>inline bool &nbsp;<b><A HREF="#ref567">toIsIdent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qchar.html">QChar</A> c) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref568">toPluginPath</A></b> (void) 
+</LI>
+<LI>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><A HREF="#ref569">toStatusMessages</A></b> (void) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qbrush.html">QBrush</A> &nbsp;<b><A HREF="#ref570">toChartBrush</A></b> (int index) 
+</LI>
+<LI><A HREF="toConnection.html">toConnection</A> &&nbsp;<b><A HREF="#ref571">toCurrentConnection</A></b> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> *widget) 
+</LI>
+<LI><A HREF="toToolWidget.html">toToolWidget</A> *&nbsp;<b><A HREF="#ref572">toCurrentTool</A></b> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> *widget) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref573">toIsOracle</A></b> (const <A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref574">toIsSapDB</A></b> (const <A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref575">toIsMySQL</A></b> (const <A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref576">toIsPostgreSQL</A></b> (const <A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref577">toSQLStripSpecifier</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref578">toSQLStripBind</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref579">toExpandFile</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &file) 
+</LI>
+<LI><A HREF="toQValue.html">toQValue</A> &nbsp;<b><A HREF="#ref580">toUnnull</A></b> (const <A HREF="toQValue.html">toQValue</A> &str) 
+</LI>
+<LI><A HREF="toQValue.html">toQValue</A> &nbsp;<b><A HREF="#ref581">toNull</A></b> (const <A HREF="toQValue.html">toQValue</A> &str) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref582">toObfuscate</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref583">toUnobfuscate</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref584">toCheckModal</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref585">toMapExport</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix,
+		 std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &src) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref586">toMapImport</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix,
+		 std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &dst) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *&nbsp;<b><A HREF="#ref587">toFindItem</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *list,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref589">toToolCaption</A></b> (<A HREF="toToolWidget.html">toToolWidget</A> *tool,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &caption) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref590">toTranslateMayby</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &context,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text) 
+</LI>
+<LI>template <class T>
+T &nbsp;<b><A HREF="#ref591">max</A></b> (T a, T b) 
+</LI>
+<LI>template <class T>
+T &nbsp;<b><A HREF="#ref592">min</A></b> (T a, T b) 
+</LI>
+</ul>
+<h2>Global member Documentation</h2>
+<A NAME="toQDescribe"></A><A NAME="ref437"></A><table width="100%"><tr bgcolor="#eeeeee"><td>typedef <A HREF="toQuery__queryDescribe.html">toQuery::queryDescribe</A>  <strong>toQDescribe</strong></td><td align="right"><h3><strong>toQDescribe</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></small></p><p> A short representation of a <A HREF="toQuery__queryDescribe.html">toQuery::queryDescribe</A>
+ </p>
+<A NAME="toQDescList"></A><A NAME="ref438"></A><table width="100%"><tr bgcolor="#eeeeee"><td>typedef std::list<<A HREF="#toQDescribe">toQDescribe</A>>  <strong>toQDescList</strong></td><td align="right"><h3><strong>toQDescList</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></small></p><p> A short representation of list<toQuery::queryDescribe>
+ </p>
+<A NAME="toMainWidget"></A><A NAME="ref461"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toMain.html">toMain</A> *&nbsp;<strong>toMainWidget</strong> (void)
+<br></td><td align="right"><h3><strong>toMainWidget</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="tomain_h.html">tomain.h</A>&gt;</code></small></p><p> Get a pointer to the main window
+</p>
+<p><b>Returns</b>: Pointer to main window.
+ </p>
+<A NAME="toQList"></A><A NAME="ref475"></A><table width="100%"><tr bgcolor="#eeeeee"><td>typedef std::list<<A HREF="toQValue.html">toQValue</A>>  <strong>toQList</strong></td><td align="right"><h3><strong>toQList</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="toqvalue_h.html">toqvalue.h</A>&gt;</code></small></p><p> A short representation of list<toQuery::queryValue>
+ </p>
+<A NAME="toGenerateReport"></A><A NAME="ref476"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toGenerateReport</strong> (<A HREF="toConnection.html">toConnection</A> &conn,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &desc)
+<br></td><td align="right"><h3><strong>toGenerateReport</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="toreport_h.html">toreport.h</A>&gt;</code></small></p><p> Generate an HTML based report on a description of database objects from <A HREF="toExtract.html">toExtract</A>.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection description list was generated from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>desc</i></TD><TD align="left" valign="top">Description list to create report on.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: An HTML formatted report on the contents of desc.
+ </p>
+<A NAME="toStatusMessage"></A><A NAME="ref533"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toStatusMessage</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,bool save=false,bool log=true)
+<br></td><td align="right"><h3><strong>toStatusMessage</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Display a message in the statusbar of the main window.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Message to display
+</TD></TR>
+<TR><TD align="left" valign="top"><i>save</i></TD><TD align="left" valign="top">If true don't remove the message after a specified interval.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>log</i></TD><TD align="left" valign="top">Log message. Will never log saved messages.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toSQLToAddress"></A><A NAME="ref534"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toSQLToAddress</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>toSQLToAddress</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get an address to a SQL statement in the SGA. The address has the form
+ 'address:hash_value' which are resolved from the v$sqltext_with_newlines
+ view in Oracle.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to get address from
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">Statement to get address for.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String with address in.
+</p>
+<p><b>Throws</b>: QString, if, address, not, found.</p>
+<A NAME="toSQLString"></A><A NAME="ref535"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toSQLString</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &address)
+<br></td><td align="right"><h3><strong>toSQLString</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get the full SQL of an address (See <A HREF="#toSQLToAddress">toSQLToAddress</A>) from the
+ SGA.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to get address from
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">Address of SQL.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String with SQL of statement.
+</p>
+<p><b>Throws</b>: QString, if, address, not, found.</p>
+<A NAME="toReadableColumn"></A><A NAME="ref536"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toReadableColumn</strong> (<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &col)
+<br></td><td align="right"><h3><strong>toReadableColumn</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Make a column name more readable.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Name of column name, will be modified.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toNow"></A><A NAME="ref537"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toNow</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>toNow</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get the current database time in the current sessions dateformat.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to get address from.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String with the current date and time.
+ </p>
+<A NAME="toSetSessionType"></A><A NAME="ref538"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toSetSessionType</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>toSetSessionType</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Set the current session type (Style)
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Session to set, can be any of Motif, Motif Plus, SGI, CDE, Windows and Platinum
+</TD></TR>
+</TABLE></P>
+<p><b>Throws</b>: QString, if, style, not, available.</p>
+<A NAME="toGetSessionType"></A><A NAME="ref539"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toGetSessionType</strong> (void)
+<br></td><td align="right"><h3><strong>toGetSessionType</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get current session type (Style)
+</p>
+<p><b>Returns</b>: A string describing the current style.
+</p>
+<p><b>See also</b>: <A HREF="#toSetSessionType">toSetSessionType</A></p>
+<A NAME="toGetSessionTypes"></A><A NAME="ref540"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstringlist.html">QStringList</A> &nbsp;<strong>toGetSessionTypes</strong> (void)
+<br></td><td align="right"><h3><strong>toGetSessionTypes</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get the available styles.
+ </p>
+<A NAME="toRefreshCreate"></A><A NAME="ref541"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qcombobox.html">QComboBox</A> *&nbsp;<strong>toRefreshCreate</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &def=QString::null,
+			   <A HREF="/usr/lib/qt3/doc/html/qcombobox.html">QComboBox</A> *item=NULL)
+<br></td><td align="right"><h3><strong>toRefreshCreate</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Create or fill a combobox with refresh intervals.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of created combobox.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of created combobox.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>def</i></TD><TD align="left" valign="top">Default value of the combobox.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>item</i></TD><TD align="left" valign="top">Combo box to fill. If not specified a new combobox is created.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toRefreshParse"></A><A NAME="ref542"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toRefreshParse</strong> (<A HREF="toTimer.html">toTimer</A> *timer,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str=QString::null)
+<br></td><td align="right"><h3><strong>toRefreshParse</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Set a timer with the value from a refresh combobox (See <A HREF="#toRefreshCreate">toRefreshCreate</A>).
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>timer</i></TD><TD align="left" valign="top">Timer to set timeout in.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String from currentText of combobox. If empty, set to default.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toMonolithic"></A><A NAME="ref543"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>toMonolithic</strong> (void)
+<br></td><td align="right"><h3><strong>toMonolithic</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get information about wether this TOra has plugin support or not.
+</p>
+<p><b>Returns</b>: True if plugin support is enabled.
+ </p>
+<A NAME="toDeepCopy"></A><A NAME="ref544"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toDeepCopy</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>toDeepCopy</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Make a deep copy of a string. Usefull when sharing copying strings between threads.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to copy
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Copied string.
+ </p>
+<A NAME="toAllocBar"></A><A NAME="ref545"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *&nbsp;<strong>toAllocBar</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>toAllocBar</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Allocate a toolbar. This is needed since Qt and KDE use different toolbars.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of toolbar.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of toolbar.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A newly created toolbar.
+ </p>
+<A NAME="toAllocDock"></A><A NAME="ref546"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="TODock.html">TODock</A> *&nbsp;<strong>toAllocDock</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,
+		    const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &db,
+		    const <A HREF="/usr/lib/qt3/doc/html/qpixmap.html">QPixmap</A> &icon)
+<br></td><td align="right"><h3><strong>toAllocDock</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Allocate a new docked window. This is needed since Qt and KDE docks windows differently
+ (Qt 2.x doesn't even have support for docked windows). Observe that you must attach a
+ dock using <A HREF="#toAttachDock">toAttachDock</A> after allocating it.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of window.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>db</i></TD><TD align="left" valign="top">Database name or empty if N/A.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>icon</i></TD><TD align="left" valign="top">Icon of new dock.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A newly allocated fock.
+ </p>
+<A NAME="toAttachDock"></A><A NAME="ref547"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toAttachDock</strong> (<A HREF="TODock.html">TODock</A> *dock,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *container,QMainWindow::ToolBarDock place)
+<br></td><td align="right"><h3><strong>toAttachDock</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Attach a dock to a specified position.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>dock</i></TD><TD align="left" valign="top">Dock to attach
+</TD></TR>
+<TR><TD align="left" valign="top"><i>container</i></TD><TD align="left" valign="top">Whatever container is supposed to be in the dock window.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>place</i></TD><TD align="left" valign="top">Where to place the dock.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toSizeDecode"></A><A NAME="ref548"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>toSizeDecode</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>toSizeDecode</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Decode a size string this basically converts "KB" to 1024, "MB" to 1024KB and
+ everything else to 1.
+</p>
+<p><b>Returns</b>: Multiplier specified by string.
+ </p>
+<A NAME="toKeySequence"></A><A NAME="ref549"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qkeysequence.html">QKeySequence</A> &nbsp;<strong>toKeySequence</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &keysequence)
+<br></td><td align="right"><h3><strong>toKeySequence</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p>
+ Check that a key sequence is valid and return same sequence
+ </p>
+<A NAME="toCheckKeyEvent"></A><A NAME="ref550"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>toCheckKeyEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qkeyevent.html">QKeyEvent</A> *event,const <A HREF="/usr/lib/qt3/doc/html/qkeysequence.html">QKeySequence</A> &key)
+<br></td><td align="right"><h3><strong>toCheckKeyEvent</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p>
+ Check if a key sequence and a key event represent the same key and return if that is the case.
+ Only support single key keysequences.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>event</i></TD><TD align="left" valign="top">Key event.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>key</i></TD><TD align="left" valign="top">Key sequence.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toShift"></A><A NAME="ref551"></A><table width="100%"><tr bgcolor="#eeeeee"><td>template <class T> T &nbsp;<strong>toShift</strong> (std::list<T> &lst)
+<br></td><td align="right"><h3><strong>toShift</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Shift the first value out of a list.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>lst</i></TD><TD align="left" valign="top">List to shift value from (Also modified).
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The first value in the list.
+ </p>
+<A NAME="toUnShift"></A><A NAME="ref552"></A><table width="100%"><tr bgcolor="#eeeeee"><td>template <class T> void &nbsp;<strong>toUnShift</strong> (std::list<T> &lst,const T &str)
+<br></td><td align="right"><h3><strong>toUnShift</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Push an object to the beginning of a list.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>lst</i></TD><TD align="left" valign="top">List to push value in from of.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Object to push.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toPop"></A><A NAME="ref553"></A><table width="100%"><tr bgcolor="#eeeeee"><td>template <class T> T &nbsp;<strong>toPop</strong> (std::list<T> &lst)
+<br></td><td align="right"><h3><strong>toPop</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Pop the last value out of a list.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>lst</i></TD><TD align="left" valign="top">List to pop value from (Also modified).
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The value in the list of objects.
+ </p>
+<A NAME="toPush"></A><A NAME="ref554"></A><table width="100%"><tr bgcolor="#eeeeee"><td>template <class T> void &nbsp;<strong>toPush</strong> (std::list<T> &lst,const T &str)
+<br></td><td align="right"><h3><strong>toPush</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Push an object to the end of a list.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>lst</i></TD><TD align="left" valign="top">List to push value in from of.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Object to push.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toStringToFont"></A><A NAME="ref555"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qfont.html">QFont</A> &nbsp;<strong>toStringToFont</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>toStringToFont</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Convert a string representation to a font structure.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String representing the font.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Font structure represented by the string.
+</p>
+<p><b>See also</b>: <A HREF="#toFontToString">toFontToString</A></p>
+<A NAME="toFontToString"></A><A NAME="ref556"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toFontToString</strong> (const <A HREF="/usr/lib/qt3/doc/html/qfont.html">QFont</A> &fnt)
+<br></td><td align="right"><h3><strong>toFontToString</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Convert a font to a string representation.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>fnt</i></TD><TD align="left" valign="top">Font to convert.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String representation of font.
+ </p>
+<A NAME="toHelpPath"></A><A NAME="ref557"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toHelpPath</strong> (void)
+<br></td><td align="right"><h3><strong>toHelpPath</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get the path to the help directory.
+</p>
+<p><b>Returns</b>: Path to the help directory.
+ </p>
+<A NAME="toReadFile"></A><A NAME="ref558"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<strong>toReadFile</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename)
+<br></td><td align="right"><h3><strong>toReadFile</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Read file from filename.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>filename</i></TD><TD align="left" valign="top">Filename to read file from.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Contents of file.
+</p>
+<p><b>Throws</b>: QString, describing, I/O, problem.</p>
+<A NAME="toWriteFile"></A><A NAME="ref559"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>toWriteFile</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &data)
+<br></td><td align="right"><h3><strong>toWriteFile</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Write file to filename.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>filename</i></TD><TD align="left" valign="top">Filename to write file to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to write to file.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toWriteFile"></A><A NAME="ref560"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>toWriteFile</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &data)
+<br></td><td align="right"><h3><strong>toWriteFile</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Write file to filename.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>filename</i></TD><TD align="left" valign="top">Filename to write file to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to write to file.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toCompareLists"></A><A NAME="ref561"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>toCompareLists</strong> (<A HREF="/usr/lib/qt3/doc/html/qstringlist.html">QStringList</A> &l1,<A HREF="/usr/lib/qt3/doc/html/qstringlist.html">QStringList</A> &l2,unsigned int len)
+<br></td><td align="right"><h3><strong>toCompareLists</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Compare two string lists.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>l1</i></TD><TD align="left" valign="top">First list to compare.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>l2</i></TD><TD align="left" valign="top">Second list to compare.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>len</i></TD><TD align="left" valign="top">Length of lists to compare.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: True if all first len elements match.
+ </p>
+<A NAME="toSetEnv"></A><A NAME="ref562"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toSetEnv</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &var,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &val)
+<br></td><td align="right"><h3><strong>toSetEnv</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Set environment variable.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>var</i></TD><TD align="left" valign="top">Variable name to set.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Value to set variable to.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toUnSetEnv"></A><A NAME="ref563"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toUnSetEnv</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &var)
+<br></td><td align="right"><h3><strong>toUnSetEnv</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Delete an environment variable.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>var</i></TD><TD align="left" valign="top">Environment variable to delete.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toOpenFilename"></A><A NAME="ref564"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toOpenFilename</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filter,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>toOpenFilename</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Pop up a dialog and choose a file to open.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>filename</i></TD><TD align="left" valign="top">Default filename to open.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>filter</i></TD><TD align="left" valign="top">Filter of filenames (See <A HREF="/usr/lib/qt3/doc/html/qfiledialog.html">QFileDialog</A>)
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of dialog.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Selected filename.
+ </p>
+<A NAME="toSaveFilename"></A><A NAME="ref565"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toSaveFilename</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filter,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>toSaveFilename</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Pop up a dialog and choose a file to save to.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>filename</i></TD><TD align="left" valign="top">Default filename to open.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>filter</i></TD><TD align="left" valign="top">Filter of filenames (See <A HREF="/usr/lib/qt3/doc/html/qfiledialog.html">QFileDialog</A>)
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of dialog.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Selected filename.
+ </p>
+<A NAME="toToolMenuIndex"></A><A NAME="ref566"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>toToolMenuIndex</strong> (void)
+<br></td><td align="right"><h3><strong>toToolMenuIndex</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get index of menu to insert tool specific menu at.
+</p>
+<p><b>Returns</b>: Index of the tool menu entry.
+ </p>
+<A NAME="toIsIdent"></A><A NAME="ref567"></A><table width="100%"><tr bgcolor="#eeeeee"><td>inline bool &nbsp;<strong>toIsIdent</strong> (<A HREF="/usr/lib/qt3/doc/html/qchar.html">QChar</A> c)
+<br></td><td align="right"><h3><strong>toIsIdent</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Check if a character is valid for an identifier in Oracle.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>c</i></TD><TD align="left" valign="top">Character to check
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: True if it is a valid Oracle identifier.
+ </p>
+<A NAME="toPluginPath"></A><A NAME="ref568"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toPluginPath</strong> (void)
+<br></td><td align="right"><h3><strong>toPluginPath</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get installation directory of application (Plugin directory on unix, installation
+ target on windows).
+</p>
+<p><b>Returns</b>: String containing directory
+ </p>
+<A NAME="toStatusMessages"></A><A NAME="ref569"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<strong>toStatusMessages</strong> (void)
+<br></td><td align="right"><h3><strong>toStatusMessages</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get a list of the latest status messages that have been shown.
+ </p>
+<A NAME="toChartBrush"></A><A NAME="ref570"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qbrush.html">QBrush</A> &nbsp;<strong>toChartBrush</strong> (int index)
+<br></td><td align="right"><h3><strong>toChartBrush</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Get a brush for a chart item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>index</i></TD><TD align="left" valign="top">Indicating which chart item to get color for.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toCurrentConnection"></A><A NAME="ref571"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toConnection.html">toConnection</A> &&nbsp;<strong>toCurrentConnection</strong> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> *widget)
+<br></td><td align="right"><h3><strong>toCurrentConnection</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Return the connection most closely associated with a widget. Currently connections are
+ only stored in toToolWidgets.
+</p>
+<p><b>Returns</b>: Reference toConnection object closest to the current.
+ </p>
+<A NAME="toCurrentTool"></A><A NAME="ref572"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toToolWidget.html">toToolWidget</A> *&nbsp;<strong>toCurrentTool</strong> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> *widget)
+<br></td><td align="right"><h3><strong>toCurrentTool</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Return the tool widget most closely associated with a widget.
+</p>
+<p><b>Returns</b>: Pointer to tool widget.
+ </p>
+<A NAME="toIsOracle"></A><A NAME="ref573"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>toIsOracle</strong> (const <A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>toIsOracle</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Check if this connection is an oracle connection.
+ </p>
+<A NAME="toIsSapDB"></A><A NAME="ref574"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>toIsSapDB</strong> (const <A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>toIsSapDB</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Check if this connection is an sapdb connection.
+ </p>
+<A NAME="toIsMySQL"></A><A NAME="ref575"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>toIsMySQL</strong> (const <A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>toIsMySQL</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Check if this connection is an MySQL connection.
+ </p>
+<A NAME="toIsPostgreSQL"></A><A NAME="ref576"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>toIsPostgreSQL</strong> (const <A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>toIsPostgreSQL</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Check if this connection is an PostgreSQL connection.
+ </p>
+<A NAME="toSQLStripSpecifier"></A><A NAME="ref577"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toSQLStripSpecifier</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>toSQLStripSpecifier</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Strip extra bind specifier from an SQL statement. (That means the extra <***> part after
+ the bind variable.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">The sql to strip.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Return a string containing the same statement without qualifiers, which means the
+         sql sent to Oracle and available in the SGA.
+ </p>
+<A NAME="toSQLStripBind"></A><A NAME="ref578"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toSQLStripBind</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>toSQLStripBind</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Strip extra binds and replace with empty strings.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">The sql to strip.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Return a string containing the same statement without binds.
+ </p>
+<A NAME="toExpandFile"></A><A NAME="ref579"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toExpandFile</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &file)
+<br></td><td align="right"><h3><strong>toExpandFile</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Expand filename with $HOME to be replaced with home directory or my documents.
+ </p>
+<A NAME="toUnnull"></A><A NAME="ref580"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQValue.html">toQValue</A> &nbsp;<strong>toUnnull</strong> (const <A HREF="toQValue.html">toQValue</A> &str)
+<br></td><td align="right"><h3><strong>toUnnull</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Convert string read by readValue to value read by readValueNull
+ </p>
+<A NAME="toNull"></A><A NAME="ref581"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQValue.html">toQValue</A> &nbsp;<strong>toNull</strong> (const <A HREF="toQValue.html">toQValue</A> &str)
+<br></td><td align="right"><h3><strong>toNull</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Convert string read by readValueNull to value to be read by readValue.
+ </p>
+<A NAME="toObfuscate"></A><A NAME="ref582"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toObfuscate</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>toObfuscate</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Take a string and make it illegible. Some security through obscurity here so you will
+ need to check the source to see what is actually done.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to be made unreadable.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Obfuscated string.
+ </p>
+<A NAME="toUnobfuscate"></A><A NAME="ref583"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toUnobfuscate</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>toUnobfuscate</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Unmake the actions of <A HREF="#toObfuscate">toObfuscate</A>.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>Obfuscated</i></TD><TD align="left" valign="top">string.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Original string.
+ </p>
+<A NAME="toCheckModal"></A><A NAME="ref584"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>toCheckModal</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget)
+<br></td><td align="right"><h3><strong>toCheckModal</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Check if the current widget is within the active modal widget (Or no modal widget exists)
+ </p>
+<A NAME="toMapExport"></A><A NAME="ref585"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toMapExport</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix,
+		 std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &src)
+<br></td><td align="right"><h3><strong>toMapExport</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Export the contents of a map into another map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">The destination map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to save map using.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>src</i></TD><TD align="left" valign="top">The map to save.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toMapImport"></A><A NAME="ref586"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toMapImport</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix,
+		 std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &dst)
+<br></td><td align="right"><h3><strong>toMapImport</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Import the contents of a map from another map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">The source map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to use for restoring from map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>dst</i></TD><TD align="left" valign="top">The map to save into.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toFindItem"></A><A NAME="ref587"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *&nbsp;<strong>toFindItem</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *list,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>toFindItem</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p> Find an item in a listview.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>list</i></TD><TD align="left" valign="top">The list to search for the item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">The string to search for. You can specify parent/child with : in the string.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toToolCaption"></A><A NAME="ref589"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toToolCaption</strong> (<A HREF="toToolWidget.html">toToolWidget</A> *tool,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &caption)
+<br></td><td align="right"><h3><strong>toToolCaption</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p>
+ Set or change title of a tool window.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tool</i></TD><TD align="left" valign="top">Widget of tool.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>caption</i></TD><TD align="left" valign="top">Caption to set to the tool.
+ </TD></TR>
+</TABLE></P>
+<A NAME="toTranslateMayby"></A><A NAME="ref590"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toTranslateMayby</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &context,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text)
+<br></td><td align="right"><h3><strong>toTranslateMayby</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p>
+ Translate string if the context and text is strictly ASCII7 and the context doesn't
+ contain any spaces. Otherwise just return the text.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>context</i></TD><TD align="left" valign="top">The context of the text.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>text</i></TD><TD align="left" valign="top">The text to translate.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Translated text if appropriate, or original text otherwise.
+ </p>
+<A NAME="max"></A><A NAME="ref591"></A><table width="100%"><tr bgcolor="#eeeeee"><td>template <class T>
+T &nbsp;<strong>max</strong> (T a, T b)
+<br></td><td align="right"><h3><strong>max</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p>
+ Get maximum number of a and b.
+ </p>
+<A NAME="min"></A><A NAME="ref592"></A><table width="100%"><tr bgcolor="#eeeeee"><td>template <class T>
+T &nbsp;<strong>min</strong> (T a, T b)
+<br></td><td align="right"><h3><strong>min</strong></h3></td></tr></table><p></p><p><small><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></small></p><p>
+ Get minimum number of a and b.
+ </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TODock.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TODock.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TODock.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,181 @@
+<HTML>
+<HEAD>
+<TITLE>class TODock: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class TODock: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>acceptDrops - isFocusEnabled</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#acceptDrops">QWidget::acceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#autoMask">QWidget::autoMask</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundBrush">QWidget::backgroundBrush</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundOrigin">QWidget::backgroundOrigin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#baseSize">QWidget::baseSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childAt">QWidget::childAt</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRect">QWidget::childrenRect</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRegion">QWidget::childrenRegion</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearFocus">QWidget::clearFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearMask">QWidget::clearMask</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearWFlags">QWidget::clearWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#closeEvent">QWidget::closeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#colorGroup">QWidget::colorGroup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#constPolish">QWidget::constPolish</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#contextMenuEvent">QWidget::contextMenuEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#cursor">QWidget::cursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#customWhatsThis">QWidget::customWhatsThis</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#destroy">QWidget::destroy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragEnterEvent">QWidget::dragEnterEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragLeaveEvent">QWidget::dragLeaveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragMoveEvent">QWidget::dragMoveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dropEvent">QWidget::dropEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enabledChange">QWidget::enabledChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enterEvent">QWidget::enterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#eraseColor">QWidget::eraseColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#erasePixmap">QWidget::erasePixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusData">QWidget::focusData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusInEvent">QWidget::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusOutEvent">QWidget::focusOutEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusPolicy">QWidget::focusPolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusProxy">QWidget::focusProxy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#fontChange">QWidget::fontChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#foregroundColor">QWidget::foregroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameGeometry">QWidget::frameGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameSize">QWidget::frameSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#getWFlags">QWidget::getWFlags</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabKeyboard">QWidget::grabKeyboard</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabMouse">QWidget::grabMouse</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasFocus">QWidget::hasFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouse">QWidget::hasMouse</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouseTracking">QWidget::hasMouseTracking</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#iconText">QWidget::iconText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imComposeEvent">QWidget::imComposeEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imEndEvent">QWidget::imEndEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imStartEvent">QWidget::imStartEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isActiveWindow">QWidget::isActiveWindow</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDesktop">QWidget::isDesktop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDialog">QWidget::isDialog</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isEnabledTo">QWidget::isEnabledTo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFocusEnabled">QWidget::isFocusEnabled</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isFullScreen - setFixedSize</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFullScreen">QWidget::isFullScreen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isInputMethodEnabled">QWidget::isInputMethodEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMaximized">QWidget::isMaximized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMinimized">QWidget::isMinimized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isPopup">QWidget::isPopup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isShown">QWidget::isShown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isUpdatesEnabled">QWidget::isUpdatesEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isVisibleTo">QWidget::isVisibleTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyReleaseEvent">QWidget::keyReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyboardGrabber">QWidget::keyboardGrabber</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#leaveEvent">QWidget::leaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#macEvent">QWidget::macEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFrom">QWidget::mapFrom</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromGlobal">QWidget::mapFromGlobal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromParent">QWidget::mapFromParent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapTo">QWidget::mapTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToGlobal">QWidget::mapToGlobal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToParent">QWidget::mapToParent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumHeight">QWidget::maximumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumWidth">QWidget::maximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#microFocusHint">QWidget::microFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumHeight">QWidget::minimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumWidth">QWidget::minimumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseDoubleClickEvent">QWidget::mouseDoubleClickEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseGrabber">QWidget::mouseGrabber</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseReleaseEvent">QWidget::mouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#moveEvent">QWidget::moveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownCursor">QWidget::ownCursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownFont">QWidget::ownFont</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownPalette">QWidget::ownPalette</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundColor">QWidget::paletteBackgroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundPixmap">QWidget::paletteBackgroundPixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteChange">QWidget::paletteChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteForegroundColor">QWidget::paletteForegroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#qwsEvent">QWidget::qwsEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseKeyboard">QWidget::releaseKeyboard</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseMouse">QWidget::releaseMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#reparent">QWidget::reparent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#resetInputContext">QWidget::resetInputContext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#scroll">QWidget::scroll</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAcceptDrops">QWidget::setAcceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAutoMask">QWidget::setAutoMask</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBackgroundOrigin">QWidget::setBackgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBaseSize">QWidget::setBaseSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCaption">QWidget::setCaption</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCursor">QWidget::setCursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setEraseColor">QWidget::setEraseColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setErasePixmap">QWidget::setErasePixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedHeight">QWidget::setFixedHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedSize">QWidget::setFixedSize</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setFixedWidth - windowState</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedWidth">QWidget::setFixedWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusPolicy">QWidget::setFocusPolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusProxy">QWidget::setFocusProxy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setHidden">QWidget::setHidden</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setIconText">QWidget::setIconText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setInputMethodEnabled">QWidget::setInputMethodEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setKeyCompression">QWidget::setKeyCompression</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumHeight">QWidget::setMaximumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumSize">QWidget::setMaximumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumWidth">QWidget::setMaximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMicroFocusHint">QWidget::setMicroFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumHeight">QWidget::setMinimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumSize">QWidget::setMinimumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumWidth">QWidget::setMinimumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMouseTracking">QWidget::setMouseTracking</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundColor">QWidget::setPaletteBackgroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundPixmap">QWidget::setPaletteBackgroundPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteForegroundColor">QWidget::setPaletteForegroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setShown">QWidget::setShown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizeIncrement">QWidget::setSizeIncrement</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizePolicy">QWidget::setSizePolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setTabOrder">QWidget::setTabOrder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setUpdatesEnabled">QWidget::setUpdatesEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWFlags">QWidget::setWFlags</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowOpacity">QWidget::setWindowOpacity</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowState">QWidget::setWindowState</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showEvent">QWidget::showEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showFullScreen">QWidget::showFullScreen</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMaximized">QWidget::showMaximized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMinimized">QWidget::showMinimized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showNormal">QWidget::showNormal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizeIncrement">QWidget::sizeIncrement</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizePolicy">QWidget::sizePolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#stackUnder">QWidget::stackUnder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#styleChange">QWidget::styleChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#tabletEvent">QWidget::tabletEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#testWFlags">QWidget::testWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#topLevelWidget">QWidget::topLevelWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetCursor">QWidget::unsetCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetFont">QWidget::unsetFont</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetPalette">QWidget::unsetPalette</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateGeometry">QWidget::updateGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateMask">QWidget::updateMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#wheelEvent">QWidget::wheelEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#winEvent">QWidget::winEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowActivationChange">QWidget::windowActivationChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowOpacity">QWidget::windowOpacity</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowState">QWidget::windowState</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOFileDialog.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOFileDialog.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOFileDialog.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,77 @@
+<HTML>
+<HEAD>
+<TITLE>class TOFileDialog: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class TOFileDialog: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addFilter - getOpenFileNames</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#addFilter">QFileDialog::addFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#addLeftWidget">QFileDialog::addLeftWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#addRightWidget">QFileDialog::addRightWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#addToolButton">QFileDialog::addToolButton</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#addWidgets">QFileDialog::addWidgets</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#dir">QFileDialog::dir</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#dirEntered">QFileDialog::dirEntered</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#dirPath">QFileDialog::dirPath</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#fileHighlighted">QFileDialog::fileHighlighted</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#fileSelected">QFileDialog::fileSelected</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#filesSelected">QFileDialog::filesSelected</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#filterSelected">QFileDialog::filterSelected</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#getExistingDirectory">QFileDialog::getExistingDirectory</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#getOpenFileName">QFileDialog::getOpenFileName</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#getOpenFileNames">QFileDialog::getOpenFileNames</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>getSaveFileName - setDir</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#getSaveFileName">QFileDialog::getSaveFileName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#iconProvider">QFileDialog::iconProvider</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#isContentsPreviewEnabled">QFileDialog::isContentsPreviewEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#isInfoPreviewEnabled">QFileDialog::isInfoPreviewEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#mode">QFileDialog::mode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#previewMode">QFileDialog::previewMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#rereadDir">QFileDialog::rereadDir</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#resortDir">QFileDialog::resortDir</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#selectAll">QFileDialog::selectAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#selectedFile">QFileDialog::selectedFile</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#selectedFiles">QFileDialog::selectedFiles</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#selectedFilter">QFileDialog::selectedFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setContentsPreview">QFileDialog::setContentsPreview</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setContentsPreviewEnabled">QFileDialog::setContentsPreviewEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setDir">QFileDialog::setDir</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setFilters - viewMode</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setFilters">QFileDialog::setFilters</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setIconProvider">QFileDialog::setIconProvider</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setInfoPreview">QFileDialog::setInfoPreview</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setInfoPreviewEnabled">QFileDialog::setInfoPreviewEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setMode">QFileDialog::setMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setPreviewMode">QFileDialog::setPreviewMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setSelectedFilter">QFileDialog::setSelectedFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setSelection">QFileDialog::setSelection</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setShowHiddenFiles">QFileDialog::setShowHiddenFiles</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setUrl">QFileDialog::setUrl</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#setViewMode">QFileDialog::setViewMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#showHiddenFiles">QFileDialog::showHiddenFiles</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#url">QFileDialog::url</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html#viewMode">QFileDialog::viewMode</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOMessageBox.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOMessageBox.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOMessageBox.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,45 @@
+<HTML>
+<HEAD>
+<TITLE>class TOMessageBox: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class TOMessageBox: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>about - icon</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#about">QMessageBox::about</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#adjustSize">QMessageBox::adjustSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#critical">QMessageBox::critical</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#icon">QMessageBox::icon</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>iconPixmap - setButtonText</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#iconPixmap">QMessageBox::iconPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#information">QMessageBox::information</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#question">QMessageBox::question</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#setButtonText">QMessageBox::setButtonText</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setIcon - warning</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#setIcon">QMessageBox::setIcon</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#setIconPixmap">QMessageBox::setIconPixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#standardIcon">QMessageBox::standardIcon</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html#warning">QMessageBox::warning</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOPrinter.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOPrinter.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-TOPrinter.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,77 @@
+<HTML>
+<HEAD>
+<TITLE>class TOPrinter: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class TOPrinter: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>aborted - pageOrder</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#aborted">QPrinter::aborted</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#colorMode">QPrinter::colorMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#creator">QPrinter::creator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#docName">QPrinter::docName</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#fromPage">QPrinter::fromPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#fullPage">QPrinter::fullPage</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#isOptionEnabled">QPrinter::isOptionEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#margins">QPrinter::margins</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#maxPage">QPrinter::maxPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#minPage">QPrinter::minPage</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#newPage">QPrinter::newPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#numCopies">QPrinter::numCopies</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#outputFileName">QPrinter::outputFileName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#outputToFile">QPrinter::outputToFile</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#pageOrder">QPrinter::pageOrder</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>pageSize - setNumCopies</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#pageSize">QPrinter::pageSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#paperSource">QPrinter::paperSource</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#printProgram">QPrinter::printProgram</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#printRange">QPrinter::printRange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#printerName">QPrinter::printerName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#printerSelectionOption">QPrinter::printerSelectionOption</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#resolution">QPrinter::resolution</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setColorMode">QPrinter::setColorMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setCreator">QPrinter::setCreator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setDocName">QPrinter::setDocName</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setFromTo">QPrinter::setFromTo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setFullPage">QPrinter::setFullPage</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setMargins">QPrinter::setMargins</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setMinMax">QPrinter::setMinMax</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setNumCopies">QPrinter::setNumCopies</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setOptionEnabled - winPageSize</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setOptionEnabled">QPrinter::setOptionEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setOutputFileName">QPrinter::setOutputFileName</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setOutputToFile">QPrinter::setOutputToFile</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setPageOrder">QPrinter::setPageOrder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setPageSize">QPrinter::setPageSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setPaperSource">QPrinter::setPaperSource</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setPrintProgram">QPrinter::setPrintProgram</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setPrintRange">QPrinter::setPrintRange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setPrinterName">QPrinter::setPrinterName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setPrinterSelectionOption">QPrinter::setPrinterSelectionOption</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setResolution">QPrinter::setResolution</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#setWinPageSize">QPrinter::setWinPageSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#toPage">QPrinter::toPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qprinter.html#winPageSize">QPrinter::winPageSize</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBackground.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBackground.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBackground.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+<HTML>
+<HEAD>
+<TITLE>class toBackground: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toBackground: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>changeInterval - singleShot</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtimer.html#changeInterval">QTimer::changeInterval</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toBackground.html#init">toBackground::init</A></TD></TR>
+<TR ><TD><A HREF="toTimer.html#lastTimer">toTimer::lastTimer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtimer.html#singleShot">QTimer::singleShot</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>start - timerId</TH></TR><TR ><TD><A HREF="toBackground.html#start">toBackground::start</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toBackground.html#stop">toBackground::stop</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtimer.html#timeout">QTimer::timeout</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtimer.html#timerId">QTimer::timerId</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>toBackground - ~toBackground</TH></TR><TR ><TD><A HREF="toBackground.html#toBackground">toBackground::toBackground</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTimer.html#toTimer">toTimer::toTimer</A></TD></TR>
+<TR ><TD><A HREF="toBackground.html#~toBackground">toBackground::~toBackground</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBarChart.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBarChart.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBarChart.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,232 @@
+<HTML>
+<HEAD>
+<TITLE>class toBarChart: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toBarChart: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>acceptDrops - isMaximized</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#acceptDrops">QWidget::acceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#addMenues">toLineChart::addMenues</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#addValues">toLineChart::addValues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#autoMask">QWidget::autoMask</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#axisLegend">toLineChart::axisLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundBrush">QWidget::backgroundBrush</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundOrigin">QWidget::backgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#baseSize">QWidget::baseSize</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#chartSetup">toLineChart::chartSetup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childAt">QWidget::childAt</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRect">QWidget::childrenRect</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRegion">QWidget::childrenRegion</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#clear">toLineChart::clear</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearFocus">QWidget::clearFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearMask">QWidget::clearMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearWFlags">QWidget::clearWFlags</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#clearZoom">toLineChart::clearZoom</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#closeEvent">QWidget::closeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#colorGroup">QWidget::colorGroup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#constPolish">QWidget::constPolish</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#contextMenuEvent">QWidget::contextMenuEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#countSamples">toLineChart::countSamples</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#cursor">QWidget::cursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#customWhatsThis">QWidget::customWhatsThis</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#destroy">QWidget::destroy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragEnterEvent">QWidget::dragEnterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragLeaveEvent">QWidget::dragLeaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragMoveEvent">QWidget::dragMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dropEvent">QWidget::dropEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#editPrint">toLineChart::editPrint</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enabledChange">QWidget::enabledChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#enabledCharts">toLineChart::enabledCharts</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enterEvent">QWidget::enterEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#eraseColor">QWidget::eraseColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#erasePixmap">QWidget::erasePixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#exportData">toLineChart::exportData</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#fixRect">toLineChart::fixRect</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusData">QWidget::focusData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusInEvent">QWidget::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusOutEvent">QWidget::focusOutEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusPolicy">QWidget::focusPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusProxy">QWidget::focusProxy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#fontChange">QWidget::fontChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#foregroundColor">QWidget::foregroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameGeometry">QWidget::frameGeometry</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameSize">QWidget::frameSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#getWFlags">QWidget::getWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabKeyboard">QWidget::grabKeyboard</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabMouse">QWidget::grabMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#grid">toLineChart::grid</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasFocus">QWidget::hasFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouse">QWidget::hasMouse</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouseTracking">QWidget::hasMouseTracking</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#horizontalChange">toLineChart::horizontalChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#iconText">QWidget::iconText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imComposeEvent">QWidget::imComposeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imEndEvent">QWidget::imEndEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imStartEvent">QWidget::imStartEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#importData">toLineChart::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isActiveWindow">QWidget::isActiveWindow</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDesktop">QWidget::isDesktop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDialog">QWidget::isDialog</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isEnabledTo">QWidget::isEnabledTo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFocusEnabled">QWidget::isFocusEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFullScreen">QWidget::isFullScreen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isInputMethodEnabled">QWidget::isInputMethodEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMaximized">QWidget::isMaximized</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isMinimized - setHidden</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMinimized">QWidget::isMinimized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isPopup">QWidget::isPopup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isShown">QWidget::isShown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isUpdatesEnabled">QWidget::isUpdatesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isVisibleTo">QWidget::isVisibleTo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyReleaseEvent">QWidget::keyReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyboardGrabber">QWidget::keyboardGrabber</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#labels">toLineChart::labels</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#last">toLineChart::last</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#leaveEvent">QWidget::leaveEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#legend">toLineChart::legend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#macEvent">QWidget::macEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFrom">QWidget::mapFrom</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromGlobal">QWidget::mapFromGlobal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromParent">QWidget::mapFromParent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapTo">QWidget::mapTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToGlobal">QWidget::mapToGlobal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToParent">QWidget::mapToParent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#maxValue">toLineChart::maxValue</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumHeight">QWidget::maximumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumWidth">QWidget::maximumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#microFocusHint">QWidget::microFocusHint</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#minValue">toLineChart::minValue</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumHeight">QWidget::minimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumWidth">QWidget::minimumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#mouseDoubleClickEvent">toLineChart::mouseDoubleClickEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseGrabber">QWidget::mouseGrabber</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#mouseMoveEvent">toLineChart::mouseMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#mousePressEvent">toLineChart::mousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#mouseReleaseEvent">toLineChart::mouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#moveEvent">QWidget::moveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toBarChart.html#openCopy">toBarChart::openCopy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownCursor">QWidget::ownCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownFont">QWidget::ownFont</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownPalette">QWidget::ownPalette</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#paintAxis">toLineChart::paintAxis</A></TD></TR>
+<TR ><TD><A HREF="toBarChart.html#paintChart">toBarChart::paintChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#paintEvent">toLineChart::paintEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#paintLegend">toLineChart::paintLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#paintTitle">toLineChart::paintTitle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundColor">QWidget::paletteBackgroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundPixmap">QWidget::paletteBackgroundPixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteChange">QWidget::paletteChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteForegroundColor">QWidget::paletteForegroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#qwsEvent">QWidget::qwsEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseKeyboard">QWidget::releaseKeyboard</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseMouse">QWidget::releaseMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#reparent">QWidget::reparent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#resetInputContext">QWidget::resetInputContext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#round">toLineChart::round</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#samples">toLineChart::samples</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#scroll">QWidget::scroll</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAcceptDrops">QWidget::setAcceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAutoMask">QWidget::setAutoMask</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBackgroundOrigin">QWidget::setBackgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBaseSize">QWidget::setBaseSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCaption">QWidget::setCaption</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCursor">QWidget::setCursor</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setEnabledCharts">toLineChart::setEnabledCharts</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setEraseColor">QWidget::setEraseColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setErasePixmap">QWidget::setErasePixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedHeight">QWidget::setFixedHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedSize">QWidget::setFixedSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedWidth">QWidget::setFixedWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusPolicy">QWidget::setFocusPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusProxy">QWidget::setFocusProxy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setHidden">QWidget::setHidden</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setIconText - ~toLineChart</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setIconText">QWidget::setIconText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setInputMethodEnabled">QWidget::setInputMethodEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setKeyCompression">QWidget::setKeyCompression</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setLabels">toLineChart::setLabels</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setMaxValue">toLineChart::setMaxValue</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setMaxValueAuto">toLineChart::setMaxValueAuto</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumHeight">QWidget::setMaximumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumSize">QWidget::setMaximumSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumWidth">QWidget::setMaximumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMicroFocusHint">QWidget::setMicroFocusHint</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setMinValue">toLineChart::setMinValue</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setMinValueAuto">toLineChart::setMinValueAuto</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumHeight">QWidget::setMinimumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumSize">QWidget::setMinimumSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumWidth">QWidget::setMinimumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMouseTracking">QWidget::setMouseTracking</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundColor">QWidget::setPaletteBackgroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundPixmap">QWidget::setPaletteBackgroundPixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteForegroundColor">QWidget::setPaletteForegroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setSamples">toLineChart::setSamples</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setShown">QWidget::setShown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizeIncrement">QWidget::setSizeIncrement</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizePolicy">QWidget::setSizePolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setTabOrder">QWidget::setTabOrder</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setTitle">toLineChart::setTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setUpdatesEnabled">QWidget::setUpdatesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWFlags">QWidget::setWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowOpacity">QWidget::setWindowOpacity</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowState">QWidget::setWindowState</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setYPostfix">toLineChart::setYPostfix</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setup">toLineChart::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#showAxisLegend">toLineChart::showAxisLegend</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showEvent">QWidget::showEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showFullScreen">QWidget::showFullScreen</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#showGrid">toLineChart::showGrid</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#showLast">toLineChart::showLast</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#showLegend">toLineChart::showLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMaximized">QWidget::showMaximized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMinimized">QWidget::showMinimized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showNormal">QWidget::showNormal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizeIncrement">QWidget::sizeIncrement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizePolicy">QWidget::sizePolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#stackUnder">QWidget::stackUnder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#styleChange">QWidget::styleChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#tabletEvent">QWidget::tabletEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#testWFlags">QWidget::testWFlags</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#title">toLineChart::title</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toBarChart.html#toBarChart">toBarChart::toBarChart</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#toLineChart">toLineChart::toLineChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#topLevelWidget">QWidget::topLevelWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetCursor">QWidget::unsetCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetFont">QWidget::unsetFont</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetPalette">QWidget::unsetPalette</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateGeometry">QWidget::updateGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateMask">QWidget::updateMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#valueAdded">toLineChart::valueAdded</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#values">toLineChart::values</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#verticalChange">toLineChart::verticalChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#wheelEvent">QWidget::wheelEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#winEvent">QWidget::winEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowActivationChange">QWidget::windowActivationChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowOpacity">QWidget::windowOpacity</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowState">QWidget::windowState</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#xValues">toLineChart::xValues</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#~toLineChart">toLineChart::~toLineChart</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBusy.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBusy.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toBusy.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,36 @@
+<HTML>
+<HEAD>
+<TITLE>class toBusy: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toBusy: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>clear - ~toBusy</TH></TR><TR ><TD><A HREF="toBusy.html#clear">toBusy::clear</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toBusy.html#toBusy">toBusy::toBusy</A></TD></TR>
+<TR ><TD><A HREF="toBusy.html#~toBusy">toBusy::~toBusy</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toChangeConnection.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toChangeConnection.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toChangeConnection.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,50 @@
+<HTML>
+<HEAD>
+<TITLE>class toChangeConnection: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toChangeConnection: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>autoRaise - popupMenu</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#autoRaise">QToolButton::autoRaise</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toChangeConnection.html#changeConnection">toChangeConnection::changeConnection</A></TD></TR>
+<TR ><TD><A HREF="toPopupButton.html#click">toPopupButton::click</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#openPopup">QToolButton::openPopup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#popupDelay">QToolButton::popupDelay</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toChangeConnection.html#popupMenu">toChangeConnection::popupMenu</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setAutoRaise - textLabel</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#setAutoRaise">QToolButton::setAutoRaise</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#setPopupDelay">QToolButton::setPopupDelay</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#setTextLabel">QToolButton::setTextLabel</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#setTextPosition">QToolButton::setTextPosition</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#setUsesBigPixmap">QToolButton::setUsesBigPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#textLabel">QToolButton::textLabel</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>textPosition - usesBigPixmap</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#textPosition">QToolButton::textPosition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toChangeConnection.html#toChangeConnection">toChangeConnection::toChangeConnection</A></TD></TR>
+<TR ><TD><A HREF="toPopupButton.html#toPopupButton">toPopupButton::toPopupButton</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#uses3D">QToolButton::uses3D</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#usesBigPixmap">QToolButton::usesBigPixmap</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,81 @@
+<HTML>
+<HEAD>
+<TITLE>class toConnection: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toConnection: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addConnection - database</TH></TR><TR ><TD><A HREF="toConnection.html#addConnection">toConnection::addConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#addIfNotExists">toConnection::addIfNotExists</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#addInit">toConnection::addInit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#addWidget">toConnection::addWidget</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#allExecute">toConnection::allExecute</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#analyzer">toConnection::analyzer</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#backgroundConnection">toConnection::backgroundConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#cacheAvailable">toConnection::cacheAvailable</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#cacheDir">toConnection::cacheDir</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#cacheFile">toConnection::cacheFile</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#cancelAll">toConnection::cancelAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#closeWidgets">toConnection::closeWidgets</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#columns">toConnection::columns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#commit">toConnection::commit</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#connections">toConnection::connections</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#database">toConnection::database</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>delInit - provider</TH></TR><TR ><TD><A HREF="toConnection.html#delInit">toConnection::delInit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#delWidget">toConnection::delWidget</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#description">toConnection::description</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#execute">toConnection::execute</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#freeConnection">toConnection::freeConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#host">toConnection::host</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#initStrings">toConnection::initStrings</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#loadDiskCache">toConnection::loadDiskCache</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#longConnection">toConnection::longConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#mainConnection">toConnection::mainConnection</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#needCommit">toConnection::needCommit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#objects">toConnection::objects</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#options">toConnection::options</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#parse">toConnection::parse</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#password">toConnection::password</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#provider">toConnection::provider</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>quote - ~toConnection</TH></TR><TR ><TD><A HREF="toConnection.html#quote">toConnection::quote</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#readObjects">toConnection::readObjects</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#realName">toConnection::realName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#rereadCache">toConnection::rereadCache</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#rollback">toConnection::rollback</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#running">toConnection::running</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#setDatabase">toConnection::setDatabase</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#setNeedCommit">toConnection::setNeedCommit</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#setPassword">toConnection::setPassword</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#synonyms">toConnection::synonyms</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#toConnection">toConnection::toConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#unQuote">toConnection::unQuote</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#user">toConnection::user</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#version">toConnection::version</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html#writeDiskCache">toConnection::writeDiskCache</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection.html#~toConnection">toConnection::~toConnection</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionProvider.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionProvider.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionProvider.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,54 @@
+<HTML>
+<HEAD>
+<TITLE>class toConnectionProvider: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toConnectionProvider: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addProvider - fetchProvider</TH></TR><TR ><TD><A HREF="toConnectionProvider.html#addProvider">toConnectionProvider::addProvider</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionProvider.html#checkAlloc">toConnectionProvider::checkAlloc</A></TD></TR>
+<TR ><TD><A HREF="toConnectionProvider.html#config">toConnectionProvider::config</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionProvider.html#configurationTab">toConnectionProvider::configurationTab</A></TD></TR>
+<TR ><TD><A HREF="toConnectionProvider.html#connection">toConnectionProvider::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionProvider.html#databases">toConnectionProvider::databases</A></TD></TR>
+<TR ><TD><A HREF="toConnectionProvider.html#fetchProvider">toConnectionProvider::fetchProvider</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>hosts - providedHosts</TH></TR><TR ><TD><A HREF="toConnectionProvider.html#hosts">toConnectionProvider::hosts</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionProvider.html#initialize">toConnectionProvider::initialize</A></TD></TR>
+<TR ><TD><A HREF="toConnectionProvider.html#initializeAll">toConnectionProvider::initializeAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionProvider.html#options">toConnectionProvider::options</A></TD></TR>
+<TR ><TD><A HREF="toConnectionProvider.html#provideConnection">toConnectionProvider::provideConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionProvider.html#providedDatabases">toConnectionProvider::providedDatabases</A></TD></TR>
+<TR ><TD><A HREF="toConnectionProvider.html#providedHosts">toConnectionProvider::providedHosts</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>providedOptions - ~toConnectionProvider</TH></TR><TR ><TD><A HREF="toConnectionProvider.html#providedOptions">toConnectionProvider::providedOptions</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionProvider.html#providerConfigurationTab">toConnectionProvider::providerConfigurationTab</A></TD></TR>
+<TR ><TD><A HREF="toConnectionProvider.html#providers">toConnectionProvider::providers</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionProvider.html#removeProvider">toConnectionProvider::removeProvider</A></TD></TR>
+<TR ><TD><A HREF="toConnectionProvider.html#setConfig">toConnectionProvider::setConfig</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionProvider.html#toConnectionProvider">toConnectionProvider::toConnectionProvider</A></TD></TR>
+<TR ><TD><A HREF="toConnectionProvider.html#~toConnectionProvider">toConnectionProvider::~toConnectionProvider</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionSub.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionSub.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionSub.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>class toConnectionSub: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toConnectionSub: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>cancel - query</TH></TR><TR ><TD><A HREF="toConnectionSub.html#cancel">toConnectionSub::cancel</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionSub.html#query">toConnectionSub::query</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setQuery - ~toConnectionSub</TH></TR><TR ><TD><A HREF="toConnectionSub.html#setQuery">toConnectionSub::setQuery</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionSub.html#toConnectionSub">toConnectionSub::toConnectionSub</A></TD></TR>
+<TR ><TD><A HREF="toConnectionSub.html#~toConnectionSub">toConnectionSub::~toConnectionSub</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionWidget.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionWidget.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnectionWidget.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,37 @@
+<HTML>
+<HEAD>
+<TITLE>class toConnectionWidget: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toConnectionWidget: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>connection - ~toConnectionWidget</TH></TR><TR ><TD><A HREF="toConnectionWidget.html#connection">toConnectionWidget::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionWidget.html#setConnection">toConnectionWidget::setConnection</A></TD></TR>
+<TR ><TD><A HREF="toConnectionWidget.html#toConnectionWidget">toConnectionWidget::toConnectionWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionWidget.html#~toConnectionWidget">toConnectionWidget::~toConnectionWidget</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__cacheObjects.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__cacheObjects.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__cacheObjects.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,36 @@
+<HTML>
+<HEAD>
+<TITLE>class cacheObjects: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class cacheObjects: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>cacheObjects - ~toTask</TH></TR><TR ><TD><A HREF="toConnection__cacheObjects.html#cacheObjects">toConnection::cacheObjects::cacheObjects</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__cacheObjects.html#run">toConnection::cacheObjects::run</A></TD></TR>
+<TR ><TD><A HREF="toTask.html#~toTask">toTask::~toTask</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__connectionImpl.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__connectionImpl.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__connectionImpl.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,51 @@
+<HTML>
+<HEAD>
+<TITLE>class connectionImpl: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class connectionImpl: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>analyzer - connectionImpl</TH></TR><TR ><TD><A HREF="toConnection__connectionImpl.html#analyzer">toConnection::connectionImpl::analyzer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__connectionImpl.html#closeConnection">toConnection::connectionImpl::closeConnection</A></TD></TR>
+<TR ><TD><A HREF="toConnection__connectionImpl.html#columnDesc">toConnection::connectionImpl::columnDesc</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__connectionImpl.html#commit">toConnection::connectionImpl::commit</A></TD></TR>
+<TR ><TD><A HREF="toConnection__connectionImpl.html#connection">toConnection::connectionImpl::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__connectionImpl.html#connectionImpl">toConnection::connectionImpl::connectionImpl</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>createConnection - parse</TH></TR><TR ><TD><A HREF="toConnection__connectionImpl.html#createConnection">toConnection::connectionImpl::createConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__connectionImpl.html#createQuery">toConnection::connectionImpl::createQuery</A></TD></TR>
+<TR ><TD><A HREF="toConnection__connectionImpl.html#execute">toConnection::connectionImpl::execute</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__connectionImpl.html#handleMultipleQueries">toConnection::connectionImpl::handleMultipleQueries</A></TD></TR>
+<TR ><TD><A HREF="toConnection__connectionImpl.html#objectNames">toConnection::connectionImpl::objectNames</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__connectionImpl.html#parse">toConnection::connectionImpl::parse</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>quote - ~connectionImpl</TH></TR><TR ><TD><A HREF="toConnection__connectionImpl.html#quote">toConnection::connectionImpl::quote</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__connectionImpl.html#rollback">toConnection::connectionImpl::rollback</A></TD></TR>
+<TR ><TD><A HREF="toConnection__connectionImpl.html#synonymMap">toConnection::connectionImpl::synonymMap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__connectionImpl.html#unQuote">toConnection::connectionImpl::unQuote</A></TD></TR>
+<TR ><TD><A HREF="toConnection__connectionImpl.html#version">toConnection::connectionImpl::version</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__connectionImpl.html#~connectionImpl">toConnection::connectionImpl::~connectionImpl</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__exception.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__exception.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__exception.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,60 @@
+<HTML>
+<HEAD>
+<TITLE>class exception: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class exception: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>capacity - fromUcs2</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#capacity">QString::capacity</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#compose">QString::compose</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#constref">QString::constref</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#endsWith">QString::endsWith</A></TD></TR>
+<TR ><TD><A HREF="toConnection__exception.html#exception">toConnection::exception::exception</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#fromAscii">QString::fromAscii</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#fromLatin1">QString::fromLatin1</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#fromLocal8Bit">QString::fromLocal8Bit</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#fromUcs2">QString::fromUcs2</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>fromUtf8 - setAscii</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#fromUtf8">QString::fromUtf8</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#local8Bit">QString::local8Bit</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#localeAwareCompare">QString::localeAwareCompare</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__exception.html#offset">toConnection::exception::offset</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#operator!">QString::operationRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#ref">QString::ref</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#reserve">QString::reserve</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#section">QString::section</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#setAscii">QString::setAscii</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setLatin1 - utf8</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#setLatin1">QString::setLatin1</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#setLength">QString::setLength</A></TD></TR>
+<TR ><TD><A HREF="toConnection__exception.html#setOffset">toConnection::exception::setOffset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#setUnicode">QString::setUnicode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#setUnicodeCodes">QString::setUnicodeCodes</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#squeeze">QString::squeeze</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#startsWith">QString::startsWith</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#ucs2">QString::ucs2</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html#utf8">QString::utf8</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__objectName.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__objectName.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toConnection__objectName.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,36 @@
+<HTML>
+<HEAD>
+<TITLE>struct objectName: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct objectName: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>objectName - operator == </TH></TR><TR ><TD><A HREF="toConnection__objectName.html#objectName">toConnection::objectName::objectName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__objectName.html#operator%20%3C%20">toConnection::objectName::operator < </A></TD></TR>
+<TR ><TD><A HREF="toConnection__objectName.html#operator%20==%20">toConnection::objectName::operator == </A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toDatatype.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toDatatype.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toDatatype.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,40 @@
+<HTML>
+<HEAD>
+<TITLE>class toDatatype: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toDatatype: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>changeType - setType</TH></TR><TR ><TD><A HREF="toDatatype.html#changeType">toDatatype::changeType</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toDatatype.html#setCustom">toDatatype::setCustom</A></TD></TR>
+<TR ><TD><A HREF="toDatatype.html#setType">toDatatype::setType</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setup - type</TH></TR><TR ><TD><A HREF="toDatatype.html#setup">toDatatype::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toDatatype.html#setupLabels">toDatatype::setupLabels</A></TD></TR>
+<TR ><TD><A HREF="toDatatype.html#toDatatype">toDatatype::toDatatype</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toDatatype.html#type">toDatatype::type</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toEditWidget.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toEditWidget.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toEditWidget.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,66 @@
+<HTML>
+<HEAD>
+<TITLE>class toEditWidget: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toEditWidget: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - editRedo</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editPrint">toEditWidget::editPrint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editReadAll">toEditWidget::editReadAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>editSave - saveEnabled</TH></TR><TR ><TD><A HREF="toEditWidget.html#editSave">toEditWidget::editSave</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editSelectAll">toEditWidget::editSelectAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>searchCanReplace - ~toEditWidget</TH></TR><TR ><TD><A HREF="toEditWidget.html#searchCanReplace">toEditWidget::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#searchNext">toEditWidget::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#searchTop">toEditWidget::searchTop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toEditWidget__editHandler.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toEditWidget__editHandler.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toEditWidget__editHandler.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,37 @@
+<HTML>
+<HEAD>
+<TITLE>class editHandler: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class editHandler: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>editHandler - ~editHandler</TH></TR><TR ><TD><A HREF="toEditWidget__editHandler.html#editHandler">toEditWidget::editHandler::editHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget__editHandler.html#lostFocus">toEditWidget::editHandler::lostFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget__editHandler.html#receivedFocus">toEditWidget::editHandler::receivedFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget__editHandler.html#~editHandler">toEditWidget::editHandler::~editHandler</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,90 @@
+<HTML>
+<HEAD>
+<TITLE>class toExtract: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toExtract: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addDescription - getContents</TH></TR><TR ><TD><A HREF="toExtract.html#addDescription">toExtract::addDescription</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#allocExtract">toExtract::allocExtract</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#canHandle">toExtract::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#connection">toExtract::connection</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#contextDescribe">toExtract::contextDescribe</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#create">toExtract::create</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#createFromParse">toExtract::createFromParse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#datatypes">toExtract::datatypes</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#describe">toExtract::describe</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#drop">toExtract::drop</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#extractorName">toExtract::extractorName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#findExtractor">toExtract::findExtractor</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#generateHeading">toExtract::generateHeading</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#getBlockSize">toExtract::getBlockSize</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#getCode">toExtract::getCode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#getComments">toExtract::getComments</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#getCommitDistance">toExtract::getCommitDistance</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#getConstraints">toExtract::getConstraints</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#getContents">toExtract::getContents</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>getGrants - setBlockSize</TH></TR><TR ><TD><A HREF="toExtract.html#getGrants">toExtract::getGrants</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#getHeading">toExtract::getHeading</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#getIndexes">toExtract::getIndexes</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#getParallel">toExtract::getParallel</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#getPartition">toExtract::getPartition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#getPrompt">toExtract::getPrompt</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#getResize">toExtract::getResize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#getSchema">toExtract::getSchema</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#getStorage">toExtract::getStorage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#initialNext">toExtract::initialNext</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#initialize">toExtract::initialize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#intSchema">toExtract::intSchema</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#migrate">toExtract::migrate</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#migrateGroup">toExtract::migrateGroup</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#parseColumnDescription">toExtract::parseColumnDescription</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#parseObject">toExtract::parseObject</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#partDescribe">toExtract::partDescribe</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#rethrow">toExtract::rethrow</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#setBlockSize">toExtract::setBlockSize</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setCode - toExtract</TH></TR><TR ><TD><A HREF="toExtract.html#setCode">toExtract::setCode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#setComments">toExtract::setComments</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#setConstraints">toExtract::setConstraints</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#setContents">toExtract::setContents</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#setGrants">toExtract::setGrants</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#setHeading">toExtract::setHeading</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#setIndexes">toExtract::setIndexes</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#setParallel">toExtract::setParallel</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#setPartition">toExtract::setPartition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#setPrompt">toExtract::setPrompt</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#setResize">toExtract::setResize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#setSchema">toExtract::setSchema</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#setSizes">toExtract::setSizes</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#setState">toExtract::setState</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#setStorage">toExtract::setStorage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#splitDescribe">toExtract::splitDescribe</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#srcDst2DropCreate">toExtract::srcDst2DropCreate</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html#state">toExtract::state</A></TD></TR>
+<TR ><TD><A HREF="toExtract.html#toExtract">toExtract::toExtract</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__columnInfo.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__columnInfo.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__columnInfo.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,36 @@
+<HTML>
+<HEAD>
+<TITLE>struct columnInfo: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct columnInfo: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>columnInfo - operator ==</TH></TR><TR ><TD><A HREF="toExtract__columnInfo.html#columnInfo">toExtract::columnInfo::columnInfo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract__columnInfo.html#operator%20%3C">toExtract::columnInfo::operator <</A></TD></TR>
+<TR ><TD><A HREF="toExtract__columnInfo.html#operator%20==">toExtract::columnInfo::operator ==</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__datatype.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__datatype.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__datatype.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,41 @@
+<HTML>
+<HEAD>
+<TITLE>class datatype: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class datatype: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>datatype - hasPrecision</TH></TR><TR ><TD><A HREF="toExtract__datatype.html#datatype">toExtract::datatype::datatype</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract__datatype.html#hasLength">toExtract::datatype::hasLength</A></TD></TR>
+<TR ><TD><A HREF="toExtract__datatype.html#hasPrecision">toExtract::datatype::hasPrecision</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>maxLength - operator == </TH></TR><TR ><TD><A HREF="toExtract__datatype.html#maxLength">toExtract::datatype::maxLength</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract__datatype.html#maxPrecision">toExtract::datatype::maxPrecision</A></TD></TR>
+<TR ><TD><A HREF="toExtract__datatype.html#name">toExtract::datatype::name</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract__datatype.html#operator%20%3C%20">toExtract::datatype::operator < </A></TD></TR>
+<TR ><TD><A HREF="toExtract__datatype.html#operator%20==%20">toExtract::datatype::operator == </A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__extractor.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__extractor.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toExtract__extractor.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+<TITLE>class extractor: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class extractor: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>create - drop</TH></TR><TR ><TD><A HREF="toExtract__extractor.html#create">toExtract::extractor::create</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract__extractor.html#datatypes">toExtract::extractor::datatypes</A></TD></TR>
+<TR ><TD><A HREF="toExtract__extractor.html#describe">toExtract::extractor::describe</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract__extractor.html#drop">toExtract::extractor::drop</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>extractor - ~extractor</TH></TR><TR ><TD><A HREF="toExtract__extractor.html#extractor">toExtract::extractor::extractor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract__extractor.html#initialize">toExtract::extractor::initialize</A></TD></TR>
+<TR ><TD><A HREF="toExtract__extractor.html#migrate">toExtract::extractor::migrate</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract__extractor.html#registerExtract">toExtract::extractor::registerExtract</A></TD></TR>
+<TR ><TD><A HREF="toExtract__extractor.html#unregisterExtract">toExtract::extractor::unregisterExtract</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract__extractor.html#~extractor">toExtract::extractor::~extractor</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toFilesize.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toFilesize.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toFilesize.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,47 @@
+<HTML>
+<HEAD>
+<TITLE>class toFilesize: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toFilesize: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>changeType - moveFocus</TH></TR><TR ><TD><A HREF="toFilesize.html#changeType">toFilesize::changeType</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toFilesize.html#changedSize">toFilesize::changedSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qbuttongroup.html#id">QButtonGroup::id</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qbuttongroup.html#isRadioButtonExclusive">QButtonGroup::isRadioButtonExclusive</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qbuttongroup.html#moveFocus">QButtonGroup::moveFocus</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>selectedId - setup</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qbuttongroup.html#selectedId">QButtonGroup::selectedId</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qbuttongroup.html#setButton">QButtonGroup::setButton</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qbuttongroup.html#setRadioButtonExclusive">QButtonGroup::setRadioButtonExclusive</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toFilesize.html#setValue">toFilesize::setValue</A></TD></TR>
+<TR ><TD><A HREF="toFilesize.html#setup">toFilesize::setup</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>sizeString - valueChanged</TH></TR><TR ><TD><A HREF="toFilesize.html#sizeString">toFilesize::sizeString</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toFilesize.html#toFilesize">toFilesize::toFilesize</A></TD></TR>
+<TR ><TD><A HREF="toFilesize.html#value">toFilesize::value</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toFilesize.html#valueChanged">toFilesize::valueChanged</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelp.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelp.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelp.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,56 @@
+<HTML>
+<HEAD>
+<TITLE>class toHelp: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHelp: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>changeContent - isSizeGripEnabled</TH></TR><TR ><TD><A HREF="toHelp.html#changeContent">toHelp::changeContent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelp.html#closeEvent">toHelp::closeEvent</A></TD></TR>
+<TR ><TD><A HREF="toHelp.html#connectDialog">toHelp::connectDialog</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelp.html#displayHelp">toHelp::displayHelp</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#done">QDialog::done</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#extension">QDialog::extension</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#isModal">QDialog::isModal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#isSizeGripEnabled">QDialog::isSizeGripEnabled</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>orientation - setModal</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#orientation">QDialog::orientation</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelp.html#path">toHelp::path</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#reject">QDialog::reject</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelp.html#removeSelection">toHelp::removeSelection</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#result">QDialog::result</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelp.html#search">toHelp::search</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setExtension">QDialog::setExtension</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setModal">QDialog::setModal</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setOrientation - ~toHelp</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setOrientation">QDialog::setOrientation</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setResult">QDialog::setResult</A></TD></TR>
+<TR ><TD><A HREF="toHelp.html#setSelection">toHelp::setSelection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setSizeGripEnabled">QDialog::setSizeGripEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#showExtension">QDialog::showExtension</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelp.html#toHelp">toHelp::toHelp</A></TD></TR>
+<TR ><TD><A HREF="toHelp.html#~toHelp">toHelp::~toHelp</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpBrowser.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpBrowser.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpBrowser.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,42 @@
+<HTML>
+<HEAD>
+<TITLE>class toHelpBrowser: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHelpBrowser: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>backward - forward</TH></TR><TR ><TD><A HREF="toHelpBrowser.html#backward">toHelpBrowser::backward</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpBrowser.html#backwardAvailable">toHelpBrowser::backwardAvailable</A></TD></TR>
+<TR ><TD><A HREF="toHelpBrowser.html#forward">toHelpBrowser::forward</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>forwardAvailable - openURLRequest</TH></TR><TR ><TD><A HREF="toHelpBrowser.html#forwardAvailable">toHelpBrowser::forwardAvailable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpBrowser.html#openURL">toHelpBrowser::openURL</A></TD></TR>
+<TR ><TD><A HREF="toHelpBrowser.html#openURLRequest">toHelpBrowser::openURLRequest</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>source - toHelpBrowser</TH></TR><TR ><TD><A HREF="toHelpBrowser.html#source">toHelpBrowser::source</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpBrowser.html#textChanged">toHelpBrowser::textChanged</A></TD></TR>
+<TR ><TD><A HREF="toHelpBrowser.html#toHelpBrowser">toHelpBrowser::toHelpBrowser</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpContext.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpContext.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpContext.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,36 @@
+<HTML>
+<HEAD>
+<TITLE>class toHelpContext: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHelpContext: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>context - ~toHelpContext</TH></TR><TR ><TD><A HREF="toHelpContext.html#context">toHelpContext::context</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpContext.html#toHelpContext">toHelpContext::toHelpContext</A></TD></TR>
+<TR ><TD><A HREF="toHelpContext.html#~toHelpContext">toHelpContext::~toHelpContext</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpTool.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpTool.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHelpTool.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,94 @@
+<HTML>
+<HEAD>
+<TITLE>class toHelpTool: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHelpTool: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>about - globalConfig</TH></TR><TR ><TD><A HREF="toTool.html#about">toTool::about</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#blockSignals">QObject::blockSignals</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#canHandle">toTool::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#checkConnectArgs">QObject::checkConnectArgs</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#children">QObject::children</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#config">toTool::config</A></TD></TR>
+<TR ><TD><A HREF="toHelpTool.html#configurationTab">toHelpTool::configurationTab</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#connectNotify">QObject::connectNotify</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#createWindow">toTool::createWindow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#customEvent">QObject::customEvent</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#customSetup">toTool::customSetup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#deleteLater">QObject::deleteLater</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#destroyed">QObject::destroyed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnect">QObject::disconnect</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnectNotify">QObject::disconnectNotify</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpTool.html#displayHelp">toHelpTool::displayHelp</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectInfo">QObject::dumpObjectInfo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectTree">QObject::dumpObjectTree</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#eraseConfig">toTool::eraseConfig</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#event">QObject::event</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#globalConfig">toTool::globalConfig</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>globalEraseConfig - queryList</TH></TR><TR ><TD><A HREF="toTool.html#globalEraseConfig">toTool::globalEraseConfig</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#globalSetConfig">toTool::globalSetConfig</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#hasAbout">toTool::hasAbout</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#highPriority">QObject::highPriority</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#insertChild">QObject::insertChild</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#installEventFilter">QObject::installEventFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isA">QObject::isA</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isWidgetType">QObject::isWidgetType</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#key">toTool::key</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimer">QObject::killTimer</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimers">QObject::killTimers</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#loadConfig">toTool::loadConfig</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#loadMap">toTool::loadMap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#menuItem">toTool::menuItem</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#name">toTool::name</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#normalizeSignalSlot">QObject::normalizeSignalSlot</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#objectTrees">QObject::objectTrees</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#pictureXPM">toTool::pictureXPM</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#priority">toTool::priority</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#qt_find_obj_child">QObject::qt_find_obj_child</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#queryList">QObject::queryList</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>removeEventFilter - ~toTool</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#removeEventFilter">QObject::removeEventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#saveConfig">toTool::saveConfig</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#saveMap">toTool::saveMap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#sender">QObject::sender</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#setConfig">toTool::setConfig</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#setProperty">QObject::setProperty</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#signalsBlocked">QObject::signalsBlocked</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#startTimer">QObject::startTimer</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#timerEvent">QObject::timerEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpTool.html#toHelpTool">toHelpTool::toHelpTool</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#toTool">toTool::toTool</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#tool">toTool::tool</A></TD></TR>
+<TR ><TD><A HREF="toHelpTool.html#toolWindow">toHelpTool::toolWindow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#toolbarImage">toTool::toolbarImage</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#toolbarTip">toTool::toolbarTip</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#tools">toTool::tools</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#tr">QObject::tr</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#trUtf8">QObject::trUtf8</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#~toTool">toTool::~toTool</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHighlightedText.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHighlightedText.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHighlightedText.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,136 @@
+<HTML>
+<HEAD>
+<TITLE>class toHighlightedText: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHighlightedText: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - hasMarkedText</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#analyzer">toHighlightedText::analyzer</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#atBeginning">QMultiLineEdit::atBeginning</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#checkComplete">toHighlightedText::checkComplete</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#clear">toHighlightedText::clear</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#convertLine">toHighlightedText::convertLine</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#current">toHighlightedText::current</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorDown">QMultiLineEdit::cursorDown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorLeft">QMultiLineEdit::cursorLeft</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorPoint">QMultiLineEdit::cursorPoint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorRight">QMultiLineEdit::cursorRight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorUp">QMultiLineEdit::cursorUp</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#dropEvent">toMarkedText::dropEvent</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editCopy">toMarkedText::editCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editCut">toMarkedText::editCut</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editOpen">toMarkedText::editOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editPaste">toMarkedText::editPaste</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editPrint">toMarkedText::editPrint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editReadAll">toEditWidget::editReadAll</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editRedo">toMarkedText::editRedo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editSave">toMarkedText::editSave</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editSelectAll">toMarkedText::editSelectAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editUndo">toMarkedText::editUndo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#edited">QMultiLineEdit::edited</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#exportData">toMarkedText::exportData</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#filename">toMarkedText::filename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#findPosition">toMarkedText::findPosition</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#focusInEvent">toMarkedText::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#focusOutEvent">toHighlightedText::focusOutEvent</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#getMarkedRegion">toMarkedText::getMarkedRegion</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#hasErrors">toHighlightedText::hasErrors</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#hasMarkedText">toMarkedText::hasMarkedText</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>importData - searchEnabled</TH></TR><TR ><TD><A HREF="toMarkedText.html#importData">toMarkedText::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#incrementalSearch">toMarkedText::incrementalSearch</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#insert">toMarkedText::insert</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertAndMark">QMultiLineEdit::insertAndMark</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertAt">QMultiLineEdit::insertAt</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertLine">QMultiLineEdit::insertLine</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#insertedLines">toHighlightedText::insertedLines</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#invalidToken">toHighlightedText::invalidToken</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#keyPressEvent">toHighlightedText::keyPressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#killLine">QMultiLineEdit::killLine</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#lineIn">toHighlightedText::lineIn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#lineLength">QMultiLineEdit::lineLength</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#markedText">toMarkedText::markedText</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#mousePressEvent">toMarkedText::mousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#newLine">toMarkedText::newLine</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#nextError">toHighlightedText::nextError</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#numLines">QMultiLineEdit::numLines</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#openFilename">toMarkedText::openFilename</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#pageDown">QMultiLineEdit::pageDown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#pageUp">QMultiLineEdit::pageUp</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#paintCell">toHighlightedText::paintCell</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#paintEvent">toHighlightedText::paintEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#previousError">toHighlightedText::previousError</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#printPage">toMarkedText::printPage</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#removeLine">QMultiLineEdit::removeLine</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#searchCanReplace">toMarkedText::searchCanReplace</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>searchFound - ~toHighlightedText</TH></TR><TR ><TD><A HREF="toMarkedText.html#searchFound">toMarkedText::searchFound</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#searchNext">toMarkedText::searchNext</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#searchReplace">toMarkedText::searchReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#searchTop">toMarkedText::searchTop</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#selectComplete">toHighlightedText::selectComplete</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#setAnalyzer">toHighlightedText::setAnalyzer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#setCopyAvailable">toMarkedText::setCopyAvailable</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#setCurrent">toHighlightedText::setCurrent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#setEdit">toMarkedText::setEdit</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#setEdited">QMultiLineEdit::setEdited</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#setErrors">toHighlightedText::setErrors</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#setFilename">toMarkedText::setFilename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#setHighlight">toHighlightedText::setHighlight</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#setKeywordUpper">toHighlightedText::setKeywordUpper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#setLeftIgnore">toHighlightedText::setLeftIgnore</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#setRedoAvailable">toMarkedText::setRedoAvailable</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#setStatusMessage">toHighlightedText::setStatusMessage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#setText">toHighlightedText::setText</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#setUndoAvailable">toMarkedText::setUndoAvailable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#startComplete">toHighlightedText::startComplete</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#tableAtCursor">toHighlightedText::tableAtCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#textChanged">toHighlightedText::textChanged</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#textLine">QMultiLineEdit::textLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#timerEvent">toMarkedText::timerEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#toHighlightedText">toHighlightedText::toHighlightedText</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#toMarkedText">toMarkedText::toMarkedText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMultiLineEdit.html#toMultiLineEdit">toMultiLineEdit::toMultiLineEdit</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#~toHighlightedText">toHighlightedText::~toHighlightedText</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHtml.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHtml.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toHtml.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,46 @@
+<HTML>
+<HEAD>
+<TITLE>class toHtml: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHtml: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>eof - nextToken</TH></TR><TR ><TD><A HREF="toHtml.html#eof">toHtml::eof</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHtml.html#escape">toHtml::escape</A></TD></TR>
+<TR ><TD><A HREF="toHtml.html#isTag">toHtml::isTag</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHtml.html#mid">toHtml::mid</A></TD></TR>
+<TR ><TD><A HREF="toHtml.html#nextToken">toHtml::nextToken</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>open - text</TH></TR><TR ><TD><A HREF="toHtml.html#open">toHtml::open</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHtml.html#search">toHtml::search</A></TD></TR>
+<TR ><TD><A HREF="toHtml.html#skipSpace">toHtml::skipSpace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHtml.html#tag">toHtml::tag</A></TD></TR>
+<TR ><TD><A HREF="toHtml.html#text">toHtml::text</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>toHtml - ~toHtml</TH></TR><TR ><TD><A HREF="toHtml.html#toHtml">toHtml::toHtml</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHtml.html#value">toHtml::value</A></TD></TR>
+<TR ><TD><A HREF="toHtml.html#~toHtml">toHtml::~toHtml</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLegendChart.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLegendChart.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLegendChart.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,189 @@
+<HTML>
+<HEAD>
+<TITLE>class toLegendChart: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toLegendChart: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>acceptDrops - isFullScreen</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#acceptDrops">QWidget::acceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLegendChart.html#addLabel">toLegendChart::addLabel</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#autoMask">QWidget::autoMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundBrush">QWidget::backgroundBrush</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundOrigin">QWidget::backgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#baseSize">QWidget::baseSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childAt">QWidget::childAt</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRect">QWidget::childrenRect</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRegion">QWidget::childrenRegion</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearFocus">QWidget::clearFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearMask">QWidget::clearMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearWFlags">QWidget::clearWFlags</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#closeEvent">QWidget::closeEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#colorGroup">QWidget::colorGroup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#constPolish">QWidget::constPolish</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#contextMenuEvent">QWidget::contextMenuEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#cursor">QWidget::cursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#customWhatsThis">QWidget::customWhatsThis</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#destroy">QWidget::destroy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragEnterEvent">QWidget::dragEnterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragLeaveEvent">QWidget::dragLeaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragMoveEvent">QWidget::dragMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dropEvent">QWidget::dropEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enabledChange">QWidget::enabledChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enterEvent">QWidget::enterEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#eraseColor">QWidget::eraseColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#erasePixmap">QWidget::erasePixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusData">QWidget::focusData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusInEvent">QWidget::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusOutEvent">QWidget::focusOutEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusPolicy">QWidget::focusPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusProxy">QWidget::focusProxy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#fontChange">QWidget::fontChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#foregroundColor">QWidget::foregroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameGeometry">QWidget::frameGeometry</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameSize">QWidget::frameSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#getWFlags">QWidget::getWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabKeyboard">QWidget::grabKeyboard</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabMouse">QWidget::grabMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasFocus">QWidget::hasFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouse">QWidget::hasMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouseTracking">QWidget::hasMouseTracking</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#iconText">QWidget::iconText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imComposeEvent">QWidget::imComposeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imEndEvent">QWidget::imEndEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imStartEvent">QWidget::imStartEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isActiveWindow">QWidget::isActiveWindow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDesktop">QWidget::isDesktop</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDialog">QWidget::isDialog</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isEnabledTo">QWidget::isEnabledTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFocusEnabled">QWidget::isFocusEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFullScreen">QWidget::isFullScreen</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isInputMethodEnabled - setFixedWidth</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isInputMethodEnabled">QWidget::isInputMethodEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMaximized">QWidget::isMaximized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMinimized">QWidget::isMinimized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isPopup">QWidget::isPopup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isShown">QWidget::isShown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isUpdatesEnabled">QWidget::isUpdatesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isVisibleTo">QWidget::isVisibleTo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyReleaseEvent">QWidget::keyReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyboardGrabber">QWidget::keyboardGrabber</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLegendChart.html#labels">toLegendChart::labels</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#leaveEvent">QWidget::leaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#macEvent">QWidget::macEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFrom">QWidget::mapFrom</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromGlobal">QWidget::mapFromGlobal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromParent">QWidget::mapFromParent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapTo">QWidget::mapTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToGlobal">QWidget::mapToGlobal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToParent">QWidget::mapToParent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumHeight">QWidget::maximumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumWidth">QWidget::maximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#microFocusHint">QWidget::microFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumHeight">QWidget::minimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumWidth">QWidget::minimumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseDoubleClickEvent">QWidget::mouseDoubleClickEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseGrabber">QWidget::mouseGrabber</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseReleaseEvent">QWidget::mouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#moveEvent">QWidget::moveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownCursor">QWidget::ownCursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownFont">QWidget::ownFont</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownPalette">QWidget::ownPalette</A></TD></TR>
+<TR ><TD><A HREF="toLegendChart.html#paintEvent">toLegendChart::paintEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundColor">QWidget::paletteBackgroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundPixmap">QWidget::paletteBackgroundPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteChange">QWidget::paletteChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteForegroundColor">QWidget::paletteForegroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#qwsEvent">QWidget::qwsEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseKeyboard">QWidget::releaseKeyboard</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseMouse">QWidget::releaseMouse</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#reparent">QWidget::reparent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#resetInputContext">QWidget::resetInputContext</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#scroll">QWidget::scroll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAcceptDrops">QWidget::setAcceptDrops</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAutoMask">QWidget::setAutoMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBackgroundOrigin">QWidget::setBackgroundOrigin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBaseSize">QWidget::setBaseSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCaption">QWidget::setCaption</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCursor">QWidget::setCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setEraseColor">QWidget::setEraseColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setErasePixmap">QWidget::setErasePixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedHeight">QWidget::setFixedHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedSize">QWidget::setFixedSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedWidth">QWidget::setFixedWidth</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setFocusPolicy - windowState</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusPolicy">QWidget::setFocusPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusProxy">QWidget::setFocusProxy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setHidden">QWidget::setHidden</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setIconText">QWidget::setIconText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setInputMethodEnabled">QWidget::setInputMethodEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setKeyCompression">QWidget::setKeyCompression</A></TD></TR>
+<TR ><TD><A HREF="toLegendChart.html#setLabels">toLegendChart::setLabels</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumHeight">QWidget::setMaximumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumSize">QWidget::setMaximumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumWidth">QWidget::setMaximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMicroFocusHint">QWidget::setMicroFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumHeight">QWidget::setMinimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumSize">QWidget::setMinimumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumWidth">QWidget::setMinimumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMouseTracking">QWidget::setMouseTracking</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundColor">QWidget::setPaletteBackgroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundPixmap">QWidget::setPaletteBackgroundPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteForegroundColor">QWidget::setPaletteForegroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setShown">QWidget::setShown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizeIncrement">QWidget::setSizeIncrement</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizePolicy">QWidget::setSizePolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setTabOrder">QWidget::setTabOrder</A></TD></TR>
+<TR ><TD><A HREF="toLegendChart.html#setTitle">toLegendChart::setTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setUpdatesEnabled">QWidget::setUpdatesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWFlags">QWidget::setWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowOpacity">QWidget::setWindowOpacity</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowState">QWidget::setWindowState</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showEvent">QWidget::showEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showFullScreen">QWidget::showFullScreen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMaximized">QWidget::showMaximized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMinimized">QWidget::showMinimized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showNormal">QWidget::showNormal</A></TD></TR>
+<TR ><TD><A HREF="toLegendChart.html#sizeHint">toLegendChart::sizeHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizeIncrement">QWidget::sizeIncrement</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizePolicy">QWidget::sizePolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#stackUnder">QWidget::stackUnder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#styleChange">QWidget::styleChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#tabletEvent">QWidget::tabletEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#testWFlags">QWidget::testWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLegendChart.html#title">toLegendChart::title</A></TD></TR>
+<TR ><TD><A HREF="toLegendChart.html#toLegendChart">toLegendChart::toLegendChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#topLevelWidget">QWidget::topLevelWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetCursor">QWidget::unsetCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetFont">QWidget::unsetFont</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetPalette">QWidget::unsetPalette</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateGeometry">QWidget::updateGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateMask">QWidget::updateMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#wheelEvent">QWidget::wheelEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#winEvent">QWidget::winEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowActivationChange">QWidget::windowActivationChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowOpacity">QWidget::windowOpacity</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowState">QWidget::windowState</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLineChart.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLineChart.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLineChart.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,231 @@
+<HTML>
+<HEAD>
+<TITLE>class toLineChart: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toLineChart: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>acceptDrops - isInputMethodEnabled</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#acceptDrops">QWidget::acceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#addMenues">toLineChart::addMenues</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#addValues">toLineChart::addValues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#autoMask">QWidget::autoMask</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#axisLegend">toLineChart::axisLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundBrush">QWidget::backgroundBrush</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundOrigin">QWidget::backgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#baseSize">QWidget::baseSize</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#chartSetup">toLineChart::chartSetup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childAt">QWidget::childAt</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRect">QWidget::childrenRect</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRegion">QWidget::childrenRegion</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#clear">toLineChart::clear</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearFocus">QWidget::clearFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearMask">QWidget::clearMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearWFlags">QWidget::clearWFlags</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#clearZoom">toLineChart::clearZoom</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#closeEvent">QWidget::closeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#colorGroup">QWidget::colorGroup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#constPolish">QWidget::constPolish</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#contextMenuEvent">QWidget::contextMenuEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#countSamples">toLineChart::countSamples</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#cursor">QWidget::cursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#customWhatsThis">QWidget::customWhatsThis</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#destroy">QWidget::destroy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragEnterEvent">QWidget::dragEnterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragLeaveEvent">QWidget::dragLeaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragMoveEvent">QWidget::dragMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dropEvent">QWidget::dropEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#editPrint">toLineChart::editPrint</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enabledChange">QWidget::enabledChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#enabledCharts">toLineChart::enabledCharts</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enterEvent">QWidget::enterEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#eraseColor">QWidget::eraseColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#erasePixmap">QWidget::erasePixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#exportData">toLineChart::exportData</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#fixRect">toLineChart::fixRect</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusData">QWidget::focusData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusInEvent">QWidget::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusOutEvent">QWidget::focusOutEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusPolicy">QWidget::focusPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusProxy">QWidget::focusProxy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#fontChange">QWidget::fontChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#foregroundColor">QWidget::foregroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameGeometry">QWidget::frameGeometry</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameSize">QWidget::frameSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#getWFlags">QWidget::getWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabKeyboard">QWidget::grabKeyboard</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabMouse">QWidget::grabMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#grid">toLineChart::grid</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasFocus">QWidget::hasFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouse">QWidget::hasMouse</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouseTracking">QWidget::hasMouseTracking</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#horizontalChange">toLineChart::horizontalChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#iconText">QWidget::iconText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imComposeEvent">QWidget::imComposeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imEndEvent">QWidget::imEndEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imStartEvent">QWidget::imStartEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#importData">toLineChart::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isActiveWindow">QWidget::isActiveWindow</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDesktop">QWidget::isDesktop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDialog">QWidget::isDialog</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isEnabledTo">QWidget::isEnabledTo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFocusEnabled">QWidget::isFocusEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFullScreen">QWidget::isFullScreen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isInputMethodEnabled">QWidget::isInputMethodEnabled</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isMaximized - setFocusPolicy</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMaximized">QWidget::isMaximized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMinimized">QWidget::isMinimized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isPopup">QWidget::isPopup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isShown">QWidget::isShown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isUpdatesEnabled">QWidget::isUpdatesEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isVisibleTo">QWidget::isVisibleTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyReleaseEvent">QWidget::keyReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyboardGrabber">QWidget::keyboardGrabber</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#labels">toLineChart::labels</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#last">toLineChart::last</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#leaveEvent">QWidget::leaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#legend">toLineChart::legend</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#macEvent">QWidget::macEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFrom">QWidget::mapFrom</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromGlobal">QWidget::mapFromGlobal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromParent">QWidget::mapFromParent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapTo">QWidget::mapTo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToGlobal">QWidget::mapToGlobal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToParent">QWidget::mapToParent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#maxValue">toLineChart::maxValue</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumHeight">QWidget::maximumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumWidth">QWidget::maximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#microFocusHint">QWidget::microFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#minValue">toLineChart::minValue</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumHeight">QWidget::minimumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumWidth">QWidget::minimumWidth</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#mouseDoubleClickEvent">toLineChart::mouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseGrabber">QWidget::mouseGrabber</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#mouseMoveEvent">toLineChart::mouseMoveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#mousePressEvent">toLineChart::mousePressEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#mouseReleaseEvent">toLineChart::mouseReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#moveEvent">QWidget::moveEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#openCopy">toLineChart::openCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownCursor">QWidget::ownCursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownFont">QWidget::ownFont</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownPalette">QWidget::ownPalette</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#paintAxis">toLineChart::paintAxis</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#paintChart">toLineChart::paintChart</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#paintEvent">toLineChart::paintEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#paintLegend">toLineChart::paintLegend</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#paintTitle">toLineChart::paintTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundColor">QWidget::paletteBackgroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundPixmap">QWidget::paletteBackgroundPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteChange">QWidget::paletteChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteForegroundColor">QWidget::paletteForegroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#qwsEvent">QWidget::qwsEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseKeyboard">QWidget::releaseKeyboard</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseMouse">QWidget::releaseMouse</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#reparent">QWidget::reparent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#resetInputContext">QWidget::resetInputContext</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#round">toLineChart::round</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#samples">toLineChart::samples</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#scroll">QWidget::scroll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAcceptDrops">QWidget::setAcceptDrops</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAutoMask">QWidget::setAutoMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBackgroundOrigin">QWidget::setBackgroundOrigin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBaseSize">QWidget::setBaseSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCaption">QWidget::setCaption</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCursor">QWidget::setCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setEnabledCharts">toLineChart::setEnabledCharts</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setEraseColor">QWidget::setEraseColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setErasePixmap">QWidget::setErasePixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedHeight">QWidget::setFixedHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedSize">QWidget::setFixedSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedWidth">QWidget::setFixedWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusPolicy">QWidget::setFocusPolicy</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setFocusProxy - ~toLineChart</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusProxy">QWidget::setFocusProxy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setHidden">QWidget::setHidden</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setIconText">QWidget::setIconText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setInputMethodEnabled">QWidget::setInputMethodEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setKeyCompression">QWidget::setKeyCompression</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setLabels">toLineChart::setLabels</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setMaxValue">toLineChart::setMaxValue</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setMaxValueAuto">toLineChart::setMaxValueAuto</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumHeight">QWidget::setMaximumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumSize">QWidget::setMaximumSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumWidth">QWidget::setMaximumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMicroFocusHint">QWidget::setMicroFocusHint</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setMinValue">toLineChart::setMinValue</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setMinValueAuto">toLineChart::setMinValueAuto</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumHeight">QWidget::setMinimumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumSize">QWidget::setMinimumSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumWidth">QWidget::setMinimumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMouseTracking">QWidget::setMouseTracking</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundColor">QWidget::setPaletteBackgroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundPixmap">QWidget::setPaletteBackgroundPixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteForegroundColor">QWidget::setPaletteForegroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setSamples">toLineChart::setSamples</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setShown">QWidget::setShown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizeIncrement">QWidget::setSizeIncrement</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizePolicy">QWidget::setSizePolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setTabOrder">QWidget::setTabOrder</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setTitle">toLineChart::setTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setUpdatesEnabled">QWidget::setUpdatesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWFlags">QWidget::setWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowOpacity">QWidget::setWindowOpacity</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowState">QWidget::setWindowState</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setYPostfix">toLineChart::setYPostfix</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setup">toLineChart::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#showAxisLegend">toLineChart::showAxisLegend</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showEvent">QWidget::showEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showFullScreen">QWidget::showFullScreen</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#showGrid">toLineChart::showGrid</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#showLast">toLineChart::showLast</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#showLegend">toLineChart::showLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMaximized">QWidget::showMaximized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMinimized">QWidget::showMinimized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showNormal">QWidget::showNormal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizeIncrement">QWidget::sizeIncrement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizePolicy">QWidget::sizePolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#stackUnder">QWidget::stackUnder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#styleChange">QWidget::styleChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#tabletEvent">QWidget::tabletEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#testWFlags">QWidget::testWFlags</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#title">toLineChart::title</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#toLineChart">toLineChart::toLineChart</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#topLevelWidget">QWidget::topLevelWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetCursor">QWidget::unsetCursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetFont">QWidget::unsetFont</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetPalette">QWidget::unsetPalette</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateGeometry">QWidget::updateGeometry</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateMask">QWidget::updateMask</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#valueAdded">toLineChart::valueAdded</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#values">toLineChart::values</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#verticalChange">toLineChart::verticalChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#wheelEvent">QWidget::wheelEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#winEvent">QWidget::winEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowActivationChange">QWidget::windowActivationChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowOpacity">QWidget::windowOpacity</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowState">QWidget::windowState</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#xValues">toLineChart::xValues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#~toLineChart">toLineChart::~toLineChart</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toListView.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toListView.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toListView.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,120 @@
+<HTML>
+<HEAD>
+<TITLE>class toListView: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toListView: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - editSelectAll</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#addMenues">toListView::addMenues</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#allColumnsShowFocus">QListView::allColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#collapsed">QListView::collapsed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnAlignment">QListView::columnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnText">QListView::columnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidth">QListView::columnWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidthMode">QListView::columnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseDoubleClickEvent">toListView::contentsMouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseMoveEvent">toListView::contentsMouseMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMousePressEvent">toListView::contentsMousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseReleaseEvent">toListView::contentsMouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#copyTransposed">toListView::copyTransposed</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#defaultRenameAction">QListView::defaultRenameAction</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#displayMemo">toListView::displayMemo</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#displayMenu">toListView::displayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#drawContentsOffset">QListView::drawContentsOffset</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editPrint">toListView::editPrint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editReadAll">toEditWidget::editReadAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#editSave">toListView::editSave</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editSelectAll">toListView::editSelectAll</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>editUndo - searchTop</TH></TR><TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#eventFilter">QListView::eventFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#expanded">QListView::expanded</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#exportData">toListView::exportData</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#exportType">toListView::exportType</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#focusInEvent">toListView::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#header">QListView::header</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#hideColumn">QListView::hideColumn</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#importData">toListView::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemMargin">QListView::itemMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemPos">QListView::itemPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#menuCallback">toListView::menuCallback</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#menuText">toListView::menuText</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#middleString">toListView::middleString</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#printPage">toListView::printPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#rootIsDecorated">QListView::rootIsDecorated</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchCanReplace">toListView::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchNext">toListView::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchTop">toListView::searchTop</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>selectAllEnabled - ~toListView</TH></TR><TR ><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setAllColumnsShowFocus">QListView::setAllColumnsShowFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnAlignment">QListView::setColumnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnText">QListView::setColumnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnWidthMode">QListView::setColumnWidthMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setDefaultRenameAction">QListView::setDefaultRenameAction</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#setDisplayMenu">toListView::setDisplayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setItemMargin">QListView::setItemMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setOpen">QListView::setOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setRootIsDecorated">QListView::setRootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#setSQLName">toListView::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSelectionAnchor">QListView::setSelectionAnchor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setShowSortIndicator">QListView::setShowSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortColumn">QListView::setSortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortOrder">QListView::setSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setTreeStepSize">QListView::setTreeStepSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#showSortIndicator">QListView::showSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#sortOrder">QListView::sortOrder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#spacePressed">QListView::spacePressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#sqlName">toListView::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#toListView">toListView::toListView</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#treeStepSize">QListView::treeStepSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#updateContents">QListView::updateContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#~toListView">toListView::~toListView</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLock.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLock.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLock.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,37 @@
+<HTML>
+<HEAD>
+<TITLE>class toLock: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toLock: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>lock - ~toLock</TH></TR><TR ><TD><A HREF="toLock.html#lock">toLock::lock</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLock.html#toLock">toLock::toLock</A></TD></TR>
+<TR ><TD><A HREF="toLock.html#unlock">toLock::unlock</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLock.html#~toLock">toLock::~toLock</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLocker.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLocker.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toLocker.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,35 @@
+<HTML>
+<HEAD>
+<TITLE>class toLocker: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toLocker: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>toLocker - ~toLocker</TH></TR><TR ><TD><A HREF="toLocker.html#toLocker">toLocker::toLocker</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLocker.html#~toLocker">toLocker::~toLocker</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMain.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMain.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMain.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,103 @@
+<HTML>
+<HEAD>
+<TITLE>class toMain: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toMain: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addChart - displayMessage</TH></TR><TR ><TD><A HREF="toMain.html#addChart">toMain::addChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#addConnection">toMain::addConnection</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#addRecentFile">toMain::addRecentFile</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#addedConnection">toMain::addedConnection</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#addedToolWidget">toMain::addedToolWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#changeConnection">toMain::changeConnection</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#chartAdded">toMain::chartAdded</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#chartRemoved">toMain::chartRemoved</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#chartSetup">toMain::chartSetup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#checkCaching">toMain::checkCaching</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#close">toMain::close</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#closeSession">toMain::closeSession</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#commandCallback">toMain::commandCallback</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#commitButton">toMain::commitButton</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#connection">toMain::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#connectionToolbar">toMain::connectionToolbar</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#connections">toMain::connections</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#contextHelp">toMain::contextHelp</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#copyButton">toMain::copyButton</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#createDefault">toMain::createDefault</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#currentConnection">toMain::currentConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#cutButton">toMain::cutButton</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#delConnection">toMain::delConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#displayMessage">toMain::displayMessage</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>editDisable - saveButton</TH></TR><TR ><TD><A HREF="toMain.html#editDisable">toMain::editDisable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#editEnable">toMain::editEnable</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#editMenu">toMain::editMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#editSQL">toMain::editSQL</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#editToolbar">toMain::editToolbar</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#editWidget">toMain::editWidget</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#exportData">toMain::exportData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#fileMenu">toMain::fileMenu</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#findEdit">toMain::findEdit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#helpMenu">toMain::helpMenu</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#importData">toMain::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#keepAlive">toMain::keepAlive</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#loadButton">toMain::loadButton</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#loadSession">toMain::loadSession</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#optionButton">toMain::optionButton</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#pasteButton">toMain::pasteButton</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#printButton">toMain::printButton</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#redoButton">toMain::redoButton</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#registerSQLEditor">toMain::registerSQLEditor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#removeChart">toMain::removeChart</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#removedConnection">toMain::removedConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#removedToolWidget">toMain::removedToolWidget</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#rollbackButton">toMain::rollbackButton</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#saveButton">toMain::saveButton</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>saveSession - workspace</TH></TR><TR ><TD><A HREF="toMain.html#saveSession">toMain::saveSession</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#searchButton">toMain::searchButton</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#setCoordinates">toMain::setCoordinates</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#setEditWidget">toMain::setEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#setNeedCommit">toMain::setNeedCommit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#setupChart">toMain::setupChart</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#showFileMenu">toMain::showFileMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#sqlEditor">toMain::sqlEditor</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#statusMenu">toMain::statusMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#stopButton">toMain::stopButton</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#toMain">toMain::toMain</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMainWindow.html#toMainWindow">toMainWindow::toMainWindow</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#toolWidgetAdded">toMain::toolWidgetAdded</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#toolWidgetRemoved">toMain::toolWidgetRemoved</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#toolsMenu">toMain::toolsMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#undoButton">toMain::undoButton</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#updateKeepAlive">toMain::updateKeepAlive</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#updateRecent">toMain::updateRecent</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#willCommit">toMain::willCommit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#windowActivated">toMain::windowActivated</A></TD></TR>
+<TR ><TD><A HREF="toMain.html#windowsMenu">toMain::windowsMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html#workspace">toMain::workspace</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMainWindow.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMainWindow.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMainWindow.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,34 @@
+<HTML>
+<HEAD>
+<TITLE>class toMainWindow: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toMainWindow: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>toMainWindow - toMainWindow</TH></TR><TR ><TD><A HREF="toMainWindow.html#toMainWindow">toMainWindow::toMainWindow</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMarkedText.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMarkedText.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMarkedText.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,111 @@
+<HTML>
+<HEAD>
+<TITLE>class toMarkedText: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toMarkedText: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - findPosition</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#atBeginning">QMultiLineEdit::atBeginning</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#clear">toMarkedText::clear</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorDown">QMultiLineEdit::cursorDown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorLeft">QMultiLineEdit::cursorLeft</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorPoint">QMultiLineEdit::cursorPoint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorRight">QMultiLineEdit::cursorRight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorUp">QMultiLineEdit::cursorUp</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#dropEvent">toMarkedText::dropEvent</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editCopy">toMarkedText::editCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editCut">toMarkedText::editCut</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editOpen">toMarkedText::editOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editPaste">toMarkedText::editPaste</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editPrint">toMarkedText::editPrint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editReadAll">toEditWidget::editReadAll</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editRedo">toMarkedText::editRedo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editSave">toMarkedText::editSave</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editSelectAll">toMarkedText::editSelectAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editUndo">toMarkedText::editUndo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#edited">QMultiLineEdit::edited</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#exportData">toMarkedText::exportData</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#filename">toMarkedText::filename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#findPosition">toMarkedText::findPosition</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>focusInEvent - printPage</TH></TR><TR ><TD><A HREF="toMarkedText.html#focusInEvent">toMarkedText::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#focusOutEvent">toMarkedText::focusOutEvent</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#getMarkedRegion">toMarkedText::getMarkedRegion</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#hasMarkedText">toMarkedText::hasMarkedText</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#importData">toMarkedText::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#incrementalSearch">toMarkedText::incrementalSearch</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#insert">toMarkedText::insert</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertAndMark">QMultiLineEdit::insertAndMark</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertAt">QMultiLineEdit::insertAt</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertLine">QMultiLineEdit::insertLine</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#keyPressEvent">toMarkedText::keyPressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#killLine">QMultiLineEdit::killLine</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#lineLength">QMultiLineEdit::lineLength</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#markedText">toMarkedText::markedText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#mousePressEvent">toMarkedText::mousePressEvent</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#newLine">toMarkedText::newLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#numLines">QMultiLineEdit::numLines</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#openFilename">toMarkedText::openFilename</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#pageDown">QMultiLineEdit::pageDown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#pageUp">QMultiLineEdit::pageUp</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#paintEvent">toMarkedText::paintEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#printPage">toMarkedText::printPage</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>readAllEnabled - ~toEditWidget</TH></TR><TR ><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#removeLine">QMultiLineEdit::removeLine</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#searchCanReplace">toMarkedText::searchCanReplace</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#searchFound">toMarkedText::searchFound</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#searchNext">toMarkedText::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#searchReplace">toMarkedText::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#searchTop">toMarkedText::searchTop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#setCopyAvailable">toMarkedText::setCopyAvailable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#setEdit">toMarkedText::setEdit</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#setEdited">QMultiLineEdit::setEdited</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#setFilename">toMarkedText::setFilename</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#setRedoAvailable">toMarkedText::setRedoAvailable</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#setUndoAvailable">toMarkedText::setUndoAvailable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#textLine">QMultiLineEdit::textLine</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#timerEvent">toMarkedText::timerEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#toMarkedText">toMarkedText::toMarkedText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMultiLineEdit.html#toMultiLineEdit">toMultiLineEdit::toMultiLineEdit</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMemoEditor.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMemoEditor.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMemoEditor.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,66 @@
+<HTML>
+<HEAD>
+<TITLE>class toMemoEditor: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toMemoEditor: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>changeCurrent - label</TH></TR><TR ><TD><A HREF="toMemoEditor.html#changeCurrent">toMemoEditor::changeCurrent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#changeData">toMemoEditor::changeData</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#changePosition">toMemoEditor::changePosition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#column">toMemoEditor::column</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#done">QDialog::done</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#editor">toMemoEditor::editor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#extension">QDialog::extension</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#firstColumn">toMemoEditor::firstColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#isModal">QDialog::isModal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#isSizeGripEnabled">QDialog::isSizeGripEnabled</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#label">toMemoEditor::label</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>lastColumn - saveFile</TH></TR><TR ><TD><A HREF="toMemoEditor.html#lastColumn">toMemoEditor::lastColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#listView">toMemoEditor::listView</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#nextColumn">toMemoEditor::nextColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#null">toMemoEditor::null</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#openFile">toMemoEditor::openFile</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#orientation">QDialog::orientation</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#previousColumn">toMemoEditor::previousColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#reject">QDialog::reject</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#result">QDialog::result</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#row">toMemoEditor::row</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#saveFile">toMemoEditor::saveFile</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setExtension - toolbar</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setExtension">QDialog::setExtension</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setModal">QDialog::setModal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setOrientation">QDialog::setOrientation</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setResult">QDialog::setResult</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setSizeGripEnabled">QDialog::setSizeGripEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#setText">toMemoEditor::setText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#showExtension">QDialog::showExtension</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#store">toMemoEditor::store</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#text">toMemoEditor::text</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#toMemoEditor">toMemoEditor::toMemoEditor</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#toolbar">toMemoEditor::toolbar</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMultiLineEdit.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMultiLineEdit.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toMultiLineEdit.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,55 @@
+<HTML>
+<HEAD>
+<TITLE>class toMultiLineEdit: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toMultiLineEdit: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>atBeginning - getMarkedRegion</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#atBeginning">QMultiLineEdit::atBeginning</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorDown">QMultiLineEdit::cursorDown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorLeft">QMultiLineEdit::cursorLeft</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorPoint">QMultiLineEdit::cursorPoint</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorRight">QMultiLineEdit::cursorRight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorUp">QMultiLineEdit::cursorUp</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#edited">QMultiLineEdit::edited</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#getMarkedRegion">QMultiLineEdit::getMarkedRegion</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>hasMarkedText - numLines</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#hasMarkedText">QMultiLineEdit::hasMarkedText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertAndMark">QMultiLineEdit::insertAndMark</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertAt">QMultiLineEdit::insertAt</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertLine">QMultiLineEdit::insertLine</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#killLine">QMultiLineEdit::killLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#lineLength">QMultiLineEdit::lineLength</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#markedText">QMultiLineEdit::markedText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#numLines">QMultiLineEdit::numLines</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>pageDown - toMultiLineEdit</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#pageDown">QMultiLineEdit::pageDown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#pageUp">QMultiLineEdit::pageUp</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#removeLine">QMultiLineEdit::removeLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#setEdited">QMultiLineEdit::setEdited</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#textLine">QMultiLineEdit::textLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMultiLineEdit.html#toMultiLineEdit">toMultiLineEdit::toMultiLineEdit</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toNoBlockQuery.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toNoBlockQuery.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toNoBlockQuery.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+<TITLE>class toNoBlockQuery: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toNoBlockQuery: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>checkError - poll</TH></TR><TR ><TD><A HREF="toNoBlockQuery.html#checkError">toNoBlockQuery::checkError</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toNoBlockQuery.html#describe">toNoBlockQuery::describe</A></TD></TR>
+<TR ><TD><A HREF="toNoBlockQuery.html#eof">toNoBlockQuery::eof</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toNoBlockQuery.html#poll">toNoBlockQuery::poll</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>readValue - ~toNoBlockQuery</TH></TR><TR ><TD><A HREF="toNoBlockQuery.html#readValue">toNoBlockQuery::readValue</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toNoBlockQuery.html#readValueNull">toNoBlockQuery::readValueNull</A></TD></TR>
+<TR ><TD><A HREF="toNoBlockQuery.html#rowsProcessed">toNoBlockQuery::rowsProcessed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toNoBlockQuery.html#stop">toNoBlockQuery::stop</A></TD></TR>
+<TR ><TD><A HREF="toNoBlockQuery.html#toNoBlockQuery">toNoBlockQuery::toNoBlockQuery</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toNoBlockQuery.html#~toNoBlockQuery">toNoBlockQuery::~toNoBlockQuery</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toNoBlockQuery__queryTask.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toNoBlockQuery__queryTask.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toNoBlockQuery__queryTask.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,36 @@
+<HTML>
+<HEAD>
+<TITLE>class queryTask: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class queryTask: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>queryTask - ~toTask</TH></TR><TR ><TD><A HREF="toNoBlockQuery__queryTask.html#queryTask">toNoBlockQuery::queryTask::queryTask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toNoBlockQuery__queryTask.html#run">toNoBlockQuery::queryTask::run</A></TD></TR>
+<TR ><TD><A HREF="toTask.html#~toTask">toTask::~toTask</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toParamGet.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toParamGet.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toParamGet.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,54 @@
+<HTML>
+<HEAD>
+<TITLE>class toParamGet: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toParamGet: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>context - orientation</TH></TR><TR ><TD><A HREF="toHelpContext.html#context">toHelpContext::context</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#done">QDialog::done</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#extension">QDialog::extension</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toParamGet.html#getParam">toParamGet::getParam</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#isModal">QDialog::isModal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#isSizeGripEnabled">QDialog::isSizeGripEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#orientation">QDialog::orientation</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>reject - setOrientation</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#reject">QDialog::reject</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toParamGet.html#resizeEvent">toParamGet::resizeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#result">QDialog::result</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toParamGet.html#setDefault">toParamGet::setDefault</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setExtension">QDialog::setExtension</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setModal">QDialog::setModal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setOrientation">QDialog::setOrientation</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setResult - ~toHelpContext</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setResult">QDialog::setResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setSizeGripEnabled">QDialog::setSizeGripEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#showExtension">QDialog::showExtension</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toParamGet.html#showMemo">toParamGet::showMemo</A></TD></TR>
+<TR ><TD><A HREF="toHelpContext.html#toHelpContext">toHelpContext::toHelpContext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toParamGet.html#toParamGet">toParamGet::toParamGet</A></TD></TR>
+<TR ><TD><A HREF="toHelpContext.html#~toHelpContext">toHelpContext::~toHelpContext</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toParamGetButton.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toParamGetButton.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toParamGetButton.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,40 @@
+<HTML>
+<HEAD>
+<TITLE>class toParamGetButton: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toParamGetButton: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>autoDefault - internalClicked</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qpushbutton.html#autoDefault">QPushButton::autoDefault</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toParamGetButton.html#clicked">toParamGetButton::clicked</A></TD></TR>
+<TR ><TD><A HREF="toParamGetButton.html#internalClicked">toParamGetButton::internalClicked</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isDefault - toParamGetButton</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qpushbutton.html#isDefault">QPushButton::isDefault</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qpushbutton.html#setAutoDefault">QPushButton::setAutoDefault</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qpushbutton.html#setPopup">QPushButton::setPopup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toParamGetButton.html#toParamGetButton">toParamGetButton::toParamGetButton</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPieChart.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPieChart.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPieChart.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,203 @@
+<HTML>
+<HEAD>
+<TITLE>class toPieChart: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toPieChart: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>acceptDrops - isInputMethodEnabled</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#acceptDrops">QWidget::acceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#addValue">toPieChart::addValue</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#autoMask">QWidget::autoMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundBrush">QWidget::backgroundBrush</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundOrigin">QWidget::backgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#baseSize">QWidget::baseSize</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#chartRectangle">toPieChart::chartRectangle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childAt">QWidget::childAt</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRect">QWidget::childrenRect</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRegion">QWidget::childrenRegion</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearFocus">QWidget::clearFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearMask">QWidget::clearMask</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearWFlags">QWidget::clearWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#closeEvent">QWidget::closeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#colorGroup">QWidget::colorGroup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#constPolish">QWidget::constPolish</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#contextMenuEvent">QWidget::contextMenuEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#cursor">QWidget::cursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#customWhatsThis">QWidget::customWhatsThis</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#destroy">QWidget::destroy</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#displayPercent">toPieChart::displayPercent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragEnterEvent">QWidget::dragEnterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragLeaveEvent">QWidget::dragLeaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragMoveEvent">QWidget::dragMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dropEvent">QWidget::dropEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#editPrint">toPieChart::editPrint</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enabledChange">QWidget::enabledChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enterEvent">QWidget::enterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#eraseColor">QWidget::eraseColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#erasePixmap">QWidget::erasePixmap</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#findLabel">toPieChart::findLabel</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusData">QWidget::focusData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusInEvent">QWidget::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusOutEvent">QWidget::focusOutEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusPolicy">QWidget::focusPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusProxy">QWidget::focusProxy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#fontChange">QWidget::fontChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#foregroundColor">QWidget::foregroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameGeometry">QWidget::frameGeometry</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameSize">QWidget::frameSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#getWFlags">QWidget::getWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabKeyboard">QWidget::grabKeyboard</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabMouse">QWidget::grabMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasFocus">QWidget::hasFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouse">QWidget::hasMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouseTracking">QWidget::hasMouseTracking</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#iconText">QWidget::iconText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imComposeEvent">QWidget::imComposeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imEndEvent">QWidget::imEndEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imStartEvent">QWidget::imStartEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isActiveWindow">QWidget::isActiveWindow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDesktop">QWidget::isDesktop</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDialog">QWidget::isDialog</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isEnabledTo">QWidget::isEnabledTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFocusEnabled">QWidget::isFocusEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFullScreen">QWidget::isFullScreen</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isInputMethodEnabled">QWidget::isInputMethodEnabled</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isMaximized - setFixedSize</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMaximized">QWidget::isMaximized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMinimized">QWidget::isMinimized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isPopup">QWidget::isPopup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isShown">QWidget::isShown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isUpdatesEnabled">QWidget::isUpdatesEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isVisibleTo">QWidget::isVisibleTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyReleaseEvent">QWidget::keyReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyboardGrabber">QWidget::keyboardGrabber</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#labels">toPieChart::labels</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#leaveEvent">QWidget::leaveEvent</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#legend">toPieChart::legend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#macEvent">QWidget::macEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFrom">QWidget::mapFrom</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromGlobal">QWidget::mapFromGlobal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromParent">QWidget::mapFromParent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapTo">QWidget::mapTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToGlobal">QWidget::mapToGlobal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToParent">QWidget::mapToParent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumHeight">QWidget::maximumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumWidth">QWidget::maximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#microFocusHint">QWidget::microFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumHeight">QWidget::minimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumWidth">QWidget::minimumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#mouseDoubleClickEvent">toPieChart::mouseDoubleClickEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseGrabber">QWidget::mouseGrabber</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#mousePressEvent">toPieChart::mousePressEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseReleaseEvent">QWidget::mouseReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#moveEvent">QWidget::moveEvent</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#newValues">toPieChart::newValues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#openCopy">toPieChart::openCopy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownCursor">QWidget::ownCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownFont">QWidget::ownFont</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownPalette">QWidget::ownPalette</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#paintChart">toPieChart::paintChart</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#paintEvent">toPieChart::paintEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundColor">QWidget::paletteBackgroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundPixmap">QWidget::paletteBackgroundPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteChange">QWidget::paletteChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteForegroundColor">QWidget::paletteForegroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#postfix">toPieChart::postfix</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#qwsEvent">QWidget::qwsEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseKeyboard">QWidget::releaseKeyboard</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseMouse">QWidget::releaseMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#reparent">QWidget::reparent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#resetInputContext">QWidget::resetInputContext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#scroll">QWidget::scroll</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAcceptDrops">QWidget::setAcceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAutoMask">QWidget::setAutoMask</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBackgroundOrigin">QWidget::setBackgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBaseSize">QWidget::setBaseSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCaption">QWidget::setCaption</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCursor">QWidget::setCursor</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#setDisplayPercent">toPieChart::setDisplayPercent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setEraseColor">QWidget::setEraseColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setErasePixmap">QWidget::setErasePixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedHeight">QWidget::setFixedHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedSize">QWidget::setFixedSize</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setFixedWidth - ~toPieChart</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedWidth">QWidget::setFixedWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusPolicy">QWidget::setFocusPolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusProxy">QWidget::setFocusProxy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setHidden">QWidget::setHidden</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setIconText">QWidget::setIconText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setInputMethodEnabled">QWidget::setInputMethodEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setKeyCompression">QWidget::setKeyCompression</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumHeight">QWidget::setMaximumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumSize">QWidget::setMaximumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumWidth">QWidget::setMaximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMicroFocusHint">QWidget::setMicroFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumHeight">QWidget::setMinimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumSize">QWidget::setMinimumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumWidth">QWidget::setMinimumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMouseTracking">QWidget::setMouseTracking</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundColor">QWidget::setPaletteBackgroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundPixmap">QWidget::setPaletteBackgroundPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteForegroundColor">QWidget::setPaletteForegroundColor</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#setPostfix">toPieChart::setPostfix</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setShown">QWidget::setShown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizeIncrement">QWidget::setSizeIncrement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizePolicy">QWidget::setSizePolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setTabOrder">QWidget::setTabOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#setTitle">toPieChart::setTitle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setUpdatesEnabled">QWidget::setUpdatesEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#setValues">toPieChart::setValues</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWFlags">QWidget::setWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowOpacity">QWidget::setWindowOpacity</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowState">QWidget::setWindowState</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showEvent">QWidget::showEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showFullScreen">QWidget::showFullScreen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#showLegend">toPieChart::showLegend</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMaximized">QWidget::showMaximized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMinimized">QWidget::showMinimized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showNormal">QWidget::showNormal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizeIncrement">QWidget::sizeIncrement</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizePolicy">QWidget::sizePolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#stackUnder">QWidget::stackUnder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#styleChange">QWidget::styleChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#tabletEvent">QWidget::tabletEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#testWFlags">QWidget::testWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#title">toPieChart::title</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#toPieChart">toPieChart::toPieChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#topLevelWidget">QWidget::topLevelWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetCursor">QWidget::unsetCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetFont">QWidget::unsetFont</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetPalette">QWidget::unsetPalette</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateGeometry">QWidget::updateGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateMask">QWidget::updateMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#values">toPieChart::values</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#wheelEvent">QWidget::wheelEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#winEvent">QWidget::winEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowActivationChange">QWidget::windowActivationChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowOpacity">QWidget::windowOpacity</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowState">QWidget::windowState</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#~toPieChart">toPieChart::~toPieChart</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPieConnector.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPieConnector.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPieConnector.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+<HTML>
+<HEAD>
+<TITLE>class toPieConnector: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toPieConnector: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>blockSignals - event</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#blockSignals">QObject::blockSignals</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#checkConnectArgs">QObject::checkConnectArgs</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#children">QObject::children</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#connectNotify">QObject::connectNotify</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#customEvent">QObject::customEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#deleteLater">QObject::deleteLater</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#destroyed">QObject::destroyed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnect">QObject::disconnect</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnectNotify">QObject::disconnectNotify</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectInfo">QObject::dumpObjectInfo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectTree">QObject::dumpObjectTree</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#event">QObject::event</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>flow - qt_find_obj_child</TH></TR><TR ><TD><A HREF="toPieConnector.html#flow">toPieConnector::flow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#highPriority">QObject::highPriority</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#insertChild">QObject::insertChild</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#installEventFilter">QObject::installEventFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isA">QObject::isA</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isWidgetType">QObject::isWidgetType</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimer">QObject::killTimer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimers">QObject::killTimers</A></TD></TR>
+<TR ><TD><A HREF="toPieConnector.html#newValues">toPieConnector::newValues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#normalizeSignalSlot">QObject::normalizeSignalSlot</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#objectTrees">QObject::objectTrees</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#qt_find_obj_child">QObject::qt_find_obj_child</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>queryList - trUtf8</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#queryList">QObject::queryList</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#removeEventFilter">QObject::removeEventFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#sender">QObject::sender</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieConnector.html#setFlow">toPieConnector::setFlow</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#setProperty">QObject::setProperty</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#signalsBlocked">QObject::signalsBlocked</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#startTimer">QObject::startTimer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#timerEvent">QObject::timerEvent</A></TD></TR>
+<TR ><TD><A HREF="toPieConnector.html#toPieConnector">toPieConnector::toPieConnector</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#tr">QObject::tr</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#trUtf8">QObject::trUtf8</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPopupButton.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPopupButton.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toPopupButton.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,47 @@
+<HTML>
+<HEAD>
+<TITLE>class toPopupButton: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toPopupButton: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>autoRaise - setAutoRaise</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#autoRaise">QToolButton::autoRaise</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPopupButton.html#click">toPopupButton::click</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#openPopup">QToolButton::openPopup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#popupDelay">QToolButton::popupDelay</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#setAutoRaise">QToolButton::setAutoRaise</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setPopupDelay - textLabel</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#setPopupDelay">QToolButton::setPopupDelay</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#setTextLabel">QToolButton::setTextLabel</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#setTextPosition">QToolButton::setTextPosition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#setUsesBigPixmap">QToolButton::setUsesBigPixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#textLabel">QToolButton::textLabel</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>textPosition - usesBigPixmap</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#textPosition">QToolButton::textPosition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPopupButton.html#toPopupButton">toPopupButton::toPopupButton</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#uses3D">QToolButton::uses3D</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html#usesBigPixmap">QToolButton::usesBigPixmap</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQValue.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQValue.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQValue.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,54 @@
+<HTML>
+<HEAD>
+<TITLE>class toQValue: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toQValue: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>QString - isInt</TH></TR><TR ><TD><A HREF="toQValue.html#QString">toQValue::QString</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html#createBinary">toQValue::createBinary</A></TD></TR>
+<TR ><TD><A HREF="toQValue.html#createFromHex">toQValue::createFromHex</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html#formatNumber">toQValue::formatNumber</A></TD></TR>
+<TR ><TD><A HREF="toQValue.html#isBinary">toQValue::isBinary</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html#isDouble">toQValue::isDouble</A></TD></TR>
+<TR ><TD><A HREF="toQValue.html#isInt">toQValue::isInt</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isNull - setNumberFormat</TH></TR><TR ><TD><A HREF="toQValue.html#isNull">toQValue::isNull</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html#isString">toQValue::isString</A></TD></TR>
+<TR ><TD><A HREF="toQValue.html#numberDecimals">toQValue::numberDecimals</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html#numberFormat">toQValue::numberFormat</A></TD></TR>
+<TR ><TD><A HREF="toQValue.html#operator%20=%20">toQValue::operator = </A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html#operator%20==%20">toQValue::operator == </A></TD></TR>
+<TR ><TD><A HREF="toQValue.html#setNumberFormat">toQValue::setNumberFormat</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>toByteArray - ~toQValue</TH></TR><TR ><TD><A HREF="toQValue.html#toByteArray">toQValue::toByteArray</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html#toDouble">toQValue::toDouble</A></TD></TR>
+<TR ><TD><A HREF="toQValue.html#toInt">toQValue::toInt</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html#toQValue">toQValue::toQValue</A></TD></TR>
+<TR ><TD><A HREF="toQValue.html#toString">toQValue::toString</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html#utf8">toQValue::utf8</A></TD></TR>
+<TR ><TD><A HREF="toQValue.html#~toQValue">toQValue::~toQValue</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQValue__queryValue.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQValue__queryValue.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQValue__queryValue.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,33 @@
+<HTML>
+<HEAD>
+<TITLE>union queryValue: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>union queryValue: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,50 @@
+<HTML>
+<HEAD>
+<TITLE>class toQuery: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toQuery: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>cancel - eof</TH></TR><TR ><TD><A HREF="toQuery.html#cancel">toQuery::cancel</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery.html#columns">toQuery::columns</A></TD></TR>
+<TR ><TD><A HREF="toQuery.html#connection">toQuery::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery.html#connectionSub">toQuery::connectionSub</A></TD></TR>
+<TR ><TD><A HREF="toQuery.html#describe">toQuery::describe</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery.html#eof">toQuery::eof</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>execute - readValue</TH></TR><TR ><TD><A HREF="toQuery.html#execute">toQuery::execute</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery.html#mode">toQuery::mode</A></TD></TR>
+<TR ><TD><A HREF="toQuery.html#params">toQuery::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery.html#readQuery">toQuery::readQuery</A></TD></TR>
+<TR ><TD><A HREF="toQuery.html#readQueryNull">toQuery::readQueryNull</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery.html#readValue">toQuery::readValue</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>readValueNull - ~toQuery</TH></TR><TR ><TD><A HREF="toQuery.html#readValueNull">toQuery::readValueNull</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery.html#rowsProcessed">toQuery::rowsProcessed</A></TD></TR>
+<TR ><TD><A HREF="toQuery.html#sql">toQuery::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery.html#toQuery">toQuery::toQuery</A></TD></TR>
+<TR ><TD><A HREF="toQuery.html#~toQuery">toQuery::~toQuery</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery__queryDescribe.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery__queryDescribe.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery__queryDescribe.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,33 @@
+<HTML>
+<HEAD>
+<TITLE>struct queryDescribe: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct queryDescribe: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery__queryImpl.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery__queryImpl.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toQuery__queryImpl.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+<TITLE>class queryImpl: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class queryImpl: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>cancel - eof</TH></TR><TR ><TD><A HREF="toQuery__queryImpl.html#cancel">toQuery::queryImpl::cancel</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery__queryImpl.html#columns">toQuery::queryImpl::columns</A></TD></TR>
+<TR ><TD><A HREF="toQuery__queryImpl.html#describe">toQuery::queryImpl::describe</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery__queryImpl.html#eof">toQuery::queryImpl::eof</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>execute - ~queryImpl</TH></TR><TR ><TD><A HREF="toQuery__queryImpl.html#execute">toQuery::queryImpl::execute</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery__queryImpl.html#query">toQuery::queryImpl::query</A></TD></TR>
+<TR ><TD><A HREF="toQuery__queryImpl.html#queryImpl">toQuery::queryImpl::queryImpl</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery__queryImpl.html#readValue">toQuery::queryImpl::readValue</A></TD></TR>
+<TR ><TD><A HREF="toQuery__queryImpl.html#rowsProcessed">toQuery::queryImpl::rowsProcessed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery__queryImpl.html#~queryImpl">toQuery::queryImpl::~queryImpl</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResult.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResult.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResult.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,54 @@
+<HTML>
+<HEAD>
+<TITLE>class toResult: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResult: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>canHandle - handled</TH></TR><TR ><TD><A HREF="toResult.html#canHandle">toResult::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#changeParams">toResult::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>params - setSQLName</TH></TR><TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#query">toResult::query</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#refresh">toResult::refresh</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQL">toResult::setSQL</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setSQLParams - ~toResult</TH></TR><TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultBar.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultBar.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultBar.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,262 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultBar: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultBar: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>acceptDrops - isMinimized</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#acceptDrops">QWidget::acceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html#addMenues">toResultBar::addMenues</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#addValues">toLineChart::addValues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#autoMask">QWidget::autoMask</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#axisLegend">toLineChart::axisLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundBrush">QWidget::backgroundBrush</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundOrigin">QWidget::backgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#baseSize">QWidget::baseSize</A></TD></TR>
+<TR ><TD><A HREF="toResultBar.html#canHandle">toResultBar::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultBar.html#changeParams">toResultBar::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#chartSetup">toLineChart::chartSetup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childAt">QWidget::childAt</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRect">QWidget::childrenRect</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRegion">QWidget::childrenRegion</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html#clear">toResultBar::clear</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearFocus">QWidget::clearFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearMask">QWidget::clearMask</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearWFlags">QWidget::clearWFlags</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#clearZoom">toLineChart::clearZoom</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#closeEvent">QWidget::closeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#colorGroup">QWidget::colorGroup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResultBar.html#connectionChanged">toResultBar::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#constPolish">QWidget::constPolish</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#contextMenuEvent">QWidget::contextMenuEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#countSamples">toLineChart::countSamples</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#cursor">QWidget::cursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#customWhatsThis">QWidget::customWhatsThis</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#destroy">QWidget::destroy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragEnterEvent">QWidget::dragEnterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragLeaveEvent">QWidget::dragLeaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragMoveEvent">QWidget::dragMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dropEvent">QWidget::dropEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#editPrint">toLineChart::editPrint</A></TD></TR>
+<TR ><TD><A HREF="toResultBar.html#editSQL">toResultBar::editSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enabledChange">QWidget::enabledChange</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#enabledCharts">toLineChart::enabledCharts</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enterEvent">QWidget::enterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#eraseColor">QWidget::eraseColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#erasePixmap">QWidget::erasePixmap</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#exportData">toLineChart::exportData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#fixRect">toLineChart::fixRect</A></TD></TR>
+<TR ><TD><A HREF="toResultBar.html#flow">toResultBar::flow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusData">QWidget::focusData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusInEvent">QWidget::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusOutEvent">QWidget::focusOutEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusPolicy">QWidget::focusPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusProxy">QWidget::focusProxy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#fontChange">QWidget::fontChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#foregroundColor">QWidget::foregroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameGeometry">QWidget::frameGeometry</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameSize">QWidget::frameSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#getWFlags">QWidget::getWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabKeyboard">QWidget::grabKeyboard</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabMouse">QWidget::grabMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#grid">toLineChart::grid</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasFocus">QWidget::hasFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouse">QWidget::hasMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouseTracking">QWidget::hasMouseTracking</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#horizontalChange">toLineChart::horizontalChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#iconText">QWidget::iconText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imComposeEvent">QWidget::imComposeEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imEndEvent">QWidget::imEndEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imStartEvent">QWidget::imStartEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#importData">toLineChart::importData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isActiveWindow">QWidget::isActiveWindow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDesktop">QWidget::isDesktop</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDialog">QWidget::isDialog</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isEnabledTo">QWidget::isEnabledTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFocusEnabled">QWidget::isFocusEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFullScreen">QWidget::isFullScreen</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isInputMethodEnabled">QWidget::isInputMethodEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMaximized">QWidget::isMaximized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMinimized">QWidget::isMinimized</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isPopup - setMaxValue</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isPopup">QWidget::isPopup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isShown">QWidget::isShown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isUpdatesEnabled">QWidget::isUpdatesEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isVisibleTo">QWidget::isVisibleTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyReleaseEvent">QWidget::keyReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyboardGrabber">QWidget::keyboardGrabber</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#labels">toLineChart::labels</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#last">toLineChart::last</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#leaveEvent">QWidget::leaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#legend">toLineChart::legend</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#macEvent">QWidget::macEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFrom">QWidget::mapFrom</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromGlobal">QWidget::mapFromGlobal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromParent">QWidget::mapFromParent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapTo">QWidget::mapTo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToGlobal">QWidget::mapToGlobal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToParent">QWidget::mapToParent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#maxValue">toLineChart::maxValue</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumHeight">QWidget::maximumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumWidth">QWidget::maximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#microFocusHint">QWidget::microFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#minValue">toLineChart::minValue</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumHeight">QWidget::minimumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumWidth">QWidget::minimumWidth</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#mouseDoubleClickEvent">toLineChart::mouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseGrabber">QWidget::mouseGrabber</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#mouseMoveEvent">toLineChart::mouseMoveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#mousePressEvent">toLineChart::mousePressEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#mouseReleaseEvent">toLineChart::mouseReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#moveEvent">QWidget::moveEvent</A></TD></TR>
+<TR ><TD><A HREF="toBarChart.html#openCopy">toBarChart::openCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownCursor">QWidget::ownCursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownFont">QWidget::ownFont</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownPalette">QWidget::ownPalette</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#paintAxis">toLineChart::paintAxis</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toBarChart.html#paintChart">toBarChart::paintChart</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#paintEvent">toLineChart::paintEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#paintLegend">toLineChart::paintLegend</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#paintTitle">toLineChart::paintTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundColor">QWidget::paletteBackgroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundPixmap">QWidget::paletteBackgroundPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteChange">QWidget::paletteChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteForegroundColor">QWidget::paletteForegroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR ><TD><A HREF="toResultBar.html#poll">toResultBar::poll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html#query">toResultBar::query</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#qwsEvent">QWidget::qwsEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html#refresh">toResultBar::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseKeyboard">QWidget::releaseKeyboard</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseMouse">QWidget::releaseMouse</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#reparent">QWidget::reparent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#resetInputContext">QWidget::resetInputContext</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#round">toLineChart::round</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#samples">toLineChart::samples</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#scroll">QWidget::scroll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAcceptDrops">QWidget::setAcceptDrops</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAutoMask">QWidget::setAutoMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBackgroundOrigin">QWidget::setBackgroundOrigin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBaseSize">QWidget::setBaseSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCaption">QWidget::setCaption</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCursor">QWidget::setCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setEnabledCharts">toLineChart::setEnabledCharts</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setEraseColor">QWidget::setEraseColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setErasePixmap">QWidget::setErasePixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedHeight">QWidget::setFixedHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedSize">QWidget::setFixedSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedWidth">QWidget::setFixedWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html#setFlow">toResultBar::setFlow</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusPolicy">QWidget::setFocusPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusProxy">QWidget::setFocusProxy</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setHidden">QWidget::setHidden</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setIconText">QWidget::setIconText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setInputMethodEnabled">QWidget::setInputMethodEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setKeyCompression">QWidget::setKeyCompression</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setLabels">toLineChart::setLabels</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setMaxValue">toLineChart::setMaxValue</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setMaxValueAuto - ~toResultBar</TH></TR><TR ><TD><A HREF="toLineChart.html#setMaxValueAuto">toLineChart::setMaxValueAuto</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumHeight">QWidget::setMaximumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumSize">QWidget::setMaximumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumWidth">QWidget::setMaximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMicroFocusHint">QWidget::setMicroFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setMinValue">toLineChart::setMinValue</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setMinValueAuto">toLineChart::setMinValueAuto</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumHeight">QWidget::setMinimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumSize">QWidget::setMinimumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumWidth">QWidget::setMinimumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMouseTracking">QWidget::setMouseTracking</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundColor">QWidget::setPaletteBackgroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundPixmap">QWidget::setPaletteBackgroundPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteForegroundColor">QWidget::setPaletteForegroundColor</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html#setSQL">toResultBar::setSQL</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setSamples">toLineChart::setSamples</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setShown">QWidget::setShown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizeIncrement">QWidget::setSizeIncrement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizePolicy">QWidget::setSizePolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setTabOrder">QWidget::setTabOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setTitle">toLineChart::setTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setUpdatesEnabled">QWidget::setUpdatesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWFlags">QWidget::setWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowOpacity">QWidget::setWindowOpacity</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowState">QWidget::setWindowState</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setYPostfix">toLineChart::setYPostfix</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setup">toLineChart::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#showAxisLegend">toLineChart::showAxisLegend</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showEvent">QWidget::showEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showFullScreen">QWidget::showFullScreen</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#showGrid">toLineChart::showGrid</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#showLast">toLineChart::showLast</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#showLegend">toLineChart::showLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMaximized">QWidget::showMaximized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMinimized">QWidget::showMinimized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showNormal">QWidget::showNormal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizeIncrement">QWidget::sizeIncrement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizePolicy">QWidget::sizePolicy</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#stackUnder">QWidget::stackUnder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html#start">toResultBar::start</A></TD></TR>
+<TR ><TD><A HREF="toResultBar.html#stop">toResultBar::stop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#styleChange">QWidget::styleChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#tabletEvent">QWidget::tabletEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#testWFlags">QWidget::testWFlags</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#title">toLineChart::title</A></TD></TR>
+<TR ><TD><A HREF="toBarChart.html#toBarChart">toBarChart::toBarChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#toLineChart">toLineChart::toLineChart</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html#toResultBar">toResultBar::toResultBar</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#topLevelWidget">QWidget::topLevelWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html#transform">toResultBar::transform</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetCursor">QWidget::unsetCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetFont">QWidget::unsetFont</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetPalette">QWidget::unsetPalette</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateGeometry">QWidget::updateGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateMask">QWidget::updateMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#valueAdded">toLineChart::valueAdded</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#values">toLineChart::values</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#verticalChange">toLineChart::verticalChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#wheelEvent">QWidget::wheelEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#winEvent">QWidget::winEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowActivationChange">QWidget::windowActivationChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowOpacity">QWidget::windowOpacity</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowState">QWidget::windowState</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#xValues">toLineChart::xValues</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#~toLineChart">toLineChart::~toLineChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultBar.html#~toResultBar">toResultBar::~toResultBar</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,57 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultCols: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultCols: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>canHandle - editComment</TH></TR><TR ><TD><A HREF="toResultCols.html#canHandle">toResultCols::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultCols.html#changeParams">toResultCols::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols.html#clearParams">toResultCols::clearParams</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR ><TD><A HREF="toResultCols.html#displayHeader">toResultCols::displayHeader</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols.html#editComment">toResultCols::editComment</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>handled - setSQLName</TH></TR><TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR ><TD><A HREF="toResultCols.html#query">toResultCols::query</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols.html#refresh">toResultCols::refresh</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR ><TD><A HREF="toResultCols.html#setSQL">toResultCols::setSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setSQLParams - ~toResult</TH></TR><TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultCols.html#toResultCols">toResultCols::toResultCols</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultColsComment.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultColsComment.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultColsComment.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,69 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultColsComment: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultColsComment: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>backspace - displayText</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#backspace">QLineEdit::backspace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#clearModified">QLineEdit::clearModified</A></TD></TR>
+<TR ><TD><A HREF="toResultColsComment.html#commentChanged">toResultColsComment::commentChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#createPopupMenu">QLineEdit::createPopupMenu</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#cursorBackward">QLineEdit::cursorBackward</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#cursorForward">QLineEdit::cursorForward</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#cursorPosition">QLineEdit::cursorPosition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#cursorWordBackward">QLineEdit::cursorWordBackward</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#cursorWordForward">QLineEdit::cursorWordForward</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#cut">QLineEdit::cut</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#deselect">QLineEdit::deselect</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#displayText">QLineEdit::displayText</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>echoMode - paste</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#echoMode">QLineEdit::echoMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultColsComment.html#focusOutEvent">toResultColsComment::focusOutEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#hasAcceptableInput">QLineEdit::hasAcceptableInput</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#hasSelectedText">QLineEdit::hasSelectedText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#inputMask">QLineEdit::inputMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#isModified">QLineEdit::isModified</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#isRedoAvailable">QLineEdit::isRedoAvailable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#isUndoAvailable">QLineEdit::isUndoAvailable</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#keyPressEvent">QLineEdit::keyPressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#maxLength">QLineEdit::maxLength</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#minimumSizeHint">QLineEdit::minimumSizeHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#paste">QLineEdit::paste</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>redo - undo</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#redo">QLineEdit::redo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultColsComment.html#saveUnchanged">toResultColsComment::saveUnchanged</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#selectedText">QLineEdit::selectedText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#selectionStart">QLineEdit::selectionStart</A></TD></TR>
+<TR ><TD><A HREF="toResultColsComment.html#setCachedComment">toResultColsComment::setCachedComment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultColsComment.html#setComment">toResultColsComment::setComment</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#setCursorPosition">QLineEdit::setCursorPosition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#setEchoMode">QLineEdit::setEchoMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#setInputMask">QLineEdit::setInputMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#setMaxLength">QLineEdit::setMaxLength</A></TD></TR>
+<TR ><TD><A HREF="toResultColsComment.html#toResultColsComment">toResultColsComment::toResultColsComment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html#undo">QLineEdit::undo</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols__resultCols.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols__resultCols.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols__resultCols.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,124 @@
+<HTML>
+<HEAD>
+<TITLE>class resultCols: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class resultCols: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - editSelectAll</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#addMenues">toListView::addMenues</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#allColumnsShowFocus">QListView::allColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#collapsed">QListView::collapsed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnAlignment">QListView::columnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnText">QListView::columnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidth">QListView::columnWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidthMode">QListView::columnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseDoubleClickEvent">toListView::contentsMouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseMoveEvent">toListView::contentsMouseMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMousePressEvent">toListView::contentsMousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseReleaseEvent">toListView::contentsMouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#copyTransposed">toListView::copyTransposed</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#defaultRenameAction">QListView::defaultRenameAction</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols__resultCols.html#describe">toResultCols::resultCols::describe</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#displayMemo">toListView::displayMemo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#displayMenu">toListView::displayMenu</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#drawContentsOffset">QListView::drawContentsOffset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols__resultCols.html#editComment">toResultCols::resultCols::editComment</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editPrint">toListView::editPrint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editReadAll">toEditWidget::editReadAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#editSave">toListView::editSave</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editSelectAll">toListView::editSelectAll</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>editUndo - searchTop</TH></TR><TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#eventFilter">QListView::eventFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#expanded">QListView::expanded</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#exportData">toListView::exportData</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#exportType">toListView::exportType</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#focusInEvent">toListView::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#header">QListView::header</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#hideColumn">QListView::hideColumn</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#importData">toListView::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemMargin">QListView::itemMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemPos">QListView::itemPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#menuCallback">toListView::menuCallback</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#menuText">toListView::menuText</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#middleString">toListView::middleString</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#printPage">toListView::printPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols__resultCols.html#query">toResultCols::resultCols::query</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols__resultCols.html#resultCols">toResultCols::resultCols::resultCols</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#rootIsDecorated">QListView::rootIsDecorated</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchCanReplace">toListView::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchNext">toListView::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchTop">toListView::searchTop</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>selectAllEnabled - ~toListView</TH></TR><TR ><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setAllColumnsShowFocus">QListView::setAllColumnsShowFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnAlignment">QListView::setColumnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnText">QListView::setColumnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnWidthMode">QListView::setColumnWidthMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setDefaultRenameAction">QListView::setDefaultRenameAction</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#setDisplayMenu">toListView::setDisplayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setItemMargin">QListView::setItemMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setOpen">QListView::setOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setRootIsDecorated">QListView::setRootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#setSQLName">toListView::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSelectionAnchor">QListView::setSelectionAnchor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setShowSortIndicator">QListView::setShowSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortColumn">QListView::setSortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortOrder">QListView::setSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setTreeStepSize">QListView::setTreeStepSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#showSortIndicator">QListView::showSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#sortOrder">QListView::sortOrder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#spacePressed">QListView::spacePressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#sqlName">toListView::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#toListView">toListView::toListView</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#treeStepSize">QListView::treeStepSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#updateContents">QListView::updateContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#~toListView">toListView::~toListView</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols__resultColsEdit.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols__resultColsEdit.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCols__resultColsEdit.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,127 @@
+<HTML>
+<HEAD>
+<TITLE>class resultColsEdit: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class resultColsEdit: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addChild - dragAutoScroll</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#addChild">QScrollView::addChild</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#addItem">toResultItem::addItem</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#alignRight">toResultItem::alignRight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#bottomMargin">QScrollView::bottomMargin</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#canHandle">toResultItem::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#changeParams">toResultItem::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#childX">QScrollView::childX</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#childY">QScrollView::childY</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#clipper">QScrollView::clipper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsContextMenuEvent">QScrollView::contentsContextMenuEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragEnterEvent">QScrollView::contentsDragEnterEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragLeaveEvent">QScrollView::contentsDragLeaveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragMoveEvent">QScrollView::contentsDragMoveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDropEvent">QScrollView::contentsDropEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsHeight">QScrollView::contentsHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsMoving">QScrollView::contentsMoving</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsToViewport">QScrollView::contentsToViewport</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsWheelEvent">QScrollView::contentsWheelEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsWidth">QScrollView::contentsWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsX">QScrollView::contentsX</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsY">QScrollView::contentsY</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#cornerWidget">QScrollView::cornerWidget</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#createTitle">toResultItem::createTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols__resultColsEdit.html#createValue">toResultCols::resultColsEdit::createValue</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#dataFont">toResultItem::dataFont</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols__resultColsEdit.html#describe">toResultCols::resultColsEdit::describe</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#done">toResultItem::done</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#dragAutoScroll">QScrollView::dragAutoScroll</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>enableClipper - setSQL</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#enableClipper">QScrollView::enableClipper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#ensureVisible">QScrollView::ensureVisible</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#hScrollBarMode">QScrollView::hScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#hasStaticBackground">QScrollView::hasStaticBackground</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalScrollBar">QScrollView::horizontalScrollBar</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalSliderPressed">QScrollView::horizontalSliderPressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalSliderReleased">QScrollView::horizontalSliderReleased</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#isHorizontalSliderPressed">QScrollView::isHorizontalSliderPressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#isVerticalSliderPressed">QScrollView::isVerticalSliderPressed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#leftMargin">QScrollView::leftMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#moveChild">QScrollView::moveChild</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#poll">toResultItem::poll</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#query">toResultItem::query</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#refresh">toResultItem::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#repaintContents">QScrollView::repaintContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#resizeContents">QScrollView::resizeContents</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#resizeEvent">toResultItem::resizeEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#resizePolicy">QScrollView::resizePolicy</A></TD></TR>
+<TR ><TD><A HREF="toResultCols__resultColsEdit.html#resultColsEdit">toResultCols::resultColsEdit::resultColsEdit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#rightMargin">QScrollView::rightMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#scrollBy">QScrollView::scrollBy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setContentsPos">QScrollView::setContentsPos</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setCornerWidget">QScrollView::setCornerWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setDragAutoScroll">QScrollView::setDragAutoScroll</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setHBarGeometry">QScrollView::setHBarGeometry</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setHScrollBarMode">QScrollView::setHScrollBarMode</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setResizePolicy">QScrollView::setResizePolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#setSQL">toResultItem::setSQL</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setSQLName - ~toResultItem</TH></TR><TR ><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setStaticBackground">QScrollView::setStaticBackground</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#setTitle">toResultItem::setTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setVBarGeometry">QScrollView::setVBarGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setVScrollBarMode">QScrollView::setVScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols__resultColsEdit.html#setValue">toResultCols::resultColsEdit::setValue</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#setup">toResultItem::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#showTitle">toResultItem::showTitle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#start">toResultItem::start</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#toResultItem">toResultItem::toResultItem</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#topMargin">QScrollView::topMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#updateScrollBars">QScrollView::updateScrollBars</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#vScrollBarMode">QScrollView::vScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalScrollBar">QScrollView::verticalScrollBar</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalSliderPressed">QScrollView::verticalSliderPressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalSliderReleased">QScrollView::verticalSliderReleased</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportPaintEvent">QScrollView::viewportPaintEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportResizeEvent">QScrollView::viewportResizeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportSize">QScrollView::viewportSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportToContents">QScrollView::viewportToContents</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#visibleHeight">QScrollView::visibleHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#visibleWidth">QScrollView::visibleWidth</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#~toResultItem">toResultItem::~toResultItem</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCombo.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCombo.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultCombo.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,94 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultCombo: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultCombo: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>additionalItem - insertStrList</TH></TR><TR ><TD><A HREF="toResultCombo.html#additionalItem">toResultCombo::additionalItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#autoCompletion">QComboBox::autoCompletion</A></TD></TR>
+<TR ><TD><A HREF="toResultCombo.html#canHandle">toResultCombo::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#changeItem">QComboBox::changeItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCombo.html#changeParams">toResultCombo::changeParams</A></TD></TR>
+<TR ><TD><A HREF="toResultCombo.html#changeSelected">toResultCombo::changeSelected</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCombo.html#clearAdditional">toResultCombo::clearAdditional</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#clearEdit">QComboBox::clearEdit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#clearValidator">QComboBox::clearValidator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#currentItem">QComboBox::currentItem</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#currentText">QComboBox::currentText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCombo.html#done">toResultCombo::done</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#duplicatesEnabled">QComboBox::duplicatesEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#editable">QComboBox::editable</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#highlighted">QComboBox::highlighted</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#insertStrList">QComboBox::insertStrList</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>insertStringList - setListBox</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#insertStringList">QComboBox::insertStringList</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#insertionPolicy">QComboBox::insertionPolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#lineEdit">QComboBox::lineEdit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#listBox">QComboBox::listBox</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#maxCount">QComboBox::maxCount</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR ><TD><A HREF="toResultCombo.html#poll">toResultCombo::poll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#popup">QComboBox::popup</A></TD></TR>
+<TR ><TD><A HREF="toResultCombo.html#query">toResultCombo::query</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCombo.html#refresh">toResultCombo::refresh</A></TD></TR>
+<TR ><TD><A HREF="toResultCombo.html#selected">toResultCombo::selected</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setAutoCompletion">QComboBox::setAutoCompletion</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setCurrentItem">QComboBox::setCurrentItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setCurrentText">QComboBox::setCurrentText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setDuplicatesEnabled">QComboBox::setDuplicatesEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setEditText">QComboBox::setEditText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setEditable">QComboBox::setEditable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setInsertionPolicy">QComboBox::setInsertionPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setLineEdit">QComboBox::setLineEdit</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setListBox">QComboBox::setListBox</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setMaxCount - ~toResultCombo</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setMaxCount">QComboBox::setMaxCount</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR ><TD><A HREF="toResultCombo.html#setSQL">toResultCombo::setSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCombo.html#setSelected">toResultCombo::setSelected</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setSizeLimit">QComboBox::setSizeLimit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#setValidator">QComboBox::setValidator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#sizeLimit">QComboBox::sizeLimit</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#textChanged">QComboBox::textChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCombo.html#toResultCombo">toResultCombo::toResultCombo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html#validator">QComboBox::validator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultCombo.html#~toResultCombo">toResultCombo::~toResultCombo</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultConstraint.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultConstraint.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultConstraint.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,163 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultConstraint: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultConstraint: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addConstraint - expanded</TH></TR><TR ><TD><A HREF="toResultConstraint.html#addConstraint">toResultConstraint::addConstraint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#addItem">toResultView::addItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#addMenues">toResultView::addMenues</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#allColumnsShowFocus">QListView::allColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultConstraint.html#canHandle">toResultConstraint::canHandle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#changeParams">toResultView::changeParams</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#checkHeading">toResultView::checkHeading</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#collapsed">QListView::collapsed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnAlignment">QListView::columnAlignment</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnText">QListView::columnText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidth">QListView::columnWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidthMode">QListView::columnWidthMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultConstraint.html#constraintCols">toResultConstraint::constraintCols</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseDoubleClickEvent">toListView::contentsMouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseMoveEvent">toListView::contentsMouseMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMousePressEvent">toListView::contentsMousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseReleaseEvent">toListView::contentsMouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#copyTransposed">toListView::copyTransposed</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#createItem">toResultView::createItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#defaultRenameAction">QListView::defaultRenameAction</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#displayMemo">toListView::displayMemo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#displayMenu">toListView::displayMenu</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#drawContentsOffset">QListView::drawContentsOffset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#editPrint">toResultView::editPrint</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#editReadAll">toResultView::editReadAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editSave">toListView::editSave</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#editSelectAll">toListView::editSelectAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#eof">toResultView::eof</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#eventFilter">QListView::eventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#expanded">QListView::expanded</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>exportData - setDisplayMenu</TH></TR><TR ><TD><A HREF="toListView.html#exportData">toListView::exportData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#exportType">toListView::exportType</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#filter">toResultView::filter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#focusInEvent">toListView::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#header">QListView::header</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#headingClicked">toResultView::headingClicked</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#hideColumn">QListView::hideColumn</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#importData">toListView::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemMargin">QListView::itemMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemPos">QListView::itemPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#keyPressEvent">toResultView::keyPressEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#menuCallback">toResultView::menuCallback</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#menuText">toListView::menuText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#middleString">toResultView::middleString</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#numberColumn">toResultView::numberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultConstraint.html#poll">toResultConstraint::poll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#printPage">toListView::printPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultConstraint.html#query">toResultConstraint::query</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#queryColumns">toResultView::queryColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#readableColumn">toResultView::readableColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#refresh">toResultView::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#rootIsDecorated">QListView::rootIsDecorated</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchCanReplace">toListView::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchNext">toListView::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchTop">toListView::searchTop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setAllColumnsShowFocus">QListView::setAllColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnAlignment">QListView::setColumnAlignment</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnText">QListView::setColumnText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnWidthMode">QListView::setColumnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setDefaultRenameAction">QListView::setDefaultRenameAction</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#setDisplayMenu">toListView::setDisplayMenu</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setEdit - ~toResultView</TH></TR><TR ><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setFilter">toResultView::setFilter</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setItemMargin">QListView::setItemMargin</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setNumberColumn">toResultView::setNumberColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setOpen">QListView::setOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setReadAll">toResultView::setReadAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setReadableColumns">toResultView::setReadableColumns</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setRootIsDecorated">QListView::setRootIsDecorated</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSQL">toResultView::setSQL</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setSQLName">toResultView::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSelectionAnchor">QListView::setSelectionAnchor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setShowSortIndicator">QListView::setShowSortIndicator</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortColumn">QListView::setSortColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortOrder">QListView::setSortOrder</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setSorting">toResultView::setSorting</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setTreeStepSize">QListView::setTreeStepSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setup">toResultView::setup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#showSortIndicator">QListView::showSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#sortColumn">toResultView::sortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#sortOrder">QListView::sortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#spacePressed">QListView::spacePressed</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#sqlName">toResultView::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#toListView">toListView::toListView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultConstraint.html#toResultConstraint">toResultConstraint::toResultConstraint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#toResultView">toResultView::toResultView</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#treeStepSize">QListView::treeStepSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#updateContents">QListView::updateContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#~toListView">toListView::~toListView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultConstraint.html#~toResultConstraint">toResultConstraint::~toResultConstraint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#~toResultView">toResultView::~toResultView</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContent.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContent.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContent.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,66 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultContent: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultContent: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>canHandle - editSave</TH></TR><TR ><TD><A HREF="toResultContent.html#canHandle">toResultContent::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContent.html#changeFilter">toResultContent::changeFilter</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContent.html#changeParams">toResultContent::changeParams</A></TD></TR>
+<TR ><TD><A HREF="toResultContent.html#changesSaved">toResultContent::changesSaved</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContent.html#clearParams">toResultContent::clearParams</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR ><TD><A HREF="toResultContent.html#editPrint">toResultContent::editPrint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContent.html#editReadAll">toResultContent::editReadAll</A></TD></TR>
+<TR ><TD><A HREF="toResultContent.html#editSave">toResultContent::editSave</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>editor - setParams</TH></TR><TR ><TD><A HREF="toResultContent.html#editor">toResultContent::editor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContent.html#exportData">toResultContent::exportData</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContent.html#importData">toResultContent::importData</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContent.html#query">toResultContent::query</A></TD></TR>
+<TR ><TD><A HREF="toResultContent.html#refresh">toResultContent::refresh</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContent.html#removeFilter">toResultContent::removeFilter</A></TD></TR>
+<TR ><TD><A HREF="toResultContent.html#saveUnsaved">toResultContent::saveUnsaved</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setSQL - ~toResult</TH></TR><TR ><TD><A HREF="toResult.html#setSQL">toResult::setSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultContent.html#toResultContent">toResultContent::toResultContent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContent.html#useNoReturning">toResultContent::useNoReturning</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentEditor.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentEditor.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentEditor.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,187 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultContentEditor: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultContentEditor: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>activateNextCell - editRedo</TH></TR><TR ><TD><A HREF="toResultContentEditor.html#activateNextCell">toResultContentEditor::activateNextCell</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#addRecord">toResultContentEditor::addRecord</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#addSelection">QTable::addSelection</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#adjustRow">QTable::adjustRow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#allFilter">toResultContentEditor::allFilter</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#beginEdit">toResultContentEditor::beginEdit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#cancelEdit">toResultContentEditor::cancelEdit</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#cellWidget">QTable::cellWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#changeData">toResultContentEditor::changeData</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#changeFilter">toResultContentEditor::changeFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#changeParams">toResultContentEditor::changeParams</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#changePosition">toResultContentEditor::changePosition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#changeSort">toResultContentEditor::changeSort</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#changesSaved">toResultContentEditor::changesSaved</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#clearCell">QTable::clearCell</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#clearCellWidget">QTable::clearCellWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#clearParams">toResultContentEditor::clearParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#columnClicked">QTable::columnClicked</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#columnIndexChanged">QTable::columnIndexChanged</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#columnMovingEnabled">QTable::columnMovingEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#columnPos">QTable::columnPos</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#columnWidthChanged">QTable::columnWidthChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#connection">toResultContentEditor::connection</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#contentsMouseMoveEvent">toResultContentEditor::contentsMouseMoveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#contentsMousePressEvent">toResultContentEditor::contentsMousePressEvent</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#contentsMouseReleaseEvent">toResultContentEditor::contentsMouseReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#copySelection">toResultContentEditor::copySelection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#currEditCol">QTable::currEditCol</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#currEditRow">QTable::currEditRow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#currentColumn">QTable::currentColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#currentRow">QTable::currentRow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#currentSelection">QTable::currentSelection</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#deleteCurrent">toResultContentEditor::deleteCurrent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#displayMemo">toResultContentEditor::displayMemo</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#displayMenu">toResultContentEditor::displayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#dragEnterEvent">toResultContentEditor::dragEnterEvent</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#drawContents">toResultContentEditor::drawContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#dropEvent">toResultContentEditor::dropEvent</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#duplicateRecord">toResultContentEditor::duplicateRecord</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#editCell">QTable::editCell</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#editMode">QTable::editMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#editPrint">toResultContentEditor::editPrint</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#editReadAll">toResultContentEditor::editReadAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>editSave - saveEnabled</TH></TR><TR ><TD><A HREF="toResultContentEditor.html#editSave">toResultContentEditor::editSave</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#editSelectAll">toResultContentEditor::editSelectAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#endEdit">toResultContentEditor::endEdit</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#eventFilter">toResultContentEditor::eventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#exportData">toResultContentEditor::exportData</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#filterEnabled">toResultContentEditor::filterEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#focusInEvent">toResultContentEditor::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#focusStyle">QTable::focusStyle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#gotoFirstRecord">toResultContentEditor::gotoFirstRecord</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#gotoLastRecord">toResultContentEditor::gotoLastRecord</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#gotoNextRecord">toResultContentEditor::gotoNextRecord</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#gotoPreviousRecord">toResultContentEditor::gotoPreviousRecord</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#hideRow">QTable::hideRow</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#horizontalHeader">QTable::horizontalHeader</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#importData">toResultContentEditor::importData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#insertColumns">QTable::insertColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#insertRows">QTable::insertRows</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#isColumnHidden">QTable::isColumnHidden</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#isColumnReadOnly">QTable::isColumnReadOnly</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#isColumnSelected">QTable::isColumnSelected</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#isColumnStretchable">QTable::isColumnStretchable</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#isEditing">QTable::isEditing</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#isRowHidden">QTable::isRowHidden</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#isRowReadOnly">QTable::isRowReadOnly</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#isRowSelected">QTable::isRowSelected</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#isRowStretchable">QTable::isRowStretchable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#keyPressEvent">toResultContentEditor::keyPressEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#menuCallback">toResultContentEditor::menuCallback</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#numSelections">QTable::numSelections</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#paintCell">toResultContentEditor::paintCell</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#poll">toResultContentEditor::poll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#query">toResultContentEditor::query</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#removeColumns">QTable::removeColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#removeRow">QTable::removeRow</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#removeRows">QTable::removeRows</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#removeSelection">QTable::removeSelection</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#repaintSelections">QTable::repaintSelections</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#resizeData">QTable::resizeData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#rowHeight">QTable::rowHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#rowHeightChanged">QTable::rowHeightChanged</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#rowIndexChanged">QTable::rowIndexChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#rowMovingEnabled">QTable::rowMovingEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#rowPos">QTable::rowPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>saveRow - ~toResultContentEditor</TH></TR><TR ><TD><A HREF="toResultContentEditor.html#saveRow">toResultContentEditor::saveRow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#saveUnsaved">toResultContentEditor::saveUnsaved</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#searchCanReplace">toResultContentEditor::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#searchNext">toResultContentEditor::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#searchReplace">toResultContentEditor::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#searchTop">toResultContentEditor::searchTop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#selectCells">QTable::selectCells</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#selectColumn">QTable::selectColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#selectRow">QTable::selectRow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setCellContentFromEditor">QTable::setCellContentFromEditor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setCellWidget">QTable::setCellWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setColumnLabels">QTable::setColumnLabels</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setColumnMovingEnabled">QTable::setColumnMovingEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setColumnReadOnly">QTable::setColumnReadOnly</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setColumnStretchable">QTable::setColumnStretchable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setCurrentCell">QTable::setCurrentCell</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#setCurrentCellFocus">toResultContentEditor::setCurrentCellFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setEditMode">QTable::setEditMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setFocusStyle">QTable::setFocusStyle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setItem">QTable::setItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setLeftMargin">QTable::setLeftMargin</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setRowHeight">QTable::setRowHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setRowLabels">QTable::setRowLabels</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setRowMovingEnabled">QTable::setRowMovingEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setRowReadOnly">QTable::setRowReadOnly</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setRowStretchable">QTable::setRowStretchable</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setShowGrid">QTable::setShowGrid</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#setText">toResultContentEditor::setText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#setTopMargin">QTable::setTopMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#showColumn">QTable::showColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#showGrid">QTable::showGrid</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#showRow">QTable::showRow</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#singleRecordForm">toResultContentEditor::singleRecordForm</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#swapCells">QTable::swapCells</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#swapColumns">QTable::swapColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#swapRows">QTable::swapRows</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#table">toResultContentEditor::table</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor.html#toResultContentEditor">toResultContentEditor::toResultContentEditor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#updateHeaderStates">QTable::updateHeaderStates</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#useNoReturning">toResultContentEditor::useNoReturning</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html#verticalHeader">QTable::verticalHeader</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#wrongUsage">toResultContentEditor::wrongUsage</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html#~toResultContentEditor">toResultContentEditor::~toResultContentEditor</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentEditor__contentItem.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentEditor__contentItem.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentEditor__contentItem.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,48 @@
+<HTML>
+<HEAD>
+<TITLE>class contentItem: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class contentItem: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>col - isReplaceable</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#col">QTableItem::col</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#colSpan">QTableItem::colSpan</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor__contentItem.html#contentItem">toResultContentEditor::contentItem::contentItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#editType">QTableItem::editType</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#isReplaceable">QTableItem::isReplaceable</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>key - setReplaceable</TH></TR><TR ><TD><A HREF="toResultContentEditor__contentItem.html#key">toResultContentEditor::contentItem::key</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#rowSpan">QTableItem::rowSpan</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#setCol">QTableItem::setCol</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#setContentFromEditor">QTableItem::setContentFromEditor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#setReplaceable">QTableItem::setReplaceable</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setRow - wordWrap</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#setRow">QTableItem::setRow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#setSpan">QTableItem::setSpan</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#setWordWrap">QTableItem::setWordWrap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#table">QTableItem::table</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html#wordWrap">QTableItem::wordWrap</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentMemo.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentMemo.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentMemo.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultContentMemo: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultContentMemo: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>changeCurrent - label</TH></TR><TR ><TD><A HREF="toMemoEditor.html#changeCurrent">toMemoEditor::changeCurrent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#changeData">toMemoEditor::changeData</A></TD></TR>
+<TR ><TD><A HREF="toResultContentMemo.html#changePosition">toResultContentMemo::changePosition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#column">toMemoEditor::column</A></TD></TR>
+<TR ><TD><A HREF="toResultContentMemo.html#contentEditor">toResultContentMemo::contentEditor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#done">QDialog::done</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#editor">toMemoEditor::editor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#extension">QDialog::extension</A></TD></TR>
+<TR ><TD><A HREF="toResultContentMemo.html#firstColumn">toResultContentMemo::firstColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#isModal">QDialog::isModal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#isSizeGripEnabled">QDialog::isSizeGripEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#label">toMemoEditor::label</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>lastColumn - setExtension</TH></TR><TR ><TD><A HREF="toResultContentMemo.html#lastColumn">toResultContentMemo::lastColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#listView">toMemoEditor::listView</A></TD></TR>
+<TR ><TD><A HREF="toResultContentMemo.html#nextColumn">toResultContentMemo::nextColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#null">toMemoEditor::null</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#openFile">toMemoEditor::openFile</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#orientation">QDialog::orientation</A></TD></TR>
+<TR ><TD><A HREF="toResultContentMemo.html#previousColumn">toResultContentMemo::previousColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#reject">QDialog::reject</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#result">QDialog::result</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#row">toMemoEditor::row</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#saveFile">toMemoEditor::saveFile</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setExtension">QDialog::setExtension</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setModal - toolbar</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setModal">QDialog::setModal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setOrientation">QDialog::setOrientation</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setResult">QDialog::setResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#setSizeGripEnabled">QDialog::setSizeGripEnabled</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#setText">toMemoEditor::setText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html#showExtension">QDialog::showExtension</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#store">toMemoEditor::store</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMemoEditor.html#text">toMemoEditor::text</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#toMemoEditor">toMemoEditor::toMemoEditor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentMemo.html#toResultContentMemo">toResultContentMemo::toResultContentMemo</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html#toolbar">toMemoEditor::toolbar</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentSingle.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentSingle.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultContentSingle.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,94 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultContentSingle: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultContentSingle: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addChild - dragAutoScroll</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#addChild">QScrollView::addChild</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#bottomMargin">QScrollView::bottomMargin</A></TD></TR>
+<TR ><TD><A HREF="toResultContentSingle.html#changeRow">toResultContentSingle::changeRow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentSingle.html#changeSource">toResultContentSingle::changeSource</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#childX">QScrollView::childX</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#childY">QScrollView::childY</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#clipper">QScrollView::clipper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsContextMenuEvent">QScrollView::contentsContextMenuEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragEnterEvent">QScrollView::contentsDragEnterEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragLeaveEvent">QScrollView::contentsDragLeaveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragMoveEvent">QScrollView::contentsDragMoveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDropEvent">QScrollView::contentsDropEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsHeight">QScrollView::contentsHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsMoving">QScrollView::contentsMoving</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsToViewport">QScrollView::contentsToViewport</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsWheelEvent">QScrollView::contentsWheelEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsWidth">QScrollView::contentsWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsX">QScrollView::contentsX</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsY">QScrollView::contentsY</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#cornerWidget">QScrollView::cornerWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#dragAutoScroll">QScrollView::dragAutoScroll</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>enableClipper - setHBarGeometry</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#enableClipper">QScrollView::enableClipper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#ensureVisible">QScrollView::ensureVisible</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#hScrollBarMode">QScrollView::hScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#hasStaticBackground">QScrollView::hasStaticBackground</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalScrollBar">QScrollView::horizontalScrollBar</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalSliderPressed">QScrollView::horizontalSliderPressed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalSliderReleased">QScrollView::horizontalSliderReleased</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#isHorizontalSliderPressed">QScrollView::isHorizontalSliderPressed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#isVerticalSliderPressed">QScrollView::isVerticalSliderPressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#leftMargin">QScrollView::leftMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#moveChild">QScrollView::moveChild</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#repaintContents">QScrollView::repaintContents</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#resizeContents">QScrollView::resizeContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#resizePolicy">QScrollView::resizePolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#rightMargin">QScrollView::rightMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentSingle.html#saveRow">toResultContentSingle::saveRow</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#scrollBy">QScrollView::scrollBy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setContentsPos">QScrollView::setContentsPos</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setCornerWidget">QScrollView::setCornerWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setDragAutoScroll">QScrollView::setDragAutoScroll</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setHBarGeometry">QScrollView::setHBarGeometry</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setHScrollBarMode - visibleWidth</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setHScrollBarMode">QScrollView::setHScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setResizePolicy">QScrollView::setResizePolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setStaticBackground">QScrollView::setStaticBackground</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setVBarGeometry">QScrollView::setVBarGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setVScrollBarMode">QScrollView::setVScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentSingle.html#showMemo">toResultContentSingle::showMemo</A></TD></TR>
+<TR ><TD><A HREF="toResultContentSingle.html#toResultContentSingle">toResultContentSingle::toResultContentSingle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#topMargin">QScrollView::topMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#updateScrollBars">QScrollView::updateScrollBars</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#vScrollBarMode">QScrollView::vScrollBarMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalScrollBar">QScrollView::verticalScrollBar</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalSliderPressed">QScrollView::verticalSliderPressed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalSliderReleased">QScrollView::verticalSliderReleased</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportPaintEvent">QScrollView::viewportPaintEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportResizeEvent">QScrollView::viewportResizeEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportSize">QScrollView::viewportSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportToContents">QScrollView::viewportToContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#visibleHeight">QScrollView::visibleHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#visibleWidth">QScrollView::visibleWidth</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultDepend.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultDepend.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultDepend.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,162 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultDepend: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultDepend: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - expanded</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#addItem">toResultView::addItem</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#addMenues">toResultView::addMenues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#allColumnsShowFocus">QListView::allColumnsShowFocus</A></TD></TR>
+<TR ><TD><A HREF="toResultDepend.html#canHandle">toResultDepend::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#changeParams">toResultView::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#checkHeading">toResultView::checkHeading</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#collapsed">QListView::collapsed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnAlignment">QListView::columnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnText">QListView::columnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidth">QListView::columnWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidthMode">QListView::columnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseDoubleClickEvent">toListView::contentsMouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseMoveEvent">toListView::contentsMouseMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMousePressEvent">toListView::contentsMousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseReleaseEvent">toListView::contentsMouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#copyTransposed">toListView::copyTransposed</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#createItem">toResultView::createItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#defaultRenameAction">QListView::defaultRenameAction</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#displayMemo">toListView::displayMemo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#displayMenu">toListView::displayMenu</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#drawContentsOffset">QListView::drawContentsOffset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#editPrint">toResultView::editPrint</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#editReadAll">toResultView::editReadAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editSave">toListView::editSave</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#editSelectAll">toListView::editSelectAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#eof">toResultView::eof</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#eventFilter">QListView::eventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultDepend.html#exists">toResultDepend::exists</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#expanded">QListView::expanded</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>exportData - setDefaultRenameAction</TH></TR><TR ><TD><A HREF="toListView.html#exportData">toListView::exportData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#exportType">toListView::exportType</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#filter">toResultView::filter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#focusInEvent">toListView::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#header">QListView::header</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#headingClicked">toResultView::headingClicked</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#hideColumn">QListView::hideColumn</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#importData">toListView::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemMargin">QListView::itemMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemPos">QListView::itemPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#keyPressEvent">toResultView::keyPressEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#menuCallback">toResultView::menuCallback</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#menuText">toListView::menuText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#middleString">toResultView::middleString</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#numberColumn">toResultView::numberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultDepend.html#poll">toResultDepend::poll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#printPage">toListView::printPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultDepend.html#query">toResultDepend::query</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#queryColumns">toResultView::queryColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#readableColumn">toResultView::readableColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#refresh">toResultView::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#rootIsDecorated">QListView::rootIsDecorated</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchCanReplace">toListView::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchNext">toListView::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchTop">toListView::searchTop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setAllColumnsShowFocus">QListView::setAllColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnAlignment">QListView::setColumnAlignment</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnText">QListView::setColumnText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnWidthMode">QListView::setColumnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setDefaultRenameAction">QListView::setDefaultRenameAction</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setDisplayMenu - ~toResultView</TH></TR><TR ><TD><A HREF="toListView.html#setDisplayMenu">toListView::setDisplayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setFilter">toResultView::setFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setItemMargin">QListView::setItemMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setNumberColumn">toResultView::setNumberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setOpen">QListView::setOpen</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setReadAll">toResultView::setReadAll</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setReadableColumns">toResultView::setReadableColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setRootIsDecorated">QListView::setRootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setSQL">toResultView::setSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSQLName">toResultView::setSQLName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSelectionAnchor">QListView::setSelectionAnchor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setShowSortIndicator">QListView::setShowSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortColumn">QListView::setSortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortOrder">QListView::setSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSorting">toResultView::setSorting</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setTreeStepSize">QListView::setTreeStepSize</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setup">toResultView::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#showSortIndicator">QListView::showSortIndicator</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#sortColumn">toResultView::sortColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#sortOrder">QListView::sortOrder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#spacePressed">QListView::spacePressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#sqlName">toResultView::sqlName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#toListView">toListView::toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultDepend.html#toResultDepend">toResultDepend::toResultDepend</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#toResultView">toResultView::toResultView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#treeStepSize">QListView::treeStepSize</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#updateContents">QListView::updateContents</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#~toListView">toListView::~toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultDepend.html#~toResultDepend">toResultDepend::~toResultDepend</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#~toResultView">toResultView::~toResultView</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultField.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultField.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultField.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,160 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultField: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultField: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - importData</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#analyzer">toHighlightedText::analyzer</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#atBeginning">QMultiLineEdit::atBeginning</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultField.html#canHandle">toResultField::canHandle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultField.html#changeParams">toResultField::changeParams</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#checkComplete">toHighlightedText::checkComplete</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#clear">toHighlightedText::clear</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#convertLine">toHighlightedText::convertLine</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#current">toHighlightedText::current</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorDown">QMultiLineEdit::cursorDown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorLeft">QMultiLineEdit::cursorLeft</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorPoint">QMultiLineEdit::cursorPoint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorRight">QMultiLineEdit::cursorRight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#cursorUp">QMultiLineEdit::cursorUp</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#dropEvent">toMarkedText::dropEvent</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editCopy">toMarkedText::editCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editCut">toMarkedText::editCut</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editOpen">toMarkedText::editOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editPaste">toMarkedText::editPaste</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editPrint">toMarkedText::editPrint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editReadAll">toEditWidget::editReadAll</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editRedo">toMarkedText::editRedo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editSave">toMarkedText::editSave</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#editSelectAll">toMarkedText::editSelectAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#editUndo">toMarkedText::editUndo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#edited">QMultiLineEdit::edited</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#exportData">toMarkedText::exportData</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#filename">toMarkedText::filename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#findPosition">toMarkedText::findPosition</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#focusInEvent">toMarkedText::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#focusOutEvent">toHighlightedText::focusOutEvent</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#getMarkedRegion">toMarkedText::getMarkedRegion</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#hasErrors">toHighlightedText::hasErrors</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#hasMarkedText">toMarkedText::hasMarkedText</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#importData">toMarkedText::importData</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>incrementalSearch - selectAllEnabled</TH></TR><TR ><TD><A HREF="toMarkedText.html#incrementalSearch">toMarkedText::incrementalSearch</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#insert">toMarkedText::insert</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertAndMark">QMultiLineEdit::insertAndMark</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertAt">QMultiLineEdit::insertAt</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#insertLine">QMultiLineEdit::insertLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#insertedLines">toHighlightedText::insertedLines</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#invalidToken">toHighlightedText::invalidToken</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#keyPressEvent">toHighlightedText::keyPressEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#killLine">QMultiLineEdit::killLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#lineIn">toHighlightedText::lineIn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#lineLength">QMultiLineEdit::lineLength</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#markedText">toMarkedText::markedText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#mousePressEvent">toMarkedText::mousePressEvent</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#newLine">toMarkedText::newLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#nextError">toHighlightedText::nextError</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#numLines">QMultiLineEdit::numLines</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#openFilename">toMarkedText::openFilename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#pageDown">QMultiLineEdit::pageDown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#pageUp">QMultiLineEdit::pageUp</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#paintCell">toHighlightedText::paintCell</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#paintEvent">toHighlightedText::paintEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultField.html#poll">toResultField::poll</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#previousError">toHighlightedText::previousError</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#printPage">toMarkedText::printPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultField.html#query">toResultField::query</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultField.html#refresh">toResultField::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#removeLine">QMultiLineEdit::removeLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#searchCanReplace">toMarkedText::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#searchFound">toMarkedText::searchFound</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#searchNext">toMarkedText::searchNext</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#searchReplace">toMarkedText::searchReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#searchTop">toMarkedText::searchTop</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>selectComplete - ~toResultField</TH></TR><TR ><TD><A HREF="toHighlightedText.html#selectComplete">toHighlightedText::selectComplete</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#setAnalyzer">toHighlightedText::setAnalyzer</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#setCopyAvailable">toMarkedText::setCopyAvailable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#setCurrent">toHighlightedText::setCurrent</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#setEdit">toMarkedText::setEdit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#setEdited">QMultiLineEdit::setEdited</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#setErrors">toHighlightedText::setErrors</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#setFilename">toMarkedText::setFilename</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#setHighlight">toHighlightedText::setHighlight</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#setKeywordUpper">toHighlightedText::setKeywordUpper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#setLeftIgnore">toHighlightedText::setLeftIgnore</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#setRedoAvailable">toMarkedText::setRedoAvailable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultField.html#setSQL">toResultField::setSQL</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#setStatusMessage">toHighlightedText::setStatusMessage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#setText">toHighlightedText::setText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#setUndoAvailable">toMarkedText::setUndoAvailable</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#startComplete">toHighlightedText::startComplete</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#tableAtCursor">toHighlightedText::tableAtCursor</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#textChanged">toHighlightedText::textChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#textLine">QMultiLineEdit::textLine</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html#timerEvent">toMarkedText::timerEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHighlightedText.html#toHighlightedText">toHighlightedText::toHighlightedText</A></TD></TR>
+<TR ><TD><A HREF="toMarkedText.html#toMarkedText">toMarkedText::toMarkedText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMultiLineEdit.html#toMultiLineEdit">toMultiLineEdit::toMultiLineEdit</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultField.html#toResultField">toResultField::toResultField</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html#~toHighlightedText">toHighlightedText::~toHighlightedText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultField.html#~toResultField">toResultField::~toResultField</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultFilter.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultFilter.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultFilter.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,40 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultFilter: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultFilter: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>check - exportData</TH></TR><TR ><TD><A HREF="toResultFilter.html#check">toResultFilter::check</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultFilter.html#clone">toResultFilter::clone</A></TD></TR>
+<TR ><TD><A HREF="toResultFilter.html#exportData">toResultFilter::exportData</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>importData - ~toResultFilter</TH></TR><TR ><TD><A HREF="toResultFilter.html#importData">toResultFilter::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultFilter.html#startingQuery">toResultFilter::startingQuery</A></TD></TR>
+<TR ><TD><A HREF="toResultFilter.html#toResultFilter">toResultFilter::toResultFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultFilter.html#~toResultFilter">toResultFilter::~toResultFilter</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultIndexes.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultIndexes.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultIndexes.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,162 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultIndexes: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultIndexes: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - exportData</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#addItem">toResultView::addItem</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#addMenues">toResultView::addMenues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#allColumnsShowFocus">QListView::allColumnsShowFocus</A></TD></TR>
+<TR ><TD><A HREF="toResultIndexes.html#canHandle">toResultIndexes::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#changeParams">toResultView::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#checkHeading">toResultView::checkHeading</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#collapsed">QListView::collapsed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnAlignment">QListView::columnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnText">QListView::columnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidth">QListView::columnWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidthMode">QListView::columnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseDoubleClickEvent">toListView::contentsMouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseMoveEvent">toListView::contentsMouseMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMousePressEvent">toListView::contentsMousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseReleaseEvent">toListView::contentsMouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#copyTransposed">toListView::copyTransposed</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#createItem">toResultView::createItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#defaultRenameAction">QListView::defaultRenameAction</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#displayMemo">toListView::displayMemo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#displayMenu">toListView::displayMenu</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#drawContentsOffset">QListView::drawContentsOffset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#editPrint">toResultView::editPrint</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#editReadAll">toResultView::editReadAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editSave">toListView::editSave</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#editSelectAll">toListView::editSelectAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#eof">toResultView::eof</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#eventFilter">QListView::eventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#expanded">QListView::expanded</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#exportData">toListView::exportData</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>exportType - setDefaultRenameAction</TH></TR><TR ><TD><A HREF="toListView.html#exportType">toListView::exportType</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#filter">toResultView::filter</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#focusInEvent">toListView::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#header">QListView::header</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#headingClicked">toResultView::headingClicked</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#hideColumn">QListView::hideColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#importData">toListView::importData</A></TD></TR>
+<TR ><TD><A HREF="toResultIndexes.html#indexCols">toResultIndexes::indexCols</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemMargin">QListView::itemMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemPos">QListView::itemPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#keyPressEvent">toResultView::keyPressEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#menuCallback">toResultView::menuCallback</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#menuText">toListView::menuText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#middleString">toResultView::middleString</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#numberColumn">toResultView::numberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultIndexes.html#poll">toResultIndexes::poll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#printPage">toListView::printPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultIndexes.html#query">toResultIndexes::query</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#queryColumns">toResultView::queryColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#readableColumn">toResultView::readableColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#refresh">toResultView::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#rootIsDecorated">QListView::rootIsDecorated</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchCanReplace">toListView::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchNext">toListView::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchTop">toListView::searchTop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setAllColumnsShowFocus">QListView::setAllColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnAlignment">QListView::setColumnAlignment</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnText">QListView::setColumnText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnWidthMode">QListView::setColumnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setDefaultRenameAction">QListView::setDefaultRenameAction</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setDisplayMenu - ~toResultView</TH></TR><TR ><TD><A HREF="toListView.html#setDisplayMenu">toListView::setDisplayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setFilter">toResultView::setFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setItemMargin">QListView::setItemMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setNumberColumn">toResultView::setNumberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setOpen">QListView::setOpen</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setReadAll">toResultView::setReadAll</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setReadableColumns">toResultView::setReadableColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setRootIsDecorated">QListView::setRootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setSQL">toResultView::setSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSQLName">toResultView::setSQLName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSelectionAnchor">QListView::setSelectionAnchor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setShowSortIndicator">QListView::setShowSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortColumn">QListView::setSortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortOrder">QListView::setSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSorting">toResultView::setSorting</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setTreeStepSize">QListView::setTreeStepSize</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setup">toResultView::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#showSortIndicator">QListView::showSortIndicator</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#sortColumn">toResultView::sortColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#sortOrder">QListView::sortOrder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#spacePressed">QListView::spacePressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#sqlName">toResultView::sqlName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#toListView">toListView::toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultIndexes.html#toResultIndexes">toResultIndexes::toResultIndexes</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#toResultView">toResultView::toResultView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#treeStepSize">QListView::treeStepSize</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#updateContents">QListView::updateContents</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#~toListView">toListView::~toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultIndexes.html#~toResultIndexes">toResultIndexes::~toResultIndexes</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#~toResultView">toResultView::~toResultView</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultItem.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultItem.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultItem.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,125 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultItem: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultItem: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addChild - dragAutoScroll</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#addChild">QScrollView::addChild</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#addItem">toResultItem::addItem</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#alignRight">toResultItem::alignRight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#bottomMargin">QScrollView::bottomMargin</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#canHandle">toResultItem::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#changeParams">toResultItem::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#childX">QScrollView::childX</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#childY">QScrollView::childY</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#clipper">QScrollView::clipper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsContextMenuEvent">QScrollView::contentsContextMenuEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragEnterEvent">QScrollView::contentsDragEnterEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragLeaveEvent">QScrollView::contentsDragLeaveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragMoveEvent">QScrollView::contentsDragMoveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDropEvent">QScrollView::contentsDropEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsHeight">QScrollView::contentsHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsMoving">QScrollView::contentsMoving</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsToViewport">QScrollView::contentsToViewport</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsWheelEvent">QScrollView::contentsWheelEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsWidth">QScrollView::contentsWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsX">QScrollView::contentsX</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsY">QScrollView::contentsY</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#cornerWidget">QScrollView::cornerWidget</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#createTitle">toResultItem::createTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#createValue">toResultItem::createValue</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#dataFont">toResultItem::dataFont</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#done">toResultItem::done</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#dragAutoScroll">QScrollView::dragAutoScroll</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>enableClipper - setSQL</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#enableClipper">QScrollView::enableClipper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#ensureVisible">QScrollView::ensureVisible</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#hScrollBarMode">QScrollView::hScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#hasStaticBackground">QScrollView::hasStaticBackground</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalScrollBar">QScrollView::horizontalScrollBar</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalSliderPressed">QScrollView::horizontalSliderPressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalSliderReleased">QScrollView::horizontalSliderReleased</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#isHorizontalSliderPressed">QScrollView::isHorizontalSliderPressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#isVerticalSliderPressed">QScrollView::isVerticalSliderPressed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#leftMargin">QScrollView::leftMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#moveChild">QScrollView::moveChild</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#poll">toResultItem::poll</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#query">toResultItem::query</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#refresh">toResultItem::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#repaintContents">QScrollView::repaintContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#resizeContents">QScrollView::resizeContents</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#resizeEvent">toResultItem::resizeEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#resizePolicy">QScrollView::resizePolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#rightMargin">QScrollView::rightMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#scrollBy">QScrollView::scrollBy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setContentsPos">QScrollView::setContentsPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setCornerWidget">QScrollView::setCornerWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setDragAutoScroll">QScrollView::setDragAutoScroll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setHBarGeometry">QScrollView::setHBarGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setHScrollBarMode">QScrollView::setHScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setResizePolicy">QScrollView::setResizePolicy</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#setSQL">toResultItem::setSQL</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setSQLName - ~toResultItem</TH></TR><TR ><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setStaticBackground">QScrollView::setStaticBackground</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#setTitle">toResultItem::setTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setVBarGeometry">QScrollView::setVBarGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setVScrollBarMode">QScrollView::setVScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#setValue">toResultItem::setValue</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#setup">toResultItem::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#showTitle">toResultItem::showTitle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#start">toResultItem::start</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#toResultItem">toResultItem::toResultItem</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#topMargin">QScrollView::topMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#updateScrollBars">QScrollView::updateScrollBars</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#vScrollBarMode">QScrollView::vScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalScrollBar">QScrollView::verticalScrollBar</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalSliderPressed">QScrollView::verticalSliderPressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalSliderReleased">QScrollView::verticalSliderReleased</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportPaintEvent">QScrollView::viewportPaintEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportResizeEvent">QScrollView::viewportResizeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportSize">QScrollView::viewportSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportToContents">QScrollView::viewportToContents</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#visibleHeight">QScrollView::visibleHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#visibleWidth">QScrollView::visibleWidth</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#~toResultItem">toResultItem::~toResultItem</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLabel.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLabel.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLabel.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,69 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultLabel: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultLabel: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>buddy - params</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html#buddy">QLabel::buddy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLabel.html#canHandle">toResultLabel::canHandle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLabel.html#changeParams">toResultLabel::changeParams</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html#hasScaledContents">QLabel::hasScaledContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html#indent">QLabel::indent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html#movie">QLabel::movie</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>poll - setSQLParams</TH></TR><TR ><TD><A HREF="toResultLabel.html#poll">toResultLabel::poll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLabel.html#query">toResultLabel::query</A></TD></TR>
+<TR ><TD><A HREF="toResultLabel.html#refresh">toResultLabel::refresh</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLabel.html#separator">toResultLabel::separator</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html#setBuddy">QLabel::setBuddy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html#setIndent">QLabel::setIndent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html#setMovie">QLabel::setMovie</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLabel.html#setSQL">toResultLabel::setSQL</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setScaledContents - ~toResultLabel</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html#setScaledContents">QLabel::setScaledContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLabel.html#setSeparator">toResultLabel::setSeparator</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html#setTextFormat">QLabel::setTextFormat</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html#textFormat">QLabel::textFormat</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLabel.html#toResultLabel">toResultLabel::toResultLabel</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLabel.html#~toResultLabel">toResultLabel::~toResultLabel</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLine.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLine.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLine.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,261 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultLine: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultLine: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>acceptDrops - isMaximized</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#acceptDrops">QWidget::acceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLine.html#addMenues">toResultLine::addMenues</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#addValues">toLineChart::addValues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#autoMask">QWidget::autoMask</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#axisLegend">toLineChart::axisLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundBrush">QWidget::backgroundBrush</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundOrigin">QWidget::backgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#baseSize">QWidget::baseSize</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#canHandle">toResultLine::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#changeParams">toResultLine::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#chartSetup">toLineChart::chartSetup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childAt">QWidget::childAt</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRect">QWidget::childrenRect</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRegion">QWidget::childrenRegion</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLine.html#clear">toResultLine::clear</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearFocus">QWidget::clearFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearMask">QWidget::clearMask</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearWFlags">QWidget::clearWFlags</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#clearZoom">toLineChart::clearZoom</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#closeEvent">QWidget::closeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#colorGroup">QWidget::colorGroup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#connectionChanged">toResultLine::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#constPolish">QWidget::constPolish</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#contextMenuEvent">QWidget::contextMenuEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#countSamples">toLineChart::countSamples</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#cursor">QWidget::cursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#customWhatsThis">QWidget::customWhatsThis</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#destroy">QWidget::destroy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragEnterEvent">QWidget::dragEnterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragLeaveEvent">QWidget::dragLeaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragMoveEvent">QWidget::dragMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dropEvent">QWidget::dropEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#editPrint">toLineChart::editPrint</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#editSQL">toResultLine::editSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enabledChange">QWidget::enabledChange</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#enabledCharts">toLineChart::enabledCharts</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enterEvent">QWidget::enterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#eraseColor">QWidget::eraseColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#erasePixmap">QWidget::erasePixmap</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#exportData">toLineChart::exportData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#fixRect">toLineChart::fixRect</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#flow">toResultLine::flow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusData">QWidget::focusData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusInEvent">QWidget::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusOutEvent">QWidget::focusOutEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusPolicy">QWidget::focusPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusProxy">QWidget::focusProxy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#fontChange">QWidget::fontChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#foregroundColor">QWidget::foregroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameGeometry">QWidget::frameGeometry</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameSize">QWidget::frameSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#getWFlags">QWidget::getWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabKeyboard">QWidget::grabKeyboard</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabMouse">QWidget::grabMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#grid">toLineChart::grid</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasFocus">QWidget::hasFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouse">QWidget::hasMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouseTracking">QWidget::hasMouseTracking</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#horizontalChange">toLineChart::horizontalChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#iconText">QWidget::iconText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imComposeEvent">QWidget::imComposeEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imEndEvent">QWidget::imEndEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imStartEvent">QWidget::imStartEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#importData">toLineChart::importData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isActiveWindow">QWidget::isActiveWindow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDesktop">QWidget::isDesktop</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDialog">QWidget::isDialog</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isEnabledTo">QWidget::isEnabledTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFocusEnabled">QWidget::isFocusEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFullScreen">QWidget::isFullScreen</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isInputMethodEnabled">QWidget::isInputMethodEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMaximized">QWidget::isMaximized</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isMinimized - setKeyCompression</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMinimized">QWidget::isMinimized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isPopup">QWidget::isPopup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isShown">QWidget::isShown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isUpdatesEnabled">QWidget::isUpdatesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isVisibleTo">QWidget::isVisibleTo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyReleaseEvent">QWidget::keyReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyboardGrabber">QWidget::keyboardGrabber</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#labels">toLineChart::labels</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#last">toLineChart::last</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#leaveEvent">QWidget::leaveEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#legend">toLineChart::legend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#macEvent">QWidget::macEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFrom">QWidget::mapFrom</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromGlobal">QWidget::mapFromGlobal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromParent">QWidget::mapFromParent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapTo">QWidget::mapTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToGlobal">QWidget::mapToGlobal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToParent">QWidget::mapToParent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#maxValue">toLineChart::maxValue</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumHeight">QWidget::maximumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumWidth">QWidget::maximumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#microFocusHint">QWidget::microFocusHint</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#minValue">toLineChart::minValue</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumHeight">QWidget::minimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumWidth">QWidget::minimumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#mouseDoubleClickEvent">toLineChart::mouseDoubleClickEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseGrabber">QWidget::mouseGrabber</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#mouseMoveEvent">toLineChart::mouseMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#mousePressEvent">toLineChart::mousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#mouseReleaseEvent">toLineChart::mouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#moveEvent">QWidget::moveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#openCopy">toLineChart::openCopy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownCursor">QWidget::ownCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownFont">QWidget::ownFont</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownPalette">QWidget::ownPalette</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#paintAxis">toLineChart::paintAxis</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#paintChart">toLineChart::paintChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#paintEvent">toLineChart::paintEvent</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#paintLegend">toLineChart::paintLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#paintTitle">toLineChart::paintTitle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundColor">QWidget::paletteBackgroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundPixmap">QWidget::paletteBackgroundPixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteChange">QWidget::paletteChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteForegroundColor">QWidget::paletteForegroundColor</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLine.html#poll">toResultLine::poll</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#query">toResultLine::query</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#qwsEvent">QWidget::qwsEvent</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#refresh">toResultLine::refresh</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseKeyboard">QWidget::releaseKeyboard</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseMouse">QWidget::releaseMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#reparent">QWidget::reparent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#resetInputContext">QWidget::resetInputContext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#round">toLineChart::round</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#samples">toLineChart::samples</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#scroll">QWidget::scroll</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAcceptDrops">QWidget::setAcceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAutoMask">QWidget::setAutoMask</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBackgroundOrigin">QWidget::setBackgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBaseSize">QWidget::setBaseSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCaption">QWidget::setCaption</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCursor">QWidget::setCursor</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setEnabledCharts">toLineChart::setEnabledCharts</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setEraseColor">QWidget::setEraseColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setErasePixmap">QWidget::setErasePixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedHeight">QWidget::setFixedHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedSize">QWidget::setFixedSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedWidth">QWidget::setFixedWidth</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#setFlow">toResultLine::setFlow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusPolicy">QWidget::setFocusPolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusProxy">QWidget::setFocusProxy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setHidden">QWidget::setHidden</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setIconText">QWidget::setIconText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setInputMethodEnabled">QWidget::setInputMethodEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setKeyCompression">QWidget::setKeyCompression</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setLabels - ~toResultLine</TH></TR><TR ><TD><A HREF="toLineChart.html#setLabels">toLineChart::setLabels</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setMaxValue">toLineChart::setMaxValue</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setMaxValueAuto">toLineChart::setMaxValueAuto</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumHeight">QWidget::setMaximumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumSize">QWidget::setMaximumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumWidth">QWidget::setMaximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMicroFocusHint">QWidget::setMicroFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setMinValue">toLineChart::setMinValue</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setMinValueAuto">toLineChart::setMinValueAuto</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumHeight">QWidget::setMinimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumSize">QWidget::setMinimumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumWidth">QWidget::setMinimumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMouseTracking">QWidget::setMouseTracking</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundColor">QWidget::setPaletteBackgroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundPixmap">QWidget::setPaletteBackgroundPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteForegroundColor">QWidget::setPaletteForegroundColor</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLine.html#setSQL">toResultLine::setSQL</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setSamples">toLineChart::setSamples</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setShown">QWidget::setShown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizeIncrement">QWidget::setSizeIncrement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizePolicy">QWidget::setSizePolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setTabOrder">QWidget::setTabOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setTitle">toLineChart::setTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setUpdatesEnabled">QWidget::setUpdatesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWFlags">QWidget::setWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowOpacity">QWidget::setWindowOpacity</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowState">QWidget::setWindowState</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#setYPostfix">toLineChart::setYPostfix</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#setup">toLineChart::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#showAxisLegend">toLineChart::showAxisLegend</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showEvent">QWidget::showEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showFullScreen">QWidget::showFullScreen</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#showGrid">toLineChart::showGrid</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#showLast">toLineChart::showLast</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#showLegend">toLineChart::showLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMaximized">QWidget::showMaximized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMinimized">QWidget::showMinimized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showNormal">QWidget::showNormal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizeIncrement">QWidget::sizeIncrement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizePolicy">QWidget::sizePolicy</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#stackUnder">QWidget::stackUnder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLine.html#start">toResultLine::start</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#stop">toResultLine::stop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#styleChange">QWidget::styleChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#tabletEvent">QWidget::tabletEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#testWFlags">QWidget::testWFlags</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#title">toLineChart::title</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#toLineChart">toLineChart::toLineChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#toResultLine">toResultLine::toResultLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#topLevelWidget">QWidget::topLevelWidget</A></TD></TR>
+<TR ><TD><A HREF="toResultLine.html#transform">toResultLine::transform</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetCursor">QWidget::unsetCursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetFont">QWidget::unsetFont</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetPalette">QWidget::unsetPalette</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateGeometry">QWidget::updateGeometry</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateMask">QWidget::updateMask</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#valueAdded">toLineChart::valueAdded</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#values">toLineChart::values</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#verticalChange">toLineChart::verticalChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#wheelEvent">QWidget::wheelEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#winEvent">QWidget::winEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowActivationChange">QWidget::windowActivationChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowOpacity">QWidget::windowOpacity</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowState">QWidget::windowState</A></TD></TR>
+<TR ><TD><A HREF="toLineChart.html#xValues">toLineChart::xValues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html#~toLineChart">toLineChart::~toLineChart</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLine.html#~toResultLine">toResultLine::~toResultLine</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultListFormat.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultListFormat.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultListFormat.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,36 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultListFormat: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultListFormat: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>formatChanged - toResultListFormat</TH></TR><TR ><TD><A HREF="toResultListFormat.html#formatChanged">toResultListFormat::formatChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultListFormat.html#saveDefault">toResultListFormat::saveDefault</A></TD></TR>
+<TR ><TD><A HREF="toResultListFormat.html#toResultListFormat">toResultListFormat::toResultListFormat</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLong.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLong.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultLong.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,166 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultLong: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultLong: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - exportData</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLong.html#addItem">toResultLong::addItem</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#addMenues">toResultView::addMenues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#allColumnsShowFocus">QListView::allColumnsShowFocus</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#canHandle">toResultView::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#changeParams">toResultView::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#checkHeading">toResultView::checkHeading</A></TD></TR>
+<TR ><TD><A HREF="toResultLong.html#cleanup">toResultLong::cleanup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#collapsed">QListView::collapsed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnAlignment">QListView::columnAlignment</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnText">QListView::columnText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidth">QListView::columnWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidthMode">QListView::columnWidthMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseDoubleClickEvent">toListView::contentsMouseDoubleClickEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseMoveEvent">toListView::contentsMouseMoveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMousePressEvent">toListView::contentsMousePressEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseReleaseEvent">toListView::contentsMouseReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#copyTransposed">toListView::copyTransposed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#createItem">toResultView::createItem</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#defaultRenameAction">QListView::defaultRenameAction</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#displayMemo">toListView::displayMemo</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#displayMenu">toListView::displayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLong.html#done">toResultLong::done</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#drawContentsOffset">QListView::drawContentsOffset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#editPrint">toResultView::editPrint</A></TD></TR>
+<TR ><TD><A HREF="toResultLong.html#editReadAll">toResultLong::editReadAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editSave">toListView::editSave</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#editSelectAll">toListView::editSelectAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLong.html#eof">toResultLong::eof</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#eventFilter">QListView::eventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#expanded">QListView::expanded</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#exportData">toListView::exportData</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>exportType - setEdit</TH></TR><TR ><TD><A HREF="toListView.html#exportType">toListView::exportType</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#filter">toResultView::filter</A></TD></TR>
+<TR ><TD><A HREF="toResultLong.html#firstResult">toResultLong::firstResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#focusInEvent">toListView::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#header">QListView::header</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#headingClicked">toResultView::headingClicked</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#hideColumn">QListView::hideColumn</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#importData">toListView::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemMargin">QListView::itemMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemPos">QListView::itemPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#keyPressEvent">toResultView::keyPressEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#menuCallback">toResultView::menuCallback</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#menuText">toListView::menuText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#middleString">toResultView::middleString</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#numberColumn">toResultView::numberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#printPage">toListView::printPage</A></TD></TR>
+<TR ><TD><A HREF="toResultLong.html#query">toResultLong::query</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#queryColumns">toResultView::queryColumns</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#readableColumn">toResultView::readableColumn</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#refresh">toResultView::refresh</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#rootIsDecorated">QListView::rootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toResultLong.html#running">toResultLong::running</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchCanReplace">toListView::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchNext">toListView::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchTop">toListView::searchTop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setAllColumnsShowFocus">QListView::setAllColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnAlignment">QListView::setColumnAlignment</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnText">QListView::setColumnText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnWidthMode">QListView::setColumnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setDefaultRenameAction">QListView::setDefaultRenameAction</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#setDisplayMenu">toListView::setDisplayMenu</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setFilter - ~toResultView</TH></TR><TR ><TD><A HREF="toResultView.html#setFilter">toResultView::setFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setItemMargin">QListView::setItemMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setNumberColumn">toResultView::setNumberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setOpen">QListView::setOpen</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setReadAll">toResultView::setReadAll</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setReadableColumns">toResultView::setReadableColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setRootIsDecorated">QListView::setRootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setSQL">toResultView::setSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSQLName">toResultView::setSQLName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSelectionAnchor">QListView::setSelectionAnchor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setShowSortIndicator">QListView::setShowSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortColumn">QListView::setSortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortOrder">QListView::setSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSorting">toResultView::setSorting</A></TD></TR>
+<TR ><TD><A HREF="toResultLong.html#setStatistics">toResultLong::setStatistics</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setTreeStepSize">QListView::setTreeStepSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setup">toResultView::setup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#showSortIndicator">QListView::showSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#sortColumn">toResultView::sortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#sortOrder">QListView::sortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#spacePressed">QListView::spacePressed</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#sqlName">toResultView::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toResultLong.html#stop">toResultLong::stop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#toListView">toListView::toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLong.html#toResultLong">toResultLong::toResultLong</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#toResultView">toResultView::toResultView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#treeStepSize">QListView::treeStepSize</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#updateContents">QListView::updateContents</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#~toListView">toListView::~toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLong.html#~toResultLong">toResultLong::~toResultLong</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#~toResultView">toResultView::~toResultView</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultObject.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultObject.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultObject.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,67 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultObject: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultObject: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>blockSignals - dumpObjectTree</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#blockSignals">QObject::blockSignals</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#checkConnectArgs">QObject::checkConnectArgs</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#children">QObject::children</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#connectNotify">QObject::connectNotify</A></TD></TR>
+<TR ><TD><A HREF="toResultObject.html#connectionChanged">toResultObject::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#customEvent">QObject::customEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#deleteLater">QObject::deleteLater</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#destroyed">QObject::destroyed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnect">QObject::disconnect</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnectNotify">QObject::disconnectNotify</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectInfo">QObject::dumpObjectInfo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectTree">QObject::dumpObjectTree</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>event - queryList</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#event">QObject::event</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#highPriority">QObject::highPriority</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#insertChild">QObject::insertChild</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#installEventFilter">QObject::installEventFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isA">QObject::isA</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isWidgetType">QObject::isWidgetType</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimer">QObject::killTimer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimers">QObject::killTimers</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#normalizeSignalSlot">QObject::normalizeSignalSlot</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#objectTrees">QObject::objectTrees</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#qt_find_obj_child">QObject::qt_find_obj_child</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#queryList">QObject::queryList</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>removeEventFilter - trUtf8</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#removeEventFilter">QObject::removeEventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#sender">QObject::sender</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#setProperty">QObject::setProperty</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultObject.html#setup">toResultObject::setup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#signalsBlocked">QObject::signalsBlocked</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#startTimer">QObject::startTimer</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#timerEvent">QObject::timerEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultObject.html#toResultObject">toResultObject::toResultObject</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#tr">QObject::tr</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#trUtf8">QObject::trUtf8</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultPie.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultPie.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultPie.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,233 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultPie: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultPie: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>acceptDrops - isMinimized</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#acceptDrops">QWidget::acceptDrops</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#addValue">toPieChart::addValue</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#autoMask">QWidget::autoMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundBrush">QWidget::backgroundBrush</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#backgroundOrigin">QWidget::backgroundOrigin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#baseSize">QWidget::baseSize</A></TD></TR>
+<TR ><TD><A HREF="toResultPie.html#canHandle">toResultPie::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultPie.html#changeParams">toResultPie::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#chartRectangle">toPieChart::chartRectangle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childAt">QWidget::childAt</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRect">QWidget::childrenRect</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#childrenRegion">QWidget::childrenRegion</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearFocus">QWidget::clearFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearMask">QWidget::clearMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#clearWFlags">QWidget::clearWFlags</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#closeEvent">QWidget::closeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#colorGroup">QWidget::colorGroup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#constPolish">QWidget::constPolish</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#contextMenuEvent">QWidget::contextMenuEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#cursor">QWidget::cursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#customWhatsThis">QWidget::customWhatsThis</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#destroy">QWidget::destroy</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#displayPercent">toPieChart::displayPercent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragEnterEvent">QWidget::dragEnterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragLeaveEvent">QWidget::dragLeaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dragMoveEvent">QWidget::dragMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#dropEvent">QWidget::dropEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#editPrint">toPieChart::editPrint</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enabledChange">QWidget::enabledChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#enterEvent">QWidget::enterEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#eraseColor">QWidget::eraseColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#erasePixmap">QWidget::erasePixmap</A></TD></TR>
+<TR ><TD><A HREF="toResultPie.html#filter">toResultPie::filter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#findLabel">toPieChart::findLabel</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusData">QWidget::focusData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusInEvent">QWidget::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusOutEvent">QWidget::focusOutEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusPolicy">QWidget::focusPolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#focusProxy">QWidget::focusProxy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#fontChange">QWidget::fontChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#foregroundColor">QWidget::foregroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameGeometry">QWidget::frameGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#frameSize">QWidget::frameSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#getWFlags">QWidget::getWFlags</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabKeyboard">QWidget::grabKeyboard</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#grabMouse">QWidget::grabMouse</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasFocus">QWidget::hasFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouse">QWidget::hasMouse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#hasMouseTracking">QWidget::hasMouseTracking</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#iconText">QWidget::iconText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imComposeEvent">QWidget::imComposeEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imEndEvent">QWidget::imEndEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#imStartEvent">QWidget::imStartEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isActiveWindow">QWidget::isActiveWindow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDesktop">QWidget::isDesktop</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isDialog">QWidget::isDialog</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isEnabledTo">QWidget::isEnabledTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFocusEnabled">QWidget::isFocusEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isFullScreen">QWidget::isFullScreen</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isInputMethodEnabled">QWidget::isInputMethodEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMaximized">QWidget::isMaximized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isMinimized">QWidget::isMinimized</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isPopup - setIconText</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isPopup">QWidget::isPopup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isShown">QWidget::isShown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isUpdatesEnabled">QWidget::isUpdatesEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#isVisibleTo">QWidget::isVisibleTo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyReleaseEvent">QWidget::keyReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#keyboardGrabber">QWidget::keyboardGrabber</A></TD></TR>
+<TR ><TD><A HREF="toResultPie.html#labelFirst">toResultPie::labelFirst</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#labels">toPieChart::labels</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#leaveEvent">QWidget::leaveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#legend">toPieChart::legend</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#macEvent">QWidget::macEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFrom">QWidget::mapFrom</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromGlobal">QWidget::mapFromGlobal</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapFromParent">QWidget::mapFromParent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapTo">QWidget::mapTo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToGlobal">QWidget::mapToGlobal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mapToParent">QWidget::mapToParent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumHeight">QWidget::maximumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#maximumWidth">QWidget::maximumWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#microFocusHint">QWidget::microFocusHint</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumHeight">QWidget::minimumHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#minimumWidth">QWidget::minimumWidth</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#mouseDoubleClickEvent">toPieChart::mouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseGrabber">QWidget::mouseGrabber</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#mousePressEvent">toPieChart::mousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseReleaseEvent">QWidget::mouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#moveEvent">QWidget::moveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#newValues">toPieChart::newValues</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#openCopy">toPieChart::openCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownCursor">QWidget::ownCursor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownFont">QWidget::ownFont</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#ownPalette">QWidget::ownPalette</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#paintChart">toPieChart::paintChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#paintEvent">toPieChart::paintEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundColor">QWidget::paletteBackgroundColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteBackgroundPixmap">QWidget::paletteBackgroundPixmap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteChange">QWidget::paletteChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#paletteForegroundColor">QWidget::paletteForegroundColor</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultPie.html#poll">toResultPie::poll</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#postfix">toPieChart::postfix</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultPie.html#query">toResultPie::query</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#qwsEvent">QWidget::qwsEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultPie.html#refresh">toResultPie::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseKeyboard">QWidget::releaseKeyboard</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#releaseMouse">QWidget::releaseMouse</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#reparent">QWidget::reparent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#resetInputContext">QWidget::resetInputContext</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#scroll">QWidget::scroll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAcceptDrops">QWidget::setAcceptDrops</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setAutoMask">QWidget::setAutoMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBackgroundOrigin">QWidget::setBackgroundOrigin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setBaseSize">QWidget::setBaseSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCaption">QWidget::setCaption</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setCursor">QWidget::setCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#setDisplayPercent">toPieChart::setDisplayPercent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setEraseColor">QWidget::setEraseColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setErasePixmap">QWidget::setErasePixmap</A></TD></TR>
+<TR ><TD><A HREF="toResultPie.html#setFilter">toResultPie::setFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedHeight">QWidget::setFixedHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedSize">QWidget::setFixedSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFixedWidth">QWidget::setFixedWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusPolicy">QWidget::setFocusPolicy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setFocusProxy">QWidget::setFocusProxy</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setHidden">QWidget::setHidden</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setIconText">QWidget::setIconText</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setInputMethodEnabled - ~toResult</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setInputMethodEnabled">QWidget::setInputMethodEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setKeyCompression">QWidget::setKeyCompression</A></TD></TR>
+<TR ><TD><A HREF="toResultPie.html#setLabelFirst">toResultPie::setLabelFirst</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumHeight">QWidget::setMaximumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumSize">QWidget::setMaximumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMaximumWidth">QWidget::setMaximumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMicroFocusHint">QWidget::setMicroFocusHint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumHeight">QWidget::setMinimumHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumSize">QWidget::setMinimumSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMinimumWidth">QWidget::setMinimumWidth</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setMouseTracking">QWidget::setMouseTracking</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundColor">QWidget::setPaletteBackgroundColor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteBackgroundPixmap">QWidget::setPaletteBackgroundPixmap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setPaletteForegroundColor">QWidget::setPaletteForegroundColor</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#setPostfix">toPieChart::setPostfix</A></TD></TR>
+<TR ><TD><A HREF="toResultPie.html#setSQL">toResultPie::setSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setShown">QWidget::setShown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizeIncrement">QWidget::setSizeIncrement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setSizePolicy">QWidget::setSizePolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setTabOrder">QWidget::setTabOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#setTitle">toPieChart::setTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setUpdatesEnabled">QWidget::setUpdatesEnabled</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#setValues">toPieChart::setValues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWFlags">QWidget::setWFlags</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowOpacity">QWidget::setWindowOpacity</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#setWindowState">QWidget::setWindowState</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showEvent">QWidget::showEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showFullScreen">QWidget::showFullScreen</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#showLegend">toPieChart::showLegend</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMaximized">QWidget::showMaximized</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showMinimized">QWidget::showMinimized</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#showNormal">QWidget::showNormal</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizeIncrement">QWidget::sizeIncrement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#sizePolicy">QWidget::sizePolicy</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#stackUnder">QWidget::stackUnder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultPie.html#start">toResultPie::start</A></TD></TR>
+<TR ><TD><A HREF="toResultPie.html#stop">toResultPie::stop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#styleChange">QWidget::styleChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#tabletEvent">QWidget::tabletEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#testWFlags">QWidget::testWFlags</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieChart.html#title">toPieChart::title</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#toPieChart">toPieChart::toPieChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultPie.html#toResultPie">toResultPie::toResultPie</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#topLevelWidget">QWidget::topLevelWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetCursor">QWidget::unsetCursor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetFont">QWidget::unsetFont</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#unsetPalette">QWidget::unsetPalette</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateGeometry">QWidget::updateGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#updateMask">QWidget::updateMask</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultPie.html#valueFilter">toResultPie::valueFilter</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#values">toPieChart::values</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#wheelEvent">QWidget::wheelEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#winEvent">QWidget::winEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowActivationChange">QWidget::windowActivationChange</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowOpacity">QWidget::windowOpacity</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html#windowState">QWidget::windowState</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html#~toPieChart">toPieChart::~toPieChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultPlan.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultPlan.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultPlan.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,165 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultPlan: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultPlan: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - expanded</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#addItem">toResultView::addItem</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#addMenues">toResultView::addMenues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultPlan.html#addStatements">toResultPlan::addStatements</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#allColumnsShowFocus">QListView::allColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultPlan.html#canHandle">toResultPlan::canHandle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#changeParams">toResultView::changeParams</A></TD></TR>
+<TR ><TD><A HREF="toResultPlan.html#checkException">toResultPlan::checkException</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#checkHeading">toResultView::checkHeading</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#collapsed">QListView::collapsed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnAlignment">QListView::columnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnText">QListView::columnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidth">QListView::columnWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidthMode">QListView::columnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseDoubleClickEvent">toListView::contentsMouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseMoveEvent">toListView::contentsMouseMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMousePressEvent">toListView::contentsMousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseReleaseEvent">toListView::contentsMouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#copyTransposed">toListView::copyTransposed</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#createItem">toResultView::createItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#defaultRenameAction">QListView::defaultRenameAction</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#displayMemo">toListView::displayMemo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#displayMenu">toListView::displayMenu</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#drawContentsOffset">QListView::drawContentsOffset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#editPrint">toResultView::editPrint</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#editReadAll">toResultView::editReadAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editSave">toListView::editSave</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#editSelectAll">toListView::editSelectAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#eof">toResultView::eof</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#eventFilter">QListView::eventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#expanded">QListView::expanded</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>exportData - setColumnWidthMode</TH></TR><TR ><TD><A HREF="toListView.html#exportData">toListView::exportData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#exportType">toListView::exportType</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#filter">toResultView::filter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#focusInEvent">toListView::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#header">QListView::header</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#headingClicked">toResultView::headingClicked</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#hideColumn">QListView::hideColumn</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#importData">toListView::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemMargin">QListView::itemMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemPos">QListView::itemPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#keyPressEvent">toResultView::keyPressEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#menuCallback">toResultView::menuCallback</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#menuText">toListView::menuText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#middleString">toResultView::middleString</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#numberColumn">toResultView::numberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultPlan.html#oracleNext">toResultPlan::oracleNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultPlan.html#oracleSetup">toResultPlan::oracleSetup</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultPlan.html#poll">toResultPlan::poll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#printPage">toListView::printPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultPlan.html#query">toResultPlan::query</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#queryColumns">toResultView::queryColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#readableColumn">toResultView::readableColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#refresh">toResultView::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#rootIsDecorated">QListView::rootIsDecorated</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchCanReplace">toListView::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchNext">toListView::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchTop">toListView::searchTop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setAllColumnsShowFocus">QListView::setAllColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnAlignment">QListView::setColumnAlignment</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnText">QListView::setColumnText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnWidthMode">QListView::setColumnWidthMode</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setDefaultRenameAction - ~toResultView</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setDefaultRenameAction">QListView::setDefaultRenameAction</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#setDisplayMenu">toListView::setDisplayMenu</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setFilter">toResultView::setFilter</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setItemMargin">QListView::setItemMargin</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setNumberColumn">toResultView::setNumberColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setOpen">QListView::setOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setReadAll">toResultView::setReadAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setReadableColumns">toResultView::setReadableColumns</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setRootIsDecorated">QListView::setRootIsDecorated</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSQL">toResultView::setSQL</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setSQLName">toResultView::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSelectionAnchor">QListView::setSelectionAnchor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setShowSortIndicator">QListView::setShowSortIndicator</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortColumn">QListView::setSortColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortOrder">QListView::setSortOrder</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setSorting">toResultView::setSorting</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setTreeStepSize">QListView::setTreeStepSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setup">toResultView::setup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#showSortIndicator">QListView::showSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#sortColumn">toResultView::sortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#sortOrder">QListView::sortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#spacePressed">QListView::spacePressed</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#sqlName">toResultView::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#toListView">toListView::toListView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultPlan.html#toResultPlan">toResultPlan::toResultPlan</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#toResultView">toResultView::toResultView</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#treeStepSize">QListView::treeStepSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#updateContents">QListView::updateContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#~toListView">toListView::~toListView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultPlan.html#~toResultPlan">toResultPlan::~toResultPlan</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#~toResultView">toResultView::~toResultView</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultReferences.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultReferences.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultReferences.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,162 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultReferences: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultReferences: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - expanded</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#addItem">toResultView::addItem</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#addMenues">toResultView::addMenues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#allColumnsShowFocus">QListView::allColumnsShowFocus</A></TD></TR>
+<TR ><TD><A HREF="toResultReferences.html#canHandle">toResultReferences::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#changeParams">toResultView::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#checkHeading">toResultView::checkHeading</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#collapsed">QListView::collapsed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnAlignment">QListView::columnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnText">QListView::columnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidth">QListView::columnWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidthMode">QListView::columnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR ><TD><A HREF="toResultReferences.html#constraintCols">toResultReferences::constraintCols</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseDoubleClickEvent">toListView::contentsMouseDoubleClickEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseMoveEvent">toListView::contentsMouseMoveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMousePressEvent">toListView::contentsMousePressEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseReleaseEvent">toListView::contentsMouseReleaseEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#copyTransposed">toListView::copyTransposed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#createItem">toResultView::createItem</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#defaultRenameAction">QListView::defaultRenameAction</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#displayMemo">toListView::displayMemo</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#displayMenu">toListView::displayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#drawContentsOffset">QListView::drawContentsOffset</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#editPrint">toResultView::editPrint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#editReadAll">toResultView::editReadAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#editSave">toListView::editSave</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editSelectAll">toListView::editSelectAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#eof">toResultView::eof</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#eventFilter">QListView::eventFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#expanded">QListView::expanded</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>exportData - setDefaultRenameAction</TH></TR><TR ><TD><A HREF="toListView.html#exportData">toListView::exportData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#exportType">toListView::exportType</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#filter">toResultView::filter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#focusInEvent">toListView::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#header">QListView::header</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#headingClicked">toResultView::headingClicked</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#hideColumn">QListView::hideColumn</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#importData">toListView::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemMargin">QListView::itemMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemPos">QListView::itemPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#keyPressEvent">toResultView::keyPressEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#menuCallback">toResultView::menuCallback</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#menuText">toListView::menuText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#middleString">toResultView::middleString</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#numberColumn">toResultView::numberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultReferences.html#poll">toResultReferences::poll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#printPage">toListView::printPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultReferences.html#query">toResultReferences::query</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#queryColumns">toResultView::queryColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#readableColumn">toResultView::readableColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#refresh">toResultView::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#rootIsDecorated">QListView::rootIsDecorated</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchCanReplace">toListView::searchCanReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchNext">toListView::searchNext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#searchTop">toListView::searchTop</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setAllColumnsShowFocus">QListView::setAllColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnAlignment">QListView::setColumnAlignment</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnText">QListView::setColumnText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnWidthMode">QListView::setColumnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setDefaultRenameAction">QListView::setDefaultRenameAction</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setDisplayMenu - ~toResultView</TH></TR><TR ><TD><A HREF="toListView.html#setDisplayMenu">toListView::setDisplayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setFilter">toResultView::setFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setItemMargin">QListView::setItemMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setNumberColumn">toResultView::setNumberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setOpen">QListView::setOpen</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setReadAll">toResultView::setReadAll</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setReadableColumns">toResultView::setReadableColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setRootIsDecorated">QListView::setRootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setSQL">toResultView::setSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSQLName">toResultView::setSQLName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSelectionAnchor">QListView::setSelectionAnchor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setShowSortIndicator">QListView::setShowSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortColumn">QListView::setSortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortOrder">QListView::setSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSorting">toResultView::setSorting</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setTreeStepSize">QListView::setTreeStepSize</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setup">toResultView::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#showSortIndicator">QListView::showSortIndicator</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#sortColumn">toResultView::sortColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#sortOrder">QListView::sortOrder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#spacePressed">QListView::spacePressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#sqlName">toResultView::sqlName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#toListView">toListView::toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultReferences.html#toResultReferences">toResultReferences::toResultReferences</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#toResultView">toResultView::toResultView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#treeStepSize">QListView::treeStepSize</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#updateContents">QListView::updateContents</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#~toListView">toListView::~toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultReferences.html#~toResultReferences">toResultReferences::~toResultReferences</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#~toResultView">toResultView::~toResultView</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultResources.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultResources.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultResources.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,126 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultResources: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultResources: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addChild - dragAutoScroll</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#addChild">QScrollView::addChild</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#addItem">toResultItem::addItem</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#alignRight">toResultItem::alignRight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#bottomMargin">QScrollView::bottomMargin</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#canHandle">toResultItem::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#changeParams">toResultItem::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#childX">QScrollView::childX</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#childY">QScrollView::childY</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#clipper">QScrollView::clipper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsContextMenuEvent">QScrollView::contentsContextMenuEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragEnterEvent">QScrollView::contentsDragEnterEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragLeaveEvent">QScrollView::contentsDragLeaveEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDragMoveEvent">QScrollView::contentsDragMoveEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsDropEvent">QScrollView::contentsDropEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsHeight">QScrollView::contentsHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsMoving">QScrollView::contentsMoving</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsToViewport">QScrollView::contentsToViewport</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsWheelEvent">QScrollView::contentsWheelEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsWidth">QScrollView::contentsWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsX">QScrollView::contentsX</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#contentsY">QScrollView::contentsY</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#cornerWidget">QScrollView::cornerWidget</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#createTitle">toResultItem::createTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#createValue">toResultItem::createValue</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#dataFont">toResultItem::dataFont</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#done">toResultItem::done</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#dragAutoScroll">QScrollView::dragAutoScroll</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>enableClipper - setSQL</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#enableClipper">QScrollView::enableClipper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#ensureVisible">QScrollView::ensureVisible</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#hScrollBarMode">QScrollView::hScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#hasStaticBackground">QScrollView::hasStaticBackground</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalScrollBar">QScrollView::horizontalScrollBar</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalSliderPressed">QScrollView::horizontalSliderPressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#horizontalSliderReleased">QScrollView::horizontalSliderReleased</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#isHorizontalSliderPressed">QScrollView::isHorizontalSliderPressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#isVerticalSliderPressed">QScrollView::isVerticalSliderPressed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#leftMargin">QScrollView::leftMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#moveChild">QScrollView::moveChild</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#poll">toResultItem::poll</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#query">toResultItem::query</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#refresh">toResultItem::refresh</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#repaintContents">QScrollView::repaintContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#resizeContents">QScrollView::resizeContents</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#resizeEvent">toResultItem::resizeEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#resizePolicy">QScrollView::resizePolicy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#rightMargin">QScrollView::rightMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#scrollBy">QScrollView::scrollBy</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setContentsPos">QScrollView::setContentsPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setCornerWidget">QScrollView::setCornerWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setDragAutoScroll">QScrollView::setDragAutoScroll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setHBarGeometry">QScrollView::setHBarGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setHScrollBarMode">QScrollView::setHScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setResizePolicy">QScrollView::setResizePolicy</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#setSQL">toResultItem::setSQL</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setSQLName - ~toResultItem</TH></TR><TR ><TD><A HREF="toResult.html#setSQLName">toResult::setSQLName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setStaticBackground">QScrollView::setStaticBackground</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#setTitle">toResultItem::setTitle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setVBarGeometry">QScrollView::setVBarGeometry</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#setVScrollBarMode">QScrollView::setVScrollBarMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#setValue">toResultItem::setValue</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#setup">toResultItem::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#showTitle">toResultItem::showTitle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sqlName">toResult::sqlName</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#start">toResultItem::start</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html#toResultItem">toResultItem::toResultItem</A></TD></TR>
+<TR ><TD><A HREF="toResultResources.html#toResultResources">toResultResources::toResultResources</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#topMargin">QScrollView::topMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#updateScrollBars">QScrollView::updateScrollBars</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#vScrollBarMode">QScrollView::vScrollBarMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalScrollBar">QScrollView::verticalScrollBar</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalSliderPressed">QScrollView::verticalSliderPressed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#verticalSliderReleased">QScrollView::verticalSliderReleased</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportPaintEvent">QScrollView::viewportPaintEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportResizeEvent">QScrollView::viewportResizeEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportSize">QScrollView::viewportSize</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#viewportToContents">QScrollView::viewportToContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#visibleHeight">QScrollView::visibleHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html#visibleWidth">QScrollView::visibleWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultItem.html#~toResultItem">toResultItem::~toResultItem</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultStats.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultStats.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultStats.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,166 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultStats: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultStats: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - exportData</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#addItem">toResultView::addItem</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#addMenues">toResultView::addMenues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultStats.html#addValue">toResultStats::addValue</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#allColumnsShowFocus">QListView::allColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultStats.html#canHandle">toResultStats::canHandle</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#changeParams">toResultView::changeParams</A></TD></TR>
+<TR ><TD><A HREF="toResultStats.html#changeSession">toResultStats::changeSession</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#checkHeading">toResultView::checkHeading</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#collapsed">QListView::collapsed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnAlignment">QListView::columnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnText">QListView::columnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidth">QListView::columnWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidthMode">QListView::columnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseDoubleClickEvent">toListView::contentsMouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseMoveEvent">toListView::contentsMouseMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMousePressEvent">toListView::contentsMousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseReleaseEvent">toListView::contentsMouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#copyTransposed">toListView::copyTransposed</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#createItem">toResultView::createItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#defaultRenameAction">QListView::defaultRenameAction</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#displayMemo">toListView::displayMemo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#displayMenu">toListView::displayMenu</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#drawContentsOffset">QListView::drawContentsOffset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#editPrint">toResultView::editPrint</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#editReadAll">toResultView::editReadAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editSave">toListView::editSave</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#editSelectAll">toListView::editSelectAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#eof">toResultView::eof</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#eventFilter">QListView::eventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#expanded">QListView::expanded</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#exportData">toListView::exportData</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>exportType - setDefaultRenameAction</TH></TR><TR ><TD><A HREF="toListView.html#exportType">toListView::exportType</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#filter">toResultView::filter</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#focusInEvent">toListView::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#header">QListView::header</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#headingClicked">toResultView::headingClicked</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#hideColumn">QListView::hideColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#importData">toListView::importData</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemMargin">QListView::itemMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemPos">QListView::itemPos</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#keyPressEvent">toResultView::keyPressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#menuCallback">toResultView::menuCallback</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#menuText">toListView::menuText</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#middleString">toResultView::middleString</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#numberColumn">toResultView::numberColumn</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultStats.html#poll">toResultStats::poll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#printPage">toListView::printPage</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#query">toResultView::query</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#queryColumns">toResultView::queryColumns</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#readableColumn">toResultView::readableColumn</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#refresh">toResultView::refresh</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultStats.html#refreshStats">toResultStats::refreshStats</A></TD></TR>
+<TR ><TD><A HREF="toResultStats.html#resetStats">toResultStats::resetStats</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#rootIsDecorated">QListView::rootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#searchCanReplace">toListView::searchCanReplace</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#searchNext">toListView::searchNext</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#searchTop">toListView::searchTop</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultStats.html#sessionChanged">toResultStats::sessionChanged</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setAllColumnsShowFocus">QListView::setAllColumnsShowFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnAlignment">QListView::setColumnAlignment</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnText">QListView::setColumnText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnWidthMode">QListView::setColumnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setDefaultRenameAction">QListView::setDefaultRenameAction</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setDisplayMenu - ~toResultView</TH></TR><TR ><TD><A HREF="toListView.html#setDisplayMenu">toListView::setDisplayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setFilter">toResultView::setFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setItemMargin">QListView::setItemMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setNumberColumn">toResultView::setNumberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setOpen">QListView::setOpen</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setReadAll">toResultView::setReadAll</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setReadableColumns">toResultView::setReadableColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setRootIsDecorated">QListView::setRootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setSQL">toResultView::setSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSQLName">toResultView::setSQLName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSelectionAnchor">QListView::setSelectionAnchor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setShowSortIndicator">QListView::setShowSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortColumn">QListView::setSortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortOrder">QListView::setSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSorting">toResultView::setSorting</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setTreeStepSize">QListView::setTreeStepSize</A></TD></TR>
+<TR ><TD><A HREF="toResultStats.html#setup">toResultStats::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#showSortIndicator">QListView::showSortIndicator</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#sortColumn">toResultView::sortColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#sortOrder">QListView::sortOrder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#spacePressed">QListView::spacePressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#sqlName">toResultView::sqlName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#toListView">toListView::toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultStats.html#toResultStats">toResultStats::toResultStats</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#toResultView">toResultView::toResultView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#treeStepSize">QListView::treeStepSize</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#updateContents">QListView::updateContents</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#~toListView">toListView::~toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultStats.html#~toResultStats">toResultStats::~toResultStats</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#~toResultView">toResultView::~toResultView</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultView.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultView.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultView.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,158 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultView: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultView: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - expanded</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#addItem">toResultView::addItem</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#addMenues">toResultView::addMenues</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#allColumnsShowFocus">QListView::allColumnsShowFocus</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#canHandle">toResultView::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#changeHandle">toResult::changeHandle</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#changeParams">toResultView::changeParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#checkHeading">toResultView::checkHeading</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#clearParams">toResult::clearParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#collapsed">QListView::collapsed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnAlignment">QListView::columnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnText">QListView::columnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidth">QListView::columnWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#columnWidthMode">QListView::columnWidthMode</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#connection">toResult::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#connectionChanged">toResult::connectionChanged</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMouseDoubleClickEvent">toListView::contentsMouseDoubleClickEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseMoveEvent">toListView::contentsMouseMoveEvent</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#contentsMousePressEvent">toListView::contentsMousePressEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#contentsMouseReleaseEvent">toListView::contentsMouseReleaseEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#copyTransposed">toListView::copyTransposed</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#createItem">toResultView::createItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#defaultRenameAction">QListView::defaultRenameAction</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#displayMemo">toListView::displayMemo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#displayMenu">toListView::displayMenu</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#drawContentsOffset">QListView::drawContentsOffset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCopy">toEditWidget::editCopy</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#editPrint">toResultView::editPrint</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#editReadAll">toResultView::editReadAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#editSave">toListView::editSave</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#editSelectAll">toListView::editSelectAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#eof">toResultView::eof</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#eventFilter">QListView::eventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#expanded">QListView::expanded</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>exportData - setDefaultRenameAction</TH></TR><TR ><TD><A HREF="toListView.html#exportData">toListView::exportData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#exportType">toListView::exportType</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#filter">toResultView::filter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#focusInEvent">toListView::focusInEvent</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#handled">toResult::handled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#header">QListView::header</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#headingClicked">toResultView::headingClicked</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#hideColumn">QListView::hideColumn</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#importData">toListView::importData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemMargin">QListView::itemMargin</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#itemPos">QListView::itemPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#keyPressEvent">toResultView::keyPressEvent</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#menuCallback">toResultView::menuCallback</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#menuText">toListView::menuText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#middleString">toResultView::middleString</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#numberColumn">toResultView::numberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#params">toResult::params</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#printPage">toListView::printPage</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#query">toResultView::query</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#queryColumns">toResultView::queryColumns</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#readableColumn">toResultView::readableColumn</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#refresh">toResultView::refresh</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#rootIsDecorated">QListView::rootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#searchCanReplace">toListView::searchCanReplace</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#searchNext">toListView::searchNext</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#searchTop">toListView::searchTop</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setAllColumnsShowFocus">QListView::setAllColumnsShowFocus</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnAlignment">QListView::setColumnAlignment</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnText">QListView::setColumnText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setColumnWidthMode">QListView::setColumnWidthMode</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setDefaultRenameAction">QListView::setDefaultRenameAction</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setDisplayMenu - ~toResultView</TH></TR><TR ><TD><A HREF="toListView.html#setDisplayMenu">toListView::setDisplayMenu</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setFilter">toResultView::setFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#setHandle">toResult::setHandle</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setItemMargin">QListView::setItemMargin</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setNumberColumn">toResultView::setNumberColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setOpen">QListView::setOpen</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setParams">toResult::setParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setReadAll">toResultView::setReadAll</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setReadableColumns">toResultView::setReadableColumns</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setRootIsDecorated">QListView::setRootIsDecorated</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setSQL">toResultView::setSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSQLName">toResultView::setSQLName</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setSQLParams">toResult::setSQLParams</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSelectionAnchor">QListView::setSelectionAnchor</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setShowSortIndicator">QListView::setShowSortIndicator</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortColumn">QListView::setSortColumn</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setSortOrder">QListView::setSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#setSorting">toResultView::setSorting</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#setTabWidget">toResult::setTabWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#setTreeStepSize">QListView::setTreeStepSize</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#setup">toResultView::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#showSortIndicator">QListView::showSortIndicator</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#sortColumn">toResultView::sortColumn</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#sortOrder">QListView::sortOrder</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#spacePressed">QListView::spacePressed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#sql">toResult::sql</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#sqlName">toResultView::sqlName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#timer">toResult::timer</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toListView.html#toListView">toListView::toListView</A></TD></TR>
+<TR ><TD><A HREF="toResult.html#toResult">toResult::toResult</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultView.html#toResultView">toResultView::toResultView</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#treeStepSize">QListView::treeStepSize</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html#updateContents">QListView::updateContents</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toListView.html#~toListView">toListView::~toListView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResult.html#~toResult">toResult::~toResult</A></TD></TR>
+<TR ><TD><A HREF="toResultView.html#~toResultView">toResultView::~toResultView</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewCheck.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewCheck.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewCheck.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,47 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultViewCheck: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultViewCheck: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>allText - paintFocus</TH></TR><TR ><TD><A HREF="toResultViewCheck.html#allText">toResultViewCheck::allText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewCheck.html#firstText">toResultViewCheck::firstText</A></TD></TR>
+<TR ><TD><A HREF="toResultViewCheck.html#key">toResultViewCheck::key</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewCheck.html#paintCell">toResultViewCheck::paintCell</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qchecklistitem.html#paintFocus">QCheckListItem::paintFocus</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>realWidth - toResultViewCheck</TH></TR><TR ><TD><A HREF="toResultViewCheck.html#realWidth">toResultViewCheck::realWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewCheck.html#setText">toResultViewCheck::setText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qchecklistitem.html#stateChange">QCheckListItem::stateChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewCheck.html#text">toResultViewCheck::text</A></TD></TR>
+<TR ><TD><A HREF="toResultViewCheck.html#toResultViewCheck">toResultViewCheck::toResultViewCheck</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>tooltip - ~toResultViewCheck</TH></TR><TR ><TD><A HREF="toResultViewCheck.html#tooltip">toResultViewCheck::tooltip</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qchecklistitem.html#turnOffChild">QCheckListItem::turnOffChild</A></TD></TR>
+<TR ><TD><A HREF="toResultViewCheck.html#width">toResultViewCheck::width</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewCheck.html#~toResultViewCheck">toResultViewCheck::~toResultViewCheck</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewCheck__keyData.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewCheck__keyData.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewCheck__keyData.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,33 @@
+<HTML>
+<HEAD>
+<TITLE>struct keyData: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct keyData: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewItem.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewItem.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewItem.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,65 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultViewItem: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultViewItem: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>activatedPos - listView</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#activatedPos">QListViewItem::activatedPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#allText">toResultViewItem::allText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#cancelRename">QListViewItem::cancelRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#enforceSortOrder">QListViewItem::enforceSortOrder</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#firstText">toResultViewItem::firstText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#invalidateHeight">QListViewItem::invalidateHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#isExpandable">QListViewItem::isExpandable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#itemAbove">QListViewItem::itemAbove</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#itemBelow">QListViewItem::itemBelow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#key">toResultViewItem::key</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#listView">QListViewItem::listView</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>moveItem - setText</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#moveItem">QListViewItem::moveItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#multiLinesEnabled">QListViewItem::multiLinesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#okRename">QListViewItem::okRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#paintBranches">QListViewItem::paintBranches</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#paintCell">toResultViewItem::paintCell</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#parent">QListViewItem::parent</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#realWidth">toResultViewItem::realWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setExpandable">QListViewItem::setExpandable</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setHeight">QListViewItem::setHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setMultiLinesEnabled">QListViewItem::setMultiLinesEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#setText">toResultViewItem::setText</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setup - ~toResultViewItem</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setup">QListViewItem::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#sortChildItems">QListViewItem::sortChildItems</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#startRename">QListViewItem::startRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#text">toResultViewItem::text</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#toResultViewItem">toResultViewItem::toResultViewItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#tooltip">toResultViewItem::tooltip</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#totalHeight">QListViewItem::totalHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#width">toResultViewItem::width</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#widthChanged">QListViewItem::widthChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#~toResultViewItem">toResultViewItem::~toResultViewItem</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewItem__keyData.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewItem__keyData.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewItem__keyData.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,33 @@
+<HTML>
+<HEAD>
+<TITLE>struct keyData: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct keyData: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewMLCheck.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewMLCheck.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewMLCheck.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,49 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultViewMLCheck: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultViewMLCheck: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>allText - realWidth</TH></TR><TR ><TD><A HREF="toResultViewCheck.html#allText">toResultViewCheck::allText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewCheck.html#firstText">toResultViewCheck::firstText</A></TD></TR>
+<TR ><TD><A HREF="toResultViewCheck.html#key">toResultViewCheck::key</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewMLCheck.html#paintCell">toResultViewMLCheck::paintCell</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qchecklistitem.html#paintFocus">QCheckListItem::paintFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewMLCheck.html#realWidth">toResultViewMLCheck::realWidth</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setText - toResultViewMLCheck</TH></TR><TR ><TD><A HREF="toResultViewMLCheck.html#setText">toResultViewMLCheck::setText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewMLCheck.html#setup">toResultViewMLCheck::setup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qchecklistitem.html#stateChange">QCheckListItem::stateChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewMLCheck.html#text">toResultViewMLCheck::text</A></TD></TR>
+<TR ><TD><A HREF="toResultViewCheck.html#toResultViewCheck">toResultViewCheck::toResultViewCheck</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewMLCheck.html#toResultViewMLCheck">toResultViewMLCheck::toResultViewMLCheck</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>tooltip - ~toResultViewCheck</TH></TR><TR ><TD><A HREF="toResultViewCheck.html#tooltip">toResultViewCheck::tooltip</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qchecklistitem.html#turnOffChild">QCheckListItem::turnOffChild</A></TD></TR>
+<TR ><TD><A HREF="toResultViewCheck.html#width">toResultViewCheck::width</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewCheck.html#~toResultViewCheck">toResultViewCheck::~toResultViewCheck</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewMLine.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewMLine.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toResultViewMLine.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,66 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultViewMLine: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultViewMLine: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>activatedPos - listView</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#activatedPos">QListViewItem::activatedPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#allText">toResultViewItem::allText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#cancelRename">QListViewItem::cancelRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#enforceSortOrder">QListViewItem::enforceSortOrder</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#firstText">toResultViewItem::firstText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#invalidateHeight">QListViewItem::invalidateHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#isExpandable">QListViewItem::isExpandable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#itemAbove">QListViewItem::itemAbove</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#itemBelow">QListViewItem::itemBelow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#key">toResultViewItem::key</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#listView">QListViewItem::listView</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>moveItem - setText</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#moveItem">QListViewItem::moveItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#multiLinesEnabled">QListViewItem::multiLinesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#okRename">QListViewItem::okRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#paintBranches">QListViewItem::paintBranches</A></TD></TR>
+<TR ><TD><A HREF="toResultViewMLine.html#paintCell">toResultViewMLine::paintCell</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#parent">QListViewItem::parent</A></TD></TR>
+<TR ><TD><A HREF="toResultViewMLine.html#realWidth">toResultViewMLine::realWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setExpandable">QListViewItem::setExpandable</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setHeight">QListViewItem::setHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setMultiLinesEnabled">QListViewItem::setMultiLinesEnabled</A></TD></TR>
+<TR ><TD><A HREF="toResultViewMLine.html#setText">toResultViewMLine::setText</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setup - ~toResultViewItem</TH></TR><TR ><TD><A HREF="toResultViewMLine.html#setup">toResultViewMLine::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#sortChildItems">QListViewItem::sortChildItems</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#startRename">QListViewItem::startRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewMLine.html#text">toResultViewMLine::text</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#toResultViewItem">toResultViewItem::toResultViewItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewMLine.html#toResultViewMLine">toResultViewMLine::toResultViewMLine</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#tooltip">toResultViewItem::tooltip</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#totalHeight">QListViewItem::totalHeight</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#width">toResultViewItem::width</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#widthChanged">QListViewItem::widthChanged</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#~toResultViewItem">toResultViewItem::~toResultViewItem</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSGAStatement.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSGAStatement.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSGAStatement.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,51 @@
+<HTML>
+<HEAD>
+<TITLE>class toSGAStatement: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSGAStatement: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>changeAddress - removeTabToolTip</TH></TR><TR ><TD><A HREF="toSGAStatement.html#changeAddress">toSGAStatement::changeAddress</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSGAStatement.html#changeTab">toSGAStatement::changeTab</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#currentPageIndex">QTabWidget::currentPageIndex</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#page">QTabWidget::page</A></TD></TR>
+<TR ><TD><A HREF="toSGAStatement.html#refresh">toSGAStatement::refresh</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#removeTabToolTip">QTabWidget::removeTabToolTip</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setCurrentPage - setTabToolTip</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setCurrentPage">QTabWidget::setCurrentPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setTabIconSet">QTabWidget::setTabIconSet</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setTabLabel">QTabWidget::setTabLabel</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setTabPosition">QTabWidget::setTabPosition</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setTabShape">QTabWidget::setTabShape</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setTabToolTip">QTabWidget::setTabToolTip</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>tabIconSet - viewResources</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#tabIconSet">QTabWidget::tabIconSet</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#tabPosition">QTabWidget::tabPosition</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#tabShape">QTabWidget::tabShape</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#tabToolTip">QTabWidget::tabToolTip</A></TD></TR>
+<TR ><TD><A HREF="toSGAStatement.html#toSGAStatement">toSGAStatement::toSGAStatement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSGAStatement.html#viewResources">toSGAStatement::viewResources</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSMTP.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSMTP.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSMTP.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,69 @@
+<HTML>
+<HEAD>
+<TITLE>class toSMTP: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSMTP: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>blockSignals - dumpObjectInfo</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#blockSignals">QObject::blockSignals</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#checkConnectArgs">QObject::checkConnectArgs</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#children">QObject::children</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#connectNotify">QObject::connectNotify</A></TD></TR>
+<TR ><TD><A HREF="toSMTP.html#connected">toSMTP::connected</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#customEvent">QObject::customEvent</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#deleteLater">QObject::deleteLater</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#destroyed">QObject::destroyed</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnect">QObject::disconnect</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnectNotify">QObject::disconnectNotify</A></TD></TR>
+<TR ><TD><A HREF="toSMTP.html#dnsLookupHelper">toSMTP::dnsLookupHelper</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectInfo">QObject::dumpObjectInfo</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>dumpObjectTree - qt_find_obj_child</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectTree">QObject::dumpObjectTree</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#event">QObject::event</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#highPriority">QObject::highPriority</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#insertChild">QObject::insertChild</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#installEventFilter">QObject::installEventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isA">QObject::isA</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isWidgetType">QObject::isWidgetType</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimer">QObject::killTimer</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimers">QObject::killTimers</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#normalizeSignalSlot">QObject::normalizeSignalSlot</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#objectTrees">QObject::objectTrees</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#qt_find_obj_child">QObject::qt_find_obj_child</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>queryList - ~toSMTP</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#queryList">QObject::queryList</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSMTP.html#readyRead">toSMTP::readyRead</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#removeEventFilter">QObject::removeEventFilter</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#sender">QObject::sender</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#setProperty">QObject::setProperty</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#signalsBlocked">QObject::signalsBlocked</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#startTimer">QObject::startTimer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#timerEvent">QObject::timerEvent</A></TD></TR>
+<TR ><TD><A HREF="toSMTP.html#toSMTP">toSMTP::toSMTP</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#tr">QObject::tr</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#trUtf8">QObject::trUtf8</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSMTP.html#~toSMTP">toSMTP::~toSMTP</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,46 @@
+<HTML>
+<HEAD>
+<TITLE>class toSQL: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSQL: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>allocCheck - loadSQL</TH></TR><TR ><TD><A HREF="toSQL.html#allocCheck">toSQL::allocCheck</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQL.html#definitions">toSQL::definitions</A></TD></TR>
+<TR ><TD><A HREF="toSQL.html#deleteSQL">toSQL::deleteSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQL.html#description">toSQL::description</A></TD></TR>
+<TR ><TD><A HREF="toSQL.html#loadSQL">toSQL::loadSQL</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>name - sql</TH></TR><TR ><TD><A HREF="toSQL.html#name">toSQL::name</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQL.html#operator%20()">toSQL::operator ()</A></TD></TR>
+<TR ><TD><A HREF="toSQL.html#range">toSQL::range</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQL.html#saveSQL">toSQL::saveSQL</A></TD></TR>
+<TR ><TD><A HREF="toSQL.html#sql">toSQL::sql</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>string - updateSQL</TH></TR><TR ><TD><A HREF="toSQL.html#string">toSQL::string</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQL.html#toSQL">toSQL::toSQL</A></TD></TR>
+<TR ><TD><A HREF="toSQL.html#updateSQL">toSQL::updateSQL</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,41 @@
+<HTML>
+<HEAD>
+<TITLE>class toSQLParse: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSQLParse: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>countIndent - indent</TH></TR><TR ><TD><A HREF="toSQLParse.html#countIndent">toSQLParse::countIndent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse.html#getSetting">toSQLParse::getSetting</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse.html#indent">toSQLParse::indent</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>indentStatement - setSetting</TH></TR><TR ><TD><A HREF="toSQLParse.html#indentStatement">toSQLParse::indentStatement</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse.html#indentString">toSQLParse::indentString</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse.html#parse">toSQLParse::parse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse.html#parseStatement">toSQLParse::parseStatement</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse.html#setSetting">toSQLParse::setSetting</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__editorTokenizer.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__editorTokenizer.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__editorTokenizer.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+<HTML>
+<HEAD>
+<TITLE>class editorTokenizer: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class editorTokenizer: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>analyzer - line</TH></TR><TR ><TD><A HREF="toSQLParse__tokenizer.html#analyzer">toSQLParse::tokenizer::analyzer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__editorTokenizer.html#editorTokenizer">toSQLParse::editorTokenizer::editorTokenizer</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__editorTokenizer.html#getToken">toSQLParse::editorTokenizer::getToken</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#line">toSQLParse::tokenizer::line</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>offset - setLine</TH></TR><TR ><TD><A HREF="toSQLParse__tokenizer.html#offset">toSQLParse::tokenizer::offset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__editorTokenizer.html#remaining">toSQLParse::editorTokenizer::remaining</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__tokenizer.html#setAnalyzer">toSQLParse::tokenizer::setAnalyzer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#setLine">toSQLParse::tokenizer::setLine</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setOffset - ~tokenizer</TH></TR><TR ><TD><A HREF="toSQLParse__tokenizer.html#setOffset">toSQLParse::tokenizer::setOffset</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#tokenizer">toSQLParse::tokenizer::tokenizer</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__tokenizer.html#~tokenizer">toSQLParse::tokenizer::~tokenizer</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__settings.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__settings.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__settings.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,33 @@
+<HTML>
+<HEAD>
+<TITLE>struct settings: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct settings: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__statement.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__statement.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__statement.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,39 @@
+<HTML>
+<HEAD>
+<TITLE>class statement: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class statement: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>operator !=  - operator = </TH></TR><TR ><TD><A HREF="toSQLParse__statement.html#operator%20!=%20">toSQLParse::statement::operator != </A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__statement.html#operator%20=%20">toSQLParse::statement::operator = </A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>operator ==  - ~statement</TH></TR><TR ><TD><A HREF="toSQLParse__statement.html#operator%20==%20">toSQLParse::statement::operator == </A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__statement.html#statement">toSQLParse::statement::statement</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__statement.html#subTokens">toSQLParse::statement::subTokens</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__statement.html#~statement">toSQLParse::statement::~statement</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__stringTokenizer.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__stringTokenizer.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__stringTokenizer.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+<HTML>
+<HEAD>
+<TITLE>class stringTokenizer: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class stringTokenizer: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>analyzer - offset</TH></TR><TR ><TD><A HREF="toSQLParse__tokenizer.html#analyzer">toSQLParse::tokenizer::analyzer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__stringTokenizer.html#getToken">toSQLParse::stringTokenizer::getToken</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__tokenizer.html#line">toSQLParse::tokenizer::line</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#offset">toSQLParse::tokenizer::offset</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>remaining - setOffset</TH></TR><TR ><TD><A HREF="toSQLParse__stringTokenizer.html#remaining">toSQLParse::stringTokenizer::remaining</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#setAnalyzer">toSQLParse::tokenizer::setAnalyzer</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__tokenizer.html#setLine">toSQLParse::tokenizer::setLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#setOffset">toSQLParse::tokenizer::setOffset</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>stringTokenizer - ~tokenizer</TH></TR><TR ><TD><A HREF="toSQLParse__stringTokenizer.html#stringTokenizer">toSQLParse::stringTokenizer::stringTokenizer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#tokenizer">toSQLParse::tokenizer::tokenizer</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__tokenizer.html#~tokenizer">toSQLParse::tokenizer::~tokenizer</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__tokenizer.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__tokenizer.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQLParse__tokenizer.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+<TITLE>class tokenizer: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class tokenizer: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>analyzer - offset</TH></TR><TR ><TD><A HREF="toSQLParse__tokenizer.html#analyzer">toSQLParse::tokenizer::analyzer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#getToken">toSQLParse::tokenizer::getToken</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__tokenizer.html#line">toSQLParse::tokenizer::line</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#offset">toSQLParse::tokenizer::offset</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>remaining - ~tokenizer</TH></TR><TR ><TD><A HREF="toSQLParse__tokenizer.html#remaining">toSQLParse::tokenizer::remaining</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#setAnalyzer">toSQLParse::tokenizer::setAnalyzer</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__tokenizer.html#setLine">toSQLParse::tokenizer::setLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#setOffset">toSQLParse::tokenizer::setOffset</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__tokenizer.html#tokenizer">toSQLParse::tokenizer::tokenizer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__tokenizer.html#~tokenizer">toSQLParse::tokenizer::~tokenizer</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL__definition.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL__definition.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL__definition.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,33 @@
+<HTML>
+<HEAD>
+<TITLE>struct definition: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct definition: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL__version.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL__version.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSQL__version.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,34 @@
+<HTML>
+<HEAD>
+<TITLE>struct version: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct version: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>version - version</TH></TR><TR ><TD><A HREF="toSQL__version.html#version">toSQL::version::version</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSemaphore.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSemaphore.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSemaphore.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,39 @@
+<HTML>
+<HEAD>
+<TITLE>class toSemaphore: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSemaphore: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>down - getValue</TH></TR><TR ><TD><A HREF="toSemaphore.html#down">toSemaphore::down</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSemaphore.html#getValue">toSemaphore::getValue</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>init - ~toSemaphore</TH></TR><TR ><TD><A HREF="toSemaphore.html#init">toSemaphore::init</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSemaphore.html#toSemaphore">toSemaphore::toSemaphore</A></TD></TR>
+<TR ><TD><A HREF="toSemaphore.html#up">toSemaphore::up</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSemaphore.html#~toSemaphore">toSemaphore::~toSemaphore</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSettingTab.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSettingTab.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSettingTab.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,38 @@
+<HTML>
+<HEAD>
+<TITLE>class toSettingTab: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSettingTab: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>context - saveSetting</TH></TR><TR ><TD><A HREF="toHelpContext.html#context">toHelpContext::context</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSettingTab.html#saveSetting">toSettingTab::saveSetting</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>toHelpContext - ~toHelpContext</TH></TR><TR ><TD><A HREF="toHelpContext.html#toHelpContext">toHelpContext::toHelpContext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSettingTab.html#toSettingTab">toSettingTab::toSettingTab</A></TD></TR>
+<TR ><TD><A HREF="toHelpContext.html#~toHelpContext">toHelpContext::~toHelpContext</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,45 @@
+<HTML>
+<HEAD>
+<TITLE>class toSyntaxAnalyzer: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSyntaxAnalyzer: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>analyzeLine - getColor</TH></TR><TR ><TD><A HREF="toSyntaxAnalyzer.html#analyzeLine">toSyntaxAnalyzer::analyzeLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSyntaxAnalyzer.html#declareBlock">toSyntaxAnalyzer::declareBlock</A></TD></TR>
+<TR ><TD><A HREF="toSyntaxAnalyzer.html#defaultAnalyzer">toSyntaxAnalyzer::defaultAnalyzer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSyntaxAnalyzer.html#getColor">toSyntaxAnalyzer::getColor</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>isSymbol - reservedWord</TH></TR><TR ><TD><A HREF="toSyntaxAnalyzer.html#isSymbol">toSyntaxAnalyzer::isSymbol</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSyntaxAnalyzer.html#quoteCharacter">toSyntaxAnalyzer::quoteCharacter</A></TD></TR>
+<TR ><TD><A HREF="toSyntaxAnalyzer.html#readColor">toSyntaxAnalyzer::readColor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSyntaxAnalyzer.html#reservedWord">toSyntaxAnalyzer::reservedWord</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>toSyntaxAnalyzer - ~toSyntaxAnalyzer</TH></TR><TR ><TD><A HREF="toSyntaxAnalyzer.html#toSyntaxAnalyzer">toSyntaxAnalyzer::toSyntaxAnalyzer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSyntaxAnalyzer.html#typeString">toSyntaxAnalyzer::typeString</A></TD></TR>
+<TR ><TD><A HREF="toSyntaxAnalyzer.html#updateSettings">toSyntaxAnalyzer::updateSettings</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSyntaxAnalyzer.html#~toSyntaxAnalyzer">toSyntaxAnalyzer::~toSyntaxAnalyzer</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer__highlightInfo.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer__highlightInfo.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer__highlightInfo.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,34 @@
+<HTML>
+<HEAD>
+<TITLE>struct highlightInfo: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct highlightInfo: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>highlightInfo - highlightInfo</TH></TR><TR ><TD><A HREF="toSyntaxAnalyzer__highlightInfo.html#highlightInfo">toSyntaxAnalyzer::highlightInfo::highlightInfo</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer__posibleHit.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer__posibleHit.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toSyntaxAnalyzer__posibleHit.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,34 @@
+<HTML>
+<HEAD>
+<TITLE>struct posibleHit: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct posibleHit: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>posibleHit - posibleHit</TH></TR><TR ><TD><A HREF="toSyntaxAnalyzer__posibleHit.html#posibleHit">toSyntaxAnalyzer::posibleHit::posibleHit</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabBar.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabBar.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabBar.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,51 @@
+<HTML>
+<HEAD>
+<TITLE>class toTabBar: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTabBar: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addTab - keyboardFocusTab</TH></TR><TR ><TD><A HREF="toTabBar.html#addTab">toTabBar::addTab</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTabBar.html#copyTab">toTabBar::copyTab</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#currentTab">QTabBar::currentTab</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTabBar.html#insertTab">toTabBar::insertTab</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#isTabEnabled">QTabBar::isTabEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#keyboardFocusTab">QTabBar::keyboardFocusTab</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>layoutChanged - selectTab</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#layoutChanged">QTabBar::layoutChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTabBar.html#layoutTabs">toTabBar::layoutTabs</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#paintLabel">QTabBar::paintLabel</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTabBar.html#removeTab">toTabBar::removeTab</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#removeToolTip">QTabBar::removeToolTip</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#selectTab">QTabBar::selectTab</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setCurrentTab - toTabBar</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#setCurrentTab">QTabBar::setCurrentTab</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#setTabEnabled">QTabBar::setTabEnabled</A></TD></TR>
+<TR ><TD><A HREF="toTabBar.html#setTabShown">toTabBar::setTabShown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#tabAt">QTabBar::tabAt</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html#tabList">QTabBar::tabList</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTabBar.html#toTabBar">toTabBar::toTabBar</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabBar__barTab.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabBar__barTab.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabBar__barTab.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,34 @@
+<HTML>
+<HEAD>
+<TITLE>struct barTab: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct barTab: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>barTab - barTab</TH></TR><TR ><TD><A HREF="toTabBar__barTab.html#barTab">toTabBar::barTab::barTab</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabWidget.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabWidget.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTabWidget.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,50 @@
+<HTML>
+<HEAD>
+<TITLE>class toTabWidget: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTabWidget: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>currentPageIndex - setTabIconSet</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#currentPageIndex">QTabWidget::currentPageIndex</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTabWidget.html#hideTab">toTabWidget::hideTab</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#page">QTabWidget::page</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#removeTabToolTip">QTabWidget::removeTabToolTip</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setCurrentPage">QTabWidget::setCurrentPage</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setTabIconSet">QTabWidget::setTabIconSet</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setTabLabel - showTab</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setTabLabel">QTabWidget::setTabLabel</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setTabPosition">QTabWidget::setTabPosition</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setTabShape">QTabWidget::setTabShape</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTabWidget.html#setTabShown">toTabWidget::setTabShown</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#setTabToolTip">QTabWidget::setTabToolTip</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTabWidget.html#showTab">toTabWidget::showTab</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>tabIconSet - toTabWidget</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#tabIconSet">QTabWidget::tabIconSet</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#tabPosition">QTabWidget::tabPosition</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#tabShape">QTabWidget::tabShape</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html#tabToolTip">QTabWidget::tabToolTip</A></TD></TR>
+<TR ><TD><A HREF="toTabWidget.html#toTabWidget">toTabWidget::toTabWidget</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTask.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTask.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTask.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,35 @@
+<HTML>
+<HEAD>
+<TITLE>class toTask: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTask: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>run - ~toTask</TH></TR><TR ><TD><A HREF="toTask.html#run">toTask::run</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTask.html#~toTask">toTask::~toTask</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplate.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplate.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplate.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,53 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplate: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplate: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>canHandle - hideEvent</TH></TR><TR ><TD><A HREF="toTemplate.html#canHandle">toTemplate::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplate.html#closeFrame">toTemplate::closeFrame</A></TD></TR>
+<TR ><TD><A HREF="toTemplate.html#collapse">toTemplate::collapse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpContext.html#context">toHelpContext::context</A></TD></TR>
+<TR ><TD><A HREF="toTemplate.html#expand">toTemplate::expand</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplate.html#frame">toTemplate::frame</A></TD></TR>
+<TR ><TD><A HREF="toTemplate.html#hideEvent">toTemplate::hideEvent</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>hideTemplates - templateShown</TH></TR><TR ><TD><A HREF="toTemplate.html#hideTemplates">toTemplate::hideTemplates</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplate.html#parentWidget">toTemplate::parentWidget</A></TD></TR>
+<TR ><TD><A HREF="toTemplate.html#selected">toTemplate::selected</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplate.html#setWidget">toTemplate::setWidget</A></TD></TR>
+<TR ><TD><A HREF="toTemplate.html#showEvent">toTemplate::showEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplate.html#showResult">toTemplate::showResult</A></TD></TR>
+<TR ><TD><A HREF="toTemplate.html#templateShown">toTemplate::templateShown</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>templateWidget - ~toTemplate</TH></TR><TR ><TD><A HREF="toTemplate.html#templateWidget">toTemplate::templateWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpContext.html#toHelpContext">toHelpContext::toHelpContext</A></TD></TR>
+<TR ><TD><A HREF="toTemplate.html#toTemplate">toTemplate::toTemplate</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplate.html#widget">toTemplate::widget</A></TD></TR>
+<TR ><TD><A HREF="toHelpContext.html#~toHelpContext">toHelpContext::~toHelpContext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplate.html#~toTemplate">toTemplate::~toTemplate</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateItem.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateItem.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateItem.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,72 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplateItem: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplateItem: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>activatedPos - listView</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#activatedPos">QListViewItem::activatedPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#allText">toResultViewItem::allText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#cancelRename">QListViewItem::cancelRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#collapse">toTemplateItem::collapse</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#enforceSortOrder">QListViewItem::enforceSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#expand">toTemplateItem::expand</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#firstText">toResultViewItem::firstText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#invalidateHeight">QListViewItem::invalidateHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#isExpandable">QListViewItem::isExpandable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#itemAbove">QListViewItem::itemAbove</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#itemBelow">QListViewItem::itemBelow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#key">toResultViewItem::key</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#listView">QListViewItem::listView</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>moveItem - setMultiLinesEnabled</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#moveItem">QListViewItem::moveItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#multiLinesEnabled">QListViewItem::multiLinesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#okRename">QListViewItem::okRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#paintBranches">QListViewItem::paintBranches</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#paintCell">toResultViewItem::paintCell</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#parent">QListViewItem::parent</A></TD></TR>
+<TR ><TD><A HREF="toTemplateItem.html#provider">toTemplateItem::provider</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#realWidth">toResultViewItem::realWidth</A></TD></TR>
+<TR ><TD><A HREF="toTemplateItem.html#selected">toTemplateItem::selected</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#selectedWidget">toTemplateItem::selectedWidget</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setExpandable">QListViewItem::setExpandable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setHeight">QListViewItem::setHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setMultiLinesEnabled">QListViewItem::setMultiLinesEnabled</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setSelected - ~toResultViewItem</TH></TR><TR ><TD><A HREF="toTemplateItem.html#setSelected">toTemplateItem::setSelected</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#setText">toResultViewItem::setText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setup">QListViewItem::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#sortChildItems">QListViewItem::sortChildItems</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#startRename">QListViewItem::startRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#text">toResultViewItem::text</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#toResultViewItem">toResultViewItem::toResultViewItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#toTemplateItem">toTemplateItem::toTemplateItem</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#tooltip">toResultViewItem::tooltip</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#totalHeight">QListViewItem::totalHeight</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#width">toResultViewItem::width</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#widthChanged">QListViewItem::widthChanged</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#~toResultViewItem">toResultViewItem::~toResultViewItem</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateProvider.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateProvider.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateProvider.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplateProvider: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplateProvider: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>exportAllData - importData</TH></TR><TR ><TD><A HREF="toTemplateProvider.html#exportAllData">toTemplateProvider::exportAllData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateProvider.html#exportData">toTemplateProvider::exportData</A></TD></TR>
+<TR ><TD><A HREF="toTemplateProvider.html#importAllData">toTemplateProvider::importAllData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateProvider.html#importData">toTemplateProvider::importData</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>insertItems - ~toTemplateProvider</TH></TR><TR ><TD><A HREF="toTemplateProvider.html#insertItems">toTemplateProvider::insertItems</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateProvider.html#name">toTemplateProvider::name</A></TD></TR>
+<TR ><TD><A HREF="toTemplateProvider.html#setShown">toTemplateProvider::setShown</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateProvider.html#setToolKey">toTemplateProvider::setToolKey</A></TD></TR>
+<TR ><TD><A HREF="toTemplateProvider.html#toTemplateProvider">toTemplateProvider::toTemplateProvider</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateProvider.html#~toTemplateProvider">toTemplateProvider::~toTemplateProvider</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateSQL.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateSQL.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateSQL.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,76 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplateSQL: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplateSQL: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>activatedPos - listView</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#activatedPos">QListViewItem::activatedPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#allText">toResultViewItem::allText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#cancelRename">QListViewItem::cancelRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#collapse">toTemplateItem::collapse</A></TD></TR>
+<TR ><TD><A HREF="toTemplateSQL.html#connection">toTemplateSQL::connection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateSQL.html#createChild">toTemplateSQL::createChild</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#enforceSortOrder">QListViewItem::enforceSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateSQL.html#expand">toTemplateSQL::expand</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#firstText">toResultViewItem::firstText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#invalidateHeight">QListViewItem::invalidateHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#isExpandable">QListViewItem::isExpandable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#itemAbove">QListViewItem::itemAbove</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#itemBelow">QListViewItem::itemBelow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#key">toResultViewItem::key</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#listView">QListViewItem::listView</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>moveItem - setSelected</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#moveItem">QListViewItem::moveItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#multiLinesEnabled">QListViewItem::multiLinesEnabled</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#okRename">QListViewItem::okRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#paintBranches">QListViewItem::paintBranches</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#paintCell">toResultViewItem::paintCell</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateSQL.html#parameters">toTemplateSQL::parameters</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#parent">QListViewItem::parent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#provider">toTemplateItem::provider</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#realWidth">toResultViewItem::realWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#selected">toTemplateItem::selected</A></TD></TR>
+<TR ><TD><A HREF="toTemplateItem.html#selectedWidget">toTemplateItem::selectedWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setExpandable">QListViewItem::setExpandable</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setHeight">QListViewItem::setHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setMultiLinesEnabled">QListViewItem::setMultiLinesEnabled</A></TD></TR>
+<TR ><TD><A HREF="toTemplateItem.html#setSelected">toTemplateItem::setSelected</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setText - ~toResultViewItem</TH></TR><TR ><TD><A HREF="toResultViewItem.html#setText">toResultViewItem::setText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setup">QListViewItem::setup</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#sortChildItems">QListViewItem::sortChildItems</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#startRename">QListViewItem::startRename</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#text">toResultViewItem::text</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#toResultViewItem">toResultViewItem::toResultViewItem</A></TD></TR>
+<TR ><TD><A HREF="toTemplateItem.html#toTemplateItem">toTemplateItem::toTemplateItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateSQL.html#toTemplateSQL">toTemplateSQL::toTemplateSQL</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#tooltip">toResultViewItem::tooltip</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#totalHeight">QListViewItem::totalHeight</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#width">toResultViewItem::width</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#widthChanged">QListViewItem::widthChanged</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#~toResultViewItem">toResultViewItem::~toResultViewItem</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateSQLObject.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateSQLObject.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateSQLObject.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplateSQLObject: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplateSQLObject: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>blockSignals - event</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#blockSignals">QObject::blockSignals</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#checkConnectArgs">QObject::checkConnectArgs</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#children">QObject::children</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#connectNotify">QObject::connectNotify</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#customEvent">QObject::customEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#deleteLater">QObject::deleteLater</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#destroyed">QObject::destroyed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnect">QObject::disconnect</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnectNotify">QObject::disconnectNotify</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectInfo">QObject::dumpObjectInfo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectTree">QObject::dumpObjectTree</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#event">QObject::event</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>expand - qt_find_obj_child</TH></TR><TR ><TD><A HREF="toTemplateSQLObject.html#expand">toTemplateSQLObject::expand</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#highPriority">QObject::highPriority</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#insertChild">QObject::insertChild</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#installEventFilter">QObject::installEventFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isA">QObject::isA</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isWidgetType">QObject::isWidgetType</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimer">QObject::killTimer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimers">QObject::killTimers</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#normalizeSignalSlot">QObject::normalizeSignalSlot</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#objectTrees">QObject::objectTrees</A></TD></TR>
+<TR ><TD><A HREF="toTemplateSQLObject.html#poll">toTemplateSQLObject::poll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#qt_find_obj_child">QObject::qt_find_obj_child</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>queryList - ~toTemplateSQLObject</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#queryList">QObject::queryList</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#removeEventFilter">QObject::removeEventFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#sender">QObject::sender</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#setProperty">QObject::setProperty</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#signalsBlocked">QObject::signalsBlocked</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#startTimer">QObject::startTimer</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#timerEvent">QObject::timerEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateSQLObject.html#toTemplateSQLObject">toTemplateSQLObject::toTemplateSQLObject</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#tr">QObject::tr</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#trUtf8">QObject::trUtf8</A></TD></TR>
+<TR ><TD><A HREF="toTemplateSQLObject.html#~toTemplateSQLObject">toTemplateSQLObject::~toTemplateSQLObject</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateText.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateText.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTemplateText.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,73 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplateText: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplateText: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>activatedPos - moveItem</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#activatedPos">QListViewItem::activatedPos</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#allText">toResultViewItem::allText</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#cancelRename">QListViewItem::cancelRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#collapse">toTemplateItem::collapse</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#enforceSortOrder">QListViewItem::enforceSortOrder</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#expand">toTemplateItem::expand</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#firstText">toResultViewItem::firstText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#invalidateHeight">QListViewItem::invalidateHeight</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#isExpandable">QListViewItem::isExpandable</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#itemAbove">QListViewItem::itemAbove</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#itemBelow">QListViewItem::itemBelow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#key">toResultViewItem::key</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#listView">QListViewItem::listView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#moveItem">QListViewItem::moveItem</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>multiLinesEnabled - setText</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#multiLinesEnabled">QListViewItem::multiLinesEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#okRename">QListViewItem::okRename</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#paintBranches">QListViewItem::paintBranches</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#paintCell">toResultViewItem::paintCell</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#parent">QListViewItem::parent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#provider">toTemplateItem::provider</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#realWidth">toResultViewItem::realWidth</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#selected">toTemplateItem::selected</A></TD></TR>
+<TR ><TD><A HREF="toTemplateText.html#selectedWidget">toTemplateText::selectedWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setExpandable">QListViewItem::setExpandable</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setHeight">QListViewItem::setHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setMultiLinesEnabled">QListViewItem::setMultiLinesEnabled</A></TD></TR>
+<TR ><TD><A HREF="toTemplateItem.html#setSelected">toTemplateItem::setSelected</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#setText">toResultViewItem::setText</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>setup - ~toResultViewItem</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setup">QListViewItem::setup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#sortChildItems">QListViewItem::sortChildItems</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#startRename">QListViewItem::startRename</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#text">toResultViewItem::text</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem.html#toResultViewItem">toResultViewItem::toResultViewItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateItem.html#toTemplateItem">toTemplateItem::toTemplateItem</A></TD></TR>
+<TR ><TD><A HREF="toTemplateText.html#toTemplateText">toTemplateText::toTemplateText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#tooltip">toResultViewItem::tooltip</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#totalHeight">QListViewItem::totalHeight</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#width">toResultViewItem::width</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#widthChanged">QListViewItem::widthChanged</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html#~toResultViewItem">toResultViewItem::~toResultViewItem</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTextView.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTextView.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTextView.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+<HTML>
+<HEAD>
+<TITLE>class toTextView: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTextView: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>addHandler - editSave</TH></TR><TR ><TD><A HREF="toEditWidget.html#addHandler">toEditWidget::addHandler</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#copyEnabled">toEditWidget::copyEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#cutEnabled">toEditWidget::cutEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#delHandler">toEditWidget::delHandler</A></TD></TR>
+<TR ><TD><A HREF="toTextView.html#editCopy">toTextView::editCopy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editCut">toEditWidget::editCut</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editOpen">toEditWidget::editOpen</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editPaste">toEditWidget::editPaste</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editPrint">toEditWidget::editPrint</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editReadAll">toEditWidget::editReadAll</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#editRedo">toEditWidget::editRedo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTextView.html#editSave">toTextView::editSave</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>editSelectAll - searchCanReplace</TH></TR><TR ><TD><A HREF="toTextView.html#editSelectAll">toTextView::editSelectAll</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#editUndo">toEditWidget::editUndo</A></TD></TR>
+<TR ><TD><A HREF="toTextView.html#focusInEvent">toTextView::focusInEvent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#lostFocus">toEditWidget::lostFocus</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#openEnabled">toEditWidget::openEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#pasteEnabled">toEditWidget::pasteEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#printEnabled">toEditWidget::printEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#readAllEnabled">toEditWidget::readAllEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#receivedFocus">toEditWidget::receivedFocus</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#redoEnabled">toEditWidget::redoEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#saveEnabled">toEditWidget::saveEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchCanReplace">toEditWidget::searchCanReplace</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>searchEnabled - ~toEditWidget</TH></TR><TR ><TD><A HREF="toEditWidget.html#searchEnabled">toEditWidget::searchEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchNext">toEditWidget::searchNext</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#searchReplace">toEditWidget::searchReplace</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#searchTop">toEditWidget::searchTop</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#selectAllEnabled">toEditWidget::selectAllEnabled</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#setEdit">toEditWidget::setEdit</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#setMainSettings">toEditWidget::setMainSettings</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#toEditWidget">toEditWidget::toEditWidget</A></TD></TR>
+<TR ><TD><A HREF="toTextView.html#toTextView">toTextView::toTextView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html#undoEnabled">toEditWidget::undoEnabled</A></TD></TR>
+<TR ><TD><A HREF="toEditWidget.html#~toEditWidget">toEditWidget::~toEditWidget</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toThread.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toThread.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toThread.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,41 @@
+<HTML>
+<HEAD>
+<TITLE>class toThread: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toThread: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>initAttr - msleep</TH></TR><TR ><TD><A HREF="toThread.html#initAttr">toThread::initAttr</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toThread.html#mainThread">toThread::mainThread</A></TD></TR>
+<TR ><TD><A HREF="toThread.html#msleep">toThread::msleep</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>start - ~toThread</TH></TR><TR ><TD><A HREF="toThread.html#start">toThread::start</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toThread.html#startAsync">toThread::startAsync</A></TD></TR>
+<TR ><TD><A HREF="toThread.html#toThread">toThread::toThread</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toThread.html#toThreadStartWrapper">toThread::toThreadStartWrapper</A></TD></TR>
+<TR ><TD><A HREF="toThread.html#~toThread">toThread::~toThread</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toThread__taskRunner.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toThread__taskRunner.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toThread__taskRunner.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,41 @@
+<HTML>
+<HEAD>
+<TITLE>class taskRunner: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class taskRunner: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>currentThread - run</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qthread.html#currentThread">QThread::currentThread</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qthread.html#msleep">QThread::msleep</A></TD></TR>
+<TR ><TD><A HREF="toThread__taskRunner.html#run">toThread::taskRunner::run</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>sleep - wait</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qthread.html#sleep">QThread::sleep</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toThread__taskRunner.html#taskRunner">toThread::taskRunner::taskRunner</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qthread.html#terminate">QThread::terminate</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qthread.html#usleep">QThread::usleep</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qthread.html#wait">QThread::wait</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTimer.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTimer.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTimer.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,40 @@
+<HTML>
+<HEAD>
+<TITLE>class toTimer: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTimer: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>changeInterval - singleShot</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtimer.html#changeInterval">QTimer::changeInterval</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTimer.html#lastTimer">toTimer::lastTimer</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtimer.html#singleShot">QTimer::singleShot</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>start - toTimer</TH></TR><TR ><TD><A HREF="toTimer.html#start">toTimer::start</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qtimer.html#timeout">QTimer::timeout</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qtimer.html#timerId">QTimer::timerId</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTimer.html#toTimer">toTimer::toTimer</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTool.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTool.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toTool.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,92 @@
+<HTML>
+<HEAD>
+<TITLE>class toTool: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTool: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>about - globalConfig</TH></TR><TR ><TD><A HREF="toTool.html#about">toTool::about</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#blockSignals">QObject::blockSignals</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#canHandle">toTool::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#checkConnectArgs">QObject::checkConnectArgs</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#children">QObject::children</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#config">toTool::config</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#configurationTab">toTool::configurationTab</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#connectNotify">QObject::connectNotify</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#createWindow">toTool::createWindow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#customEvent">QObject::customEvent</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#customSetup">toTool::customSetup</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#deleteLater">QObject::deleteLater</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#destroyed">QObject::destroyed</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnect">QObject::disconnect</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#disconnectNotify">QObject::disconnectNotify</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectInfo">QObject::dumpObjectInfo</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#dumpObjectTree">QObject::dumpObjectTree</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#eraseConfig">toTool::eraseConfig</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#event">QObject::event</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#globalConfig">toTool::globalConfig</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>globalEraseConfig - qt_find_obj_child</TH></TR><TR ><TD><A HREF="toTool.html#globalEraseConfig">toTool::globalEraseConfig</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#globalSetConfig">toTool::globalSetConfig</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#hasAbout">toTool::hasAbout</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#highPriority">QObject::highPriority</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#insertChild">QObject::insertChild</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#installEventFilter">QObject::installEventFilter</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isA">QObject::isA</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#isWidgetType">QObject::isWidgetType</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#key">toTool::key</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimer">QObject::killTimer</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#killTimers">QObject::killTimers</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#loadConfig">toTool::loadConfig</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#loadMap">toTool::loadMap</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#menuItem">toTool::menuItem</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#name">toTool::name</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#normalizeSignalSlot">QObject::normalizeSignalSlot</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#objectTrees">QObject::objectTrees</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#pictureXPM">toTool::pictureXPM</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#priority">toTool::priority</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#qt_find_obj_child">QObject::qt_find_obj_child</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>queryList - ~toTool</TH></TR><TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#queryList">QObject::queryList</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#removeEventFilter">QObject::removeEventFilter</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#saveConfig">toTool::saveConfig</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#saveMap">toTool::saveMap</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#sender">QObject::sender</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#setConfig">toTool::setConfig</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#setProperty">QObject::setProperty</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#signalsBlocked">QObject::signalsBlocked</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#startTimer">QObject::startTimer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#timerEvent">QObject::timerEvent</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#toTool">toTool::toTool</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#tool">toTool::tool</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#toolWindow">toTool::toolWindow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#toolbarImage">toTool::toolbarImage</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#toolbarTip">toTool::toolbarTip</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTool.html#tools">toTool::tools</A></TD></TR>
+<TR ><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#tr">QObject::tr</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html#trUtf8">QObject::trUtf8</A></TD></TR>
+<TR ><TD><A HREF="toTool.html#~toTool">toTool::~toTool</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toToolWidget.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toToolWidget.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toToolWidget.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,49 @@
+<HTML>
+<HEAD>
+<TITLE>class toToolWidget: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toToolWidget: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>canHandle - importData</TH></TR><TR ><TD><A HREF="toToolWidget.html#canHandle">toToolWidget::canHandle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toToolWidget.html#connection">toToolWidget::connection</A></TD></TR>
+<TR ><TD><A HREF="toToolWidget.html#connectionChange">toToolWidget::connectionChange</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpContext.html#context">toHelpContext::context</A></TD></TR>
+<TR ><TD><A HREF="toToolWidget.html#exportData">toToolWidget::exportData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toToolWidget.html#importData">toToolWidget::importData</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>parentConnection - toToolWidget</TH></TR><TR ><TD><A HREF="toToolWidget.html#parentConnection">toToolWidget::parentConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toToolWidget.html#setConnection">toToolWidget::setConnection</A></TD></TR>
+<TR ><TD><A HREF="toToolWidget.html#timer">toToolWidget::timer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionWidget.html#toConnectionWidget">toConnectionWidget::toConnectionWidget</A></TD></TR>
+<TR ><TD><A HREF="toHelpContext.html#toHelpContext">toHelpContext::toHelpContext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toToolWidget.html#toToolWidget">toToolWidget::toToolWidget</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>tool - ~toToolWidget</TH></TR><TR ><TD><A HREF="toToolWidget.html#tool">toToolWidget::tool</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionWidget.html#~toConnectionWidget">toConnectionWidget::~toConnectionWidget</A></TD></TR>
+<TR ><TD><A HREF="toHelpContext.html#~toHelpContext">toHelpContext::~toHelpContext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toToolWidget.html#~toToolWidget">toToolWidget::~toToolWidget</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toVisualize.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toVisualize.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/full-list-toVisualize.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,35 @@
+<HTML>
+<HEAD>
+<TITLE>class toVisualize: All methods</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toVisualize: All methods</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>display - toVisualize</TH></TR><TR ><TD><A HREF="toVisualize.html#display">toVisualize::display</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toVisualize.html#toVisualize">toVisualize::toVisualize</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/header-list.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/header-list.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/header-list.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,90 @@
+<HTML>
+<HEAD>
+<TITLE>tora File Index</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>tora File Index</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>tobackground.h - tomarkedtext.2.h</TH></TR><TR ><TD><A HREF="tobackground_h.html">tobackground.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="tobarchart_h.html">tobarchart.h</A></TD></TR>
+<TR ><TD><A HREF="tochangeconnection_h.html">tochangeconnection.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toconf_h.html">toconf.h</A></TD></TR>
+<TR ><TD><A HREF="toconnection_h.html">toconnection.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="todatatype_h.html">todatatype.h</A></TD></TR>
+<TR ><TD><A HREF="todefaultkeywords_h.html">todefaultkeywords.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toeditwidget_h.html">toeditwidget.h</A></TD></TR>
+<TR ><TD><A HREF="toextract_h.html">toextract.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="tofilesize_h.html">tofilesize.h</A></TD></TR>
+<TR ><TD><A HREF="tohelp_h.html">tohelp.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="tohelpbrowser_h.html">tohelpbrowser.h</A></TD></TR>
+<TR ><TD><A HREF="tohighlightedtext_h.html">tohighlightedtext.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="tohtml_h.html">tohtml.h</A></TD></TR>
+<TR ><TD><A HREF="tolegendchart_h.html">tolegendchart.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="tolinechart_h.html">tolinechart.h</A></TD></TR>
+<TR ><TD><A HREF="tomain_h.html">tomain.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="tomainwindow_kde_h.html">tomainwindow.kde.h</A></TD></TR>
+<TR ><TD><A HREF="tomarkedtext_2_h.html">tomarkedtext.2.h</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>tomarkedtext.h - toresultline.h</TH></TR><TR ><TD><A HREF="tomarkedtext_h.html">tomarkedtext.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="tomemoeditor_h.html">tomemoeditor.h</A></TD></TR>
+<TR ><TD><A HREF="tonoblockquery_h.html">tonoblockquery.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toparamget_h.html">toparamget.h</A></TD></TR>
+<TR ><TD><A HREF="topiechart_h.html">topiechart.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toqvalue_h.html">toqvalue.h</A></TD></TR>
+<TR ><TD><A HREF="toreport_h.html">toreport.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toresult_h.html">toresult.h</A></TD></TR>
+<TR ><TD><A HREF="toresultbar_h.html">toresultbar.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toresultcols_h.html">toresultcols.h</A></TD></TR>
+<TR ><TD><A HREF="toresultcombo_h.html">toresultcombo.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toresultconstraint_h.html">toresultconstraint.h</A></TD></TR>
+<TR ><TD><A HREF="toresultcontent_h.html">toresultcontent.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toresultdepend_h.html">toresultdepend.h</A></TD></TR>
+<TR ><TD><A HREF="toresultfield_h.html">toresultfield.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toresultindexes_h.html">toresultindexes.h</A></TD></TR>
+<TR ><TD><A HREF="toresultitem_h.html">toresultitem.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toresultlabel_h.html">toresultlabel.h</A></TD></TR>
+<TR ><TD><A HREF="toresultline_h.html">toresultline.h</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>toresultlong.h - utils.h</TH></TR><TR ><TD><A HREF="toresultlong_h.html">toresultlong.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toresultpie_h.html">toresultpie.h</A></TD></TR>
+<TR ><TD><A HREF="toresultplan_h.html">toresultplan.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toresultreferences_h.html">toresultreferences.h</A></TD></TR>
+<TR ><TD><A HREF="toresultresources_h.html">toresultresources.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toresultstats_h.html">toresultstats.h</A></TD></TR>
+<TR ><TD><A HREF="toresultview_h.html">toresultview.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="tosgastatement_h.html">tosgastatement.h</A></TD></TR>
+<TR ><TD><A HREF="tosmtp_h.html">tosmtp.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="tosql_h.html">tosql.h</A></TD></TR>
+<TR ><TD><A HREF="tosqlparse_h.html">tosqlparse.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="totabwidget_h.html">totabwidget.h</A></TD></TR>
+<TR ><TD><A HREF="totemplate_h.html">totemplate.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="totextview_h.html">totextview.h</A></TD></TR>
+<TR ><TD><A HREF="tothread_h.html">tothread.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="totool_h.html">totool.h</A></TD></TR>
+<TR ><TD><A HREF="tovisualize_h.html">tovisualize.h</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="utils_h.html">utils.h</A></TD></TR>
+</TABLE></TD></TR></TABLE></UL>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/hier.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/hier.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/hier.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,281 @@
+<HTML>
+<HEAD>
+<TITLE>tora Class Hierarchy</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>tora Class Hierarchy</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<UL><LI>KDockMainWindow  (unknown)
+<UL><LI><A HREF="toMainWindow.html">toMainWindow</A> 
+<UL><LI><A HREF="toMain.html">toMain</A> 
+</UL></LI>
+</UL></LI>
+<LI>KHTMLPart  (unknown)
+<UL><LI><A HREF="toHelpBrowser.html">toHelpBrowser</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qbuttongroup.html">QButtonGroup</A>  (qt)
+<UL><LI><A HREF="toFilesize.html">toFilesize</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qchecklistitem.html">QCheckListItem</A>  (qt)
+<UL><LI><A HREF="toResultViewCheck.html">toResultViewCheck</A> 
+<UL><LI><A HREF="toResultViewMLCheck.html">toResultViewMLCheck</A> 
+</UL></LI>
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qcombobox.html">QComboBox</A>  (qt)
+<UL><LI><A HREF="toResultCombo.html">toResultCombo</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qdialog.html">QDialog</A>  (qt)
+<UL><LI><A HREF="toHelp.html">toHelp</A> 
+<LI><A HREF="toMemoEditor.html">toMemoEditor</A> 
+<UL><LI><A HREF="toResultContentMemo.html">toResultContentMemo</A> 
+</UL></LI>
+<LI><A HREF="toParamGet.html">toParamGet</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qfiledialog.html">QFileDialog</A>  (qt)
+<UL><LI><A HREF="TOFileDialog.html">TOFileDialog</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qhbox.html">QHBox</A>  (qt)
+<UL><LI><A HREF="toDatatype.html">toDatatype</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qlabel.html">QLabel</A>  (qt)
+<UL><LI><A HREF="toResultLabel.html">toResultLabel</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qlineedit.html">QLineEdit</A>  (qt)
+<UL><LI><A HREF="toResultColsComment.html">toResultColsComment</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A>  (qt)
+<UL><LI><A HREF="toListView.html">toListView</A> 
+<UL><LI><A HREF="toResultCols__resultCols.html">toResultCols::resultCols</A> 
+<LI><A HREF="toResultView.html">toResultView</A> 
+<UL><LI><A HREF="toResultConstraint.html">toResultConstraint</A> 
+<LI><A HREF="toResultDepend.html">toResultDepend</A> 
+<LI><A HREF="toResultIndexes.html">toResultIndexes</A> 
+<LI><A HREF="toResultLong.html">toResultLong</A> 
+<LI><A HREF="toResultPlan.html">toResultPlan</A> 
+<LI><A HREF="toResultReferences.html">toResultReferences</A> 
+<LI><A HREF="toResultStats.html">toResultStats</A> 
+</UL></LI>
+</UL></LI>
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A>  (qt)
+<UL><LI><A HREF="toResultViewItem.html">toResultViewItem</A> 
+<UL><LI><A HREF="toResultViewMLine.html">toResultViewMLine</A> 
+<LI><A HREF="toTemplateItem.html">toTemplateItem</A> 
+<UL><LI><A HREF="toTemplateSQL.html">toTemplateSQL</A> 
+<LI><A HREF="toTemplateText.html">toTemplateText</A> 
+</UL></LI>
+</UL></LI>
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qmessagebox.html">QMessageBox</A>  (qt)
+<UL><LI><A HREF="TOMessageBox.html">TOMessageBox</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html">QMultiLineEdit</A>  (qt)
+<UL><LI><A HREF="toMultiLineEdit.html">toMultiLineEdit</A> 
+<UL><LI><A HREF="toMarkedText.html">toMarkedText</A> 
+<UL><LI><A HREF="toHighlightedText.html">toHighlightedText</A> 
+<UL><LI><A HREF="toResultField.html">toResultField</A> 
+</UL></LI>
+</UL></LI>
+</UL></LI>
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A>  (qt)
+<UL><LI><A HREF="toPieConnector.html">toPieConnector</A> 
+<LI><A HREF="toResultObject.html">toResultObject</A> 
+<LI><A HREF="toSMTP.html">toSMTP</A> 
+<LI><A HREF="toTemplateSQLObject.html">toTemplateSQLObject</A> 
+<LI><i><A HREF="toTool.html">toTool</A></i> 
+<UL><LI><A HREF="toHelpTool.html">toHelpTool</A> 
+</UL></LI>
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qprinter.html">QPrinter</A>  (qt)
+<UL><LI><A HREF="TOPrinter.html">TOPrinter</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qpushbutton.html">QPushButton</A>  (qt)
+<UL><LI><A HREF="toParamGetButton.html">toParamGetButton</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qscrollview.html">QScrollView</A>  (qt)
+<UL><LI><A HREF="toResultContentSingle.html">toResultContentSingle</A> 
+<LI><A HREF="toResultItem.html">toResultItem</A> 
+<UL><LI><A HREF="toResultCols__resultColsEdit.html">toResultCols::resultColsEdit</A> 
+<LI><A HREF="toResultResources.html">toResultResources</A> 
+</UL></LI>
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  (qt)
+<UL><LI><A HREF="toConnection__exception.html">toConnection::exception</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qtabbar.html">QTabBar</A>  (qt)
+<UL><LI><A HREF="toTabBar.html">toTabBar</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html">QTabWidget</A>  (qt)
+<UL><LI><A HREF="toSGAStatement.html">toSGAStatement</A> 
+<LI><A HREF="toTabWidget.html">toTabWidget</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qtable.html">QTable</A>  (qt)
+<UL><LI><A HREF="toResultContentEditor.html">toResultContentEditor</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qtableitem.html">QTableItem</A>  (qt)
+<UL><LI><A HREF="toResultContentEditor__contentItem.html">toResultContentEditor::contentItem</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qtextview.html">QTextView</A>  (qt)
+<UL><LI><A HREF="toTextView.html">toTextView</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qthread.html">QThread</A>  (qt)
+<UL><LI><A HREF="toThread__taskRunner.html">toThread::taskRunner</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qtimer.html">QTimer</A>  (qt)
+<UL><LI><A HREF="toTimer.html">toTimer</A> 
+<UL><LI><A HREF="toBackground.html">toBackground</A> 
+</UL></LI>
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html">QToolButton</A>  (qt)
+<UL><LI><A HREF="toPopupButton.html">toPopupButton</A> 
+<UL><LI><A HREF="toChangeConnection.html">toChangeConnection</A> 
+</UL></LI>
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qvbox.html">QVBox</A>  (qt)
+<UL><LI><A HREF="toResultCols.html">toResultCols</A> 
+<LI><A HREF="toResultContent.html">toResultContent</A> 
+<LI><A HREF="toTemplate.html">toTemplate</A> 
+<LI><A HREF="toToolWidget.html">toToolWidget</A> 
+<LI><A HREF="toVisualize.html">toVisualize</A> 
+</UL></LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A>  (qt)
+<UL><LI><A HREF="TODock.html">TODock</A> 
+<LI><A HREF="toLegendChart.html">toLegendChart</A> 
+<LI><A HREF="toLineChart.html">toLineChart</A> 
+<UL><LI><A HREF="toBarChart.html">toBarChart</A> 
+<UL><LI><A HREF="toResultBar.html">toResultBar</A> 
+</UL></LI>
+<LI><A HREF="toResultLine.html">toResultLine</A> 
+</UL></LI>
+<LI><A HREF="toPieChart.html">toPieChart</A> 
+<UL><LI><A HREF="toResultPie.html">toResultPie</A> 
+</UL></LI>
+</UL></LI>
+<LI><A HREF="toTabBar__barTab.html">toTabBar::barTab</A> 
+<LI><A HREF="toExtract__columnInfo.html">toExtract::columnInfo</A> 
+<LI><i><A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A></i> 
+<LI><A HREF="toExtract__datatype.html">toExtract::datatype</A> 
+<LI><A HREF="toSQL__definition.html">toSQL::definition</A> 
+<LI><i><A HREF="toEditWidget__editHandler.html">toEditWidget::editHandler</A></i> 
+<LI><A HREF="toExtract__extractor.html">toExtract::extractor</A> 
+<LI><A HREF="toSyntaxAnalyzer__highlightInfo.html">toSyntaxAnalyzer::highlightInfo</A> 
+<LI><A HREF="toResultViewItem__keyData.html">toResultViewItem::keyData</A> 
+<LI><A HREF="toResultViewCheck__keyData.html">toResultViewCheck::keyData</A> 
+<LI><A HREF="toConnection__objectName.html">toConnection::objectName</A> 
+<LI><A HREF="toSyntaxAnalyzer__posibleHit.html">toSyntaxAnalyzer::posibleHit</A> 
+<LI><A HREF="toQuery__queryDescribe.html">toQuery::queryDescribe</A> 
+<LI><i><A HREF="toQuery__queryImpl.html">toQuery::queryImpl</A></i> 
+<LI><A HREF="toQValue__queryValue.html">toQValue::queryValue</A> 
+<LI><A HREF="toSQLParse__settings.html">toSQLParse::settings</A> 
+<LI><A HREF="toSQLParse__statement.html">toSQLParse::statement</A> 
+<LI><A HREF="toBusy.html">toBusy</A> 
+<LI><A HREF="toConnection.html">toConnection</A> 
+<LI><i><A HREF="toConnectionProvider.html">toConnectionProvider</A></i> 
+<LI><A HREF="toConnectionSub.html">toConnectionSub</A> 
+<LI><A HREF="toConnectionWidget.html">toConnectionWidget</A> 
+<UL><LI><A HREF="toToolWidget.html">toToolWidget</A> 
+</UL></LI>
+<LI><A HREF="toEditWidget.html">toEditWidget</A> 
+<UL><LI><A HREF="toListView.html">toListView</A> 
+<UL><LI><A HREF="toResultCols__resultCols.html">toResultCols::resultCols</A> 
+<LI><A HREF="toResultView.html">toResultView</A> 
+<UL><LI><A HREF="toResultConstraint.html">toResultConstraint</A> 
+<LI><A HREF="toResultDepend.html">toResultDepend</A> 
+<LI><A HREF="toResultIndexes.html">toResultIndexes</A> 
+<LI><A HREF="toResultLong.html">toResultLong</A> 
+<LI><A HREF="toResultPlan.html">toResultPlan</A> 
+<LI><A HREF="toResultReferences.html">toResultReferences</A> 
+<LI><A HREF="toResultStats.html">toResultStats</A> 
+</UL></LI>
+</UL></LI>
+<LI><A HREF="toMarkedText.html">toMarkedText</A> 
+<UL><LI><A HREF="toHighlightedText.html">toHighlightedText</A> 
+<UL><LI><A HREF="toResultField.html">toResultField</A> 
+</UL></LI>
+</UL></LI>
+<LI><A HREF="toResultContentEditor.html">toResultContentEditor</A> 
+<LI><A HREF="toTextView.html">toTextView</A> 
+</UL></LI>
+<LI><A HREF="toExtract.html">toExtract</A> 
+<LI><A HREF="toHelpContext.html">toHelpContext</A> 
+<UL><LI><A HREF="toParamGet.html">toParamGet</A> 
+<LI><i><A HREF="toSettingTab.html">toSettingTab</A></i> 
+<LI><A HREF="toTemplate.html">toTemplate</A> 
+<LI><A HREF="toToolWidget.html">toToolWidget</A> 
+</UL></LI>
+<LI><A HREF="toHtml.html">toHtml</A> 
+<LI><A HREF="toLock.html">toLock</A> 
+<LI><A HREF="toLocker.html">toLocker</A> 
+<LI><A HREF="toNoBlockQuery.html">toNoBlockQuery</A> 
+<LI><A HREF="toQValue.html">toQValue</A> 
+<LI><A HREF="toQuery.html">toQuery</A> 
+<LI><i><A HREF="toResult.html">toResult</A></i> 
+<UL><LI><A HREF="toResultBar.html">toResultBar</A> 
+<LI><A HREF="toResultCols.html">toResultCols</A> 
+<LI><A HREF="toResultCombo.html">toResultCombo</A> 
+<LI><A HREF="toResultContent.html">toResultContent</A> 
+<LI><A HREF="toResultField.html">toResultField</A> 
+<LI><A HREF="toResultItem.html">toResultItem</A> 
+<UL><LI><A HREF="toResultCols__resultColsEdit.html">toResultCols::resultColsEdit</A> 
+<LI><A HREF="toResultResources.html">toResultResources</A> 
+</UL></LI>
+<LI><A HREF="toResultLabel.html">toResultLabel</A> 
+<LI><A HREF="toResultLine.html">toResultLine</A> 
+<LI><A HREF="toResultPie.html">toResultPie</A> 
+<LI><A HREF="toResultView.html">toResultView</A> 
+<UL><LI><A HREF="toResultConstraint.html">toResultConstraint</A> 
+<LI><A HREF="toResultDepend.html">toResultDepend</A> 
+<LI><A HREF="toResultIndexes.html">toResultIndexes</A> 
+<LI><A HREF="toResultLong.html">toResultLong</A> 
+<LI><A HREF="toResultPlan.html">toResultPlan</A> 
+<LI><A HREF="toResultReferences.html">toResultReferences</A> 
+<LI><A HREF="toResultStats.html">toResultStats</A> 
+</UL></LI>
+</UL></LI>
+<LI><i><A HREF="toResultFilter.html">toResultFilter</A></i> 
+<LI>toResultListFormatUI  (unknown)
+<UL><LI><A HREF="toResultListFormat.html">toResultListFormat</A> 
+</UL></LI>
+<LI><A HREF="toSQL.html">toSQL</A> 
+<LI><A HREF="toSQLParse.html">toSQLParse</A> 
+<LI><A HREF="toSemaphore.html">toSemaphore</A> 
+<LI><A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> 
+<LI><i><A HREF="toTask.html">toTask</A></i> 
+<UL><LI><A HREF="toConnection__cacheObjects.html">toConnection::cacheObjects</A> 
+<LI><A HREF="toNoBlockQuery__queryTask.html">toNoBlockQuery::queryTask</A> 
+</UL></LI>
+<LI><i><A HREF="toTemplateProvider.html">toTemplateProvider</A></i> 
+<LI><A HREF="toThread.html">toThread</A> 
+<LI><i><A HREF="toSQLParse__tokenizer.html">toSQLParse::tokenizer</A></i> 
+<UL><LI><A HREF="toSQLParse__editorTokenizer.html">toSQLParse::editorTokenizer</A> 
+<LI><A HREF="toSQLParse__stringTokenizer.html">toSQLParse::stringTokenizer</A> 
+</UL></LI>
+<LI><A HREF="toSQL__version.html">toSQL::version</A> 
+</UL>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/index-long.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/index-long.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/index-long.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,85 @@
+<HTML>
+<HEAD>
+<TITLE>tora Annotated List</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>tora Annotated List</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER=\"0\"><TR ><TD><A HREF="TODock.html">TODock</A></TD><TD>
+ The class to use for a dock widget.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="TOFileDialog.html">TOFileDialog</A></TD><TD>
+ The class to use for a file dialog.</TD></TR><TR ><TD><A HREF="TOMessageBox.html">TOMessageBox</A></TD><TD>
+ The class to use for a messagebox.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="TOPrinter.html">TOPrinter</A></TD><TD>
+ The class to use for a printer object.</TD></TR><TR ><TD><A HREF="toBackground.html">toBackground</A></TD><TD>
+ A descendant of timer which will indicate in the statusbar of the
+ main window when any timer is running.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toBarChart.html">toBarChart</A></TD><TD> A widget that displays a barchart.</TD></TR><TR ><TD><A HREF="toBusy.html">toBusy</A></TD><TD> Whenever this class is instantiated the window will display a busy cursor.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toChangeConnection.html">toChangeConnection</A></TD><TD>
+ This button will allow you to change the connection for the nearest toToolWidget
+ parent.</TD></TR><TR ><TD><A HREF="toConnection.html">toConnection</A></TD><TD>
+</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toConnection__cacheObjects.html">toConnection::cacheObjects</A></TD><TD></TD></TR><TR ><TD><i><A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A></i></TD><TD> This class is an abstract baseclass to actually implement the comunication with the
+ database.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toConnection__exception.html">toConnection::exception</A></TD><TD> Class that could be used to throw exceptions in connection errors.</TD></TR><TR ><TD><A HREF="toConnection__objectName.html">toConnection::objectName</A></TD><TD> Contain information about a tablename.</TD></TR><TR bgcolor="#eeeeee"><TD><i><A HREF="toConnectionProvider.html">toConnectionProvider</A></i></TD><TD> This class is used to implement new database providers.</TD></TR><TR ><TD><A HREF="toConnectionSub.html">toConnectionSub</A></TD><TD> This class is an abstract definition of an actual connection to a database.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toConnectionWidget.html">toConnectionWidget</A></TD><TD> This class is used to hold connections for <A HREF="toResult.html">toResult</A> classes.</TD></TR><TR ><TD><A HREF="toDatatype.html">toDatatype</A></TD><TD>
+ Widget used to represent a datatype selection for a column.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html">toEditWidget</A></TD><TD> This is an abstract base class for any widget (Not included in object) that wants to
+ access copy, cut, paste, open, save commands of the user interface.</TD></TR><TR ><TD><i><A HREF="toEditWidget__editHandler.html">toEditWidget::editHandler</A></i></TD><TD> Class used to extent how to enable/disable parts of the interface as
+ focus changes.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html">toExtract</A></TD><TD>
+ This class can be used to reverse engineered database objects.</TD></TR><TR ><TD><A HREF="toExtract__columnInfo.html">toExtract::columnInfo</A></TD><TD> Used to get column information from a describe list
+   </TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toExtract__datatype.html">toExtract::datatype</A></TD><TD> Describes an available datatype for the database.</TD></TR><TR ><TD><A HREF="toExtract__extractor.html">toExtract::extractor</A></TD><TD> This is an abstract class to implement part of an extractor for a database.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toFilesize.html">toFilesize</A></TD><TD>
+ A widget to get a size value for Oracle objects.</TD></TR><TR ><TD><A HREF="toHelp.html">toHelp</A></TD><TD>
+ Display a help browser.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toHelpBrowser.html">toHelpBrowser</A></TD><TD>
+ Widget used to display HTML of help pages.</TD></TR><TR ><TD><A HREF="toHelpContext.html">toHelpContext</A></TD><TD> This class is used to indicate a help context of an object.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toHelpTool.html">toHelpTool</A></TD><TD>
+ Additional help tool. <small>(internal)</small></TD></TR><TR ><TD><A HREF="toHighlightedText.html">toHighlightedText</A></TD><TD> A simple editor which supports syntax highlighting.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toHtml.html">toHtml</A></TD><TD> A small and hopefully pretty efficient parser of HTML tags.</TD></TR><TR ><TD><A HREF="toLegendChart.html">toLegendChart</A></TD><TD> A widget that displays a legend to other charts.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html">toLineChart</A></TD><TD> A widget that displays a linechart with optional background throbber (Not implemented yet).</TD></TR><TR ><TD><A HREF="toListView.html">toListView</A></TD><TD>
+ The TOra implementation of a listview which offers a few extra goodies to the baseclass.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toLock.html">toLock</A></TD><TD> A wrapper around the pthread mutexfunctions.</TD></TR><TR ><TD><A HREF="toLocker.html">toLocker</A></TD><TD> This is a convenience class that holds a lock for the duration of the scope
+ of the object.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toMain.html">toMain</A></TD><TD> This class defines the main window.</TD></TR><TR ><TD><A HREF="toMainWindow.html">toMainWindow</A></TD><TD>
+ A container class that either inherits KDE or Qt main window.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html">toMarkedText</A></TD><TD> This is the enhanced editor used in TOra.</TD></TR><TR ><TD><A HREF="toMemoEditor.html">toMemoEditor</A></TD><TD> Displays an text in a widget which can optionally be modified and saved back.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toMultiLineEdit.html">toMultiLineEdit</A></TD><TD>
+ Container to the correct multi line editor for Qt 2 or 3.</TD></TR><TR ><TD><A HREF="toNoBlockQuery.html">toNoBlockQuery</A></TD><TD>
+</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toNoBlockQuery__queryTask.html">toNoBlockQuery::queryTask</A></TD><TD> A task to implement running the query.</TD></TR><TR ><TD><A HREF="toParamGet.html">toParamGet</A></TD><TD> A help class to parse SQL for input/output bindings and if available also pop up a 
+ dialog and ask for values.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toParamGetButton.html">toParamGetButton</A></TD><TD></TD></TR><TR ><TD><A HREF="toPieChart.html">toPieChart</A></TD><TD> A widget that displays a piechart.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toPieConnector.html">toPieConnector</A></TD><TD> This class can be used to make a line chart (Or bar chart) follow the values in a piechart.</TD></TR><TR ><TD><A HREF="toPopupButton.html">toPopupButton</A></TD><TD> Popup toolbutton that works like I think they should under Qt 3.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html">toQValue</A></TD><TD> This function is used to represent values that are passed to and from queries
+ </TD></TR><TR ><TD><A HREF="toQValue__queryValue.html">toQValue::queryValue</A></TD><TD></TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toQuery.html">toQuery</A></TD><TD> This class is used to perform a query on a database connection.</TD></TR><TR ><TD><A HREF="toQuery__queryDescribe.html">toQuery::queryDescribe</A></TD><TD> This structure is used to describe the resultset of a query.</TD></TR><TR bgcolor="#eeeeee"><TD><i><A HREF="toQuery__queryImpl.html">toQuery::queryImpl</A></i></TD><TD> Abstract parent of implementations of a query for a database provider
+ (See <A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A> and <A HREF="toConnectionProvider.html">toConnectionProvider</A>)
+   </TD></TR><TR ><TD><i><A HREF="toResult.html">toResult</A></i></TD><TD> Abstract baseclass of widgets that can perform queries.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html">toResultBar</A></TD><TD> Display the result of a query in a piechart.</TD></TR><TR ><TD><A HREF="toResultCols.html">toResultCols</A></TD><TD> This widget displays information about the returned columns of an object
+ specified by the first and second parameter in the query.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultCols__resultCols.html">toResultCols::resultCols</A></TD><TD></TD></TR><TR ><TD><A HREF="toResultCols__resultColsEdit.html">toResultCols::resultColsEdit</A></TD><TD></TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultColsComment.html">toResultColsComment</A></TD><TD> This widget is used for single record view in the content editor. <small>(internal)</small></TD></TR><TR ><TD><A HREF="toResultCombo.html">toResultCombo</A></TD><TD> This widget displays the result of a query where each field is added as an item
+ to a combobox.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultConstraint.html">toResultConstraint</A></TD><TD> This widget displays information about the constraints of an object
+ specified by the first and second parameter in the query.</TD></TR><TR ><TD><A HREF="toResultContent.html">toResultContent</A></TD><TD> This widget allows the user to browse the contents of a table and also edit
+ the content.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html">toResultContentEditor</A></TD><TD> This widget allows the user to browse the contents of a table and also edit
+ the content.</TD></TR><TR ><TD><A HREF="toResultContentEditor__contentItem.html">toResultContentEditor::contentItem</A></TD><TD></TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultContentMemo.html">toResultContentMemo</A></TD><TD> Implement memo editor in result content editor. <small>(internal)</small></TD></TR><TR ><TD><A HREF="toResultContentSingle.html">toResultContentSingle</A></TD><TD> This widget is used for single record view in the content editor. <small>(internal)</small></TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultDepend.html">toResultDepend</A></TD><TD> This widget displays information about the dependencies of an object
+ specified by the first and second parameter in the query.</TD></TR><TR ><TD><A HREF="toResultField.html">toResultField</A></TD><TD> This widget displays the result of a query where each item in the stream
+ is added as a line in a text editer.</TD></TR><TR bgcolor="#eeeeee"><TD><i><A HREF="toResultFilter.html">toResultFilter</A></i></TD><TD> Baseclass for filters to apply to the <A HREF="toResultView.html">toResultView</A> to filter out
+ rows that you don't want to add as items to the list.</TD></TR><TR ><TD><A HREF="toResultIndexes.html">toResultIndexes</A></TD><TD> This widget displays information about indexes of an object
+ specified by the first and second parameter in the query.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html">toResultItem</A></TD><TD> Display the first row of a query with each column with a separate label.</TD></TR><TR ><TD><A HREF="toResultLabel.html">toResultLabel</A></TD><TD> This widget displays the result of a query where each item in the stream
+ is added to a label separated by an optional string.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultLine.html">toResultLine</A></TD><TD> Display the result of a query in a piechart.</TD></TR><TR ><TD><A HREF="toResultListFormat.html">toResultListFormat</A></TD><TD>
+ Used internally by toListView. <small>(internal)</small></TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultLong.html">toResultLong</A></TD><TD> A widget which contains the result of a query run in the background.</TD></TR><TR ><TD><A HREF="toResultObject.html">toResultObject</A></TD><TD> Used for getting slots into toResult. <small>(internal)</small></TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultPie.html">toResultPie</A></TD><TD> Display the result of a query in a piechart.</TD></TR><TR ><TD><A HREF="toResultPlan.html">toResultPlan</A></TD><TD> This widget displays the execution plan of a statement.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultReferences.html">toResultReferences</A></TD><TD> This widget displays information about other tables that references this one.</TD></TR><TR ><TD><A HREF="toResultResources.html">toResultResources</A></TD><TD> This widget displays information about resources of a query.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultStats.html">toResultStats</A></TD><TD> This widget will displays information about statistics in either a database or a session.</TD></TR><TR ><TD><A HREF="toResultView.html">toResultView</A></TD><TD>
+ This class defines a list which displays the result of a query.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultViewCheck.html">toResultViewCheck</A></TD><TD> An item to display in a toListView or toResultView.</TD></TR><TR ><TD><A HREF="toResultViewCheck__keyData.html">toResultViewCheck::keyData</A></TD><TD></TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html">toResultViewItem</A></TD><TD> An item to display in a toListView or toResultView.</TD></TR><TR ><TD><A HREF="toResultViewItem__keyData.html">toResultViewItem::keyData</A></TD><TD></TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toResultViewMLCheck.html">toResultViewMLCheck</A></TD><TD> This item expands the height to commodate all lines in the input buffer.</TD></TR><TR ><TD><A HREF="toResultViewMLine.html">toResultViewMLine</A></TD><TD> This item expands the height to commodate all lines in the input buffer.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toSGAStatement.html">toSGAStatement</A></TD><TD> This widget displays information about a statement in the Oracle SGA.</TD></TR><TR ><TD><A HREF="toSMTP.html">toSMTP</A></TD><TD> Used to send mail asyncronously.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toSQL.html">toSQL</A></TD><TD>
+ This class handles an abstraction of SQL statements used by TOra to extract
+ information and manipulate data.</TD></TR><TR ><TD><A HREF="toSQL__definition.html">toSQL::definition</A></TD><TD>
+ Definition of one toSQL statement with its description and versions.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toSQL__version.html">toSQL::version</A></TD><TD>
+ Contains a statement with it's version.</TD></TR><TR ><TD><A HREF="toSQLParse.html">toSQLParse</A></TD><TD> A bunch of functions to parse and indent SQL text.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__editorTokenizer.html">toSQLParse::editorTokenizer</A></TD><TD> Tokenizer class which gets tokens from an editor.</TD></TR><TR ><TD><A HREF="toSQLParse__settings.html">toSQLParse::settings</A></TD><TD></TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__statement.html">toSQLParse::statement</A></TD><TD> Structure the statement is parsed into.</TD></TR><TR ><TD><A HREF="toSQLParse__stringTokenizer.html">toSQLParse::stringTokenizer</A></TD><TD> Tokenizer class which gets tokens from a string.</TD></TR><TR bgcolor="#eeeeee"><TD><i><A HREF="toSQLParse__tokenizer.html">toSQLParse::tokenizer</A></i></TD><TD> Abstract class to define a source of tokens for the parser.</TD></TR><TR ><TD><A HREF="toSemaphore.html">toSemaphore</A></TD><TD> Encapsulation of pthread semaphores.</TD></TR><TR bgcolor="#eeeeee"><TD><i><A HREF="toSettingTab.html">toSettingTab</A></i></TD><TD>
+ Abstract baseclass for widgets defining tool settings.</TD></TR><TR ><TD><A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A></TD><TD> This class implements a syntax parser to provide information to
+ a syntax highlighted editor.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toSyntaxAnalyzer__highlightInfo.html">toSyntaxAnalyzer::highlightInfo</A></TD><TD> Information about a change in highlighting.</TD></TR><TR ><TD><A HREF="toSyntaxAnalyzer__posibleHit.html">toSyntaxAnalyzer::posibleHit</A></TD><TD> Keeps track of possible hits found so far.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toTabBar.html">toTabBar</A></TD><TD> An extension of the regular tab bar with an extension to be able to hide
+ tabs without removing them.</TD></TR><TR ><TD><A HREF="toTabBar__barTab.html">toTabBar::barTab</A></TD><TD></TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toTabWidget.html">toTabWidget</A></TD><TD> An extension of the regular tab widget with posibility to hide tabs.</TD></TR><TR ><TD><i><A HREF="toTask.html">toTask</A></i></TD><TD> This is an abstract class that defines something that is to be performed by a
+ thread.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toTemplate.html">toTemplate</A></TD><TD> Not part of the API. <small>(internal)</small></TD></TR><TR ><TD><A HREF="toTemplateItem.html">toTemplateItem</A></TD><TD> This is an item that is contained in a template.</TD></TR><TR bgcolor="#eeeeee"><TD><i><A HREF="toTemplateProvider.html">toTemplateProvider</A></i></TD><TD>
+ This is the base class of a provider of template items.</TD></TR><TR ><TD><A HREF="toTemplateSQL.html">toTemplateSQL</A></TD><TD> This class represent an item that when expanded will execute an SQL statement
+ and create child items which are the result of the query.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toTemplateSQLObject.html">toTemplateSQLObject</A></TD><TD> Used by toTemplateSQL. <small>(internal)</small></TD></TR><TR ><TD><A HREF="toTemplateText.html">toTemplateText</A></TD><TD> This class represent a template item that have an extra text to describe it if it is
+ selected.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toTextView.html">toTextView</A></TD><TD> A tora editwidget version of the <A HREF="/usr/lib/qt3/doc/html/qtextview.html">QTextView</A> widget.</TD></TR><TR ><TD><A HREF="toThread.html">toThread</A></TD><TD> Used to create new threads of execution.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toThread__taskRunner.html">toThread::taskRunner</A></TD><TD> Not part of the API.</TD></TR><TR ><TD><A HREF="toTimer.html">toTimer</A></TD><TD> A timer descendant which also keep track of the last timer setting sent to it.</TD></TR><TR bgcolor="#eeeeee"><TD><i><A HREF="toTool.html">toTool</A></i></TD><TD>
+ Abstract baseclass for tools.</TD></TR><TR ><TD><A HREF="toToolWidget.html">toToolWidget</A></TD><TD> Simple baseclass for widgets defining the main tool widget.</TD></TR><TR bgcolor="#eeeeee"><TD><A HREF="toVisualize.html">toVisualize</A></TD><TD> This widget is used to visualize the data in a toListView into charts.</TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/index.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/index.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/index.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,153 @@
+<HTML>
+<HEAD>
+<TITLE>tora Class Index</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>tora Class Index</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<TABLE WIDTH="100%" BORDER="0"><TR><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>TODock - toMultiLineEdit</TH></TR><TR ><TD><A HREF="TODock.html">TODock</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="TOFileDialog.html">TOFileDialog</A></TD></TR>
+<TR ><TD><A HREF="TOMessageBox.html">TOMessageBox</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="TOPrinter.html">TOPrinter</A></TD></TR>
+<TR ><TD><A HREF="toBackground.html">toBackground</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toBarChart.html">toBarChart</A></TD></TR>
+<TR ><TD><A HREF="toBusy.html">toBusy</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toChangeConnection.html">toChangeConnection</A></TD></TR>
+<TR ><TD><A HREF="toConnection.html">toConnection</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__cacheObjects.html">toConnection::cacheObjects</A></TD></TR>
+<TR ><TD><i><A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A></i></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnection__exception.html">toConnection::exception</A></TD></TR>
+<TR ><TD><A HREF="toConnection__objectName.html">toConnection::objectName</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><i><A HREF="toConnectionProvider.html">toConnectionProvider</A></i></TD></TR>
+<TR ><TD><A HREF="toConnectionSub.html">toConnectionSub</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toConnectionWidget.html">toConnectionWidget</A></TD></TR>
+<TR ><TD><A HREF="toDatatype.html">toDatatype</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toEditWidget.html">toEditWidget</A></TD></TR>
+<TR ><TD><i><A HREF="toEditWidget__editHandler.html">toEditWidget::editHandler</A></i></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract.html">toExtract</A></TD></TR>
+<TR ><TD><A HREF="toExtract__columnInfo.html">toExtract::columnInfo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toExtract__datatype.html">toExtract::datatype</A></TD></TR>
+<TR ><TD><A HREF="toExtract__extractor.html">toExtract::extractor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toFilesize.html">toFilesize</A></TD></TR>
+<TR ><TD><A HREF="toHelp.html">toHelp</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpBrowser.html">toHelpBrowser</A></TD></TR>
+<TR ><TD><A HREF="toHelpContext.html">toHelpContext</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHelpTool.html">toHelpTool</A></TD></TR>
+<TR ><TD><A HREF="toHighlightedText.html">toHighlightedText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toHtml.html">toHtml</A></TD></TR>
+<TR ><TD><A HREF="toLegendChart.html">toLegendChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLineChart.html">toLineChart</A></TD></TR>
+<TR ><TD><A HREF="toListView.html">toListView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toLock.html">toLock</A></TD></TR>
+<TR ><TD><A HREF="toLocker.html">toLocker</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMain.html">toMain</A></TD></TR>
+<TR ><TD><A HREF="toMainWindow.html">toMainWindow</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMarkedText.html">toMarkedText</A></TD></TR>
+<TR ><TD><A HREF="toMemoEditor.html">toMemoEditor</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toMultiLineEdit.html">toMultiLineEdit</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>toNoBlockQuery - toResultStats</TH></TR><TR ><TD><A HREF="toNoBlockQuery.html">toNoBlockQuery</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toNoBlockQuery__queryTask.html">toNoBlockQuery::queryTask</A></TD></TR>
+<TR ><TD><A HREF="toParamGet.html">toParamGet</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toParamGetButton.html">toParamGetButton</A></TD></TR>
+<TR ><TD><A HREF="toPieChart.html">toPieChart</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toPieConnector.html">toPieConnector</A></TD></TR>
+<TR ><TD><A HREF="toPopupButton.html">toPopupButton</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQValue.html">toQValue</A></TD></TR>
+<TR ><TD><A HREF="toQValue__queryValue.html">toQValue::queryValue</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toQuery.html">toQuery</A></TD></TR>
+<TR ><TD><A HREF="toQuery__queryDescribe.html">toQuery::queryDescribe</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><i><A HREF="toQuery__queryImpl.html">toQuery::queryImpl</A></i></TD></TR>
+<TR ><TD><i><A HREF="toResult.html">toResult</A></i></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultBar.html">toResultBar</A></TD></TR>
+<TR ><TD><A HREF="toResultCols.html">toResultCols</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultCols__resultCols.html">toResultCols::resultCols</A></TD></TR>
+<TR ><TD><A HREF="toResultCols__resultColsEdit.html">toResultCols::resultColsEdit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultColsComment.html">toResultColsComment</A></TD></TR>
+<TR ><TD><A HREF="toResultCombo.html">toResultCombo</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultConstraint.html">toResultConstraint</A></TD></TR>
+<TR ><TD><A HREF="toResultContent.html">toResultContent</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentEditor.html">toResultContentEditor</A></TD></TR>
+<TR ><TD><A HREF="toResultContentEditor__contentItem.html">toResultContentEditor::contentItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultContentMemo.html">toResultContentMemo</A></TD></TR>
+<TR ><TD><A HREF="toResultContentSingle.html">toResultContentSingle</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultDepend.html">toResultDepend</A></TD></TR>
+<TR ><TD><A HREF="toResultField.html">toResultField</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><i><A HREF="toResultFilter.html">toResultFilter</A></i></TD></TR>
+<TR ><TD><A HREF="toResultIndexes.html">toResultIndexes</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultItem.html">toResultItem</A></TD></TR>
+<TR ><TD><A HREF="toResultLabel.html">toResultLabel</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLine.html">toResultLine</A></TD></TR>
+<TR ><TD><A HREF="toResultListFormat.html">toResultListFormat</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultLong.html">toResultLong</A></TD></TR>
+<TR ><TD><A HREF="toResultObject.html">toResultObject</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultPie.html">toResultPie</A></TD></TR>
+<TR ><TD><A HREF="toResultPlan.html">toResultPlan</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultReferences.html">toResultReferences</A></TD></TR>
+<TR ><TD><A HREF="toResultResources.html">toResultResources</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultStats.html">toResultStats</A></TD></TR>
+</TABLE></TD><TD VALIGN="top"><TABLE BORDER="0"><TR bgcolor="b0b0b0"><TH>toResultView - toVisualize</TH></TR><TR ><TD><A HREF="toResultView.html">toResultView</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewCheck.html">toResultViewCheck</A></TD></TR>
+<TR ><TD><A HREF="toResultViewCheck__keyData.html">toResultViewCheck::keyData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewItem.html">toResultViewItem</A></TD></TR>
+<TR ><TD><A HREF="toResultViewItem__keyData.html">toResultViewItem::keyData</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toResultViewMLCheck.html">toResultViewMLCheck</A></TD></TR>
+<TR ><TD><A HREF="toResultViewMLine.html">toResultViewMLine</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSGAStatement.html">toSGAStatement</A></TD></TR>
+<TR ><TD><A HREF="toSMTP.html">toSMTP</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQL.html">toSQL</A></TD></TR>
+<TR ><TD><A HREF="toSQL__definition.html">toSQL::definition</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQL__version.html">toSQL::version</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse.html">toSQLParse</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__editorTokenizer.html">toSQLParse::editorTokenizer</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__settings.html">toSQLParse::settings</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSQLParse__statement.html">toSQLParse::statement</A></TD></TR>
+<TR ><TD><A HREF="toSQLParse__stringTokenizer.html">toSQLParse::stringTokenizer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><i><A HREF="toSQLParse__tokenizer.html">toSQLParse::tokenizer</A></i></TD></TR>
+<TR ><TD><A HREF="toSemaphore.html">toSemaphore</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><i><A HREF="toSettingTab.html">toSettingTab</A></i></TD></TR>
+<TR ><TD><A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toSyntaxAnalyzer__highlightInfo.html">toSyntaxAnalyzer::highlightInfo</A></TD></TR>
+<TR ><TD><A HREF="toSyntaxAnalyzer__posibleHit.html">toSyntaxAnalyzer::posibleHit</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTabBar.html">toTabBar</A></TD></TR>
+<TR ><TD><A HREF="toTabBar__barTab.html">toTabBar::barTab</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTabWidget.html">toTabWidget</A></TD></TR>
+<TR ><TD><i><A HREF="toTask.html">toTask</A></i></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplate.html">toTemplate</A></TD></TR>
+<TR ><TD><A HREF="toTemplateItem.html">toTemplateItem</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><i><A HREF="toTemplateProvider.html">toTemplateProvider</A></i></TD></TR>
+<TR ><TD><A HREF="toTemplateSQL.html">toTemplateSQL</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTemplateSQLObject.html">toTemplateSQLObject</A></TD></TR>
+<TR ><TD><A HREF="toTemplateText.html">toTemplateText</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toTextView.html">toTextView</A></TD></TR>
+<TR ><TD><A HREF="toThread.html">toThread</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toThread__taskRunner.html">toThread::taskRunner</A></TD></TR>
+<TR ><TD><A HREF="toTimer.html">toTimer</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><i><A HREF="toTool.html">toTool</A></i></TD></TR>
+<TR ><TD><A HREF="toToolWidget.html">toToolWidget</A></TD></TR>
+<TR bgcolor="#eeeeee"><TD><A HREF="toVisualize.html">toVisualize</A></TD></TR>
+</TABLE></TD></TR></TABLE><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toBackground.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toBackground.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toBackground.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,75 @@
+<HTML>
+<HEAD>
+<TITLE>class toBackground</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toBackground</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ A descendant of timer which will indicate in the statusbar of the
+ main window when any timer is running. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tobackground_h.html">tobackground.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toTimer.html">toTimer</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toBackground.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toBackground</A></b> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A>* parent=0,const char* name=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref2">~toBackground</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref3">start</A></b> (int msec) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref4">stop</A></b> (void) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  void &nbsp;<b><A HREF="#ref5">init</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ A descendant of timer which will indicate in the statusbar of the
+ main window when any timer is running. Can not do singleshots, only
+ periodic intervals.
+ </p>
+<A NAME="toBackground"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toBackground</strong> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A>* parent=0,const char* name=0)
+<br></td><td align="right"><h3><strong>toBackground</strong></h3></td></tr></table><p></p><p>
+ Create a background timer widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toBackground"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toBackground</strong> ()
+<br></td><td align="right"><h3><strong>~toBackground</strong></h3></td></tr></table><p></p><A NAME="start"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>start</strong> (int msec)
+<br></td><td align="right"><h3><strong>start</strong></h3></td></tr></table><p></p><p> Start repeating timer with msec interval.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>msec</i></TD><TD align="left" valign="top">Millsecond repeat interval.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toTimer.html#start">toTimer</A>.</p>
+<A NAME="stop"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>stop</strong> (void)
+<br></td><td align="right"><h3><strong>stop</strong></h3></td></tr></table><p></p><p> Stop timer
+   </p>
+<A NAME="init"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>init</strong> (void)
+<br></td><td align="right"><h3><strong>init</strong></h3></td></tr></table><p> <small>[static]</small></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toBarChart.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toBarChart.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toBarChart.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,76 @@
+<HTML>
+<HEAD>
+<TITLE>class toBarChart</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toBarChart</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A widget that displays a barchart. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tobarchart_h.html">tobarchart.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toLineChart.html">toLineChart</A> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultBar.html">toResultBar</A></TD></TR>
+<TR><TH><A HREF="full-list-toBarChart.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toBarChart</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref3">toBarChart</A></b> (<A HREF="toBarChart.html">toBarChart</A> *chart,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>virtual  <A HREF="toLineChart.html">toLineChart</A> *&nbsp;<b><A HREF="#ref4">openCopy</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref1">paintChart</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &rect) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A widget that displays a barchart. Each line is added onto the next one.
+ </p>
+<A NAME="paintChart"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintChart</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &rect)
+<br></td><td align="right"><h3><strong>paintChart</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p>Reimplemented from <A HREF="toLineChart.html#paintChart">toLineChart</A>.</p>
+<A NAME="toBarChart"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toBarChart</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toBarChart</strong></h3></td></tr></table><p></p><p> Create a new barchart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toBarChart"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toBarChart</strong> (<A HREF="toBarChart.html">toBarChart</A> *chart,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toBarChart</strong></h3></td></tr></table><p></p><p> Create a new barchart by copying all the data from another barchart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>chart</i></TD><TD align="left" valign="top">Chart to copy data from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="openCopy"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toLineChart.html">toLineChart</A> *&nbsp;<strong>openCopy</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>openCopy</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Open chart in new window.
+   </p>
+<p>Reimplemented from <A HREF="toLineChart.html#openCopy">toLineChart</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toBusy.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toBusy.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toBusy.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,47 @@
+<HTML>
+<HEAD>
+<TITLE>class toBusy</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toBusy</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Whenever this class is instantiated the window will display a busy cursor. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toBusy.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">toBusy</A></b> () 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref4">~toBusy</A></b> () 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  void &nbsp;<b><A HREF="#ref2">clear</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Whenever this class is instantiated the window will display a busy cursor. You
+ can instantiate this function as many time as you want, only when all of them are
+ destructed the curser will revert back to normal.
+ </p>
+<A NAME="clear"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>clear</strong> (void)
+<br></td><td align="right"><h3><strong>clear</strong></h3></td></tr></table><p> <small>[static]</small></p><A NAME="toBusy"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toBusy</strong> ()
+<br></td><td align="right"><h3><strong>toBusy</strong></h3></td></tr></table><p></p><A NAME="~toBusy"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toBusy</strong> ()
+<br></td><td align="right"><h3><strong>~toBusy</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toChangeConnection.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toChangeConnection.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toChangeConnection.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,52 @@
+<HTML>
+<HEAD>
+<TITLE>class toChangeConnection</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toChangeConnection</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ This button will allow you to change the connection for the nearest toToolWidget
+ parent. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tochangeconnection_h.html">tochangeconnection.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toPopupButton.html">toPopupButton</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toChangeConnection.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">toChangeConnection</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *parent,const char *name=0) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ This button will allow you to change the connection for the nearest toToolWidget
+ parent.
+ </p>
+<A NAME="toChangeConnection"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toChangeConnection</strong> (<A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *parent,const char *name=0)
+<br></td><td align="right"><h3><strong>toChangeConnection</strong></h3></td></tr></table><p></p><p> Create the button, only the toolbar parent is needed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Toolbar to put connection in.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toConnection.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toConnection.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toConnection.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,568 @@
+<HTML>
+<HEAD>
+<TITLE>class toConnection</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toConnection</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toConnection.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Types</h4><ul><LI>class <A HREF="toConnection__exception.html">exception</A>
+</LI>
+<LI>struct <A HREF="toConnection__objectName.html">objectName</A>
+</LI>
+<LI>class <i><A HREF="toConnection__connectionImpl.html">connectionImpl</A></i>
+</LI>
+</ul><h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref36">toConnection</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &user,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &password,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &host,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &database,const std::set<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &options,
+	       bool cache=true) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref37">toConnection</A></b> (const <A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref38">~toConnection</A></b> () 
+</LI>
+<LI>const std::set<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<b><A HREF="#ref39">options</A></b> ()  const
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref40">closeWidgets</A></b> (void) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref41">user</A></b> ()  const
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref42">password</A></b> ()  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref43">setPassword</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &pwd) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref44">host</A></b> ()  const
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref45">database</A></b> ()  const
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &&nbsp;<b><A HREF="#ref46">version</A></b> ()  const
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &&nbsp;<b><A HREF="#ref47">provider</A></b> ()  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref48">setDatabase</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &database) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref49">description</A></b> (bool version=true)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref50">setNeedCommit</A></b> (bool needCommit=true) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref51">needCommit</A></b> (void)  const
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref52">commit</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref53">rollback</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref54">parse</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref55">parse</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref56">execute</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,
+	       <A HREF="#toQList">toQList</A> &params) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref57">execute</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+	       <A HREF="#toQList">toQList</A> &params) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref58">execute</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref59">execute</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref60">allExecute</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,
+		  <A HREF="#toQList">toQList</A> &params) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref61">allExecute</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+		  <A HREF="#toQList">toQList</A> &params) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref62">allExecute</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref63">allExecute</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref64">addWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> *widget) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref65">delWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> *widget) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref66">addInit</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref67">delInit</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>const std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<b><A HREF="#ref68">initStrings</A></b> ()  const
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref69">quote</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref70">unQuote</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+<LI>std::list<objectName> &&nbsp;<b><A HREF="#ref71">objects</A></b> (bool block) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref72">addIfNotExists</A></b> (objectName &object) 
+</LI>
+<LI>virtual  <A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &&nbsp;<b><A HREF="#ref73">analyzer</A></b> () 
+</LI>
+<LI>std::map<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>,objectName> &&nbsp;<b><A HREF="#ref74">synonyms</A></b> (bool block) 
+</LI>
+<LI><A HREF="#toQDescList">toQDescList</A> &&nbsp;<b><A HREF="#ref75">columns</A></b> (const objectName &table,bool nocache=false) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref76">rereadCache</A></b> (void) 
+</LI>
+<LI>const objectName &&nbsp;<b><A HREF="#ref77">realName</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &object,bool block) 
+</LI>
+<LI>const objectName &&nbsp;<b><A HREF="#ref78">realName</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &object,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &synonym,bool block) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref79">cacheAvailable</A></b> (bool synonyms,bool block=false,bool need=true) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref80">cancelAll</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref81">loadDiskCache</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref82">writeDiskCache</A></b> (void) 
+</LI>
+<LI>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><A HREF="#ref83">running</A></b> (void) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref84">cacheDir</A></b> () 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref85">toQuery</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+</p>
+<p> TOra - An Oracle Toolkit for DBA's and developers
+ Copyright (C) 2003-2005 Quest Software, Inc
+ Portions Copyright (C) 2005 Other Contributors
+</p>
+<p> This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation;  only version 2 of
+ the License is valid for this program.
+</p>
+<p> This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+</p>
+<p> You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+</p>
+<p>      As a special exception, you have permission to link this program
+      with the Oracle Client libraries and distribute executables, as long
+      as you follow the requirements of the GNU GPL in regard to all of the
+      software in the executable aside from Oracle client libraries.
+</p>
+<p>      Specifically you are not permitted to link this program with the
+      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+      And you are not permitted to distribute binaries compiled against
+      these libraries without written consent from Quest Software, Inc.
+      Observe that this does not disallow linking to the Qt Free Edition.
+</p>
+<p>      You may link this product with any GPL'd Qt library such as Qt/Free
+</p>
+<p> All trademarks belong to their respective owners.
+</p>
+<p>***</p>
+<A NAME="toConnection__exception.html"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>exception</strong> <small>(class)</small></td><td align="right"><h3><strong>exception</strong></h3></td></tr></table><p></p><p> Class that could be used to throw exceptions in connection errors. Must use if you
+ want to indicate error offset.
+   </p>
+<A NAME="toConnection__objectName.html"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>objectName</strong> <small>(struct)</small></td><td align="right"><h3><strong>objectName</strong></h3></td></tr></table><p></p><p> Contain information about a tablename.
+   </p>
+<A NAME="toConnection__connectionImpl.html"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>connectionImpl</strong> <small>(class)</small></td><td align="right"><h3><strong>connectionImpl</strong></h3></td></tr></table><p></p><p> This class is an abstract baseclass to actually implement the comunication with the
+ database. 
+ (See also toQuery::queryImpl and <A HREF="toConnectionProvider.html">toConnectionProvider</A>)
+   </p>
+<A NAME="toConnection"></A><A NAME="ref36"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toConnection</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &user,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &password,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &host,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &database,const std::set<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &options,
+	       bool cache=true)
+<br></td><td align="right"><h3><strong>toConnection</strong></h3></td></tr></table><p></p><p> Create a new connection.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>provider</i></TD><TD align="left" valign="top">Which database provider to use for this connection.
+ (See to toDatabaseConnection)
+</TD></TR>
+<TR><TD align="left" valign="top"><i>user</i></TD><TD align="left" valign="top">User to connect to the database with.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>password</i></TD><TD align="left" valign="top">Password to connect with.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>host</i></TD><TD align="left" valign="top">Host to connect to the database with.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>database</i></TD><TD align="left" valign="top">Database to connect to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>options</i></TD><TD align="left" valign="top">Options used to connect to the database with.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>cache</i></TD><TD align="left" valign="top">Enable object cache for this connection.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toConnection"></A><A NAME="ref37"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toConnection</strong> (const <A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>toConnection</strong></h3></td></tr></table><p></p><p> Create a copy of a connection. Will not cache objects, so objects will never be available
+  in a subconnection.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to copy.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toConnection"></A><A NAME="ref38"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toConnection</strong> ()
+<br></td><td align="right"><h3><strong>~toConnection</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Destroy connection.
+   </p>
+<A NAME="options"></A><A NAME="ref39"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const std::set<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<strong>options</strong> ()
+<br></td><td align="right"><h3><strong>options</strong></h3></td></tr></table><p> <small>[const]</small></p><A NAME="closeWidgets"></A><A NAME="ref40"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>closeWidgets</strong> (void)
+<br></td><td align="right"><h3><strong>closeWidgets</strong></h3></td></tr></table><p></p><p> Try to close all the widgets associated with this connection.
+</p>
+<p><b>Returns</b>: True if all widgets agreed to close.
+   </p>
+<A NAME="user"></A><A NAME="ref41"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>user</strong> ()
+<br></td><td align="right"><h3><strong>user</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get username of connection.
+   </p>
+<A NAME="password"></A><A NAME="ref42"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>password</strong> ()
+<br></td><td align="right"><h3><strong>password</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get password of connection.
+   </p>
+<A NAME="setPassword"></A><A NAME="ref43"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setPassword</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &pwd)
+<br></td><td align="right"><h3><strong>setPassword</strong></h3></td></tr></table><p></p><p> Change password of connection.
+   </p>
+<A NAME="host"></A><A NAME="ref44"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>host</strong> ()
+<br></td><td align="right"><h3><strong>host</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get host of connection.
+   </p>
+<A NAME="database"></A><A NAME="ref45"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>database</strong> ()
+<br></td><td align="right"><h3><strong>database</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get database of connection.
+   </p>
+<A NAME="version"></A><A NAME="ref46"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &&nbsp;<strong>version</strong> ()
+<br></td><td align="right"><h3><strong>version</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get version of connection.
+   </p>
+<A NAME="provider"></A><A NAME="ref47"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &&nbsp;<strong>provider</strong> ()
+<br></td><td align="right"><h3><strong>provider</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get provider of connection.
+   </p>
+<A NAME="setDatabase"></A><A NAME="ref48"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setDatabase</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &database)
+<br></td><td align="right"><h3><strong>setDatabase</strong></h3></td></tr></table><p></p><p> Change the current database. Observe that this only changes the record of what is the current database. You will still need
+ to change the database oppinion on what database is the current one.
+   </p>
+<A NAME="description"></A><A NAME="ref49"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>description</strong> (bool version=true)
+<br></td><td align="right"><h3><strong>description</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Get a description of this connection.
+</p>
+<A NAME="setNeedCommit"></A><A NAME="ref50"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setNeedCommit</strong> (bool needCommit=true)
+<br></td><td align="right"><h3><strong>setNeedCommit</strong></h3></td></tr></table><p></p><p> Set if this connection needs to be commited.
+   </p>
+<A NAME="needCommit"></A><A NAME="ref51"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>needCommit</strong> (void)
+<br></td><td align="right"><h3><strong>needCommit</strong></h3></td></tr></table><p> <small>[const]</small></p><p>
+ Get information about if the connection has uncommited data.
+</p>
+<p></p>
+<p><b>Returns</b>: Whether uncommited data is available.
+   </p>
+<A NAME="commit"></A><A NAME="ref52"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>commit</strong> (void)
+<br></td><td align="right"><h3><strong>commit</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ Commit connection. This will also close all extra connections except one.
+   </p>
+<A NAME="rollback"></A><A NAME="ref53"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>rollback</strong> (void)
+<br></td><td align="right"><h3><strong>rollback</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ Rollback connection. This will also close all extra connections except one.
+   </p>
+<A NAME="parse"></A><A NAME="ref54"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>parse</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>parse</strong></h3></td></tr></table><p></p><p> Parse a query on an actual connection and report any syntax problems encountered.
+ Defaults to not implemented.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to execute on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to parse
+   </TD></TR>
+</TABLE></P>
+<A NAME="parse"></A><A NAME="ref55"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>parse</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>parse</strong></h3></td></tr></table><p></p><p> Parse a query on an actual connection and report any syntax problems encountered.
+ Defaults to not implemented.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to execute on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to parse
+   </TD></TR>
+</TABLE></P>
+<A NAME="execute"></A><A NAME="ref56"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>execute</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,
+	       <A HREF="#toQList">toQList</A> &params)
+<br></td><td align="right"><h3><strong>execute</strong></h3></td></tr></table><p></p><p> Execute a statement without caring about the result.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="execute"></A><A NAME="ref57"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>execute</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+	       <A HREF="#toQList">toQList</A> &params)
+<br></td><td align="right"><h3><strong>execute</strong></h3></td></tr></table><p></p><p> Execute a statement without caring about the result.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="execute"></A><A NAME="ref58"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>execute</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>execute</strong></h3></td></tr></table><p></p><p> Execute a statement without caring about the result.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="execute"></A><A NAME="ref59"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>execute</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>execute</strong></h3></td></tr></table><p></p><p> Execute a statement without caring about the result.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="allExecute"></A><A NAME="ref60"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>allExecute</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,
+		  <A HREF="#toQList">toQList</A> &params)
+<br></td><td align="right"><h3><strong>allExecute</strong></h3></td></tr></table><p></p><p> Execute a statement without caring about the result on all open database connections.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="allExecute"></A><A NAME="ref61"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>allExecute</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+		  <A HREF="#toQList">toQList</A> &params)
+<br></td><td align="right"><h3><strong>allExecute</strong></h3></td></tr></table><p></p><p> Execute a statement without caring about the result on all open database connections.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="allExecute"></A><A NAME="ref62"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>allExecute</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>allExecute</strong></h3></td></tr></table><p></p><p> Execute a statement without caring about the result on all open database connections.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="allExecute"></A><A NAME="ref63"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>allExecute</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+		  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>allExecute</strong></h3></td></tr></table><p></p><p> Execute a statement without caring about the result on all open database connections.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="addWidget"></A><A NAME="ref64"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> *widget)
+<br></td><td align="right"><h3><strong>addWidget</strong></h3></td></tr></table><p></p><p>
+ Add a object that uses this connection. This is needed to ensure that all widgets
+ that make use of a connection are destroyed when the connection is closed. Usually
+ tool windows need to call this function.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>widget</i></TD><TD align="left" valign="top">The widget to add to the connection.
+   </TD></TR>
+</TABLE></P>
+<A NAME="delWidget"></A><A NAME="ref65"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>delWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> *widget)
+<br></td><td align="right"><h3><strong>delWidget</strong></h3></td></tr></table><p></p><p>
+ Remove a widget from this connection. Should be called by the destructor of the
+ widget that has called addWidget.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>widget</i></TD><TD align="left" valign="top">Widget to remove from the widget list.
+   </TD></TR>
+</TABLE></P>
+<p><b>See also</b>: addWidget</p>
+<A NAME="addInit"></A><A NAME="ref66"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addInit</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>addInit</strong></h3></td></tr></table><p></p><p>
+ Add a statement to be run uppon making new connections.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">Statement to run.
+   </TD></TR>
+</TABLE></P>
+<A NAME="delInit"></A><A NAME="ref67"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>delInit</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>delInit</strong></h3></td></tr></table><p></p><p>
+ Remove a statement that was added using <A HREF="toConnection.html#addInit">addInit</A>.
+   </p>
+<A NAME="initStrings"></A><A NAME="ref68"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<strong>initStrings</strong> ()
+<br></td><td align="right"><h3><strong>initStrings</strong></h3></td></tr></table><p> <small>[const]</small></p><p>
+ Get a list of the current init strings.
+   </p>
+<A NAME="quote"></A><A NAME="ref69"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>quote</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>quote</strong></h3></td></tr></table><p></p><p> Return a string representation to address an object.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">The name to be quoted.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String addressing table.
+   </p>
+<A NAME="unQuote"></A><A NAME="ref70"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>unQuote</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>unQuote</strong></h3></td></tr></table><p></p><p> Perform the opposite of <A HREF="toConnection.html#quote">quote</A>.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">The name to be un-quoted.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String addressing table.
+   </p>
+<A NAME="objects"></A><A NAME="ref71"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<objectName> &&nbsp;<strong>objects</strong> (bool block)
+<br></td><td align="right"><h3><strong>objects</strong></h3></td></tr></table><p></p><p>
+ Get the objects available for the current user. Do not modify the returned list.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>block</i></TD><TD align="left" valign="top">Indicate wether or not to block until cached objects are available.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of object available for the current user. The list is sorted in
+         owner and name order.
+   </p>
+<A NAME="addIfNotExists"></A><A NAME="ref72"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addIfNotExists</strong> (objectName &object)
+<br></td><td align="right"><h3><strong>addIfNotExists</strong></h3></td></tr></table><p></p><p> Add a new object to the objectlist if it doesn't exist already.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>object</i></TD><TD align="left" valign="top">The object to add
+   </TD></TR>
+</TABLE></P>
+<A NAME="analyzer"></A><A NAME="ref73"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &&nbsp;<strong>analyzer</strong> ()
+<br></td><td align="right"><h3><strong>analyzer</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ Get syntax analyzer for connection
+</p>
+<p><b>Returns</b>: A reference to the syntax analyzer to use for the connection.
+   </p>
+<A NAME="synonyms"></A><A NAME="ref74"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::map<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>,objectName> &&nbsp;<strong>synonyms</strong> (bool block)
+<br></td><td align="right"><h3><strong>synonyms</strong></h3></td></tr></table><p></p><p>
+ Get the synonyms available for objects. Do not modify the returned list.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>block</i></TD><TD align="left" valign="top">Indicate wether or not to block until cached objects are available.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of synonyms to objects available for the current user.
+   </p>
+<A NAME="columns"></A><A NAME="ref75"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="#toQDescList">toQDescList</A> &&nbsp;<strong>columns</strong> (const objectName &table,bool nocache=false)
+<br></td><td align="right"><h3><strong>columns</strong></h3></td></tr></table><p></p><p>
+ Get a list of the available columns for a table. This function caches the responses
+ and should be fairly fast after the first call. Do not modify the returned list.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>table</i></TD><TD align="left" valign="top">The table to describe.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>nocache</i></TD><TD align="left" valign="top">Don't use cached values even if they are available.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of the columns for a table.
+   </p>
+<A NAME="rereadCache"></A><A NAME="ref76"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>rereadCache</strong> (void)
+<br></td><td align="right"><h3><strong>rereadCache</strong></h3></td></tr></table><p></p><p>
+ Reread the object and column cache.
+   </p>
+<A NAME="realName"></A><A NAME="ref77"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const objectName &&nbsp;<strong>realName</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &object,bool block)
+<br></td><td align="right"><h3><strong>realName</strong></h3></td></tr></table><p></p><p>
+ Get the real object name of an object.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>object</i></TD><TD align="left" valign="top">Object name
+</TD></TR>
+<TR><TD align="left" valign="top"><i>block</i></TD><TD align="left" valign="top">Block if not done caching object.
+   </TD></TR>
+</TABLE></P>
+<A NAME="realName"></A><A NAME="ref78"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const objectName &&nbsp;<strong>realName</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &object,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &synonym,bool block)
+<br></td><td align="right"><h3><strong>realName</strong></h3></td></tr></table><p></p><p>
+ Get the real object name of a synonym.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>object</i></TD><TD align="left" valign="top">Object name
+</TD></TR>
+<TR><TD align="left" valign="top"><i>synonym</i></TD><TD align="left" valign="top">Filled with the synonym used to access the object returned or empty.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>block</i></TD><TD align="left" valign="top">Block if not done caching object.
+   </TD></TR>
+</TABLE></P>
+<A NAME="cacheAvailable"></A><A NAME="ref79"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>cacheAvailable</strong> (bool synonyms,bool block=false,bool need=true)
+<br></td><td align="right"><h3><strong>cacheAvailable</strong></h3></td></tr></table><p></p><p> Check if cache is available or not.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>synonyms</i></TD><TD align="left" valign="top">If synonyms are needed or not.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>block</i></TD><TD align="left" valign="top">Block until cache is done.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>true</i></TD><TD align="left" valign="top">True if you need the cache, or just checking.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: True if cache is available.
+   </p>
+<A NAME="cancelAll"></A><A NAME="ref80"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>cancelAll</strong> (void)
+<br></td><td align="right"><h3><strong>cancelAll</strong></h3></td></tr></table><p></p><p> Try to stop all running queries.
+   </p>
+<A NAME="loadDiskCache"></A><A NAME="ref81"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>loadDiskCache</strong> (void)
+<br></td><td align="right"><h3><strong>loadDiskCache</strong></h3></td></tr></table><p></p><p> load disk cache
+   </p>
+<A NAME="writeDiskCache"></A><A NAME="ref82"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>writeDiskCache</strong> (void)
+<br></td><td align="right"><h3><strong>writeDiskCache</strong></h3></td></tr></table><p></p><p> write disk cache
+   </p>
+<A NAME="running"></A><A NAME="ref83"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<strong>running</strong> (void)
+<br></td><td align="right"><h3><strong>running</strong></h3></td></tr></table><p></p><p> Get a list of currently running SQL.
+   </p>
+<A NAME="cacheDir"></A><A NAME="ref84"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>cacheDir</strong> ()
+<br></td><td align="right"><h3><strong>cacheDir</strong></h3></td></tr></table><p> <small>[static]</small></p><A NAME="toQuery"></A><A NAME="ref85"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>toQuery</strong>
+</td><td align="right"><h3><strong>toQuery</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionProvider.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionProvider.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionProvider.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,220 @@
+<HTML>
+<HEAD>
+<TITLE>class toConnectionProvider</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toConnectionProvider</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class is used to implement new database providers. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toConnectionProvider.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref8">toConnectionProvider</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,bool add=true) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref9">~toConnectionProvider</A></b> () 
+</LI>
+<LI>virtual  <A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A> *&nbsp;<b><i><A HREF="#ref10">provideConnection</A></i></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,
+							  <A HREF="toConnection.html">toConnection</A> *conn) 
+</LI>
+<LI>virtual  std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><A HREF="#ref11">providedHosts</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider) 
+</LI>
+<LI>virtual  std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><i><A HREF="#ref12">providedDatabases</A></i></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,
+					       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &host,
+					       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &user,
+					       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &pwd) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref13">initialize</A></b> (void) 
+</LI>
+<LI>virtual  std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><A HREF="#ref14">providedOptions</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref15">providerConfigurationTab</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref22">config</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &def) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref23">setConfig</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &value) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref16">configurationTab</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>static  std::list<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>> &nbsp;<b><A HREF="#ref17">providers</A></b> () 
+</LI>
+<LI>static  std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><A HREF="#ref18">options</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider) 
+</LI>
+<LI>static  <A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A> *&nbsp;<b><A HREF="#ref19">connection</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,<A HREF="toConnection.html">toConnection</A> *conn) 
+</LI>
+<LI>static  std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><A HREF="#ref20">hosts</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider) 
+</LI>
+<LI>static  std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><A HREF="#ref21">databases</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &host,
+				      const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &user,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &pwd) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref24">initializeAll</A></b> (void) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>void &nbsp;<b><A HREF="#ref6">addProvider</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref7">removeProvider</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class is used to implement new database providers.
+ </p>
+<A NAME="addProvider"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addProvider</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider)
+<br></td><td align="right"><h3><strong>addProvider</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Add a provider to the list that this provider can handle.
+   </p>
+<A NAME="removeProvider"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>removeProvider</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider)
+<br></td><td align="right"><h3><strong>removeProvider</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Remove a provider from the list that this provider can handle.
+   </p>
+<A NAME="toConnectionProvider"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toConnectionProvider</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,bool add=true)
+<br></td><td align="right"><h3><strong>toConnectionProvider</strong></h3></td></tr></table><p></p><p> Create a new provider with the specified name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>provider</i></TD><TD align="left" valign="top">Name of the provider.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toConnectionProvider"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toConnectionProvider</strong> ()
+<br></td><td align="right"><h3><strong>~toConnectionProvider</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Destructor.
+   </p>
+<A NAME="provideConnection"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A> *&nbsp;<i><strong>provideConnection</strong></i> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,
+							  <A HREF="toConnection.html">toConnection</A> *conn)
+<br></td><td align="right"><h3><i><strong>provideConnection</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Create an implementation of a connection to this database.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>provider</i></TD><TD align="left" valign="top">Provider to use for connection.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">The connection object to use the created connection.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A connection implementation created with new.
+   </p>
+<A NAME="providedHosts"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<strong>providedHosts</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider)
+<br></td><td align="right"><h3><strong>providedHosts</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> List the available hosts this database provider knows about.
+</p>
+<p><b>Returns</b>: A list of hosts.
+   </p>
+<A NAME="providedDatabases"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<i><strong>providedDatabases</strong></i> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,
+					       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &host,
+					       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &user,
+					       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &pwd)
+<br></td><td align="right"><h3><i><strong>providedDatabases</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> List the available databases this provider knows about for a given host.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>host</i></TD><TD align="left" valign="top">Host to return connections for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>user</i></TD><TD align="left" valign="top">That might be needed.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>password</i></TD><TD align="left" valign="top">That might be needed.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of databases available for a given host.
+   </p>
+<A NAME="initialize"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>initialize</strong> (void)
+<br></td><td align="right"><h3><strong>initialize</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Will be called after program has been started and before connections have been opened.
+  Use for initialization.
+   </p>
+<A NAME="providedOptions"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<strong>providedOptions</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider)
+<br></td><td align="right"><h3><strong>providedOptions</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get a list of options available for the connection. An option with the name
+ "-" indicates a break should be made to separate the rest of the options from the previous
+ options. An option preceeded by "*" means selected by default. The * shoul be stripped before
+ before passing it to the connection call.
+   </p>
+<A NAME="providerConfigurationTab"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>providerConfigurationTab</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>providerConfigurationTab</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ Create and return configuration tab for this connectiontype. The returned widget should also
+ be a childclass of <A HREF="toSettingTab.html">toSettingTab</A>.
+</p>
+<p></p>
+<p><b>Returns</b>: A pointer to the widget containing the setup tab for this tool or NULL of
+ no settings are available.
+   </p>
+<A NAME="configurationTab"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>configurationTab</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>configurationTab</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get a list of names for providers.
+   </p>
+<A NAME="providers"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>> &nbsp;<strong>providers</strong> ()
+<br></td><td align="right"><h3><strong>providers</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get a list of names for providers.
+   </p>
+<A NAME="options"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<strong>options</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider)
+<br></td><td align="right"><h3><strong>options</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get a list of options for a given provider.
+   </p>
+<A NAME="connection"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A> *&nbsp;<strong>connection</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,<A HREF="toConnection.html">toConnection</A> *conn)
+<br></td><td align="right"><h3><strong>connection</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Implement a connection for a given provider.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>provider</i></TD><TD align="left" valign="top">Provider to implement.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to create implementation for.
+   </TD></TR>
+</TABLE></P>
+<A NAME="hosts"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<strong>hosts</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider)
+<br></td><td align="right"><h3><strong>hosts</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get a list of hosts this provider knows about.
+   </p>
+<A NAME="databases"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<strong>databases</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &host,
+				      const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &user,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &pwd)
+<br></td><td align="right"><h3><strong>databases</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get a list of databases for a given provider and host.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>provider</i></TD><TD align="left" valign="top">Provider to fetch databases for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>host</i></TD><TD align="left" valign="top">Host to fetch databases for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>user</i></TD><TD align="left" valign="top">That might be needed.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>password</i></TD><TD align="left" valign="top">That might be needed.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: List of known databases.
+   </p>
+<A NAME="config"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>config</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &def)
+<br></td><td align="right"><h3><strong>config</strong></h3></td></tr></table><p></p><p>
+ Get connection specific settings.
+</p>
+<p> Setting names are hierachical separated by ':' instead of '/' usually used
+ in filenames. As an example all settings for the tool 'Example' would be
+ under the 'Example:{settingname}' name. Observe that the settings are stored
+ under the main provider name as passed to the toConnectionProvider constructor.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tag</i></TD><TD align="left" valign="top">The name of the configuration setting.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>def</i></TD><TD align="left" valign="top">Contents of this setting.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setConfig"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setConfig</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &value)
+<br></td><td align="right"><h3><strong>setConfig</strong></h3></td></tr></table><p></p><p>
+ Change connectionspecific setting. Depending on the implementation this can change the
+ contents on disk or not.
+</p>
+<p> Setting names are hierachical separated by ':' instead of '/' usually used
+ in filenames. As an example all settings for the tool 'Example' would be
+ under the 'Example:{settingname}' name. Observe that the settings are stored
+ under the main provider name as passed to the toConnectionProvider constructor.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tag</i></TD><TD align="left" valign="top">The name of the configuration setting.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>def</i></TD><TD align="left" valign="top">Default value of the setting, if it is not available.
+   </TD></TR>
+</TABLE></P>
+<A NAME="initializeAll"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>initializeAll</strong> (void)
+<br></td><td align="right"><h3><strong>initializeAll</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Call all initializers
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionSub.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionSub.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionSub.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,65 @@
+<HTML>
+<HEAD>
+<TITLE>class toConnectionSub</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toConnectionSub</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class is an abstract definition of an actual connection to a database. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toConnectionSub.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toConnectionSub</A></b> () 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref3">~toConnectionSub</A></b> () 
+</LI>
+<LI><A HREF="toQuery.html">toQuery</A> *&nbsp;<b><A HREF="#ref4">query</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref5">setQuery</A></b> (<A HREF="toQuery.html">toQuery</A> *query) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">cancel</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class is an abstract definition of an actual connection to a database.
+ Each <A HREF="toConnection.html">toConnection</A> object can have one or more actual connections to the
+ database depending on long running queries. Normally you will never need to
+ bother with this class if you aren't creating a new database provider
+ (<A HREF="toConnectionProvider.html">toConnectionProvider</A>).
+ </p>
+<A NAME="toConnectionSub"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toConnectionSub</strong> ()
+<br></td><td align="right"><h3><strong>toConnectionSub</strong></h3></td></tr></table><p></p><p> Create connection to database.
+   </p>
+<A NAME="~toConnectionSub"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toConnectionSub</strong> ()
+<br></td><td align="right"><h3><strong>~toConnectionSub</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Close connection.
+   </p>
+<A NAME="query"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQuery.html">toQuery</A> *&nbsp;<strong>query</strong> ()
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Query current running on connection or NULL.
+   </p>
+<A NAME="setQuery"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setQuery</strong> (<A HREF="toQuery.html">toQuery</A> *query)
+<br></td><td align="right"><h3><strong>setQuery</strong></h3></td></tr></table><p></p><p> Set query currently running on connection. NULL means none.
+   </p>
+<A NAME="cancel"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>cancel</strong> (void)
+<br></td><td align="right"><h3><strong>cancel</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Cancel anything running on this sub.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionWidget.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionWidget.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toConnectionWidget.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,65 @@
+<HTML>
+<HEAD>
+<TITLE>class toConnectionWidget</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toConnectionWidget</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class is used to hold connections for <A HREF="toResult.html">toResult</A> classes. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totool_h.html">totool.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toToolWidget.html">toToolWidget</A></TD></TR>
+<TR><TH><A HREF="full-list-toConnectionWidget.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">toConnectionWidget</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref4">toConnectionWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref5">~toConnectionWidget</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">setConnection</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>virtual  <A HREF="toConnection.html">toConnection</A> &&nbsp;<b><A HREF="#ref7">connection</A></b> () 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class is used to hold connections for <A HREF="toResult.html">toResult</A> classes.
+ Must be multiply inherited by a widget otherwise it will go kaboom.
+ It will dynamic cast itself to a QWidget from time to time so if that
+ doesn't resolve correctly it will not work.
+ </p>
+<A NAME="toConnectionWidget"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toConnectionWidget</strong> (<A HREF="toConnection.html">toConnection</A> &conn,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget)
+<br></td><td align="right"><h3><strong>toConnectionWidget</strong></h3></td></tr></table><p></p><p> Constructor with the connection it should be set to initially.
+   </p>
+<A NAME="toConnectionWidget"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toConnectionWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget)
+<br></td><td align="right"><h3><strong>toConnectionWidget</strong></h3></td></tr></table><p></p><p> Constructor without a connection. Will inherit the connection from a parent connection widget.
+   </p>
+<A NAME="~toConnectionWidget"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toConnectionWidget</strong> ()
+<br></td><td align="right"><h3><strong>~toConnectionWidget</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Destructor.
+   </p>
+<A NAME="setConnection"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setConnection</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>setConnection</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Change connection of the widget.
+   </p>
+<A NAME="connection"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toConnection.html">toConnection</A> &&nbsp;<strong>connection</strong> ()
+<br></td><td align="right"><h3><strong>connection</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get the connection it is pointed to.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__cacheObjects.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__cacheObjects.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__cacheObjects.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+<TITLE>class cacheObjects</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class cacheObjects</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toConnection.html">toConnection</A>::cacheObjects</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><i><A HREF="toTask.html">toTask</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toConnection__cacheObjects.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">cacheObjects</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref3">run</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><A NAME="cacheObjects"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>cacheObjects</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>cacheObjects</strong></h3></td></tr></table><p></p><A NAME="run"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>run</strong> (void)
+<br></td><td align="right"><h3><strong>run</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>Reimplemented from <A HREF="toTask.html#run">toTask</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__connectionImpl.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__connectionImpl.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__connectionImpl.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,179 @@
+<HTML>
+<HEAD>
+<TITLE>class connectionImpl</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class connectionImpl</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class is an abstract baseclass to actually implement the comunication with the
+ database. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Full name</TH><TD><code><A HREF="toConnection.html">toConnection</A>::connectionImpl</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toConnection__connectionImpl.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI><A HREF="toConnection.html">toConnection</A> &&nbsp;<b><A HREF="#ref2">connection</A></b> (void) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref3">connectionImpl</A></b> (<A HREF="toConnection.html">toConnection</A> *conn) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref4">~connectionImpl</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref5">commit</A></i></b> (<A HREF="toConnectionSub.html">toConnectionSub</A> *) 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref6">rollback</A></i></b> (<A HREF="toConnectionSub.html">toConnectionSub</A> *) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref7">handleMultipleQueries</A></b> () 
+</LI>
+<LI>virtual  <A HREF="toConnectionSub.html">toConnectionSub</A> *&nbsp;<b><i><A HREF="#ref8">createConnection</A></i></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref9">closeConnection</A></i></b> (<A HREF="toConnectionSub.html">toConnectionSub</A> *) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<b><i><A HREF="#ref10">version</A></i></b> (<A HREF="toConnectionSub.html">toConnectionSub</A> *) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref11">quote</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref12">unQuote</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+<LI>virtual  <A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &&nbsp;<b><A HREF="#ref13">analyzer</A></b> () 
+</LI>
+<LI>virtual  std::list<objectName> &nbsp;<b><A HREF="#ref14">objectNames</A></b> (void) 
+</LI>
+<LI>virtual  std::map<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>,objectName> &nbsp;<b><A HREF="#ref15">synonymMap</A></b> (std::list<objectName> &objects) 
+</LI>
+<LI>virtual  <A HREF="#toQDescList">toQDescList</A> &nbsp;<b><A HREF="#ref16">columnDesc</A></b> (const objectName &table) 
+</LI>
+<LI>virtual  <A HREF="toQuery__queryImpl.html">toQuery::queryImpl</A> *&nbsp;<b><i><A HREF="#ref17">createQuery</A></i></b> (<A HREF="toQuery.html">toQuery</A> *query,<A HREF="toConnectionSub.html">toConnectionSub</A> *conn) 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref18">execute</A></i></b> (<A HREF="toConnectionSub.html">toConnectionSub</A> *conn,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &sql,<A HREF="#toQList">toQList</A> &params) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref19">parse</A></b> (<A HREF="toConnectionSub.html">toConnectionSub</A> *conn,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &sql) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class is an abstract baseclass to actually implement the comunication with the
+ database. 
+ (See also toQuery::queryImpl and <A HREF="toConnectionProvider.html">toConnectionProvider</A>)
+   </p>
+<A NAME="connection"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toConnection.html">toConnection</A> &&nbsp;<strong>connection</strong> (void)
+<br></td><td align="right"><h3><strong>connection</strong></h3></td></tr></table><p></p><p> Get the parent connection object of this connection.
+     </p>
+<A NAME="connectionImpl"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>connectionImpl</strong> (<A HREF="toConnection.html">toConnection</A> *conn)
+<br></td><td align="right"><h3><strong>connectionImpl</strong></h3></td></tr></table><p></p><p> Create a new connection implementation for a connection.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to implement.
+     </TD></TR>
+</TABLE></P>
+<A NAME="~connectionImpl"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~connectionImpl</strong> ()
+<br></td><td align="right"><h3><strong>~connectionImpl</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Destructor.
+     </p>
+<A NAME="commit"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>commit</strong></i> (<A HREF="toConnectionSub.html">toConnectionSub</A> *)
+<br></td><td align="right"><h3><i><strong>commit</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Commit the supplied actual database connection.
+     </p>
+<A NAME="rollback"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>rollback</strong></i> (<A HREF="toConnectionSub.html">toConnectionSub</A> *)
+<br></td><td align="right"><h3><i><strong>rollback</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Rollback the supplied actual database connection.
+     </p>
+<A NAME="handleMultipleQueries"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>handleMultipleQueries</strong> ()
+<br></td><td align="right"><h3><strong>handleMultipleQueries</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> If not true can never run more than one query per connection sub and TOra will
+ work around this limitation by opening more connections if needed.
+     </p>
+<A NAME="createConnection"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toConnectionSub.html">toConnectionSub</A> *&nbsp;<i><strong>createConnection</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>createConnection</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Create a new connection to the database.
+     </p>
+<A NAME="closeConnection"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>closeConnection</strong></i> (<A HREF="toConnectionSub.html">toConnectionSub</A> *)
+<br></td><td align="right"><h3><i><strong>closeConnection</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Close a connection to the database.
+     </p>
+<A NAME="version"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<i><strong>version</strong></i> (<A HREF="toConnectionSub.html">toConnectionSub</A> *)
+<br></td><td align="right"><h3><i><strong>version</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Get the version of the database connected to.
+     </p>
+<A NAME="quote"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>quote</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>quote</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Return a string representation to address an object.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">The name to be quoted.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String addressing table.
+     </p>
+<A NAME="unQuote"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>unQuote</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>unQuote</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Perform the opposite of <A HREF="toConnection__connectionImpl.html#quote">quote</A>.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">The name to be un-quoted.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String addressing table.
+     </p>
+<A NAME="analyzer"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &&nbsp;<strong>analyzer</strong> ()
+<br></td><td align="right"><h3><strong>analyzer</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ Get syntax analyzer for connection
+</p>
+<p><b>Returns</b>: A reference to the syntax analyzer to use for the connection.
+     </p>
+<A NAME="objectNames"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<objectName> &nbsp;<strong>objectNames</strong> (void)
+<br></td><td align="right"><h3><strong>objectNames</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Extract available objects to query for connection. Any access to the
+ database should always be run using a long running query. If something
+ goes wrong should throw exception.
+</p>
+<p><b>Returns</b>: List of available objects.
+     </p>
+<A NAME="synonymMap"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::map<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>,objectName> &nbsp;<strong>synonymMap</strong> (std::list<objectName> &objects)
+<br></td><td align="right"><h3><strong>synonymMap</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get synonyms available for connection. Any access to the
+ database should always be run using a long running query. If something
+ goes wrong should throw exception.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>objects</i></TD><TD align="left" valign="top">Available objects for the connection. Objects
+                are sorted in owner and name order. Don't modify
+                this list.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Map of synonyms to objectnames.
+     </p>
+<A NAME="columnDesc"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="#toQDescList">toQDescList</A> &nbsp;<strong>columnDesc</strong> (const objectName &table)
+<br></td><td align="right"><h3><strong>columnDesc</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="createQuery"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toQuery__queryImpl.html">toQuery::queryImpl</A> *&nbsp;<i><strong>createQuery</strong></i> (<A HREF="toQuery.html">toQuery</A> *query,<A HREF="toConnectionSub.html">toConnectionSub</A> *conn)
+<br></td><td align="right"><h3><i><strong>createQuery</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Create a new query implementation for this connection.
+</p>
+<p><b>Returns</b>: A query implementation, allocated with new.
+     </p>
+<A NAME="execute"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>execute</strong></i> (<A HREF="toConnectionSub.html">toConnectionSub</A> *conn,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &sql,<A HREF="#toQList">toQList</A> &params)
+<br></td><td align="right"><h3><i><strong>execute</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Execute a query on an actual connection without caring about the result.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to execute on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+     </TD></TR>
+</TABLE></P>
+<A NAME="parse"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>parse</strong> (<A HREF="toConnectionSub.html">toConnectionSub</A> *conn,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &sql)
+<br></td><td align="right"><h3><strong>parse</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Parse a query on an actual connection and report any syntax problems encountered.
+ Defaults to not implemented.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to execute on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to parse
+     </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__exception.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__exception.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__exception.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,54 @@
+<HTML>
+<HEAD>
+<TITLE>class exception</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class exception</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Class that could be used to throw exceptions in connection errors. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toConnection.html">toConnection</A>::exception</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toConnection__exception.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">exception</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,int offset=-1) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref3">offset</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref4">setOffset</A></b> (int offset) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Class that could be used to throw exceptions in connection errors. Must use if you
+ want to indicate error offset.
+   </p>
+<A NAME="exception"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>exception</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,int offset=-1)
+<br></td><td align="right"><h3><strong>exception</strong></h3></td></tr></table><p></p><p> Create an exception with a string description.
+     </p>
+<A NAME="offset"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>offset</strong> (void)
+<br></td><td align="right"><h3><strong>offset</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get the offset of the error of the current statement.
+     </p>
+<A NAME="setOffset"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setOffset</strong> (int offset)
+<br></td><td align="right"><h3><strong>setOffset</strong></h3></td></tr></table><p></p><p> Set the offset of the error of the error.
+     </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__objectName.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__objectName.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toConnection__objectName.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,63 @@
+<HTML>
+<HEAD>
+<TITLE>struct objectName</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct objectName</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Contain information about a tablename. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toConnection.html">toConnection</A>::objectName</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toConnection__objectName.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref6">objectName</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type=<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>("TABLE"),const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &comment=QString::null) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref7">objectName</A></b> () 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref8">operator < </A></b> (const objectName &)  const
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref9">operator == </A></b> (const objectName &)  const
+</LI>
+</ul><h4>Public Members</h4><ul><LI>QString <b><A HREF="#ref1">Name</A></b></LI>
+<LI>QString <b><A HREF="#ref2">Owner</A></b></LI>
+<LI>QString <b><A HREF="#ref3">Type</A></b></LI>
+<LI>QString <b><A HREF="#ref4">Comment</A></b></LI>
+<LI>std::list <QString> <b><A HREF="#ref5">Synonyms</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Contain information about a tablename.
+   </p>
+<A NAME="Name"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Name</strong>
+</td><td align="right"><h3><strong>Name</strong></h3></td></tr></table><p></p><A NAME="Owner"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Owner</strong>
+</td><td align="right"><h3><strong>Owner</strong></h3></td></tr></table><p></p><A NAME="Type"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Type</strong>
+</td><td align="right"><h3><strong>Type</strong></h3></td></tr></table><p></p><A NAME="Comment"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Comment</strong>
+</td><td align="right"><h3><strong>Comment</strong></h3></td></tr></table><p></p><A NAME="Synonyms"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list <<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>>  <strong>Synonyms</strong>
+</td><td align="right"><h3><strong>Synonyms</strong></h3></td></tr></table><p></p><A NAME="objectName"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>objectName</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type=<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>("TABLE"),const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &comment=QString::null)
+<br></td><td align="right"><h3><strong>objectName</strong></h3></td></tr></table><p></p><p> Create an object name with filled in values.
+     </p>
+<A NAME="objectName"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>objectName</strong> ()
+<br></td><td align="right"><h3><strong>objectName</strong></h3></td></tr></table><p></p><p> Create an empty object name.
+     </p>
+<A NAME="operator%20%3C%20"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>operator < </strong> (const objectName &)
+<br></td><td align="right"><h3><strong>operator < </strong></h3></td></tr></table><p> <small>[const]</small></p><A NAME="operator%20==%20"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>operator == </strong> (const objectName &)
+<br></td><td align="right"><h3><strong>operator == </strong></h3></td></tr></table><p> <small>[const]</small></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toDatatype.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toDatatype.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toDatatype.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,90 @@
+<HTML>
+<HEAD>
+<TITLE>class toDatatype</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toDatatype</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ Widget used to represent a datatype selection for a column. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="todatatype_h.html">todatatype.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qhbox.html">QHBox</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toDatatype.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref12">toDatatype</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &def,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref13">toDatatype</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref14">type</A></b> ()  const
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref15">setType</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref16">setCustom</A></b> (bool prefer) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ Widget used to represent a datatype selection for a column.
+ </p>
+<A NAME="toDatatype"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toDatatype</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &def,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toDatatype</strong></h3></td></tr></table><p></p><p> Create the widget and specify connection and the datatype.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to specify datatype for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>def</i></TD><TD align="left" valign="top">Initial datatype to use.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">The parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toDatatype"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toDatatype</strong> (<A HREF="toConnection.html">toConnection</A> &conn,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toDatatype</strong></h3></td></tr></table><p></p><p> Create the widget and specify connection.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to specify datatype for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">The parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="type"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>type</strong> ()
+<br></td><td align="right"><h3><strong>type</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get a string representation of the type.
+   </p>
+<A NAME="setType"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setType</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type)
+<br></td><td align="right"><h3><strong>setType</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Change the type.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">The entire type specification (Including posible size and precision)
+   </TD></TR>
+</TABLE></P>
+<A NAME="setCustom"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setCustom</strong> (bool prefer)
+<br></td><td align="right"><h3><strong>setCustom</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Indicate if you would prefer to enter a custom datatype or if posible use the simpler controls.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>prefer</i></TD><TD align="left" valign="top">If true always use custom controls.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toEditWidget.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toEditWidget.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toEditWidget.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,292 @@
+<HTML>
+<HEAD>
+<TITLE>class toEditWidget</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toEditWidget</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This is an abstract base class for any widget (Not included in object) that wants to
+ access copy, cut, paste, open, save commands of the user interface. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toeditwidget_h.html">toeditwidget.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultCols__resultCols.html">resultCols</A>, <A HREF="toHighlightedText.html">toHighlightedText</A>, <A HREF="toListView.html">toListView</A>, <A HREF="toMarkedText.html">toMarkedText</A>, <A HREF="toResultConstraint.html">toResultConstraint</A>, <A HREF="toResultContentEditor.html">toResultContentEditor</A>, <A HREF="toResultDepend.html">toResultDepend</A>, <A HREF="toResultField.html">toResultField</A>, <A HREF="toResultIndexes.html">toResultIndexes</A>, <A HREF="toResultLong.html">toResultLong</A>, <A HREF="toResultPlan.html">toResultPlan</A>, <A HREF="toResultReferences.html">toResultReferences</A>, <A HREF="toResultStats.html">toResultStats</A>, <A HREF="toResultView.html">toResultView</A>, <A HREF="toTextView.html">toTextView</A></TD></TR>
+<TR><TH><A HREF="full-list-toEditWidget.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Types</h4><ul><LI>class <i><A HREF="toEditWidget__editHandler.html">editHandler</A></i>
+</LI>
+</ul><h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref15">toEditWidget</A></b> () 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref16">toEditWidget</A></b> (bool open,bool save,bool print,
+	       bool undo,bool redo,
+	       bool cut,bool copy,bool paste,
+	       bool search,
+	       bool selectAll,bool readAll) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref17">~toEditWidget</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref18">setEdit</A></b> (bool open,bool save,bool print,
+	       bool undo,bool redo,
+	       bool cut,bool copy,bool paste,
+	       bool search,
+	       bool selectAll,bool readAll) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref19">editOpen</A></b> (<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> file=QString::null) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref20">editSave</A></b> (bool askfile) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref21">editPrint</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref22">editUndo</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref23">editRedo</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref24">editCut</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref25">editCopy</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref26">editPaste</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref27">editSelectAll</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref28">editReadAll</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref29">openEnabled</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref30">saveEnabled</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref31">printEnabled</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref32">undoEnabled</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref33">redoEnabled</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref34">cutEnabled</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref35">copyEnabled</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref36">pasteEnabled</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref37">searchEnabled</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref38">selectAllEnabled</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref39">readAllEnabled</A></b> (bool val) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref40">openEnabled</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref41">saveEnabled</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref42">printEnabled</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref43">undoEnabled</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref44">redoEnabled</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref45">cutEnabled</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref46">copyEnabled</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref47">pasteEnabled</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref48">searchEnabled</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref49">selectAllEnabled</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref50">readAllEnabled</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref51">searchTop</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref52">searchNext</A></b> (<A HREF="#toSearchReplace">toSearchReplace</A> *search) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref53">searchReplace</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &newData) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref54">searchCanReplace</A></b> (bool all) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref55">receivedFocus</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref56">lostFocus</A></b> (void) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  void &nbsp;<b><A HREF="#ref57">addHandler</A></b> (editHandler *handler) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref58">delHandler</A></b> (editHandler *handler) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This is an abstract base class for any widget (Not included in object) that wants to
+ access copy, cut, paste, open, save commands of the user interface.
+ </p>
+<A NAME="toEditWidget__editHandler.html"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>editHandler</strong> <small>(class)</small></td><td align="right"><h3><strong>editHandler</strong></h3></td></tr></table><p></p><p> Class used to extent how to enable/disable parts of the interface as
+ focus changes.
+   </p>
+<A NAME="toEditWidget"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toEditWidget</strong> ()
+<br></td><td align="right"><h3><strong>toEditWidget</strong></h3></td></tr></table><p></p><p> Empty constructor, all functions are disabled.
+   </p>
+<A NAME="toEditWidget"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toEditWidget</strong> (bool open,bool save,bool print,
+	       bool undo,bool redo,
+	       bool cut,bool copy,bool paste,
+	       bool search,
+	       bool selectAll,bool readAll)
+<br></td><td align="right"><h3><strong>toEditWidget</strong></h3></td></tr></table><p></p><p> Specified constructor, all functions are specified in the constructor.
+   </p>
+<A NAME="~toEditWidget"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toEditWidget</strong> ()
+<br></td><td align="right"><h3><strong>~toEditWidget</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="setEdit"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setEdit</strong> (bool open,bool save,bool print,
+	       bool undo,bool redo,
+	       bool cut,bool copy,bool paste,
+	       bool search,
+	       bool selectAll,bool readAll)
+<br></td><td align="right"><h3><strong>setEdit</strong></h3></td></tr></table><p></p><p> Specify new enabled functions.
+   </p>
+<A NAME="editOpen"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>editOpen</strong> (<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> file=QString::null)
+<br></td><td align="right"><h3><strong>editOpen</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Perform an open on this widget. Default NOP.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>file</i></TD><TD align="left" valign="top">The file to open, if not specified prompt for file.
+   </TD></TR>
+</TABLE></P>
+<A NAME="editSave"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>editSave</strong> (bool askfile)
+<br></td><td align="right"><h3><strong>editSave</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Perform a save on this widget. Default NOP.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>askfile</i></TD><TD align="left" valign="top">Ask filename even if default filename is available.
+   </TD></TR>
+</TABLE></P>
+<A NAME="editPrint"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editPrint</strong> (void)
+<br></td><td align="right"><h3><strong>editPrint</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Print this widgets contents. Default NOP.
+   </p>
+<A NAME="editUndo"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editUndo</strong> (void)
+<br></td><td align="right"><h3><strong>editUndo</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Perform undo. Default NOP.
+   </p>
+<A NAME="editRedo"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editRedo</strong> (void)
+<br></td><td align="right"><h3><strong>editRedo</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Perform redo. Default NOP.
+   </p>
+<A NAME="editCut"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editCut</strong> (void)
+<br></td><td align="right"><h3><strong>editCut</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Perform cut. Default NOP.
+   </p>
+<A NAME="editCopy"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editCopy</strong> (void)
+<br></td><td align="right"><h3><strong>editCopy</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Perform copy. Default NOP.
+   </p>
+<A NAME="editPaste"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editPaste</strong> (void)
+<br></td><td align="right"><h3><strong>editPaste</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Perform paste. Default NOP.
+   </p>
+<A NAME="editSelectAll"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editSelectAll</strong> (void)
+<br></td><td align="right"><h3><strong>editSelectAll</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Select all contents. Default NOP.
+   </p>
+<A NAME="editReadAll"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editReadAll</strong> (void)
+<br></td><td align="right"><h3><strong>editReadAll</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Read all available data. Default NOP.
+   </p>
+<A NAME="openEnabled"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>openEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>openEnabled</strong></h3></td></tr></table><p></p><p> Set if open is enabled.
+   </p>
+<A NAME="saveEnabled"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>saveEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>saveEnabled</strong></h3></td></tr></table><p></p><p> Set if save is enabled.
+   </p>
+<A NAME="printEnabled"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>printEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>printEnabled</strong></h3></td></tr></table><p></p><p> Set if print is enabled.
+   </p>
+<A NAME="undoEnabled"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>undoEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>undoEnabled</strong></h3></td></tr></table><p></p><p> Set if undo is enabled.
+   </p>
+<A NAME="redoEnabled"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>redoEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>redoEnabled</strong></h3></td></tr></table><p></p><p> Set if redo is enabled.
+   </p>
+<A NAME="cutEnabled"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>cutEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>cutEnabled</strong></h3></td></tr></table><p></p><p> Set if cut is enabled.
+   </p>
+<A NAME="copyEnabled"></A><A NAME="ref35"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>copyEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>copyEnabled</strong></h3></td></tr></table><p></p><p> Set if copy is enabled.
+   </p>
+<A NAME="pasteEnabled"></A><A NAME="ref36"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>pasteEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>pasteEnabled</strong></h3></td></tr></table><p></p><p> Set if paste is enabled.
+   </p>
+<A NAME="searchEnabled"></A><A NAME="ref37"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>searchEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>searchEnabled</strong></h3></td></tr></table><p></p><p> Set if search is enabled.
+   </p>
+<A NAME="selectAllEnabled"></A><A NAME="ref38"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>selectAllEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>selectAllEnabled</strong></h3></td></tr></table><p></p><p> Set if select all is enabled.
+   </p>
+<A NAME="readAllEnabled"></A><A NAME="ref39"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>readAllEnabled</strong> (bool val)
+<br></td><td align="right"><h3><strong>readAllEnabled</strong></h3></td></tr></table><p></p><p> Set if read all is enabled.
+   </p>
+<A NAME="openEnabled"></A><A NAME="ref40"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>openEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>openEnabled</strong></h3></td></tr></table><p></p><p> Check if open is enabled.
+   </p>
+<A NAME="saveEnabled"></A><A NAME="ref41"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>saveEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>saveEnabled</strong></h3></td></tr></table><p></p><p> Check if save is enabled.
+   </p>
+<A NAME="printEnabled"></A><A NAME="ref42"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>printEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>printEnabled</strong></h3></td></tr></table><p></p><p> Check if print is enabled.
+   </p>
+<A NAME="undoEnabled"></A><A NAME="ref43"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>undoEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>undoEnabled</strong></h3></td></tr></table><p></p><p> Check if undo is enabled.
+   </p>
+<A NAME="redoEnabled"></A><A NAME="ref44"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>redoEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>redoEnabled</strong></h3></td></tr></table><p></p><p> Check if redo is enabled.
+   </p>
+<A NAME="cutEnabled"></A><A NAME="ref45"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>cutEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>cutEnabled</strong></h3></td></tr></table><p></p><p> Check if cut is enabled.
+   </p>
+<A NAME="copyEnabled"></A><A NAME="ref46"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>copyEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>copyEnabled</strong></h3></td></tr></table><p></p><p> Check if copy is enabled.
+   </p>
+<A NAME="pasteEnabled"></A><A NAME="ref47"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>pasteEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>pasteEnabled</strong></h3></td></tr></table><p></p><p> Check if paste is enabled.
+   </p>
+<A NAME="searchEnabled"></A><A NAME="ref48"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>searchEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>searchEnabled</strong></h3></td></tr></table><p></p><p> Check if search is enabled.
+   </p>
+<A NAME="selectAllEnabled"></A><A NAME="ref49"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>selectAllEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>selectAllEnabled</strong></h3></td></tr></table><p></p><p> Check if select all is enabled.
+   </p>
+<A NAME="readAllEnabled"></A><A NAME="ref50"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>readAllEnabled</strong> (void)
+<br></td><td align="right"><h3><strong>readAllEnabled</strong></h3></td></tr></table><p></p><p> Check if read all is enabled.
+   </p>
+<A NAME="searchTop"></A><A NAME="ref51"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>searchTop</strong> (void)
+<br></td><td align="right"><h3><strong>searchTop</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Move to top of data
+   </p>
+<A NAME="searchNext"></A><A NAME="ref52"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>searchNext</strong> (<A HREF="#toSearchReplace">toSearchReplace</A> *search)
+<br></td><td align="right"><h3><strong>searchNext</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Search for next entry
+</p>
+<p><b>Returns</b>: True if found, should select the found text.
+   </p>
+<A NAME="searchReplace"></A><A NAME="ref53"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>searchReplace</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &newData)
+<br></td><td align="right"><h3><strong>searchReplace</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Replace entry with new data
+   </p>
+<A NAME="searchCanReplace"></A><A NAME="ref54"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>searchCanReplace</strong> (bool all)
+<br></td><td align="right"><h3><strong>searchCanReplace</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Check if data can be modified by search
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>all</i></TD><TD align="left" valign="top">If true can replace all, otherwise can replace right now.
+   </TD></TR>
+</TABLE></P>
+<A NAME="receivedFocus"></A><A NAME="ref55"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>receivedFocus</strong> (void)
+<br></td><td align="right"><h3><strong>receivedFocus</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Call this when this widget has received the focus. Must be called by the implementor.
+   </p>
+<A NAME="lostFocus"></A><A NAME="ref56"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>lostFocus</strong> (void)
+<br></td><td align="right"><h3><strong>lostFocus</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Called when this widget has lost the focus. Don't forget to call parent when reimplemented.
+   </p>
+<A NAME="addHandler"></A><A NAME="ref57"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addHandler</strong> (editHandler *handler)
+<br></td><td align="right"><h3><strong>addHandler</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Add a hook to be called every time focus changes.
+   </p>
+<A NAME="delHandler"></A><A NAME="ref58"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>delHandler</strong> (editHandler *handler)
+<br></td><td align="right"><h3><strong>delHandler</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Removed a hook from being called every time focus changes.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toEditWidget__editHandler.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toEditWidget__editHandler.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toEditWidget__editHandler.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,59 @@
+<HTML>
+<HEAD>
+<TITLE>class editHandler</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class editHandler</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Class used to extent how to enable/disable parts of the interface as
+ focus changes. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Full name</TH><TD><code><A HREF="toEditWidget.html">toEditWidget</A>::editHandler</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toeditwidget_h.html">toeditwidget.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toEditWidget__editHandler.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">editHandler</A></b> () 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref2">~editHandler</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref3">receivedFocus</A></i></b> (<A HREF="toEditWidget.html">toEditWidget</A> *widget) 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref4">lostFocus</A></i></b> (<A HREF="toEditWidget.html">toEditWidget</A> *widget) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Class used to extent how to enable/disable parts of the interface as
+ focus changes.
+   </p>
+<A NAME="editHandler"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>editHandler</strong> ()
+<br></td><td align="right"><h3><strong>editHandler</strong></h3></td></tr></table><p></p><p> Constructor.
+     </p>
+<A NAME="~editHandler"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~editHandler</strong> ()
+<br></td><td align="right"><h3><strong>~editHandler</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Destructor.
+     </p>
+<A NAME="receivedFocus"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>receivedFocus</strong></i> (<A HREF="toEditWidget.html">toEditWidget</A> *widget)
+<br></td><td align="right"><h3><i><strong>receivedFocus</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Called when a new widget receives the focus.
+     </p>
+<A NAME="lostFocus"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>lostFocus</strong></i> (<A HREF="toEditWidget.html">toEditWidget</A> *widget)
+<br></td><td align="right"><h3><i><strong>lostFocus</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Called when a widget loses the focus.
+     </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toExtract.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toExtract.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toExtract.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,631 @@
+<HTML>
+<HEAD>
+<TITLE>class toExtract</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toExtract</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ This class can be used to reverse engineered database objects. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toextract_h.html">toextract.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toExtract.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Types</h4><ul><LI>class <A HREF="toExtract__datatype.html">datatype</A>
+</LI>
+<LI>class <A HREF="toExtract__extractor.html">extractor</A>
+</LI>
+<LI>struct <A HREF="toExtract__columnInfo.html">columnInfo</A>
+</LI>
+</ul><h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref36">toExtract</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref37">create</A></b> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &object) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref38">create</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &object) 
+</LI>
+<LI>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><A HREF="#ref39">describe</A></b> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &object) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref40">drop</A></b> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &object) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref41">drop</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &object) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref42">migrate</A></b> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &drpLst,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &crtLst) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref43">migrate</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &drpLst,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &crtLst) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref44">setState</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qvariant.html">QVariant</A> &val) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qvariant.html">QVariant</A> &nbsp;<b><A HREF="#ref45">state</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref46">setSchema</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &schema) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref47">setResize</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &resize) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref48">setPrompt</A></b> (bool prompt) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref49">setHeading</A></b> (bool heading) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref50">setConstraints</A></b> (bool constraints) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref51">setIndexes</A></b> (bool indexes) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref52">setGrants</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref53">setStorage</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref54">setParallel</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref55">setPartition</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref56">setContents</A></b> (bool val,int commitdistance) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref57">setComments</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref58">setCode</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref59">setBlockSize</A></b> (int val) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref60">getSchema</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref61">getResize</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref62">getPrompt</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref63">getHeading</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref64">getConstraints</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref65">getIndexes</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref66">getGrants</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref67">getStorage</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref68">getParallel</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref69">getPartition</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref70">getContents</A></b> (void) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref71">getCommitDistance</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref72">getComments</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref73">getCode</A></b> (void) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref74">getBlockSize</A></b> (void) 
+</LI>
+<LI><A HREF="toConnection.html">toConnection</A> &&nbsp;<b><A HREF="#ref75">connection</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref76">initialNext</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &blocks,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &initial,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &next) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref77">intSchema</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,bool desc) 
+</LI>
+<LI>std::list<datatype> &nbsp;<b><A HREF="#ref78">datatypes</A></b> () 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref79">createFromParse</A></b> (std::list<<A HREF="toSQLParse__statement.html">toSQLParse::statement</A>>::iterator start,
+			  std::list<<A HREF="toSQLParse__statement.html">toSQLParse::statement</A>>::iterator end) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  void &nbsp;<b><A HREF="#ref80">srcDst2DropCreate</A></b> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &source,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &destination,
+				std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &drop,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &creat) 
+</LI>
+<LI>static  bool &nbsp;<b><A HREF="#ref81">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref82">addDescription</A></b> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &ret,const std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &ctx,
+			     const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+			     const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+			     const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+			     const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+			     const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+<LI>static  std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><A HREF="#ref83">splitDescribe</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref84">partDescribe</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,int level) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref85">contextDescribe</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,int level) 
+</LI>
+<LI>static  std::list<columnInfo> &nbsp;<b><A HREF="#ref87">parseColumnDescription</A></b> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>>::const_iterator begin,
+						      std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>>::const_iterator end,
+						      int level=3) 
+</LI>
+<LI>static  std::list<columnInfo> &nbsp;<b><A HREF="#ref88">parseColumnDescription</A></b> (const std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &description,int level=3) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref89">extractor</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ This class can be used to reverse engineered database objects.
+ </p>
+<A NAME="toExtract__datatype.html"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>datatype</strong> <small>(class)</small></td><td align="right"><h3><strong>datatype</strong></h3></td></tr></table><p></p><p> Describes an available datatype for the database.
+   </p>
+<A NAME="toExtract__extractor.html"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>extractor</strong> <small>(class)</small></td><td align="right"><h3><strong>extractor</strong></h3></td></tr></table><p></p><p> This is an abstract class to implement part of an extractor for a database. Observe
+ that an extractor must be stateless and threadsafe except for constructors and
+ destructors. Use the toExtract::context function for saving context.
+   </p>
+<A NAME="toExtract"></A><A NAME="ref36"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toExtract</strong> (<A HREF="toConnection.html">toConnection</A> &conn,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>toExtract</strong></h3></td></tr></table><p></p><p> Create a new extractor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to extract from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget of progress indicator.
+   </TD></TR>
+</TABLE></P>
+<A NAME="create"></A><A NAME="ref37"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>create</strong> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &object)
+<br></td><td align="right"><h3><strong>create</strong></h3></td></tr></table><p></p><p> Create script to recreate list of objects.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>object</i></TD><TD align="left" valign="top">List of object. This has the format {type}:{schema}.{object}.
+               The type is database dependent but can as an example be of
+               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A string containing a script to recreate the specified objects.
+   </p>
+<A NAME="create"></A><A NAME="ref38"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>create</strong> (<A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &object)
+<br></td><td align="right"><h3><strong>create</strong></h3></td></tr></table><p></p><p> Create script to recreate list of objects.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>stream</i></TD><TD align="left" valign="top">Stream to write result to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>object</i></TD><TD align="left" valign="top">List of object. This has the format {type}:{schema}.{object}.
+               The type is database dependent but can as an example be of
+               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+   </TD></TR>
+</TABLE></P>
+<A NAME="describe"></A><A NAME="ref39"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<strong>describe</strong> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &object)
+<br></td><td align="right"><h3><strong>describe</strong></h3></td></tr></table><p></p><p> Create a description of objects.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>object</i></TD><TD align="left" valign="top">List of object. This has the format {type}:{schema}.{object}.
+               The type is database dependent but can as an example be of
+               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of strings describing the objects. Each string should be
+         considered like a list of strings separated by the character '\001'.
+         The later in each string the smaller item the change and it is hierachical.
+   </p>
+<A NAME="drop"></A><A NAME="ref40"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>drop</strong> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &object)
+<br></td><td align="right"><h3><strong>drop</strong></h3></td></tr></table><p></p><p> Create script to drop a list of objects.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>object</i></TD><TD align="left" valign="top">List of object. This has the format {type}:{schema}.{object}.
+               The type is database dependent but can as an example be of
+               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A string containing a script to drop the specified objects.
+   </p>
+<A NAME="drop"></A><A NAME="ref41"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>drop</strong> (<A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &object)
+<br></td><td align="right"><h3><strong>drop</strong></h3></td></tr></table><p></p><p> Create script to drop a list of objects.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>stream</i></TD><TD align="left" valign="top">Stream to write result to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>object</i></TD><TD align="left" valign="top">List of object. This has the format {type}:{schema}.{object}.
+               The type is database dependent but can as an example be of
+               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A string containing a script to drop the specified objects.
+   </p>
+<A NAME="migrate"></A><A NAME="ref42"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>migrate</strong> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &drpLst,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &crtLst)
+<br></td><td align="right"><h3><strong>migrate</strong></h3></td></tr></table><p></p><p> Called to generate a script to migrate a database object from one description to
+ another description.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>stream</i></TD><TD align="left" valign="top">Stream to write result to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>src</i></TD><TD align="left" valign="top">Source description list, generated by describes for the same database.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>dst</i></TD><TD align="left" valign="top">Destination description list, generated by describes for the same database.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A script to change the src database object to dst.
+   </p>
+<A NAME="migrate"></A><A NAME="ref43"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>migrate</strong> (<A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &drpLst,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &crtLst)
+<br></td><td align="right"><h3><strong>migrate</strong></h3></td></tr></table><p></p><p> Called to generate a script to migrate a database object from one description to
+ another description.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>stream</i></TD><TD align="left" valign="top">Stream to write result to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>src</i></TD><TD align="left" valign="top">Source description list, generated by describes for the same database.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>dst</i></TD><TD align="left" valign="top">Destination description list, generated by describes for the same database.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A script to change the src database object to dst.
+   </p>
+<A NAME="setState"></A><A NAME="ref44"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setState</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qvariant.html">QVariant</A> &val)
+<br></td><td align="right"><h3><strong>setState</strong></h3></td></tr></table><p></p><p> Set a context for this extractor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of this context
+</TD></TR>
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Value of this context
+   </TD></TR>
+</TABLE></P>
+<A NAME="state"></A><A NAME="ref45"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qvariant.html">QVariant</A> &nbsp;<strong>state</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name)
+<br></td><td align="right"><h3><strong>state</strong></h3></td></tr></table><p></p><p> Get the value of a context for the current extractor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of the context to extract.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The value of the context.
+   </p>
+<A NAME="setSchema"></A><A NAME="ref46"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSchema</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &schema)
+<br></td><td align="right"><h3><strong>setSchema</strong></h3></td></tr></table><p></p><p> Set the schema of the extraction.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>schema</i></TD><TD align="left" valign="top">Specify the schema of the output script or description. If empty
+               don't specify any object. If the string "1" use same object as input.
+               Otherwise use the specified schema.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setResize"></A><A NAME="ref47"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setResize</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &resize)
+<br></td><td align="right"><h3><strong>setResize</strong></h3></td></tr></table><p></p><p> Set sizes to use for resize of object on extraction.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>A</i></TD><TD align="left" valign="top">list of sizes separated by ':'. Should be an even multiple of three where
+        the first value is the largest current size to use these values. The next
+        value is the initial value to use, the last is the next increment value to
+        use. As a special case the string "1" can be used to set up auto resize.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setPrompt"></A><A NAME="ref48"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setPrompt</strong> (bool prompt)
+<br></td><td align="right"><h3><strong>setPrompt</strong></h3></td></tr></table><p></p><p> Set inclusion of prompts.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>prompt</i></TD><TD align="left" valign="top">If prompt generation should be generated.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setHeading"></A><A NAME="ref49"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setHeading</strong> (bool heading)
+<br></td><td align="right"><h3><strong>setHeading</strong></h3></td></tr></table><p></p><p> Include heading in scripts.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>heading</i></TD><TD align="left" valign="top">Include heading in scripts.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setConstraints"></A><A NAME="ref50"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setConstraints</strong> (bool constraints)
+<br></td><td align="right"><h3><strong>setConstraints</strong></h3></td></tr></table><p></p><p> Include constraints in extraction.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>constraints</i></TD><TD align="left" valign="top">Include constraints.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setIndexes"></A><A NAME="ref51"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setIndexes</strong> (bool indexes)
+<br></td><td align="right"><h3><strong>setIndexes</strong></h3></td></tr></table><p></p><p> Include indexes in extraction.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>indexes</i></TD><TD align="left" valign="top">Include indexes.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setGrants"></A><A NAME="ref52"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setGrants</strong> (bool val)
+<br></td><td align="right"><h3><strong>setGrants</strong></h3></td></tr></table><p></p><p> Include grants in extraction.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Include grants.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setStorage"></A><A NAME="ref53"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setStorage</strong> (bool val)
+<br></td><td align="right"><h3><strong>setStorage</strong></h3></td></tr></table><p></p><p> Include storage specification in extraction.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Include storage specification.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setParallel"></A><A NAME="ref54"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setParallel</strong> (bool val)
+<br></td><td align="right"><h3><strong>setParallel</strong></h3></td></tr></table><p></p><p> Include parallel specification in extraction.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Include parallel specification.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setPartition"></A><A NAME="ref55"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setPartition</strong> (bool val)
+<br></td><td align="right"><h3><strong>setPartition</strong></h3></td></tr></table><p></p><p> Include partition specification in extraction.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Include partition specification.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setContents"></A><A NAME="ref56"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setContents</strong> (bool val,int commitdistance)
+<br></td><td align="right"><h3><strong>setContents</strong></h3></td></tr></table><p></p><p> Include contents of tables in scripts.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Include contents of tables.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>commitdistance</i></TD><TD align="left" valign="top">The commit distance of the contents 0 means whole tables.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setComments"></A><A NAME="ref57"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setComments</strong> (bool val)
+<br></td><td align="right"><h3><strong>setComments</strong></h3></td></tr></table><p></p><p> Include comments in extraction.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Include indexes.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setCode"></A><A NAME="ref58"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setCode</strong> (bool val)
+<br></td><td align="right"><h3><strong>setCode</strong></h3></td></tr></table><p></p><p> Include code in extraction.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Include code.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setBlockSize"></A><A NAME="ref59"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setBlockSize</strong> (int val)
+<br></td><td align="right"><h3><strong>setBlockSize</strong></h3></td></tr></table><p></p><p> Set blocksize of database.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">New value of blocksize.
+   </TD></TR>
+</TABLE></P>
+<A NAME="getSchema"></A><A NAME="ref60"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>getSchema</strong> (void)
+<br></td><td align="right"><h3><strong>getSchema</strong></h3></td></tr></table><p></p><p> Get schema specification.
+</p>
+<p><b>Returns</b>: Schema specification.
+</p>
+<p><b>See also</b>: setSchema</p>
+<A NAME="getResize"></A><A NAME="ref61"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getResize</strong> (void)
+<br></td><td align="right"><h3><strong>getResize</strong></h3></td></tr></table><p></p><p> Get resize specification.
+</p>
+<p><b>Returns</b>: Resize specification.
+</p>
+<p><b>See also</b>: setResize</p>
+<A NAME="getPrompt"></A><A NAME="ref62"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getPrompt</strong> (void)
+<br></td><td align="right"><h3><strong>getPrompt</strong></h3></td></tr></table><p></p><p> Check if prompt are generated.
+</p>
+<p><b>Returns</b>: If prompts are generated.
+   </p>
+<A NAME="getHeading"></A><A NAME="ref63"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getHeading</strong> (void)
+<br></td><td align="right"><h3><strong>getHeading</strong></h3></td></tr></table><p></p><p> Check if headings are generated.
+</p>
+<p><b>Returns</b>: If headings are generated.
+   </p>
+<A NAME="getConstraints"></A><A NAME="ref64"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getConstraints</strong> (void)
+<br></td><td align="right"><h3><strong>getConstraints</strong></h3></td></tr></table><p></p><p> Check if constraints are generated.
+</p>
+<p><b>Returns</b>: If constraints are generated.
+   </p>
+<A NAME="getIndexes"></A><A NAME="ref65"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getIndexes</strong> (void)
+<br></td><td align="right"><h3><strong>getIndexes</strong></h3></td></tr></table><p></p><p> Check if indexes are generated.
+</p>
+<p><b>Returns</b>: If indexes are generated.
+   </p>
+<A NAME="getGrants"></A><A NAME="ref66"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getGrants</strong> (void)
+<br></td><td align="right"><h3><strong>getGrants</strong></h3></td></tr></table><p></p><p> Check if grants are generated.
+</p>
+<p><b>Returns</b>: If grants are generated.
+   </p>
+<A NAME="getStorage"></A><A NAME="ref67"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getStorage</strong> (void)
+<br></td><td align="right"><h3><strong>getStorage</strong></h3></td></tr></table><p></p><p> Check if storage specification are generated.
+</p>
+<p><b>Returns</b>: If storage specification are generated.
+   </p>
+<A NAME="getParallel"></A><A NAME="ref68"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getParallel</strong> (void)
+<br></td><td align="right"><h3><strong>getParallel</strong></h3></td></tr></table><p></p><p> Check if parallell specification are generated.
+</p>
+<p><b>Returns</b>: If parallell specification are generated.
+   </p>
+<A NAME="getPartition"></A><A NAME="ref69"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getPartition</strong> (void)
+<br></td><td align="right"><h3><strong>getPartition</strong></h3></td></tr></table><p></p><p> Check if partition specification are generated.
+</p>
+<p><b>Returns</b>: If partition specification  are generated.
+   </p>
+<A NAME="getContents"></A><A NAME="ref70"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getContents</strong> (void)
+<br></td><td align="right"><h3><strong>getContents</strong></h3></td></tr></table><p></p><p> Check if contents of tables are generated.
+</p>
+<p><b>Returns</b>: If content is generated.
+   </p>
+<A NAME="getCommitDistance"></A><A NAME="ref71"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>getCommitDistance</strong> (void)
+<br></td><td align="right"><h3><strong>getCommitDistance</strong></h3></td></tr></table><p></p><p> Get the distance of the commits when content is generated.
+</p>
+<p><b>Returns</b>: Commit distance.
+   </p>
+<A NAME="getComments"></A><A NAME="ref72"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getComments</strong> (void)
+<br></td><td align="right"><h3><strong>getComments</strong></h3></td></tr></table><p></p><p> Check if comments are generated.
+</p>
+<p><b>Returns</b>: If comments are generated.
+   </p>
+<A NAME="getCode"></A><A NAME="ref73"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getCode</strong> (void)
+<br></td><td align="right"><h3><strong>getCode</strong></h3></td></tr></table><p></p><p> Check if code is generated.
+</p>
+<p><b>Returns</b>: If code is generated.
+   </p>
+<A NAME="getBlockSize"></A><A NAME="ref74"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>getBlockSize</strong> (void)
+<br></td><td align="right"><h3><strong>getBlockSize</strong></h3></td></tr></table><p></p><p> Get blocksize.
+   </p>
+<A NAME="connection"></A><A NAME="ref75"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toConnection.html">toConnection</A> &&nbsp;<strong>connection</strong> ()
+<br></td><td align="right"><h3><strong>connection</strong></h3></td></tr></table><p></p><p> Get the connection this extractor is working on.
+   </p>
+<A NAME="initialNext"></A><A NAME="ref76"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>initialNext</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &blocks,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &initial,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &next)
+<br></td><td align="right"><h3><strong>initialNext</strong></h3></td></tr></table><p></p><p> Fill in the initial and next value for an object currently holding a number of
+ allocated blocks. Uses the resize or default sizes.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>blocks</i></TD><TD align="left" valign="top">Blocks currently allocated.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>initial</i></TD><TD align="left" valign="top">New initial value.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>next</i></TD><TD align="left" valign="top">New next value.
+   </TD></TR>
+</TABLE></P>
+<A NAME="intSchema"></A><A NAME="ref77"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>intSchema</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,bool desc)
+<br></td><td align="right"><h3><strong>intSchema</strong></h3></td></tr></table><p></p><p> Get the schema name specified by the extractor setup. Will include the following '.'
+ if needed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>owner</i></TD><TD align="left" valign="top">Owner of object to get schema for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>desc</i></TD><TD align="left" valign="top">Used from describe and not to generate script.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The translated schema.
+   </p>
+<A NAME="datatypes"></A><A NAME="ref78"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<datatype> &nbsp;<strong>datatypes</strong> ()
+<br></td><td align="right"><h3><strong>datatypes</strong></h3></td></tr></table><p></p><p> Get the available datatypes for a database.
+</p>
+<p><b>Returns</b>: A list of datatypes.
+   </p>
+<A NAME="createFromParse"></A><A NAME="ref79"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>createFromParse</strong> (std::list<<A HREF="toSQLParse__statement.html">toSQLParse::statement</A>>::iterator start,
+			  std::list<<A HREF="toSQLParse__statement.html">toSQLParse::statement</A>>::iterator end)
+<br></td><td align="right"><h3><strong>createFromParse</strong></h3></td></tr></table><p></p><p> Utility function, creates a statement from the start to the end specified by the
+ parameters. The connection used to specify parsing is the one of the extractor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>start</i></TD><TD align="left" valign="top">Start of parameters.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>end</i></TD><TD align="left" valign="top">End of parameters.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The indented statement.
+   </p>
+<A NAME="srcDst2DropCreate"></A><A NAME="ref80"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>srcDst2DropCreate</strong> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &source,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &destination,
+				std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &drop,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &creat)
+<br></td><td align="right"><h3><strong>srcDst2DropCreate</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Create a source and destination object list to two other lists
+ containing dropped and created objects or attributes.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>source</i></TD><TD align="left" valign="top">Source list input (Will not be modified).
+</TD></TR>
+<TR><TD align="left" valign="top"><i>destination</i></TD><TD align="left" valign="top">Destination list input (Will not be modified).
+</TD></TR>
+<TR><TD align="left" valign="top"><i>drop</i></TD><TD align="left" valign="top">Drop list output (Will be overwritten).
+</TD></TR>
+<TR><TD align="left" valign="top"><i>create</i></TD><TD align="left" valign="top">Create list output (Will be overwritten).
+   </TD></TR>
+</TABLE></P>
+<A NAME="canHandle"></A><A NAME="ref81"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Check if a database is supported at all by the extractor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to check for support.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: True if the database is supported.
+   </p>
+<A NAME="addDescription"></A><A NAME="ref82"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addDescription</strong> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &ret,const std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &ctx,
+			     const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+			     const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+			     const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+			     const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+			     const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>addDescription</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Add a list to description.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ret</i></TD><TD align="left" valign="top">The return list to add a line to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>ctx</i></TD><TD align="left" valign="top">The current description context.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">First extra argument to add.
+   </TD></TR>
+</TABLE></P>
+<A NAME="splitDescribe"></A><A NAME="ref83"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<strong>splitDescribe</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>splitDescribe</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Split a description line into its components.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">The description line to split.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The list of components.
+   </p>
+<A NAME="partDescribe"></A><A NAME="ref84"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>partDescribe</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,int level)
+<br></td><td align="right"><h3><strong>partDescribe</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get the part of a description indicated by the level
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Description string
+</TD></TR>
+<TR><TD align="left" valign="top"><i>level</i></TD><TD align="left" valign="top">The level to get (0 is the first level)
+   </TD></TR>
+</TABLE></P>
+<A NAME="contextDescribe"></A><A NAME="ref85"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>contextDescribe</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,int level)
+<br></td><td align="right"><h3><strong>contextDescribe</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get the context of a given level.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Description string
+</TD></TR>
+<TR><TD align="left" valign="top"><i>level</i></TD><TD align="left" valign="top">The level to get the context for (1 is the first to not return empty string.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The context, if not enough parts are available null is returned.
+   </p>
+<A NAME="toExtract__columnInfo.html"></A><A NAME="ref86"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>columnInfo</strong> <small>(struct)</small></td><td align="right"><h3><strong>columnInfo</strong></h3></td></tr></table><p></p><p> Used to get column information from a describe list
+   </p>
+<A NAME="parseColumnDescription"></A><A NAME="ref87"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<columnInfo> &nbsp;<strong>parseColumnDescription</strong> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>>::const_iterator begin,
+						      std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>>::const_iterator end,
+						      int level=3)
+<br></td><td align="right"><h3><strong>parseColumnDescription</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Parse a column description and return a sorted list of column data.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>begin</i></TD><TD align="left" valign="top">The iterator indicating the beginning to start searching from (Inclusive).
+</TD></TR>
+<TR><TD align="left" valign="top"><i>end</i></TD><TD align="left" valign="top">The iterator indicating the end to end searching at (Not inclusive).
+</TD></TR>
+<TR><TD align="left" valign="top"><i>level</i></TD><TD align="left" valign="top">Number of levels of context to discard before looking for "COLUMN" definition.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The list of column definitions. Sorted by column order.
+   </p>
+<A NAME="parseColumnDescription"></A><A NAME="ref88"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<columnInfo> &nbsp;<strong>parseColumnDescription</strong> (const std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &description,int level=3)
+<br></td><td align="right"><h3><strong>parseColumnDescription</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Parse a column description and return a sorted list of column data.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>description</i></TD><TD align="left" valign="top">A description list. Will go through entire list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>level</i></TD><TD align="left" valign="top">Number of levels of context to discard before looking for "COLUMN" definition.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The list of column definitions. Sorted by column order.
+   </p>
+<A NAME="extractor"></A><A NAME="ref89"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>extractor</strong>
+</td><td align="right"><h3><strong>extractor</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__columnInfo.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__columnInfo.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__columnInfo.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,61 @@
+<HTML>
+<HEAD>
+<TITLE>struct columnInfo</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct columnInfo</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Used to get column information from a describe list
+    <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toExtract.html">toExtract</A>::columnInfo</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toextract_h.html">toextract.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toExtract__columnInfo.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref5">columnInfo</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref6">operator <</A></b> (const columnInfo &inf) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref7">operator ==</A></b> (const columnInfo &inf) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>QString <b><A HREF="#ref1">Name</A></b></LI>
+<LI>QString <b><A HREF="#ref2">Definition</A></b></LI>
+<LI>std::map<QString,QString> <b><A HREF="#ref3">Data</A></b></LI>
+<LI>int <b><A HREF="#ref4">Order</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Used to get column information from a describe list
+   </p>
+<A NAME="Name"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Name</strong>
+</td><td align="right"><h3><strong>Name</strong></h3></td></tr></table><p></p><A NAME="Definition"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Definition</strong>
+</td><td align="right"><h3><strong>Definition</strong></h3></td></tr></table><p></p><A NAME="Data"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::map<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>>  <strong>Data</strong>
+</td><td align="right"><h3><strong>Data</strong></h3></td></tr></table><p></p><A NAME="Order"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Order</strong>
+</td><td align="right"><h3><strong>Order</strong></h3></td></tr></table><p></p><A NAME="columnInfo"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>columnInfo</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>columnInfo</strong></h3></td></tr></table><p></p><p> Create column information from name.
+     </p>
+<A NAME="operator%20%3C"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>operator <</strong> (const columnInfo &inf)
+<br></td><td align="right"><h3><strong>operator <</strong></h3></td></tr></table><p></p><p> Implement sort order based only on Order field.
+     </p>
+<A NAME="operator%20=="></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>operator ==</strong> (const columnInfo &inf)
+<br></td><td align="right"><h3><strong>operator ==</strong></h3></td></tr></table><p></p><p> Implement sort order based only on Order field.
+     </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__datatype.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__datatype.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__datatype.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,85 @@
+<HTML>
+<HEAD>
+<TITLE>class datatype</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class datatype</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Describes an available datatype for the database. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toExtract.html">toExtract</A>::datatype</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toextract_h.html">toextract.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toExtract__datatype.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref4">datatype</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,int maxLength=-1,int maxPrecision=-1) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref5">hasLength</A></b> () 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref6">hasPrecision</A></b> () 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref7">maxLength</A></b> () 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref8">maxPrecision</A></b> () 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref9">name</A></b> () 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref10">operator < </A></b> (const datatype &dat)  const
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref11">operator == </A></b> (const datatype &dat)  const
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Describes an available datatype for the database.
+   </p>
+<A NAME="datatype"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>datatype</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,int maxLength=-1,int maxPrecision=-1)
+<br></td><td align="right"><h3><strong>datatype</strong></h3></td></tr></table><p></p><p> Create a new datatype description.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of datatype.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>maxLength</i></TD><TD align="left" valign="top">Maximum length of parameter if length is needed.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>maxPrecision</i></TD><TD align="left" valign="top">Maximum precision of parameter if precision is supported.
+     </TD></TR>
+</TABLE></P>
+<A NAME="hasLength"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>hasLength</strong> ()
+<br></td><td align="right"><h3><strong>hasLength</strong></h3></td></tr></table><p></p><p> Returns true if type has length specification.
+     </p>
+<A NAME="hasPrecision"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>hasPrecision</strong> ()
+<br></td><td align="right"><h3><strong>hasPrecision</strong></h3></td></tr></table><p></p><p> Returns true if type has precision specification.
+     </p>
+<A NAME="maxLength"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>maxLength</strong> ()
+<br></td><td align="right"><h3><strong>maxLength</strong></h3></td></tr></table><p></p><p> Get the maximum length value.
+     </p>
+<A NAME="maxPrecision"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>maxPrecision</strong> ()
+<br></td><td align="right"><h3><strong>maxPrecision</strong></h3></td></tr></table><p></p><p> Get the maximum precision of the datatype.
+     </p>
+<A NAME="name"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>name</strong> ()
+<br></td><td align="right"><h3><strong>name</strong></h3></td></tr></table><p></p><p> Get the name of the datatype.
+     </p>
+<A NAME="operator%20%3C%20"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>operator < </strong> (const datatype &dat)
+<br></td><td align="right"><h3><strong>operator < </strong></h3></td></tr></table><p> <small>[const]</small></p><p> Implemented so that you can easily sort a list of them. Just compares the names.
+     </p>
+<A NAME="operator%20==%20"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>operator == </strong> (const datatype &dat)
+<br></td><td align="right"><h3><strong>operator == </strong></h3></td></tr></table><p> <small>[const]</small></p><p> Implemented so that you can easily sort a list of them. Just compares the names.
+     </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__extractor.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__extractor.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toExtract__extractor.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,226 @@
+<HTML>
+<HEAD>
+<TITLE>class extractor</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class extractor</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This is an abstract class to implement part of an extractor for a database. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toExtract.html">toExtract</A>::extractor</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toextract_h.html">toextract.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toExtract__extractor.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">extractor</A></b> () 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref4">~extractor</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref5">initialize</A></b> (<A HREF="toExtract.html">toExtract</A> &ext)  const
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">create</A></b> (<A HREF="toExtract.html">toExtract</A> &ext,
+			<A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,
+			const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type,
+			const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &schema,
+			const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,
+			const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)  const
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref7">describe</A></b> (<A HREF="toExtract.html">toExtract</A> &ext,
+			  std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &lst,
+			  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type,
+			  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &schema,
+			  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,
+			  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)  const
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref8">migrate</A></b> (<A HREF="toExtract.html">toExtract</A> &ext,
+			 <A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,
+			 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type,
+			 std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &src,
+			 std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &dst)  const
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref9">drop</A></b> (<A HREF="toExtract.html">toExtract</A> &ext,
+		      <A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,
+		      const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type,
+		      const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &schema,
+		      const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,
+		      const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)  const
+</LI>
+<LI>virtual  std::list<datatype> &nbsp;<b><A HREF="#ref10">datatypes</A></b> ()  const
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>void &nbsp;<b><A HREF="#ref1">registerExtract</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &db,
+			 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &oper,
+			 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref2">unregisterExtract</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &db,
+			   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &oper,
+			   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This is an abstract class to implement part of an extractor for a database. Observe
+ that an extractor must be stateless and threadsafe except for constructors and
+ destructors. Use the toExtract::context function for saving context.
+   </p>
+<A NAME="registerExtract"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>registerExtract</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &db,
+			 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &oper,
+			 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type)
+<br></td><td align="right"><h3><strong>registerExtract</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Register an operation to be handled by this extractor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>db</i></TD><TD align="left" valign="top">Database this extractor works on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>oper</i></TD><TD align="left" valign="top">What kind of operation to implement. Can be one of CREATE,
+             DESCRIBE, MIGRATE or DROP.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">The type of object that this is implemented for. Database specific.
+     </TD></TR>
+</TABLE></P>
+<A NAME="unregisterExtract"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>unregisterExtract</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &db,
+			   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &oper,
+			   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type)
+<br></td><td align="right"><h3><strong>unregisterExtract</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Unregister an operation to be handled by this extractor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>db</i></TD><TD align="left" valign="top">Database this extractor works on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>oper</i></TD><TD align="left" valign="top">What kind of operation to implement. Can be one of CREATE,
+             DESCRIBE, MIGRATE or DROP.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">The type of object that this is implemented for. Database specific.
+     </TD></TR>
+</TABLE></P>
+<A NAME="extractor"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>extractor</strong> ()
+<br></td><td align="right"><h3><strong>extractor</strong></h3></td></tr></table><p></p><p> Create an extractor. Normally called from a statical instantiator. Should register
+ objects it can handle <A HREF="toExtract__extractor.html#registerExtract">registerExtract</A>. Apart from the objects it handles one
+ extractor per database can also register an empty operation and type parameter to
+ <A HREF="toExtract__extractor.html#registerExtract">registerExtract</A> which will be called to initialize an extractor once per
+ constructed toExtract object.
+ operation. 
+     </p>
+<A NAME="~extractor"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~extractor</strong> ()
+<br></td><td align="right"><h3><strong>~extractor</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Destructor.
+     </p>
+<A NAME="initialize"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>initialize</strong> (<A HREF="toExtract.html">toExtract</A> &ext)
+<br></td><td align="right"><h3><strong>initialize</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Initiate an extractor for a given connection. Can be used to set up states necessary
+ for further processing. Should probably set blocksize to be used for resizing (toExtract::setBlocksize).
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ext</i></TD><TD align="left" valign="top">Extractor to generate script.
+     </TD></TR>
+</TABLE></P>
+<A NAME="create"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>create</strong> (<A HREF="toExtract.html">toExtract</A> &ext,
+			<A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,
+			const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type,
+			const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &schema,
+			const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,
+			const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>create</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Called to generate a script to recreate a database object.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ext</i></TD><TD align="left" valign="top">Extractor to generate script.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>stream</i></TD><TD align="left" valign="top">Stream to write script to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">Type of object to recreate.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>schema</i></TD><TD align="left" valign="top">Specify the schema of the output script or description. If empty
+               don't specify any object. If the string "1" use same object as input.
+               Otherwise use the specified schema.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>owner</i></TD><TD align="left" valign="top">Owner of database object.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of database object.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A string containing a script to recreate an object.
+     </p>
+<A NAME="describe"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>describe</strong> (<A HREF="toExtract.html">toExtract</A> &ext,
+			  std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &lst,
+			  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type,
+			  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &schema,
+			  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,
+			  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>describe</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Called to describe a database object.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ext</i></TD><TD align="left" valign="top">Extractor to generate script.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>lst</i></TD><TD align="left" valign="top">List of descriptions for the object. Should be appended.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">Type of object to recreate.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>schema</i></TD><TD align="left" valign="top">Specify the schema of the output script or description. If empty
+               don't specify any object. If the string "1" use same object as input.
+               Otherwise use the specified schema.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>owner</i></TD><TD align="left" valign="top">Owner of database object.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of database object.
+     </TD></TR>
+</TABLE></P>
+<A NAME="migrate"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>migrate</strong> (<A HREF="toExtract.html">toExtract</A> &ext,
+			 <A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,
+			 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type,
+			 std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &src,
+			 std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &dst)
+<br></td><td align="right"><h3><strong>migrate</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Called to generate a script to migrate a database object from one description to
+ another description.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ext</i></TD><TD align="left" valign="top">Extractor to generate script.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">Type of object to migrate.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>src</i></TD><TD align="left" valign="top">Source description list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>dst</i></TD><TD align="left" valign="top">Destination description list.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A script to change the src database object to dst.
+     </p>
+<A NAME="drop"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>drop</strong> (<A HREF="toExtract.html">toExtract</A> &ext,
+		      <A HREF="/usr/lib/qt3/doc/html/qtextstream.html">QTextStream</A> &stream,
+		      const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &type,
+		      const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &schema,
+		      const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,
+		      const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>drop</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Called to generate a script to drop an object.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ext</i></TD><TD align="left" valign="top">Extractor to generate script.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">Type of object to recreate.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>schema</i></TD><TD align="left" valign="top">Specify the schema of the output script or description. If empty
+               don't specify any object. If the string "1" use same object as input.
+               Otherwise use the specified schema.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>owner</i></TD><TD align="left" valign="top">Owner of database object.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of database object.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A string containing a script to recreate an object.
+     </p>
+<A NAME="datatypes"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<datatype> &nbsp;<strong>datatypes</strong> ()
+<br></td><td align="right"><h3><strong>datatypes</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Get the available datatypes for the database.
+     </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toFilesize.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toFilesize.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toFilesize.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,97 @@
+<HTML>
+<HEAD>
+<TITLE>class toFilesize</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toFilesize</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ A widget to get a size value for Oracle objects. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tofilesize_h.html">tofilesize.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qbuttongroup.html">QButtonGroup</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toFilesize.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref8">toFilesize</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A>* parent=0,const char* name=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref9">toFilesize</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A>* parent=0,const char* name=0) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref10">setValue</A></b> (int sizeInKB) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref11">value</A></b> (void) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref12">sizeString</A></b> (void) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref7">valueChanged</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ A widget to get a size value for Oracle objects.
+ </p>
+<A NAME="valueChanged"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>valueChanged</strong> (void)
+<br></td><td align="right"><h3><strong>valueChanged</strong></h3></td></tr></table><p> <small>[signal]</small></p><p>
+ Emitted when value was changed in the widget.
+   </p>
+<A NAME="toFilesize"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toFilesize</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A>* parent=0,const char* name=0)
+<br></td><td align="right"><h3><strong>toFilesize</strong></h3></td></tr></table><p></p><p>
+ Create a filesize widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toFilesize"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toFilesize</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A>* parent=0,const char* name=0)
+<br></td><td align="right"><h3><strong>toFilesize</strong></h3></td></tr></table><p></p><p>
+ Create a filesize widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>title</i></TD><TD align="left" valign="top">Title of size selection frame.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setValue"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setValue</strong> (int sizeInKB)
+<br></td><td align="right"><h3><strong>setValue</strong></h3></td></tr></table><p></p><p>
+ Set the value of the widget in KB.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sizeInKB</i></TD><TD align="left" valign="top">Size in KB.
+   </TD></TR>
+</TABLE></P>
+<A NAME="value"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>value</strong> (void)
+<br></td><td align="right"><h3><strong>value</strong></h3></td></tr></table><p></p><p>
+ Get value in KB.
+</p>
+<p><b>Returns</b>: Size selected in KB.
+   </p>
+<A NAME="sizeString"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>sizeString</strong> (void)
+<br></td><td align="right"><h3><strong>sizeString</strong></h3></td></tr></table><p></p><p>
+ Get an oracle size specification string.
+</p>
+<p><b>Returns</b>: String describing size in valid Oracle format.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toHelp.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toHelp.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toHelp.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,152 @@
+<HTML>
+<HEAD>
+<TITLE>class toHelp</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHelp</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ Display a help browser. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tohelp_h.html">tohelp.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html">QDialog</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toHelp.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref15">toHelp</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name,bool modal=true) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref17">~toHelp</A></b> () 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref16">path</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &path=QString::null) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref18">displayHelp</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &context,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref19">displayHelp</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref20">connectDialog</A></b> (<A HREF="/usr/lib/qt3/doc/html/qdialog.html">QDialog</A> *dialog) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref21">toHelpPrefs</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ Display a help browser. A help manual consists of HTML pages where at least
+ two pages are mandatory.
+</p>
+<p> The first one is toc.htm which is parsed for links which are added to the left
+ pane tree view. Indentation is handled with the tag dl which open and close a
+ tree branch.
+</p>
+<p> The following file would result in two main headings with the first one having
+ one leaf widget as well.
+</p>
+<p></p><table border="0" width="100%">
+<tr>
+<td bgcolor="#BEEAE0">
+<pre>
+
+<A HREF="first.html">1 Head</A><BR>
+<DL>
+<A HREF="second.html>1.1 Head Head</A></BR>
+</DL>
+<A HREF="third.html">2 Foot</A><BR>
+
+</pre>
+</td></tr>
+
+</table> <p>
+</p>
+<p> The second file which is optional and should be called index.htm if it exists
+ should contain a file with links to keywords in the manual. This must be present
+ for search to be possible in the manual. Keywords are indicated by the <dd> tag
+ in these files as well as a link to where the keyword is described. Indentation
+ is possible using the <dl> tag is possible here as well.
+</p>
+<p> The following will make the keywords "Head", "Head, Head Head" and "Foot" available.
+</p><table border="0" width="100%">
+<tr>
+<td bgcolor="#BEEAE0">
+<pre>
+
+<DD><A HREF="first.html">Head</A><BR>
+<DL>
+    <DD><A HREF="second.html">Head Head</A><BR>
+</DL>
+<DD><A HREF="third.html">Foot</A>
+
+</pre>
+</td></tr>
+
+</table> <p>
+ The reason the files look this way is that this way they are compatible with
+ the Oracle manuals from Oracle Corporation and these can be browsed as well in
+ this help viewer.
+ </p>
+<A NAME="toHelp"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toHelp</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name,bool modal=true)
+<br></td><td align="right"><h3><strong>toHelp</strong></h3></td></tr></table><p></p><p>
+ Create help widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>modal</i></TD><TD align="left" valign="top">If dialog is for a modal dialog or not
+   </TD></TR>
+</TABLE></P>
+<A NAME="path"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>path</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &path=QString::null)
+<br></td><td align="right"><h3><strong>path</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Help function to get a clean path from a path string. Strips trailing / etc.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>path</i></TD><TD align="left" valign="top">Path to strip.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Stripped path in string.
+   </p>
+<A NAME="~toHelp"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toHelp</strong> ()
+<br></td><td align="right"><h3><strong>~toHelp</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="displayHelp"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>displayHelp</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &context,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL)
+<br></td><td align="right"><h3><strong>displayHelp</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Display a specific help context in the internal manual. Pops up a help window that
+ displays the selected topic.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>context</i></TD><TD align="left" valign="top">Context to diaplay.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">If NULL use modal dialog and main window.
+   </TD></TR>
+</TABLE></P>
+<A NAME="displayHelp"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>displayHelp</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL)
+<br></td><td align="right"><h3><strong>displayHelp</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Display a specific help context in the internal manual. The context is derived from
+ the widget that currently holds the focus.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">If NULL use modal dialog and main window.
+   </TD></TR>
+</TABLE></P>
+<A NAME="connectDialog"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>connectDialog</strong> (<A HREF="/usr/lib/qt3/doc/html/qdialog.html">QDialog</A> *dialog)
+<br></td><td align="right"><h3><strong>connectDialog</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Connect the F1 key to display help for a modal dialog. Don't use this directly,
+ instead call displayHelp directly and bind Key_F1 to that call. This is because the
+ help in modal dialogs are cludgy at best and should be avoided if possible.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>dialog</i></TD><TD align="left" valign="top">Dialog to connect accelerator to.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toHelpPrefs"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>toHelpPrefs</strong>
+</td><td align="right"><h3><strong>toHelpPrefs</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toHelpBrowser.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toHelpBrowser.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toHelpBrowser.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,101 @@
+<HTML>
+<HEAD>
+<TITLE>class toHelpBrowser</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHelpBrowser</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ Widget used to display HTML of help pages. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tohelpbrowser_h.html">tohelpbrowser.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD>KHTMLPart <small>(unknown)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toHelpBrowser.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref4">toHelpBrowser</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref5">openURL</A></b> (const <A HREF="#KURL">KURL</A> &url) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref6">source</A></b> (void) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref7">forward</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref8">backward</A></b> (void) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref9">backwardAvailable</A></b> (bool avail) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref10">forwardAvailable</A></b> (bool avail) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref11">textChanged</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ Widget used to display HTML of help pages.
+ </p>
+<A NAME="toHelpBrowser"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toHelpBrowser</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toHelpBrowser</strong></h3></td></tr></table><p></p><p> Create a help browser.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="openURL"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>openURL</strong> (const <A HREF="#KURL">KURL</A> &url)
+<br></td><td align="right"><h3><strong>openURL</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Open an URL in this widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>url</i></TD><TD align="left" valign="top">URL to open.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Success of operator.
+   </p>
+<A NAME="source"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>source</strong> (void)
+<br></td><td align="right"><h3><strong>source</strong></h3></td></tr></table><p></p><p> Get source of URL.
+</p>
+<p><b>Returns</b>: String containing the current localtion.
+   </p>
+<A NAME="forward"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>forward</strong> (void)
+<br></td><td align="right"><h3><strong>forward</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Go forward if available.
+   </p>
+<A NAME="backward"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>backward</strong> (void)
+<br></td><td align="right"><h3><strong>backward</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Go backward if available.
+   </p>
+<A NAME="backwardAvailable"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>backwardAvailable</strong> (bool avail)
+<br></td><td align="right"><h3><strong>backwardAvailable</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Change availability of backward history.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>avail</i></TD><TD align="left" valign="top">Wether history is available.
+   </TD></TR>
+</TABLE></P>
+<A NAME="forwardAvailable"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>forwardAvailable</strong> (bool avail)
+<br></td><td align="right"><h3><strong>forwardAvailable</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Change availability of forward history.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>avail</i></TD><TD align="left" valign="top">Wether history is available.
+   </TD></TR>
+</TABLE></P>
+<A NAME="textChanged"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>textChanged</strong> (void)
+<br></td><td align="right"><h3><strong>textChanged</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> The contents of the browser changed.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toHelpContext.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toHelpContext.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toHelpContext.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,60 @@
+<HTML>
+<HEAD>
+<TITLE>class toHelpContext</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHelpContext</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class is used to indicate a help context of an object. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tohelp_h.html">tohelp.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toParamGet.html">toParamGet</A>, <i><A HREF="toSettingTab.html">toSettingTab</A></i>, <A HREF="toTemplate.html">toTemplate</A>, <A HREF="toToolWidget.html">toToolWidget</A></TD></TR>
+<TR><TH><A HREF="full-list-toHelpContext.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toHelpContext</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &file) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref3">~toHelpContext</A></b> () 
+</LI>
+<LI>virtual  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref4">context</A></b> (void)  const
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class is used to indicate a help context of an object. When the current context
+ is to be determined you start at the widget that currently has focus and walk upwards
+ to it's parent until you find a widget that also inherits this class which specify the
+ context of all underlying widgets.
+ </p>
+<A NAME="toHelpContext"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toHelpContext</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &file)
+<br></td><td align="right"><h3><strong>toHelpContext</strong></h3></td></tr></table><p></p><p> Create a context.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>file</i></TD><TD align="left" valign="top">File in the help directory that describes the current context.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toHelpContext"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toHelpContext</strong> ()
+<br></td><td align="right"><h3><strong>~toHelpContext</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="context"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>context</strong> (void)
+<br></td><td align="right"><h3><strong>context</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p>
+ Get this context
+</p>
+<p><b>Returns</b>: The location of a file that describes the current context.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toHelpTool.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toHelpTool.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toHelpTool.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,54 @@
+<HTML>
+<HEAD>
+<TITLE>class toHelpTool</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHelpTool</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ Additional help tool. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Internal Use Only</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tohelp_h.html">tohelp.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><i><A HREF="toTool.html">toTool</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toHelpTool.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toHelpTool</A></b> () 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref2">toolWindow</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *,<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref3">configurationTab</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref4">displayHelp</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ Additional help tool. Also used as object to connect to to display help
+ for modal dialogs. Only to be used internally.
+ </p>
+<A NAME="toHelpTool"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toHelpTool</strong> ()
+<br></td><td align="right"><h3><strong>toHelpTool</strong></h3></td></tr></table><p></p><A NAME="toolWindow"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>toolWindow</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *,<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>toolWindow</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>Reimplemented from <A HREF="toTool.html#toolWindow">toTool</A>.</p>
+<A NAME="configurationTab"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>configurationTab</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>configurationTab</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>Reimplemented from <A HREF="toTool.html#configurationTab">toTool</A>.</p>
+<A NAME="displayHelp"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>displayHelp</strong> (void)
+<br></td><td align="right"><h3><strong>displayHelp</strong></h3></td></tr></table><p> <small>[slot]</small></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toHighlightedText.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toHighlightedText.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toHighlightedText.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,221 @@
+<HTML>
+<HEAD>
+<TITLE>class toHighlightedText</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHighlightedText</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A simple editor which supports syntax highlighting. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tohighlightedtext_h.html">tohighlightedtext.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toMarkedText.html">toMarkedText</A> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultField.html">toResultField</A></TD></TR>
+<TR><TH><A HREF="full-list-toHighlightedText.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref25">toHighlightedText</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref26">~toHighlightedText</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref27">clear</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref28">setText</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref29">setErrors</A></b> (const std::map<int,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &errors) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref30">setCurrent</A></b> (int current) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref31">current</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref32">setKeywordUpper</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref33">setHighlight</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref34">setAnalyzer</A></b> (<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &analyzer) 
+</LI>
+<LI><A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &&nbsp;<b><A HREF="#ref35">analyzer</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref36">paintCell</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *painter,int row,int col) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref37">paintEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpaintevent.html">QPaintEvent</A> *pe) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref38">tableAtCursor</A></b> (<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &table,bool highlight=false) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref39">hasErrors</A></b> () 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref42">nextError</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref43">previousError</A></b> (void) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref40">insertedLines</A></b> (int start,int diff) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  int &nbsp;<b><A HREF="#ref24">convertLine</A></b> (int line,int start,int diff) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>void &nbsp;<b><A HREF="#ref19">setLeftIgnore</A></b> (int ignore) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref20">keyPressEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qkeyevent.html">QKeyEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref21">focusOutEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref22">checkComplete</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref23">startComplete</A></b> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &completes) 
+</LI>
+</ul><h4>Protected Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref41">textChanged</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A simple editor which supports syntax highlighting.
+ </p>
+<A NAME="setLeftIgnore"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setLeftIgnore</strong> (int ignore)
+<br></td><td align="right"><h3><strong>setLeftIgnore</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Set how much of the left margin to ignore painting.
+   </p>
+<A NAME="keyPressEvent"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>keyPressEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qkeyevent.html">QKeyEvent</A> *e)
+<br></td><td align="right"><h3><strong>keyPressEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toMarkedText.html#keyPressEvent">toMarkedText</A>.</p>
+<A NAME="focusOutEvent"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>focusOutEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *e)
+<br></td><td align="right"><h3><strong>focusOutEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toMarkedText.html#focusOutEvent">toMarkedText</A>.</p>
+<A NAME="checkComplete"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>checkComplete</strong> (void)
+<br></td><td align="right"><h3><strong>checkComplete</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Check if to view completion.
+   </p>
+<A NAME="startComplete"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>startComplete</strong> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &completes)
+<br></td><td align="right"><h3><strong>startComplete</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Start a completion with a given completelist.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>completes</i></TD><TD align="left" valign="top">List of available completions.
+   </TD></TR>
+</TABLE></P>
+<A NAME="convertLine"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>convertLine</strong> (int line,int start,int diff)
+<br></td><td align="right"><h3><strong>convertLine</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Convert a linenumber after a change of the buffer to another linenumber. Can be
+ used to convert a specific linenumber after receiving a <A HREF="toHighlightedText.html#insertedLines">insertedLines</A> call.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>line</i></TD><TD align="left" valign="top">Line number.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>start</i></TD><TD align="left" valign="top">Start of change.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>diff</i></TD><TD align="left" valign="top">Lines added or removed.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: New linenumber or -1 if line doesn't exist anymore.
+   </p>
+<A NAME="toHighlightedText"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toHighlightedText</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toHighlightedText</strong></h3></td></tr></table><p></p><p> Create a new editor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toHighlightedText"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toHighlightedText</strong> ()
+<br></td><td align="right"><h3><strong>~toHighlightedText</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons
+   </p>
+<A NAME="clear"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>clear</strong> (void)
+<br></td><td align="right"><h3><strong>clear</strong></h3></td></tr></table><p></p><p> Clear the editor.
+   </p>
+<p>Reimplemented from <A HREF="toMarkedText.html#clear">toMarkedText</A>.</p>
+<A NAME="setText"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setText</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p></p><p> Set the text of this editor.
+   </p>
+<A NAME="setErrors"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setErrors</strong> (const std::map<int,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &errors)
+<br></td><td align="right"><h3><strong>setErrors</strong></h3></td></tr></table><p></p><p> Set the error list map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>errors</i></TD><TD align="left" valign="top">A map of linenumbers to errorstrings. These will be displayed in the
+               statusbar if the cursor is placed on the line.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setCurrent"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setCurrent</strong> (int current)
+<br></td><td align="right"><h3><strong>setCurrent</strong></h3></td></tr></table><p></p><p> Set current line. Will be indicated with a different background.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>current</i></TD><TD align="left" valign="top">Current line.
+   </TD></TR>
+</TABLE></P>
+<A NAME="current"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>current</strong> (void)
+<br></td><td align="right"><h3><strong>current</strong></h3></td></tr></table><p></p><p> Get current line.
+</p>
+<p><b>Returns</b>: Current line.
+   </p>
+<A NAME="setKeywordUpper"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setKeywordUpper</strong> (bool val)
+<br></td><td align="right"><h3><strong>setKeywordUpper</strong></h3></td></tr></table><p></p><p> Set keyword upper flag. If this is set keywords will be converted to uppercase when painted.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">New value of keyword to upper flag.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setHighlight"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setHighlight</strong> (bool val)
+<br></td><td align="right"><h3><strong>setHighlight</strong></h3></td></tr></table><p></p><p> The the highlighting flag. If this isn't set no highlighting is done.
+   </p>
+<A NAME="setAnalyzer"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setAnalyzer</strong> (<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &analyzer)
+<br></td><td align="right"><h3><strong>setAnalyzer</strong></h3></td></tr></table><p></p><p> Set the syntax highlighter to use.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>analyzer</i></TD><TD align="left" valign="top">Analyzer to use.
+   </TD></TR>
+</TABLE></P>
+<A NAME="analyzer"></A><A NAME="ref35"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &&nbsp;<strong>analyzer</strong> (void)
+<br></td><td align="right"><h3><strong>analyzer</strong></h3></td></tr></table><p></p><p> Get the current syntaxhighlighter.
+</p>
+<p><b>Returns</b>: Analyzer used.
+   </p>
+<A NAME="paintCell"></A><A NAME="ref36"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintCell</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *painter,int row,int col)
+<br></td><td align="right"><h3><strong>paintCell</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="paintEvent"></A><A NAME="ref37"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qpaintevent.html">QPaintEvent</A> *pe)
+<br></td><td align="right"><h3><strong>paintEvent</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toMarkedText.html#paintEvent">toMarkedText</A>.</p>
+<A NAME="tableAtCursor"></A><A NAME="ref38"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>tableAtCursor</strong> (<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &table,bool highlight=false)
+<br></td><td align="right"><h3><strong>tableAtCursor</strong></h3></td></tr></table><p></p><p> Get the tablename currently under the cursor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>owner</i></TD><TD align="left" valign="top">Filled with owner or table or QString::null if no owner specified.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>table</i></TD><TD align="left" valign="top">Filled with tablename.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>highlight</i></TD><TD align="left" valign="top">If true mark the extracted tablename
+   </TD></TR>
+</TABLE></P>
+<A NAME="hasErrors"></A><A NAME="ref39"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>hasErrors</strong> ()
+<br></td><td align="right"><h3><strong>hasErrors</strong></h3></td></tr></table><p></p><p> Returns true if the editor has any errors.
+   </p>
+<A NAME="insertedLines"></A><A NAME="ref40"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>insertedLines</strong> (int start,int diff)
+<br></td><td align="right"><h3><strong>insertedLines</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Emitted when lines are inserted or removed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>start</i></TD><TD align="left" valign="top">Start of line inserted.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>diff</i></TD><TD align="left" valign="top">Number of lines inserted or removed.
+   </TD></TR>
+</TABLE></P>
+<A NAME="textChanged"></A><A NAME="ref41"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>textChanged</strong> (void)
+<br></td><td align="right"><h3><strong>textChanged</strong></h3></td></tr></table><p> <small>[protected slots slot]</small></p><A NAME="nextError"></A><A NAME="ref42"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>nextError</strong> (void)
+<br></td><td align="right"><h3><strong>nextError</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Go to next error.
+   </p>
+<A NAME="previousError"></A><A NAME="ref43"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>previousError</strong> (void)
+<br></td><td align="right"><h3><strong>previousError</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Go to previous error.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toHtml.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toHtml.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toHtml.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,142 @@
+<HTML>
+<HEAD>
+<TITLE>class toHtml</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toHtml</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A small and hopefully pretty efficient parser of HTML tags. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tohtml_h.html">tohtml.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toHtml.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref12">toHtml</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &data) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref13">~toHtml</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref14">nextToken</A></b> (void) 
+</LI>
+<LI>const char *&nbsp;<b><A HREF="#ref15">value</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref16">isTag</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref17">open</A></b> (void) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<b><A HREF="#ref18">text</A></b> (void) 
+</LI>
+<LI>const char *&nbsp;<b><A HREF="#ref19">tag</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref20">eof</A></b> (void) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  bool &nbsp;<b><A HREF="#ref21">search</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &data,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref22">escape</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &html) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A small and hopefully pretty efficient parser of HTML tags. No attempt what
+ so ever is made trying to check the validity of the text so if you forget
+ a closing > you will probably end up with an exception.
+</p>
+<p> A simple traverser counting the number of paragraphs might look like this.
+</p>
+<p></p><table border="0" width="100%">
+<tr>
+<td bgcolor="#BEEAE0">
+<pre>
+
+int paragraphs++;
+<A HREF="toHtml.html#toHtml">toHtml</A> count("Paragraphs<P>And some</P><P>Dobedoo");
+while(!count.<A HREF="toHtml.html#eof">eof</A>()) {
+  count.<A HREF="toHtml.html#nextToken">nextToken</A>();
+  if (count.<A HREF="toHtml.html#isTag">isTag</A>()&&count.<A HREF="toHtml.html#open">open</A>()&&<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>(count.<A HREF="toHtml.html#tag">tag</A>())=="p")
+    paragraphs++;
+}
+
+</pre>
+</td></tr>
+
+</table> <p>
+ </p>
+<A NAME="toHtml"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toHtml</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &data)
+<br></td><td align="right"><h3><strong>toHtml</strong></h3></td></tr></table><p></p><p> Create a HTML parser.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to parse.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toHtml"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toHtml</strong> ()
+<br></td><td align="right"><h3><strong>~toHtml</strong></h3></td></tr></table><p></p><A NAME="nextToken"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>nextToken</strong> (void)
+<br></td><td align="right"><h3><strong>nextToken</strong></h3></td></tr></table><p></p><p> Read the next token which can be either a open tag, close tag or text.
+</p>
+<p> Observe that nextToken destroys the data it has parsed, so you
+ can't search it later. Searhing must be done on an new toHtml,
+ several serches can be made though on the same toHtml.
+   </p>
+<A NAME="value"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const char *&nbsp;<strong>value</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name)
+<br></td><td align="right"><h3><strong>value</strong></h3></td></tr></table><p></p><p> Get value of a qualifier.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of qualifier in lowercase.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Value of qualifier or NULL.
+   </p>
+<A NAME="isTag"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>isTag</strong> (void)
+<br></td><td align="right"><h3><strong>isTag</strong></h3></td></tr></table><p></p><p> Return true if current token is a tag.
+</p>
+<p><b>Returns</b>: True if tag.
+   </p>
+<A NAME="open"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>open</strong> (void)
+<br></td><td align="right"><h3><strong>open</strong></h3></td></tr></table><p></p><p> Return true if open tag. Only valid if <A HREF="toHtml.html#isTag">isTag</A> is true.
+</p>
+<p><b>Returns</b>: True if open tag.
+   </p>
+<A NAME="text"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<strong>text</strong> (void)
+<br></td><td align="right"><h3><strong>text</strong></h3></td></tr></table><p></p><p> Get bread text if available. Expands &# characters are expanded before returned.
+ Only valid if <A HREF="toHtml.html#isTag">isTag</A> returns false.
+</p>
+<p><b>Returns</b>: The parsed text.
+   </p>
+<A NAME="tag"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const char *&nbsp;<strong>tag</strong> (void)
+<br></td><td align="right"><h3><strong>tag</strong></h3></td></tr></table><p></p><p> Get name of tag in lowercase. Only valid if <A HREF="toHtml.html#isTag">isTag</A> returns true.
+</p>
+<p><b>Returns</b>: Name of tag (Excluding / if close tag).
+   </p>
+<A NAME="eof"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>eof</strong> (void)
+<br></td><td align="right"><h3><strong>eof</strong></h3></td></tr></table><p></p><p> Check if at end of data
+</p>
+<p><b>Returns</b>: True if at end of data.
+   </p>
+<A NAME="search"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>search</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &data,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>search</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Search data for a simple text.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to search.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Substring to search for in data.
+   </TD></TR>
+</TABLE></P>
+<A NAME="escape"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>escape</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &html)
+<br></td><td align="right"><h3><strong>escape</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Escape text to be HTML.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toLegendChart.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toLegendChart.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toLegendChart.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,105 @@
+<HTML>
+<HEAD>
+<TITLE>class toLegendChart</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toLegendChart</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A widget that displays a legend to other charts. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tolegendchart_h.html">tolegendchart.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toLegendChart.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref5">toLegendChart</A></b> (int columns,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref6">setTitle</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title=QString::null) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref7">title</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref8">setLabels</A></b> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &labels) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref9">addLabel</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &label) 
+</LI>
+<LI>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<b><A HREF="#ref10">labels</A></b> (void) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qsize.html">QSize</A> &nbsp;<b><A HREF="#ref11">sizeHint</A></b> () 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref12">paintEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpaintevent.html">QPaintEvent</A> *e) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A widget that displays a legend to other charts.
+ </p>
+<A NAME="toLegendChart"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toLegendChart</strong> (int columns,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toLegendChart</strong></h3></td></tr></table><p></p><p> Create a new legend.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>columns</i></TD><TD align="left" valign="top">Columns.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setTitle"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setTitle</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title=QString::null)
+<br></td><td align="right"><h3><strong>setTitle</strong></h3></td></tr></table><p></p><p> Set title of the chart. Set to empty string to not display title.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>title</i></TD><TD align="left" valign="top">Title of chart.
+   </TD></TR>
+</TABLE></P>
+<A NAME="title"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>title</strong> (void)
+<br></td><td align="right"><h3><strong>title</strong></h3></td></tr></table><p></p><p> Get title of chart.
+</p>
+<p><b>Returns</b>: Title of chart.
+   </p>
+<A NAME="setLabels"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setLabels</strong> (std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &labels)
+<br></td><td align="right"><h3><strong>setLabels</strong></h3></td></tr></table><p></p><p> Set list of chart labels.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>labels</i></TD><TD align="left" valign="top">List of labels, if label is empty it will not appear in legend.
+   </TD></TR>
+</TABLE></P>
+<A NAME="addLabel"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addLabel</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &label)
+<br></td><td align="right"><h3><strong>addLabel</strong></h3></td></tr></table><p></p><p> Add a value to the chart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>value</i></TD><TD align="left" valign="top">New value to add.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>label</i></TD><TD align="left" valign="top">Label of this new value.
+   </TD></TR>
+</TABLE></P>
+<A NAME="labels"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<strong>labels</strong> (void)
+<br></td><td align="right"><h3><strong>labels</strong></h3></td></tr></table><p></p><p> Get labels of chart.
+</p>
+<p><b>Returns</b>: List of labels.
+   </p>
+<A NAME="sizeHint"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qsize.html">QSize</A> &nbsp;<strong>sizeHint</strong> ()
+<br></td><td align="right"><h3><strong>sizeHint</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="paintEvent"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qpaintevent.html">QPaintEvent</A> *e)
+<br></td><td align="right"><h3><strong>paintEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toLineChart.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toLineChart.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toLineChart.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,420 @@
+<HTML>
+<HEAD>
+<TITLE>class toLineChart</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toLineChart</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A widget that displays a linechart with optional background throbber (Not implemented yet). <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tolinechart_h.html">tolinechart.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toBarChart.html">toBarChart</A>, <A HREF="toResultBar.html">toResultBar</A>, <A HREF="toResultLine.html">toResultLine</A></TD></TR>
+<TR><TH><A HREF="full-list-toLineChart.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref39">toLineChart</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref40">toLineChart</A></b> (<A HREF="toLineChart.html">toLineChart</A> *chart,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref41">~toLineChart</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref42">showLegend</A></b> (bool on) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref43">legend</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref44">showLast</A></b> (bool on) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref45">last</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref46">setTitle</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title=QString::null) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref47">title</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref48">showGrid</A></b> (int div=0) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref49">grid</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref50">showAxisLegend</A></b> (bool on) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref51">axisLegend</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref52">setYPostfix</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &postfix) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref53">setMaxValueAuto</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref54">setMinValueAuto</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref55">setMaxValue</A></b> (double maxVal) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref56">setMinValue</A></b> (double minVal) 
+</LI>
+<LI>double &nbsp;<b><A HREF="#ref57">minValue</A></b> (void)  const
+</LI>
+<LI>double &nbsp;<b><A HREF="#ref58">maxValue</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref59">setSamples</A></b> (int samples=-1) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref60">samples</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref61">setLabels</A></b> (const std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &labels) 
+</LI>
+<LI>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<b><A HREF="#ref62">labels</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref63">addValues</A></b> (std::list<double> &value,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &xValues) 
+</LI>
+<LI>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<b><A HREF="#ref64">xValues</A></b> (void) 
+</LI>
+<LI>std::list<std::list<double> > &&nbsp;<b><A HREF="#ref65">values</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref66">exportData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref67">importData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>std::list<bool> &nbsp;<b><A HREF="#ref68">enabledCharts</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref69">setEnabledCharts</A></b> (std::list<bool> &enabled) 
+</LI>
+<LI>virtual  <A HREF="toLineChart.html">toLineChart</A> *&nbsp;<b><A HREF="#ref70">openCopy</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref72">clear</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref73">setup</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref74">editPrint</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref75">openCopy</A></b> (void) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref71">valueAdded</A></b> (std::list<double> &value,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &xValues) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI><A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &nbsp;<b><A HREF="#ref28">fixRect</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A> p1,<A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A> p2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref29">mouseReleaseEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref30">mouseMoveEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref31">mouseDoubleClickEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref32">mousePressEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref33">countSamples</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref34">clearZoom</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref35">paintLegend</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &rect) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref36">paintTitle</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &rect) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref37">paintAxis</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &rect) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref38">paintChart</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &rect) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref76">paintEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpaintevent.html">QPaintEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref77">addMenues</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *) 
+</LI>
+</ul><h4>Protected Static Methods</h4><ul><LI>static  double &nbsp;<b><A HREF="#ref27">round</A></b> (double round,bool up) 
+</LI>
+</ul><h4>Protected Members</h4><ul><LI>std::list<std::list<double> > <b><A HREF="#ref4">Values</A></b></LI>
+<LI>std::list<QString> <b><A HREF="#ref5">XValues</A></b></LI>
+<LI>std::list<QString> <b><A HREF="#ref6">Labels</A></b></LI>
+<LI>std::list<bool> <b><A HREF="#ref7">Enabled</A></b></LI>
+<LI>bool <b><A HREF="#ref8">Legend</A></b></LI>
+<LI>bool <b><A HREF="#ref9">Last</A></b></LI>
+<LI>int <b><A HREF="#ref10">Grid</A></b></LI>
+<LI>bool <b><A HREF="#ref11">AxisText</A></b></LI>
+<LI>double <b><A HREF="#ref12">MinValue</A></b></LI>
+<LI>bool <b><A HREF="#ref13">MinAuto</A></b></LI>
+<LI>double <b><A HREF="#ref14">MaxValue</A></b></LI>
+<LI>bool <b><A HREF="#ref15">MaxAuto</A></b></LI>
+<LI>QString <b><A HREF="#ref16">YPostfix</A></b></LI>
+<LI>int <b><A HREF="#ref17">Samples</A></b></LI>
+<LI>QString <b><A HREF="#ref18">Title</A></b></LI>
+<LI>QRect <b><A HREF="#ref19">Chart</A></b></LI>
+<LI>QPoint <b><A HREF="#ref20">MousePoint[2]</A></b></LI>
+<LI>int <b><A HREF="#ref21">SkipSamples</A></b></LI>
+<LI>int <b><A HREF="#ref22">UseSamples</A></b></LI>
+<LI>int <b><A HREF="#ref23">DisplaySamples</A></b></LI>
+<LI>bool <b><A HREF="#ref24">Zooming</A></b></LI>
+<LI>double <b><A HREF="#ref25">zMinValue</A></b></LI>
+<LI>double <b><A HREF="#ref26">zMaxValue</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A widget that displays a linechart with optional background throbber (Not implemented yet).
+ </p>
+<A NAME="Values"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<std::list<double> >  <strong>Values</strong>
+</td><td align="right"><h3><strong>Values</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="XValues"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>>  <strong>XValues</strong>
+</td><td align="right"><h3><strong>XValues</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Labels"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>>  <strong>Labels</strong>
+</td><td align="right"><h3><strong>Labels</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Enabled"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<bool>  <strong>Enabled</strong>
+</td><td align="right"><h3><strong>Enabled</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Legend"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>Legend</strong>
+</td><td align="right"><h3><strong>Legend</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Last"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>Last</strong>
+</td><td align="right"><h3><strong>Last</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Grid"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Grid</strong>
+</td><td align="right"><h3><strong>Grid</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="AxisText"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>AxisText</strong>
+</td><td align="right"><h3><strong>AxisText</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="MinValue"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>double  <strong>MinValue</strong>
+</td><td align="right"><h3><strong>MinValue</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="MinAuto"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>MinAuto</strong>
+</td><td align="right"><h3><strong>MinAuto</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="MaxValue"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>double  <strong>MaxValue</strong>
+</td><td align="right"><h3><strong>MaxValue</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="MaxAuto"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>MaxAuto</strong>
+</td><td align="right"><h3><strong>MaxAuto</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="YPostfix"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>YPostfix</strong>
+</td><td align="right"><h3><strong>YPostfix</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Samples"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Samples</strong>
+</td><td align="right"><h3><strong>Samples</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Title"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Title</strong>
+</td><td align="right"><h3><strong>Title</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Chart"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A>  <strong>Chart</strong>
+</td><td align="right"><h3><strong>Chart</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="MousePoint[2]"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A>  <strong>MousePoint[2]</strong>
+</td><td align="right"><h3><strong>MousePoint[2]</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="SkipSamples"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>SkipSamples</strong>
+</td><td align="right"><h3><strong>SkipSamples</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="UseSamples"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>UseSamples</strong>
+</td><td align="right"><h3><strong>UseSamples</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="DisplaySamples"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>DisplaySamples</strong>
+</td><td align="right"><h3><strong>DisplaySamples</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Zooming"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>Zooming</strong>
+</td><td align="right"><h3><strong>Zooming</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="zMinValue"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td>double  <strong>zMinValue</strong>
+</td><td align="right"><h3><strong>zMinValue</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="zMaxValue"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td>double  <strong>zMaxValue</strong>
+</td><td align="right"><h3><strong>zMaxValue</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="round"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> double &nbsp;<strong>round</strong> (double round,bool up)
+<br></td><td align="right"><h3><strong>round</strong></h3></td></tr></table><p> <small>[protected static]</small></p><A NAME="fixRect"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &nbsp;<strong>fixRect</strong> (<A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A> p1,<A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A> p2)
+<br></td><td align="right"><h3><strong>fixRect</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="mouseReleaseEvent"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>mouseReleaseEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e)
+<br></td><td align="right"><h3><strong>mouseReleaseEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseReleaseEvent">QWidget</A>.</p>
+<A NAME="mouseMoveEvent"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>mouseMoveEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e)
+<br></td><td align="right"><h3><strong>mouseMoveEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="mouseDoubleClickEvent"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>mouseDoubleClickEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e)
+<br></td><td align="right"><h3><strong>mouseDoubleClickEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseDoubleClickEvent">QWidget</A>.</p>
+<A NAME="mousePressEvent"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>mousePressEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e)
+<br></td><td align="right"><h3><strong>mousePressEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="countSamples"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>countSamples</strong> (void)
+<br></td><td align="right"><h3><strong>countSamples</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="clearZoom"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>clearZoom</strong> (void)
+<br></td><td align="right"><h3><strong>clearZoom</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="paintLegend"></A><A NAME="ref35"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintLegend</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &rect)
+<br></td><td align="right"><h3><strong>paintLegend</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="paintTitle"></A><A NAME="ref36"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintTitle</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &rect)
+<br></td><td align="right"><h3><strong>paintTitle</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="paintAxis"></A><A NAME="ref37"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintAxis</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &rect)
+<br></td><td align="right"><h3><strong>paintAxis</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="paintChart"></A><A NAME="ref38"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintChart</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &rect)
+<br></td><td align="right"><h3><strong>paintChart</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="toLineChart"></A><A NAME="ref39"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toLineChart</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toLineChart</strong></h3></td></tr></table><p></p><p> Create a new linechart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toLineChart"></A><A NAME="ref40"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toLineChart</strong> (<A HREF="toLineChart.html">toLineChart</A> *chart,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toLineChart</strong></h3></td></tr></table><p></p><p> Create a new chart by copying all the data from another chart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>chart</i></TD><TD align="left" valign="top">Chart to copy data from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toLineChart"></A><A NAME="ref41"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toLineChart</strong> ()
+<br></td><td align="right"><h3><strong>~toLineChart</strong></h3></td></tr></table><p></p><p> Destroy chart
+   </p>
+<A NAME="showLegend"></A><A NAME="ref42"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>showLegend</strong> (bool on)
+<br></td><td align="right"><h3><strong>showLegend</strong></h3></td></tr></table><p></p><p> Specify if legend should be displayed to the right of the graph, default is on.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>on</i></TD><TD align="left" valign="top">Whether to display legend or not.
+   </TD></TR>
+</TABLE></P>
+<A NAME="legend"></A><A NAME="ref43"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>legend</strong> (void)
+<br></td><td align="right"><h3><strong>legend</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if legend is displayed or not.
+</p>
+<p><b>Returns</b>: If legend is displayed or not.
+   </p>
+<A NAME="showLast"></A><A NAME="ref44"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>showLast</strong> (bool on)
+<br></td><td align="right"><h3><strong>showLast</strong></h3></td></tr></table><p></p><p> Show most recent value on top of graph
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>on</i></TD><TD align="left" valign="top">Whether to display or not.
+   </TD></TR>
+</TABLE></P>
+<A NAME="last"></A><A NAME="ref45"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>last</strong> (void)
+<br></td><td align="right"><h3><strong>last</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if last value is displayed or not.
+</p>
+<p><b>Returns</b>: If value is displayed or not.
+   </p>
+<A NAME="setTitle"></A><A NAME="ref46"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setTitle</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title=QString::null)
+<br></td><td align="right"><h3><strong>setTitle</strong></h3></td></tr></table><p></p><p> Set title of the chart. Set to empty string to not display title.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>title</i></TD><TD align="left" valign="top">Title of chart.
+   </TD></TR>
+</TABLE></P>
+<A NAME="title"></A><A NAME="ref47"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>title</strong> (void)
+<br></td><td align="right"><h3><strong>title</strong></h3></td></tr></table><p></p><p> Get title of chart.
+</p>
+<p><b>Returns</b>: Title of chart.
+   </p>
+<A NAME="showGrid"></A><A NAME="ref48"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>showGrid</strong> (int div=0)
+<br></td><td align="right"><h3><strong>showGrid</strong></h3></td></tr></table><p></p><p> Specify if a grid should be displayed in the graph, default is on.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>div</i></TD><TD align="left" valign="top">Number of parts to divide grid into.
+   </TD></TR>
+</TABLE></P>
+<A NAME="grid"></A><A NAME="ref49"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>grid</strong> (void)
+<br></td><td align="right"><h3><strong>grid</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if grid is displayed or not.
+</p>
+<p><b>Returns</b>: Number of parts to divide grid into.
+   </p>
+<A NAME="showAxisLegend"></A><A NAME="ref50"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>showAxisLegend</strong> (bool on)
+<br></td><td align="right"><h3><strong>showAxisLegend</strong></h3></td></tr></table><p></p><p> Specify if a y-axis legend should be displayed in the graph, default is on.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>on</i></TD><TD align="left" valign="top">Whether to display legend or not.
+   </TD></TR>
+</TABLE></P>
+<A NAME="axisLegend"></A><A NAME="ref51"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>axisLegend</strong> (void)
+<br></td><td align="right"><h3><strong>axisLegend</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if y-axis legend is displayed or not.
+</p>
+<p><b>Returns</b>: If legend is displayed or not.
+   </p>
+<A NAME="setYPostfix"></A><A NAME="ref52"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setYPostfix</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &postfix)
+<br></td><td align="right"><h3><strong>setYPostfix</strong></h3></td></tr></table><p></p><p> Set y postfix value. This will be appended to the values in the axis legend.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>postfix</i></TD><TD align="left" valign="top">The string to append.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setMaxValueAuto"></A><A NAME="ref53"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setMaxValueAuto</strong> (void)
+<br></td><td align="right"><h3><strong>setMaxValueAuto</strong></h3></td></tr></table><p></p><p> Set max value on y-axis to auto.
+   </p>
+<A NAME="setMinValueAuto"></A><A NAME="ref54"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setMinValueAuto</strong> (void)
+<br></td><td align="right"><h3><strong>setMinValueAuto</strong></h3></td></tr></table><p></p><p> Set min value on y-axis to auto.
+   </p>
+<A NAME="setMaxValue"></A><A NAME="ref55"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setMaxValue</strong> (double maxVal)
+<br></td><td align="right"><h3><strong>setMaxValue</strong></h3></td></tr></table><p></p><p> Set max value on y-axis.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Max value on y-axis.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setMinValue"></A><A NAME="ref56"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setMinValue</strong> (double minVal)
+<br></td><td align="right"><h3><strong>setMinValue</strong></h3></td></tr></table><p></p><p> Set min value on y-axis.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Min value on y-axis.
+   </TD></TR>
+</TABLE></P>
+<A NAME="minValue"></A><A NAME="ref57"></A><table width="100%"><tr bgcolor="#eeeeee"><td>double &nbsp;<strong>minValue</strong> (void)
+<br></td><td align="right"><h3><strong>minValue</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get minimum value on y-axis. Will not return the automatically determinned minimum value.
+</p>
+<p><b>Returns</b>: Minimum value on y-axis.
+   </p>
+<A NAME="maxValue"></A><A NAME="ref58"></A><table width="100%"><tr bgcolor="#eeeeee"><td>double &nbsp;<strong>maxValue</strong> (void)
+<br></td><td align="right"><h3><strong>maxValue</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get maximum value on y-axis. Will not return the automatically determinned maximum value.
+</p>
+<p><b>Returns</b>: Maximum value on y-axis.
+   </p>
+<A NAME="setSamples"></A><A NAME="ref59"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSamples</strong> (int samples=-1)
+<br></td><td align="right"><h3><strong>setSamples</strong></h3></td></tr></table><p></p><p> Set the number of samples on the x-axis. Setting samples to -1 will keep all entries.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>samples</i></TD><TD align="left" valign="top">Number of samples.
+   </TD></TR>
+</TABLE></P>
+<A NAME="samples"></A><A NAME="ref60"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>samples</strong> (void)
+<br></td><td align="right"><h3><strong>samples</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get the maximum number of samples on the x-axis.
+</p>
+<p><b>Returns</b>: Max number of samples.
+   </p>
+<A NAME="setLabels"></A><A NAME="ref61"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setLabels</strong> (const std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &labels)
+<br></td><td align="right"><h3><strong>setLabels</strong></h3></td></tr></table><p></p><p> Set the labels on the chart lines.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>labels</i></TD><TD align="left" valign="top">Labels of the lines. Empty labels will not show up in the legend.
+   </TD></TR>
+</TABLE></P>
+<A NAME="labels"></A><A NAME="ref62"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<strong>labels</strong> (void)
+<br></td><td align="right"><h3><strong>labels</strong></h3></td></tr></table><p></p><p> Get the labels of the chart lines.
+</p>
+<p><b>Returns</b>: List of labels.
+   </p>
+<A NAME="addValues"></A><A NAME="ref63"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addValues</strong> (std::list<double> &value,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &xValues)
+<br></td><td align="right"><h3><strong>addValues</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Add a new value set to the chart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>value</i></TD><TD align="left" valign="top">New values for charts (One for each line).
+</TD></TR>
+<TR><TD align="left" valign="top"><i>label</i></TD><TD align="left" valign="top">X-value on these values.
+   </TD></TR>
+</TABLE></P>
+<A NAME="xValues"></A><A NAME="ref64"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<strong>xValues</strong> (void)
+<br></td><td align="right"><h3><strong>xValues</strong></h3></td></tr></table><p></p><p> Get list of labels
+</p>
+<p><b>Returns</b>: List of labels
+   </p>
+<A NAME="values"></A><A NAME="ref65"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<std::list<double> > &&nbsp;<strong>values</strong> (void)
+<br></td><td align="right"><h3><strong>values</strong></h3></td></tr></table><p></p><p> Get list of values.
+</p>
+<p><b>Returns</b>: Values in piechart.
+   </p>
+<A NAME="exportData"></A><A NAME="ref66"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>exportData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>exportData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Export chart to a map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">A map that can be used to recreate the data of a chart.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to add to the map.
+   </TD></TR>
+</TABLE></P>
+<A NAME="importData"></A><A NAME="ref67"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>importData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>importData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Import data
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to read from a map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to read data from.
+   </TD></TR>
+</TABLE></P>
+<A NAME="enabledCharts"></A><A NAME="ref68"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<bool> &nbsp;<strong>enabledCharts</strong> (void)
+<br></td><td align="right"><h3><strong>enabledCharts</strong></h3></td></tr></table><p></p><p> Get enabled datavalues. Values in this list with false are not drawn in the chart.
+ Could be an empty list if everything is enabled.
+   </p>
+<A NAME="setEnabledCharts"></A><A NAME="ref69"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setEnabledCharts</strong> (std::list<bool> &enabled)
+<br></td><td align="right"><h3><strong>setEnabledCharts</strong></h3></td></tr></table><p></p><p> Set enabled datavalues. Values in this list with false are not drawn in the chart.
+   </p>
+<A NAME="openCopy"></A><A NAME="ref70"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toLineChart.html">toLineChart</A> *&nbsp;<strong>openCopy</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>openCopy</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Open chart in new window.
+   </p>
+<A NAME="valueAdded"></A><A NAME="ref71"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>valueAdded</strong> (std::list<double> &value,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &xValues)
+<br></td><td align="right"><h3><strong>valueAdded</strong></h3></td></tr></table><p> <small>[virtual signal]</small></p><p> A new value set was added to the chart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>value</i></TD><TD align="left" valign="top">New values for charts (One for each line).
+</TD></TR>
+<TR><TD align="left" valign="top"><i>label</i></TD><TD align="left" valign="top">X-value on these values.
+   </TD></TR>
+</TABLE></P>
+<A NAME="clear"></A><A NAME="ref72"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>clear</strong> (void)
+<br></td><td align="right"><h3><strong>clear</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Clear the values from the chart.
+   </p>
+<A NAME="setup"></A><A NAME="ref73"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setup</strong> (void)
+<br></td><td align="right"><h3><strong>setup</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Setup values of charts.
+   </p>
+<A NAME="editPrint"></A><A NAME="ref74"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editPrint</strong> (void)
+<br></td><td align="right"><h3><strong>editPrint</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Print the chart.
+   </p>
+<A NAME="openCopy"></A><A NAME="ref75"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>openCopy</strong> (void)
+<br></td><td align="right"><h3><strong>openCopy</strong></h3></td></tr></table><p> <small>[slot]</small></p><A NAME="paintEvent"></A><A NAME="ref76"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qpaintevent.html">QPaintEvent</A> *e)
+<br></td><td align="right"><h3><strong>paintEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="addMenues"></A><A NAME="ref77"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addMenues</strong> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *)
+<br></td><td align="right"><h3><strong>addMenues</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toListView.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toListView.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toListView.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,212 @@
+<HTML>
+<HEAD>
+<TITLE>class toListView</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toListView</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ The TOra implementation of a listview which offers a few extra goodies to the baseclass. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultview_h.html">toresultview.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> <small>(qt)</small> <small>[public ]</small>, <A HREF="toEditWidget.html">toEditWidget</A> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultCols__resultCols.html">resultCols</A>, <A HREF="toResultConstraint.html">toResultConstraint</A>, <A HREF="toResultDepend.html">toResultDepend</A>, <A HREF="toResultIndexes.html">toResultIndexes</A>, <A HREF="toResultLong.html">toResultLong</A>, <A HREF="toResultPlan.html">toResultPlan</A>, <A HREF="toResultReferences.html">toResultReferences</A>, <A HREF="toResultStats.html">toResultStats</A>, <A HREF="toResultView.html">toResultView</A></TD></TR>
+<TR><TH><A HREF="full-list-toListView.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref14">toListView</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref15">~toListView</A></b> () 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref16">sqlName</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref17">setSQLName</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref18">menuText</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref19">editPrint</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref20">focusInEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *e) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref21">middleString</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref22">addMenues</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *menu) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref23">editSave</A></b> (bool ask) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref24">editSelectAll</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref25">searchTop</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref26">searchNext</A></b> (<A HREF="#toSearchReplace">toSearchReplace</A> *search) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref27">searchCanReplace</A></b> (bool all) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref28">exportData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref29">importData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>virtual  <A HREF="toListView.html">toListView</A> *&nbsp;<b><A HREF="#ref30">copyTransposed</A></b> (void) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref32">setDisplayMenu</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *item) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref33">displayMenu</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item,const <A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A> &pnt,int col) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref34">displayMemo</A></b> (void) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref31">displayMenu</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *menu) 
+</LI>
+</ul><h4>Protected Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref35">menuCallback</A></b> (int id) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ The TOra implementation of a listview which offers a few extra goodies to the baseclass.
+ First of all tooltip which can display contents that doesn't fit in the list, printing,
+ integration into toMain with Edit menu etc, drag & drop, export as file, display item
+ as memo and context menu.
+ </p>
+<A NAME="toListView"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toListView</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toListView</strong></h3></td></tr></table><p></p><p> Create new list view.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toListView"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toListView</strong> ()
+<br></td><td align="right"><h3><strong>~toListView</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="sqlName"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>sqlName</strong> (void)
+<br></td><td align="right"><h3><strong>sqlName</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get SQL name of list.
+   </p>
+<A NAME="setSQLName"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setSQLName</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>setSQLName</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set SQL name of list.
+   </p>
+<A NAME="menuText"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>menuText</strong> (void)
+<br></td><td align="right"><h3><strong>menuText</strong></h3></td></tr></table><p></p><p> Get the whole text for the item and column selected when menu was poped up.
+   </p>
+<A NAME="editPrint"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editPrint</strong> (void)
+<br></td><td align="right"><h3><strong>editPrint</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Print this list
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editPrint">toEditWidget</A>.</p>
+<A NAME="focusInEvent"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>focusInEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *e)
+<br></td><td align="right"><h3><strong>focusInEvent</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="middleString"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>middleString</strong> ()
+<br></td><td align="right"><h3><strong>middleString</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> The string to be displayed in the middle of the footer when printing.
+</p>
+<p><b>Returns</b>: String to be placed in middle.
+   </p>
+<A NAME="addMenues"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addMenues</strong> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *menu)
+<br></td><td align="right"><h3><strong>addMenues</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Adds option to add menues to the popup menu before it is displayed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>menu</i></TD><TD align="left" valign="top">Menu to add entries to.
+   </TD></TR>
+</TABLE></P>
+<A NAME="editSave"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>editSave</strong> (bool ask)
+<br></td><td align="right"><h3><strong>editSave</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Export list as file.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editSave">toEditWidget</A>.</p>
+<A NAME="editSelectAll"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editSelectAll</strong> (void)
+<br></td><td align="right"><h3><strong>editSelectAll</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Select all contents.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editSelectAll">toEditWidget</A>.</p>
+<A NAME="searchTop"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>searchTop</strong> (void)
+<br></td><td align="right"><h3><strong>searchTop</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Move to top of data
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchTop">toEditWidget</A>.</p>
+<A NAME="searchNext"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>searchNext</strong> (<A HREF="#toSearchReplace">toSearchReplace</A> *search)
+<br></td><td align="right"><h3><strong>searchNext</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Search for next entry
+</p>
+<p><b>Returns</b>: True if found, should select the found text.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchNext">toEditWidget</A>.</p>
+<A NAME="searchCanReplace"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>searchCanReplace</strong> (bool all)
+<br></td><td align="right"><h3><strong>searchCanReplace</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Check if data can be modified by search
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>all</i></TD><TD align="left" valign="top">If true can replace all, otherwise can replace right now.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchCanReplace">toEditWidget</A>.</p>
+<A NAME="exportData"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>exportData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>exportData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Export data to a map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">A map that can be used to recreate the data of a chart.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to add to the map.
+   </TD></TR>
+</TABLE></P>
+<A NAME="importData"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>importData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>importData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Import data
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to read from a map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to read data from.
+   </TD></TR>
+</TABLE></P>
+<A NAME="copyTransposed"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toListView.html">toListView</A> *&nbsp;<strong>copyTransposed</strong> (void)
+<br></td><td align="right"><h3><strong>copyTransposed</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Create transposed copy of list
+</p>
+<p><b>Returns</b>: Pointer to newly allocated transposed listview.
+   </p>
+<A NAME="displayMenu"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>displayMenu</strong> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *menu)
+<br></td><td align="right"><h3><strong>displayMenu</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Called before the menu is displayed so that you can add items to it before it is shown.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>menu</i></TD><TD align="left" valign="top">Pointer to the menu about to be shown.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setDisplayMenu"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setDisplayMenu</strong> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *item)
+<br></td><td align="right"><h3><strong>setDisplayMenu</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> set the popup menu --> see displayMenu()
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>item</i></TD><TD align="left" valign="top">Item to display.
+   </TD></TR>
+</TABLE></P>
+<A NAME="displayMenu"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>displayMenu</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item,const <A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A> &pnt,int col)
+<br></td><td align="right"><h3><strong>displayMenu</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Display the menu at the given point and column.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>item</i></TD><TD align="left" valign="top">Item to display.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>pnt</i></TD><TD align="left" valign="top">Point to display menu at.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Column to display menu for.
+   </TD></TR>
+</TABLE></P>
+<A NAME="displayMemo"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>displayMemo</strong> (void)
+<br></td><td align="right"><h3><strong>displayMemo</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Display memo of selected menu column
+   </p>
+<A NAME="menuCallback"></A><A NAME="ref35"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>menuCallback</strong> (int id)
+<br></td><td align="right"><h3><strong>menuCallback</strong></h3></td></tr></table><p> <small>[protected slots virtual slot]</small></p><p> Callback when menu is selected. If you override this make sure you
+ call the parents function when you have parsed your entries.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>id</i></TD><TD align="left" valign="top">ID of the menu item selected.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toLock.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toLock.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toLock.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,67 @@
+<HTML>
+<HEAD>
+<TITLE>class toLock</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toLock</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A wrapper around the pthread mutexfunctions. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tothread_h.html">tothread.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toLock.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toLock</A></b> (void) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref3">toLock</A></b> (const <A HREF="toLock.html">toLock</A> &) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref4">lock</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref5">unlock</A></b> (void) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref8">toLock</A></b> (void) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref9">~toLock</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref10">lock</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref11">unlock</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A wrapper around the pthread mutexfunctions. A lock can only be locked
+  by one thread at a time and is the basis of most thread synchronisation.
+ </p>
+<A NAME="toLock"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toLock</strong> (void)
+<br></td><td align="right"><h3><strong>toLock</strong></h3></td></tr></table><p></p><A NAME="toLock"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toLock</strong> (const <A HREF="toLock.html">toLock</A> &)
+<br></td><td align="right"><h3><strong>toLock</strong></h3></td></tr></table><p></p><A NAME="lock"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>lock</strong> (void)
+<br></td><td align="right"><h3><strong>lock</strong></h3></td></tr></table><p></p><A NAME="unlock"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>unlock</strong> (void)
+<br></td><td align="right"><h3><strong>unlock</strong></h3></td></tr></table><p></p><A NAME="toLock"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toLock</strong> (void)
+<br></td><td align="right"><h3><strong>toLock</strong></h3></td></tr></table><p></p><p> Create lock
+   </p>
+<A NAME="~toLock"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toLock</strong> ()
+<br></td><td align="right"><h3><strong>~toLock</strong></h3></td></tr></table><p></p><A NAME="lock"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>lock</strong> (void)
+<br></td><td align="right"><h3><strong>lock</strong></h3></td></tr></table><p></p><p> Lock this lock.
+   </p>
+<A NAME="unlock"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>unlock</strong> (void)
+<br></td><td align="right"><h3><strong>unlock</strong></h3></td></tr></table><p></p><p> Unlock this lock.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toLocker.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toLocker.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toLocker.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,52 @@
+<HTML>
+<HEAD>
+<TITLE>class toLocker</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toLocker</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This is a convenience class that holds a lock for the duration of the scope
+ of the object. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tothread_h.html">tothread.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toLocker.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">toLocker</A></b> (<A HREF="toLock.html">toLock</A> &lock) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref4">~toLocker</A></b> () 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This is a convenience class that holds a lock for the duration of the scope
+ of the object. It is very convenient to use if exceptions can be thrown, simply
+ declare an auto <A HREF="toLocker.html#toLocker">toLocker</A> to hold the lock. If any exception is thrown the
+ locker will be deallocated and the lock released.
+ </p>
+<A NAME="toLocker"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toLocker</strong> (<A HREF="toLock.html">toLock</A> &lock)
+<br></td><td align="right"><h3><strong>toLocker</strong></h3></td></tr></table><p></p><p> Create locker.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>lock</i></TD><TD align="left" valign="top">Lock to hold.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toLocker"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toLocker</strong> ()
+<br></td><td align="right"><h3><strong>~toLocker</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toMain.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toMain.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toMain.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,415 @@
+<HTML>
+<HEAD>
+<TITLE>class toMain</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toMain</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class defines the main window. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tomain_h.html">tomain.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toMainWindow.html">toMainWindow</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toMain.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref49">toMain</A></b> () 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qworkspace.html">QWorkspace</A> *&nbsp;<b><A HREF="#ref50">workspace</A></b> () 
+</LI>
+<LI><A HREF="toConnection.html">toConnection</A> &&nbsp;<b><A HREF="#ref51">currentConnection</A></b> (void) 
+</LI>
+<LI><A HREF="toEditWidget.html">toEditWidget</A> *&nbsp;<b><A HREF="#ref55">editWidget</A></b> () 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref56">close</A></b> (bool del) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref57">createDefault</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref58">setCoordinates</A></b> (int,int) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *&nbsp;<b><A HREF="#ref59">fileMenu</A></b> () 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *&nbsp;<b><A HREF="#ref60">editMenu</A></b> () 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *&nbsp;<b><A HREF="#ref61">toolsMenu</A></b> () 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *&nbsp;<b><A HREF="#ref62">helpMenu</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref63">updateKeepAlive</A></b> () 
+</LI>
+<LI>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<b><A HREF="#ref64">connections</A></b> (void) 
+</LI>
+<LI><A HREF="toConnection.html">toConnection</A> &&nbsp;<b><A HREF="#ref65">connection</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref66">setNeedCommit</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,bool needCommit=true) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref67">editSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref68">registerSQLEditor</A></b> (int toolid) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref69">toolWidgetAdded</A></b> (<A HREF="toToolWidget.html">toToolWidget</A> *tool) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref70">toolWidgetRemoved</A></b> (<A HREF="toToolWidget.html">toToolWidget</A> *tool) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref71">exportData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref72">importData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *&nbsp;<b><A HREF="#ref73">editToolbar</A></b> () 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *&nbsp;<b><A HREF="#ref74">connectionToolbar</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref75">addChart</A></b> (<A HREF="toLineChart.html">toLineChart</A> *chart) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref76">removeChart</A></b> (<A HREF="toLineChart.html">toLineChart</A> *chart) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref77">setupChart</A></b> (<A HREF="toLineChart.html">toLineChart</A> *chart) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref78">displayMessage</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref79">addRecentFile</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref89">windowsMenu</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref90">statusMenu</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref91">contextHelp</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref92">windowActivated</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref93">showFileMenu</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref94">checkCaching</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref95">saveSession</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref96">loadSession</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref97">closeSession</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref98">changeConnection</A></b> (void) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref80">sqlEditor</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref81">chartAdded</A></b> (<A HREF="toLineChart.html">toLineChart</A> *chart) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref82">chartSetup</A></b> (<A HREF="toLineChart.html">toLineChart</A> *chart) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref83">chartRemoved</A></b> (<A HREF="toLineChart.html">toLineChart</A> *chart) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref84">addedConnection</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref85">removedConnection</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref86">addedToolWidget</A></b> (<A HREF="toToolWidget.html">toToolWidget</A> *tool) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref87">removedToolWidget</A></b> (<A HREF="toToolWidget.html">toToolWidget</A> *tool) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref88">willCommit</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,bool cmt) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  void &nbsp;<b><A HREF="#ref52">setEditWidget</A></b> (<A HREF="toEditWidget.html">toEditWidget</A> *edit) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref53">editEnable</A></b> (<A HREF="toEditWidget.html">toEditWidget</A> *edit) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref54">editDisable</A></b> (<A HREF="toEditWidget.html">toEditWidget</A> *edit) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>static const int <b><A HREF="#ref38">TO_FILE_MENU</A></b></LI>
+<LI>static const int <b><A HREF="#ref39">TO_EDIT_MENU</A></b></LI>
+<LI>static const int <b><A HREF="#ref40">TO_TOOLS_MENU</A></b></LI>
+<LI>static const int <b><A HREF="#ref41">TO_WINDOWS_MENU</A></b></LI>
+<LI>static const int <b><A HREF="#ref42">TO_HELP_MENU</A></b></LI>
+<LI>static const int <b><A HREF="#ref43">TO_TOOL_MENU_ID</A></b></LI>
+<LI>static const int <b><A HREF="#ref44">TO_TOOL_MENU_ID_END</A></b></LI>
+<LI>static const int <b><A HREF="#ref45">TO_LAST_FILE_ID</A></b></LI>
+<LI>static const int <b><A HREF="#ref46">TO_LAST_FILE_ID_END</A></b></LI>
+<LI>static const int <b><A HREF="#ref47">TO_TOOL_ABOUT_ID</A></b></LI>
+<LI>static const int <b><A HREF="#ref48">TO_TOOL_ABOUT_ID_END</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class defines the main window. Observe that this class will have different baseclass
+ depending on if TOra is a Qt or KDE application. In the case of Qt this will be a
+ QMainWindow descendant.
+ </p>
+<A NAME="TO_FILE_MENU"></A><A NAME="ref38"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_FILE_MENU</strong>
+</td><td align="right"><h3><strong>TO_FILE_MENU</strong></h3></td></tr></table><p></p><A NAME="TO_EDIT_MENU"></A><A NAME="ref39"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_EDIT_MENU</strong>
+</td><td align="right"><h3><strong>TO_EDIT_MENU</strong></h3></td></tr></table><p></p><A NAME="TO_TOOLS_MENU"></A><A NAME="ref40"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_TOOLS_MENU</strong>
+</td><td align="right"><h3><strong>TO_TOOLS_MENU</strong></h3></td></tr></table><p></p><A NAME="TO_WINDOWS_MENU"></A><A NAME="ref41"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_WINDOWS_MENU</strong>
+</td><td align="right"><h3><strong>TO_WINDOWS_MENU</strong></h3></td></tr></table><p></p><A NAME="TO_HELP_MENU"></A><A NAME="ref42"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_HELP_MENU</strong>
+</td><td align="right"><h3><strong>TO_HELP_MENU</strong></h3></td></tr></table><p></p><A NAME="TO_TOOL_MENU_ID"></A><A NAME="ref43"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_TOOL_MENU_ID</strong>
+</td><td align="right"><h3><strong>TO_TOOL_MENU_ID</strong></h3></td></tr></table><p></p><A NAME="TO_TOOL_MENU_ID_END"></A><A NAME="ref44"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_TOOL_MENU_ID_END</strong>
+</td><td align="right"><h3><strong>TO_TOOL_MENU_ID_END</strong></h3></td></tr></table><p></p><A NAME="TO_LAST_FILE_ID"></A><A NAME="ref45"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_LAST_FILE_ID</strong>
+</td><td align="right"><h3><strong>TO_LAST_FILE_ID</strong></h3></td></tr></table><p></p><A NAME="TO_LAST_FILE_ID_END"></A><A NAME="ref46"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_LAST_FILE_ID_END</strong>
+</td><td align="right"><h3><strong>TO_LAST_FILE_ID_END</strong></h3></td></tr></table><p></p><A NAME="TO_TOOL_ABOUT_ID"></A><A NAME="ref47"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_TOOL_ABOUT_ID</strong>
+</td><td align="right"><h3><strong>TO_TOOL_ABOUT_ID</strong></h3></td></tr></table><p></p><A NAME="TO_TOOL_ABOUT_ID_END"></A><A NAME="ref48"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const int  <strong>TO_TOOL_ABOUT_ID_END</strong>
+</td><td align="right"><h3><strong>TO_TOOL_ABOUT_ID_END</strong></h3></td></tr></table><p></p><A NAME="toMain"></A><A NAME="ref49"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toMain</strong> ()
+<br></td><td align="right"><h3><strong>toMain</strong></h3></td></tr></table><p></p><p>
+ Create main window. Always NULL as parent.
+   </p>
+<A NAME="workspace"></A><A NAME="ref50"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qworkspace.html">QWorkspace</A> *&nbsp;<strong>workspace</strong> ()
+<br></td><td align="right"><h3><strong>workspace</strong></h3></td></tr></table><p></p><p>
+ Get the workspace widget of the main window.
+</p>
+<p><b>Returns</b>: Workspace widget.
+   </p>
+<A NAME="currentConnection"></A><A NAME="ref51"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toConnection.html">toConnection</A> &&nbsp;<strong>currentConnection</strong> (void)
+<br></td><td align="right"><h3><strong>currentConnection</strong></h3></td></tr></table><p></p><p>
+ Get the current database connection
+</p>
+<p><b>Returns</b>: Reference to current connection.
+   </p>
+<A NAME="setEditWidget"></A><A NAME="ref52"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setEditWidget</strong> (<A HREF="toEditWidget.html">toEditWidget</A> *edit)
+<br></td><td align="right"><h3><strong>setEditWidget</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Set the widget to edit through menues and toolbar.
+   </p>
+<A NAME="editEnable"></A><A NAME="ref53"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editEnable</strong> (<A HREF="toEditWidget.html">toEditWidget</A> *edit)
+<br></td><td align="right"><h3><strong>editEnable</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Set available menu items in user interface. It is not enough to just call
+ this function to make open for instance to actually work. It is a lot of
+ more especially in <A HREF="toMain.html#commandCallback">commandCallback</A> and editFileMenu. Will only
+ update if this is the current editing widget.
+   </p>
+<A NAME="editDisable"></A><A NAME="ref54"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editDisable</strong> (<A HREF="toEditWidget.html">toEditWidget</A> *edit)
+<br></td><td align="right"><h3><strong>editDisable</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Disable all the current available items in the user interface (That <A HREF="toMain.html#editEnable">editEnable</A> can enable). If specified widget has the focus the edit widget
+ is cleared.
+   </p>
+<A NAME="editWidget"></A><A NAME="ref55"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toEditWidget.html">toEditWidget</A> *&nbsp;<strong>editWidget</strong> ()
+<br></td><td align="right"><h3><strong>editWidget</strong></h3></td></tr></table><p></p><p> Get current edit widget
+   </p>
+<A NAME="close"></A><A NAME="ref56"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>close</strong> (bool del)
+<br></td><td align="right"><h3><strong>close</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ Close window
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>del</i></TD><TD align="left" valign="top">If user interaction is allowed.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: True if close was allowed, otherwise false.
+   </p>
+<A NAME="createDefault"></A><A NAME="ref57"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>createDefault</strong> (void)
+<br></td><td align="right"><h3><strong>createDefault</strong></h3></td></tr></table><p></p><p>
+ Create the default tool for the current connection.
+</p>
+<p> This is the tool with the highest priority, usually the SQL worksheet.
+   </p>
+<A NAME="setCoordinates"></A><A NAME="ref58"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setCoordinates</strong> (int,int)
+<br></td><td align="right"><h3><strong>setCoordinates</strong></h3></td></tr></table><p></p><p>
+ Set coordinates in the statusbar.
+</p>
+<p> Used to indicate current cursor position by child widgets.
+   </p>
+<A NAME="fileMenu"></A><A NAME="ref59"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *&nbsp;<strong>fileMenu</strong> ()
+<br></td><td align="right"><h3><strong>fileMenu</strong></h3></td></tr></table><p></p><p>
+ Get the file menu.
+</p>
+<p><b>Returns</b>: File menu
+   </p>
+<A NAME="editMenu"></A><A NAME="ref60"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *&nbsp;<strong>editMenu</strong> ()
+<br></td><td align="right"><h3><strong>editMenu</strong></h3></td></tr></table><p></p><p>
+ Get the edit menu.
+</p>
+<p><b>Returns</b>: Edit menu
+   </p>
+<A NAME="toolsMenu"></A><A NAME="ref61"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *&nbsp;<strong>toolsMenu</strong> ()
+<br></td><td align="right"><h3><strong>toolsMenu</strong></h3></td></tr></table><p></p><p>
+ Get the tools menu.
+</p>
+<p><b>Returns</b>: Tools menu
+   </p>
+<A NAME="helpMenu"></A><A NAME="ref62"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *&nbsp;<strong>helpMenu</strong> ()
+<br></td><td align="right"><h3><strong>helpMenu</strong></h3></td></tr></table><p></p><p>
+ Get the help menu.
+</p>
+<p><b>Returns</b>: Help menu
+   </p>
+<A NAME="updateKeepAlive"></A><A NAME="ref63"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>updateKeepAlive</strong> ()
+<br></td><td align="right"><h3><strong>updateKeepAlive</strong></h3></td></tr></table><p></p><A NAME="connections"></A><A NAME="ref64"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &nbsp;<strong>connections</strong> (void)
+<br></td><td align="right"><h3><strong>connections</strong></h3></td></tr></table><p></p><p>
+ Get a list of currently open connections.
+</p>
+<p><b>Returns</b>: List of connection names. The returned list can then be used by
+ <A HREF="toMain.html#connection">connection</A> to get the actual connection.
+   </p>
+<A NAME="connection"></A><A NAME="ref65"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toConnection.html">toConnection</A> &&nbsp;<strong>connection</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &)
+<br></td><td align="right"><h3><strong>connection</strong></h3></td></tr></table><p></p><p> Get a connection identified by a string.
+</p>
+<p><b>Returns</b>: A reference to a connection.
+</p>
+<p><b>Throws</b>: QString, If, connection, wasn't, found.</p>
+<A NAME="setNeedCommit"></A><A NAME="ref66"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setNeedCommit</strong> (<A HREF="toConnection.html">toConnection</A> &conn,bool needCommit=true)
+<br></td><td align="right"><h3><strong>setNeedCommit</strong></h3></td></tr></table><p></p><p> Set if a connection needs to be commited. Also updates visual feedback in interface.
+   </p>
+<A NAME="editSQL"></A><A NAME="ref67"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>editSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>editSQL</strong></h3></td></tr></table><p></p><p> Edit an SQL statement in the SQL editor if any connected.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Identifier of the SQL to edit.
+   </TD></TR>
+</TABLE></P>
+<A NAME="registerSQLEditor"></A><A NAME="ref68"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>registerSQLEditor</strong> (int toolid)
+<br></td><td align="right"><h3><strong>registerSQLEditor</strong></h3></td></tr></table><p></p><p>
+ Register a tool which to use as an SQL editor. When something is to be edited
+ first a toolwindow will be created and the <A HREF="toMain.html#sqlEditor">sqlEditor</A> will be emited, so
+ the SQL editor must connect to this signal as well.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>toolid</i></TD><TD align="left" valign="top">Which tool identifier to register as the SQL editor. This
+               is the value which is passed to the <A HREF="toTool.html#customSetup">toTool::customSetup</A>
+               member.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toolWidgetAdded"></A><A NAME="ref69"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toolWidgetAdded</strong> (<A HREF="toToolWidget.html">toToolWidget</A> *tool)
+<br></td><td align="right"><h3><strong>toolWidgetAdded</strong></h3></td></tr></table><p></p><p> Called by <A HREF="toTool.html">toTool</A> when a new tool is created.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tool</i></TD><TD align="left" valign="top">The tool widget created.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toolWidgetRemoved"></A><A NAME="ref70"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>toolWidgetRemoved</strong> (<A HREF="toToolWidget.html">toToolWidget</A> *tool)
+<br></td><td align="right"><h3><strong>toolWidgetRemoved</strong></h3></td></tr></table><p></p><p> Called by <A HREF="toToolWidget.html">toToolWidget</A> when a new tool is about to be destroyed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tool</i></TD><TD align="left" valign="top">The tool widget created.
+   </TD></TR>
+</TABLE></P>
+<A NAME="exportData"></A><A NAME="ref71"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>exportData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>exportData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Export data to a map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">A map that can be used to recreate the session.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to add to the map.
+   </TD></TR>
+</TABLE></P>
+<A NAME="importData"></A><A NAME="ref72"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>importData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>importData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Import data
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to read from a map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to read data from.
+   </TD></TR>
+</TABLE></P>
+<A NAME="editToolbar"></A><A NAME="ref73"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *&nbsp;<strong>editToolbar</strong> ()
+<br></td><td align="right"><h3><strong>editToolbar</strong></h3></td></tr></table><p></p><p> Get edit toolbar pointer.
+   </p>
+<A NAME="connectionToolbar"></A><A NAME="ref74"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *&nbsp;<strong>connectionToolbar</strong> ()
+<br></td><td align="right"><h3><strong>connectionToolbar</strong></h3></td></tr></table><p></p><p> Get connection toolbar pointer.
+   </p>
+<A NAME="addChart"></A><A NAME="ref75"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addChart</strong> (<A HREF="toLineChart.html">toLineChart</A> *chart)
+<br></td><td align="right"><h3><strong>addChart</strong></h3></td></tr></table><p></p><p> Added chart.
+   </p>
+<A NAME="removeChart"></A><A NAME="ref76"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>removeChart</strong> (<A HREF="toLineChart.html">toLineChart</A> *chart)
+<br></td><td align="right"><h3><strong>removeChart</strong></h3></td></tr></table><p></p><p> Removed chart.
+   </p>
+<A NAME="setupChart"></A><A NAME="ref77"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setupChart</strong> (<A HREF="toLineChart.html">toLineChart</A> *chart)
+<br></td><td align="right"><h3><strong>setupChart</strong></h3></td></tr></table><p></p><p> Setup chart.
+   </p>
+<A NAME="displayMessage"></A><A NAME="ref78"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>displayMessage</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>displayMessage</strong></h3></td></tr></table><p></p><p> Display status message in dialog.
+   </p>
+<A NAME="addRecentFile"></A><A NAME="ref79"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addRecentFile</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename)
+<br></td><td align="right"><h3><strong>addRecentFile</strong></h3></td></tr></table><p></p><p> Add recent file
+   </p>
+<A NAME="sqlEditor"></A><A NAME="ref80"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>sqlEditor</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>sqlEditor</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Invoked to start editing an SQL identifier.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Identifier to start editing.
+   </TD></TR>
+</TABLE></P>
+<A NAME="chartAdded"></A><A NAME="ref81"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>chartAdded</strong> (<A HREF="toLineChart.html">toLineChart</A> *chart)
+<br></td><td align="right"><h3><strong>chartAdded</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Invoked when a new chart is created.
+   </p>
+<A NAME="chartSetup"></A><A NAME="ref82"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>chartSetup</strong> (<A HREF="toLineChart.html">toLineChart</A> *chart)
+<br></td><td align="right"><h3><strong>chartSetup</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Invoked before a chart is destroyed.
+   </p>
+<A NAME="chartRemoved"></A><A NAME="ref83"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>chartRemoved</strong> (<A HREF="toLineChart.html">toLineChart</A> *chart)
+<br></td><td align="right"><h3><strong>chartRemoved</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Invoked before a chart is destroyed.
+   </p>
+<A NAME="addedConnection"></A><A NAME="ref84"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addedConnection</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>addedConnection</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Invoked when a connection is added.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Connection identifier.
+   </TD></TR>
+</TABLE></P>
+<A NAME="removedConnection"></A><A NAME="ref85"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>removedConnection</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>removedConnection</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Invoked when a connection is removed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Connection identifier.
+   </TD></TR>
+</TABLE></P>
+<A NAME="addedToolWidget"></A><A NAME="ref86"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addedToolWidget</strong> (<A HREF="toToolWidget.html">toToolWidget</A> *tool)
+<br></td><td align="right"><h3><strong>addedToolWidget</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Invoked when a tool window is created.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tool</i></TD><TD align="left" valign="top">The tool created.
+   </TD></TR>
+</TABLE></P>
+<A NAME="removedToolWidget"></A><A NAME="ref87"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>removedToolWidget</strong> (<A HREF="toToolWidget.html">toToolWidget</A> *tool)
+<br></td><td align="right"><h3><strong>removedToolWidget</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Invoked when a tool window is closed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tool</i></TD><TD align="left" valign="top">Tool about to be removed.
+   </TD></TR>
+</TABLE></P>
+<A NAME="willCommit"></A><A NAME="ref88"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>willCommit</strong> (<A HREF="toConnection.html">toConnection</A> &conn,bool cmt)
+<br></td><td align="right"><h3><strong>willCommit</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Emitted before a commit or rollback is made to the current connection.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection that is commited
+</TD></TR>
+<TR><TD align="left" valign="top"><i>cmt</i></TD><TD align="left" valign="top">True if commit, false if rollback.
+   </TD></TR>
+</TABLE></P>
+<A NAME="windowsMenu"></A><A NAME="ref89"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>windowsMenu</strong> (void)
+<br></td><td align="right"><h3><strong>windowsMenu</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Used to enable/disable entries in the windows menu
+   </p>
+<A NAME="statusMenu"></A><A NAME="ref90"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>statusMenu</strong> (void)
+<br></td><td align="right"><h3><strong>statusMenu</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Used to fill the status menu with the latest status entries
+   </p>
+<A NAME="contextHelp"></A><A NAME="ref91"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>contextHelp</strong> (void)
+<br></td><td align="right"><h3><strong>contextHelp</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Display context help. 
+   </p>
+<A NAME="windowActivated"></A><A NAME="ref92"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>windowActivated</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *)
+<br></td><td align="right"><h3><strong>windowActivated</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Called when active window is changed.
+   </p>
+<A NAME="showFileMenu"></A><A NAME="ref93"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>showFileMenu</strong> (void)
+<br></td><td align="right"><h3><strong>showFileMenu</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Used to enable/disable entries in the file menu
+   </p>
+<A NAME="checkCaching"></A><A NAME="ref94"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>checkCaching</strong> (void)
+<br></td><td align="right"><h3><strong>checkCaching</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Check if object caching is done.
+   </p>
+<A NAME="saveSession"></A><A NAME="ref95"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>saveSession</strong> (void)
+<br></td><td align="right"><h3><strong>saveSession</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Save the current TOra session
+   </p>
+<A NAME="loadSession"></A><A NAME="ref96"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>loadSession</strong> (void)
+<br></td><td align="right"><h3><strong>loadSession</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Load a session (Merge with current)
+   </p>
+<A NAME="closeSession"></A><A NAME="ref97"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>closeSession</strong> (void)
+<br></td><td align="right"><h3><strong>closeSession</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Close all windows and connections.
+   </p>
+<A NAME="changeConnection"></A><A NAME="ref98"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>changeConnection</strong> (void)
+<br></td><td align="right"><h3><strong>changeConnection</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Change current connection
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toMainWindow.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toMainWindow.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toMainWindow.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+<TITLE>class toMainWindow</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toMainWindow</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ A container class that either inherits KDE or Qt main window. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tomainwindow_kde_h.html">tomainwindow.kde.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD>KDockMainWindow <small>(unknown)</small> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toMain.html">toMain</A></TD></TR>
+<TR><TH><A HREF="full-list-toMainWindow.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toMainWindow</A></b> () 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ A container class that either inherits KDE or Qt main window.
+ </p>
+<A NAME="toMainWindow"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toMainWindow</strong> ()
+<br></td><td align="right"><h3><strong>toMainWindow</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toMarkedText.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toMarkedText.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toMarkedText.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,287 @@
+<HTML>
+<HEAD>
+<TITLE>class toMarkedText</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toMarkedText</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This is the enhanced editor used in TOra. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tomarkedtext_h.html">tomarkedtext.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toEditWidget.html">toEditWidget</A> <small>[public ]</small>, <A HREF="toMultiLineEdit.html">toMultiLineEdit</A> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toHighlightedText.html">toHighlightedText</A>, <A HREF="toResultField.html">toResultField</A></TD></TR>
+<TR><TH><A HREF="full-list-toMarkedText.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref13">toMarkedText</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref14">insert</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,bool mark) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref15">insert</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref16">markedText</A></b> () 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref17">hasMarkedText</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref18">clear</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref19">getMarkedRegion</A></b> (int * line1,int * col1,int * line2,int * col2)  const
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref20">filename</A></b> (void)  const
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref21">openFilename</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &file) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref22">setFilename</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref23">setEdit</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref24">focusInEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref25">focusOutEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref26">paintEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpaintevent.html">QPaintEvent</A> *pe) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref27">editPrint</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref28">editOpen</A></b> (<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> file=QString::null) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref29">editSave</A></b> (bool ask) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref30">editUndo</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref31">editRedo</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref32">editCut</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref33">editCopy</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref34">editPaste</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref35">editSelectAll</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref36">searchTop</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref37">searchNext</A></b> (<A HREF="#toSearchReplace">toSearchReplace</A> *search) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref38">searchReplace</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &newData) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref39">searchCanReplace</A></b> (bool all) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref40">incrementalSearch</A></b> (bool forward) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref41">exportData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref42">importData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref43">findPosition</A></b> (int index,int &line,int &col) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref11">mousePressEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref12">keyPressEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qkeyevent.html">QKeyEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref44">newLine</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref45">dropEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qdropevent.html">QDropEvent</A> *) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref46">timerEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtimerevent.html">QTimerEvent</A> *) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This is the enhanced editor used in TOra. It mainly offers integration in the TOra
+ menues and printsupport in addition to normal QMultiLineEdit.
+ </p>
+<A NAME="mousePressEvent"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>mousePressEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e)
+<br></td><td align="right"><h3><strong>mousePressEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="keyPressEvent"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>keyPressEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qkeyevent.html">QKeyEvent</A> *e)
+<br></td><td align="right"><h3><strong>keyPressEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="toMarkedText"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toMarkedText</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toMarkedText</strong></h3></td></tr></table><p></p><p> Create an editor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of this widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of this widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="insert"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>insert</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,bool mark)
+<br></td><td align="right"><h3><strong>insert</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Insert text and optionallly mark inserted text.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to insert.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>mark</i></TD><TD align="left" valign="top">True if mark inserted as selected.
+   </TD></TR>
+</TABLE></P>
+<A NAME="insert"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>insert</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>insert</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Insert text.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to insert.
+   </TD></TR>
+</TABLE></P>
+<A NAME="markedText"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>markedText</strong> ()
+<br></td><td align="right"><h3><strong>markedText</strong></h3></td></tr></table><p></p><p> Get selected text. This function is now public.
+</p>
+<p><b>Returns</b>: The selected text.
+   </p>
+<p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#markedText">QMultiLineEdit</A>.</p>
+<A NAME="hasMarkedText"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>hasMarkedText</strong> ()
+<br></td><td align="right"><h3><strong>hasMarkedText</strong></h3></td></tr></table><p></p><p> Check if selection is available. This function is now public.
+</p>
+<p><b>Returns</b>: True if selection is available.
+   </p>
+<p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#hasMarkedText">QMultiLineEdit</A>.</p>
+<A NAME="clear"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>clear</strong> (void)
+<br></td><td align="right"><h3><strong>clear</strong></h3></td></tr></table><p></p><p> Erase the contents of the editor.
+   </p>
+<A NAME="getMarkedRegion"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>getMarkedRegion</strong> (int * line1,int * col1,int * line2,int * col2)
+<br></td><td align="right"><h3><strong>getMarkedRegion</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get location of the current selection. This function is now public. See the
+ Qt documentation for more information.
+   </p>
+<p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html#getMarkedRegion">QMultiLineEdit</A>.</p>
+<A NAME="filename"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>filename</strong> (void)
+<br></td><td align="right"><h3><strong>filename</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Get filename of current file in editor.
+</p>
+<p><b>Returns</b>: Filename of editor.
+   </p>
+<A NAME="openFilename"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>openFilename</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &file)
+<br></td><td align="right"><h3><strong>openFilename</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Open a file for editing.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>file</i></TD><TD align="left" valign="top">File to open for editing.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setFilename"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setFilename</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>setFilename</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set the current filename of the file in editor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String containing filename.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setEdit"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setEdit</strong> (void)
+<br></td><td align="right"><h3><strong>setEdit</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Update user interface with availability of copy/paste etc.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#setEdit">toEditWidget</A>.</p>
+<A NAME="focusInEvent"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>focusInEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *e)
+<br></td><td align="right"><h3><strong>focusInEvent</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="focusOutEvent"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>focusOutEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *e)
+<br></td><td align="right"><h3><strong>focusOutEvent</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="paintEvent"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qpaintevent.html">QPaintEvent</A> *pe)
+<br></td><td align="right"><h3><strong>paintEvent</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="editPrint"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editPrint</strong> (void)
+<br></td><td align="right"><h3><strong>editPrint</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Print this editor.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editPrint">toEditWidget</A>.</p>
+<A NAME="editOpen"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>editOpen</strong> (<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> file=QString::null)
+<br></td><td align="right"><h3><strong>editOpen</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editOpen">toEditWidget</A>.</p>
+<A NAME="editSave"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>editSave</strong> (bool ask)
+<br></td><td align="right"><h3><strong>editSave</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editSave">toEditWidget</A>.</p>
+<A NAME="editUndo"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editUndo</strong> (void)
+<br></td><td align="right"><h3><strong>editUndo</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editUndo">toEditWidget</A>.</p>
+<A NAME="editRedo"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editRedo</strong> (void)
+<br></td><td align="right"><h3><strong>editRedo</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editRedo">toEditWidget</A>.</p>
+<A NAME="editCut"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editCut</strong> (void)
+<br></td><td align="right"><h3><strong>editCut</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editCut">toEditWidget</A>.</p>
+<A NAME="editCopy"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editCopy</strong> (void)
+<br></td><td align="right"><h3><strong>editCopy</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editCopy">toEditWidget</A>.</p>
+<A NAME="editPaste"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editPaste</strong> (void)
+<br></td><td align="right"><h3><strong>editPaste</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editPaste">toEditWidget</A>.</p>
+<A NAME="editSelectAll"></A><A NAME="ref35"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editSelectAll</strong> (void)
+<br></td><td align="right"><h3><strong>editSelectAll</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editSelectAll">toEditWidget</A>.</p>
+<A NAME="searchTop"></A><A NAME="ref36"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>searchTop</strong> (void)
+<br></td><td align="right"><h3><strong>searchTop</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Move to top of data
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchTop">toEditWidget</A>.</p>
+<A NAME="searchNext"></A><A NAME="ref37"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>searchNext</strong> (<A HREF="#toSearchReplace">toSearchReplace</A> *search)
+<br></td><td align="right"><h3><strong>searchNext</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Search for next entry
+</p>
+<p><b>Returns</b>: True if found, should select the found text.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchNext">toEditWidget</A>.</p>
+<A NAME="searchReplace"></A><A NAME="ref38"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>searchReplace</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &newData)
+<br></td><td align="right"><h3><strong>searchReplace</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Replace entry with new data
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchReplace">toEditWidget</A>.</p>
+<A NAME="searchCanReplace"></A><A NAME="ref39"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>searchCanReplace</strong> (bool all)
+<br></td><td align="right"><h3><strong>searchCanReplace</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Check if data can be modified by search
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>all</i></TD><TD align="left" valign="top">If true can replace all, otherwise can replace right now.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchCanReplace">toEditWidget</A>.</p>
+<A NAME="incrementalSearch"></A><A NAME="ref40"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>incrementalSearch</strong> (bool forward)
+<br></td><td align="right"><h3><strong>incrementalSearch</strong></h3></td></tr></table><p></p><p> Start incremental search mode, or search next if started.
+   </p>
+<A NAME="exportData"></A><A NAME="ref41"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>exportData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>exportData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Export data to a map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">A map that can be used to recreate the data of a chart.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to add to the map.
+   </TD></TR>
+</TABLE></P>
+<A NAME="importData"></A><A NAME="ref42"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>importData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>importData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Import data
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to read from a map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to read data from.
+   </TD></TR>
+</TABLE></P>
+<A NAME="findPosition"></A><A NAME="ref43"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>findPosition</strong> (int index,int &line,int &col)
+<br></td><td align="right"><h3><strong>findPosition</strong></h3></td></tr></table><p></p><p> Find the line and column of an index into the string of the entire editor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>index</i></TD><TD align="left" valign="top">Index to get line and col from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>line</i></TD><TD align="left" valign="top">Will be filled out with the line.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Will be filled out with the col.
+   </TD></TR>
+</TABLE></P>
+<A NAME="newLine"></A><A NAME="ref44"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>newLine</strong> (void)
+<br></td><td align="right"><h3><strong>newLine</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="dropEvent"></A><A NAME="ref45"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>dropEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qdropevent.html">QDropEvent</A> *)
+<br></td><td align="right"><h3><strong>dropEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="timerEvent"></A><A NAME="ref46"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>timerEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qtimerevent.html">QTimerEvent</A> *)
+<br></td><td align="right"><h3><strong>timerEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toMemoEditor.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toMemoEditor.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toMemoEditor.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,135 @@
+<HTML>
+<HEAD>
+<TITLE>class toMemoEditor</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toMemoEditor</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Displays an text in a widget which can optionally be modified and saved back. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tomemoeditor_h.html">tomemoeditor.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html">QDialog</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultContentMemo.html">toResultContentMemo</A></TD></TR>
+<TR><TH><A HREF="full-list-toMemoEditor.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref13">toMemoEditor</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &data,int row=-1,int col=-1,
+	       bool sql=false,bool modal=false,bool navigation=false) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref14">text</A></b> (void) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref15">row</A></b> ()  const
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref16">column</A></b> ()  const
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref18">store</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref19">firstColumn</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref20">nextColumn</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref21">previousColumn</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref22">lastColumn</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref23">changePosition</A></b> (int row,int cols) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref24">setText</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref17">changeData</A></b> (int row,int col,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &data) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI><A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *&nbsp;<b><A HREF="#ref10">toolbar</A></b> () 
+</LI>
+<LI><A HREF="toMarkedText.html">toMarkedText</A> *&nbsp;<b><A HREF="#ref11">editor</A></b> () 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qlabel.html">QLabel</A> *&nbsp;<b><A HREF="#ref12">label</A></b> () 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Displays an text in a widget which can optionally be modified and saved back.
+ </p>
+<A NAME="toolbar"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *&nbsp;<strong>toolbar</strong> ()
+<br></td><td align="right"><h3><strong>toolbar</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="editor"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toMarkedText.html">toMarkedText</A> *&nbsp;<strong>editor</strong> ()
+<br></td><td align="right"><h3><strong>editor</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="label"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qlabel.html">QLabel</A> *&nbsp;<strong>label</strong> ()
+<br></td><td align="right"><h3><strong>label</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="toMemoEditor"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toMemoEditor</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &data,int row=-1,int col=-1,
+	       bool sql=false,bool modal=false,bool navigation=false)
+<br></td><td align="right"><h3><strong>toMemoEditor</strong></h3></td></tr></table><p></p><p> Create this editor. If row and col is specified, editing is posible.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data of editor.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>row</i></TD><TD align="left" valign="top">Optional location specifier, pass on in <A HREF="toMemoEditor.html#changeData">changeData</A> call.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Optional location specifier, pass on in <A HREF="toMemoEditor.html#changeData">changeData</A> call.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">Use SQL syntax highlighting of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>modal</i></TD><TD align="left" valign="top">Display in modal dialog
+</TD></TR>
+<TR><TD align="left" valign="top"><i>navigation</i></TD><TD align="left" valign="top">Display navigation buttons
+   </TD></TR>
+</TABLE></P>
+<A NAME="text"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>text</strong> (void)
+<br></td><td align="right"><h3><strong>text</strong></h3></td></tr></table><p></p><p> Get editor text.
+</p>
+<p><b>Returns</b>: String of editor.
+   </p>
+<A NAME="row"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>row</strong> ()
+<br></td><td align="right"><h3><strong>row</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Current row being edited.
+   </p>
+<A NAME="column"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>column</strong> ()
+<br></td><td align="right"><h3><strong>column</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Current column being edited.
+   </p>
+<A NAME="changeData"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>changeData</strong> (int row,int col,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &data)
+<br></td><td align="right"><h3><strong>changeData</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Emitted when data is to be stored back to the creator
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>row</i></TD><TD align="left" valign="top">Pass on from creation.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Pass on from creation.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">New data to save.
+   </TD></TR>
+</TABLE></P>
+<A NAME="store"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>store</strong> (void)
+<br></td><td align="right"><h3><strong>store</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Save changes and close.
+   </p>
+<A NAME="firstColumn"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>firstColumn</strong> ()
+<br></td><td align="right"><h3><strong>firstColumn</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Goto first column.
+   </p>
+<A NAME="nextColumn"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>nextColumn</strong> ()
+<br></td><td align="right"><h3><strong>nextColumn</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Goto next column.
+   </p>
+<A NAME="previousColumn"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>previousColumn</strong> ()
+<br></td><td align="right"><h3><strong>previousColumn</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Goto previous column.
+   </p>
+<A NAME="lastColumn"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>lastColumn</strong> ()
+<br></td><td align="right"><h3><strong>lastColumn</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Goto last column.
+   </p>
+<A NAME="changePosition"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changePosition</strong> (int row,int cols)
+<br></td><td align="right"><h3><strong>changePosition</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Change position in whatever it is your displaying.
+   </p>
+<A NAME="setText"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setText</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Change value of editor.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toMultiLineEdit.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toMultiLineEdit.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toMultiLineEdit.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+<TITLE>class toMultiLineEdit</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toMultiLineEdit</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ Container to the correct multi line editor for Qt 2 or 3. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tomarkedtext_2_h.html">tomarkedtext.2.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qmultilineedit.html">QMultiLineEdit</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toHighlightedText.html">toHighlightedText</A>, <A HREF="toMarkedText.html">toMarkedText</A>, <A HREF="toResultField.html">toResultField</A></TD></TR>
+<TR><TH><A HREF="full-list-toMultiLineEdit.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toMultiLineEdit</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ Container to the correct multi line editor for Qt 2 or 3.
+ </p>
+<A NAME="toMultiLineEdit"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toMultiLineEdit</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name)
+<br></td><td align="right"><h3><strong>toMultiLineEdit</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toNoBlockQuery.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toNoBlockQuery.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toNoBlockQuery.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,162 @@
+<HTML>
+<HEAD>
+<TITLE>class toNoBlockQuery</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toNoBlockQuery</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tonoblockquery_h.html">tonoblockquery.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toNoBlockQuery.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref21">toNoBlockQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,
+		 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+		 const <A HREF="#toQList">toQList</A> &param,
+		 <A HREF="toResultStats.html">toResultStats</A> *statistics=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref22">toNoBlockQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,
+		 <A HREF="toQuery.html#queryMode">toQuery::queryMode</A> mode,
+		 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+		 const <A HREF="#toQList">toQList</A> &param,
+		 <A HREF="toResultStats.html">toResultStats</A> *statistics=NULL) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref23">~toNoBlockQuery</A></b> () 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref24">poll</A></b> (void) 
+</LI>
+<LI><A HREF="#toQDescList">toQDescList</A> &&nbsp;<b><A HREF="#ref25">describe</A></b> (void) 
+</LI>
+<LI><A HREF="toQValue.html">toQValue</A> &nbsp;<b><A HREF="#ref26">readValue</A></b> (void) 
+</LI>
+<LI><A HREF="toQValue.html">toQValue</A> &nbsp;<b><A HREF="#ref27">readValueNull</A></b> (void) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref28">rowsProcessed</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref29">eof</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+</p>
+<p> TOra - An Oracle Toolkit for DBA's and developers
+ Copyright (C) 2003-2005 Quest Software, Inc
+ Portions Copyright (C) 2005 Other Contributors
+</p>
+<p> This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation;  only version 2 of
+ the License is valid for this program.
+</p>
+<p> This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+</p>
+<p> You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+</p>
+<p>      As a special exception, you have permission to link this program
+      with the Oracle Client libraries and distribute executables, as long
+      as you follow the requirements of the GNU GPL in regard to all of the
+      software in the executable aside from Oracle client libraries.
+</p>
+<p>      Specifically you are not permitted to link this program with the
+      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+      And you are not permitted to distribute binaries compiled against
+      these libraries without written consent from Quest Software, Inc.
+      Observe that this does not disallow linking to the Qt Free Edition.
+</p>
+<p>      You may link this product with any GPL'd Qt library such as Qt/Free
+</p>
+<p> All trademarks belong to their respective owners.
+</p>
+<p>***</p>
+<A NAME="toNoBlockQuery"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toNoBlockQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,
+		 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+		 const <A HREF="#toQList">toQList</A> &param,
+		 <A HREF="toResultStats.html">toResultStats</A> *statistics=NULL)
+<br></td><td align="right"><h3><strong>toNoBlockQuery</strong></h3></td></tr></table><p></p><p> Create a new query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to run on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>param</i></TD><TD align="left" valign="top">Parameters to pass to query.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>statistics</i></TD><TD align="left" valign="top">Optional statistics widget to update with values from query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toNoBlockQuery"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toNoBlockQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,
+		 <A HREF="toQuery.html#queryMode">toQuery::queryMode</A> mode,
+		 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+		 const <A HREF="#toQList">toQList</A> &param,
+		 <A HREF="toResultStats.html">toResultStats</A> *statistics=NULL)
+<br></td><td align="right"><h3><strong>toNoBlockQuery</strong></h3></td></tr></table><p></p><p> Create a new query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to run on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>mode</i></TD><TD align="left" valign="top">Query mode to execute query in.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to execute.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>param</i></TD><TD align="left" valign="top">Parameters to pass to query.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>statistics</i></TD><TD align="left" valign="top">Optional statistics widget to update with values from query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toNoBlockQuery"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toNoBlockQuery</strong> ()
+<br></td><td align="right"><h3><strong>~toNoBlockQuery</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="poll"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>poll</strong> (void)
+<br></td><td align="right"><h3><strong>poll</strong></h3></td></tr></table><p></p><p> Poll if any result is available.
+</p>
+<p><b>Returns</b>: True if at least one row is available.
+   </p>
+<A NAME="describe"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="#toQDescList">toQDescList</A> &&nbsp;<strong>describe</strong> (void)
+<br></td><td align="right"><h3><strong>describe</strong></h3></td></tr></table><p></p><p> Get description of columns.
+</p>
+<p><b>Returns</b>: Description of columns list. Don't modify this list.
+   </p>
+<A NAME="readValue"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQValue.html">toQValue</A> &nbsp;<strong>readValue</strong> (void)
+<br></td><td align="right"><h3><strong>readValue</strong></h3></td></tr></table><p></p><p> Read the next value from the query.
+</p>
+<p><b>Returns</b>: The next available value.
+   </p>
+<A NAME="readValueNull"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQValue.html">toQValue</A> &nbsp;<strong>readValueNull</strong> (void)
+<br></td><td align="right"><h3><strong>readValueNull</strong></h3></td></tr></table><p></p><p> Read the next value from the query. Don't send NULL as string.
+</p>
+<p><b>Returns</b>: The next available value.
+   </p>
+<A NAME="rowsProcessed"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>rowsProcessed</strong> (void)
+<br></td><td align="right"><h3><strong>rowsProcessed</strong></h3></td></tr></table><p></p><p> Get the number of rows processed.
+</p>
+<p><b>Returns</b>: Number of rows processed.
+   </p>
+<A NAME="eof"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>eof</strong> (void)
+<br></td><td align="right"><h3><strong>eof</strong></h3></td></tr></table><p></p><p> Check if at end of query.
+</p>
+<p><b>Returns</b>: True if query is done.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toNoBlockQuery__queryTask.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toNoBlockQuery__queryTask.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toNoBlockQuery__queryTask.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,45 @@
+<HTML>
+<HEAD>
+<TITLE>class queryTask</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class queryTask</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A task to implement running the query. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toNoBlockQuery.html">toNoBlockQuery</A>::queryTask</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tonoblockquery_h.html">tonoblockquery.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><i><A HREF="toTask.html">toTask</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toNoBlockQuery__queryTask.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">queryTask</A></b> (<A HREF="toNoBlockQuery.html">toNoBlockQuery</A> &parent) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref3">run</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A task to implement running the query.
+   </p>
+<A NAME="queryTask"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>queryTask</strong> (<A HREF="toNoBlockQuery.html">toNoBlockQuery</A> &parent)
+<br></td><td align="right"><h3><strong>queryTask</strong></h3></td></tr></table><p></p><A NAME="run"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>run</strong> (void)
+<br></td><td align="right"><h3><strong>run</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>Reimplemented from <A HREF="toTask.html#run">toTask</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toParamGet.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toParamGet.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toParamGet.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+<HTML>
+<HEAD>
+<TITLE>class toParamGet</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toParamGet</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A help class to parse SQL for input/output bindings and if available also pop up a 
+ dialog and ask for values. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toparamget_h.html">toparamget.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qdialog.html">QDialog</A> <small>(qt)</small> <small>[public ]</small>, <A HREF="toHelpContext.html">toHelpContext</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toParamGet.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Static Methods</h4><ul><LI>static  <A HREF="#toQList">toQList</A> &nbsp;<b><A HREF="#ref8">getParam</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,bool interactive=true) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref9">setDefault</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &val) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref7">resizeEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qresizeevent.html">QResizeEvent</A> *e) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A help class to parse SQL for input/output bindings and if available also pop up a 
+ dialog and ask for values. Also maintains an internal cache of old values.
+ </p>
+<A NAME="resizeEvent"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>resizeEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qresizeevent.html">QResizeEvent</A> *e)
+<br></td><td align="right"><h3><strong>resizeEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="getParam"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="#toQList">toQList</A> &nbsp;<strong>getParam</strong> (<A HREF="toConnection.html">toConnection</A> &conn,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,bool interactive=true)
+<br></td><td align="right"><h3><strong>getParam</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get parameters for specified SQL string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to get binds for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget if dialog is needed.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">SQL to parse for bindings. Observe that this string can be changed to further
+            declare the binds.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>interactive</i></TD><TD align="left" valign="top">If not interactive simply rewrite the query and pass on the defaults.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Returns a list of values to feed into the query.
+   </p>
+<A NAME="setDefault"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setDefault</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &val)
+<br></td><td align="right"><h3><strong>setDefault</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Specify a default value for the cache. This can not overwrite a manually
+ specified value by the user.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to get binds for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of the bind variable.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Value of the bind variable.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toParamGetButton.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toParamGetButton.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toParamGetButton.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,41 @@
+<HTML>
+<HEAD>
+<TITLE>class toParamGetButton</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toParamGetButton</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toparamget_h.html">toparamget.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qpushbutton.html">QPushButton</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toParamGetButton.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toParamGetButton</A></b> (int row,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=0,const char *name=0) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref4">clicked</A></b> (int) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><A NAME="toParamGetButton"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toParamGetButton</strong> (int row,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=0,const char *name=0)
+<br></td><td align="right"><h3><strong>toParamGetButton</strong></h3></td></tr></table><p></p><A NAME="clicked"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>clicked</strong> (int)
+<br></td><td align="right"><h3><strong>clicked</strong></h3></td></tr></table><p> <small>[signal]</small></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toPieChart.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toPieChart.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toPieChart.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,211 @@
+<HTML>
+<HEAD>
+<TITLE>class toPieChart</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toPieChart</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A widget that displays a piechart. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="topiechart_h.html">topiechart.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultPie.html">toResultPie</A></TD></TR>
+<TR><TH><A HREF="full-list-toPieChart.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref13">toPieChart</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref14">~toPieChart</A></b> () 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref15">toPieChart</A></b> (<A HREF="toPieChart.html">toPieChart</A> *pie,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref16">setPostfix</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &post) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref17">postfix</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref18">setTitle</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title=QString::null) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref19">title</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref20">setDisplayPercent</A></b> (bool pct) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref21">displayPercent</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref22">showLegend</A></b> (bool on) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref23">legend</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref24">setValues</A></b> (std::list<double> &values,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &labels) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref25">addValue</A></b> (double value,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &label) 
+</LI>
+<LI>std::list<double> &&nbsp;<b><A HREF="#ref26">values</A></b> (void) 
+</LI>
+<LI>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<b><A HREF="#ref27">labels</A></b> (void) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref28">findLabel</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A> p) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &nbsp;<b><A HREF="#ref29">chartRectangle</A></b> () 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref31">editPrint</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref32">openCopy</A></b> (void) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref30">newValues</A></b> (std::list<double> &values,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &labels) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref11">mouseDoubleClickEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref12">mousePressEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref33">paintChart</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> rect) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref34">paintEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpaintevent.html">QPaintEvent</A> *e) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A widget that displays a piechart.
+ </p>
+<A NAME="mouseDoubleClickEvent"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>mouseDoubleClickEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e)
+<br></td><td align="right"><h3><strong>mouseDoubleClickEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qwidget.html#mouseDoubleClickEvent">QWidget</A>.</p>
+<A NAME="mousePressEvent"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>mousePressEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qmouseevent.html">QMouseEvent</A> *e)
+<br></td><td align="right"><h3><strong>mousePressEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="toPieChart"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toPieChart</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toPieChart</strong></h3></td></tr></table><p></p><p> Create a new piechart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toPieChart"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toPieChart</strong> ()
+<br></td><td align="right"><h3><strong>~toPieChart</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="toPieChart"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toPieChart</strong> (<A HREF="toPieChart.html">toPieChart</A> *pie,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=NULL,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toPieChart</strong></h3></td></tr></table><p></p><p> Create a copy of a piechart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>pie</i></TD><TD align="left" valign="top">Pie chart to copy.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setPostfix"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setPostfix</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &post)
+<br></td><td align="right"><h3><strong>setPostfix</strong></h3></td></tr></table><p></p><p> Set the postfix text to append the current values when they are displayed in the
+ pie.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>post</i></TD><TD align="left" valign="top">Postfix string, no space will be added after the value before the string
+             so if you want the space you need to specify it first in this string.
+   </TD></TR>
+</TABLE></P>
+<A NAME="postfix"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>postfix</strong> (void)
+<br></td><td align="right"><h3><strong>postfix</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get the postfix string.
+</p>
+<p><b>Returns</b>: Current postfix string.
+   </p>
+<A NAME="setTitle"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setTitle</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title=QString::null)
+<br></td><td align="right"><h3><strong>setTitle</strong></h3></td></tr></table><p></p><p> Set title of the chart. Set to empty string to not display title.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>title</i></TD><TD align="left" valign="top">Title of chart.
+   </TD></TR>
+</TABLE></P>
+<A NAME="title"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>title</strong> (void)
+<br></td><td align="right"><h3><strong>title</strong></h3></td></tr></table><p></p><p> Get title of chart.
+</p>
+<p><b>Returns</b>: Title of chart.
+   </p>
+<A NAME="setDisplayPercent"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setDisplayPercent</strong> (bool pct)
+<br></td><td align="right"><h3><strong>setDisplayPercent</strong></h3></td></tr></table><p></p><p> Display piecharts in percent instead of actual values
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>pct</i></TD><TD align="left" valign="top">Wether or not to display percent only.
+   </TD></TR>
+</TABLE></P>
+<A NAME="displayPercent"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>displayPercent</strong> (void)
+<br></td><td align="right"><h3><strong>displayPercent</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if only percent is displayed
+</p>
+<p><b>Returns</b>: True if only percent is displayed.
+   </p>
+<A NAME="showLegend"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>showLegend</strong> (bool on)
+<br></td><td align="right"><h3><strong>showLegend</strong></h3></td></tr></table><p></p><p> Specify if legend should be displayed to the right of the graph, default is on.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>on</i></TD><TD align="left" valign="top">Whether to display graph or not.
+   </TD></TR>
+</TABLE></P>
+<A NAME="legend"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>legend</strong> (void)
+<br></td><td align="right"><h3><strong>legend</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if legend is displayed or not.
+</p>
+<p><b>Returns</b>: If legend is displayed or not.
+   </p>
+<A NAME="setValues"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setValues</strong> (std::list<double> &values,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &labels)
+<br></td><td align="right"><h3><strong>setValues</strong></h3></td></tr></table><p></p><p> Set value list of piechart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>values</i></TD><TD align="left" valign="top">List of values to display.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>labels</i></TD><TD align="left" valign="top">List of labels, if label is empty it will not appear in legend.
+   </TD></TR>
+</TABLE></P>
+<A NAME="addValue"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addValue</strong> (double value,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &label)
+<br></td><td align="right"><h3><strong>addValue</strong></h3></td></tr></table><p></p><p> Add a value to the piechart.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>value</i></TD><TD align="left" valign="top">New value to add.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>label</i></TD><TD align="left" valign="top">Label of this new value.
+   </TD></TR>
+</TABLE></P>
+<A NAME="values"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<double> &&nbsp;<strong>values</strong> (void)
+<br></td><td align="right"><h3><strong>values</strong></h3></td></tr></table><p></p><p> Get list of values.
+</p>
+<p><b>Returns</b>: Values in piechart.
+   </p>
+<A NAME="labels"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &&nbsp;<strong>labels</strong> (void)
+<br></td><td align="right"><h3><strong>labels</strong></h3></td></tr></table><p></p><p> Get labels of piechart.
+</p>
+<p><b>Returns</b>: List of labels.
+   </p>
+<A NAME="findLabel"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>findLabel</strong> (<A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A> p)
+<br></td><td align="right"><h3><strong>findLabel</strong></h3></td></tr></table><p></p><p> Find the label if any of a point in the chart.
+   </p>
+<A NAME="chartRectangle"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> &nbsp;<strong>chartRectangle</strong> ()
+<br></td><td align="right"><h3><strong>chartRectangle</strong></h3></td></tr></table><p></p><p> Get rectangle that the chart is contained in.
+   </p>
+<A NAME="newValues"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>newValues</strong> (std::list<double> &values,std::list<<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &labels)
+<br></td><td align="right"><h3><strong>newValues</strong></h3></td></tr></table><p> <small>[signal]</small></p><A NAME="editPrint"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>editPrint</strong> (void)
+<br></td><td align="right"><h3><strong>editPrint</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Print the chart
+   </p>
+<A NAME="openCopy"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>openCopy</strong> (void)
+<br></td><td align="right"><h3><strong>openCopy</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Open in new window
+   </p>
+<A NAME="paintChart"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintChart</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *p,<A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A> rect)
+<br></td><td align="right"><h3><strong>paintChart</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Paint chart in a given rectangle.
+   </p>
+<A NAME="paintEvent"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qpaintevent.html">QPaintEvent</A> *e)
+<br></td><td align="right"><h3><strong>paintEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toPieConnector.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toPieConnector.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toPieConnector.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,53 @@
+<HTML>
+<HEAD>
+<TITLE>class toPieConnector</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toPieConnector</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class can be used to make a line chart (Or bar chart) follow the values in a piechart. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="topiechart_h.html">topiechart.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toPieConnector.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref6">toPieConnector</A></b> (<A HREF="toPieChart.html">toPieChart</A> *pieChart,<A HREF="toLineChart.html">toLineChart</A> *lineChart) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref7">setFlow</A></b> (bool flow) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref8">flow</A></b> (void)  const
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class can be used to make a line chart (Or bar chart) follow the values in a piechart.
+ After it is constructed it will destroy itself if any of the two involved classes are deleted.
+ The only available option is wether to use flow (Differences since last time) or not when
+ updating the linechart. Requires that each valueset has a unique label to work.
+ </p>
+<A NAME="toPieConnector"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toPieConnector</strong> (<A HREF="toPieChart.html">toPieChart</A> *pieChart,<A HREF="toLineChart.html">toLineChart</A> *lineChart)
+<br></td><td align="right"><h3><strong>toPieConnector</strong></h3></td></tr></table><p></p><A NAME="setFlow"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setFlow</strong> (bool flow)
+<br></td><td align="right"><h3><strong>setFlow</strong></h3></td></tr></table><p></p><p> Set flow status.
+   </p>
+<A NAME="flow"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>flow</strong> (void)
+<br></td><td align="right"><h3><strong>flow</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check flow status.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toPopupButton.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toPopupButton.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toPopupButton.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,51 @@
+<HTML>
+<HEAD>
+<TITLE>class toPopupButton</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toPopupButton</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Popup toolbutton that works like I think they should under Qt 3. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="utils_h.html">utils.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qtoolbutton.html">QToolButton</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toChangeConnection.html">toChangeConnection</A></TD></TR>
+<TR><TH><A HREF="full-list-toPopupButton.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toPopupButton</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qiconset.html">QIconSet</A> &iconSet,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &textLabel,
+                const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &grouptext,<A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *parent,const char *name=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref2">toPopupButton</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=0) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Popup toolbutton that works like I think they should under Qt 3.0 as well.
+ this means they will pop up a tool menu when you click on the button as well.
+ </p>
+<A NAME="toPopupButton"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toPopupButton</strong> (const <A HREF="/usr/lib/qt3/doc/html/qiconset.html">QIconSet</A> &iconSet,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &textLabel,
+                const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &grouptext,<A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *parent,const char *name=0)
+<br></td><td align="right"><h3><strong>toPopupButton</strong></h3></td></tr></table><p></p><p> Create button, same constructor as toolbutton except no slots
+   </p>
+<A NAME="toPopupButton"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toPopupButton</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=0)
+<br></td><td align="right"><h3><strong>toPopupButton</strong></h3></td></tr></table><p></p><p> Create button somewhere else than in a toolbar.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toQValue.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toQValue.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toQValue.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,187 @@
+<HTML>
+<HEAD>
+<TITLE>class toQValue</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toQValue</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This function is used to represent values that are passed to and from queries
+  <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toqvalue_h.html">toqvalue.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toQValue.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">toQValue</A></b> (void) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref4">toQValue</A></b> (int i) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref5">toQValue</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref6">toQValue</A></b> (double d) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref7">~toQValue</A></b> () 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref8">toQValue</A></b> (const <A HREF="toQValue.html">toQValue</A> &copy) 
+</LI>
+<LI>const <A HREF="toQValue.html">toQValue</A> &&nbsp;<b><A HREF="#ref9">operator = </A></b> (const <A HREF="toQValue.html">toQValue</A> &copy) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref10">operator == </A></b> (const <A HREF="toQValue.html">toQValue</A> &)  const
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref11">isInt</A></b> (void)  const
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref12">isDouble</A></b> (void)  const
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref13">isString</A></b> (void)  const
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref14">isNull</A></b> (void)  const
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref15">isBinary</A></b> (void)  const
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<b><A HREF="#ref16">utf8</A></b> (void)  const
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref17">toInt</A></b> (void)  const
+</LI>
+<LI>double &nbsp;<b><A HREF="#ref18">toDouble</A></b> (void)  const
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qbytearray.html">QByteArray</A> &&nbsp;<b><A HREF="#ref19">toByteArray</A></b> (void)  const
+</LI>
+<LI>operator &nbsp;<b><A HREF="#ref20">QString</A></b> ()  const
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref21">toString</A></b> ()  const
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  void &nbsp;<b><A HREF="#ref22">setNumberFormat</A></b> (int format,int decimals) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref23">formatNumber</A></b> (double number) 
+</LI>
+<LI>static  int &nbsp;<b><A HREF="#ref24">numberFormat</A></b> (void) 
+</LI>
+<LI>static  int &nbsp;<b><A HREF="#ref25">numberDecimals</A></b> (void) 
+</LI>
+<LI>static  <A HREF="toQValue.html">toQValue</A> &nbsp;<b><A HREF="#ref26">createBinary</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qbytearray.html">QByteArray</A> &arr) 
+</LI>
+<LI>static  <A HREF="toQValue.html">toQValue</A> &nbsp;<b><A HREF="#ref27">createFromHex</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &hex) 
+</LI>
+<LI>static  <A HREF="toQValue.html">toQValue</A> &nbsp;<b><A HREF="#ref28">createFromHex</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &hex) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This function is used to represent values that are passed to and from queries
+ </p>
+<A NAME="toQValue"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQValue</strong> (void)
+<br></td><td align="right"><h3><strong>toQValue</strong></h3></td></tr></table><p></p><p> Create null value.
+   </p>
+<A NAME="toQValue"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQValue</strong> (int i)
+<br></td><td align="right"><h3><strong>toQValue</strong></h3></td></tr></table><p></p><p> Create integer value.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>i</i></TD><TD align="left" valign="top">Value.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toQValue"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQValue</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>toQValue</strong></h3></td></tr></table><p></p><p> Create string value.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Value.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toQValue"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQValue</strong> (double d)
+<br></td><td align="right"><h3><strong>toQValue</strong></h3></td></tr></table><p></p><p> Create double value.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>d</i></TD><TD align="left" valign="top">Value.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toQValue"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toQValue</strong> ()
+<br></td><td align="right"><h3><strong>~toQValue</strong></h3></td></tr></table><p></p><p> Destruct query.
+   </p>
+<A NAME="toQValue"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQValue</strong> (const <A HREF="toQValue.html">toQValue</A> &copy)
+<br></td><td align="right"><h3><strong>toQValue</strong></h3></td></tr></table><p></p><p> Create a copy of a value.
+   </p>
+<A NAME="operator%20=%20"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="toQValue.html">toQValue</A> &&nbsp;<strong>operator = </strong> (const <A HREF="toQValue.html">toQValue</A> &copy)
+<br></td><td align="right"><h3><strong>operator = </strong></h3></td></tr></table><p></p><p> Assign this value from another value.
+   </p>
+<A NAME="operator%20==%20"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>operator == </strong> (const <A HREF="toQValue.html">toQValue</A> &)
+<br></td><td align="right"><h3><strong>operator == </strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check a value for equality. Requires same type and same value. NULL is equal to other NULL values.
+   </p>
+<A NAME="isInt"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>isInt</strong> (void)
+<br></td><td align="right"><h3><strong>isInt</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if this is an int value.
+   </p>
+<A NAME="isDouble"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>isDouble</strong> (void)
+<br></td><td align="right"><h3><strong>isDouble</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if this is a double value.
+   </p>
+<A NAME="isString"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>isString</strong> (void)
+<br></td><td align="right"><h3><strong>isString</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if this is a string value.
+   </p>
+<A NAME="isNull"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>isNull</strong> (void)
+<br></td><td align="right"><h3><strong>isNull</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if this value is null.
+   </p>
+<A NAME="isBinary"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>isBinary</strong> (void)
+<br></td><td align="right"><h3><strong>isBinary</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Check if this value is binary.
+   </p>
+<A NAME="utf8"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<strong>utf8</strong> (void)
+<br></td><td align="right"><h3><strong>utf8</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get utf8 format of this value.
+   </p>
+<A NAME="toInt"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>toInt</strong> (void)
+<br></td><td align="right"><h3><strong>toInt</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get integer representation of this value.
+   </p>
+<A NAME="toDouble"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>double &nbsp;<strong>toDouble</strong> (void)
+<br></td><td align="right"><h3><strong>toDouble</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get double representation of this value.
+   </p>
+<A NAME="toByteArray"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qbytearray.html">QByteArray</A> &&nbsp;<strong>toByteArray</strong> (void)
+<br></td><td align="right"><h3><strong>toByteArray</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get binary representation of value. Can only be called when the data is actually binary.
+   </p>
+<A NAME="QString"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>operator &nbsp;<strong>QString</strong> ()
+<br></td><td align="right"><h3><strong>QString</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Convert value to a string. If binary convert to hex.
+   </p>
+<A NAME="toString"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>toString</strong> ()
+<br></td><td align="right"><h3><strong>toString</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Convert value to a string. If binary convert to hex.
+   </p>
+<A NAME="setNumberFormat"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setNumberFormat</strong> (int format,int decimals)
+<br></td><td align="right"><h3><strong>setNumberFormat</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Set numberformat.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>format</i></TD><TD align="left" valign="top">0 = Default, 1 = Scientific, 2 = Fixed Decimals
+</TD></TR>
+<TR><TD align="left" valign="top"><i>decimals</i></TD><TD align="left" valign="top">Number on decimals for fixed decimals.
+   </TD></TR>
+</TABLE></P>
+<A NAME="formatNumber"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>formatNumber</strong> (double number)
+<br></td><td align="right"><h3><strong>formatNumber</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Format a number according to current settings.
+   </p>
+<A NAME="numberFormat"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>numberFormat</strong> (void)
+<br></td><td align="right"><h3><strong>numberFormat</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get number format.
+</p>
+<p><b>Returns</b>: Format 0 = Default, 1 = Scientific, 2 = Fixed Decimals
+   </p>
+<A NAME="numberDecimals"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>numberDecimals</strong> (void)
+<br></td><td align="right"><h3><strong>numberDecimals</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get decimals if fixed decimals.
+   </p>
+<A NAME="createBinary"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toQValue.html">toQValue</A> &nbsp;<strong>createBinary</strong> (const <A HREF="/usr/lib/qt3/doc/html/qbytearray.html">QByteArray</A> &arr)
+<br></td><td align="right"><h3><strong>createBinary</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Create a binary value
+   </p>
+<A NAME="createFromHex"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toQValue.html">toQValue</A> &nbsp;<strong>createFromHex</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &hex)
+<br></td><td align="right"><h3><strong>createFromHex</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Create a binary value from it's hex representation.
+   </p>
+<A NAME="createFromHex"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toQValue.html">toQValue</A> &nbsp;<strong>createFromHex</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &hex)
+<br></td><td align="right"><h3><strong>createFromHex</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Create a binary value from it's hex representation.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toQValue__queryValue.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toQValue__queryValue.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toQValue__queryValue.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+<HTML>
+<HEAD>
+<TITLE>union queryValue</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>union queryValue</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toQValue.html">toQValue</A>::queryValue</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toqvalue_h.html">toqvalue.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toQValue__queryValue.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Members</h4><ul><LI>int <b><A HREF="#ref1">Int</A></b></LI>
+<LI>double <b><A HREF="#ref2">Double</A></b></LI>
+<LI>QString *<b><A HREF="#ref3">String</A></b></LI>
+<LI>QByteArray *<b><A HREF="#ref4">Array</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><A NAME="Int"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Int</strong>
+</td><td align="right"><h3><strong>Int</strong></h3></td></tr></table><p></p><A NAME="Double"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>double  <strong>Double</strong>
+</td><td align="right"><h3><strong>Double</strong></h3></td></tr></table><p></p><A NAME="String"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> * <strong>String</strong>
+</td><td align="right"><h3><strong>String</strong></h3></td></tr></table><p></p><A NAME="Array"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qbytearray.html">QByteArray</A> * <strong>Array</strong>
+</td><td align="right"><h3><strong>Array</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toQuery.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toQuery.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toQuery.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,438 @@
+<HTML>
+<HEAD>
+<TITLE>class toQuery</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toQuery</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class is used to perform a query on a database connection. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toQuery.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Types</h4><ul><LI>enum <A HREF="#ref1">queryMode</A> {    Normal,
+    /** Run the query normally on the main backgrround connection of the
+}
+</LI>
+<LI>struct <A HREF="toQuery__queryDescribe.html">queryDescribe</A>
+</LI>
+<LI>class <i><A HREF="toQuery__queryImpl.html">queryImpl</A></i>
+</LI>
+</ul><h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref11">toQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="toSQL.html">toSQL</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref12">toQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref13">toQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="toSQL.html">toSQL</A> &sql,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref14">toQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref15">toQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,queryMode mode,const <A HREF="toSQL.html">toSQL</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref16">toQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,queryMode mode,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref17">toQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,queryMode mode=Normal) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref18">~toQuery</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref19">execute</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref20">execute</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params) 
+</LI>
+<LI><A HREF="toConnection.html">toConnection</A> &&nbsp;<b><A HREF="#ref21">connection</A></b> (void) 
+</LI>
+<LI><A HREF="toConnectionSub.html">toConnectionSub</A> *&nbsp;<b><A HREF="#ref22">connectionSub</A></b> (void) 
+</LI>
+<LI>std::list<<A HREF="toQValue.html">toQValue</A>> &&nbsp;<b><A HREF="#ref23">params</A></b> (void) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<b><A HREF="#ref24">sql</A></b> (void) 
+</LI>
+<LI><A HREF="toQuery.html#queryMode">toQuery::queryMode</A> &nbsp;<b><A HREF="#ref25">mode</A></b> (void)  const
+</LI>
+<LI><A HREF="toQValue.html">toQValue</A> &nbsp;<b><A HREF="#ref26">readValue</A></b> (void) 
+</LI>
+<LI><A HREF="toQValue.html">toQValue</A> &nbsp;<b><A HREF="#ref27">readValueNull</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref28">eof</A></b> (void) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref29">rowsProcessed</A></b> (void) 
+</LI>
+<LI>std::list<queryDescribe> &nbsp;<b><A HREF="#ref30">describe</A></b> (void) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref31">columns</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref40">cancel</A></b> (void) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<b><A HREF="#ref32">readQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,
+				       const <A HREF="toSQL.html">toSQL</A> &sql,
+				       std::list<<A HREF="toQValue.html">toQValue</A>> &params) 
+</LI>
+<LI>static  std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<b><A HREF="#ref33">readQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+				       std::list<<A HREF="toQValue.html">toQValue</A>> &params) 
+</LI>
+<LI>static  std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<b><A HREF="#ref34">readQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="toSQL.html">toSQL</A> &sql,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+<LI>static  std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<b><A HREF="#ref35">readQuery</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+<LI>static  std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<b><A HREF="#ref36">readQueryNull</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,
+					   const <A HREF="toSQL.html">toSQL</A> &sql,
+					   std::list<<A HREF="toQValue.html">toQValue</A>> &params) 
+</LI>
+<LI>static  std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<b><A HREF="#ref37">readQueryNull</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+					   std::list<<A HREF="toQValue.html">toQValue</A>> &params) 
+</LI>
+<LI>static  std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<b><A HREF="#ref38">readQueryNull</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="toSQL.html">toSQL</A> &sql,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+<LI>static  std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<b><A HREF="#ref39">readQueryNull</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class is used to perform a query on a database connection.
+ </p>
+<A NAME="queryMode"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>enum <strong>queryMode</strong> {    Normal,
+    /** Run the query normally on the main backgrround connection of the
+}
+</td><td align="right"><h3><strong>queryMode</strong></h3></td></tr></table><p></p><p> Run the query normally on the main connection of the <A HREF="toConnection.html">toConnection</A> object.
+     </p>
+<A NAME="toQuery__queryDescribe.html"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>queryDescribe</strong> <small>(struct)</small></td><td align="right"><h3><strong>queryDescribe</strong></h3></td></tr></table><p></p><p> This structure is used to describe the resultset of a query.
+   </p>
+<A NAME="toQuery__queryImpl.html"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>queryImpl</strong> <small>(class)</small></td><td align="right"><h3><strong>queryImpl</strong></h3></td></tr></table><p></p><p> Abstract parent of implementations of a query for a database provider
+ (See <A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A> and <A HREF="toConnectionProvider.html">toConnectionProvider</A>)
+   </p>
+<A NAME="toQuery"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="toSQL.html">toSQL</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params)
+<br></td><td align="right"><h3><strong>toQuery</strong></h3></td></tr></table><p></p><p> Create a normal query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to create query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toQuery"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params)
+<br></td><td align="right"><h3><strong>toQuery</strong></h3></td></tr></table><p></p><p> Create a normal query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to create query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toQuery"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="toSQL.html">toSQL</A> &sql,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>toQuery</strong></h3></td></tr></table><p></p><p> Create a normal query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to create query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">Arguments to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toQuery"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+	  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>toQuery</strong></h3></td></tr></table><p></p><p> Create a normal query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to create query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">Arguments to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toQuery"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,queryMode mode,const <A HREF="toSQL.html">toSQL</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params)
+<br></td><td align="right"><h3><strong>toQuery</strong></h3></td></tr></table><p></p><p> Create a query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to create query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>mode</i></TD><TD align="left" valign="top">Mode to run query in.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Arguments to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toQuery"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,queryMode mode,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params)
+<br></td><td align="right"><h3><strong>toQuery</strong></h3></td></tr></table><p></p><p> Create a query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to create query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>mode</i></TD><TD align="left" valign="top">Mode to run query in.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Arguments to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toQuery"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,queryMode mode=Normal)
+<br></td><td align="right"><h3><strong>toQuery</strong></h3></td></tr></table><p></p><p> Create a query. Don't runn any SQL using it yet. Observe though that the <A HREF="toConnectionSub.html">toConnectionSub</A> object is assigned here so you know that all queries run using this
+ query object will run on the same actual connection to the database (Unless mode is All off
+ course).
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to create query for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>mode</i></TD><TD align="left" valign="top">Mode to execute queries in.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toQuery"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toQuery</strong> ()
+<br></td><td align="right"><h3><strong>~toQuery</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Destroy query.
+   </p>
+<A NAME="execute"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>execute</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params)
+<br></td><td align="right"><h3><strong>execute</strong></h3></td></tr></table><p></p><p> Execute an SQL statement using this query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="execute"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>execute</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const std::list<<A HREF="toQValue.html">toQValue</A>> &params)
+<br></td><td align="right"><h3><strong>execute</strong></h3></td></tr></table><p></p><p> Execute an SQL statement using this query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+   </TD></TR>
+</TABLE></P>
+<A NAME="connection"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toConnection.html">toConnection</A> &&nbsp;<strong>connection</strong> (void)
+<br></td><td align="right"><h3><strong>connection</strong></h3></td></tr></table><p></p><p> Connection object of this object.
+   </p>
+<A NAME="connectionSub"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toConnectionSub.html">toConnectionSub</A> *&nbsp;<strong>connectionSub</strong> (void)
+<br></td><td align="right"><h3><strong>connectionSub</strong></h3></td></tr></table><p></p><p> Actual database connection that this query is currently using.
+   </p>
+<A NAME="params"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<<A HREF="toQValue.html">toQValue</A>> &&nbsp;<strong>params</strong> (void)
+<br></td><td align="right"><h3><strong>params</strong></h3></td></tr></table><p></p><p> Parameters of the current query.
+   </p>
+<A NAME="sql"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<strong>sql</strong> (void)
+<br></td><td align="right"><h3><strong>sql</strong></h3></td></tr></table><p></p><p> SQL to run. Observe that this string is in UTF8 format.
+   </p>
+<A NAME="mode"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQuery.html#queryMode">toQuery::queryMode</A> &nbsp;<strong>mode</strong> (void)
+<br></td><td align="right"><h3><strong>mode</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get the mode this query is executed in.
+   </p>
+<A NAME="readValue"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQValue.html">toQValue</A> &nbsp;<strong>readValue</strong> (void)
+<br></td><td align="right"><h3><strong>readValue</strong></h3></td></tr></table><p></p><p> Read a value from the query. Convert the value NULL to the string {null}.
+</p>
+<p><b>Returns</b>: Value read.
+   </p>
+<A NAME="readValueNull"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQValue.html">toQValue</A> &nbsp;<strong>readValueNull</strong> (void)
+<br></td><td align="right"><h3><strong>readValueNull</strong></h3></td></tr></table><p></p><p> Read a value from the query. Nulls are returned as empty <A HREF="toQValue.html">toQValue</A>.
+</p>
+<p><b>Returns</b>: Value read.
+   </p>
+<A NAME="eof"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>eof</strong> (void)
+<br></td><td align="right"><h3><strong>eof</strong></h3></td></tr></table><p></p><p> Check if end of query is reached.
+</p>
+<p><b>Returns</b>: True if end of query is reached.
+   </p>
+<A NAME="rowsProcessed"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>rowsProcessed</strong> (void)
+<br></td><td align="right"><h3><strong>rowsProcessed</strong></h3></td></tr></table><p></p><p> Get the number of rows processed by the query.
+   </p>
+<A NAME="describe"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<queryDescribe> &nbsp;<strong>describe</strong> (void)
+<br></td><td align="right"><h3><strong>describe</strong></h3></td></tr></table><p></p><p> Get a list of descriptions for the columns. This function is relatively slow.
+   </p>
+<A NAME="columns"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>columns</strong> (void)
+<br></td><td align="right"><h3><strong>columns</strong></h3></td></tr></table><p></p><p> Get the number of columns in the resultset of the query.
+   </p>
+<A NAME="readQuery"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<strong>readQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,
+				       const <A HREF="toSQL.html">toSQL</A> &sql,
+				       std::list<<A HREF="toQValue.html">toQValue</A>> &params)
+<br></td><td align="right"><h3><strong>readQuery</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Execute a query and return all the values returned by it.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to run query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of toQValues:s read from the query.
+   </p>
+<A NAME="readQuery"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<strong>readQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+				       std::list<<A HREF="toQValue.html">toQValue</A>> &params)
+<br></td><td align="right"><h3><strong>readQuery</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Execute a query and return all the values returned by it.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to run query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of toQValues:s read from the query.
+   </p>
+<A NAME="readQuery"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<strong>readQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="toSQL.html">toSQL</A> &sql,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>readQuery</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Execute a query and return all the values returned by it.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to run query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">Parameters to pass to query.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of toQValues:s read from the query.
+   </p>
+<A NAME="readQuery"></A><A NAME="ref35"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<strong>readQuery</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+				       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>readQuery</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Execute a query and return all the values returned by it.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to run query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">Parameters to pass to query.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of toQValues:s read from the query.
+   </p>
+<A NAME="readQueryNull"></A><A NAME="ref36"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<strong>readQueryNull</strong> (<A HREF="toConnection.html">toConnection</A> &conn,
+					   const <A HREF="toSQL.html">toSQL</A> &sql,
+					   std::list<<A HREF="toQValue.html">toQValue</A>> &params)
+<br></td><td align="right"><h3><strong>readQueryNull</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Execute a query and return all the values returned by it.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to run query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of toQValues:s read from the query.
+   </p>
+<A NAME="readQueryNull"></A><A NAME="ref37"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<strong>readQueryNull</strong> (<A HREF="toConnection.html">toConnection</A> &conn,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+					   std::list<<A HREF="toQValue.html">toQValue</A>> &params)
+<br></td><td align="right"><h3><strong>readQueryNull</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Execute a query and return all the values returned by it.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to run query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters to pass to query.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of toQValues:s read from the query.
+   </p>
+<A NAME="readQueryNull"></A><A NAME="ref38"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<strong>readQueryNull</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="toSQL.html">toSQL</A> &sql,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>readQueryNull</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Execute a query and return all the values returned by it.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to run query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">Parameters to pass to query.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of toQValues:s read from the query.
+   </p>
+<A NAME="readQueryNull"></A><A NAME="ref39"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="toQValue.html">toQValue</A>> &nbsp;<strong>readQueryNull</strong> (<A HREF="toConnection.html">toConnection</A> &conn,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg1=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg2=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg3=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg4=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg5=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg6=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg7=QString::null,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg8=QString::null,
+					   const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &arg9=QString::null)
+<br></td><td align="right"><h3><strong>readQueryNull</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Execute a query and return all the values returned by it.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to run query on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL to run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>arg1</i></TD><TD align="left" valign="top">Parameters to pass to query.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of toQValues:s read from the query.
+   </p>
+<A NAME="cancel"></A><A NAME="ref40"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>cancel</strong> (void)
+<br></td><td align="right"><h3><strong>cancel</strong></h3></td></tr></table><p></p><p> Cancel the current execution of a query.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toQuery__queryDescribe.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toQuery__queryDescribe.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toQuery__queryDescribe.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,47 @@
+<HTML>
+<HEAD>
+<TITLE>struct queryDescribe</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct queryDescribe</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This structure is used to describe the resultset of a query. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toQuery.html">toQuery</A>::queryDescribe</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toQuery__queryDescribe.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Members</h4><ul><LI>QString <b><A HREF="#ref1">Name</A></b></LI>
+<LI>QString <b><A HREF="#ref2">Datatype</A></b></LI>
+<LI>bool <b><A HREF="#ref3">Null</A></b></LI>
+<LI>bool <b><A HREF="#ref4">AlignRight</A></b></LI>
+<LI>QString <b><A HREF="#ref5">Comment</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This structure is used to describe the resultset of a query.
+   </p>
+<A NAME="Name"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Name</strong>
+</td><td align="right"><h3><strong>Name</strong></h3></td></tr></table><p></p><A NAME="Datatype"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Datatype</strong>
+</td><td align="right"><h3><strong>Datatype</strong></h3></td></tr></table><p></p><A NAME="Null"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>Null</strong>
+</td><td align="right"><h3><strong>Null</strong></h3></td></tr></table><p></p><A NAME="AlignRight"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>AlignRight</strong>
+</td><td align="right"><h3><strong>AlignRight</strong></h3></td></tr></table><p></p><A NAME="Comment"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Comment</strong>
+</td><td align="right"><h3><strong>Comment</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toQuery__queryImpl.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toQuery__queryImpl.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toQuery__queryImpl.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,106 @@
+<HTML>
+<HEAD>
+<TITLE>class queryImpl</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class queryImpl</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Abstract parent of implementations of a query for a database provider
+ (See <A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A> and <A HREF="toConnectionProvider.html">toConnectionProvider</A>)
+    <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Full name</TH><TD><code><A HREF="toQuery.html">toQuery</A>::queryImpl</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toconnection_h.html">toconnection.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toQuery__queryImpl.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI><A HREF="toQuery.html">toQuery</A> *&nbsp;<b><A HREF="#ref2">query</A></b> () 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref3">queryImpl</A></b> (<A HREF="toQuery.html">toQuery</A> *query) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref4">~queryImpl</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref5">execute</A></i></b> (void) 
+</LI>
+<LI>virtual  <A HREF="toQValue.html">toQValue</A> &nbsp;<b><i><A HREF="#ref6">readValue</A></i></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><i><A HREF="#ref7">eof</A></i></b> (void) 
+</LI>
+<LI>virtual  int &nbsp;<b><i><A HREF="#ref8">rowsProcessed</A></i></b> (void) 
+</LI>
+<LI>virtual  std::list<queryDescribe> &nbsp;<b><i><A HREF="#ref9">describe</A></i></b> (void) 
+</LI>
+<LI>virtual  int &nbsp;<b><i><A HREF="#ref10">columns</A></i></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref11">cancel</A></i></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Abstract parent of implementations of a query for a database provider
+ (See <A HREF="toConnection__connectionImpl.html">toConnection::connectionImpl</A> and <A HREF="toConnectionProvider.html">toConnectionProvider</A>)
+   </p>
+<A NAME="query"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQuery.html">toQuery</A> *&nbsp;<strong>query</strong> ()
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Get the parent query object. All the parameters of the query must be read from here.
+ nothing is passed to the functions.
+     </p>
+<A NAME="queryImpl"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>queryImpl</strong> (<A HREF="toQuery.html">toQuery</A> *query)
+<br></td><td align="right"><h3><strong>queryImpl</strong></h3></td></tr></table><p></p><p> Create a query implementation. The constructor must not perform any actions with the
+ database that could block for a noticable time (Like execute or parse a query). The
+ data for the query may not be available when this object created.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>query</i></TD><TD align="left" valign="top">Parent query object.
+     </TD></TR>
+</TABLE></P>
+<A NAME="~queryImpl"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~queryImpl</strong> ()
+<br></td><td align="right"><h3><strong>~queryImpl</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Destroy query implementation.
+     </p>
+<A NAME="execute"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>execute</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>execute</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Execute a query. Parameters can be gotten from the <A HREF="toQuery.html#toQuery">toQuery</A> object.
+     </p>
+<A NAME="readValue"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toQValue.html">toQValue</A> &nbsp;<i><strong>readValue</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>readValue</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Read the next value from the stream.
+</p>
+<p><b>Returns</b>: The value read from the query.
+     </p>
+<A NAME="eof"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<i><strong>eof</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>eof</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Check if the end of the query has been reached.
+</p>
+<p><b>Returns</b>: True if all values have been read.
+     </p>
+<A NAME="rowsProcessed"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<i><strong>rowsProcessed</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>rowsProcessed</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Get the number of rows processed in the last executed query.
+     </p>
+<A NAME="describe"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<queryDescribe> &nbsp;<i><strong>describe</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>describe</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Describe the currently running query.
+</p>
+<p><b>Returns</b>: A list of column descriptions of the query.
+     </p>
+<A NAME="columns"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<i><strong>columns</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>columns</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Get number of columns in the resultset.
+</p>
+<p><b>Returns</b>: Column number.
+     </p>
+<A NAME="cancel"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>cancel</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>cancel</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Cancel the current execution of a query. This will usually be called from another
+ thread than is executing the query.
+     </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResult.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResult.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResult.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,222 @@
+<HTML>
+<HEAD>
+<TITLE>class toResult</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResult</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Abstract baseclass of widgets that can perform queries. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresult_h.html">toresult.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultCols__resultColsEdit.html">resultColsEdit</A>, <A HREF="toResultBar.html">toResultBar</A>, <A HREF="toResultCols.html">toResultCols</A>, <A HREF="toResultCombo.html">toResultCombo</A>, <A HREF="toResultConstraint.html">toResultConstraint</A>, <A HREF="toResultContent.html">toResultContent</A>, <A HREF="toResultDepend.html">toResultDepend</A>, <A HREF="toResultField.html">toResultField</A>, <A HREF="toResultIndexes.html">toResultIndexes</A>, <A HREF="toResultItem.html">toResultItem</A>, <A HREF="toResultLabel.html">toResultLabel</A>, <A HREF="toResultLine.html">toResultLine</A>, <A HREF="toResultLong.html">toResultLong</A>, <A HREF="toResultPie.html">toResultPie</A>, <A HREF="toResultPlan.html">toResultPlan</A>, <A HREF="toResultReferences.html">toResultReferences</A>, <A HREF="toResultResources.html">toResultResources</A>, <A HREF="toResultStats.html">toResultStats</A>, <A HREF="toResultView.html">toResultView</A></TD></TR>
+<TR><TH><A HREF="full-list-toResult.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI><A HREF="toConnection.html">toConnection</A> &&nbsp;<b><A HREF="#ref13">connection</A></b> (void) 
+</LI>
+<LI><A HREF="toTimer.html">toTimer</A> *&nbsp;<b><A HREF="#ref14">timer</A></b> (void) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref15">toResult</A></b> (void) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref16">~toResult</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref17">clearParams</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref18">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref19">query</A></i></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &params) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref20">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref21">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref22">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref23">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI><A HREF="#toQList">toQList</A> &&nbsp;<b><A HREF="#ref24">params</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref25">handled</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref26">setHandle</A></b> (bool) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref27">setTabWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtabwidget.html">QTabWidget</A> *tab) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref28">setSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref29">setSQL</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref30">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref31">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref32">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref33">sql</A></b> (void) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref34">sqlName</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref35">setSQLName</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref36">toResultObject</A></b></LI>
+</ul><h4>Protected Methods</h4><ul><LI>void &nbsp;<b><A HREF="#ref11">setParams</A></b> (const <A HREF="#toQList">toQList</A> &par) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref12">setSQLParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &par) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref37">connectionChanged</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Abstract baseclass of widgets that can perform queries. Usefull because you can execute
+ the query without knowing how it's UI is presented.
+ </p>
+<A NAME="setParams"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setParams</strong> (const <A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>setParams</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Set parameters of last query.
+   </p>
+<A NAME="setSQLParams"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>setSQLParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>setSQLParams</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Set SQL and parameters and return false if query shouldn't be reexecuted. It is
+ important that all descendants call this function in the beginning of the implementation
+ of the query function to determine if the query should be reexecuted or not.
+   </p>
+<A NAME="connection"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toConnection.html">toConnection</A> &&nbsp;<strong>connection</strong> (void)
+<br></td><td align="right"><h3><strong>connection</strong></h3></td></tr></table><p></p><p> Get the current connection from the closest tool.
+</p>
+<p><b>Returns</b>: Reference to connection.
+   </p>
+<A NAME="timer"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toTimer.html">toTimer</A> *&nbsp;<strong>timer</strong> (void)
+<br></td><td align="right"><h3><strong>timer</strong></h3></td></tr></table><p></p><p> Get the timer associated with the closest tool.
+</p>
+<p><b>Returns</b>: Pointer to tool timer.
+   </p>
+<A NAME="toResult"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResult</strong> (void)
+<br></td><td align="right"><h3><strong>toResult</strong></h3></td></tr></table><p></p><A NAME="~toResult"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toResult</strong> ()
+<br></td><td align="right"><h3><strong>~toResult</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="clearParams"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>clearParams</strong> (void)
+<br></td><td align="right"><h3><strong>clearParams</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Erase last parameters
+   </p>
+<A NAME="refresh"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Re execute last query
+   </p>
+<A NAME="query"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>query</strong></i> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &params)
+<br></td><td align="right"><h3><i><strong>query</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Perform a query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">Execute an SQL statement.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>params</i></TD><TD align="left" valign="top">Parameters needed as input to execute statement.
+   </TD></TR>
+</TABLE></P>
+<A NAME="changeParams"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reexecute with changed parameters.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>Param1</i></TD><TD align="left" valign="top">First parameter.
+   </TD></TR>
+</TABLE></P>
+<A NAME="changeParams"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reexecute with changed parameters.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>Param1</i></TD><TD align="left" valign="top">First parameter.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>Param1</i></TD><TD align="left" valign="top">Second parameter.
+   </TD></TR>
+</TABLE></P>
+<A NAME="changeParams"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reexecute with changed parameters.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>Param1</i></TD><TD align="left" valign="top">First parameter.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>Param2</i></TD><TD align="left" valign="top">Second parameter.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>Param3</i></TD><TD align="left" valign="top">Third parameter.
+   </TD></TR>
+</TABLE></P>
+<A NAME="canHandle"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="params"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="#toQList">toQList</A> &&nbsp;<strong>params</strong> (void)
+<br></td><td align="right"><h3><strong>params</strong></h3></td></tr></table><p></p><p> Get last parameters used.
+</p>
+<p><b>Returns</b>: Don't modify the list returned.
+   </p>
+<A NAME="handled"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>handled</strong> (void)
+<br></td><td align="right"><h3><strong>handled</strong></h3></td></tr></table><p></p><p> Check if this result is handled by the current connection
+   </p>
+<A NAME="setHandle"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setHandle</strong> (bool)
+<br></td><td align="right"><h3><strong>setHandle</strong></h3></td></tr></table><p></p><p> Indicate that this result can not be handled even though indicated otherwise
+   </p>
+<A NAME="setTabWidget"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setTabWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qtabwidget.html">QTabWidget</A> *tab)
+<br></td><td align="right"><h3><strong>setTabWidget</strong></h3></td></tr></table><p></p><p> Indicate what tabbed widget to disable page if not immediate parent if this
+ result is not handled.
+   </p>
+<A NAME="setSQL"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">String containing statement.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setSQL"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list. This will also affect <A HREF="toResult.html#Name">Name</A>.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL containing statement.
+   </TD></TR>
+</TABLE></P>
+<A NAME="query"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<A NAME="query"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<A NAME="query"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<A NAME="sql"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>sql</strong> (void)
+<br></td><td align="right"><h3><strong>sql</strong></h3></td></tr></table><p></p><p> Get SQL to execute
+   </p>
+<A NAME="sqlName"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>sqlName</strong> (void)
+<br></td><td align="right"><h3><strong>sqlName</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get SQL name of list.
+   </p>
+<A NAME="setSQLName"></A><A NAME="ref35"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setSQLName</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>setSQLName</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set SQL name of list.
+   </p>
+<A NAME="toResultObject"></A><A NAME="ref36"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>toResultObject</strong>
+</td><td align="right"><h3><strong>toResultObject</strong></h3></td></tr></table><p></p><A NAME="connectionChanged"></A><A NAME="ref37"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>connectionChanged</strong> (void)
+<br></td><td align="right"><h3><strong>connectionChanged</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Called when connection is changed. Be sure to call the parent if you reimplement this.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultBar.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultBar.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultBar.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,201 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultBar</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultBar</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Display the result of a query in a piechart. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultbar_h.html">toresultbar.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toBarChart.html">toBarChart</A> <small>[public ]</small>, <i><A HREF="toResult.html">toResult</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultBar.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref10">toResultBar</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref11">~toResultBar</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref12">stop</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref13">start</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref14">setFlow</A></b> (bool on) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref15">flow</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref16">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref17">clear</A></b> (void) 
+</LI>
+<LI>virtual  std::list<double> &nbsp;<b><A HREF="#ref18">transform</A></b> (std::list<double> &input) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref19">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref20">setSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref21">setSQL</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref22">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref23">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref24">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref25">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref26">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref27">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref28">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+</ul><h4>Protected Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref29">connectionChanged</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref30">addMenues</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Display the result of a query in a piechart. The first column of the query should
+ contain the x value and the rest of the columns should be values of the diagram. The
+ legend is the column name. Connects to the tool timer for updates automatically.
+ </p>
+<A NAME="toResultBar"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultBar</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultBar</strong></h3></td></tr></table><p></p><p> Create widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultBar"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultBar</strong> ()
+<br></td><td align="right"><h3><strong>~toResultBar</strong></h3></td></tr></table><p></p><p> Destroy chart
+   </p>
+<A NAME="stop"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>stop</strong> ()
+<br></td><td align="right"><h3><strong>stop</strong></h3></td></tr></table><p></p><p> Stop automatic updating from tool timer.
+   </p>
+<A NAME="start"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>start</strong> ()
+<br></td><td align="right"><h3><strong>start</strong></h3></td></tr></table><p></p><p> Start automatic updating from tool timer.
+   </p>
+<A NAME="setFlow"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setFlow</strong> (bool on)
+<br></td><td align="right"><h3><strong>setFlow</strong></h3></td></tr></table><p></p><p> Display actual values or flow/s.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>on</i></TD><TD align="left" valign="top">Display flow or absolute values.
+   </TD></TR>
+</TABLE></P>
+<A NAME="flow"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>flow</strong> (void)
+<br></td><td align="right"><h3><strong>flow</strong></h3></td></tr></table><p></p><p> Return if flow is displayed.
+</p>
+<p><b>Returns</b>: If flow is used.
+   </p>
+<A NAME="query"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="clear"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>clear</strong> (void)
+<br></td><td align="right"><h3><strong>clear</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toLineChart.html#clear">toLineChart</A>.</p>
+<A NAME="transform"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<double> &nbsp;<strong>transform</strong> (std::list<double> &input)
+<br></td><td align="right"><h3><strong>transform</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Transform valueset. Make it possible to perform more complex transformation.
+ called directly before adding the valueset to the chart. After flow transformation.
+ Default is passthrough.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>input</i></TD><TD align="left" valign="top">The untransformed valueset.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The valueset actually added to the chart.
+   </p>
+<A NAME="canHandle"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Handle any connection
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#canHandle">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">String containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list. This will also affect Name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="refresh"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#refresh">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented For internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="connectionChanged"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>connectionChanged</strong> (void)
+<br></td><td align="right"><h3><strong>connectionChanged</strong></h3></td></tr></table><p> <small>[protected slots virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#connectionChanged">toResult</A>.</p>
+<A NAME="addMenues"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addMenues</strong> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *)
+<br></td><td align="right"><h3><strong>addMenues</strong></h3></td></tr></table><p> <small>[protected slots virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toLineChart.html#addMenues">toLineChart</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,155 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultCols</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultCols</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays information about the returned columns of an object
+ specified by the first and second parameter in the query. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultcols_h.html">toresultcols.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qvbox.html">QVBox</A> <small>(qt)</small> <small>[public ]</small>, <i><A HREF="toResult.html">toResult</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultCols.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref13">toResultCols</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref14">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref15">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref16">displayHeader</A></b> (bool disp) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref17">setSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref18">setSQL</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref19">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref20">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref21">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref23">clearParams</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref24">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref25">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref26">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref27">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref22">toResultColsItem</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays information about the returned columns of an object
+ specified by the first and second parameter in the query. The sql is not
+ used in the query.
+ </p>
+<A NAME="toResultCols"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultCols</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toResultCols</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="query"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="canHandle"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Handle any connection by default
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#canHandle">toResult</A>.</p>
+<A NAME="displayHeader"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>displayHeader</strong> (bool disp)
+<br></td><td align="right"><h3><strong>displayHeader</strong></h3></td></tr></table><p></p><p> Display header of column view
+   </p>
+<A NAME="setSQL"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">String containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list. This will also affect Name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="toResultColsItem"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>toResultColsItem</strong>
+</td><td align="right"><h3><strong>toResultColsItem</strong></h3></td></tr></table><p></p><A NAME="clearParams"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>clearParams</strong> (void)
+<br></td><td align="right"><h3><strong>clearParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Erase last parameters
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#clearParams">toResult</A>.</p>
+<A NAME="refresh"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#refresh">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented For internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultColsComment.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultColsComment.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultColsComment.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,52 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultColsComment</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultColsComment</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget is used for single record view in the content editor. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Internal Use Only</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultcols_h.html">toresultcols.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qlineedit.html">QLineEdit</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultColsComment.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref7">toResultColsComment</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref8">setComment</A></b> (bool table,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &comment) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref9">setCachedComment</A></b> (bool table,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &comment) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref10">commentChanged</A></b> () 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref6">focusOutEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget is used for single record view in the content editor. Only for internal use.
+ </p>
+<A NAME="focusOutEvent"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>focusOutEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *)
+<br></td><td align="right"><h3><strong>focusOutEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><A NAME="toResultColsComment"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultColsComment</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>toResultColsComment</strong></h3></td></tr></table><p></p><A NAME="setComment"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setComment</strong> (bool table,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &comment)
+<br></td><td align="right"><h3><strong>setComment</strong></h3></td></tr></table><p></p><A NAME="setCachedComment"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setCachedComment</strong> (bool table,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &comment)
+<br></td><td align="right"><h3><strong>setCachedComment</strong></h3></td></tr></table><p></p><A NAME="commentChanged"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>commentChanged</strong> ()
+<br></td><td align="right"><h3><strong>commentChanged</strong></h3></td></tr></table><p> <small>[slot]</small></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols__resultCols.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols__resultCols.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols__resultCols.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,53 @@
+<HTML>
+<HEAD>
+<TITLE>class resultCols</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class resultCols</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toResultCols.html">toResultCols</A>::resultCols</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultcols_h.html">toresultcols.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toListView.html">toListView</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultCols__resultCols.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref4">resultCols</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref5">editComment</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref6">describe</A></b> (<A HREF="#toQDescList">toQDescList</A> &desc) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref7">query</A></b> (const <A HREF="toConnection__objectName.html">toConnection::objectName</A> &,bool) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref8">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &table,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref9">toResultCols</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><A NAME="resultCols"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>resultCols</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>resultCols</strong></h3></td></tr></table><p></p><A NAME="editComment"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>editComment</strong> (bool val)
+<br></td><td align="right"><h3><strong>editComment</strong></h3></td></tr></table><p></p><A NAME="describe"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>describe</strong> (<A HREF="#toQDescList">toQDescList</A> &desc)
+<br></td><td align="right"><h3><strong>describe</strong></h3></td></tr></table><p></p><A NAME="query"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toConnection__objectName.html">toConnection::objectName</A> &,bool)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><A NAME="query"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &table,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &owner,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><A NAME="toResultCols"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>toResultCols</strong>
+</td><td align="right"><h3><strong>toResultCols</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols__resultColsEdit.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols__resultColsEdit.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultCols__resultColsEdit.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,52 @@
+<HTML>
+<HEAD>
+<TITLE>class resultColsEdit</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class resultColsEdit</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toResultCols.html">toResultCols</A>::resultColsEdit</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultcols_h.html">toresultcols.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultItem.html">toResultItem</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultCols__resultColsEdit.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">resultColsEdit</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref4">createValue</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref5">setValue</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref6">describe</A></b> (<A HREF="#toQDescList">toQDescList</A> &desc,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &table,bool cached) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref7">resultCols</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><A NAME="resultColsEdit"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>resultColsEdit</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>resultColsEdit</strong></h3></td></tr></table><p></p><A NAME="createValue"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>createValue</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>createValue</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>Reimplemented from <A HREF="toResultItem.html#createValue">toResultItem</A>.</p>
+<A NAME="setValue"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setValue</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value)
+<br></td><td align="right"><h3><strong>setValue</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>Reimplemented from <A HREF="toResultItem.html#setValue">toResultItem</A>.</p>
+<A NAME="describe"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>describe</strong> (<A HREF="#toQDescList">toQDescList</A> &desc,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &table,bool cached)
+<br></td><td align="right"><h3><strong>describe</strong></h3></td></tr></table><p></p><A NAME="resultCols"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>resultCols</strong>
+</td><td align="right"><h3><strong>resultCols</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultCombo.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultCombo.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultCombo.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,169 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultCombo</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultCombo</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays the result of a query where each field is added as an item
+ to a combobox. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultcombo_h.html">toresultcombo.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qcombobox.html">QComboBox</A> <small>(qt)</small> <small>[public ]</small>, <i><A HREF="toResult.html">toResult</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultCombo.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref5">toResultCombo</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref6">~toResultCombo</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref7">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref8">clearAdditional</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref9">additionalItem</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &item) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref10">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref11">setSelected</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sel) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref12">selected</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref13">setSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref14">setSQL</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref15">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref16">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref17">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref19">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref20">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref21">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref22">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref18">done</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays the result of a query where each field is added as an item
+ to a combobox.
+ </p>
+<A NAME="toResultCombo"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultCombo</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultCombo</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultCombo"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultCombo</strong> ()
+<br></td><td align="right"><h3><strong>~toResultCombo</strong></h3></td></tr></table><p></p><p> Destruct object
+   </p>
+<A NAME="query"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="clearAdditional"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>clearAdditional</strong> ()
+<br></td><td align="right"><h3><strong>clearAdditional</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Clear list of additional items.
+   </p>
+<A NAME="additionalItem"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>additionalItem</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &item)
+<br></td><td align="right"><h3><strong>additionalItem</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Item to add before the query is read. Can be called several times.
+   </p>
+<A NAME="canHandle"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Handle any connection by default
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#canHandle">toResult</A>.</p>
+<A NAME="setSelected"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSelected</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sel)
+<br></td><td align="right"><h3><strong>setSelected</strong></h3></td></tr></table><p></p><p> Set selected. When the result is read and this value is encountered that item is selected.
+   </p>
+<A NAME="selected"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>selected</strong> (void)
+<br></td><td align="right"><h3><strong>selected</strong></h3></td></tr></table><p></p><p> Get selected item value. Might not be same as currentText since that item might not have been read yet.
+   </p>
+<A NAME="setSQL"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">String containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list. This will also affect Name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="done"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>done</strong> (void)
+<br></td><td align="right"><h3><strong>done</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Done reading the query.
+   </p>
+<A NAME="refresh"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#refresh">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented For internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultConstraint.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultConstraint.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultConstraint.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultConstraint</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultConstraint</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays information about the constraints of an object
+ specified by the first and second parameter in the query. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultconstraint_h.html">toresultconstraint.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultView.html">toResultView</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultConstraint.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref8">toResultConstraint</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref9">~toResultConstraint</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref10">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref11">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays information about the constraints of an object
+ specified by the first and second parameter in the query. The sql is not
+ used in the query.
+ </p>
+<A NAME="toResultConstraint"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultConstraint</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultConstraint</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultConstraint"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultConstraint</strong> ()
+<br></td><td align="right"><h3><strong>~toResultConstraint</strong></h3></td></tr></table><p></p><p> Destroy object
+   </p>
+<A NAME="query"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#query">toResultView</A>.</p>
+<A NAME="canHandle"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Support Oracle
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#canHandle">toResultView</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultContent.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultContent.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultContent.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,161 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultContent</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultContent</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget allows the user to browse the contents of a table and also edit
+ the content. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultcontent_h.html">toresultcontent.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qvbox.html">QVBox</A> <small>(qt)</small> <small>[public ]</small>, <i><A HREF="toResult.html">toResult</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultContent.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toResultContent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI><A HREF="toResultContentEditor.html">toResultContentEditor</A> *&nbsp;<b><A HREF="#ref3">editor</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref4">editReadAll</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref5">editPrint</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">editSave</A></b> (bool ask) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref7">exportData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref8">importData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref9">useNoReturning</A></b> (bool use) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref13">clearParams</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref14">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref15">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref16">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref17">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref18">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref19">saveUnsaved</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref20">saveUnsaved</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,bool cmt) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref21">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref12">changesSaved</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget allows the user to browse the contents of a table and also edit
+ the content. The table is specified by the first and second parameter in the query.
+ The sql is not used in the query.
+ </p>
+<A NAME="toResultContent"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultContent</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultContent</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="editor"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toResultContentEditor.html">toResultContentEditor</A> *&nbsp;<strong>editor</strong> (void)
+<br></td><td align="right"><h3><strong>editor</strong></h3></td></tr></table><p></p><p> Get content editor table widget
+</p>
+<p><b>Returns</b>: Pointer to editor.
+   </p>
+<A NAME="editReadAll"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editReadAll</strong> (void)
+<br></td><td align="right"><h3><strong>editReadAll</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Read all rows from the table.
+   </p>
+<A NAME="editPrint"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editPrint</strong> (void)
+<br></td><td align="right"><h3><strong>editPrint</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Print the contents.
+   </p>
+<A NAME="editSave"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editSave</strong> (bool ask)
+<br></td><td align="right"><h3><strong>editSave</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Export contents to file.
+   </p>
+<A NAME="exportData"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>exportData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>exportData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Export data to a map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">A map that can be used to recreate the data of a chart.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to add to the map.
+   </TD></TR>
+</TABLE></P>
+<A NAME="importData"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>importData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>importData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Import data
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to read from a map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to read data from.
+   </TD></TR>
+</TABLE></P>
+<A NAME="useNoReturning"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>useNoReturning</strong> (bool use)
+<br></td><td align="right"><h3><strong>useNoReturning</strong></h3></td></tr></table><p></p><p> Indicate that editor should never use returning clauses even if this is oracle.
+   </p>
+<A NAME="changesSaved"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>changesSaved</strong> (void)
+<br></td><td align="right"><h3><strong>changesSaved</strong></h3></td></tr></table><p> <small>[signal]</small></p><A NAME="clearParams"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>clearParams</strong> (void)
+<br></td><td align="right"><h3><strong>clearParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Erase last parameters
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#clearParams">toResult</A>.</p>
+<A NAME="refresh"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#refresh">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="saveUnsaved"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>saveUnsaved</strong> (void)
+<br></td><td align="right"><h3><strong>saveUnsaved</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Save unsaved changes in the editor
+   </p>
+<A NAME="saveUnsaved"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>saveUnsaved</strong> (<A HREF="toConnection.html">toConnection</A> &conn,bool cmt)
+<br></td><td align="right"><h3><strong>saveUnsaved</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Commit connection
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection commit is made on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>cmt</i></TD><TD align="left" valign="top">If commit or rollback
+   </TD></TR>
+</TABLE></P>
+<A NAME="canHandle"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Handle all databases
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#canHandle">toResult</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentEditor.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentEditor.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentEditor.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,293 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultContentEditor</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultContentEditor</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget allows the user to browse the contents of a table and also edit
+ the content. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultcontent_h.html">toresultcontent.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qtable.html">QTable</A> <small>(qt)</small> <small>[public ]</small>, <A HREF="toEditWidget.html">toEditWidget</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultContentEditor.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>void &nbsp;<b><A HREF="#ref51">useNoReturning</A></b> (bool use) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref52">toResultContentEditor</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref53">~toResultContentEditor</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref54">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &,const <A HREF="#toQList">toQList</A> &) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref55">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref56">editPrint</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref57">editSave</A></b> (bool ask) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref58">editReadAll</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref59">editSelectAll</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref60">setText</A></b> (int row,int col,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref61">changeFilter</A></b> (bool all,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &criteria,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &order) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref62">allFilter</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref65">exportData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref66">importData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref67">clearParams</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref68">changeSort</A></b> (int col) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref69">changePosition</A></b> (int row,int col) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref70">displayMenu</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A> &p) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref71">displayMemo</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref72">saveUnsaved</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref73">deleteCurrent</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref74">addRecord</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref75">duplicateRecord</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref76">cancelEdit</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref77">gotoLastRecord</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref78">gotoFirstRecord</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref79">gotoPreviousRecord</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref80">gotoNextRecord</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref81">singleRecordForm</A></b> (bool display) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref82">searchTop</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref83">searchNext</A></b> (<A HREF="#toSearchReplace">toSearchReplace</A> *search) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref84">searchReplace</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &newData) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref85">searchCanReplace</A></b> (bool all) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref86">filterEnabled</A></b> (bool) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref87">changesSaved</A></b> () 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref63">contentItem</A></b></LI>
+<LI>friend class <b><A HREF="#ref64">toResultContent</A></b></LI>
+</ul><h4>Protected Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref88">menuCallback</A></b> (int cmd) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref89">changeData</A></b> (int row,int col,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &data) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget allows the user to browse the contents of a table and also edit
+ the content. The table is specified by the first and second parameter in the query.
+ The sql is not used in the query. Only for internal use.
+ </p>
+<A NAME="useNoReturning"></A><A NAME="ref51"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>useNoReturning</strong> (bool use)
+<br></td><td align="right"><h3><strong>useNoReturning</strong></h3></td></tr></table><p></p><p> Indicate that editor should never use returning clauses even if this is oracle.
+   </p>
+<A NAME="toResultContentEditor"></A><A NAME="ref52"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultContentEditor</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultContentEditor</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultContentEditor"></A><A NAME="ref53"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultContentEditor</strong> ()
+<br></td><td align="right"><h3><strong>~toResultContentEditor</strong></h3></td></tr></table><p></p><p> Destruct object
+   </p>
+<A NAME="query"></A><A NAME="ref54"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &,const <A HREF="#toQList">toQList</A> &)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="changeParams"></A><A NAME="ref55"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="editPrint"></A><A NAME="ref56"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editPrint</strong> (void)
+<br></td><td align="right"><h3><strong>editPrint</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Print this editor.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editPrint">toEditWidget</A>.</p>
+<A NAME="editSave"></A><A NAME="ref57"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>editSave</strong> (bool ask)
+<br></td><td align="right"><h3><strong>editSave</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editSave">toEditWidget</A>.</p>
+<A NAME="editReadAll"></A><A NAME="ref58"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editReadAll</strong> (void)
+<br></td><td align="right"><h3><strong>editReadAll</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editReadAll">toEditWidget</A>.</p>
+<A NAME="editSelectAll"></A><A NAME="ref59"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editSelectAll</strong> (void)
+<br></td><td align="right"><h3><strong>editSelectAll</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Select all contents. Default NOP.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editSelectAll">toEditWidget</A>.</p>
+<A NAME="setText"></A><A NAME="ref60"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setText</strong> (int row,int col,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="changeFilter"></A><A NAME="ref61"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>changeFilter</strong> (bool all,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &criteria,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &order)
+<br></td><td align="right"><h3><strong>changeFilter</strong></h3></td></tr></table><p></p><p> Set a new filter setting.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>all</i></TD><TD align="left" valign="top">Apply filter to all tables, otherwise only for this table.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>criteria</i></TD><TD align="left" valign="top">Criteria to filter on.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>order</i></TD><TD align="left" valign="top">Order to read data on.
+   </TD></TR>
+</TABLE></P>
+<A NAME="allFilter"></A><A NAME="ref62"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>allFilter</strong> ()
+<br></td><td align="right"><h3><strong>allFilter</strong></h3></td></tr></table><p></p><p> Get information about if filter affect all tables.
+   </p>
+<A NAME="contentItem"></A><A NAME="ref63"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>contentItem</strong>
+</td><td align="right"><h3><strong>contentItem</strong></h3></td></tr></table><p></p><A NAME="toResultContent"></A><A NAME="ref64"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>toResultContent</strong>
+</td><td align="right"><h3><strong>toResultContent</strong></h3></td></tr></table><p></p><A NAME="exportData"></A><A NAME="ref65"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>exportData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>exportData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Export data to a map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">A map that can be used to recreate the data of a chart.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to add to the map.
+   </TD></TR>
+</TABLE></P>
+<A NAME="importData"></A><A NAME="ref66"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>importData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>importData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Import data
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to read from a map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to read data from.
+   </TD></TR>
+</TABLE></P>
+<A NAME="clearParams"></A><A NAME="ref67"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>clearParams</strong> (void)
+<br></td><td align="right"><h3><strong>clearParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Erase last parameters
+   </p>
+<A NAME="changeSort"></A><A NAME="ref68"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeSort</strong> (int col)
+<br></td><td align="right"><h3><strong>changeSort</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Change sorting column
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Column selected to change as sorting.
+   </TD></TR>
+</TABLE></P>
+<A NAME="changePosition"></A><A NAME="ref69"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>changePosition</strong> (int row,int col)
+<br></td><td align="right"><h3><strong>changePosition</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Current cell changed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>row</i></TD><TD align="left" valign="top">New row.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">New column.
+   </TD></TR>
+</TABLE></P>
+<A NAME="displayMenu"></A><A NAME="ref70"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>displayMenu</strong> (const <A HREF="/usr/lib/qt3/doc/html/qpoint.html">QPoint</A> &p)
+<br></td><td align="right"><h3><strong>displayMenu</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Display popup menu
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>p</i></TD><TD align="left" valign="top">Point to display popup at.
+   </TD></TR>
+</TABLE></P>
+<A NAME="displayMemo"></A><A NAME="ref71"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>displayMemo</strong> (void)
+<br></td><td align="right"><h3><strong>displayMemo</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Display editable memo viewer at current position.
+   </p>
+<A NAME="saveUnsaved"></A><A NAME="ref72"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>saveUnsaved</strong> (void)
+<br></td><td align="right"><h3><strong>saveUnsaved</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Save unsaved changes in the editor
+   </p>
+<A NAME="deleteCurrent"></A><A NAME="ref73"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>deleteCurrent</strong> (void)
+<br></td><td align="right"><h3><strong>deleteCurrent</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Delete the current row from the table.
+   </p>
+<A NAME="addRecord"></A><A NAME="ref74"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addRecord</strong> (void)
+<br></td><td align="right"><h3><strong>addRecord</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Add a new record to the table.
+   </p>
+<A NAME="duplicateRecord"></A><A NAME="ref75"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>duplicateRecord</strong> (void)
+<br></td><td align="right"><h3><strong>duplicateRecord</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Duplicate a new record for editing.
+   </p>
+<A NAME="cancelEdit"></A><A NAME="ref76"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>cancelEdit</strong> (void)
+<br></td><td align="right"><h3><strong>cancelEdit</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Discard the changes made to the table.
+   </p>
+<A NAME="gotoLastRecord"></A><A NAME="ref77"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>gotoLastRecord</strong> (void)
+<br></td><td align="right"><h3><strong>gotoLastRecord</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Goto the last record in the table.
+   </p>
+<A NAME="gotoFirstRecord"></A><A NAME="ref78"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>gotoFirstRecord</strong> (void)
+<br></td><td align="right"><h3><strong>gotoFirstRecord</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Goto the first record in the table.
+   </p>
+<A NAME="gotoPreviousRecord"></A><A NAME="ref79"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>gotoPreviousRecord</strong> (void)
+<br></td><td align="right"><h3><strong>gotoPreviousRecord</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Goto the previous record in the table.
+   </p>
+<A NAME="gotoNextRecord"></A><A NAME="ref80"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>gotoNextRecord</strong> (void)
+<br></td><td align="right"><h3><strong>gotoNextRecord</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Goto the next record in the table.
+   </p>
+<A NAME="singleRecordForm"></A><A NAME="ref81"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>singleRecordForm</strong> (bool display)
+<br></td><td align="right"><h3><strong>singleRecordForm</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Display single record form.
+   </p>
+<A NAME="searchTop"></A><A NAME="ref82"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>searchTop</strong> (void)
+<br></td><td align="right"><h3><strong>searchTop</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Move to top of data
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchTop">toEditWidget</A>.</p>
+<A NAME="searchNext"></A><A NAME="ref83"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>searchNext</strong> (<A HREF="#toSearchReplace">toSearchReplace</A> *search)
+<br></td><td align="right"><h3><strong>searchNext</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Search for next entry
+</p>
+<p><b>Returns</b>: True if found, should select the found text.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchNext">toEditWidget</A>.</p>
+<A NAME="searchReplace"></A><A NAME="ref84"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>searchReplace</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &newData)
+<br></td><td align="right"><h3><strong>searchReplace</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Replace entry with new data
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchReplace">toEditWidget</A>.</p>
+<A NAME="searchCanReplace"></A><A NAME="ref85"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>searchCanReplace</strong> (bool all)
+<br></td><td align="right"><h3><strong>searchCanReplace</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Check if data can be modified by search
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>all</i></TD><TD align="left" valign="top">If true can replace all, otherwise can replace right now.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toEditWidget.html#searchCanReplace">toEditWidget</A>.</p>
+<A NAME="filterEnabled"></A><A NAME="ref86"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>filterEnabled</strong> (bool)
+<br></td><td align="right"><h3><strong>filterEnabled</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Emitted to indicate wether a filter is used.
+   </p>
+<A NAME="changesSaved"></A><A NAME="ref87"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>changesSaved</strong> ()
+<br></td><td align="right"><h3><strong>changesSaved</strong></h3></td></tr></table><p> <small>[signal]</small></p><A NAME="menuCallback"></A><A NAME="ref88"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>menuCallback</strong> (int cmd)
+<br></td><td align="right"><h3><strong>menuCallback</strong></h3></td></tr></table><p> <small>[protected slots virtual slot]</small></p><p> Callback from popup menu.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>cmd</i></TD><TD align="left" valign="top">Command ID.
+   </TD></TR>
+</TABLE></P>
+<A NAME="changeData"></A><A NAME="ref89"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeData</strong> (int row,int col,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &data)
+<br></td><td align="right"><h3><strong>changeData</strong></h3></td></tr></table><p> <small>[protected slots virtual slot]</small></p><p> Change data at specified position.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>row</i></TD><TD align="left" valign="top">Row to change.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Column to change.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">New contents of data.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentEditor__contentItem.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentEditor__contentItem.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentEditor__contentItem.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,42 @@
+<HTML>
+<HEAD>
+<TITLE>class contentItem</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class contentItem</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toResultContentEditor.html">toResultContentEditor</A>::contentItem</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultcontent_h.html">toresultcontent.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qtableitem.html">QTableItem</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultContentEditor__contentItem.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">contentItem</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtable.html">QTable</A> *table,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref2">key</A></b> (void)  const
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><A NAME="contentItem"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>contentItem</strong> (<A HREF="/usr/lib/qt3/doc/html/qtable.html">QTable</A> *table,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text)
+<br></td><td align="right"><h3><strong>contentItem</strong></h3></td></tr></table><p></p><A NAME="key"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>key</strong> (void)
+<br></td><td align="right"><h3><strong>key</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentMemo.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentMemo.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentMemo.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,62 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultContentMemo</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultContentMemo</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Implement memo editor in result content editor. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Internal Use Only</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultcontent_h.html">toresultcontent.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toMemoEditor.html">toMemoEditor</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultContentMemo.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toResultContentMemo</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &data,int row,int col,
+		      bool sql=false) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref3">firstColumn</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref4">nextColumn</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref5">previousColumn</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">lastColumn</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref7">changePosition</A></b> (int row,int cols) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Implement memo editor in result content editor. Only for internal use.
+ </p>
+<A NAME="toResultContentMemo"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultContentMemo</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &data,int row,int col,
+		      bool sql=false)
+<br></td><td align="right"><h3><strong>toResultContentMemo</strong></h3></td></tr></table><p></p><A NAME="firstColumn"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>firstColumn</strong> ()
+<br></td><td align="right"><h3><strong>firstColumn</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p>Reimplemented from <A HREF="toMemoEditor.html#firstColumn">toMemoEditor</A>.</p>
+<A NAME="nextColumn"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>nextColumn</strong> ()
+<br></td><td align="right"><h3><strong>nextColumn</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p>Reimplemented from <A HREF="toMemoEditor.html#nextColumn">toMemoEditor</A>.</p>
+<A NAME="previousColumn"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>previousColumn</strong> ()
+<br></td><td align="right"><h3><strong>previousColumn</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p>Reimplemented from <A HREF="toMemoEditor.html#previousColumn">toMemoEditor</A>.</p>
+<A NAME="lastColumn"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>lastColumn</strong> ()
+<br></td><td align="right"><h3><strong>lastColumn</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p>Reimplemented from <A HREF="toMemoEditor.html#lastColumn">toMemoEditor</A>.</p>
+<A NAME="changePosition"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changePosition</strong> (int row,int cols)
+<br></td><td align="right"><h3><strong>changePosition</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p>Reimplemented from <A HREF="toMemoEditor.html#changePosition">toMemoEditor</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentSingle.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentSingle.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultContentSingle.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,49 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultContentSingle</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultContentSingle</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget is used for single record view in the content editor. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Internal Use Only</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultcontent_h.html">toresultcontent.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html">QScrollView</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultContentSingle.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref5">toResultContentSingle</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref6">changeSource</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtable.html">QTable</A> *table) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref7">changeRow</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtable.html">QTable</A> *table,int row) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref8">saveRow</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtable.html">QTable</A> *table,int row) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget is used for single record view in the content editor. Only for internal use.
+ </p>
+<A NAME="toResultContentSingle"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultContentSingle</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>toResultContentSingle</strong></h3></td></tr></table><p></p><A NAME="changeSource"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>changeSource</strong> (<A HREF="/usr/lib/qt3/doc/html/qtable.html">QTable</A> *table)
+<br></td><td align="right"><h3><strong>changeSource</strong></h3></td></tr></table><p></p><A NAME="changeRow"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>changeRow</strong> (<A HREF="/usr/lib/qt3/doc/html/qtable.html">QTable</A> *table,int row)
+<br></td><td align="right"><h3><strong>changeRow</strong></h3></td></tr></table><p></p><A NAME="saveRow"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>saveRow</strong> (<A HREF="/usr/lib/qt3/doc/html/qtable.html">QTable</A> *table,int row)
+<br></td><td align="right"><h3><strong>saveRow</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultDepend.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultDepend.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultDepend.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,78 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultDepend</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultDepend</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays information about the dependencies of an object
+ specified by the first and second parameter in the query. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultdepend_h.html">toresultdepend.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultView.html">toResultView</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultDepend.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref5">toResultDepend</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref6">~toResultDepend</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref7">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref8">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref9">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref10">poll</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays information about the dependencies of an object
+ specified by the first and second parameter in the query. The sql is not
+ used in the query. It will also recurs through all dependencies of the
+ objects depended on.
+ </p>
+<A NAME="toResultDepend"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultDepend</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultDepend</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultDepend"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultDepend</strong> ()
+<br></td><td align="right"><h3><strong>~toResultDepend</strong></h3></td></tr></table><p></p><p> Object destructor.
+   </p>
+<A NAME="query"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#query">toResultView</A>.</p>
+<A NAME="query"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#query">toResultView</A>.</p>
+<A NAME="canHandle"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Support Oracle
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#canHandle">toResultView</A>.</p>
+<A NAME="poll"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>poll</strong> (void)
+<br></td><td align="right"><h3><strong>poll</strong></h3></td></tr></table><p> <small>[slot]</small></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultField.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultField.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultField.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,144 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultField</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultField</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays the result of a query where each item in the stream
+ is added as a line in a text editer. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultfield_h.html">toresultfield.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toHighlightedText.html">toHighlightedText</A> <small>[public ]</small>, <i><A HREF="toResult.html">toResult</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultField.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref4">toResultField</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref5">~toResultField</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref7">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref8">setSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref9">setSQL</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref10">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref11">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref12">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref13">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref14">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref15">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref16">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays the result of a query where each item in the stream
+ is added as a line in a text editer.
+ </p>
+<A NAME="toResultField"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultField</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultField</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultField"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultField</strong> ()
+<br></td><td align="right"><h3><strong>~toResultField</strong></h3></td></tr></table><p></p><p> Destruct object
+   </p>
+<A NAME="query"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="canHandle"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Handle any connection by default
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#canHandle">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">String containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list. This will also affect Name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="refresh"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#refresh">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented For internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultFilter.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultFilter.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultFilter.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,88 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultFilter</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultFilter</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Baseclass for filters to apply to the <A HREF="toResultView.html">toResultView</A> to filter out
+ rows that you don't want to add as items to the list. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultview_h.html">toresultview.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toResultFilter.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toResultFilter</A></b> () 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref2">~toResultFilter</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref3">startingQuery</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><i><A HREF="#ref4">check</A></i></b> (const <A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item) 
+</LI>
+<LI>virtual  <A HREF="toResultFilter.html">toResultFilter</A> *&nbsp;<b><i><A HREF="#ref5">clone</A></i></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">exportData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref7">importData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Baseclass for filters to apply to the <A HREF="toResultView.html">toResultView</A> to filter out
+ rows that you don't want to add as items to the list.
+ </p>
+<A NAME="toResultFilter"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultFilter</strong> ()
+<br></td><td align="right"><h3><strong>toResultFilter</strong></h3></td></tr></table><p></p><A NAME="~toResultFilter"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toResultFilter</strong> ()
+<br></td><td align="right"><h3><strong>~toResultFilter</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="startingQuery"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>startingQuery</strong> (void)
+<br></td><td align="right"><h3><strong>startingQuery</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="check"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<i><strong>check</strong></i> (const <A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item)
+<br></td><td align="right"><h3><i><strong>check</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> This function can inspect the item to be added and decide if it is
+ valid for adding or not.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>item</i></TD><TD align="left" valign="top">Item to inspect.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: If false is returned the item isn't added.
+   </p>
+<A NAME="clone"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toResultFilter.html">toResultFilter</A> *&nbsp;<i><strong>clone</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>clone</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Create a copy of this filter.
+</p>
+<p><b>Returns</b>: A newly created copy of this filter.
+   </p>
+<A NAME="exportData"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>exportData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>exportData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Export data to a map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">A map that can be used to recreate the data of a chart.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to add to the map.
+   </TD></TR>
+</TABLE></P>
+<A NAME="importData"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>importData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>importData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Import data
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to read from a map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to read data from.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultIndexes.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultIndexes.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultIndexes.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultIndexes</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultIndexes</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays information about indexes of an object
+ specified by the first and second parameter in the query. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultindexes_h.html">toresultindexes.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultView.html">toResultView</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultIndexes.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref8">toResultIndexes</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref9">~toResultIndexes</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref10">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref11">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays information about indexes of an object
+ specified by the first and second parameter in the query. The sql is not
+ used in the query.
+ </p>
+<A NAME="toResultIndexes"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultIndexes</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultIndexes</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultIndexes"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultIndexes</strong> ()
+<br></td><td align="right"><h3><strong>~toResultIndexes</strong></h3></td></tr></table><p></p><p> Destroy object
+   </p>
+<A NAME="query"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#query">toResultView</A>.</p>
+<A NAME="canHandle"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Support Oracle & MySQL
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#canHandle">toResultView</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultItem.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultItem.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultItem.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,260 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultItem</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultItem</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Display the first row of a query with each column with a separate label. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultitem_h.html">toresultitem.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qscrollview.html">QScrollView</A> <small>(qt)</small> <small>[public ]</small>, <i><A HREF="toResult.html">toResult</A></i> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultCols__resultColsEdit.html">resultColsEdit</A>, <A HREF="toResultResources.html">toResultResources</A></TD></TR>
+<TR><TH><A HREF="full-list-toResultItem.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref16">toResultItem</A></b> (int num,bool readable,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref17">toResultItem</A></b> (int num,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref18">~toResultItem</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref19">showTitle</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref20">alignRight</A></b> (bool val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref21">dataFont</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qfont.html">QFont</A> &val) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref22">createTitle</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref23">createValue</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref24">setTitle</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref25">setValue</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref26">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref27">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref28">setSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref29">setSQL</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref30">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref31">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref32">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref33">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref34">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref35">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref36">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>void &nbsp;<b><A HREF="#ref12">start</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref13">addItem</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref14">done</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref15">resizeEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qresizeevent.html">QResizeEvent</A> *e) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Display the first row of a query with each column with a separate label.
+ If the label of the item is a single '-' character the data is treated as
+ a horizontal label (Not bold or sunken), and the label is not printed.
+ </p>
+<A NAME="start"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>start</strong> (void)
+<br></td><td align="right"><h3><strong>start</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Start new query, hide all widgets.
+   </p>
+<A NAME="addItem"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>addItem</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value)
+<br></td><td align="right"><h3><strong>addItem</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Add a new widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>title</i></TD><TD align="left" valign="top">Title of this value.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>value</i></TD><TD align="left" valign="top">Value.
+   </TD></TR>
+</TABLE></P>
+<A NAME="done"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>done</strong> (void)
+<br></td><td align="right"><h3><strong>done</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Done with adding queries.
+   </p>
+<A NAME="resizeEvent"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>resizeEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qresizeevent.html">QResizeEvent</A> *e)
+<br></td><td align="right"><h3><strong>resizeEvent</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="toResultItem"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultItem</strong> (int num,bool readable,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultItem</strong></h3></td></tr></table><p></p><p> Create widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>num</i></TD><TD align="left" valign="top">Number of columns to arrange data in.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>readable</i></TD><TD align="left" valign="top">Indicate if columns are to be made more readable. This means that the
+ descriptions are capitalised and '_' are converted to ' '.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultItem"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultItem</strong> (int num,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultItem</strong></h3></td></tr></table><p></p><p> Create widget. Readable columns by default.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>num</i></TD><TD align="left" valign="top">Number of columns to arrange data in.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultItem"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultItem</strong> (void)
+<br></td><td align="right"><h3><strong>~toResultItem</strong></h3></td></tr></table><p></p><p> Destroy object
+   </p>
+<A NAME="showTitle"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>showTitle</strong> (bool val)
+<br></td><td align="right"><h3><strong>showTitle</strong></h3></td></tr></table><p></p><p> Set if titles are to be shown.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">If titles are to be shown.
+   </TD></TR>
+</TABLE></P>
+<A NAME="alignRight"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>alignRight</strong> (bool val)
+<br></td><td align="right"><h3><strong>alignRight</strong></h3></td></tr></table><p></p><p> Set if labels are to be aligned right.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">If labels are to be aligned right.
+   </TD></TR>
+</TABLE></P>
+<A NAME="dataFont"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>dataFont</strong> (const <A HREF="/usr/lib/qt3/doc/html/qfont.html">QFont</A> &val)
+<br></td><td align="right"><h3><strong>dataFont</strong></h3></td></tr></table><p></p><p> Set the font to display data with.
+   </p>
+<A NAME="createTitle"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>createTitle</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>createTitle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Create title widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of widget.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Title widget created.
+   </p>
+<A NAME="createValue"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>createValue</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>createValue</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Create value widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of widget.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Title widget created.
+   </p>
+<A NAME="setTitle"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setTitle</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value)
+<br></td><td align="right"><h3><strong>setTitle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set value of title widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>widget</i></TD><TD align="left" valign="top">Widget to use for title.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>title</i></TD><TD align="left" valign="top">The title of the new widget pair.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>value</i></TD><TD align="left" valign="top">Vaue of new title widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setValue"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setValue</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &title,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value)
+<br></td><td align="right"><h3><strong>setValue</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set value of value widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>widget</i></TD><TD align="left" valign="top">Widget to use for value.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>title</i></TD><TD align="left" valign="top">The title of the new widget pair.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>value</i></TD><TD align="left" valign="top">Vaue of new title widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="query"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="canHandle"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Handle any connection
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#canHandle">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">String containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list. This will also affect Name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="refresh"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#refresh">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref35"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented For internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref36"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultLabel.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultLabel.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultLabel.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,154 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultLabel</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultLabel</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays the result of a query where each item in the stream
+ is added to a label separated by an optional string. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultlabel_h.html">toresultlabel.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qlabel.html">QLabel</A> <small>(qt)</small> <small>[public ]</small>, <i><A HREF="toResult.html">toResult</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultLabel.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref4">toResultLabel</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref5">~toResultLabel</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref7">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref8">separator</A></b> (void)  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref9">setSeparator</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sep) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref10">setSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref11">setSQL</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref12">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref13">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref14">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref15">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref16">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref17">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref18">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays the result of a query where each item in the stream
+ is added to a label separated by an optional string.
+ </p>
+<A NAME="toResultLabel"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultLabel</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultLabel</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultLabel"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultLabel</strong> ()
+<br></td><td align="right"><h3><strong>~toResultLabel</strong></h3></td></tr></table><p></p><p> Destruct object
+   </p>
+<A NAME="query"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="canHandle"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Handle any connection by default
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#canHandle">toResult</A>.</p>
+<A NAME="separator"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>separator</strong> (void)
+<br></td><td align="right"><h3><strong>separator</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get separator string to use between result.
+   </p>
+<A NAME="setSeparator"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSeparator</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sep)
+<br></td><td align="right"><h3><strong>setSeparator</strong></h3></td></tr></table><p></p><p> Set separator string to use between result.
+   </p>
+<A NAME="setSQL"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">String containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list. This will also affect Name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="refresh"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#refresh">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented For internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultLine.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultLine.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultLine.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,201 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultLine</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultLine</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Display the result of a query in a piechart. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultline_h.html">toresultline.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toLineChart.html">toLineChart</A> <small>[public ]</small>, <i><A HREF="toResult.html">toResult</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultLine.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref10">toResultLine</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref11">~toResultLine</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref12">stop</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref13">start</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref14">setFlow</A></b> (bool on) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref15">flow</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref16">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref17">clear</A></b> (void) 
+</LI>
+<LI>virtual  std::list<double> &nbsp;<b><A HREF="#ref18">transform</A></b> (std::list<double> &input) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref19">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref20">setSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref21">setSQL</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref22">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref23">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref24">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref25">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref26">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref27">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref28">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+</ul><h4>Protected Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref29">connectionChanged</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref30">addMenues</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Display the result of a query in a piechart. The first column of the query should
+ contain the x value and the rest of the columns should be values of the diagram. The
+ legend is the column name. Connects to the tool timer for updates automatically.
+ </p>
+<A NAME="toResultLine"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultLine</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultLine</strong></h3></td></tr></table><p></p><p> Create widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultLine"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultLine</strong> ()
+<br></td><td align="right"><h3><strong>~toResultLine</strong></h3></td></tr></table><p></p><p> Destroy chart
+   </p>
+<A NAME="stop"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>stop</strong> ()
+<br></td><td align="right"><h3><strong>stop</strong></h3></td></tr></table><p></p><p> Stop automatic updating from tool timer.
+   </p>
+<A NAME="start"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>start</strong> ()
+<br></td><td align="right"><h3><strong>start</strong></h3></td></tr></table><p></p><p> Start automatic updating from tool timer.
+   </p>
+<A NAME="setFlow"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setFlow</strong> (bool on)
+<br></td><td align="right"><h3><strong>setFlow</strong></h3></td></tr></table><p></p><p> Display actual values or flow/s.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>on</i></TD><TD align="left" valign="top">Display flow or absolute values.
+   </TD></TR>
+</TABLE></P>
+<A NAME="flow"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>flow</strong> (void)
+<br></td><td align="right"><h3><strong>flow</strong></h3></td></tr></table><p></p><p> Return if flow is displayed.
+</p>
+<p><b>Returns</b>: If flow is used.
+   </p>
+<A NAME="query"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="clear"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>clear</strong> (void)
+<br></td><td align="right"><h3><strong>clear</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toLineChart.html#clear">toLineChart</A>.</p>
+<A NAME="transform"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<double> &nbsp;<strong>transform</strong> (std::list<double> &input)
+<br></td><td align="right"><h3><strong>transform</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Transform valueset. Make it possible to perform more complex transformation.
+ called directly before adding the valueset to the chart. After flow transformation.
+ Default is passthrough.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>input</i></TD><TD align="left" valign="top">The untransformed valueset.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The valueset actually added to the chart.
+   </p>
+<A NAME="canHandle"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Handle any connection
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#canHandle">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">String containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list. This will also affect Name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="refresh"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#refresh">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented For internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="connectionChanged"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>connectionChanged</strong> (void)
+<br></td><td align="right"><h3><strong>connectionChanged</strong></h3></td></tr></table><p> <small>[protected slots virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#connectionChanged">toResult</A>.</p>
+<A NAME="addMenues"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addMenues</strong> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *)
+<br></td><td align="right"><h3><strong>addMenues</strong></h3></td></tr></table><p> <small>[protected slots virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toLineChart.html#addMenues">toLineChart</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultListFormat.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultListFormat.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultListFormat.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,48 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultListFormat</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultListFormat</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ Used internally by toListView. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Internal Use Only</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultview_h.html">toresultview.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD>toResultListFormatUI <small>(unknown)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultListFormat.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toResultListFormat</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref2">saveDefault</A></b> (void) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref3">formatChanged</A></b> (int pos) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ Used internally by toListView.
+ </p>
+<A NAME="toResultListFormat"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultListFormat</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name)
+<br></td><td align="right"><h3><strong>toResultListFormat</strong></h3></td></tr></table><p></p><A NAME="saveDefault"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>saveDefault</strong> (void)
+<br></td><td align="right"><h3><strong>saveDefault</strong></h3></td></tr></table><p></p><A NAME="formatChanged"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>formatChanged</strong> (int pos)
+<br></td><td align="right"><h3><strong>formatChanged</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultLong.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultLong.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultLong.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,136 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultLong</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultLong</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A widget which contains the result of a query run in the background. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultlong_h.html">toresultlong.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultView.html">toResultView</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultLong.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref11">toResultLong</A></b> (bool readable,bool numCol,<A HREF="toQuery.html#queryMode">toQuery::queryMode</A> mode,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref12">toResultLong</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref13">~toResultLong</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref14">setStatistics</A></b> (<A HREF="toResultStats.html">toResultStats</A> *stats) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref15">running</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref16">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref17">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref18">editReadAll</A></b> (void) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref21">stop</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref22">addItem</A></b> (void) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref19">done</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref20">firstResult</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="toConnection__exception.html">toConnection::exception</A> &res,bool error) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A widget which contains the result of a query run in the background.
+ </p>
+<A NAME="toResultLong"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultLong</strong> (bool readable,bool numCol,<A HREF="toQuery.html#queryMode">toQuery::queryMode</A> mode,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toResultLong</strong></h3></td></tr></table><p></p><p> Create widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>readable</i></TD><TD align="left" valign="top">Indicate if columns are to be made more readable. This means that the
+ descriptions are capitalised and '_' are converted to ' '.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>numCol</i></TD><TD align="left" valign="top">If number column is to be displayed.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>mode</i></TD><TD align="left" valign="top">Query mode to use when executing query
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultLong"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultLong</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toResultLong</strong></h3></td></tr></table><p></p><p> Create widget. The columns are not readable and the number column is displayed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultLong"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultLong</strong> ()
+<br></td><td align="right"><h3><strong>~toResultLong</strong></h3></td></tr></table><p></p><A NAME="setStatistics"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setStatistics</strong> (<A HREF="toResultStats.html">toResultStats</A> *stats)
+<br></td><td align="right"><h3><strong>setStatistics</strong></h3></td></tr></table><p></p><p> Set statistics widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>stats</i></TD><TD align="left" valign="top">Statistics widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="running"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>running</strong> (void)
+<br></td><td align="right"><h3><strong>running</strong></h3></td></tr></table><p></p><p> Check if query is still running.
+</p>
+<p><b>Returns</b>: True if query is still running.
+   </p>
+<A NAME="query"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#query">toResultView</A>.</p>
+<A NAME="query"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#query">toResultView</A>.</p>
+<A NAME="editReadAll"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editReadAll</strong> (void)
+<br></td><td align="right"><h3><strong>editReadAll</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#editReadAll">toResultView</A>.</p>
+<A NAME="done"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>done</strong> (void)
+<br></td><td align="right"><h3><strong>done</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Emitted when query is finnished.
+   </p>
+<A NAME="firstResult"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>firstResult</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="toConnection__exception.html">toConnection::exception</A> &res,bool error)
+<br></td><td align="right"><h3><strong>firstResult</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Emitted when the first result is available.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL that was run.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>res</i></TD><TD align="left" valign="top">String describing result.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>error</i></TD><TD align="left" valign="top">Error has occurred.
+   </TD></TR>
+</TABLE></P>
+<A NAME="stop"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>stop</strong> (void)
+<br></td><td align="right"><h3><strong>stop</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Stop running query.
+   </p>
+<A NAME="addItem"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addItem</strong> (void)
+<br></td><td align="right"><h3><strong>addItem</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#addItem">toResultView</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultObject.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultObject.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultObject.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,50 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultObject</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultObject</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Used for getting slots into toResult. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Internal Use Only</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresult_h.html">toresult.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultObject.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toResultObject</A></b> (<A HREF="toResult.html">toResult</A> *result) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref3">connectionChanged</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref4">setup</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Used for getting slots into toResult.
+ </p>
+<A NAME="toResultObject"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultObject</strong> (<A HREF="toResult.html">toResult</A> *result)
+<br></td><td align="right"><h3><strong>toResultObject</strong></h3></td></tr></table><p></p><A NAME="connectionChanged"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>connectionChanged</strong> (void)
+<br></td><td align="right"><h3><strong>connectionChanged</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Called when connection is changed. Be sure to call the parent if you reimplement this.
+   </p>
+<A NAME="setup"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setup</strong> (void)
+<br></td><td align="right"><h3><strong>setup</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Called when timer times out
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultPie.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultPie.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultPie.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,177 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultPie</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultPie</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Display the result of a query in a piechart. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultpie_h.html">toresultpie.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toPieChart.html">toPieChart</A> <small>[public ]</small>, <i><A HREF="toResult.html">toResult</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultPie.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref10">toResultPie</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref11">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref12">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref13">stop</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref14">start</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref15">setLabelFirst</A></b> (bool first) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref16">labelFirst</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref17">setFilter</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qregexp.html">QRegExp</A> &filter,const <A HREF="/usr/lib/qt3/doc/html/qregexp.html">QRegExp</A> &valueFilter) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qregexp.html">QRegExp</A> &&nbsp;<b><A HREF="#ref18">filter</A></b> (void) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qregexp.html">QRegExp</A> &&nbsp;<b><A HREF="#ref19">valueFilter</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref20">setSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref21">setSQL</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref22">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref23">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref24">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref25">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref26">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref27">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref28">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Display the result of a query in a piechart. The first column of the query should
+ contain the value and the second should contain an optional label.
+ </p>
+<A NAME="toResultPie"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultPie</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultPie</strong></h3></td></tr></table><p></p><p> Create widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="query"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="canHandle"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>Reimplemented from <A HREF="toResult.html#canHandle">toResult</A>.</p>
+<A NAME="stop"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>stop</strong> ()
+<br></td><td align="right"><h3><strong>stop</strong></h3></td></tr></table><p></p><p> Stop automatic updating from tool timer.
+   </p>
+<A NAME="start"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>start</strong> ()
+<br></td><td align="right"><h3><strong>start</strong></h3></td></tr></table><p></p><p> Start automatic updating from tool timer.
+   </p>
+<A NAME="setLabelFirst"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setLabelFirst</strong> (bool first)
+<br></td><td align="right"><h3><strong>setLabelFirst</strong></h3></td></tr></table><p></p><p> Indicate that the first column should be the label.
+   </p>
+<A NAME="labelFirst"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>labelFirst</strong> (void)
+<br></td><td align="right"><h3><strong>labelFirst</strong></h3></td></tr></table><p></p><p> Check label first status.
+   </p>
+<A NAME="setFilter"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setFilter</strong> (const <A HREF="/usr/lib/qt3/doc/html/qregexp.html">QRegExp</A> &filter,const <A HREF="/usr/lib/qt3/doc/html/qregexp.html">QRegExp</A> &valueFilter)
+<br></td><td align="right"><h3><strong>setFilter</strong></h3></td></tr></table><p></p><p> Set a filter on which columns to add based on label.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>filter</i></TD><TD align="left" valign="top">A regexp which the label must match.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>valueFilter</i></TD><TD align="left" valign="top">A regexp which the value must match.
+   </TD></TR>
+</TABLE></P>
+<A NAME="filter"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qregexp.html">QRegExp</A> &&nbsp;<strong>filter</strong> (void)
+<br></td><td align="right"><h3><strong>filter</strong></h3></td></tr></table><p></p><p> Get the current filter.
+   </p>
+<A NAME="valueFilter"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qregexp.html">QRegExp</A> &&nbsp;<strong>valueFilter</strong> (void)
+<br></td><td align="right"><h3><strong>valueFilter</strong></h3></td></tr></table><p></p><p> Get the current value filter.
+   </p>
+<A NAME="setSQL"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">String containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list. This will also affect Name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="refresh"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#refresh">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented For internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultPlan.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultPlan.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultPlan.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultPlan</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultPlan</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays the execution plan of a statement. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultplan_h.html">toresultplan.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultView.html">toResultView</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultPlan.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref15">toResultPlan</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref16">~toResultPlan</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref17">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref18">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref19">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays the execution plan of a statement. The statement
+ is identified by the first parameter which should be the address as gotten
+ from the <A HREF="#toSQLToAddress">toSQLToAddress</A> function.
+ </p>
+<A NAME="toResultPlan"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultPlan</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultPlan</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultPlan"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultPlan</strong> ()
+<br></td><td align="right"><h3><strong>~toResultPlan</strong></h3></td></tr></table><p></p><p> Destruct object
+   </p>
+<A NAME="query"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons. If you prepend "SAVED:" a saved plan is read
+ with the identified_by set to the string following the initial "SAVED:" string.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#query">toResultView</A>.</p>
+<A NAME="query"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#query">toResultView</A>.</p>
+<A NAME="canHandle"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Support Oracle
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#canHandle">toResultView</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultReferences.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultReferences.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultReferences.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,67 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultReferences</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultReferences</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays information about other tables that references this one. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultreferences_h.html">toresultreferences.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultView.html">toResultView</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultReferences.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref8">toResultReferences</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref9">~toResultReferences</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref10">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref11">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays information about other tables that references this one.
+ The table is specified by the first and second parameter in the query. The sql is not
+ used in the query.
+ </p>
+<A NAME="toResultReferences"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultReferences</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultReferences</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultReferences"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultReferences</strong> ()
+<br></td><td align="right"><h3><strong>~toResultReferences</strong></h3></td></tr></table><p></p><p> Destruct object
+   </p>
+<A NAME="query"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#query">toResultView</A>.</p>
+<A NAME="canHandle"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Support Oracle
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#canHandle">toResultView</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultResources.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultResources.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultResources.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,50 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultResources</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultResources</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays information about resources of a query. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultresources_h.html">toresultresources.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultItem.html">toResultItem</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultResources.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toResultResources</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays information about resources of a query. The statement
+ is identified by the first parameter which should be the address as gotten
+ from the <A HREF="#toSQLToAddress">toSQLToAddress</A> function.
+ </p>
+<A NAME="toResultResources"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultResources</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultResources</strong></h3></td></tr></table><p></p><p> Create the widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultStats.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultStats.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultStats.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,138 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultStats</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultStats</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget will displays information about statistics in either a database or a session. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultstats_h.html">toresultstats.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultView.html">toResultView</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultStats.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref12">toResultStats</A></b> (bool OnlyChanged,int ses,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref13">toResultStats</A></b> (bool OnlyChanged,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref14">toResultStats</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref15">~toResultStats</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref16">resetStats</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref17">changeSession</A></b> (<A HREF="toQuery.html">toQuery</A> &conn) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref18">changeSession</A></b> (int ses) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref19">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref22">refreshStats</A></b> (bool reset=true) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref20">sessionChanged</A></b> (int ses) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref21">sessionChanged</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget will displays information about statistics in either a database or a session.
+ </p>
+<A NAME="toResultStats"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultStats</strong> (bool OnlyChanged,int ses,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultStats</strong></h3></td></tr></table><p></p><p> Create statistics widget for session statistics.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>OnlyChanged</i></TD><TD align="left" valign="top">Only display changed items.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>ses</i></TD><TD align="left" valign="top">Session ID to display info about.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultStats"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultStats</strong> (bool OnlyChanged,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultStats</strong></h3></td></tr></table><p></p><p> Create statistics widget for the current session statistics.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>OnlyChanged</i></TD><TD align="left" valign="top">Only display changed items.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultStats"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultStats</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toResultStats</strong></h3></td></tr></table><p></p><p> Create statistics widget for the current database statistics.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultStats"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultStats</strong> ()
+<br></td><td align="right"><h3><strong>~toResultStats</strong></h3></td></tr></table><p></p><p> Destroy object.
+   </p>
+<A NAME="resetStats"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>resetStats</strong> (void)
+<br></td><td align="right"><h3><strong>resetStats</strong></h3></td></tr></table><p></p><p> Reset statistics. Read in last values without updating widget data.
+   </p>
+<A NAME="changeSession"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>changeSession</strong> (<A HREF="toQuery.html">toQuery</A> &conn)
+<br></td><td align="right"><h3><strong>changeSession</strong></h3></td></tr></table><p></p><p> Change the session that the current query will run on.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>query</i></TD><TD align="left" valign="top">Query to check connection for.
+   </TD></TR>
+</TABLE></P>
+<A NAME="changeSession"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>changeSession</strong> (int ses)
+<br></td><td align="right"><h3><strong>changeSession</strong></h3></td></tr></table><p></p><p> Change session to specified id.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ses</i></TD><TD align="left" valign="top">Session ID to change to.
+   </TD></TR>
+</TABLE></P>
+<A NAME="canHandle"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Support Oracle
+   </p>
+<p>Reimplemented from <A HREF="toResultView.html#canHandle">toResultView</A>.</p>
+<A NAME="sessionChanged"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>sessionChanged</strong> (int ses)
+<br></td><td align="right"><h3><strong>sessionChanged</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Emitted when session is changed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ses</i></TD><TD align="left" valign="top">New session ID.
+   </TD></TR>
+</TABLE></P>
+<A NAME="sessionChanged"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>sessionChanged</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &)
+<br></td><td align="right"><h3><strong>sessionChanged</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Emitted when session is changed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ses</i></TD><TD align="left" valign="top">New session ID as string.
+   </TD></TR>
+</TABLE></P>
+<A NAME="refreshStats"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>refreshStats</strong> (bool reset=true)
+<br></td><td align="right"><h3><strong>refreshStats</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Update the statistics.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>reset</i></TD><TD align="left" valign="top">Set delta to current values. This means that the next time this widget
+              is updated the delta will be from the new values.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultView.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultView.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultView.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,337 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultView</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultView</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ This class defines a list which displays the result of a query. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultview_h.html">toresultview.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toListView.html">toListView</A> <small>[public ]</small>, <i><A HREF="toResult.html">toResult</A></i> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultConstraint.html">toResultConstraint</A>, <A HREF="toResultDepend.html">toResultDepend</A>, <A HREF="toResultIndexes.html">toResultIndexes</A>, <A HREF="toResultLong.html">toResultLong</A>, <A HREF="toResultPlan.html">toResultPlan</A>, <A HREF="toResultReferences.html">toResultReferences</A>, <A HREF="toResultStats.html">toResultStats</A></TD></TR>
+<TR><TH><A HREF="full-list-toResultView.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref14">toResultView</A></b> (bool readable,bool numCol,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref15">toResultView</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref16">~toResultView</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref17">setReadAll</A></b> (bool all) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref18">editReadAll</A></b> (void) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref19">queryColumns</A></b> ()  const
+</LI>
+<LI><A HREF="toQuery.html">toQuery</A> *&nbsp;<b><A HREF="#ref20">query</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref21">setFilter</A></b> (<A HREF="toResultFilter.html">toResultFilter</A> *filter) 
+</LI>
+<LI><A HREF="toResultFilter.html">toResultFilter</A> *&nbsp;<b><A HREF="#ref22">filter</A></b> (void) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref23">numberColumn</A></b> ()  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref24">setNumberColumn</A></b> (bool val) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref25">readableColumn</A></b> ()  const
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref26">setReadableColumns</A></b> (bool val) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *&nbsp;<b><A HREF="#ref27">createItem</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *last,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref28">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref29">sqlName</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref30">setSQLName</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref31">setSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref32">setSQL</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref33">query</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref34">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref35">query</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref36">editPrint</A></b> (void) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref37">middleString</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref38">addMenues</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref39">setSorting</A></b> (int col,bool asc=true) 
+</LI>
+<LI>virtual  int &nbsp;<b><A HREF="#ref40">sortColumn</A></b> ()  const
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref41">refresh</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref42">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref43">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref44">changeParams</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref45">addItem</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref46">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>void &nbsp;<b><A HREF="#ref12">setup</A></b> (bool readable,bool dispCol) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref13">eof</A></b> (void) 
+</LI>
+</ul><h4>Protected Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref49">menuCallback</A></b> (int) 
+</LI>
+</ul><h4>Protected Members</h4><ul><LI>toQuery *<b><A HREF="#ref5">Query</A></b></LI>
+<LI>QListViewItem *<b><A HREF="#ref6">LastItem</A></b></LI>
+<LI>int <b><A HREF="#ref7">RowNumber</A></b></LI>
+<LI>bool <b><A HREF="#ref8">ReadableColumns</A></b></LI>
+<LI>bool <b><A HREF="#ref9">NumberColumn</A></b></LI>
+<LI>bool <b><A HREF="#ref10">ReadAll</A></b></LI>
+<LI>toResultFilter *<b><A HREF="#ref11">Filter</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ This class defines a list which displays the result of a query.
+</p>
+<p> One special thing to know about this class is that columns at the end in which the
+ description start with a '-' characters are not displayed.
+ </p>
+<A NAME="Query"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQuery.html">toQuery</A> * <strong>Query</strong>
+</td><td align="right"><h3><strong>Query</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="LastItem"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> * <strong>LastItem</strong>
+</td><td align="right"><h3><strong>LastItem</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="RowNumber"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>RowNumber</strong>
+</td><td align="right"><h3><strong>RowNumber</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="ReadableColumns"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>ReadableColumns</strong>
+</td><td align="right"><h3><strong>ReadableColumns</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="NumberColumn"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>NumberColumn</strong>
+</td><td align="right"><h3><strong>NumberColumn</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="ReadAll"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>ReadAll</strong>
+</td><td align="right"><h3><strong>ReadAll</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Filter"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toResultFilter.html">toResultFilter</A> * <strong>Filter</strong>
+</td><td align="right"><h3><strong>Filter</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="setup"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setup</strong> (bool readable,bool dispCol)
+<br></td><td align="right"><h3><strong>setup</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Setup the list.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>readable</i></TD><TD align="left" valign="top">Wether to display first number column or not.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>dispCol</i></TD><TD align="left" valign="top">Wether to display first number column or not.
+   </TD></TR>
+</TABLE></P>
+<A NAME="eof"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>eof</strong> (void)
+<br></td><td align="right"><h3><strong>eof</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p> Check if end of query is detected yet or not.
+   </p>
+<A NAME="toResultView"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultView</strong> (bool readable,bool numCol,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toResultView</strong></h3></td></tr></table><p></p><p> Create list.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>readable</i></TD><TD align="left" valign="top">Indicate if columns are to be made more readable. This means that the
+ descriptions are capitalised and '_' are converted to ' '.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>numCol</i></TD><TD align="left" valign="top">If number column is to be displayed.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultView"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultView</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL,WFlags f=0)
+<br></td><td align="right"><h3><strong>toResultView</strong></h3></td></tr></table><p></p><p> Create list. The columns are not readable and the number column is displayed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of list.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>f</i></TD><TD align="left" valign="top">Widget flags.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultView"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toResultView</strong> ()
+<br></td><td align="right"><h3><strong>~toResultView</strong></h3></td></tr></table><p></p><A NAME="setReadAll"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setReadAll</strong> (bool all)
+<br></td><td align="right"><h3><strong>setReadAll</strong></h3></td></tr></table><p></p><p> Set the read all flag.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>all</i></TD><TD align="left" valign="top">New value of flag.
+   </TD></TR>
+</TABLE></P>
+<A NAME="editReadAll"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editReadAll</strong> (void)
+<br></td><td align="right"><h3><strong>editReadAll</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get read all flag
+</p>
+<p><b>Returns</b>: Value of read all flag.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editReadAll">toEditWidget</A>.</p>
+<A NAME="queryColumns"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>queryColumns</strong> ()
+<br></td><td align="right"><h3><strong>queryColumns</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get the number of columns in query.
+</p>
+<p><b>Returns</b>: Columns in query.
+   </p>
+<A NAME="query"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toQuery.html">toQuery</A> *&nbsp;<strong>query</strong> ()
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Get the query used to execute this.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="setFilter"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setFilter</strong> (<A HREF="toResultFilter.html">toResultFilter</A> *filter)
+<br></td><td align="right"><h3><strong>setFilter</strong></h3></td></tr></table><p></p><p> Set a filter to this list.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>filter</i></TD><TD align="left" valign="top">The new filter or NULL if no filter is to be used.
+   </TD></TR>
+</TABLE></P>
+<A NAME="filter"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toResultFilter.html">toResultFilter</A> *&nbsp;<strong>filter</strong> (void)
+<br></td><td align="right"><h3><strong>filter</strong></h3></td></tr></table><p></p><p> Get the current filter.
+</p>
+<p><b>Returns</b>: Current filter or NULL if no filter.
+   </p>
+<A NAME="numberColumn"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>numberColumn</strong> ()
+<br></td><td align="right"><h3><strong>numberColumn</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get number column flag.
+</p>
+<p><b>Returns</b>: Wether or not the numbercolumn is displayed.
+   </p>
+<A NAME="setNumberColumn"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setNumberColumn</strong> (bool val)
+<br></td><td align="right"><h3><strong>setNumberColumn</strong></h3></td></tr></table><p></p><p> Set number column flag. Don't change this while a query is running. Observe
+ that not all descendants of this class support changing this on the fly. The base
+ class and <A HREF="toResultLong.html">toResultLong</A> does though.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">New value of number column.
+   </TD></TR>
+</TABLE></P>
+<A NAME="readableColumn"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>readableColumn</strong> ()
+<br></td><td align="right"><h3><strong>readableColumn</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get readable column flag.
+</p>
+<p><b>Returns</b>: Wether or not the readable column names.
+   </p>
+<A NAME="setReadableColumns"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setReadableColumns</strong> (bool val)
+<br></td><td align="right"><h3><strong>setReadableColumns</strong></h3></td></tr></table><p></p><p> Set readable column flag.
+   </p>
+<A NAME="createItem"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *&nbsp;<strong>createItem</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *last,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>createItem</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Create a new item in this list. Can be used if a special kind of item is wanted
+ in the list. The rest of the columns will be filled with setText.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>last</i></TD><TD align="left" valign="top">Where to insert the item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to set first column to.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Allocated item.
+   </p>
+<A NAME="query"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,const <A HREF="#toQList">toQList</A> &param)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="sqlName"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>sqlName</strong> (void)
+<br></td><td align="right"><h3><strong>sqlName</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get SQL name of list.
+   </p>
+<p>Reimplemented from <A HREF="toListView.html#sqlName">toListView</A>.</p>
+<A NAME="setSQLName"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setSQLName</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>setSQLName</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set SQL name of list.
+   </p>
+<p>Reimplemented from <A HREF="toListView.html#setSQLName">toListView</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">String containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="setSQL"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setSQL</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>setSQL</strong></h3></td></tr></table><p></p><p> Set the SQL statement of this list. This will also affect Name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL containing statement.
+   </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toResult.html#setSQL">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="query"></A><A NAME="ref35"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>query</strong> (const <A HREF="toSQL.html">toSQL</A> &sql,<A HREF="#toQList">toQList</A> &par)
+<br></td><td align="right"><h3><strong>query</strong></h3></td></tr></table><p></p><p> Set new SQL and run query.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">New sql.
+</TD></TR>
+</TABLE></P>
+<p><b>See also</b>: setSQL</p>
+<p>Reimplemented from <A HREF="toResult.html#query">toResult</A>.</p>
+<A NAME="editPrint"></A><A NAME="ref36"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editPrint</strong> (void)
+<br></td><td align="right"><h3><strong>editPrint</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toListView.html#editPrint">toListView</A>.</p>
+<A NAME="middleString"></A><A NAME="ref37"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>middleString</strong> ()
+<br></td><td align="right"><h3><strong>middleString</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toListView.html#middleString">toListView</A>.</p>
+<A NAME="addMenues"></A><A NAME="ref38"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addMenues</strong> (<A HREF="/usr/lib/qt3/doc/html/qpopupmenu.html">QPopupMenu</A> *)
+<br></td><td align="right"><h3><strong>addMenues</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toListView.html#addMenues">toListView</A>.</p>
+<A NAME="setSorting"></A><A NAME="ref39"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setSorting</strong> (int col,bool asc=true)
+<br></td><td align="right"><h3><strong>setSorting</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="sortColumn"></A><A NAME="ref40"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>sortColumn</strong> ()
+<br></td><td align="right"><h3><strong>sortColumn</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="refresh"></A><A NAME="ref41"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#refresh">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref42"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref43"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented For internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="changeParams"></A><A NAME="ref44"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeParams</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param1,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param2,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &Param3)
+<br></td><td align="right"><h3><strong>changeParams</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#changeParams">toResult</A>.</p>
+<A NAME="addItem"></A><A NAME="ref45"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>addItem</strong> (void)
+<br></td><td align="right"><h3><strong>addItem</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Try to add an item to the list if available.
+   </p>
+<A NAME="canHandle"></A><A NAME="ref46"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Handle any connection by default
+   </p>
+<p>Reimplemented from <A HREF="toResult.html#canHandle">toResult</A>.</p>
+<A NAME="menuCallback"></A><A NAME="ref49"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>menuCallback</strong> (int)
+<br></td><td align="right"><h3><strong>menuCallback</strong></h3></td></tr></table><p> <small>[protected slots virtual slot]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toListView.html#menuCallback">toListView</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewCheck.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewCheck.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewCheck.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,167 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultViewCheck</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultViewCheck</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> An item to display in a toListView or toResultView. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultview_h.html">toresultview.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qchecklistitem.html">QCheckListItem</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultViewMLCheck.html">toResultViewMLCheck</A></TD></TR>
+<TR><TH><A HREF="full-list-toResultViewCheck.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref6">toResultViewCheck</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref7">toResultViewCheck</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref8">toResultViewCheck</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref9">toResultViewCheck</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref10">~toResultViewCheck</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref11">setText</A></b> (int col,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref12">setText</A></b> (int col,const <A HREF="toQValue.html">toQValue</A> &val) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref13">paintCell</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> * p,const <A HREF="/usr/lib/qt3/doc/html/qcolorgroup.html">QColorGroup</A> & cg,int column,int width,int align) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref14">text</A></b> (int col)  const
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref15">key</A></b> (int col,bool asc)  const
+</LI>
+<LI>virtual  int &nbsp;<b><A HREF="#ref16">width</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *, int col)  const
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref17">allText</A></b> (int col)  const
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref18">tooltip</A></b> (int col)  const
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  int &nbsp;<b><A HREF="#ref4">realWidth</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &fm, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *top, int column,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt)  const
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref5">firstText</A></b> (int col)  const
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> An item to display in a toListView or toResultView. They differ from normal
+ QListViewItems in that they can have a tooltip and actually contain more text
+ than is displayed in the cell of the listview.
+ </p>
+<A NAME="realWidth"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>realWidth</strong> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &fm, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *top, int column,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt)
+<br></td><td align="right"><h3><strong>realWidth</strong></h3></td></tr></table><p> <small>[protected const virtual]</small></p><A NAME="firstText"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>firstText</strong> (int col)
+<br></td><td align="right"><h3><strong>firstText</strong></h3></td></tr></table><p> <small>[protected const]</small></p><A NAME="toResultViewCheck"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultViewCheck</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller)
+<br></td><td align="right"><h3><strong>toResultViewCheck</strong></h3></td></tr></table><p></p><p> Create a new item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent list view.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>text</i></TD><TD align="left" valign="top">Text of first column.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">Type of check on this item.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultViewCheck"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultViewCheck</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller)
+<br></td><td align="right"><h3><strong>toResultViewCheck</strong></h3></td></tr></table><p></p><p> Create a new item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>text</i></TD><TD align="left" valign="top">Text of first column.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">Type of check on this item.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultViewCheck"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultViewCheck</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller)
+<br></td><td align="right"><h3><strong>toResultViewCheck</strong></h3></td></tr></table><p></p><p> Create a new item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent list view.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>after</i></TD><TD align="left" valign="top">After last item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>text</i></TD><TD align="left" valign="top">Text of first column.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">Type of check on this item.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultViewCheck"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultViewCheck</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller)
+<br></td><td align="right"><h3><strong>toResultViewCheck</strong></h3></td></tr></table><p></p><p> Create a new item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>after</i></TD><TD align="left" valign="top">After last item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>text</i></TD><TD align="left" valign="top">Text of first column.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">Type of check on this item.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultViewCheck"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toResultViewCheck</strong> ()
+<br></td><td align="right"><h3><strong>~toResultViewCheck</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="setText"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setText</strong> (int col,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="setText"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setText</strong> (int col,const <A HREF="toQValue.html">toQValue</A> &val)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set from database.
+   </p>
+<A NAME="paintCell"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintCell</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> * p,const <A HREF="/usr/lib/qt3/doc/html/qcolorgroup.html">QColorGroup</A> & cg,int column,int width,int align)
+<br></td><td align="right"><h3><strong>paintCell</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qchecklistitem.html#paintCell">QCheckListItem</A>.</p>
+<A NAME="text"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>text</strong> (int col)
+<br></td><td align="right"><h3><strong>text</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="key"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>key</strong> (int col,bool asc)
+<br></td><td align="right"><h3><strong>key</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> String to sort the data on. This is reimplemented so that numbers are sorted as numbers
+ and not as strings.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Column
+</TD></TR>
+<TR><TD align="left" valign="top"><i>asc</i></TD><TD align="left" valign="top">Wether to sort ascending or not.
+   </TD></TR>
+</TABLE></P>
+<A NAME="width"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>width</strong> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *, int col)
+<br></td><td align="right"><h3><strong>width</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="allText"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>allText</strong> (int col)
+<br></td><td align="right"><h3><strong>allText</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Get all text for this item. This is used for copying, drag & drop and memo editing etc.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Column.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: All of the text.
+   </p>
+<A NAME="tooltip"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>tooltip</strong> (int col)
+<br></td><td align="right"><h3><strong>tooltip</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Get the text to be displayed as tooltip for this item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Column.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The text to display as tooltip.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewCheck__keyData.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewCheck__keyData.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewCheck__keyData.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,46 @@
+<HTML>
+<HEAD>
+<TITLE>struct keyData</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct keyData</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toResultViewCheck.html">toResultViewCheck</A>::keyData</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultview_h.html">toresultview.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toResultViewCheck__keyData.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Types</h4><ul><LI>enum <A HREF="#ref5"></A> { String,Number }
+</LI>
+</ul><h4>Public Members</h4><ul><LI>QString <b><A HREF="#ref1">Data</A></b></LI>
+<LI>QString <b><A HREF="#ref2">KeyAsc</A></b></LI>
+<LI>QString <b><A HREF="#ref3">KeyDesc</A></b></LI>
+<LI>int <b><A HREF="#ref4">Width</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><A NAME="Data"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Data</strong>
+</td><td align="right"><h3><strong>Data</strong></h3></td></tr></table><p></p><A NAME="KeyAsc"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>KeyAsc</strong>
+</td><td align="right"><h3><strong>KeyAsc</strong></h3></td></tr></table><p></p><A NAME="KeyDesc"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>KeyDesc</strong>
+</td><td align="right"><h3><strong>KeyDesc</strong></h3></td></tr></table><p></p><A NAME="Width"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Width</strong>
+</td><td align="right"><h3><strong>Width</strong></h3></td></tr></table><p></p><A NAME=""></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>enum <strong></strong> { String,Number }
+</td><td align="right"><h3><strong></strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewItem.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewItem.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewItem.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,133 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultViewItem</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultViewItem</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> An item to display in a toListView or toResultView. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultview_h.html">toresultview.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toResultViewMLine.html">toResultViewMLine</A>, <A HREF="toTemplateItem.html">toTemplateItem</A>, <A HREF="toTemplateSQL.html">toTemplateSQL</A>, <A HREF="toTemplateText.html">toTemplateText</A></TD></TR>
+<TR><TH><A HREF="full-list-toResultViewItem.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref6">toResultViewItem</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &buf=QString::null) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref7">toResultViewItem</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &buf=QString::null) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref8">~toResultViewItem</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref9">setText</A></b> (int col,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref10">setText</A></b> (int col,const <A HREF="toQValue.html">toQValue</A> &val) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref11">paintCell</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> * p,const <A HREF="/usr/lib/qt3/doc/html/qcolorgroup.html">QColorGroup</A> & cg,int column,int width,int align) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref12">text</A></b> (int col)  const
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref13">key</A></b> (int col,bool asc)  const
+</LI>
+<LI>virtual  int &nbsp;<b><A HREF="#ref14">width</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *, int col)  const
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref15">allText</A></b> (int col)  const
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref16">tooltip</A></b> (int col)  const
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  int &nbsp;<b><A HREF="#ref5">realWidth</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &fm, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *top, int column,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt)  const
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> An item to display in a toListView or toResultView. They differ from normal
+ QListViewItems in that they can have a tooltip and actually contain more text
+ than is displayed in the cell of the listview.
+ </p>
+<A NAME="realWidth"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>realWidth</strong> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &fm, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *top, int column,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt)
+<br></td><td align="right"><h3><strong>realWidth</strong></h3></td></tr></table><p> <small>[protected const virtual]</small></p><A NAME="toResultViewItem"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultViewItem</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &buf=QString::null)
+<br></td><td align="right"><h3><strong>toResultViewItem</strong></h3></td></tr></table><p></p><p> Create a new item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent list view.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>after</i></TD><TD align="left" valign="top">Insert after this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>buffer</i></TD><TD align="left" valign="top">String to set as first column
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultViewItem"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultViewItem</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &buf=QString::null)
+<br></td><td align="right"><h3><strong>toResultViewItem</strong></h3></td></tr></table><p></p><p> Create a new item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent to this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>after</i></TD><TD align="left" valign="top">Insert after this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>buffer</i></TD><TD align="left" valign="top">String to set as first column
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toResultViewItem"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toResultViewItem</strong> ()
+<br></td><td align="right"><h3><strong>~toResultViewItem</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="setText"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setText</strong> (int col,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="setText"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setText</strong> (int col,const <A HREF="toQValue.html">toQValue</A> &val)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set from database.
+   </p>
+<A NAME="paintCell"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintCell</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> * p,const <A HREF="/usr/lib/qt3/doc/html/qcolorgroup.html">QColorGroup</A> & cg,int column,int width,int align)
+<br></td><td align="right"><h3><strong>paintCell</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="text"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>text</strong> (int col)
+<br></td><td align="right"><h3><strong>text</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="key"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>key</strong> (int col,bool asc)
+<br></td><td align="right"><h3><strong>key</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> String to sort the data on. This is reimplemented so that numbers are sorted as numbers
+ and not as strings.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Column
+</TD></TR>
+<TR><TD align="left" valign="top"><i>asc</i></TD><TD align="left" valign="top">Wether to sort ascending or not.
+   </TD></TR>
+</TABLE></P>
+<A NAME="width"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>width</strong> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *, int col)
+<br></td><td align="right"><h3><strong>width</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="allText"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>allText</strong> (int col)
+<br></td><td align="right"><h3><strong>allText</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Get all text for this item. This is used for copying, drag & drop and memo editing etc.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Column.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: All of the text.
+   </p>
+<A NAME="tooltip"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>tooltip</strong> (int col)
+<br></td><td align="right"><h3><strong>tooltip</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Get the text to be displayed as tooltip for this item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>col</i></TD><TD align="left" valign="top">Column.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: The text to display as tooltip.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewItem__keyData.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewItem__keyData.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewItem__keyData.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,46 @@
+<HTML>
+<HEAD>
+<TITLE>struct keyData</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct keyData</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toResultViewItem.html">toResultViewItem</A>::keyData</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultview_h.html">toresultview.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toResultViewItem__keyData.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Types</h4><ul><LI>enum <A HREF="#ref5"></A> { String,Number }
+</LI>
+</ul><h4>Public Members</h4><ul><LI>QString <b><A HREF="#ref1">Data</A></b></LI>
+<LI>QString <b><A HREF="#ref2">KeyAsc</A></b></LI>
+<LI>QString <b><A HREF="#ref3">KeyDesc</A></b></LI>
+<LI>int <b><A HREF="#ref4">Width</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><A NAME="Data"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Data</strong>
+</td><td align="right"><h3><strong>Data</strong></h3></td></tr></table><p></p><A NAME="KeyAsc"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>KeyAsc</strong>
+</td><td align="right"><h3><strong>KeyAsc</strong></h3></td></tr></table><p></p><A NAME="KeyDesc"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>KeyDesc</strong>
+</td><td align="right"><h3><strong>KeyDesc</strong></h3></td></tr></table><p></p><A NAME="Width"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Width</strong>
+</td><td align="right"><h3><strong>Width</strong></h3></td></tr></table><p></p><A NAME=""></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>enum <strong></strong> { String,Number }
+</td><td align="right"><h3><strong></strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewMLCheck.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewMLCheck.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewMLCheck.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,98 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultViewMLCheck</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultViewMLCheck</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This item expands the height to commodate all lines in the input buffer. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultview_h.html">toresultview.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultViewCheck.html">toResultViewCheck</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultViewMLCheck.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">toResultViewMLCheck</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref4">toResultViewMLCheck</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref5">setup</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">setText</A></b> (int,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref7">setText</A></b> (int col,const <A HREF="toQValue.html">toQValue</A> &val) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref8">text</A></b> (int col)  const
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref9">paintCell</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *pnt,const <A HREF="/usr/lib/qt3/doc/html/qcolorgroup.html">QColorGroup</A> & cg,int column,int width,int alignment) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  int &nbsp;<b><A HREF="#ref2">realWidth</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &fm, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *top, int column,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt)  const
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This item expands the height to commodate all lines in the input buffer.
+ </p>
+<A NAME="realWidth"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>realWidth</strong> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &fm, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *top, int column,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt)
+<br></td><td align="right"><h3><strong>realWidth</strong></h3></td></tr></table><p> <small>[protected const virtual]</small></p><p> Number of lines in the largest row.
+   </p>
+<p>Reimplemented from <A HREF="toResultViewCheck.html#realWidth">toResultViewCheck</A>.</p>
+<A NAME="toResultViewMLCheck"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultViewMLCheck</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller)
+<br></td><td align="right"><h3><strong>toResultViewMLCheck</strong></h3></td></tr></table><p></p><p> Create a new item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent list view.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>text</i></TD><TD align="left" valign="top">Text of first column.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">Type of check on this item.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultViewMLCheck"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultViewMLCheck</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &text,QCheckListItem::Type type=Controller)
+<br></td><td align="right"><h3><strong>toResultViewMLCheck</strong></h3></td></tr></table><p></p><p> Create a new item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>text</i></TD><TD align="left" valign="top">Text of first column.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>type</i></TD><TD align="left" valign="top">Type of check on this item.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setup"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setup</strong> (void)
+<br></td><td align="right"><h3><strong>setup</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<A NAME="setText"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setText</strong> (int,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultViewCheck.html#setText">toResultViewCheck</A>.</p>
+<A NAME="setText"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setText</strong> (int col,const <A HREF="toQValue.html">toQValue</A> &val)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set from database.
+   </p>
+<p>Reimplemented from <A HREF="toResultViewCheck.html#setText">toResultViewCheck</A>.</p>
+<A NAME="text"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>text</strong> (int col)
+<br></td><td align="right"><h3><strong>text</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultViewCheck.html#text">toResultViewCheck</A>.</p>
+<A NAME="paintCell"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintCell</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *pnt,const <A HREF="/usr/lib/qt3/doc/html/qcolorgroup.html">QColorGroup</A> & cg,int column,int width,int alignment)
+<br></td><td align="right"><h3><strong>paintCell</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultViewCheck.html#paintCell">toResultViewCheck</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewMLine.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewMLine.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toResultViewMLine.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,99 @@
+<HTML>
+<HEAD>
+<TITLE>class toResultViewMLine</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toResultViewMLine</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This item expands the height to commodate all lines in the input buffer. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="toresultview_h.html">toresultview.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultViewItem.html">toResultViewItem</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toResultViewMLine.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">toResultViewMLine</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &buf=QString::null) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref4">toResultViewMLine</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &buf=QString::null) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref5">setText</A></b> (int,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">setText</A></b> (int col,const <A HREF="toQValue.html">toQValue</A> &val) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref7">setup</A></b> (void) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref8">text</A></b> (int col)  const
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref9">paintCell</A></b> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *pnt,const <A HREF="/usr/lib/qt3/doc/html/qcolorgroup.html">QColorGroup</A> & cg,int column,int width,int alignment) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  int &nbsp;<b><A HREF="#ref2">realWidth</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &fm, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *top, int column,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt)  const
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This item expands the height to commodate all lines in the input buffer.
+ </p>
+<A NAME="realWidth"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>realWidth</strong> (const <A HREF="/usr/lib/qt3/doc/html/qfontmetrics.html">QFontMetrics</A> &fm, const <A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *top, int column,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &txt)
+<br></td><td align="right"><h3><strong>realWidth</strong></h3></td></tr></table><p> <small>[protected const virtual]</small></p><p> Number of lines in the largest row.
+   </p>
+<p>Reimplemented from <A HREF="toResultViewItem.html#realWidth">toResultViewItem</A>.</p>
+<A NAME="toResultViewMLine"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultViewMLine</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &buf=QString::null)
+<br></td><td align="right"><h3><strong>toResultViewMLine</strong></h3></td></tr></table><p></p><p> Create a new item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent list view.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>after</i></TD><TD align="left" valign="top">Insert after this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>buffer</i></TD><TD align="left" valign="top">String to set as first column
+   </TD></TR>
+</TABLE></P>
+<A NAME="toResultViewMLine"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toResultViewMLine</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &buf=QString::null)
+<br></td><td align="right"><h3><strong>toResultViewMLine</strong></h3></td></tr></table><p></p><p> Create a new item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent to this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>after</i></TD><TD align="left" valign="top">Insert after this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>buffer</i></TD><TD align="left" valign="top">String to set as first column
+   </TD></TR>
+</TABLE></P>
+<A NAME="setText"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setText</strong> (int,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultViewItem.html#setText">toResultViewItem</A>.</p>
+<A NAME="setText"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setText</strong> (int col,const <A HREF="toQValue.html">toQValue</A> &val)
+<br></td><td align="right"><h3><strong>setText</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set from database.
+   </p>
+<p>Reimplemented from <A HREF="toResultViewItem.html#setText">toResultViewItem</A>.</p>
+<A NAME="setup"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setup</strong> (void)
+<br></td><td align="right"><h3><strong>setup</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html#setup">QListViewItem</A>.</p>
+<A NAME="text"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>text</strong> (int col)
+<br></td><td align="right"><h3><strong>text</strong></h3></td></tr></table><p> <small>[const virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultViewItem.html#text">toResultViewItem</A>.</p>
+<A NAME="paintCell"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>paintCell</strong> (<A HREF="/usr/lib/qt3/doc/html/qpainter.html">QPainter</A> *pnt,const <A HREF="/usr/lib/qt3/doc/html/qcolorgroup.html">QColorGroup</A> & cg,int column,int width,int alignment)
+<br></td><td align="right"><h3><strong>paintCell</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toResultViewItem.html#paintCell">toResultViewItem</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSGAStatement.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSGAStatement.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSGAStatement.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,61 @@
+<HTML>
+<HEAD>
+<TITLE>class toSGAStatement</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSGAStatement</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget displays information about a statement in the Oracle SGA. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosgastatement_h.html">tosgastatement.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html">QTabWidget</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toSGAStatement.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref8">toSGAStatement</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>virtual  void &nbsp;<b><A HREF="#ref9">changeAddress</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &address) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref10">refresh</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget displays information about a statement in the Oracle SGA. To get an
+ address use the <A HREF="#toSQLToAddress">toSQLToAddress</A> function.
+ </p>
+<A NAME="toSGAStatement"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toSGAStatement</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>toSGAStatement</strong></h3></td></tr></table><p></p><p> Create widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="changeAddress"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>changeAddress</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &address)
+<br></td><td align="right"><h3><strong>changeAddress</strong></h3></td></tr></table><p> <small>[virtual slot]</small></p><p> Display another statement.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>address</i></TD><TD align="left" valign="top">Address of the statement to display.
+   </TD></TR>
+</TABLE></P>
+<A NAME="refresh"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>refresh</strong> (void)
+<br></td><td align="right"><h3><strong>refresh</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Update the contents of this widget.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSMTP.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSMTP.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSMTP.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,58 @@
+<HTML>
+<HEAD>
+<TITLE>class toSMTP</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSMTP</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Used to send mail asyncronously. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosmtp_h.html">tosmtp.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toSMTP.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toSMTP</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &from,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &to,
+	 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &subject,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &body) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref2">~toSMTP</A></b> () 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Used to send mail asyncronously. Just create an instance and forget it.
+ It will delete itself when done.
+ </p>
+<A NAME="toSMTP"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toSMTP</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &from,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &to,
+	 const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &subject,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &body)
+<br></td><td align="right"><h3><strong>toSMTP</strong></h3></td></tr></table><p></p><p> Send an email.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>from</i></TD><TD align="left" valign="top">From field of email.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>to</i></TD><TD align="left" valign="top">To field of email header.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>subject</i></TD><TD align="left" valign="top">Subject of mail.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>body</i></TD><TD align="left" valign="top">Body of email message.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toSMTP"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toSMTP</strong> ()
+<br></td><td align="right"><h3><strong>~toSMTP</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSQL.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSQL.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSQL.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,302 @@
+<HTML>
+<HEAD>
+<TITLE>class toSQL</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSQL</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ This class handles an abstraction of SQL statements used by TOra to extract
+ information and manipulate data. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosql_h.html">tosql.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toSQL.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Types</h4><ul><LI>struct <A HREF="toSQL__version.html">version</A>
+</LI>
+<LI>struct <A HREF="toSQL__definition.html">definition</A>
+</LI>
+<LI>typedef std::map<QCString,definition>  <A HREF="#ref3">sqlMap</A>
+</LI>
+</ul><h4>Public Methods</h4><ul><LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref23">operator ()</A></b> (const <A HREF="toConnection.html">toConnection</A> &conn)  const
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &&nbsp;<b><A HREF="#ref24">name</A></b> (void)  const
+</LI>
+<LI>&nbsp;<b><A HREF="#ref25">toSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,
+	const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+	const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &description="",
+	const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &ver="8.1",
+	const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider="Oracle") 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  bool &nbsp;<b><A HREF="#ref10">updateSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,
+		        const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+		        const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &description,
+		        const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &ver="8.1",
+			const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider="Oracle",
+			bool modified=true) 
+</LI>
+<LI>static  bool &nbsp;<b><A HREF="#ref11">deleteSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,
+		        const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &ver,
+			const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider="Oracle") 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref12">string</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,const <A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref13">string</A></b> (const <A HREF="toSQL.html">toSQL</A> &sqldef,const <A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref14">description</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref15">description</A></b> (const <A HREF="toSQL.html">toSQL</A> &sql) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<b><A HREF="#ref16">sql</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,const <A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<b><A HREF="#ref17">sql</A></b> (const <A HREF="toSQL.html">toSQL</A> &sqldef,const <A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>static  <A HREF="toSQL.html">toSQL</A> &nbsp;<b><A HREF="#ref18">sql</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name) 
+</LI>
+<LI>static  std::list<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>> &nbsp;<b><A HREF="#ref19">range</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &startWith) 
+</LI>
+<LI>static  bool &nbsp;<b><A HREF="#ref20">saveSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &file,bool all=false) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref21">loadSQL</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &file) 
+</LI>
+<LI>static  const sqlMap &&nbsp;<b><A HREF="#ref22">definitions</A></b> (void) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>static const char * const <b><A HREF="#ref8">TOSQL_USERLIST</A></b></LI>
+<LI>static const char * const <b><A HREF="#ref9">TOSQL_CREATEPLAN</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ This class handles an abstraction of SQL statements used by TOra to extract
+ information and manipulate data. This is usefull in two ways, first off you
+ can edit the strings using a handy editor inside TOra if you find bugs. Also
+ you can use different statements for different Oracle versions. You can also
+ add support for new versions of Oracle without any need for recompilation or
+ programming knowledge.
+</p>
+<p> All information about SQL statements are stored in one global static map which
+ contains a name, a description and one or several statements connected to one
+ Oracle version.
+</p>
+<p> To determine which SQL to use the statement with the highest
+ version not above the current connection is used. If no statements below or
+ equal to the current version is available the lowest available is used.
+</p>
+<p> All strings are specific for a given database provider. No attempt to use
+ strings from other providers will be made.
+ </p>
+<A NAME="toSQL__version.html"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>version</strong> <small>(struct)</small></td><td align="right"><h3><strong>version</strong></h3></td></tr></table><p></p><p>
+ Contains a statement with it's version.
+   </p>
+<A NAME="toSQL__definition.html"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>definition</strong> <small>(struct)</small></td><td align="right"><h3><strong>definition</strong></h3></td></tr></table><p></p><p>
+ Definition of one toSQL statement with its description and versions.
+   </p>
+<A NAME="sqlMap"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>typedef std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,definition>  <strong>sqlMap</strong></td><td align="right"><h3><strong>sqlMap</strong></h3></td></tr></table><p></p><p> Type of map of statement names to statement definitions.
+   </p>
+<A NAME="TOSQL_USERLIST"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const char * const  <strong>TOSQL_USERLIST</strong>
+</td><td align="right"><h3><strong>TOSQL_USERLIST</strong></h3></td></tr></table><p></p><A NAME="TOSQL_CREATEPLAN"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>static const char * const  <strong>TOSQL_CREATEPLAN</strong>
+</td><td align="right"><h3><strong>TOSQL_CREATEPLAN</strong></h3></td></tr></table><p></p><A NAME="updateSQL"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>updateSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,
+		        const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+		        const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &description,
+		        const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &ver="8.1",
+			const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider="Oracle",
+			bool modified=true)
+<br></td><td align="right"><h3><strong>updateSQL</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Update the map with new information.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of this SQL statement.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">Statement to execute for this SQL.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>description</i></TD><TD align="left" valign="top">Description of this SQL.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>ver</i></TD><TD align="left" valign="top">Version of database this statement is meant for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>provider</i></TD><TD align="left" valign="top">Database provider this string is used for.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>modified</i></TD><TD align="left" valign="top">Wether this is a modification or an addition to the map.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: True if a new statement was saved, otherwise false.
+   </p>
+<A NAME="deleteSQL"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>deleteSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,
+		        const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &ver,
+			const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider="Oracle")
+<br></td><td align="right"><h3><strong>deleteSQL</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Remove an SQL statement from a map. If the last version is removed
+ from a statement it's definition is also removed.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name to remove.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>ver</i></TD><TD align="left" valign="top">Version to remove.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>provider</i></TD><TD align="left" valign="top">Provider to delete.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: True if a version was found to be removed.
+   </p>
+<A NAME="string"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>string</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,const <A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>string</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get the statement of an SQL.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of statement.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to get version from.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String containing the statement.
+</p>
+<p><b>Throws</b>: QString, with, description, of, problem, fetching, string.</p>
+<A NAME="string"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>string</strong> (const <A HREF="toSQL.html">toSQL</A> &sqldef,const <A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>string</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get the statement of an SQL.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sqlDef</i></TD><TD align="left" valign="top">SQL to get name of statement from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to get version from.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String containing the statement.
+</p>
+<p><b>Throws</b>: QString, with, description, of, problem, fetching, string.</p>
+<A NAME="description"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>description</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name)
+<br></td><td align="right"><h3><strong>description</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get description of an SQL.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of SQL to get name from..
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String containing description.
+</p>
+<p><b>Throws</b>: QString, with, description, of, problem, fetching, string.</p>
+<A NAME="description"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>description</strong> (const <A HREF="toSQL.html">toSQL</A> &sql)
+<br></td><td align="right"><h3><strong>description</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get description of an SQL.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sqlDef</i></TD><TD align="left" valign="top">SQL to get name of statement from.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String containing description.
+</p>
+<p><b>Throws</b>: QString, with, description, of, problem, fetching, string.</p>
+<A NAME="sql"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<strong>sql</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,const <A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>sql</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get the statement of an SQL.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of statement.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to get version from.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String containing the statement.
+</p>
+<p><b>Throws</b>: QString, with, description, of, problem, fetching, string.</p>
+<A NAME="sql"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<strong>sql</strong> (const <A HREF="toSQL.html">toSQL</A> &sqldef,const <A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>sql</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get the statement of an SQL.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>sqlDef</i></TD><TD align="left" valign="top">SQL to get name of statement from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to get version from.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String containing the statement.
+</p>
+<p><b>Throws</b>: QString, with, description, of, problem, fetching, string.</p>
+<A NAME="sql"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toSQL.html">toSQL</A> &nbsp;<strong>sql</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name)
+<br></td><td align="right"><h3><strong>sql</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get an SQL from a specified name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name to get SQL for.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: a toSQL object for given name.
+   </p>
+<A NAME="range"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>> &nbsp;<strong>range</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &startWith)
+<br></td><td align="right"><h3><strong>range</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Get all defined names that start with a given substring.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>startWith</i></TD><TD align="left" valign="top">The string that the name should start with.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of names available.
+   </p>
+<A NAME="saveSQL"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>saveSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &file,bool all=false)
+<br></td><td align="right"><h3><strong>saveSQL</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Save SQL definitions to file.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>file</i></TD><TD align="left" valign="top">Filename to save to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>all</i></TD><TD align="left" valign="top">If true all statements will be saved, otherwised only modified are saved.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: True if saved successfully.
+   </p>
+<A NAME="loadSQL"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>loadSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &file)
+<br></td><td align="right"><h3><strong>loadSQL</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Load definitions from file.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>file</i></TD><TD align="left" valign="top">Filename to load from.
+</TD></TR>
+</TABLE></P>
+<p><b>Throws</b>: s, QString, describing, the, problem, loading.</p>
+<A NAME="definitions"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> const sqlMap &&nbsp;<strong>definitions</strong> (void)
+<br></td><td align="right"><h3><strong>definitions</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get the entire map of SQL definitions
+</p>
+<p><b>Returns</b>: A reference to the map of definitions.
+   </p>
+<A NAME="operator%20()"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>operator ()</strong> (const <A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>operator ()</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get the statement of an SQL.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to get version from.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: String containing the statement.
+   </p>
+<A NAME="name"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &&nbsp;<strong>name</strong> (void)
+<br></td><td align="right"><h3><strong>name</strong></h3></td></tr></table><p> <small>[const]</small></p><p> Get name of this SQL.
+</p>
+<p><b>Returns</b>: Name.
+   </p>
+<A NAME="toSQL"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toSQL</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name,
+	const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,
+	const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &description="",
+	const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &ver="8.1",
+	const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider="Oracle")
+<br></td><td align="right"><h3><strong>toSQL</strong></h3></td></tr></table><p></p><p> Create a new SQL. Observe that the only thing this does is insert the supplied
+ information into the definition map, deleting the SQL will not the information from
+ the defitinion map. Only one description can be made for each statement name.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of SQL.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">Statement of this SQL.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>description</i></TD><TD align="left" valign="top">Description of statement.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>ver</i></TD><TD align="left" valign="top">Version this statement applies to.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>provider</i></TD><TD align="left" valign="top">Provider this string is for.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,265 @@
+<HTML>
+<HEAD>
+<TITLE>class toSQLParse</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSQLParse</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A bunch of functions to parse and indent SQL text. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosqlparse_h.html">tosqlparse.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toSQLParse.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Types</h4><ul><LI>struct <A HREF="toSQLParse__settings.html">settings</A>
+</LI>
+<LI>class <A HREF="toSQLParse__statement.html">statement</A>
+</LI>
+<LI>class <i><A HREF="toSQLParse__tokenizer.html">tokenizer</A></i>
+</LI>
+<LI>class <A HREF="toSQLParse__stringTokenizer.html">stringTokenizer</A>
+</LI>
+<LI>class <A HREF="toSQLParse__editorTokenizer.html">editorTokenizer</A>
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  std::list<statement> &nbsp;<b><A HREF="#ref6">parse</A></b> (tokenizer &tokens) 
+</LI>
+<LI>static  std::list<statement> &nbsp;<b><A HREF="#ref7">parse</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>static  std::list<statement> &nbsp;<b><A HREF="#ref8">parse</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>static  statement &nbsp;<b><A HREF="#ref9">parseStatement</A></b> (tokenizer &tokens) 
+</LI>
+<LI>static  statement &nbsp;<b><A HREF="#ref10">parseStatement</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>static  statement &nbsp;<b><A HREF="#ref11">parseStatement</A></b> (tokenizer &tokens,<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>static  statement &nbsp;<b><A HREF="#ref12">parseStatement</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref13">indent</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref14">indentStatement</A></b> (statement &stat,<A HREF="toConnection.html">toConnection</A> &conn,int level=0) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref15">indentStatement</A></b> (statement &stat,int level=0) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref16">indent</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref17">indentString</A></b> (int level) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref18">indent</A></b> (std::list<statement> &stat,<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref19">indent</A></b> (std::list<statement> &stat) 
+</LI>
+<LI>static  int &nbsp;<b><A HREF="#ref20">countIndent</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,int &chars) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref21">indent</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &syntax) 
+</LI>
+<LI>static  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref22">indent</A></b> (std::list<statement> &stat,<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &syntax) 
+</LI>
+<LI>static  settings &nbsp;<b><A HREF="#ref26">getSetting</A></b> (void) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref27">setSetting</A></b> (const settings &setting) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A bunch of functions to parse and indent SQL text.
+ </p>
+<A NAME="toSQLParse__settings.html"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>settings</strong> <small>(struct)</small></td><td align="right"><h3><strong>settings</strong></h3></td></tr></table><p></p><A NAME="toSQLParse__statement.html"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>statement</strong> <small>(class)</small></td><td align="right"><h3><strong>statement</strong></h3></td></tr></table><p></p><p> Structure the statement is parsed into.
+   </p>
+<A NAME="toSQLParse__tokenizer.html"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>tokenizer</strong> <small>(class)</small></td><td align="right"><h3><strong>tokenizer</strong></h3></td></tr></table><p></p><p> Abstract class to define a source of tokens for the parser.
+   </p>
+<A NAME="toSQLParse__stringTokenizer.html"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>stringTokenizer</strong> <small>(class)</small></td><td align="right"><h3><strong>stringTokenizer</strong></h3></td></tr></table><p></p><p> Tokenizer class which gets tokens from a string.
+   </p>
+<A NAME="toSQLParse__editorTokenizer.html"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>editorTokenizer</strong> <small>(class)</small></td><td align="right"><h3><strong>editorTokenizer</strong></h3></td></tr></table><p></p><p> Tokenizer class which gets tokens from an editor.
+   </p>
+<A NAME="parse"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<statement> &nbsp;<strong>parse</strong> (tokenizer &tokens)
+<br></td><td align="right"><h3><strong>parse</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Parse a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tokens</i></TD><TD align="left" valign="top">Tokenizer provider to generate parsed tree from.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Parsed statement tree.
+   </p>
+<A NAME="parse"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<statement> &nbsp;<strong>parse</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>parse</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Parse a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to parse.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Parsed statement tree.
+   </p>
+<A NAME="parse"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<statement> &nbsp;<strong>parse</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>parse</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Parse a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to parse.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to determine SQL dialect. (For future use)
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Parsed statement tree.
+   </p>
+<A NAME="parseStatement"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> statement &nbsp;<strong>parseStatement</strong> (tokenizer &tokens)
+<br></td><td align="right"><h3><strong>parseStatement</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get one statement (or block) from the root of an editor or string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tokens</i></TD><TD align="left" valign="top">Tokenizer to get tokens from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to determine SQL dialog. (For future use)
+   </TD></TR>
+</TABLE></P>
+<A NAME="parseStatement"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> statement &nbsp;<strong>parseStatement</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>parseStatement</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get one statement (or block) from the root of an editor or string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Tokenizer to get tokens from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to determine SQL dialog. (For future use)
+   </TD></TR>
+</TABLE></P>
+<A NAME="parseStatement"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> statement &nbsp;<strong>parseStatement</strong> (tokenizer &tokens,<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>parseStatement</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get one statement (or block) from the root of an editor or string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tokens</i></TD><TD align="left" valign="top">Tokenizer to get tokens from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to determine SQL dialog. (For future use)
+   </TD></TR>
+</TABLE></P>
+<A NAME="parseStatement"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> statement &nbsp;<strong>parseStatement</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>parseStatement</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get one statement (or block) from the root of an editor or string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Tokenizer to get tokens from.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to determine SQL dialog. (For future use)
+   </TD></TR>
+</TABLE></P>
+<A NAME="indent"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>indent</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str)
+<br></td><td align="right"><h3><strong>indent</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Indent a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to indent.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: An indented string.
+   </p>
+<A NAME="indentStatement"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>indentStatement</strong> (statement &stat,<A HREF="toConnection.html">toConnection</A> &conn,int level=0)
+<br></td><td align="right"><h3><strong>indentStatement</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Indent a parse statement structure into a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>stat</i></TD><TD align="left" valign="top">Statement to indent.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>level</i></TD><TD align="left" valign="top">Initial indentation level to use.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>syntax</i></TD><TD align="left" valign="top">The syntax analyzer to use.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A string with the indented statement.
+   </p>
+<A NAME="indentStatement"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>indentStatement</strong> (statement &stat,int level=0)
+<br></td><td align="right"><h3><strong>indentStatement</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Indent a parse statement structure into a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>stat</i></TD><TD align="left" valign="top">Statement to indent.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>level</i></TD><TD align="left" valign="top">Initial indentation level to use.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A string with the indented statement.
+   </p>
+<A NAME="indent"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>indent</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>indent</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Indent a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to indent.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to determine SQL dialect. (For future use)
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: An indented string.
+   </p>
+<A NAME="indentString"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>indentString</strong> (int level)
+<br></td><td align="right"><h3><strong>indentString</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Create an indentation string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>level</i></TD><TD align="left" valign="top">Number of characters to indent.
+   </TD></TR>
+</TABLE></P>
+<A NAME="indent"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>indent</strong> (std::list<statement> &stat,<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>indent</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Indent a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">List of statements
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to determine SQL dialect. (For future use)
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: An indented string.
+   </p>
+<A NAME="indent"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>indent</strong> (std::list<statement> &stat)
+<br></td><td align="right"><h3><strong>indent</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Indent a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>stat</i></TD><TD align="left" valign="top">List of statements
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: An indented string.
+   </p>
+<A NAME="countIndent"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>countIndent</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,int &chars)
+<br></td><td align="right"><h3><strong>countIndent</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Count indentation level of a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to check.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>chars</i></TD><TD align="left" valign="top">Position in string.
+   </TD></TR>
+</TABLE></P>
+<A NAME="indent"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>indent</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &syntax)
+<br></td><td align="right"><h3><strong>indent</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Indent a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">String to indent.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>syntax</i></TD><TD align="left" valign="top">Syntax analyzer to determine SQL dialect. (For future use)
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: An indented string.
+   </p>
+<A NAME="indent"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>indent</strong> (std::list<statement> &stat,<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &syntax)
+<br></td><td align="right"><h3><strong>indent</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Indent a string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>stat</i></TD><TD align="left" valign="top">List of statements
+</TD></TR>
+<TR><TD align="left" valign="top"><i>syntax</i></TD><TD align="left" valign="top">Syntax analyzer to determine SQL dialect. (For future use)
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: An indented string.
+   </p>
+<A NAME="getSetting"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> settings &nbsp;<strong>getSetting</strong> (void)
+<br></td><td align="right"><h3><strong>getSetting</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get current settings.
+   </p>
+<A NAME="setSetting"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setSetting</strong> (const settings &setting)
+<br></td><td align="right"><h3><strong>setSetting</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get current settings.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__editorTokenizer.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__editorTokenizer.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__editorTokenizer.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,71 @@
+<HTML>
+<HEAD>
+<TITLE>class editorTokenizer</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class editorTokenizer</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Tokenizer class which gets tokens from an editor. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toSQLParse.html">toSQLParse</A>::editorTokenizer</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosqlparse_h.html">tosqlparse.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><i><A HREF="toSQLParse__tokenizer.html">toSQLParse::tokenizer</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toSQLParse__editorTokenizer.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">editorTokenizer</A></b> (<A HREF="toMarkedText.html">toMarkedText</A> *editor,int offset=0,int line=0) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref3">getToken</A></b> (bool forward=true,bool comment=false) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref4">remaining</A></b> (bool eol) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Tokenizer class which gets tokens from an editor.
+   </p>
+<A NAME="editorTokenizer"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>editorTokenizer</strong> (<A HREF="toMarkedText.html">toMarkedText</A> *editor,int offset=0,int line=0)
+<br></td><td align="right"><h3><strong>editorTokenizer</strong></h3></td></tr></table><p></p><p> Create a tokenizer which takes its input from an editor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>editor</i></TD><TD align="left" valign="top">The editor to read from. Observe that if this
+ is a syntax highlighted editor the syntax analyzer is used
+ that is used for the editor.
+     </TD></TR>
+</TABLE></P>
+<A NAME="getToken"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>getToken</strong> (bool forward=true,bool comment=false)
+<br></td><td align="right"><h3><strong>getToken</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get a token from the string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>forward</i></TD><TD align="left" valign="top">Go forward or backwards to get next token.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>comment</i></TD><TD align="left" valign="top">Include comments as tokens.
+     </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toSQLParse__tokenizer.html#getToken">tokenizer</A>.</p>
+<A NAME="remaining"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>remaining</strong> (bool eol)
+<br></td><td align="right"><h3><strong>remaining</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get the data remaining after the current position.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>eol</i></TD><TD align="left" valign="top">If true end of line, otherwise end of tokenizer.
+     </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toSQLParse__tokenizer.html#remaining">tokenizer</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__settings.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__settings.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__settings.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,53 @@
+<HTML>
+<HEAD>
+<TITLE>struct settings</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct settings</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toSQLParse.html">toSQLParse</A>::settings</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosqlparse_h.html">tosqlparse.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toSQLParse__settings.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Members</h4><ul><LI>bool <b><A HREF="#ref1">ExpandSpaces</A></b></LI>
+<LI>bool <b><A HREF="#ref2">CommaBefore</A></b></LI>
+<LI>bool <b><A HREF="#ref3">BlockOpenLine</A></b></LI>
+<LI>bool <b><A HREF="#ref4">OperatorSpace</A></b></LI>
+<LI>bool <b><A HREF="#ref5">KeywordUpper</A></b></LI>
+<LI>bool <b><A HREF="#ref6">RightSeparator</A></b></LI>
+<LI>bool <b><A HREF="#ref7">EndBlockNewline</A></b></LI>
+<LI>int <b><A HREF="#ref8">IndentLevel</A></b></LI>
+<LI>int <b><A HREF="#ref9">CommentColumn</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><A NAME="ExpandSpaces"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>ExpandSpaces</strong>
+</td><td align="right"><h3><strong>ExpandSpaces</strong></h3></td></tr></table><p></p><A NAME="CommaBefore"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>CommaBefore</strong>
+</td><td align="right"><h3><strong>CommaBefore</strong></h3></td></tr></table><p></p><A NAME="BlockOpenLine"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>BlockOpenLine</strong>
+</td><td align="right"><h3><strong>BlockOpenLine</strong></h3></td></tr></table><p></p><A NAME="OperatorSpace"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>OperatorSpace</strong>
+</td><td align="right"><h3><strong>OperatorSpace</strong></h3></td></tr></table><p></p><A NAME="KeywordUpper"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>KeywordUpper</strong>
+</td><td align="right"><h3><strong>KeywordUpper</strong></h3></td></tr></table><p></p><A NAME="RightSeparator"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>RightSeparator</strong>
+</td><td align="right"><h3><strong>RightSeparator</strong></h3></td></tr></table><p></p><A NAME="EndBlockNewline"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>EndBlockNewline</strong>
+</td><td align="right"><h3><strong>EndBlockNewline</strong></h3></td></tr></table><p></p><A NAME="IndentLevel"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>IndentLevel</strong>
+</td><td align="right"><h3><strong>IndentLevel</strong></h3></td></tr></table><p></p><A NAME="CommentColumn"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>CommentColumn</strong>
+</td><td align="right"><h3><strong>CommentColumn</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__statement.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__statement.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__statement.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,87 @@
+<HTML>
+<HEAD>
+<TITLE>class statement</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class statement</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Structure the statement is parsed into. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toSQLParse.html">toSQLParse</A>::statement</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosqlparse_h.html">tosqlparse.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toSQLParse__statement.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Types</h4><ul><LI>enum <A HREF="#ref2">type</A> {      Block,
+      /** Start of statement.
+}
+</LI>
+</ul><h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref6">statement</A></b> (type ntype=Token,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &token=QString::null,int cline=-1) 
+</LI>
+<LI>std::list<statement> &&nbsp;<b><A HREF="#ref7">subTokens</A></b> () 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref8">statement</A></b> (const statement &) 
+</LI>
+<LI>const statement &&nbsp;<b><A HREF="#ref9">operator = </A></b> (const statement &) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref10">operator == </A></b> (const statement &)  const
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref11">operator != </A></b> (const statement &stat)  const
+</LI>
+<LI>&nbsp;<b><A HREF="#ref12">~statement</A></b> () 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>QString <b><A HREF="#ref3">Comment</A></b></LI>
+<LI>QString <b><A HREF="#ref4">String</A></b></LI>
+<LI>int <b><A HREF="#ref5">Line</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Structure the statement is parsed into.
+   </p>
+<A NAME="type"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>enum <strong>type</strong> {      Block,
+      /** Start of statement.
+}
+</td><td align="right"><h3><strong>type</strong></h3></td></tr></table><p></p><p> Start of block.
+       </p>
+<A NAME="Comment"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Comment</strong>
+</td><td align="right"><h3><strong>Comment</strong></h3></td></tr></table><p></p><A NAME="String"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>String</strong>
+</td><td align="right"><h3><strong>String</strong></h3></td></tr></table><p></p><A NAME="Line"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Line</strong>
+</td><td align="right"><h3><strong>Line</strong></h3></td></tr></table><p></p><A NAME="statement"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>statement</strong> (type ntype=Token,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &token=QString::null,int cline=-1)
+<br></td><td align="right"><h3><strong>statement</strong></h3></td></tr></table><p></p><p> Create statement
+     </p>
+<A NAME="subTokens"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<statement> &&nbsp;<strong>subTokens</strong> ()
+<br></td><td align="right"><h3><strong>subTokens</strong></h3></td></tr></table><p></p><p> Allocate subtokens if not available and return reference to subtokens
+     </p>
+<A NAME="statement"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>statement</strong> (const statement &)
+<br></td><td align="right"><h3><strong>statement</strong></h3></td></tr></table><p></p><p> Copy constructor
+     </p>
+<A NAME="operator%20=%20"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const statement &&nbsp;<strong>operator = </strong> (const statement &)
+<br></td><td align="right"><h3><strong>operator = </strong></h3></td></tr></table><p></p><p> Copy operator
+     </p>
+<A NAME="operator%20==%20"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>operator == </strong> (const statement &)
+<br></td><td align="right"><h3><strong>operator == </strong></h3></td></tr></table><p> <small>[const]</small></p><p> Equality operator. Does not include the line for comparison.
+     </p>
+<A NAME="operator%20!=%20"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>operator != </strong> (const statement &stat)
+<br></td><td align="right"><h3><strong>operator != </strong></h3></td></tr></table><p> <small>[const]</small></p><p> Non rquality operator. Does not include the line for comparison.
+     </p>
+<A NAME="~statement"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~statement</strong> ()
+<br></td><td align="right"><h3><strong>~statement</strong></h3></td></tr></table><p></p><p> Destroy statement
+     </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__stringTokenizer.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__stringTokenizer.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__stringTokenizer.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,66 @@
+<HTML>
+<HEAD>
+<TITLE>class stringTokenizer</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class stringTokenizer</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Tokenizer class which gets tokens from a string. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toSQLParse.html">toSQLParse</A>::stringTokenizer</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosqlparse_h.html">tosqlparse.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><i><A HREF="toSQLParse__tokenizer.html">toSQLParse::tokenizer</A></i> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toSQLParse__stringTokenizer.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">stringTokenizer</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,int offset=0,int line=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref3">stringTokenizer</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &analyzer,int offset=0,int line=0) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref4">getToken</A></b> (bool forward=true,bool comment=false) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><A HREF="#ref5">remaining</A></b> (bool eol) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Tokenizer class which gets tokens from a string.
+   </p>
+<A NAME="stringTokenizer"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>stringTokenizer</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,int offset=0,int line=0)
+<br></td><td align="right"><h3><strong>stringTokenizer</strong></h3></td></tr></table><p></p><A NAME="stringTokenizer"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>stringTokenizer</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &analyzer,int offset=0,int line=0)
+<br></td><td align="right"><h3><strong>stringTokenizer</strong></h3></td></tr></table><p></p><A NAME="getToken"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>getToken</strong> (bool forward=true,bool comment=false)
+<br></td><td align="right"><h3><strong>getToken</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get a token from the string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>forward</i></TD><TD align="left" valign="top">Go forward or backwards to get next token.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>comment</i></TD><TD align="left" valign="top">Include comments as tokens.
+     </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toSQLParse__tokenizer.html#getToken">tokenizer</A>.</p>
+<A NAME="remaining"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<strong>remaining</strong> (bool eol)
+<br></td><td align="right"><h3><strong>remaining</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get the data remaining after the current position.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>eol</i></TD><TD align="left" valign="top">If true end of line, otherwise end of tokenizer.
+     </TD></TR>
+</TABLE></P>
+<p>Reimplemented from <A HREF="toSQLParse__tokenizer.html#remaining">tokenizer</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__tokenizer.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__tokenizer.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSQLParse__tokenizer.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,107 @@
+<HTML>
+<HEAD>
+<TITLE>class tokenizer</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class tokenizer</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Abstract class to define a source of tokens for the parser. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Full name</TH><TD><code><A HREF="toSQLParse.html">toSQLParse</A>::tokenizer</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosqlparse_h.html">tosqlparse.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toSQLParse__editorTokenizer.html">editorTokenizer</A>, <A HREF="toSQLParse__stringTokenizer.html">stringTokenizer</A></TD></TR>
+<TR><TH><A HREF="full-list-toSQLParse__tokenizer.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref4">tokenizer</A></b> (int offset=0,int line=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref5">tokenizer</A></b> (<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &analyzer,int offset=0,int line=0) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref6">~tokenizer</A></b> () 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><i><A HREF="#ref7">getToken</A></i></b> (bool forward=true,bool comment=false) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref8">setAnalyzer</A></b> (<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &analyzer) 
+</LI>
+<LI>virtual  <A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &&nbsp;<b><A HREF="#ref9">analyzer</A></b> () 
+</LI>
+<LI>virtual  int &nbsp;<b><A HREF="#ref10">line</A></b> (void) 
+</LI>
+<LI>virtual  int &nbsp;<b><A HREF="#ref11">offset</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref12">setOffset</A></b> (int offset) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref13">setLine</A></b> (int line) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<b><i><A HREF="#ref14">remaining</A></i></b> (bool eol) 
+</LI>
+</ul><h4>Protected Members</h4><ul><LI>int <b><A HREF="#ref2">Offset</A></b></LI>
+<LI>int <b><A HREF="#ref3">Line</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Abstract class to define a source of tokens for the parser.
+   </p>
+<A NAME="Offset"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Offset</strong>
+</td><td align="right"><h3><strong>Offset</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="Line"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Line</strong>
+</td><td align="right"><h3><strong>Line</strong></h3></td></tr></table><p> <small>[protected]</small></p><A NAME="tokenizer"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>tokenizer</strong> (int offset=0,int line=0)
+<br></td><td align="right"><h3><strong>tokenizer</strong></h3></td></tr></table><p></p><p> Create a tokenizer. Optionally specify which line and offset to start at.
+     </p>
+<A NAME="tokenizer"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>tokenizer</strong> (<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &analyzer,int offset=0,int line=0)
+<br></td><td align="right"><h3><strong>tokenizer</strong></h3></td></tr></table><p></p><p> Create a tokenizer. Optionally specify which line and offset to start at.
+     </p>
+<A NAME="~tokenizer"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~tokenizer</strong> ()
+<br></td><td align="right"><h3><strong>~tokenizer</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="getToken"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<i><strong>getToken</strong></i> (bool forward=true,bool comment=false)
+<br></td><td align="right"><h3><i><strong>getToken</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Get a token from the string.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>forward</i></TD><TD align="left" valign="top">Go forward or backwards to get next token.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>comment</i></TD><TD align="left" valign="top">Include comments as tokens.
+     </TD></TR>
+</TABLE></P>
+<A NAME="setAnalyzer"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setAnalyzer</strong> (<A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &analyzer)
+<br></td><td align="right"><h3><strong>setAnalyzer</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Specify the syntax analyzer to use for the tokanizer
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>analyzer</i></TD><TD align="left" valign="top">     </TD></TR>
+</TABLE></P>
+<A NAME="analyzer"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &&nbsp;<strong>analyzer</strong> ()
+<br></td><td align="right"><h3><strong>analyzer</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="line"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>line</strong> (void)
+<br></td><td align="right"><h3><strong>line</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get the current line of the tokenizer. A line is defined by a \n character
+     </p>
+<A NAME="offset"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>offset</strong> (void)
+<br></td><td align="right"><h3><strong>offset</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Current offset of the tokenizer (Should point to the character after the last token in the specified direction)
+     </p>
+<A NAME="setOffset"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setOffset</strong> (int offset)
+<br></td><td align="right"><h3><strong>setOffset</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set a new offset of tokenzer.
+     </p>
+<A NAME="setLine"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setLine</strong> (int line)
+<br></td><td align="right"><h3><strong>setLine</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Set new current line of tokenizer.
+ This will not affect the current position of the tokenizer.
+     </p>
+<A NAME="remaining"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &nbsp;<i><strong>remaining</strong></i> (bool eol)
+<br></td><td align="right"><h3><i><strong>remaining</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Get the data remaining after the current position.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>eol</i></TD><TD align="left" valign="top">If true end of line, otherwise end of tokenizer.
+     </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSQL__definition.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSQL__definition.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSQL__definition.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,45 @@
+<HTML>
+<HEAD>
+<TITLE>struct definition</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct definition</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ Definition of one toSQL statement with its description and versions. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toSQL.html">toSQL</A>::definition</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosql_h.html">tosql.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toSQL__definition.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Members</h4><ul><LI>QString <b><A HREF="#ref1">Description</A></b></LI>
+<LI>bool <b><A HREF="#ref2">Modified</A></b></LI>
+<LI>std::list<version> <b><A HREF="#ref3">Versions</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ Definition of one toSQL statement with its description and versions.
+   </p>
+<A NAME="Description"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>Description</strong>
+</td><td align="right"><h3><strong>Description</strong></h3></td></tr></table><p></p><A NAME="Modified"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>Modified</strong>
+</td><td align="right"><h3><strong>Modified</strong></h3></td></tr></table><p></p><A NAME="Versions"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>std::list<version>  <strong>Versions</strong>
+</td><td align="right"><h3><strong>Versions</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSQL__version.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSQL__version.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSQL__version.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,62 @@
+<HTML>
+<HEAD>
+<TITLE>struct version</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct version</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ Contains a statement with it's version. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toSQL.html">toSQL</A>::version</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tosql_h.html">tosql.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toSQL__version.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref5">version</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &ver,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,bool modified=false) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>QCString <b><A HREF="#ref1">Provider</A></b></LI>
+<LI>QCString <b><A HREF="#ref2">Version</A></b></LI>
+<LI>QString <b><A HREF="#ref3">SQL</A></b></LI>
+<LI>bool <b><A HREF="#ref4">Modified</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ Contains a statement with it's version.
+   </p>
+<A NAME="Provider"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>  <strong>Provider</strong>
+</td><td align="right"><h3><strong>Provider</strong></h3></td></tr></table><p></p><A NAME="Version"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>  <strong>Version</strong>
+</td><td align="right"><h3><strong>Version</strong></h3></td></tr></table><p></p><A NAME="SQL"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>  <strong>SQL</strong>
+</td><td align="right"><h3><strong>SQL</strong></h3></td></tr></table><p></p><A NAME="Modified"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>Modified</strong>
+</td><td align="right"><h3><strong>Modified</strong></h3></td></tr></table><p></p><A NAME="version"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>version</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &provider,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &ver,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql,bool modified=false)
+<br></td><td align="right"><h3><strong>version</strong></h3></td></tr></table><p></p><p> Create a new version
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>provider</i></TD><TD align="left" valign="top">Provider
+</TD></TR>
+<TR><TD align="left" valign="top"><i>ver</i></TD><TD align="left" valign="top">Version
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">Statement
+</TD></TR>
+<TR><TD align="left" valign="top"><i>modified</i></TD><TD align="left" valign="top">Wether it is modified or not.
+     </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSemaphore.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSemaphore.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSemaphore.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,91 @@
+<HTML>
+<HEAD>
+<TITLE>class toSemaphore</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSemaphore</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Encapsulation of pthread semaphores. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tothread_h.html">tothread.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toSemaphore.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref4">toSemaphore</A></b> () 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref5">toSemaphore</A></b> (int val) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref6">~toSemaphore</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref7">up</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref8">down</A></b> () 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref9">getValue</A></b> () 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref13">toSemaphore</A></b> () 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref14">toSemaphore</A></b> (const <A HREF="toSemaphore.html">toSemaphore</A> &) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref15">toSemaphore</A></b> (int val) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref16">up</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref17">down</A></b> () 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref18">getValue</A></b> () 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Encapsulation of pthread semaphores. A semaphore can be raise to any value
+ but will wait till raised above zero when lowered below 0. Can also be implemented
+ without pthreads using Qt multithreaded primitives. Observe that these function
+ different than Qt semaphores.
+ </p>
+<A NAME="toSemaphore"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toSemaphore</strong> ()
+<br></td><td align="right"><h3><strong>toSemaphore</strong></h3></td></tr></table><p></p><A NAME="toSemaphore"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toSemaphore</strong> (int val)
+<br></td><td align="right"><h3><strong>toSemaphore</strong></h3></td></tr></table><p></p><A NAME="~toSemaphore"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toSemaphore</strong> ()
+<br></td><td align="right"><h3><strong>~toSemaphore</strong></h3></td></tr></table><p></p><A NAME="up"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>up</strong> ()
+<br></td><td align="right"><h3><strong>up</strong></h3></td></tr></table><p></p><A NAME="down"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>down</strong> ()
+<br></td><td align="right"><h3><strong>down</strong></h3></td></tr></table><p></p><A NAME="getValue"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>getValue</strong> ()
+<br></td><td align="right"><h3><strong>getValue</strong></h3></td></tr></table><p></p><A NAME="toSemaphore"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toSemaphore</strong> ()
+<br></td><td align="right"><h3><strong>toSemaphore</strong></h3></td></tr></table><p></p><p> Create semaphore
+   </p>
+<A NAME="toSemaphore"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toSemaphore</strong> (const <A HREF="toSemaphore.html">toSemaphore</A> &)
+<br></td><td align="right"><h3><strong>toSemaphore</strong></h3></td></tr></table><p></p><p> Unimplemented copy constructor.
+   </p>
+<A NAME="toSemaphore"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toSemaphore</strong> (int val)
+<br></td><td align="right"><h3><strong>toSemaphore</strong></h3></td></tr></table><p></p><p> Create semaphore
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>val</i></TD><TD align="left" valign="top">Value of new semaphore.
+   </TD></TR>
+</TABLE></P>
+<A NAME="up"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>up</strong> ()
+<br></td><td align="right"><h3><strong>up</strong></h3></td></tr></table><p></p><p> Increase semaphore value by 1.
+   </p>
+<A NAME="down"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>down</strong> ()
+<br></td><td align="right"><h3><strong>down</strong></h3></td></tr></table><p></p><p> Decrease semaphore value by 1, wait for it to never go below 0.
+   </p>
+<A NAME="getValue"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>getValue</strong> ()
+<br></td><td align="right"><h3><strong>getValue</strong></h3></td></tr></table><p></p><p> Get current semaphore value.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSettingTab.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSettingTab.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSettingTab.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,58 @@
+<HTML>
+<HEAD>
+<TITLE>class toSettingTab</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSettingTab</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ Abstract baseclass for widgets defining tool settings. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totool_h.html">totool.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toHelpContext.html">toHelpContext</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toSettingTab.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toSettingTab</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &ctx) 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref2">saveSetting</A></i></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ Abstract baseclass for widgets defining tool settings.
+ </p>
+<A NAME="toSettingTab"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toSettingTab</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &ctx)
+<br></td><td align="right"><h3><strong>toSettingTab</strong></h3></td></tr></table><p></p><p>
+ Default constructor.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ctx</i></TD><TD align="left" valign="top">Help context for this setting tab.
+   </TD></TR>
+</TABLE></P>
+<A NAME="saveSetting"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>saveSetting</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>saveSetting</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p>
+ This function is called to save the contents of the widget when
+ a user has pressed the ok button of the dialog. It should simply
+ save the values in the dialog to the appropriate configuration
+ entry using the <A HREF="toTool.html#setConfig">toTool::setConfig</A> function.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,124 @@
+<HTML>
+<HEAD>
+<TITLE>class toSyntaxAnalyzer</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toSyntaxAnalyzer</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class implements a syntax parser to provide information to
+ a syntax highlighted editor. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tohighlightedtext_h.html">tohighlightedtext.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toSyntaxAnalyzer.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Types</h4><ul><LI>enum <A HREF="#ref1">infoType</A> {    Normal=0,
+    /** This is a keyword
+}
+</LI>
+<LI>struct <A HREF="toSyntaxAnalyzer__highlightInfo.html">highlightInfo</A>
+</LI>
+</ul><h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref12">toSyntaxAnalyzer</A></b> (const char **keywords) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref13">~toSyntaxAnalyzer</A></b> () 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qchar.html">QChar</A> &nbsp;<b><A HREF="#ref14">quoteCharacter</A></b> () 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref15">declareBlock</A></b> () 
+</LI>
+<LI>virtual  std::list<highlightInfo> &nbsp;<b><A HREF="#ref16">analyzeLine</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,infoType in,infoType &out) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qcolor.html">QColor</A> &nbsp;<b><A HREF="#ref17">getColor</A></b> (infoType typ) 
+</LI>
+<LI>bool &nbsp;<b><A HREF="#ref18">reservedWord</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &word) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  <A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &&nbsp;<b><A HREF="#ref20">defaultAnalyzer</A></b> () 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref19">toSyntaxSetup</A></b></LI>
+</ul><h4>Protected Methods</h4><ul><LI>bool &nbsp;<b><A HREF="#ref7">isSymbol</A></b> (<A HREF="/usr/lib/qt3/doc/html/qchar.html">QChar</A> c) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class implements a syntax parser to provide information to
+ a syntax highlighted editor.
+ </p>
+<A NAME="infoType"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>enum <strong>infoType</strong> {    Normal=0,
+    /** This is a keyword
+}
+</td><td align="right"><h3><strong>infoType</strong></h3></td></tr></table><p></p><p> Normal text
+     </p>
+<A NAME="toSyntaxAnalyzer__highlightInfo.html"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><strong>highlightInfo</strong> <small>(struct)</small></td><td align="right"><h3><strong>highlightInfo</strong></h3></td></tr></table><p></p><p> Information about a change in highlighting.
+   </p>
+<A NAME="isSymbol"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>isSymbol</strong> (<A HREF="/usr/lib/qt3/doc/html/qchar.html">QChar</A> c)
+<br></td><td align="right"><h3><strong>isSymbol</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Check if this is part of a symbol or not.
+   </p>
+<A NAME="toSyntaxAnalyzer"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toSyntaxAnalyzer</strong> (const char **keywords)
+<br></td><td align="right"><h3><strong>toSyntaxAnalyzer</strong></h3></td></tr></table><p></p><p> Create a syntax analysed
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>keywords</i></TD><TD align="left" valign="top">A list of keywords.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toSyntaxAnalyzer"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toSyntaxAnalyzer</strong> ()
+<br></td><td align="right"><h3><strong>~toSyntaxAnalyzer</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="quoteCharacter"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qchar.html">QChar</A> &nbsp;<strong>quoteCharacter</strong> ()
+<br></td><td align="right"><h3><strong>quoteCharacter</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get the character used to quote names of functions etc for the database
+   </p>
+<A NAME="declareBlock"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>declareBlock</strong> ()
+<br></td><td align="right"><h3><strong>declareBlock</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> True if declare keyword starts block.
+   </p>
+<A NAME="analyzeLine"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::list<highlightInfo> &nbsp;<strong>analyzeLine</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &str,infoType in,infoType &out)
+<br></td><td align="right"><h3><strong>analyzeLine</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Analyze a line. There is no guarantee that lines will be called in any kind of order.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>str</i></TD><TD align="left" valign="top">Line to analyze.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>in</i></TD><TD align="left" valign="top">Type at start of line.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>out</i></TD><TD align="left" valign="top">Type at start of next line.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A list of where highlighting should change. Start as normal.
+   </p>
+<A NAME="getColor"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qcolor.html">QColor</A> &nbsp;<strong>getColor</strong> (infoType typ)
+<br></td><td align="right"><h3><strong>getColor</strong></h3></td></tr></table><p></p><p> Get a colordefinition for a <A HREF="toSyntaxAnalyzer.html#infoType">infoType</A> value.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>typ</i></TD><TD align="left" valign="top"><A HREF="toSyntaxAnalyzer.html#infoType">infoType</A> to get color for.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: Color of that type.
+   </p>
+<A NAME="reservedWord"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool &nbsp;<strong>reservedWord</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &word)
+<br></td><td align="right"><h3><strong>reservedWord</strong></h3></td></tr></table><p></p><p> Check if a word is reserved.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>word</i></TD><TD align="left" valign="top">Word to check.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: True if word is reserved.
+   </p>
+<A NAME="toSyntaxSetup"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>toSyntaxSetup</strong>
+</td><td align="right"><h3><strong>toSyntaxSetup</strong></h3></td></tr></table><p></p><A NAME="defaultAnalyzer"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A> &&nbsp;<strong>defaultAnalyzer</strong> ()
+<br></td><td align="right"><h3><strong>defaultAnalyzer</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Get the default syntax analyzer.
+</p>
+<p><b>Returns</b>: Reference to the default analyzer.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer__highlightInfo.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer__highlightInfo.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer__highlightInfo.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,46 @@
+<HTML>
+<HEAD>
+<TITLE>struct highlightInfo</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct highlightInfo</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Information about a change in highlighting. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A>::highlightInfo</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tohighlightedtext_h.html">tohighlightedtext.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toSyntaxAnalyzer__highlightInfo.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">highlightInfo</A></b> (int start,infoType typ=Normal) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>infoType <b><A HREF="#ref1">Type</A></b></LI>
+<LI>int <b><A HREF="#ref2">Start</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Information about a change in highlighting.
+   </p>
+<A NAME="Type"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>infoType  <strong>Type</strong>
+</td><td align="right"><h3><strong>Type</strong></h3></td></tr></table><p></p><A NAME="Start"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Start</strong>
+</td><td align="right"><h3><strong>Start</strong></h3></td></tr></table><p></p><A NAME="highlightInfo"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>highlightInfo</strong> (int start,infoType typ=Normal)
+<br></td><td align="right"><h3><strong>highlightInfo</strong></h3></td></tr></table><p></p><p> Start in line for this highlighting.
+     </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer__posibleHit.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer__posibleHit.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toSyntaxAnalyzer__posibleHit.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+<HTML>
+<HEAD>
+<TITLE>struct posibleHit</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct posibleHit</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Keeps track of possible hits found so far. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toSyntaxAnalyzer.html">toSyntaxAnalyzer</A>::posibleHit</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tohighlightedtext_h.html">tohighlightedtext.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toSyntaxAnalyzer__posibleHit.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">posibleHit</A></b> (const char *) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>int <b><A HREF="#ref2">Pos</A></b></LI>
+<LI>const char *<b><A HREF="#ref3">Text</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Keeps track of possible hits found so far.
+   </p>
+<A NAME="posibleHit"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>posibleHit</strong> (const char *)
+<br></td><td align="right"><h3><strong>posibleHit</strong></h3></td></tr></table><p></p><A NAME="Pos"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int  <strong>Pos</strong>
+</td><td align="right"><h3><strong>Pos</strong></h3></td></tr></table><p></p><A NAME="Text"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const char * <strong>Text</strong>
+</td><td align="right"><h3><strong>Text</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTabBar.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTabBar.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTabBar.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,79 @@
+<HTML>
+<HEAD>
+<TITLE>class toTabBar</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTabBar</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> An extension of the regular tab bar with an extension to be able to hide
+ tabs without removing them. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totabwidget_h.html">totabwidget.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qtabbar.html">QTabBar</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toTabBar.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref4">toTabBar</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=0,const char *name=0) 
+</LI>
+<LI>virtual  int &nbsp;<b><A HREF="#ref5">insertTab</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtab.html">QTab</A> *newTab,int ix=-1) 
+</LI>
+<LI>virtual  int &nbsp;<b><A HREF="#ref6">addTab</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtab.html">QTab</A> *newTab) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref7">removeTab</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtab.html">QTab</A> *t) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref8">layoutTabs</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref9">setTabShown</A></b> (int ix,bool shown) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> An extension of the regular tab bar with an extension to be able to hide
+ tabs without removing them.
+ </p>
+<A NAME="toTabBar"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTabBar</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=0,const char *name=0)
+<br></td><td align="right"><h3><strong>toTabBar</strong></h3></td></tr></table><p></p><p> Constructor.
+   </p>
+<A NAME="insertTab"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>insertTab</strong> (<A HREF="/usr/lib/qt3/doc/html/qtab.html">QTab</A> *newTab,int ix=-1)
+<br></td><td align="right"><h3><strong>insertTab</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qtabbar.html#insertTab">QTabBar</A>.</p>
+<A NAME="addTab"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> int &nbsp;<strong>addTab</strong> (<A HREF="/usr/lib/qt3/doc/html/qtab.html">QTab</A> *newTab)
+<br></td><td align="right"><h3><strong>addTab</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qtabbar.html#addTab">QTabBar</A>.</p>
+<A NAME="removeTab"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>removeTab</strong> (<A HREF="/usr/lib/qt3/doc/html/qtab.html">QTab</A> *t)
+<br></td><td align="right"><h3><strong>removeTab</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qtabbar.html#removeTab">QTabBar</A>.</p>
+<A NAME="layoutTabs"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>layoutTabs</strong> ()
+<br></td><td align="right"><h3><strong>layoutTabs</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qtabbar.html#layoutTabs">QTabBar</A>.</p>
+<A NAME="setTabShown"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setTabShown</strong> (int ix,bool shown)
+<br></td><td align="right"><h3><strong>setTabShown</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Specify if a tab is shown.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ix</i></TD><TD align="left" valign="top">Index of the tab to change visibility.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>shown</i></TD><TD align="left" valign="top">Show tab if true, hide if false.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTabBar__barTab.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTabBar__barTab.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTabBar__barTab.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+<HTML>
+<HEAD>
+<TITLE>struct barTab</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>struct barTab</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toTabBar.html">toTabBar</A>::barTab</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totabwidget_h.html">totabwidget.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toTabBar__barTab.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref4">barTab</A></b> (<A HREF="/usr/lib/qt3/doc/html/qtab.html">QTab</A> *tab,bool shown) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>QTab *<b><A HREF="#ref1">Tab</A></b></LI>
+<LI>bool <b><A HREF="#ref2">Shown</A></b></LI>
+<LI>QRect <b><A HREF="#ref3">Rect</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><A NAME="Tab"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qtab.html">QTab</A> * <strong>Tab</strong>
+</td><td align="right"><h3><strong>Tab</strong></h3></td></tr></table><p></p><A NAME="Shown"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>bool  <strong>Shown</strong>
+</td><td align="right"><h3><strong>Shown</strong></h3></td></tr></table><p></p><A NAME="Rect"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qrect.html">QRect</A>  <strong>Rect</strong>
+</td><td align="right"><h3><strong>Rect</strong></h3></td></tr></table><p></p><A NAME="barTab"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>barTab</strong> (<A HREF="/usr/lib/qt3/doc/html/qtab.html">QTab</A> *tab,bool shown)
+<br></td><td align="right"><h3><strong>barTab</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTabWidget.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTabWidget.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTabWidget.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,71 @@
+<HTML>
+<HEAD>
+<TITLE>class toTabWidget</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTabWidget</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> An extension of the regular tab widget with posibility to hide tabs. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totabwidget_h.html">totabwidget.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qtabwidget.html">QTabWidget</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toTabWidget.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toTabWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=0,const char *name=0,WFlags f=0) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref3">setTabShown</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *w, bool value) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref4">showTab</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *w) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref5">hideTab</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *w) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> An extension of the regular tab widget with posibility to hide tabs.
+ </p>
+<A NAME="toTabWidget"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTabWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=0,const char *name=0,WFlags f=0)
+<br></td><td align="right"><h3><strong>toTabWidget</strong></h3></td></tr></table><p></p><p> Constructor.
+   </p>
+<A NAME="setTabShown"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setTabShown</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *w, bool value)
+<br></td><td align="right"><h3><strong>setTabShown</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Specify if a tab is shown.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>w</i></TD><TD align="left" valign="top">Widget to change visibility.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>shown</i></TD><TD align="left" valign="top">Show tab if true, hide if false.
+   </TD></TR>
+</TABLE></P>
+<A NAME="showTab"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>showTab</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *w)
+<br></td><td align="right"><h3><strong>showTab</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Specify that a tab is shown.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>w</i></TD><TD align="left" valign="top">Tab to show.
+   </TD></TR>
+</TABLE></P>
+<A NAME="hideTab"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>hideTab</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *w)
+<br></td><td align="right"><h3><strong>hideTab</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Specify that a tab is hidden.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>w</i></TD><TD align="left" valign="top">Tab to hide.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTask.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTask.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTask.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,47 @@
+<HTML>
+<HEAD>
+<TITLE>class toTask</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTask</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This is an abstract class that defines something that is to be performed by a
+ thread. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tothread_h.html">tothread.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toConnection__cacheObjects.html">cacheObjects</A>, <A HREF="toNoBlockQuery__queryTask.html">queryTask</A></TD></TR>
+<TR><TH><A HREF="full-list-toTask.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>virtual  &nbsp;<b><A HREF="#ref1">~toTask</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref2">run</A></i></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This is an abstract class that defines something that is to be performed by a
+ thread.
+ </p>
+<A NAME="~toTask"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toTask</strong> ()
+<br></td><td align="right"><h3><strong>~toTask</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="run"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>run</strong></i> (void)
+<br></td><td align="right"><h3><i><strong>run</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> This member is called when the class is started.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTemplate.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTemplate.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTemplate.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,91 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplate</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplate</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Not part of the API. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Internal Use Only</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totemplate_h.html">totemplate.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qvbox.html">QVBox</A> <small>(qt)</small> <small>[public ]</small>, <A HREF="toHelpContext.html">toHelpContext</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toTemplate.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref6">toTemplate</A></b> (<A HREF="TODock.html">TODock</A> *parent) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref7">~toTemplate</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref8">setWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref9">widget</A></b> (void) 
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref10">frame</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref15">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref16">closeFrame</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref17">showResult</A></b> (bool show) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref18">hideEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qhideevent.html">QHideEvent</A> *) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref19">showEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qshowevent.html">QShowEvent</A> *) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref20">expand</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref21">collapse</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref22">selected</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref23">hideTemplates</A></b> () 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref11">parentWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item) 
+</LI>
+<LI>static  <A HREF="toTemplate.html">toTemplate</A> *&nbsp;<b><A HREF="#ref12">templateWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item) 
+</LI>
+<LI>static  <A HREF="toTemplate.html">toTemplate</A> *&nbsp;<b><A HREF="#ref13">templateWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *obj) 
+</LI>
+<LI>static  bool &nbsp;<b><A HREF="#ref14">templateShown</A></b> () 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Not part of the API.
+ </p>
+<A NAME="toTemplate"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTemplate</strong> (<A HREF="TODock.html">TODock</A> *parent)
+<br></td><td align="right"><h3><strong>toTemplate</strong></h3></td></tr></table><p></p><A NAME="~toTemplate"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toTemplate</strong> ()
+<br></td><td align="right"><h3><strong>~toTemplate</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="setWidget"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *widget)
+<br></td><td align="right"><h3><strong>setWidget</strong></h3></td></tr></table><p></p><A NAME="widget"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>widget</strong> (void)
+<br></td><td align="right"><h3><strong>widget</strong></h3></td></tr></table><p></p><A NAME="frame"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>frame</strong> (void)
+<br></td><td align="right"><h3><strong>frame</strong></h3></td></tr></table><p></p><A NAME="parentWidget"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>parentWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item)
+<br></td><td align="right"><h3><strong>parentWidget</strong></h3></td></tr></table><p> <small>[static]</small></p><A NAME="templateWidget"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toTemplate.html">toTemplate</A> *&nbsp;<strong>templateWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item)
+<br></td><td align="right"><h3><strong>templateWidget</strong></h3></td></tr></table><p> <small>[static]</small></p><A NAME="templateWidget"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toTemplate.html">toTemplate</A> *&nbsp;<strong>templateWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *obj)
+<br></td><td align="right"><h3><strong>templateWidget</strong></h3></td></tr></table><p> <small>[static]</small></p><A NAME="templateShown"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>templateShown</strong> ()
+<br></td><td align="right"><h3><strong>templateShown</strong></h3></td></tr></table><p> <small>[static]</small></p><A NAME="canHandle"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="closeFrame"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>closeFrame</strong> (void)
+<br></td><td align="right"><h3><strong>closeFrame</strong></h3></td></tr></table><p></p><A NAME="showResult"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>showResult</strong> (bool show)
+<br></td><td align="right"><h3><strong>showResult</strong></h3></td></tr></table><p></p><A NAME="hideEvent"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>hideEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qhideevent.html">QHideEvent</A> *)
+<br></td><td align="right"><h3><strong>hideEvent</strong></h3></td></tr></table><p></p><A NAME="showEvent"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>showEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qshowevent.html">QShowEvent</A> *)
+<br></td><td align="right"><h3><strong>showEvent</strong></h3></td></tr></table><p></p><A NAME="expand"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>expand</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item)
+<br></td><td align="right"><h3><strong>expand</strong></h3></td></tr></table><p> <small>[slot]</small></p><A NAME="collapse"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>collapse</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item)
+<br></td><td align="right"><h3><strong>collapse</strong></h3></td></tr></table><p> <small>[slot]</small></p><A NAME="selected"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>selected</strong> (<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *item)
+<br></td><td align="right"><h3><strong>selected</strong></h3></td></tr></table><p> <small>[slot]</small></p><A NAME="hideTemplates"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>hideTemplates</strong> ()
+<br></td><td align="right"><h3><strong>hideTemplates</strong></h3></td></tr></table><p> <small>[slot]</small></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateItem.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateItem.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateItem.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,101 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplateItem</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplateItem</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This is an item that is contained in a template. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totemplate_h.html">totemplate.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toResultViewItem.html">toResultViewItem</A> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toTemplateSQL.html">toTemplateSQL</A>, <A HREF="toTemplateText.html">toTemplateText</A></TD></TR>
+<TR><TH><A HREF="full-list-toTemplateItem.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toTemplateItem</A></b> (<A HREF="toTemplateProvider.html">toTemplateProvider</A> &prov,<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref3">toTemplateItem</A></b> (<A HREF="toTemplateItem.html">toTemplateItem</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after=NULL) 
+</LI>
+<LI><A HREF="toTemplateProvider.html">toTemplateProvider</A> &&nbsp;<b><A HREF="#ref4">provider</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref5">expand</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">selected</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref7">collapse</A></b> (void) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref8">selectedWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref9">setSelected</A></b> (bool sel) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This is an item that is contained in a template. It is different in the expand and
+ collapse methods that are called when this item is expanded or collapsed from the
+ template widget.
+ </p>
+<A NAME="toTemplateItem"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTemplateItem</strong> (<A HREF="toTemplateProvider.html">toTemplateProvider</A> &prov,<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>toTemplateItem</strong></h3></td></tr></table><p></p><p> Create an item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>prov</i></TD><TD align="left" valign="top">Provider for this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Contents of the first column of the item.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toTemplateItem"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTemplateItem</strong> (<A HREF="toTemplateItem.html">toTemplateItem</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,<A HREF="/usr/lib/qt3/doc/html/qlistviewitem.html">QListViewItem</A> *after=NULL)
+<br></td><td align="right"><h3><strong>toTemplateItem</strong></h3></td></tr></table><p></p><p> Create an item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Contents of the first column of the item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>after</i></TD><TD align="left" valign="top">The item to put this item after.
+   </TD></TR>
+</TABLE></P>
+<A NAME="provider"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toTemplateProvider.html">toTemplateProvider</A> &&nbsp;<strong>provider</strong> (void)
+<br></td><td align="right"><h3><strong>provider</strong></h3></td></tr></table><p></p><p> Get a reference to the provider of this item.
+</p>
+<p><b>Returns</b>: Reference to provider.
+   </p>
+<A NAME="expand"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>expand</strong> (void)
+<br></td><td align="right"><h3><strong>expand</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> This function is called when the item is expanded and can be used to fill up the
+ list when needed.
+   </p>
+<A NAME="selected"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>selected</strong> (void)
+<br></td><td align="right"><h3><strong>selected</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> This function is called when the item is selected by doubleclicking or pressing return.
+   </p>
+<A NAME="collapse"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>collapse</strong> (void)
+<br></td><td align="right"><h3><strong>collapse</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> This function is called when the item is collapsed.
+   </p>
+<A NAME="selectedWidget"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>selectedWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>selectedWidget</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> This function can be used to return a widget that is displays extra information for
+ this item. Return NULL if no widget is to be displayed. The widget will be deleted
+ when this item is no longer shown.
+   </p>
+<A NAME="setSelected"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setSelected</strong> (bool sel)
+<br></td><td align="right"><h3><strong>setSelected</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateProvider.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateProvider.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateProvider.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,120 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplateProvider</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplateProvider</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ This is the base class of a provider of template items. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totemplate_h.html">totemplate.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toTemplateProvider.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref6">toTemplateProvider</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name) 
+</LI>
+<LI>virtual  &nbsp;<b><A HREF="#ref7">~toTemplateProvider</A></b> () 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<b><A HREF="#ref8">name</A></b> () 
+</LI>
+<LI>virtual  void &nbsp;<b><i><A HREF="#ref9">insertItems</A></i></b> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *toolbar) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref10">exportData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref12">importData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  void &nbsp;<b><A HREF="#ref11">exportAllData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref13">importAllData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref14">setShown</A></b> (bool shown) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref15">setToolKey</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &key) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref16">toTemplate</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ This is the base class of a provider of template items. Usually it is created with
+ a static object just like the tools. It can also be assumed that a maximum of one
+ template window will be opened.
+ </p>
+<A NAME="toTemplateProvider"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTemplateProvider</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &name)
+<br></td><td align="right"><h3><strong>toTemplateProvider</strong></h3></td></tr></table><p></p><p> List of currently available template providers.
+   </p>
+<A NAME="~toTemplateProvider"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> &nbsp;<strong>~toTemplateProvider</strong> ()
+<br></td><td align="right"><h3><strong>~toTemplateProvider</strong></h3></td></tr></table><p> <small>[virtual]</small></p><A NAME="name"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<strong>name</strong> ()
+<br></td><td align="right"><h3><strong>name</strong></h3></td></tr></table><p></p><p> Get name of this template provider.
+   </p>
+<A NAME="insertItems"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<i><strong>insertItems</strong></i> (<A HREF="/usr/lib/qt3/doc/html/qlistview.html">QListView</A> *parent,<A HREF="/usr/lib/qt3/doc/html/qtoolbar.html">QToolBar</A> *toolbar)
+<br></td><td align="right"><h3><i><strong>insertItems</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p> Insert a parent item for this template provider into a list view.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">The list into which to insert the item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>toolbar</i></TD><TD align="left" valign="top">The template toolbar if any buttons are to be added on it.
+   </TD></TR>
+</TABLE></P>
+<A NAME="exportData"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>exportData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>exportData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Save settings for this template provider.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Map of data.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix of where to save info.
+   </TD></TR>
+</TABLE></P>
+<A NAME="exportAllData"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>exportAllData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>exportAllData</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Save settings for all template providers.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Map of data.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix of where to save info.
+   </TD></TR>
+</TABLE></P>
+<A NAME="importData"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>importData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>importData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Import data
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to read from a map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to read data from.
+   </TD></TR>
+</TABLE></P>
+<A NAME="importAllData"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>importAllData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>importAllData</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Import data for all template providers.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to read from a map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to read data from.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setShown"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setShown</strong> (bool shown)
+<br></td><td align="right"><h3><strong>setShown</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Used internally to indicate if template help is shown.
+   </p>
+<A NAME="setToolKey"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>setToolKey</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &key)
+<br></td><td align="right"><h3><strong>setToolKey</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Used internally to indicate tool key string
+   </p>
+<A NAME="toTemplate"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>toTemplate</strong>
+</td><td align="right"><h3><strong>toTemplate</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateSQL.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateSQL.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateSQL.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,106 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplateSQL</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplateSQL</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class represent an item that when expanded will execute an SQL statement
+ and create child items which are the result of the query. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totemplate_h.html">totemplate.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toTemplateItem.html">toTemplateItem</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toTemplateSQL.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref5">toTemplateSQL</A></b> (<A HREF="toConnection.html">toConnection</A> &conn,<A HREF="toTemplateItem.html">toTemplateItem</A> *parent,
+		const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+<LI>virtual  <A HREF="toConnection.html">toConnection</A> &&nbsp;<b><A HREF="#ref6">connection</A></b> () 
+</LI>
+<LI>virtual  <A HREF="toTemplateItem.html">toTemplateItem</A> *&nbsp;<b><A HREF="#ref7">createChild</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name) 
+</LI>
+<LI>virtual  <A HREF="#toQList">toQList</A> &nbsp;<b><A HREF="#ref8">parameters</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref9">expand</A></b> (void) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref10">toTemplateSQLObject</A></b></LI>
+</ul><h4>Protected Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref4">toTemplateSQL</A></b> (<A HREF="toTemplateItem.html">toTemplateItem</A> *parent,
+		const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class represent an item that when expanded will execute an SQL statement
+ and create child items which are the result of the query.
+ </p>
+<A NAME="toTemplateSQL"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTemplateSQL</strong> (<A HREF="toTemplateItem.html">toTemplateItem</A> *parent,
+		const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>toTemplateSQL</strong></h3></td></tr></table><p> <small>[protected]</small></p><p> Create an item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to query.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Contents of the first column of the item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL statement.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toTemplateSQL"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTemplateSQL</strong> (<A HREF="toConnection.html">toConnection</A> &conn,<A HREF="toTemplateItem.html">toTemplateItem</A> *parent,
+		const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &sql)
+<br></td><td align="right"><h3><strong>toTemplateSQL</strong></h3></td></tr></table><p></p><p> Create an item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection to query.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Contents of the first column of the item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sql</i></TD><TD align="left" valign="top">SQL statement.
+   </TD></TR>
+</TABLE></P>
+<A NAME="connection"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toConnection.html">toConnection</A> &&nbsp;<strong>connection</strong> ()
+<br></td><td align="right"><h3><strong>connection</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get connection of this item.
+</p>
+<p><b>Returns</b>: Reference to connection.
+   </p>
+<A NAME="createChild"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toTemplateItem.html">toTemplateItem</A> *&nbsp;<strong>createChild</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name)
+<br></td><td align="right"><h3><strong>createChild</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Create a child of this item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of the child.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: A newly created item.
+   </p>
+<A NAME="parameters"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="#toQList">toQList</A> &nbsp;<strong>parameters</strong> (void)
+<br></td><td align="right"><h3><strong>parameters</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Get parameters to pass to query.
+</p>
+<p><b>Returns</b>: List of strings to pass as input parameters to query
+   </p>
+<A NAME="expand"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>expand</strong> (void)
+<br></td><td align="right"><h3><strong>expand</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toTemplateItem.html#expand">toTemplateItem</A>.</p>
+<A NAME="toTemplateSQLObject"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>toTemplateSQLObject</strong>
+</td><td align="right"><h3><strong>toTemplateSQLObject</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateSQLObject.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateSQLObject.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateSQLObject.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,37 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplateSQLObject</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplateSQLObject</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Used by toTemplateSQL. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Internal Use Only</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totemplate_h.html">totemplate.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toTemplateSQLObject.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Used by toTemplateSQL. Only for internal use.
+ </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateText.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateText.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTemplateText.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,58 @@
+<HTML>
+<HEAD>
+<TITLE>class toTemplateText</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTemplateText</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This class represent a template item that have an extra text to describe it if it is
+ selected. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totemplate_h.html">totemplate.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="toTemplateItem.html">toTemplateItem</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toTemplateText.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toTemplateText</A></b> (<A HREF="toTemplateItem.html">toTemplateItem</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &note) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref3">selectedWidget</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This class represent a template item that have an extra text to describe it if it is
+ selected.
+ </p>
+<A NAME="toTemplateText"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTemplateText</strong> (<A HREF="toTemplateItem.html">toTemplateItem</A> *parent,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &name,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &note)
+<br></td><td align="right"><h3><strong>toTemplateText</strong></h3></td></tr></table><p></p><p> Create an item.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent of this item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Contents of the first column of the item.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>note</i></TD><TD align="left" valign="top">Extra text to display if item is selected.
+   </TD></TR>
+</TABLE></P>
+<A NAME="selectedWidget"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>selectedWidget</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>selectedWidget</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toTemplateItem.html#selectedWidget">toTemplateItem</A>.</p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTextView.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTextView.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTextView.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,72 @@
+<HTML>
+<HEAD>
+<TITLE>class toTextView</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTextView</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A tora editwidget version of the <A HREF="/usr/lib/qt3/doc/html/qtextview.html">QTextView</A> widget. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totextview_h.html">totextview.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qtextview.html">QTextView</A> <small>(qt)</small> <small>[public ]</small>, <A HREF="toEditWidget.html">toEditWidget</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toTextView.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref1">toTextView</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=0,const char *name=0) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref2">toTextView</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>&text,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &context=QString::null,
+	    <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=0,const char *name=0) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref3">editCopy</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref4">editSelectAll</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref5">editSave</A></b> (bool) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref6">focusInEvent</A></b> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *e) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A tora editwidget version of the <A HREF="/usr/lib/qt3/doc/html/qtextview.html">QTextView</A> widget.
+ </p>
+<A NAME="toTextView"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTextView</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=0,const char *name=0)
+<br></td><td align="right"><h3><strong>toTextView</strong></h3></td></tr></table><p></p><p> See <A HREF="/usr/lib/qt3/doc/html/qtextview.html">QTextView</A>
+   </p>
+<A NAME="toTextView"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTextView</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>&text,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &context=QString::null,
+	    <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent=0,const char *name=0)
+<br></td><td align="right"><h3><strong>toTextView</strong></h3></td></tr></table><p></p><p> See <A HREF="/usr/lib/qt3/doc/html/qtextview.html">QTextView</A>
+   </p>
+<A NAME="editCopy"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editCopy</strong> (void)
+<br></td><td align="right"><h3><strong>editCopy</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editCopy">toEditWidget</A>.</p>
+<A NAME="editSelectAll"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>editSelectAll</strong> (void)
+<br></td><td align="right"><h3><strong>editSelectAll</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editSelectAll">toEditWidget</A>.</p>
+<A NAME="editSave"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>editSave</strong> (bool)
+<br></td><td align="right"><h3><strong>editSave</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<p>Reimplemented from <A HREF="toEditWidget.html#editSave">toEditWidget</A>.</p>
+<A NAME="focusInEvent"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>focusInEvent</strong> (<A HREF="/usr/lib/qt3/doc/html/qfocusevent.html">QFocusEvent</A> *e)
+<br></td><td align="right"><h3><strong>focusInEvent</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Reimplemented for internal reasons.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toThread.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toThread.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toThread.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,90 @@
+<HTML>
+<HEAD>
+<TITLE>class toThread</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toThread</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Used to create new threads of execution. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tothread_h.html">tothread.h</A>&gt;</code></TD></TR>
+<TR><TH><A HREF="full-list-toThread.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref7">toThread</A></b> (<A HREF="toTask.html">toTask</A> *) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref8">~toThread</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref9">start</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref10">startAsync</A></b> (void) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref24">toThread</A></b> (<A HREF="toTask.html">toTask</A> *task) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref25">~toThread</A></b> () 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref26">start</A></b> (void) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref27">startAsync</A></b> (void) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  void &nbsp;<b><A HREF="#ref11">msleep</A></b> (int msec) 
+</LI>
+<LI>static  bool &nbsp;<b><A HREF="#ref12">mainThread</A></b> (void) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref28">msleep</A></b> (int msec) 
+</LI>
+<LI>static  bool &nbsp;<b><A HREF="#ref29">mainThread</A></b> (void) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>friend class <b><A HREF="#ref13">taskRunner</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Used to create new threads of execution. When a thread exits it will delete the
+ thread and task objects so the calling thread must never delete a started thread.
+ </p>
+<A NAME="toThread"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toThread</strong> (<A HREF="toTask.html">toTask</A> *)
+<br></td><td align="right"><h3><strong>toThread</strong></h3></td></tr></table><p></p><A NAME="~toThread"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toThread</strong> ()
+<br></td><td align="right"><h3><strong>~toThread</strong></h3></td></tr></table><p></p><A NAME="start"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>start</strong> (void)
+<br></td><td align="right"><h3><strong>start</strong></h3></td></tr></table><p></p><A NAME="startAsync"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>startAsync</strong> (void)
+<br></td><td align="right"><h3><strong>startAsync</strong></h3></td></tr></table><p></p><A NAME="msleep"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>msleep</strong> (int msec)
+<br></td><td align="right"><h3><strong>msleep</strong></h3></td></tr></table><p> <small>[static]</small></p><A NAME="mainThread"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>mainThread</strong> (void)
+<br></td><td align="right"><h3><strong>mainThread</strong></h3></td></tr></table><p> <small>[static]</small></p><A NAME="taskRunner"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>taskRunner</strong>
+</td><td align="right"><h3><strong>taskRunner</strong></h3></td></tr></table><p></p><A NAME="toThread"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toThread</strong> (<A HREF="toTask.html">toTask</A> *task)
+<br></td><td align="right"><h3><strong>toThread</strong></h3></td></tr></table><p></p><p> Create thread.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>task</i></TD><TD align="left" valign="top">Task to run.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toThread"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toThread</strong> ()
+<br></td><td align="right"><h3><strong>~toThread</strong></h3></td></tr></table><p></p><A NAME="start"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>start</strong> (void)
+<br></td><td align="right"><h3><strong>start</strong></h3></td></tr></table><p></p><p> Start thread and wait for other thread to start running.
+   </p>
+<A NAME="startAsync"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>startAsync</strong> (void)
+<br></td><td align="right"><h3><strong>startAsync</strong></h3></td></tr></table><p></p><p> Start thread and continue executing this thread until normal scheduling
+ handles over execution to child thread.
+   </p>
+<A NAME="msleep"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>msleep</strong> (int msec)
+<br></td><td align="right"><h3><strong>msleep</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Sleep in milliseconds.
+   </p>
+<A NAME="mainThread"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>mainThread</strong> (void)
+<br></td><td align="right"><h3><strong>mainThread</strong></h3></td></tr></table><p> <small>[static]</small></p><p> Returns true if this is the main thread.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toThread__taskRunner.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toThread__taskRunner.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toThread__taskRunner.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,51 @@
+<HTML>
+<HEAD>
+<TITLE>class taskRunner</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class taskRunner</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Not part of the API. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Full name</TH><TD><code><A HREF="toThread.html">toThread</A>::taskRunner</code></TD></TR>
+<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tothread_h.html">tothread.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qthread.html">QThread</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toThread__taskRunner.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref3">taskRunner</A></b> (<A HREF="toTask.html">toTask</A> *) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref4">run</A></b> (void) 
+</LI>
+</ul><h4>Public Members</h4><ul><LI>toSemaphore <b><A HREF="#ref1">StartSemaphore</A></b></LI>
+<LI>toTask *<b><A HREF="#ref2">Task</A></b></LI>
+<LI>friend class <b><A HREF="#ref5">toThread</A></b></LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Not part of the API.
+   </p>
+<A NAME="StartSemaphore"></A><A NAME="ref1"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toSemaphore.html">toSemaphore</A>  <strong>StartSemaphore</strong>
+</td><td align="right"><h3><strong>StartSemaphore</strong></h3></td></tr></table><p></p><A NAME="Task"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toTask.html">toTask</A> * <strong>Task</strong>
+</td><td align="right"><h3><strong>Task</strong></h3></td></tr></table><p></p><A NAME="taskRunner"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>taskRunner</strong> (<A HREF="toTask.html">toTask</A> *)
+<br></td><td align="right"><h3><strong>taskRunner</strong></h3></td></tr></table><p></p><A NAME="run"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>run</strong> (void)
+<br></td><td align="right"><h3><strong>run</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>Reimplemented from <A HREF="/usr/lib/qt3/doc/html/qthread.html#run">QThread</A>.</p>
+<A NAME="toThread"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>friend class  <strong>toThread</strong>
+</td><td align="right"><h3><strong>toThread</strong></h3></td></tr></table><p></p><HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTimer.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTimer.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTimer.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,67 @@
+<HTML>
+<HEAD>
+<TITLE>class toTimer</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTimer</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> A timer descendant which also keep track of the last timer setting sent to it. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tobackground_h.html">tobackground.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qtimer.html">QTimer</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toBackground.html">toBackground</A></TD></TR>
+<TR><TH><A HREF="full-list-toTimer.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref2">toTimer</A></b> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> *parent=0,const char * name=0) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref3">start</A></b> (int msec,bool sshot=false) 
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref4">lastTimer</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> A timer descendant which also keep track of the last timer setting sent to it.
+ </p>
+<A NAME="toTimer"></A><A NAME="ref2"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTimer</strong> (<A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> *parent=0,const char * name=0)
+<br></td><td align="right"><h3><strong>toTimer</strong></h3></td></tr></table><p></p><p> Create timer.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent object of timer.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of timer.
+   </TD></TR>
+</TABLE></P>
+<A NAME="start"></A><A NAME="ref3"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>start</strong> (int msec,bool sshot=false)
+<br></td><td align="right"><h3><strong>start</strong></h3></td></tr></table><p></p><p> Start timer.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>msec</i></TD><TD align="left" valign="top">Milliseconds to timeout.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>sshot</i></TD><TD align="left" valign="top">Set to true if only timeout once.
+   </TD></TR>
+</TABLE></P>
+<A NAME="lastTimer"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>lastTimer</strong> (void)
+<br></td><td align="right"><h3><strong>lastTimer</strong></h3></td></tr></table><p></p><p> Get last timer start timeout.
+</p>
+<p><b>Returns</b>: Last timeout in millisecond.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toTool.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toTool.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toTool.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,342 @@
+<HTML>
+<HEAD>
+<TITLE>class toTool</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toTool</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1">
+ Abstract baseclass for tools. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH colspan="2">Contains pure virtuals</TH></TR><TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totool_h.html">totool.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qobject.html">QObject</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH>Inherited by</TH><TD><A HREF="toHelpTool.html">toHelpTool</A></TD></TR>
+<TR><TH><A HREF="full-list-toTool.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<b><A HREF="#ref9">name</A></b> ()  const
+</LI>
+<LI><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<b><A HREF="#ref10">key</A></b> ()  const
+</LI>
+<LI>int &nbsp;<b><A HREF="#ref11">priority</A></b> ()  const
+</LI>
+<LI>&nbsp;<b><A HREF="#ref12">~toTool</A></b> () 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref13">toTool</A></b> (int priority,const char *name) 
+</LI>
+<LI>virtual  const <A HREF="/usr/lib/qt3/doc/html/qpixmap.html">QPixmap</A> *&nbsp;<b><A HREF="#ref14">toolbarImage</A></b> () 
+</LI>
+<LI>virtual  const char *&nbsp;<b><A HREF="#ref15">menuItem</A></b> () 
+</LI>
+<LI>virtual  const char *&nbsp;<b><A HREF="#ref16">toolbarTip</A></b> () 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref17">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref18">customSetup</A></b> (int toolid) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><i><A HREF="#ref19">toolWindow</A></i></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,<A HREF="toConnection.html">toConnection</A> &connection) 
+</LI>
+<LI>virtual  <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<b><A HREF="#ref20">configurationTab</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref21">about</A></b> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref22">hasAbout</A></b> (void) 
+</LI>
+<LI>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref29">config</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &def) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref30">setConfig</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref31">eraseConfig</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref34">createWindow</A></b> (void) 
+</LI>
+</ul><h4>Public Static Methods</h4><ul><LI>static  std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="toTool.html">toTool</A> *> &&nbsp;<b><A HREF="#ref23">tools</A></b> (void) 
+</LI>
+<LI>static  <A HREF="toTool.html">toTool</A> *&nbsp;<b><A HREF="#ref24">tool</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &key) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref25">saveConfig</A></b> (void) 
+</LI>
+<LI>static  const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<b><A HREF="#ref26">globalConfig</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &def) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref27">globalSetConfig</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref28">globalEraseConfig</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag) 
+</LI>
+<LI>static  void &nbsp;<b><A HREF="#ref32">loadMap</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &map) 
+</LI>
+<LI>static  bool &nbsp;<b><A HREF="#ref33">saveMap</A></b> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &map) 
+</LI>
+</ul><h4>Protected Methods</h4><ul><LI>virtual  const char **&nbsp;<b><A HREF="#ref8">pictureXPM</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p>
+ Abstract baseclass for tools.
+</p>
+<p> This class is the baseclass of all classes defining tools. It
+ contains functions for defining the priority and name of the tool,
+ as well as virtual functions to define it's place in the user
+ interface. Further it contains methods to access configuration
+ settings.
+</p>
+<p> To use this class you create a child which is then instantiated once
+ which inserts that tool in the global tool map (See <A HREF="toTool.html#tools">tools</A>). You
+ should never delete a tool unless on exit. Usually tools are instantiated
+ statically in the global scope.
+ </p>
+<A NAME="pictureXPM"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td> const char **&nbsp;<strong>pictureXPM</strong> (void)
+<br></td><td align="right"><h3><strong>pictureXPM</strong></h3></td></tr></table><p> <small>[protected virtual]</small></p><p>
+ Should return the xpm used to create the <A HREF="toTool.html#ButtonPicture">ButtonPicture</A>.
+   </p>
+<A NAME="name"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<strong>name</strong> ()
+<br></td><td align="right"><h3><strong>name</strong></h3></td></tr></table><p> <small>[const]</small></p><p>
+ Get the name.
+</p>
+<p></p>
+<p><b>Returns</b>: Name of tool.
+   </p>
+<A NAME="key"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &nbsp;<strong>key</strong> ()
+<br></td><td align="right"><h3><strong>key</strong></h3></td></tr></table><p> <small>[const]</small></p><p>
+ Get the name.
+</p>
+<p></p>
+<p><b>Returns</b>: Name of tool.
+   </p>
+<A NAME="priority"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td>int &nbsp;<strong>priority</strong> ()
+<br></td><td align="right"><h3><strong>priority</strong></h3></td></tr></table><p> <small>[const]</small></p><p>
+ Get the priority.
+</p>
+<p></p>
+<p><b>Returns</b>: Priority of tool.
+   </p>
+<A NAME="~toTool"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toTool</strong> ()
+<br></td><td align="right"><h3><strong>~toTool</strong></h3></td></tr></table><p></p><p>
+ This should never be called, but if it is. Erases the tool from the list of
+ available tools. WARNING: It will not remove any of it's open tools.
+   </p>
+<A NAME="toTool"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toTool</strong> (int priority,const char *name)
+<br></td><td align="right"><h3><strong>toTool</strong></h3></td></tr></table><p></p><p>
+ Create a tool. Remember that usually the main window is not created here.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>priority</i></TD><TD align="left" valign="top">Priority of the created tool.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of tool.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toolbarImage"></A><A NAME="ref14"></A><table width="100%"><tr bgcolor="#eeeeee"><td> const <A HREF="/usr/lib/qt3/doc/html/qpixmap.html">QPixmap</A> *&nbsp;<strong>toolbarImage</strong> ()
+<br></td><td align="right"><h3><strong>toolbarImage</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ Get the image to display in the toolbar.
+</p>
+<p></p>
+<p><b>Returns</b>: Pointer to image in toolbar or NULL if no image should be displayed.
+   </p>
+<A NAME="menuItem"></A><A NAME="ref15"></A><table width="100%"><tr bgcolor="#eeeeee"><td> const char *&nbsp;<strong>menuItem</strong> ()
+<br></td><td align="right"><h3><strong>menuItem</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ Get the name of the menuitem to be displayed in the menu.
+</p>
+<p></p>
+<p><b>Returns</b>: A string containing the name of the menuentry or NULL if no menuentry should
+         be created.
+   </p>
+<A NAME="toolbarTip"></A><A NAME="ref16"></A><table width="100%"><tr bgcolor="#eeeeee"><td> const char *&nbsp;<strong>toolbarTip</strong> ()
+<br></td><td align="right"><h3><strong>toolbarTip</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ Get toolbar tip of the toolbar button. Defaults to same as <A HREF="toTool.html#menuItem">menuItem</A>.
+</p>
+<p></p>
+<p><b>Returns</b>: Toolbar tip string.
+   </p>
+<A NAME="canHandle"></A><A NAME="ref17"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Check if the tool can handle a specific connection. Default is to only handle
+ connections from the provider Oracle.
+</p>
+<p><b>Returns</b>: True if connection can be handled.
+   </p>
+<A NAME="customSetup"></A><A NAME="ref18"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>customSetup</strong> (int toolid)
+<br></td><td align="right"><h3><strong>customSetup</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ This function is called as a last step after the main widget is created. It could
+ be used to insert the tool pretty much anywhere in the user interface if the toolmenu,
+ toolbar is not sufficient.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>toolid</i></TD><TD align="left" valign="top">The tool menu id that should be used if it inserts a custom menu entry.
+   </TD></TR>
+</TABLE></P>
+<A NAME="toolWindow"></A><A NAME="ref19"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<i><strong>toolWindow</strong></i> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,<A HREF="toConnection.html">toConnection</A> &connection)
+<br></td><td align="right"><h3><i><strong>toolWindow</strong></i></h3></td></tr></table><p> <small>[pure virtual]</small></p><p>
+ Create a new tool window.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent window, which is the worksheet of the main window.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>connection</i></TD><TD align="left" valign="top">The database connection that this tool should operate on.
+   </TD></TR>
+</TABLE></P>
+<A NAME="configurationTab"></A><A NAME="ref20"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *&nbsp;<strong>configurationTab</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>configurationTab</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p>
+ Create and return configuration tab for this tool. The returned widget should also
+ be a childclass of <A HREF="toSettingTab.html">toSettingTab</A>.
+</p>
+<p></p>
+<p><b>Returns</b>: A pointer to the widget containing the setup tab for this tool or NULL of
+ no settings are available.
+   </p>
+<A NAME="about"></A><A NAME="ref21"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>about</strong> (<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent)
+<br></td><td align="right"><h3><strong>about</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Display an about dialog for this tool.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">The parent widget of the about dialog.
+   </TD></TR>
+</TABLE></P>
+<A NAME="hasAbout"></A><A NAME="ref22"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>hasAbout</strong> (void)
+<br></td><td align="right"><h3><strong>hasAbout</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Indicate whether or not this tool has an about dialog.
+   </p>
+<A NAME="tools"></A><A NAME="ref23"></A><table width="100%"><tr bgcolor="#eeeeee"><td> std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="toTool.html">toTool</A> *> &&nbsp;<strong>tools</strong> (void)
+<br></td><td align="right"><h3><strong>tools</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Get access to the map of tools. Don't modify it. Observe that the index string is not
+ the name of the tool but an internal key used to get tools sorted in the correct
+ priority order.
+</p>
+<p></p>
+<p><b>Returns</b>: A reference to the tool map.
+   </p>
+<p><b>See also</b>: Tools</p>
+<A NAME="tool"></A><A NAME="ref24"></A><table width="100%"><tr bgcolor="#eeeeee"><td> <A HREF="toTool.html">toTool</A> *&nbsp;<strong>tool</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &key)
+<br></td><td align="right"><h3><strong>tool</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Get a pointer to the tool with a specified key.
+</p>
+<p></p>
+<p><b>Returns</b>: A pointer to the tool or NULL if tool doesn't exist.
+   </p>
+<p><b>See also</b>: Tools</p>
+<A NAME="saveConfig"></A><A NAME="ref25"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>saveConfig</strong> (void)
+<br></td><td align="right"><h3><strong>saveConfig</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Save configuration to file.
+   </p>
+<A NAME="globalConfig"></A><A NAME="ref26"></A><table width="100%"><tr bgcolor="#eeeeee"><td> const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>globalConfig</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &def)
+<br></td><td align="right"><h3><strong>globalConfig</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Get value of a setting.
+</p>
+<p> Setting names are hierachical separated by ':' instead of '/' usually used
+ in filenames. As an example all settings for the tool 'Example' would be
+ under the 'Example:{settingname}' name.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tag</i></TD><TD align="left" valign="top">The name of the configuration setting.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>def</i></TD><TD align="left" valign="top">Default value of the setting, if it is not available.
+   </TD></TR>
+</TABLE></P>
+<A NAME="globalSetConfig"></A><A NAME="ref27"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>globalSetConfig</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value)
+<br></td><td align="right"><h3><strong>globalSetConfig</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Change a setting. Depending on the implementation this can change the
+ contents on disk or not.
+</p>
+<p> Setting names are hierachical separated by ':' instead of '/' usually used
+ in filenames. As an example all settings for the tool 'Example' would be
+ under the 'Example:{settingname}' name.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tag</i></TD><TD align="left" valign="top">The name of the configuration setting.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>def</i></TD><TD align="left" valign="top">Contents of this setting.
+   </TD></TR>
+</TABLE></P>
+<A NAME="globalEraseConfig"></A><A NAME="ref28"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>globalEraseConfig</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag)
+<br></td><td align="right"><h3><strong>globalEraseConfig</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Remove a setting. Can be usefull for removing sensetive information.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tag</i></TD><TD align="left" valign="top">The name of the configuration setting to remove.
+   </TD></TR>
+</TABLE></P>
+<A NAME="config"></A><A NAME="ref29"></A><table width="100%"><tr bgcolor="#eeeeee"><td>const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &&nbsp;<strong>config</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &def)
+<br></td><td align="right"><h3><strong>config</strong></h3></td></tr></table><p></p><p>
+ Get tool specific settings.
+</p>
+<p> Setting names are hierachical separated by ':' instead of '/' usually used
+ in filenames. As an example all settings for the tool 'Example' would be
+ under the 'Example:{settingname}' name.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tag</i></TD><TD align="left" valign="top">The name of the configuration setting.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>def</i></TD><TD align="left" valign="top">Contents of this setting.
+   </TD></TR>
+</TABLE></P>
+<A NAME="setConfig"></A><A NAME="ref30"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setConfig</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag,const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &value)
+<br></td><td align="right"><h3><strong>setConfig</strong></h3></td></tr></table><p></p><p>
+ Change toolspecific setting. Depending on the implementation this can change the
+ contents on disk or not.
+</p>
+<p> Setting names are hierachical separated by ':' instead of '/' usually used
+ in filenames. As an example all settings for the tool 'Example' would be
+ under the 'Example:{settingname}' name.
+</p>
+<p></p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tag</i></TD><TD align="left" valign="top">The name of the configuration setting.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>def</i></TD><TD align="left" valign="top">Default value of the setting, if it is not available.
+   </TD></TR>
+</TABLE></P>
+<A NAME="eraseConfig"></A><A NAME="ref31"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>eraseConfig</strong> (const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &tag)
+<br></td><td align="right"><h3><strong>eraseConfig</strong></h3></td></tr></table><p></p><p>
+ Remove a toolspecific setting. Can be usefull for removing sensetive information.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>tag</i></TD><TD align="left" valign="top">The name of the configuration setting to remove.
+   </TD></TR>
+</TABLE></P>
+<A NAME="loadMap"></A><A NAME="ref32"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>loadMap</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &map)
+<br></td><td align="right"><h3><strong>loadMap</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Load a string to string map from file saved by the <A HREF="toTool.html#saveMap">saveMap</A> function.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>filename</i></TD><TD align="left" valign="top">Filename to load
+</TD></TR>
+<TR><TD align="left" valign="top"><i>map</i></TD><TD align="left" valign="top">Reference to the map to fill with the new values.
+   </TD></TR>
+</TABLE></P>
+<A NAME="saveMap"></A><A NAME="ref33"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>saveMap</strong> (const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &filename,std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &map)
+<br></td><td align="right"><h3><strong>saveMap</strong></h3></td></tr></table><p> <small>[static]</small></p><p>
+ Save a string to string map to file.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>filename</i></TD><TD align="left" valign="top">Filename to load
+</TD></TR>
+<TR><TD align="left" valign="top"><i>map</i></TD><TD align="left" valign="top">Reference to the map to fill with the new values.
+   </TD></TR>
+</TABLE></P>
+<p><b>See also</b>: loadMap</p>
+<A NAME="createWindow"></A><A NAME="ref34"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>createWindow</strong> (void)
+<br></td><td align="right"><h3><strong>createWindow</strong></h3></td></tr></table><p> <small>[slot]</small></p><p>
+ Create a window of the current tool. This function sets up a toolwindow for
+ this tool. It calls the <A HREF="toTool.html#toolWindow">toolWindow</A> function to get widget and sets it
+ up properly.
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toToolWidget.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toToolWidget.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toToolWidget.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,130 @@
+<HTML>
+<HEAD>
+<TITLE>class toToolWidget</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toToolWidget</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> Simple baseclass for widgets defining the main tool widget. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="totool_h.html">totool.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qvbox.html">QVBox</A> <small>(qt)</small> <small>[public ]</small>, <A HREF="toConnectionWidget.html">toConnectionWidget</A> <small>[public ]</small>, <A HREF="toHelpContext.html">toHelpContext</A> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toToolWidget.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref5">toToolWidget</A></b> (<A HREF="toTool.html">toTool</A> &tool,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &ctx,
+	       <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,
+	       <A HREF="toConnection.html">toConnection</A> &conn,
+	       const char *name=NULL) 
+</LI>
+<LI>&nbsp;<b><A HREF="#ref6">~toToolWidget</A></b> () 
+</LI>
+<LI><A HREF="toConnection.html">toConnection</A> &&nbsp;<b><A HREF="#ref7">connection</A></b> () 
+</LI>
+<LI><A HREF="toTool.html">toTool</A> &&nbsp;<b><A HREF="#ref8">tool</A></b> (void) 
+</LI>
+<LI>virtual  bool &nbsp;<b><A HREF="#ref9">canHandle</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI>void &nbsp;<b><A HREF="#ref10">setConnection</A></b> (<A HREF="toConnection.html">toConnection</A> &conn) 
+</LI>
+<LI><A HREF="toTimer.html">toTimer</A> *&nbsp;<b><A HREF="#ref11">timer</A></b> (void) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref12">exportData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+<LI>virtual  void &nbsp;<b><A HREF="#ref13">importData</A></b> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix) 
+</LI>
+</ul><h4>Signals</h4><ul><LI>void &nbsp;<b><A HREF="#ref4">connectionChange</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> Simple baseclass for widgets defining the main tool widget. It is in
+ no way mandatory and all it does is register the widget in the connetion.
+ </p>
+<A NAME="connectionChange"></A><A NAME="ref4"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>connectionChange</strong> (void)
+<br></td><td align="right"><h3><strong>connectionChange</strong></h3></td></tr></table><p> <small>[signal]</small></p><p> Emitted when the connection is changed.
+   </p>
+<A NAME="toToolWidget"></A><A NAME="ref5"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toToolWidget</strong> (<A HREF="toTool.html">toTool</A> &tool,
+	       const <A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A> &ctx,
+	       <A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,
+	       <A HREF="toConnection.html">toConnection</A> &conn,
+	       const char *name=NULL)
+<br></td><td align="right"><h3><strong>toToolWidget</strong></h3></td></tr></table><p></p><p> Create widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>ctx</i></TD><TD align="left" valign="top">Help context for this tool.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>parent</i></TD><TD align="left" valign="top">Parent widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>conn</i></TD><TD align="left" valign="top">Connection of widget.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>name</i></TD><TD align="left" valign="top">Name of widget.
+   </TD></TR>
+</TABLE></P>
+<A NAME="~toToolWidget"></A><A NAME="ref6"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>~toToolWidget</strong> ()
+<br></td><td align="right"><h3><strong>~toToolWidget</strong></h3></td></tr></table><p></p><A NAME="connection"></A><A NAME="ref7"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toConnection.html">toConnection</A> &&nbsp;<strong>connection</strong> ()
+<br></td><td align="right"><h3><strong>connection</strong></h3></td></tr></table><p></p><p> Get the current connection.
+</p>
+<p><b>Returns</b>: Reference to connection.
+   </p>
+<p>Reimplemented from <A HREF="toConnectionWidget.html#connection">toConnectionWidget</A>.</p>
+<A NAME="tool"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toTool.html">toTool</A> &&nbsp;<strong>tool</strong> (void)
+<br></td><td align="right"><h3><strong>tool</strong></h3></td></tr></table><p></p><p> Get the tool for this tool widget.
+</p>
+<p><b>Returns</b>: Reference to a tool object.
+   </p>
+<A NAME="canHandle"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td> bool &nbsp;<strong>canHandle</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>canHandle</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Check if this tool can handle a specific connection.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>provider</i></TD><TD align="left" valign="top">Name of connection.
+</TD></TR>
+</TABLE></P>
+<p><b>Returns</b>: True if connection is handled.
+   </p>
+<A NAME="setConnection"></A><A NAME="ref10"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>setConnection</strong> (<A HREF="toConnection.html">toConnection</A> &conn)
+<br></td><td align="right"><h3><strong>setConnection</strong></h3></td></tr></table><p></p><p> Change connection of tool.
+   </p>
+<p>Reimplemented from <A HREF="toConnectionWidget.html#setConnection">toConnectionWidget</A>.</p>
+<A NAME="timer"></A><A NAME="ref11"></A><table width="100%"><tr bgcolor="#eeeeee"><td><A HREF="toTimer.html">toTimer</A> *&nbsp;<strong>timer</strong> (void)
+<br></td><td align="right"><h3><strong>timer</strong></h3></td></tr></table><p></p><p> Get timer of tool. Used by some results to get update time.
+</p>
+<p><b>Returns</b>: Pointer to a timer object.
+   </p>
+<A NAME="exportData"></A><A NAME="ref12"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>exportData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>exportData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Export data to a map.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">A map that can be used to recreate the data of a chart.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to add to the map.
+   </TD></TR>
+</TABLE></P>
+<A NAME="importData"></A><A NAME="ref13"></A><table width="100%"><tr bgcolor="#eeeeee"><td> void &nbsp;<strong>importData</strong> (std::map<<A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A>,<A HREF="/usr/lib/qt3/doc/html/qstring.html">QString</A>> &data,const <A HREF="/usr/lib/qt3/doc/html/qcstring.html">QCString</A> &prefix)
+<br></td><td align="right"><h3><strong>importData</strong></h3></td></tr></table><p> <small>[virtual]</small></p><p> Import data
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>data</i></TD><TD align="left" valign="top">Data to read from a map.
+</TD></TR>
+<TR><TD align="left" valign="top"><i>prefix</i></TD><TD align="left" valign="top">Prefix to read data from.
+   </TD></TR>
+</TABLE></P>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toVisualize.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toVisualize.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toVisualize.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,51 @@
+<HTML>
+<HEAD>
+<TITLE>class toVisualize</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>class toVisualize</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"> This widget is used to visualize the data in a toListView into charts. <small><A HREF="#longdesc">More...</A></small></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		<TR><TH>Definition</TH><TD><code>#include &lt;<A HREF="tovisualize_h.html">tovisualize.h</A>&gt;</code></TD></TR>
+<TR><TH>Inherits</TH><TD><A HREF="/usr/lib/qt3/doc/html/qvbox.html">QVBox</A> <small>(qt)</small> <small>[public ]</small></TD></TR>
+<TR><TH><A HREF="full-list-toVisualize.html">List of all Methods</A></TH></TR>
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<h4>Public Methods</h4><ul><LI>&nbsp;<b><A HREF="#ref8">toVisualize</A></b> (<A HREF="toListView.html">toListView</A> *Source,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL) 
+</LI>
+</ul><h4>Public Slots</h4><ul><LI>void &nbsp;<b><A HREF="#ref9">display</A></b> (void) 
+</LI>
+</ul><HR><H2><A NAME="longdesc">Detailed Description</A></H2><p> This widget is used to visualize the data in a toListView into charts.
+ </p>
+<A NAME="toVisualize"></A><A NAME="ref8"></A><table width="100%"><tr bgcolor="#eeeeee"><td>&nbsp;<strong>toVisualize</strong> (<A HREF="toListView.html">toListView</A> *Source,<A HREF="/usr/lib/qt3/doc/html/qwidget.html">QWidget</A> *parent,const char *name=NULL)
+<br></td><td align="right"><h3><strong>toVisualize</strong></h3></td></tr></table><p></p><p> Create visualize widget.
+</p>
+<p><b>Parameters</b>:<TABLE BORDER="0" CELLPADDING="5">
+<TR><TD align="left" valign="top"><i>source</i></TD><TD align="left" valign="top">Source list view to get data from.
+   </TD></TR>
+</TABLE></P>
+<A NAME="display"></A><A NAME="ref9"></A><table width="100%"><tr bgcolor="#eeeeee"><td>void &nbsp;<strong>display</strong> (void)
+<br></td><td align="right"><h3><strong>display</strong></h3></td></tr></table><p> <small>[slot]</small></p><p> Refresh result
+   </p>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tobackground_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tobackground_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tobackground_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,131 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tobackground.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tobackground.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOBACKGROUND_H
+#define TOBACKGROUND_H
+
+#include <qtimer.h>
+
+class QLabel;
+class QMovie;
+
+/** A timer descendant which also keep track of the last timer setting sent to it.
+ */
+class toTimer : public QTimer {
+  int LastTimer;
+public:
+  /** Create timer.
+   * @param parent Parent object of timer.
+   * @param name Name of timer.
+   */
+  toTimer(QObject *parent=0,const char * name=0)
+    : QTimer(parent,name)
+  { }
+  /** Start timer.
+   * @param msec Milliseconds to timeout.
+   * @param sshot Set to true if only timeout once.
+   */
+  int start(int msec,bool sshot=false)
+  { LastTimer=msec; return QTimer::start(msec,sshot); }
+  /** Get last timer start timeout.
+   * @return Last timeout in millisecond.
+   */
+  int lastTimer(void)
+  { return LastTimer; }
+};
+
+/**
+ * A descendant of timer which will indicate in the statusbar of the
+ * main window when any timer is running. Can not do singleshots, only
+ * periodic intervals.
+ */
+class toBackground : public toTimer {
+public:
+  /**
+   * Create a background timer widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toBackground(QObject* parent=0,const char* name=0);
+  ~toBackground();
+  /** Start repeating timer with msec interval.
+   * @param msec Millsecond repeat interval.
+   */
+  void start(int msec);
+  /** Stop timer
+   */
+  void stop(void);
+
+  static void init(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tobarchart_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tobarchart_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tobarchart_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,109 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tobarchart.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tobarchart.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOBARCHART_H
+#define TOBARCHART_H
+
+#include "tolinechart.h"
+
+#include <list>
+
+/** A widget that displays a barchart. Each line is added onto the next one.
+ */
+
+class toBarChart : public toLineChart {
+  Q_OBJECT
+
+protected:
+  virtual void paintChart(QPainter *p,QRect &rect);
+public:
+  /** Create a new barchart.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toBarChart(QWidget *parent=NULL,const char *name=NULL,WFlags f=0);
+
+  /** Create a new barchart by copying all the data from another barchart.
+   * @param chart Chart to copy data from.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toBarChart(toBarChart *chart,QWidget *parent=NULL,const char *name=NULL,WFlags f=0);
+
+  /** Open chart in new window.
+   */
+  virtual toLineChart *openCopy(QWidget *parent);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tochangeconnection_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tochangeconnection_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tochangeconnection_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,96 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tochangeconnection.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tochangeconnection.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOCHANGECONNECTION_H
+#define TOCHANGECONNECTION_H
+
+#include "utils.h"
+
+/**
+ * This button will allow you to change the connection for the nearest toToolWidget
+ * parent.
+ */
+
+class toChangeConnection : public toPopupButton {
+  Q_OBJECT
+private slots:
+  void changeConnection(int id);
+  void popupMenu(void);
+public:
+  /** Create the button, only the toolbar parent is needed.
+   * @param parent Toolbar to put connection in.
+   * @param name Name of widget.
+   */
+  toChangeConnection(QToolBar *parent,const char *name=0);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toconf_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toconf_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toconf_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,222 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toconf.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toconf.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOCONF_H
+#define TOCONF_H
+
+#define CONF_PROVIDER		"Provider"
+#define DEFAULT_PROVIDER	"Oracle"
+#define CONF_SAVE_PWD		"SavePassword"
+#define DEFAULT_SAVE_PWD	""
+#define CONF_PASSWORD		"DefaultPassword"
+#define DEFAULT_PASSWORD	""
+#define CONF_DATABASE		"DefaultDatabase"
+#define DEFAULT_DATABASE	""
+#define CONF_USER		"DefaultUser"
+#define DEFAULT_USER		"system"
+#define CONF_HOST		"Host"
+#define DEFAULT_HOST		"localhost"
+#define CONF_OPTIONS		"Options"
+#define DEFAULT_OPTIONS		""
+#define CONF_MAX_NUMBER		"MaxNumber"
+#define DEFAULT_MAX_NUMBER	"50"
+#define CONF_MAX_COL_SIZE	"MaxColSize"
+#define DEFAULT_MAX_COL_SIZE	"30000"
+#define CONF_MAX_COL_DISP	"MaxColDisp"
+#define DEFAULT_MAX_COL_DISP	"300"
+#define CONF_PLAN_TABLE		"PlanTable"
+#define DEFAULT_PLAN_TABLE	"PLAN_TABLE"
+#define CONF_PLAN_CHECKPOINT	"PlanCheckpoint"
+#define DEFAULT_PLAN_CHECKPOINT	"TORA_CHECKPOINT"
+#define CONF_TEXT		"ConfText"
+#define CONF_CODE		"ConfCode"
+#define CONF_LIST		"ListText"
+#define CONF_DATE_FORMAT	"ConfDateFormat"
+#define DEFAULT_DATE_FORMAT	"YYYY-MM-DD HH24:MI:SS"
+#define CONF_REFRESH		"Refresh"
+#define DEFAULT_REFRESH		"None"
+#define CONF_HIGHLIGHT		"SyntaxHighlight"
+#define CONF_KEYWORD_UPPER	"KeywordUpper"
+#define DEFAULT_KEYWORD_UPPER	""
+#define CONF_COLOR		"KeywordColor"
+#define CONF_PLUGIN_DIR		"PluginDir"
+#define CONF_CACHE_DIR		"CacheDir"
+#define CONF_CACHE_DISK		"CacheDiskUse"
+#define DEFAULT_CACHE_DISK	"Yes"
+#define CONF_SQL_FILE		"SQLDictionary"
+#define DEFAULT_SQL_FILE	"$HOME/.torasql"
+#define CONF_DESKTOP_AWARE	"DesktopAware"
+#define CONF_STATUS_MESSAGE     "StatusMessage"
+#define DEFAULT_STATUS_MESSAGE  "5"
+#define CONF_QT_XFT             "Xft"
+#define DEFAULT_QT_XFT          "false"
+#define CONF_DOCK_TOOLBAR	"DockToolbar"
+#define CONF_DB_TITLE		"DBTitle"
+#define CONF_SIZE_UNIT		"SizeUnit"
+#define DEFAULT_SIZE_UNIT	"MB"
+#define CONF_HELP_PATH		"HelpPath"
+#define CONF_STATUS_SAVE	"StatusSave"
+#define DEFAULT_STATUS_SAVE	"10"
+#define CONF_AUTO_COMMIT	"AutoCommit"
+#define CONF_CHANGE_CONNECTION	"ChangeConnection"
+#define CONF_CONNECT_HISTORY	"ConnectHistory"
+#define CONF_CONNECT_SIZE	"ConnectSize"
+#define CONF_CONNECT_CURRENT	"ConnectCurrent"
+#define DEFAULT_CONNECT_SIZE	"20"
+#define CONF_DEFAULT_TOOL	"DefaultTool"
+#define CONF_TOOL_ENABLE	"Enabled"
+#define CONF_CHART_SAMPLES	"ChartSamples"
+#define DEFAULT_CHART_SAMPLES	"100"
+#define CONF_DISPLAY_SAMPLES	"DisplaySamples"
+#define DEFAULT_DISPLAY_SAMPLES	"-1"
+#define CONF_CODE_COMPLETION	"CodeComplete"
+#define CONF_COMPLETION_SORT	"CompleteSort"
+#define CONF_MAXIMIZE_MAIN	"MaximizeMain"
+#define CONF_AUTO_INDENT	"AutoIndent"
+#define CONF_DONT_REREAD	"DontReread"
+#define CONF_AUTO_LONG		"AutoLong"
+#define CONF_MESSAGE_STATUSBAR	"MessageStatusbar"
+#define CONF_OBJECT_CACHE	"ObjectCache"
+#define DEFAULT_OBJECT_CACHE	"1"
+#define CONF_BKGND_CONNECT	"BackgroundConnect"
+#define CONF_MAX_CONTENT	"MaxContent"
+#define DEFAULT_MAX_CONTENT	"100"
+#define CONF_KEEP_PLANS		"KeepPlans"
+#define CONF_RESTORE_SESSION	"RestoreSession"
+#define CONF_DEFAULT_SESSION	"DefaultSession"
+#define DEFAULT_SESSION		"$HOME/.tora.tse"
+#define CONF_TOOLS_LEFT		"ToolsLeft"
+#define CONF_DEFAULT_FORMAT	"DefaultFormat"
+#define CONF_CSV_SEPARATOR	"CSVSeparator"
+#define DEFAULT_CSV_SEPARATOR	";"
+#define CONF_CSV_DELIMITER	"CSVDelimiter"
+#define DEFAULT_CSV_DELIMITER	"\""
+#define CONF_AUTO_INDENT_RO	"AutoIndent"
+#define CONF_INDICATE_EMPTY	"IndicateEmpty"
+#define CONF_EXTENSIONS  	"Extensions"
+#define CONF_RECENT_FILES	"RecentFiles"
+#define CONF_RECENT_MAX		"RecentMax"
+#define DEFAULT_RECENT_MAX	"5"
+#define CONF_LAST_DIR		"LastDir"
+#define CONF_LOCALE		"Locale"
+#define CONF_KEEP_ALIVE		"KeepAlive"
+#define DEFAULT_KEEP_ALIVE	"300"
+#define CONF_NUMBER_FORMAT	"NumberFormat"
+#define DEFAULT_NUMBER_FORMAT	"0"
+#define CONF_NUMBER_DECIMALS	"NumberDecimals"
+#define DEFAULT_NUMBER_DECIMALS	"2"
+#define CONF_CACHE_TIMEOUT	"CacheTimeout"
+#define DEFAULT_CACHE_TIMEOUT	"7"
+#define CONF_TAB_STOP		"TabStop"
+#define DEFAULT_TAB_STOP	"8"
+#define CONF_TOAD_BINDINGS	"ToadBindings"
+#define DEFAULT_TOAD_BINDINGS	""
+#define CONF_DISPLAY_GRIDLINES	"Gridlines"
+#define DEFAULT_DISPLAY_GRIDLINES "Yes"
+
+#ifdef TO_KDE
+#define DEFAULT_EXTENSIONS	"*.sql *.pkg *.pkb|SQL files\n*.txt|Text files\n*|All files"
+#else
+#define DEFAULT_EXTENSIONS	"SQL (*.sql *.pkg *.pkb), Text (*.txt), All (*)"
+#endif
+
+#ifndef TO_KDE
+#  ifndef WIN32
+// Undefining this will leave out the style selection option stuff from the program
+#    define ENABLE_STYLE
+// Undefining this will enable choosing Qt_Xft support
+#    define ENABLE_QT_XFT
+#  endif
+#endif
+#define CONF_STYLE		"Style"
+#define DEFAULT_STYLE		"Windows"
+#ifdef WIN32
+// Wether to build monolithic TOra or not (Without plugin support
+#  define TOMONOLITHIC
+#  define DEFAULT_PLUGIN_DIR ""
+#endif
+// Version of TOra, must also change rpm files
+#ifndef TOAPPNAME
+#  define TOAPPNAME		"TOra"
+#endif
+
+#define TOHOMEPAGE		"http://tora.sourceforge.net"
+
+#ifndef TOVERSION
+#  define TOVERSION               "1.3.15"
+#endif
+// Stable or development version of TOra
+#define TOTYPE			"DEVELOP"
+
+#define TO_KDE_TOOLBAR_WIDGET	"kde toolbar widget"
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toconnection_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toconnection_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toconnection_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1080 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toconnection.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toconnection.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOCONNECTION_H
+#define TOCONNECTION_H
+
+#include "toqvalue.h"
+#include "tothread.h"
+
+#include <list>
+#include <map>
+#include <set>
+
+#include <qstring.h>
+
+class QWidget;
+class toConnection;
+class toConnectionProvider;
+class toSQL;
+class toQuery;
+class toSyntaxAnalyzer;
+
+/** This class is an abstract definition of an actual connection to a database.
+ * Each @ref toConnection object can have one or more actual connections to the
+ * database depending on long running queries. Normally you will never need to
+ * bother with this class if you aren't creating a new database provider
+ * (@ref toConnectionProvider).
+ */
+
+class toConnectionSub {
+  toQuery *Query;
+public:
+  /** Create connection to database.
+   */
+  toConnectionSub()
+  { Query=NULL; }
+  /** Close connection.
+   */
+  virtual ~toConnectionSub()
+  { }
+  /** Query current running on connection or NULL.
+   */
+  toQuery *query()
+  { return Query; }
+  /** Set query currently running on connection. NULL means none.
+   */
+  void setQuery(toQuery *query)
+  { Query=query; }
+  /** Cancel anything running on this sub.
+   */
+  virtual void cancel(void)
+  { }
+};
+
+/** This class is used to perform a query on a database connection.
+ */
+
+class toQuery {
+public:
+  /** Represent different modes to run a query in.
+   */
+  enum queryMode {
+    /** Run the query normally on the main connection of the @ref toConnection object.
+     */
+    Normal,
+    /** Run the query normally on the main backgrround connection of the
+     * @ref toConnection object. This can be the same as the main connection depending
+     * on settings.
+     */
+    Background,
+    /** Run the query in a separate connection for long running queries.
+     */
+    Long,
+    /** Run the query on all non occupied connections of the @ref toConnection object.
+     */
+    All
+  };
+
+  /** This structure is used to describe the resultset of a query.
+   */
+
+  struct queryDescribe {
+    /** Column name
+     */
+    QString Name;
+    /** Datatype of string.
+     */
+    QString Datatype;
+    /** If column can contain null values.
+     */
+    bool Null;
+    /** Preferred alignment of this kind of value.
+     */
+    bool AlignRight;
+    /** Comment on column (Only filled out in column cache.
+     */
+    QString Comment;
+  };
+  /** Abstract parent of implementations of a query for a database provider
+   * (See @ref toConnection::connectionImpl and @ref toConnectionProvider)
+   */
+  class queryImpl {
+    toQuery *Parent;
+  public:
+    /** Get the parent query object. All the parameters of the query must be read from here.
+     * nothing is passed to the functions.
+     */
+    toQuery *query()
+    { return Parent; }
+    
+    /** Create a query implementation. The constructor must not perform any actions with the
+     * database that could block for a noticable time (Like execute or parse a query). The
+     * data for the query may not be available when this object created.
+     * @param query Parent query object.
+     */
+    queryImpl(toQuery *query)
+      : Parent(query)
+    { }
+    /** Destroy query implementation.
+     */
+    virtual ~queryImpl()
+    { }
+    /** Execute a query. Parameters can be gotten from the @ref toQuery object.
+     */
+    virtual void execute(void) = 0;
+    /** Read the next value from the stream.
+     * @return The value read from the query.
+     */
+    virtual toQValue readValue(void) = 0;
+    /** Check if the end of the query has been reached.
+     * @return True if all values have been read.
+     */
+    virtual bool eof(void) = 0;
+    /** Get the number of rows processed in the last executed query.
+     */
+    virtual int rowsProcessed(void) = 0;
+    /** Describe the currently running query.
+     * @return A list of column descriptions of the query.
+     */
+    virtual std::list<queryDescribe> describe(void) = 0;
+    /** Get number of columns in the resultset.
+     * @return Column number.
+     */
+    virtual int columns(void) = 0;
+    /** Cancel the current execution of a query. This will usually be called from another
+     * thread than is executing the query.
+     */
+    virtual void cancel(void) = 0;
+  };
+
+private:
+  toConnection &Connection;
+  toConnectionSub *ConnectionSub;
+  std::list<toQValue> Params;
+  QCString SQL;
+  queryMode Mode;
+
+  queryImpl *Query;
+  toQuery(const toQuery &);
+public:
+  /** Create a normal query.
+   * @param conn Connection to create query on.
+   * @param sql SQL to run.
+   * @param params Parameters to pass to query.
+   */
+  toQuery(toConnection &conn,const toSQL &sql,const std::list<toQValue> &params);
+  /** Create a normal query.
+   * @param conn Connection to create query on.
+   * @param sql SQL to run.
+   * @param params Parameters to pass to query.
+   */
+  toQuery(toConnection &conn,const QString &sql,const std::list<toQValue> &params);
+  /** Create a normal query.
+   * @param conn Connection to create query on.
+   * @param sql SQL to run.
+   * @param arg1 Arguments to pass to query.
+   */
+  toQuery(toConnection &conn,const toSQL &sql,
+	  const QString &arg1=QString::null,const QString &arg2=QString::null,
+	  const QString &arg3=QString::null,const QString &arg4=QString::null,
+	  const QString &arg5=QString::null,const QString &arg6=QString::null,
+	  const QString &arg7=QString::null,const QString &arg8=QString::null,
+	  const QString &arg9=QString::null);
+  /** Create a normal query.
+   * @param conn Connection to create query on.
+   * @param sql SQL to run.
+   * @param arg1 Arguments to pass to query.
+   */
+  toQuery(toConnection &conn,const QString &sql,
+	  const QString &arg1=QString::null,const QString &arg2=QString::null,
+	  const QString &arg3=QString::null,const QString &arg4=QString::null,
+	  const QString &arg5=QString::null,const QString &arg6=QString::null,
+	  const QString &arg7=QString::null,const QString &arg8=QString::null,
+	  const QString &arg9=QString::null);
+
+  /** Create a query.
+   * @param conn Connection to create query on.
+   * @param mode Mode to run query in.
+   * @param sql SQL to run.
+   * @param params Arguments to pass to query.
+   */
+  toQuery(toConnection &conn,queryMode mode,const toSQL &sql,const std::list<toQValue> &params);
+  /** Create a query.
+   * @param conn Connection to create query on.
+   * @param mode Mode to run query in.
+   * @param sql SQL to run.
+   * @param params Arguments to pass to query.
+   */
+  toQuery(toConnection &conn,queryMode mode,const QString &sql,const std::list<toQValue> &params);
+  /** Create a query. Don't runn any SQL using it yet. Observe though that the @ref
+   * toConnectionSub object is assigned here so you know that all queries run using this
+   * query object will run on the same actual connection to the database (Unless mode is All off
+   * course).
+   * @param conn Connection to create query for.
+   * @param mode Mode to execute queries in.
+   */
+  toQuery(toConnection &conn,queryMode mode=Normal);
+  /** Destroy query.
+   */
+  virtual ~toQuery();
+
+  /** Execute an SQL statement using this query.
+   * @param sql SQL to run.
+   * @param params Parameters to pass to query.
+   */
+  void execute(const toSQL &sql,const std::list<toQValue> &params);
+  /** Execute an SQL statement using this query.
+   * @param sql SQL to run.
+   * @param params Parameters to pass to query.
+   */
+  void execute(const QString &sql,const std::list<toQValue> &params);
+
+  /** Connection object of this object.
+   */
+  toConnection &connection(void)
+  { return Connection; }
+  /** Actual database connection that this query is currently using.
+   */
+  toConnectionSub *connectionSub(void)
+  { return ConnectionSub; }
+  /** Parameters of the current query.
+   */
+  std::list<toQValue> &params(void)
+  { return Params; }
+  /** SQL to run. Observe that this string is in UTF8 format.
+   */
+  QCString sql(void)
+  { return SQL; }
+  /** Get the mode this query is executed in.
+   */
+  toQuery::queryMode mode(void) const
+  { return Mode; }
+
+  /** Read a value from the query. Convert the value NULL to the string {null}.
+   * @return Value read.
+   */
+  toQValue readValue(void);
+  /** Read a value from the query. Nulls are returned as empty @ref toQValue.
+   * @return Value read.
+   */
+  toQValue readValueNull(void);
+  /** Check if end of query is reached.
+   * @return True if end of query is reached.
+   */
+  bool eof(void);
+
+  /** Get the number of rows processed by the query.
+   */
+  int rowsProcessed(void)
+  { return Query->rowsProcessed(); }
+  /** Get a list of descriptions for the columns. This function is relatively slow.
+   */
+  std::list<queryDescribe> describe(void)
+  { return Query->describe(); }
+  /** Get the number of columns in the resultset of the query.
+   */
+  int columns(void)
+  { return Query->columns(); }
+
+  /** Execute a query and return all the values returned by it.
+   * @param conn Connection to run query on.
+   * @param sql SQL to run.
+   * @param params Parameters to pass to query.
+   * @return A list of @ref toQValues:s read from the query.
+   */
+  static std::list<toQValue> readQuery(toConnection &conn,
+				       const toSQL &sql,
+				       std::list<toQValue> &params);
+  /** Execute a query and return all the values returned by it.
+   * @param conn Connection to run query on.
+   * @param sql SQL to run.
+   * @param params Parameters to pass to query.
+   * @return A list of @ref toQValues:s read from the query.
+   */
+  static std::list<toQValue> readQuery(toConnection &conn,
+				       const QString &sql,
+				       std::list<toQValue> &params);
+  /** Execute a query and return all the values returned by it.
+   * @param conn Connection to run query on.
+   * @param sql SQL to run.
+   * @param arg1 Parameters to pass to query.
+   * @return A list of @ref toQValues:s read from the query.
+   */
+  static std::list<toQValue> readQuery(toConnection &conn,const toSQL &sql,
+				       const QString &arg1=QString::null,const QString &arg2=QString::null,
+				       const QString &arg3=QString::null,const QString &arg4=QString::null,
+				       const QString &arg5=QString::null,const QString &arg6=QString::null,
+				       const QString &arg7=QString::null,const QString &arg8=QString::null,
+				       const QString &arg9=QString::null);
+  /** Execute a query and return all the values returned by it.
+   * @param conn Connection to run query on.
+   * @param sql SQL to run.
+   * @param arg1 Parameters to pass to query.
+   * @return A list of @ref toQValues:s read from the query.
+   */
+  static std::list<toQValue> readQuery(toConnection &conn,const QString &sql,
+				       const QString &arg1=QString::null,const QString &arg2=QString::null,
+				       const QString &arg3=QString::null,const QString &arg4=QString::null,
+				       const QString &arg5=QString::null,const QString &arg6=QString::null,
+				       const QString &arg7=QString::null,const QString &arg8=QString::null,
+				       const QString &arg9=QString::null);
+  /** Execute a query and return all the values returned by it.
+   * @param conn Connection to run query on.
+   * @param sql SQL to run.
+   * @param params Parameters to pass to query.
+   * @return A list of @ref toQValues:s read from the query.
+   */
+  static std::list<toQValue> readQueryNull(toConnection &conn,
+					   const toSQL &sql,
+					   std::list<toQValue> &params);
+  /** Execute a query and return all the values returned by it.
+   * @param conn Connection to run query on.
+   * @param sql SQL to run.
+   * @param params Parameters to pass to query.
+   * @return A list of @ref toQValues:s read from the query.
+   */
+  static std::list<toQValue> readQueryNull(toConnection &conn,
+					   const QString &sql,
+					   std::list<toQValue> &params);
+  /** Execute a query and return all the values returned by it.
+   * @param conn Connection to run query on.
+   * @param sql SQL to run.
+   * @param arg1 Parameters to pass to query.
+   * @return A list of @ref toQValues:s read from the query.
+   */
+  static std::list<toQValue> readQueryNull(toConnection &conn,const toSQL &sql,
+					   const QString &arg1=QString::null,const QString &arg2=QString::null,
+					   const QString &arg3=QString::null,const QString &arg4=QString::null,
+					   const QString &arg5=QString::null,const QString &arg6=QString::null,
+					   const QString &arg7=QString::null,const QString &arg8=QString::null,
+					   const QString &arg9=QString::null);
+  /** Execute a query and return all the values returned by it.
+   * @param conn Connection to run query on.
+   * @param sql SQL to run.
+   * @param arg1 Parameters to pass to query.
+   * @return A list of @ref toQValues:s read from the query.
+   */
+  static std::list<toQValue> readQueryNull(toConnection &conn,const QString &sql,
+					   const QString &arg1=QString::null,const QString &arg2=QString::null,
+					   const QString &arg3=QString::null,const QString &arg4=QString::null,
+					   const QString &arg5=QString::null,const QString &arg6=QString::null,
+					   const QString &arg7=QString::null,const QString &arg8=QString::null,
+					   const QString &arg9=QString::null);
+  /** Cancel the current execution of a query.
+   */
+  void cancel(void);
+};
+
+/** A short representation of a @ref toQuery::queryDescribe
+ */
+typedef toQuery::queryDescribe toQDescribe;
+/** A short representation of list<toQuery::queryDescribe>
+ */
+typedef std::list<toQDescribe> toQDescList;
+
+/** Represent a database connection in TOra. Observe that this can mean several actual
+ * connections to the database as queries that ae expected to run a long time are sometimes
+ * executed in their own connection to make sure the interface doesn't lock up for a long time.
+ */
+class toConnection {
+  QCString Provider;
+  QString User;
+  QString Password;
+  QString Host;
+  QString Database;
+  QCString Version;
+  std::list<QObject *> Widgets;
+  std::list<QString> InitStrings;
+  std::set<QString> Options;
+  toLock Lock;
+  std::list<toConnectionSub *> Connections;
+  std::list<toConnectionSub *> Running;
+  int BackgroundCount;
+  toConnectionSub *BackgroundConnection;
+  bool NeedCommit;
+
+public:
+
+  /** Class that could be used to throw exceptions in connection errors. Must use if you
+   * want to indicate error offset.
+   */
+
+  class exception : public QString {
+    int Offset;
+  public:
+    /** Create an exception with a string description.
+     */
+    exception(const QString &str,int offset=-1)
+      : QString(str)
+      { Offset=offset; }
+    /** Get the offset of the error of the current statement.
+     */
+    int offset(void) const
+    { return Offset; }
+    /** Set the offset of the error of the error.
+     */
+    void setOffset(int offset)
+    { Offset=offset; }
+  };
+
+  /** Contain information about a tablename.
+   */
+  struct objectName {
+    /** The object name
+     */
+    QString Name;
+    /** The schema that owns it
+     */
+    QString Owner;
+    /** Object type
+     */
+    QString Type;
+    /** Comment about this object
+     */
+    QString Comment;
+    /** synonyms (used for faster disk caching...)
+    */
+    std::list <QString> Synonyms;
+
+    /** Create an object name with filled in values.
+     */
+    objectName(const QString &owner,const QString &name,const QString &type=QString("TABLE"),const QString &comment=QString::null)
+      : Name(name),Owner(owner),Type(type),Comment(comment)
+    { }
+
+    /** Create an empty object name.
+     */
+    objectName()
+    { }
+    bool operator < (const objectName &) const;
+    bool operator == (const objectName &) const;
+  };
+
+  /** This class is an abstract baseclass to actually implement the comunication with the
+   * database. 
+   * (See also @ref toQuery::queryImpl and @ref toConnectionProvider)
+   */
+  class connectionImpl {
+    toConnection *Connection;
+  public:
+    /** Get the parent connection object of this connection.
+     */
+    toConnection &connection(void)
+    { return *Connection; }
+    /** Create a new connection implementation for a connection.
+     * @param conn Connection to implement.
+     */
+    connectionImpl(toConnection *conn)
+    { Connection=conn; };
+    /** Destructor.
+     */
+    virtual ~connectionImpl()
+    { }
+
+    /** Commit the supplied actual database connection.
+     */
+    virtual void commit(toConnectionSub *) = 0;
+    /** Rollback the supplied actual database connection.
+     */
+    virtual void rollback(toConnectionSub *) = 0;
+
+    /** If not true can never run more than one query per connection sub and TOra will
+     * work around this limitation by opening more connections if needed.
+     */
+    virtual bool handleMultipleQueries()
+    { return true; }
+
+    /** Create a new connection to the database.
+     */
+    virtual toConnectionSub *createConnection(void) = 0;
+    /** Close a connection to the database.
+     */
+    virtual void closeConnection(toConnectionSub *) = 0;
+
+    /** Get the version of the database connected to.
+     */
+    virtual QCString version(toConnectionSub *) = 0;
+
+    /** Return a string representation to address an object.
+     * @param name The name to be quoted.
+     * @return String addressing table.
+     */
+    virtual QString quote(const QString &name)
+    { return name; }
+    /** Perform the opposite of @ref quote.
+     * @param name The name to be un-quoted.
+     * @return String addressing table.
+     */
+    virtual QString unQuote(const QString &name)
+    { return name; }
+
+    /**
+     * Get syntax analyzer for connection
+     * @return A reference to the syntax analyzer to use for the connection.
+     */
+    virtual toSyntaxAnalyzer &analyzer();
+
+    /** Extract available objects to query for connection. Any access to the
+     * database should always be run using a long running query. If something
+     * goes wrong should throw exception.
+     * @return List of available objects.
+     */
+    virtual std::list<objectName> objectNames(void);
+    /** Get synonyms available for connection. Any access to the
+     * database should always be run using a long running query. If something
+     * goes wrong should throw exception.
+     * @param objects Available objects for the connection. Objects
+     *                are sorted in owner and name order. Don't modify
+     *                this list.
+     * @return Map of synonyms to objectnames.
+     */
+    virtual std::map<QString,objectName> synonymMap(std::list<objectName> &objects);
+    /* Extract available columns to query for a table.
+     * @param table Table to get column for.
+     * @return List of columns for table or view.
+     */
+    virtual toQDescList columnDesc(const objectName &table);
+
+    /** Create a new query implementation for this connection.
+     * @return A query implementation, allocated with new.
+     */
+    virtual toQuery::queryImpl *createQuery(toQuery *query,toConnectionSub *conn) = 0;
+    /** Execute a query on an actual connection without caring about the result.
+     * @param conn Connection to execute on.
+     * @param sql SQL to execute.
+     * @param params Parameters to pass to query.
+     */
+    virtual void execute(toConnectionSub *conn,const QCString &sql,toQList &params) = 0;
+    /** Parse a query on an actual connection and report any syntax problems encountered.
+     * Defaults to not implemented.
+     * @param conn Connection to execute on.
+     * @param sql SQL to parse
+     */
+    virtual void parse(toConnectionSub *conn,const QCString &sql);
+  };
+
+private:
+
+  void addConnection(void);
+  std::list<toConnectionSub *> &connections(void)
+  { return Connections; }
+
+  connectionImpl *Connection;
+
+  class cacheObjects : public toTask {
+    toConnection &Connection;
+  public:
+    cacheObjects(toConnection &conn)
+      : Connection(conn)
+    { }
+    virtual void run(void);
+  };
+  friend class cacheObjects;
+
+  bool ReadingCache;
+  toSemaphore ReadingValues;
+  bool Abort;
+  std::map<objectName,toQDescList> ColumnCache;
+  std::list<objectName> ObjectNames;
+  std::map<QString,objectName> SynonymMap;
+
+  toConnectionSub *mainConnection(void);
+  toConnectionSub *longConnection(void);
+  toConnectionSub *backgroundConnection(void);
+  void freeConnection(toConnectionSub *);
+  void readObjects(void);
+
+  QString cacheFile();
+public:
+  /** Create a new connection.
+   * @param provider Which database provider to use for this connection.
+   * (See @ref to toDatabaseConnection)
+   * @param user User to connect to the database with.
+   * @param password Password to connect with.
+   * @param host Host to connect to the database with.
+   * @param database Database to connect to.
+   * @param options Options used to connect to the database with.
+   * @param cache Enable object cache for this connection.
+   */
+  toConnection(const QCString &provider,const QString &user,const QString &password,
+	       const QString &host,const QString &database,const std::set<QString> &options,
+	       bool cache=true);
+  /** Create a copy of a connection. Will not cache objects, so objects will never be available
+   *  in a subconnection.
+   * @param conn Connection to copy.
+   */
+  toConnection(const toConnection &conn);
+  /** Destroy connection.
+   */
+  virtual ~toConnection();
+
+  //* Get the options for the connection.
+  const std::set<QString> &options() const
+  { return Options; }
+  /** Try to close all the widgets associated with this connection.
+   * @return True if all widgets agreed to close.
+   */
+  bool closeWidgets(void);
+  /** Get username of connection.
+   */
+  const QString &user() const
+  { return User; }
+  /** Get password of connection.
+   */
+  const QString &password() const
+  { return Password; }
+  /** Change password of connection.
+   */
+  void setPassword(const QString &pwd)
+  { Password=pwd; }
+  /** Get host of connection.
+   */
+  const QString &host() const
+  { return Host; }
+  /** Get database of connection.
+   */
+  const QString &database() const
+  { return Database; }
+  /** Get version of connection.
+   */
+  const QCString &version() const
+  { return Version; }
+  /** Get provider of connection.
+   */
+  const QCString &provider() const;
+
+  /** Change the current database. Observe that this only changes the record of what is the current database. You will still need
+   * to change the database oppinion on what database is the current one.
+   */
+  void setDatabase(const QString &database)
+  { Database=database; }
+
+  /** Get a description of this connection.
+   * @version Include version in returned string.
+   */
+  virtual QString description(bool version=true) const;
+
+  /** Set if this connection needs to be commited.
+   */
+  void setNeedCommit(bool needCommit=true)
+  { NeedCommit=needCommit; }
+  /**
+   * Get information about if the connection has uncommited data.
+   *
+   * @return Whether uncommited data is available.
+   */
+  bool needCommit(void) const
+  { return NeedCommit; }
+  /**
+   * Commit connection. This will also close all extra connections except one.
+   */
+  virtual void commit(void);
+  /**
+   * Rollback connection. This will also close all extra connections except one.
+   */
+  virtual void rollback(void);
+
+  /** Parse a query on an actual connection and report any syntax problems encountered.
+   * Defaults to not implemented.
+   * @param conn Connection to execute on.
+   * @param sql SQL to parse
+   */
+  void parse(const QString &sql);
+  /** Parse a query on an actual connection and report any syntax problems encountered.
+   * Defaults to not implemented.
+   * @param conn Connection to execute on.
+   * @param sql SQL to parse
+   */
+  void parse(const toSQL &sql);
+
+  /** Execute a statement without caring about the result.
+   * @param sql SQL to execute
+   * @param params Parameters to pass to query.
+   */
+  void execute(const toSQL &sql,
+	       toQList &params);
+  /** Execute a statement without caring about the result.
+   * @param sql SQL to execute
+   * @param params Parameters to pass to query.
+   */
+  void execute(const QString &sql,
+	       toQList &params);
+  /** Execute a statement without caring about the result.
+   * @param sql SQL to execute
+   * @param arg1 Parameters to pass to query.
+   */
+  void execute(const toSQL &sql,
+	       const QString &arg1=QString::null,const QString &arg2=QString::null,
+	       const QString &arg3=QString::null,const QString &arg4=QString::null,
+	       const QString &arg5=QString::null,const QString &arg6=QString::null,
+	       const QString &arg7=QString::null,const QString &arg8=QString::null,
+	       const QString &arg9=QString::null);
+  /** Execute a statement without caring about the result.
+   * @param sql SQL to execute
+   * @param arg1 Parameters to pass to query.
+   */
+  void execute(const QString &sql,
+	       const QString &arg1=QString::null,const QString &arg2=QString::null,
+	       const QString &arg3=QString::null,const QString &arg4=QString::null,
+	       const QString &arg5=QString::null,const QString &arg6=QString::null,
+	       const QString &arg7=QString::null,const QString &arg8=QString::null,
+	       const QString &arg9=QString::null);
+
+  /** Execute a statement without caring about the result on all open database connections.
+   * @param sql SQL to execute
+   * @param params Parameters to pass to query.
+   */
+  void allExecute(const toSQL &sql,
+		  toQList &params);
+  /** Execute a statement without caring about the result on all open database connections.
+   * @param sql SQL to execute
+   * @param params Parameters to pass to query.
+   */
+  void allExecute(const QString &sql,
+		  toQList &params);
+  /** Execute a statement without caring about the result on all open database connections.
+   * @param sql SQL to execute
+   * @param arg1 Parameters to pass to query.
+   */
+  void allExecute(const toSQL &sql,
+		  const QString &arg1=QString::null,const QString &arg2=QString::null,
+		  const QString &arg3=QString::null,const QString &arg4=QString::null,
+		  const QString &arg5=QString::null,const QString &arg6=QString::null,
+		  const QString &arg7=QString::null,const QString &arg8=QString::null,
+		  const QString &arg9=QString::null);
+  /** Execute a statement without caring about the result on all open database connections.
+   * @param sql SQL to execute
+   * @param arg1 Parameters to pass to query.
+   */
+  void allExecute(const QString &sql,
+		  const QString &arg1=QString::null,const QString &arg2=QString::null,
+		  const QString &arg3=QString::null,const QString &arg4=QString::null,
+		  const QString &arg5=QString::null,const QString &arg6=QString::null,
+		  const QString &arg7=QString::null,const QString &arg8=QString::null,
+		  const QString &arg9=QString::null);
+
+  /**
+   * Add a object that uses this connection. This is needed to ensure that all widgets
+   * that make use of a connection are destroyed when the connection is closed. Usually
+   * tool windows need to call this function.
+   *
+   * @param widget The widget to add to the connection.
+   */
+  void addWidget(QObject *widget)
+  { Widgets.insert(Widgets.end(),widget); }
+  /**
+   * Remove a widget from this connection. Should be called by the destructor of the
+   * widget that has called addWidget.
+   *
+   * @see addWidget
+   * @param widget Widget to remove from the widget list.
+   */
+  void delWidget(QObject *widget);
+
+  /**
+   * Add a statement to be run uppon making new connections.
+   * @param sql Statement to run.
+   */
+  void addInit(const QString &sql);
+  /**
+   * Remove a statement that was added using @ref addInit.
+   */
+  void delInit(const QString &sql);
+  /**
+   * Get a list of the current init strings.
+   */
+  const std::list<QString> &toConnection::initStrings() const;
+
+  /** Return a string representation to address an object.
+   * @param name The name to be quoted.
+   * @return String addressing table.
+   */
+  QString quote(const QString &name);
+  /** Perform the opposite of @ref quote.
+   * @param name The name to be un-quoted.
+   * @return String addressing table.
+   */
+  QString unQuote(const QString &name);
+
+  /**
+   * Get the objects available for the current user. Do not modify the returned list.
+   * @param block Indicate wether or not to block until cached objects are available.
+   * @return A list of object available for the current user. The list is sorted in
+   *         owner and name order.
+   */
+  std::list<objectName> &objects(bool block);
+
+  /** Add a new object to the objectlist if it doesn't exist already.
+   * @param object The object to add
+   */
+  void addIfNotExists(objectName &object);
+
+  /**
+   * Get syntax analyzer for connection
+   * @return A reference to the syntax analyzer to use for the connection.
+   */
+  virtual toSyntaxAnalyzer &analyzer();
+
+  /**
+   * Get the synonyms available for objects. Do not modify the returned list.
+   * @param block Indicate wether or not to block until cached objects are available.
+   * @return A list of synonyms to objects available for the current user.
+   */
+  std::map<QString,objectName> &synonyms(bool block);
+  /**
+   * Get a list of the available columns for a table. This function caches the responses
+   * and should be fairly fast after the first call. Do not modify the returned list.
+   * @param table The table to describe.
+   * @param nocache Don't use cached values even if they are available.
+   * @return A list of the columns for a table.
+   */
+  toQDescList &columns(const objectName &table,bool nocache=false);
+  /**
+   * Reread the object and column cache.
+   */
+  void rereadCache(void);
+  /**
+   * Get the real object name of an object.
+   * @param object Object name
+   * @param block Block if not done caching object.
+   */
+  const objectName &realName(const QString &object,bool block);
+  /**
+   * Get the real object name of a synonym.
+   * @param object Object name
+   * @param synonym Filled with the synonym used to access the object returned or empty.
+   * @param block Block if not done caching object.
+   */
+  const objectName &realName(const QString &object,QString &synonym,bool block);
+  /** Check if cache is available or not.
+   * @param synonyms If synonyms are needed or not.
+   * @param block Block until cache is done.
+   * @param true True if you need the cache, or just checking.
+   * @return True if cache is available.
+   */
+  bool cacheAvailable(bool synonyms,bool block=false,bool need=true);
+
+  /** Try to stop all running queries.
+   */
+  void cancelAll(void);
+
+  /** load disk cache
+   */
+
+  bool loadDiskCache(void);
+
+  /** write disk cache
+   */
+
+  void writeDiskCache(void);
+
+  /** Get a list of currently running SQL.
+   */
+  std::list<QString> running(void);
+
+  static QString cacheDir();
+  
+  friend class toQuery;
+};
+
+/** This class is used to implement new database providers.
+ */
+
+class toConnectionProvider {
+  static std::map<QCString,toConnectionProvider *> *Providers;
+  static std::map<QCString,toConnectionProvider *> *Types;
+  QCString Provider;
+  static void checkAlloc(void);
+
+  /** Get the provider object for a given provider name.
+   * @param provider Name of provider.
+   * @return Reference to provider object.
+   */
+  static toConnectionProvider &fetchProvider(const QCString &provider);
+protected:
+  /** Add a provider to the list that this provider can handle.
+   */
+  void addProvider(const QCString &provider);
+  /** Remove a provider from the list that this provider can handle.
+   */
+  void removeProvider(const QCString &provider);
+public:
+  /** Create a new provider with the specified name.
+   * @param provider Name of the provider.
+   */
+  toConnectionProvider(const QCString &provider,bool add=true);
+  /** Destructor.
+   */
+  virtual ~toConnectionProvider();
+
+  /** Create an implementation of a connection to this database.
+   * @param provider Provider to use for connection.
+   * @param conn The connection object to use the created connection.
+   * @return A connection implementation created with new.
+   */
+  virtual toConnection::connectionImpl *provideConnection(const QCString &provider,
+							  toConnection *conn)=0;
+  /** List the available hosts this database provider knows about.
+   * @return A list of hosts.
+   */
+  virtual std::list<QString> providedHosts(const QCString &provider);
+  /** List the available databases this provider knows about for a given host.
+   * @param host Host to return connections for.
+   * @param user That might be needed.
+   * @param password That might be needed.
+   * @return A list of databases available for a given host.
+   */
+  virtual std::list<QString> providedDatabases(const QCString &provider,
+					       const QString &host,
+					       const QString &user,
+					       const QString &pwd)=0;
+  /** Will be called after program has been started and before connections have been opened.
+   *  Use for initialization.
+   */
+  virtual void initialize(void)
+  { }
+
+  /** Get a list of options available for the connection. An option with the name
+   * "-" indicates a break should be made to separate the rest of the options from the previous
+   * options. An option preceeded by "*" means selected by default. The * shoul be stripped before
+   * before passing it to the connection call.
+   */
+  virtual std::list<QString> providedOptions(const QCString &provider);
+
+  /**
+   * Create and return configuration tab for this connectiontype. The returned widget should also
+   * be a childclass of @ref toSettingTab.
+   *
+   * @return A pointer to the widget containing the setup tab for this tool or NULL of
+   * no settings are available.
+   */
+  virtual QWidget *providerConfigurationTab(const QCString &provider,QWidget *parent);
+
+  /** Get a list of names for providers.
+   */
+  static QWidget *configurationTab(const QCString &provider,QWidget *parent);
+  /** Get a list of names for providers.
+   */
+  static std::list<QCString> providers();
+  /** Get a list of options for a given provider.
+   */
+  static std::list<QString> options(const QCString &provider);
+  /** Implement a connection for a given provider.
+   * @param provider Provider to implement.
+   * @param conn Connection to create implementation for.
+   */
+  static toConnection::connectionImpl *connection(const QCString &provider,toConnection *conn);
+  /** Get a list of hosts this provider knows about.
+   */
+  static std::list<QString> hosts(const QCString &provider);
+  /** Get a list of databases for a given provider and host.
+   * @param provider Provider to fetch databases for.
+   * @param host Host to fetch databases for.
+   * @param user That might be needed.
+   * @param password That might be needed.
+   * @return List of known databases.
+   */
+  static std::list<QString> databases(const QCString &provider,const QString &host,
+				      const QString &user,const QString &pwd);
+  /**
+   * Get connection specific settings.
+   *
+   * Setting names are hierachical separated by ':' instead of '/' usually used
+   * in filenames. As an example all settings for the tool 'Example' would be
+   * under the 'Example:{settingname}' name. Observe that the settings are stored
+   * under the main provider name as passed to the toConnectionProvider constructor.
+   *
+   * @param tag The name of the configuration setting.
+   * @param def Contents of this setting.
+   */
+  const QString &config(const QCString &tag,const QCString &def);
+  /**
+   * Change connectionspecific setting. Depending on the implementation this can change the
+   * contents on disk or not.
+   *
+   * Setting names are hierachical separated by ':' instead of '/' usually used
+   * in filenames. As an example all settings for the tool 'Example' would be
+   * under the 'Example:{settingname}' name. Observe that the settings are stored
+   * under the main provider name as passed to the toConnectionProvider constructor.
+   *
+   * @param tag The name of the configuration setting.
+   * @param def Default value of the setting, if it is not available.
+   */
+  void setConfig(const QCString &tag,const QCString &value);
+
+  /** Call all initializers
+   */
+  static void initializeAll(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/todatatype_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/todatatype_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/todatatype_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,138 @@
+<HTML>
+<HEAD>
+<TITLE>Source: todatatype.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: todatatype.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TO_DATATYPE
+#define TO_DATATYPE
+
+#include <list>
+
+#include <qhbox.h>
+
+#include "toextract.h"
+
+class QComboBox;
+class QLabel;
+class QLineEdit;
+class QSpinBox;
+class toConnection;
+
+/**
+ * Widget used to represent a datatype selection for a column.
+ */
+
+class toDatatype : public QHBox {
+  Q_OBJECT
+
+  std::list<toExtract::datatype> Datatypes;
+  QComboBox *Type;
+  QLabel *LeftParenthesis;
+  QSpinBox *Size;
+  QLabel *Comma;
+  QSpinBox *Precision;
+  QLabel *RightParenthesis;
+  QLineEdit *Custom;
+  bool PreferCustom;
+
+  void setupLabels();
+  void setup(toConnection &conn);
+public:
+  /** Create the widget and specify connection and the datatype.
+   * @param conn Connection to specify datatype for.
+   * @param def Initial datatype to use.
+   * @param parent The parent widget.
+   * @param name Name of widget.
+   */
+  toDatatype(toConnection &conn,const QString &def,QWidget *parent,const char *name=NULL);
+  /** Create the widget and specify connection.
+   * @param conn Connection to specify datatype for.
+   * @param parent The parent widget.
+   * @param name Name of widget.
+   */
+  toDatatype(toConnection &conn,QWidget *parent,const char *name=NULL);
+
+  /** Get a string representation of the type.
+   */
+  QString type() const;
+public slots:
+  /** Change the type.
+   * @param type The entire type specification (Including posible size and precision)
+   */
+  void setType(const QString &type);
+  /** Indicate if you would prefer to enter a custom datatype or if posible use the simpler controls.
+   * @param prefer If true always use custom controls.
+   */
+  void setCustom(bool prefer);
+private slots:
+  void changeType(int);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/todefaultkeywords_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/todefaultkeywords_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/todefaultkeywords_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,815 @@
+<HTML>
+<HEAD>
+<TITLE>Source: todefaultkeywords.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: todefaultkeywords.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+static const char *DefaultKeywords[]={
+  "ABORT",
+  "ACCESS",
+  "ACCESSED",
+  "ACCOUNT",
+  "ACTIVATE",
+  "ADD",
+  "ADMIN",
+  "ADMINISTER",
+  "ADMINISTRATOR",
+  "ADVISE",
+  "AFTER",
+  "ALGORITHM",
+  "ALL",
+  "ALLOCATE",
+  "ALLOW",
+  "ALL_ROWS",
+  "ALTER",
+  "ALWAYS",
+  "ANALYZE",
+  "ANCILLARY",
+  "AND",
+  "ANY",
+  "APPLY",
+  "ARCHIVE",
+  "ARCHIVELOG",
+  "ARRAY",
+  "AS",
+  "ASC",
+  "ASSOCIATE",
+  "AT",
+  "ATTRIBUTE",
+  "ATTRIBUTES",
+  "AUDIT",
+  "AUTHENTICATED",
+  "AUTHID",
+  "AUTHORIZATION",
+  "AUTO",
+  "AUTOALLOCATE",
+  "AUTOEXTEND",
+  "AUTOMATIC",
+  "BACKUP",
+  "BECOME",
+  "BEFORE",
+  "BEGIN",
+  "BEHALF",
+  "BETWEEN",
+  "BFILE",
+  "BINDING",
+  "BITMAP",
+  "BITS",
+  "BLOB",
+  "BLOCK",
+  "BLOCKSIZE",
+  "BLOCK_RANGE",
+  "BODY",
+  "BOTH",
+  "BOOLEAN",
+  "BOUND",
+  "BROADCAST",
+  "BUFFER_POOL",
+  "BUILD",
+  "BULK",
+  "BY",
+  "BYTE",
+  "CACHE",
+  "CACHE_INSTANCES",
+  "CALL",
+  "CANCEL",
+  "CASCADE",
+  "CASE",
+  "CAST",
+  "CATEGORY",
+  "CERTIFICATE",
+  "CFILE",
+  "CHAINED",
+  "CHANGE",
+  "CHAR",
+  "CHARACTER",
+  "CHAR_CS",
+  "CHECK",
+  "CHECKPOINT",
+  "CHILD",
+  "CHOOSE",
+  "CHUNK",
+  "CLEAR",
+  "CLOB",
+  "CLONE",
+  "CLOSE",
+  "CLOSE_CACHED_OPEN_CURSORS",
+  "CLUSTER",
+  "COALESCE",
+  "COLLECT",
+  "COLUMN",
+  "COLUMNS",
+  "COLUMN_VALUE",
+  "COMMENT",
+  "COMMIT",
+  "COMMITTED",
+  "COMPATIBILITY",
+  "COMPILE",
+  "COMPLETE",
+  "COMPOSITE_LIMIT",
+  "COMPRESS",
+  "COMPUTE",
+  "CONFORMING",
+  "CONNECT",
+  "CONNECT_TIME",
+  "CONSIDER",
+  "CONSISTENT",
+  "CONSTRAINT",
+  "CONSTRAINTS",
+  "CONTAINER",
+  "CONTENTS",
+  "CONTEXT",
+  "CONTINUE",
+  "CONTROLFILE",
+  "CONVERT",
+  "CORRUPTION",
+  "COST",
+  "CPU_PER_CALL",
+  "CPU_PER_SESSION",
+  "CREATE",
+  "CREATE_STORED_OUTLINES",
+  "CROSS",
+  "CUBE",
+  "CURRENT",
+  "CURRENT_DATE",
+  "CURRENT_SCHEMA",
+  "CURRENT_TIME",
+  "CURRENT_TIMESTAMP",
+  "CURRENT_USER",
+  "CURSOR",
+  "CURSOR_SPECIFIC_SEGMENT",
+  "CYCLE",
+  "DANGLING",
+  "DATA",
+  "DATABASE",
+  "DATAFILE",
+  "DATAFILES",
+  "DATAOBJNO",
+  "DATE",
+  "DATE_MODE",
+  "DBA",
+  "DBTIMEZONE",
+  "DDL",
+  "DEALLOCATE",
+  "DEBUG",
+  "DEC",
+  "DECIMAL",
+  "DECLARE",
+  "DECODE",
+  "DEFAULT",
+  "DEFERRABLE",
+  "DEFERRED",
+  "DEFINED",
+  "DEFINER",
+  "DEGREE",
+  "DELAY",
+  "DELETE",
+  "DEMAND",
+  "DENSE_RANK",
+  "DEREF",
+  "DESC",
+  "DETACHED",
+  "DETERMINES",
+  "DICTIONARY",
+  "DIMENSION",
+  "DIRECTORY",
+  "DISABLE",
+  "DISASSOCIATE",
+  "DISCONNECT",
+  "DISMOUNT",
+  "DISPATCHERS",
+  "DISTINCT",
+  "DISTINGUISHED",
+  "DISTRIBUTED",
+  "DML",
+  "DOUBLE",
+  "DROP",
+  "DUMP",
+  "DYNAMIC",
+  "EACH",
+  "ELEMENT",
+  "ELSE",
+  "ELSIF",
+  "ENABLE",
+  "ENCRYPTED",
+  "ENCRYPTION",
+  "END",
+  "ENFORCE",
+  "ENTRY",
+  "ERROR_ON_OVERLAP_TIME",
+  "ESCAPE",
+  "ESTIMATE",
+  "EVENTS",
+  "EXCEPT",
+  "EXCEPTION",
+  "EXCEPTIONS",
+  "EXCHANGE",
+  "EXCLUDING",
+  "EXCLUSIVE",
+  "EXECUTE",
+  "EXEMPT",
+  "EXISTS",
+  "EXIT",
+  "EXPIRE",
+  "EXPLAIN",
+  "EXPLOSION",
+  "EXTEND",
+  "EXTENDS",
+  "EXTENT",
+  "EXTENTS",
+  "EXTERNAL",
+  "EXTERNALLY",
+  "EXTRACT",
+  "FAILED_LOGIN_ATTEMPTS",
+  "FALSE",
+  "FAST",
+  "FILE",
+  "FILTER",
+  "FINAL",
+  "FINISH",
+  "FIRST",
+  "FIRST_ROWS",
+  "FLAGGER",
+  "FLOAT",
+  "FLOB",
+  "FLUSH",
+  "FOLLOWING",
+  "FOR",
+  "FORCE",
+  "FOREIGN",
+  "FREELIST",
+  "FREELISTS",
+  "FRESH",
+  "FROM",
+  "FULL",
+  "FUNCTION",
+  "FUNCTIONS",
+  "GENERATED",
+  "GLOBAL",
+  "GLOBALLY",
+  "GLOBAL_NAME",
+  "GLOBAL_TOPIC_ENABLED",
+  "GRANT",
+  "GROUP",
+  "GROUPS",
+  "GUARD",
+  "HASH",
+  "HASHKEYS",
+  "HAVING",
+  "HEADER",
+  "HEAP",
+  "HIERARCHY",
+  "HOUR",
+  "IDENTIFIED",
+  "IDENTIFIER",
+  "IDGENERATORS",
+  "IDLE_TIME",
+  "IF",
+  "IMMEDIATE",
+  "IN",
+  "INCLUDING",
+  "INCREMENT",
+  "INCREMENTAL",
+  "INDEX",
+  "INDEXED",
+  "INDEXES",
+  "INDEXTYPE",
+  "INDEXTYPES",
+  "INDICATOR",
+  "INITIAL",
+  "INITIALIZED",
+  "INITIALLY",
+  "INITRANS",
+  "INNER",
+  "INSERT",
+  "INSTANCE",
+  "INSTANCES",
+  "INSTANTIABLE",
+  "INSTEAD",
+  "INT",
+  "INTEGER",
+  "INTEGRITY",
+  "INTERMEDIATE",
+  "INTERNAL_CONVERT",
+  "INTERNAL_USE",
+  "INTERSECT",
+  "INTERVAL",
+  "INTO",
+  "INVALIDATE",
+  "IN_MEMORY_METADATA",
+  "IS",
+  "ISOLATION",
+  "ISOLATION_LEVEL",
+  "JAVA",
+  "JOIN",
+  "KEEP",
+  "KERBEROS",
+  "KEY",
+  "KEYFILE",
+  "KEYS",
+  "KEYSIZE",
+  "KILL",
+  "LABEL",
+  "LAST",
+  "LATERAL",
+  "LAYER",
+  "LDAP_REGISTRATION",
+  "LDAP_REGISTRATION_ENABLED",
+  "LDAP_REG_SYNC_INTERVAL",
+  "LEADING",
+  "LEFT",
+  "LESS",
+  "LEVEL",
+  "LEVELS",
+  "LIBRARY",
+  "LIKE",
+  "LIKE2",
+  "LIKE4",
+  "LIKEC",
+  "LIMIT",
+  "LINK",
+  "LIST",
+  "LOB",
+  "LOCAL",
+  "LOCALTIME",
+  "LOCALTIMESTAMP",
+  "LOCATION",
+  "LOCATOR",
+  "LOCK",
+  "LOCKED",
+  "LOG",
+  "LOGFILE",
+  "LOGGING",
+  "LOGICAL",
+  "LOGICAL_READS_PER_CALL",
+  "LOGICAL_READS_PER_SESSION",
+  "LOGOFF",
+  "LOGON",
+  "LONG",
+  "LOOP",
+  "MANAGE",
+  "MANAGED",
+  "MANAGEMENT",
+  "MANUAL",
+  "MAPPING",
+  "MASTER",
+  "MATCHED",
+  "MATERIALIZED",
+  "MAXARCHLOGS",
+  "MAXDATAFILES",
+  "MAXEXTENTS",
+  "MAXINSTANCES",
+  "MAXLOGFILES",
+  "MAXLOGHISTORY",
+  "MAXLOGMEMBERS",
+  "MAXSIZE",
+  "MAXTRANS",
+  "MAXVALUE",
+  "MEMBER",
+  "MEMORY",
+  "MERGE",
+  "METHOD",
+  "MINEXTENTS",
+  "MINIMIZE",
+  "MINIMUM",
+  "MINUS",
+  "MINVALUE",
+  "MLSLABEL",
+  "MODE",
+  "MODIFY",
+  "MONITORING",
+  "MOUNT",
+  "MOVE",
+  "MOVEMENT",
+  "MTS_DISPATCHERS",
+  "MULTISET",
+  "NAMED",
+  "NCHAR",
+  "NCHAR_CS",
+  "NCLOB",
+  "NEEDED",
+  "NESTED",
+  "NESTED_TABLE_ID",
+  "NETWORK",
+  "NEVER",
+  "NEXT",
+  "NLS_CALENDAR",
+  "NLS_CHARACTERSET",
+  "NLS_COMP",
+  "NLS_CURRENCY",
+  "NLS_DATE_FORMAT",
+  "NLS_DATE_LANGUAGE",
+  "NLS_ISO_CURRENCY",
+  "NLS_LANG",
+  "NLS_LANGUAGE",
+  "NLS_LENGTH_SEMANTICS",
+  "NLS_NCHAR_CONV_EXCP",
+  "NLS_NUMERIC_CHARACTERS",
+  "NLS_SORT",
+  "NLS_SPECIAL_CHARS",
+  "NLS_TERRITORY",
+  "NO",
+  "NOARCHIVELOG",
+  "NOAUDIT",
+  "NOCACHE",
+  "NOCOMPRESS",
+  "NOCOPY",
+  "NOCYCLE",
+  "NODELAY",
+  "NOFORCE",
+  "NOLOGGING",
+  "NOMAPPING",
+  "NOMAXVALUE",
+  "NOMINIMIZE",
+  "NOMINVALUE",
+  "NOMONITORING",
+  "NONE",
+  "NOORDER",
+  "NOOVERRIDE",
+  "NOPARALLEL",
+  "NORELY",
+  "NORESETLOGS",
+  "NOREVERSE",
+  "NORMAL",
+  "NOROWDEPENDENCIES",
+  "NOSEGMENT",
+  "NOSORT",
+  "NOSWITCH",
+  "NOT",
+  "NOTHING",
+  "NOVALIDATE",
+  "NOWAIT",
+  "NULL",
+  "NULLS",
+  "NUMBER",
+  "NUMERIC",
+  "NVARCHAR2",
+  "OBJECT",
+  "OBJNO",
+  "OBJNO_REUSE",
+  "OF",
+  "OFF",
+  "OFFLINE",
+  "OID",
+  "OIDINDEX",
+  "OLD",
+  "ON",
+  "ONLINE",
+  "ONLY",
+  "OPAQUE",
+  "OPCODE",
+  "OPEN",
+  "OPERATOR",
+  "OPTIMAL",
+  "OPTIMIZER_GOAL",
+  "OPTION",
+  "OR",
+  "ORDER",
+  "ORGANIZATION",
+  "OTHERS",
+  "OUT",
+  "OUTER",
+  "OUTLINE",
+  "OVER",
+  "OVERFLOW",
+  "OVERLAPS",
+  "OWN",
+  "PACKAGE",
+  "PACKAGES",
+  "PARALLEL",
+  "PARAMETERS",
+  "PARENT",
+  "PARTITION",
+  "PARTITIONS",
+  "PARTITION_HASH",
+  "PARTITION_LIST",
+  "PARTITION_RANGE",
+  "PASSWORD",
+  "PASSWORD_GRACE_TIME",
+  "PASSWORD_LIFE_TIME",
+  "PASSWORD_LOCK_TIME",
+  "PASSWORD_REUSE_MAX",
+  "PASSWORD_REUSE_TIME",
+  "PASSWORD_VERIFY_FUNCTION",
+  "PCTFREE",
+  "PCTINCREASE",
+  "PCTTHRESHOLD",
+  "PCTUSED",
+  "PCTVERSION",
+  "PERCENT",
+  "PERMANENT",
+  "PFILE",
+  "PHYSICAL",
+  "PLAN",
+  "PLSQL_DEBUG",
+  "POLICY",
+  "POST_TRANSACTION",
+  "PRAGMA",
+  "PREBUILT",
+  "PRECEDING",
+  "PRECISION",
+  "PREPARE",
+  "PRESERVE",
+  "PRIMARY",
+  "PRIOR",
+  "PRIVATE",
+  "PRIVATE_SGA",
+  "PRIVILEGE",
+  "PRIVILEGES",
+  "PROCEDURE",
+  "PROFILE",
+  "PROTECTED",
+  "PUBLIC",
+  "PURGE",
+  "PX_GRANULE",
+  "QUERY",
+  "QUEUE",
+  "QUIESCE",
+  "QUOTA",
+  "RANDOM",
+  "RANGE",
+  "RAW",
+  "RBA",
+  "READ",
+  "READS",
+  "REAL",
+  "REBUILD",
+  "RECORDS_PER_BLOCK",
+  "RECOVER",
+  "RECOVERABLE",
+  "RECOVERY",
+  "RECYCLE",
+  "REDUCED",
+  "REF",
+  "REFERENCES",
+  "REFERENCING",
+  "REFRESH",
+  "REGISTER",
+  "REJECT",
+  "REKEY",
+  "RELATIONAL",
+  "RELY",
+  "RENAME",
+  "REPLACE",
+  "RESET",
+  "RESETLOGS",
+  "RESIZE",
+  "RESOLVE",
+  "RESOLVER",
+  "RESOURCE",
+  "RESTRICT",
+  "RESTRICTED",
+  "RESUMABLE",
+  "RESUME",
+  "RETURN",
+  "RETURNING",
+  "REUSE",
+  "REVERSE",
+  "REVOKE",
+  "REWRITE",
+  "RIGHT",
+  "ROLE",
+  "ROLES",
+  "ROLLBACK",
+  "ROLLUP",
+  "ROWDEPENDENCIES",
+  "ROWID",
+  "ROWNUM",
+  "ROWS",
+  "ROWTYPE",
+  "RULE",
+  "SAMPLE",
+  "SAVEPOINT",
+  "SB4",
+  "SCAN",
+  "SCAN_INSTANCES",
+  "SCHEMA",
+  "SCN",
+  "SCOPE",
+  "SD_ALL",
+  "SD_INHIBIT",
+  "SD_SHOW",
+  "SECURITY",
+  "SEGMENT",
+  "SEG_BLOCK",
+  "SEG_FILE",
+  "SELECT",
+  "SELECTIVITY",
+  "SEQUENCE",
+  "SEQUENCED",
+  "SERIALIZABLE",
+  "SERVERERROR",
+  "SESSION",
+  "SESSIONS_PER_USER",
+  "SESSIONTIMEZONE",
+  "SESSIONTZNAME",
+  "SESSION_CACHED_CURSORS",
+  "SET",
+  "SETS",
+  "SHARE",
+  "SHARED",
+  "SHARED_POOL",
+  "SHRINK",
+  "SHUTDOWN",
+  "SIBLINGS",
+  "SINGLE",
+  "SINGLETASK",
+  "SIZE",
+  "SKIP",
+  "SKIP_UNUSABLE_INDEXES",
+  "SMALLINT",
+  "SNAPSHOT",
+  "SOME",
+  "SORT",
+  "SOURCE",
+  "SPACE",
+  "SPECIFICATION",
+  "SPFILE",
+  "SPLIT",
+  "SQL_TRACE",
+  "STANDBY",
+  "START",
+  "STARTUP",
+  "STATEMENT_ID",
+  "STATIC",
+  "STATISTICS",
+  "STOP",
+  "STORAGE",
+  "STORE",
+  "STRUCTURE",
+  "SUBPARTITION",
+  "SUBPARTITIONS",
+  "SUBPARTITION_REL",
+  "SUBSTITUTABLE",
+  "SUCCESSFUL",
+  "SUMMARY",
+  "SUPPLEMENTAL",
+  "SUSPEND",
+  "SWITCH",
+  "SWITCHOVER",
+  "SYNONYM",
+  "SYSDATE",
+  "SYSDBA",
+  "SYSOPER",
+  "SYSTEM",
+  "SYSTIMESTAMP",
+  "SYS_OP_BITVEC",
+  "SYS_OP_COL_PRESENT",
+  "SYS_OP_ENFORCE_NOT_NULL$",
+  "SYS_OP_MINE_VALUE",
+  "SYS_OP_NOEXPAND",
+  "SYS_OP_NTCIMG$",
+  "TABLE",
+  "TABLES",
+  "TABLESPACE",
+  "TABLESPACE_NO",
+  "TABNO",
+  "TEMPFILE",
+  "TEMPORARY",
+  "THAN",
+  "THEN",
+  "THREAD",
+  "THROUGH",
+  "TIMEOUT",
+  "TIMEZONE_ABBR",
+  "TIMEZONE_HOUR",
+  "TIMEZONE_MINUTE",
+  "TIMEZONE_REGION",
+  "TIME_ZONE",
+  "TO",
+  "TOPLEVEL",
+  "TRACE",
+  "TRACING",
+  "TRAILING",
+  "TRANSACTION",
+  "TRANSITIONAL",
+  "TREAT",
+  "TRIGGER",
+  "TRIGGERS",
+  "TRUE",
+  "TRUNCATE",
+  "TX",
+  "TYPE",
+  "TYPES",
+  "TZ_OFFSET",
+  "UB2",
+  "UBA",
+  "UID",
+  "UNARCHIVED",
+  "UNBOUND",
+  "UNBOUNDED",
+  "UNDER",
+  "UNDO",
+  "UNIFORM",
+  "UNION",
+  "UNIQUE",
+  "UNLIMITED",
+  "UNLOCK",
+  "UNPROTECTED",
+  "UNQUIESCE",
+  "UNRECOVERABLE",
+  "UNTIL",
+  "UNUSABLE",
+  "UNUSED",
+  "UPDATABLE",
+  "UPDATE",
+  "UPD_INDEXES",
+  "UPD_JOININDEX",
+  "UPGRADE",
+  "UROWID",
+  "USAGE",
+  "USE",
+  "USER_DEFINED",
+  "USE_PRIVATE_OUTLINES",
+  "USE_STORED_OUTLINES",
+  "USING",
+  "VALIDATE",
+  "VALIDATION",
+  "VALUES",
+  "VARCHAR",
+  "VARCHAR2",
+  "VARRAY",
+  "VARYING",
+  "VIEW",
+  "WAIT",
+  "WHEN",
+  "WHENEVER",
+  "WHERE",
+  "WHILE",
+  "WITH",
+  "WITHIN",
+  "WITHOUT",
+  "WORK",
+  "WRITE",
+  "XID",
+  "XMLSCHEMA",
+  "XMLTYPE",
+  "ZONE",
+  NULL
+};
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toeditwidget_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toeditwidget_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toeditwidget_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,303 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toeditwidget.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toeditwidget.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOEDITWIDGET_H
+#define TOEDITWIDGET_H
+
+#include <list>
+
+#include <qwidget.h>
+
+class toSearchReplace;
+
+/** This is an abstract base class for any widget (Not included in object) that wants to
+ * access copy, cut, paste, open, save commands of the user interface.
+ */
+class toEditWidget {
+public:
+  /** Class used to extent how to enable/disable parts of the interface as
+   * focus changes.
+   */
+  class editHandler {
+  public:
+    /** Constructor.
+     */
+    editHandler();
+    /** Destructor.
+     */
+    virtual ~editHandler();
+    /** Called when a new widget receives the focus.
+     */
+    virtual void receivedFocus(toEditWidget *widget) = 0;
+    /** Called when a widget loses the focus.
+     */
+    virtual void lostFocus(toEditWidget *widget) = 0;
+  };
+private:
+  bool Open;
+  bool Save;
+  bool Print;
+  bool Undo;
+  bool Redo;
+  bool Cut;
+  bool Copy;
+  bool Paste;
+  bool Search;
+  bool SelectAll;
+  bool ReadAll;
+  void setMainSettings(void);
+
+  static std::list<editHandler *> *Handlers;
+public:
+  /** Empty constructor, all functions are disabled.
+   */
+  toEditWidget();
+  /** Specified constructor, all functions are specified in the constructor.
+   */
+  toEditWidget(bool open,bool save,bool print,
+	       bool undo,bool redo,
+	       bool cut,bool copy,bool paste,
+	       bool search,
+	       bool selectAll,bool readAll);
+  virtual ~toEditWidget();
+
+  /** Specify new enabled functions.
+   */
+  void setEdit(bool open,bool save,bool print,
+	       bool undo,bool redo,
+	       bool cut,bool copy,bool paste,
+	       bool search,
+	       bool selectAll,bool readAll);
+
+  /** Perform an open on this widget. Default NOP.
+   * @param file The file to open, if not specified prompt for file.
+   */
+  virtual bool editOpen(QString file=QString::null);
+  /** Perform a save on this widget. Default NOP.
+   * @param askfile Ask filename even if default filename is available.
+   */
+  virtual bool editSave(bool askfile);
+  /** Print this widgets contents. Default NOP.
+   */
+  virtual void editPrint(void)
+  { }
+  /** Perform undo. Default NOP.
+   */
+  virtual void editUndo(void)
+  { }
+  /** Perform redo. Default NOP.
+   */
+  virtual void editRedo(void)
+  { }
+  /** Perform cut. Default NOP.
+   */
+  virtual void editCut(void)
+  { }
+  /** Perform copy. Default NOP.
+   */
+  virtual void editCopy(void)
+  { }
+  /** Perform paste. Default NOP.
+   */
+  virtual void editPaste(void)
+  { }
+  /** Select all contents. Default NOP.
+   */
+  virtual void editSelectAll(void)
+  { }
+  /** Read all available data. Default NOP.
+   */
+  virtual void editReadAll(void)
+  { }
+
+  /** Set if open is enabled.
+   */
+  void openEnabled(bool val)
+  { Open=val; setMainSettings(); }
+  /** Set if save is enabled.
+   */
+  void saveEnabled(bool val)
+  { Save=val; setMainSettings(); }
+  /** Set if print is enabled.
+   */
+  void printEnabled(bool val)
+  { Print=val; setMainSettings(); }
+  /** Set if undo is enabled.
+   */
+  void undoEnabled(bool val)
+  { Undo=val; setMainSettings(); }
+  /** Set if redo is enabled.
+   */
+  void redoEnabled(bool val)
+  { Redo=val; setMainSettings(); }
+  /** Set if cut is enabled.
+   */
+  void cutEnabled(bool val)
+  { Cut=val; setMainSettings(); }
+  /** Set if copy is enabled.
+   */
+  void copyEnabled(bool val)
+  { Copy=val; setMainSettings(); }
+  /** Set if paste is enabled.
+   */
+  void pasteEnabled(bool val)
+  { Paste=val; setMainSettings(); }
+  /** Set if search is enabled.
+   */
+  void searchEnabled(bool val)
+  { Search=val; setMainSettings(); }
+  /** Set if select all is enabled.
+   */
+  void selectAllEnabled(bool val)
+  { SelectAll=val; setMainSettings(); }
+  /** Set if read all is enabled.
+   */
+  void readAllEnabled(bool val)
+  { ReadAll=val; setMainSettings(); }
+  
+  /** Check if open is enabled.
+   */
+  bool openEnabled(void)
+  { return Open; }
+  /** Check if save is enabled.
+   */
+  bool saveEnabled(void)
+  { return Save; }
+  /** Check if print is enabled.
+   */
+  bool printEnabled(void)
+  { return Print; }
+  /** Check if undo is enabled.
+   */
+  bool undoEnabled(void)
+  { return Undo; }
+  /** Check if redo is enabled.
+   */
+  bool redoEnabled(void)
+  { return Redo; }
+  /** Check if cut is enabled.
+   */
+  bool cutEnabled(void)
+  { return Cut; }
+  /** Check if copy is enabled.
+   */
+  bool copyEnabled(void)
+  { return Copy; }
+  /** Check if paste is enabled.
+   */
+  bool pasteEnabled(void)
+  { return Paste; }
+  /** Check if search is enabled.
+   */
+  bool searchEnabled(void)
+  { return Search; }
+  /** Check if select all is enabled.
+   */
+  bool selectAllEnabled(void)
+  { return SelectAll; }
+  /** Check if read all is enabled.
+   */
+  bool readAllEnabled(void)
+  { return ReadAll; }
+
+  /** Move to top of data
+   */
+  virtual void searchTop(void)
+  { }
+  /** Search for next entry
+   * @return True if found, should select the found text.
+   */
+  virtual bool searchNext(toSearchReplace *search);
+  /** Replace entry with new data
+   */
+  virtual void searchReplace(const QString &newData);
+  /** Check if data can be modified by search
+   * @param all If true can replace all, otherwise can replace right now.
+   */
+  virtual bool searchCanReplace(bool all);
+
+  /** Call this when this widget has received the focus. Must be called by the implementor.
+   */
+  virtual void receivedFocus(void);
+  /** Called when this widget has lost the focus. Don't forget to call parent when reimplemented.
+   */
+  virtual void lostFocus(void);
+
+  /** Add a hook to be called every time focus changes.
+   */
+  static void addHandler(editHandler *handler);
+  /** Removed a hook from being called every time focus changes.
+   */
+  static void delHandler(editHandler *handler);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toextract_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toextract_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toextract_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,714 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toextract.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toextract.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TO_EXTRACT
+#define TO_EXTRACT
+
+#include <list>
+#include <map>
+
+#include <qfile.h>
+#include <qstring.h>
+#include <qtextstream.h>
+#include <qvariant.h>
+
+class QWidget;
+class toConnection;
+
+#include "tosqlparse.h"
+
+// Liberally ported from DDL::Oracle 1.06
+// Copyright (c) 2000, 2001 Richard Sutherland - United States of America
+
+/**
+ * This class can be used to reverse engineered database objects.
+ */
+
+class toExtract {
+public:
+  /** Describes an available datatype for the database.
+   */
+  class datatype {
+  private:
+    QString Name;
+    int MaxLength;
+    int MaxPrecision;
+  public:
+    /** Create a new datatype description.
+     * @param name Name of datatype.
+     * @param maxLength Maximum length of parameter if length is needed.
+     * @param maxPrecision Maximum precision of parameter if precision is supported.
+     */
+    datatype(const QString &name,int maxLength=-1,int maxPrecision=-1)
+      : Name(name),MaxLength(maxLength),MaxPrecision(maxPrecision)
+    { }
+    /** Returns true if type has length specification.
+     */
+    bool hasLength()
+    { return MaxLength!=-1; }
+    /** Returns true if type has precision specification.
+     */
+    bool hasPrecision()
+    { return MaxPrecision!=-1; }
+    /** Get the maximum length value.
+     */
+    int maxLength()
+    { return MaxLength; }
+    /** Get the maximum precision of the datatype.
+     */
+    int maxPrecision()
+    { return MaxPrecision; }
+    /** Get the name of the datatype.
+     */
+    const QString &name()
+    { return Name; }
+
+    /** Implemented so that you can easily sort a list of them. Just compares the names.
+     */
+    bool operator < (const datatype &dat) const
+    { return Name<dat.Name; }
+    /** Implemented so that you can easily sort a list of them. Just compares the names.
+     */
+    bool operator == (const datatype &dat) const
+    { return Name==dat.Name; }    
+  };
+
+  /** This is an abstract class to implement part of an extractor for a database. Observe
+   * that an extractor must be stateless and threadsafe except for constructors and
+   * destructors. Use the toExtract::context function for saving context.
+   */
+  class extractor {
+  protected:
+    /** Register an operation to be handled by this extractor.
+     * @param db Database this extractor works on.
+     * @param oper What kind of operation to implement. Can be one of CREATE,
+     *             DESCRIBE, MIGRATE or DROP.
+     * @param type The type of object that this is implemented for. Database specific.
+     */
+    void registerExtract(const QString &db,
+			 const QString &oper,
+			 const QString &type);
+    /** Unregister an operation to be handled by this extractor.
+     * @param db Database this extractor works on.
+     * @param oper What kind of operation to implement. Can be one of CREATE,
+     *             DESCRIBE, MIGRATE or DROP.
+     * @param type The type of object that this is implemented for. Database specific.
+     */
+    void unregisterExtract(const QString &db,
+			   const QString &oper,
+			   const QString &type);
+  public:
+    /** Create an extractor. Normally called from a statical instantiator. Should register
+     * objects it can handle @ref registerExtract. Apart from the objects it handles one
+     * extractor per database can also register an empty operation and type parameter to
+     * @ref registerExtract which will be called to initialize an extractor once per
+     * constructed toExtract object.
+     * operation. 
+     */
+    extractor();
+    /** Destructor.
+     */
+    virtual ~extractor();
+
+    /** Initiate an extractor for a given connection. Can be used to set up states necessary
+     * for further processing. Should probably set blocksize to be used for resizing (@ref
+     * toExtract::setBlocksize).
+     * @param ext Extractor to generate script.
+     */
+    virtual void initialize(toExtract &ext) const;
+
+    /** Called to generate a script to recreate a database object.
+     * @param ext Extractor to generate script.
+     * @param stream Stream to write script to.
+     * @param type Type of object to recreate.
+     * @param schema Specify the schema of the output script or description. If empty
+     *               don't specify any object. If the string "1" use same object as input.
+     *               Otherwise use the specified schema.
+     * @param owner Owner of database object.
+     * @param name Name of database object.
+     * @return A string containing a script to recreate an object.
+     */
+    virtual void create(toExtract &ext,
+			QTextStream &stream,
+			const QString &type,
+			const QString &schema,
+			const QString &owner,
+			const QString &name) const;
+    /** Called to describe a database object.
+     * @param ext Extractor to generate script.
+     * @param lst List of descriptions for the object. Should be appended.
+     * @param type Type of object to recreate.
+     * @param schema Specify the schema of the output script or description. If empty
+     *               don't specify any object. If the string "1" use same object as input.
+     *               Otherwise use the specified schema.
+     * @param owner Owner of database object.
+     * @param name Name of database object.
+     */
+    virtual void describe(toExtract &ext,
+			  std::list<QString> &lst,
+			  const QString &type,
+			  const QString &schema,
+			  const QString &owner,
+			  const QString &name) const;
+    /** Called to generate a script to migrate a database object from one description to
+     * another description.
+     * @param ext Extractor to generate script.
+     * @param type Type of object to migrate.
+     * @param src Source description list.
+     * @param dst Destination description list.
+     * @return A script to change the src database object to dst.
+     */
+    virtual void migrate(toExtract &ext,
+			 QTextStream &stream,
+			 const QString &type,
+			 std::list<QString> &src,
+			 std::list<QString> &dst) const;
+
+    /** Called to generate a script to drop an object.
+     * @param ext Extractor to generate script.
+     * @param type Type of object to recreate.
+     * @param schema Specify the schema of the output script or description. If empty
+     *               don't specify any object. If the string "1" use same object as input.
+     *               Otherwise use the specified schema.
+     * @param owner Owner of database object.
+     * @param name Name of database object.
+     * @return A string containing a script to recreate an object.
+     */
+    virtual void drop(toExtract &ext,
+		      QTextStream &stream,
+		      const QString &type,
+		      const QString &schema,
+		      const QString &owner,
+		      const QString &name) const;
+
+    /** Get the available datatypes for the database.
+     */
+    virtual std::list<datatype> datatypes() const;
+  };
+
+private:
+  toConnection &Connection;
+  QWidget *Parent;
+
+  // Attributes
+  QString Schema;
+  QString Resize;
+  bool Code;
+  bool Comments;
+  bool Constraints;
+  bool Contents;
+  bool Grants;
+  bool Heading;
+  bool Indexes;
+  bool Parallel;
+  bool Partition;
+  bool Prompt;
+  bool Storage;
+  bool Initialized;
+
+  int CommitDistance;
+
+  // Database info
+  int BlockSize;
+  std::list<QString> Initial;
+  std::list<QString> Next;
+  std::list<QString> Limit;
+
+  // Context, can be used by the extractor to save context
+  std::map<QCString,QVariant> Context;
+
+  // Stuff to handle extractors
+  static std::map<QString,extractor *> *Extractors;
+
+  static void allocExtract(void);
+  static QString extractorName(const QString &db,
+			       const QString &oper,
+			       const QString &type);
+  static extractor *findExtractor(toConnection &conn,
+				  const QString &oper,
+				  const QString &type);
+  extractor *findExtractor(const QString &oper,
+			   const QString &type)
+  { return findExtractor(Connection,oper,type); }
+  void initialize(void);
+
+  // General internal functions
+
+  /** Parse an object string to get owner and name of the object.
+   * @param object Object string on the format {owner}.{name}.
+   * @param owner Reference to string which will get the object owner.
+   * @param name Reference to string which will get the object name.
+   */
+  void parseObject(const QString &object,QString &owner,QString &name);
+  void setSizes(void);
+
+  void rethrow(const QString &what,const QString &object,const QString &exc);
+  QString generateHeading(const QString &action,std::list<QString> &list);
+  static std::map<QString,std::list<QString> > migrateGroup(std::list<QString> &grpLst);
+public:
+  /** Create a new extractor.
+   * @param conn Connection to extract from.
+   * @param parent Parent widget of progress indicator.
+   */
+  toExtract(toConnection &conn,QWidget *parent);
+
+  /** Create script to recreate list of objects.
+   * @param object List of object. This has the format {type}:{schema}.{object}.
+   *               The type is database dependent but can as an example be of
+   *               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+   *               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+   *               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+   *               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+   *               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+   *               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+   *               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+   * @return A string containing a script to recreate the specified objects.
+   */
+  QString create(std::list<QString> &object)
+  { QString ret; QTextStream s(&ret,IO_WriteOnly); create(s,object); return ret; }
+  /** Create script to recreate list of objects.
+   * @param stream Stream to write result to.
+   * @param object List of object. This has the format {type}:{schema}.{object}.
+   *               The type is database dependent but can as an example be of
+   *               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+   *               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+   *               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+   *               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+   *               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+   *               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+   *               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+   */
+  void create(QTextStream &stream,std::list<QString> &object);
+
+  /** Create a description of objects.
+   * @param object List of object. This has the format {type}:{schema}.{object}.
+   *               The type is database dependent but can as an example be of
+   *               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+   *               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+   *               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+   *               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+   *               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+   *               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+   *               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+   * @return A list of strings describing the objects. Each string should be
+   *         considered like a list of strings separated by the character '\001'.
+   *         The later in each string the smaller item the change and it is hierachical.
+   */
+  std::list<QString> describe(std::list<QString> &object);
+
+  /** Create script to drop a list of objects.
+   * @param object List of object. This has the format {type}:{schema}.{object}.
+   *               The type is database dependent but can as an example be of
+   *               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+   *               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+   *               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+   *               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+   *               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+   *               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+   *               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+   * @return A string containing a script to drop the specified objects.
+   */
+  QString drop(std::list<QString> &object)
+  { QString ret; QTextStream s(&ret,IO_WriteOnly); drop(s,object); return ret; }
+
+  /** Create script to drop a list of objects.
+   * @param stream Stream to write result to.
+   * @param object List of object. This has the format {type}:{schema}.{object}.
+   *               The type is database dependent but can as an example be of
+   *               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+   *               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+   *               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+   *               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+   *               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+   *               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+   *               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+   * @return A string containing a script to drop the specified objects.
+   */
+  void drop(QTextStream &stream,std::list<QString> &object);
+
+  /** Called to generate a script to migrate a database object from one description to
+   * another description.
+   * @param stream Stream to write result to.
+   * @param src Source description list, generated by describes for the same database.
+   * @param dst Destination description list, generated by describes for the same database.
+   * @return A script to change the src database object to dst.
+   */
+  QString migrate(std::list<QString> &drpLst,std::list<QString> &crtLst)
+  { QString ret; QTextStream s(&ret,IO_WriteOnly); migrate(s,drpLst,crtLst); return ret; }
+
+  /** Called to generate a script to migrate a database object from one description to
+   * another description.
+   * @param stream Stream to write result to.
+   * @param src Source description list, generated by describes for the same database.
+   * @param dst Destination description list, generated by describes for the same database.
+   * @return A script to change the src database object to dst.
+   */
+  void migrate(QTextStream &stream,std::list<QString> &drpLst,std::list<QString> &crtLst);
+
+  /** Set a context for this extractor.
+   * @param name Name of this context
+   * @param val Value of this context
+   */
+  void setState(const QCString &name,const QVariant &val);
+  /** Get the value of a context for the current extractor.
+   * @param name Name of the context to extract.
+   * @return The value of the context.
+   */
+  QVariant state(const QCString &name);
+
+  /** Set the schema of the extraction.
+   * @param schema Specify the schema of the output script or description. If empty
+   *               don't specify any object. If the string "1" use same object as input.
+   *               Otherwise use the specified schema.
+   */
+  void setSchema(const QString &schema)
+  { Schema=schema; }
+  /** Set sizes to use for resize of object on extraction.
+   * @param A list of sizes separated by ':'. Should be an even multiple of three where
+   *        the first value is the largest current size to use these values. The next
+   *        value is the initial value to use, the last is the next increment value to
+   *        use. As a special case the string "1" can be used to set up auto resize.
+   */
+  void setResize(const QString &resize)
+  { Resize=resize; setSizes(); }
+  /** Set inclusion of prompts.
+   * @param prompt If prompt generation should be generated.
+   */
+  void setPrompt(bool prompt)
+  { Prompt=prompt; }
+  /** Include heading in scripts.
+   * @param heading Include heading in scripts.
+   */
+  void setHeading(bool heading)
+  { Heading=heading; }
+  /** Include constraints in extraction.
+   * @param constraints Include constraints.
+   */
+  void setConstraints(bool constraints)
+  { Constraints=constraints; }
+  /** Include indexes in extraction.
+   * @param indexes Include indexes.
+   */
+  void setIndexes(bool indexes)
+  { Indexes=indexes; }
+  /** Include grants in extraction.
+   * @param val Include grants.
+   */
+  void setGrants(bool val)
+  { Grants=val; }
+  /** Include storage specification in extraction.
+   * @param val Include storage specification.
+   */
+  void setStorage(bool val)
+  { Storage=val; }
+  /** Include parallel specification in extraction.
+   * @param val Include parallel specification.
+   */
+  void setParallel(bool val)
+  { Parallel=val; }
+  /** Include partition specification in extraction.
+   * @param val Include partition specification.
+   */
+  void setPartition(bool val)
+  { Partition=val; }
+  /** Include contents of tables in scripts.
+   * @param val Include contents of tables.
+   * @param commitdistance The commit distance of the contents 0 means whole tables.
+   */
+  void setContents(bool val,int commitdistance)
+  { Contents=val; CommitDistance=commitdistance; }
+  /** Include comments in extraction.
+   * @param val Include indexes.
+   */
+  void setComments(bool val)
+  { Comments=val; }
+  /** Include code in extraction.
+   * @param val Include code.
+   */
+  void setCode(bool val)
+  { Code=val; }
+  /** Set blocksize of database.
+   * @param val New value of blocksize.
+   */
+  void setBlockSize(int val)
+  { BlockSize=val; setSizes(); }
+
+  /** Get schema specification.
+   * @return Schema specification.
+   * @see setSchema
+   */
+  const QString &getSchema(void)
+  { return Schema; }
+  /** Get resize specification.
+   * @return Resize specification.
+   * @see setResize
+   */
+  bool getResize(void)
+  { return !Resize.isEmpty(); }
+  /** Check if prompt are generated.
+   * @return If prompts are generated.
+   */
+  bool getPrompt(void)
+  { return Prompt; }
+  /** Check if headings are generated.
+   * @return If headings are generated.
+   */
+  bool getHeading(void)
+  { return Heading; }
+  /** Check if constraints are generated.
+   * @return If constraints are generated.
+   */
+  bool getConstraints(void)
+  { return Constraints; }
+  /** Check if indexes are generated.
+   * @return If indexes are generated.
+   */
+  bool getIndexes(void)
+  { return Indexes; }
+  /** Check if grants are generated.
+   * @return If grants are generated.
+   */
+  bool getGrants(void)
+  { return Grants; }
+  /** Check if storage specification are generated.
+   * @return If storage specification are generated.
+   */
+  bool getStorage(void)
+  { return Storage; }
+  /** Check if parallell specification are generated.
+   * @return If parallell specification are generated.
+   */
+  bool getParallel(void)
+  { return Parallel; }
+  /** Check if partition specification are generated.
+   * @return If partition specification  are generated.
+   */
+  bool getPartition(void)
+  { return Partition; }
+  /** Check if contents of tables are generated.
+   * @return If content is generated.
+   */
+  bool getContents(void)
+  { return Contents; }
+  /** Get the distance of the commits when content is generated.
+   * @return Commit distance.
+   */
+  int getCommitDistance(void)
+  { return CommitDistance; }
+  /** Check if comments are generated.
+   * @return If comments are generated.
+   */
+  bool getComments(void)
+  { return Comments; }
+  /** Check if code is generated.
+   * @return If code is generated.
+   */
+  bool getCode(void)
+  { return Code; }
+  /** Get blocksize.
+   */
+  int getBlockSize(void)
+  { return BlockSize; }
+  /** Get the connection this extractor is working on.
+   */
+  toConnection &connection()
+  { return Connection; }
+
+  /** Fill in the initial and next value for an object currently holding a @ref number of
+   * allocated blocks. Uses the resize or default sizes.
+   * @param blocks Blocks currently allocated.
+   * @param initial New initial value.
+   * @param next New next value.
+   */
+  void initialNext(const QString &blocks,QString &initial,QString &next);
+
+  /** Get the schema name specified by the extractor setup. Will include the following '.'
+   * if needed.
+   * @param owner Owner of object to get schema for.
+   * @param desc Used from describe and not to generate script.
+   * @return The translated schema.
+   */
+  QString intSchema(const QString &owner,bool desc);
+
+  /** Get the available datatypes for a database.
+   * @return A list of datatypes.
+   */
+  std::list<datatype> datatypes();
+
+  /** Utility function, creates a statement from the start to the end specified by the
+   * parameters. The connection used to specify parsing is the one of the extractor.
+   * @param start Start of parameters.
+   * @param end End of parameters.
+   * @return The indented statement.
+   */
+  QString createFromParse(std::list<toSQLParse::statement>::iterator start,
+			  std::list<toSQLParse::statement>::iterator end);
+
+  /** Create a source and destination object list to two other lists
+   * containing dropped and created objects or attributes.
+   * @param source Source list input (Will not be modified).
+   * @param destination Destination list input (Will not be modified).
+   * @param drop Drop list output (Will be overwritten).
+   * @param create Create list output (Will be overwritten).
+   */
+  static void srcDst2DropCreate(std::list<QString> &source,std::list<QString> &destination,
+				std::list<QString> &drop,std::list<QString> &creat);
+
+  /** Check if a database is supported at all by the extractor.
+   * @param conn Connection to check for support.
+   * @return True if the database is supported.
+   */
+  static bool canHandle(toConnection &conn);
+
+  /** Add a list to description.
+   * @param ret The return list to add a line to.
+   * @param ctx The current description context.
+   * @param arg1 First extra argument to add.
+   */
+  static void addDescription(std::list<QString> &ret,const std::list<QString> &ctx,
+			     const QString &arg1=QString::null,const QString &arg2=QString::null,
+			     const QString &arg3=QString::null,const QString &arg4=QString::null,
+			     const QString &arg5=QString::null,const QString &arg6=QString::null,
+			     const QString &arg7=QString::null,const QString &arg8=QString::null,
+			     const QString &arg9=QString::null);
+  /** Split a description line into its components.
+   * @param str The description line to split.
+   * @return The list of components.
+   */
+  static std::list<QString> splitDescribe(const QString &str);
+
+  /** Get the part of a description indicated by the level
+   * @param str Description string
+   * @param level The level to get (0 is the first level)
+   */
+  static QString partDescribe(const QString &str,int level);
+
+  /** Get the context of a given level.
+   * @param str Description string
+   * @param level The level to get the context for (1 is the first to not return empty string.
+   * @return The context, if not enough parts are available null is returned.
+   */
+  static QString contextDescribe(const QString &str,int level);
+
+  /** Used to get column information from a describe list
+   */
+  struct columnInfo {
+    /** Name of column
+     */
+    QString Name;
+    /** Definition of column
+     */
+    QString Definition;
+    /** Extra data for the column (Except for order which has own field.
+     */
+    std::map<QString,QString> Data;
+    /** Order of the column. Used for sorting.
+     */
+    int Order;
+
+    /** Create column information from name.
+     */
+    columnInfo(const QString &name)
+      : Name(name)
+    { Order=0; }
+    /** Implement sort order based only on Order field.
+     */
+    bool operator <(const columnInfo &inf)
+    { return Order<inf.Order; }
+    /** Implement sort order based only on Order field.
+     */
+    bool operator ==(const columnInfo &inf)
+    { return Order==inf.Order; }
+  };
+
+  /** Parse a column description and return a sorted list of column data.
+   * @param begin The iterator indicating the beginning to start searching from (Inclusive).
+   * @param end The iterator indicating the end to end searching at (Not inclusive).
+   * @param level Number of levels of context to discard before looking for "COLUMN" definition.
+   * @return The list of column definitions. Sorted by column order.
+   */
+  static std::list<columnInfo> parseColumnDescription(std::list<QString>::const_iterator begin,
+						      std::list<QString>::const_iterator end,
+						      int level=3);
+
+  /** Parse a column description and return a sorted list of column data.
+   * @param description A description list. Will go through entire list.
+   * @param level Number of levels of context to discard before looking for "COLUMN" definition.
+   * @return The list of column definitions. Sorted by column order.
+   */
+  static std::list<columnInfo> parseColumnDescription(const std::list<QString> &description,int level=3)
+  { return parseColumnDescription(description.begin(),description.end(),level); }
+
+  friend class extractor;
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tofilesize_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tofilesize_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tofilesize_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,154 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tofilesize.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tofilesize.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOFILESIZE_H
+#define TOFILESIZE_H
+
+#include <qbuttongroup.h>
+
+class QRadioButton;
+class QSpinBox;
+
+/**
+ * A widget to get a size value for Oracle objects.
+ */
+class toFilesize : public QButtonGroup {
+  Q_OBJECT
+
+  /**
+   * @internal
+   * Value of widget
+   */
+  QSpinBox *Value;
+  /**
+   * @internal
+   * MB unit indicator button
+   */
+  QRadioButton *MBSize;
+  /**
+   * @internal
+   * KB unit indicator button
+   */
+  QRadioButton *KBSize;
+  /**
+   * Setup this widget
+   */
+  void setup(void);
+private slots:
+  /**
+   * @internal
+   * Change the unit type callback.
+   */
+  void changeType(bool);
+  /**
+   * @internal
+   * Size value changed callback.
+   */ 
+  void changedSize(void)
+  { emit valueChanged(); }
+signals:
+  /**
+   * Emitted when value was changed in the widget.
+   */
+  void valueChanged(void); 
+public:
+  /**
+   * Create a filesize widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toFilesize(QWidget* parent=0,const char* name=0);
+  /**
+   * Create a filesize widget.
+   * @param title Title of size selection frame.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toFilesize(const QString &title,QWidget* parent=0,const char* name=0);
+  /**
+   * Set the value of the widget in KB.
+   * @param sizeInKB Size in KB.
+   */
+  void setValue(int sizeInKB);
+  /**
+   * Get value in KB.
+   * @return Size selected in KB.
+   */
+  int value(void);
+  /**
+   * Get an oracle size specification string.
+   * @return String describing size in valid Oracle format.
+   */
+  QString sizeString(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tohelp_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tohelp_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tohelp_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,281 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tohelp.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tohelp.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOHELP_H
+#define TOHELP_H
+
+#include <qdialog.h>
+
+#include <map>
+
+class toListView;
+class QLineEdit;
+class QTextBrowser;
+class QListViewItem;
+class QProgressBar;
+class toHelpBrowser;
+class QToolButton;
+class toHelpPrefs;
+class QComboBox;
+
+/** This class is used to indicate a help context of an object. When the current context
+ * is to be determined you start at the widget that currently has focus and walk upwards
+ * to it's parent until you find a widget that also inherits this class which specify the
+ * context of all underlying widgets.
+ */
+
+class toHelpContext {
+  /**
+   * The current context.
+   */
+  QString Context;
+public:
+  /** Create a context.
+   * @param file File in the help directory that describes the current context.
+   */
+  toHelpContext(const QString &file)
+    : Context(file)
+  { }
+  virtual ~toHelpContext()
+  { }
+  /**
+   * Get this context
+   * @return The location of a file that describes the current context.
+   */
+  virtual const QString &context(void) const
+  { return Context; }
+};
+
+#include "totool.h"
+
+/**
+ * Additional help tool. Also used as object to connect to to display help
+ * for modal dialogs. Only to be used internally.
+ * @internal
+ */
+class toHelpTool : public toTool {
+  Q_OBJECT
+public:
+  toHelpTool()
+    : toTool(501,"Additional Help")
+  { }
+  virtual QWidget *toolWindow(QWidget *,toConnection &)
+  { return NULL; }
+  virtual QWidget *configurationTab(QWidget *parent);
+public slots:
+  void displayHelp(void);
+};
+
+/**
+ * Display a help browser. A help manual consists of HTML pages where at least
+ * two pages are mandatory.
+ *
+ * The first one is toc.htm which is parsed for links which are added to the left
+ * pane tree view. Indentation is handled with the tag dl which open and close a
+ * tree branch.
+ *
+ * The following file would result in two main headings with the first one having
+ * one leaf widget as well.
+ *
+<pre>
+<A HREF="first.html">1 Head</A><BR>
+<DL>
+<A HREF="second.html>1.1 Head Head</A></BR>
+</DL>
+<A HREF="third.html">2 Foot</A><BR>
+</pre>
+ * 
+ * The second file which is optional and should be called index.htm if it exists
+ * should contain a file with links to keywords in the manual. This must be present
+ * for search to be possible in the manual. Keywords are indicated by the <dd> tag
+ * in these files as well as a link to where the keyword is described. Indentation
+ * is possible using the <dl> tag is possible here as well.
+ *
+ * The following will make the keywords "Head", "Head, Head Head" and "Foot" available.
+<pre>
+<DD><A HREF="first.html">Head</A><BR>
+<DL>
+    <DD><A HREF="second.html">Head Head</A><BR>
+</DL>
+<DD><A HREF="third.html">Foot</A>
+</pre>
+ * The reason the files look this way is that this way they are compatible with
+ * the Oracle manuals from Oracle Corporation and these can be browsed as well in
+ * this help viewer.
+ */
+
+class toHelp : public QDialog {
+  Q_OBJECT
+
+  /** @internal
+   * Pointer to open helpwindow if available, otherwise NULL
+   */
+
+  static toHelp *Window;
+
+  /**
+   * True if you are currently searching. You can't close the window while search, would
+   * coredump.
+   */
+  bool Searching;
+
+  /**
+   * List containing the manuals and their sections, compiled from the toc.htm files.
+   * @see toHelp
+   */
+  toListView *Sections;
+  /**
+   * List containing the search result of the latest search. Search reads the index.htm files.
+   */
+  toListView *Result;
+  /**
+   * The line containing the search text.
+   */
+  QLineEdit *SearchLine;
+  /**
+   * Manuals to include in search.
+   */
+  QComboBox *Manuals;
+#ifdef TO_KDE
+  /**
+   * Displays the actual help window.
+   */
+  toHelpBrowser *Help;
+#else
+  QTextBrowser *Help;
+#endif
+  /**
+   * Display progress of current search.
+   */
+  QProgressBar *Progress;
+
+  /**
+   * Set selection and also update selected item in list if any item matches the
+   * selected location.
+   * @param lst Listview to update selected item in.
+   * @param str Location of next help text.
+   */
+  virtual void setSelection(toListView *lst,const QString &str);
+  /**
+   * Reimplemented for internal reasons.
+   */
+  virtual void closeEvent(QCloseEvent *e)
+  { if (!Searching) QWidget::closeEvent(e); }
+private slots:
+  /** Initiate a search with the parameters in the internal widgets.
+   * @internal
+   */
+  void search(void);
+  /** Remove the current selection in the sections and result lists. 
+   * @internal
+   */
+  void removeSelection(void);
+  /** Item selected in left pane. Change contents of help viewer.
+   * @internal
+   */
+  void changeContent(QListViewItem *);
+public:
+  /**
+   * Create help widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   * @param modal If dialog is for a modal dialog or not
+   */
+  toHelp(QWidget *parent,const char *name,bool modal=true);
+  /** Help function to get a clean path from a path string. Strips trailing / etc.
+   * @param path Path to strip.
+   * @return Stripped path in string.
+   */
+  static QString path(const QString &path=QString::null);
+  virtual ~toHelp();
+  /** Display a specific help context in the internal manual. Pops up a help window that
+   * displays the selected topic.
+   * @param context Context to diaplay.
+   * @param parent If NULL use modal dialog and main window.
+   */
+  static void displayHelp(const QString &context,QWidget *parent=NULL);
+  /** Display a specific help context in the internal manual. The context is derived from
+   * the widget that currently holds the focus.
+   * @param parent If NULL use modal dialog and main window.
+   */
+  static void displayHelp(QWidget *parent=NULL);
+  /** Connect the F1 key to display help for a modal dialog. Don't use this directly,
+   * instead call displayHelp directly and bind Key_F1 to that call. This is because the
+   * help in modal dialogs are cludgy at best and should be avoided if possible.
+   * @param dialog Dialog to connect accelerator to.
+   */
+  static void connectDialog(QDialog *dialog);
+
+  friend class toHelpPrefs;
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tohelpbrowser_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tohelpbrowser_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tohelpbrowser_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,134 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tohelpbrowser.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tohelpbrowser.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOHELPBROWSER_H
+#define TOHELPBROWSER_H
+
+#include <list>
+#include <khtml_part.h>
+
+class KURL;
+
+/**
+ * Widget used to display HTML of help pages.
+ */
+
+class toHelpBrowser : public KHTMLPart {
+  Q_OBJECT
+
+  /** List of backward history. The current page is at the end of the list.
+   */
+  std::list<QString> Backward;
+  /** List of forward history if you have started walking backwards.
+   */
+  std::list<QString> Forward;
+private slots:
+  /** Reimplemented for internal reasons.
+   */
+  void openURLRequest(const KURL &url,const KParts::URLArgs &);
+public:
+  /** Create a help browser.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toHelpBrowser(QWidget *parent,const char *name=NULL);
+  /** Open an URL in this widget.
+   * @param url URL to open.
+   * @return Success of operator.
+   */
+  virtual bool openURL(const KURL &url);
+  /** Get source of URL.
+   * @return String containing the current localtion.
+   */
+  QString source(void);
+public slots:
+  /** Go forward if available.
+   */
+  void forward(void);
+  /** Go backward if available.
+   */
+  void backward(void);
+signals:
+  /** Change availability of backward history.
+   * @param avail Wether history is available.
+   */
+  void backwardAvailable(bool avail);
+  /** Change availability of forward history.
+   * @param avail Wether history is available.
+   */
+  void forwardAvailable(bool avail);
+  /** The contents of the browser changed.
+   */
+  void textChanged(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tohighlightedtext_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tohighlightedtext_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tohighlightedtext_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,391 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tohighlightedtext.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tohighlightedtext.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOHIGHLIGHTEDTEXT_H
+#define TOHIGHLIGHTEDTEXT_H
+
+#include "tomarkedtext.h"
+
+#include <list>
+#include <map>
+
+class QListBox;
+class QPainter;
+class toSyntaxSetup;
+
+/** This class implements a syntax parser to provide information to
+ * a syntax highlighted editor.
+ */
+
+class toSyntaxAnalyzer {
+public:
+  /** Information about how highlighting has changed.
+   */
+  enum infoType {
+    /** Normal text
+     */
+    Normal=0,
+    /** This is a keyword
+     */
+    Keyword=1,
+    /** This is a string
+     */
+    String=2,
+    /** Malformed syntax
+     */
+    Error=3,
+    /** Comment
+     */
+    Comment=4,
+    /** Error in SQL background. Not used by highlighter, but configured in the same way.
+     */
+    ErrorBkg=5,
+    /** Normal background. Not used by highlighter, but configured in the same way.
+     */
+    NormalBkg=6,
+    /** Current background. Not used by highlighter, but configured in the same way.
+     */
+    CurrentBkg=7
+  };
+  /** Information about a change in highlighting.
+   */
+  struct highlightInfo {
+    /** New type of highlighting.
+     */
+    infoType Type;
+    /** Start in line for this highlighting.
+     */
+    int Start;
+    highlightInfo(int start,infoType typ=Normal)
+    { Start=start; Type=typ; }
+  };
+private:
+  /** Indicate if colors are updated, can't do this in constructor since QApplication
+   * isn't initialized yet.
+   */
+  bool ColorsUpdated;
+  /** Colors allocated for the different @ref infoType values.
+   */
+  QColor Colors[8];
+  /** Keeps track of possible hits found so far.
+   */
+  struct posibleHit {
+    posibleHit(const char *);
+    /** Where you are in this word to find a hit.
+     */
+    int Pos;
+    /** The text to hit, points into keywords array.
+     */
+    const char *Text;
+  };
+  /** An array of lists of keywords, indexed on the first character.
+   */
+  std::list<const char *> Keywords[256];
+protected:
+  /** Check if this is part of a symbol or not.
+   */
+  bool isSymbol(QChar c)
+  { return (c.isLetterOrNumber()||c=='_'||c=='#'||c=='$'||c=='.'); }
+private:
+  /** Get a colordefinition from a @ref infoType value.
+   * @param def Color to fill out.
+   * @param pos @ref infoType to get color for.
+   */
+  void readColor(const QColor &def,infoType pos);
+  /** Get a string representation of an @ref infoType.
+   * @param typ @ref infoType to get string for.
+   * @return Description of infotype.
+   */
+  static QCString typeString(infoType typ);
+  /** Get an @ref infoType from a string representation of it.
+   * @param str Description of @ref infoType.
+   * @return @ref infoType described by string.
+   */
+  static infoType typeString(const QCString &str);
+  /** Update configuration settings from this class color values.
+   */
+  void updateSettings(void);
+public:
+  /** Create a syntax analysed
+   * @param keywords A list of keywords.
+   */
+  toSyntaxAnalyzer(const char **keywords);
+  virtual ~toSyntaxAnalyzer()
+  { }
+
+  /** Get the character used to quote names of functions etc for the database
+   */
+  virtual QChar quoteCharacter()
+  { return '\"'; }
+  /** True if declare keyword starts block.
+   */
+  virtual bool declareBlock()
+#ifdef TO_NO_ORACLE
+  { return false; }
+#else
+  { return true; }
+#endif
+  /** Analyze a line. There is no guarantee that lines will be called in any kind of order.
+   * @param str Line to analyze.
+   * @param in Type at start of line.
+   * @param out Type at start of next line.
+   * @return A list of where highlighting should change. Start as normal.
+   */
+  virtual std::list<highlightInfo> analyzeLine(const QString &str,infoType in,infoType &out);
+  /** Get a colordefinition for a @ref infoType value.
+   * @param typ @ref infoType to get color for.
+   * @return Color of that type.
+   */
+  QColor getColor(infoType typ);
+
+  /** Check if a word is reserved.
+   * @param word Word to check.
+   * @return True if word is reserved.
+   */
+  bool reservedWord(const QString &word);
+
+  friend class toSyntaxSetup;
+  /** Get the default syntax analyzer.
+   * @return Reference to the default analyzer.
+   */
+  static toSyntaxAnalyzer &defaultAnalyzer();
+};
+
+/** A simple editor which supports syntax highlighting.
+ */
+
+class toHighlightedText : public toMarkedText {
+private:
+  Q_OBJECT
+
+  /** Used internally for drawing.
+   */
+  int LastCol;
+  /** Used internally for drawing.
+   */
+  int LastRow;
+  /** Used internally for drawing.
+   */
+  int LastLength;
+  /** Current line has different background than others.
+   */
+  int Current;
+  /** Indicate how many pixels on the left to ignore painting.
+   */
+  int LeftIgnore;
+  /** Indicate if text should be highlighted or not.
+   */
+  bool Highlight;
+  /** Indicate if keywords should be converted to uppercase when displayed.
+   */
+  bool KeywordUpper;
+  /** Used internally for drawing.
+   */
+  int Cursor;
+  /** Map of rows with errors and their error message.
+   */
+  std::map<int,QString> Errors;
+  /** Map of infoType that are NOT Normal
+   */
+  std::map<int,toSyntaxAnalyzer::infoType> LineInput;
+  /** The syntax analyzer to use.
+   */
+  toSyntaxAnalyzer *Analyzer;
+
+  bool NoCompletion;
+  bool KeepCompletion;
+  QListBox *Completion;
+  int CompleteItem;
+  std::list<QString> AllComplete;
+
+  bool invalidToken(int line,int col);
+
+  toSyntaxAnalyzer::infoType lineIn(int line);
+protected:
+  /** Set how much of the left margin to ignore painting.
+   */
+  void setLeftIgnore(int ignore)
+  { LeftIgnore=ignore; }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void keyPressEvent(QKeyEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void focusOutEvent(QFocusEvent *e);
+  /** Check if to view completion.
+   */
+  virtual void checkComplete(void);
+
+  /** Start a completion with a given completelist.
+   * @param completes List of available completions.
+   */
+  
+  virtual void startComplete(std::list<QString> &completes);
+public:
+  /** Convert a linenumber after a change of the buffer to another linenumber. Can be
+   * used to convert a specific linenumber after receiving a @ref insertedLines call.
+   * @param line Line number.
+   * @param start Start of change.
+   * @param diff Lines added or removed.
+   * @return New linenumber or -1 if line doesn't exist anymore.
+   */
+  static int convertLine(int line,int start,int diff);
+  /** Create a new editor.
+   * @param parent Parent of widget.
+   * @param name Name of widget.
+   */
+  toHighlightedText(QWidget *parent,const char *name=NULL);
+  /** Reimplemented for internal reasons
+   */
+  virtual ~toHighlightedText();
+
+  /** Clear the editor.
+   */
+  void clear(void)
+  { Errors.clear(); LineInput.clear(); Current=-1; toMarkedText::clear(); }
+  /** Set the text of this editor.
+   */
+  void setText(const QString &str);
+
+  /** Set the error list map.
+   * @param errors A map of linenumbers to errorstrings. These will be displayed in the
+   *               statusbar if the cursor is placed on the line.
+   */
+  void setErrors(const std::map<int,QString> &errors);
+  /** Set current line. Will be indicated with a different background.
+   * @param current Current line.
+   */
+  void setCurrent(int current);
+  /** Get current line.
+   * @return Current line.
+   */
+  int current(void)
+  { return Current; update(); }
+  /** Set keyword upper flag. If this is set keywords will be converted to uppercase when painted.
+   * @param val New value of keyword to upper flag.
+   */
+  void setKeywordUpper(bool val)
+  { KeywordUpper=val; update(); }
+  /** The the highlighting flag. If this isn't set no highlighting is done.
+   */
+  void setHighlight(bool val)
+  { Highlight=val; update(); }
+  /** Set the syntax highlighter to use.
+   * @param analyzer Analyzer to use.
+   */
+  void setAnalyzer(toSyntaxAnalyzer &analyzer)
+  { Analyzer=&analyzer; update(); }
+  /** Get the current syntaxhighlighter.
+   * @return Analyzer used.
+   */
+  toSyntaxAnalyzer &analyzer(void)
+  { return *Analyzer; }
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintCell (QPainter *painter,int row,int col);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintEvent(QPaintEvent *pe);
+
+  /** Get the tablename currently under the cursor.
+   * @param owner Filled with owner or table or QString::null if no owner specified.
+   * @param table Filled with tablename.
+   * @param highlight If true mark the extracted tablename
+   */
+  void tableAtCursor(QString &owner,QString &table,bool highlight=false);
+
+  /** Returns true if the editor has any errors.
+   */
+  bool hasErrors();
+signals:
+  /** Emitted when lines are inserted or removed.
+   * @param start Start of line inserted.
+   * @param diff Number of lines inserted or removed.
+   */
+  void insertedLines(int start,int diff);
+protected slots:
+  void textChanged(void);
+
+public slots:
+  /** Go to next error.
+   */
+  void nextError(void);
+  /** Go to previous error.
+   */
+  void previousError(void);
+private slots:
+  void selectComplete(void);
+  void setStatusMessage(void); 
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tohtml_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tohtml_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tohtml_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,216 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tohtml.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tohtml.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOHTML_H
+#define TOHTML_H
+
+#include <map>
+
+#include <qstring.h>
+#include <qcstring.h>
+
+#define TO_HTML_MAX_QUAL 100
+
+/** A small and hopefully pretty efficient parser of HTML tags. No attempt what
+ * so ever is made trying to check the validity of the text so if you forget
+ * a closing > you will probably end up with an exception.
+ *
+ * A simple traverser counting the number of paragraphs might look like this.
+ *
+<pre>
+int paragraphs++;
+toHtml count("Paragraphs<P>And some</P><P>Dobedoo");
+while(!count.eof()) {
+  count.nextToken();
+  if (count.isTag()&&count.open()&&QString(count.tag())=="p")
+    paragraphs++;
+}
+</pre>
+ */
+
+class toHtml {
+  /** Actual data of file.
+   */
+  char *Data;
+  /** Length of the data.
+   */
+  size_t Length;
+  /** Current position in data.
+   */
+  size_t Position;
+
+  /** Last character that was at the end of text written over by call to @ref mid.
+   * This is a real cludge, but what don't you do for performance.
+   */
+  char LastChar;
+
+  /** List of qualifiers for tab. This is not a list because of performance as well.
+   * Not really a lot of memory wasted this way, in fact it is probably more efficient
+   * than a dynamic list.
+   */
+  struct {
+    /** Name of qualifier. Always lowercase, points into @ref Data.
+     */
+    const char *Name;
+    /** Value of qualifier. Points into @ref Data.
+     */
+    const char *Value;
+  } Qualifiers[TO_HTML_MAX_QUAL];
+
+  /** Number of qualifiers used.
+   */
+  int QualifierNum;
+  /** If last token read was a tag or plain text.
+   */
+  bool IsTag;
+  /** Last tag read was an open tag. Only valid if @ref isTag is true.
+   */
+  bool Open;
+  /** Name of tag. NULL terminated, points into @ref Data.
+   */
+  const char *Tag;
+  /** Text if not tag. NULL terminated, points into @ref Data.
+   */
+  const char *Text;
+
+  /** Walk forward in @ref Data until not whitespace.
+   */
+  void skipSpace(void);
+  /** Extract a string from @ref Data. Insert 0 at end of string, store overwritten char
+   * in LastChar.
+   * @param start Start position of string to extract.
+   * @param size Size of string to extract.
+   * @return Pointer to string (Points into @ref Data)
+   */
+  const char *mid(size_t start,size_t size);
+public:
+  /** Create a HTML parser.
+   * @param data Data to parse.
+   */
+  toHtml(const QCString &data);
+  ~toHtml();
+
+  /** Read the next token which can be either a open tag, close tag or text.
+   *
+   * Observe that nextToken destroys the data it has parsed, so you
+   * can't search it later. Searhing must be done on an new toHtml,
+   * several serches can be made though on the same toHtml.
+   */
+
+  void nextToken(void);
+
+  /** Get value of a qualifier.
+   * @param name Name of qualifier in lowercase.
+   * @return Value of qualifier or NULL.
+   */
+  const char *value(const QCString &name);
+  /** Return true if current token is a tag.
+   * @return True if tag.
+   */
+  bool isTag(void)
+  { return IsTag; }
+  /** Return true if open tag. Only valid if @ref isTag is true.
+   * @return True if open tag.
+   */
+  bool open(void)
+  { return Open; }
+
+  /** Get bread text if available. Expands &# characters are expanded before returned.
+   * Only valid if @ref isTag returns false.
+   * @return The parsed text.
+   */
+
+  QCString text(void);
+
+  /** Get name of tag in lowercase. Only valid if @ref isTag returns true.
+   * @return Name of tag (Excluding / if close tag).
+   */
+  const char *tag(void)
+  { return Tag; }
+
+  /** Check if at end of data
+   * @return True if at end of data.
+   */
+  bool eof(void);
+
+  /** Search data for a simple text.
+   * @param data Data to search.
+   * @param str Substring to search for in data.
+   */
+  static bool search(const QCString &data,const QString &str);
+
+  /** Escape text to be HTML.
+   */
+  static QString escape(const QString &html);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tolegendchart_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tolegendchart_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tolegendchart_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,134 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tolegendchart.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tolegendchart.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOLEGENDCHART_H
+#define TOLEGENDCHART_H
+
+#include <list>
+
+#include <qwidget.h>
+
+/** A widget that displays a legend to other charts.
+ */
+
+class toLegendChart : public QWidget {
+  Q_OBJECT
+
+  int Columns;
+  QString Title;
+
+  std::list<QString> Labels;
+  std::list<int> sizeHint(int &height,int &items);
+public:
+  /** Create a new legend.
+   * @param columns Columns.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toLegendChart(int columns,QWidget *parent=NULL,const char *name=NULL,WFlags f=0);
+
+  /** Set title of the chart. Set to empty string to not display title.
+   * @param title Title of chart.
+   */
+  void setTitle(const QString &title=QString::null)
+  { Title=title; update(); }
+  /** Get title of chart.
+   * @return Title of chart.
+   */
+  const QString &title(void)
+  { return Title; }
+
+  /** Set list of chart labels.
+   * @param labels List of labels, if label is empty it will not appear in legend.
+   */
+  void setLabels(std::list<QString> &labels);
+  /** Add a value to the chart.
+   * @param value New value to add.
+   * @param label Label of this new value.
+   */
+  void addLabel(const QString &label);
+  /** Get labels of chart.
+   * @return List of labels.
+   */
+  std::list<QString> &labels(void)
+  { return Labels; }
+  /** Reimplemented for internal reasons.
+   */
+  virtual QSize sizeHint();
+protected:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintEvent(QPaintEvent *e);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tolinechart_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tolinechart_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tolinechart_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,342 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tolinechart.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tolinechart.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOLINECHART_H
+#define TOLINECHART_H
+
+#include <list>
+#include <map>
+
+#include <qwidget.h>
+
+class QPopupMenu;
+class QScrollBar;
+
+/** A widget that displays a linechart with optional background throbber (Not implemented yet).
+ */
+
+class toLineChart : public QWidget {
+  Q_OBJECT
+
+  QPopupMenu *Menu;
+
+  QScrollBar *Horizontal;
+  QScrollBar *Vertical;
+
+protected:
+  std::list<std::list<double> > Values;
+  std::list<QString> XValues;
+  std::list<QString> Labels;
+  std::list<bool> Enabled;
+  bool Legend;
+  bool Last;
+  int Grid;
+  bool AxisText;
+  double MinValue;
+  bool MinAuto;
+  double MaxValue;
+  bool MaxAuto;
+  QString YPostfix;
+  int Samples;
+  QString Title;
+
+  QRect Chart;
+  QPoint MousePoint[2];
+  int SkipSamples;
+  int UseSamples;
+  int DisplaySamples;
+  bool Zooming;
+  double zMinValue;
+  double zMaxValue;
+
+  static double round(double round,bool up);
+  QRect fixRect(QPoint p1,QPoint p2);
+  virtual void mouseReleaseEvent(QMouseEvent *e);
+  virtual void mouseMoveEvent(QMouseEvent *e);
+  virtual void mouseDoubleClickEvent(QMouseEvent *e);
+  virtual void mousePressEvent(QMouseEvent *e);
+
+  int countSamples(void);
+  void clearZoom(void);
+
+  virtual void paintLegend(QPainter *p,QRect &rect);
+  virtual void paintTitle(QPainter *p,QRect &rect);
+  virtual void paintAxis(QPainter *p,QRect &rect);
+  virtual void paintChart(QPainter *p,QRect &rect);
+public:
+  /** Create a new linechart.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toLineChart(QWidget *parent=NULL,const char *name=NULL,WFlags f=0);
+
+  /** Create a new chart by copying all the data from another chart.
+   * @param chart Chart to copy data from.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toLineChart(toLineChart *chart,QWidget *parent=NULL,const char *name=NULL,WFlags f=0);
+
+  /** Destroy chart
+   */
+  ~toLineChart();
+
+  /** Specify if legend should be displayed to the right of the graph, default is on.
+   * @param on Whether to display legend or not.
+   */
+  void showLegend(bool on)
+  { Legend=on; update(); }
+  /** Check if legend is displayed or not.
+   * @return If legend is displayed or not.
+   */
+  bool legend(void) const
+  { return Legend; }
+
+  /** Show most recent value on top of graph
+   * @param on Whether to display or not.
+   */
+  void showLast(bool on)
+  { Last=on; update(); }
+  /** Check if last value is displayed or not.
+   * @return If value is displayed or not.
+   */
+  bool last(void) const
+  { return Last; }
+
+  /** Set title of the chart. Set to empty string to not display title.
+   * @param title Title of chart.
+   */
+  void setTitle(const QString &title=QString::null)
+  { Title=title; setCaption(title); update(); }
+  /** Get title of chart.
+   * @return Title of chart.
+   */
+  const QString &title(void)
+  { return Title; }
+
+  /** Specify if a grid should be displayed in the graph, default is on.
+   * @param div Number of parts to divide grid into.
+   */
+  void showGrid(int div=0)
+  { Grid=div; update(); }
+  /** Check if grid is displayed or not.
+   * @return Number of parts to divide grid into.
+   */
+  int grid(void) const
+  { return Grid; }
+
+  /** Specify if a y-axis legend should be displayed in the graph, default is on.
+   * @param on Whether to display legend or not.
+   */
+  void showAxisLegend(bool on)
+  { AxisText=on; update(); }
+  /** Check if y-axis legend is displayed or not.
+   * @return If legend is displayed or not.
+   */
+  bool axisLegend(void) const
+  { return AxisText; }
+
+  /** Set y postfix value. This will be appended to the values in the axis legend.
+   * @param postfix The string to append.
+   */
+  void setYPostfix(const QString &postfix)
+  { YPostfix=postfix; update(); }
+  /** Set max value on y-axis to auto.
+   */
+  void setMaxValueAuto(void)
+  { MaxAuto=true; update(); }
+  /** Set min value on y-axis to auto.
+   */
+  void setMinValueAuto(void)
+  { MinAuto=true; update(); }
+  /** Set max value on y-axis.
+   * @param val Max value on y-axis.
+   */
+  void setMaxValue(double maxVal)
+  { MaxAuto=false; MaxValue=maxVal; update(); }
+  /** Set min value on y-axis.
+   * @param val Min value on y-axis.
+   */
+  void setMinValue(double minVal)
+  { MinAuto=false; MinValue=minVal; update(); }
+  /** Get minimum value on y-axis. Will not return the automatically determinned minimum value.
+   * @return Minimum value on y-axis.
+   */
+  double minValue(void) const
+  { return MinValue; }
+  /** Get maximum value on y-axis. Will not return the automatically determinned maximum value.
+   * @return Maximum value on y-axis.
+   */
+  double maxValue(void) const
+  { return MaxValue; }
+
+  /** Set the number of samples on the x-axis. Setting samples to -1 will keep all entries.
+   * @param samples Number of samples.
+   */
+  void setSamples(int samples=-1);
+  /** Get the maximum number of samples on the x-axis.
+   * @return Max number of samples.
+   */
+  int samples(void) const
+  { return Samples; }
+
+  /** Set the labels on the chart lines.
+   * @param labels Labels of the lines. Empty labels will not show up in the legend.
+   */
+  void setLabels(const std::list<QString> &labels)
+  { Labels=labels; update(); }
+  /** Get the labels of the chart lines.
+   * @return List of labels.
+   */
+  std::list<QString> &labels(void)
+  { return Labels; }
+
+  /** Add a new value set to the chart.
+   * @param value New values for charts (One for each line).
+   * @param label X-value on these values.
+   */
+  virtual void addValues(std::list<double> &value,const QString &xValues);
+
+  /** Get list of labels
+   * @return List of labels
+   */
+  std::list<QString> &xValues(void)
+  { return XValues; }
+
+  /** Get list of values.
+   * @return Values in piechart.
+   */
+  std::list<std::list<double> > &values(void)
+  { return Values; }
+
+  /** Export chart to a map.
+   * @param data A map that can be used to recreate the data of a chart.
+   * @param prefix Prefix to add to the map.
+   */
+  virtual void exportData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Import data
+   * @param data Data to read from a map.
+   * @param prefix Prefix to read data from.
+   */
+  virtual void importData(std::map<QCString,QString> &data,const QCString &prefix);
+
+  /** Get enabled datavalues. Values in this list with false are not drawn in the chart.
+   * Could be an empty list if everything is enabled.
+   */
+  std::list<bool> enabledCharts(void)
+  { return Enabled; }
+  /** Set enabled datavalues. Values in this list with false are not drawn in the chart.
+   */
+  void setEnabledCharts(std::list<bool> &enabled)
+  { Enabled=enabled; update(); }
+  /** Open chart in new window.
+   */
+  virtual toLineChart *openCopy(QWidget *parent);
+signals:
+  /** A new value set was added to the chart.
+   * @param value New values for charts (One for each line).
+   * @param label X-value on these values.
+   */
+  virtual void valueAdded(std::list<double> &value,const QString &xValues);
+public slots:
+  /** Clear the values from the chart.
+   */
+  virtual void clear(void)
+  { Values.clear(); XValues.clear(); update(); }
+
+  /** Setup values of charts.
+   */
+  virtual void setup(void);
+
+  /** Print the chart.
+   */
+  virtual void editPrint(void);
+
+  void openCopy(void)
+  { openCopy(NULL); }
+protected:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintEvent(QPaintEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void addMenues(QPopupMenu *)
+  { }
+private slots:
+  void horizontalChange(int);
+  void verticalChange(int);
+  void chartSetup(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tomain_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tomain_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tomain_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,592 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tomain.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tomain.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOMAIN_H
+#define TOMAIN_H
+
+#include "tobackground.h"
+
+#ifdef TO_KDE
+#include "tomainwindow.kde.h"
+#else
+#include "tomainwindow.h"
+#endif
+
+#include <list>
+#include <map>
+
+#include <qtimer.h>
+
+#if QT_VERSION >= 0x030000
+class QUrlOperator;
+#endif
+
+#define TOMessageBox QMessageBox
+
+class QComboBox;
+class QLabel;
+class QListView;
+class QListViewItem;
+class QNetworkOperation;
+class QPopupMenu;
+class QToolBar;
+class QToolButton;
+class QWorkspace;
+class toConnection;
+class toEditWidget;
+class toLineChart;
+class toMarkedText;
+class toSearchReplace;
+class toTool;
+class toToolWidget;
+
+/** This class defines the main window. Observe that this class will have different baseclass
+ * depending on if TOra is a Qt or KDE application. In the case of Qt this will be a
+ * QMainWindow descendant.
+ */
+class toMain : public toMainWindow {
+  Q_OBJECT
+private:
+  /**
+   * The connections that have been opened in TOra.
+   */
+  std::list<toConnection *> Connections;
+  /**
+   * Workspace of main window.
+   */
+  QWorkspace *Workspace;
+  /**
+   * Handles available connections list in toolbar.
+   */
+  QComboBox *ConnectionSelection;
+  /**
+   * Add a new connection. The connection itself must already be created.
+   * Returns the connection or it's duplicate already opened connection.
+   */
+  toConnection *addConnection(toConnection *conn,bool def=true);
+  /**
+   * A map from menu ID:s to tools.
+   */
+  std::map<int,toTool *> Tools;
+  /**
+   * A list of toolbuttons that need an open connection to be enabled.
+   */
+  std::map<QToolButton *,bool> NeedConnection;
+  /**
+   * The ID of the tool providing the SQL editor.
+   */
+  int SQLEditor;
+
+  /** Status messages to display
+   */
+  std::list<QString> StatusMessages;
+
+  /**
+   * Disconnect connection button.
+   */
+  QToolButton *DisconnectButton;
+  /**
+   * Load file button.
+   */
+  QToolButton *LoadButton;
+  /**
+   * Save file button.
+   */
+  QToolButton *SaveButton;
+  /**
+   * Print button.
+   */
+  QToolButton *PrintButton;
+  /**
+   * Undo button.
+   */
+  QToolButton *UndoButton;
+  /**
+   * Redo button.
+   */
+  QToolButton *RedoButton;
+  /**
+   * Cut button.
+   */
+  QToolButton *CutButton;
+  /**
+   * Copy button.
+   */
+  QToolButton *CopyButton;
+  /**
+   * Paste button.
+   */
+  QToolButton *PasteButton;
+  /**
+   * Paste button.
+   */
+  QToolButton *SearchButton;
+
+  /**
+   * Edit buttons toolbar.
+   */
+  QToolBar *EditToolbar;
+  /**
+   * Tool buttons toolbar.
+   */
+  QToolBar *ToolsToolbar;
+  /**
+   * Connection buttons toolbar.
+   */
+  QToolBar *ConnectionToolbar;
+
+  /**
+   * File menu.
+   */
+  QPopupMenu *FileMenu;
+  /**
+   * Edit menu.
+   */
+  QPopupMenu *EditMenu;
+  /**
+   * Tools menu.
+   */
+  QPopupMenu *ToolsMenu;
+  /**
+   * Windows menu.
+   */
+  QPopupMenu *WindowsMenu;
+  /**
+   * Help menu.
+   */
+  QPopupMenu *HelpMenu;
+  /**
+   * Display latest status messages
+   */
+  QPopupMenu *StatusMenu;
+  /**
+   * Current column label.
+   */
+  QLabel *ColumnLabel;
+  /**
+   * Current row label.
+   */
+  QLabel *RowLabel;
+  toBackground Poll;
+  /**
+   * Search & replace dialog if available.
+   */
+  toSearchReplace *Search;
+  /**
+   * Default tool id
+   */
+  int DefaultTool;
+
+  QTimer KeepAlive;
+
+  toEditWidget *Edit;
+
+  toEditWidget *findEdit(QWidget *edit);
+
+  void updateRecent(void);
+
+  void editEnable(toEditWidget *edit,
+		  bool open,bool save,bool print,
+		  bool undo,bool redo,
+		  bool cut,bool copy,bool paste,
+		  bool search,
+		  bool selectAll,bool readAll);
+public:
+
+  /** ID of the file menu
+   */
+  static const int TO_FILE_MENU;
+  /** ID of the edit menu
+   */
+  static const int TO_EDIT_MENU;
+  /** ID of the tools menu
+   */
+  static const int TO_TOOLS_MENU;
+  /** ID of the windows menu
+   */
+  static const int TO_WINDOWS_MENU;
+  /** ID of the help menu
+   */
+  static const int TO_HELP_MENU;
+
+  /** First ID of the tool specific menu items.
+   */
+  static const int TO_TOOL_MENU_ID;
+  /** Last ID of the tool specific menu items.
+   */
+  static const int TO_TOOL_MENU_ID_END;
+
+  /** First ID of the tool specific menu items.
+   */
+  static const int TO_LAST_FILE_ID;
+  /** Last ID of the tool specific menu items.
+   */
+  static const int TO_LAST_FILE_ID_END;
+
+  /** First ID of the tool specific about menu items.
+   */
+  static const int TO_TOOL_ABOUT_ID;
+  /** Last ID of the tool specific about menu items.
+   */
+  static const int TO_TOOL_ABOUT_ID_END;
+
+  /**
+   * Create main window. Always NULL as parent.
+   */
+  toMain();
+
+  /**
+   * Get the workspace widget of the main window.
+   * @return Workspace widget.
+   */
+  QWorkspace *workspace()
+  { return Workspace; }
+
+  /**
+   * Get the current database connection
+   * @return Reference to current connection.
+   */
+  toConnection &currentConnection(void);
+
+  /**
+   * Set the widget to edit through menues and toolbar.
+   */
+  static void setEditWidget(toEditWidget *edit);
+  /**
+   * Set available menu items in user interface. It is not enough to just call
+   * this function to make open for instance to actually work. It is a lot of
+   * more especially in @ref commandCallback and @ref editFileMenu. Will only
+   * update if this is the current editing widget.
+   */
+  static void editEnable(toEditWidget *edit);
+  /**
+   * Disable all the current available items in the user interface (That @ref
+   * editEnable can enable). If specified widget has the focus the edit widget
+   * is cleared.
+   */
+  static void editDisable(toEditWidget *edit);
+  /** Get current edit widget
+   */
+  toEditWidget *editWidget()
+  { return Edit; }
+
+  /**
+   * Close window
+   * @param del If user interaction is allowed.
+   * @return True if close was allowed, otherwise false.
+   */
+  virtual bool close(bool del);
+  /**
+   * Create the default tool for the current connection.
+   *
+   * This is the tool with the highest priority, usually the SQL worksheet.
+   */
+  void createDefault(void);
+  /**
+   * Set coordinates in the statusbar.
+   *
+   * Used to indicate current cursor position by child widgets.
+   */
+  void setCoordinates(int,int);
+
+  /**
+   * Get the file menu.
+   * @return File menu
+   */
+  QPopupMenu *fileMenu()
+  { return FileMenu; }
+  /**
+   * Get the edit menu.
+   * @return Edit menu
+   */
+  QPopupMenu *editMenu()
+  { return EditMenu; }
+  /**
+   * Get the tools menu.
+   * @return Tools menu
+   */
+  QPopupMenu *toolsMenu()
+  { return ToolsMenu; }
+  /**
+   * Get the help menu.
+   * @return Help menu
+   */
+  QPopupMenu *helpMenu()
+  { return HelpMenu; }
+
+  /* Update the keepalive from configuration
+   */
+  void updateKeepAlive();
+
+  /**
+   * Get a list of currently open connections.
+   * @return List of connection names. The returned list can then be used by
+   * @ref connection to get the actual connection.
+   */
+  std::list<QString> connections(void);
+  /** Get a connection identified by a string.
+   * @return A reference to a connection.
+   * @exception QString If connection wasn't found.
+   */
+  toConnection &connection(const QString &);
+  /** Set if a connection needs to be commited. Also updates visual feedback in interface.
+   */
+  void setNeedCommit(toConnection &conn,bool needCommit=true);
+
+  /** Edit an SQL statement in the SQL editor if any connected.
+   * @param str Identifier of the SQL to edit.
+   */
+  void editSQL(const QString &str);
+  /**
+   * Register a tool which to use as an SQL editor. When something is to be edited
+   * first a toolwindow will be created and the @ref sqlEditor will be emited, so
+   * the SQL editor must connect to this signal as well.
+   *
+   * @param toolid Which tool identifier to register as the SQL editor. This
+   *               is the value which is passed to the @ref toTool::customSetup
+   *               member.
+   */
+  void registerSQLEditor(int toolid);
+
+  /** Called by @ref toTool when a new tool is created.
+   * @param tool The tool widget created.
+   */
+  void toolWidgetAdded(toToolWidget *tool);
+  /** Called by @ref toToolWidget when a new tool is about to be destroyed.
+   * @param tool The tool widget created.
+   */
+  void toolWidgetRemoved(toToolWidget *tool);
+
+  /** Export data to a map.
+   * @param data A map that can be used to recreate the session.
+   * @param prefix Prefix to add to the map.
+   */
+  virtual void exportData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Import data
+   * @param data Data to read from a map.
+   * @param prefix Prefix to read data from.
+   */
+  virtual void importData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Get edit toolbar pointer.
+   */
+  QToolBar *editToolbar()
+  { return EditToolbar; }
+  /** Get connection toolbar pointer.
+   */
+  QToolBar *connectionToolbar()
+  { return ConnectionToolbar; }
+  /** Added chart.
+   */
+  void addChart(toLineChart *chart);
+  /** Removed chart.
+   */
+  void removeChart(toLineChart *chart);
+  /** Setup chart.
+   */
+  void setupChart(toLineChart *chart);
+  /** Display status message in dialog.
+   */
+  void displayMessage(const QString &str);
+  /** Add recent file
+   */
+  void addRecentFile(const QString &filename);
+signals:
+  /** Invoked to start editing an SQL identifier.
+   * @param str Identifier to start editing.
+   */
+  void sqlEditor(const QString &str);
+  /** Invoked when a new chart is created.
+   */
+  void chartAdded(toLineChart *chart);
+  /** Invoked before a chart is destroyed.
+   */
+  void chartSetup(toLineChart *chart);
+  /** Invoked before a chart is destroyed.
+   */
+  void chartRemoved(toLineChart *chart);
+  /** Invoked when a connection is added.
+   * @param str Connection identifier.
+   */
+  void addedConnection(const QString &str);
+  /** Invoked when a connection is removed.
+   * @param str Connection identifier.
+   */
+  void removedConnection(const QString &str);
+  /** Invoked when a tool window is created.
+   * @param tool The tool created.
+   */
+  void addedToolWidget(toToolWidget *tool);
+  /** Invoked when a tool window is closed.
+   * @param tool Tool about to be removed.
+   */
+  void removedToolWidget(toToolWidget *tool);
+  /** Emitted before a commit or rollback is made to the current connection.
+   * @param conn Connection that is commited
+   * @param cmt True if commit, false if rollback.
+   */
+  void willCommit(toConnection &conn,bool cmt);
+public slots:
+  /** Used to enable/disable entries in the windows menu
+   */
+  void windowsMenu(void);
+  /** Used to fill the status menu with the latest status entries
+   */ 
+  void statusMenu(void);
+  /** Display context help. 
+   */
+  void contextHelp(void);
+  /** Called when active window is changed.
+   */
+  void windowActivated(QWidget *);
+  /** Used to enable/disable entries in the file menu
+   */
+  void showFileMenu(void);
+  /** Check if object caching is done.
+   */
+  void checkCaching(void);
+  /** Save the current TOra session
+   */
+  void saveSession(void);
+  /** Load a session (Merge with current)
+   */
+  void loadSession(void);
+  /** Close all windows and connections.
+   */
+  void closeSession(void);
+  /** Change current connection
+   */
+  void changeConnection(void);
+private slots:
+  /** Add a connection
+   */
+  void addConnection(void);
+  /** Remove a connection
+   */
+  bool delConnection(void);
+  /** Handles menu selections
+   * @param cmd Menu entry ID selected
+   */
+  void commandCallback(int cmd);
+
+  /** Commit button pressed
+   */
+  void commitButton(void);
+  /** Rollback button pressed
+   */
+  void rollbackButton(void);
+
+  /** Load button pressed
+   */
+  void loadButton(void);
+  /** Save button pressed
+   */
+  void saveButton(void);
+  /** Print button pressed
+   */
+  void printButton(void);
+  /** Options button pressed
+   */
+  void optionButton(void);
+  /** Undo button pressed
+   */
+  void undoButton(void);
+  /** Redo button pressed
+   */
+  void redoButton(void);
+  /** Copy button pressed
+   */
+  void copyButton(void);
+  /** Cut button pressed
+   */
+  void cutButton(void);
+  /** Paste button pressed
+   */
+  void pasteButton(void);
+  /** Paste button pressed
+   */
+  void searchButton(void);
+  /** Stop running queries on connection
+   */
+  void stopButton(void);
+  /** Display status message
+   */
+  void displayMessage(void);
+
+  void keepAlive();
+};
+
+/** Get a pointer to the main window
+ * @return Pointer to main window.
+ */
+toMain *toMainWidget(void);
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tomainwindow_kde_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tomainwindow_kde_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tomainwindow_kde_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,91 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tomainwindow.kde.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tomainwindow.kde.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOMAINWINDOW_KDE_H
+#define TOMAINWINDOW_KDE_H
+
+#include <kapp.h>
+#include <kdockwidget.h>
+
+/**
+ * A container class that either inherits KDE or Qt main window.
+ */
+
+class toMainWindow : public KDockMainWindow {
+  Q_OBJECT
+public:
+  toMainWindow()
+    : KDockMainWindow(0,"Main Window")
+  { }
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tomarkedtext_2_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tomarkedtext_2_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tomarkedtext_2_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,90 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tomarkedtext.2.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tomarkedtext.2.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOMARKEDTEXT_2_H
+#define TOMARKEDTEXT_2_H
+
+#include <qmultilineedit.h>
+
+/**
+ * Container to the correct multi line editor for Qt 2 or 3.
+ */
+
+class toMultiLineEdit : public QMultiLineEdit {
+  Q_OBJECT
+public:
+  toMultiLineEdit(QWidget *parent,const char *name)
+    : QMultiLineEdit(parent,name)
+  { }
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tomarkedtext_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tomarkedtext_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tomarkedtext_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,280 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tomarkedtext.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tomarkedtext.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOMARKEDTEXT_H
+#define TOMARKEDTEXT_H
+
+#include "toeditwidget.h"
+
+#if QT_VERSION < 0x030000
+#include "tomarkedtext.2.h"
+#else
+#include "qtlegacy/qttableview.h"
+#include "qtlegacy/qtmultilineedit.h"
+#include "tomarkedtext.3.h"
+#endif
+
+#include <map>
+
+#include <qglobal.h>
+#include <qstring.h>
+#include <qtimer.h>
+
+class TOPrinter;
+
+/** This is the enhanced editor used in TOra. It mainly offers integration in the TOra
+ * menues and printsupport in addition to normal QMultiLineEdit.
+ */
+
+class toMarkedText : public toMultiLineEdit, public toEditWidget {
+  Q_OBJECT
+
+  /** Filename of the file in this buffer.
+   */
+  QString Filename;
+
+  bool Search;
+  bool SearchFailed;
+  bool SearchForward;
+  QString SearchString;
+  QString LastSearch;
+
+  int CursorTimerID;
+
+  /** Print one page to printer.
+   * @param printer Printer to print to.
+   * @param painter Painter to print to.
+   * @param line Line at top of page.
+   * @param offset Where one the drawn result this line starts.
+   * @param pageNo Pagenumber.
+   * @param paint Wether to paint or just test.
+   */
+  virtual int printPage(TOPrinter *printer,QPainter *painter,int line,int &offset,
+			int pageNo,bool paint=true);
+
+  void searchFound(int line,int col);
+  void incrementalSearch(bool forward,bool next);
+protected:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void mousePressEvent(QMouseEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void keyPressEvent(QKeyEvent *e);
+public:
+  /** Create an editor.
+   * @param parent Parent of this widget.
+   * @param name Name of this widget.
+   */
+  toMarkedText(QWidget *parent,const char *name=NULL);
+  /** Insert text and optionallly mark inserted text.
+   * @param str String to insert.
+   * @param mark True if mark inserted as selected.
+   */
+  virtual void insert(const QString &str,bool mark)
+  { toMultiLineEdit::insert(str,mark); }
+  /** Insert text.
+   * @param str String to insert.
+   */
+  virtual void insert(const QString &str)
+  { toMultiLineEdit::insert(str); }
+  /** Get selected text. This function is now public.
+   * @return The selected text.
+   */
+  QString markedText()
+  { return toMultiLineEdit::markedText(); }
+  /** Check if selection is available. This function is now public.
+   * @return True if selection is available.
+   */
+  bool hasMarkedText()
+  { return toMultiLineEdit::hasMarkedText(); }
+  /** Erase the contents of the editor.
+   */
+  void clear(void)
+  { Filename=""; redoEnabled(false); undoEnabled(false); setEdit(); toMultiLineEdit::clear(); setEdited(false); }
+
+  /** Get location of the current selection. This function is now public. See the
+   * Qt documentation for more information.
+   */
+  bool getMarkedRegion (int * line1,int * col1,int * line2,int * col2) const
+  { return toMultiLineEdit::getMarkedRegion(line1,col1,line2,col2); }
+
+  /** Get filename of current file in editor.
+   * @return Filename of editor.
+   */
+  virtual QString filename(void) const
+  { return Filename; }
+  /** Open a file for editing.
+   * @param file File to open for editing.
+   */
+  virtual void openFilename(const QString &file);
+  /** Set the current filename of the file in editor.
+   * @param str String containing filename.
+   */
+  virtual void setFilename(const QString &str)
+  { Filename=str; }
+  /** Update user interface with availability of copy/paste etc.
+   */
+  virtual void setEdit(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void focusInEvent (QFocusEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void focusOutEvent (QFocusEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintEvent(QPaintEvent *pe);
+  /** Print this editor.
+   */
+  virtual void editPrint(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual bool editOpen(QString file=QString::null);
+  /** Reimplemented for internal reasons.
+   */
+  virtual bool editSave(bool ask);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editUndo(void)
+  { undo(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editRedo(void)
+  { redo(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editCut(void)
+  { cut(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editCopy(void)
+  { copy(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editPaste(void)
+  { paste(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editSelectAll(void)
+  { selectAll(); }
+
+  /** Move to top of data
+   */
+  virtual void searchTop(void)
+  { setCursorPosition(0,0,false); }
+  /** Search for next entry
+   * @return True if found, should select the found text.
+   */
+  virtual bool searchNext(toSearchReplace *search);
+  /** Replace entry with new data
+   */
+  virtual void searchReplace(const QString &newData);
+  /** Check if data can be modified by search
+   * @param all If true can replace all, otherwise can replace right now.
+   */
+  virtual bool searchCanReplace(bool all);
+
+  /** Start incremental search mode, or search next if started.
+   */
+  void incrementalSearch(bool forward);
+
+  /** Export data to a map.
+   * @param data A map that can be used to recreate the data of a chart.
+   * @param prefix Prefix to add to the map.
+   */
+  virtual void exportData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Import data
+   * @param data Data to read from a map.
+   * @param prefix Prefix to read data from.
+   */
+  virtual void importData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Find the line and column of an index into the string of the entire editor.
+   * @param index Index to get line and col from.
+   * @param line Will be filled out with the line.
+   * @param col Will be filled out with the col.
+   */
+  void findPosition(int index,int &line,int &col);
+protected:
+  virtual void newLine(void);
+  virtual void dropEvent(QDropEvent *);
+  virtual void timerEvent(QTimerEvent *);
+private slots:
+  void setRedoAvailable(bool avail)
+  { redoEnabled(avail); }
+  void setUndoAvailable(bool avail)
+  { undoEnabled(avail); }
+  void setCopyAvailable(bool)
+  { setEdit(); }
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tomemoeditor_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tomemoeditor_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tomemoeditor_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,177 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tomemoeditor.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tomemoeditor.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOMEMOEDITOR_H
+#define TOMEMOEDITOR_H
+
+#include <qdialog.h>
+
+class QCheckBox;
+class QLabel;
+class QListViewItem;
+class QToolBar;
+class toListView;
+class toMarkedText;
+class toResultContentEditor;
+
+/** Displays an text in a widget which can optionally be modified and saved back.
+ */
+
+class toMemoEditor : public QDialog {
+  Q_OBJECT
+
+  /** Editor of widget
+   */
+  toMarkedText *Editor;
+  /** Row of this field
+   */
+  int Row;
+  /** Column of this field
+   */
+  int Col;
+  QToolBar *Toolbar;
+  QLabel *Label;
+  QCheckBox *Null;
+
+  toListView *listView(void);
+private slots:
+  void openFile(void);
+  void saveFile(void); 
+protected:
+  QToolBar *toolbar()
+  { return Toolbar; }
+  toMarkedText *editor()
+  { return Editor; }
+  QLabel *label()
+  { return Label; }
+public:
+  /** Create this editor. If row and col is specified, editing is posible.
+   * @param parent Parent widget.
+   * @param data Data of editor.
+   * @param row Optional location specifier, pass on in @ref changeData call.
+   * @param col Optional location specifier, pass on in @ref changeData call.
+   * @param sql Use SQL syntax highlighting of widget.
+   * @param modal Display in modal dialog
+   * @param navigation Display navigation buttons
+   */
+  toMemoEditor(QWidget *parent,const QString &data,int row=-1,int col=-1,
+	       bool sql=false,bool modal=false,bool navigation=false);
+
+  /** Get editor text.
+   * @return String of editor.
+   */
+  QString text(void);
+  /** Current row being edited.
+   */
+  int row() const
+  { return Row; }
+  /** Current column being edited.
+   */
+  int column() const
+  { return Col; }
+signals:
+  /** Emitted when data is to be stored back to the creator
+   * @param row Pass on from creation.
+   * @param col Pass on from creation.
+   * @param data New data to save.
+   */
+  void changeData(int row,int col,const QString &data);
+public slots:
+  /** Save changes and close.
+   */
+  virtual void store(void);
+
+  /** Goto first column.
+   */ 
+  virtual void firstColumn();
+  /** Goto next column.
+   */ 
+  virtual void nextColumn();
+  /** Goto previous column.
+   */ 
+  virtual void previousColumn();
+  /** Goto last column.
+   */ 
+  virtual void lastColumn();
+
+  /** Change position in whatever it is your displaying.
+   */ 
+  virtual void changePosition(int row,int cols);
+  /** Change value of editor.
+   */
+  virtual void setText(const QString &);
+private slots:
+  void changeCurrent(QListViewItem *item);
+  virtual void null(bool);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tonoblockquery_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tonoblockquery_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tonoblockquery_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,211 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tonoblockquery.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tonoblockquery.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TONOBLOCKQUERY_H
+#define TONOBLOCKQUERY_H
+
+#include "toconnection.h"
+#include "tothread.h"
+
+#include <time.h>
+
+class toResultStats;
+
+/** This is class to be able to run a query in the background without
+ * blocking until a response is available from OCI.
+ */
+
+class toNoBlockQuery {
+private:
+  /** A task to implement running the query.
+   */
+  class queryTask : public toTask {
+    toNoBlockQuery &Parent;
+  public:
+    queryTask(toNoBlockQuery &parent)
+      : Parent(parent)
+    { }
+    virtual void run(void);
+  };
+  friend class queryTask;
+
+  /** This semaphore indicates wether the query is still running.
+   */
+  toSemaphore Running;
+  /** This semaphore indicates wether the child thread should
+   * continue reading values.
+   */
+  toSemaphore Continue;
+  /** Lock for all this stuff
+   */
+  toLock Lock;
+  /** Current location that values are being read.
+   */
+  toQList::iterator CurrentValue;
+  /** Values read by the task. This can be changed without holding @ref Lock.
+   */
+  toQList ReadingValues;
+  /** Values ready to be read by client.
+   */
+  toQList Values;
+  /** Indicator if at end of query.
+   */
+  bool EOQ;
+  /** Indicator if to quit reading from query.
+   */
+  bool Quit;
+  /** SQL to execute.
+   */
+  QString SQL;
+  /** Error string if error occurs.
+   */
+  toConnection::exception Error;
+  /** Number of rows processed.
+   */
+  int Processed;
+  /** Parameters to pass to query before execution.
+   */
+  toQList Param;
+  /** Statistics to be used if any.
+   */
+  toResultStats *Statistics;
+  /** Description of result
+   */
+  toQDescList Description;
+  /** When query is executed
+   */
+  time_t Started;
+  /** Query used to run query
+   */
+  toQuery *Query;
+  /** Throw error if any.
+   */
+  void checkError();
+  /** Stop reading query
+   */
+  void stop();
+public:
+  /** Create a new query.
+   * @param conn Connection to run on.
+   * @param sql SQL to execute.
+   * @param param Parameters to pass to query.
+   * @param statistics Optional statistics widget to update with values from query.
+   */
+  toNoBlockQuery(toConnection &conn,
+		 const QString &sql,
+		 const toQList &param,
+		 toResultStats *statistics=NULL);
+  /** Create a new query.
+   * @param conn Connection to run on.
+   * @param mode Query mode to execute query in.
+   * @param sql SQL to execute.
+   * @param param Parameters to pass to query.
+   * @param statistics Optional statistics widget to update with values from query.
+   */
+  toNoBlockQuery(toConnection &conn,
+		 toQuery::queryMode mode,
+		 const QString &sql,
+		 const toQList &param,
+		 toResultStats *statistics=NULL);
+  virtual ~toNoBlockQuery();
+
+  /** Poll if any result is available.
+   * @return True if at least one row is available.
+   */
+  bool poll(void);
+
+  /** Get description of columns.
+   * @return Description of columns list. Don't modify this list.
+   */
+  toQDescList &describe(void);
+
+  /** Read the next value from the query.
+   * @return The next available value.
+   */
+  toQValue readValue(void);
+  /** Read the next value from the query. Don't send NULL as string.
+   * @return The next available value.
+   */
+  toQValue readValueNull(void);
+
+  /** Get the number of rows processed.
+   * @return Number of rows processed.
+   */
+  int rowsProcessed(void);
+
+  /** Check if at end of query.
+   * @return True if query is done.
+   */
+  bool eof(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toparamget_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toparamget_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toparamget_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,145 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toparamget.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toparamget.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOPARAMGET_H
+#define TOPARAMGET_H
+
+#include "toconnection.h"
+#include "tohelp.h"
+
+#include <list>
+#include <map>
+
+#include <qdialog.h>
+#include <qpushbutton.h>
+
+class QComboBox;
+class QGrid;
+class QScrollView;
+
+class toParamGetButton : public QPushButton {
+  Q_OBJECT
+  int Row;
+public:
+  toParamGetButton(int row,QWidget *parent=0,const char *name=0)
+    : QPushButton(parent,name),Row(row)
+  { connect(this,SIGNAL(clicked()),this,SLOT(internalClicked())); }
+private slots:
+  void internalClicked(void)
+  { emit clicked(Row); }
+signals:
+  void clicked(int);
+};
+
+/** A help class to parse SQL for input/output bindings and if available also pop up a 
+ * dialog and ask for values. Also maintains an internal cache of old values.
+ */
+
+class toParamGet : public QDialog, public toHelpContext {
+  Q_OBJECT
+  /** Default values cache
+   */
+  static std::map<QString,std::list<QString> > DefaultCache;
+  /** Specified values cache
+   */
+  static std::map<QString,std::list<QString> > Cache;
+
+  QScrollView *View;
+  QGrid *Container;
+
+  std::list<QComboBox *> Value;
+  toParamGet(QWidget *parent=0,const char *name=0);
+protected:
+  virtual void resizeEvent(QResizeEvent *e);
+public:
+  /** Get parameters for specified SQL string.
+   * @param conn Connection to get binds for.
+   * @param parent Parent widget if dialog is needed.
+   * @param str SQL to parse for bindings. Observe that this string can be changed to further
+   *            declare the binds.
+   * @param interactive If not interactive simply rewrite the query and pass on the defaults.
+   * @return Returns a list of values to feed into the query.
+   */
+  static toQList getParam(toConnection &conn,QWidget *parent,QString &str,bool interactive=true);
+  /** Specify a default value for the cache. This can not overwrite a manually
+   * specified value by the user.
+   * @param conn Connection to get binds for.
+   * @param name Name of the bind variable.
+   * @param val Value of the bind variable.
+   */
+  static void setDefault(toConnection &conn,const QString &name,const QString &val);
+private slots:
+
+  virtual void showMemo(int row);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/topiechart_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/topiechart_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/topiechart_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,244 @@
+<HTML>
+<HEAD>
+<TITLE>Source: topiechart.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: topiechart.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOPIECHART_H
+#define TOPIECHART_H
+
+#include <list>
+#include <qwidget.h>
+
+class QPopupMenu;
+class toLineChart;
+class toPieTip;
+
+/** A widget that displays a piechart.
+ */
+
+class toPieChart : public QWidget {
+  Q_OBJECT
+
+  std::list<double> Values;
+  std::list<QString> Labels;
+  QString Postfix;
+  bool Legend;
+  bool DisplayPercent;
+  QString Title;
+  QPopupMenu *Menu;
+
+  QRect ChartRect;
+  std::list<int> Angels;
+
+  toPieTip* AllTip;
+
+protected:
+  virtual void mouseDoubleClickEvent(QMouseEvent *e);
+  virtual void mousePressEvent(QMouseEvent *e);
+public:
+  /** Create a new piechart.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toPieChart(QWidget *parent=NULL,const char *name=NULL,WFlags f=0);
+
+  virtual ~toPieChart();
+
+  /** Create a copy of a piechart.
+   * @param pie Pie chart to copy.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toPieChart(toPieChart *pie,QWidget *parent=NULL,const char *name=NULL,WFlags f=0);
+
+  /** Set the postfix text to append the current values when they are displayed in the
+   * pie.
+   * @param post Postfix string, no space will be added after the value before the string
+   *             so if you want the space you need to specify it first in this string.
+   */
+  void setPostfix(const QString &post)
+  { Postfix=post; update(); }
+  /** Get the postfix string.
+   * @return Current postfix string.
+   */
+  const QString &postfix(void) const
+  { return Postfix; }
+
+  /** Set title of the chart. Set to empty string to not display title.
+   * @param title Title of chart.
+   */
+  void setTitle(const QString &title=QString::null)
+  { Title=title; update(); }
+  /** Get title of chart.
+   * @return Title of chart.
+   */
+  const QString &title(void)
+  { return Title; }
+
+  /** Display piecharts in percent instead of actual values
+   * @param pct Wether or not to display percent only.
+   */
+  void setDisplayPercent(bool pct)
+  { DisplayPercent=pct; update(); }
+  /** Check if only percent is displayed
+   * @return True if only percent is displayed.
+   */
+  bool displayPercent(void) const
+  { return DisplayPercent; }
+
+  /** Specify if legend should be displayed to the right of the graph, default is on.
+   * @param on Whether to display graph or not.
+   */
+  void showLegend(bool on)
+  { Legend=on; update(); }
+  /** Check if legend is displayed or not.
+   * @return If legend is displayed or not.
+   */
+  bool legend(void) const
+  { return Legend; }
+
+  /** Set value list of piechart.
+   * @param values List of values to display.
+   * @param labels List of labels, if label is empty it will not appear in legend.
+   */
+  void setValues(std::list<double> &values,std::list<QString> &labels);
+  /** Add a value to the piechart.
+   * @param value New value to add.
+   * @param label Label of this new value.
+   */
+  void addValue(double value,const QString &label)
+  { Values.insert(Values.end(),value); Labels.insert(Labels.end(),label); update(); }
+  /** Get list of values.
+   * @return Values in piechart.
+   */
+  std::list<double> &values(void)
+  { return Values; }
+  /** Get labels of piechart.
+   * @return List of labels.
+   */
+  std::list<QString> &labels(void)
+  { return Labels; }
+  /** Find the label if any of a point in the chart.
+   */
+  QString findLabel(QPoint p);
+  /** Get rectangle that the chart is contained in.
+   */
+  QRect chartRectangle()
+  { return ChartRect; }
+signals:
+  void newValues(std::list<double> &values,std::list<QString> &labels);
+public slots:
+  /** Print the chart
+   */
+  void editPrint(void);
+  /** Open in new window
+   */
+  void openCopy(void);
+protected:
+  /** Paint chart in a given rectangle.
+   */
+  virtual void paintChart(QPainter *p,QRect rect);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintEvent(QPaintEvent *e);
+};
+
+/** This class can be used to make a line chart (Or bar chart) follow the values in a piechart.
+ * After it is constructed it will destroy itself if any of the two involved classes are deleted.
+ * The only available option is wether to use flow (Differences since last time) or not when
+ * updating the linechart. Requires that each valueset has a unique label to work.
+ */
+
+class toPieConnector : public QObject {
+  Q_OBJECT
+
+  toPieChart *PieChart;
+  toLineChart *LineChart;
+
+  bool Flow;
+  time_t LastStamp;
+  std::list<double> LastValues;
+public:
+  toPieConnector(toPieChart *pieChart,toLineChart *lineChart);
+  /** Set flow status.
+   */
+  void setFlow(bool flow)
+  { Flow=flow; }
+  /** Check flow status.
+   */
+  bool flow(void) const
+  { return Flow; }
+private slots:
+  void newValues(std::list<double> &values,std::list<QString> &labels); 
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toqvalue_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toqvalue_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toqvalue_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,197 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toqvalue.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toqvalue.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOQVALUE_H
+#define TOQVALUE_H
+
+#include <list>
+
+#include <qstring.h>
+
+/** This function is used to represent values that are passed to and from queries
+ */
+class toQValue {
+  enum queryType {
+    intType,
+    doubleType,
+    stringType,
+    binaryType,
+    nullType
+  } Type;
+
+  union queryValue {
+    int Int;
+    double Double;
+    QString *String;
+    QByteArray *Array;
+  } Value;
+public:
+  /** Create null value.
+   */
+  toQValue(void);
+  /** Create integer value.
+   * @param i Value.
+   */
+  toQValue(int i);
+  /** Create string value.
+   * @param str Value.
+   */
+  toQValue(const QString &str);
+  /** Create double value.
+   * @param d Value.
+   */
+  toQValue(double d);
+  /** Destruct query.
+   */
+  ~toQValue();
+    
+  /** Create a copy of a value.
+   */
+  toQValue(const toQValue &copy);
+  /** Assign this value from another value.
+   */
+  const toQValue &operator = (const toQValue &copy);
+
+  /** Check a value for equality. Requires same type and same value. NULL is equal to other NULL values.
+   */
+  bool operator == (const toQValue &) const;
+
+  /** Check if this is an int value.
+   */
+  bool isInt(void) const;
+  /** Check if this is a double value.
+   */
+  bool isDouble(void) const;
+  /** Check if this is a string value.
+   */
+  bool isString(void) const;
+  /** Check if this value is null.
+   */
+  bool isNull(void) const;
+  /** Check if this value is binary.
+   */
+  bool isBinary(void) const;
+
+  /** Get utf8 format of this value.
+   */
+  QCString utf8(void) const;
+  /** Get integer representation of this value.
+   */
+  int toInt(void) const;
+  /** Get double representation of this value.
+   */
+  double toDouble(void) const;
+
+  /** Get binary representation of value. Can only be called when the data is actually binary.
+   */
+  const QByteArray &toByteArray(void) const;
+
+  /** Convert value to a string. If binary convert to hex.
+   */
+  operator QString() const;
+
+  /** Convert value to a string. If binary convert to hex.
+   */
+  QString toString() const
+  { return QString(*this); }
+
+  /** Set numberformat.
+   * @param format 0 = Default, 1 = Scientific, 2 = Fixed Decimals
+   * @param decimals Number on decimals for fixed decimals.
+   */
+  static void setNumberFormat(int format,int decimals);
+  /** Format a number according to current settings.
+   */
+  static QString formatNumber(double number);
+  /** Get number format.
+   * @return Format 0 = Default, 1 = Scientific, 2 = Fixed Decimals
+   */
+  static int numberFormat(void);
+  /** Get decimals if fixed decimals.
+   */
+  static int numberDecimals(void);
+  /** Create a binary value
+   */
+  static toQValue createBinary(const QByteArray &arr);
+  /** Create a binary value from it's hex representation.
+   */
+  static toQValue createFromHex(const QString &hex);
+  /** Create a binary value from it's hex representation.
+   */
+  static toQValue createFromHex(const QCString &hex);
+};
+
+/** A short representation of list<toQuery::queryValue>
+ */
+typedef std::list<toQValue> toQList;
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toreport_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toreport_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toreport_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,87 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toreport.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toreport.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOREPORT_H
+#define TOREPORT_H
+
+#include <list>
+
+#include <qstring.h>
+
+/** Generate an HTML based report on a description of database objects from @ref toExtract.
+ * @param conn Connection description list was generated from.
+ * @param desc Description list to create report on.
+ * @return An HTML formatted report on the contents of @ref desc.
+ */
+QString toGenerateReport(toConnection &conn,std::list<QString> &desc);
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresult_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresult_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresult_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,246 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresult.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresult.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULT_H
+#define TORESULT_H
+
+#include "toqvalue.h"
+#include "tosql.h"
+
+#include <list>
+
+#include <qobject.h>
+
+class QTabWidget;
+class toConnection;
+class toResult;
+class toTimer;
+
+/** Used for getting slots into toResult.
+ * @internal
+ */
+
+class toResultObject : public QObject {
+  Q_OBJECT
+
+  toResult *Result;
+public:
+  toResultObject(toResult *result)
+    : Result(result)
+  { }
+public slots:
+  /** Called when connection is changed. Be sure to call the parent if you reimplement this.
+   */
+  virtual void connectionChanged(void);
+  /** Called when timer times out
+   */
+  virtual void setup(void); 
+};
+
+/** Abstract baseclass of widgets that can perform queries. Usefull because you can execute
+ * the query without knowing how it's UI is presented.
+ */
+
+class toResult {
+  toResultObject Slots;
+  bool Handled;
+  QTabWidget *Tabs;
+
+  QWidget *TabWidget;
+
+  QString SQL;
+  bool ForceRefresh;
+  bool QueryReady;
+  toQList Params;
+  bool FromSQL;
+  QString Name;
+protected:
+  /** Set parameters of last query.
+   */
+  void setParams(const toQList &par)
+  { Params=par; QueryReady=true; }
+  /** Set SQL and parameters and return false if query shouldn't be reexecuted. It is
+   * important that all descendants call this function in the beginning of the implementation
+   * of the query function to determine if the query should be reexecuted or not.
+   */
+  bool setSQLParams(const QString &sql,const toQList &par);
+public:
+  /** Get the current connection from the closest tool.
+   * @return Reference to connection.
+   */
+  toConnection &connection(void);
+  /** Get the timer associated with the closest tool.
+   * @return Pointer to tool timer.
+   */
+  toTimer *timer(void);
+
+  toResult(void);
+  virtual ~toResult()
+  { }
+
+  /** Erase last parameters
+   */
+  virtual void clearParams(void)
+  { Params.clear(); QueryReady=false; }
+  /** Re execute last query
+   */
+  virtual void refresh(void);
+  /** Perform a query.
+   * @param sql Execute an SQL statement.
+   * @param params Parameters needed as input to execute statement.
+   */
+  virtual void query(const QString &sql,const toQList &params) = 0;
+  /** Reexecute with changed parameters.
+   * @param Param1 First parameter.
+   */
+  virtual void changeParams(const QString &Param1);
+  /** Reexecute with changed parameters.
+   * @param Param1 First parameter.
+   * @param Param1 Second parameter.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2);
+  /** Reexecute with changed parameters.
+   * @param Param1 First parameter.
+   * @param Param2 Second parameter.
+   * @param Param3 Third parameter.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3);
+  /** Reimplemented for internal reasons.
+   */
+  virtual bool canHandle(toConnection &)
+  { return false; }
+  /** Get last parameters used.
+   * @return Don't modify the list returned.
+   */
+  toQList &params(void)
+  { return Params; }
+  /** Check if this result is handled by the current connection
+   */
+  bool handled(void)
+  { return Handled; }
+  /** Indicate that this result can not be handled even though indicated otherwise
+   */
+  void setHandle(bool);
+  /** Indicate what tabbed widget to disable page if not immediate parent if this
+   * result is not handled.
+   */
+  void setTabWidget(QTabWidget *tab)
+  { Tabs=tab; }
+
+  /** Set the SQL statement of this list
+   * @param sql String containing statement.
+   */
+  void setSQL(const QString &sql)
+  { SQL=sql; }
+  /** Set the SQL statement of this list. This will also affect @ref Name.
+   * @param sql SQL containing statement.
+   */
+  void setSQL(const toSQL &sql);
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const QString &sql);
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql);
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql,toQList &par);
+  /** Get SQL to execute
+   */
+  QString sql(void)
+  { return SQL; }
+
+  /** Get SQL name of list.
+   */
+  virtual QString sqlName(void)
+  { return Name; }
+  /** Set SQL name of list.
+   */
+  virtual void setSQLName(const QString &name)
+  { Name=name; }
+
+  friend class toResultObject;
+protected:
+  /** Called when connection is changed. Be sure to call the parent if you reimplement this.
+   */
+  virtual void connectionChanged(void);
+private:
+  void changeHandle(void); 
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultbar_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultbar_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultbar_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,218 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultbar.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultbar.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTBAR_H
+#define TORESULTBAR_H
+
+#include "tobackground.h"
+#include "tobarchart.h"
+#include "toresult.h"
+
+#include <time.h>
+
+#include <list>
+
+class toNoBlockQuery;
+class toSQL;
+
+/** Display the result of a query in a piechart. The first column of the query should
+ * contain the x value and the rest of the columns should be values of the diagram. The
+ * legend is the column name. Connects to the tool timer for updates automatically.
+ */
+
+class toResultBar : public toBarChart, public toResult {
+  Q_OBJECT
+  /** Display flow in change per second instead of actual values.
+   */
+  bool Flow;
+  bool Started;
+  /** Timestamp of last fetch.
+   */
+  time_t LastStamp;
+  /** Last read values.
+   */
+  std::list<double> LastValues;
+  bool First;
+  toNoBlockQuery *Query;
+  toBackground Poll;
+  unsigned int Columns;
+  void query(const QString &sql,const toQList &param,bool first);
+public:
+  /** Create widget.
+   * @param parent Parent of list.
+   * @param name Name of widget.
+   */
+  toResultBar(QWidget *parent,const char *name=NULL);
+
+  /** Destroy chart
+   */
+  ~toResultBar();
+
+  /** Stop automatic updating from tool timer.
+   */
+  void stop();
+  /** Start automatic updating from tool timer.
+   */
+  void start();
+
+  /** Display actual values or flow/s.
+   * @param on Display flow or absolute values.
+   */
+  void setFlow(bool on)
+  { Flow=on; }
+  /** Return if flow is displayed.
+   * @return If flow is used.
+   */
+  bool flow(void)
+  { return Flow; }
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param)
+  { query(sql,param,true); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void clear(void)
+  { LastStamp=0; LastValues.clear(); toBarChart::clear(); }
+  /** Transform valueset. Make it possible to perform more complex transformation.
+   * called directly before adding the valueset to the chart. After flow transformation.
+   * Default is passthrough.
+   * @param input The untransformed valueset.
+   * @return The valueset actually added to the chart.
+   */
+  virtual std::list<double> transform(std::list<double> &input);
+  /** Handle any connection
+   */
+  virtual bool canHandle(toConnection &)
+  { return true; }
+
+  // Why are these needed?
+#if 1
+  /** Set the SQL statement of this list
+   * @param sql String containing statement.
+   */
+  void setSQL(const QString &sql)
+  { toResult::setSQL(sql); }
+  /** Set the SQL statement of this list. This will also affect @ref Name.
+   * @param sql SQL containing statement.
+   */
+  void setSQL(const toSQL &sql)
+  { toResult::setSQL(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const QString &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql,toQList &par)
+  { toResult::query(sql,par); }
+#endif
+public slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void refresh(void)
+  { query(sql(),params(),false); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1)
+  { toResult::changeParams(Param1); }
+  /** Reimplemented For internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toResult::changeParams(Param1,Param2); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3)
+  { toResult::changeParams(Param1,Param2,Param3); }
+protected slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void connectionChanged(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void addMenues(QPopupMenu *);
+private slots:
+  void poll(void);
+  void editSQL(void); 
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultcols_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultcols_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultcols_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,234 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultcols.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultcols.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTCOLS_H
+#define TORESULTCOLS_H
+
+#include "toconnection.h"
+#include "toresultview.h"
+#include "toresultitem.h"
+
+#include <qvbox.h>
+#include <qlineedit.h>
+
+class QCheckBox;
+class QLabel;
+class toResultColsItem;
+class toResultLong;
+
+/** This widget is used for single record view in the content editor. Only for internal use.
+ * @internal
+ */
+class toResultColsComment : public QLineEdit {
+  Q_OBJECT
+
+  bool Changed;
+  bool Table;
+  QString Name;
+  QString *Cached;
+private:
+  void saveUnchanged();
+protected:
+  virtual void focusOutEvent(QFocusEvent *);
+public:
+  toResultColsComment(QWidget *parent);
+  void setComment(bool table,const QString &name,const QString &comment);
+  void setCachedComment(bool table,const QString &name,QString &comment);
+public slots:
+  void commentChanged();
+};
+
+/** This widget displays information about the returned columns of an object
+ * specified by the first and second parameter in the query. The sql is not
+ * used in the query.
+ */
+
+class toResultCols : public QVBox, public toResult {
+  Q_OBJECT
+
+  class resultCols;
+  class resultColsEdit;
+  friend class resultCols;
+  friend class resultColsEdit;
+  class resultColsEdit : public toResultItem {
+    QString Table;
+    bool Cached;
+  public:
+    resultColsEdit(QWidget *parent)
+      : toResultItem(1,false,parent)
+    { }
+    virtual QWidget *createValue(QWidget *parent);
+    virtual void setValue(QWidget *widget,const QString &title,const QString &value);
+    void describe(toQDescList &desc,const QString &table,bool cached);
+    friend class resultCols;
+  };
+  class resultCols : public toListView {
+    resultColsEdit *Edit;
+    QString Owner;
+    QString Name;
+  public:
+    resultCols(QWidget *parent,const char *name=NULL);
+    void editComment(bool val);
+    void describe(toQDescList &desc);
+    void query(const toConnection::objectName &,bool);
+    void query(const QString &table,const QString &owner,const QString &name);
+    friend class toResultCols;
+  };
+
+  QLabel *Title;
+  QLabel *Comment;
+  toResultColsComment *EditComment;
+  QCheckBox *Edit;
+  resultCols *Columns;
+  toResultLong *MySQLColumns;
+  bool Header;
+
+  virtual void query(const QString &sql,const toQList &param,bool nocache);
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toResultCols(QWidget *parent,const char *name=NULL,WFlags f=0);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param)
+  { query(sql,param,false); }
+  /** Handle any connection by default
+   */
+  virtual bool canHandle(toConnection &)
+  { return true; }
+
+  /** Display header of column view
+   */
+  void displayHeader(bool disp);
+  
+  // Why are these needed?
+#if 1
+  /** Set the SQL statement of this list
+   * @param sql String containing statement.
+   */
+  void setSQL(const QString &sql)
+  { toResult::setSQL(sql); }
+  /** Set the SQL statement of this list. This will also affect @ref Name.
+   * @param sql SQL containing statement.
+   */
+  void setSQL(const toSQL &sql)
+  { toResult::setSQL(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const QString &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql,toQList &par)
+  { toResult::query(sql,par); }
+#endif
+
+  friend class toResultColsItem;
+public slots:
+  /** Erase last parameters
+   */
+  virtual void clearParams(void)
+  { toResult::clearParams(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void refresh(void)
+  { query(sql(),params(),true); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1)
+  { toResult::changeParams(Param1); }
+  /** Reimplemented For internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toResult::changeParams(Param1,Param2); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3)
+  { toResult::changeParams(Param1,Param2,Param3); }
+private slots:
+  void editComment(bool val);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultcombo_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultcombo_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultcombo_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,191 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultcombo.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultcombo.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTCOMBO_H
+#define TORESULTCOMBO_H
+
+#include "tobackground.h"
+#include "toresult.h"
+
+#include <qcombobox.h>
+#include <qstringlist.h>
+
+class toNoBlockQuery;
+class toSQL;
+
+/** This widget displays the result of a query where each field is added as an item
+ * to a combobox.
+ */
+
+class toResultCombo : public QComboBox, public toResult {
+  Q_OBJECT
+
+  toNoBlockQuery *Query;
+  toBackground Poll;
+
+  QString Selected;
+  QStringList Additional;
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultCombo(QWidget *parent,const char *name=NULL);
+  /** Destruct object
+   */
+  ~toResultCombo();
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+
+  /** Clear list of additional items.
+   */
+  virtual void clearAdditional()
+  { Additional.clear(); }
+  /** Item to add before the query is read. Can be called several times.
+   */
+  virtual void additionalItem(const QString &item)
+  { Additional<<item; }
+
+  /** Handle any connection by default
+   */
+  virtual bool canHandle(toConnection &)
+  { return true; }
+
+  /** Set selected. When the result is read and this value is encountered that item is selected.
+   */
+  void setSelected(const QString &sel)
+  { Selected=sel; }
+  /** Get selected item value. Might not be same as currentText since that item might not have been read yet.
+   */
+  QString selected(void)
+  { return Selected; }
+
+  // Why are these needed?
+#if 1
+  /** Set the SQL statement of this list
+   * @param sql String containing statement.
+   */
+  void setSQL(const QString &sql)
+  { toResult::setSQL(sql); }
+  /** Set the SQL statement of this list. This will also affect @ref Name.
+   * @param sql SQL containing statement.
+   */
+  void setSQL(const toSQL &sql)
+  { toResult::setSQL(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const QString &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql,toQList &par)
+  { toResult::query(sql,par); }
+#endif
+signals:
+  /** Done reading the query.
+   */
+  void done(void);
+public slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void refresh(void)
+  { toResult::refresh(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1)
+  { toResult::changeParams(Param1); }
+  /** Reimplemented For internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toResult::changeParams(Param1,Param2); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3)
+  { toResult::changeParams(Param1,Param2,Param3); }
+private slots:
+  void poll(void);
+  void changeSelected(void); 
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultconstraint_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultconstraint_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultconstraint_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,124 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultconstraint.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultconstraint.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTCONSTRAINT_H
+#define TORESULTCONSTRAINT_H
+
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+/** This widget displays information about the constraints of an object
+ * specified by the first and second parameter in the query. The sql is not
+ * used in the query.
+ */
+
+class toResultConstraint : public toResultView {
+  Q_OBJECT
+
+  /** The last table queried.
+   */
+  QString LastTable;
+  /** Get columns for a constraints.
+   * @param conOwner Owner of constraint.
+   * @param conName Name of constraint.
+   * @return String with column names separated by a ',' character.
+   */
+  QString constraintCols(const QString &conOwner,const QString &conName);
+
+  QString Owner;
+  QString TableName;
+
+  toNoBlockQuery *Query;
+  toBackground Poll;
+  void addConstraint(const QString &name,const QString &definition,const QString &status);
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultConstraint(QWidget *parent,const char *name=NULL);
+  /** Destroy object
+   */
+  ~toResultConstraint();
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+  /** Support Oracle
+   */
+  virtual bool canHandle(toConnection &conn);
+private slots:
+  void poll(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultcontent_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultcontent_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultcontent_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,530 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultcontent.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultcontent.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTCONTENT_H
+#define TORESULTCONTENT_H
+
+#include "tobackground.h"
+#include "toconnection.h"
+#include "toeditwidget.h"
+#include "tomemoeditor.h"
+#include "toresult.h"
+
+#include <list>
+
+#include <qtable.h>
+#include <qvbox.h>
+
+class QChecBox;
+class QCheckBox;
+class QGrid;
+class QLineEdit;
+class toNoBlockQuery;
+class toResultContent;
+class toSearchReplace;
+
+/** Implement memo editor in result content editor. Only for internal use.
+ * @internal
+ */
+
+class toResultContentMemo : public toMemoEditor {
+  Q_OBJECT
+
+  toResultContentEditor *contentEditor();
+public:
+  toResultContentMemo(QWidget *parent,const QString &data,int row,int col,
+		      bool sql=false);
+public slots:
+  virtual void firstColumn();
+  virtual void nextColumn();
+  virtual void previousColumn();
+  virtual void lastColumn();
+
+  virtual void changePosition(int row,int cols);
+};
+
+/** This widget is used for single record view in the content editor. Only for internal use.
+ * @internal
+ */
+
+class toResultContentSingle : public QScrollView {
+  Q_OBJECT
+
+  int Row;
+  QGrid *Container;
+  std::list<QCheckBox *> Null;
+  std::list<QLineEdit *> Value;
+public:
+  toResultContentSingle(QWidget *parent);
+
+  void changeSource(QTable *table);
+  void changeRow(QTable *table,int row);
+  void saveRow(QTable *table,int row);
+private slots:
+  virtual void showMemo(int row);
+};
+
+/** This widget allows the user to browse the contents of a table and also edit
+ * the content. The table is specified by the first and second parameter in the query.
+ * The sql is not used in the query. Only for internal use.
+ */
+
+class toResultContentEditor : public QTable,public toEditWidget {
+  Q_OBJECT
+
+  /** Single record form.
+   */
+  toResultContentSingle *SingleEdit;
+  /** Owner of table.
+   */
+  QString Owner;
+  /** Tablename.
+   */
+  QString Table;
+  /** The SQL used to read the data.
+   */
+  QString SQL;
+  /** Original values of rows currently being edited.
+   */
+  std::list<QString> OrigValues;
+  /** Original values of rows currently being edited.
+   */
+  bool *BinaryColumns;
+  /** Stream to read data from.
+   */
+  toNoBlockQuery *Query;
+
+  toQDescList Description;
+  toBackground Poll;
+  int MaxNumber;
+  int SkipNumber;
+  bool GotoEnd;
+  /** Number of rows read from stream.
+   */
+  int Row;
+  /** Current row of editing.
+   */
+  int CurrentRow;
+  /** Current row of editing.
+   */
+  int NewRecordRow;
+  /** Used to detect drag.
+   */
+  QPoint LastMove;
+  
+  /** Popup menu if available.
+   */
+  QPopupMenu *Menu;
+  /** Column of item selected when popup menu displayed.
+   */
+  int MenuColumn;
+  /** Row of item selected when popup menu displayed.
+   */
+  int MenuRow;
+  
+  /** Current sorting row.
+   */
+  int SortRow;
+  /** Indicate if sorting ascending or descending.
+   */
+  bool SortRowAsc;
+  
+  /** Use filter for all tables.
+   */
+  bool AllFilter;
+  /** Filter selection criteria
+   */
+  static std::map<QCString,QString> Criteria;
+  /** Filter retrieve order
+   */
+  static std::map<QCString,QString> Order;
+  /** Current filter name in map
+   */
+  QString FilterName;
+  /** Never use returning.
+   */
+  bool NoUseReturning;
+
+  /** Throw an exception about wrong usage.
+   */
+  void wrongUsage(void);
+  
+  void saveRow(int);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void drawContents(QPainter * p,int cx,int cy,int cw,int ch);
+  /** Reimplemented for internal reasons.
+   */
+  virtual QWidget *beginEdit(int row,int col,bool replace);
+  virtual void endEdit(int row,int col,bool accept,bool replace);
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintCell(QPainter *p,int row,int col,const QRect &cr,bool selected);
+  /** Reimplemented for internal reasons.
+  */
+  virtual bool eventFilter(QObject *o,QEvent *e);
+  /** Reimplemented for internal reasons.
+  */
+  virtual void keyPressEvent(QKeyEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void activateNextCell();
+  
+  /** Reimplemented for internal reasons.
+   */
+  virtual void dragEnterEvent(QDragEnterEvent *event);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void dropEvent(QDropEvent *event);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void contentsMousePressEvent(QMouseEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void contentsMouseReleaseEvent(QMouseEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void contentsMouseMoveEvent (QMouseEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void focusInEvent (QFocusEvent *e);
+  /** A setCurrentCell() replacement; makes sure that we have focus.
+   */
+  virtual void setCurrentCellFocus(int row, int col);
+
+  int MaxColDisp;
+
+  QString table(void);
+
+  toConnection &connection();
+  QLineEdit *CurrentEditor;
+  int SearchStart;
+  int SearchEnd;
+
+  class contentItem : public QTableItem {
+  public:
+    contentItem(QTable *table,const QString &text);
+    virtual QString key(void) const;
+  };
+
+  toListView *copySelection(bool);
+public:
+  /** Indicate that editor should never use returning clauses even if this is oracle.
+   */
+  void useNoReturning(bool use)
+  { NoUseReturning=use; }
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultContentEditor(QWidget *parent,const char *name=NULL);
+  /** Destruct object
+   */
+  ~toResultContentEditor();
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &,const toQList &);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toQList pars; pars.insert(pars.end(),Param1); pars.insert(pars.end(),Param2); query(QString::null,pars); }
+  
+  /** Print this editor.
+   */
+  virtual void editPrint(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual bool editSave(bool ask);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editReadAll(void);
+  /** Select all contents. Default NOP.
+   */
+  virtual void editSelectAll(void);
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void setText(int row,int col,const QString &text);
+
+  /** Set a new filter setting.
+   * @param all Apply filter to all tables, otherwise only for this table.
+   * @param criteria Criteria to filter on.
+   * @param order Order to read data on.
+   */
+  void changeFilter(bool all,const QString &criteria,const QString &order);
+
+  /** Get information about if filter affect all tables.
+   */
+  bool allFilter()
+  { return AllFilter; }
+
+  friend class contentItem;
+  friend class toResultContent;
+
+  /** Export data to a map.
+   * @param data A map that can be used to recreate the data of a chart.
+   * @param prefix Prefix to add to the map.
+   */
+  virtual void exportData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Import data
+   * @param data Data to read from a map.
+   * @param prefix Prefix to read data from.
+   */
+  virtual void importData(std::map<QCString,QString> &data,const QCString &prefix);
+public slots:
+  /** Erase last parameters
+   */
+  virtual void clearParams(void)
+  { Owner=Table=QString::null; }
+  /** Change sorting column
+   * @param col Column selected to change as sorting.
+   */
+  virtual void changeSort(int col); 
+  /** Current cell changed.
+   * @param row New row.
+   * @param col New column.
+   */
+  void changePosition(int row,int col);
+  
+  /** Display popup menu
+   * @param p Point to display popup at.
+   */
+  virtual void displayMenu(const QPoint &p);
+  /** Display editable memo viewer at current position.
+   */
+  virtual void displayMemo(void);
+  /** Save unsaved changes in the editor
+   */
+  virtual void saveUnsaved(void);
+  /** Delete the current row from the table.
+   */
+  virtual void deleteCurrent(void);
+  /** Add a new record to the table.
+   */
+  virtual void addRecord(void);
+  /** Duplicate a new record for editing.
+   */
+  virtual void duplicateRecord(void);
+  /** Discard the changes made to the table.
+   */
+  virtual void cancelEdit(void);
+  /** Goto the last record in the table.
+   */
+  virtual void gotoLastRecord(void);
+  /** Goto the first record in the table.
+   */
+  virtual void gotoFirstRecord(void);
+  /** Goto the previous record in the table.
+   */
+  virtual void gotoPreviousRecord(void);
+  /** Goto the next record in the table.
+   */
+  virtual void gotoNextRecord(void);
+  /** Display single record form.
+   */
+  virtual void singleRecordForm(bool display);
+
+  /** Move to top of data
+   */
+  virtual void searchTop(void)
+  { setCurrentCell(0,0); }
+  /** Search for next entry
+   * @return True if found, should select the found text.
+   */
+  virtual bool searchNext(toSearchReplace *search);
+  /** Replace entry with new data
+   */
+  virtual void searchReplace(const QString &newData);
+  /** Check if data can be modified by search
+   * @param all If true can replace all, otherwise can replace right now.
+   */
+  virtual bool searchCanReplace(bool all);
+signals:
+  /** Emitted to indicate wether a filter is used.
+   */
+  void filterEnabled(bool);
+  //* Emitted when changes were saved.
+  void changesSaved();
+protected slots:
+  /** Callback from popup menu.
+   * @param cmd Command ID.
+   */
+  virtual void menuCallback(int cmd);
+  /** Change data at specified position.
+   * @param row Row to change.
+   * @param col Column to change.
+   * @param data New contents of data.
+   */ 
+  virtual void changeData(int row,int col,const QString &data); 
+private slots:
+  virtual void poll(void);
+};
+
+/** This widget allows the user to browse the contents of a table and also edit
+ * the content. The table is specified by the first and second parameter in the query.
+ * The sql is not used in the query.
+ */
+
+class toResultContent : public QVBox, public toResult {
+  Q_OBJECT
+
+  toResultContentEditor *Editor;
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultContent(QWidget *parent,const char *name=NULL);
+
+  /** Get content editor table widget
+   * @return Pointer to editor.
+   */
+  toResultContentEditor *editor(void)
+  { return Editor; }
+
+  /** Read all rows from the table.
+   */
+  virtual void editReadAll(void)
+  { Editor->editReadAll(); }
+  /** Print the contents.
+   */
+  virtual void editPrint(void)
+  { Editor->editPrint(); }
+  /** Export contents to file.
+   */
+  virtual void editSave(bool ask)
+  { Editor->editSave(ask); }
+
+  /** Export data to a map.
+   * @param data A map that can be used to recreate the data of a chart.
+   * @param prefix Prefix to add to the map.
+   */
+  virtual void exportData(std::map<QCString,QString> &data,const QCString &prefix)
+  { Editor->exportData(data,prefix); }
+  /** Import data
+   * @param data Data to read from a map.
+   * @param prefix Prefix to read data from.
+   */
+  virtual void importData(std::map<QCString,QString> &data,const QCString &prefix)
+  { Editor->importData(data,prefix); }
+  /** Indicate that editor should never use returning clauses even if this is oracle.
+   */
+  void useNoReturning(bool use)
+  { Editor->useNoReturning(use); }
+private slots:
+  void changeFilter(void);
+  void removeFilter(void);
+signals:
+  //* Emitted when changes were saved.
+  void changesSaved(void);
+public slots:
+  /** Erase last parameters
+   */
+  virtual void clearParams(void)
+  { toResult::clearParams(); Editor->clearParams(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void refresh(void)
+  { toResult::refresh(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param)
+  { if (!setSQLParams(sql,param)) return; Editor->query(sql,param); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1)
+  { toResult::changeParams(Param1); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toResult::changeParams(Param1,Param2); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3)
+  { toResult::changeParams(Param1,Param2,Param3); }
+  /** Save unsaved changes in the editor
+   */
+  virtual void saveUnsaved(void)
+  { Editor->saveUnsaved(); }
+  /** Commit connection
+   * @param conn Connection commit is made on.
+   * @param cmt If commit or rollback
+   */
+  virtual void saveUnsaved(toConnection &conn,bool cmt);
+
+  /** Handle all databases
+   */
+  virtual bool canHandle(toConnection &);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultdepend_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultdepend_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultdepend_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,124 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultdepend.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultdepend.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTDEPEND_H
+#define TORESULTDEPEND_H
+
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+/** This widget displays information about the dependencies of an object
+ * specified by the first and second parameter in the query. The sql is not
+ * used in the query. It will also recurs through all dependencies of the
+ * objects depended on.
+ */
+
+class toResultDepend : public toResultView {
+  Q_OBJECT
+
+  /** Check if an object already exists.
+   * @param owner Owner of object.
+   * @param name Name of object.
+   * @return True if object exists.
+   */
+  bool exists(const QString &owner,const QString &name);
+
+  toNoBlockQuery *Query;
+  toBackground Poll;
+  QListViewItem *Current;
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultDepend(QWidget *parent,const char *name=NULL);
+
+  /** Object destructor.
+   */
+  ~toResultDepend();
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+  /** Reimplemented for internal reasons.
+   */
+  void query(const QString &sql)
+  { toQList p; query(sql,p); }
+  /** Support Oracle
+   */
+  virtual bool canHandle(toConnection &conn);
+public slots:
+  void poll(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultfield_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultfield_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultfield_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,165 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultfield.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultfield.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTFIELD_H
+#define TORESULTFIELD_H
+
+#include "tobackground.h"
+#include "tohighlightedtext.h"
+#include "toresult.h"
+
+class toNoBlockQuery;
+class toSQL;
+
+/** This widget displays the result of a query where each item in the stream
+ * is added as a line in a text editer.
+ */
+
+class toResultField : public toHighlightedText, public toResult {
+  Q_OBJECT
+
+  QString Unapplied;
+  toNoBlockQuery *Query;
+  toBackground Poll;
+
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultField(QWidget *parent,const char *name=NULL);
+  /** Destruct object
+   */
+  ~toResultField();
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+
+  /** Handle any connection by default
+   */
+  virtual bool canHandle(toConnection &)
+  { return true; }
+
+  // Why are these needed?
+#if 1
+  /** Set the SQL statement of this list
+   * @param sql String containing statement.
+   */
+  void setSQL(const QString &sql)
+  { toResult::setSQL(sql); }
+  /** Set the SQL statement of this list. This will also affect @ref Name.
+   * @param sql SQL containing statement.
+   */
+  void setSQL(const toSQL &sql)
+  { toResult::setSQL(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const QString &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql,toQList &par)
+  { toResult::query(sql,par); }
+#endif
+public slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void refresh(void)
+  { toResult::refresh(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1)
+  { toResult::changeParams(Param1); }
+  /** Reimplemented For internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toResult::changeParams(Param1,Param2); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3)
+  { toResult::changeParams(Param1,Param2,Param3); }
+private slots:
+  void poll(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultindexes_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultindexes_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultindexes_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,128 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultindexes.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultindexes.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTINDEXES_H
+#define TORESULTINDEXES_H
+
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+/** This widget displays information about indexes of an object
+ * specified by the first and second parameter in the query. The sql is not
+ * used in the query.
+ */
+
+class toResultIndexes : public toResultView {
+  Q_OBJECT
+
+  /** Get columns of index.
+   * @param conOwner Owner of object.
+   * @param conName Name of index.
+   * @return Columns separated by ','.
+   */
+  QString indexCols(const QString &conOwner,const QString &conName);
+
+  QString Owner;
+  QString TableName;
+
+  enum {
+    Oracle,
+    MySQL,
+    PostgreSQL,
+    SapDB
+  } Type;
+
+  toNoBlockQuery *Query;
+  toBackground Poll;
+  QListViewItem *Last;
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultIndexes(QWidget *parent,const char *name=NULL);
+  /** Destroy object
+   */
+  ~toResultIndexes();
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+  /** Support Oracle & MySQL
+   */
+  virtual bool canHandle(toConnection &conn);
+private slots:
+  void poll(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultitem_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultitem_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultitem_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,262 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultitem.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultitem.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTITEM_H
+#define TORESULTITEM_H
+
+#include "tobackground.h"
+#include "toresult.h"
+
+#include <qscrollview.h>
+#include <qfont.h>
+
+class QGrid;
+class toSQL;
+class toNoBlockQuery;
+
+/** Display the first row of a query with each column with a separate label.
+ * If the label of the item is a single '-' character the data is treated as
+ * a horizontal label (Not bold or sunken), and the label is not printed.
+ */
+
+class toResultItem : public QScrollView, public toResult {
+  Q_OBJECT
+
+  /** Result widget.
+   */
+  QGrid *Result;
+
+  /** Number of created widgets.
+   */
+  int NumWidgets;
+  /** Last widget used.
+   */
+  int WidgetPos;
+  /** List of allocated widgets.
+   */
+  QWidget **Widgets;
+
+  /** If title names are to be made more readable.
+   */
+  bool ReadableColumns;
+  /** If title names are to be displayed.
+   */
+  bool ShowTitle;
+  /** Align widgets to the right.
+   */
+  bool Right;
+  /** Font to display data with.
+   */
+  QFont DataFont;
+
+  toNoBlockQuery *Query;
+  toBackground Poll;
+
+  /** Setup widget.
+   * @param num Number of columns.
+   * @param readable Make columns more readable.
+   */
+  void setup(int num,bool readable);
+protected:
+  /** Start new query, hide all widgets.
+   */
+  void start(void);
+  /** Add a new widget.
+   * @param title Title of this value.
+   * @param value Value.
+   */
+  void addItem(const QString &title,const QString &value);
+  /** Done with adding queries.
+   */
+  void done(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void resizeEvent(QResizeEvent *e);
+public:
+  /** Create widget.
+   * @param num Number of columns to arrange data in.
+   * @param readable Indicate if columns are to be made more readable. This means that the
+   * descriptions are capitalised and '_' are converted to ' '.
+   * @param parent Parent of list.
+   * @param name Name of widget.
+   */
+  toResultItem(int num,bool readable,QWidget *parent,const char *name=NULL);
+  /** Create widget. Readable columns by default.
+   * @param num Number of columns to arrange data in.
+   * @param parent Parent of list.
+   * @param name Name of widget.
+   */
+  toResultItem(int num,QWidget *parent,const char *name=NULL);
+  /** Destroy object
+   */
+  ~toResultItem(void);
+
+  /** Set if titles are to be shown.
+   * @param val If titles are to be shown.
+   */
+  void showTitle(bool val)
+  { ShowTitle=val; }
+  /** Set if labels are to be aligned right.
+   * @param val If labels are to be aligned right.
+   */
+  void alignRight(bool val)
+  { Right=val; }
+  /** Set the font to display data with.
+   */
+  void dataFont(const QFont &val)
+  { DataFont=val; }
+
+  /** Create title widget.
+   * @param parent Parent of widget.
+   * @return Title widget created.
+   */
+  virtual QWidget *createTitle(QWidget *parent);
+  /** Create value widget.
+   * @param parent Parent of widget.
+   * @return Title widget created.
+   */
+  virtual QWidget *createValue(QWidget *parent);
+  /** Set value of title widget.
+   * @param widget Widget to use for title.
+   * @param title The title of the new widget pair.
+   * @param value Vaue of new title widget.
+   */
+  virtual void setTitle(QWidget *widget,const QString &title,const QString &value);
+  /** Set value of value widget.
+   * @param widget Widget to use for value.
+   * @param title The title of the new widget pair.
+   * @param value Vaue of new title widget.
+   */
+  virtual void setValue(QWidget *widget,const QString &title,const QString &value);
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+
+  /** Handle any connection
+   */
+  virtual bool canHandle(toConnection &)
+  { return true; }
+
+  // Why are these needed?
+#if 1
+  /** Set the SQL statement of this list
+   * @param sql String containing statement.
+   */
+  void setSQL(const QString &sql)
+  { toResult::setSQL(sql); }
+  /** Set the SQL statement of this list. This will also affect @ref Name.
+   * @param sql SQL containing statement.
+   */
+  void setSQL(const toSQL &sql)
+  { toResult::setSQL(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const QString &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql,toQList &par)
+  { toResult::query(sql,par); }
+#endif
+public slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void refresh(void)
+  { toResult::refresh(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1)
+  { toResult::changeParams(Param1); }
+  /** Reimplemented For internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toResult::changeParams(Param1,Param2); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3)
+  { toResult::changeParams(Param1,Param2,Param3); }
+private slots:
+  void poll(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultlabel_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultlabel_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultlabel_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,176 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultlabel.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultlabel.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTLABEL_H
+#define TORESULTLABEL_H
+
+#include "tobackground.h"
+#include "toresult.h"
+
+#include <qlabel.h>
+
+class toNoBlockQuery;
+class toSQL;
+
+/** This widget displays the result of a query where each item in the stream
+ * is added to a label separated by an optional string.
+ */
+
+class toResultLabel : public QLabel, public toResult {
+  Q_OBJECT
+
+  toNoBlockQuery *Query;
+  toBackground Poll;
+
+  QString Separator;
+
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultLabel(QWidget *parent,const char *name=NULL);
+  /** Destruct object
+   */
+  ~toResultLabel();
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+
+  /** Handle any connection by default
+   */
+  virtual bool canHandle(toConnection &)
+  { return true; }
+
+  /** Get separator string to use between result.
+   */
+  const QString &separator(void) const
+  { return Separator; }
+  /** Set separator string to use between result.
+   */
+  void setSeparator(const QString &sep)
+  { Separator=sep; }
+
+  // Why are these needed?
+#if 1
+  /** Set the SQL statement of this list
+   * @param sql String containing statement.
+   */
+  void setSQL(const QString &sql)
+  { toResult::setSQL(sql); }
+  /** Set the SQL statement of this list. This will also affect @ref Name.
+   * @param sql SQL containing statement.
+   */
+  void setSQL(const toSQL &sql)
+  { toResult::setSQL(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const QString &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql,toQList &par)
+  { toResult::query(sql,par); }
+#endif
+public slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void refresh(void)
+  { toResult::refresh(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1)
+  { toResult::changeParams(Param1); }
+  /** Reimplemented For internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toResult::changeParams(Param1,Param2); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3)
+  { toResult::changeParams(Param1,Param2,Param3); }
+private slots:
+  void poll(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultline_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultline_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultline_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,217 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultline.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultline.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTLINE_H
+#define TORESULTLINE_H
+
+#include "tobackground.h"
+#include "tolinechart.h"
+#include "toresult.h"
+
+#include <time.h>
+
+#include <list>
+
+class toNoBlockQuery;
+class toSQL;
+
+/** Display the result of a query in a piechart. The first column of the query should
+ * contain the x value and the rest of the columns should be values of the diagram. The
+ * legend is the column name. Connects to the tool timer for updates automatically.
+ */
+
+class toResultLine : public toLineChart, public toResult {
+  Q_OBJECT
+  /** Display flow in change per second instead of actual values.
+   */
+  bool Flow;
+  bool Started;
+  /** Timestamp of last fetch.
+   */
+  time_t LastStamp;
+  /** Last read values.
+   */
+  std::list<double> LastValues;
+  bool First;
+  toNoBlockQuery *Query;
+  toBackground Poll;
+  unsigned int Columns;
+  void query(const QString &sql,const toQList &param,bool first);
+public:
+  /** Create widget.
+   * @param parent Parent of list.
+   * @param name Name of widget.
+   */
+  toResultLine(QWidget *parent,const char *name=NULL);
+  /** Destroy chart
+   */
+  ~toResultLine();
+
+  /** Stop automatic updating from tool timer.
+   */
+  void stop();
+  /** Start automatic updating from tool timer.
+   */
+  void start();
+
+  /** Display actual values or flow/s.
+   * @param on Display flow or absolute values.
+   */
+  void setFlow(bool on)
+  { Flow=on; }
+  /** Return if flow is displayed.
+   * @return If flow is used.
+   */
+  bool flow(void)
+  { return Flow; }
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param)
+  { query(sql,param,true); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void clear(void)
+  { LastStamp=0; LastValues.clear(); toLineChart::clear(); }
+  /** Transform valueset. Make it possible to perform more complex transformation.
+   * called directly before adding the valueset to the chart. After flow transformation.
+   * Default is passthrough.
+   * @param input The untransformed valueset.
+   * @return The valueset actually added to the chart.
+   */
+  virtual std::list<double> transform(std::list<double> &input);
+  /** Handle any connection
+   */
+  virtual bool canHandle(toConnection &)
+  { return true; }
+
+  // Why are these needed?
+#if 1
+  /** Set the SQL statement of this list
+   * @param sql String containing statement.
+   */
+  void setSQL(const QString &sql)
+  { toResult::setSQL(sql); }
+  /** Set the SQL statement of this list. This will also affect @ref Name.
+   * @param sql SQL containing statement.
+   */
+  void setSQL(const toSQL &sql)
+  { toResult::setSQL(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const QString &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql,toQList &par)
+  { toResult::query(sql,par); }
+#endif
+public slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void refresh(void)
+  { query(sql(),params(),false); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1)
+  { toResult::changeParams(Param1); }
+  /** Reimplemented For internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toResult::changeParams(Param1,Param2); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3)
+  { toResult::changeParams(Param1,Param2,Param3); }
+protected slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void connectionChanged(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void addMenues(QPopupMenu *);
+private slots:
+  void poll(void);
+  void editSQL(void); 
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultlong_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultlong_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultlong_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,184 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultlong.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultlong.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTLONG_H
+#define TORESULTLONG_H
+
+#include "tobackground.h"
+#include "toconnection.h"
+#include "toresultview.h"
+
+class QListViewItem;
+class toNoBlockQuery;
+class toResultStats;
+class toResultTip;
+class toresultlong;
+
+/** A widget which contains the result of a query run in the background.
+ */
+class toResultLong : public toResultView {
+  Q_OBJECT
+
+  /** No blocking query object.
+   */
+  toNoBlockQuery *Query;
+  /** Timer to poll for new data.
+   */
+  toBackground Timer;
+  /** Indicator if headers have been parsed yet.
+   */
+  bool HasHeaders;
+  /** Indicator if first row has been read yet.
+   */
+  bool First;
+  /** Widget to store query statistics to.
+   */
+  toResultStats *Statistics;
+  /** Description of query
+   */
+  toQDescList Description;
+  /** Number of rows to fetch when starting. (-1 for all)
+   */
+  int MaxNumber;
+
+  /** The query mode to use for the executed query.
+   */
+  toQuery::queryMode Mode;
+
+  /** Check if at eof.
+   */
+  virtual bool eof(void);
+  /** Clean up when query is done
+   */
+  void cleanup(void);
+public:
+  /** Create widget.
+   * @param readable Indicate if columns are to be made more readable. This means that the
+   * descriptions are capitalised and '_' are converted to ' '.
+   * @param numCol If number column is to be displayed.
+   * @param mode Query mode to use when executing query
+   * @param parent Parent of list.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toResultLong(bool readable,bool numCol,toQuery::queryMode mode,QWidget *parent,const char *name=NULL,WFlags f=0);
+  /** Create widget. The columns are not readable and the number column is displayed.
+   * @param parent Parent of list.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toResultLong(QWidget *parent,const char *name=NULL,WFlags f=0);
+  ~toResultLong();
+
+  /** Set statistics widget.
+   * @param stats Statistics widget.
+   */
+  void setStatistics(toResultStats *stats)
+  { Statistics=stats; }
+
+  /** Check if query is still running.
+   * @return True if query is still running.
+   */
+  bool running(void)
+  { return Query; }
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+  /** Reimplemented for internal reasons.
+   */
+  void query(const QString &sql)
+  { toQList p; query(sql,p); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editReadAll(void);
+signals:
+  /** Emitted when query is finnished.
+   */
+  void done(void);
+  /** Emitted when the first result is available.
+   * @param sql SQL that was run.
+   * @param res String describing result.
+   * @param error Error has occurred.
+   */
+  void firstResult(const QString &sql,const toConnection::exception &res,bool error);
+
+public slots:
+  /** Stop running query.
+   */
+  void stop(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void addItem(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultpie_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultpie_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultpie_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,198 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultpie.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultpie.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTPIE_H
+#define TORESULTPIE_H
+
+#include "tobackground.h"
+#include "topiechart.h"
+#include "toresult.h"
+
+#include <list>
+
+#include <qregexp.h>
+
+class toNoBlockQuery;
+class toSQL;
+
+/** Display the result of a query in a piechart. The first column of the query should
+ * contain the value and the second should contain an optional label.
+ */
+
+class toResultPie : public toPieChart, public toResult {
+  Q_OBJECT
+
+  toNoBlockQuery *Query;
+  std::list<QString> Labels;
+  std::list<double> Values;
+  toBackground Poll;
+  int Columns;
+  bool Started;
+  bool LabelFirst;
+  QRegExp Filter;
+  QRegExp ValueFilter;
+public:
+  /** Create widget.
+   * @param parent Parent of list.
+   * @param name Name of widget.
+   */
+  toResultPie(QWidget *parent,const char *name=NULL);
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+  virtual bool canHandle(toConnection &)
+  { return true; }
+
+  /** Stop automatic updating from tool timer.
+   */
+  void stop();
+  /** Start automatic updating from tool timer.
+   */
+  void start();
+
+  /** Indicate that the first column should be the label.
+   */
+  void setLabelFirst(bool first)
+  { LabelFirst=first; }
+  /** Check label first status.
+   */
+  bool labelFirst(void)
+  { return LabelFirst; }
+  /** Set a filter on which columns to add based on label.
+   * @param filter A regexp which the label must match.
+   * @param valueFilter A regexp which the value must match.
+   */
+  void setFilter(const QRegExp &filter,const QRegExp &valueFilter)
+  { Filter=filter; ValueFilter=valueFilter; }
+  /** Get the current filter.
+   */
+  const QRegExp &filter(void)
+  { return Filter; }
+  /** Get the current value filter.
+   */
+  const QRegExp &valueFilter(void)
+  { return ValueFilter; }
+
+  // Why are these needed?
+#if 1
+  /** Set the SQL statement of this list
+   * @param sql String containing statement.
+   */
+  void setSQL(const QString &sql)
+  { toResult::setSQL(sql); }
+  /** Set the SQL statement of this list. This will also affect @ref Name.
+   * @param sql SQL containing statement.
+   */
+  void setSQL(const toSQL &sql)
+  { toResult::setSQL(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const QString &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql,toQList &par)
+  { toResult::query(sql,par); }
+#endif
+public slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void refresh(void)
+  { toResult::refresh(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1)
+  { toResult::changeParams(Param1); }
+  /** Reimplemented For internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toResult::changeParams(Param1,Param2); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3)
+  { toResult::changeParams(Param1,Param2,Param3); }
+private slots:
+  void poll(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultplan_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultplan_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultplan_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,134 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultplan.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultplan.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTPLAN_H
+#define TORESULTPLAN_H
+
+#include "tobackground.h"
+#include "tosqlparse.h"
+#include "toresultview.h"
+
+#include <map>
+#include <stdio.h>
+
+class toNoBlockQuery;
+
+/** This widget displays the execution plan of a statement. The statement
+ * is identified by the first parameter which should be the address as gotten
+ * from the @ref toSQLToAddress function.
+ */
+
+class toResultPlan : public toResultView {
+  Q_OBJECT
+
+  QString Ident;
+  std::map <QString,QListViewItem *> Parents;
+  std::map <QString,QListViewItem *> Last;
+  std::list<QString> Statements;
+  QListViewItem *TopItem;
+  QListViewItem *LastTop;
+  bool Reading;
+  toNoBlockQuery *Query;
+  toBackground Poll;
+  QString User;
+  void checkException(const QString &);
+  void oracleSetup(void);
+
+  void oracleNext(void);
+  void addStatements(std::list<toSQLParse::statement> &stats);
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultPlan(QWidget *parent,const char *name=NULL);
+
+  /** Destruct object
+   */
+  ~toResultPlan();
+
+  /** Reimplemented for internal reasons. If you prepend "SAVED:" a saved plan is read
+   * with the identified_by set to the string following the initial "SAVED:" string.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+  /** Reimplemented for internal reasons.
+   */
+  void query(const QString &sql)
+  { toQList p; query(sql,p); }
+  /** Support Oracle
+   */
+  virtual bool canHandle(toConnection &conn);
+private slots:
+  void poll();
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultreferences_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultreferences_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultreferences_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,122 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultreferences.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultreferences.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTREFERENCES_H
+#define TORESULTREFERENCES_H
+
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+/** This widget displays information about other tables that references this one.
+ * The table is specified by the first and second parameter in the query. The sql is not
+ * used in the query.
+ */
+
+class toResultReferences : public toResultView {
+  Q_OBJECT
+
+  QString Owner;
+  QString TableName;
+  bool Dependencies;
+  toBackground Poll;
+  toNoBlockQuery *Query;
+  QListViewItem *LastItem;
+
+  /** Get columns for a constraints.
+   * @param conOwner Owner of constraint.
+   * @param conName Name of constraint.
+   * @return String with column names separated by a ',' character.
+   */  
+  QString constraintCols(const QString &conOwner,const QString &conName);
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultReferences(QWidget *parent,const char *name=NULL);
+  /** Destruct object
+   */
+  ~toResultReferences();
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+  /** Support Oracle
+   */
+  virtual bool canHandle(toConnection &conn)
+  { return toIsOracle(conn); }
+private slots:
+  void poll(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultresources_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultresources_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultresources_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,95 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultresources.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultresources.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTRESOURCES_H
+#define TORESULTRESOURCES_H
+
+#include "toresultitem.h"
+#include "tosql.h"
+
+#define TOSQL_RESULTRESOURCE 
+
+/** This widget displays information about resources of a query. The statement
+ * is identified by the first parameter which should be the address as gotten
+ * from the @ref toSQLToAddress function.
+ */
+
+class toResultResources : public toResultItem {
+public:
+  /** Create the widget.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultResources(QWidget *parent,const char *name=NULL); // Implemented in toresultitem.cpp
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultstats_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultstats_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultstats_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,173 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultstats.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultstats.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTSTATS_H
+#define TORESULTSTATS_H
+
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+#define TO_STAT_BLOCKS 10
+#define TO_STAT_MAX 500
+
+/** This widget will displays information about statistics in either a database or a session.
+ */
+
+class toResultStats : public toResultView {
+  Q_OBJECT
+  /** Session ID to get statistics for.
+   */
+  int SessionID;
+  /** Number of rows of statistics
+   */
+  int Row;
+  /** Get information about if only changed items are to be displayed.
+   */
+  bool OnlyChanged;
+  /** Display system statistics.
+   */
+  bool System;
+  /** Last read values, used to calculate delta values.
+   */
+  double LastValues[TO_STAT_MAX+TO_STAT_BLOCKS];
+
+  bool Reset;
+  toNoBlockQuery *Query;
+  toNoBlockQuery *SessionIO;
+  toBackground Poll;
+
+  /** Setup widget.
+   */
+  void setup();
+  /** Add value
+   */
+  void addValue(bool reset,int id,const QString &name,double value);
+public:
+  /** Create statistics widget for session statistics.
+   * @param OnlyChanged Only display changed items.
+   * @param ses Session ID to display info about.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultStats(bool OnlyChanged,int ses,QWidget *parent,const char *name=NULL);
+  /** Create statistics widget for the current session statistics.
+   * @param OnlyChanged Only display changed items.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultStats(bool OnlyChanged,QWidget *parent,const char *name=NULL);
+  /** Create statistics widget for the current database statistics.
+   * @param parent Parent widget.
+   * @param name Name of widget.
+   */
+  toResultStats(QWidget *parent,const char *name=NULL);
+
+  /** Destroy object.
+   */
+  ~toResultStats();
+
+  /** Reset statistics. Read in last values without updating widget data.
+   */
+  void resetStats(void);
+  /** Change the session that the current query will run on.
+   * @param query Query to check connection for.
+   */
+  void changeSession(toQuery &conn);
+  /** Change session to specified id.
+   * @param ses Session ID to change to.
+   */
+  void changeSession(int ses);
+  /** Support Oracle
+   */
+  virtual bool canHandle(toConnection &conn);
+signals:
+  /** Emitted when session is changed.
+   * @param ses New session ID.
+   */
+  void sessionChanged(int ses);
+  /** Emitted when session is changed.
+   * @param ses New session ID as string.
+   */
+  void sessionChanged(const QString &);
+public slots:
+  /** Update the statistics.
+   * @param reset Set delta to current values. This means that the next time this widget
+   *              is updated the delta will be from the new values.
+   */
+  void refreshStats(bool reset=true);
+private slots:
+  void poll(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/toresultview_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/toresultview_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/toresultview_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,789 @@
+<HTML>
+<HEAD>
+<TITLE>Source: toresultview.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: toresultview.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TORESULTVIEW_H
+#define TORESULTVIEW_H
+
+#include "toeditwidget.h"
+#include "toresult.h"
+#include "toresultlistformatui.h"
+
+#include <qlistview.h>
+
+#include <map>
+
+class QListViewItem;
+class QPopupMenu;
+class TOPrinter;
+class toListTip;
+class toQuery;
+class toResultCols;
+class toResultView;
+class toSQL;
+class toSearchReplace;
+
+/** Baseclass for filters to apply to the @ref toResultView to filter out
+ * rows that you don't want to add as items to the list.
+ */
+class toResultFilter {
+public:
+  toResultFilter()
+  { }
+  virtual ~toResultFilter()
+  { }
+  virtual void startingQuery(void)
+  { }
+  /** This function can inspect the item to be added and decide if it is
+   * valid for adding or not.
+   * @param item Item to inspect.
+   * @return If false is returned the item isn't added.
+   */
+  virtual bool check(const QListViewItem *item) = 0;
+  /** Create a copy of this filter.
+   * @return A newly created copy of this filter.
+   */
+  virtual toResultFilter *clone(void) = 0;
+  /** Export data to a map.
+   * @param data A map that can be used to recreate the data of a chart.
+   * @param prefix Prefix to add to the map.
+   */
+  virtual void exportData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Import data
+   * @param data Data to read from a map.
+   * @param prefix Prefix to read data from.
+   */
+  virtual void importData(std::map<QCString,QString> &data,const QCString &prefix);
+};
+
+/** An item to display in a toListView or toResultView. They differ from normal
+ * QListViewItems in that they can have a tooltip and actually contain more text
+ * than is displayed in the cell of the listview.
+ */
+class toResultViewItem : public QListViewItem {
+  struct keyData {
+    QString Data;
+    QString KeyAsc;
+    QString KeyDesc;
+    int Width;
+    enum { String,Number } Type;
+  };
+  int ColumnCount;
+  keyData *ColumnData;
+  QString firstText(int col) const;
+protected:
+  virtual int realWidth(const QFontMetrics &fm, const QListView *top, int column,const QString &txt) const;
+public:
+  /** Create a new item.
+   * @param parent Parent list view.
+   * @param after Insert after this item.
+   * @param buffer String to set as first column
+   */
+  toResultViewItem(QListView *parent,QListViewItem *after,const QString &buf=QString::null)
+    : QListViewItem(parent,after,QString::null)
+  { ColumnData=NULL; ColumnCount=0; if (buf) setText(0,buf); }
+  /** Create a new item.
+   * @param parent Parent to this item.
+   * @param after Insert after this item.
+   * @param buffer String to set as first column
+   */
+  toResultViewItem(QListViewItem *parent,QListViewItem *after,const QString &buf=QString::null)
+    : QListViewItem(parent,after,QString::null)
+  { ColumnData=NULL; ColumnCount=0; if (buf) setText(0,buf); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual ~toResultViewItem()
+  { delete[] ColumnData; }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void setText (int col,const QString &txt);
+  /** Set from database.
+   */
+  virtual void setText (int col,const toQValue &val);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align);
+  /** Reimplemented for internal reasons.
+   */
+  virtual QString text(int col) const;
+  /** String to sort the data on. This is reimplemented so that numbers are sorted as numbers
+   * and not as strings.
+   * @param col Column
+   * @param asc Wether to sort ascending or not.
+   */
+  virtual QString key(int col,bool asc) const
+  { if (col>=ColumnCount) return QString::null; return asc?ColumnData[col].KeyAsc:ColumnData[col].KeyDesc; }
+  /** Reimplemented for internal reasons.
+   */
+  virtual int width(const QFontMetrics &, const QListView *, int col) const
+  { if (col>=ColumnCount) return 0; return ColumnData[col].Width; }
+  /** Get all text for this item. This is used for copying, drag & drop and memo editing etc.
+   * @param col Column.
+   * @return All of the text.
+   */
+  virtual QString allText(int col) const
+  { if (col>=ColumnCount) return QString::null; return ColumnData[col].Data; }
+  /** Get the text to be displayed as tooltip for this item.
+   * @param col Column.
+   * @return The text to display as tooltip.
+   */
+  virtual QString tooltip(int col) const
+  { return allText(col); }
+};
+
+/** This item expands the height to commodate all lines in the input buffer.
+ */
+class toResultViewMLine : public toResultViewItem {
+private:
+  /** Number of lines in the largest row.
+   */
+  int Lines;
+protected:
+  virtual int realWidth(const QFontMetrics &fm, const QListView *top, int column,const QString &txt) const;
+public:
+  /** Create a new item.
+   * @param parent Parent list view.
+   * @param after Insert after this item.
+   * @param buffer String to set as first column
+   */
+  toResultViewMLine(QListView *parent,QListViewItem *after,const QString &buf=QString::null)
+    : toResultViewItem(parent,after,QString::null)
+  { Lines=1; if (buf) setText(0,buf); }
+  /** Create a new item.
+   * @param parent Parent to this item.
+   * @param after Insert after this item.
+   * @param buffer String to set as first column
+   */
+  toResultViewMLine(QListViewItem *parent,QListViewItem *after,const QString &buf=QString::null)
+    : toResultViewItem(parent,after,QString::null)
+  { Lines=1; if (buf) setText(0,buf); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void setText (int,const QString &);
+  /** Set from database.
+   */
+  virtual void setText (int col,const toQValue &val);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void setup(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual QString text(int col) const
+  { return toResultViewItem::allText(col); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintCell (QPainter *pnt,const QColorGroup & cg,int column,int width,int alignment);
+};
+
+/** An item to display in a toListView or toResultView. They differ from normal
+ * QListViewItems in that they can have a tooltip and actually contain more text
+ * than is displayed in the cell of the listview.
+ */
+class toResultViewCheck : public QCheckListItem {
+  struct keyData {
+    QString Data;
+    QString KeyAsc;
+    QString KeyDesc;
+    int Width;
+    enum { String,Number } Type;
+  };
+  int ColumnCount;
+  keyData *ColumnData;
+protected:
+  virtual int realWidth(const QFontMetrics &fm, const QListView *top, int column,const QString &txt) const;
+  QString firstText(int col) const;
+public:
+  /** Create a new item.
+   * @param parent Parent list view.
+   * @param text Text of first column.
+   * @param type Type of check on this item.
+   */
+  toResultViewCheck(QListView *parent,const QString &text,QCheckListItem::Type type=Controller)
+    : QCheckListItem(parent,QString::null,type)
+  { ColumnData=NULL; ColumnCount=0; if (!text.isNull()) setText(0,text); }
+  /** Create a new item.
+   * @param parent Parent item.
+   * @param text Text of first column.
+   * @param type Type of check on this item.
+   */
+  toResultViewCheck(QListViewItem *parent,const QString &text,QCheckListItem::Type type=Controller)
+    : QCheckListItem(parent,QString::null,type)
+  { ColumnData=NULL; ColumnCount=0; if (!text.isNull()) setText(0,text); }
+  /** Create a new item.
+   * @param parent Parent list view.
+   * @param after After last item.
+   * @param text Text of first column.
+   * @param type Type of check on this item.
+   */
+  toResultViewCheck(QListView *parent,QListViewItem *after,const QString &text,QCheckListItem::Type type=Controller);
+  /** Create a new item.
+   * @param parent Parent item.
+   * @param after After last item.
+   * @param text Text of first column.
+   * @param type Type of check on this item.
+   */
+  toResultViewCheck(QListViewItem *parent,QListViewItem *after,const QString &text,QCheckListItem::Type type=Controller);
+  /** Reimplemented for internal reasons.
+   */
+  virtual ~toResultViewCheck()
+  { delete[] ColumnData; }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void setText (int col,const QString &txt);
+  /** Set from database.
+   */
+  virtual void setText (int col,const toQValue &val);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintCell(QPainter * p,const QColorGroup & cg,int column,int width,int align);
+  /** Reimplemented for internal reasons.
+   */
+  virtual QString text(int col) const;
+  /** String to sort the data on. This is reimplemented so that numbers are sorted as numbers
+   * and not as strings.
+   * @param col Column
+   * @param asc Wether to sort ascending or not.
+   */
+  /** String to sort the data on. This is reimplemented so that numbers are sorted as numbers
+   * and not as strings.
+   * @param col Column
+   * @param asc Wether to sort ascending or not.
+   */
+  virtual QString key(int col,bool asc) const
+  { if (col>=ColumnCount) return QString::null; return asc?ColumnData[col].KeyAsc:ColumnData[col].KeyDesc; }
+  /** Reimplemented for internal reasons.
+   */
+  virtual int width(const QFontMetrics &, const QListView *, int col) const
+  { if (col>=ColumnCount) return 0; return ColumnData[col].Width; }
+  /** Get all text for this item. This is used for copying, drag & drop and memo editing etc.
+   * @param col Column.
+   * @return All of the text.
+   */
+  virtual QString allText(int col) const
+  { if (col>=ColumnCount) return QString::null; return ColumnData[col].Data; }
+  /** Get the text to be displayed as tooltip for this item.
+   * @param col Column.
+   * @return The text to display as tooltip.
+   */
+  virtual QString tooltip(int col) const
+  { return allText(col); }
+};
+
+/** This item expands the height to commodate all lines in the input buffer.
+ */
+class toResultViewMLCheck : public toResultViewCheck {
+private:
+  /** Number of lines in the largest row.
+   */
+  int Lines;
+protected:
+  virtual int realWidth(const QFontMetrics &fm, const QListView *top, int column,const QString &txt) const;
+public:
+  /** Create a new item.
+   * @param parent Parent list view.
+   * @param text Text of first column.
+   * @param type Type of check on this item.
+   */
+  toResultViewMLCheck(QListView *parent,const QString &text,QCheckListItem::Type type=Controller)
+    : toResultViewCheck(parent,QString::null,type)
+  { Lines=1; if (!text.isNull()) setText(0,text); }
+  /** Create a new item.
+   * @param parent Parent item.
+   * @param text Text of first column.
+   * @param type Type of check on this item.
+   */
+  toResultViewMLCheck(QListViewItem *parent,const QString &text,QCheckListItem::Type type=Controller)
+    : toResultViewCheck(parent,QString::null,type)
+  { Lines=1; if (!text.isNull()) setText(0,text); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void setup(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void setText (int,const QString &);
+  /** Set from database.
+   */
+  virtual void setText (int col,const toQValue &val);
+  /** Reimplemented for internal reasons.
+   */
+  virtual QString text(int col) const
+  { return toResultViewCheck::allText(col); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void paintCell (QPainter *pnt,const QColorGroup & cg,int column,int width,int alignment);
+};
+
+/**
+ * The TOra implementation of a listview which offers a few extra goodies to the baseclass.
+ * First of all tooltip which can display contents that doesn't fit in the list, printing,
+ * integration into toMain with Edit menu etc, drag & drop, export as file, display item
+ * as memo and context menu.
+ */
+class toListView : public QListView,public toEditWidget {
+  Q_OBJECT
+
+  bool FirstSearch;
+
+  /** Name of this list, used primarily when printing. Also used to be able to edit
+   * SQL displayed in @ref toResultView.
+   */
+  QString Name;
+  /** Used to display tip on fields.
+   */
+  toListTip *AllTip;
+  /** Item selected when popup menu displayed.
+   */
+  QListViewItem *MenuItem;
+  /** Column of item selected when popup menu displayed.
+   */
+  int MenuColumn;
+  /** Popup menu if available.
+   */
+  QPopupMenu *Menu;
+  /** Last move, used to determine if drag has started.
+   */
+  QPoint LastMove;
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void contentsMouseDoubleClickEvent (QMouseEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void contentsMousePressEvent(QMouseEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void contentsMouseReleaseEvent(QMouseEvent *e);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void contentsMouseMoveEvent (QMouseEvent *e);
+
+  /** Used to print one page of the list.
+   * @param printer Printer to print to.
+   * @param painter Painter to print page to.
+   * @param top Item at top of page.
+   * @param column Column to start printing at. Will be changed to where you are when done.
+   * @param level The indentation level of the top item.
+   * @param pageNo Page number.
+   * @param paint If just testing to determine how many pages are needed set this to false.
+   * @return The next item to print to (Pass as top to this function).
+   */
+  virtual QListViewItem *printPage(TOPrinter *printer,QPainter *painter,QListViewItem *top,
+				   int &column,int &level,int pageNo,bool paint=true);
+  int exportType(QString &separator,QString &delimiter);
+public:
+  /** Create new list view.
+   * @param parent Parent of list.
+   * @param name Name of list.
+   * @param f Widget flags.
+   */
+  toListView(QWidget *parent,const char *name=NULL,WFlags f=0);
+  virtual ~toListView();
+
+  /** Get SQL name of list.
+   */
+  virtual QString sqlName(void)
+  { return Name; }
+  /** Set SQL name of list.
+   */
+  virtual void setSQLName(const QString &name)
+  { Name=name; }
+  /** Get the whole text for the item and column selected when menu was poped up.
+   */
+  QString menuText(void);
+
+  /** Print this list
+   */
+  virtual void editPrint(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void focusInEvent (QFocusEvent *e);
+  /** The string to be displayed in the middle of the footer when printing.
+   * @return String to be placed in middle.
+   */
+  virtual QString middleString()
+  { return QString::null; }
+  /** Adds option to add menues to the popup menu before it is displayed.
+   * @param menu Menu to add entries to.
+   */
+  virtual void addMenues(QPopupMenu *menu);
+  /** Export list as a string.
+   * @param includeHeader Include header.
+   * @param onlySelection Only include selection.
+   * @param type Format of exported list.
+   * @param separator Separator for CSV format.
+   * @param delimiter Delimiter for CSV format.
+   */
+  virtual QString exportAsText(bool includeHeader,bool onlySelection,int type=-1,const QString &separator=";",const QString &delimiter="\"");
+  /** Export list as file.
+   */
+  virtual bool editSave(bool ask);
+
+  /** Select all contents.
+   */
+  virtual void editSelectAll(void)
+  { selectAll(true); }
+  
+  /** Move to top of data
+   */
+  virtual void searchTop(void)
+  { if (firstChild()) setCurrentItem(firstChild()); FirstSearch=true; }
+  /** Search for next entry
+   * @return True if found, should select the found text.
+   */
+  virtual bool searchNext(toSearchReplace *search);
+  /** Check if data can be modified by search
+   * @param all If true can replace all, otherwise can replace right now.
+   */
+  virtual bool searchCanReplace(bool all);
+
+  /** Export data to a map.
+   * @param data A map that can be used to recreate the data of a chart.
+   * @param prefix Prefix to add to the map.
+   */
+  virtual void exportData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Import data
+   * @param data Data to read from a map.
+   * @param prefix Prefix to read data from.
+   */
+  virtual void importData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Create transposed copy of list
+   * @return Pointer to newly allocated transposed listview.
+   */
+  virtual toListView *copyTransposed(void);
+signals:
+  /** Called before the menu is displayed so that you can add items to it before it is shown.
+   * @param menu Pointer to the menu about to be shown.
+   */
+  void displayMenu(QPopupMenu *menu);
+public slots:
+  /** set the popup menu --> see displayMenu()
+   * @param item Item to display.
+   */
+  virtual void setDisplayMenu(QPopupMenu *item);
+  /** Display the menu at the given point and column.
+   * @param item Item to display.
+   * @param pnt Point to display menu at.
+   * @param col Column to display menu for.
+   */
+  virtual void displayMenu(QListViewItem *item,const QPoint &pnt,int col);
+  /** Display memo of selected menu column
+   */
+  virtual void displayMemo(void);
+protected slots:
+  /** Callback when menu is selected. If you override this make sure you
+   * call the parents function when you have parsed your entries.
+   * @param id ID of the menu item selected.
+   */
+  virtual void menuCallback(int id);
+};
+
+/**
+ * This class defines a list which displays the result of a query.
+ *
+ * One special thing to know about this class is that columns at the end in which the
+ * description start with a '-' characters are not displayed.
+ */
+
+class toResultView : public toListView, public toResult {
+  Q_OBJECT
+
+  int SortColumn;
+  bool SortAscending;
+  bool SortConnected;
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void keyPressEvent (QKeyEvent * e);
+protected:
+  /** Connection to execute statement on.
+   */
+  toQuery *Query;
+  /** Last added item.
+   */
+  QListViewItem *LastItem;
+
+  /** Number of rows in list.
+   */
+  int RowNumber;
+  /** If column names are to be made more readable.
+   */
+  bool ReadableColumns;
+  /** Wether to display first number column or not.
+   */
+  bool NumberColumn;
+  /** If all the available data should be read at once.
+   */
+  bool ReadAll;
+  /** Input filter if any.
+   */
+  toResultFilter *Filter;
+
+  /** Setup the list.
+   * @param readable Wether to display first number column or not.
+   * @param dispCol Wether to display first number column or not.
+   */
+  void setup(bool readable,bool dispCol);
+
+  /** Check if end of query is detected yet or not.
+   */
+  virtual bool eof(void);
+
+public:
+  /** Create list.
+   * @param readable Indicate if columns are to be made more readable. This means that the
+   * descriptions are capitalised and '_' are converted to ' '.
+   * @param numCol If number column is to be displayed.
+   * @param parent Parent of list.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toResultView(bool readable,bool numCol,QWidget *parent,const char *name=NULL,WFlags f=0);
+  /** Create list. The columns are not readable and the number column is displayed.
+   * @param parent Parent of list.
+   * @param name Name of widget.
+   * @param f Widget flags.
+   */
+  toResultView(QWidget *parent,const char *name=NULL,WFlags f=0);
+  ~toResultView();
+
+  /** Set the read all flag.
+   * @param all New value of flag.
+   */
+  void setReadAll(bool all)
+  { ReadAll=all;}
+
+  /** Get read all flag
+   * @return Value of read all flag.
+   */
+  virtual void editReadAll(void);
+
+  /** Get the number of columns in query.
+   * @return Columns in query.
+   */
+  int queryColumns() const;
+
+  /** Get the query used to execute this.
+   */
+  toQuery *query()
+  { return Query; }
+
+  /** Set a filter to this list.
+   * @param filter The new filter or NULL if no filter is to be used.
+   */
+  void setFilter(toResultFilter *filter)
+  { Filter=filter; }
+  /** Get the current filter.
+   * @return Current filter or NULL if no filter.
+   */
+  toResultFilter *filter(void)
+  { return Filter; }
+
+  /** Get number column flag.
+   * @return Wether or not the numbercolumn is displayed.
+   */
+  bool numberColumn() const
+  { return NumberColumn; }
+  /** Set number column flag. Don't change this while a query is running. Observe
+   * that not all descendants of this class support changing this on the fly. The base
+   * class and @ref toResultLong does though.
+   * @param val New value of number column.
+   */
+  void setNumberColumn(bool val)
+  { NumberColumn=val; }
+
+  /** Get readable column flag.
+   * @return Wether or not the readable column names.
+   */
+  bool readableColumn() const
+  { return ReadableColumns; }
+  /** Set readable column flag.
+   */
+  void setReadableColumns(bool val)
+  { ReadableColumns=val; }
+
+  /** Create a new item in this list. Can be used if a special kind of item is wanted
+   * in the list. The rest of the columns will be filled with setText.
+   * @param last Where to insert the item.
+   * @param str String to set first column to.
+   * @return Allocated item.
+   */
+  virtual QListViewItem *createItem(QListViewItem *last,const QString &str);
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void query(const QString &sql,const toQList &param);
+
+  /** Get SQL name of list.
+   */
+  virtual QString sqlName(void)
+  { return toListView::sqlName(); }
+  /** Set SQL name of list.
+   */
+  virtual void setSQLName(const QString &name)
+  { toListView::setSQLName(name); }
+
+  // Why are these needed?
+#if 1
+  /** Set the SQL statement of this list
+   * @param sql String containing statement.
+   */
+  void setSQL(const QString &sql)
+  { toResult::setSQL(sql); }
+  /** Set the SQL statement of this list. This will also affect @ref Name.
+   * @param sql SQL containing statement.
+   */
+  void setSQL(const toSQL &sql)
+  { toResult::setSQL(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const QString &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql)
+  { toResult::query(sql); }
+  /** Set new SQL and run query.
+   * @param sql New sql.
+   * @see setSQL
+   */
+  void query(const toSQL &sql,toQList &par)
+  { toResult::query(sql,par); }
+#endif
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editPrint(void)
+  { editReadAll(); toListView::editPrint(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual QString middleString();
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void addMenues(QPopupMenu *);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void setSorting(int col,bool asc=true);
+  /** Reimplemented for internal reasons.
+   */
+  virtual int sortColumn() const
+  { return SortColumn; }
+public slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void refresh(void);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1)
+  { toResult::changeParams(Param1); }
+  /** Reimplemented For internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2)
+  { toResult::changeParams(Param1,Param2); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void changeParams(const QString &Param1,const QString &Param2,const QString &Param3)
+  { toResult::changeParams(Param1,Param2,Param3); }
+  /** Try to add an item to the list if available.
+   */
+  virtual void addItem(void);
+  /** Handle any connection by default
+   */
+  virtual bool canHandle(toConnection &)
+  { return true; }
+private slots:
+  void headingClicked(int col);
+  void checkHeading(void); 
+protected slots:
+  /** Reimplemented for internal reasons.
+   */
+  virtual void menuCallback(int);
+};
+
+/***
+ * Used internally by toListView.
+ * @internal
+ */
+
+class toResultListFormat : public toResultListFormatUI {
+  Q_OBJECT
+public:
+  toResultListFormat(QWidget *parent,const char *name);
+  void saveDefault(void);
+public slots:
+  virtual void formatChanged(int pos);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tosgastatement_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tosgastatement_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tosgastatement_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,130 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tosgastatement.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tosgastatement.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOSGASTATEMENT_H
+#define TOSGASTATEMENT_H
+
+#include <qtabwidget.h>
+
+class QComboBox;
+class QTabWidget;
+class toResultField;
+class toResultItem;
+class toResultPlan;
+class toResultView;
+
+/** This widget displays information about a statement in the Oracle SGA. To get an
+ * address use the @ref toSQLToAddress function.
+ */
+
+class toSGAStatement : public QTabWidget {
+  Q_OBJECT
+  /** The SQL run.
+   */
+  toResultField *SQLText;
+  /** Tab widget
+   */
+  QWidget *CurrentTab;
+  /** Resources used by the statement.
+   */
+  toResultItem *Resources;
+  /** Address of the statement.
+   */
+  QString Address;
+  /** Execution plan of the statement.
+   */
+  toResultPlan *Plan;
+
+  /** Display resources of statement.
+   */
+  void viewResources(void);
+private slots:
+  /** Change the displayed tab.
+   */
+  void changeTab(QWidget *widget);
+public:
+  /** Create widget.
+   * @param parent Parent widget.
+   */
+  toSGAStatement(QWidget *parent);
+public slots:
+  /** Display another statement.
+   * @param address Address of the statement to display.
+   */
+  virtual void changeAddress(const QString &address);
+  /** Update the contents of this widget.
+   */ 
+  void refresh(void)
+  { changeTab(CurrentTab); }
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tosmtp_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tosmtp_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tosmtp_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,130 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tosmtp.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tosmtp.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOSMTP_H
+#define TOSMTP_H
+
+#include <qobject.h>
+#include <qstring.h>
+
+class QDns;
+class QSocket;
+class QTextStream;
+
+// Adapted from Qt smtp example.
+
+/** Used to send mail asyncronously. Just create an instance and forget it.
+ * It will delete itself when done.
+ */
+
+class toSMTP : public QObject
+{
+  Q_OBJECT
+
+public:
+  /** Send an email.
+   * @param from From field of email.
+   * @param to To field of email header.
+   * @param subject Subject of mail.
+   * @param body Body of email message.
+   */
+  toSMTP(const QString &from,const QString &to,
+	 const QString &subject,const QString &body);
+  ~toSMTP();
+
+private slots:
+  void dnsLookupHelper();
+  void readyRead();
+  void connected();
+
+private:
+  enum state {
+    Init,
+    Mail,
+    Rcpt,
+    Data,
+    Body,
+    Quit,
+    Close
+  };
+
+  QString Message;
+  QString From;
+  QString Recipient;
+  QSocket *Socket;
+  QTextStream *Stream;
+  int State;
+  QString Response;
+  QDns * MXLookup;
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tosql_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tosql_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tosql_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,313 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tosql.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tosql.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOSQL_H
+#define TOSQL_H
+
+#include <map>
+#include <list>
+
+#include <qstring.h>
+
+class toConnection;
+
+/**
+ * This class handles an abstraction of SQL statements used by TOra to extract
+ * information and manipulate data. This is usefull in two ways, first off you
+ * can edit the strings using a handy editor inside TOra if you find bugs. Also
+ * you can use different statements for different Oracle versions. You can also
+ * add support for new versions of Oracle without any need for recompilation or
+ * programming knowledge.
+ *
+ * All information about SQL statements are stored in one global static map which
+ * contains a name, a description and one or several statements connected to one
+ * Oracle version.
+ *
+ * To determine which SQL to use the statement with the highest
+ * version not above the current connection is used. If no statements below or
+ * equal to the current version is available the lowest available is used.
+ *
+ * All strings are specific for a given database provider. No attempt to use
+ * strings from other providers will be made.
+ */
+
+class toSQL {
+public:
+  /**
+   * Contains a statement with it's version.
+   */
+  struct version {
+    /**
+     * The provider this version is made for.
+     */
+    QCString Provider;
+    /**
+     * Version string
+     */
+    QCString Version;
+    /**
+     * SQL statement
+     */
+    QString SQL;
+    /** An indication if this SQL has been modified after startup and thus needs to be
+     * saved to disk to retain.
+     */
+    bool Modified;
+    /** Create a new version
+     * @param provider Provider
+     * @param ver Version
+     * @param sql Statement
+     * @param modified Wether it is modified or not.
+     */
+    version(const QCString &provider,const QCString &ver,const QString &sql,bool modified=false)
+      : Provider(provider),Version(ver),SQL(sql),Modified(modified)
+    { }
+  };
+
+  /**
+   * Definition of one toSQL statement with its description and versions.
+   */
+  struct definition {
+    /** Description of what this statement is supposed to do.
+     */
+    QString Description;
+    /** Indication of wether this description is changed or not and needs to be saved
+     * to disk to retain.
+     */
+    bool Modified;
+    /** List of the different versions of the statement.
+     */
+    std::list<version> Versions;
+  };
+
+  /** Type of map of statement names to statement definitions.
+   */
+  typedef std::map<QCString,definition> sqlMap;
+private:
+  /** Map of statement names to statement definitions for each provider.
+   */
+  static sqlMap *Definitions;
+
+  /** Name of this SQL statement
+   */
+  QCString Name;
+
+  /** Internal constructor used by some of the internal functions. Creates an
+   * SQL statement with a name but without an entry in the @ref Definitions map.
+   */
+  toSQL(const QCString &name);
+
+  /** Check that @ref Definitions are allocated, if not allocate it.
+   */
+  static void allocCheck(void);
+public:
+  /** Name of the SQL to get a userlist
+   */
+  static const char * const TOSQL_USERLIST;
+  /** Name of the SQL to create a plan table
+   */
+  static const char * const TOSQL_CREATEPLAN;
+  /** Update the map with new information.
+   * @param name Name of this SQL statement.
+   * @param sql Statement to execute for this SQL.
+   * @param description Description of this SQL.
+   * @param ver Version of database this statement is meant for.
+   * @param provider Database provider this string is used for.
+   * @param modified Wether this is a modification or an addition to the map.
+   * @return True if a new statement was saved, otherwise false.
+   */
+  static bool updateSQL(const QCString &name,
+		        const QString &sql,
+		        const QString &description,
+		        const QCString &ver="8.1",
+			const QCString &provider="Oracle",
+			bool modified=true);
+
+  /** Remove an SQL statement from a map. If the last version is removed
+   * from a statement it's definition is also removed.
+   * @param name Name to remove.
+   * @param ver Version to remove.
+   * @param provider Provider to delete.
+   * @return True if a version was found to be removed.
+   */
+  static bool deleteSQL(const QCString &name,
+		        const QCString &ver,
+			const QCString &provider="Oracle");
+
+  /** Get the statement of an SQL.
+   * @param name Name of statement.
+   * @param conn Connection to get version from.
+   * @return String containing the statement.
+   * @exception QString with description of problem fetching string.
+   */
+  static QString string(const QCString &name,const toConnection &conn);
+  /** Get the statement of an SQL.
+   * @param sqlDef SQL to get name of statement from.
+   * @param conn Connection to get version from.
+   * @return String containing the statement.
+   * @exception QString with description of problem fetching string.
+   */
+  static QString string(const toSQL &sqldef,const toConnection &conn)
+  { return string(sqldef.Name,conn); }
+
+  /** Get description of an SQL.
+   * @param name Name of SQL to get name from..
+   * @return String containing description.
+   * @exception QString with description of problem fetching string.
+   */
+  static QString description(const QCString &name);
+  /** Get description of an SQL.
+   * @param sqlDef SQL to get name of statement from.
+   * @return String containing description.
+   * @exception QString with description of problem fetching string.
+   */
+  static QString description(const toSQL &sql)
+  { return description(sql.Name); }
+
+  /** Get the statement of an SQL.
+   * @param name Name of statement.
+   * @param conn Connection to get version from.
+   * @return String containing the statement.
+   * @exception QString with description of problem fetching string.
+   */
+  static QCString sql(const QCString &name,const toConnection &conn)
+  { return string(name,conn).utf8(); }
+  /** Get the statement of an SQL.
+   * @param sqlDef SQL to get name of statement from.
+   * @param conn Connection to get version from.
+   * @return String containing the statement.
+   * @exception QString with description of problem fetching string.
+   */
+  static QCString sql(const toSQL &sqldef,const toConnection &conn)
+  { return sql(sqldef.Name,conn); }
+
+  /** Get an SQL from a specified name.
+   * @param name Name to get SQL for.
+   * @return a toSQL object for given name.
+   */
+  static toSQL sql(const QCString &name);
+
+  /**
+   * Get all defined names that start with a given substring.
+   * @param startWith The string that the name should start with.
+   * @return A list of names available.
+   */
+  static std::list<QCString> range(const QCString &startWith);
+
+  /** Save SQL definitions to file.
+   * @param file Filename to save to.
+   * @param all If true all statements will be saved, otherwised only modified are saved.
+   * @return True if saved successfully.
+   */
+  static bool saveSQL(const QString &file,bool all=false);
+  /** Load definitions from file.
+   * @param file Filename to load from.
+   * @exceptions QString describing the problem loading.
+   */
+  static void loadSQL(const QString &file);
+
+  /** Get the entire map of SQL definitions
+   * @return A reference to the map of definitions.
+   */
+  static const sqlMap &definitions(void)
+  { allocCheck(); return *Definitions; }
+
+  /** Get the statement of an SQL.
+   * @param conn Connection to get version from.
+   * @return String containing the statement.
+   */
+  const QString operator () (const toConnection &conn) const
+  { return string(Name,conn); }
+
+  /** Get name of this SQL.
+   * @return Name.
+   */
+  const QCString &name(void) const
+  { return Name; }
+
+  /** Create a new SQL. Observe that the only thing this does is insert the supplied
+   * information into the definition map, deleting the SQL will not the information from
+   * the defitinion map. Only one description can be made for each statement name.
+   * @param name Name of SQL.
+   * @param sql Statement of this SQL.
+   * @param description Description of statement.
+   * @param ver Version this statement applies to.
+   * @param provider Provider this string is for.
+   */
+  toSQL(const QCString &name,
+	const QString &sql,
+	const QString &description="",
+	const QCString &ver="8.1",
+	const QCString &provider="Oracle");
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tosqlparse_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tosqlparse_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tosqlparse_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,384 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tosqlparse.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tosqlparse.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOSQLPARSE_H
+#define TOSQLPARSE_H
+
+#include <list>
+
+#include <qstring.h>
+
+class toConnection;
+class toMarkedText;
+class toSyntaxAnalyzer;
+
+/** A bunch of functions to parse and indent SQL text.
+ */
+
+class toSQLParse {
+public:
+  struct settings {
+    bool ExpandSpaces;
+    bool CommaBefore;
+    bool BlockOpenLine;
+    bool OperatorSpace;
+    bool KeywordUpper;
+    bool RightSeparator;
+    bool EndBlockNewline;
+    int IndentLevel;
+    int CommentColumn;
+  };
+
+  /** Structure the statement is parsed into.
+   */
+  class statement {
+    /** Subtokens to this token.
+     */
+    std::list<statement> *SubTokens;
+  public:
+    /** Type of this token.
+     */
+    enum type {
+      /** Start of block.
+       */
+      Block,
+      /** Start of statement.
+       */
+      Statement,
+      /** Sub list
+       */
+      List,
+      /** Parameter of statement.
+       */
+      Keyword,
+      /** Another token of whatever it is detected in.
+       */
+      Token,
+      /** Unparsed data
+       */
+      Raw
+      /** Type of token.
+       */
+    } Type;
+    /** Was there a comment attached to this token
+     */
+    QString Comment;
+    /** The actual token.
+     */
+    QString String;
+    /** The original line of the token (0 is first line)
+     */
+    int Line;
+    /** Create statement
+     */
+    statement(type ntype=Token,const QString &token=QString::null,int cline=-1);
+    /** Allocate subtokens if not available and return reference to subtokens
+     */
+    std::list<statement> &subTokens();
+    /** Copy constructor
+     */
+    statement(const statement &);
+    /** Copy operator
+     */
+    const statement &operator = (const statement &);
+    /** Equality operator. Does not include the line for comparison.
+     */
+    bool operator == (const statement &) const;
+    /** Non rquality operator. Does not include the line for comparison.
+     */
+    bool operator != (const statement &stat) const
+      { return !((*this)==stat); }
+    /** Destroy statement
+     */
+    ~statement();
+  };
+
+  /** Abstract class to define a source of tokens for the parser.
+   */
+  class tokenizer {
+  private:
+    toSyntaxAnalyzer *Analyzer;
+  protected:
+    int Offset;
+    int Line;
+  public:
+    /** Create a tokenizer. Optionally specify which line and offset to start at.
+     */
+    tokenizer(int offset=0,int line=0)
+    { Line=line; Offset=offset; Analyzer=NULL; }
+    /** Create a tokenizer. Optionally specify which line and offset to start at.
+     */
+    tokenizer(toSyntaxAnalyzer &analyzer,int offset=0,int line=0)
+    { Line=line; Offset=offset; Analyzer=&analyzer; }
+    virtual ~tokenizer()
+    { }
+    /** Get a token from the string.
+     * @param forward Go forward or backwards to get next token.
+     * @param comment Include comments as tokens.
+     */
+    virtual QString getToken(bool forward=true,bool comment=false) = 0;
+    /** Specify the syntax analyzer to use for the tokanizer
+     * @param analyzer
+     */
+    virtual void setAnalyzer(toSyntaxAnalyzer &analyzer)
+    { Analyzer=&analyzer; }
+    virtual toSyntaxAnalyzer &analyzer();
+    /** Get the current line of the tokenizer. A line is defined by a \n character
+     */
+    virtual int line(void)
+    { return Line; }
+    /** Current offset of the tokenizer (Should point to the character after the last token in the specified direction)
+     */
+    virtual int offset(void)
+    { return Offset; }
+    /** Set a new offset of tokenzer.
+     */
+    virtual void setOffset(int offset)
+    { Offset=offset; }
+    /** Set new current line of tokenizer.
+     * This will not affect the current position of the tokenizer.
+     */
+    virtual void setLine(int line)
+    { Line=line; }
+    /** Get the data remaining after the current position.
+     * @param eol If true end of line, otherwise end of tokenizer.
+     */
+    virtual QString remaining(bool eol) = 0;
+  };
+
+  /** Tokenizer class which gets tokens from a string.
+   */
+  class stringTokenizer : public tokenizer {
+    QString String;
+  public:
+    stringTokenizer(const QString &str,int offset=0,int line=0)
+      : tokenizer(offset,line)
+    { String=str; }
+    stringTokenizer(const QString &str,toSyntaxAnalyzer &analyzer,int offset=0,int line=0)
+      : tokenizer(analyzer,offset,line)
+    { String=str; }
+    /** Get a token from the string.
+     * @param forward Go forward or backwards to get next token.
+     * @param comment Include comments as tokens.
+     */
+    virtual QString getToken(bool forward=true,bool comment=false);
+    /** Get the data remaining after the current position.
+     * @param eol If true end of line, otherwise end of tokenizer.
+     */
+    virtual QString remaining(bool eol);
+  };
+
+  /** Tokenizer class which gets tokens from an editor.
+   */
+  class editorTokenizer : public tokenizer {
+    toMarkedText *Editor;
+  public:
+    /** Create a tokenizer which takes its input from an editor.
+     * @param editor The editor to read from. Observe that if this
+     * is a syntax highlighted editor the syntax analyzer is used
+     * that is used for the editor.
+     */
+    editorTokenizer(toMarkedText *editor,int offset=0,int line=0);
+    /** Get a token from the string.
+     * @param forward Go forward or backwards to get next token.
+     * @param comment Include comments as tokens.
+     */
+    virtual QString getToken(bool forward=true,bool comment=false);
+    /** Get the data remaining after the current position.
+     * @param eol If true end of line, otherwise end of tokenizer.
+     */
+    virtual QString remaining(bool eol);
+  };
+
+  /** Parse a string.
+   * @param tokens Tokenizer provider to generate parsed tree from.
+   * @return Parsed statement tree.
+   */
+  static std::list<statement> parse(tokenizer &tokens);
+  /** Parse a string.
+   * @param str String to parse.
+   * @return Parsed statement tree.
+   */
+  static std::list<statement> parse(const QString &str)
+  { stringTokenizer tokens(str); return parse(tokens); }
+  /** Parse a string.
+   * @param str String to parse.
+   * @param conn Connection to determine SQL dialect. (For future use)
+   * @return Parsed statement tree.
+   */
+  static std::list<statement> parse(const QString &str,toConnection &conn);
+
+  /** Get one statement (or block) from the root of an editor or string.
+   * @param tokens Tokenizer to get tokens from.
+   * @param conn Connection to determine SQL dialog. (For future use)
+   */
+  static statement parseStatement(tokenizer &tokens);
+  /** Get one statement (or block) from the root of an editor or string.
+   * @param str Tokenizer to get tokens from.
+   * @param conn Connection to determine SQL dialog. (For future use)
+   */
+  static statement parseStatement(const QString &str)
+  { stringTokenizer tokens(str); return parseStatement(tokens); }
+  /** Get one statement (or block) from the root of an editor or string.
+   * @param tokens Tokenizer to get tokens from.
+   * @param conn Connection to determine SQL dialog. (For future use)
+   */
+  static statement parseStatement(tokenizer &tokens,toConnection &conn);
+  /** Get one statement (or block) from the root of an editor or string.
+   * @param str Tokenizer to get tokens from.
+   * @param conn Connection to determine SQL dialog. (For future use)
+   */
+  static statement parseStatement(const QString &str,toConnection &conn)
+  { stringTokenizer tokens(str); return parseStatement(tokens,conn); }
+
+  /** Indent a string.
+   * @param str String to indent.
+   * @return An indented string.
+   */
+  static QString indent(const QString &str);
+  /** Indent a parse statement structure into a string.
+   * @param stat Statement to indent.
+   * @param level Initial indentation level to use.
+   * @param syntax The syntax analyzer to use.
+   * @return A string with the indented statement.
+   */
+  static QString indentStatement(statement &stat,toConnection &conn,int level=0);
+  /** Indent a parse statement structure into a string.
+   * @param stat Statement to indent.
+   * @param level Initial indentation level to use.
+   * @return A string with the indented statement.
+   */
+  static QString indentStatement(statement &stat,int level=0);
+  /** Indent a string.
+   * @param str String to indent.
+   * @param conn Connection to determine SQL dialect. (For future use)
+   * @return An indented string.
+   */
+  static QString indent(const QString &str,toConnection &conn);
+
+  /** Create an indentation string.
+   * @param level Number of characters to indent.
+   */
+  static QString indentString(int level);
+
+  /** Indent a string.
+   * @param str List of statements
+   * @param conn Connection to determine SQL dialect. (For future use)
+   * @return An indented string.
+   */
+  static QString indent(std::list<statement> &stat,toConnection &conn);
+  /** Indent a string.
+   * @param stat List of statements
+   * @return An indented string.
+   */
+  static QString indent(std::list<statement> &stat);
+
+  /** Count indentation level of a string.
+   * @param str String to check.
+   * @param chars Position in string.
+   */
+  static int countIndent(const QString &str,int &chars);
+  /** Indent a string.
+   * @param str String to indent.
+   * @param syntax Syntax analyzer to determine SQL dialect. (For future use)
+   * @return An indented string.
+   */
+  static QString indent(const QString &str,toSyntaxAnalyzer &syntax);
+  /** Indent a string.
+   * @param stat List of statements
+   * @param syntax Syntax analyzer to determine SQL dialect. (For future use)
+   * @return An indented string.
+   */
+  static QString indent(std::list<statement> &stat,toSyntaxAnalyzer &syntax);
+private:
+  static settings Settings;
+  static statement parseStatement(tokenizer &tokens,
+				  bool declare,bool lst);
+  /** Indent a parse statement structure into a string.
+   * @param stat Statement to indent.
+   * @param level Initial indentation level to use.
+   * @param syntax The syntax analyzer to use.
+   * @return A string with the indented statement.
+   */
+  static QString indentStatement(statement &stat,int level,toSyntaxAnalyzer &conn);
+public:
+  /** Get current settings.
+   */
+  static settings getSetting(void)
+  { return Settings; }
+  /** Get current settings.
+   */
+  static void setSetting(const settings &setting)
+  { Settings=setting; }
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/totabwidget_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/totabwidget_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/totabwidget_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,155 @@
+<HTML>
+<HEAD>
+<TITLE>Source: totabwidget.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: totabwidget.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOTABWIDGET_H
+#define TOTABWIDGET_H
+
+#include <qtabbar.h>
+#include <qtabwidget.h>
+#include <list>
+
+/** An extension of the regular tab bar with an extension to be able to hide
+ * tabs without removing them.
+ */
+
+class toTabBar : public QTabBar {
+  Q_OBJECT
+
+  struct barTab {
+    QTab *Tab;
+    bool Shown;
+    QRect Rect;
+
+    barTab(QTab *tab,bool shown)
+    { Tab=tab; Shown=shown; }
+  };
+
+  std::list<barTab> Tabs;
+  QTab *copyTab(QTab *tab);
+public:
+  /** Constructor.
+   */
+  toTabBar(QWidget *parent=0,const char *name=0)
+    : QTabBar(parent,name)
+  { }
+  /** Reimplemented for internal reasons.
+   */
+  virtual int insertTab(QTab *newTab,int ix=-1);
+  /** Reimplemented for internal reasons.
+   */
+  virtual int addTab(QTab *newTab)
+  { return insertTab(newTab); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void removeTab(QTab *t);
+
+  /** Reimplemented for internal reasons.
+   */
+  virtual void layoutTabs();
+  /** Specify if a tab is shown.
+   * @param ix Index of the tab to change visibility.
+   * @param shown Show tab if true, hide if false.
+   */
+  virtual void setTabShown(int ix,bool shown);
+};
+
+/** An extension of the regular tab widget with posibility to hide tabs.
+ */
+class toTabWidget: public QTabWidget{ 
+  Q_OBJECT
+  toTabBar *Tabs;
+public:
+  /** Constructor.
+   */
+  toTabWidget(QWidget *parent=0,const char *name=0,WFlags f=0)
+    : QTabWidget(parent,name,f)
+  { setTabBar(Tabs=new toTabBar(this)); }
+
+  /** Specify if a tab is shown.
+   * @param w Widget to change visibility.
+   * @param shown Show tab if true, hide if false.
+   */
+  virtual void setTabShown(QWidget *w, bool value);
+
+  /** Specify that a tab is shown.
+   * @param w Tab to show.
+   */
+  virtual void showTab(QWidget *w)
+  { setTabShown(w,true); }
+  /** Specify that a tab is hidden.
+   * @param w Tab to hide.
+   */
+  virtual void hideTab(QWidget *w)
+  { setTabShown(w,false); }
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/totemplate_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/totemplate_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/totemplate_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,346 @@
+<HTML>
+<HEAD>
+<TITLE>Source: totemplate.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: totemplate.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOTEMPLATE_H
+#define TOTEMPLATE_H
+
+#include "tobackground.h"
+#include "tohelp.h"
+#include "toresultview.h"
+
+#include <list>
+#include <map>
+
+#include <qvbox.h>
+
+class QListView;
+class QListViewItem;
+class QSplitter;
+class QTextView;
+class QToolBar;
+class toConnection;
+class toListView;
+class toTemplateItem;
+class toTemplateProvider;
+class toNoBlockQuery;
+
+/** Not part of the API.
+ * @internal
+ */
+
+class toTemplate : public QVBox, public toHelpContext {
+  Q_OBJECT
+
+  QToolBar *Toolbar;
+  toListView *List;
+  QWidget *WidgetExtra;
+  QWidget *Result;
+  QVBox *Frame;
+public:
+  toTemplate(TODock *parent);
+  virtual ~toTemplate();
+  void setWidget(QWidget *widget);
+  QWidget *widget(void)
+  { return WidgetExtra; }
+  QWidget *frame(void);
+
+  static QWidget *parentWidget(QListViewItem *item);
+  static toTemplate *templateWidget(QListViewItem *item);
+  static toTemplate *templateWidget(QListView *obj);
+  static bool templateShown();
+
+  virtual bool canHandle(toConnection &)
+  { return true; }
+
+  void closeFrame(void);
+  void showResult(bool show);
+
+  void hideEvent(QHideEvent *);
+  void showEvent(QShowEvent *);
+public slots:
+  void expand(QListViewItem *item);
+  void collapse(QListViewItem *item);
+  void selected(QListViewItem *item);
+  void hideTemplates();
+};
+
+/**
+ * This is the base class of a provider of template items. Usually it is created with
+ * a static object just like the tools. It can also be assumed that a maximum of one
+ * template window will be opened.
+ */
+
+class toTemplateProvider {
+  /** List of currently available template providers.
+   */
+  static std::list<toTemplateProvider *> *Providers;
+  static bool Shown;
+  static QCString *ToolKey;;
+  QCString Name;
+  bool Open;
+public:
+  toTemplateProvider(const QCString &name);
+  virtual ~toTemplateProvider()
+  { }
+
+  /** Get name of this template provider.
+   */
+  const QCString name()
+  { return Name; }
+
+  /** Insert a parent item for this template provider into a list view.
+   * @param parent The list into which to insert the item.
+   * @param toolbar The template toolbar if any buttons are to be added on it.
+   */
+  virtual void insertItems(QListView *parent,QToolBar *toolbar)=0;
+
+  /** Save settings for this template provider.
+   * @param data Map of data.
+   * @param prefix Prefix of where to save info.
+   */
+  virtual void exportData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Save settings for all template providers.
+   * @param data Map of data.
+   * @param prefix Prefix of where to save info.
+   */
+  static void exportAllData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Import data
+   * @param data Data to read from a map.
+   * @param prefix Prefix to read data from.
+   */
+  virtual void importData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Import data for all template providers.
+   * @param data Data to read from a map.
+   * @param prefix Prefix to read data from.
+   */
+  static void importAllData(std::map<QCString,QString> &data,const QCString &prefix);
+
+  /** Used internally to indicate if template help is shown.
+   */
+  static void setShown(bool shown);
+  /** Used internally to indicate tool key string
+   */
+  static void setToolKey(const QCString &key);
+
+  friend class toTemplate;
+};
+
+/** This is an item that is contained in a template. It is different in the expand and
+ * collapse methods that are called when this item is expanded or collapsed from the
+ * template widget.
+ */
+class toTemplateItem : public toResultViewItem {
+  /** The provider responsible for this item.
+   */
+  toTemplateProvider &Provider;
+public:
+  /** Create an item.
+   * @param prov Provider for this item.
+   * @param parent Parent of this item.
+   * @param name Contents of the first column of the item.
+   */
+  toTemplateItem(toTemplateProvider &prov,QListView *parent,const QString &name)
+    : toResultViewItem(parent,NULL,name),Provider(prov)
+  { }
+  /** Create an item.
+   * @param parent Parent of this item.
+   * @param name Contents of the first column of the item.
+   * @param after The item to put this item after.
+   */
+  toTemplateItem(toTemplateItem *parent,const QString &name,QListViewItem *after=NULL)
+    : toResultViewItem(parent,after,name),Provider(parent->provider())
+  { }
+  /** Get a reference to the provider of this item.
+   * @return Reference to provider.
+   */
+  toTemplateProvider &provider(void)
+  { return Provider; }
+  /** This function is called when the item is expanded and can be used to fill up the
+   * list when needed.
+   */
+  virtual void expand(void)
+  { }
+  /** This function is called when the item is selected by doubleclicking or pressing return.
+   */
+  virtual void selected(void)
+  { }
+  /** This function is called when the item is collapsed.
+   */
+  virtual void collapse(void)
+  { }
+  /** This function can be used to return a widget that is displays extra information for
+   * this item. Return NULL if no widget is to be displayed. The widget will be deleted
+   * when this item is no longer shown.
+   */
+  virtual QWidget *selectedWidget(QWidget *parent);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void setSelected(bool sel);
+};
+
+/** This class represent a template item that have an extra text to describe it if it is
+ * selected.
+ */
+
+class toTemplateText : public toTemplateItem {
+  /** The note to display.
+   */
+  const QString Note;
+public:
+  /** Create an item.
+   * @param parent Parent of this item.
+   * @param name Contents of the first column of the item.
+   * @param note Extra text to display if item is selected.
+   */
+  toTemplateText(toTemplateItem *parent,const QString &name,const QString &note)
+    : toTemplateItem(parent,name), Note(note)
+  { }
+  /** Reimplemented for internal reasons.
+   */
+  virtual QWidget *selectedWidget(QWidget *parent);
+};
+
+class toTemplateSQL;
+
+/** Used by toTemplateSQL. Only for internal use.
+ * @internal
+ */
+
+class toTemplateSQLObject : public QObject {
+  Q_OBJECT
+
+  toNoBlockQuery *Query;
+  toBackground Poll;
+  toTemplateSQL *Parent;
+  toTemplateSQLObject(toTemplateSQL *parent);
+  virtual ~toTemplateSQLObject();
+  void expand(void);
+
+  friend class toTemplateSQL;
+private slots:
+  void poll(void); 
+};
+
+/** This class represent an item that when expanded will execute an SQL statement
+ * and create child items which are the result of the query.
+ */
+
+class toTemplateSQL :public toTemplateItem {
+  toTemplateSQLObject Object;
+
+  /** Connection to run statement in
+   */
+  toConnection *Connection;
+  /** Statement to run.
+   */
+  QString SQL;
+protected:
+  /** Create an item.
+   * @param conn Connection to query.
+   * @param parent Parent of this item.
+   * @param name Contents of the first column of the item.
+   * @param sql SQL statement.
+   */
+  toTemplateSQL(toTemplateItem *parent,
+		const QString &name,const QString &sql);
+public:
+  /** Create an item.
+   * @param conn Connection to query.
+   * @param parent Parent of this item.
+   * @param name Contents of the first column of the item.
+   * @param sql SQL statement.
+   */
+  toTemplateSQL(toConnection &conn,toTemplateItem *parent,
+		const QString &name,const QString &sql);
+  /** Get connection of this item.
+   * @return Reference to connection.
+   */
+  virtual toConnection &connection()
+  { return *Connection; }
+  /** Create a child of this item.
+   * @param name Name of the child.
+   * @return A newly created item.
+   */
+  virtual toTemplateItem *createChild(const QString &name)
+  { return new toTemplateItem(this,name); }
+  /** Get parameters to pass to query.
+   * @return List of strings to pass as input parameters to query
+   */
+  virtual toQList parameters(void)
+  { toQList ret; return ret; }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void expand(void);
+  friend class toTemplateSQLObject;
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/totextview_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/totextview_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/totextview_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,121 @@
+<HTML>
+<HEAD>
+<TITLE>Source: totextview.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: totextview.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOTEXTVIEW_H
+#define TOTEXTVIEW_H
+
+#include "toeditwidget.h"
+
+#include <qtextview.h>
+
+/** A tora editwidget version of the @ref QTextView widget.
+ */
+
+class toTextView : public QTextView, public toEditWidget {
+public:
+  /** See @ref QTextView
+   */
+  toTextView(QWidget *parent=0,const char *name=0)
+    : QTextView(parent,name)
+    , toEditWidget(false,true,false,
+		   false,false,
+		   false,true,false,
+		   false,true,false)
+  { }
+  /** See @ref QTextView
+   */
+  toTextView(const QString&text,const QString &context=QString::null,
+	    QWidget *parent=0,const char *name=0)
+    : QTextView(text,context,parent,name)
+    , toEditWidget(false,true,false,
+		   false,false,
+		   false,true,false,
+		   false,true,false)
+  { }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editCopy(void)
+  { copy(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual void editSelectAll(void)
+  { selectAll(); }
+  /** Reimplemented for internal reasons.
+   */
+  virtual bool editSave(bool);
+  /** Reimplemented for internal reasons.
+   */
+  virtual void focusInEvent (QFocusEvent *e)
+  { receivedFocus(); QTextView::focusInEvent(e); }
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tothread_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tothread_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tothread_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,308 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tothread.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tothread.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOTHREAD_H
+#define TOTHREAD_H
+
+#include <qthread.h>
+
+/** This is an abstract class that defines something that is to be performed by a
+ * thread.
+ */
+class toTask {
+public:
+  virtual ~toTask() { }
+  /** This member is called when the class is started.
+   */
+  virtual void run(void) = 0;
+};
+
+#ifndef QT_THREAD_SUPPORT
+#include <semaphore.h>
+
+class toSemaphore {
+private:
+  sem_t Semaphore;
+  void init(int val);
+
+  toSemaphore(const toSemaphore &);
+public:
+  toSemaphore();
+  toSemaphore(int val);
+  ~toSemaphore();
+
+  void up();
+  void down();
+  int getValue();
+};
+
+#else
+
+/** Encapsulation of pthread semaphores. A semaphore can be raise to any value
+ * but will wait till raised above zero when lowered below 0. Can also be implemented
+ * without pthreads using Qt multithreaded primitives. Observe that these function
+ * different than Qt semaphores.
+ */
+
+class toSemaphore {
+private:
+  QMutex Mutex;
+  QWaitCondition Condition;
+  int Value;
+public:
+  /** Create semaphore
+   */
+  toSemaphore()
+    : Condition()
+  { Value=0; }
+  /** Unimplemented copy constructor.
+   */
+  toSemaphore(const toSemaphore &);
+  /** Create semaphore
+   * @param val Value of new semaphore.
+   */
+  toSemaphore(int val)
+    : Condition()
+  { Value=val; }
+
+  /** Increase semaphore value by 1.
+   */
+  void up();
+  /** Decrease semaphore value by 1, wait for it to never go below 0.
+   */
+  void down();
+  /** Get current semaphore value.
+   */
+  int getValue();
+};
+
+#endif
+
+#include <list>
+
+#ifdef WIN32
+
+class toLock {
+private:
+  QMutex Mutex;
+public:
+  toLock(void)
+    : Mutex(false)
+  { }
+  toLock(const toLock &);
+
+  void lock(void)
+  { Mutex.lock(); }
+  void unlock(void)
+  { Mutex.unlock(); }
+};
+
+class toThread {
+private:
+  /** Not part of the API.
+   */
+
+  class taskRunner : public QThread {
+  public:
+    toSemaphore StartSemaphore;
+    toTask *Task;
+    taskRunner(toTask *);
+    virtual void run(void);
+    friend class toThread;
+  } Thread;
+  static std::list<toThread *> *Threads;
+  static toLock *Lock;
+  static int LastID;
+  static __declspec( thread ) int ThreadID;
+  static int MainThread;
+
+  toThread(const toThread &);
+public:
+  toThread(toTask *);
+  ~toThread();
+  
+  void start(void);
+  void startAsync(void);
+  static void msleep(int msec);
+  static bool mainThread(void);
+  friend class taskRunner;
+};
+
+#else
+#include <pthread.h>
+#include <signal.h>
+#include <time.h>
+
+/** A wrapper around the pthread mutexfunctions. A lock can only be locked
+ *  by one thread at a time and is the basis of most thread synchronisation.
+ */
+
+class toLock {
+private:
+  /** Actual pthread mutex of class.
+   */
+  pthread_mutex_t Mutex;
+  toLock(const toLock &);
+public:
+  /** Create lock
+   */
+  toLock(void);
+  ~toLock();
+
+  /** Lock this lock.
+   */
+  void lock(void);
+  /** Unlock this lock.
+   */
+  void unlock(void);
+};
+
+/** Used to create new threads of execution. When a thread exits it will delete the
+ * thread and task objects so the calling thread must never delete a started thread.
+ */
+
+class toThread {
+private:
+  static toThread *DeleteThread;
+  static toLock *Lock; 
+ /** PThread identifier.
+   */
+  pthread_t		Thread;
+  /** Thread attributes.
+   */
+  pthread_attr_t	ThreadAttr;
+  /** Task to run in new thread.
+   */
+  toTask		*Task;
+  /** Semaphore that is raised when new thread has started running.
+   */
+  toSemaphore		StartSemaphore;
+  /** Initialise thread attributes.
+   */
+  void			initAttr(void);
+  /** Called when thread is started to execute task. Pointer to @ref toThread
+   * is passed as parameter.
+   */
+  friend void		*toThreadStartWrapper(void*);
+  /** Main thread id
+   */
+  static pthread_t MainThread;
+  
+  toThread(const toThread &);
+public:
+  /** Create thread.
+   * @param task Task to run.
+   */
+  toThread(toTask *task);
+  ~toThread();
+
+  /** Start thread and wait for other thread to start running.
+   */
+  void start(void);
+  /** Start thread and continue executing this thread until normal scheduling
+   * handles over execution to child thread.
+   */
+  void startAsync(void);
+  /** Sleep in milliseconds.
+   */
+  static void msleep(int msec);
+  /** Returns true if this is the main thread.
+   */
+  static bool mainThread(void);
+};
+
+#endif
+
+/** This is a convenience class that holds a lock for the duration of the scope
+ * of the object. It is very convenient to use if exceptions can be thrown, simply
+ * declare an auto @ref toLocker to hold the lock. If any exception is thrown the
+ * locker will be deallocated and the lock released.
+ */
+
+class toLocker {
+private:
+  /** Lock held.
+   */
+  toLock &Lock;
+  toLocker(const toLocker &);
+public:
+  /** Create locker.
+   * @param lock Lock to hold.
+   */
+  toLocker(toLock &lock)
+    : Lock(lock)
+  { Lock.lock(); }
+  ~toLocker()
+  { Lock.unlock(); }
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/totool_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/totool_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/totool_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,451 @@
+<HTML>
+<HEAD>
+<TITLE>Source: totool.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: totool.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOTOOL_H
+#define TOTOOL_H
+
+#include <map>
+
+#include <qobject.h>
+#include <qstring.h>
+#include <qvbox.h>
+
+class toConnection;
+class toTimer;
+
+/**
+ * Abstract baseclass for tools.
+ *
+ * This class is the baseclass of all classes defining tools. It
+ * contains functions for defining the priority and name of the tool,
+ * as well as virtual functions to define it's place in the user
+ * interface. Further it contains methods to access configuration
+ * settings.
+ *
+ * To use this class you create a child which is then instantiated once
+ * which inserts that tool in the global tool map (See @ref tools). You
+ * should never delete a tool unless on exit. Usually tools are instantiated
+ * statically in the global scope.
+ */
+
+class toTool : public QObject {
+  Q_OBJECT
+private:
+  /**
+   * Name of the tool.
+   */
+  QCString Name;
+  /**
+   * Key of the tool, this is used for sorting.
+   */
+  QCString Key;
+  /**
+   * Priority, used to determine in which order the tools should be listed.
+   */
+  int Priority;
+  /**
+   * A map of @ref Key to tools. Used to keep track of the different tools
+   * available.
+   */
+  static std::map<QCString,toTool *> *Tools;
+  /**
+   * A map containing the available configuration settings. By convention the
+   * character ':' is used to separate parts of the path.
+   *
+   * @see globalConfig
+   * @see globalSetConfig
+   * @see config
+   * @see setConfig
+   */
+  static std::map<QCString,QString> *Configuration;
+  /**
+   * Contain the pixmap of this tool if any. Used for the toolbar and menu entries.
+   */
+  QPixmap *ButtonPicture;
+
+  /**
+   * Load configuration from file.
+   */
+  static void loadConfig(void);
+protected:
+  /**
+   * Should return the xpm used to create the @ref ButtonPicture.
+   */
+  virtual const char **pictureXPM(void);
+public:
+  /**
+   * Get the name.
+   *
+   * @return Name of tool.
+   */
+  QCString name() const
+  { return Name; }
+  /**
+   * Get the name.
+   *
+   * @return Name of tool.
+   */
+  QCString key() const
+  { return Key; }
+  /**
+   * Get the priority.
+   *
+   * @return Priority of tool.
+   */
+  int priority() const
+  { return Priority; }
+  /**
+   * This should never be called, but if it is. Erases the tool from the list of
+   * available tools. WARNING: It will not remove any of it's open tools.
+   */
+  ~toTool();
+
+  /**
+   * Create a tool. Remember that usually the main window is not created here.
+   *
+   * @param priority Priority of the created tool.
+   * @param name Name of tool.
+   */
+  toTool(int priority,const char *name);
+  /**
+   * Get the image to display in the toolbar.
+   *
+   * @return Pointer to image in toolbar or NULL if no image should be displayed.
+   */
+  virtual const QPixmap *toolbarImage();
+  /**
+   * Get the name of the menuitem to be displayed in the menu.
+   *
+   * @return A string containing the name of the menuentry or NULL if no menuentry should
+   *         be created.
+   */
+  virtual const char *menuItem()
+  { return NULL; }
+  /**
+   * Get toolbar tip of the toolbar button. Defaults to same as @ref menuItem.
+   *
+   * @return Toolbar tip string.
+   */
+  virtual const char *toolbarTip()
+  { return menuItem(); }
+
+  /** Check if the tool can handle a specific connection. Default is to only handle
+   * connections from the provider Oracle.
+   * @return True if connection can be handled.
+   */
+  virtual bool canHandle(toConnection &conn);
+  /**
+   * This function is called as a last step after the main widget is created. It could
+   * be used to insert the tool pretty much anywhere in the user interface if the toolmenu,
+   * toolbar is not sufficient.
+   *
+   * @param toolid The tool menu id that should be used if it inserts a custom menu entry.
+   */
+  virtual void customSetup(int toolid);
+  /**
+   * Create a new tool window.
+   *
+   * @param parent Parent window, which is the worksheet of the main window.
+   * @param connection The database connection that this tool should operate on.
+   */
+  virtual QWidget *toolWindow(QWidget *parent,toConnection &connection) = 0;
+  /**
+   * Create and return configuration tab for this tool. The returned widget should also
+   * be a childclass of @ref toSettingTab.
+   *
+   * @return A pointer to the widget containing the setup tab for this tool or NULL of
+   * no settings are available.
+   */
+  virtual QWidget *configurationTab(QWidget *parent);
+
+  /** Display an about dialog for this tool.
+   * @param parent The parent widget of the about dialog.
+   */
+  virtual void about(QWidget *parent);
+  /** Indicate whether or not this tool has an about dialog.
+   */
+  virtual bool hasAbout(void)
+  { return false; }
+
+  /**
+   * Get access to the map of tools. Don't modify it. Observe that the index string is not
+   * the name of the tool but an internal key used to get tools sorted in the correct
+   * priority order.
+   *
+   * @see Tools
+   * @return A reference to the tool map.
+   */
+  static std::map<QCString,toTool *> &tools(void)
+  { if (!Tools) Tools=new std::map<QCString,toTool *>; return *Tools; }
+  /**
+   * Get a pointer to the tool with a specified key.
+   *
+   * @see Tools
+   * @return A pointer to the tool or NULL if tool doesn't exist.
+   */
+  static toTool *tool(const QCString &key);
+  /**
+   * Save configuration to file.
+   */
+  static void saveConfig(void);
+  /**
+   * Get value of a setting.
+   *
+   * Setting names are hierachical separated by ':' instead of '/' usually used
+   * in filenames. As an example all settings for the tool 'Example' would be
+   * under the 'Example:{settingname}' name.
+   *
+   * @param tag The name of the configuration setting.
+   * @param def Default value of the setting, if it is not available.
+   */
+  static const QString &globalConfig(const QCString &tag,const QCString &def);
+  /**
+   * Change a setting. Depending on the implementation this can change the
+   * contents on disk or not.
+   *
+   * Setting names are hierachical separated by ':' instead of '/' usually used
+   * in filenames. As an example all settings for the tool 'Example' would be
+   * under the 'Example:{settingname}' name.
+   *
+   * @param tag The name of the configuration setting.
+   * @param def Contents of this setting.
+   */
+  static void globalSetConfig(const QCString &tag,const QString &value);
+  /**
+   * Remove a setting. Can be usefull for removing sensetive information.
+   * @param tag The name of the configuration setting to remove.
+   */
+  static void globalEraseConfig(const QCString &tag);
+
+  /**
+   * Get tool specific settings.
+   *
+   * Setting names are hierachical separated by ':' instead of '/' usually used
+   * in filenames. As an example all settings for the tool 'Example' would be
+   * under the 'Example:{settingname}' name.
+   *
+   * @param tag The name of the configuration setting.
+   * @param def Contents of this setting.
+   */
+  const QString &config(const QCString &tag,const QCString &def);
+  /**
+   * Change toolspecific setting. Depending on the implementation this can change the
+   * contents on disk or not.
+   *
+   * Setting names are hierachical separated by ':' instead of '/' usually used
+   * in filenames. As an example all settings for the tool 'Example' would be
+   * under the 'Example:{settingname}' name.
+   *
+   * @param tag The name of the configuration setting.
+   * @param def Default value of the setting, if it is not available.
+   */
+  void setConfig(const QCString &tag,const QString &value);
+  /**
+   * Remove a toolspecific setting. Can be usefull for removing sensetive information.
+   * @param tag The name of the configuration setting to remove.
+   */
+  void eraseConfig(const QCString &tag);
+  /**
+   * Load a string to string map from file saved by the @ref saveMap function.
+   * @param filename Filename to load
+   * @param map Reference to the map to fill with the new values.
+   */
+  static void loadMap(const QString &filename,std::map<QCString,QString> &map);
+  /**
+   * Save a string to string map to file.
+   * @see loadMap
+   * @param filename Filename to load
+   * @param map Reference to the map to fill with the new values.
+   */
+  static bool saveMap(const QString &filename,std::map<QCString,QString> &map);
+public slots:
+  /**
+   * Create a window of the current tool. This function sets up a toolwindow for
+   * this tool. It calls the @ref toolWindow function to get widget and sets it
+   * up properly.
+   */
+  void createWindow(void);
+};
+
+#include "tohelp.h"
+
+/**
+ * Abstract baseclass for widgets defining tool settings.
+ */
+
+class toSettingTab : public toHelpContext {
+public:
+  /**
+   * Default constructor.
+   * @param ctx Help context for this setting tab.
+   */
+  toSettingTab(const QString &ctx)
+    : toHelpContext(ctx)
+  { }
+  /**
+   * This function is called to save the contents of the widget when
+   * a user has pressed the ok button of the dialog. It should simply
+   * save the values in the dialog to the appropriate configuration
+   * entry using the @ref toTool::setConfig function.
+   */
+  virtual void saveSetting(void) = 0;
+};
+
+/** This class is used to hold connections for @ref toResult classes.
+ * Must be multiply inherited by a widget otherwise it will go kaboom.
+ * It will dynamic cast itself to a QWidget from time to time so if that
+ * doesn't resolve correctly it will not work.
+ */
+class toConnectionWidget {
+  toConnection *Connection;
+  QWidget *Widget;
+public:
+  /** Constructor with the connection it should be set to initially.
+   */
+  toConnectionWidget(toConnection &conn,QWidget *widget);
+  /** Constructor without a connection. Will inherit the connection from a parent connection widget.
+   */
+  toConnectionWidget(QWidget *widget);
+  /** Destructor.
+   */
+  virtual ~toConnectionWidget();
+  /** Change connection of the widget.
+   */
+  virtual void setConnection(toConnection &conn);
+  /** Get the connection it is pointed to.
+   */
+  virtual toConnection &connection();
+};
+
+/** Simple baseclass for widgets defining the main tool widget. It is in
+ * no way mandatory and all it does is register the widget in the connetion.
+ */
+class toToolWidget : public QVBox, public toHelpContext, public toConnectionWidget {
+  Q_OBJECT
+  toTimer *Timer;
+  toTool &Tool;
+private slots:
+  void parentConnection(void);
+signals:
+  /** Emitted when the connection is changed.
+   */
+  void connectionChange(void);
+public:
+  /** Create widget.
+   * @param ctx Help context for this tool.
+   * @param parent Parent widget.
+   * @param conn Connection of widget.
+   * @param name Name of widget.
+   */
+  toToolWidget(toTool &tool,
+	       const QString &ctx,
+	       QWidget *parent,
+	       toConnection &conn,
+	       const char *name=NULL);
+  ~toToolWidget();
+  /** Get the current connection.
+   * @return Reference to connection.
+   */
+  toConnection &connection()
+  { return toConnectionWidget::connection(); }
+  /** Get the tool for this tool widget.
+   * @return Reference to a tool object.
+   */
+  toTool &tool(void)
+  { return Tool; }
+  /** Check if this tool can handle a specific connection.
+   * @param provider Name of connection.
+   * @return True if connection is handled.
+   */
+  virtual bool canHandle(toConnection &conn)
+  { return Tool.canHandle(conn); }
+  /** Change connection of tool.
+   */
+  void setConnection(toConnection &conn);
+  /** Get timer of tool. Used by some results to get update time.
+   * @return Pointer to a timer object.
+   */
+  toTimer *timer(void);
+
+  /** Export data to a map.
+   * @param data A map that can be used to recreate the data of a chart.
+   * @param prefix Prefix to add to the map.
+   */
+  virtual void exportData(std::map<QCString,QString> &data,const QCString &prefix);
+  /** Import data
+   * @param data Data to read from a map.
+   * @param prefix Prefix to read data from.
+   */
+  virtual void importData(std::map<QCString,QString> &data,const QCString &prefix);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/tovisualize_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/tovisualize_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/tovisualize_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,107 @@
+<HTML>
+<HEAD>
+<TITLE>Source: tovisualize.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: tovisualize.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef TOVISUALIZE_H
+#define TOVISUALIZE_H
+
+#include <qvbox.h>
+
+class QComboBox;
+class QToolButton;
+class toListView;
+
+/** This widget is used to visualize the data in a toListView into charts.
+ */
+class toVisualize : public QVBox {
+  Q_OBJECT
+
+  QComboBox *Type;
+  QComboBox *Title;
+
+  QWidget *Result;
+  toListView *Source;
+
+  QToolButton *Legend;
+  QToolButton *Grid;
+  QToolButton *Axis;
+public:
+  /** Create visualize widget.
+   * @param source Source list view to get data from.
+   */
+  toVisualize(toListView *Source,QWidget *parent,const char *name=NULL);
+public slots:
+  /** Refresh result
+   */
+  void display(void);
+};
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api/utils_h.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api/utils_h.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api/utils_h.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,536 @@
+<HTML>
+<HEAD>
+<TITLE>Source: utils.h</TITLE>
+
+<META NAME="Generator" CONTENT="KDOC ">
+</HEAD>
+<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
+<TABLE WIDTH="100%" BORDER="0">
+<TR>
+<TD>
+	<TABLE BORDER="0">
+		<TR><TD valign="top" align="left" cellspacing="10">
+		<h1>Source: utils.h</h1>
+		</TD>
+		<TD valign="top" align="right" colspan="1"></TD></TR>
+	</TABLE>
+	<HR>
+	<TABLE BORDER="0">
+		
+	</TABLE>
+	</TD>
+<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
+<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
+<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
+<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
+<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
+</TABLE></TD></TR></TABLE>
+<pre>
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ * 
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#ifndef UTILS_H
+#define UTILS_H
+
+#include <list>
+#include <map>
+
+#include <qmainwindow.h>
+#include <qtoolbutton.h>
+
+#ifdef TO_KDE
+#include <kapp.h>
+#if KDE_VERSION < 220
+#define TOPrinter QPrinter
+#else
+#define TOPrinter KPrinter
+#define TO_HAS_KPRINT
+#endif
+#define TOFileDialog KFileDialog
+#else
+#define TOPrinter QPrinter
+#define TOFileDialog QFileDialog
+#endif
+#define TOMessageBox QMessageBox
+#define TODock QWidget
+
+#if 0
+/**
+ * The class to use for a printer object.
+ */
+class TOPrinter : public QPrinter {
+
+};
+/**
+ * The class to use for a dock widget.
+ */
+class TODock : public QWidget {
+
+};
+/**
+ * The class to use for a file dialog.
+ */
+class TOFileDialog : public QFileDialog {
+
+};
+/**
+ * The class to use for a messagebox.
+ */
+class TOMessageBox : public QMessageBox {
+
+};
+#endif
+
+class QComboBox;
+class QListView;
+class QListViewItem;
+class QToolBar;
+class QWidget;
+class toConnection;
+class toMain;
+class toQValue;
+class toTimer;
+class toToolWidget;
+
+/** Display a message in the statusbar of the main window.
+ * @param str Message to display
+ * @param save If true don't remove the message after a specified interval.
+ * @param log Log message. Will never log saved messages.
+ */
+void toStatusMessage(const QString &str,bool save=false,bool log=true);
+/** Get an address to a SQL statement in the SGA. The address has the form
+ * 'address:hash_value' which are resolved from the v$sqltext_with_newlines
+ * view in Oracle.
+ * @param conn Connection to get address from
+ * @param sql Statement to get address for.
+ * @return String with address in.
+ * @exception QString if address not found.
+ */
+QString toSQLToAddress(toConnection &conn,const QString &sql);
+/** Get the full SQL of an address (See @ref toSQLToAddress) from the
+ * SGA.
+ * @param conn Connection to get address from
+ * @param sql Address of SQL.
+ * @return String with SQL of statement.
+ * @exception QString if address not found.
+ */
+QString toSQLString(toConnection &conn,const QString &address);
+/** Make a column name more readable.
+ * @param col Name of column name, will be modified.
+ */
+void toReadableColumn(QString &col);
+/** Get the current database time in the current sessions dateformat.
+ * @param conn Connection to get address from.
+ * @return String with the current date and time.
+ */
+QString toNow(toConnection &conn);
+/** Set the current session type (Style)
+ * @param str Session to set, can be any of Motif, Motif Plus, SGI, CDE, Windows and Platinum
+ * @exception QString if style not available.
+ */
+void toSetSessionType(const QString &str);
+/** Get current session type (Style)
+ * @return A string describing the current style.
+ * @see toSetSessionType
+ */
+QString toGetSessionType(void);
+/** Get the available styles.
+ */
+QStringList toGetSessionTypes(void);
+/** Create or fill a combobox with refresh intervals.
+ * @param parent Parent of created combobox.
+ * @param name Name of created combobox.
+ * @param def Default value of the combobox.
+ * @param item Combo box to fill. If not specified a new combobox is created.
+ */
+QComboBox *toRefreshCreate(QWidget *parent,const char *name=NULL,const QString &def=QString::null,
+			   QComboBox *item=NULL);
+/** Set a timer with the value from a refresh combobox (See @ref toRefreshCreate).
+ * @param timer Timer to set timeout in.
+ * @param str String from currentText of combobox. If empty, set to default.
+ */
+void toRefreshParse(toTimer *timer,const QString &str=QString::null);
+/** Get information about wether this TOra has plugin support or not.
+ * @return True if plugin support is enabled.
+ */
+bool toMonolithic(void);
+/** Make a deep copy of a string. Usefull when sharing copying strings between threads.
+ * @param str String to copy
+ * @return Copied string.
+ */
+QString toDeepCopy(const QString &str);
+/** Allocate a toolbar. This is needed since Qt and KDE use different toolbars.
+ * @param parent Parent of toolbar.
+ * @param name Name of toolbar.
+ * @return A newly created toolbar.
+ */
+QToolBar *toAllocBar(QWidget *parent,const QString &name);
+/** Allocate a new docked window. This is needed since Qt and KDE docks windows differently
+ * (Qt 2.x doesn't even have support for docked windows). Observe that you must attach a
+ * dock using @ref toAttachDock after allocating it.
+ * @param name Name of window.
+ * @param db Database name or empty if N/A.
+ * @param icon Icon of new dock.
+ * @return A newly allocated fock.
+ */
+TODock *toAllocDock(const QString &name,
+		    const QString &db,
+		    const QPixmap &icon);
+/** Attach a dock to a specified position.
+ * @param dock Dock to attach
+ * @param container Whatever container is supposed to be in the dock window.
+ * @param place Where to place the dock.
+ */
+void toAttachDock(TODock *dock,QWidget *container,QMainWindow::ToolBarDock place);
+/** Decode a size string this basically converts "KB" to 1024, "MB" to 1024KB and
+ * everything else to 1.
+ * @return Multiplier specified by string.
+ */
+int toSizeDecode(const QString &str);
+/**
+ * Check that a key sequence is valid and return same sequence
+ */
+QKeySequence toKeySequence(const QString &keysequence);
+/**
+ * Check if a key sequence and a key event represent the same key and return if that is the case.
+ * Only support single key keysequences.
+ * @param event Key event.
+ * @param key Key sequence.
+ */
+bool toCheckKeyEvent(QKeyEvent *event,const QKeySequence &key);
+
+/** Shift the first value out of a list.
+ * @param lst List to shift value from (Also modified).
+ * @return The first value in the list.
+ */
+template <class T> T toShift(std::list<T> &lst)
+{
+  if (lst.begin()==lst.end()) {
+    T ret;
+    return ret;
+  }
+  T ret=(*lst.begin());
+  lst.erase(lst.begin());
+  return ret;
+}
+
+/** Push an object to the beginning of a list.
+ * @param lst List to push value in from of.
+ * @param str Object to push.
+ */
+template <class T> void toUnShift(std::list<T> &lst,const T &str)
+{
+  lst.insert(lst.begin(),str);
+}
+
+/** Pop the last value out of a list.
+ * @param lst List to pop value from (Also modified).
+ * @return The value in the list of objects.
+ */
+template <class T> T toPop(std::list<T> &lst)
+{
+  if (lst.begin()==lst.end()) {
+    T ret;
+    return ret;
+  }
+  T ret=(*lst.rbegin());
+  lst.pop_back();
+  return ret;
+}
+
+/** Push an object to the end of a list.
+ * @param lst List to push value in from of.
+ * @param str Object to push.
+ */
+template <class T> void toPush(std::list<T> &lst,const T &str)
+{
+  lst.push_back(str);
+}
+
+/** Convert a string representation to a font structure.
+ * @param str String representing the font.
+ * @return Font structure represented by the string.
+ * @see toFontToString
+ */
+QFont toStringToFont(const QString &str);
+/** Convert a font to a string representation.
+ * @param fnt Font to convert.
+ * @return String representation of font.
+ */
+QString toFontToString(const QFont &fnt);
+/** Get the path to the help directory.
+ * @return Path to the help directory.
+ */
+QString toHelpPath(void);
+/** Read file from filename.
+ * @param filename Filename to read file from.
+ * @return Contents of file.
+ * @exception QString describing I/O problem.
+ */
+QCString toReadFile(const QString &filename);
+/** Write file to filename.
+ * @param filename Filename to write file to.
+ * @param data Data to write to file.
+ */
+bool toWriteFile(const QString &filename,const QCString &data);
+/** Write file to filename.
+ * @param filename Filename to write file to.
+ * @param data Data to write to file.
+ */
+bool toWriteFile(const QString &filename,const QString &data);
+/** Compare two string lists.
+ * @param l1 First list to compare.
+ * @param l2 Second list to compare.
+ * @param len Length of lists to compare.
+ * @return True if all first len elements match.
+ */
+bool toCompareLists(QStringList &l1,QStringList &l2,unsigned int len);
+/** Set environment variable.
+ * @param var Variable name to set.
+ * @param val Value to set variable to.
+ */
+void toSetEnv(const QCString &var,const QCString &val);
+/** Delete an environment variable.
+ * @param var Environment variable to delete.
+ */
+void toUnSetEnv(const QCString &var);
+/** Pop up a dialog and choose a file to open.
+ * @param filename Default filename to open.
+ * @param filter Filter of filenames (See @ref QFileDialog)
+ * @param parent Parent of dialog.
+ * @return Selected filename.
+ */
+QString toOpenFilename(const QString &filename,const QString &filter,QWidget *parent);
+/** Pop up a dialog and choose a file to save to.
+ * @param filename Default filename to open.
+ * @param filter Filter of filenames (See @ref QFileDialog)
+ * @param parent Parent of dialog.
+ * @return Selected filename.
+ */
+QString toSaveFilename(const QString &filename,const QString &filter,QWidget *parent);
+
+/** Get index of menu to insert tool specific menu at.
+ * @return Index of the tool menu entry.
+ */
+int toToolMenuIndex(void);
+/** Check if a character is valid for an identifier in Oracle.
+ * @param c Character to check
+ * @return True if it is a valid Oracle identifier.
+ */
+inline bool toIsIdent(QChar c)
+{
+  return c.isLetterOrNumber()||c=='_'||c=='%'||c=='$'||c=='#';
+}
+/** Get installation directory of application (Plugin directory on unix, installation
+ * target on windows).
+ * @return String containing directory
+ */
+QString toPluginPath(void);
+/** Get a list of the latest status messages that have been shown.
+ */
+std::list<QString> toStatusMessages(void);
+/** Get a brush for a chart item.
+ * @param index Indicating which chart item to get color for.
+ */
+QBrush toChartBrush(int index);
+/** Return the connection most closely associated with a widget. Currently connections are
+ * only stored in toToolWidgets.
+ * @return Reference toConnection object closest to the current.
+ */
+toConnection &toCurrentConnection(QObject *widget);
+/** Return the tool widget most closely associated with a widget.
+ * @return Pointer to tool widget.
+ */
+toToolWidget *toCurrentTool(QObject *widget);
+/** Check if this connection is an oracle connection.
+ */
+bool toIsOracle(const toConnection &);
+/** Check if this connection is an sapdb connection.
+ */
+bool toIsSapDB(const toConnection &);
+/** Check if this connection is an MySQL connection.
+ */
+bool toIsMySQL(const toConnection &);
+/** Check if this connection is an PostgreSQL connection.
+ */
+bool toIsPostgreSQL(const toConnection &);
+/** Strip extra bind specifier from an SQL statement. (That means the extra <***> part after
+ * the bind variable.
+ * @param sql The sql to strip.
+ * @return Return a string containing the same statement without qualifiers, which means the
+ *         sql sent to Oracle and available in the SGA.
+ */
+QString toSQLStripSpecifier(const QString &sql);
+/** Strip extra binds and replace with empty strings.
+ * @param sql The sql to strip.
+ * @return Return a string containing the same statement without binds.
+ */
+QString toSQLStripBind(const QString &sql);
+/** Expand filename with $HOME to be replaced with home directory or my documents.
+ */
+QString toExpandFile(const QString &file);
+/** Convert string read by readValue to value read by readValueNull
+ */
+toQValue toUnnull(const toQValue &str);
+/** Convert string read by readValueNull to value to be read by readValue.
+ */
+toQValue toNull(const toQValue &str);
+
+/** Take a string and make it illegible. Some security through obscurity here so you will
+ * need to check the source to see what is actually done.
+ * @param str String to be made unreadable.
+ * @return Obfuscated string.
+ */
+QString toObfuscate(const QString &str);
+/** Unmake the actions of @ref toObfuscate.
+ * @param Obfuscated string.
+ * @return Original string.
+ */
+QString toUnobfuscate(const QString &str);
+/** Check if the current widget is within the active modal widget (Or no modal widget exists)
+ */
+bool toCheckModal(QWidget *widget);
+
+/** Export the contents of a map into another map.
+ * @param data The destination map.
+ * @param prefix Prefix to save map using.
+ * @param src The map to save.
+ */
+void toMapExport(std::map<QCString,QString> &data,const QCString &prefix,
+		 std::map<QCString,QString> &src);
+/** Import the contents of a map from another map.
+ * @param data The source map.
+ * @param prefix Prefix to use for restoring from map.
+ * @param dst The map to save into.
+ */
+void toMapImport(std::map<QCString,QString> &data,const QCString &prefix,
+		 std::map<QCString,QString> &dst);
+
+/** Find an item in a listview.
+ * @param list The list to search for the item.
+ * @param str The string to search for. You can specify parent/child with : in the string.
+ */
+QListViewItem *toFindItem(QListView *list,const QString &str);
+/** Whenever this class is instantiated the window will display a busy cursor. You
+ * can instantiate this function as many time as you want, only when all of them are
+ * destructed the curser will revert back to normal.
+ */
+class toBusy {
+  static unsigned int Count;
+public:
+  static void clear(void);
+  toBusy();
+  ~toBusy();
+};
+/**
+ * Set or change title of a tool window.
+ * @param tool Widget of tool.
+ * @param caption Caption to set to the tool.
+ */
+void toToolCaption(toToolWidget *tool,const QString &caption);
+/**
+ * Translate string if the context and text is strictly ASCII7 and the context doesn't
+ * contain any spaces. Otherwise just return the text.
+ * @param context The context of the text.
+ * @param text The text to translate.
+ * @return Translated text if appropriate, or original text otherwise.
+ */
+QString toTranslateMayby(const QString &context,const QString &text);
+
+/**
+ * Get maximum number of a and b.
+ */
+template <class T>
+T max(T a, T b)
+{
+    return a > b ? a : b ;
+}
+
+/**
+ * Get minimum number of a and b.
+ */
+template <class T>
+T min(T a, T b)
+{
+    return a < b ? a : b ;
+}
+
+/** Popup toolbutton that works like I think they should under Qt 3.0 as well.
+ * this means they will pop up a tool menu when you click on the button as well.
+ */
+class toPopupButton : public QToolButton {
+  Q_OBJECT
+public:
+  /** Create button, same constructor as toolbutton except no slots
+   */
+  toPopupButton(const QIconSet &iconSet,const QString &textLabel,
+                const QString &grouptext,QToolBar *parent,const char *name=0);
+  /** Create button somewhere else than in a toolbar.
+   */
+  toPopupButton(QWidget *parent,const char *name=0);
+private slots:
+  void click(void);
+};
+
+/* This can't be documented in KDoc, anyway it is an easy way to catch any exception that
+ * might be sent by TOra or OTL and display the message in the statusbar of the main window.
+ */
+#define TOCATCH \
+    catch (const QString &str) {\
+      toStatusMessage(str);\
+    }
+/* This can't be documented in KDoc, anyway it is an easy way to catch any exception that
+ * might be sent by TOra or OTL and display the message in the statusbar of the main window.
+ */
+#define TOROLLBACK(x) \
+    catch (const QString &str) { \
+      toStatusMessage(str); \
+      try { \
+        x.rollback(); \
+      } catch(...) { } \
+    }
+
+#define QTRANS(x,y) (qApp?qApp->translate(x,y):QString::fromLatin1(y))
+
+#endif
+</pre>
+<HR>
+	<table>
+	<tr><td><small>Generated by: nneul on skyhawk on Wed Feb 23 19:49:58 2005, using kdoc 2.0a54.</small></td></tr>
+	</table>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/api.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/api.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/api.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,236 @@
+ at node api
+ at section TOra Tool Tutorial
+ at cindex TOra Tool Tutorial
+
+This tutorial will create a simple tool that can execute an SQL statement and display it's content in a list. This tutorial assumes you have knowledge of C++ and Qt programming.
+
+First of all we create an include file which defines the tool widget. This is the window that will be displayed when the a tool window is created. How that happens comes later.
+
+ at example 
+ at verbatim
+
+#ifndef TOSIMPLEQUERY_H
+#define TOSIMPLEQUERY_H
+
+#include "totool.h"
+
+class toResultView;
+class QLineEdit;
+class toConnection;
+
+class toSimpleQuery : public toToolWidget {
+  Q_OBJECT
+
+  toResultView *Result;
+  QLineEdit *Statement;
+private slots:
+  void execute(void);
+public:
+  toSimpleQuery(QWidget *parent,toConnection &connection);
+};
+
+#endif
+
+ at end verbatim
+ at end example
+
+If this file is put in the main TOra source directory the configure script will generate the appropriate moc file which will be needed later. If you don't know what moc is, please go back to the Qt manual to read up on slots and signals.
+
+The rest is pretty straight forward and will be much clearer after we start working our way through the implementation of this tool.
+
+The first thing we need to do is create a tool description which is done by subclassing the toTool class. This is how we implement this class for this function.
+
+ at example 
+ at verbatim
+
+#include "totool.h"
+#include "tosimplequery.h"
+
+static char * tosimplequery_xpm[] = {
+"16 16 3 1",
+" c None",
+".c #000000",
+"+c #FFFFFF",
+"       ......   ",
+"      ..++++.   ",
+"     .+.++++.   ",
+"    .++.++++.   ",
+"   .....++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   ..........   "};
+
+class toSimpleQueryTool : public toTool {
+protected:
+  virtual char **pictureXPM(void)
+  { return tosimplequery_xpm; }
+public:
+  toSimpleQueryTool()
+    : toTool(203,"Simple Query")
+  { }
+  virtual const char *menuItem()
+  { return "Simple Query"; }
+  virtual QWidget *toolWindow(QWidget *parent,toConnection &connection)
+  {
+    return new toSimpleQuery(parent,connection);
+  }
+};
+
+static toSimpleQueryTool SimpleQueryTool;
+
+ at end verbatim
+ at end example
+
+The first thing that happens is that we include the header file which defines the tool widget and the tool definition header files. Even if this is included in the tosimplequery.h it is good practice not to assume any extra files are included by header files.
+
+Next comes a definition of an xpm pixmap. Normally these are placed in the icons directory and then included into the file as you can see in the TOra source. This is placed inline for clarity.
+
+The next one is the big one. Here we define the tool class which has a few important virtual functions.
+
+ at table @samp
+ at item pictureXPM	
+This function should if defined return a pointer to a xpm definition. This will then be used for toolbar icon, menu icon and tool window icon.
+ at samp{pictureXPM}
+
+ at item menuItem
+Should return a string containing the name of the menu item to add to the tools menu. This is also used for a tip for the toolbar icon by default.
+ at samp{menuItem}
+
+ at item toolWindow
+This function will create a new tool widget and return a pointer to it. It doesn't need to create a widget, then it should then return NULL. Some tools there might only be one per connection for instance.
+ at samp{toolWindow}
+
+ at end table
+
+The number in the constructor is a priority indicator that denote where in the list of tools this tool should be inserted, between each 100 step a separator is inserted into the toolbar and menubar.
+
+And last a not so obvious line where the an instance of the tool descriptor is instantiated. This is a feature that is used a lot in TOra. This will ensure that all tools are registered when the application is started. It also works when using modules, if this is compiled as a module the tool will be instantiated on loading without any hassle with functions with predefined names and such stuff.
+
+Lastly comes the implementation of the tool widget which is not much longer. I have divided this into several parts to simplify explaining them.
+
+ at example 
+ at verbatim
+
+#include <list>
+
+#include <qtoolbar.h>
+#include <qlabel.h>
+#include <qtoolbutton.h>
+#include <qlineedit.h>
+
+#include "tosimplequery.h"
+#include "toresultview.h"
+#include "toparamget.h"
+#include "tochangeconnection.h"
+
+#include "tosimplequery.moc"
+
+static char * execute_xpm[] = {
+"16 16 3 1",
+" c None",
+".c #000000",
+"+c #0FFE14",
+"                ",
+"                ",
+"                ",
+"     .          ",
+"     ..         ",
+"     .+.        ",
+"     .++.       ",
+"     .+++.      ",
+"     .+++.      ",
+"     .++.       ",
+"     .+.        ",
+"     ..         ",
+"     .          ",
+"                ",
+"                ",
+"                "};
+
+toSimpleQuery::toSimpleQuery(QWidget *main,toConnection &connection)
+  : toToolWidget(SimpleQueryTool,"simplequery.html",main,connection)
+{
+  QToolBar *toolbar=toAllocBar(this,"Simple Query",connection.description());
+  QPixmap executePixmap((const char **)execute_xpm);
+  new QToolButton(executePixmap,
+                  "Execute current statement",
+                  "Execute current statement",
+  this,SLOT(execute()),
+  toolbar);
+  toolbar->setStretchableWidget(new QLabel("",toolbar));
+  new toChangeConnection(toolbar);
+
+ at end verbatim
+ at end example
+
+In this part the parent constructor is called and the toolbar is set up. Also note the inclusion of the moc file which by convention is called tosimplequery.moc. One thing worth noticing here is the toAllocBar which is used to be able to transparently support either using KToolBar or QToolBar depending on whether this is a Qt or KDE application. This is very important since TOra also supports windows to which KDE is not available.
+
+The second part is the setStretchableWidget call which is used to indicate that an empty label should be stretch instead of the tool button which just looks really weird.
+
+Also worth noting is that the toToolWidget class is derived from QVBox so any widgets constructed in this widget will be lined up vertically in the order of creation.
+
+Next up is creating our widgets and connecting them.
+
+ at example 
+ at verbatim
+
+  Statement=new QLineEdit(this);
+  Result=new toResultView(this);
+  connect(Statement,SIGNAL(returnPressed()),this,SLOT(execute()));
+}
+
+ at end verbatim
+ at end example
+
+This just adds two additional widgets and connect the returnPressed signal to the execute slot. One thing to realise here is that all the toResult children will use the connection of the closest parent of type toToolWidget in the widget hierarchy. And now the last thing to do is implement the execute method.
+
+ at example 
+ at verbatim
+
+void toSimpleQuery::execute(void)
+{
+  try {
+    QString sql=Statement->text();
+    toQList params=toParamGet::getParam(this,sql);
+    Result->query(sql,params);
+  } TOCATCH
+}
+
+ at end verbatim
+ at end example
+
+The toParamGet::getParam function is used to ask for bind values in the query string. To understand what I mean try executing the query "select :hello from dual" when you try the result. The toQList is simple a list of toQValue which can hold different datatypes and converting between them transparently.
+
+Now finally to compile this module you need to add the tosimplequery.cpp file to SOURCES define in the file Makefile. To build a plugin you also need to add the following line.
+
+ at example 
+ at verbatim
+
+plugins/tosimplequery.tso:objs/tosimplequery.o
+
+ at end verbatim
+ at end example
+
+This should go among the other plugin definitions and you also need to add the plugins/tosimplequery.tso to the dependencies of tora-plugin.
+
+You must rerun configure for the tosimplequery.moc file to be generated the first time. Any subsequent changes should update the moc file automatically from the Makefile.
+
+Here are the example files in their entire.
+
+ at itemize @bullet
+
+ at item
+ at uref{tosimplequery.h}
+ at item
+ at uref{tosimplequery.cpp}
+ at end itemize 
+
+Hopefully this is a starting point to help you read the rest of the documentation and start cranking out those plugins.

Added: kde-extras/tora/branches/upstream/current/doc/help/browser.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/browser.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/browser.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,310 @@
+ at node browser
+ at section Database Browser
+ at cindex Database Browser
+
+This tool provides you a simple browser for exploring database schema objects. Initially it can be said that the browser also provides a browser like functionality for the template help (@pxref{template,Template Help})
+which is covered separately. This browser will provide you with more information and you will also in future versions of TOra be able to interact with schema objects (Dropping or create tables etc.), this is not possible in the 
+ at c @uref{template.html, template help} 
+version. The template help on the other hand is tree based and some people consider it easier and faster to work with.
+
+ at image{images/browser}
+
+ at menu
+ at c * Using the browser::           
+ at c * Available information::       
+ at c * Content editor::              
+ at c * Defining a filter::           
+ at end menu
+
+ at c @node Using the browser, Available information, browser, browser
+ at subheading Using the browser
+
+The database browser has a very simple interface with a toolbar which contain the following functions. All of these are also available in the Browser menu item except for the schema selection and change object.
+
+ at table @asis
+
+ at item @strong{Refresh}
+Refresh the displayed data from the database. Also available on the @strong{F5} key.
+
+ at item @strong{Define filter}
+Displays the define filter dialog(
+ at c @pxref{Defining a filter}
+). This is used to specify which objects to show in the browser. The default filter is to show everything. Also available on the @strong{CTRL+SHIFT+G} key.
+
+ at item @strong{Clear filter}
+Remove the current filter and revert to the default of showing everything. Also available on the @strong{CTRL+SHIFT+H} key.
+
+ at item @strong{Schema}
+The last item on the toolbar is a combo box where you can select the schema to display objects for. It defaults the schema you are currently logged in as. Only schemas that are visible to the current user is selectable in the lost (Really, TOra does not contain the secret DBA password that will always let you access everything regardless of your privileges).
+
+ at item @strong{Change connection}
+Change the connection this tool window should operate on.
+
+ at end table
+
+
+The rest of the interface consists of two tabbed windows, one within the other. The first one you can use to select the object type you want to inspect. When you have selected a type you can see the visible objects of the specified type available in the selected schema. The second tab indicate what kind of information you want to explore about the selected object and depends on the object type (
+ at c @pxref{Available information}
+.). When you select an object name in the left list you can inspect information about it to the right.
+
+You can move the keyboard focus to the schema selection using @strong{ALT+S} and to the current object list using @strong{ALT+N}.
+
+
+ at menu
+ at c * Available information::       
+ at c * Content editor::              
+ at c * Defining a filter::           
+ at end menu
+
+ at c @node Available information, Content editor, Using the browser, browser
+ at subheading Available information
+
+This is the available information for the different object types.
+
+ at multitable @columnfractions .2 .3 .5
+
+ at headitem Object type	
+ at tab Name
+ at tab Description
+
+ at item @strong{Tables}
+ at tab 
+ at tab 
+ at item 
+ at tab @strong{Columns}
+ at tab A description of the columns in the table. For more information about this information also see object description.
+ at item 
+ at tab @strong{Indexes}
+ at tab A list with the indexes that have been created for this table.
+ at item 
+ at tab @strong{References}
+ at tab Displays the foreign key constraints that references this table and the other objects that have dependencies on this table.
+ at item 
+ at tab @strong{Grants}
+ at tab The grants that have been made on this table.
+ at item 
+ at tab @strong{Triggers}
+ at tab Lists the triggers that exist for this table.
+ at item 
+ at tab @strong{Data}
+ at tab Displays the data in the table. This is the only part of the database browser that let you modify any data. For more information about how to use the content editor 
+ at c @pxref{Content editor}
+.
+ at item 
+ at tab @strong{Information}
+ at tab Contains information about the table available in the SGA including analyzed statistics etc.
+ at item 
+ at tab @strong{Script}
+ at tab This tab displays an SQL script to recreate the database object.
+
+ at item @strong{Views}
+ at tab 
+ at tab 
+ at item 
+ at tab @strong{Columns}
+ at tab A description of the columns in the view. For more information about this information also see object description.
+ at item 
+ at tab @strong{SQL}
+ at tab The SQL that defines the view.
+ at item 
+ at tab @strong{Data}
+ at tab Displays the data in the view. This is the only part of the database browser that let you modify any data. For more information about how to use the content editor (
+ at c @pxref{Content editor}
+). You can not modify some views depending on how they are defined. See the Oracle reference for more information about editing views. at item 
+ at tab @strong{Grants}
+ at tab The grants that have been made on this view.
+ at item 
+ at tab @strong{Dependencies}
+ at tab The objects that depend on this view.
+ at item 
+ at tab @strong{Script}
+ at tab This tab displays an SQL script to recreate the database object.
+
+
+ at item @strong{Indexes}
+ at tab 
+ at tab 
+ at item 
+ at tab @strong{Columns}
+ at tab The columns that the index operate on.
+ at item 
+ at tab @strong{Info}
+ at tab Information in the SGA about an index. For instance analyzed statistics available for this index.
+ at item 
+ at tab @strong{Script}
+ at tab This tab displays an SQL script to recreate the database object.
+ at item 
+ at tab @strong{Script}
+ at tab This tab displays an SQL script to recreate the database object.
+
+ at item @strong{Sequences}
+ at tab 
+ at tab 
+ at item 
+ at tab @strong{Info}
+ at tab Information about the sequence.
+ at item 
+ at tab @strong{Grants}
+ at tab The grants that have been made on this object.
+ at item 
+ at tab @strong{Script}
+ at tab This tab displays an SQL script to recreate the database object.
+
+ at item @strong{Synonyms}
+ at tab 
+ at tab 
+ at item 
+ at tab @strong{Info}
+ at tab Information about the synonyms
+ at item 
+ at tab @strong{Grants}
+ at tab The grants that have been made on this object.
+ at item 
+ at tab @strong{Script}
+ at tab This tab displays an SQL script to recreate the database object.
+
+ at item @strong{PL/SQL}
+ at tab 
+ at tab 
+ at item 
+ at tab @strong{Declaration}
+ at tab The declaration of a package or type.
+ at item 
+ at tab @strong{Body}
+ at tab The implementation of a package, body, procedure or function.
+ at item 
+ at tab @strong{Grants}
+ at tab The grants that have been made on this object.
+ at item 
+ at tab @strong{Dependencies}
+ at tab Dependencies this object has.
+ at item 
+ at tab @strong{Script}
+ at tab This tab displays an SQL script to recreate the database object.
+
+ at item @strong{Triggers}
+ at tab 
+ at tab 
+ at item 
+ at tab @strong{Info}
+ at tab Information about the trigger.
+ at item 
+ at tab @strong{Code}
+ at tab The code that implement the trigger.
+ at item 
+ at tab @strong{Columns}
+ at tab The columns this trigger operates on.
+ at item 
+ at tab @strong{Grants}
+ at tab The grants that have been made on this object.
+ at item 
+ at tab @strong{Dependencies}
+ at tab Dependencies of this object.
+ at item 
+ at tab @strong{Script}
+ at tab This tab displays an SQL script to recreate the database object.
+
+ at end multitable
+
+ at c @node  Content editor, Defining a filter, Available information, browser
+ at subheading Content editor
+
+The content let you edit the contents of a table or view. There are a few things to note about this.
+
+First of all the content editor is designed to behave nicely to the database which means that it will only save the data when it thinks you are finished editing a row. This happens when you the current row change or you commit the database. When there is unsaved data you can see it in the status bar that there exists unsaved data. Also observe that the content editor will respect the auto commit setting in the database settings.
+
+The content editor has it's own toolbar with the following buttons.
+
+
+ at table @asis
+
+ at item @strong{Define filter}
+Displays the define filter dialog. This is used to specify which objects to show in the browser. The default filter is to show everything.
+
+ at item @strong{Clear filter}
+Remove the current filter and revert to the default of showing everything.
+
+ at item @strong{Add new record}
+Add a new record to the current table.
+
+ at item @strong{Save changes}
+Save the changes made to the current row to the database. Observe that this will not commit the changes.
+
+ at item @strong{Discard changes}
+Discard the changes made to the current row to the database. Observe that this will not rollback the database connection.
+
+ at item @strong{Delete current record}
+Delete the current record from the database.
+
+ at item @strong{Go to first row}
+Go to the first record in the editor.
+
+ at item @strong{Go to previous row}
+Go to the previous record in the editor.
+
+ at item @strong{Go to next row}
+Go to the next record in the editor.
+
+ at item @strong{Go to last row}
+Go to the last record in the editor. Observe that this will read in all available records in the table into memory.
+
+ at end table
+
+The content editor can define a filter to specify which part of a table to edit. This dialog looks like this.
+
+ at image{images/contentfilter}
+
+In the @strong{selection criteria} part you can add whatever you want to go after a @strong{where} in a select statement. In the @strong{sort order} you can list the columns you want to sort on. The sort order only affect the order the records are read from the database, after they are read you can still sort on any column by clicking it. To the right is a list of available columns in the table.
+
+Finally at the bottom is a checkbox called @strong{use for all tables}. If this box is checked the index is used for all tables, if not checked you can define specific filters for each tables and the content editor will remember the different filters as you jump between tables. The reason for this is that it's quite common that not all tables have all the columns you want to filter on for a table, in this case you will get an error trying to access the table with a faulty filter setting.
+
+ at c @node Defining a filter,  , Content editor, browser
+ at subheading Defining a filter
+
+Filtering is based on the object name and can be specified in a variety of ways. This is the dialog used to specify the filter.
+
+ at image{images/browserfilter}
+
+The most important part of this dialog is the editor which let you specify the string to apply the criteria to. This is not available for No filter setting. The different available types and options are.
+
+ at table @asis
+
+ at item @strong{No filter}
+No filter specified, display all objects.
+
+ at item @strong{Start with}
+Only include objects which name starts with the specified string.
+
+ at item @strong{End with}
+Only include objects which name ends with the specified string.
+
+ at item @strong{Contains}
+Only include objects which name contain the specified string.
+
+ at item @strong{RegExp}
+Only include objects which name matches the regular expression specified in the editor. The dialect of RegExp:s is the ones in the
+version of Qt that TOra is compiled against. For more information on regular expressions check out @uref{http://doc.trolltech.com/qregexp.html}, if you are using Qt 3.0 or later you have a more advanced form of regular expressions.
+
+ at item @strong{Ignore case}
+Ignore the case when matches. Since object names are pretty much always uppercase it is probably safest to leave this on.
+
+ at item @strong{Invert selection}
+If set, include all the objects that does not meet the specified criteria instead of the ones which does.
+
+ at end table
+
+Some objects you can also search on what tablespace they are located on. This can be specified by the lower part of the dialog.
+
+ at table @asis
+
+ at item @strong{Include all}
+Include all regardless of tablespace
+
+ at item @strong{Include}
+Include the objects located on the selected tablespaces in the list below.
+
+ at item @strong{Exclude}
+Include the objects not located on the selected tablespaces in the list below.
+
+ at end table
+

Added: kde-extras/tora/branches/upstream/current/doc/help/charts.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/charts.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/charts.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,33 @@
+ at node  Using charts
+ at section Using charts
+ at cindex Using charts
+There are several different chart types in TOra, you can see them all in the screenshot below.
+
+ at image{images/charts}
+
+ at subheading Piecharts
+
+This is the most simple chart. If the chart is too small you can open a snapshot of the chart by doubleclicking it. You can also open a context menu by rightclicking it. In the context menu you can choose to print the chart as well and open a snapshot in a new window.
+
+ at subheading Linecharts & barcharts
+
+These two charts work in the same way. The difference is that in a barchart the values are added on top of each other so you can easily see the sum of all values.
+
+You can zoom a part of a chart by leftclicking it and dragging a selection. If a chart is currently zoomed the word @strong{Zoom} is printed in the upper left corner. You can remove the zooming by right clicking on the chart.
+
+The snapshot feature, context menu and printing works the same for these charts as for the piechart. In the context menu you have an additional item though that is @strong{Properties}
+
+ at image{images/chartsetup}
+
+ at table @asis
+ at item @strong{Y-Axis}	
+      This part is pretty self explanatory and is used to set up the range to display on the Y-axis of the chart. 	
+ at item @strong{Show last value}	
+      Display the last sample added to the chart under the title of the chart. 	
+ at item @strong{Show axis legend}	
+      Display text with the range and units of the axises. 	
+ at item @strong{Show chart legend}	
+      Display the colors used in the chart in a legend to the right. 	
+ at item @strong{Divide chart in grids} 	
+      How many gridlines to divide a chart into.
+ at end table

Added: kde-extras/tora/branches/upstream/current/doc/help/common.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/common.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/common.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,72 @@
+ at node common
+ at section Other common elements
+ at cindex Other common elements
+
+These describe other elements that are used in several parts of the user interface.
+
+ at menu
+* SGA Statement::               
+* Explain plan::                
+* Getting bind parameters::     
+* Object description::          
+* Memo editor::                 
+ at end menu
+
+ at node  SGA Statement
+ at subsection SGA Statement
+
+This element is used to describe an element in the SGA.
+
+ at image{images/sgastatement}
+
+The SGA statement have three tabs. The first tab called SQL simply display all of the SQL of the statement. The second tab called Execution plan displays the execution plan of the statement. This is described in more detail later. The last tab called Information simply display the information available about the statement in the SGA.
+
+ at node Explain plan
+ at subsection Explain plan
+
+This element can be either part of an SGA statement or by itself in some cases (See above for a screenshot). For more information about execution paths check the Oracle manual Designing and Tuning for Performance, chapter 5 in the 8i release.
+
+A few notes here is that the execution plan displayed here is not necessarily the same as when run depending on one of these reasons.
+
+ at itemize @bullet
+ at item It is run as a different user which doesn't access the same database objects as the user you are logged in as now.
+ at item The session running the query can have changed some optimizer parameters compared to your session.
+ at end itemize
+
+What you see in this window is the execution you would get if you ran the statement like the one you are logged in as now and in your session. One example of this problem is if a user executes SQL which accesses his own objects which doesn't have public synonyms, then another person can simply not execute the SQL without modifying it to add owner specifier to the tables which TOra will not do automatically.
+
+Explain plan requires a table to store the result in. The name of this table can be configured in the options(@pxref{preferences,Options}). If the table doesn't exist TOra will ask you if it should try to create it. Without this table you can not display execution plans in TOra.
+
+ at node Getting bind parameters
+ at subsection Getting bind parameters
+
+This dialog is displayed when input parameters are required to run the SQL. For instance the example dialog is the dialog displayed when running the following SQL in the worksheet.
+
+ at example 
+ at verbatim
+
+select * from essprc where prcid > :prcid and begrdt > :begrdt;
+
+ at end verbatim
+ at end example
+
+ at image{images/getparam}
+
+As you can see the field name as specified after the : character is presented as a title. If the same field name is used at several parts of the query you only get to specify it once. You specify the value in the editor line just to the right of the field name label. If you want to specify a NULL value check the @strong{NULL} checkbox to the right of the editor. You can also edit the value in a memo editor(@pxref{Memo editor}) pressing the @strong{Edit} button to the right on the value.
+
+The parameter editor will cache it's value so it will remember the last parameters you fed to it when you run the query again.
+
+ at node Object description
+ at subsection Object description
+
+ at image{images/describe}
+
+This is a list that describes the columns of a table or view. There is nothing much special about this view except that you can check the collected analyze statistics for the column by placing the cursor over it and reading the tooltip that will be displayed. If no tooltip is displayed there is no analyzed statistics available. Also notable is that this list is read completely from the object cache if it available. This will mean that if you are modifying the object you are modifying you need to reread the object cache before you can see the changes.
+
+ at node Memo editor
+ at subsection Memo editor
+
+ at image{images/memo}
+
+This is used to display or edit larger text than is easily entered in a oneline editor or list. To the top is a toolbar with some editing buttons. Specifically you have the save changes button to the left. You can also do this using the key @strong{CTRL+Return}. 
+You can remove the editor without saving changes using the @strong{Escape} key or closing the window.

Added: kde-extras/tora/branches/upstream/current/doc/help/current.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/current.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/current.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,11 @@
+ at node current
+ at section Current Session
+ at cindex Current Session
+
+This tool provides information about the current session.
+
+ at image{images/current}
+
+The interface for this tool is very simple. There are four tabs in the window. The first one present the @strong{privileges} currently granted to the your session. 
+Roles can be expanded to display what privileges are available through those groups. The second one present the @strong{version} of the different components in the connection. 
+The @strong{parameters} tab displays the parameters of the current session (for more information of parameter editors @pxref{tuning}). The fourth and last tab display the @strong{statistics} of the session. The statistics is shown in two columns, the first one contain the actual value, the second show the change in the value since the last update. To update press the @strong{refresh} button in the toolbar. You can also change the connection for the tool using the change connection button to the right on the toolbar.

Added: kde-extras/tora/branches/upstream/current/doc/help/database.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/database.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/database.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,54 @@
+ at node  database
+ at subsection Database Settings
+ at cindex Database Settings
+
+This page of the options contain settings on how to interact with the database.
+
+ at image{images/database}
+
+ at table @asis
+ at item @strong{Autocommit changes}	
+      If this is set any changes made to the database will be automatically committed as soon as you make them. Use this with care, 
+      the transaction handling is there for a reason you know.
+ at item @strong{Read object cache on connect}
+      If this checkbox is set TOra will start reading the object cache when you start a connection to a database. 
+      If unchecked it will start reading it when it is first used. Reading this is quite a costly query so you probably shouldn't have this 
+      checked if you are in a production environment, on a slow connection or not using the object cache. 
+      The object cache is mostly used for describing tables, the PL/SQL debugger and code completion.
+ at item @strong{Initial rows to fetch in query}
+      This setting indicates how many rows to always fetch from a query when executing it. Observe that you can always read more from the individual query just by scrolling down. Check the @strong{All} checkbox to always read all available records. Be aware that TOra will interact sluggishly or not at all while reading many lines. It will also keep the entire result in memory so checking the @strong{All} box and reading a really large table could bring your machine to it's knees.
+ at item @strong{Initially read in content editor}
+                If set to something other than @strong{All} a query will be placed only this number of rows initially from Oracle when browsing 
+                the content. 
+                The reason for this is that Oracle will be under high load if a content list is started on a large table. 
+                When this value is reached the query will be reread to fetch the rest of the values so you as a user will not see any difference.      
+ at item @strong{Maximum size display}
+                         The maximum width a list column will get automatically regardless of how large the content is. This is so you can still see the rest of the columns even if one of the first can contain very large values. You can always resize the column by hand afterwards.
+
+ at item @strong{Run UI blocking threads exclusively in main thread.}
+      Let queries normally running in the background use their own connection to the database. This is so that when a query that would block the user interface needs to be run the main connection is more likely to be free. Background queries include many parts of the database browser and all charts.
+ at item @strong{Don't reread data if query is exactly same.}
+      If checked TOra will not refresh a query if it is reexecuted exactly the same two times in a row. 
+      This is mainly usefull in the schema browser when you have a slow connection and need to switch between tabs a lot. 
+ at item @strong{Abort long running queries and reexecute in own connection.}
+      If checked TOra will abort any queries running in the main connection of the database in the background and reexecute them in their own connection to make you able to continue to work in other parts of TOra until the query gives a reply. 
+      Only queries that have not given any response at all will be aborted and moved. 
+ at item @strong{Move to own connection after}
+      The number of seconds to wait before moving the query from the main connection (See Abort long running queries and reexecute in own connection above for more info).
+ at end table
+There may also be pages under this for each individual database provider. Currently onlye Oracle uses this feature. That setup looks like this.
+
+ at image{images/oracle}
+
+ at table @asis
+ at item @strong{Checkpoint name}
+      This is a checkpoint TOra should use when it is making changes that need to be rolled back. One place where this is used is to perform explain plans without filling up the plan table. The name doesn't matter, just make sure you don't use this checkpoint name yourself.
+ at item @strong{Default date format}
+      The format that you prefer dates to be displayed. Changing this will require a reconnect to the database before it starts to operate. The string should be a standard Oracle date to string conversion specification. For more information see the Oracle SQL Reference.
+ at item @strong{Explain plan table}
+      The table to use to temporarily store explained execution plans. Use the @strong{Create Table} button to create the table if you don't have it.
+ at item @strong{Keep plans}
+      If this is check explained plans are left in the explain plan table. The normal behaviour is to rollback the explanation after it is initially read to keep the explain plan table from filling up with old plans.
+ at item @strong{Max LONG and LOB data length}
+      The amount of data to read from LONG, BLOB or CLOB data fields. If you always want all the data to be read check the @strong{Unlimited} checkbox to the right. LONG datafields can not be specified as @strong{Unlimited}, if this is specified 33000 characters are read by default.
+ at end table

Added: kde-extras/tora/branches/upstream/current/doc/help/debugger.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/debugger.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/debugger.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,138 @@
+ at node debugger
+ at section PL/SQL Debugger
+ at cindex PL/SQL Debugger
+
+This tool provides you with an advanced editor and debugger for developing PL/SQL objects.
+
+ at image{images/debugger}
+
+ at subheading Elements of the debugger window
+
+On the top of the screen is the toolbar for the debugger.
+
+Below that to the left are two panes. The top one Objects contains the available objects in the selected schema. The schema is selectable through the toolbar. Select the code object you want to debug or edit in this list or start a new object before starting to edit the code.
+
+The lower pane Contents contains the structure of the selected object. Here you can find declared methods of packages and also variables or even anonymous blocks in your code. Selecting a line in this pane will move the cursor to where the element is in your code, for instance where a variable or method is declared.
+
+To the right is a large editor area where you can edit the current object. The editor is describe more later.
+
+The last part of the screen is not always visible and contain information about the currently running debugging session.
+
+ at subheading Toolbar & menu
+
+The toolbar and menu contain pretty much the same commands with a few exceptions.
+
+
+ at table @asis
+ at item @strong{Refresh object list}	
+      Update the @strong{Object} list to the left of the screen. This is first on the toolbar and close to the end in the menu. 
+      The keyboard shortcut for this is @strong{F5}. 
+      Observe that this list is read from the object cache and will not be updated unless you reread the object cache as well 
+      (Available from the File menu.
+ at item @strong{Select schema}
+      In the toolbar this is a combobox listing the available schemas. Changing the schema will change the objects displayed in the @strong{Object} list.
+      Selecting it in the menu (Close to the end) or selecting the @strong{ALT+S} keyboard shortcut will move the keyboard focus to the toolbar combobox.
+ at item @strong{New sheet}
+      Start editing a new object.     
+ at item @strong{Scan source}
+      Update the @strong{Contents} list to the left on the screen according to the source currently in the editor. 
+      TOra will try to keep up with this as you write, but new blocks and declarations will only show up if you rescan the source. 
+      The keyboard shortcut for this is @strong{CTRL+F9}.
+ at item @strong{Compile}
+      Compile the current editor. This will compile the procedure with the debug option, 
+      if you don't have the debug options you need to recompile it in order to be able to see watches. The keyboard shortcut for this is @strong{F9}.
+ at item @strong{Execute}
+      Call the method, procedure or function closest to the cursor. 
+      It's off course only when you edit packages that there are several methods to choose from in the current editor. 
+      If you have changed the source TOra will ask you if you want to recompile and start over or simply continue without recompiling. 
+      The keyboard shortcut for this is @strong{CTRL+Return}.
+ at item @strong{Stop}
+      Halt the currently running execution. The keyboard shortcut for this is @strong{F12}.    
+ at item @strong{Step into}
+      Step into any functions or procedures called on the current line of execution. The keyboard shortcut for this is @strong{F7}.    
+ at item @strong{Step over}
+      Step to the next line of the current editor. The keyboard shortcut for this is @strong{F8}
+ at item @strong{Return from.}
+      Continue running until returned from the current function or procedure. The keyboard shortcut for this is @strong{F6}.
+ at item @strong{Head editor}
+      Switch between the head and body editor. For more information see the editor section below. The keyboard shortcut for this is @strong{CTRL+Space}.
+ at item @strong{Debug pane}
+      Display or hide the debugging pane at the bottom of the debugging window. The keyboard shortcut for this is @strong{F11}.
+ at item @strong{Next error}
+      Move the cursor to the next syntax error in the current editor. For more information about syntax errors in editors see the editor section. 
+      The keyboard shortcut for this is @strong{CTRL+N}.
+ at item @strong{Previous error}
+      Move the cursor to the previous syntax error in the current editor. For more information about syntax errors in editors see the editor section. 
+      The keyboard shortcut for this is CTRL+P.
+ at item @strong{Toggle breakpoint}
+      Add or remove a breakpoint on the current line of the editor. 
+      Breakpoints are indicated with a small stop sign to the right of the line in the editor. The keyboard shortcut for this is @strong{CTRL+F5}.
+ at item @strong{Disable breakpoint}
+      Will disable or enable a breakpoint on the current editor. 
+      A disabled breakpoint will be seen is grayed out in the margin of the editor of the line it is on. 
+      The keyboard shortcut for this is @strong{CTRL+F6}.
+ at item @strong{Add watch}
+      Add a watched variable. See here for more information about watches. The keyboard shortcut for this is @strong{F4}.      
+ at item @strong{Delete watch}
+      Remove a watched variable. The keyboard shortcut for this is @strong{CTRL+Del}.
+ at item @strong{Change watch}
+      Change the value of a watch. See here for more information about watches. The keyboard shortcut for this is @strong{CTRL+F4}.
+ at item @strong{Erase runtime log}
+      Remove the content of the runtime log which is in the rightmost pane of the debugger info.
+ at end table
+
+ at subheading Debugger editor
+
+There are a few things that are special to the PL/SQL debugger compared to other editors in TOra. First of all there are actually two editors. In one you edit the declaration of a package this is called the @strong{head} editor. The other one is used to edit the implementation of a package and is called the @strong{body} editor. If you are editing procedures or functions you will only use the @strong{body} editor. You switch between the editors using the @strong{CTRL+Space} keyboard shortcut or with the @strong{head editor} toolbar button or menu entry. This also mean that when you run a program and make a change, but still decide to keep stepping through your program without restarting you can have one other changed file plus the current file, if you try to step to another object TOra will ask if you want to continue until you are back in the edited files or recompile.
+
+Another thing special in this editor is that the PL/SQL editor will show you errors in the package. The errors are highlighted with a special background color (The default is red, but this is configurable in the options(@pxref{preferences,Options}). You can also use the @strong{next error} or @strong{previous error} toolbar button/menu entries to step between the errors.
+
+Next thing to know about the debugger is breakpoints. You can set a breakpoint either by selecting the @strong{toggle breakpoint} toolbar button or menu entry. This will add a breakpoint to the line you are currently on in the editor. To remove the breakpoint simply select @strong{toggle breakpoint} again. 
+Another way to add or remove breakpoints is to double-click in the left margin of the editor where you also see where the breakpoints are. They are indicated by a small stop sign in the margin. If you want to temporarily disable a breakpoint that you might need to enable again later you can also choose @strong{disable breakpoint}, this is also a toggle so selecting the command again will re-enable the breakpoint. For those of you who don't know breakpoints means that when execution of the object comes to the line containing the breakpoint the debugger will stop and allow you to inspect the data.
+
+Which brings us to the last special thing in this editor which is the current line of execution, this is an indication of where the execution currently is at. This line is indicated by a special background (Default is green, but that is configurable in the options(@pxref{preferences,Options})).
+
+ at subheading Debugger information
+
+Information about the current state of execution is shown in the pane at the bottom of the debugger window which you can be hidden. You hide or show this by selecting the command @strong{debug pane} command or by pressing the @strong{F11} key. The debug pane consist of several tabs containing the following information.
+
+ at table @asis
+
+ at item @strong{Stack trace}
+      Contains the current stack trace. This means the list of called objects that have lead to the current line of execution. Selecting a line will bring up the object and line where the the call to the next object was made except for the last line which is the current line of execution.
+ at item @strong{Watches}
+      Watches is where you can inspect variables in your PL/SQL code while running. They are explained in more detail later.
+ at item @strong{Breakpoints}
+      A list of where you current have your breakpoints and their status. The status can be @strong{enabled} or @strong{disabled} which are pretty self explanatory. 
+      It can also be @strong{deferred} which means that some error have occurred setting the breakpoint. 
+      Every time execution is restarted TOra tries to set any breakpoints that are @strong{deferred}.
+ at item @strong{Parameters}
+      This displays the input and output parameters that you passed to the original call that started the debugging. The output parameters are off course not available until the execution is finished.
+ at item @strong{Debug output}
+      Any DBMS_OUTPUT output from your debugging session will end up in this window. For more information about using this see the output tool.
+ at item @strong{Runtime log}
+      This is simply a log displaying what is happening in the target debugging thread and probably not of much interest to anybody except TOra developers. One exception is that if you somehow get an SQL error when you function or procedure of choice is executed those errors will end up here.
+
+ at subheading Watches
+Watches are a way to inspect the contents of variables in a running program. 
+When you add a watch using the @strong{add watch} command you are presented with the following dialog.
+
+ at image{images/addwatch}
+
+First of all you need to select the scope the variable is declared in. The @strong{local} scope is variables only declared in the current context, like for instance this function or procedure. The @strong{head} and @strong{body} are variables declared in packages. Variables in packages are usually also available in the global scope. When you declare a watch in any scope except for @strong{local} you should also indicate the object in which the variable is declared in the format schema.object.variable. The current object is prepended to the variable name when you select anything but the @strong{local} scope.
+
+Finally you have to fill out the variable name. If you have the cursor on a variable in the editor that name is the default when you add the watch.
+
+You can then see the contents of this variable in the @strong{watch} pane of the debugger info. The value will be updated every time execution stops while you are debugging. If the variable can not be found it will be @strong{@{Unavailable@}}. If all variables are unavailable even though they shouldn't you have probably forgotten to compile the object with the debug option. You can remedy this by simply using the @strong{compile} command. TOra will always compile programs using the debug option when in the PL/SQL debugger.
+
+TOra can also inspect list and table object which will show up as child items in the list to the variable. When this is a case you can also see how many items an array is having in the parent of the actual data items.
+
+You can remove a watch by selecting it in the watch list and selecting the @strong{remove watch} command.
+
+You can also change the content of a watch. First you select the watch you want to change in the watch list, then you select the @strong{change watch} command. You will be shown this dialog.
+
+ at image{images/changewatch}
+
+If you have selected the parent of an array watch you will be able to select the index you want to assign a new value with the @strong{index} indicator to right. Then you enter the new value in the text field or check the @strong{NULL} indicator to set the value to NULL.
+
+ at end table

Added: kde-extras/tora/branches/upstream/current/doc/help/editors.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/editors.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/editors.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,63 @@
+ at node  editors
+ at section Using editors
+ at cindex Using editors
+
+Editors can be in two modes. The first is read and write in which case the following key bindings are defined.
+
+ at multitable @columnfractions .3 .7  
+ at item @strong{Left Arrow}  @tab  Move the cursor one character to the left
+ at item @strong{Right Arrow}  @tab  Move the cursor one character to the right
+ at item @strong{Up Arrow} @tab 	Move the cursor one line upwards 	
+ at item @strong{Down Arrow} @tab 	Move the cursor one line downwards 	
+ at item @strong{Page Up} @tab 	Move the cursor one page upwards 	
+ at item @strong{Page Down} @tab 	Move the cursor one page downwards 	
+ at item @strong{@key{BS}} @tab 	Delete the character to the left of the cursor 	
+ at item @strong{@key{HOME}} @tab 	Move the cursor to the beginning of the line 	
+ at item @strong{End} @tab 	Move the cursor to the end of the line 	
+ at item @strong{Delete} @tab 	Delete the character to the right of the cursor 	
+ at item @strong{SHIFT - Left Arrow} @tab 	Mark text one character to the left 	
+ at item @strong{SHIFT - Right Arrow} @tab 	Mark text one character to the right 	
+ at item @strong{CTRL-A} @tab 	Select the entire buffer. 	
+ at item @strong{CTRL-B} @tab 	Move the cursor one character leftwards 	
+ at item @strong{CTRL-C} @tab 	Copy the marked text to the clipboard 	
+ at item @strong{CTRL-D} @tab 	Delete the character to the right of the cursor 	
+ at item @strong{CTRL-E} @tab 	Move the cursor to the end of the line 	
+ at item @strong{CTRL-F} @tab 	Pop up the search & replace dialog 	
+ at item @strong{CTRL-H} @tab 	Delete the character to the left of the cursor 	
+ at item @strong{CTRL-K} @tab 	Delete to end of line 	
+ at item @strong{CTRL-N} @tab 	Move the cursor one line downwards 	
+ at item @strong{CTRL-P} @tab 	Move the cursor one line upwards 	
+ at item @strong{CTRL-V} @tab 	Paste the clipboard text into line edit 	
+ at item @strong{CTRL-X} @tab 	Cut the marked text, copy to clipboard 	
+ at item @strong{CTRL-Z} @tab 	Undo the last operation 	
+ at item @strong{CTRL-Y} @tab 	Redo the last operation 	
+ at item @strong{CTRL - Left} @tab  Arrow	Move the cursor one word to the left 	
+ at item @strong{CTRL - Right} @tab  Arrow	Move the cursor one word to the right 	
+ at item @strong{CTRL - Up Arrow} @tab 	Move the cursor one word upwards 	
+ at item @strong{CTRL - Down Arrow} @tab 	Move the cursor one word downwards 	
+ at item @strong{CTRL - Home Arrow} @tab 	Move the cursor to the beginning of the text 	
+ at item @strong{CTRL - End Arrow} @tab 	Move the cursor to the end of the text 	
+ at item @strong{CTRL-S} @tab 	Save the editor with the current filename, if no filename is defined a dialog is displayed for the user to select the filename to use. 	
+ at item @strong{CTRL-O} @tab 	Read a file into the editor. A dialog will pop up to select the name to open.
+ at end multitable
+
+The second mode is read only in which only the current key binding are available.
+
+ at multitable @columnfractions .3 .7  
+ at item @strong{Left Arrow} @tab	Scrolls the table to the left 	
+ at item @strong{Right Arrow} @tab	Scrolls the table to the right 	
+ at item @strong{Up Arrow 	Scrolls} @tab the table one line downwards 	
+ at item @strong{Down Arrow} @tab	Scrolls the table one line upwards 	
+ at item @strong{Page Up} @tab	Scrolls the table one page downwards 	
+ at item @strong{Page Down} @tab	Scrolls the table one page upwards 	
+ at item @strong{Control-C} @tab	Copy the marked text to the clipboard 	
+ at item @strong{Control-S} @tab	Save the editor with the current filename, if no filename is defined a dialog is displayed for the user to select the filename to use.
+ at end multitable
+
+Editors support drag and drop which means you can drag a selection to another editor and drop any other text source onto an editable editor to insert the dragged text at the dropped location.
+
+Also as a shortcut pressing the right mouse button will display a context menu containing the entries from the edit menu which pertain to the editors.
+
+ at subheading SQL editors
+
+Editors for SQL have another feature which is code completion. If you place the cursor after a '.' character TOra will this the available columns for the table referenced by the name before the '.' character. This will only work for defined views and tables. You can also look up tablenames using the @strong{CTRL+T} key which will list all tables starting with the same word as you currently have the cursor in. When the completion list is open you can navigate it using @strong{Up}, @strong{Down} keys and selecting an entry using @strong{Return}. You can also remove the list by pressing the @strong{Escape} key. The completion values are saved in the object cache and can not be used until it is read. If you find this annoying you can disable this in the preferences.

Added: kde-extras/tora/branches/upstream/current/doc/help/extendingtora.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/extendingtora.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/extendingtora.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,8 @@
+ at node extendingtora
+ at chapter Extending TOra
+ at cindex Extending TOra
+
+ at menu
+* TOra Tool Tutorial: api.
+* API Reference: externalapi.
+ at end menu

Added: kde-extras/tora/branches/upstream/current/doc/help/externalapi.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/externalapi.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/externalapi.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,16 @@
+ at node externalapi
+
+ at section API Reference
+
+ at itemize @bullet
+
+ at item
+ at uref{api/index-long.html,Annotated Class List}
+ at item
+ at uref{api/header-list.html,Header Files}
+ at item
+ at uref{api/all-globals.html,Global Declarations}
+ at item
+ at uref{api/hier.html,Class Hierarchy}
+ at end itemize 
+

Added: kde-extras/tora/branches/upstream/current/doc/help/fonts.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/fonts.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/fonts.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+ at node  fonts
+ at subsection Font Settings
+ at cindex Font Settings
+
+This page of the options about fonts and colors used in the user interface.
+
+ at image{images/fonts}
+
+ at table @asis
+
+ at item @strong{Syntax components}
+      This list contains different parts of the SQL syntax. You can change the color used for the element by selecting the item in this list and then pressing the Pick button to select a color. The current color of the currently selected item in the list is displayed just to the left of the Pick button.
+
+The available elements are as follows.
+ @multitable @columnfractions .3 .7
+ @item @strong{Background} @tab The normal background color for text.
+ @item @strong{Comment}	@tab An SQL comment. Currently this only includes -- comments, not rem comments.
+ @item @strong{Current background}	@tab 	This is the background to use for the current line of execution in the PL/SQL debugger.	
+ @item @strong{Error background}	@tab 	This is the background to use for lines that have SQL errors in the in the PL/SQL debugger/editor.	
+ @item @strong{Keyword}	@tab 	This is the color to use for the text of an SQL keyword.	
+ @item @strong{Normal}	@tab 	Normal text color.	
+ @item @strong{String}	@tab 	Color to use for text in strings.	
+ @item @strong{Unfinished string} @tab Color to use for strings that miss their terminating ' or ".
+ @end multitable
+ At the bottom of this dialog is a text field that displays en example of the current setting.
+
+ at item @strong{Syntax highlighting}
+      Use this to control whether you want syntax highlighting or not. Observe that without syntax highlighting you will not see the indications for errors and current lines in the PL/SQL editor.	
+ at item @strong{Keyword upper}
+      Check this box to convert all keywords to uppercase before displaying them. The text itself is not changed so resetting this not changed and the text sent to the database still contain lowercase letters. This setting is disabled if you do not have a monospaced font selected.	
+ at item @strong{Code completion}
+      Check this box to enable code completion in SQL editors.	
+ at item @strong{Sort completion rows}
+      If checked the completion alternatives are sorted in alphabetical order, otherwise they are in the same order as in the source.	
+ at item @strong{Indent same as previous row}
+      When inserting a new row indent it to the same level as the previous row. 	
+ at item @strong{Text font}
+      This is the font to use for all editors in TOra that are not syntax highlighted. Choose the @strong{Choose} button immediately to the right of the label to select a new font.	
+ at item @strong{Code font}
+      This is the font to use for all syntax highlighted SQL editors in TOra. Choose the @strong{Choose} button immediately to the right of the label to select a new font.	
+ at item @strong{List font}
+      This is the font to use for all lists in TOra. Choose the @strong{Choose} button immediately to the right of the label to select a new font.
+
+ at end table

Added: kde-extras/tora/branches/upstream/current/doc/help/help.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/help.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/help.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,21 @@
+ at node help
+ at chapter Using the help browser
+ at cindex Using the help browser
+
+You can always bring up help on the current dialog etc. by pressing the @strong{F1} key. You can also select it from the application menu bar under Help (dooh).
+
+When you open the help browser which you obviously have done. You are presented with a screen similar to the following.
+
+ at image{images/help}
+
+On the top of the screen is a toolbar with back and forward buttons that you can use to go back and forward in the history of viewed pages that you have previously looked at. This list kept during the duration of running TOra, however when you display help in dialogs that help is not added to the main application help history.
+
+To the right is a large area which displays the documentation. This is essentially a web browser (If you run the KDE version it is actually an embedded konqueror) and works as such. Clicking on blue text will go to the referenced section.
+
+To the left is a pane that can either display the contents of the manuals available for browsing or search result. Note that the TOra help is compatible with Oracle manuals which can be browsed in the help viewer if you add them in the options dialog 
+(@pxref{additionalhelp, Additional help}). 
+
+You can also display a different pane where you can search the manuals. In this version of TOra you can only search external Oracle manuals and not the TOra user manual. This will be fixed in a future version of TOra.
+
+Just enter the words you want to find and the sections containing @strong{all} the words entered will be displayed in the list below it. Selecting a row in either the search result or contents list will bring up that page in the right part of the screen.
+

Added: kde-extras/tora/branches/upstream/current/doc/help/history.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/history.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/history.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,26 @@
+ at node history
+ at chapter History of TOra
+ at cindex History and future of TOra
+
+ at heading History of TOra
+I started the TOra project in December 2000, the reason being that I had been increasingly jealous of the tools available for interacting with Oracle databases to my colleges using windows. The tools that were available for Linux users were not nearly powerful enough. Execution plans being pretty much the most advanced feature available. During this time I also made a lot of attempts to get VMWare to work without any success fortunately. If I could have made this to work I would never have started TOra but run a VMWare client with Windows. 
+
+I started by working on what is now the worksheet in TOra. Already in the beginning I envisaged TOra being plugin based and easily extendable with new functionality without any or much change of the existing code base, the @uref{api/toTool.html,toTool class} being one of the first written gives this functionality. 
+
+In the beginning the development pace was really fast as always and it didn't take long before it had at least in my opinion surpassed any available tool for Linux as an SQL worksheet. Most of the development of these versions were made in airports in Asia since I spent about a week in those on a backpacking holiday there around new years 2000 to 2001. Yes, I know there aren't many other people who would bring a laptop on a backpacking vacation, but I knew I would be spending a lot of time in airports and what better way to waste the time. 
+
+By the time I was back I released the first version of TOra with both worksheet and database browser. By this time I started looking at the PL/SQL debugging package available in Oracle, this was the first time I looked at developing functionality in TOra that I didn't really feel a pressing need for myself since I rarely write any large PL/SQL code. This was released in version 0.4 at the end of January, still only about 1 month after the project was started. This was the first functionality in TOra that is not available from any other open source project. 
+
+The next big thing to happen to this project was that TrollTech released the first version of Qt Free for windows at which point I started glancing at making TOra available for the windows platform. I've made a few feeble attempts earlier using an evaluation copy of Qt/Windows without much success. But when this release was made I really sat down and went through it finding lots of problems mainly with regards to Visual C++ (Which is really crap, but the one you have to use if you want to use Qt Free. Of course no tool can really replace emacs, gcc, make and gdb if you know how to use them). 
+
+After this development slowed down considerably to be able to stabilize the program to get the first stable releasse which was released on the first of september 2001. At almost the same time as 1.0 was released the first development release for 1.1 was released featuring a few of the most asked for features including improved tuning and better busy feedback. Most parts of TOra have been touched in some way for this release. The 1.2 release was also the first commercial release which is a way for me to ensure that TOra can be supported well forward in the future as it is starting to consume more and more of my time.
+
+This page of the options about fonts and colors used in the user interface.
+
+ at heading The future
+
+I will continue to develop TOra to be the best possible database development and administration tool for Oracle and in the long run probably other databases as well.
+
+By the time of the 1.2 release development of the 1.4 release is already well under way and will mostly feature DBA improvements. The database browser which will start getting more and more functionality to modify the browsed objects. Other changes are made to make DBA:s administrating database which people are accessing using TOra should also be happy with this release since it will warn more often when you are doing things you probably shouldn't be doing (Like running a server tuning session just to get a handle of whats happening). Improved database tuning with a new wait event analysis tool is also already finnished and ready for beta testing. Also PostgreSQL support will probably be available for the 1.4 release.
+
+Henrik "Mauritz" Johnson, GlobeCom AB

Added: kde-extras/tora/branches/upstream/current/doc/help/images/additionalhelp.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/additionalhelp.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/addwatch.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/addwatch.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/alert.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/alert.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/analyze.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/analyze.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/browser.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/browser.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/browserfilter.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/browserfilter.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/changewatch.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/changewatch.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/charts.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/charts.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/chartsetup.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/chartsetup.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/contentfilter.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/contentfilter.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/current.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/current.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/database.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/database.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/debugger.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/debugger.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/describe.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/describe.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/difference.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/difference.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/editmenu.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/editmenu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/filemenu.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/filemenu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/fonts.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/fonts.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/getparam.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/getparam.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/help.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/help.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/helpmenu.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/helpmenu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/invalid.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/invalid.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/largelogo.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/largelogo.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/lists.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/lists.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/memo.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/memo.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/newconnection.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/newconnection.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/oracle.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/oracle.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/output.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/output.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/pfileeditor.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/pfileeditor.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/preferences.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/preferences.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/priviledges.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/priviledges.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/quota.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/quota.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/resize.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/resize.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/rollback.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/rollback.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/rollbacksetup.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/rollbacksetup.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/script.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/script.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/searchreplace.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/searchreplace.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/security.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/security.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/session.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/session.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/sgastatement.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/sgastatement.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/sgatrace.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/sgatrace.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/sqledit.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/sqledit.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/storage.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/storage.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/template.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/template.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/templateeditor.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/templateeditor.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/templatesetup.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/templatesetup.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/toolbar.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/toolbar.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/tools.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/tools.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/toolsmenu.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/toolsmenu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/tuning.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/tuning.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/visualize.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/visualize.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/windowsmenu.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/windowsmenu.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/worksheet.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/worksheet.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/worksheetsetup.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/worksheetsetup.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/images/workspace.png
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/images/workspace.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/invalid.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/invalid.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/invalid.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,9 @@
+ at node invalid
+ at section Invalid Objects
+ at cindex Invalid Objects
+
+This tool is usefull to recompile invalid objects in the database.
+
+ at image{images/invalid}
+
+To the left you see a list of invalid objects. Select an object and the left editor will be filled with code to recreate the code objects, you can then fix whatever problem may be with it. Rows with errors will have red background and you can see the error in the statusbar by putting the cursor on the row. You can also refresh the list or change the active connection by the buttons in the toolbar.

Added: kde-extras/tora/branches/upstream/current/doc/help/lists.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/lists.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/lists.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,40 @@
+ at node lists
+ at section Using lists
+ at cindex lists
+
+A list is a very central element of the TOra user interface and is a standard way to display information in a grid. Here is an example of a list.
+
+ at image{images/lists}
+
+ at subheading Navigating a list
+
+If a list does not fit into it's designated area on the screen it will get scrollbars that can be used to navigate the entire contents of the list. There are also the usual key bindings @strong{left}, @strong{right}, @strong{up}, @strong{down}, @strong{page up}, @strong{page down} etc...
+
+Lists can be hierarchical as can be seen in the screenshot above. When there are child items that are not displayed a + is displayed to the left of the row. Clicking the + will expand the row and display the child items. 
+You can also use the @strong{right} key to expand child items and @strong{left} key to collapse them.
+
+ at subheading Result lists
+
+Result lists are lists that display the result of a query from the database. Only a configured amount of rows are initially read (@pxref{preferences, Options} for more information), although enough items to fill the screen is always read if available. To read more items from the queries simply scroll down. If you want to scroll faster use @strong{page down} which will read an entire screen of data at a time from the query. If you want to read all the data available you can use the @strong{Edit|Read All} menu item.
+
+ at subheading Manipulating lists
+
+In a list you can change the sort order by pressing the header of the list to sort on the column whose header you clicked. Clicking the same column again will reverse the sort order. Columns that contain numerical data (Regardless of database format) will be sorted as numbers (2 before 10). Observe that not all lists can be sorted in a different sort order.
+
+You can also rearrange the column order by dragging the heading of a column to another place.
+
+ at subheading Accessing the contents of a field
+
+The contents of a field (Specific row and column of a list) can be copied either by double-clicking the field, or selecting copy from the context menu available by right-clicking on the field. You can also drag the contents of a field to an editor.
+
+If the contents is too long to be visible in the list you will get a tooltip with all of the contents if you place the mouse over the field for a short while (As seen in the screenshot). If this is not enough you can display the contents of a field in a separate window by accessing the context menu of the field and selecting @strong{display in editor}.
+
+You can also place a line in the bind parameter(@pxref{Getting bind parameters}) cache by double clicking on a line. The bind name will be the same as the column name in lowercase.
+
+ at subheading Other list functionality
+
+Lists can always be printed by selecting the @strong{File|Print} menu item.
+
+You can also save a list as a text file by selecting @strong{File|Save} menu item. Any graphics in the list will be discarded and all fields will be left justified in the output.
+
+In the context menu for the list you can also select the entry @strong{edit SLQ} in which you can edit the SQL used to generated the list. If there is no single SQL used to generate the list you will not find any SQL, however you will usually be pointed in roughly the right direction in the sql editor (@pxref{sqledit,SQL Editor}, Where you can also find more information about the concept of SQL dictionary TOra uses).

Added: kde-extras/tora/branches/upstream/current/doc/help/make-html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/make-html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/make-html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,3 @@
+#!/bin/sh -x
+
+for f in *.texi; do texi2html $f; done
\ No newline at end of file


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/make-html
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/doc/help/newconnection.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/newconnection.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/newconnection.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,41 @@
+ at node newconnection
+ at section Connecting to a database
+ at cindex Connecting to a database
+
+You can connect to a database by selecting the @strong{File|New Connection} menu entry or the toolbar button. For more information about the menu and toolbar @pxref{window,Elements of the main window}.
+
+After selecting the menu you will be presented with the following dialog.
+
+ at image{images/newconnection}
+
+The filling out of this dialog is pretty straight forward.
+
+ at table @asis
+
+ at item @strong{Previous}
+      This list contains the previous connection made, selecting an entry from this list will set all the values to the right to the correct
+ at item @strong{connections}
+      values to connect to this database again.
+ at item @strong{Connection provider}
+      The type of connection to create. Usually Oracle, but MySQL is also supported on some platforms.
+ at item @strong{Username}
+      The username with which to connect to the database
+ at item @strong{Password}
+      The password to use for the connection, this defaults to manager. You can also configure TOra to remember your last used password(@pxref{preferences,Options})
+ at item @strong{Use SQL*Net}
+      This is perhaps the most difficult setting. This indicates whether to connect locally to the database or use SQL*Net. If you check this box the connection is made through the Oracle listener, otherwise a local connection usually using shared memory or named pipes is made. This is only available for Oracle connections.
+ at item @strong{Hostname}
+      The host on which the database resides. This is only available for non Oracle connections.
+ at item @strong{Database}
+      What database to connect to, the listbox is filled with the values available in your tnsnames.ora file.
+ at item @strong{Connection Mode}
+      The type of connection to make, usually @strong{normal} always suffices here. But sometimes during database administration @strong{SYS_DBA} or @strong{SYS_OPER} is needed. If you don't know what these mean you probably shouldn't be using them.
+ at end table
+Upon establishing a successful connection all the settings of the dialog will be saved and remembered when the next connection is made with the exception of the password.
+
+ at node  What privileges do you need to run TOra
+ at section What privileges do you need to run TOra
+
+TOra should be able to run as any user, although off course you can never do anything in TOra that aren't allowed from that Oracle account. You will be able to use pretty much any tool in TOra for read only purposes if you are granted the @strong{SELECT_CATALOG_ROLE}, also some parts of TOra will have limited functionality if you do not have the @strong{ALTER SESSION} privilege.
+
+Also you need to be able to create the plan table if that is not done for you. The plan table (@pxref{database,Database Settings} for how to select plan table name) must also be available with @strong{INSERT} and @strong{SELECT} access. TOra will function without the plan table but off course you will not be able to display any execution plans.

Added: kde-extras/tora/branches/upstream/current/doc/help/output.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/output.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/output.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+ at node output
+ at section SQL Output
+ at cindex SQL Output
+
+This tool display the output from the DBMS_OUTPUT package (For more information see the Oracle PL/SQL Supplied Packages manual).
+
+ at image{images/output}
+
+Use this if you are running PL/SQL from the worksheet(@pxref{worksheet,SQL Worksheet}) and want to check the output. It is also used in the debugger (@pxref{debugger,PL/SQL Debugger}) but as a pane in the debugger information.
+
+The toolbar contain the following controls.
+
+ at table @asis
+ at item @strong{Update}
+        Poll for more output immediately.	
+ at item @strong{Enable}
+        Enable or disable output collecting. Collecting is enabled if light bulb is lit.	
+ at item @strong{Clear output}
+      	Clear the currently collected output.	
+ at item @strong{Refresh}
+      	The time-out to update automatically. The default value of this is configurable though the options.
+ at end table

Added: kde-extras/tora/branches/upstream/current/doc/help/preferences.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/preferences.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/preferences.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,56 @@
+ at node  preferences
+ at section Options
+ at cindex Options
+
+To access the options of TOra you select the @strong{Edit|Options} menu item, you will then be presented with the following dialog.
+
+ at image{images/preferences}
+
+In windows preferences are stored in the registry, but in Linux it is stored in a file called @file{.torarc} in the users home directory. If this file doesn't exist a file called @file{/etc/torarc} is used if it exists.
+
+ at subheading Selecting page
+
+To the left is a list containing the available option pages you can display.
+
+ at menu
+* General global settings: Global Settings.
+* Global database settings: database.
+* Font and color settings: fonts.
+* Additional manuals in help browser: additionalhelp.
+* Settings regarding enabled tools: toolsetting.
+ at end menu
+
+The rest of the settings are tool specific and covered under corresponding tool in the tools section(@pxref{tools, Available tools}).
+
+Selecting a page does not discard the changes of another page, and no changes are saved until @strong{OK} is pressed. You can always discard any changes made by pressing the escape key or the @strong{Cancel} button.
+
+
+ at node Global Settings
+ at subsection Global Settings
+
+These may vary some depending on how your system was compiled and configured. Not all options are displayed in the screenshot since that was made on a KDE version of TOra.
+
+ at multitable @columnfractions .2 .8 
+ at item @strong{Custom SQL} @tab The file in which to store your custom SQL. For more information about custom SQL and the SQL dictionary (@pxref{sqledit,SQL Editor tool}. The string @strong{@env{$HOME}} will be replaced by your home directory on UNIX or documents directory in Windows.
+ at item @strong{Help directory} @tab Should point to where the TOra help table of contents file is stored (toc.html). This should be set up correctly if you made a normal install. 	
+ at item @strong{Plugin directory} @tab This option is only available in a plugin based TOra installation. It should point to the directory where the plugins for TOra are located. It should be set up correctly on installation if needed. 	
+ at item @strong{Cache directory} @tab Should point to where the TOra Disk Cache files are stored. There is one file for each Connection. 	
+ at item @strong{Change current connection with active window} @tab If this option is set, changing the current window will also change the current connection to that of the active window. The connection is only changed when you change window so if you want to change the connection to something else you can still do so as long as you don't change the window.
+ at item @strong{Save last password} @tab 	Whether or not TOra should store the last password used to connect. @strong{Be aware that the password is store in clear text in either the windows registry or a file.} 	
+ at item @strong{Include DB in caption} @tab	If this is set the database name will be included in the caption of all your tool windows after the tool name. Observe that there often is no other way of knowing which database the window works on except for this. 	
+ at item @strong{Maximize window on start} @tab	If this is checked the TOra main window will open maximized on startup. 	
+ at item @strong{Desktop Aware} @tab	Set this if Qt should try to figure out and interact nicely with the desktop environment. The reason for this switch is that in some versions of KDE TOra doesn't look nice if this is checked. This switch is only available for Qt only applications. 	
+ at item @strong{use Disk Cache} @tab	This option tells TOra to Cache the Object List in the Cache Directory. Default is No Caching. When Caching is activated, you have to refresh the object cache with the menu option File->Reread Object Cache, because, the default source for the Object List is the diskfile. 	
+ at item @strong{Antialias fonts}  @tab	Check this if you want TOra to use antialiased fonts in X11 if available. This option may not be available (Regardless of if you have access to antialiased fonts or not). 	
+ at item @strong{Docks use toolbars}  @tab This option tells TOra how to emulate docked windows when they are not available. Docked windows are not available if you do not use KDE and have a Qt version less than 3 (If you run in windows you're it). If this is checked docks will be emulated with a toolbar, this has the drawback that you can't resize them. If unchecked docks appear in normal windows. 	
+ at item @strong{Style}  @tab	The GUI style to use for the TOra application. This switch is only available for Qt only applications. 	
+ at item @strong{Display alerts in statusbar only}	 @tab Display errors only in the statusbar. This is really usefull since it doesn't interrupt you as much as a dialog window as long as you know to look for information in the statusbar when things doesn't work. 	
+ at item @strong{Connect history}	 @tab How many connection entries to save in the new connection history list. 	
+ at item @strong{Table scale}  @tab	This is the scale which to use when printing lists. Lists on paper can usually be a little smaller and still be readable. Given as a fraction where 0.5 means half the size on paper and 1.0 the same size. 	
+ at item @strong{Status message}  @tab	The number of seconds to display error messages in the status bar. If you specify 0 they are kept until the next message is displayed. 	
+ at item @strong{Message history}	 @tab The number of status messages to store in the status message history before the oldest are removed when new are added. 	
+ at item @strong{Chart samples}  @tab	Number of samples to save by default in charts. 	
+ at item @strong{Size Unit}  @tab	The unit to display sizes with in TOra. 	
+ at item @strong{Refresh}	 @tab The default refresh time to use in TOra. Tools which refresh automatically use this setting as the default. It can also be changed on a per tool basis.
+ at end multitable
+

Added: kde-extras/tora/branches/upstream/current/doc/help/rollback.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/rollback.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/rollback.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,59 @@
+ at node rollback
+ at section Rollback Segments
+ at cindex Rollback Segments
+
+This tool is used to manage rollback segments in the database.
+
+ at image{images/rollback}
+
+The window consist of three part. 
+The top one displays the available rollback segments and you can also see running transaction that use segment in the transactions column of the view, the length of the @strong{transactions} show up as bars in this column. One bar for each running transaction using the segment.
+
+The last part is a unique tool to detect snapshot too old problems in your database. This is discussed more later.
+
+ at subheading Toolbar
+
+The toolbar contains the following commands.
+
+ at table @asis
+
+ at item @strong{Update}
+      	Update the view from the database.	
+ at item @strong{Online}
+      	Take currently selected segment online.	
+ at item @strong{Offline}
+      	Take currently selected segment off-line.	
+ at item @strong{New rollback segment}
+      	Create new rollback segment. If you are confused about what the items in the dialog mean refer to the Oracle Server Concepts manual as well as the Oracle SQL Reference.	
+ at item @strong{Drop segment}
+                  Drop the currently selected segment.	
+ at item @strong{Refresh time}
+      	A list where you can select the interval between automatic updates.	
+ at item @strong{Change connection}
+      	Change the connection to administrate storage for.
+
+ at end table
+
+ at subheading Snapshot too old detection
+
+The lower part of this view is used to heuristically detect snapshot too old problems. The operation of this is that whenever the view is updated all SGA statements are cataloged and the corresponding current position in all the rollback segments are also stored the first time a new statement is detected. Since the information about the current location of the rollback when a statement was executed is not available in the SGA you have to keep the tool window open during the entire duration of the execution for this to work.
+
+In the view you can see when the statement was first detected and who is running it. You also see the snapshot info which will display how far each of the available rollback segments have moved since this statement was executed. This is represented by one bar for each rollback segment. If any of these bars goes all the way through this column you are likely to encounter a snapshot too old statement.
+
+Finally you can see the SQL for the row. Selecting a line will also let you investigate the statement using the normal SGA statement(@pxref{SGA Statement}) view.
+
+There are a few options to configure how the snapshot too old detection is to work.
+
+ at image{images/rollbacksetup}
+
+ at table @asis
+
+ at item @strong{Restart reexecuted statements}
+      If the execution count is changed for a statement reset the location of the rollback segments to the current location.	
+ at item @strong{Must read buffers}
+      To display a statement it must be reading buffers, it is still kept in memory if no buffers are read, but not displayed in the list until buffers are read again. Check this to remove any statements that you execute and simply kept open even though you will not be reading from them any more.	
+ at item @strong{Exclude first appearance}
+      Exclude the first update that would show the statement. Without this checked any statement with execution changed and buffers read will show up.	
+ at item @strong{Disregard start extent}
+      If you check this the bars will always start from the left of the column. Otherwise the bars will start corresponding to the current extent of the tablespace and then wrap around as they grow.
+ at end table

Added: kde-extras/tora/branches/upstream/current/doc/help/script.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/script.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/script.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,82 @@
+ at node script
+ at section Schema extraction, compare and search
+ at cindex Schema extraction, compare and search
+
+This tool is used to either extract a script to recreate database objects, compare database objects or search database objects.
+
+ at image{images/script}
+
+ at subheading Defining the operation
+
+The first thing to select is if you want to @strong{extract} script to recreate an object, @strong{compare} or @strong{search}. 
+You choose this by selecting one of the radio buttons to the left of the screen.
+
+Next you should indicate what kind of information you want included in the extract or compare. This is selected with the checkboxes just to the right of the mode selection. Depending on the mode some options may be disabled.
+
+ at table @asis
+
+ at item @strong{Include DDL}
+      Include any database definition.
+ at item @strong{Include constraints}
+      Extract constraint definitions from tables	
+ at item @strong{Include indexes}
+      Extract indexes for tables.	
+ at item @strong{Include grants}
+      Extract grants for database objects.	
+ at item @strong{Include storage specification}
+      Extract storage specifications for database objects.	
+ at item @strong{Include parallel specification}
+      Extract parallel specification for tables.	
+ at item @strong{Include partition specification}
+      Extract partition specification for tables.	
+ at item @strong{Include code specification}
+      Extract code for packages, procedures and functions.	
+ at item @strong{Include comments}
+      Extract comments for database objects.	
+ at item @strong{Include content of tables}
+      Extract the content of tables as well.	
+ at item @strong{Generate prompts}
+      Generate prompts in the extracted result indicating what the script is doing.	
+ at item @strong{Generate header}
+      Generate header of the script.	
+ at item @strong{Generated schema}
+      This specifies the schema to be used when extracting. If you select Same, the same schema as the source database is used. If you select None, no schema is generated. Specifying anything else will replace the source schema with the one entered here.
+
+ at end table
+
+If you are searching you also need to indicate what you are searching for in the bottom left of the front page.
+
+ at table @asis
+ at item @strong{Containing any words}
+      The object should contain at least one of the words in the line editor.
+ at item @strong{Containing all words}
+      The object should contain all of the words in the line editor. 	
+ at item @strong{Exact match}
+      The object should contain the exact string as in the line editor include whitespaces. 	
+ at item @strong{RegExp}
+      The object should contain at least one of the words in the line editor. The dialect of RegExp:s is the ones in the version of Qt that TOra is compiled against. For more information on regular expressions check out @uref{http://doc.trolltech.com/qregexp.html}, if you are using Qt 3.0 or later you have a more advanced form of regular expressions.
+ at end table
+
+The next thing you need to do is to specify which objects you want to extract or compare. If you extract you only need to specify the source, if comparing destination objects are also needed.
+
+Selecting or deselecting an item in this list will select all it's child items.
+
+If you specify the @strong{extract} mode you can also indicate a way to resize generated storage specifications. This could be useful to make a database have only a few standard storage specifications making the database less prone to fragmentation.
+
+ at image{images/resize}
+
+You have three modes to specify how resizing should work. First there is @strong{Don't resize} which means leave the same as the original. 
+Then there is @strong{Auto resize} which should work for pretty much everyone. In this a resize specification for each order of magnitude of size is given a specific storage specification. And last is the @strong{Custom resize} mode in which you specify how to transform the storage specifications to new values.
+
+When you specify a custom resize you add items to the list with a @strong{limit} size, @strong{initial} size and @strong{next} size. The sizes are used in the following way. When TOra is to determine the storage clause of an object it will take the @strong{initial} and @strong{next} sizes of the row in this list with the lowest @strong{limit} size still higher than the current size of the object. If no row is found the one with the highest @strong{limit} is used.
+
+ at subheading Reading the result
+
+If you @strong{extract} the result is available under the @strong{Result} tag of the dialog in the form of a worksheet tool where you can either start executing it or save it to a file. 
+If you are comparing objects you will get the result under the @strong{Difference} tab. The tab will look something like this.
+
+ at image{images/difference}
+
+On the left is a pane containing objects only available in the source database. On the right is a pane containing the objects only available in the destination database.
+
+Only the items in the lists that have checks on them are actually dropped or created, the other items only need to be added to lead the list tree to the items that are actually dropped or created.

Added: kde-extras/tora/branches/upstream/current/doc/help/searchreplace.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/searchreplace.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/searchreplace.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,21 @@
+ at node  searchreplace
+ at section Search & Replace
+ at cindex Search & Replace
+
+Ora has an advanced search and replace function that allows you to search result list and editors. Replace is only available for editors though. You can invoke the search & replace dialog by selecting the menu @strong{Edit|Search & Replace} or by pressing @strong{CTRL+F}. The search always operates on the last editor or list that had the focus @strong{when you invoked the dialog}. Not on the current widget of the next search etc. The dialog looks like this.
+
+ at image{images/searchreplace}
+
+ at subheading Specifying the search criteria
+
+You enter the text to search for, this can be either in the format of plain text or regular expressions as defined by the current version of Qt which TOra is compiled against (For more information check out @uref{http://doc.trolltech.com/qregexp.html}, if you are using Qt 3.0 or later you have a more advanced form of regular expressions).
+
+You can also specify if the search expression must match a whole word or if the match is to be case sensitive.
+
+After specifying what you are looking for you can execute your search by either pressing the @strong{Search Top} button which will start the search from the top of the contents of the target for the search or @strong{Search Next} which will continue searching for the next match from the current location.
+
+ at subheading Replacing
+
+In the replace text field you can specify the text with which to replace a matched find that has been found. Note that regardless of if the search is case sensitive or not the replacement is the same case as specified in the text field.
+
+After finding the first occurrence by pressing @strong{Search Top} or @strong{Search Next} you can either replace it with the current substitution by pressing @strong{Replace}, or skip to the next by pressing @strong{Search Next} button again. At any time the @strong{Replace All} will replace all occurrences after the current location in the editor.

Added: kde-extras/tora/branches/upstream/current/doc/help/security.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/security.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/security.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,70 @@
+ at node security
+ at section Security Manager
+ at cindex Security Manager
+
+This tool provides an easy interface to manipulate users, roles and their privileges.
+
+ at image{images/security}
+
+The window consists of three parts. First the toolbar on top, to the left is a list of all the users and roles. Finally to the left is a tabbed window containing the different settings and privileges you can manipulate for the chosen user.
+
+ at subheading Toolbar
+
+The commands in the toolbar are from left to right.
+
+ at table @asis
+
+ at item @strong{Refresh}	
+      Update the user and role list to the left of the screen.	
+ at item @strong{Save changes}	
+      Perform any changes made to the current user or role.	
+ at item @strong{Remove}	
+      Drop the user or role currently selected. 
+      If the user still owns objects a question will be asked about also removing these objects or abort the drop.	
+ at item @strong{New user}
+      Start defining a new user.	
+ at item @strong{New role}
+      Start defining a new role.	
+ at item @strong{Copy}
+      Copy the current user or role to a new name.	
+ at item @strong{SQL}
+      Display the SQL that will be used to apply the current changes in a memo editor(@pxref{Memo editor}).	
+ at item @strong{Change connection}
+      Change the connection to administrate security for.
+ at end table
+You select the role you want to work on simply by pressing it in the left pane or any of the new user,
+new role or copy buttons to start defining a new one.
+
+ at subheading Defining a user
+
+There are five tabs available when defining a user or four when doing the same for a role.
+
+ at table @asis
+ at item @strong{General}
+      Used for setting the name, authentication, default tablespaces etc. for the new user. For more information about this see the Oracle SQL Reference.
+ at item @strong{Roles}
+      Which roles are granted to the user or role. For more information about defining privileges see the section below.
+ at item @strong{System privileges}
+      Which system privileges this user or role should have. For more information about defining privileges see the section below.		
+ at item @strong{Object privileges}
+      Which privileges this user or role should have on specific schema objects. For more information about defining privileges see the section below. 	
+ at item @strong{Quota}
+      Define the quota for the user, this tab is not available for roles. For more information about defining quotas see the section below.
+ at end table
+
+ at subheading Defining privileges
+
+All roles, system or object privileges are defined using basically the same interface.
+
+ at image{images/priviledges}
+
+This list contains a tree view with first the schema, then the type, the object and finally the actual privilege to define. In the system or role tabs, the privileges are in the root of the list. If you open the privilege you will find an additional @strong{admin} item which if checked will give the user or role the ability to grant the privilege on to other users or roles. In the role case you also have another child item to the privilege which is @strong{default}. If @strong{default} is checked the role will be enabled by default when the user logs in. When you start a new user all checked items will be made visible by expanding the parent items.
+
+ at subheading Defining quota
+
+You define quotas using the following interface.
+
+ at image{images/quota}
+
+To change a quota simply select the tablespace and specify the new quota using the radio buttons at the end of the screen. 
+If @strong{value} is selected you can specify a value using the size control at the bottom.

Added: kde-extras/tora/branches/upstream/current/doc/help/session.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/session.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/session.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,52 @@
+ at node session
+ at section Session Manager
+ at cindex Session Manager
+
+This tool is used to manage the connections made to the database.
+
+ at image{images/session}
+
+The session tool consists of a toolbar, a list displaying the connections currently open to the database and at the bottom a tabbed pane where you can investigate a specific connection to the database.
+
+ at subheading Toolbar
+
+The toolbar contain the following commands.
+
+ at table @asis
+
+ at item @strong{Refresh}
+      Refresh the view from the database.	
+ at item @strong{Enable timed statistics}
+      Enable timed statistics for the currently selected session.	
+ at item @strong{Disable timed statistics}
+      Disable timed statistics for the currently selected session.	
+ at item @strong{Disconnect session}
+      Disconnect the currently selected session. You will be asked if you allow the current transaction to finish before kicking the session out or not.
+ at item @strong{Refresh time}
+      A list where you can select the interval between automatic updates.	
+ at item @strong{Change connection}
+      Change the connection to administrate storage for.
+
+ at end table
+
+ at subheading Inspecting a session
+
+When you select a session the following information is available in the tabbed pane at the bottom of the window.
+
+ at table @asis
+
+ at item @strong{Statistics}
+        The session statistics available for the session. You will get more statistics if you enable timed statistics through the toolbar. There are also two charts displaying waitstates and I/O for the selected session.	
+ at item @strong{Connection info}
+      Information about the connection and versions of the components used.	
+ at item @strong{Pending locks}
+      	What locks this session is currently waiting for.	
+Locked objects	The objects currently locked by this session.	
+ at item @strong{Current statement}
+      The statement that is currently being executed (@pxref{SGA Statement} for information about the statement). 	
+ at item @strong{Previous statement}
+      The next to last statement being executed by the session (@pxref{SGA Statement} for information about the statement).	
+ at item @strong{Open cursors}
+      	This contains a list of all the cursors currently held open by the session. When a statement is selected in the list you can investigate it using the normal SGA statement view.
+
+ at end table

Added: kde-extras/tora/branches/upstream/current/doc/help/sqledit.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/sqledit.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/sqledit.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,35 @@
+ at node sqledit
+ at section SQL Editor
+ at cindex SQL Editor
+
+When TOra needs to run an SQL statement it will not actually use the SQL needed directly. It will fetch an SQL statement by addressing it with a string. The string is built up by a module name, followed by a colon and a unique name for the SQL (Example: toBrowser:ListIndex which will contain the SQL statement for getting all the indexes for a schema).
+
+For each SQL name there may be a number of actual SQL strings that are available, each are associated with a version number. When TOra requests an SQL statement by a name it will receive the string with the statement with the highest version number lower than the version of Oracle for the current connection that will be used to run it. Each SQL name also has a description associated with it so you can understand what the SQL is supposed to do.
+
+TOra has a default SQL name to statement map which can be redefined by the user to either add support for different versions than TOra originally supports, or change the default behavior for TOra in some cases. The changes from the default map is saved in the file defined in the options dialog (@pxref{preferences, Options}). If you make changes to improve support for other versions of Oracle please send this file to @email{tora-develop@@lists.sourceforge.net} and we will incorporate them in the future releases.
+
+You start the SQL editor either by selecting @strong{Edit|Edit SQL} or by selecting @strong{Edit SQL} in the result list context editor. You are then presented with the following dialog.
+
+ at image{images/script}
+
+The window is divided into several parts. To the left is a list of SQL statements available divided into modules. When an item is selected in this list you can use the right part of the screen to modify the SQL associated by the selected name.
+
+The right part of the window is divided into the name and version at the top. The version is also preceeded with the name of the provider (Usually @strong{Oracle}) separated by a colon. Each statement name can have several versions of an SQL. You can add a new version by simply entering a new text into the version combobox. You can also select any of the existing versions by selecting them from the list.
+
+Below the name and version is the description which is independent from the version. Below that is a worksheet (@pxref{worksheet,SQL Worksheet}) which you can use to edit and test the SQL statement that should be associated with the given name and version.
+
+There is also a toolbar with the current available commands.
+
+ at table @asis
+
+ at item @strong{Open}
+      Read in a file containing SQL descriptions saved before.	
+ at item @strong{Save}
+      Save the changes made from the default to the SQL statements to a file. This file can be used to send updates and improvements of the internal SQL to incorporate in future versions.	
+ at item @strong{Save this entry}
+      Save the changes made. If changes have been made and you select a new item you will be asked to save or discard the changes if you forget to save entry before.	
+ at item @strong{Drop this entry}
+      Drop the current entry. If the last version of a statement is deleted the entire statement will be deleted. Observe that you can not delete default statements permanently, they will reappear when you restart TOra so you can't really screw up with this.	
+ at item @strong{New SQL}
+      Start new SQL statement definitions.
+ at end table

Added: kde-extras/tora/branches/upstream/current/doc/help/storage.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/storage.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/storage.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+ at node  storage
+ at section Storage Manager
+ at cindex Storage Manager
+
+This tool provides an easy interface to administrate tablespaces and datafiles.
+
+ at image{images/storage}
+
+As you can see in the screenshot above the tool is a list of all the tablespaces available in the database. The tablespaces can be expanded to display the datafiles they consist of. There is also one option available to this tool, whether to collect information about how coalesced the tablespaces are, the coalesced fetching can be very slow on fragmented databases and if TOra seems to lock itself when you try to start this tool try resetting that option to not show coalesced info. Using the toolbar you can perform these commands.
+
+ at table @asis
+
+ at item @strong{Refresh}	
+      Update the view.	
+ at item @strong{Tablespace online}	
+      Take the selected tablespace online.	
+ at item @strong{Tablespace offline}	
+      Take the selected tablespace off-line.	
+ at item @strong{Enable tablespace logging}	
+      Enable logging for the selected tablespace.	
+ at item @strong{Disable tablespace logging}
+      Disable logging for the selected tablespace.	
+ at item @strong{Read write tablespace}
+      Enable read and write access to the selected tablespace.	
+ at item @strong{Read only tablespace}
+      Only allow read only access to the selected tablespace.	
+ at item @strong{Modify tablespace}
+      Modify the selected tablespace settings. If you don't understand the settings in this dialog please refer to the Oracle Server Concepts manual.	
+ at item @strong{Modify datafile}
+      Modify the current datafiles settings. If you don't understand the settings in this dialog please refer to the Oracle Server Concepts manual. 	
+ at item @strong{Add tablespace}
+      Create a new tablespace. If you don't understand the settings in this dialog please refer to the Oracle Server Concepts manual.	
+ at item @strong{Add datafile}
+      Create a new datafile for the currently selected tablespace. If you don't understand the settings in this dialog please refer to the Oracle Server Concepts manual.	
+ at item @strong{Coalesced tablespace}
+      Coalesced free data in the current tablespace.	
+ at item @strong{Move datafile}
+      Move a datafile to another location.	
+ at item @strong{Change connection}
+      Change the connection to administrate storage for.
+ at end table
+
+When you select a tablespace or datafile the lower part of this tool displays the objects (to the left) and extents (to the right) in that tablespace or file. A used extent is displayed as green in the extent view if the object it belongs to is not selected in the list to the right. Selecting an item in the list to the right will paint it's extents red in the right extent view. Unallocated space is colored whie. Some information about the number of files and extents are displayed at the top of the extents display. Several datafiles are separated by one line of black in the extent view if a tablespace containing several files are viewed.
+

Added: kde-extras/tora/branches/upstream/current/doc/help/template.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/template.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/template.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,63 @@
+ at node template
+ at section Template Help
+ at cindex Template Help
+
+This tool provides help for writing PL/SQL and SQL queries by allowing a non obtrusive database browser and help lookup.
+
+The template help is implemented as a docked window if these are available. They are available in Qt 3.0 (Released only as beta as of 2001-07-11) and KDE.
+
+The help browser are divided into two panes. The top pane displays a tree view of the available documentation. The lower is used to display more information about the selected item in the top pane and it's content may differ depending on what is selected.
+
+The top pane is in the default distribution divided into two parts as well. The DB Browser (@pxref{browser,Database Browser}) which lets you explore your connected databases through a tree structure. The second part is a plain tree list of available text documentation. By default only one manual is supplied which contain PL/SQL functions, but an editor is supplied to write more help.
+
+Items in the second part is simply items with a descriptive text associated with them. Selecting the item will bring up the description of it in the information.
+
+ at image{images/template}
+
+ at subheading DB Browser
+
+The database browser allows you to browse the schema objects in the open databases. All the open databases will have an item under which the following information is available. Under each table is a list of the visible schemas for the database. Under the schema the following items are available.
+
+
+ at table @asis
+
+ at item @strong{Code}
+      Under this item all the code objects are displayed. The information in the child objects will bring up the source of the object. There are also child items to this that contain information about @strong{grants} and @strong{dependencies}.	
+ at item @strong{Indexes}
+      Contains all the indexes of the schema. The information in the child objects will bring up the columns on which the index is defined.	
+ at item @strong{Sequences}
+      The sequences of the schema. The information in the child objects will bring up information about the sequence. There are also child item to this that contain information about @strong{grants}.	
+ at item @strong{Synonyms}
+      The synonyms of the schema. The information in the child objects will bring up information about the sequence. There are also child item to this that contain information about @strong{grants}	
+ at item @strong{Tables}
+      The tables available in the schema. Selecting the table will bring up the columns of the table. There are also three child items to this that contain information about @strong{constraints}, @strong{grants} and @strong{references}.	
+ at item @strong{Triggers}
+      Triggers in the schema. Selecting the item will bring up the source for the trigger. There are also child items to this that contain information about @strong{grants} and @strong{dependencies}.	
+ at item @strong{Views}
+      The views available in the schema. Selecting the view name will bring up the columns of the table. There are also child items to this that contain information about @strong{grants} and @strong{dependencies}.
+ at end table
+
+Don't forget that more database browsing functionality is available in the database browser tool (@pxref{browser, Database Browser}).
+
+ at subheading Setup help templates
+
+You set up additional help files by selecting the SQL Template page in the options dialog (@pxref{preferences, Options}).
+
+ at image{images/templatesetup}
+
+To add an existing or start a new template help collection select the @strong{add file} button and enter the filename under 
+which to store the help collection and the name of the root item under which the collection should be displayed in the template help tree.
+
+To edit a collection select the collection in the list and press the @strong{edit file} button to bring up the template editor. If the name doesn't exist you are asked to start a new file or cancel.
+
+To remove a template press the @strong{remove file}, this will not remove the actual file.
+
+ at subheading Template editor
+
+The template editor is used to edit and create new text template help collections.
+
+ at image{images/templateeditor}
+
+The editor are separated into a few different parts. On the left is a list of available items. To the top right are two buttons @strong{add new template} and @strong{remove current template}. Then comes a line editor where the name of template is. If a ':' character is in the name it will split into a tree in the template collection tree. Then comes a text editor where the actual description of the title is written. You can specify simple HTML in this editor. Finally there is a button called @strong{preview} which will give you a preview of the editor result of HTML.
+
+The result is not saved until you press OK in the dialog. Pressing cancel will discard any changes made.

Added: kde-extras/tora/branches/upstream/current/doc/help/toc.htm
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/toc.htm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/toc.htm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+<HTML><HEAD><TITLE>Contents</TITLE></HEAD><BODY>
+<IMG ALIGN=center SRC=images/largelogo.png><P>
+<H1>Help contents</H1>
+<A HREF=help.html>Using the help browser</A><P>
+<A HREF=history.html>History of TOra</A><P>
+<A HREF=workspace.html>Getting to know your workspace</A>
+<DL>
+<DD><A HREF=window.html>Elements of the main window</A>
+<DD><A HREF=newconnection.html>Connecting to a database</A>
+<DD><A HREF=newconnection.html#priv>Privileges for the TOra user</A>
+
+<DD><A HREF=editors.html>Using editors</A>
+<DD><A HREF=lists.html>Using lists</A>
+<DD><A HREF=charts.html>Using charts</A>
+<DD><A HREF=searchreplace.html>Search &amp; replace</A>
+<DD><A HREF=preferences.html>Options</A>
+<DL>
+<DD><A HREF=preferences.html#global>Global Settings</A>
+<DD><A HREF=database.html>Database Settings</A>
+
+<DD><A HREF=fonts.html>Font Settings</A>
+<DD><A HREF=additionalhelp.html>Additional Help</A>
+<DD><A HREF=toolsetting.html>Tool Settings</A>
+</DL><P>
+<DD><A HREF=common.html>Other common elements</A>
+<DL>
+<DD><A HREF=common.html#sga>SGA Statement</A>
+<DD><A HREF=common.html#explain>Explain Plan</A>
+<DD><A HREF=common.html#param>Getting bind parameters</A>
+<DD><A HREF=common.html#describe>Object description</A>
+
+<DD><A HREF=common.html#memo>Memo editor</A>
+</DL>
+</DL><P>
+<A HREF=tools.html>Tools</A>
+<DL>
+<DD><A HREF=worksheet.html>SQL Worksheet</A>
+<DD><A HREF=browser.html>Schema Browser</A>
+<DD><A HREF=debugger.html>PL/SQL Debugger</A>
+<DD><A HREF=tuning.html>Server Tuning</A>
+<DD><A HREF=security.html>Security Manager</A>
+
+<DD><A HREF=storage.html>Storage Manager</A>
+<HR>
+<DD><A HREF=session.html>Sessions</A>
+<DD><A HREF=rollback.html>Rollback Segments</A>
+<DD><A HREF=trace.html>SGA Trace</A>
+<DD><A HREF=current.html>Current Session</A>
+<HR>
+<DD><A HREF=script.html>DB Extraction/Compare/Search</A>
+<DD><A HREF=analyze.html>Statistics Manager</A>
+<DD><A HREF=alert.html>Alert Tool</A>
+
+<DD><A HREF=invalid.html>Invalid Objects</A>
+<DD><A HREF=output.html>SQL Output Viewer</A>
+<HR>
+<DD><A HREF=template.html>Template Help</A>
+<HR>
+<DD><A HREF=sqledit.html>SQL Editor</A>
+</DL><P>
+<A HREF="api/index.html">Extending TOra</A>
+<DL>
+<DD><A HREF="api.html">Tutorial</A><BR>
+<DD><A HREF="api/index.html">API Reference</A>
+
+<DL>
+<DD><A HREF="api/index-long.html">Annotated Class List</A>
+<DD><A HREF="api/header-list.html">Header Files</A>
+<DD><A HREF="api/all-globals.html">Global Declarations</A>
+<DD><A HREF="api/hier.html">Class Hierarchy</A>
+</DL>
+</DL>
+</BODY>
+</HTML>

Added: kde-extras/tora/branches/upstream/current/doc/help/tools.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tools.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tools.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+ at node tools
+ at chapter Available tools
+ at cindex Available tools
+
+These are the available tools in a standard TOra installation. Individual installations may vary.
+
+ at menu
+* SQL Worksheet: worksheet.
+* Schema Browser: browser.
+* PL/SQL Debugger: debugger.
+* Server Tuning: tuning.
+* Security Manager:security.
+* Storage Manager: storage.
+* Sessions: session.
+* Rollback Segments: rollback.
+* SGA Trace: trace.
+* Current Session: current.
+* DB Extraction/Compare/Search:script.
+* Statistics Manager:analyze.
+* Alert Tool:alert.
+* Invalid Objects:invalid.
+* SQL Output Viewer:output.
+* Template Help:template.
+* SQL Editor:sqledit.
+ at end menu

Added: kde-extras/tora/branches/upstream/current/doc/help/toolsetting.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/toolsetting.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/toolsetting.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,14 @@
+ at node toolsetting
+ at subsection Tool Settings
+ at cindex Tool Settings
+
+This page of the options contain settings on which tools should be enabled in TOra.
+
+ at image{images/tools}
+
+The first list contains all the available tools in TOra. If an item is selected in the list it is enabled. If unselected it is not enabled.
+
+There is also a combobox at the bottom called @strong{Default tool}. Using this setting you can specify which tool to start by default when opening a new connection. Many people are for instance more interested in the database browser than a worksheet and could start that instead of a worksheet by default on opening a connection.
+
+Be aware that you need to restart TOra for changes to these settings take affect.
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/Explain-plan.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/Explain-plan.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/Explain-plan.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,53 @@
+<html lang="en">
+<head>
+<title>Explain plan - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="common.html#common" title="common">
+<link rel="prev" href="SGA-Statement.html#SGA-Statement" title="SGA Statement">
+<link rel="next" href="Getting-bind-parameters.html#Getting-bind-parameters" title="Getting bind parameters">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="Explain-plan"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="Getting-bind-parameters.html#Getting-bind-parameters">Getting bind parameters</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="SGA-Statement.html#SGA-Statement">SGA Statement</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="common.html#common">common</a>
+<hr>
+</div>
+
+<h4 class="subsection">3.9.2 Explain plan</h4>
+
+<p>This element can be either part of an SGA statement or by itself in some cases (See above for a screenshot). For more information about execution paths check the Oracle manual Designing and Tuning for Performance, chapter 5 in the 8i release.
+
+   <p>A few notes here is that the execution plan displayed here is not necessarily the same as when run depending on one of these reasons.
+
+     <ul>
+<li>It is run as a different user which doesn't access the same database objects as the user you are logged in as now. 
+<li>The session running the query can have changed some optimizer parameters compared to your session. 
+</ul>
+
+   <p>What you see in this window is the execution you would get if you ran the statement like the one you are logged in as now and in your session. One example of this problem is if a user executes SQL which accesses his own objects which doesn't have public synonyms, then another person can simply not execute the SQL without modifying it to add owner specifier to the tables which TOra will not do automatically.
+
+   <p>Explain plan requires a table to store the result in. The name of this table can be configured in the options(see <a href="preferences.html#preferences">Options</a>). If the table doesn't exist TOra will ask you if it should try to create it. Without this table you can not display execution plans in TOra.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/Getting-bind-parameters.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/Getting-bind-parameters.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/Getting-bind-parameters.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,54 @@
+<html lang="en">
+<head>
+<title>Getting bind parameters - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="common.html#common" title="common">
+<link rel="prev" href="Explain-plan.html#Explain-plan" title="Explain plan">
+<link rel="next" href="Object-description.html#Object-description" title="Object description">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="Getting-bind-parameters"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="Object-description.html#Object-description">Object description</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="Explain-plan.html#Explain-plan">Explain plan</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="common.html#common">common</a>
+<hr>
+</div>
+
+<h4 class="subsection">3.9.3 Getting bind parameters</h4>
+
+<p>This dialog is displayed when input parameters are required to run the SQL. For instance the example dialog is the dialog displayed when running the following SQL in the worksheet.
+
+<pre class="example"><pre class="verbatim">     
+     
+     select * from essprc where prcid > :prcid and begrdt > :begrdt;
+     
+</pre>
+</pre>
+   <div class="block-image"><img src="images/getparam.png" alt="images/getparam.png"></div>
+
+   <p>As you can see the field name as specified after the : character is presented as a title. If the same field name is used at several parts of the query you only get to specify it once. You specify the value in the editor line just to the right of the field name label. If you want to specify a NULL value check the <strong>NULL</strong> checkbox to the right of the editor. You can also edit the value in a memo editor(see <a href="Memo-editor.html#Memo-editor">Memo editor</a>) pressing the <strong>Edit</strong> button to the right on the value.
+
+   <p>The parameter editor will cache it's value so it will remember the last parameters you fed to it when you run the query again.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/Global-Settings.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/Global-Settings.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/Global-Settings.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,63 @@
+<html lang="en">
+<head>
+<title>Global Settings - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="preferences.html#preferences" title="preferences">
+<link rel="next" href="database.html#database" title="database">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="Global-Settings"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="database.html#database">database</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="preferences.html#preferences">preferences</a>
+<hr>
+</div>
+
+<h4 class="subsection">3.8.1 Global Settings</h4>
+
+<p>These may vary some depending on how your system was compiled and configured. Not all options are displayed in the screenshot since that was made on a KDE version of TOra.
+
+   <p><table summary=""><tr align="left"><td valign="top" width="20%"><strong>Custom SQL</strong> </td><td valign="top" width="80%">The file in which to store your custom SQL. For more information about custom SQL and the SQL dictionary (see <a href="sqledit.html#sqledit">SQL Editor tool</a>. The string <strong><samp></strong><span class="env">$HOME</span><strong></samp></strong> will be replaced by your home directory on UNIX or documents directory in Windows. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Help directory</strong> </td><td valign="top" width="80%">Should point to where the TOra help table of contents file is stored (toc.html). This should be set up correctly if you made a normal install. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Plugin directory</strong> </td><td valign="top" width="80%">This option is only available in a plugin based TOra installation. It should point to the directory where the plugins for TOra are located. It should be set up correctly on installation if needed. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Cache directory</strong> </td><td valign="top" width="80%">Should point to where the TOra Disk Cache files are stored. There is one file for each Connection. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Change current connection with active window</strong> </td><td valign="top" width="80%">If this option is set, changing the current window will also change the current connection to that of the active window. The connection is only changed when you change window so if you want to change the connection to something else you can still do so as long as you don't change the window. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Save last password</strong> </td><td valign="top" width="80%">Whether or not TOra should store the last password used to connect. <strong>Be aware that the password is store in clear text in either the windows registry or a file.</strong>
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Include DB in caption</strong> </td><td valign="top" width="80%">If this is set the database name will be included in the caption of all your tool windows after the tool name. Observe that there often is no other way of knowing which database the window works on except for this. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Maximize window on start</strong> </td><td valign="top" width="80%">If this is checked the TOra main window will open maximized on startup. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Desktop Aware</strong> </td><td valign="top" width="80%">Set this if Qt should try to figure out and interact nicely with the desktop environment. The reason for this switch is that in some versions of KDE TOra doesn't look nice if this is checked. This switch is only available for Qt only applications. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>use Disk Cache</strong> </td><td valign="top" width="80%">This option tells TOra to Cache the Object List in the Cache Directory. Default is No Caching. When Caching is activated, you have to refresh the object cache with the menu option File-&gt;Reread Object Cache, because, the default source for the Object List is the diskfile. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Antialias fonts</strong>  </td><td valign="top" width="80%">Check this if you want TOra to use antialiased fonts in X11 if available. This option may not be available (Regardless of if you have access to antialiased fonts or not). 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Docks use toolbars</strong>  </td><td valign="top" width="80%">This option tells TOra how to emulate docked windows when they are not available. Docked windows are not available if you do not use KDE and have a Qt version less than 3 (If you run in windows you're it). If this is checked docks will be emulated with a toolbar, this has the drawback that you can't resize them. If unchecked docks appear in normal windows. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Style</strong>  </td><td valign="top" width="80%">The GUI style to use for the TOra application. This switch is only available for Qt only applications. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Display alerts in statusbar only</strong>	 </td><td valign="top" width="80%">Display errors only in the statusbar. This is really usefull since it doesn't interrupt you as much as a dialog window as long as you know to look for information in the statusbar when things doesn't work. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Connect history</strong>	 </td><td valign="top" width="80%">How many connection entries to save in the new connection history list. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Table scale</strong>  </td><td valign="top" width="80%">This is the scale which to use when printing lists. Lists on paper can usually be a little smaller and still be readable. Given as a fraction where 0.5 means half the size on paper and 1.0 the same size. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Status message</strong>  </td><td valign="top" width="80%">The number of seconds to display error messages in the status bar. If you specify 0 they are kept until the next message is displayed. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Message history</strong>	 </td><td valign="top" width="80%">The number of status messages to store in the status message history before the oldest are removed when new are added. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Chart samples</strong>  </td><td valign="top" width="80%">Number of samples to save by default in charts. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Size Unit</strong>  </td><td valign="top" width="80%">The unit to display sizes with in TOra. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Refresh</strong>	 </td><td valign="top" width="80%">The default refresh time to use in TOra. Tools which refresh automatically use this setting as the default. It can also be changed on a per tool basis.
+   <br></td></tr></table>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/Index.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/Index.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/Index.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,73 @@
+<html lang="en">
+<head>
+<title>Index - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="prev" href="extendingtora.html#extendingtora" title="extendingtora">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="Index"></a>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="extendingtora.html#extendingtora">extendingtora</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<hr>
+</div>
+
+<h2 class="unnumbered">Index</h2>
+
+<ul class="index-cp" compact>
+<li><a href="additionalhelp.html#index-Additional-Help-Settings-13">Additional Help Settings</a>: <a href="additionalhelp.html#additionalhelp">additionalhelp</a></li>
+<li><a href="alert.html#index-Alert-Tool-29">Alert Tool</a>: <a href="alert.html#alert">alert</a></li>
+<li><a href="tools.html#index-Available-tools-16">Available tools</a>: <a href="tools.html#tools">tools</a></li>
+<li><a href="newconnection.html#index-Connecting-to-a-database-5">Connecting to a database</a>: <a href="newconnection.html#newconnection">newconnection</a></li>
+<li><a href="current.html#index-Current-Session-26">Current Session</a>: <a href="current.html#current">current</a></li>
+<li><a href="browser.html#index-Database-Browser-18">Database Browser</a>: <a href="browser.html#browser">browser</a></li>
+<li><a href="database.html#index-Database-Settings-11">Database Settings</a>: <a href="database.html#database">database</a></li>
+<li><a href="window.html#index-Elements-of-the-main-window-4">Elements of the main window</a>: <a href="window.html#window">window</a></li>
+<li><a href="extendingtora.html#index-Extending-TOra-34">Extending TOra</a>: <a href="extendingtora.html#extendingtora">extendingtora</a></li>
+<li><a href="fonts.html#index-Font-Settings-12">Font Settings</a>: <a href="fonts.html#fonts">fonts</a></li>
+<li><a href="workspace.html#index-Getting-to-know-your-workspace-3">Getting to know your workspace</a>: <a href="workspace.html#workspace">workspace</a></li>
+<li><a href="history.html#index-History-and-future-of-TOra-2">History and future of TOra</a>: <a href="history.html#history">history</a></li>
+<li><a href="invalid.html#index-Invalid-Objects-30">Invalid Objects</a>: <a href="invalid.html#invalid">invalid</a></li>
+<li><a href="lists.html#index-lists-7">lists</a>: <a href="lists.html#lists">lists</a></li>
+<li><a href="preferences.html#index-Options-10">Options</a>: <a href="preferences.html#preferences">preferences</a></li>
+<li><a href="common.html#index-Other-common-elements-15">Other common elements</a>: <a href="common.html#common">common</a></li>
+<li><a href="debugger.html#index-PL_002fSQL-Debugger-19">PL/SQL Debugger</a>: <a href="debugger.html#debugger">debugger</a></li>
+<li><a href="rollback.html#index-Rollback-Segments-24">Rollback Segments</a>: <a href="rollback.html#rollback">rollback</a></li>
+<li><a href="script.html#index-Schema-extraction_002c-compare-and-search-27">Schema extraction, compare and search</a>: <a href="script.html#script">script</a></li>
+<li><a href="searchreplace.html#index-Search-_0026-Replace-9">Search &amp; Replace</a>: <a href="searchreplace.html#searchreplace">searchreplace</a></li>
+<li><a href="security.html#index-Security-Manager-21">Security Manager</a>: <a href="security.html#security">security</a></li>
+<li><a href="tuning.html#index-Server-Tuning-20">Server Tuning</a>: <a href="tuning.html#tuning">tuning</a></li>
+<li><a href="session.html#index-Session-Manager-23">Session Manager</a>: <a href="session.html#session">session</a></li>
+<li><a href="trace.html#index-SGA-Trace-25">SGA Trace</a>: <a href="trace.html#trace">trace</a></li>
+<li><a href="sqledit.html#index-SQL-Editor-33">SQL Editor</a>: <a href="sqledit.html#sqledit">sqledit</a></li>
+<li><a href="output.html#index-SQL-Output-31">SQL Output</a>: <a href="output.html#output">output</a></li>
+<li><a href="worksheet.html#index-SQL-Worksheet-17">SQL Worksheet</a>: <a href="worksheet.html#worksheet">worksheet</a></li>
+<li><a href="analyze.html#index-Statistics-manager-28">Statistics manager</a>: <a href="analyze.html#analyze">analyze</a></li>
+<li><a href="storage.html#index-Storage-Manager-22">Storage Manager</a>: <a href="storage.html#storage">storage</a></li>
+<li><a href="template.html#index-Template-Help-32">Template Help</a>: <a href="template.html#template">template</a></li>
+<li><a href="toolsetting.html#index-Tool-Settings-14">Tool Settings</a>: <a href="toolsetting.html#toolsetting">toolsetting</a></li>
+<li><a href="api.html#index-TOra-Tool-Tutorial-35">TOra Tool Tutorial</a>: <a href="api.html#api">api</a></li>
+<li><a href="Using-charts.html#index-Using-charts-8">Using charts</a>: <a href="Using-charts.html#Using-charts">Using charts</a></li>
+<li><a href="editors.html#index-Using-editors-6">Using editors</a>: <a href="editors.html#editors">editors</a></li>
+<li><a href="help.html#index-Using-the-help-browser-1">Using the help browser</a>: <a href="help.html#help">help</a></li>
+   </ul></body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/Memo-editor.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/Memo-editor.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/Memo-editor.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+<html lang="en">
+<head>
+<title>Memo editor - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="common.html#common" title="common">
+<link rel="prev" href="Object-description.html#Object-description" title="Object description">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="Memo-editor"></a>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="Object-description.html#Object-description">Object description</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="common.html#common">common</a>
+<hr>
+</div>
+
+<h4 class="subsection">3.9.5 Memo editor</h4>
+
+<div class="block-image"><img src="images/memo.png" alt="images/memo.png"></div>
+
+   <p>This is used to display or edit larger text than is easily entered in a oneline editor or list. To the top is a toolbar with some editing buttons. Specifically you have the save changes button to the left. You can also do this using the key <strong>CTRL+Return</strong>. 
+You can remove the editor without saving changes using the <strong>Escape</strong> key or closing the window.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/Object-description.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/Object-description.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/Object-description.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+<html lang="en">
+<head>
+<title>Object description - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="common.html#common" title="common">
+<link rel="prev" href="Getting-bind-parameters.html#Getting-bind-parameters" title="Getting bind parameters">
+<link rel="next" href="Memo-editor.html#Memo-editor" title="Memo editor">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="Object-description"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="Memo-editor.html#Memo-editor">Memo editor</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="Getting-bind-parameters.html#Getting-bind-parameters">Getting bind parameters</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="common.html#common">common</a>
+<hr>
+</div>
+
+<h4 class="subsection">3.9.4 Object description</h4>
+
+<div class="block-image"><img src="images/describe.png" alt="images/describe.png"></div>
+
+   <p>This is a list that describes the columns of a table or view. There is nothing much special about this view except that you can check the collected analyze statistics for the column by placing the cursor over it and reading the tooltip that will be displayed. If no tooltip is displayed there is no analyzed statistics available. Also notable is that this list is read completely from the object cache if it available. This will mean that if you are modifying the object you are modifying you need to reread the object cache before you can see the changes.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/SGA-Statement.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/SGA-Statement.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/SGA-Statement.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+<html lang="en">
+<head>
+<title>SGA Statement - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="common.html#common" title="common">
+<link rel="next" href="Explain-plan.html#Explain-plan" title="Explain plan">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="SGA-Statement"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="Explain-plan.html#Explain-plan">Explain plan</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="common.html#common">common</a>
+<hr>
+</div>
+
+<h4 class="subsection">3.9.1 SGA Statement</h4>
+
+<p>This element is used to describe an element in the SGA.
+
+   <div class="block-image"><img src="images/sgastatement.png" alt="images/sgastatement.png"></div>
+
+   <p>The SGA statement have three tabs. The first tab called SQL simply display all of the SQL of the statement. The second tab called Execution plan displays the execution plan of the statement. This is described in more detail later. The last tab called Information simply display the information available about the statement in the SGA.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/Using-charts.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/Using-charts.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/Using-charts.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,66 @@
+<html lang="en">
+<head>
+<title>Using charts - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="workspace.html#workspace" title="workspace">
+<link rel="prev" href="lists.html#lists" title="lists">
+<link rel="next" href="searchreplace.html#searchreplace" title="searchreplace">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="Using-charts"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="searchreplace.html#searchreplace">searchreplace</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="lists.html#lists">lists</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="workspace.html#workspace">workspace</a>
+<hr>
+</div>
+
+<h3 class="section">3.6 Using charts</h3>
+
+<p><a name="index-Using-charts-8"></a>There are several different chart types in TOra, you can see them all in the screenshot below.
+
+   <div class="block-image"><img src="images/charts.png" alt="images/charts.png"></div>
+
+<h4 class="subheading">Piecharts</h4>
+
+<p>This is the most simple chart. If the chart is too small you can open a snapshot of the chart by doubleclicking it. You can also open a context menu by rightclicking it. In the context menu you can choose to print the chart as well and open a snapshot in a new window.
+
+<h4 class="subheading">Linecharts &amp; barcharts</h4>
+
+<p>These two charts work in the same way. The difference is that in a barchart the values are added on top of each other so you can easily see the sum of all values.
+
+   <p>You can zoom a part of a chart by leftclicking it and dragging a selection. If a chart is currently zoomed the word <strong>Zoom</strong> is printed in the upper left corner. You can remove the zooming by right clicking on the chart.
+
+   <p>The snapshot feature, context menu and printing works the same for these charts as for the piechart. In the context menu you have an additional item though that is <strong>Properties</strong>
+
+   <div class="block-image"><img src="images/chartsetup.png" alt="images/chartsetup.png"></div>
+
+     <dl>
+<dt><strong>Y-Axis</strong><dd>      This part is pretty self explanatory and is used to set up the range to display on the Y-axis of the chart. 
+<br><dt><strong>Show last value</strong><dd>      Display the last sample added to the chart under the title of the chart. 
+<br><dt><strong>Show axis legend</strong><dd>      Display text with the range and units of the axises. 
+<br><dt><strong>Show chart legend</strong><dd>      Display the colors used in the chart in a legend to the right. 
+<br><dt><strong>Divide chart in grids</strong><dd>      How many gridlines to divide a chart into. 
+</dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/What-privileges-do-you-need-to-run-TOra.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/What-privileges-do-you-need-to-run-TOra.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/What-privileges-do-you-need-to-run-TOra.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+<html lang="en">
+<head>
+<title>What privileges do you need to run TOra - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="workspace.html#workspace" title="workspace">
+<link rel="prev" href="newconnection.html#newconnection" title="newconnection">
+<link rel="next" href="editors.html#editors" title="editors">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="What-privileges-do-you-need-to-run-TOra"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="editors.html#editors">editors</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="newconnection.html#newconnection">newconnection</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="workspace.html#workspace">workspace</a>
+<hr>
+</div>
+
+<h3 class="section">3.3 What privileges do you need to run TOra</h3>
+
+<p>TOra should be able to run as any user, although off course you can never do anything in TOra that aren't allowed from that Oracle account. You will be able to use pretty much any tool in TOra for read only purposes if you are granted the <strong>SELECT_CATALOG_ROLE</strong>, also some parts of TOra will have limited functionality if you do not have the <strong>ALTER SESSION</strong> privilege.
+
+   <p>Also you need to be able to create the plan table if that is not done for you. The plan table (see <a href="database.html#database">Database Settings</a> for how to select plan table name) must also be available with <strong>INSERT</strong> and <strong>SELECT</strong> access. TOra will function without the plan table but off course you will not be able to display any execution plans.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/additionalhelp.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/additionalhelp.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/additionalhelp.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,59 @@
+<html lang="en">
+<head>
+<title>additionalhelp - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="preferences.html#preferences" title="preferences">
+<link rel="prev" href="fonts.html#fonts" title="fonts">
+<link rel="next" href="toolsetting.html#toolsetting" title="toolsetting">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="additionalhelp"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="toolsetting.html#toolsetting">toolsetting</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="fonts.html#fonts">fonts</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="preferences.html#preferences">preferences</a>
+<hr>
+</div>
+
+<h4 class="subsection">3.8.4 Additional Help Settings</h4>
+
+<p><a name="index-Additional-Help-Settings-13"></a>
+This page is used to configure extra manuals for viewing in the TOra help viewer. Specifically the Oracle HTML based manuals which contents can be parsed and included in the left pane contents tree of the TOra help.
+
+   <div class="block-image"><img src="images/additionalhelp.png" alt="images/additionalhelp.png"></div>
+
+   <p>If you have compiled TOra with KDE support (Not Windows or Qt versions) you can point this to any HTTP location. You could even use the help browser to browse the Oracle manuals directly from Technet if you wanted to (Free membership required).
+
+     <dl>
+<dt>`<samp><span class="samp">Remove path</span></samp>'<dd>This will remove the currently selected manual from the list. 
+`<samp><span class="samp">Remove path</span></samp>'
+
+     <br><dt>`<samp><span class="samp">Oracle Manuals</span></samp>'<dd>This is a quick way to add a collection of manuals. When you select this button a dialog will pop up and ask you for a filename. In Oracle 8 this should be the index page that contains the links to the manuals. Observe that this is not the page which links to the different book categories. In Oracle 9i you should point it to the docindex.htm file in the base directory of the documentation. If successful all the manuals available on the page is added to the list of manuals. 
+`<samp><span class="samp">Oracle Manuals</span></samp>'
+
+     <br><dt>`<samp><span class="samp">Add path</span></samp>'<dd>Add a manual to the list of manuals. This pop up a dialog asking for the name of the manual and the location of the manuals table of contents HTML file (toc.html). 
+`<samp><span class="samp">Add path</span></samp>'
+
+   </dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/alert.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/alert.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/alert.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,63 @@
+<html lang="en">
+<head>
+<title>alert - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="analyze.html#analyze" title="analyze">
+<link rel="next" href="invalid.html#invalid" title="invalid">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="alert"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="invalid.html#invalid">invalid</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="analyze.html#analyze">analyze</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.13 Alert Tool</h3>
+
+<p><a name="index-Alert-Tool-29"></a>This tool is usefull for debugging database packages that send or depend on receiving dbms alerts.
+
+   <div class="block-image"><img src="images/alert.png" alt="images/alert.png"></div>
+
+   <p>This tool is controled solely from it's toolbar which is followed by a list containing the alerts received so far on the watched alerts. The toolbar contains the following controls.
+
+     <dl>
+<dt>Registered<dd>This list contains the alerts that are registered for listening. To add a new alert simply write the name in this combo box and press return or the register current button immediately to the right. To remove an alert select it in the list and press the remove registered button.`<samp><span class="samp">Registered</span></samp>'.
+
+     <br><dt><strong>Register current</strong><dd>Register the name currently entered in the registered combo box.
+
+     <br><dt><strong>Remove registered</strong><dd>Stop listening to the registered alert currently selected in the registered combo box.
+
+     <br><dt><strong>Name</strong><dd>Name of the alert to send.
+
+     <br><dt><strong>Message</strong><dd>Message to send in an alert. Pressing return in this lineedit will send the alert.
+
+     <br><dt><strong>Edit message in memo</strong><dd>Edit the message in a memo editor, usefull for sending newlines and longer messages.
+
+     <br><dt><strong>Send alert</strong><dd>Send the currently defined alert. You can also send an alert by pressing return in the message line editor.
+
+   </dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/analyze.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/analyze.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/analyze.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+<html lang="en">
+<head>
+<title>analyze - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="script.html#script" title="script">
+<link rel="next" href="alert.html#alert" title="alert">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="analyze"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="alert.html#alert">alert</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="script.html#script">script</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.12 Statistics manager</h3>
+
+<p><a name="index-Statistics-manager-28"></a>
+This tool is usefull for collecting statistics and analyze tables in parallel. You can also use it to browse collected statistics.
+
+   <div class="block-image"><img src="images/analyze.png" alt="images/analyze.png"></div>
+
+   <p>You control the interface through the controls in the toolbar. The rest of the interface simply displays currently available tables in the current schema. When collecting statistics only the selected items in the tablelist are analyzed.
+
+     <dl>
+<dt>`<samp><span class="samp">Refresh</span></samp>'<dd>Refresh the table list from the database. 
+`<samp><span class="samp">Refresh</span></samp>'
+
+     <br><dt>`<samp><span class="samp">Schema</span></samp>'<dd>The next control is which schema to investigate tables for. 
+`<samp><span class="samp">Schema</span></samp>'
+
+     <br><dt>`<samp><span class="samp">Operation</span></samp>'<dd>What operation to perform. Select one of <strong>compute statistics</strong>, <strong>estimate statistics</strong>, <strong>delete statistics</strong> and <strong>validate references</strong>. 
+`<samp><span class="samp">Operation</span></samp>'
+
+     <br><dt>`<samp><span class="samp">Target</span></samp>'<dd>Depending on the <strong>operation</strong> you can sometimes select what kind of statistic to collect. Choose between <strong>all</strong>, <strong>table</strong>, <strong>indexed columns</strong> and <strong>local indexes</strong>. 
+`<samp><span class="samp">Target</span></samp>'
+
+     <br><dt>`<samp><span class="samp">Sample</span></samp>'<dd>If the <strong>operation</strong> is <strong>estimate statistics</strong> you can choose how large sample should be used to estimate the statistic information in percent of total amount of data. 
+`<samp><span class="samp">Sample</span></samp>'
+
+     <br><dt>`<samp><span class="samp">Parallel</span></samp>'<dd>Indicate the number of separate connections to open to the database and run collecting statistics concurrently when collecting. 
+`<samp><span class="samp">Parallel</span></samp>'
+
+     <br><dt>`<samp><span class="samp">Start analyzing</span></samp>'<dd>Press this button to perform the indicated operation on the tables selected in the list below the toolbar. 
+`<samp><span class="samp">Start analyzing</span></samp>'
+
+     <br><dt>`<samp><span class="samp">Stop</span></samp>'<dd>Stop current run. Before the stop button you can also see information about the currently running statistics gathering run if any is running. 
+`<samp><span class="samp">Stop</span></samp>'
+
+   </dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/api.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/api.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/api.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,254 @@
+<html lang="en">
+<head>
+<title>api - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="extendingtora.html#extendingtora" title="extendingtora">
+<link rel="next" href="externalapi.html#externalapi" title="externalapi">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="api"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="externalapi.html#externalapi">externalapi</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="extendingtora.html#extendingtora">extendingtora</a>
+<hr>
+</div>
+
+<h3 class="section">5.1 TOra Tool Tutorial</h3>
+
+<p><a name="index-TOra-Tool-Tutorial-35"></a>
+This tutorial will create a simple tool that can execute an SQL statement and display it's content in a list. This tutorial assumes you have knowledge of C++ and Qt programming.
+
+   <p>First of all we create an include file which defines the tool widget. This is the window that will be displayed when the a tool window is created. How that happens comes later.
+
+<pre class="example"><pre class="verbatim">     
+     
+     #ifndef TOSIMPLEQUERY_H
+     #define TOSIMPLEQUERY_H
+     
+     #include "totool.h"
+     
+     class toResultView;
+     class QLineEdit;
+     class toConnection;
+     
+     class toSimpleQuery : public toToolWidget {
+       Q_OBJECT
+     
+       toResultView *Result;
+       QLineEdit *Statement;
+     private slots:
+       void execute(void);
+     public:
+       toSimpleQuery(QWidget *parent,toConnection &amp;connection);
+     };
+     
+     #endif
+     
+</pre>
+</pre>
+   <p>If this file is put in the main TOra source directory the configure script will generate the appropriate moc file which will be needed later. If you don't know what moc is, please go back to the Qt manual to read up on slots and signals.
+
+   <p>The rest is pretty straight forward and will be much clearer after we start working our way through the implementation of this tool.
+
+   <p>The first thing we need to do is create a tool description which is done by subclassing the toTool class. This is how we implement this class for this function.
+
+<pre class="example"><pre class="verbatim">     
+     
+     #include "totool.h"
+     #include "tosimplequery.h"
+     
+     static char * tosimplequery_xpm[] = {
+     "16 16 3 1",
+     " c None",
+     ".c #000000",
+     "+c #FFFFFF",
+     "       ......   ",
+     "      ..++++.   ",
+     "     .+.++++.   ",
+     "    .++.++++.   ",
+     "   .....++++.   ",
+     "   .++++++++.   ",
+     "   .++++++++.   ",
+     "   .++++++++.   ",
+     "   .++++++++.   ",
+     "   .++++++++.   ",
+     "   .++++++++.   ",
+     "   .++++++++.   ",
+     "   .++++++++.   ",
+     "   .++++++++.   ",
+     "   .++++++++.   ",
+     "   ..........   "};
+     
+     class toSimpleQueryTool : public toTool {
+     protected:
+       virtual char **pictureXPM(void)
+       { return tosimplequery_xpm; }
+     public:
+       toSimpleQueryTool()
+         : toTool(203,"Simple Query")
+       { }
+       virtual const char *menuItem()
+       { return "Simple Query"; }
+       virtual QWidget *toolWindow(QWidget *parent,toConnection &amp;connection)
+       {
+         return new toSimpleQuery(parent,connection);
+       }
+     };
+     
+     static toSimpleQueryTool SimpleQueryTool;
+     
+</pre>
+</pre>
+   <p>The first thing that happens is that we include the header file which defines the tool widget and the tool definition header files. Even if this is included in the tosimplequery.h it is good practice not to assume any extra files are included by header files.
+
+   <p>Next comes a definition of an xpm pixmap. Normally these are placed in the icons directory and then included into the file as you can see in the TOra source. This is placed inline for clarity.
+
+   <p>The next one is the big one. Here we define the tool class which has a few important virtual functions.
+
+     <dl>
+<dt>`<samp><span class="samp">pictureXPM</span></samp>'<dd>This function should if defined return a pointer to a xpm definition. This will then be used for toolbar icon, menu icon and tool window icon. 
+`<samp><span class="samp">pictureXPM</span></samp>'
+
+     <br><dt>`<samp><span class="samp">menuItem</span></samp>'<dd>Should return a string containing the name of the menu item to add to the tools menu. This is also used for a tip for the toolbar icon by default. 
+`<samp><span class="samp">menuItem</span></samp>'
+
+     <br><dt>`<samp><span class="samp">toolWindow</span></samp>'<dd>This function will create a new tool widget and return a pointer to it. It doesn't need to create a widget, then it should then return NULL. Some tools there might only be one per connection for instance. 
+`<samp><span class="samp">toolWindow</span></samp>'
+
+   </dl>
+
+   <p>The number in the constructor is a priority indicator that denote where in the list of tools this tool should be inserted, between each 100 step a separator is inserted into the toolbar and menubar.
+
+   <p>And last a not so obvious line where the an instance of the tool descriptor is instantiated. This is a feature that is used a lot in TOra. This will ensure that all tools are registered when the application is started. It also works when using modules, if this is compiled as a module the tool will be instantiated on loading without any hassle with functions with predefined names and such stuff.
+
+   <p>Lastly comes the implementation of the tool widget which is not much longer. I have divided this into several parts to simplify explaining them.
+
+<pre class="example"><pre class="verbatim">     
+     
+     #include &lt;list>
+     
+     #include &lt;qtoolbar.h>
+     #include &lt;qlabel.h>
+     #include &lt;qtoolbutton.h>
+     #include &lt;qlineedit.h>
+     
+     #include "tosimplequery.h"
+     #include "toresultview.h"
+     #include "toparamget.h"
+     #include "tochangeconnection.h"
+     
+     #include "tosimplequery.moc"
+     
+     static char * execute_xpm[] = {
+     "16 16 3 1",
+     " c None",
+     ".c #000000",
+     "+c #0FFE14",
+     "                ",
+     "                ",
+     "                ",
+     "     .          ",
+     "     ..         ",
+     "     .+.        ",
+     "     .++.       ",
+     "     .+++.      ",
+     "     .+++.      ",
+     "     .++.       ",
+     "     .+.        ",
+     "     ..         ",
+     "     .          ",
+     "                ",
+     "                ",
+     "                "};
+     
+     toSimpleQuery::toSimpleQuery(QWidget *main,toConnection &amp;connection)
+       : toToolWidget(SimpleQueryTool,"simplequery.html",main,connection)
+     {
+       QToolBar *toolbar=toAllocBar(this,"Simple Query",connection.description());
+       QPixmap executePixmap((const char **)execute_xpm);
+       new QToolButton(executePixmap,
+                       "Execute current statement",
+                       "Execute current statement",
+       this,SLOT(execute()),
+       toolbar);
+       toolbar->setStretchableWidget(new QLabel("",toolbar));
+       new toChangeConnection(toolbar);
+     
+</pre>
+</pre>
+   <p>In this part the parent constructor is called and the toolbar is set up. Also note the inclusion of the moc file which by convention is called tosimplequery.moc. One thing worth noticing here is the toAllocBar which is used to be able to transparently support either using KToolBar or QToolBar depending on whether this is a Qt or KDE application. This is very important since TOra also supports windows to which KDE is not available.
+
+   <p>The second part is the setStretchableWidget call which is used to indicate that an empty label should be stretch instead of the tool button which just looks really weird.
+
+   <p>Also worth noting is that the toToolWidget class is derived from QVBox so any widgets constructed in this widget will be lined up vertically in the order of creation.
+
+   <p>Next up is creating our widgets and connecting them.
+
+<pre class="example"><pre class="verbatim">     
+     
+       Statement=new QLineEdit(this);
+       Result=new toResultView(this);
+       connect(Statement,SIGNAL(returnPressed()),this,SLOT(execute()));
+     }
+     
+</pre>
+</pre>
+   <p>This just adds two additional widgets and connect the returnPressed signal to the execute slot. One thing to realise here is that all the toResult children will use the connection of the closest parent of type toToolWidget in the widget hierarchy. And now the last thing to do is implement the execute method.
+
+<pre class="example"><pre class="verbatim">     
+     
+     void toSimpleQuery::execute(void)
+     {
+       try {
+         QString sql=Statement->text();
+         toQList params=toParamGet::getParam(this,sql);
+         Result->query(sql,params);
+       } TOCATCH
+     }
+     
+</pre>
+</pre>
+   <p>The toParamGet::getParam function is used to ask for bind values in the query string. To understand what I mean try executing the query "select :hello from dual" when you try the result. The toQList is simple a list of toQValue which can hold different datatypes and converting between them transparently.
+
+   <p>Now finally to compile this module you need to add the tosimplequery.cpp file to SOURCES define in the file Makefile. To build a plugin you also need to add the following line.
+
+<pre class="example"><pre class="verbatim">     
+     
+     plugins/tosimplequery.tso:objs/tosimplequery.o
+     
+</pre>
+</pre>
+   <p>This should go among the other plugin definitions and you also need to add the plugins/tosimplequery.tso to the dependencies of tora-plugin.
+
+   <p>You must rerun configure for the tosimplequery.moc file to be generated the first time. Any subsequent changes should update the moc file automatically from the Makefile.
+
+   <p>Here are the example files in their entire.
+
+     <ul>
+<li><a href="tosimplequery.h">tosimplequery.h</a>
+<li><a href="tosimplequery.cpp">tosimplequery.cpp</a>
+</ul>
+
+   <p>Hopefully this is a starting point to help you read the rest of the documentation and start cranking out those plugins.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/browser.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/browser.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/browser.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,276 @@
+<html lang="en">
+<head>
+<title>browser - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="worksheet.html#worksheet" title="worksheet">
+<link rel="next" href="debugger.html#debugger" title="debugger">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="browser"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="debugger.html#debugger">debugger</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="worksheet.html#worksheet">worksheet</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.2 Database Browser</h3>
+
+<p><a name="index-Database-Browser-18"></a>
+This tool provides you a simple browser for exploring database schema objects. Initially it can be said that the browser also provides a browser like functionality for the template help (see <a href="template.html#template">Template Help</a>)
+which is covered separately. This browser will provide you with more information and you will also in future versions of TOra be able to interact with schema objects (Dropping or create tables etc.), this is not possible in the
+<!-- @uref{template.html, template help} -->
+version. The template help on the other hand is tree based and some people consider it easier and faster to work with.
+
+   <div class="block-image"><img src="images/browser.png" alt="images/browser.png"></div>
+
+<!-- * Using the browser:: -->
+<!-- * Available information:: -->
+<!-- * Content editor:: -->
+<!-- * Defining a filter:: -->
+</ul>
+
+<!-- @node Using the browser, Available information, browser, browser -->
+<h4 class="subheading">Using the browser</h4>
+
+<p>The database browser has a very simple interface with a toolbar which contain the following functions. All of these are also available in the Browser menu item except for the schema selection and change object.
+
+     <dl>
+<dt><strong>Refresh</strong><dd>Refresh the displayed data from the database. Also available on the <strong>F5</strong> key.
+
+     <br><dt><strong>Define filter</strong><dd>Displays the define filter dialog(
+<!-- @pxref{Defining a filter} -->
+). This is used to specify which objects to show in the browser. The default filter is to show everything. Also available on the <strong>CTRL+SHIFT+G</strong> key.
+
+     <br><dt><strong>Clear filter</strong><dd>Remove the current filter and revert to the default of showing everything. Also available on the <strong>CTRL+SHIFT+H</strong> key.
+
+     <br><dt><strong>Schema</strong><dd>The last item on the toolbar is a combo box where you can select the schema to display objects for. It defaults the schema you are currently logged in as. Only schemas that are visible to the current user is selectable in the lost (Really, TOra does not contain the secret DBA password that will always let you access everything regardless of your privileges).
+
+     <br><dt><strong>Change connection</strong><dd>Change the connection this tool window should operate on.
+
+   </dl>
+
+   <p>The rest of the interface consists of two tabbed windows, one within the other. The first one you can use to select the object type you want to inspect. When you have selected a type you can see the visible objects of the specified type available in the selected schema. The second tab indicate what kind of information you want to explore about the selected object and depends on the object type (
+<!-- @pxref{Available information} -->
+.). When you select an object name in the left list you can inspect information about it to the right.
+
+   <p>You can move the keyboard focus to the schema selection using <strong>ALT+S</strong> and to the current object list using <strong>ALT+N</strong>.
+
+<!-- * Available information:: -->
+<!-- * Content editor:: -->
+<!-- * Defining a filter:: -->
+</ul>
+
+<!-- @node Available information, Content editor, Using the browser, browser -->
+<h4 class="subheading">Available information</h4>
+
+<p>This is the available information for the different object types.
+
+   <p><table summary="">
+<tr align="left"><th valign="top" width="20%">Object type
+</th><th valign="top" width="30%">Name
+</th><th valign="top" width="50%">Description
+
+<p><br></th></tr><tr align="left"><td valign="top" width="20%"><strong>Tables</strong>
+</td><td valign="top" width="30%">
+</td><td valign="top" width="50%">
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Columns</strong>
+</td><td valign="top" width="50%">A description of the columns in the table. For more information about this information also see object description. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Indexes</strong>
+</td><td valign="top" width="50%">A list with the indexes that have been created for this table. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>References</strong>
+</td><td valign="top" width="50%">Displays the foreign key constraints that references this table and the other objects that have dependencies on this table. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Grants</strong>
+</td><td valign="top" width="50%">The grants that have been made on this table. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Triggers</strong>
+</td><td valign="top" width="50%">Lists the triggers that exist for this table. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Data</strong>
+</td><td valign="top" width="50%">Displays the data in the table. This is the only part of the database browser that let you modify any data. For more information about how to use the content editor
+<!-- @pxref{Content editor} -->
+. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Information</strong>
+</td><td valign="top" width="50%">Contains information about the table available in the SGA including analyzed statistics etc. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Script</strong>
+</td><td valign="top" width="50%">This tab displays an SQL script to recreate the database object.
+
+<p><br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Views</strong>
+</td><td valign="top" width="30%">
+</td><td valign="top" width="50%">
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Columns</strong>
+</td><td valign="top" width="50%">A description of the columns in the view. For more information about this information also see object description. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>SQL</strong>
+</td><td valign="top" width="50%">The SQL that defines the view. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Data</strong>
+</td><td valign="top" width="50%">Displays the data in the view. This is the only part of the database browser that let you modify any data. For more information about how to use the content editor (
+<!-- @pxref{Content editor} -->
+). You can not modify some views depending on how they are defined. See the Oracle reference for more information about editing views.<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Grants</strong>
+</td><td valign="top" width="50%">The grants that have been made on this view. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Dependencies</strong>
+</td><td valign="top" width="50%">The objects that depend on this view. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Script</strong>
+</td><td valign="top" width="50%">This tab displays an SQL script to recreate the database object.
+
+<p><br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Indexes</strong>
+</td><td valign="top" width="30%">
+</td><td valign="top" width="50%">
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Columns</strong>
+</td><td valign="top" width="50%">The columns that the index operate on. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Info</strong>
+</td><td valign="top" width="50%">Information in the SGA about an index. For instance analyzed statistics available for this index. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Script</strong>
+</td><td valign="top" width="50%">This tab displays an SQL script to recreate the database object. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Script</strong>
+</td><td valign="top" width="50%">This tab displays an SQL script to recreate the database object.
+
+<p><br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Sequences</strong>
+</td><td valign="top" width="30%">
+</td><td valign="top" width="50%">
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Info</strong>
+</td><td valign="top" width="50%">Information about the sequence. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Grants</strong>
+</td><td valign="top" width="50%">The grants that have been made on this object. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Script</strong>
+</td><td valign="top" width="50%">This tab displays an SQL script to recreate the database object.
+
+<p><br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Synonyms</strong>
+</td><td valign="top" width="30%">
+</td><td valign="top" width="50%">
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Info</strong>
+</td><td valign="top" width="50%">Information about the synonyms
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Grants</strong>
+</td><td valign="top" width="50%">The grants that have been made on this object. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Script</strong>
+</td><td valign="top" width="50%">This tab displays an SQL script to recreate the database object.
+
+<p><br></td></tr><tr align="left"><td valign="top" width="20%"><strong>PL/SQL</strong>
+</td><td valign="top" width="30%">
+</td><td valign="top" width="50%">
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Declaration</strong>
+</td><td valign="top" width="50%">The declaration of a package or type. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Body</strong>
+</td><td valign="top" width="50%">The implementation of a package, body, procedure or function. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Grants</strong>
+</td><td valign="top" width="50%">The grants that have been made on this object. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Dependencies</strong>
+</td><td valign="top" width="50%">Dependencies this object has. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Script</strong>
+</td><td valign="top" width="50%">This tab displays an SQL script to recreate the database object.
+
+<p><br></td></tr><tr align="left"><td valign="top" width="20%"><strong>Triggers</strong>
+</td><td valign="top" width="30%">
+</td><td valign="top" width="50%">
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Info</strong>
+</td><td valign="top" width="50%">Information about the trigger. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Code</strong>
+</td><td valign="top" width="50%">The code that implement the trigger. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Columns</strong>
+</td><td valign="top" width="50%">The columns this trigger operates on. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Grants</strong>
+</td><td valign="top" width="50%">The grants that have been made on this object. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Dependencies</strong>
+</td><td valign="top" width="50%">Dependencies of this object. 
+<br></td></tr><tr align="left"><td valign="top" width="20%"></td><td valign="top" width="30%"><strong>Script</strong>
+</td><td valign="top" width="50%">This tab displays an SQL script to recreate the database object.
+
+   <br></td></tr></table>
+
+<!-- @node  Content editor, Defining a filter, Available information, browser -->
+<h4 class="subheading">Content editor</h4>
+
+<p>The content let you edit the contents of a table or view. There are a few things to note about this.
+
+   <p>First of all the content editor is designed to behave nicely to the database which means that it will only save the data when it thinks you are finished editing a row. This happens when you the current row change or you commit the database. When there is unsaved data you can see it in the status bar that there exists unsaved data. Also observe that the content editor will respect the auto commit setting in the database settings.
+
+   <p>The content editor has it's own toolbar with the following buttons.
+
+     <dl>
+<dt><strong>Define filter</strong><dd>Displays the define filter dialog. This is used to specify which objects to show in the browser. The default filter is to show everything.
+
+     <br><dt><strong>Clear filter</strong><dd>Remove the current filter and revert to the default of showing everything.
+
+     <br><dt><strong>Add new record</strong><dd>Add a new record to the current table.
+
+     <br><dt><strong>Save changes</strong><dd>Save the changes made to the current row to the database. Observe that this will not commit the changes.
+
+     <br><dt><strong>Discard changes</strong><dd>Discard the changes made to the current row to the database. Observe that this will not rollback the database connection.
+
+     <br><dt><strong>Delete current record</strong><dd>Delete the current record from the database.
+
+     <br><dt><strong>Go to first row</strong><dd>Go to the first record in the editor.
+
+     <br><dt><strong>Go to previous row</strong><dd>Go to the previous record in the editor.
+
+     <br><dt><strong>Go to next row</strong><dd>Go to the next record in the editor.
+
+     <br><dt><strong>Go to last row</strong><dd>Go to the last record in the editor. Observe that this will read in all available records in the table into memory.
+
+   </dl>
+
+   <p>The content editor can define a filter to specify which part of a table to edit. This dialog looks like this.
+
+   <div class="block-image"><img src="images/contentfilter.png" alt="images/contentfilter.png"></div>
+
+   <p>In the <strong>selection criteria</strong> part you can add whatever you want to go after a <strong>where</strong> in a select statement. In the <strong>sort order</strong> you can list the columns you want to sort on. The sort order only affect the order the records are read from the database, after they are read you can still sort on any column by clicking it. To the right is a list of available columns in the table.
+
+   <p>Finally at the bottom is a checkbox called <strong>use for all tables</strong>. If this box is checked the index is used for all tables, if not checked you can define specific filters for each tables and the content editor will remember the different filters as you jump between tables. The reason for this is that it's quite common that not all tables have all the columns you want to filter on for a table, in this case you will get an error trying to access the table with a faulty filter setting.
+
+<!-- @node Defining a filter,  , Content editor, browser -->
+<h4 class="subheading">Defining a filter</h4>
+
+<p>Filtering is based on the object name and can be specified in a variety of ways. This is the dialog used to specify the filter.
+
+   <div class="block-image"><img src="images/browserfilter.png" alt="images/browserfilter.png"></div>
+
+   <p>The most important part of this dialog is the editor which let you specify the string to apply the criteria to. This is not available for No filter setting. The different available types and options are.
+
+     <dl>
+<dt><strong>No filter</strong><dd>No filter specified, display all objects.
+
+     <br><dt><strong>Start with</strong><dd>Only include objects which name starts with the specified string.
+
+     <br><dt><strong>End with</strong><dd>Only include objects which name ends with the specified string.
+
+     <br><dt><strong>Contains</strong><dd>Only include objects which name contain the specified string.
+
+     <br><dt><strong>RegExp</strong><dd>Only include objects which name matches the regular expression specified in the editor. The dialect of RegExp:s is the ones in the
+version of Qt that TOra is compiled against. For more information on regular expressions check out <a href="http://doc.trolltech.com/qregexp.html">http://doc.trolltech.com/qregexp.html</a>, if you are using Qt 3.0 or later you have a more advanced form of regular expressions.
+
+     <br><dt><strong>Ignore case</strong><dd>Ignore the case when matches. Since object names are pretty much always uppercase it is probably safest to leave this on.
+
+     <br><dt><strong>Invert selection</strong><dd>If set, include all the objects that does not meet the specified criteria instead of the ones which does.
+
+   </dl>
+
+   <p>Some objects you can also search on what tablespace they are located on. This can be specified by the lower part of the dialog.
+
+     <dl>
+<dt><strong>Include all</strong><dd>Include all regardless of tablespace
+
+     <br><dt><strong>Include</strong><dd>Include the objects located on the selected tablespaces in the list below.
+
+     <br><dt><strong>Exclude</strong><dd>Include the objects not located on the selected tablespaces in the list below.
+
+   </dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/common.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/common.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/common.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,49 @@
+<html lang="en">
+<head>
+<title>common - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="workspace.html#workspace" title="workspace">
+<link rel="prev" href="preferences.html#preferences" title="preferences">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="common"></a>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="preferences.html#preferences">preferences</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="workspace.html#workspace">workspace</a>
+<hr>
+</div>
+
+<h3 class="section">3.9 Other common elements</h3>
+
+<p><a name="index-Other-common-elements-15"></a>
+These describe other elements that are used in several parts of the user interface.
+
+<ul class="menu">
+<li><a accesskey="1" href="SGA-Statement.html#SGA-Statement">SGA Statement</a>
+<li><a accesskey="2" href="Explain-plan.html#Explain-plan">Explain plan</a>
+<li><a accesskey="3" href="Getting-bind-parameters.html#Getting-bind-parameters">Getting bind parameters</a>
+<li><a accesskey="4" href="Object-description.html#Object-description">Object description</a>
+<li><a accesskey="5" href="Memo-editor.html#Memo-editor">Memo editor</a>
+</ul>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/current.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/current.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/current.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,49 @@
+<html lang="en">
+<head>
+<title>current - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="trace.html#trace" title="trace">
+<link rel="next" href="script.html#script" title="script">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="current"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="script.html#script">script</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="trace.html#trace">trace</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.10 Current Session</h3>
+
+<p><a name="index-Current-Session-26"></a>
+This tool provides information about the current session.
+
+   <div class="block-image"><img src="images/current.png" alt="images/current.png"></div>
+
+   <p>The interface for this tool is very simple. There are four tabs in the window. The first one present the <strong>privileges</strong> currently granted to the your session. 
+Roles can be expanded to display what privileges are available through those groups. The second one present the <strong>version</strong> of the different components in the connection. 
+The <strong>parameters</strong> tab displays the parameters of the current session (for more information of parameter editors see <a href="tuning.html#tuning">tuning</a>). The fourth and last tab display the <strong>statistics</strong> of the session. The statistics is shown in two columns, the first one contain the actual value, the second show the change in the value since the last update. To update press the <strong>refresh</strong> button in the toolbar. You can also change the connection for the tool using the change connection button to the right on the toolbar.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/database.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/database.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/database.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,78 @@
+<html lang="en">
+<head>
+<title>database - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="preferences.html#preferences" title="preferences">
+<link rel="prev" href="Global-Settings.html#Global-Settings" title="Global Settings">
+<link rel="next" href="fonts.html#fonts" title="fonts">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="database"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="fonts.html#fonts">fonts</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="Global-Settings.html#Global-Settings">Global Settings</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="preferences.html#preferences">preferences</a>
+<hr>
+</div>
+
+<h4 class="subsection">3.8.2 Database Settings</h4>
+
+<p><a name="index-Database-Settings-11"></a>
+This page of the options contain settings on how to interact with the database.
+
+   <div class="block-image"><img src="images/database.png" alt="images/database.png"></div>
+
+     <dl>
+<dt><strong>Autocommit changes</strong><dd>      If this is set any changes made to the database will be automatically committed as soon as you make them. Use this with care,
+      the transaction handling is there for a reason you know. 
+<br><dt><strong>Read object cache on connect</strong><dd>      If this checkbox is set TOra will start reading the object cache when you start a connection to a database. 
+      If unchecked it will start reading it when it is first used. Reading this is quite a costly query so you probably shouldn't have this
+      checked if you are in a production environment, on a slow connection or not using the object cache. 
+      The object cache is mostly used for describing tables, the PL/SQL debugger and code completion. 
+<br><dt><strong>Initial rows to fetch in query</strong><dd>      This setting indicates how many rows to always fetch from a query when executing it. Observe that you can always read more from the individual query just by scrolling down. Check the <strong>All</strong> checkbox to always read all available records. Be aware that TOra will interact sluggishly or not at all while reading many lines. It will also keep the entire result in memory so checking the <strong>All</strong> box and reading a really large table could bring your machine to it's knees. 
+<br><dt><strong>Initially read in content editor</strong><dd>                If set to something other than <strong>All</strong> a query will be placed only this number of rows initially from Oracle when browsing
+                the content. 
+                The reason for this is that Oracle will be under high load if a content list is started on a large table. 
+                When this value is reached the query will be reread to fetch the rest of the values so you as a user will not see any difference. 
+<br><dt><strong>Maximum size display</strong><dd>                         The maximum width a list column will get automatically regardless of how large the content is. This is so you can still see the rest of the columns even if one of the first can contain very large values. You can always resize the column by hand afterwards.
+
+     <br><dt><strong>Run UI blocking threads exclusively in main thread.</strong><dd>      Let queries normally running in the background use their own connection to the database. This is so that when a query that would block the user interface needs to be run the main connection is more likely to be free. Background queries include many parts of the database browser and all charts. 
+<br><dt><strong>Don't reread data if query is exactly same.</strong><dd>      If checked TOra will not refresh a query if it is reexecuted exactly the same two times in a row. 
+      This is mainly usefull in the schema browser when you have a slow connection and need to switch between tabs a lot. 
+<br><dt><strong>Abort long running queries and reexecute in own connection.</strong><dd>      If checked TOra will abort any queries running in the main connection of the database in the background and reexecute them in their own connection to make you able to continue to work in other parts of TOra until the query gives a reply. 
+      Only queries that have not given any response at all will be aborted and moved. 
+<br><dt><strong>Move to own connection after</strong><dd>      The number of seconds to wait before moving the query from the main connection (See Abort long running queries and reexecute in own connection above for more info). 
+</dl>
+   There may also be pages under this for each individual database provider. Currently onlye Oracle uses this feature. That setup looks like this.
+
+   <div class="block-image"><img src="images/oracle.png" alt="images/oracle.png"></div>
+
+     <dl>
+<dt><strong>Checkpoint name</strong><dd>      This is a checkpoint TOra should use when it is making changes that need to be rolled back. One place where this is used is to perform explain plans without filling up the plan table. The name doesn't matter, just make sure you don't use this checkpoint name yourself. 
+<br><dt><strong>Default date format</strong><dd>      The format that you prefer dates to be displayed. Changing this will require a reconnect to the database before it starts to operate. The string should be a standard Oracle date to string conversion specification. For more information see the Oracle SQL Reference. 
+<br><dt><strong>Explain plan table</strong><dd>      The table to use to temporarily store explained execution plans. Use the <strong>Create Table</strong> button to create the table if you don't have it. 
+<br><dt><strong>Keep plans</strong><dd>      If this is check explained plans are left in the explain plan table. The normal behaviour is to rollback the explanation after it is initially read to keep the explain plan table from filling up with old plans. 
+<br><dt><strong>Max LONG and LOB data length</strong><dd>      The amount of data to read from LONG, BLOB or CLOB data fields. If you always want all the data to be read check the <strong>Unlimited</strong> checkbox to the right. LONG datafields can not be specified as <strong>Unlimited</strong>, if this is specified 33000 characters are read by default. 
+</dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/debugger.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/debugger.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/debugger.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,149 @@
+<html lang="en">
+<head>
+<title>debugger - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="browser.html#browser" title="browser">
+<link rel="next" href="tuning.html#tuning" title="tuning">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="debugger"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="tuning.html#tuning">tuning</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="browser.html#browser">browser</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.3 PL/SQL Debugger</h3>
+
+<p><a name="index-PL_002fSQL-Debugger-19"></a>
+This tool provides you with an advanced editor and debugger for developing PL/SQL objects.
+
+   <div class="block-image"><img src="images/debugger.png" alt="images/debugger.png"></div>
+
+<h4 class="subheading">Elements of the debugger window</h4>
+
+<p>On the top of the screen is the toolbar for the debugger.
+
+   <p>Below that to the left are two panes. The top one Objects contains the available objects in the selected schema. The schema is selectable through the toolbar. Select the code object you want to debug or edit in this list or start a new object before starting to edit the code.
+
+   <p>The lower pane Contents contains the structure of the selected object. Here you can find declared methods of packages and also variables or even anonymous blocks in your code. Selecting a line in this pane will move the cursor to where the element is in your code, for instance where a variable or method is declared.
+
+   <p>To the right is a large editor area where you can edit the current object. The editor is describe more later.
+
+   <p>The last part of the screen is not always visible and contain information about the currently running debugging session.
+
+<h4 class="subheading">Toolbar &amp; menu</h4>
+
+<p>The toolbar and menu contain pretty much the same commands with a few exceptions.
+
+     <dl>
+<dt><strong>Refresh object list</strong><dd>      Update the <strong>Object</strong> list to the left of the screen. This is first on the toolbar and close to the end in the menu. 
+      The keyboard shortcut for this is <strong>F5</strong>. 
+      Observe that this list is read from the object cache and will not be updated unless you reread the object cache as well
+      (Available from the File menu. 
+<br><dt><strong>Select schema</strong><dd>      In the toolbar this is a combobox listing the available schemas. Changing the schema will change the objects displayed in the <strong>Object</strong> list. 
+      Selecting it in the menu (Close to the end) or selecting the <strong>ALT+S</strong> keyboard shortcut will move the keyboard focus to the toolbar combobox. 
+<br><dt><strong>New sheet</strong><dd>      Start editing a new object. 
+<br><dt><strong>Scan source</strong><dd>      Update the <strong>Contents</strong> list to the left on the screen according to the source currently in the editor. 
+      TOra will try to keep up with this as you write, but new blocks and declarations will only show up if you rescan the source. 
+      The keyboard shortcut for this is <strong>CTRL+F9</strong>. 
+<br><dt><strong>Compile</strong><dd>      Compile the current editor. This will compile the procedure with the debug option,
+      if you don't have the debug options you need to recompile it in order to be able to see watches. The keyboard shortcut for this is <strong>F9</strong>. 
+<br><dt><strong>Execute</strong><dd>      Call the method, procedure or function closest to the cursor. 
+      It's off course only when you edit packages that there are several methods to choose from in the current editor. 
+      If you have changed the source TOra will ask you if you want to recompile and start over or simply continue without recompiling. 
+      The keyboard shortcut for this is <strong>CTRL+Return</strong>. 
+<br><dt><strong>Stop</strong><dd>      Halt the currently running execution. The keyboard shortcut for this is <strong>F12</strong>. 
+<br><dt><strong>Step into</strong><dd>      Step into any functions or procedures called on the current line of execution. The keyboard shortcut for this is <strong>F7</strong>. 
+<br><dt><strong>Step over</strong><dd>      Step to the next line of the current editor. The keyboard shortcut for this is <strong>F8</strong>
+<br><dt><strong>Return from.</strong><dd>      Continue running until returned from the current function or procedure. The keyboard shortcut for this is <strong>F6</strong>. 
+<br><dt><strong>Head editor</strong><dd>      Switch between the head and body editor. For more information see the editor section below. The keyboard shortcut for this is <strong>CTRL+Space</strong>. 
+<br><dt><strong>Debug pane</strong><dd>      Display or hide the debugging pane at the bottom of the debugging window. The keyboard shortcut for this is <strong>F11</strong>. 
+<br><dt><strong>Next error</strong><dd>      Move the cursor to the next syntax error in the current editor. For more information about syntax errors in editors see the editor section. 
+      The keyboard shortcut for this is <strong>CTRL+N</strong>. 
+<br><dt><strong>Previous error</strong><dd>      Move the cursor to the previous syntax error in the current editor. For more information about syntax errors in editors see the editor section. 
+      The keyboard shortcut for this is CTRL+P. 
+<br><dt><strong>Toggle breakpoint</strong><dd>      Add or remove a breakpoint on the current line of the editor. 
+      Breakpoints are indicated with a small stop sign to the right of the line in the editor. The keyboard shortcut for this is <strong>CTRL+F5</strong>. 
+<br><dt><strong>Disable breakpoint</strong><dd>      Will disable or enable a breakpoint on the current editor. 
+      A disabled breakpoint will be seen is grayed out in the margin of the editor of the line it is on. 
+      The keyboard shortcut for this is <strong>CTRL+F6</strong>. 
+<br><dt><strong>Add watch</strong><dd>      Add a watched variable. See here for more information about watches. The keyboard shortcut for this is <strong>F4</strong>. 
+<br><dt><strong>Delete watch</strong><dd>      Remove a watched variable. The keyboard shortcut for this is <strong>CTRL+Del</strong>. 
+<br><dt><strong>Change watch</strong><dd>      Change the value of a watch. See here for more information about watches. The keyboard shortcut for this is <strong>CTRL+F4</strong>. 
+<br><dt><strong>Erase runtime log</strong><dd>      Remove the content of the runtime log which is in the rightmost pane of the debugger info. 
+</dl>
+
+<h4 class="subheading">Debugger editor</h4>
+
+<p>There are a few things that are special to the PL/SQL debugger compared to other editors in TOra. First of all there are actually two editors. In one you edit the declaration of a package this is called the <strong>head</strong> editor. The other one is used to edit the implementation of a package and is called the <strong>body</strong> editor. If you are editing procedures or functions you will only use the <strong>body</strong> editor. You switch between the editors using the <strong>CTRL+Space</strong> keyboard shortcut or with the <strong>head editor</strong> toolbar button or menu entry. This also mean that when you run a program and make a change, but still decide to keep stepping through your program without restarting you can have one other changed file plus the current file, if you try to step to another object TOra will ask if you want to continue until you are back in the edited files or recompile.
+
+   <p>Another thing special in this editor is that the PL/SQL editor will show you errors in the package. The errors are highlighted with a special background color (The default is red, but this is configurable in the options(see <a href="preferences.html#preferences">Options</a>). You can also use the <strong>next error</strong> or <strong>previous error</strong> toolbar button/menu entries to step between the errors.
+
+   <p>Next thing to know about the debugger is breakpoints. You can set a breakpoint either by selecting the <strong>toggle breakpoint</strong> toolbar button or menu entry. This will add a breakpoint to the line you are currently on in the editor. To remove the breakpoint simply select <strong>toggle breakpoint</strong> again. 
+Another way to add or remove breakpoints is to double-click in the left margin of the editor where you also see where the breakpoints are. They are indicated by a small stop sign in the margin. If you want to temporarily disable a breakpoint that you might need to enable again later you can also choose <strong>disable breakpoint</strong>, this is also a toggle so selecting the command again will re-enable the breakpoint. For those of you who don't know breakpoints means that when execution of the object comes to the line containing the breakpoint the debugger will stop and allow you to inspect the data.
+
+   <p>Which brings us to the last special thing in this editor which is the current line of execution, this is an indication of where the execution currently is at. This line is indicated by a special background (Default is green, but that is configurable in the options(see <a href="preferences.html#preferences">Options</a>)).
+
+<h4 class="subheading">Debugger information</h4>
+
+<p>Information about the current state of execution is shown in the pane at the bottom of the debugger window which you can be hidden. You hide or show this by selecting the command <strong>debug pane</strong> command or by pressing the <strong>F11</strong> key. The debug pane consist of several tabs containing the following information.
+
+     <dl>
+<dt><strong>Stack trace</strong><dd>      Contains the current stack trace. This means the list of called objects that have lead to the current line of execution. Selecting a line will bring up the object and line where the the call to the next object was made except for the last line which is the current line of execution. 
+<br><dt><strong>Watches</strong><dd>      Watches is where you can inspect variables in your PL/SQL code while running. They are explained in more detail later. 
+<br><dt><strong>Breakpoints</strong><dd>      A list of where you current have your breakpoints and their status. The status can be <strong>enabled</strong> or <strong>disabled</strong> which are pretty self explanatory. 
+      It can also be <strong>deferred</strong> which means that some error have occurred setting the breakpoint. 
+      Every time execution is restarted TOra tries to set any breakpoints that are <strong>deferred</strong>. 
+<br><dt><strong>Parameters</strong><dd>      This displays the input and output parameters that you passed to the original call that started the debugging. The output parameters are off course not available until the execution is finished. 
+<br><dt><strong>Debug output</strong><dd>      Any DBMS_OUTPUT output from your debugging session will end up in this window. For more information about using this see the output tool. 
+<br><dt><strong>Runtime log</strong><dd>      This is simply a log displaying what is happening in the target debugging thread and probably not of much interest to anybody except TOra developers. One exception is that if you somehow get an SQL error when you function or procedure of choice is executed those errors will end up here.
+
+<h4 class="subheading">Watches</h4>
+
+     <p>Watches are a way to inspect the contents of variables in a running program. 
+When you add a watch using the <strong>add watch</strong> command you are presented with the following dialog.
+
+     <div class="block-image"><img src="images/addwatch.png" alt="images/addwatch.png"></div>
+
+     <p>First of all you need to select the scope the variable is declared in. The <strong>local</strong> scope is variables only declared in the current context, like for instance this function or procedure. The <strong>head</strong> and <strong>body</strong> are variables declared in packages. Variables in packages are usually also available in the global scope. When you declare a watch in any scope except for <strong>local</strong> you should also indicate the object in which the variable is declared in the format schema.object.variable. The current object is prepended to the variable name when you select anything but the <strong>local</strong> scope.
+
+     <p>Finally you have to fill out the variable name. If you have the cursor on a variable in the editor that name is the default when you add the watch.
+
+     <p>You can then see the contents of this variable in the <strong>watch</strong> pane of the debugger info. The value will be updated every time execution stops while you are debugging. If the variable can not be found it will be <strong>{Unavailable}</strong>. If all variables are unavailable even though they shouldn't you have probably forgotten to compile the object with the debug option. You can remedy this by simply using the <strong>compile</strong> command. TOra will always compile programs using the debug option when in the PL/SQL debugger.
+
+     <p>TOra can also inspect list and table object which will show up as child items in the list to the variable. When this is a case you can also see how many items an array is having in the parent of the actual data items.
+
+     <p>You can remove a watch by selecting it in the watch list and selecting the <strong>remove watch</strong> command.
+
+     <p>You can also change the content of a watch. First you select the watch you want to change in the watch list, then you select the <strong>change watch</strong> command. You will be shown this dialog.
+
+     <div class="block-image"><img src="images/changewatch.png" alt="images/changewatch.png"></div>
+
+     <p>If you have selected the parent of an array watch you will be able to select the index you want to assign a new value with the <strong>index</strong> indicator to right. Then you enter the new value in the text field or check the <strong>NULL</strong> indicator to set the value to NULL.
+
+   </dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/editors.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/editors.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/editors.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,99 @@
+<html lang="en">
+<head>
+<title>editors - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="workspace.html#workspace" title="workspace">
+<link rel="prev" href="What-privileges-do-you-need-to-run-TOra.html#What-privileges-do-you-need-to-run-TOra" title="What privileges do you need to run TOra">
+<link rel="next" href="lists.html#lists" title="lists">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="editors"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="lists.html#lists">lists</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="What-privileges-do-you-need-to-run-TOra.html#What-privileges-do-you-need-to-run-TOra">What privileges do you need to run TOra</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="workspace.html#workspace">workspace</a>
+<hr>
+</div>
+
+<h3 class="section">3.4 Using editors</h3>
+
+<p><a name="index-Using-editors-6"></a>
+Editors can be in two modes. The first is read and write in which case the following key bindings are defined.
+
+   <p><table summary=""><tr align="left"><td valign="top" width="30%"><strong>Left Arrow</strong>  </td><td valign="top" width="70%">Move the cursor one character to the left
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Right Arrow</strong>  </td><td valign="top" width="70%">Move the cursor one character to the right
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Up Arrow</strong> </td><td valign="top" width="70%">Move the cursor one line upwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Down Arrow</strong> </td><td valign="top" width="70%">Move the cursor one line downwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Page Up</strong> </td><td valign="top" width="70%">Move the cursor one page upwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Page Down</strong> </td><td valign="top" width="70%">Move the cursor one page downwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>&lt;BS&gt;</strong> </td><td valign="top" width="70%">Delete the character to the left of the cursor
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>&lt;HOME&gt;</strong> </td><td valign="top" width="70%">Move the cursor to the beginning of the line
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>End</strong> </td><td valign="top" width="70%">Move the cursor to the end of the line
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Delete</strong> </td><td valign="top" width="70%">Delete the character to the right of the cursor
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>SHIFT - Left Arrow</strong> </td><td valign="top" width="70%">Mark text one character to the left
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>SHIFT - Right Arrow</strong> </td><td valign="top" width="70%">Mark text one character to the right
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-A</strong> </td><td valign="top" width="70%">Select the entire buffer. 
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-B</strong> </td><td valign="top" width="70%">Move the cursor one character leftwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-C</strong> </td><td valign="top" width="70%">Copy the marked text to the clipboard
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-D</strong> </td><td valign="top" width="70%">Delete the character to the right of the cursor
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-E</strong> </td><td valign="top" width="70%">Move the cursor to the end of the line
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-F</strong> </td><td valign="top" width="70%">Pop up the search &amp; replace dialog
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-H</strong> </td><td valign="top" width="70%">Delete the character to the left of the cursor
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-K</strong> </td><td valign="top" width="70%">Delete to end of line
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-N</strong> </td><td valign="top" width="70%">Move the cursor one line downwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-P</strong> </td><td valign="top" width="70%">Move the cursor one line upwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-V</strong> </td><td valign="top" width="70%">Paste the clipboard text into line edit
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-X</strong> </td><td valign="top" width="70%">Cut the marked text, copy to clipboard
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-Z</strong> </td><td valign="top" width="70%">Undo the last operation
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-Y</strong> </td><td valign="top" width="70%">Redo the last operation
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL - Left</strong> </td><td valign="top" width="70%">Arrow	Move the cursor one word to the left
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL - Right</strong> </td><td valign="top" width="70%">Arrow	Move the cursor one word to the right
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL - Up Arrow</strong> </td><td valign="top" width="70%">Move the cursor one word upwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL - Down Arrow</strong> </td><td valign="top" width="70%">Move the cursor one word downwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL - Home Arrow</strong> </td><td valign="top" width="70%">Move the cursor to the beginning of the text
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL - End Arrow</strong> </td><td valign="top" width="70%">Move the cursor to the end of the text
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-S</strong> </td><td valign="top" width="70%">Save the editor with the current filename, if no filename is defined a dialog is displayed for the user to select the filename to use. 
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>CTRL-O</strong> </td><td valign="top" width="70%">Read a file into the editor. A dialog will pop up to select the name to open.
+   <br></td></tr></table>
+
+   <p>The second mode is read only in which only the current key binding are available.
+
+   <p><table summary=""><tr align="left"><td valign="top" width="30%"><strong>Left Arrow</strong> </td><td valign="top" width="70%">Scrolls the table to the left
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Right Arrow</strong> </td><td valign="top" width="70%">Scrolls the table to the right
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Up Arrow 	Scrolls</strong> </td><td valign="top" width="70%">the table one line downwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Down Arrow</strong> </td><td valign="top" width="70%">Scrolls the table one line upwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Page Up</strong> </td><td valign="top" width="70%">Scrolls the table one page downwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Page Down</strong> </td><td valign="top" width="70%">Scrolls the table one page upwards
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Control-C</strong> </td><td valign="top" width="70%">Copy the marked text to the clipboard
+<br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Control-S</strong> </td><td valign="top" width="70%">Save the editor with the current filename, if no filename is defined a dialog is displayed for the user to select the filename to use.
+   <br></td></tr></table>
+
+   <p>Editors support drag and drop which means you can drag a selection to another editor and drop any other text source onto an editable editor to insert the dragged text at the dropped location.
+
+   <p>Also as a shortcut pressing the right mouse button will display a context menu containing the entries from the edit menu which pertain to the editors.
+
+<h4 class="subheading">SQL editors</h4>
+
+<p>Editors for SQL have another feature which is code completion. If you place the cursor after a '.' character TOra will this the available columns for the table referenced by the name before the '.' character. This will only work for defined views and tables. You can also look up tablenames using the <strong>CTRL+T</strong> key which will list all tables starting with the same word as you currently have the cursor in. When the completion list is open you can navigate it using <strong>Up</strong>, <strong>Down</strong> keys and selecting an entry using <strong>Return</strong>. You can also remove the list by pressing the <strong>Escape</strong> key. The completion values are saved in the object cache and can not be used until it is read. If you find this annoying you can disable this in the preferences.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/extendingtora.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/extendingtora.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/extendingtora.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,46 @@
+<html lang="en">
+<head>
+<title>extendingtora - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="prev" href="tools.html#tools" title="tools">
+<link rel="next" href="Index.html#Index" title="Index">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="extendingtora"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="Index.html#Index">Index</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="tools.html#tools">tools</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<hr>
+</div>
+
+<h2 class="chapter">5 Extending TOra</h2>
+
+<p><a name="index-Extending-TOra-34"></a>
+
+<ul class="menu">
+<li><a accesskey="1" href="api.html#api">TOra Tool Tutorial</a>
+<li><a accesskey="2" href="externalapi.html#externalapi">API Reference</a>
+</ul>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/externalapi.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/externalapi.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/externalapi.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,45 @@
+<html lang="en">
+<head>
+<title>externalapi - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="extendingtora.html#extendingtora" title="extendingtora">
+<link rel="prev" href="api.html#api" title="api">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="externalapi"></a>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="api.html#api">api</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="extendingtora.html#extendingtora">extendingtora</a>
+<hr>
+</div>
+
+<h3 class="section">5.2 API Reference</h3>
+
+     <ul>
+<li><a href="api/index-long.html">Annotated Class List</a>
+<li><a href="api/header-list.html">Header Files</a>
+<li><a href="api/all-globals.html">Global Declarations</a>
+<li><a href="api/hier.html">Class Hierarchy</a>
+</ul>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/fonts.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/fonts.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/fonts.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,71 @@
+<html lang="en">
+<head>
+<title>fonts - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="preferences.html#preferences" title="preferences">
+<link rel="prev" href="database.html#database" title="database">
+<link rel="next" href="additionalhelp.html#additionalhelp" title="additionalhelp">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="fonts"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="additionalhelp.html#additionalhelp">additionalhelp</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="database.html#database">database</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="preferences.html#preferences">preferences</a>
+<hr>
+</div>
+
+<h4 class="subsection">3.8.3 Font Settings</h4>
+
+<p><a name="index-Font-Settings-12"></a>
+This page of the options about fonts and colors used in the user interface.
+
+   <div class="block-image"><img src="images/fonts.png" alt="images/fonts.png"></div>
+
+     <dl>
+<dt><strong>Syntax components</strong><dd>      This list contains different parts of the SQL syntax. You can change the color used for the element by selecting the item in this list and then pressing the Pick button to select a color. The current color of the currently selected item in the list is displayed just to the left of the Pick button.
+
+     <p>The available elements are as follows.
+     <p><table summary=""> <tr align="left"><td valign="top" width="30%"><strong>Background</strong> </td><td valign="top" width="70%">The normal background color for text. 
+ <br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Comment</strong>	</td><td valign="top" width="70%">An SQL comment. Currently this only includes &ndash; comments, not rem comments. 
+ <br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Current background</strong>	</td><td valign="top" width="70%">This is the background to use for the current line of execution in the PL/SQL debugger. 
+ <br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Error background</strong>	</td><td valign="top" width="70%">This is the background to use for lines that have SQL errors in the in the PL/SQL debugger/editor. 
+ <br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Keyword</strong>	</td><td valign="top" width="70%">This is the color to use for the text of an SQL keyword. 
+ <br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Normal</strong>	</td><td valign="top" width="70%">Normal text color. 
+ <br></td></tr><tr align="left"><td valign="top" width="30%"><strong>String</strong>	</td><td valign="top" width="70%">Color to use for text in strings. 
+ <br></td></tr><tr align="left"><td valign="top" width="30%"><strong>Unfinished string</strong> </td><td valign="top" width="70%">Color to use for strings that miss their terminating ' or ".
+     <br></td></tr></table>
+ At the bottom of this dialog is a text field that displays en example of the current setting.
+
+     <br><dt><strong>Syntax highlighting</strong><dd>      Use this to control whether you want syntax highlighting or not. Observe that without syntax highlighting you will not see the indications for errors and current lines in the PL/SQL editor. 
+<br><dt><strong>Keyword upper</strong><dd>      Check this box to convert all keywords to uppercase before displaying them. The text itself is not changed so resetting this not changed and the text sent to the database still contain lowercase letters. This setting is disabled if you do not have a monospaced font selected. 
+<br><dt><strong>Code completion</strong><dd>      Check this box to enable code completion in SQL editors. 
+<br><dt><strong>Sort completion rows</strong><dd>      If checked the completion alternatives are sorted in alphabetical order, otherwise they are in the same order as in the source. 
+<br><dt><strong>Indent same as previous row</strong><dd>      When inserting a new row indent it to the same level as the previous row. 
+<br><dt><strong>Text font</strong><dd>      This is the font to use for all editors in TOra that are not syntax highlighted. Choose the <strong>Choose</strong> button immediately to the right of the label to select a new font. 
+<br><dt><strong>Code font</strong><dd>      This is the font to use for all syntax highlighted SQL editors in TOra. Choose the <strong>Choose</strong> button immediately to the right of the label to select a new font. 
+<br><dt><strong>List font</strong><dd>      This is the font to use for all lists in TOra. Choose the <strong>Choose</strong> button immediately to the right of the label to select a new font.
+
+   </dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/help.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/help.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/help.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,57 @@
+<html lang="en">
+<head>
+<title>help - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="prev" href="index.html#Top" title="Top">
+<link rel="next" href="history.html#history" title="history">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="help"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="history.html#history">history</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="index.html#Top">Top</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<hr>
+</div>
+
+<h2 class="chapter">1 Using the help browser</h2>
+
+<p><a name="index-Using-the-help-browser-1"></a>
+You can always bring up help on the current dialog etc. by pressing the <strong>F1</strong> key. You can also select it from the application menu bar under Help (dooh).
+
+   <p>When you open the help browser which you obviously have done. You are presented with a screen similar to the following.
+
+   <div class="block-image"><img src="images/help.png" alt="images/help.png"></div>
+
+   <p>On the top of the screen is a toolbar with back and forward buttons that you can use to go back and forward in the history of viewed pages that you have previously looked at. This list kept during the duration of running TOra, however when you display help in dialogs that help is not added to the main application help history.
+
+   <p>To the right is a large area which displays the documentation. This is essentially a web browser (If you run the KDE version it is actually an embedded konqueror) and works as such. Clicking on blue text will go to the referenced section.
+
+   <p>To the left is a pane that can either display the contents of the manuals available for browsing or search result. Note that the TOra help is compatible with Oracle manuals which can be browsed in the help viewer if you add them in the options dialog
+(see <a href="additionalhelp.html#additionalhelp">Additional help</a>).
+
+   <p>You can also display a different pane where you can search the manuals. In this version of TOra you can only search external Oracle manuals and not the TOra user manual. This will be fixed in a future version of TOra.
+
+   <p>Just enter the words you want to find and the sections containing <strong>all</strong> the words entered will be displayed in the list below it. Selecting a row in either the search result or contents list will bring up that page in the right part of the screen.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/history.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/history.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/history.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,65 @@
+<html lang="en">
+<head>
+<title>history - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="prev" href="help.html#help" title="help">
+<link rel="next" href="workspace.html#workspace" title="workspace">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="history"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="workspace.html#workspace">workspace</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="help.html#help">help</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<hr>
+</div>
+
+<h2 class="chapter">2 History of TOra</h2>
+
+<p><a name="index-History-and-future-of-TOra-2"></a>
+
+<h3 class="heading">History of TOra</h3>
+
+<p>I started the TOra project in December 2000, the reason being that I had been increasingly jealous of the tools available for interacting with Oracle databases to my colleges using windows. The tools that were available for Linux users were not nearly powerful enough. Execution plans being pretty much the most advanced feature available. During this time I also made a lot of attempts to get VMWare to work without any success fortunately. If I could have made this to work I would never have started TOra but run a VMWare client with Windows.
+
+   <p>I started by working on what is now the worksheet in TOra. Already in the beginning I envisaged TOra being plugin based and easily extendable with new functionality without any or much change of the existing code base, the <a href="api/toTool.html">toTool class</a> being one of the first written gives this functionality.
+
+   <p>In the beginning the development pace was really fast as always and it didn't take long before it had at least in my opinion surpassed any available tool for Linux as an SQL worksheet. Most of the development of these versions were made in airports in Asia since I spent about a week in those on a backpacking holiday there around new years 2000 to 2001. Yes, I know there aren't many other people who would bring a laptop on a backpacking vacation, but I knew I would be spending a lot of time in airports and what better way to waste the time.
+
+   <p>By the time I was back I released the first version of TOra with both worksheet and database browser. By this time I started looking at the PL/SQL debugging package available in Oracle, this was the first time I looked at developing functionality in TOra that I didn't really feel a pressing need for myself since I rarely write any large PL/SQL code. This was released in version 0.4 at the end of January, still only about 1 month after the project was started. This was the first functionality in TOra that is not available from any other open source project.
+
+   <p>The next big thing to happen to this project was that TrollTech released the first version of Qt Free for windows at which point I started glancing at making TOra available for the windows platform. I've made a few feeble attempts earlier using an evaluation copy of Qt/Windows without much success. But when this release was made I really sat down and went through it finding lots of problems mainly with regards to Visual C++ (Which is really crap, but the one you have to use if you want to use Qt Free. Of course no tool can really replace emacs, gcc, make and gdb if you know how to use them).
+
+   <p>After this development slowed down considerably to be able to stabilize the program to get the first stable releasse which was released on the first of september 2001. At almost the same time as 1.0 was released the first development release for 1.1 was released featuring a few of the most asked for features including improved tuning and better busy feedback. Most parts of TOra have been touched in some way for this release. The 1.2 release was also the first commercial release which is a way for me to ensure that TOra can be supported well forward in the future as it is starting to consume more and more of my time.
+
+   <p>This page of the options about fonts and colors used in the user interface.
+
+<h3 class="heading">The future</h3>
+
+<p>I will continue to develop TOra to be the best possible database development and administration tool for Oracle and in the long run probably other databases as well.
+
+   <p>By the time of the 1.2 release development of the 1.4 release is already well under way and will mostly feature DBA improvements. The database browser which will start getting more and more functionality to modify the browsed objects. Other changes are made to make DBA:s administrating database which people are accessing using TOra should also be happy with this release since it will warn more often when you are doing things you probably shouldn't be doing (Like running a server tuning session just to get a handle of whats happening). Improved database tuning with a new wait event analysis tool is also already finnished and ready for beta testing. Also PostgreSQL support will probably be available for the 1.4 release.
+
+   <p>Henrik "Mauritz" Johnson, GlobeCom AB
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/index.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/index.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/index.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,111 @@
+<html lang="en">
+<head>
+<title>TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="#Top">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<h1 class="settitle">TOra</h1>
+<div class="contents">
+<h2>Table of Contents</h2>
+<ul>
+<li><a name="toc_Top" href="index.html#Top">TOra Manual 1.3.22</a>
+<li><a name="toc_help" href="help.html#help">1 Using the help browser</a>
+<li><a name="toc_history" href="history.html#history">2 History of TOra</a>
+<li><a name="toc_workspace" href="workspace.html#workspace">3 Getting to know your workspace</a>
+<ul>
+<li><a href="window.html#window">3.1 Elements of the main window</a>
+<li><a href="newconnection.html#newconnection">3.2 Connecting to a database</a>
+<li><a href="What-privileges-do-you-need-to-run-TOra.html#What-privileges-do-you-need-to-run-TOra">3.3 What privileges do you need to run TOra</a>
+<li><a href="editors.html#editors">3.4 Using editors</a>
+<li><a href="lists.html#lists">3.5 Using lists</a>
+<li><a href="Using-charts.html#Using-charts">3.6 Using charts</a>
+<li><a href="searchreplace.html#searchreplace">3.7 Search &amp; Replace</a>
+<li><a href="preferences.html#preferences">3.8 Options</a>
+<ul>
+<li><a href="Global-Settings.html#Global-Settings">3.8.1 Global Settings</a>
+<li><a href="database.html#database">3.8.2 Database Settings</a>
+<li><a href="fonts.html#fonts">3.8.3 Font Settings</a>
+<li><a href="additionalhelp.html#additionalhelp">3.8.4 Additional Help Settings</a>
+<li><a href="toolsetting.html#toolsetting">3.8.5 Tool Settings</a>
+</li></ul>
+<li><a href="common.html#common">3.9 Other common elements</a>
+<ul>
+<li><a href="SGA-Statement.html#SGA-Statement">3.9.1 SGA Statement</a>
+<li><a href="Explain-plan.html#Explain-plan">3.9.2 Explain plan</a>
+<li><a href="Getting-bind-parameters.html#Getting-bind-parameters">3.9.3 Getting bind parameters</a>
+<li><a href="Object-description.html#Object-description">3.9.4 Object description</a>
+<li><a href="Memo-editor.html#Memo-editor">3.9.5 Memo editor</a>
+</li></ul>
+</li></ul>
+<li><a name="toc_tools" href="tools.html#tools">4 Available tools</a>
+<ul>
+<li><a href="worksheet.html#worksheet">4.1 SQL Worksheet</a>
+<li><a href="browser.html#browser">4.2 Database Browser</a>
+<li><a href="debugger.html#debugger">4.3 PL/SQL Debugger</a>
+<li><a href="tuning.html#tuning">4.4 Server Tuning</a>
+<li><a href="security.html#security">4.5 Security Manager</a>
+<li><a href="storage.html#storage">4.6 Storage Manager</a>
+<li><a href="session.html#session">4.7 Session Manager</a>
+<li><a href="rollback.html#rollback">4.8 Rollback Segments</a>
+<li><a href="trace.html#trace">4.9 SGA Trace</a>
+<li><a href="current.html#current">4.10 Current Session</a>
+<li><a href="script.html#script">4.11 Schema extraction, compare and search</a>
+<li><a href="analyze.html#analyze">4.12 Statistics manager</a>
+<li><a href="alert.html#alert">4.13 Alert Tool</a>
+<li><a href="invalid.html#invalid">4.14 Invalid Objects</a>
+<li><a href="output.html#output">4.15 SQL Output</a>
+<li><a href="template.html#template">4.16 Template Help</a>
+<li><a href="sqledit.html#sqledit">4.17 SQL Editor</a>
+</li></ul>
+<li><a name="toc_extendingtora" href="extendingtora.html#extendingtora">5 Extending TOra</a>
+<ul>
+<li><a href="api.html#api">5.1 TOra Tool Tutorial</a>
+<li><a href="externalapi.html#externalapi">5.2 API Reference</a>
+</li></ul>
+<li><a name="toc_Index" href="Index.html#Index">Index</a>
+</li></ul>
+</div>
+
+
+
+<div class="node">
+<p>
+<a name="Top"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="help.html#help">help</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="../index.html#dir">(dir)</a>
+<hr>
+</div>
+
+<h2 class="unnumbered">TOra Manual 1.3.22</h2>
+
+<p>This manual is for TOra, version 1.3.22.
+
+<ul class="menu">
+<li><a accesskey="1" href="help.html#help">Using the help browser</a>
+<li><a accesskey="2" href="history.html#history">History of TOra</a>
+<li><a accesskey="3" href="workspace.html#workspace">Getting to know your workspace</a>
+<li><a accesskey="4" href="tools.html#tools">Available tools</a>
+<li><a accesskey="5" href="extendingtora.html#extendingtora">Extending TOra</a>
+<li><a accesskey="6" href="Index.html#Index">Index</a>:  Complete index. 
+</ul>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/invalid.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/invalid.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/invalid.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,47 @@
+<html lang="en">
+<head>
+<title>invalid - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="alert.html#alert" title="alert">
+<link rel="next" href="output.html#output" title="output">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="invalid"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="output.html#output">output</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="alert.html#alert">alert</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.14 Invalid Objects</h3>
+
+<p><a name="index-Invalid-Objects-30"></a>
+This tool is usefull to recompile invalid objects in the database.
+
+   <div class="block-image"><img src="images/invalid.png" alt="images/invalid.png"></div>
+
+   <p>To the left you see a list of invalid objects. Select an object and the left editor will be filled with code to recreate the code objects, you can then fix whatever problem may be with it. Rows with errors will have red background and you can see the error in the statusbar by putting the cursor on the row. You can also refresh the list or change the active connection by the buttons in the toolbar.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/lists.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/lists.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/lists.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,78 @@
+<html lang="en">
+<head>
+<title>lists - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="workspace.html#workspace" title="workspace">
+<link rel="prev" href="editors.html#editors" title="editors">
+<link rel="next" href="Using-charts.html#Using-charts" title="Using charts">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="lists"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="Using-charts.html#Using-charts">Using charts</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="editors.html#editors">editors</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="workspace.html#workspace">workspace</a>
+<hr>
+</div>
+
+<h3 class="section">3.5 Using lists</h3>
+
+<p><a name="index-lists-7"></a>
+A list is a very central element of the TOra user interface and is a standard way to display information in a grid. Here is an example of a list.
+
+   <div class="block-image"><img src="images/lists.png" alt="images/lists.png"></div>
+
+<h4 class="subheading">Navigating a list</h4>
+
+<p>If a list does not fit into it's designated area on the screen it will get scrollbars that can be used to navigate the entire contents of the list. There are also the usual key bindings <strong>left</strong>, <strong>right</strong>, <strong>up</strong>, <strong>down</strong>, <strong>page up</strong>, <strong>page down</strong> etc...
+
+   <p>Lists can be hierarchical as can be seen in the screenshot above. When there are child items that are not displayed a + is displayed to the left of the row. Clicking the + will expand the row and display the child items. 
+You can also use the <strong>right</strong> key to expand child items and <strong>left</strong> key to collapse them.
+
+<h4 class="subheading">Result lists</h4>
+
+<p>Result lists are lists that display the result of a query from the database. Only a configured amount of rows are initially read (see <a href="preferences.html#preferences">Options</a> for more information), although enough items to fill the screen is always read if available. To read more items from the queries simply scroll down. If you want to scroll faster use <strong>page down</strong> which will read an entire screen of data at a time from the query. If you want to read all the data available you can use the <strong>Edit|Read All</strong> menu item.
+
+<h4 class="subheading">Manipulating lists</h4>
+
+<p>In a list you can change the sort order by pressing the header of the list to sort on the column whose header you clicked. Clicking the same column again will reverse the sort order. Columns that contain numerical data (Regardless of database format) will be sorted as numbers (2 before 10). Observe that not all lists can be sorted in a different sort order.
+
+   <p>You can also rearrange the column order by dragging the heading of a column to another place.
+
+<h4 class="subheading">Accessing the contents of a field</h4>
+
+<p>The contents of a field (Specific row and column of a list) can be copied either by double-clicking the field, or selecting copy from the context menu available by right-clicking on the field. You can also drag the contents of a field to an editor.
+
+   <p>If the contents is too long to be visible in the list you will get a tooltip with all of the contents if you place the mouse over the field for a short while (As seen in the screenshot). If this is not enough you can display the contents of a field in a separate window by accessing the context menu of the field and selecting <strong>display in editor</strong>.
+
+   <p>You can also place a line in the bind parameter(see <a href="Getting-bind-parameters.html#Getting-bind-parameters">Getting bind parameters</a>) cache by double clicking on a line. The bind name will be the same as the column name in lowercase.
+
+<h4 class="subheading">Other list functionality</h4>
+
+<p>Lists can always be printed by selecting the <strong>File|Print</strong> menu item.
+
+   <p>You can also save a list as a text file by selecting <strong>File|Save</strong> menu item. Any graphics in the list will be discarded and all fields will be left justified in the output.
+
+   <p>In the context menu for the list you can also select the entry <strong>edit SLQ</strong> in which you can edit the SQL used to generated the list. If there is no single SQL used to generate the list you will not find any SQL, however you will usually be pointed in roughly the right direction in the sql editor (see <a href="sqledit.html#sqledit">SQL Editor</a>, Where you can also find more information about the concept of SQL dictionary TOra uses).
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/newconnection.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/newconnection.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/newconnection.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,62 @@
+<html lang="en">
+<head>
+<title>newconnection - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="workspace.html#workspace" title="workspace">
+<link rel="prev" href="window.html#window" title="window">
+<link rel="next" href="What-privileges-do-you-need-to-run-TOra.html#What-privileges-do-you-need-to-run-TOra" title="What privileges do you need to run TOra">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="newconnection"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="What-privileges-do-you-need-to-run-TOra.html#What-privileges-do-you-need-to-run-TOra">What privileges do you need to run TOra</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="window.html#window">window</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="workspace.html#workspace">workspace</a>
+<hr>
+</div>
+
+<h3 class="section">3.2 Connecting to a database</h3>
+
+<p><a name="index-Connecting-to-a-database-5"></a>
+You can connect to a database by selecting the <strong>File|New Connection</strong> menu entry or the toolbar button. For more information about the menu and toolbar see <a href="window.html#window">Elements of the main window</a>.
+
+   <p>After selecting the menu you will be presented with the following dialog.
+
+   <div class="block-image"><img src="images/newconnection.png" alt="images/newconnection.png"></div>
+
+   <p>The filling out of this dialog is pretty straight forward.
+
+     <dl>
+<dt><strong>Previous</strong><dd>      This list contains the previous connection made, selecting an entry from this list will set all the values to the right to the correct
+<br><dt><strong>connections</strong><dd>      values to connect to this database again. 
+<br><dt><strong>Connection provider</strong><dd>      The type of connection to create. Usually Oracle, but MySQL is also supported on some platforms. 
+<br><dt><strong>Username</strong><dd>      The username with which to connect to the database
+<br><dt><strong>Password</strong><dd>      The password to use for the connection, this defaults to manager. You can also configure TOra to remember your last used password(see <a href="preferences.html#preferences">Options</a>)
+<br><dt><strong>Use SQL*Net</strong><dd>      This is perhaps the most difficult setting. This indicates whether to connect locally to the database or use SQL*Net. If you check this box the connection is made through the Oracle listener, otherwise a local connection usually using shared memory or named pipes is made. This is only available for Oracle connections. 
+<br><dt><strong>Hostname</strong><dd>      The host on which the database resides. This is only available for non Oracle connections. 
+<br><dt><strong>Database</strong><dd>      What database to connect to, the listbox is filled with the values available in your tnsnames.ora file. 
+<br><dt><strong>Connection Mode</strong><dd>      The type of connection to make, usually <strong>normal</strong> always suffices here. But sometimes during database administration <strong>SYS_DBA</strong> or <strong>SYS_OPER</strong> is needed. If you don't know what these mean you probably shouldn't be using them. 
+</dl>
+   Upon establishing a successful connection all the settings of the dialog will be saved and remembered when the next connection is made with the exception of the password.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/output.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/output.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/output.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,56 @@
+<html lang="en">
+<head>
+<title>output - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="invalid.html#invalid" title="invalid">
+<link rel="next" href="template.html#template" title="template">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="output"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="template.html#template">template</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="invalid.html#invalid">invalid</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.15 SQL Output</h3>
+
+<p><a name="index-SQL-Output-31"></a>
+This tool display the output from the DBMS_OUTPUT package (For more information see the Oracle PL/SQL Supplied Packages manual).
+
+   <div class="block-image"><img src="images/output.png" alt="images/output.png"></div>
+
+   <p>Use this if you are running PL/SQL from the worksheet(see <a href="worksheet.html#worksheet">SQL Worksheet</a>) and want to check the output. It is also used in the debugger (see <a href="debugger.html#debugger">PL/SQL Debugger</a>) but as a pane in the debugger information.
+
+   <p>The toolbar contain the following controls.
+
+     <dl>
+<dt><strong>Update</strong><dd>        Poll for more output immediately. 
+<br><dt><strong>Enable</strong><dd>        Enable or disable output collecting. Collecting is enabled if light bulb is lit. 
+<br><dt><strong>Clear output</strong><dd>      	Clear the currently collected output. 
+<br><dt><strong>Refresh</strong><dd>      	The time-out to update automatically. The default value of this is configurable though the options. 
+</dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/preferences.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/preferences.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/preferences.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,63 @@
+<html lang="en">
+<head>
+<title>preferences - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="workspace.html#workspace" title="workspace">
+<link rel="prev" href="searchreplace.html#searchreplace" title="searchreplace">
+<link rel="next" href="common.html#common" title="common">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="preferences"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="common.html#common">common</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="searchreplace.html#searchreplace">searchreplace</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="workspace.html#workspace">workspace</a>
+<hr>
+</div>
+
+<h3 class="section">3.8 Options</h3>
+
+<p><a name="index-Options-10"></a>
+To access the options of TOra you select the <strong>Edit|Options</strong> menu item, you will then be presented with the following dialog.
+
+   <div class="block-image"><img src="images/preferences.png" alt="images/preferences.png"></div>
+
+   <p>In windows preferences are stored in the registry, but in Linux it is stored in a file called <samp><span class="file">.torarc</span></samp> in the users home directory. If this file doesn't exist a file called <samp><span class="file">/etc/torarc</span></samp> is used if it exists.
+
+<h4 class="subheading">Selecting page</h4>
+
+<p>To the left is a list containing the available option pages you can display.
+
+<ul class="menu">
+<li><a accesskey="1" href="Global-Settings.html#Global-Settings">General global settings</a>
+<li><a accesskey="2" href="database.html#database">Global database settings</a>
+<li><a accesskey="3" href="fonts.html#fonts">Font and color settings</a>
+<li><a accesskey="4" href="additionalhelp.html#additionalhelp">Additional manuals in help browser</a>
+<li><a accesskey="5" href="toolsetting.html#toolsetting">Settings regarding enabled tools</a>
+</ul>
+
+   <p>The rest of the settings are tool specific and covered under corresponding tool in the tools section(see <a href="tools.html#tools">Available tools</a>).
+
+   <p>Selecting a page does not discard the changes of another page, and no changes are saved until <strong>OK</strong> is pressed. You can always discard any changes made by pressing the escape key or the <strong>Cancel</strong> button.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/rollback.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/rollback.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/rollback.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,84 @@
+<html lang="en">
+<head>
+<title>rollback - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="session.html#session" title="session">
+<link rel="next" href="trace.html#trace" title="trace">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="rollback"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="trace.html#trace">trace</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="session.html#session">session</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.8 Rollback Segments</h3>
+
+<p><a name="index-Rollback-Segments-24"></a>
+This tool is used to manage rollback segments in the database.
+
+   <div class="block-image"><img src="images/rollback.png" alt="images/rollback.png"></div>
+
+   <p>The window consist of three part. 
+The top one displays the available rollback segments and you can also see running transaction that use segment in the transactions column of the view, the length of the <strong>transactions</strong> show up as bars in this column. One bar for each running transaction using the segment.
+
+   <p>The last part is a unique tool to detect snapshot too old problems in your database. This is discussed more later.
+
+<h4 class="subheading">Toolbar</h4>
+
+<p>The toolbar contains the following commands.
+
+     <dl>
+<dt><strong>Update</strong><dd>      	Update the view from the database. 
+<br><dt><strong>Online</strong><dd>      	Take currently selected segment online. 
+<br><dt><strong>Offline</strong><dd>      	Take currently selected segment off-line. 
+<br><dt><strong>New rollback segment</strong><dd>      	Create new rollback segment. If you are confused about what the items in the dialog mean refer to the Oracle Server Concepts manual as well as the Oracle SQL Reference. 
+<br><dt><strong>Drop segment</strong><dd>                  Drop the currently selected segment. 
+<br><dt><strong>Refresh time</strong><dd>      	A list where you can select the interval between automatic updates. 
+<br><dt><strong>Change connection</strong><dd>      	Change the connection to administrate storage for.
+
+   </dl>
+
+<h4 class="subheading">Snapshot too old detection</h4>
+
+<p>The lower part of this view is used to heuristically detect snapshot too old problems. The operation of this is that whenever the view is updated all SGA statements are cataloged and the corresponding current position in all the rollback segments are also stored the first time a new statement is detected. Since the information about the current location of the rollback when a statement was executed is not available in the SGA you have to keep the tool window open during the entire duration of the execution for this to work.
+
+   <p>In the view you can see when the statement was first detected and who is running it. You also see the snapshot info which will display how far each of the available rollback segments have moved since this statement was executed. This is represented by one bar for each rollback segment. If any of these bars goes all the way through this column you are likely to encounter a snapshot too old statement.
+
+   <p>Finally you can see the SQL for the row. Selecting a line will also let you investigate the statement using the normal SGA statement(see <a href="SGA-Statement.html#SGA-Statement">SGA Statement</a>) view.
+
+   <p>There are a few options to configure how the snapshot too old detection is to work.
+
+   <div class="block-image"><img src="images/rollbacksetup.png" alt="images/rollbacksetup.png"></div>
+
+     <dl>
+<dt><strong>Restart reexecuted statements</strong><dd>      If the execution count is changed for a statement reset the location of the rollback segments to the current location. 
+<br><dt><strong>Must read buffers</strong><dd>      To display a statement it must be reading buffers, it is still kept in memory if no buffers are read, but not displayed in the list until buffers are read again. Check this to remove any statements that you execute and simply kept open even though you will not be reading from them any more. 
+<br><dt><strong>Exclude first appearance</strong><dd>      Exclude the first update that would show the statement. Without this checked any statement with execution changed and buffers read will show up. 
+<br><dt><strong>Disregard start extent</strong><dd>      If you check this the bars will always start from the left of the column. Otherwise the bars will start corresponding to the current extent of the tablespace and then wrap around as they grow. 
+</dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/script.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/script.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/script.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,102 @@
+<html lang="en">
+<head>
+<title>script - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="current.html#current" title="current">
+<link rel="next" href="analyze.html#analyze" title="analyze">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="script"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="analyze.html#analyze">analyze</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="current.html#current">current</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.11 Schema extraction, compare and search</h3>
+
+<p><a name="index-Schema-extraction_002c-compare-and-search-27"></a>
+This tool is used to either extract a script to recreate database objects, compare database objects or search database objects.
+
+   <div class="block-image"><img src="images/script.png" alt="images/script.png"></div>
+
+<h4 class="subheading">Defining the operation</h4>
+
+<p>The first thing to select is if you want to <strong>extract</strong> script to recreate an object, <strong>compare</strong> or <strong>search</strong>. 
+You choose this by selecting one of the radio buttons to the left of the screen.
+
+   <p>Next you should indicate what kind of information you want included in the extract or compare. This is selected with the checkboxes just to the right of the mode selection. Depending on the mode some options may be disabled.
+
+     <dl>
+<dt><strong>Include DDL</strong><dd>      Include any database definition. 
+<br><dt><strong>Include constraints</strong><dd>      Extract constraint definitions from tables
+<br><dt><strong>Include indexes</strong><dd>      Extract indexes for tables. 
+<br><dt><strong>Include grants</strong><dd>      Extract grants for database objects. 
+<br><dt><strong>Include storage specification</strong><dd>      Extract storage specifications for database objects. 
+<br><dt><strong>Include parallel specification</strong><dd>      Extract parallel specification for tables. 
+<br><dt><strong>Include partition specification</strong><dd>      Extract partition specification for tables. 
+<br><dt><strong>Include code specification</strong><dd>      Extract code for packages, procedures and functions. 
+<br><dt><strong>Include comments</strong><dd>      Extract comments for database objects. 
+<br><dt><strong>Include content of tables</strong><dd>      Extract the content of tables as well. 
+<br><dt><strong>Generate prompts</strong><dd>      Generate prompts in the extracted result indicating what the script is doing. 
+<br><dt><strong>Generate header</strong><dd>      Generate header of the script. 
+<br><dt><strong>Generated schema</strong><dd>      This specifies the schema to be used when extracting. If you select Same, the same schema as the source database is used. If you select None, no schema is generated. Specifying anything else will replace the source schema with the one entered here.
+
+   </dl>
+
+   <p>If you are searching you also need to indicate what you are searching for in the bottom left of the front page.
+
+     <dl>
+<dt><strong>Containing any words</strong><dd>      The object should contain at least one of the words in the line editor. 
+<br><dt><strong>Containing all words</strong><dd>      The object should contain all of the words in the line editor. 
+<br><dt><strong>Exact match</strong><dd>      The object should contain the exact string as in the line editor include whitespaces. 
+<br><dt><strong>RegExp</strong><dd>      The object should contain at least one of the words in the line editor. The dialect of RegExp:s is the ones in the version of Qt that TOra is compiled against. For more information on regular expressions check out <a href="http://doc.trolltech.com/qregexp.html">http://doc.trolltech.com/qregexp.html</a>, if you are using Qt 3.0 or later you have a more advanced form of regular expressions. 
+</dl>
+
+   <p>The next thing you need to do is to specify which objects you want to extract or compare. If you extract you only need to specify the source, if comparing destination objects are also needed.
+
+   <p>Selecting or deselecting an item in this list will select all it's child items.
+
+   <p>If you specify the <strong>extract</strong> mode you can also indicate a way to resize generated storage specifications. This could be useful to make a database have only a few standard storage specifications making the database less prone to fragmentation.
+
+   <div class="block-image"><img src="images/resize.png" alt="images/resize.png"></div>
+
+   <p>You have three modes to specify how resizing should work. First there is <strong>Don't resize</strong> which means leave the same as the original. 
+Then there is <strong>Auto resize</strong> which should work for pretty much everyone. In this a resize specification for each order of magnitude of size is given a specific storage specification. And last is the <strong>Custom resize</strong> mode in which you specify how to transform the storage specifications to new values.
+
+   <p>When you specify a custom resize you add items to the list with a <strong>limit</strong> size, <strong>initial</strong> size and <strong>next</strong> size. The sizes are used in the following way. When TOra is to determine the storage clause of an object it will take the <strong>initial</strong> and <strong>next</strong> sizes of the row in this list with the lowest <strong>limit</strong> size still higher than the current size of the object. If no row is found the one with the highest <strong>limit</strong> is used.
+
+<h4 class="subheading">Reading the result</h4>
+
+<p>If you <strong>extract</strong> the result is available under the <strong>Result</strong> tag of the dialog in the form of a worksheet tool where you can either start executing it or save it to a file. 
+If you are comparing objects you will get the result under the <strong>Difference</strong> tab. The tab will look something like this.
+
+   <div class="block-image"><img src="images/difference.png" alt="images/difference.png"></div>
+
+   <p>On the left is a pane containing objects only available in the source database. On the right is a pane containing the objects only available in the destination database.
+
+   <p>Only the items in the lists that have checks on them are actually dropped or created, the other items only need to be added to lead the list tree to the items that are actually dropped or created.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/searchreplace.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/searchreplace.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/searchreplace.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,59 @@
+<html lang="en">
+<head>
+<title>searchreplace - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="workspace.html#workspace" title="workspace">
+<link rel="prev" href="Using-charts.html#Using-charts" title="Using charts">
+<link rel="next" href="preferences.html#preferences" title="preferences">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="searchreplace"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="preferences.html#preferences">preferences</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="Using-charts.html#Using-charts">Using charts</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="workspace.html#workspace">workspace</a>
+<hr>
+</div>
+
+<h3 class="section">3.7 Search &amp; Replace</h3>
+
+<p><a name="index-Search-_0026-Replace-9"></a>
+Ora has an advanced search and replace function that allows you to search result list and editors. Replace is only available for editors though. You can invoke the search &amp; replace dialog by selecting the menu <strong>Edit|Search &amp; Replace</strong> or by pressing <strong>CTRL+F</strong>. The search always operates on the last editor or list that had the focus <strong>when you invoked the dialog</strong>. Not on the current widget of the next search etc. The dialog looks like this.
+
+   <div class="block-image"><img src="images/searchreplace.png" alt="images/searchreplace.png"></div>
+
+<h4 class="subheading">Specifying the search criteria</h4>
+
+<p>You enter the text to search for, this can be either in the format of plain text or regular expressions as defined by the current version of Qt which TOra is compiled against (For more information check out <a href="http://doc.trolltech.com/qregexp.html">http://doc.trolltech.com/qregexp.html</a>, if you are using Qt 3.0 or later you have a more advanced form of regular expressions).
+
+   <p>You can also specify if the search expression must match a whole word or if the match is to be case sensitive.
+
+   <p>After specifying what you are looking for you can execute your search by either pressing the <strong>Search Top</strong> button which will start the search from the top of the contents of the target for the search or <strong>Search Next</strong> which will continue searching for the next match from the current location.
+
+<h4 class="subheading">Replacing</h4>
+
+<p>In the replace text field you can specify the text with which to replace a matched find that has been found. Note that regardless of if the search is case sensitive or not the replacement is the same case as specified in the text field.
+
+   <p>After finding the first occurrence by pressing <strong>Search Top</strong> or <strong>Search Next</strong> you can either replace it with the current substitution by pressing <strong>Replace</strong>, or skip to the next by pressing <strong>Search Next</strong> button again. At any time the <strong>Replace All</strong> will replace all occurrences after the current location in the editor.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/security.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/security.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/security.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,94 @@
+<html lang="en">
+<head>
+<title>security - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="tuning.html#tuning" title="tuning">
+<link rel="next" href="storage.html#storage" title="storage">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="security"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="storage.html#storage">storage</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="tuning.html#tuning">tuning</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.5 Security Manager</h3>
+
+<p><a name="index-Security-Manager-21"></a>
+This tool provides an easy interface to manipulate users, roles and their privileges.
+
+   <div class="block-image"><img src="images/security.png" alt="images/security.png"></div>
+
+   <p>The window consists of three parts. First the toolbar on top, to the left is a list of all the users and roles. Finally to the left is a tabbed window containing the different settings and privileges you can manipulate for the chosen user.
+
+<h4 class="subheading">Toolbar</h4>
+
+<p>The commands in the toolbar are from left to right.
+
+     <dl>
+<dt><strong>Refresh</strong><dd>      Update the user and role list to the left of the screen. 
+<br><dt><strong>Save changes</strong><dd>      Perform any changes made to the current user or role. 
+<br><dt><strong>Remove</strong><dd>      Drop the user or role currently selected. 
+      If the user still owns objects a question will be asked about also removing these objects or abort the drop. 
+<br><dt><strong>New user</strong><dd>      Start defining a new user. 
+<br><dt><strong>New role</strong><dd>      Start defining a new role. 
+<br><dt><strong>Copy</strong><dd>      Copy the current user or role to a new name. 
+<br><dt><strong>SQL</strong><dd>      Display the SQL that will be used to apply the current changes in a memo editor(see <a href="Memo-editor.html#Memo-editor">Memo editor</a>). 
+<br><dt><strong>Change connection</strong><dd>      Change the connection to administrate security for. 
+</dl>
+   You select the role you want to work on simply by pressing it in the left pane or any of the new user,
+new role or copy buttons to start defining a new one.
+
+<h4 class="subheading">Defining a user</h4>
+
+<p>There are five tabs available when defining a user or four when doing the same for a role.
+
+     <dl>
+<dt><strong>General</strong><dd>      Used for setting the name, authentication, default tablespaces etc. for the new user. For more information about this see the Oracle SQL Reference. 
+<br><dt><strong>Roles</strong><dd>      Which roles are granted to the user or role. For more information about defining privileges see the section below. 
+<br><dt><strong>System privileges</strong><dd>      Which system privileges this user or role should have. For more information about defining privileges see the section below. 
+<br><dt><strong>Object privileges</strong><dd>      Which privileges this user or role should have on specific schema objects. For more information about defining privileges see the section below. 
+<br><dt><strong>Quota</strong><dd>      Define the quota for the user, this tab is not available for roles. For more information about defining quotas see the section below. 
+</dl>
+
+<h4 class="subheading">Defining privileges</h4>
+
+<p>All roles, system or object privileges are defined using basically the same interface.
+
+   <div class="block-image"><img src="images/priviledges.png" alt="images/priviledges.png"></div>
+
+   <p>This list contains a tree view with first the schema, then the type, the object and finally the actual privilege to define. In the system or role tabs, the privileges are in the root of the list. If you open the privilege you will find an additional <strong>admin</strong> item which if checked will give the user or role the ability to grant the privilege on to other users or roles. In the role case you also have another child item to the privilege which is <strong>default</strong>. If <strong>default</strong> is checked the role will be enabled by default when the user logs in. When you start a new user all checked items will be made visible by expanding the parent items.
+
+<h4 class="subheading">Defining quota</h4>
+
+<p>You define quotas using the following interface.
+
+   <div class="block-image"><img src="images/quota.png" alt="images/quota.png"></div>
+
+   <p>To change a quota simply select the tablespace and specify the new quota using the radio buttons at the end of the screen. 
+If <strong>value</strong> is selected you can specify a value using the size control at the bottom.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/session.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/session.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/session.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,76 @@
+<html lang="en">
+<head>
+<title>session - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="storage.html#storage" title="storage">
+<link rel="next" href="rollback.html#rollback" title="rollback">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="session"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="rollback.html#rollback">rollback</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="storage.html#storage">storage</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.7 Session Manager</h3>
+
+<p><a name="index-Session-Manager-23"></a>
+This tool is used to manage the connections made to the database.
+
+   <div class="block-image"><img src="images/session.png" alt="images/session.png"></div>
+
+   <p>The session tool consists of a toolbar, a list displaying the connections currently open to the database and at the bottom a tabbed pane where you can investigate a specific connection to the database.
+
+<h4 class="subheading">Toolbar</h4>
+
+<p>The toolbar contain the following commands.
+
+     <dl>
+<dt><strong>Refresh</strong><dd>      Refresh the view from the database. 
+<br><dt><strong>Enable timed statistics</strong><dd>      Enable timed statistics for the currently selected session. 
+<br><dt><strong>Disable timed statistics</strong><dd>      Disable timed statistics for the currently selected session. 
+<br><dt><strong>Disconnect session</strong><dd>      Disconnect the currently selected session. You will be asked if you allow the current transaction to finish before kicking the session out or not. 
+<br><dt><strong>Refresh time</strong><dd>      A list where you can select the interval between automatic updates. 
+<br><dt><strong>Change connection</strong><dd>      Change the connection to administrate storage for.
+
+   </dl>
+
+<h4 class="subheading">Inspecting a session</h4>
+
+<p>When you select a session the following information is available in the tabbed pane at the bottom of the window.
+
+     <dl>
+<dt><strong>Statistics</strong><dd>        The session statistics available for the session. You will get more statistics if you enable timed statistics through the toolbar. There are also two charts displaying waitstates and I/O for the selected session. 
+<br><dt><strong>Connection info</strong><dd>      Information about the connection and versions of the components used. 
+<br><dt><strong>Pending locks</strong><dd>      	What locks this session is currently waiting for. 
+Locked objects	The objects currently locked by this session. 
+<br><dt><strong>Current statement</strong><dd>      The statement that is currently being executed (see <a href="SGA-Statement.html#SGA-Statement">SGA Statement</a> for information about the statement). 
+<br><dt><strong>Previous statement</strong><dd>      The next to last statement being executed by the session (see <a href="SGA-Statement.html#SGA-Statement">SGA Statement</a> for information about the statement). 
+<br><dt><strong>Open cursors</strong><dd>      	This contains a list of all the cursors currently held open by the session. When a statement is selected in the list you can investigate it using the normal SGA statement view.
+
+   </dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/sqledit.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/sqledit.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/sqledit.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,65 @@
+<html lang="en">
+<head>
+<title>sqledit - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="template.html#template" title="template">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="sqledit"></a>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="template.html#template">template</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.17 SQL Editor</h3>
+
+<p><a name="index-SQL-Editor-33"></a>
+When TOra needs to run an SQL statement it will not actually use the SQL needed directly. It will fetch an SQL statement by addressing it with a string. The string is built up by a module name, followed by a colon and a unique name for the SQL (Example: toBrowser:ListIndex which will contain the SQL statement for getting all the indexes for a schema).
+
+   <p>For each SQL name there may be a number of actual SQL strings that are available, each are associated with a version number. When TOra requests an SQL statement by a name it will receive the string with the statement with the highest version number lower than the version of Oracle for the current connection that will be used to run it. Each SQL name also has a description associated with it so you can understand what the SQL is supposed to do.
+
+   <p>TOra has a default SQL name to statement map which can be redefined by the user to either add support for different versions than TOra originally supports, or change the default behavior for TOra in some cases. The changes from the default map is saved in the file defined in the options dialog (see <a href="preferences.html#preferences">Options</a>). If you make changes to improve support for other versions of Oracle please send this file to <a href="mailto:tora-develop at lists.sourceforge.net">tora-develop at lists.sourceforge.net</a> and we will incorporate them in the future releases.
+
+   <p>You start the SQL editor either by selecting <strong>Edit|Edit SQL</strong> or by selecting <strong>Edit SQL</strong> in the result list context editor. You are then presented with the following dialog.
+
+   <div class="block-image"><img src="images/script.png" alt="images/script.png"></div>
+
+   <p>The window is divided into several parts. To the left is a list of SQL statements available divided into modules. When an item is selected in this list you can use the right part of the screen to modify the SQL associated by the selected name.
+
+   <p>The right part of the window is divided into the name and version at the top. The version is also preceeded with the name of the provider (Usually <strong>Oracle</strong>) separated by a colon. Each statement name can have several versions of an SQL. You can add a new version by simply entering a new text into the version combobox. You can also select any of the existing versions by selecting them from the list.
+
+   <p>Below the name and version is the description which is independent from the version. Below that is a worksheet (see <a href="worksheet.html#worksheet">SQL Worksheet</a>) which you can use to edit and test the SQL statement that should be associated with the given name and version.
+
+   <p>There is also a toolbar with the current available commands.
+
+     <dl>
+<dt><strong>Open</strong><dd>      Read in a file containing SQL descriptions saved before. 
+<br><dt><strong>Save</strong><dd>      Save the changes made from the default to the SQL statements to a file. This file can be used to send updates and improvements of the internal SQL to incorporate in future versions. 
+<br><dt><strong>Save this entry</strong><dd>      Save the changes made. If changes have been made and you select a new item you will be asked to save or discard the changes if you forget to save entry before. 
+<br><dt><strong>Drop this entry</strong><dd>      Drop the current entry. If the last version of a statement is deleted the entire statement will be deleted. Observe that you can not delete default statements permanently, they will reappear when you restart TOra so you can't really screw up with this. 
+<br><dt><strong>New SQL</strong><dd>      Start new SQL statement definitions. 
+</dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/storage.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/storage.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/storage.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,66 @@
+<html lang="en">
+<head>
+<title>storage - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="security.html#security" title="security">
+<link rel="next" href="session.html#session" title="session">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="storage"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="session.html#session">session</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="security.html#security">security</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.6 Storage Manager</h3>
+
+<p><a name="index-Storage-Manager-22"></a>
+This tool provides an easy interface to administrate tablespaces and datafiles.
+
+   <div class="block-image"><img src="images/storage.png" alt="images/storage.png"></div>
+
+   <p>As you can see in the screenshot above the tool is a list of all the tablespaces available in the database. The tablespaces can be expanded to display the datafiles they consist of. There is also one option available to this tool, whether to collect information about how coalesced the tablespaces are, the coalesced fetching can be very slow on fragmented databases and if TOra seems to lock itself when you try to start this tool try resetting that option to not show coalesced info. Using the toolbar you can perform these commands.
+
+     <dl>
+<dt><strong>Refresh</strong><dd>      Update the view. 
+<br><dt><strong>Tablespace online</strong><dd>      Take the selected tablespace online. 
+<br><dt><strong>Tablespace offline</strong><dd>      Take the selected tablespace off-line. 
+<br><dt><strong>Enable tablespace logging</strong><dd>      Enable logging for the selected tablespace. 
+<br><dt><strong>Disable tablespace logging</strong><dd>      Disable logging for the selected tablespace. 
+<br><dt><strong>Read write tablespace</strong><dd>      Enable read and write access to the selected tablespace. 
+<br><dt><strong>Read only tablespace</strong><dd>      Only allow read only access to the selected tablespace. 
+<br><dt><strong>Modify tablespace</strong><dd>      Modify the selected tablespace settings. If you don't understand the settings in this dialog please refer to the Oracle Server Concepts manual. 
+<br><dt><strong>Modify datafile</strong><dd>      Modify the current datafiles settings. If you don't understand the settings in this dialog please refer to the Oracle Server Concepts manual. 
+<br><dt><strong>Add tablespace</strong><dd>      Create a new tablespace. If you don't understand the settings in this dialog please refer to the Oracle Server Concepts manual. 
+<br><dt><strong>Add datafile</strong><dd>      Create a new datafile for the currently selected tablespace. If you don't understand the settings in this dialog please refer to the Oracle Server Concepts manual. 
+<br><dt><strong>Coalesced tablespace</strong><dd>      Coalesced free data in the current tablespace. 
+<br><dt><strong>Move datafile</strong><dd>      Move a datafile to another location. 
+<br><dt><strong>Change connection</strong><dd>      Change the connection to administrate storage for. 
+</dl>
+
+   <p>When you select a tablespace or datafile the lower part of this tool displays the objects (to the left) and extents (to the right) in that tablespace or file. A used extent is displayed as green in the extent view if the object it belongs to is not selected in the list to the right. Selecting an item in the list to the right will paint it's extents red in the right extent view. Unallocated space is colored whie. Some information about the number of files and extents are displayed at the top of the extents display. Several datafiles are separated by one line of black in the extent view if a tablespace containing several files are viewed.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/template.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/template.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/template.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,92 @@
+<html lang="en">
+<head>
+<title>template - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="output.html#output" title="output">
+<link rel="next" href="sqledit.html#sqledit" title="sqledit">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="template"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="sqledit.html#sqledit">sqledit</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="output.html#output">output</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.16 Template Help</h3>
+
+<p><a name="index-Template-Help-32"></a>
+This tool provides help for writing PL/SQL and SQL queries by allowing a non obtrusive database browser and help lookup.
+
+   <p>The template help is implemented as a docked window if these are available. They are available in Qt 3.0 (Released only as beta as of 2001-07-11) and KDE.
+
+   <p>The help browser are divided into two panes. The top pane displays a tree view of the available documentation. The lower is used to display more information about the selected item in the top pane and it's content may differ depending on what is selected.
+
+   <p>The top pane is in the default distribution divided into two parts as well. The DB Browser (see <a href="browser.html#browser">Database Browser</a>) which lets you explore your connected databases through a tree structure. The second part is a plain tree list of available text documentation. By default only one manual is supplied which contain PL/SQL functions, but an editor is supplied to write more help.
+
+   <p>Items in the second part is simply items with a descriptive text associated with them. Selecting the item will bring up the description of it in the information.
+
+   <div class="block-image"><img src="images/template.png" alt="images/template.png"></div>
+
+<h4 class="subheading">DB Browser</h4>
+
+<p>The database browser allows you to browse the schema objects in the open databases. All the open databases will have an item under which the following information is available. Under each table is a list of the visible schemas for the database. Under the schema the following items are available.
+
+     <dl>
+<dt><strong>Code</strong><dd>      Under this item all the code objects are displayed. The information in the child objects will bring up the source of the object. There are also child items to this that contain information about <strong>grants</strong> and <strong>dependencies</strong>. 
+<br><dt><strong>Indexes</strong><dd>      Contains all the indexes of the schema. The information in the child objects will bring up the columns on which the index is defined. 
+<br><dt><strong>Sequences</strong><dd>      The sequences of the schema. The information in the child objects will bring up information about the sequence. There are also child item to this that contain information about <strong>grants</strong>. 
+<br><dt><strong>Synonyms</strong><dd>      The synonyms of the schema. The information in the child objects will bring up information about the sequence. There are also child item to this that contain information about <strong>grants</strong>
+<br><dt><strong>Tables</strong><dd>      The tables available in the schema. Selecting the table will bring up the columns of the table. There are also three child items to this that contain information about <strong>constraints</strong>, <strong>grants</strong> and <strong>references</strong>. 
+<br><dt><strong>Triggers</strong><dd>      Triggers in the schema. Selecting the item will bring up the source for the trigger. There are also child items to this that contain information about <strong>grants</strong> and <strong>dependencies</strong>. 
+<br><dt><strong>Views</strong><dd>      The views available in the schema. Selecting the view name will bring up the columns of the table. There are also child items to this that contain information about <strong>grants</strong> and <strong>dependencies</strong>. 
+</dl>
+
+   <p>Don't forget that more database browsing functionality is available in the database browser tool (see <a href="browser.html#browser">Database Browser</a>).
+
+<h4 class="subheading">Setup help templates</h4>
+
+<p>You set up additional help files by selecting the SQL Template page in the options dialog (see <a href="preferences.html#preferences">Options</a>).
+
+   <div class="block-image"><img src="images/templatesetup.png" alt="images/templatesetup.png"></div>
+
+   <p>To add an existing or start a new template help collection select the <strong>add file</strong> button and enter the filename under
+which to store the help collection and the name of the root item under which the collection should be displayed in the template help tree.
+
+   <p>To edit a collection select the collection in the list and press the <strong>edit file</strong> button to bring up the template editor. If the name doesn't exist you are asked to start a new file or cancel.
+
+   <p>To remove a template press the <strong>remove file</strong>, this will not remove the actual file.
+
+<h4 class="subheading">Template editor</h4>
+
+<p>The template editor is used to edit and create new text template help collections.
+
+   <div class="block-image"><img src="images/templateeditor.png" alt="images/templateeditor.png"></div>
+
+   <p>The editor are separated into a few different parts. On the left is a list of available items. To the top right are two buttons <strong>add new template</strong> and <strong>remove current template</strong>. Then comes a line editor where the name of template is. If a ':' character is in the name it will split into a tree in the template collection tree. Then comes a text editor where the actual description of the title is written. You can specify simple HTML in this editor. Finally there is a button called <strong>preview</strong> which will give you a preview of the editor result of HTML.
+
+   <p>The result is not saved until you press OK in the dialog. Pressing cancel will discard any changes made.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/tools.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/tools.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/tools.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,62 @@
+<html lang="en">
+<head>
+<title>tools - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="prev" href="workspace.html#workspace" title="workspace">
+<link rel="next" href="extendingtora.html#extendingtora" title="extendingtora">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="tools"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="extendingtora.html#extendingtora">extendingtora</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="workspace.html#workspace">workspace</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<hr>
+</div>
+
+<h2 class="chapter">4 Available tools</h2>
+
+<p><a name="index-Available-tools-16"></a>
+These are the available tools in a standard TOra installation. Individual installations may vary.
+
+<ul class="menu">
+<li><a accesskey="1" href="worksheet.html#worksheet">SQL Worksheet</a>
+<li><a accesskey="2" href="browser.html#browser">Schema Browser</a>
+<li><a accesskey="3" href="debugger.html#debugger">PL/SQL Debugger</a>
+<li><a accesskey="4" href="tuning.html#tuning">Server Tuning</a>
+<li><a accesskey="5" href="security.html#security">Security Manager</a>
+<li><a accesskey="6" href="storage.html#storage">Storage Manager</a>
+<li><a accesskey="7" href="session.html#session">Sessions</a>
+<li><a accesskey="8" href="rollback.html#rollback">Rollback Segments</a>
+<li><a accesskey="9" href="trace.html#trace">SGA Trace</a>
+<li><a href="current.html#current">Current Session</a>
+<li><a href="script.html#script">DB Extraction/Compare/Search</a>
+<li><a href="analyze.html#analyze">Statistics Manager</a>
+<li><a href="alert.html#alert">Alert Tool</a>
+<li><a href="invalid.html#invalid">Invalid Objects</a>
+<li><a href="output.html#output">SQL Output Viewer</a>
+<li><a href="template.html#template">Template Help</a>
+<li><a href="sqledit.html#sqledit">SQL Editor</a>
+</ul>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/toolsetting.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/toolsetting.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/toolsetting.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,49 @@
+<html lang="en">
+<head>
+<title>toolsetting - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="preferences.html#preferences" title="preferences">
+<link rel="prev" href="additionalhelp.html#additionalhelp" title="additionalhelp">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="toolsetting"></a>
+Previous:&nbsp;<a rel="previous" accesskey="p" href="additionalhelp.html#additionalhelp">additionalhelp</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="preferences.html#preferences">preferences</a>
+<hr>
+</div>
+
+<h4 class="subsection">3.8.5 Tool Settings</h4>
+
+<p><a name="index-Tool-Settings-14"></a>
+This page of the options contain settings on which tools should be enabled in TOra.
+
+   <div class="block-image"><img src="images/tools.png" alt="images/tools.png"></div>
+
+   <p>The first list contains all the available tools in TOra. If an item is selected in the list it is enabled. If unselected it is not enabled.
+
+   <p>There is also a combobox at the bottom called <strong>Default tool</strong>. Using this setting you can specify which tool to start by default when opening a new connection. Many people are for instance more interested in the database browser than a worksheet and could start that instead of a worksheet by default on opening a connection.
+
+   <p>Be aware that you need to restart TOra for changes to these settings take affect.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/trace.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/trace.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/trace.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,62 @@
+<html lang="en">
+<head>
+<title>trace - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="rollback.html#rollback" title="rollback">
+<link rel="next" href="current.html#current" title="current">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="trace"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="current.html#current">current</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="rollback.html#rollback">rollback</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.9 SGA Trace</h3>
+
+<p><a name="index-SGA-Trace-25"></a>
+This tool is used investigate the statements available in the SGA.
+
+   <div class="block-image"><img src="images/sgatrace.png" alt="images/sgatrace.png"></div>
+
+   <p>The session tool consists of a toolbar, a list of SGA statements ( see <a href="SGA-Statement.html#SGA-Statement">SGA Statement</a> ) and finally at the bottom a SGA statement view.
+
+<h4 class="subheading">Toolbar</h4>
+
+<p>The toolbar contain the following controls.
+
+     <dl>
+<dt><strong>Update</strong><dd>      Update the view from the database. 
+<br><dt><strong>Schema</strong><dd>      The user schema to extract statements for. 
+<br><dt><strong>Refresh time</strong><dd>      A list where you can select the interval between automatic updates. 
+<br><dt><strong>Type</strong><dd>      What type of statements you want to examine. Can either be SGA to investigate all entries of the SGA or Long operations to check long operations in the database (Databases must have timed statistics enabled to generate entries for long operations). 
+<br><dt><strong>Change connection</strong><dd>      Change the connection to administrate storage for.
+
+   </dl>
+
+   <p>Don't forget you can sort the view by selecting a column header in the SGA list.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/tuning.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/tuning.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/tuning.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,75 @@
+<html lang="en">
+<head>
+<title>tuning - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="prev" href="debugger.html#debugger" title="debugger">
+<link rel="next" href="security.html#security" title="security">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="tuning"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="security.html#security">security</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="debugger.html#debugger">debugger</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.4 Server Tuning</h3>
+
+<p><a name="index-Server-Tuning-20"></a>
+This tool provides easy access to important server indicators as well as server statistics and an editor for database parameters.
+
+   <div class="block-image"><img src="images/tuning.png" alt="images/tuning.png"></div>
+
+   <p>The interface for this tool is very simple. First there is a toolbar with the following controlls.
+
+     <dl>
+<dt><strong>Refresh</strong><dd>      Refresh data from the database, will not read another value for charts. 
+<br><dt><strong>Refresh rate</strong><dd>      The interval between which to auto update data, observe that setting this too low could put a high load on a database server. This is also the sample interval for charts. 
+<br><dt><strong>Change connection</strong><dd>      Change the connection to monitor in the tuning tool. 
+</dl>
+
+   <p>There are several tabs in the window.
+
+     <dl>
+<dt><strong>Overview</strong><dd>      Displays an overview of dtabase statistics, shows the flow of data through the server in an intuitive way. 
+<br><dt><strong>Charts</strong><dd>      Charts containing important performance information from the database. 
+<br><dt><strong>File I/O</strong><dd>      Displays information about I/O separated by tablespace or datafile. You can select if you want to see average wait time, blocks for tablespace or datafile by using the combobox at the top of the charts. 
+<br><dt><strong>Indicators</strong><dd>      Important performance indicators. 
+<br><dt><strong>Statistics</strong><dd>      Raw statistic information from the server. The statistics is shown in two columns, the first one contain the actual value, the second show the change in the value since the last update. 
+<br><dt><strong>parameters</strong><dd>      This tab displays the values of the parameters of the database. You can also use it to change the values by selecting a row and entering a new value at the bottom of the tab. After changes has been made you can apply or export these changes using the buttons in the toolbar at the top of the parameter editor.
+
+     <div class="block-image"><img src="images/pfileeditor.png" alt="images/pfileeditor.png"></div>
+          <dl>
+      <dt><strong>Generate p-file</strong><dd>      	Generate a p-file with the current changes (And original changes as well) into a memo editor(see <a href="Memo-editor.html#Memo-editor">Memo editor</a>). 
+      <br><dt><strong>Apply changes to system</strong><dd>      	Apply changes made to the system. 
+      <br><dt><strong>Apply changes to current session</strong><dd>      	Apply changes to the current session. Will only apply changes to the main connection and not any child sessions TOra might open for instance when statements are executed in the worksheet. 
+      </dl>
+
+     <br><dt><strong>Drop changes</strong><dd>      Drop the changes currently made to the parameters and revert to the current session settings. 
+<br><dt><strong>Options List</strong><dd>      List the options available in the database server. Licenses Display license information to the current database.
+
+   </dl>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/window.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/window.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/window.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,195 @@
+<html lang="en">
+<head>
+<title>window - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="workspace.html#workspace" title="workspace">
+<link rel="next" href="newconnection.html#newconnection" title="newconnection">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="window"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="newconnection.html#newconnection">newconnection</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="workspace.html#workspace">workspace</a>
+<hr>
+</div>
+
+<h3 class="section">3.1 Elements of the main window</h3>
+
+<p><a name="index-Elements-of-the-main-window-4"></a>
+The main window in TOra has the following elements as shown below. It is assumes you know how to handle a normal windows interface and no explanation about how to press buttons, select menus will be presented. If you are administrating Oracle you probably know how to handle a mouse.
+
+   <div class="block-image"><img src="images/workspace.png" alt="images/workspace.png"></div>
+
+<h4 class="subheading">Menubar</h4>
+
+<p>If you've ever used a windows program you will recognize most of the menus hopefully.
+
+<h5 class="subsubheading">File menu</h5>
+
+<div class="block-image"><img src="images/filemenu.png" alt="images/filemenu.png"></div>
+
+     <dl>
+<dt><strong>New connection</strong><dd>      This will pop up the new connection dialog (see <a href="newconnection.html#newconnection">Connecting to a database</a>) which is used to open new connections to oracle. 
+<br><dt><strong>Close connection</strong><dd>      Will close the current connection to Oracle. If uncommitted data exists it will also ask if you want to commit or rollback the changes. Observe that any tools associated with this connection will also be closed when closing a connection. 
+<br><dt><strong>Commit connection</strong><dd>      Commit the changes currently made to the database. 
+<br><dt><strong>Rollback connection</strong><dd>      Rollback any changes made in the current connection. 
+<br><dt><strong>Current connection</strong><dd>      Set focus to change the current connection. 
+<br><dt><strong>Reread object cache</strong><dd>      Clear the object cache
+<!-- (@pxref{object_cache, Object cache}) -->
+and read it again from the database. 
+<br><dt><strong>Load</strong><dd>      This command will open a dialog asking you for a filename to load into the editor that currently holds the focus. 
+<br><dt><strong>Save</strong><dd>      	This command will open a dialog asking you for a filename to save the contents of the editor that currently holds the focus. If the editor already has a filename this will be used and no dialog displayed. 
+<br><dt><strong>Save As</strong><dd>      This command will open a dialog asking you for a filename to save the contents of the editor that currently holds the focus. 
+<br><dt><strong>Print</strong><dd>      Will print the contents of the list or editor that currently holds the focus
+<br><dt><strong>Quit</strong><dd>      Close all connections and exit TOra
+</dl>
+
+<h5 class="subsubheading">Edit menu</h5>
+
+<div class="block-image"><img src="images/editmenu.png" alt="images/editmenu.png"></div>
+
+     <dl>
+<dt><strong>Undo</strong><dd>      Undo the latest change in the editor that currently holds the focus. 
+<br><dt><strong>Redo</strong><dd>      Redo a previous undo of the latest change in the editor that currently holds the focus. 
+<br><dt><strong>Copy</strong><dd>      Copy the current selection in the editor that currently holds the focus. 
+<br><dt><strong>Cut</strong><dd>      Cut the current selection in the editor that currently holds the focus. 
+<br><dt><strong>Paste</strong><dd>      Paste the contents of the clipboard into the editor that currently holds the focus. 
+<br><dt><strong>Search &amp; Replace</strong><dd>      Display the search &amp; replace dialog (see <a href="searchreplace.html#searchreplace">Search &amp; Replace</a>). 
+<br><dt><strong>Search Next</strong><dd>      Make another search with the current search settings. 
+<br><dt><strong>Select All</strong><dd>      Select all rows in the current editor. 
+<br><dt><strong>Read All Items</strong><dd>      Read all items available for a list. Normally TOra doesn't read all available rows for a query, just enough to fill the screen. Scrolling down will read more. Selecting this will read all available rows from the query, this could take a very long time and consume a lot of memory if selected for a large query result. 
+<br><dt><strong>Options</strong><dd>      	Displays the options dialog (see <a href="preferences.html#preferences">Options</a>) where all aspects of TOra are configured. 
+<br><dt><strong>Edit SQL</strong><dd>      This may not be available because it is actually a tool plugin. Can be used to customize SQL used by TOra to determine the state of a database(see <a href="sqledit.html#sqledit">SQL Editor</a>).
+
+   </dl>
+
+<h5 class="subsubheading">Tools menu</h5>
+
+<div class="block-image"><img src="images/toolsmenu.png" alt="images/toolsmenu.png"></div>
+
+   <p>The entries of this menu start up new tools for the current connection (See connection management for more information about current connections). The contents of the menu may vary depending on which plugins are loaded.
+
+   <p><strong>Tool specific menu</strong>
+
+   <p>There may be a tool specific menu entered between the Tools and Windows menus (In the screenshot it is called Worksheet). These are described in connection to the tools that display them.
+
+<h5 class="subsubheading">Windows menu</h5>
+
+<div class="block-image"><img src="images/windowsmenu.png" alt="images/windowsmenu.png"></div>
+
+     <dl>
+<dt><strong>Close</strong><dd>      Close the current tool window. 
+<br><dt><strong>Close All</strong><dd>      Close all open windows. This will not close any database connections, only windows. 
+<br><dt><strong>Cascade</strong><dd>      Cascade the open windows over the workspace
+<br><dt><strong>Tile</strong><dd>      Tile the open windows over the workspace
+<br><dt><strong>Open windows</strong><dd>      Here windows will line up in a list in the same order as you open them.
+
+   </dl>
+
+<h5 class="subsubheading">Help menu</h5>
+
+<div class="block-image"><img src="images/helpmenu.png" alt="images/helpmenu.png"></div>
+
+     <dl>
+<dt><strong>Current Context</strong><dd>      This will display a help page on the context you are currently in. If no specific context is found the table of contents is shown. 
+<br><dt><strong>Content</strong><dd>      Open the help window displaying the contents of the TOra help. 
+<br><dt><strong>About TOra</strong><dd>      Display information about TOra copyrigh. 
+<br><dt><strong>License</strong><dd>      Display the license under which TOra is distributed. 
+<br><dt><strong>Quotes</strong><dd>      Food for thought. 
+</dl>
+
+<h4 class="subheading">Application toolbar</h4>
+
+<p>Using the toolbar you can perform the most common editing operations, handle your connections and open tool windows.
+
+   <div class="block-image"><img src="images/toolbar.png" alt="images/toolbar.png"></div>
+
+<h4 class="subheading">Editor buttons</h4>
+
+     <dl>
+<dt><strong>Load</strong><dd>      This command will open a dialog asking you for a filename to load into the editor that currently holds the focus. 
+<br><dt><strong>Save</strong><dd>      This command will open a dialog asking you for a filename to save the contents of the editor that currently holds the focus. If the editor already has a filename this will be used and no dialog displayed. 
+<br><dt><strong>Print</strong><dd>      Will print the contents of the list or editor that currently holds the focus
+<br><dt><strong>Undo</strong><dd>      Undo the latest change in the editor that currently holds the focus. 
+<br><dt><strong>Redo</strong><dd>      Redo a previous undo of the latest change in the editor that currently holds the focus. 
+<br><dt><strong>Copy</strong><dd>      Copy the current selection the in editor that currently holds the focus. 
+<br><dt><strong>Cut</strong><dd>      Cut the current selection the in editor that currently holds the focus. 
+<br><dt><strong>Paste</strong><dd>      Paste the contents of the clipboard into the editor that currently holds the focus. 
+</dl>
+
+<h4 class="subheading">Tools</h4>
+
+<p>The buttons in this section can vary depending on which plugins were loaded at startup, they are described in the tools section (see <a href="tools.html#tools">Available tools</a>) of the help. What is notable here is that when a button is pressed it is started for the currently selected connection available at the end of the application toolbar.
+
+<h4 class="subheading">Connection management</h4>
+
+<p>All the buttons in this section have one thing in common. Except for the new connection they all operate on the currently selected connection. The currently open connections are available in a drop down list at the right of the toolbar. The selected item in this list is the connection that new tools will be working on and also any commit, rollback or close connection command.
+
+   <p>The numbers behind the actual connection is the version of the Oracle server that this connection is made to.
+
+     <dl>
+<dt><strong>New connection</strong><dd>      This will pop up the new connection (see <a href="newconnection.html#newconnection">Connecting to a database</a>) dialog which is used to open new connections to oracle. 
+<br><dt><strong>Close connection</strong><dd>      Will close the current connection to Oracle. If uncommitted data exists it will also ask if you want to commit or rollback the changes. Observe that any tools associated with this connection will also be closed when closing a connection. 
+<br><dt><strong>Commit connection</strong><dd>      Commit the changes currently made to the database. 
+<br><dt><strong>Rollback connection</strong><dd>      Rollback any changes made in the current connection. 
+</dl>
+
+<h4 class="subheading">Other items in the workspace</h4>
+
+<p>There are a few other items on the workspace that are worth taking notice of.
+
+<h5 class="subsubheading">Statusbar</h5>
+
+<p>This will display any messages that TOra need to inform the user of. TOra generally takes the path of not bothering the user with pop ups when something goes wrong, but simply display it in the statusbar. Or at least that was my intention. Due to the fact that many people had problems understanding this the default behaviour of TOra is now to pop up a dialog displaying the error. However this dialog contains a checkbox to revert back to the old productive manner. So if something isn't working, make sure you check the statusbar if something went wrong.
+
+   <p>There is an up button available to the right of the toolbar which when pressed can display a history of the contents of the status bar. This is also useful since the statusbar usually clears after certain amount of time but the information is always available here. Both the time until a message disappears and the amount of backlog to keep is configurable from the option dialog (see <a href="preferences.html#preferences">Options</a>). If you select an item in the popup menu the contents of the entry will be opened in a memo editor (see <a href="Memo-editor.html#Memo-editor">Memo editor</a>) where you can read them more easily and also copy the text more easily.
+
+   <p>Next to the right is the coordinates of the editor that currently has the focus.
+
+   <p>Fursthest to the right is swirling logo which will move whenever TOra is doing something in the background to indicate that the database is still busy performing some kind of operation in the background. The speed of the animation will reflect the number of background tasks that are currently running.
+
+<h5 class="subsubheading">Tool windows</h5>
+
+<p>These are the tools that actually let you interact with Oracle. For more information check out the tools section (see <a href="tools.html#tools">Available tools</a>) of the help. One thing to note about tool windows is that if the caption ends with a &lt; digit &gt; this is the digit that you can use together with the control modifier to select this window.
+
+<h5 class="subsubheading">Workspace</h5>
+
+<p>The part of the main window that contain the tool windows.
+
+<h5 class="subsubheading">Editors</h5>
+
+<p>For more information about key bindings etc. see <a href="editors.html#editors">Using editors</a>.
+
+<h5 class="subsubheading">Result List</h5>
+
+<p>These mean every kind of list displayed in TOra. For information about how to interact with these, see <a href="lists.html#lists">Using lists</a>.
+
+<h5 class="subsubheading">Charts</h5>
+
+<p>Used to visualize data, usually some kind of database statistics. There are no charts in the example window above, see <a href="Using-charts.html#Using-charts">Using charts</a>.
+
+<h5 class="subsubheading">Object Cache</h5>
+
+<p>When TOra opens a new connection to a database the database connected to is queried for all its objects and the synonyms available. This data is then used in most places when lists of objects are displayed. The thing to understand is that this data is cached so that any objects modified during the connection will not be visible unless you clear the cache and reread it from the database. As long as the object cache is read you can see the <strong>background activity</strong> swirling in the right part of the status bar.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/worksheet.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/worksheet.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/worksheet.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,171 @@
+<html lang="en">
+<head>
+<title>worksheet - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="up" href="tools.html#tools" title="tools">
+<link rel="next" href="browser.html#browser" title="browser">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="worksheet"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="browser.html#browser">browser</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="tools.html#tools">tools</a>
+<hr>
+</div>
+
+<h3 class="section">4.1 SQL Worksheet</h3>
+
+<p><a name="index-SQL-Worksheet-17"></a>
+This tool provides a way to execute arbitrary SQL or PL/SQL code and also investigate how it is execute and it's resource consumption.
+
+   <div class="block-image"><img src="images/worksheet.png" alt="images/worksheet.png"></div>
+
+   <p>The worksheet is split into two panes. The upper one is the editor where you enter the queries you want to run. 
+In the lower you can investigate the result.
+
+<h4 class="subheading">Toolbar &amp; menu</h4>
+
+<p>There is a toolbar and a tool menu available for the worksheet. They both contain the following commands.
+
+     <dl>
+<dt><strong>Execute Current</strong><dd>      This executes the statement you current are within or after. When executed the statement executed will be highlighted in the editor. 
+      The keyboard shortcut is <strong>CTRL-Return</strong>. 
+<br><dt><strong>Execute All</strong><dd>      Execute all the statements in the editor. You get no result from the execution, the statement is simply executed. 
+      You can investigate the success of the commands in the <strong>Logging</strong> pane of the result. The keyboard shortcut is <strong>F8</strong>. 
+<br><dt><strong>Execute Next</strong><dd>      This does exactly the same as the <strong>execute current</strong> command with one difference. If the cursor is after the last ;
+      of the statement and before the first non whitespace character of the next statement this command will execute the next statement
+      when the other command will execute the previous statement. The keyboard shortcut is <strong>F9</strong>. 
+<br><dt><strong>Execute Newline Separated</strong><dd>      Execute a statement that is separated by two newlines instead of the normal ';' character. 
+      Could be useful for people who are familiar with some other Oracle tools. The keyboard shortcut is <strong>SHIFT+F9</strong>. 
+      Only available in the menu, not in the toolbar. 
+<br><dt><strong>Refresh</strong><dd>      This will re-execute the last executed statement. The keyboard shortcut is <strong>F5</strong>. 
+<br><dt><strong>Describe under cursor</strong><dd>      Describe the table currently under the cursor. The keyboard shortcut is <strong>F4</strong>. 
+<br><dt><strong>Enable Statistics</strong><dd>      Enable or disable collecting statistics when running the statements. 
+      This will cause TOra to execute at least two extra queries for every statement executed when enabled. 
+      Next to this button in the toolbar is a combo box in which you can choose the refreshtime for the charts in the statistics pane. 
+<br><dt><strong>Stop execution</strong><dd>      Abort execution of the currently running query. This will not work in Windows where the query will keep running in the background until the first row of the query is returned and consume server resources before it is aborted. When you execute a new statement the current execution will be aborted. 
+<br><dt><strong>Execute Saved SQL</strong><dd>      Execute the latest selected saved SQL. For more information see saved SQL. Keyboard shortcut is <strong>F7</strong>. 
+      This is not available in the toolbar. 
+<br><dt><strong>Select Saved SQL</strong><dd>      Popup menu containing saved SQL. For more information see saved SQL. Keyboard shortcut is <strong>CTRL+SHIFT+S</strong>. 
+<br><dt><strong>Save last SQL</strong><dd>      Save the most recently executed SQL to the saved SQL list. When pressed will ask for the name to save the SQL under. If ':' is entered in this name it will separate into submenues on the colon. 
+<br><dt><strong>Edit Saved SQL</strong><dd>      Open the SQL editor to edit saved SQL. For more information see saved SQL. Only available in menu, not in toolbar. 
+<br><dt><strong>Previous Log Entry</strong><dd>      Display the result of the previous entry in the log. If result caching is on in the settings the previous result is displayed,
+      if it isn't the statement is reexecuted to generate the result. Keyboard shortcut is <strong>ALT+Up</strong>. 
+      Only available in menu, not in toolbar. 
+<br><dt><strong>Next Log Entry</strong><dd>      Display the result of the next entry in the log. If result caching is on in the settings the next result is displayed,
+      if it isn't the statement is reexecuted to generate the result. Keyboard shortcut is <strong>ALT+Down</strong>. Only available in menu, not in toolbar. 
+<br><dt><strong>Erase Log</strong><dd>      Erase the contents of the rows under the <strong>Logging</strong> pane of the result. 
+<br><dt><strong>Current duration</strong><dd>      While a query is currently executing you can see how long the query has been running in the right of the toolbar as a slowly ticking up the seconds. This clock will not stop when the first row is returned but run until all rows are read or the query is aborted. Moving the cursor over this label will also display a tooltip containing the SQL currently executing. 
+<br><dt><strong>Change connection</strong><dd>      Change the connection this tool window should operate on.
+
+   </dl>
+
+<h4 class="subheading">Using the worksheet editor</h4>
+
+<p>TOra uses a ; to separate statements in the same way as SQL*Plus. One difference is that TOra doesn't count whitespaces in any way to separate statements. You could write several statements on the same row and it wouldn't be a problem.
+
+   <p>Another difference to SQL*Plus is that TOra parses the SQL you write to determine if you are within a PL/SQL block. 
+If that is the case the entire block will be executed. This feature can be enabled or disabled in the options.
+
+<pre class="example"><pre class="verbatim">     
+     
+     SELECT * FROM dual; SELECT * FROM all_tables;
+     
+     BEGIN
+        DBMS_OUTPUT.PUT_LINE('Hello');
+     END;
+     
+</pre>
+</pre>
+   <p>In the example above there are three statements that TOra will recognize and execute.
+
+   <p>There are a few words that are treated as comments for compatibility with SQL*Plus scripts. They are <strong>&ndash;</strong>, <strong>REM</strong> and <strong>PROMPT</strong>. Comments will disregard whatever is to the right on the line. Also multi line /* ... */ style comments are recognised and ignored.
+
+   <p>You can also use bind variables in the worksheet by using the normal : character. (see <a href="Getting-bind-parameters.html#Getting-bind-parameters">Getting bind parameters</a>for more information how this works). One nice feature is that the first line retrieved from the result set is stored in the parameter cache with a bind name the same as the column name in lowercase. The example in the getting bind parameters could have been used directly after executing the line select * from essprc and get the second row in the table by just using the defaults of the bind dialog if essprc contains a column named prcid.
+
+   <p>You can also describe objects returned as in PL/SQL by using either <strong>DESC</strong> or <strong>DESCRIBE</strong> and an object name.
+
+<h4 class="subheading">Exploring the result</h4>
+
+<p>There are five different panes available with information about the executed statements.
+
+   <p><table summary="">
+<tr align="left"><td valign="top" width="10%"><strong>Result</strong> </td><td valign="top" width="90%">This contains the actual result of the query or describe. For some notes about descriptions see this note.
+
+<p><br></td></tr><tr align="left"><td valign="top" width="10%"><strong>Visualize</strong> </td><td valign="top" width="90%">
+Can be used to visualize the current content of the result. The first column is assumes to contain labels and the rest contain the data.
+
+<div class="block-image"><img src="images/visualize.png" alt="images/visualize.png"></div>
+
+   <p>The toolbar available contains the following controls.
+
+     <dl>
+<dt><strong>Chart type</strong><dd>      What kind of chart to generate. Available types are Bar Chart, Line Chart and Pie Chart. 
+<br><dt><strong>Display Legend</strong><dd>      Display chart legend on the right of the generated chart. 
+<br><dt><strong>Display Grid</strong><dd>      Display a grid in the generated chart. 
+<br><dt><strong>Display Axis Legend</strong><dd>      Display legends of the axises of the generated chart. 
+<br><dt><strong>Update chart</strong><dd>      Generate a chart of the current data in the result tab and the current settings.
+
+   </dl>
+   <p><br></td></tr><tr align="left"><td valign="top" width="10%"><strong>Execution plan</strong> </td><td valign="top" width="90%">
+      The execution plan(see <a href="Explain-plan.html#Explain-plan">Explain plan</a>) of the current statement. 
+<br></td></tr><tr align="left"><td valign="top" width="10%"><strong>Information</strong> </td><td valign="top" width="90%">
+      The information available about the current statement in the SGA. 
+<br></td></tr><tr align="left"><td valign="top" width="10%"><strong>Statistics</strong> </td><td valign="top" width="90%">
+      The statistics collected when this statement was run. You need to enable statistics for this to be enabled. 
+      To update the statistic view simply change to another tab and change back to statistics. 
+      Chart are updated at the interval specified in the toolbar regardless of if you refresh statistics or not. 
+<br></td></tr><tr align="left"><td valign="top" width="10%"><strong>Logging</strong> </td><td valign="top" width="90%">
+      This pane will display the history of the statements you have executed and their result. 
+      It can be sorted up or down depending on options. You can see the statement, it's result and the time (As recorded by the database)
+      when it was executed. You can also see how many seconds until the first row was received. 
+      A new statement isn't added to the log until the first row of the query is returned or the statement has executed, whichever comes first.
+
+   <br></td></tr></table>
+
+<h4 class="subheading">Options</h4>
+
+<p>There are quite a few options available for the worksheet.
+
+   <div class="block-image"><img src="images/worksheetsetup.png" alt="images/worksheetsetup.png"></div>
+
+     <dl>
+<dt><strong>Auto save</strong><dd>      If checked the worksheet will always save changes to the editor <strong>without asking</strong> when the window is closed. 
+<br><dt><strong>Ask about saving changes</strong><dd>      Ask about saving changes to the worksheet when it is modified. Selecting the <strong>Auto save</strong> have precedence over this option. 
+<br><dt><strong>Add log entries at end</strong><dd>      If checked new entries in the <strong>Logging</strong> pane will be added to the end of list, otherwise they will be added at the top. 
+<br><dt><strong>Multiple lines in log</strong><dd>      If checked the lines in the log will display all the lines of the SQL executed. If not checked only the first line is displayed, although you can still see all of it in the tooltip or editor if you want to. For more information(see <a href="lists.html#lists">Using lists</a>). 
+<br><dt><strong>Parse PL/SQL blocks</strong><dd>      If this is checked TOra will parse the text to determine PL/SQL blocks in the editor and execute them as one statement. If it isn't checked statements are strictly separated by ;. 
+<br><dt><strong>Enable statistics</strong><dd>      Indicates if statistics should be enabled or disabled as default when a new worksheet is opened. 
+<br><dt><strong>Enable timed statistics</strong><dd>      Set this to make TOra always enable timed statistics for the sessions that it is collecting statistics for. Observe that timed statistics will not be disabled after the worksheet is closed. The change is strictly for the current session though. 
+<br><dt><strong>Display number column</strong><dd>      Indicate whether or not to display the number column as the first column of the result or suppress it. 
+<br><dt><strong>Move cursor to error</strong><dd>      Move the cursor to the location of an error in an execute statement. 
+<br><dt><strong>Save previous result</strong><dd>      Save the results of all previous statements. This can consume a lot of memory, but will increase time to navigate history results. You can still clear this cache by erasing the log. 
+<br><dt><strong>Default file</strong><dd>      A filename to open automatically when you start a new worksheet. Choose the <strong>Browse</strong> button to select the file in a file dialog.
+
+   </dl>
+
+<h4 class="subheading">Saved SQL</h4>
+
+<p>This is a feature you can use to quickly access SQL you often use. This is a popupmenu accessible in the toolbar of a worksheet. This popup will display all the SQL under "toWorksheet:" in the SQL dictionary(see <a href="sqledit.html#sqledit">SQL Editor</a>). You can create submenues by adding a ":" character in the SQL name. The name of the SQL dictionary is what is used to generate the menu and not the description. You can still use placebinders in saved SQL. By default this list is empty.
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora/workspace.html
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora/workspace.html	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora/workspace.html	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,64 @@
+<html lang="en">
+<head>
+<title>workspace - TOra</title>
+<meta http-equiv="Content-Type" content="text/html">
+<meta name="description" content="TOra">
+<meta name="generator" content="makeinfo 4.8">
+<link title="Top" rel="start" href="index.html#Top">
+<link rel="prev" href="history.html#history" title="history">
+<link rel="next" href="tools.html#tools" title="tools">
+<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
+<!--
+This manual is for TOra, version 1.3.22.-->
+<meta http-equiv="Content-Style-Type" content="text/css">
+<style type="text/css"><!--
+  pre.display { font-family:inherit }
+  pre.format  { font-family:inherit }
+  pre.smalldisplay { font-family:inherit; font-size:smaller }
+  pre.smallformat  { font-family:inherit; font-size:smaller }
+  pre.smallexample { font-size:smaller }
+  pre.smalllisp    { font-size:smaller }
+  span.sc    { font-variant:small-caps }
+  span.roman { font-family:serif; font-weight:normal; } 
+  span.sansserif { font-family:sans-serif; font-weight:normal; } 
+--></style>
+</head>
+<body>
+<div class="node">
+<p>
+<a name="workspace"></a>
+Next:&nbsp;<a rel="next" accesskey="n" href="tools.html#tools">tools</a>,
+Previous:&nbsp;<a rel="previous" accesskey="p" href="history.html#history">history</a>,
+Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a>
+<hr>
+</div>
+
+<h2 class="chapter">3 Getting to know your workspace</h2>
+
+<p><a name="index-Getting-to-know-your-workspace-3"></a>
+This section will help you familiarize yourself with the framework of the TOra application which is common to all tools in the toolkit.
+
+<!-- @itemize @bullet -->
+<!-- @item @uref{window.html,Elements of the main window} -->
+<!-- @item @uref{newconnection.html,Connecting to a database} -->
+<!-- @item @uref{editors.html,Using editors} -->
+<!-- @item @uref{lists.html,Using lists} -->
+<!-- @item @uref{charts.html,Using charts} -->
+<!-- @item @uref{searchreplace.html,Search & replace} -->
+<!-- @item @uref{preferences.html,Options} -->
+<!-- @item @uref{common.html,Other common elements} -->
+<!-- @end itemize -->
+<ul class="menu">
+<li><a accesskey="1" href="window.html#window">Elements of the main window</a>
+<li><a accesskey="2" href="newconnection.html#newconnection">Connecting to a database</a>
+<li><a accesskey="3" href="What-privileges-do-you-need-to-run-TOra.html#What-privileges-do-you-need-to-run-TOra">What privileges do you need to run TOra</a>
+<li><a accesskey="4" href="editors.html#editors">Using editors</a>
+<li><a accesskey="5" href="lists.html#lists">Using lists</a>
+<li><a accesskey="6" href="Using-charts.html#Using-charts">Using charts</a>
+<li><a accesskey="7" href="searchreplace.html#searchreplace">Search &amp; Replace</a>
+<li><a accesskey="8" href="preferences.html#preferences">Options</a>
+<li><a accesskey="9" href="common.html#common">Other common elements</a>
+</ul>
+
+   </body></html>
+

Added: kde-extras/tora/branches/upstream/current/doc/help/tora.info
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/doc/help/tora.info
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/doc/help/tora.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tora.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tora.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,81 @@
+
+\input texinfo @c -*-texinfo-*-
+ at c %**start of header
+
+ at setfilename tora.info
+ at settitle TOra 
+ at c @image{images/tora_manual}
+ at c %**end of header
+
+ at copying
+This manual is for TOra, version 1.3.22.
+ at end copying
+
+ at titlepage
+ at title TOra
+ at page
+ at vskip 0pt plus 1filll
+ at insertcopying
+ at end titlepage
+
+ at c Output the table of the contents at the beginning.
+ at contents
+
+ at ifnottex
+ at node Top
+ at top TOra Manual 1.3.22
+
+ at insertcopying
+
+ at end ifnottex
+
+ at menu
+* Using the help browser: help.
+* History of TOra: history.
+* Getting to know your workspace: workspace.
+* Available tools: tools.
+* Extending TOra: extendingtora.
+* Index:: Complete index.
+ at end menu
+
+ at include help.texi
+ at include history.texi
+ at include workspace.texi
+ at include window.texi
+ at include newconnection.texi
+ at include editors.texi
+ at include lists.texi
+ at include charts.texi
+ at include searchreplace.texi
+ at include preferences.texi
+ at include database.texi
+ at include fonts.texi
+ at include additionalhelp.texi
+ at include toolsetting.texi
+ at include common.texi
+ at include tools.texi
+ at include worksheet.texi
+ at include browser.texi
+ at include debugger.texi
+ at include tuning.texi
+ at include security.texi
+ at include storage.texi
+ at include session.texi
+ at include rollback.texi
+ at include trace.texi
+ at include current.texi
+ at include script.texi
+ at include analyze.texi
+ at include alert.texi
+ at include invalid.texi
+ at include output.texi
+ at include template.texi
+ at include sqledit.texi
+ at include extendingtora.texi
+ at include api.texi
+ at include externalapi.texi
+ at node Index
+ at unnumbered Index
+ at printindex cp
+ at bye
+

Added: kde-extras/tora/branches/upstream/current/doc/help/trace.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/trace.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/trace.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,31 @@
+ at node trace
+ at section SGA Trace
+ at cindex SGA Trace
+
+This tool is used investigate the statements available in the SGA.
+
+ at image{images/sgatrace}
+
+The session tool consists of a toolbar, a list of SGA statements ( @pxref{SGA Statement} ) and finally at the bottom a SGA statement view.
+
+ at subheading Toolbar
+
+The toolbar contain the following controls.
+
+
+ at table @asis
+
+ at item @strong{Update}
+      Update the view from the database.	
+ at item @strong{Schema}
+      The user schema to extract statements for.	
+ at item @strong{Refresh time}
+      A list where you can select the interval between automatic updates.	
+ at item @strong{Type}
+      What type of statements you want to examine. Can either be SGA to investigate all entries of the SGA or Long operations to check long operations in the database (Databases must have timed statistics enabled to generate entries for long operations).	
+ at item @strong{Change connection}
+      Change the connection to administrate storage for.
+
+ at end table
+
+Don't forget you can sort the view by selecting a column header in the SGA list.

Added: kde-extras/tora/branches/upstream/current/doc/help/tuning.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/tuning.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/tuning.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,54 @@
+ at node tuning
+ at section Server Tuning
+ at cindex Server Tuning
+
+This tool provides easy access to important server indicators as well as server statistics and an editor for database parameters.
+
+ at image{images/tuning}
+
+The interface for this tool is very simple. First there is a toolbar with the following controlls.
+
+
+ at table @asis
+
+ at item @strong{Refresh}
+      Refresh data from the database, will not read another value for charts.	
+ at item @strong{Refresh rate}
+      The interval between which to auto update data, observe that setting this too low could put a high load on a database server. This is also the sample interval for charts.	
+ at item @strong{Change connection}
+      Change the connection to monitor in the tuning tool.
+ at end table
+
+There are several tabs in the window.
+
+ at table @asis
+
+ at item @strong{Overview}
+      Displays an overview of dtabase statistics, shows the flow of data through the server in an intuitive way.
+ at item @strong{Charts}
+      Charts containing important performance information from the database.	
+ at item @strong{File I/O}
+      Displays information about I/O separated by tablespace or datafile. You can select if you want to see average wait time, blocks for tablespace or datafile by using the combobox at the top of the charts.	
+ at item @strong{Indicators}
+      Important performance indicators.	
+ at item @strong{Statistics}
+      Raw statistic information from the server. The statistics is shown in two columns, the first one contain the actual value, the second show the change in the value since the last update.	
+ at item @strong{parameters}
+      This tab displays the values of the parameters of the database. You can also use it to change the values by selecting a row and entering a new value at the bottom of the tab. After changes has been made you can apply or export these changes using the buttons in the toolbar at the top of the parameter editor.
+
+      @image{images/pfileeditor}
+      @table @asis    
+      @item @strong{Generate p-file}
+      	Generate a p-file with the current changes (And original changes as well) into a memo editor(@pxref{Memo editor}).	
+      @item @strong{Apply changes to system}
+      	Apply changes made to the system.	
+      @item @strong{Apply changes to current session}
+      	Apply changes to the current session. Will only apply changes to the main connection and not any child sessions TOra might open for instance when statements are executed in the worksheet.
+      @end table
+
+ at item @strong{Drop changes}
+      Drop the changes currently made to the parameters and revert to the current session settings.	
+ at item @strong{Options List}
+      List the options available in the database server. Licenses Display license information to the current database.
+
+ at end table

Added: kde-extras/tora/branches/upstream/current/doc/help/window.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/window.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/window.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,209 @@
+ at node window
+ at section Elements of the main window
+ at cindex Elements of the main window
+
+The main window in TOra has the following elements as shown below. It is assumes you know how to handle a normal windows interface and no explanation about how to press buttons, select menus will be presented. If you are administrating Oracle you probably know how to handle a mouse.
+
+ at image{images/workspace}
+
+ at subheading Menubar
+
+If you've ever used a windows program you will recognize most of the menus hopefully.
+
+ at subsubheading File menu
+
+ at image{images/filemenu}
+
+ at table @asis
+
+ at item @strong{New connection}
+      This will pop up the new connection dialog (@pxref{newconnection,Connecting to a database}) which is used to open new connections to oracle. 	
+ at item @strong{Close connection}
+      Will close the current connection to Oracle. If uncommitted data exists it will also ask if you want to commit or rollback the changes. Observe that any tools associated with this connection will also be closed when closing a connection.	
+ at item @strong{Commit connection}
+      Commit the changes currently made to the database.	
+ at item @strong{Rollback connection}
+      Rollback any changes made in the current connection.	
+ at item @strong{Current connection}
+      Set focus to change the current connection.	
+ at item @strong{Reread object cache}
+      Clear the object cache 
+ at c (@pxref{object_cache, Object cache}) 
+and read it again from the database.	
+ at item @strong{Load}
+      This command will open a dialog asking you for a filename to load into the editor that currently holds the focus.	
+ at item @strong{Save}
+      	This command will open a dialog asking you for a filename to save the contents of the editor that currently holds the focus. If the editor already has a filename this will be used and no dialog displayed. 	
+ at item @strong{Save As}
+      This command will open a dialog asking you for a filename to save the contents of the editor that currently holds the focus.	
+ at item @strong{Print}
+      Will print the contents of the list or editor that currently holds the focus	
+ at item @strong{Quit}
+      Close all connections and exit TOra
+ at end table
+
+ at subsubheading Edit menu
+
+ at image{images/editmenu}
+
+ at table @asis
+
+ at item @strong{Undo}
+      Undo the latest change in the editor that currently holds the focus.	
+ at item @strong{Redo}
+      Redo a previous undo of the latest change in the editor that currently holds the focus.	
+ at item @strong{Copy}
+      Copy the current selection in the editor that currently holds the focus.	
+ at item @strong{Cut}
+      Cut the current selection in the editor that currently holds the focus.	
+ at item @strong{Paste}
+      Paste the contents of the clipboard into the editor that currently holds the focus.	
+ at item @strong{Search & Replace}
+      Display the search & replace dialog (@pxref{searchreplace, Search & Replace}).	
+ at item @strong{Search Next}
+      Make another search with the current search settings.	
+ at item @strong{Select All}
+      Select all rows in the current editor.	
+ at item @strong{Read All Items}
+      Read all items available for a list. Normally TOra doesn't read all available rows for a query, just enough to fill the screen. Scrolling down will read more. Selecting this will read all available rows from the query, this could take a very long time and consume a lot of memory if selected for a large query result.	
+ at item @strong{Options}
+      	Displays the options dialog (@pxref{preferences,Options}) where all aspects of TOra are configured.	
+ at item @strong{Edit SQL}
+      This may not be available because it is actually a tool plugin. Can be used to customize SQL used by TOra to determine the state of a database(@pxref{sqledit, SQL Editor}).
+
+ at end table
+
+
+ at subsubheading Tools menu
+
+ at image{images/toolsmenu}
+
+The entries of this menu start up new tools for the current connection (See connection management for more information about current connections). The contents of the menu may vary depending on which plugins are loaded.
+
+ at strong{Tool specific menu}
+
+There may be a tool specific menu entered between the Tools and Windows menus (In the screenshot it is called Worksheet). These are described in connection to the tools that display them.
+
+ at subsubheading Windows menu
+
+ at image{images/windowsmenu}
+
+ at table @asis
+
+ at item @strong{Close}
+      Close the current tool window.	
+ at item @strong{Close All}
+      Close all open windows. This will not close any database connections, only windows.	
+ at item @strong{Cascade}
+      Cascade the open windows over the workspace	
+ at item @strong{Tile}
+      Tile the open windows over the workspace	
+ at item @strong{Open windows}
+      Here windows will line up in a list in the same order as you open them.
+
+ at end table
+
+ at subsubheading Help menu
+
+ at image{images/helpmenu}
+
+ at table @asis
+
+ at item @strong{Current Context}
+      This will display a help page on the context you are currently in. If no specific context is found the table of contents is shown.	
+ at item @strong{Content}
+      Open the help window displaying the contents of the TOra help.	
+ at item @strong{About TOra}
+      Display information about TOra copyrigh.	
+ at item @strong{License}
+      Display the license under which TOra is distributed.	
+ at item @strong{Quotes}
+      Food for thought.
+ at end table
+
+ at subheading Application toolbar
+
+Using the toolbar you can perform the most common editing operations, handle your connections and open tool windows.
+
+ at image{images/toolbar}
+
+ at subheading Editor buttons
+
+ at table @asis
+
+ at item @strong{Load}
+      This command will open a dialog asking you for a filename to load into the editor that currently holds the focus.	
+ at item @strong{Save}
+      This command will open a dialog asking you for a filename to save the contents of the editor that currently holds the focus. If the editor already has a filename this will be used and no dialog displayed. 	
+ at item @strong{Print}
+      Will print the contents of the list or editor that currently holds the focus	
+ at item @strong{Undo}
+      Undo the latest change in the editor that currently holds the focus.	
+ at item @strong{Redo}
+      Redo a previous undo of the latest change in the editor that currently holds the focus.	
+ at item @strong{Copy}
+      Copy the current selection the in editor that currently holds the focus.	
+ at item @strong{Cut}
+      Cut the current selection the in editor that currently holds the focus.	
+ at item @strong{Paste}
+      Paste the contents of the clipboard into the editor that currently holds the focus.
+ at end table
+
+ at subheading Tools
+
+The buttons in this section can vary depending on which plugins were loaded at startup, they are described in the tools section (@pxref{tools,Available tools}) of the help. What is notable here is that when a button is pressed it is started for the currently selected connection available at the end of the application toolbar.
+
+ at subheading Connection management
+
+All the buttons in this section have one thing in common. Except for the new connection they all operate on the currently selected connection. The currently open connections are available in a drop down list at the right of the toolbar. The selected item in this list is the connection that new tools will be working on and also any commit, rollback or close connection command.
+
+The numbers behind the actual connection is the version of the Oracle server that this connection is made to.
+
+ at table @asis
+ at item @strong{New connection}
+      This will pop up the new connection (@pxref{newconnection, Connecting to a database}) dialog which is used to open new connections to oracle. 	
+ at item @strong{Close connection}
+      Will close the current connection to Oracle. If uncommitted data exists it will also ask if you want to commit or rollback the changes. Observe that any tools associated with this connection will also be closed when closing a connection.	
+ at item @strong{Commit connection}
+      Commit the changes currently made to the database.	
+ at item @strong{Rollback connection}
+      Rollback any changes made in the current connection.
+ at end table
+
+ at subheading Other items in the workspace
+
+There are a few other items on the workspace that are worth taking notice of.
+
+ at subsubheading Statusbar
+
+This will display any messages that TOra need to inform the user of. TOra generally takes the path of not bothering the user with pop ups when something goes wrong, but simply display it in the statusbar. Or at least that was my intention. Due to the fact that many people had problems understanding this the default behaviour of TOra is now to pop up a dialog displaying the error. However this dialog contains a checkbox to revert back to the old productive manner. So if something isn't working, make sure you check the statusbar if something went wrong.
+
+There is an up button available to the right of the toolbar which when pressed can display a history of the contents of the status bar. This is also useful since the statusbar usually clears after certain amount of time but the information is always available here. Both the time until a message disappears and the amount of backlog to keep is configurable from the option dialog (@pxref{preferences,Options}). If you select an item in the popup menu the contents of the entry will be opened in a memo editor (@pxref{Memo editor}) where you can read them more easily and also copy the text more easily.
+
+Next to the right is the coordinates of the editor that currently has the focus.
+
+Fursthest to the right is swirling logo which will move whenever TOra is doing something in the background to indicate that the database is still busy performing some kind of operation in the background. The speed of the animation will reflect the number of background tasks that are currently running.
+
+ at subsubheading Tool windows
+
+These are the tools that actually let you interact with Oracle. For more information check out the tools section (@pxref{tools,Available tools}) of the help. One thing to note about tool windows is that if the caption ends with a < digit > this is the digit that you can use together with the control modifier to select this window.
+
+ at subsubheading Workspace
+
+The part of the main window that contain the tool windows.
+
+ at subsubheading Editors
+
+For more information about key bindings etc. @pxref{editors, Using editors}.
+
+ at subsubheading Result List
+
+These mean every kind of list displayed in TOra. For information about how to interact with these, @pxref{lists,Using lists}.
+
+ at subsubheading Charts
+
+Used to visualize data, usually some kind of database statistics. There are no charts in the example window above, @pxref{Using charts, Using charts}.
+
+
+ at subsubheading Object Cache
+When TOra opens a new connection to a database the database connected to is queried for all its objects and the synonyms available. This data is then used in most places when lists of objects are displayed. The thing to understand is that this data is cached so that any objects modified during the connection will not be visible unless you clear the cache and reread it from the database. As long as the object cache is read you can see the @strong{background activity} swirling in the right part of the status bar.

Added: kde-extras/tora/branches/upstream/current/doc/help/worksheet.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/worksheet.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/worksheet.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,176 @@
+ at node worksheet
+ at section SQL Worksheet
+ at cindex SQL Worksheet
+
+This tool provides a way to execute arbitrary SQL or PL/SQL code and also investigate how it is execute and it's resource consumption.
+
+ at image{images/worksheet}
+
+The worksheet is split into two panes. The upper one is the editor where you enter the queries you want to run. 
+In the lower you can investigate the result.
+
+ at subheading Toolbar & menu
+
+There is a toolbar and a tool menu available for the worksheet. They both contain the following commands.
+
+ at table @asis
+
+ at item @strong{Execute Current}
+      This executes the statement you current are within or after. When executed the statement executed will be highlighted in the editor. 
+      The keyboard shortcut is @strong{CTRL-Return}. 	
+ at item @strong{Execute All}
+      Execute all the statements in the editor. You get no result from the execution, the statement is simply executed. 
+      You can investigate the success of the commands in the @strong{Logging} pane of the result. The keyboard shortcut is @strong{F8}. 	
+ at item @strong{Execute Next}
+      This does exactly the same as the @strong{execute current} command with one difference. If the cursor is after the last ; 
+      of the statement and before the first non whitespace character of the next statement this command will execute the next statement 
+      when the other command will execute the previous statement. The keyboard shortcut is @strong{F9}. 	
+ at item @strong{Execute Newline Separated}
+      Execute a statement that is separated by two newlines instead of the normal ';' character. 
+      Could be useful for people who are familiar with some other Oracle tools. The keyboard shortcut is @strong{SHIFT+F9}. 
+      Only available in the menu, not in the toolbar. 	
+ at item @strong{Refresh}
+      This will re-execute the last executed statement. The keyboard shortcut is @strong{F5}. 	
+ at item @strong{Describe under cursor}
+      Describe the table currently under the cursor. The keyboard shortcut is @strong{F4}. 	
+ at item @strong{Enable Statistics}
+      Enable or disable collecting statistics when running the statements. 
+      This will cause TOra to execute at least two extra queries for every statement executed when enabled. 
+      Next to this button in the toolbar is a combo box in which you can choose the refreshtime for the charts in the statistics pane. 	
+ at item @strong{Stop execution}
+      Abort execution of the currently running query. This will not work in Windows where the query will keep running in the background until the first row of the query is returned and consume server resources before it is aborted. When you execute a new statement the current execution will be aborted. 	
+ at item @strong{Execute Saved SQL}
+      Execute the latest selected saved SQL. For more information see saved SQL. Keyboard shortcut is @strong{F7}. 
+      This is not available in the toolbar. 	
+ at item @strong{Select Saved SQL}
+      Popup menu containing saved SQL. For more information see saved SQL. Keyboard shortcut is @strong{CTRL+SHIFT+S}. 	
+ at item @strong{Save last SQL}
+      Save the most recently executed SQL to the saved SQL list. When pressed will ask for the name to save the SQL under. If ':' is entered in this name it will separate into submenues on the colon. 	
+ at item @strong{Edit Saved SQL}
+      Open the SQL editor to edit saved SQL. For more information see saved SQL. Only available in menu, not in toolbar. 	
+ at item @strong{Previous Log Entry}
+      Display the result of the previous entry in the log. If result caching is on in the settings the previous result is displayed, 
+      if it isn't the statement is reexecuted to generate the result. Keyboard shortcut is @strong{ALT+Up}. 
+      Only available in menu, not in toolbar. 	
+ at item @strong{Next Log Entry}
+      Display the result of the next entry in the log. If result caching is on in the settings the next result is displayed, 
+      if it isn't the statement is reexecuted to generate the result. Keyboard shortcut is @strong{ALT+Down}. Only available in menu, not in toolbar. 	
+ at item @strong{Erase Log}
+      Erase the contents of the rows under the @strong{Logging} pane of the result.	
+ at item @strong{Current duration}
+      While a query is currently executing you can see how long the query has been running in the right of the toolbar as a slowly ticking up the seconds. This clock will not stop when the first row is returned but run until all rows are read or the query is aborted. Moving the cursor over this label will also display a tooltip containing the SQL currently executing. 	
+ at item @strong{Change connection}
+      Change the connection this tool window should operate on.
+
+ at end table
+
+ at subheading Using the worksheet editor
+
+TOra uses a ; to separate statements in the same way as SQL*Plus. One difference is that TOra doesn't count whitespaces in any way to separate statements. You could write several statements on the same row and it wouldn't be a problem.
+
+Another difference to SQL*Plus is that TOra parses the SQL you write to determine if you are within a PL/SQL block. 
+If that is the case the entire block will be executed. This feature can be enabled or disabled in the options.
+
+ at example 
+ at verbatim
+
+SELECT * FROM dual; SELECT * FROM all_tables;
+
+BEGIN
+   DBMS_OUTPUT.PUT_LINE('Hello');
+END;
+
+ at end verbatim
+ at end example
+
+In the example above there are three statements that TOra will recognize and execute.
+
+There are a few words that are treated as comments for compatibility with SQL*Plus scripts. They are @strong{--}, @strong{REM} and @strong{PROMPT}. Comments will disregard whatever is to the right on the line. Also multi line /* ... */ style comments are recognised and ignored.
+
+You can also use bind variables in the worksheet by using the normal : character. (@pxref{Getting bind parameters}for more information how this works). One nice feature is that the first line retrieved from the result set is stored in the parameter cache with a bind name the same as the column name in lowercase. The example in the getting bind parameters could have been used directly after executing the line select * from essprc and get the second row in the table by just using the defaults of the bind dialog if essprc contains a column named prcid.
+
+You can also describe objects returned as in PL/SQL by using either @strong{DESC} or @strong{DESCRIBE} and an object name.
+
+ at subheading Exploring the result
+
+There are five different panes available with information about the executed statements.
+
+ at multitable @columnfractions .1 .9
+
+ at item @strong{Result} @tab This contains the actual result of the query or describe. For some notes about descriptions see this note.
+      
+ at item @strong{Visualize} @tab 
+Can be used to visualize the current content of the result. The first column is assumes to contain labels and the rest contain the data.
+
+ at image{images/visualize}
+
+The toolbar available contains the following controls.
+
+ at table @asis
+
+ at item @strong{Chart type} 
+      What kind of chart to generate. Available types are Bar Chart, Line Chart and Pie Chart. 	
+ at item @strong{Display Legend} 
+      Display chart legend on the right of the generated chart. 	
+ at item @strong{Display Grid} 
+      Display a grid in the generated chart. 	
+ at item @strong{Display Axis Legend} 
+      Display legends of the axises of the generated chart. 	
+ at item @strong{Update chart} 
+      Generate a chart of the current data in the result tab and the current settings.
+
+ at end table
+
+ at item @strong{Execution plan} @tab 
+      The execution plan(@pxref{Explain plan}) of the current statement.	
+ at item @strong{Information} @tab	
+      The information available about the current statement in the SGA. 	
+ at item @strong{Statistics} @tab 
+      The statistics collected when this statement was run. You need to enable statistics for this to be enabled. 
+      To update the statistic view simply change to another tab and change back to statistics. 
+      Chart are updated at the interval specified in the toolbar regardless of if you refresh statistics or not. 	
+ at item @strong{Logging} @tab 
+      This pane will display the history of the statements you have executed and their result. 
+      It can be sorted up or down depending on options. You can see the statement, it's result and the time (As recorded by the database) 
+      when it was executed. You can also see how many seconds until the first row was received. 
+      A new statement isn't added to the log until the first row of the query is returned or the statement has executed, whichever comes first.
+
+ at end multitable
+
+ at subheading Options
+
+There are quite a few options available for the worksheet.
+
+ at image{images/worksheetsetup}
+
+ at table @asis
+
+ at item @strong{Auto save}
+      If checked the worksheet will always save changes to the editor @strong{without asking} when the window is closed.	
+ at item @strong{Ask about saving changes}
+      Ask about saving changes to the worksheet when it is modified. Selecting the @strong{Auto save} have precedence over this option.	
+ at item @strong{Add log entries at end}
+      If checked new entries in the @strong{Logging} pane will be added to the end of list, otherwise they will be added at the top.	
+ at item @strong{Multiple lines in log}
+      If checked the lines in the log will display all the lines of the SQL executed. If not checked only the first line is displayed, although you can still see all of it in the tooltip or editor if you want to. For more information(@pxref{lists, Using lists}).
+ at item @strong{Parse PL/SQL blocks}
+      If this is checked TOra will parse the text to determine PL/SQL blocks in the editor and execute them as one statement. If it isn't checked statements are strictly separated by ;.	
+ at item @strong{Enable statistics}
+      Indicates if statistics should be enabled or disabled as default when a new worksheet is opened.	
+ at item @strong{Enable timed statistics}
+      Set this to make TOra always enable timed statistics for the sessions that it is collecting statistics for. Observe that timed statistics will not be disabled after the worksheet is closed. The change is strictly for the current session though.	
+ at item @strong{Display number column}
+      Indicate whether or not to display the number column as the first column of the result or suppress it.	
+ at item @strong{Move cursor to error}
+      Move the cursor to the location of an error in an execute statement. 	
+ at item @strong{Save previous result}
+      Save the results of all previous statements. This can consume a lot of memory, but will increase time to navigate history results. You can still clear this cache by erasing the log. 	
+ at item @strong{Default file}
+      A filename to open automatically when you start a new worksheet. Choose the @strong{Browse} button to select the file in a file dialog.
+
+ at end table
+
+ at subheading Saved SQL
+
+This is a feature you can use to quickly access SQL you often use. This is a popupmenu accessible in the toolbar of a worksheet. This popup will display all the SQL under "toWorksheet:" in the SQL dictionary(@pxref{sqledit,SQL Editor}). You can create submenues by adding a ":" character in the SQL name. The name of the SQL dictionary is what is used to generate the menu and not the description. You can still use placebinders in saved SQL. By default this list is empty.
+

Added: kde-extras/tora/branches/upstream/current/doc/help/workspace.texi
===================================================================
--- kde-extras/tora/branches/upstream/current/doc/help/workspace.texi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/doc/help/workspace.texi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,31 @@
+ at node workspace
+ at chapter Getting to know your workspace
+ at cindex Getting to know your workspace
+
+This section will help you familiarize yourself with the framework of the TOra application which is common to all tools in the toolkit.
+
+ at c @itemize @bullet
+
+ at c @item @uref{window.html,Elements of the main window}
+ at c @item @uref{newconnection.html,Connecting to a database}
+ at c @item @uref{editors.html,Using editors}
+ at c @item @uref{lists.html,Using lists}
+ at c @item @uref{charts.html,Using charts}
+ at c @item @uref{searchreplace.html,Search & replace}
+ at c @item @uref{preferences.html,Options}
+ at c @item @uref{common.html,Other common elements}
+
+ at c @end itemize
+
+ at menu
+* Elements of the main window:window.
+* Connecting to a database:newconnection.
+* What privileges do you need to run TOra::
+* Using editors:editors.
+* Using lists:lists.
+* Using charts::
+* Search & Replace:searchreplace.
+* Options:preferences.
+* Other common elements:common.
+ at end menu
+

Added: kde-extras/tora/branches/upstream/current/ext/Makefile.am
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/Makefile.am	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/Makefile.am	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,5 @@
+EXTRA_DIST = otl loki
+
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+

Added: kde-extras/tora/branches/upstream/current/ext/Makefile.in
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/Makefile.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/Makefile.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,434 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = ext
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/m4/cppunit.m4 \
+	$(top_srcdir)/config/m4/oracle.m4 \
+	$(top_srcdir)/config/m4/pcre.m4 \
+	$(top_srcdir)/config/m4/qtkde.m4 \
+	$(top_srcdir)/config/m4/tora.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_FALSE = @CPPUNIT_FALSE@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CPPUNIT_TRUE = @CPPUNIT_TRUE@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MONO_FALSE = @ENABLE_MONO_FALSE@
+ENABLE_MONO_TRUE = @ENABLE_MONO_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GREP = @GREP@
+HAVE_ORACLE_FALSE = @HAVE_ORACLE_FALSE@
+HAVE_ORACLE_TRUE = @HAVE_ORACLE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISODATE = @ISODATE@
+KDECONFIG = @KDECONFIG@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBXINERAMA = @LIBXINERAMA@
+LIBZ = @LIBZ@
+LIB_DCOP = @LIB_DCOP@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KFILE = @LIB_KFILE@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIO = @LIB_KIO@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+LUPDATE = @LUPDATE@
+MAKEINFO = @MAKEINFO@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+OBJEXT = @OBJEXT@
+ORACLE_CXXFLAGS = @ORACLE_CXXFLAGS@
+ORACLE_LDFLAGS = @ORACLE_LDFLAGS@
+ORACLE_LIBS = @ORACLE_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_LIBS = @PCRE_LIBS@
+QSCINTILLA_CXXFLAGS = @QSCINTILLA_CXXFLAGS@
+QSCINTILLA_LDFLAGS = @QSCINTILLA_LDFLAGS@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TORA_LINK_OTHERS = @TORA_LINK_OTHERS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+EXTRA_DIST = otl loki
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  ext/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  ext/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	dist-hook distclean distclean-generic distclean-libtool \
+	distdir dvi dvi-am html html-am info info-am install \
+	install-am install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	uninstall uninstall-am uninstall-info-am
+
+
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/Makefile
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/Makefile	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/Makefile	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,11 @@
+include ../Makefile.common
+
+.PHONY: install
+install:
+	mkdir -p $(prefix)/include/loki
+	mkdir -p $(prefix)/include/loki/flex
+	mkdir -p $(prefix)/include/loki/yasli
+	
+	install -m 644 loki/*.h $(prefix)/include/loki
+	install -m 644 loki/flex/*.h $(prefix)/include/loki/flex
+	install -m 644 loki/yasli/*.h $(prefix)/include/loki/yasli

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/AbstractFactory.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/AbstractFactory.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/AbstractFactory.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,185 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_ABSTRACTFACTORY_INC_
+#define LOKI_ABSTRACTFACTORY_INC_
+
+// $Id: AbstractFactory.h 771 2006-10-27 18:05:03Z clitte_bbt $
+
+
+#include "Typelist.h"
+#include "Sequence.h"
+#include "TypeManip.h"
+#include "HierarchyGenerators.h"
+
+#include <cassert>
+
+/**
+ * \defgroup	FactoriesGroup Factories
+ * \defgroup	AbstractFactoryGroup Abstract Factory
+ * \ingroup		FactoriesGroup
+ * \brief		Implements an abstract object factory.
+ */
+ 
+/**
+ * \class		AbstractFactory
+ * \ingroup		AbstractFactoryGroup
+ * \brief		Implements an abstract object factory.
+ */
+
+namespace Loki
+{
+
+////////////////////////////////////////////////////////////////////////////////
+// class template AbstractFactoryUnit
+// The building block of an Abstract Factory
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class T>
+    class AbstractFactoryUnit
+    {
+    public:
+        virtual T* DoCreate(Type2Type<T>) = 0;
+        virtual ~AbstractFactoryUnit() {}
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template AbstractFactory
+// Defines an Abstract Factory interface starting from a typelist
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        class TList,
+        template <class> class Unit = AbstractFactoryUnit
+    >
+    class AbstractFactory : public GenScatterHierarchy<TList, Unit>
+    {
+    public:
+        typedef TList ProductList;
+        
+        template <class T> T* Create()
+        {
+            Unit<T>& unit = *this;
+            return unit.DoCreate(Type2Type<T>());
+        }
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+// class template OpNewFactoryUnit
+// Creates an object by invoking the new operator
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class ConcreteProduct, class Base>
+    class OpNewFactoryUnit : public Base
+    {
+        typedef typename Base::ProductList BaseProductList;
+    
+    protected:
+        typedef typename BaseProductList::Tail ProductList;
+    
+    public:
+        typedef typename BaseProductList::Head AbstractProduct;
+        ConcreteProduct* DoCreate(Type2Type<AbstractProduct>)
+        {
+            return new ConcreteProduct;
+        }
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template PrototypeFactoryUnit
+// Creates an object by cloning a prototype
+// There is a difference between the implementation herein and the one described
+//     in the book: GetPrototype and SetPrototype use the helper friend 
+//     functions DoGetPrototype and DoSetPrototype. The friend functions avoid
+//     name hiding issues. Plus, GetPrototype takes a reference to pointer
+//     instead of returning the pointer by value.
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class ConcreteProduct, class Base>
+    class PrototypeFactoryUnit : public Base
+    {
+        typedef typename Base::ProductList BaseProductList;
+    
+    protected:
+        typedef typename BaseProductList::Tail ProductList;
+
+    public:
+        typedef typename BaseProductList::Head AbstractProduct;
+
+        PrototypeFactoryUnit(AbstractProduct* p = 0)
+            : pPrototype_(p)
+        {}
+
+        template <class CP, class Base1>
+        friend void DoGetPrototype(const PrototypeFactoryUnit<CP, Base1>& me,
+                                   typename Base1::ProductList::Head*& pPrototype);
+
+        template <class CP, class Base1>
+        friend void DoSetPrototype(PrototypeFactoryUnit<CP, Base1>& me,
+                                   typename Base1::ProductList::Head* pObj);
+
+        template <class U>
+        void GetPrototype(U*& p)
+        { return DoGetPrototype(*this, p); }
+        
+        template <class U>
+        void SetPrototype(U* pObj)
+        { DoSetPrototype(*this, pObj); }
+        
+        AbstractProduct* DoCreate(Type2Type<AbstractProduct>)
+        {
+            assert(pPrototype_);
+            return pPrototype_->Clone();
+        }
+        
+    private:
+        AbstractProduct* pPrototype_;
+    };
+
+    template <class CP, class Base>
+    inline void DoGetPrototype(const PrototypeFactoryUnit<CP, Base>& me,
+                               typename Base::ProductList::Head*& pPrototype)
+    { pPrototype = me.pPrototype_; }
+
+    template <class CP, class Base>
+    inline void DoSetPrototype(PrototypeFactoryUnit<CP, Base>& me,
+                               typename Base::ProductList::Head* pObj)
+    { me.pPrototype_ = pObj; }
+
+////////////////////////////////////////////////////////////////////////////////
+// class template ConcreteFactory
+// Implements an AbstractFactory interface
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        class AbstractFact,
+        template <class, class> class Creator = OpNewFactoryUnit,
+        class TList = typename AbstractFact::ProductList
+    >
+    class ConcreteFactory
+        : public GenLinearHierarchy<
+            typename TL::Reverse<TList>::Result, Creator, AbstractFact>
+    {
+    public:
+        typedef typename AbstractFact::ProductList ProductList;
+        typedef TList ConcreteProductList;
+    };
+
+} // namespace Loki
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/AssocVector.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/AssocVector.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/AssocVector.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,358 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_ASSOCVECTOR_INC_
+#define LOKI_ASSOCVECTOR_INC_
+
+// $Id: AssocVector.h 765 2006-10-18 13:55:32Z syntheticpp $
+
+
+#include <algorithm>
+#include <functional>
+#include <vector>
+#include <utility>
+
+namespace Loki
+{
+////////////////////////////////////////////////////////////////////////////////
+// class template AssocVectorCompare
+// Used by AssocVector
+////////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+        template <class Value, class C>
+        class AssocVectorCompare : public C
+        {
+            typedef std::pair<typename C::first_argument_type, Value>
+                Data;
+            typedef typename C::first_argument_type first_argument_type;
+
+        public:
+            AssocVectorCompare()
+            {}
+            
+            AssocVectorCompare(const C& src) : C(src)
+            {}
+            
+            bool operator()(const first_argument_type& lhs, 
+                const first_argument_type& rhs) const
+            { return C::operator()(lhs, rhs); }
+            
+            bool operator()(const Data& lhs, const Data& rhs) const
+            { return operator()(lhs.first, rhs.first); }
+            
+            bool operator()(const Data& lhs, 
+                const first_argument_type& rhs) const
+            { return operator()(lhs.first, rhs); }
+            
+            bool operator()(const first_argument_type& lhs,
+                const Data& rhs) const
+            { return operator()(lhs, rhs.first); }
+        };
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+// class template AssocVector
+// An associative vector built as a syntactic drop-in replacement for std::map
+// BEWARE: AssocVector doesn't respect all map's guarantees, the most important
+//     being:
+// * iterators are invalidated by insert and erase operations
+// * the complexity of insert/erase is O(N) not O(log N)
+// * value_type is std::pair<K, V> not std::pair<const K, V>
+// * iterators are random
+////////////////////////////////////////////////////////////////////////////////
+
+
+    template
+    <
+        class K,
+        class V,
+        class C = std::less<K>,
+        class A = std::allocator< std::pair<K, V> >
+    >
+    class AssocVector 
+        : private std::vector< std::pair<K, V>, A >
+        , private Private::AssocVectorCompare<V, C>
+    {
+        typedef std::vector<std::pair<K, V>, A> Base;
+        typedef Private::AssocVectorCompare<V, C> MyCompare;
+
+    public:
+        typedef K key_type;
+        typedef V mapped_type;
+        typedef typename Base::value_type value_type;
+
+        typedef C key_compare;
+        typedef A allocator_type;
+        typedef typename A::reference reference;
+        typedef typename A::const_reference const_reference;
+        typedef typename Base::iterator iterator;
+        typedef typename Base::const_iterator const_iterator;
+        typedef typename Base::size_type size_type;
+        typedef typename Base::difference_type difference_type;
+        typedef typename A::pointer pointer;
+        typedef typename A::const_pointer const_pointer;
+        typedef typename Base::reverse_iterator reverse_iterator;
+        typedef typename Base::const_reverse_iterator const_reverse_iterator;
+
+        class value_compare
+            : public std::binary_function<value_type, value_type, bool>
+            , private key_compare
+        {
+            friend class AssocVector;
+        
+        protected:
+            value_compare(key_compare pred) : key_compare(pred)
+            {}
+
+        public:
+            bool operator()(const value_type& lhs, const value_type& rhs) const
+            { return key_compare::operator()(lhs.first, rhs.first); }
+        };
+        
+        // 23.3.1.1 construct/copy/destroy
+
+        explicit AssocVector(const key_compare& comp = key_compare(), 
+            const A& alloc = A())
+        : Base(alloc), MyCompare(comp)
+        {}
+        
+        template <class InputIterator>
+        AssocVector(InputIterator first, InputIterator last, 
+            const key_compare& comp = key_compare(), 
+            const A& alloc = A())
+        : Base(first, last, alloc), MyCompare(comp)
+        {
+            MyCompare& me = *this;
+            std::sort(begin(), end(), me);
+        }
+        
+        AssocVector& operator=(const AssocVector& rhs)
+        { 
+            AssocVector(rhs).swap(*this); 
+            return *this;
+        }
+
+        // iterators:
+        // The following are here because MWCW gets 'using' wrong
+        iterator begin() { return Base::begin(); }
+        const_iterator begin() const { return Base::begin(); }
+        iterator end() { return Base::end(); }
+        const_iterator end() const { return Base::end(); }
+        reverse_iterator rbegin() { return Base::rbegin(); }
+        const_reverse_iterator rbegin() const { return Base::rbegin(); }
+        reverse_iterator rend() { return Base::rend(); }
+        const_reverse_iterator rend() const { return Base::rend(); }
+        
+        // capacity:
+        bool empty() const { return Base::empty(); }
+        size_type size() const { return Base::size(); }
+        size_type max_size() { return Base::max_size(); }
+
+        // 23.3.1.2 element access:
+        mapped_type& operator[](const key_type& key)
+        { return insert(value_type(key, mapped_type())).first->second; }
+
+        // modifiers:
+        std::pair<iterator, bool> insert(const value_type& val)
+        {
+            bool found(true);
+            iterator i(lower_bound(val.first));
+
+            if (i == end() || this->operator()(val.first, i->first))
+            {
+                i = Base::insert(i, val);
+                found = false;
+            }
+            return std::make_pair(i, !found);
+        }
+        //Section [23.1.2], Table 69
+        //http://developer.apple.com/documentation/DeveloperTools/gcc-3.3/libstdc++/23_containers/howto.html#4
+        iterator insert(iterator pos, const value_type& val)
+        {
+            if( (pos == begin() || this->operator()(*(pos-1),val)) && 
+                (pos == end()    || this->operator()(val, *pos)) )
+            {
+                return Base::insert(pos, val);
+            }
+            return insert(val).first;
+        }
+       
+        template <class InputIterator>
+        void insert(InputIterator first, InputIterator last)
+        { for (; first != last; ++first) insert(*first); }
+        
+        void erase(iterator pos)
+        { Base::erase(pos); }
+
+        size_type erase(const key_type& k)
+        {
+            iterator i(find(k));
+            if (i == end()) return 0;
+            erase(i);
+            return 1;
+        }
+
+        void erase(iterator first, iterator last)
+        { Base::erase(first, last); }
+
+        void swap(AssocVector& other)
+        {
+            Base::swap(other);
+            MyCompare& me = *this;
+            MyCompare& rhs = other;
+            std::swap(me, rhs);
+        }
+        
+        void clear()
+        { Base::clear(); }
+
+        // observers:
+        key_compare key_comp() const
+        { return *this; }
+
+        value_compare value_comp() const
+        {
+            const key_compare& comp = *this;
+            return value_compare(comp);
+        }
+
+        // 23.3.1.3 map operations:
+        iterator find(const key_type& k)
+        {
+            iterator i(lower_bound(k));
+            if (i != end() && this->operator()(k, i->first))
+            {
+                i = end();
+            }
+            return i;
+        }
+
+        const_iterator find(const key_type& k) const
+        {       
+            const_iterator i(lower_bound(k));
+            if (i != end() && this->operator()(k, i->first))
+            {
+                i = end();
+            }
+            return i;
+        }
+
+        size_type count(const key_type& k) const
+        { return find(k) != end(); }
+
+        iterator lower_bound(const key_type& k)
+        {
+            MyCompare& me = *this;
+            return std::lower_bound(begin(), end(), k, me);
+        }
+
+        const_iterator lower_bound(const key_type& k) const
+        {
+            const MyCompare& me = *this;
+            return std::lower_bound(begin(), end(), k, me);
+        }
+
+        iterator upper_bound(const key_type& k)
+        {
+            MyCompare& me = *this;
+            return std::upper_bound(begin(), end(), k, me);
+        }
+
+        const_iterator upper_bound(const key_type& k) const
+        {
+            const MyCompare& me = *this;
+            return std::upper_bound(begin(), end(), k, me);
+        }
+
+        std::pair<iterator, iterator> equal_range(const key_type& k)
+        {
+            MyCompare& me = *this;
+            return std::equal_range(begin(), end(), k, me);
+        }
+
+        std::pair<const_iterator, const_iterator> equal_range(
+            const key_type& k) const
+        {
+            const MyCompare& me = *this;
+            return std::equal_range(begin(), end(), k, me);
+        }
+
+        template <class K1, class V1, class C1, class A1>
+        friend bool operator==(const AssocVector<K1, V1, C1, A1>& lhs,
+                        const AssocVector<K1, V1, C1, A1>& rhs);
+
+        bool operator<(const AssocVector& rhs) const
+        {
+            const Base& me = *this;
+            const Base& yo = rhs;
+            return me < yo;
+        }
+
+        template <class K1, class V1, class C1, class A1>
+        friend bool operator!=(const AssocVector<K1, V1, C1, A1>& lhs,
+                               const AssocVector<K1, V1, C1, A1>& rhs);
+
+        template <class K1, class V1, class C1, class A1>
+        friend bool operator>(const AssocVector<K1, V1, C1, A1>& lhs,
+                              const AssocVector<K1, V1, C1, A1>& rhs);
+
+        template <class K1, class V1, class C1, class A1>
+        friend bool operator>=(const AssocVector<K1, V1, C1, A1>& lhs,
+                               const AssocVector<K1, V1, C1, A1>& rhs);
+
+        template <class K1, class V1, class C1, class A1>
+        friend bool operator<=(const AssocVector<K1, V1, C1, A1>& lhs,
+                               const AssocVector<K1, V1, C1, A1>& rhs);
+    };
+
+    template <class K, class V, class C, class A>
+    inline bool operator==(const AssocVector<K, V, C, A>& lhs,
+                           const AssocVector<K, V, C, A>& rhs)
+    {
+      const std::vector<std::pair<K, V>, A>& me = lhs;
+      return me == rhs;
+    }
+
+    template <class K, class V, class C, class A>
+    inline bool operator!=(const AssocVector<K, V, C, A>& lhs,
+                           const AssocVector<K, V, C, A>& rhs)
+    { return !(lhs == rhs); }
+
+    template <class K, class V, class C, class A>
+    inline bool operator>(const AssocVector<K, V, C, A>& lhs,
+                          const AssocVector<K, V, C, A>& rhs)
+    { return rhs < lhs; }
+
+    template <class K, class V, class C, class A>
+    inline bool operator>=(const AssocVector<K, V, C, A>& lhs,
+                           const AssocVector<K, V, C, A>& rhs)
+    { return !(lhs < rhs); }
+
+    template <class K, class V, class C, class A>
+    inline bool operator<=(const AssocVector<K, V, C, A>& lhs,
+                           const AssocVector<K, V, C, A>& rhs)
+    { return !(rhs < lhs); }
+
+
+    // specialized algorithms:
+    template <class K, class V, class C, class A>
+    void swap(AssocVector<K, V, C, A>& lhs, AssocVector<K, V, C, A>& rhs)
+    { lhs.swap(rhs); }
+    
+} // namespace Loki
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/CachedFactory.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/CachedFactory.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/CachedFactory.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1167 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 by Guillaume Chatelet
+//
+// Code covered by the MIT License
+//
+// Permission to use, copy, modify, distribute and sell this software for any 
+// purpose is hereby granted without fee, provided that the above copyright 
+// notice appear in all copies and that both that copyright notice and this 
+// permission notice appear in supporting documentation.
+//
+// The authors make no representations about the suitability of this software
+// for any purpose. It is provided "as is" without express or implied warranty.
+//
+// This code DOES NOT accompany the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+//
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_CACHEDFACTORY_INC_
+#define LOKI_CACHEDFACTORY_INC_
+
+// $Id: CachedFactory.h 810 2007-02-25 14:36:28Z syntheticpp $
+
+#include <functional>
+#include <algorithm>
+#include <iostream>
+#include <vector>
+#include <iterator>
+#include <map>
+#include <cassert>
+#include <loki/Key.h>
+
+#ifdef DO_EXTRA_LOKI_TESTS
+	#define D( x ) x
+#else
+	#define D( x ) ;
+#endif
+
+#ifdef _MSC_VER
+#include <time.h>
+#endif
+
+/**
+ * \defgroup	FactoriesGroup Factories
+ * \defgroup	CachedFactoryGroup Cached Factory
+ * \ingroup		FactoriesGroup
+ * \brief		CachedFactory provides an extension of a Factory with caching
+ * support.
+ * 
+ * Once used objects are returned to the CachedFactory that manages its
+ * destruction.
+ * If your code uses lots of "long to construct/destruct objects" using the
+ * CachedFactory will surely speedup the execution.
+ */
+namespace Loki
+{
+/**
+ * \defgroup	EncapsulationPolicyCachedFactoryGroup	Encapsulation policies
+ * \ingroup	CachedFactoryGroup
+ * \brief	Defines how the object is returned to the client
+ */
+	/**
+	 * \class	SimplePointer
+	 * \ingroup	EncapsulationPolicyCachedFactoryGroup
+	 * \brief	No encaspulation : returns the pointer
+	 * 
+	 * This implementation does not make any encapsulation.
+	 * It simply returns the object's pointer.
+	 */
+     template<class AbstractProduct>     
+     class SimplePointer
+     {
+     protected:
+           typedef AbstractProduct* ProductReturn;
+           ProductReturn encapsulate(AbstractProduct* pProduct)
+           {
+                return pProduct;
+           }
+           
+           AbstractProduct* release(ProductReturn &pProduct)
+           {
+                AbstractProduct* pPointer(pProduct);
+                pProduct=NULL;
+                return pPointer;
+           }
+           const char* name(){return "pointer";}
+     };
+
+/**
+ * \defgroup	CreationPolicyCachedFactoryGroup		Creation policies
+ * \ingroup		CachedFactoryGroup
+ * \brief		Defines a way to limit the creation operation.
+ * 
+ * For instance one may want to be alerted (Exception) when
+ * - Cache has created a more than X object within the last x seconds
+ * - Cache creation rate has increased dramatically
+ * .
+ * which may result from bad caching strategy, or critical overload
+ */
+	/**
+	 * \class	NeverCreate
+	 * \ingroup	CreationPolicyCachedFactoryGroup
+	 * \brief	Never allows creation. Testing purposes only.
+	 * 
+	 * Using this policy will throw an exception.
+	 */
+     class NeverCreate
+     {
+     protected:
+            struct Exception : public std::exception
+            {
+                const char* what() const throw() { return "NeverFetch Policy : No Fetching allowed"; }
+            };
+            
+            bool canCreate()
+            {
+                throw Exception();
+            }
+            
+            void onCreate(){}
+            void onDestroy(){}
+            const char* name(){return "never";}
+     };
+     
+     /**
+      * \class		AlwaysCreate
+      * \ingroup	CreationPolicyCachedFactoryGroup
+      * \brief		Always allows creation.
+      * 
+      * Doesn't limit the creation in any way
+      */
+     class AlwaysCreate
+     {
+     protected:
+            bool canCreate()
+            {
+                return true;
+            }
+
+            void onCreate(){}
+            void onDestroy(){}
+            const char* name(){return "always";}
+     };
+
+
+    /**
+     * \class	RateLimitedCreation
+     * \ingroup	CreationPolicyCachedFactoryGroup
+     * \brief	Limit in rate.
+     * 
+     * This implementation will prevent from Creating more than maxCreation objects
+     * within byTime ms by throwing an exception.
+     * Could be usefull to detect prevent loads (http connection for instance).
+     * Use the setRate method to set the rate parameters.
+     * default is 10 objects in a second.
+     */
+     // !! CAUTION !!
+     // The std::clock() function is not quite precise
+     // under linux this policy might not work.
+     // TODO : get a better implementation (platform dependant)
+     class RateLimitedCreation
+     {
+     private:
+            typedef std::vector< clock_t > Vector;
+            Vector m_vTimes;
+            unsigned maxCreation;
+            clock_t timeValidity;
+            clock_t lastUpdate;
+          
+            void cleanVector()
+            {
+            	using namespace std;
+				clock_t currentTime = clock();
+                D( cout << "currentTime = " << currentTime<< endl; )
+                D( cout << "currentTime - lastUpdate = " << currentTime - lastUpdate<< endl; )
+                if(currentTime - lastUpdate > timeValidity)
+                {
+                    m_vTimes.clear();
+                    D( cout << " is less than time validity " << timeValidity; )
+                    D( cout << " so clearing vector" << endl; )
+                }
+                else
+                {
+                    D( cout << "Cleaning time less than " << currentTime - timeValidity << endl; )
+                    D( displayVector(); )
+                    Vector::iterator newEnd = remove_if(m_vTimes.begin(), m_vTimes.end(), bind2nd(less<clock_t>(), currentTime - timeValidity));
+                    // this rearrangement might be costly, consider optimization
+                    // by calling cleanVector in less used onCreate function
+                    // ... although it may not be correct
+                    m_vTimes.erase(newEnd, m_vTimes.end());
+                    D( displayVector(); )
+                }
+                lastUpdate = currentTime;
+            }
+#ifdef DO_EXTRA_LOKI_TESTS        
+            void displayVector()
+            {
+                std::cout << "Vector : ";
+                copy(m_vTimes.begin(), m_vTimes.end(), std::ostream_iterator<clock_t>(std::cout, " "));
+                std::cout << std::endl;
+            }
+#endif
+     protected:
+            RateLimitedCreation() : maxCreation(10), timeValidity(CLOCKS_PER_SEC), lastUpdate(clock())
+            {}
+            
+            struct Exception : public std::exception
+            {
+                const char* what() const throw() { return "RateLimitedCreation Policy : Exceeded the authorized creation rate"; }
+            };
+            
+            bool canCreate()
+            {
+                cleanVector();
+                if(m_vTimes.size()>maxCreation)
+                    throw Exception();
+                else
+                    return true;
+            }
+
+            void onCreate()
+            {
+				m_vTimes.push_back(clock());
+            }
+            
+            void onDestroy()
+            {
+            }
+            const char* name(){return "rate limited";}
+     public:
+            // set the creation rate
+            // No more than maxCreation within byTime milliseconds
+            void setRate(unsigned maxCreation, unsigned byTime)
+            {
+                assert(byTime>0);
+                this->maxCreation = maxCreation;
+                this->timeValidity = static_cast<clock_t>(byTime * CLOCKS_PER_SEC / 1000);
+                D( std::cout << "Setting no more than "<< maxCreation <<" creation within " << this->timeValidity <<" ms"<< std::endl; )
+            }
+     };
+     
+    /**
+     * \class	AmountLimitedCreation
+     * \ingroup	CreationPolicyCachedFactoryGroup
+     * \brief	Limit by number of objects
+     * 
+     * This implementation will prevent from Creating more than maxCreation objects
+     * within byTime ms by calling eviction policy.
+     * Use the setRate method to set the rate parameters.
+     * default is 10 objects.
+     */
+     class AmountLimitedCreation
+     {
+     private:
+            unsigned maxCreation;
+            unsigned created;
+            
+     protected:
+            AmountLimitedCreation() : maxCreation(10), created(0)
+            {}
+            
+            bool canCreate()
+            {
+            	return !(created>=maxCreation);
+            }
+
+            void onCreate()
+            {
+                ++created;
+            }
+            
+            void onDestroy()
+            {
+                --created;
+            }
+            const char* name(){return "amount limited";}
+     public:
+            // set the creation max amount
+            void setMaxCreation(unsigned maxCreation)
+            {
+                assert(maxCreation>0);
+                this->maxCreation = maxCreation;
+                D( std::cout << "Setting no more than " << maxCreation <<" creation" << std::endl; )
+            }
+     };
+     
+/**
+ * \defgroup	EvictionPolicyCachedFactoryGroup		Eviction policies
+ * \ingroup	CachedFactoryGroup
+ * \brief	Gathers informations about the stored objects and choose a
+ * candidate for eviction.
+ */
+
+    class EvictionException : public std::exception
+    {
+    public:
+        const char* what() const throw() { return "Eviction Policy : trying to make room but no objects are available"; }
+    };
+
+    // The following class is intented to provide helpers to sort
+    // the container that will hold an eviction score
+    template
+    <
+    	typename ST, // Score type
+    	typename DT // Data type
+    >
+    class EvictionHelper
+    {
+    protected:
+        typedef typename std::map< DT, ST >			HitMap;
+        typedef typename HitMap::iterator			HitMapItr;
+    private:
+        typedef std::pair< ST, DT >					SwappedPair;
+        typedef std::multimap< ST, DT >				SwappedHitMap;
+    	typedef	typename SwappedHitMap::iterator	SwappedHitMapItr;
+    protected:
+        HitMap										m_mHitCount;
+    	
+    	// This function sorts the map according to the score
+    	// and returns the lower bound of the sorted container
+    	DT&	getLowerBound(){
+    		assert(!m_mHitCount.empty());
+    		// inserting the swapped pair into a multimap
+    		SwappedHitMap copyMap;
+    		for(HitMapItr itr = m_mHitCount.begin(); itr != m_mHitCount.end(); ++itr)
+    			copyMap.insert(SwappedPair((*itr).second, (*itr).first));
+    		if((*copyMap.rbegin()).first == 0) // the higher score is 0 ...
+    		  throw EvictionException(); // there is no key evict
+    		return (*copyMap.begin()).second;
+    	}
+    };
+    
+	/**
+	 * \class	EvictLRU
+	 * \ingroup	EvictionPolicyCachedFactoryGroup
+	 * \brief	Evicts least accessed objects first.
+	 * 
+	 * Implementation of the Least recent used algorithm as
+	 * described in http://en.wikipedia.org/wiki/Page_replacement_algorithms .
+	 * 
+	 * WARNING : If an object is heavily fetched
+	 * (more than ULONG_MAX = UINT_MAX = 4294967295U)
+	 * it could unfortunately be removed from the cache.
+	 */
+    template
+    <
+    	typename DT, // Data Type (AbstractProduct*)
+    	typename ST = unsigned // default data type to use as Score Type
+    >
+    class EvictLRU : public EvictionHelper< ST , DT >
+    {
+    private:
+    	typedef EvictionHelper< ST , DT >	EH;
+    protected:
+        
+        virtual ~EvictLRU(){}
+        
+    	// OnStore initialize the counter for the new key
+    	// If the key already exists, the counter is reseted
+    	void onCreate(const DT& key)
+        {
+    		EH::m_mHitCount[key] = 0;
+    	}
+    	
+    	void onFetch(const DT&)
+        {
+    	}
+    	
+    	// onRelease increments the hit counter associated with the object
+        void onRelease(const DT& key)
+        {
+    		++(EH::m_mHitCount[key]);
+        }
+
+    	void onDestroy(const DT& key)
+    	{
+            EH::m_mHitCount.erase(key);
+    	}
+    	
+    	// this function is implemented in Cache and redirected
+    	// to the Storage Policy
+    	virtual void remove(DT const key)=0;
+
+    	// LRU Eviction policy
+    	void evict()
+    	{
+    		remove(EH::getLowerBound());
+    	}
+        const char* name(){return "LRU";}
+    };
+    
+	/**
+	 * \class	EvictAging
+	 * \ingroup	EvictionPolicyCachedFactoryGroup
+	 * \brief	LRU aware of the time span of use
+	 * 
+	 * Implementation of the Aging algorithm as
+	 * described in http://en.wikipedia.org/wiki/Page_replacement_algorithms .
+	 * 
+	 * This method is much more costly than evict LRU so
+	 * if you need extreme performance consider switching to EvictLRU
+	 */
+    template
+    <
+    	typename DT, // Data Type (AbstractProduct*)
+    	typename ST = unsigned // default data type to use as Score Type
+    >
+    class EvictAging : public EvictionHelper< ST, DT >
+    {
+    private:
+        EvictAging(const EvictAging&);
+        EvictAging& operator=(const EvictAging&);
+    	typedef EvictionHelper< ST, DT >		       		EH;
+    	typedef typename EH::HitMap						HitMap;
+    	typedef typename EH::HitMapItr					HitMapItr;
+    	
+    	// update the counter
+		template<class T> struct updateCounter : public std::unary_function<T, void>
+		{
+			updateCounter(const DT& key): key_(key){}
+			void operator()(T x)
+			{
+				x.second = (x.first == key_ ? (x.second >> 1) | ( 1 << ((sizeof(ST)-1)*8) ) : x.second >> 1);
+    			D( std::cout <<  x.second << std::endl; )
+			}
+			const DT &key_;
+            updateCounter(const updateCounter& rhs) : key_(rhs.key_){}
+        private:
+            updateCounter& operator=(const updateCounter& rhs);
+		};
+    protected:
+         EvictAging(){}
+         virtual ~EvictAging(){}
+         
+    	// OnStore initialize the counter for the new key
+    	// If the key already exists, the counter is reseted
+    	void onCreate(const DT& key){
+    		EH::m_mHitCount[key] = 0;
+    	}
+    	
+    	void onFetch(const DT&){}
+    	
+    	// onRelease increments the hit counter associated with the object
+    	// Updating every counters by iterating over the map
+    	// If the key is the key of the fetched object :
+    	//  the counter is shifted to the right and it's MSB is set to 1
+    	// else
+    	//  the counter is shifted to the left
+        void onRelease(const DT& key)
+        {
+        	std::for_each(EH::m_mHitCount.begin(), EH::m_mHitCount.end(), updateCounter< typename HitMap::value_type >(key));
+        }
+        
+        void onDestroy(const DT& key)
+        {
+            EH::m_mHitCount.erase(key);
+        }
+
+    	// this function is implemented in Cache and redirected
+    	// to the Storage Policy
+    	virtual void remove(DT const key)=0;
+
+    	// LRU with Aging Eviction policy
+    	void evict()
+    	{
+    		remove(EH::getLowerBound());
+    	}
+        const char* name(){return "LRU with aging";}
+    };
+    
+	/**
+	 * \class	EvictRandom
+	 * \ingroup	EvictionPolicyCachedFactoryGroup
+	 * \brief	Evicts a random object
+	 * 
+	 * Implementation of the Random algorithm as
+	 * described in http://en.wikipedia.org/wiki/Page_replacement_algorithms .
+	 */
+    template
+    <
+    	typename DT, // Data Type (AbstractProduct*)
+    	typename ST = void // Score Type not used by this policy
+    >
+    class EvictRandom
+    {
+    private:
+    	std::vector< DT >	m_vKeys;
+    	typedef typename std::vector< DT >::size_type	size_type;
+    	typedef typename std::vector< DT >::iterator		iterator;
+
+    protected:
+    
+     	virtual ~EvictRandom(){};
+     	
+    	void onCreate(const DT&){
+    	}
+    	
+    	void onFetch(const DT& ){
+    	}
+
+    	void onRelease(const DT& key){
+            m_vKeys.push_back(key);
+    	}
+    	
+    	void onDestroy(const DT& key){
+    		using namespace std;
+            m_vKeys.erase(remove_if(m_vKeys.begin(), m_vKeys.end(), bind2nd(equal_to< DT >(), key)), m_vKeys.end());
+    	}
+    	
+    	// Implemented in Cache and redirected to the Storage Policy
+    	virtual void remove(DT const key)=0;
+
+    	// Random Eviction policy
+    	void evict()
+    	{
+    		if(m_vKeys.empty())
+    		    throw EvictionException();
+    		size_type random = static_cast<size_type>((m_vKeys.size()*rand())/int(RAND_MAX + 1));
+    		remove(*(m_vKeys.begin()+random));
+    	}
+        const char* name(){return "random";}
+    };
+
+/**
+ * \defgroup	StatisticPolicyCachedFactoryGroup		Statistic policies
+ * \ingroup	CachedFactoryGroup
+ * \brief	Gathers information about the cache.
+ * 
+ * For debugging purpose this policy proposes to gather informations
+ * about the cache. This could be useful to determine whether the cache is
+ * mandatory or if the policies are well suited to the application.
+ */
+	/**
+	 * \class	NoStatisticPolicy
+	 * \ingroup	StatisticPolicyCachedFactoryGroup
+	 * \brief	Do nothing
+	 *
+	 * Should be used in release code for better performances  
+	 */
+    class NoStatisticPolicy
+    {
+    protected:
+        void onDebug(){}
+        void onFetch(){}
+        void onRelease(){}
+        void onCreate(){}
+        void onDestroy(){}
+        const char* name(){return "no";}
+    };
+    
+	/**
+	 * \class	SimpleStatisticPolicy
+	 * \ingroup	StatisticPolicyCachedFactoryGroup
+	 * \brief	Simple statistics
+	 *
+	 * Provides the following informations about the cache :
+	 * 		- Created objects
+	 * 		- Fetched objects
+	 * 		- Destroyed objects
+	 * 		- Cache hit
+	 * 		- Cache miss
+	 * 		- Currently allocated
+	 * 		- Currently out
+	 * 		- Cache overall efficiency
+	 */
+    class SimpleStatisticPolicy
+    {
+    private:
+        unsigned allocated, created, hit, out, fetched;
+    protected:
+        SimpleStatisticPolicy() : allocated(0), created(0), hit(0), out(0), fetched(0)
+        {
+        }
+        
+        void onDebug()
+        {
+        	using namespace std;
+            cout << "############################" << endl;
+            cout << "## About this cache " << this << endl;
+            cout << "## + Created objects     : " << created << endl;
+            cout << "## + Fetched objects     : " << fetched << endl;
+            cout << "## + Destroyed objects   : " << created - allocated << endl;
+            cout << "## + Cache hit           : " << hit << endl;
+            cout << "## + Cache miss          : " << fetched - hit << endl;
+            cout << "## + Currently allocated : " << allocated << endl;
+            cout << "## + Currently out       : " << out << endl;
+            cout << "############################" << endl;
+            if(fetched!=0){
+                cout << "## Overall efficiency " << 100*double(hit)/fetched <<"%"<< endl;
+                cout << "############################" << endl;
+            }
+            cout << endl;
+        }
+        
+        void onFetch()
+        {
+            ++fetched;
+            ++out;
+            ++hit;
+        }
+        void onRelease()
+        {
+            --out;
+        }
+        void onCreate()
+        {
+            ++created;
+            ++allocated;
+            --hit;
+        }
+        void onDestroy()
+        {
+            --allocated;
+        }
+
+        const char* name(){return "simple";}
+    public:
+        unsigned getCreated(){return created;}
+        unsigned getFetched(){return fetched;}
+        unsigned getHit(){return hit;}
+        unsigned getMissed(){return fetched - hit;}
+        unsigned getAllocated(){return allocated;}
+        unsigned getOut(){return out;}
+        unsigned getDestroyed(){return created-allocated;}
+    }; 
+    
+    ///////////////////////////////////////////////////////////////////////////
+    // Cache Factory definition
+    ///////////////////////////////////////////////////////////////////////////
+    class CacheException : public std::exception
+    {
+    public:
+        const char* what() const throw() { return "Internal Cache Error"; }
+    };
+	
+	/**
+	 * \class		CachedFactory
+	 * \ingroup		CachedFactoryGroup
+	 * \brief		Factory with caching support
+	 * 
+     * This class acts as a Factory (it creates objects)
+     * but also keeps the already created objects to prevent
+     * long constructions time.
+	 * 
+	 * Note this implementation do not retain ownership.
+	 */
+	 template
+     <
+        class AbstractProduct,
+        typename IdentifierType,
+        typename CreatorParmTList = NullType,
+        template<class> class EncapsulationPolicy = SimplePointer,
+        class CreationPolicy = AlwaysCreate,
+        template <typename , typename> class EvictionPolicy = EvictRandom,
+        class StatisticPolicy = NoStatisticPolicy,
+        template<typename, class> class FactoryErrorPolicy = DefaultFactoryError,
+        class ObjVector = std::vector<AbstractProduct*>
+     >
+	 class CachedFactory : 
+            protected EncapsulationPolicy<AbstractProduct>,
+            public CreationPolicy, public StatisticPolicy, EvictionPolicy< AbstractProduct * , unsigned >
+	 {
+     private:
+        typedef Factory< AbstractProduct, IdentifierType, CreatorParmTList, FactoryErrorPolicy> Factory;
+        typedef FactoryImpl< AbstractProduct, IdentifierType, CreatorParmTList > Impl;
+        typedef Functor< AbstractProduct* , CreatorParmTList > ProductCreator;
+        typedef EncapsulationPolicy<AbstractProduct> NP;
+        typedef CreationPolicy  CP;
+        typedef StatisticPolicy SP;
+        typedef EvictionPolicy< AbstractProduct* , unsigned > EP;
+                
+        typedef typename Impl::Parm1 Parm1;
+        typedef typename Impl::Parm2 Parm2;
+        typedef typename Impl::Parm3 Parm3;
+        typedef typename Impl::Parm4 Parm4;
+        typedef typename Impl::Parm5 Parm5;
+        typedef typename Impl::Parm6 Parm6;
+        typedef typename Impl::Parm7 Parm7;
+        typedef typename Impl::Parm8 Parm8;
+        typedef typename Impl::Parm9 Parm9;
+        typedef typename Impl::Parm10 Parm10;
+        typedef typename Impl::Parm11 Parm11;
+        typedef typename Impl::Parm12 Parm12;
+        typedef typename Impl::Parm13 Parm13;
+        typedef typename Impl::Parm14 Parm14;
+        typedef typename Impl::Parm15 Parm15;
+        
+     public:
+        typedef typename NP::ProductReturn ProductReturn;
+     private:
+        typedef Key< Impl, IdentifierType > Key;
+        typedef std::map< Key, ObjVector >  KeyToObjVectorMap;
+        typedef std::map< AbstractProduct*, Key >  FetchedObjToKeyMap;
+        
+        Factory             factory;
+        KeyToObjVectorMap   fromKeyToObjVector;
+        FetchedObjToKeyMap  providedObjects;
+        unsigned            outObjects;
+
+        ObjVector& getContainerFromKey(Key key){
+            return fromKeyToObjVector[key];
+        }
+
+        AbstractProduct* const getPointerToObjectInContainer(ObjVector &entry)
+        {
+            if(entry.empty()) // No object available
+            {   // the object will be created in the calling function.
+                // It has to be created in the calling function because of
+                // the variable number of parameters for CreateObject(...) method
+                return NULL;
+            }
+            else
+            {   // returning the found object
+				AbstractProduct* pObject(entry.back());
+				assert(pObject!=NULL);
+				entry.pop_back();
+                return pObject;
+            }
+        }
+        
+        bool shouldCreateObject(AbstractProduct * const pProduct){
+            if(pProduct!=NULL) // object already exists
+                return false;
+            if(CP::canCreate()==false) // Are we allowed to Create ?
+                EP::evict(); // calling Eviction Policy to clean up
+            return true;
+        }
+        
+        void ReleaseObjectFromContainer(ObjVector &entry, AbstractProduct * const object)
+        {
+            entry.push_back(object);
+        }
+        
+        void onFetch(AbstractProduct * const pProduct)
+        {
+            SP::onFetch();
+            EP::onFetch(pProduct);
+            ++outObjects;
+        }
+        
+        void onRelease(AbstractProduct * const pProduct)
+        {
+            SP::onRelease();
+            EP::onRelease(pProduct);
+            --outObjects;
+        }
+        
+        void onCreate(AbstractProduct * const pProduct)
+        {
+            CP::onCreate();
+            SP::onCreate();
+            EP::onCreate(pProduct);
+        }
+        
+        void onDestroy(AbstractProduct * const pProduct)
+        {
+            CP::onDestroy();
+            SP::onDestroy();
+            EP::onDestroy(pProduct);
+        }
+		
+		// delete the object
+		template<class T> struct deleteObject : public std::unary_function<T, void>
+		{
+			void operator()(T x){ delete x; }
+		};
+
+		// delete the objects in the vector
+		template<class T> struct deleteVectorObjects : public std::unary_function<T, void>
+		{
+			void operator()(T x){
+				ObjVector &vec(x.second);
+				std::for_each(vec.begin(), vec.end(), deleteObject< typename ObjVector::value_type>());
+			}
+		};
+
+		// delete the keys of the map
+		template<class T> struct deleteMapKeys : public std::unary_function<T, void>
+		{
+			void operator()(T x){ delete x.first; }
+		};            
+
+     protected:
+        virtual void remove(AbstractProduct * const pProduct)
+        {
+            typename FetchedObjToKeyMap::iterator fetchedItr = providedObjects.find(pProduct);
+            if(fetchedItr!=providedObjects.end()) // object is unreleased.
+                throw CacheException();
+            bool productRemoved = false;
+            typename KeyToObjVectorMap::iterator objVectorItr;
+            typename ObjVector::iterator objItr;
+            for(objVectorItr=fromKeyToObjVector.begin();objVectorItr!=fromKeyToObjVector.end();++objVectorItr)
+            {
+                ObjVector &v((*objVectorItr).second);
+                objItr = remove_if(v.begin(), v.end(), std::bind2nd(std::equal_to<AbstractProduct*>(), pProduct));
+                if(objItr != v.end()) // we found the vector containing pProduct and removed it
+                {
+                    onDestroy(pProduct); // warning policies we are about to destroy an object
+                    v.erase(objItr, v.end()); // real removing
+                    productRemoved = true;
+                    break;
+                }
+            }
+            if(productRemoved==false)
+                throw CacheException(); // the product is not in the cache ?!
+            delete pProduct; // deleting it
+        }
+
+     public:
+        CachedFactory() : factory(), fromKeyToObjVector(), providedObjects(), outObjects(0)
+        {
+        }
+
+        ~CachedFactory()
+        {
+        	using namespace std;
+            // debug information
+            SP::onDebug();
+            // cleaning the Cache
+            for_each(fromKeyToObjVector.begin(), fromKeyToObjVector.end(),
+            	deleteVectorObjects< typename KeyToObjVectorMap::value_type >()
+            );
+            if(!providedObjects.empty())
+            {
+				// The factory is responsible for the creation and destruction of objects.
+				// If objects are out during the destruction of the Factory : deleting anyway.
+				// This might not be a good idea. But throwing an exception in a destructor is
+				// considered as a bad pratice and asserting might be too much.
+				// What to do ? Leaking memory or corrupting in use pointers ? hmm...
+                D( cout << "====>>  Cache destructor : deleting "<< providedObjects.size()<<" in use objects  <<====" << endl << endl; )
+                for_each(providedObjects.begin(), providedObjects.end(),
+	                deleteMapKeys< typename FetchedObjToKeyMap::value_type >()
+                );
+            }
+        }
+        
+        ///////////////////////////////////
+        // Acts as the proxy pattern and //
+        // forwards factory methods      //
+        ///////////////////////////////////
+        
+        bool Register(const IdentifierType& id, ProductCreator creator)
+        {
+            return factory.Register(id, creator);
+        }
+        
+        template <class PtrObj, typename CreaFn>
+        bool Register(const IdentifierType& id, const PtrObj& p, CreaFn fn)
+        {
+            return factory.Register(id, p, fn);
+        }
+        
+        bool Unregister(const IdentifierType& id)
+        {
+            return factory.Unregister(id);
+        }
+
+        /// Return the registered ID in this Factory
+        std::vector<IdentifierType>& RegisteredIds()
+        {
+            return factory.RegisteredIds();
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id)
+        {
+            Key key(id);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+        
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1 p1)
+        {
+            Key key(id,p1);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1 p1, Parm2 p2)
+        {
+            Key key(id,p1,p2);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1 p1, Parm2 p2, Parm3 p3)
+        {
+            Key key(id,p1,p2,p3);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4)
+        {
+            Key key(id,p1,p2,p3,p4);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5)
+        {
+            Key key(id,p1,p2,p3,p4,p5);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+				    Parm6 p6)
+        {
+            Key key(id,p1,p2,p3,p4,p5,p6);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5,key.p6);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+				    Parm6 p6, Parm7 p7 )
+        {
+            Key key(id,p1,p2,p3,p4,p5,p6,p7);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5,key.p6,key.p7);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+				    Parm6 p6, Parm7 p7, Parm8 p8)
+        {
+            Key key(id,p1,p2,p3,p4,p5,p6,p7,p8);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5,key.p6,key.p7,key.p8);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+				    Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9)
+        {
+            Key key(id,p1,p2,p3,p4,p5,p6,p7,p8,p9);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5,key.p6,key.p7,key.p8,key.p9);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+        
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+				    Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9,Parm10 p10)
+        {
+            Key key(id,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5,key.p6,key.p7,key.p8,key.p9,key.p10);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1  p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5  p5,
+				    Parm6  p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10,
+				    Parm11 p11)
+        {
+            Key key(id,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5,key.p6,key.p7,key.p8,key.p9,key.p10,key.p11);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1  p1,  Parm2  p2, Parm3 p3, Parm4 p4, Parm5  p5,
+				    Parm6  p6,  Parm7  p7, Parm8 p8, Parm9 p9, Parm10 p10,
+				    Parm11 p11, Parm12 p12)
+        {
+            Key key(id,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5,key.p6,key.p7,key.p8,key.p9,key.p10,key.p11,key.p12);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1  p1,  Parm2  p2,  Parm3  p3, Parm4 p4, Parm5  p5,
+				    Parm6  p6,  Parm7  p7,  Parm8  p8, Parm9 p9, Parm10 p10,
+				    Parm11 p11, Parm12 p12, Parm13 p13)
+        {
+            Key key(id,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5,key.p6,key.p7,key.p8,key.p9,key.p10,key.p11,key.p12
+                ,key.p13);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1  p1,  Parm2  p2,  Parm3  p3,  Parm4  p4, Parm5  p5,
+				    Parm6  p6,  Parm7  p7,  Parm8  p8,  Parm9  p9, Parm10 p10,
+				    Parm11 p11, Parm12 p12, Parm13 p13, Parm14 p14)
+        {
+            Key key(id,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5,key.p6,key.p7,key.p8,key.p9,key.p10,key.p11,key.p12
+                ,key.p13,key.p14);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+        ProductReturn CreateObject(const IdentifierType& id,
+				    Parm1  p1,  Parm2  p2,  Parm3  p3,  Parm4  p4,  Parm5  p5,
+				    Parm6  p6,  Parm7  p7,  Parm8  p8,  Parm9  p9,  Parm10 p10,
+				    Parm11 p11, Parm12 p12, Parm13 p13, Parm14 p14, Parm15 p15)
+        {
+            Key key(id,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15);
+            AbstractProduct *pProduct(getPointerToObjectInContainer(getContainerFromKey(key)));
+            if(shouldCreateObject(pProduct))
+            {
+                pProduct = factory.CreateObject(key.id,key.p1,key.p2,key.p3
+                ,key.p4,key.p5,key.p6,key.p7,key.p8,key.p9,key.p10,key.p11,key.p12
+                ,key.p13,key.p14,key.p15);
+                onCreate(pProduct);
+            }
+            onFetch(pProduct);
+            providedObjects[pProduct] = key;
+            return NP::encapsulate(pProduct);
+        }
+
+		/// Use this function to release the object
+		/**
+		 * if execution brakes in this function then you tried
+		 * to release an object that wasn't provided by this Cache
+		 * ... which is bad :-)
+		 */
+        void ReleaseObject(ProductReturn &object)
+        {
+            AbstractProduct* pProduct(NP::release(object));
+            typename FetchedObjToKeyMap::iterator itr = providedObjects.find(pProduct);
+            if(itr == providedObjects.end())
+                throw CacheException();
+            onRelease(pProduct);
+            ReleaseObjectFromContainer(getContainerFromKey((*itr).second), pProduct);
+            providedObjects.erase(itr);
+        }
+        
+        /// display the cache configuration
+        void displayCacheType()
+        {
+        	using namespace std;
+            cout << "############################" << endl;
+            cout << "## Cache configuration" << endl;
+            cout << "## + Encapsulation " << NP::name() << endl;
+            cout << "## + Creating      " << CP::name() << endl;
+            cout << "## + Eviction      " << EP::name() << endl;
+            cout << "## + Statistics    " << SP::name() << endl;
+            cout << "############################" << endl;
+        }
+     };
+} // namespace Loki
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/ConstPolicy.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/ConstPolicy.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/ConstPolicy.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,61 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 Richard Sposato
+// Copyright (c) 2006 Peter Kümmel
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The authors make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_CONST_POLICY_INC_
+#define LOKI_CONST_POLICY_INC_
+
+// $Id: ConstPolicy.h 769 2006-10-26 10:58:19Z syntheticpp $
+
+
+namespace Loki
+{
+
+////////////////////////////////////////////////////////////////////////////////
+/// @note These policy classes are used in LockingPtr and SmartPtr to define
+///  how const is propagated from the pointee.
+////////////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class DontPropagateConst
+///
+///  \ingroup ConstGroup
+///  Don't propagate constness of pointed or referred object.
+////////////////////////////////////////////////////////////////////////////////
+
+    template< class T >
+    struct DontPropagateConst
+    {
+        typedef T Type;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class PropagateConst
+///
+///  \ingroup ConstGroup
+///  Propagate constness of pointed or referred object.
+////////////////////////////////////////////////////////////////////////////////
+
+    template< class T >
+    struct PropagateConst
+    {
+        typedef const T Type;
+    };
+
+// default will not break existing code
+#ifndef LOKI_DEFAULT_CONSTNESS
+#define LOKI_DEFAULT_CONSTNESS ::Loki::DontPropagateConst
+#endif
+
+} // end namespace Loki
+
+#endif // end file guardian

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/DataGenerators.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/DataGenerators.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/DataGenerators.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,113 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Data Generator by Shannon Barber
+// This code DOES NOT accompany the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+//
+// Code covered by the MIT License
+// The author makes no representations about the suitability of this software
+//  for any purpose. It is provided "as is" without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_DATAGENERATORS_INC_
+#define LOKI_DATAGENERATORS_INC_
+
+// $Id: DataGenerators.h 751 2006-10-17 19:50:37Z syntheticpp $
+
+
+#include "Typelist.h"
+
+//Reference version
+
+/************************************************************************************
+// class template GenData
+// Iteratates a Typelist, and invokes the functor GenFunc<T>
+// for each type in the list, passing a functor along the way.
+// The functor is designed to be an insertion iterator which GenFunc<T>
+// can use to output information about the types in the list.
+//
+
+Example Use
+
+template<typename T>
+struct ExtractDataType
+    {
+    some_type operator()()
+        {
+        return create_value_from_type<T>;
+        }
+    };
+
+Loki::IterateTypes<parameter_tl, ExtractDataType> gendata;
+std::vector<some_type> stuff;
+gendata(std::back_inserter(stuff));
+*******************************************************************************/
+namespace Loki
+{
+    namespace TL
+        {
+        template<typename T>
+        struct nameof_type
+            {
+            const char* operator()()
+                {
+                return typeid(T).name();
+                }
+            };
+        template<typename T>
+        struct sizeof_type
+            {
+            size_t operator()()
+                {
+                return sizeof(T);
+                }
+            };
+    template <class TList, template <class> class GenFunc>
+    struct IterateTypes;
+     
+    template <class T1, class T2, template <class> class GenFunc>
+    struct IterateTypes<Typelist<T1, T2>, GenFunc>
+    {
+    typedef IterateTypes<T1, GenFunc> head_t;
+    head_t head;
+    typedef IterateTypes<T2, GenFunc> tail_t;
+    tail_t tail;
+    template<class II>
+    void operator()(II ii)
+        {
+        head.operator()(ii);
+        tail.operator()(ii);
+        }
+    };
+     
+    template <class AtomicType, template <class> class GenFunc>
+    struct IterateTypes
+    {
+    template<class II>
+    void operator()(II ii)
+        {
+        GenFunc<AtomicType> genfunc;
+        *ii = genfunc();
+        ++ii; //Is this even needed?
+        }
+    };
+    
+    template <template <class> class GenFunc>
+    struct IterateTypes<NullType, GenFunc>
+    {
+    template<class II>
+    void operator()(II ii)
+        {}
+    };
+    
+    template<typename Types, template <class> class UnitFunc, typename II>
+    void iterate_types(II ii)
+        {
+        Loki::TL::IterateTypes<Types, UnitFunc> it;
+        it(ii);
+        }
+    }//ns TL
+}//ns Loki
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/EmptyType.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/EmptyType.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/EmptyType.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_EMPTYTYPE_INC_
+#define LOKI_EMPTYTYPE_INC_
+
+// $Id: EmptyType.h 751 2006-10-17 19:50:37Z syntheticpp $
+
+
+namespace Loki
+{
+////////////////////////////////////////////////////////////////////////////////
+// class EmptyType
+// Used as a class type that doesn't hold anything
+// Useful as a strawman class
+////////////////////////////////////////////////////////////////////////////////
+
+    class EmptyType {};
+    
+    
+    inline bool operator==(const EmptyType&, const EmptyType&)
+    {
+        return true;
+    }   
+
+    inline bool operator<(const EmptyType&, const EmptyType&)
+    {
+        return false;
+    }
+    
+    inline bool operator>(const EmptyType&, const EmptyType&)
+    {
+        return false;
+    }
+}
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Factory.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Factory.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Factory.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1084 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// Copyright (c) 2005 by Peter Kuemmel
+// This code DOES NOT accompany the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+//
+// Code covered by the MIT License
+// The authors make no representations about the suitability of this software
+// for any purpose. It is provided "as is" without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_FACTORYPARM_INC_
+#define LOKI_FACTORYPARM_INC_
+
+// $Id: Factory.h 788 2006-11-24 22:30:54Z clitte_bbt $
+
+
+#include "LokiTypeInfo.h"
+#include "Functor.h"
+#include "AssocVector.h"
+#include "SmallObj.h"
+#include "Sequence.h"
+
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable: 4702)
+//unreachable code if OnUnknownType throws an exception
+#endif
+
+/**
+ * \defgroup	FactoriesGroup Factories
+ * \defgroup	FactoryGroup Factory
+ * \ingroup		FactoriesGroup
+ * \brief		Implements a generic object factory.
+ * 
+ * <i>The Factory Method pattern is an object-oriented design pattern.
+ * Like other creational patterns, it deals with the problem of creating objects
+ * (products) without specifying the exact class of object that will be created.
+ * Factory Method, one of the patterns from the Design Patterns book, handles
+ * this problem by defining a separate method for creating the objects, which
+ * subclasses can then override to specify the derived type of product that will
+ * be created.
+ * <br>
+ * More generally, the term Factory Method is often used to refer to any method
+ * whose main purpose is creation of objects.</i>
+ * <div ALIGN="RIGHT"><a href="http://en.wikipedia.org/wiki/Factory_method_pattern">
+ * Wikipedia</a></div>
+ * 
+ * Loki proposes a generic version of the Factory. Here is a typical use.<br>
+ * <code><br>
+ * 1. Factory< AbstractProduct, int > aFactory;<br>
+ * 2. aFactory.Register( 1, createProductNull );<br>
+ * 3. aFactory.CreateObject( 1 ); <br>
+ * </code><br>
+ * <br>
+ * - 1. The declaration<br>
+ * You want a Factory that produces AbstractProduct.<br>
+ * The client will refer to a creation method through an int.<br>
+ * - 2.The registration<br>
+ * The code that will contribute to the Factory will now need to declare its
+ * ProductCreator by registering them into the Factory.<br>
+ * A ProductCreator is a just a function that will return the right object. ie <br>
+ * <code>
+ * Product* createProductNull()<br>             
+ * {<br>
+ *     return new Product<br>
+ * }<br>
+ * </code><br>
+ * - 3. The use<br>
+ * Now the client can create object by calling the Factory's CreateObject method
+ * with the right identifier. If the ProductCreator were to have arguments
+ * (<i>ie :Product* createProductParm( int a, int b )</i>)
+ */
+
+namespace Loki
+{
+
+/**
+ * \defgroup	FactoryErrorPoliciesGroup Factory Error Policies
+ * \ingroup		FactoryGroup
+ * \brief		Manages the "Unknown Type" error in an object factory
+ * 
+ * \class DefaultFactoryError
+ * \ingroup		FactoryErrorPoliciesGroup
+ * \brief		Default policy that throws an exception		
+ * 
+ */
+
+    template <typename IdentifierType, class AbstractProduct>
+    struct DefaultFactoryError
+    {
+        struct Exception : public std::exception
+        {
+            const char* what() const throw() { return "Unknown Type"; }
+        };
+
+        static AbstractProduct* OnUnknownType(IdentifierType)
+        {
+            throw Exception();
+        }
+    };
+
+
+#define LOKI_ENABLE_NEW_FACTORY_CODE
+#ifdef LOKI_ENABLE_NEW_FACTORY_CODE
+
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+////////////////////////////////////////////////////////////////////////////////
+
+    struct FactoryImplBase
+    {
+        typedef EmptyType Parm1;
+        typedef EmptyType Parm2;
+        typedef EmptyType Parm3;
+        typedef EmptyType Parm4;
+        typedef EmptyType Parm5;
+        typedef EmptyType Parm6;
+        typedef EmptyType Parm7;
+        typedef EmptyType Parm8;
+        typedef EmptyType Parm9;
+        typedef EmptyType Parm10;
+        typedef EmptyType Parm11;
+        typedef EmptyType Parm12;
+        typedef EmptyType Parm13;
+        typedef EmptyType Parm14;
+        typedef EmptyType Parm15;
+    };
+
+    template <typename AP, typename Id, typename TList >
+    struct FactoryImpl;
+
+    template<typename AP, typename Id>
+    struct FactoryImpl<AP, Id, NullType>
+                : public FactoryImplBase
+    {
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id & id ) = 0;
+    };
+template <typename AP, typename Id, typename P1 >
+    struct FactoryImpl<AP,Id, Seq<P1> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1 ) = 0;
+    };
+
+    template<typename AP, typename Id, typename P1,typename P2 >
+    struct FactoryImpl<AP, Id, Seq<P1, P2> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2 ) = 0;
+    };
+
+    template<typename AP, typename Id, typename P1,typename P2,typename P3 >
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3 ) = 0;
+    };
+
+    template<typename AP, typename Id, typename P1,typename P2,typename P3,typename P4 >
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4 ) = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5 >
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5 ) = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6>
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5, P6> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6 )
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7>
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5, P6, P7> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7 )
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8>
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5, P6, P7, P8> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9>
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10>
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9,Parm10)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10,
+    typename P11>
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9,Parm10,
+                                Parm11)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10,
+    typename P11,typename P12>
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9,Parm10,
+                                Parm11,Parm12)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10,
+    typename P11,typename P12,typename P13>
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9,Parm10,
+                                Parm11,Parm12,Parm13)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10,
+    typename P11,typename P12,typename P13,typename P14>
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        typedef typename TypeTraits<P14>::ParameterType Parm14;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm8,Parm10,
+                                Parm11,Parm12,Parm13,Parm14)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10,
+    typename P11,typename P12,typename P13,typename P14,typename P15 >
+    struct FactoryImpl<AP, Id, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15> >
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        typedef typename TypeTraits<P14>::ParameterType Parm14;
+        typedef typename TypeTraits<P15>::ParameterType Parm15;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9,Parm10,
+                                Parm11,Parm12,Parm13,Parm14,Parm15 )
+        = 0;
+    };
+
+#ifndef LOKI_DISABLE_TYPELIST_MACROS
+
+    template <typename AP, typename Id, typename P1 >
+    struct FactoryImpl<AP,Id, LOKI_TYPELIST_1( P1 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1 ) = 0;
+    };
+
+    template<typename AP, typename Id, typename P1,typename P2 >
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_2( P1, P2 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2 ) = 0;
+    };
+
+    template<typename AP, typename Id, typename P1,typename P2,typename P3 >
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_3( P1, P2, P3 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3 ) = 0;
+    };
+
+    template<typename AP, typename Id, typename P1,typename P2,typename P3,typename P4 >
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_4( P1, P2, P3, P4 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4 ) = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5 >
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_5( P1, P2, P3, P4, P5 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5 ) = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6>
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_6( P1, P2, P3, P4, P5, P6 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6 )
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7>
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_7( P1, P2, P3, P4, P5, P6, P7 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7 )
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8>
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_8( P1, P2, P3, P4, P5, P6, P7, P8 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9>
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_9( P1, P2, P3, P4, P5, P6, P7, P8, P9 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10>
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_10( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9,Parm10)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10,
+    typename P11>
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_11( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9,Parm10,
+                                Parm11)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10,
+    typename P11,typename P12>
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_12( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9,Parm10,
+                                Parm11,Parm12)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10,
+    typename P11,typename P12,typename P13>
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_13( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9,Parm10,
+                                Parm11,Parm12,Parm13)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10,
+    typename P11,typename P12,typename P13,typename P14>
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_14( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        typedef typename TypeTraits<P14>::ParameterType Parm14;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm8,Parm10,
+                                Parm11,Parm12,Parm13,Parm14)
+        = 0;
+    };
+
+    template<typename AP, typename Id,
+    typename P1,typename P2,typename P3,typename P4,typename P5,
+    typename P6,typename P7,typename P8,typename P9,typename P10,
+    typename P11,typename P12,typename P13,typename P14,typename P15 >
+    struct FactoryImpl<AP, Id, LOKI_TYPELIST_15( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 )>
+                : public FactoryImplBase
+    {
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        typedef typename TypeTraits<P14>::ParameterType Parm14;
+        typedef typename TypeTraits<P15>::ParameterType Parm15;
+        virtual ~FactoryImpl() {}
+        virtual AP* CreateObject(const Id& id,Parm1, Parm2, Parm3, Parm4, Parm5,
+                                Parm6, Parm7, Parm8, Parm9,Parm10,
+                                Parm11,Parm12,Parm13,Parm14,Parm15 )
+        = 0;
+    };
+
+#endif //LOKI_DISABLE_TYPELIST_MACROS
+
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class Factory
+///
+///  \ingroup FactoryGroup
+///  Implements a generic object factory.
+///
+///  Create functions can have up to 15 parameters.
+///
+///  \par Singleton lifetime when used with Loki::SingletonHolder
+///  Because Factory uses internally Functors which inherits from
+///  SmallObject you must use the singleton lifetime
+///  \code Loki::LongevityLifetime::DieAsSmallObjectChild \endcode
+///  Alternatively you could suppress for Functor the inheritance
+///  from SmallObject by defining the macro:
+/// \code LOKI_FUNCTOR_IS_NOT_A_SMALLOBJECT \endcode
+////////////////////////////////////////////////////////////////////////////////
+    template
+    <
+        class AbstractProduct,
+        typename IdentifierType,
+        typename CreatorParmTList = NullType,
+        template<typename, class> class FactoryErrorPolicy = DefaultFactoryError
+    >
+    class Factory : public FactoryErrorPolicy<IdentifierType, AbstractProduct>
+    {
+        typedef FactoryImpl< AbstractProduct, IdentifierType, CreatorParmTList > Impl;
+
+        typedef typename Impl::Parm1 Parm1;
+        typedef typename Impl::Parm2 Parm2;
+        typedef typename Impl::Parm3 Parm3;
+        typedef typename Impl::Parm4 Parm4;
+        typedef typename Impl::Parm5 Parm5;
+        typedef typename Impl::Parm6 Parm6;
+        typedef typename Impl::Parm7 Parm7;
+        typedef typename Impl::Parm8 Parm8;
+        typedef typename Impl::Parm9 Parm9;
+        typedef typename Impl::Parm10 Parm10;
+        typedef typename Impl::Parm11 Parm11;
+        typedef typename Impl::Parm12 Parm12;
+        typedef typename Impl::Parm13 Parm13;
+        typedef typename Impl::Parm14 Parm14;
+        typedef typename Impl::Parm15 Parm15;
+
+        typedef Functor<AbstractProduct*, CreatorParmTList> ProductCreator;
+
+        typedef AssocVector<IdentifierType, ProductCreator> IdToProductMap;
+
+        IdToProductMap associations_;
+
+    public:
+
+        Factory()
+            : associations_()
+        {
+        }
+
+        ~Factory()
+        {
+            associations_.erase(associations_.begin(), associations_.end());
+        }
+
+        bool Register(const IdentifierType& id, ProductCreator creator)
+        {
+            return associations_.insert(
+                         typename IdToProductMap::value_type(id, creator)).second != 0;
+        }
+
+        template <class PtrObj, typename CreaFn>
+        bool Register(const IdentifierType& id, const PtrObj& p, CreaFn fn)
+        {
+            ProductCreator creator( p, fn );
+            return associations_.insert(
+                typename IdToProductMap::value_type(id, creator)).second != 0;
+        }
+
+        bool Unregister(const IdentifierType& id)
+        {
+            return associations_.erase(id) != 0;
+        }
+
+        std::vector<IdentifierType> RegisteredIds()
+        {
+            std::vector<IdentifierType> ids;
+            for(typename IdToProductMap::iterator it = associations_.begin();
+                it != associations_.end(); ++it)
+            {
+                ids.push_back(it->first);
+            }
+            return ids;
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1 p1)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1 p1, Parm2 p2)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1 p1, Parm2 p2, Parm3 p3)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+                                            Parm6 p6)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5,p6 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+                                            Parm6 p6, Parm7 p7 )
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5,p6,p7 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+                                            Parm6 p6, Parm7 p7, Parm8 p8)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5,p6,p7,p8 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+                                            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5,p6,p7,p8,p9 );
+            return this->OnUnknownType(id);
+        }
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+                                            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9,Parm10 p10)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5,p6,p7,p8,p9,p10 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1  p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5  p5,
+                                            Parm6  p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10,
+                                            Parm11 p11)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1  p1,  Parm2  p2, Parm3 p3, Parm4 p4, Parm5  p5,
+                                            Parm6  p6,  Parm7  p7, Parm8 p8, Parm9 p9, Parm10 p10,
+                                            Parm11 p11, Parm12 p12)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1  p1,  Parm2  p2,  Parm3  p3, Parm4 p4, Parm5  p5,
+                                            Parm6  p6,  Parm7  p7,  Parm8  p8, Parm9 p9, Parm10 p10,
+                                            Parm11 p11, Parm12 p12, Parm13 p13)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1  p1,  Parm2  p2,  Parm3  p3,  Parm4  p4, Parm5  p5,
+                                            Parm6  p6,  Parm7  p7,  Parm8  p8,  Parm9  p9, Parm10 p10,
+                                            Parm11 p11, Parm12 p12, Parm13 p13, Parm14 p14)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14 );
+            return this->OnUnknownType(id);
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id,
+                                            Parm1  p1,  Parm2  p2,  Parm3  p3,  Parm4  p4,  Parm5  p5,
+                                            Parm6  p6,  Parm7  p7,  Parm8  p8,  Parm9  p9,  Parm10 p10,
+                                            Parm11 p11, Parm12 p12, Parm13 p13, Parm14 p14, Parm15 p15)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+                return (i->second)( p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15 );
+            return this->OnUnknownType(id);
+        }
+
+    };
+
+#else
+
+    template
+    <
+        class AbstractProduct,
+        typename IdentifierType,
+        typename ProductCreator = AbstractProduct* (*)(),
+        template<typename, class>
+            class FactoryErrorPolicy = DefaultFactoryError
+    >
+    class Factory
+        : public FactoryErrorPolicy<IdentifierType, AbstractProduct>
+    {
+    public:
+        bool Register(const IdentifierType& id, ProductCreator creator)
+        {
+            return associations_.insert(
+                typename IdToProductMap::value_type(id, creator)).second != 0;
+        }
+
+        bool Unregister(const IdentifierType& id)
+        {
+            return associations_.erase(id) != 0;
+        }
+
+        AbstractProduct* CreateObject(const IdentifierType& id)
+        {
+            typename IdToProductMap::iterator i = associations_.find(id);
+            if (i != associations_.end())
+            {
+                return (i->second)();
+            }
+            return this->OnUnknownType(id);
+        }
+
+    private:
+        typedef AssocVector<IdentifierType, ProductCreator> IdToProductMap;
+        IdToProductMap associations_;
+    };
+
+#endif //#define ENABLE_NEW_FACTORY_CODE
+
+/**
+ *   \defgroup	CloneFactoryGroup Clone Factory
+ *   \ingroup	FactoriesGroup
+ *   \brief		Creates a copy from a polymorphic object.
+ *
+ *   \class		CloneFactory
+ *   \ingroup	CloneFactoryGroup
+ *   \brief		Creates a copy from a polymorphic object.
+ */
+
+    template
+    <
+        class AbstractProduct,
+        class ProductCreator =
+            AbstractProduct* (*)(const AbstractProduct*),
+        template<typename, class>
+            class FactoryErrorPolicy = DefaultFactoryError
+    >
+    class CloneFactory
+        : public FactoryErrorPolicy<TypeInfo, AbstractProduct>
+    {
+    public:
+        bool Register(const TypeInfo& ti, ProductCreator creator)
+        {
+            return associations_.insert(
+                typename IdToProductMap::value_type(ti, creator)).second != 0;
+        }
+
+        bool Unregister(const TypeInfo& id)
+        {
+            return associations_.erase(id) != 0;
+        }
+
+        AbstractProduct* CreateObject(const AbstractProduct* model)
+        {
+            if (model == NULL)
+            {
+            	return NULL;
+            }
+
+            typename IdToProductMap::iterator i = 
+            	associations_.find(typeid(*model));
+            	
+            if (i != associations_.end())
+            {
+                return (i->second)(model);
+            }
+            return this->OnUnknownType(typeid(*model));
+        }
+
+    private:
+        typedef AssocVector<TypeInfo, ProductCreator> IdToProductMap;
+        IdToProductMap associations_;
+    };
+        
+} // namespace Loki
+
+
+#ifdef _MSC_VER
+#pragma warning( pop )
+#endif
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Function.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Function.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Function.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,371 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2005 Peter Kümmel
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_FUNCTION_INC_
+#define LOKI_FUNCTION_INC_
+
+// $Id: Function.h 750 2006-10-17 19:50:02Z syntheticpp $
+
+
+#define LOKI_ENABLE_FUNCTION
+
+#include <loki/Functor.h>
+#include <loki/Sequence.h>
+
+namespace Loki
+{
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \struct Function
+    ///
+    ///  \ingroup FunctorGroup
+    ///  Allows a boost/TR1 like usage of Functor.
+    /// 
+    ///  \par Usage
+    ///
+    ///      - free functions: e.g.  \code Function<int(int,int)> f(&freeFunction);
+    ///                              \endcode
+    ///      - member functions: e.g \code Function<int()> f(&object,&ObjectType::memberFunction); 
+    ///                              \endcode
+    ///
+    ///  see also test/Function/FunctionTest.cpp (the modified test program from boost)
+    ////////////////////////////////////////////////////////////////////////////////
+    
+    template<class R = void()>
+    struct Function;
+
+
+    template<class R>
+    struct Function<R()> : public Functor<R>
+    {
+        typedef Functor<R> FBase;
+
+        Function() : FBase() {}
+
+        Function(const Function& func) : FBase() 
+        {
+            if( !func.empty()) 
+                FBase::operator=(func);
+        }
+                
+        // test on emptiness
+        template<class R2> 
+        Function(Function<R2()> func) : FBase() 
+        {
+            if(!func.empty())
+                FBase::operator=(func);
+        }
+        
+        // clear  by '= 0'
+        Function(const int i) : FBase()
+        { 
+            if(i==0)
+                FBase::clear();
+            else
+                throw std::runtime_error("Loki::Function(const int i): i!=0");
+        }
+        
+        template<class Func>
+        Function(Func func) : FBase(func) {}
+
+        template<class Host, class Func>
+        Function(const Host& host, const Func& func) : FBase(host,func) {}
+
+    };
+
+
+////////////////////////////////////////////////////////////////////////////////
+// macros for the repetitions
+////////////////////////////////////////////////////////////////////////////////
+
+#define LOKI_FUNCTION_BODY                          \
+                                                    \
+        Function() : FBase() {}                     \
+                                                    \
+        Function(const Function& func) : FBase()    \
+        {                                           \
+            if( !func.empty())                      \
+                FBase::operator=(func);             \
+        }                                           \
+                                                    \
+        Function(const int i) : FBase()             \
+        {                                           \
+            if(i==0)                                \
+                FBase::clear();                     \
+            else                                    \
+                throw std::runtime_error(           \
+            "Loki::Function(const int i): i!=0");   \
+        }                                           \
+                                                    \
+        template<class Func>                        \
+        Function(Func func) : FBase(func) {}        \
+                                                    \
+        template<class Host, class Func>            \
+        Function(const Host& host, const Func& func): FBase(host,func) {}
+
+        
+#define LOKI_FUNCTION_R2_CTOR_BODY          \
+                                            \
+        : FBase()                           \
+        {                                   \
+            if(!func.empty())               \
+                FBase::operator=(func);     \
+        }
+
+
+////////////////////////////////////////////////////////////////////////////////
+// repetitions
+////////////////////////////////////////////////////////////////////////////////
+
+    template<>
+    struct Function<>
+        : public Loki::Functor<>
+    {
+        typedef Functor<> FBase;
+        
+        template<class R2>
+        Function(Function<R2()> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY // if compilation breaks here then 
+                           // Function.h was not included before
+                           // Functor.h, check your include order
+                           // or define LOKI_ENABLE_FUNCTION 
+    };
+
+    template<class R,class P01>
+    struct Function<R(P01)> 
+        : public Loki::Functor<R, Seq<P01> >
+    {
+        typedef Functor<R, Seq<P01> > FBase;
+        
+        template<class R2,class Q01>
+        Function(Function<R2(Q01)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,class P01,class P02>
+    struct Function<R(P01,P02)> 
+        : public Functor<R, Seq<P01,P02> >
+    {
+        typedef Functor<R, Seq<P01,P02> > FBase;
+
+        template<class R2,class Q01, class Q02>
+        Function(Function<R2(Q01,Q02)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,class P01,class P02, class P03>
+    struct Function<R(P01,P02,P03)> 
+        : public Functor<R, Seq<P01,P02,P03> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03> > FBase;
+
+        template<class R2,class Q01, class Q02,class Q03>
+        Function(Function<R2(Q01,Q02,Q03)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,class P01,class P02, class P03,class P04>
+    struct Function<R(P01,P02,P03,P04)> 
+        : public Functor<R, Seq<P01,P02,P03,P04> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04> > FBase;
+
+        template<class R2,class Q01,class Q02, class Q03,class Q04>
+        Function(Function<R2(Q01,Q02,Q03,Q04)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,class P01,class P02, class P03,class P04,class P05>
+    struct Function<R(P01,P02,P03,P04,P05)> 
+        : public Functor<R, Seq<P01,P02,P03,P04,P05> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05> > FBase;
+
+        template<class R2,class Q01,class Q02, class Q03,class Q04,class Q05>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,    class P01,class P02, class P03,class P04,class P05,
+                        class P06>
+    struct Function<R(P01,P02,P03,P04,P05,P06)> 
+        : public Functor<R, Seq<P01,P02,P03,P04,P05,P06> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06> > FBase;
+        
+        template<class R2,    class Q01,class Q02, class Q03,class Q04,class Q05,
+                            class Q06>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,    class P01,class P02, class P03,class P04,class P05,
+                        class P06,class P07>
+    struct Function<R(P01,P02,P03,P04,P05,P06,P07)> 
+        : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07> > FBase;
+
+        template<class R2,    class Q01,class Q02, class Q03,class Q04,class Q05,
+                            class Q06,class Q07>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,    class P01,class P02, class P03,class P04,class P05,
+                        class P06,class P07, class P08>
+    struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08)> 
+        : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08> > FBase;
+        
+        template<class R2,    class Q01,class Q02, class Q03,class Q04,class Q05,
+                            class Q06,class Q07, class Q08>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,    class P01,class P02, class P03,class P04,class P05,
+                        class P06,class P07, class P08,class P09>
+    struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09)> 
+        : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09    > > FBase;
+        
+        template<class R2,    class Q01,class Q02, class Q03,class Q04,class Q05,
+                            class Q06,class Q07, class Q08,class Q09>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,    class P01,class P02, class P03,class P04,class P05,
+                        class P06,class P07, class P08,class P09,class P10>
+    struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10)> 
+        : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10> > FBase;
+        
+        template<class R2,    class Q01,class Q02, class Q03,class Q04,class Q05,
+                            class Q06,class Q07, class Q08,class Q09,class Q10>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,    class P01,class P02, class P03,class P04,class P05,
+                        class P06,class P07, class P08,class P09,class P10,
+                        class P11>
+    struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11)> 
+            : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11> >FBase;
+        
+        template<class R2,    class Q01,class Q02, class Q03,class Q04,class Q05,
+                            class Q06,class Q07, class Q08,class Q09,class Q10,
+                            class Q11>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,    class P01,class P02, class P03,class P04,class P05,
+                        class P06,class P07, class P08,class P09,class P10,
+                        class P11,class P12>
+    struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12)> 
+        : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12> > FBase;
+        
+        template<class R2,    class Q01,class Q02, class Q03,class Q04,class Q05,
+                            class Q06,class Q07, class Q08,class Q09,class Q10,
+                            class Q11,class Q12>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,    class P01,class P02, class P03,class P04,class P05,
+                        class P06,class P07, class P08,class P09,class P10,
+                        class P11,class P12, class P13>
+    struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13)> 
+        : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13> > FBase;
+        
+        template<class R2,    class Q01,class Q02, class Q03,class Q04,class Q05,
+                            class Q06,class Q07, class Q08,class Q09,class Q10,
+                            class Q11,class Q12, class Q13>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12,Q13)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,    class P01,class P02, class P03,class P04,class P05,
+                        class P06,class P07, class P08,class P09,class P10,
+                        class P11,class P12, class P13,class P14>
+    struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14)> 
+        : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14> > FBase;
+        template<class R2,    class Q01,class Q02, class Q03,class Q04,class Q05,
+                            class Q06,class Q07, class Q08,class Q09,class Q10,
+                            class Q11,class Q12, class Q13,class Q14>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12,Q13,Q14)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+    template<class R,    class P01,class P02, class P03,class P04,class P05,
+                        class P06,class P07, class P08,class P09,class P10,
+                        class P11,class P12, class P13,class P14,class P15>
+    struct Function<R(P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15)> 
+        : public Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15> >
+    {
+        typedef Functor<R, Seq<P01,P02,P03,P04,P05,P06,P07,P08,P09,P10,P11,P12,P13,P14,P15> > FBase;
+
+        template<class R2,    class Q01,class Q02, class Q03,class Q04,class Q05,
+                            class Q06,class Q07, class Q08,class Q09,class Q10,
+                            class Q11,class Q12, class Q13,class Q14,class Q15>
+        Function(Function<R2(Q01,Q02,Q03,Q04,Q05,Q06,Q07,Q08,Q09,Q10,Q11,Q12,Q13,Q14,Q15)> func) 
+            LOKI_FUNCTION_R2_CTOR_BODY
+
+        LOKI_FUNCTION_BODY
+    };
+
+}// namespace Loki
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Functor.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Functor.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Functor.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1789 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_FUNCTOR_INC_
+#define LOKI_FUNCTOR_INC_
+
+// $Id: Functor.h 750 2006-10-17 19:50:02Z syntheticpp $
+
+
+#include "Typelist.h"
+#include "Sequence.h"
+#include "EmptyType.h"
+#include "SmallObj.h"
+#include "TypeTraits.h"
+#include <typeinfo>
+#include <memory>
+
+///  \defgroup FunctorGroup Function objects
+
+#ifndef LOKI_FUNCTOR_IS_NOT_A_SMALLOBJECT
+//#define LOKI_FUNCTOR_IS_NOT_A_SMALLOBJECT
+#endif
+
+#ifndef LOKI_FUNCTORS_ARE_COMPARABLE
+//#define LOKI_FUNCTORS_ARE_COMPARABLE
+#endif
+
+
+/// \namespace Loki
+/// All classes of Loki are in the Loki namespace
+namespace Loki
+{
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl (internal)
+////////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+        template <typename R, template <class, class> class ThreadingModel>
+        struct FunctorImplBase 
+#ifdef LOKI_FUNCTOR_IS_NOT_A_SMALLOBJECT
+        {
+#else
+            : public SmallValueObject<ThreadingModel>
+        {
+            inline FunctorImplBase() :
+                SmallValueObject<ThreadingModel>() {}
+            inline FunctorImplBase(const FunctorImplBase&) :
+                SmallValueObject<ThreadingModel>() {}
+#endif
+
+            typedef R ResultType;
+            typedef FunctorImplBase<R, ThreadingModel> FunctorImplBaseType;
+
+            typedef EmptyType Parm1;
+            typedef EmptyType Parm2;
+            typedef EmptyType Parm3;
+            typedef EmptyType Parm4;
+            typedef EmptyType Parm5;
+            typedef EmptyType Parm6;
+            typedef EmptyType Parm7;
+            typedef EmptyType Parm8;
+            typedef EmptyType Parm9;
+            typedef EmptyType Parm10;
+            typedef EmptyType Parm11;
+            typedef EmptyType Parm12;
+            typedef EmptyType Parm13;
+            typedef EmptyType Parm14;
+            typedef EmptyType Parm15;
+
+
+            virtual ~FunctorImplBase()
+            {}
+
+            virtual FunctorImplBase* DoClone() const = 0;
+
+            template <class U>
+            static U* Clone(U* pObj)
+            {
+                if (!pObj) return 0;
+                U* pClone = static_cast<U*>(pObj->DoClone());
+                assert(typeid(*pClone) == typeid(*pObj));
+                return pClone;
+            }
+
+
+#ifdef LOKI_FUNCTORS_ARE_COMPARABLE
+
+            virtual bool operator==(const FunctorImplBase&) const = 0;
+           
+#endif            
+         
+        };
+    }
+    
+////////////////////////////////////////////////////////////////////////////////
+// macro LOKI_DEFINE_CLONE_FUNCTORIMPL
+// Implements the DoClone function for a functor implementation
+////////////////////////////////////////////////////////////////////////////////
+
+#define LOKI_DEFINE_CLONE_FUNCTORIMPL(Cls) \
+    virtual Cls* DoClone() const { return new Cls(*this); }
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// The base class for a hierarchy of functors. The FunctorImpl class is not used
+//     directly; rather, the Functor class manages and forwards to a pointer to
+//     FunctorImpl
+// You may want to derive your own functors from FunctorImpl.
+// Specializations of FunctorImpl for up to 15 parameters follow
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, class TList, 
+        template <class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>
+    class FunctorImpl;
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 0 (zero) parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, template <class, class> class ThreadingModel>
+    class FunctorImpl<R, NullType, ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        virtual R operator()() = 0;
+    };
+
+    ////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 1 parameter
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, template <class, class> class ThreadingModel>
+        class FunctorImpl<R, Seq<P1>, ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        virtual R operator()(Parm1) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 2 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, 
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, Seq<P1, P2>, ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        virtual R operator()(Parm1, Parm2) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 3 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, Seq<P1, P2, P3>, ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        virtual R operator()(Parm1, Parm2, Parm3) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 4 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, Seq<P1, P2, P3, P4>, ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 5 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, Seq<P1, P2, P3, P4, P5>, ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 6 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, Seq<P1, P2, P3, P4, P5, P6>, ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 7 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, Seq<P1, P2, P3, P4, P5, P6, P7>, ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 8 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, Seq<P1, P2, P3, P4, P5, P6, P7, P8>,
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 9 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9>,
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 10 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10>,
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 11 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10, typename P11,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R,
+            Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11>,
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10, Parm11) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 12 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10, typename P11, typename P12,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R,
+            Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12>,
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10, Parm11, Parm12) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 13 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10, typename P11, typename P12, typename P13,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R,
+            Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13>,
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10, Parm11, Parm12, Parm13) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 14 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10, typename P11, typename P12, typename P13, typename P14,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R,
+            Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13,
+                P14>,
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        typedef typename TypeTraits<P14>::ParameterType Parm14;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10, Parm11, Parm12, Parm13, Parm14) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 15 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10, typename P11, typename P12, typename P13, typename P14,
+        typename P15, template <class, class> class ThreadingModel>
+    class FunctorImpl<R,
+            Seq<P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13,
+                P14, P15>,
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        typedef typename TypeTraits<P14>::ParameterType Parm14;
+        typedef typename TypeTraits<P15>::ParameterType Parm15;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10, Parm11, Parm12, Parm13, Parm14,
+            Parm15) = 0;
+    };
+
+#ifndef LOKI_DISABLE_TYPELIST_MACROS
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 1 parameter
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, template <class, class> class ThreadingModel>
+    class FunctorImpl<R, LOKI_TYPELIST_1(P1), ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        virtual R operator()(Parm1) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 2 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, 
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, LOKI_TYPELIST_2(P1, P2), ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        virtual R operator()(Parm1, Parm2) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 3 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, LOKI_TYPELIST_3(P1, P2, P3), ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        virtual R operator()(Parm1, Parm2, Parm3) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 4 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, LOKI_TYPELIST_4(P1, P2, P3, P4), ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 5 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, LOKI_TYPELIST_5(P1, P2, P3, P4, P5), ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 6 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, LOKI_TYPELIST_6(P1, P2, P3, P4, P5, P6), ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 7 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, LOKI_TYPELIST_7(P1, P2, P3, P4, P5, P6, P7), ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 8 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, LOKI_TYPELIST_8(P1, P2, P3, P4, P5, P6, P7, P8),
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 9 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, LOKI_TYPELIST_9(P1, P2, P3, P4, P5, P6, P7, P8, P9),
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 10 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R, LOKI_TYPELIST_10(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10),
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 11 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10, typename P11,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R,
+            LOKI_TYPELIST_11(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11),
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10, Parm11) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 12 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10, typename P11, typename P12,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R,
+            LOKI_TYPELIST_12(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12),
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10, Parm11, Parm12) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 13 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10, typename P11, typename P12, typename P13,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R,
+            LOKI_TYPELIST_13(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13),
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10, Parm11, Parm12, Parm13) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 14 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10, typename P11, typename P12, typename P13, typename P14,
+        template <class, class> class ThreadingModel>
+    class FunctorImpl<R,
+            LOKI_TYPELIST_14(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13,
+                P14),
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        typedef typename TypeTraits<P14>::ParameterType Parm14;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10, Parm11, Parm12, Parm13, Parm14) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorImpl
+// Specialization for 15 parameters
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, typename P1, typename P2, typename P3, typename P4,
+        typename P5, typename P6, typename P7, typename P8, typename P9,
+        typename P10, typename P11, typename P12, typename P13, typename P14,
+        typename P15, template <class, class> class ThreadingModel>
+    class FunctorImpl<R,
+            LOKI_TYPELIST_15(P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13,
+                P14, P15),
+            ThreadingModel>
+        : public Private::FunctorImplBase<R, ThreadingModel>
+    {
+    public:
+        typedef R ResultType;
+        typedef typename TypeTraits<P1>::ParameterType Parm1;
+        typedef typename TypeTraits<P2>::ParameterType Parm2;
+        typedef typename TypeTraits<P3>::ParameterType Parm3;
+        typedef typename TypeTraits<P4>::ParameterType Parm4;
+        typedef typename TypeTraits<P5>::ParameterType Parm5;
+        typedef typename TypeTraits<P6>::ParameterType Parm6;
+        typedef typename TypeTraits<P7>::ParameterType Parm7;
+        typedef typename TypeTraits<P8>::ParameterType Parm8;
+        typedef typename TypeTraits<P9>::ParameterType Parm9;
+        typedef typename TypeTraits<P10>::ParameterType Parm10;
+        typedef typename TypeTraits<P11>::ParameterType Parm11;
+        typedef typename TypeTraits<P12>::ParameterType Parm12;
+        typedef typename TypeTraits<P13>::ParameterType Parm13;
+        typedef typename TypeTraits<P14>::ParameterType Parm14;
+        typedef typename TypeTraits<P15>::ParameterType Parm15;
+        virtual R operator()(Parm1, Parm2, Parm3, Parm4, Parm5, Parm6, 
+            Parm7, Parm8, Parm9, Parm10, Parm11, Parm12, Parm13, Parm14,
+            Parm15) = 0;
+    };
+
+#endif //LOKI_DISABLE_TYPELIST_MACROS
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorHandler
+// Wraps functors and pointers to functions
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class ParentFunctor, typename Fun>
+    class FunctorHandler
+        : public ParentFunctor::Impl
+    {
+        typedef typename ParentFunctor::Impl Base;
+
+    public:
+        typedef typename Base::ResultType ResultType;
+        typedef typename Base::Parm1 Parm1;
+        typedef typename Base::Parm2 Parm2;
+        typedef typename Base::Parm3 Parm3;
+        typedef typename Base::Parm4 Parm4;
+        typedef typename Base::Parm5 Parm5;
+        typedef typename Base::Parm6 Parm6;
+        typedef typename Base::Parm7 Parm7;
+        typedef typename Base::Parm8 Parm8;
+        typedef typename Base::Parm9 Parm9;
+        typedef typename Base::Parm10 Parm10;
+        typedef typename Base::Parm11 Parm11;
+        typedef typename Base::Parm12 Parm12;
+        typedef typename Base::Parm13 Parm13;
+        typedef typename Base::Parm14 Parm14;
+        typedef typename Base::Parm15 Parm15;
+        
+        FunctorHandler(const Fun& fun) : f_(fun) {}
+        
+        LOKI_DEFINE_CLONE_FUNCTORIMPL(FunctorHandler)
+
+
+#ifdef LOKI_FUNCTORS_ARE_COMPARABLE
+
+
+        bool operator==(const typename Base::FunctorImplBaseType& rhs) const
+        {
+            // there is no static information if Functor holds a member function 
+            // or a free function; this is the main difference to tr1::function
+            if(typeid(*this) != typeid(rhs))
+                return false; // cannot be equal
+
+            const FunctorHandler& fh = static_cast<const FunctorHandler&>(rhs);
+            // if this line gives a compiler error, you are using a function object.
+            // you need to implement bool MyFnObj::operator == (const MyFnObj&) const;
+            return  f_==fh.f_;
+        }
+#endif
+        // operator() implementations for up to 15 arguments
+                
+        ResultType operator()()
+        { return f_(); }
+
+        ResultType operator()(Parm1 p1)
+        { return f_(p1); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2)
+        { return f_(p1, p2); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3)
+        { return f_(p1, p2, p3); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4)
+        { return f_(p1, p2, p3, p4); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5)
+        { return f_(p1, p2, p3, p4, p5); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6)
+        { return f_(p1, p2, p3, p4, p5, p6); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7)
+        { return f_(p1, p2, p3, p4, p5, p6, p7); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8)
+        { return f_(p1, p2, p3, p4, p5, p6, p7, p8); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9)
+        { return f_(p1, p2, p3, p4, p5, p6, p7, p8, p9); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10)
+        { return f_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11)
+        { return f_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12)
+        { return f_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13)
+        { return f_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13, Parm14 p14)
+        {
+            return f_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, 
+                p14);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13, Parm14 p14, Parm15 p15)
+        {
+            return f_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, 
+                p14, p15);
+        }
+        
+    private:
+        Fun f_;
+    };
+        
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorHandler
+// Wraps pointers to member functions
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class ParentFunctor, typename PointerToObj,
+        typename PointerToMemFn>
+    class MemFunHandler : public ParentFunctor::Impl
+    {
+        typedef typename ParentFunctor::Impl Base;
+
+    public:
+        typedef typename Base::ResultType ResultType;
+        typedef typename Base::Parm1 Parm1;
+        typedef typename Base::Parm2 Parm2;
+        typedef typename Base::Parm3 Parm3;
+        typedef typename Base::Parm4 Parm4;
+        typedef typename Base::Parm5 Parm5;
+        typedef typename Base::Parm6 Parm6;
+        typedef typename Base::Parm7 Parm7;
+        typedef typename Base::Parm8 Parm8;
+        typedef typename Base::Parm9 Parm9;
+        typedef typename Base::Parm10 Parm10;
+        typedef typename Base::Parm11 Parm11;
+        typedef typename Base::Parm12 Parm12;
+        typedef typename Base::Parm13 Parm13;
+        typedef typename Base::Parm14 Parm14;
+        typedef typename Base::Parm15 Parm15;
+
+        MemFunHandler(const PointerToObj& pObj, PointerToMemFn pMemFn) 
+        : pObj_(pObj), pMemFn_(pMemFn)
+        {}
+        
+        LOKI_DEFINE_CLONE_FUNCTORIMPL(MemFunHandler)
+
+
+#ifdef LOKI_FUNCTORS_ARE_COMPARABLE
+
+        bool operator==(const typename Base::FunctorImplBaseType& rhs) const
+        {
+            if(typeid(*this) != typeid(rhs))
+                return false; // cannot be equal 
+
+            const MemFunHandler& mfh = static_cast<const MemFunHandler&>(rhs);
+            // if this line gives a compiler error, you are using a function object.
+            // you need to implement bool MyFnObj::operator == (const MyFnObj&) const;
+            return  pObj_==mfh.pObj_ && pMemFn_==mfh.pMemFn_;
+        }
+#endif   
+
+        ResultType operator()()
+        { return ((*pObj_).*pMemFn_)(); }
+
+        ResultType operator()(Parm1 p1)
+        { return ((*pObj_).*pMemFn_)(p1); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2)
+        { return ((*pObj_).*pMemFn_)(p1, p2); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3)
+        { return ((*pObj_).*pMemFn_)(p1, p2, p3); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4)
+        { return ((*pObj_).*pMemFn_)(p1, p2, p3, p4); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5)
+        { return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6)
+        { return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5, p6); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7)
+        { return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5, p6, p7); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8)
+        { return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5, p6, p7, p8); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9)
+        { return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5, p6, p7, p8, p9); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10)
+        { return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11)
+        {
+            return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, 
+                p11);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12)
+        {
+            return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, 
+                p11, p12);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13)
+        {
+            return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, 
+                p11, p12, p13);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13, Parm14 p14)
+        {
+            return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, 
+                p11, p12, p13, p14);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13, Parm14 p14, Parm15 p15)
+        {
+            return ((*pObj_).*pMemFn_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, 
+                p11, p12, p13, p14, p15);
+        }
+        
+    private:
+        PointerToObj pObj_;
+        PointerToMemFn pMemFn_;
+    };
+        
+////////////////////////////////////////////////////////////////////////////////
+// TR1 exception
+//////////////////////////////////////////////////////////////////////////////////
+
+#ifdef LOKI_ENABLE_FUNCTION
+
+    class bad_function_call : public std::runtime_error
+    {
+    public:
+        bad_function_call() : std::runtime_error("bad_function_call in Loki::Functor")
+        {}
+    };
+
+#define LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL if(empty()) throw bad_function_call();
+
+#else
+
+#define LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL 
+
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class Functor
+///
+///  \ingroup FunctorGroup
+///  A generalized functor implementation with value semantics
+///
+/// \par Macro: LOKI_FUNCTOR_IS_NOT_A_SMALLOBJECT
+/// Define 
+/// \code LOKI_FUNCTOR_IS_NOT_A_SMALLOBJECT \endcode
+/// to avoid static instantiation/delete 
+/// order problems.
+/// It often helps against crashes when using static Functors and multi threading.
+/// Defining also removes problems when unloading Dlls which hosts
+/// static Functor objects.
+///
+/// \par Macro: LOKI_FUNCTORS_ARE_COMPARABLE
+/// To enable the operator== define the macro
+/// \code LOKI_FUNCTORS_ARE_COMPARABLE \endcode
+/// The macro is disabled by default, because it breaks compiling functor 
+/// objects  which have no operator== implemented, keep in mind when you enable
+/// operator==.
+////////////////////////////////////////////////////////////////////////////////
+    template <typename R = void, class TList = NullType,
+        template<class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>
+    class Functor
+    {
+    public:
+        // Handy type definitions for the body type
+        typedef FunctorImpl<R, TList, ThreadingModel> Impl;
+        typedef R ResultType;
+        typedef TList ParmList;
+        typedef typename Impl::Parm1 Parm1;
+        typedef typename Impl::Parm2 Parm2;
+        typedef typename Impl::Parm3 Parm3;
+        typedef typename Impl::Parm4 Parm4;
+        typedef typename Impl::Parm5 Parm5;
+        typedef typename Impl::Parm6 Parm6;
+        typedef typename Impl::Parm7 Parm7;
+        typedef typename Impl::Parm8 Parm8;
+        typedef typename Impl::Parm9 Parm9;
+        typedef typename Impl::Parm10 Parm10;
+        typedef typename Impl::Parm11 Parm11;
+        typedef typename Impl::Parm12 Parm12;
+        typedef typename Impl::Parm13 Parm13;
+        typedef typename Impl::Parm14 Parm14;
+        typedef typename Impl::Parm15 Parm15;
+
+        // Member functions
+
+        Functor() : spImpl_(0)
+        {}
+        
+        Functor(const Functor& rhs) : spImpl_(Impl::Clone(rhs.spImpl_.get()))
+        {}
+        
+        Functor(std::auto_ptr<Impl> spImpl) : spImpl_(spImpl)
+        {}
+        
+        template <typename Fun>
+        Functor(Fun fun)
+        : spImpl_(new FunctorHandler<Functor, Fun>(fun))
+        {}
+
+        template <class PtrObj, typename MemFn>
+        Functor(const PtrObj& p, MemFn memFn)
+        : spImpl_(new MemFunHandler<Functor, PtrObj, MemFn>(p, memFn))
+        {}
+
+        typedef Impl * (std::auto_ptr<Impl>::*unspecified_bool_type)() const;
+
+        operator unspecified_bool_type() const
+        {
+            return spImpl_.get() ? &std::auto_ptr<Impl>::get : 0;
+        }
+
+        Functor& operator=(const Functor& rhs)
+        {
+            Functor copy(rhs);
+            // swap auto_ptrs by hand
+            Impl* p = spImpl_.release();
+            spImpl_.reset(copy.spImpl_.release());
+            copy.spImpl_.reset(p);
+            return *this;
+        }
+
+#ifdef LOKI_ENABLE_FUNCTION
+
+        bool empty() const
+        {
+            return spImpl_.get() == 0;
+        }
+
+        void clear()
+        {
+            spImpl_.reset(0);
+        }
+#endif
+
+#ifdef LOKI_FUNCTORS_ARE_COMPARABLE
+
+        bool operator==(const Functor& rhs) const
+        {
+            if(spImpl_.get()==0 && rhs.spImpl_.get()==0)
+                return true;
+            if(spImpl_.get()!=0 && rhs.spImpl_.get()!=0)
+                return *spImpl_.get() == *rhs.spImpl_.get();
+            else
+                return false;
+        }
+
+        bool operator!=(const Functor& rhs) const
+        {
+            return !(*this==rhs);
+        }
+#endif
+
+        // operator() implementations for up to 15 arguments
+
+        ResultType operator()() const
+        {
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(); 
+        }
+
+        ResultType operator()(Parm1 p1) const
+        { 
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2) const
+        {    
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3) const
+        {    
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4) const
+        { 
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5) const
+        { 
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6) const
+        { 
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5, p6); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7) const
+        { 
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5, p6, p7); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8) const
+        { 
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5, p6, p7, p8); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9) const
+        { 
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5, p6, p7, p8, p9); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10) const
+        { 
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11) const
+        { 
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); 
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12) const
+        {
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, 
+                p12);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13) const
+        {
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11,
+            p12, p13);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13, Parm14 p14) const
+        {
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, 
+                p12, p13, p14);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13, Parm14 p14, Parm15 p15) const
+        {
+            LOKI_FUNCTION_THROW_BAD_FUNCTION_CALL
+            return (*spImpl_)(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, 
+                p12, p13, p14, p15);
+        }
+
+    private:
+        std::auto_ptr<Impl> spImpl_;
+    };
+    
+
+////////////////////////////////////////////////////////////////////////////////
+//  
+//  BindersFirst and Chainer 
+//
+////////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+        template <class Fctor> struct BinderFirstTraits;
+
+        template <typename R, class TList, template <class, class> class ThreadingModel>
+        struct BinderFirstTraits< Functor<R, TList, ThreadingModel> >
+        {
+            typedef Functor<R, TList, ThreadingModel> OriginalFunctor;
+
+            typedef typename TL::Erase<TList,typename TL::TypeAt<TList, 0>::Result>
+                             ::Result
+                    ParmList;
+
+            typedef typename TL::TypeAt<TList, 0>::Result OriginalParm1;
+
+            typedef Functor<R, ParmList, ThreadingModel> BoundFunctorType;
+
+            typedef typename BoundFunctorType::Impl Impl;
+
+        };  
+
+
+        template<class T>
+        struct BinderFirstBoundTypeStorage;
+
+        template<class T>
+        struct BinderFirstBoundTypeStorage
+        {
+            typedef typename TypeTraits<T>::ParameterType RefOrValue;
+        };
+        
+        template <typename R, class TList, template <class, class> class ThreadingModel>
+        struct BinderFirstBoundTypeStorage< Functor<R, TList, ThreadingModel> >
+        {
+            typedef Functor<R, TList, ThreadingModel> OriginalFunctor;
+            typedef const typename TypeTraits<OriginalFunctor>::ReferredType RefOrValue;
+        };  
+
+
+    } // namespace Private
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class BinderFirst
+///  
+///  \ingroup FunctorGroup
+///  Binds the first parameter of a Functor object to a specific value
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class OriginalFunctor>
+    class BinderFirst 
+        : public Private::BinderFirstTraits<OriginalFunctor>::Impl
+    {
+        typedef typename Private::BinderFirstTraits<OriginalFunctor>::Impl Base;
+        typedef typename OriginalFunctor::ResultType ResultType;
+
+        typedef typename OriginalFunctor::Parm1 BoundType;
+
+        typedef typename Private::BinderFirstBoundTypeStorage<
+                             typename Private::BinderFirstTraits<OriginalFunctor>
+                             ::OriginalParm1>
+                         ::RefOrValue
+                BoundTypeStorage;
+                        
+        typedef typename OriginalFunctor::Parm2 Parm1;
+        typedef typename OriginalFunctor::Parm3 Parm2;
+        typedef typename OriginalFunctor::Parm4 Parm3;
+        typedef typename OriginalFunctor::Parm5 Parm4;
+        typedef typename OriginalFunctor::Parm6 Parm5;
+        typedef typename OriginalFunctor::Parm7 Parm6;
+        typedef typename OriginalFunctor::Parm8 Parm7;
+        typedef typename OriginalFunctor::Parm9 Parm8;
+        typedef typename OriginalFunctor::Parm10 Parm9;
+        typedef typename OriginalFunctor::Parm11 Parm10;
+        typedef typename OriginalFunctor::Parm12 Parm11;
+        typedef typename OriginalFunctor::Parm13 Parm12;
+        typedef typename OriginalFunctor::Parm14 Parm13;
+        typedef typename OriginalFunctor::Parm15 Parm14;
+        typedef EmptyType Parm15;
+
+    public:
+        
+        BinderFirst(const OriginalFunctor& fun, BoundType bound)
+        : f_(fun), b_(bound)
+        {}
+
+        LOKI_DEFINE_CLONE_FUNCTORIMPL(BinderFirst)
+
+#ifdef LOKI_FUNCTORS_ARE_COMPARABLE
+        
+        bool operator==(const typename Base::FunctorImplBaseType& rhs) const
+        {
+            if(typeid(*this) != typeid(rhs))
+                return false; // cannot be equal 
+            // if this line gives a compiler error, you are using a function object.
+            // you need to implement bool MyFnObj::operator == (const MyFnObj&) const;
+            return    f_ == ((static_cast<const BinderFirst&> (rhs)).f_) &&
+                      b_ == ((static_cast<const BinderFirst&> (rhs)).b_);
+        }
+#endif
+
+        // operator() implementations for up to 15 arguments
+                
+        ResultType operator()()
+        { return f_(b_); }
+
+        ResultType operator()(Parm1 p1)
+        { return f_(b_, p1); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2)
+        { return f_(b_, p1, p2); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3)
+        { return f_(b_, p1, p2, p3); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4)
+        { return f_(b_, p1, p2, p3, p4); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5)
+        { return f_(b_, p1, p2, p3, p4, p5); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6)
+        { return f_(b_, p1, p2, p3, p4, p5, p6); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7)
+        { return f_(b_, p1, p2, p3, p4, p5, p6, p7); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8)
+        { return f_(b_, p1, p2, p3, p4, p5, p6, p7, p8); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9)
+        { return f_(b_, p1, p2, p3, p4, p5, p6, p7, p8, p9); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10)
+        { return f_(b_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11)
+        { return f_(b_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12)
+        { return f_(b_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13)
+        { return f_(b_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13, Parm14 p14)
+        {
+            return f_(b_, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, 
+                p14);
+        }
+        
+    private:
+        OriginalFunctor f_;
+        BoundTypeStorage b_;
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+///  Binds the first parameter of a Functor object to a specific value
+///  \ingroup FunctorGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class Fctor>
+    typename Private::BinderFirstTraits<Fctor>::BoundFunctorType
+    BindFirst(
+        const Fctor& fun, 
+        typename Fctor::Parm1 bound)
+    {
+        typedef typename Private::BinderFirstTraits<Fctor>::BoundFunctorType
+            Outgoing;
+        
+        return Outgoing(std::auto_ptr<typename Outgoing::Impl>(
+            new BinderFirst<Fctor>(fun, bound)));
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class Chainer
+///
+///  \ingroup FunctorGroup
+///   Chains two functor calls one after another
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename Fun1, typename Fun2>
+    class Chainer : public Fun2::Impl
+    {
+        typedef Fun2 Base;
+
+    public:
+        typedef typename Base::ResultType ResultType;
+        typedef typename Base::Parm1 Parm1;
+        typedef typename Base::Parm2 Parm2;
+        typedef typename Base::Parm3 Parm3;
+        typedef typename Base::Parm4 Parm4;
+        typedef typename Base::Parm5 Parm5;
+        typedef typename Base::Parm6 Parm6;
+        typedef typename Base::Parm7 Parm7;
+        typedef typename Base::Parm8 Parm8;
+        typedef typename Base::Parm9 Parm9;
+        typedef typename Base::Parm10 Parm10;
+        typedef typename Base::Parm11 Parm11;
+        typedef typename Base::Parm12 Parm12;
+        typedef typename Base::Parm13 Parm13;
+        typedef typename Base::Parm14 Parm14;
+        typedef typename Base::Parm15 Parm15;
+        
+        Chainer(const Fun1& fun1, const Fun2& fun2) : f1_(fun1), f2_(fun2) {}
+
+        LOKI_DEFINE_CLONE_FUNCTORIMPL(Chainer)
+
+#ifdef LOKI_FUNCTORS_ARE_COMPARABLE
+                
+        bool operator==(const typename Base::Impl::FunctorImplBaseType& rhs) const
+        {
+            if(typeid(*this) != typeid(rhs))
+                return false; // cannot be equal 
+            // if this line gives a compiler error, you are using a function object.
+            // you need to implement bool MyFnObj::operator == (const MyFnObj&) const;
+            return    f1_ == ((static_cast<const Chainer&> (rhs)).f2_) &&
+                      f2_ == ((static_cast<const Chainer&> (rhs)).f1_);
+        }
+#endif
+
+        // operator() implementations for up to 15 arguments
+
+        ResultType operator()()
+        { return f1_(), f2_(); }
+
+        ResultType operator()(Parm1 p1)
+        { return f1_(p1), f2_(p1); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2)
+        { return f1_(p1, p2), f2_(p1, p2); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3)
+        { return f1_(p1, p2, p3), f2_(p1, p2, p3); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4)
+        { return f1_(p1, p2, p3, p4), f2_(p1, p2, p3, p4); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5)
+        { return f1_(p1, p2, p3, p4, p5), f2_(p1, p2, p3, p4, p5); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6)
+        { return f1_(p1, p2, p3, p4, p5, p6), f2_(p1, p2, p3, p4, p5, p6); }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7)
+        {
+            return f1_(p1, p2, p3, p4, p5, p6, p7),
+                f2_(p1, p2, p3, p4, p5, p6, p7);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8)
+        {
+            return f1_(p1, p2, p3, p4, p5, p6, p7, p8),
+                f2_(p1, p2, p3, p4, p5, p6, p7, p8);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9)
+        {
+            return f1_(p1, p2, p3, p4, p5, p6, p7, p8, p9),
+                f2_(p1, p2, p3, p4, p5, p6, p7, p8, p9);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10)
+        {
+            return f1_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10),
+                f2_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11)
+        {
+            return f1_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11),
+                f2_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12)
+        {
+            return f1_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12),
+                f2_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13)
+        {
+            return f1_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13),
+                f2_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13, Parm14 p14)
+        {
+            return f1_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, 
+                    p14),
+                f2_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, 
+                   p14);
+        }
+        
+        ResultType operator()(Parm1 p1, Parm2 p2, Parm3 p3, Parm4 p4, Parm5 p5,
+            Parm6 p6, Parm7 p7, Parm8 p8, Parm9 p9, Parm10 p10, Parm11 p11,
+            Parm12 p12, Parm13 p13, Parm14 p14, Parm15 p15)
+        {
+            return f1_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, 
+                    p14, p15),
+                f2_(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, 
+                    p14, p15);
+        }
+        
+    private:
+        Fun1 f1_;
+        Fun2 f2_;
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+///  Chains two functor calls one after another
+///  \ingroup FunctorGroup
+////////////////////////////////////////////////////////////////////////////////
+
+
+    template <class Fun1, class Fun2>
+    Fun2 Chain(
+        const Fun1& fun1,
+        const Fun2& fun2)
+    {
+        return Fun2(std::auto_ptr<typename Fun2::Impl>(
+            new Chainer<Fun1, Fun2>(fun1, fun2)));
+    }
+
+} // namespace Loki
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/HierarchyGenerators.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/HierarchyGenerators.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/HierarchyGenerators.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,291 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_HIERARCHYGENERATORS_INC_
+#define LOKI_HIERARCHYGENERATORS_INC_
+
+// $Id: HierarchyGenerators.h 751 2006-10-17 19:50:37Z syntheticpp $
+
+
+#include "Typelist.h"
+#include "TypeTraits.h"
+#include "EmptyType.h"
+
+namespace Loki
+{
+#if defined(_MSC_VER) && _MSC_VER >= 1300
+#pragma warning( push ) 
+ // 'class1' : base-class 'class2' is already a base-class of 'class3'
+#pragma warning( disable : 4584 )
+#endif // _MSC_VER
+
+////////////////////////////////////////////////////////////////////////////////
+// class template GenScatterHierarchy
+// Generates a scattered hierarchy starting from a typelist and a template
+// Invocation (TList is a typelist, Unit is a template of one arg):
+// GenScatterHierarchy<TList, Unit>
+// The generated class inherits all classes generated by instantiating the 
+// template 'Unit' with the types contained in TList 
+////////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+        // The following type helps to overcome subtle flaw in the original 
+        // implementation of GenScatterHierarchy. 
+        // The flaw is revealed when the input type list of GenScatterHierarchy 
+        // contains more then one element of the same type (e.g. LOKI_TYPELIST_2(int, int)). 
+        // In this case GenScatterHierarchy will contain multiple bases of the same 
+        // type and some of them will not be reachable (per 10.3).
+        // For example before the fix the first element of Tuple<LOKI_TYPELIST_2(int, int)>
+        // is not reachable in any way!
+        template<class, class> 
+        struct ScatterHierarchyTag;
+    }
+
+    template <class TList, template <class> class Unit>
+    class GenScatterHierarchy;
+     
+    template <class T1, class T2, template <class> class Unit>
+    class GenScatterHierarchy<Typelist<T1, T2>, Unit>
+        : public GenScatterHierarchy<Private::ScatterHierarchyTag<T1, T2>, Unit>
+        , public GenScatterHierarchy<T2, Unit>
+    {
+    public:
+        typedef Typelist<T1, T2> TList;
+        // Insure that LeftBase is unique and therefore reachable
+        typedef GenScatterHierarchy<Private::ScatterHierarchyTag<T1, T2>, Unit> LeftBase;
+        typedef GenScatterHierarchy<T2, Unit> RightBase;
+        template <typename T> struct Rebind
+        {
+            typedef Unit<T> Result;
+        };
+    };
+     
+    // In the middle *unique* class that resolve possible ambiguity
+    template <class T1, class T2, template <class> class Unit>
+    class GenScatterHierarchy<Private::ScatterHierarchyTag<T1, T2>, Unit> 
+        : public GenScatterHierarchy<T1, Unit>
+    {
+    };
+
+    template <class AtomicType, template <class> class Unit>
+    class GenScatterHierarchy : public Unit<AtomicType>
+    {
+        typedef Unit<AtomicType> LeftBase;
+        template <typename T> struct Rebind
+        {
+            typedef Unit<T> Result;
+        };
+    };
+    
+    template <template <class> class Unit>
+    class GenScatterHierarchy<NullType, Unit>
+    {
+        template <typename T> struct Rebind
+        {
+            typedef Unit<T> Result;
+        };
+    };
+     
+////////////////////////////////////////////////////////////////////////////////
+// function template Field
+// Accesses a field in an object of a type generated with GenScatterHierarchy
+// Invocation (obj is an object of a type H generated with GenScatterHierarchy,
+//     T is a type in the typelist used to generate H):
+// Field<T>(obj)
+// returns a reference to Unit<T>, where Unit is the template used to generate H 
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class T, class H>
+    typename H::template Rebind<T>::Result& Field(H& obj)
+    {
+        return obj;
+    }
+     
+    template <class T, class H>
+    const typename H::template Rebind<T>::Result& Field(const H& obj)
+    {
+        return obj;
+    }
+     
+////////////////////////////////////////////////////////////////////////////////
+// function template TupleUnit
+// The building block of tuples 
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class T>
+    struct TupleUnit
+    {
+        T value_;
+        operator T&() { return value_; }
+        operator const T&() const { return value_; }
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template Tuple
+// Implements a tuple class that holds a number of values and provides field 
+//     access to them via the Field function (below) 
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class TList>
+    struct Tuple : public GenScatterHierarchy<TList, TupleUnit>
+    {
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// helper class template FieldHelper
+// See Field below
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class H, unsigned int i> struct FieldHelper;
+    
+    template <class H>
+    struct FieldHelper<H, 0>
+    {
+        typedef typename H::TList::Head ElementType;
+        typedef typename H::template Rebind<ElementType>::Result UnitType;
+        
+        enum
+        {
+            isTuple = Conversion<UnitType, TupleUnit<ElementType> >::sameType,
+            isConst = TypeTraits<H>::isConst
+        };
+
+        typedef const typename H::LeftBase ConstLeftBase;
+        
+        typedef typename Select<isConst, ConstLeftBase, 
+            typename H::LeftBase>::Result LeftBase;
+            
+        typedef typename Select<isTuple, ElementType, 
+            UnitType>::Result UnqualifiedResultType;
+
+        typedef typename Select<isConst, const UnqualifiedResultType,
+                        UnqualifiedResultType>::Result ResultType;
+            
+        static ResultType& Do(H& obj)
+        {
+            LeftBase& leftBase = obj;
+            return leftBase;
+        }
+    };
+
+    template <class H, unsigned int i>
+    struct FieldHelper
+    {
+        typedef typename TL::TypeAt<typename H::TList, i>::Result ElementType;
+        typedef typename H::template Rebind<ElementType>::Result UnitType;
+        
+        enum
+        {
+            isTuple = Conversion<UnitType, TupleUnit<ElementType> >::sameType,
+            isConst = TypeTraits<H>::isConst
+        };
+
+        typedef const typename H::RightBase ConstRightBase;
+        
+        typedef typename Select<isConst, ConstRightBase, 
+            typename H::RightBase>::Result RightBase;
+
+        typedef typename Select<isTuple, ElementType, 
+            UnitType>::Result UnqualifiedResultType;
+
+        typedef typename Select<isConst, const UnqualifiedResultType,
+                        UnqualifiedResultType>::Result ResultType;
+            
+        static ResultType& Do(H& obj)
+        {
+            RightBase& rightBase = obj;
+            return FieldHelper<RightBase, i - 1>::Do(rightBase);
+        }
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// function template Field
+// Accesses a field in an object of a type generated with GenScatterHierarchy
+// Invocation (obj is an object of a type H generated with GenScatterHierarchy,
+//     i is the index of a type in the typelist used to generate H):
+// Field<i>(obj)
+// returns a reference to Unit<T>, where Unit is the template used to generate H
+//     and T is the i-th type in the typelist 
+////////////////////////////////////////////////////////////////////////////////
+
+    template <int i, class H>
+    typename FieldHelper<H, i>::ResultType&
+    Field(H& obj)
+    {
+        return FieldHelper<H, i>::Do(obj);
+    }
+        
+//    template <int i, class H>
+//    const typename FieldHelper<H, i>::ResultType&
+//    Field(const H& obj)
+//    {
+//        return FieldHelper<H, i>::Do(obj);
+//    }
+        
+////////////////////////////////////////////////////////////////////////////////
+// class template GenLinearHierarchy
+// Generates a linear hierarchy starting from a typelist and a template
+// Invocation (TList is a typelist, Unit is a template of two args):
+// GenScatterHierarchy<TList, Unit>
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        class TList,
+        template <class AtomicType, class Base> class Unit,
+        class Root = EmptyType
+    >
+    class GenLinearHierarchy;
+    
+    template
+    <
+        class T1,
+        class T2,
+        template <class, class> class Unit,
+        class Root
+    >
+    class GenLinearHierarchy<Typelist<T1, T2>, Unit, Root>
+        : public Unit< T1, GenLinearHierarchy<T2, Unit, Root> >
+    {
+    };
+
+    template
+    <
+        class T,
+        template <class, class> class Unit,
+        class Root
+    >
+    class GenLinearHierarchy<Typelist<T, NullType>, Unit, Root>
+        : public Unit<T, Root>
+    {
+    };
+
+    template
+    <
+        template <class, class> class Unit,
+        class Root
+    >
+    class GenLinearHierarchy<NullType , Unit, Root>
+        : public Root // is this better: Unit<NullType, Root> ?
+    {
+    };
+
+#if defined(_MSC_VER) && _MSC_VER >= 1300
+#pragma warning( pop ) 
+#endif
+}   // namespace Loki
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Key.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Key.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Key.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,764 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 by Guillaume Chatelet
+//
+// Code covered by the MIT License
+//
+// Permission to use, copy, modify, distribute and sell this software for any 
+// purpose is hereby granted without fee, provided that the above copyright 
+// notice appear in all copies and that both that copyright notice and this 
+// permission notice appear in supporting documentation.
+//
+// The authors make no representations about the suitability of this software
+// for any purpose. It is provided "as is" without express or implied warranty.
+//
+// This code DOES NOT accompany the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+//
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_KEY_INC_
+#define LOKI_KEY_INC_
+
+// $Id: Key.h 771 2006-10-27 18:05:03Z clitte_bbt $
+
+
+#include <loki/Factory.h>
+
+namespace Loki
+{
+
+     template<
+         class Factory,
+         typename IdentifierType
+     >
+     class Key;
+
+    template<class F, typename I>
+    bool operator==(const Key<F, I> &k1, const Key<F, I> &k2);
+
+    template<class F, typename I>
+    bool operator<(const Key<F, I> &k1, const Key<F, I> &k2);
+        
+
+    /**
+     * A Key class
+     */
+     template<
+         class Factory,
+         typename IdentifierType
+     >
+     class Key
+     {
+        typedef typename Factory::Parm1 Parm1;
+        typedef typename Factory::Parm2 Parm2;
+        typedef typename Factory::Parm3 Parm3;
+        typedef typename Factory::Parm4 Parm4;
+        typedef typename Factory::Parm5 Parm5;
+        typedef typename Factory::Parm6 Parm6;
+        typedef typename Factory::Parm7 Parm7;
+        typedef typename Factory::Parm8 Parm8;
+        typedef typename Factory::Parm9 Parm9;
+        typedef typename Factory::Parm10 Parm10;
+        typedef typename Factory::Parm11 Parm11;
+        typedef typename Factory::Parm12 Parm12;
+        typedef typename Factory::Parm13 Parm13;
+        typedef typename Factory::Parm14 Parm14;
+        typedef typename Factory::Parm15 Parm15;
+     public:
+        // member variables
+        int count; // should be const, but constness prevent default copy ctor
+        IdentifierType id;
+        Parm1  p1;
+        Parm2  p2;
+        Parm3  p3;
+        Parm4  p4;
+        Parm5  p5;
+        Parm6  p6;
+        Parm7  p7;
+        Parm8  p8;
+        Parm9  p9;
+        Parm10 p10;
+        Parm11 p11;
+        Parm12 p12;
+        Parm13 p13;
+        Parm14 p14;
+        Parm15 p15;
+        
+        // member functions
+        Key() : count(-1)
+        {
+        }
+
+        Key(const IdentifierType& id) : count(0)
+        {
+            this->id = id;
+        }
+        
+        Key(const IdentifierType& id,
+				    Parm1 &p1) : count(1)
+        {
+            this->id = id;
+            this->p1 = p1;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1 &p1, Parm2 &p2) : count(2)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1 &p1, Parm2 &p2, Parm3 &p3) : count(3)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1 &p1, Parm2 &p2, Parm3 &p3, Parm4 &p4) : count(4)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1 &p1, Parm2 &p2, Parm3 &p3, Parm4 &p4, Parm5 &p5) : count(5)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1 &p1, Parm2 &p2, Parm3 &p3, Parm4 &p4, Parm5 &p5,
+				    Parm6 &p6) : count(6)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+            this->p6 = p6;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1 &p1, Parm2 &p2, Parm3 &p3, Parm4 &p4, Parm5 &p5,
+				    Parm6 &p6, Parm7 &p7 ) : count(7)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+            this->p6 = p6;
+            this->p7 = p7;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1 &p1, Parm2 &p2, Parm3 &p3, Parm4 &p4, Parm5 &p5,
+				    Parm6 &p6, Parm7 &p7, Parm8 &p8) : count(8)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+            this->p6 = p6;
+            this->p7 = p7;
+            this->p8 = p8;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1 &p1, Parm2 &p2, Parm3 &p3, Parm4 &p4, Parm5 &p5,
+				    Parm6 &p6, Parm7 &p7, Parm8 &p8, Parm9 &p9) : count(9)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+            this->p6 = p6;
+            this->p7 = p7;
+            this->p8 = p8;
+            this->p9 = p9;
+        }
+        
+        Key(const IdentifierType& id,
+				    Parm1 &p1, Parm2 &p2, Parm3 &p3, Parm4 &p4, Parm5 &p5,
+				    Parm6 &p6, Parm7 &p7, Parm8 &p8, Parm9 &p9,Parm10 &p10) : count(10)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+            this->p6 = p6;
+            this->p7 = p7;
+            this->p8 = p8;
+            this->p9 = p9;
+            this->p10 = p10;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1  &p1, Parm2 &p2, Parm3 &p3, Parm4 &p4, Parm5  &p5,
+				    Parm6  &p6, Parm7 &p7, Parm8 &p8, Parm9 &p9, Parm10 &p10,
+				    Parm11 &p11) : count(11)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+            this->p6 = p6;
+            this->p7 = p7;
+            this->p8 = p8;
+            this->p9 = p9;
+            this->p10 = p10;
+            this->p11 = p11;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1  &p1,  Parm2  &p2, Parm3 &p3, Parm4 &p4, Parm5  &p5,
+				    Parm6  &p6,  Parm7  &p7, Parm8 &p8, Parm9 &p9, Parm10 &p10,
+				    Parm11 &p11, Parm12 &p12) : count(12)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+            this->p6 = p6;
+            this->p7 = p7;
+            this->p8 = p8;
+            this->p9 = p9;
+            this->p10 = p10;
+            this->p11 = p11;
+            this->p12 = p12;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1  &p1,  Parm2  &p2,  Parm3  &p3, Parm4 &p4, Parm5  &p5,
+				    Parm6  &p6,  Parm7  &p7,  Parm8  &p8, Parm9 &p9, Parm10 &p10,
+				    Parm11 &p11, Parm12 &p12, Parm13 &p13) : count(13)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+            this->p6 = p6;
+            this->p7 = p7;
+            this->p8 = p8;
+            this->p9 = p9;
+            this->p10 = p10;
+            this->p11 = p11;
+            this->p12 = p12;
+            this->p13 = p13;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1  &p1,  Parm2  &p2,  Parm3  &p3,  Parm4  &p4, Parm5  &p5,
+				    Parm6  &p6,  Parm7  &p7,  Parm8  &p8,  Parm9  &p9, Parm10 &p10,
+				    Parm11 &p11, Parm12 &p12, Parm13 &p13, Parm14 &p14) : count(14)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+            this->p6 = p6;
+            this->p7 = p7;
+            this->p8 = p8;
+            this->p9 = p9;
+            this->p10 = p10;
+            this->p11 = p11;
+            this->p12 = p12;
+            this->p13 = p13;
+            this->p14 = p14;
+        }
+
+        Key(const IdentifierType& id,
+				    Parm1  &p1,  Parm2  &p2,  Parm3  &p3,  Parm4  &p4,  Parm5  &p5,
+				    Parm6  &p6,  Parm7  &p7,  Parm8  &p8,  Parm9  &p9,  Parm10 &p10,
+				    Parm11 &p11, Parm12 &p12, Parm13 &p13, Parm14 &p14, Parm15 &p15) : count(15)
+        {
+            this->id = id;
+            this->p1 = p1;
+            this->p2 = p2;
+            this->p3 = p3;
+            this->p4 = p4;
+            this->p5 = p5;
+            this->p6 = p6;
+            this->p7 = p7;
+            this->p8 = p8;
+            this->p9 = p9;
+            this->p10 = p10;
+            this->p11 = p11;
+            this->p12 = p12;
+            this->p13 = p13;
+            this->p14 = p14;
+            this->p15 = p15;
+        }
+
+        template<class F, typename I>
+        friend bool operator==(const Key<F, I> &k1, const Key<F, I> &k2);
+        
+        template<class F, typename I>
+        friend bool operator<(const Key<F, I> &k1, const Key<F, I> &k2);
+    };
+
+        
+    template<class F, typename I>
+     bool operator==(const Key<F, I> &k1, const Key<F, I> &k2)
+    {
+        if( k1.count != k2.count )
+            return false;
+        switch(k1.count){
+            case -1:
+                return true;
+            case 0:
+                if( k1.id == k2.id )
+                    return true;
+                else
+                    return false;
+            case 1:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) )
+                    return true;
+                else
+                    return false;
+            case 2:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) )
+                    return true;
+                else
+                    return false;
+            case 3:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) )
+                    return true;
+                else
+                    return false;
+            case 4:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) )
+                    return true;
+                else
+                    return false;
+            case 5:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) )
+                    return true;
+                else
+                    return false;
+            case 6:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) && 
+                    (k1.p6 == k2.p6) )
+                    return true;
+                else
+                    return false;
+            case 7:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) && 
+                    (k1.p6 == k2.p6) && 
+                    (k1.p7 == k2.p7) )
+                    return true;
+                else
+                    return false;
+            case 8:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) && 
+                    (k1.p6 == k2.p6) && 
+                    (k1.p7 == k2.p7) && 
+                    (k1.p8 == k2.p8) )
+                    return true;
+                else
+                    return false;
+            case 9:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) && 
+                    (k1.p6 == k2.p6) && 
+                    (k1.p7 == k2.p7) && 
+                    (k1.p8 == k2.p8) && 
+                    (k1.p9 == k2.p9) )
+                    return true;
+                else
+                    return false;
+            case 10:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) && 
+                    (k1.p6 == k2.p6) && 
+                    (k1.p7 == k2.p7) && 
+                    (k1.p8 == k2.p8) && 
+                    (k1.p9 == k2.p9) && 
+                    (k1.p10 == k2.p10) )
+                    return true;
+                else
+                    return false;
+            case 11:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) && 
+                    (k1.p6 == k2.p6) && 
+                    (k1.p7 == k2.p7) && 
+                    (k1.p8 == k2.p8) && 
+                    (k1.p9 == k2.p9) && 
+                    (k1.p10 == k2.p10) && 
+                    (k1.p11 == k2.p11) )
+                    return true;
+                else
+                    return false;
+            case 12:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) && 
+                    (k1.p6 == k2.p6) && 
+                    (k1.p7 == k2.p7) && 
+                    (k1.p8 == k2.p8) && 
+                    (k1.p9 == k2.p9) && 
+                    (k1.p10 == k2.p10) && 
+                    (k1.p11 == k2.p11) && 
+                    (k1.p12 == k2.p12) )
+                    return true;
+                else
+                    return false;
+            case 13:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) && 
+                    (k1.p6 == k2.p6) && 
+                    (k1.p7 == k2.p7) && 
+                    (k1.p8 == k2.p8) && 
+                    (k1.p9 == k2.p9) && 
+                    (k1.p10 == k2.p10) && 
+                    (k1.p11 == k2.p11) && 
+                    (k1.p12 == k2.p12) && 
+                    (k1.p13 == k2.p13) )
+                    return true;
+                else
+                    return false;
+            case 14:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) && 
+                    (k1.p6 == k2.p6) && 
+                    (k1.p7 == k2.p7) && 
+                    (k1.p8 == k2.p8) && 
+                    (k1.p9 == k2.p9) && 
+                    (k1.p10 == k2.p10) && 
+                    (k1.p11 == k2.p11) && 
+                    (k1.p12 == k2.p12) && 
+                    (k1.p13 == k2.p13) && 
+                    (k1.p14 == k2.p14) )
+                    return true;
+                else
+                    return false;
+            case 15:
+                if( (k1.id == k2.id) && 
+                    (k1.p1 == k2.p1) && 
+                    (k1.p2 == k2.p2) && 
+                    (k1.p3 == k2.p3) && 
+                    (k1.p4 == k2.p4) && 
+                    (k1.p5 == k2.p5) && 
+                    (k1.p6 == k2.p6) && 
+                    (k1.p7 == k2.p7) && 
+                    (k1.p8 == k2.p8) && 
+                    (k1.p9 == k2.p9) && 
+                    (k1.p10 == k2.p10) && 
+                    (k1.p11 == k2.p11) && 
+                    (k1.p12 == k2.p12) && 
+                    (k1.p13 == k2.p13) && 
+                    (k1.p14 == k2.p14) && 
+                    (k1.p15 == k2.p15) )
+                    return true;
+                else
+                    return false;
+            default:
+                return false;
+        }
+    }
+
+
+
+    template<class F, typename I>
+    bool operator<(const Key<F, I> &k1, const Key<F, I> &k2)
+    {
+        if( k1.count < k2.count )
+            return true;
+        switch(k1.count){
+            case -1:
+                return false;
+            case 0:
+                if( k1.id < k2.id )
+                    return true;
+                else
+                    return false;
+            case 1:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) )
+                    return true;
+                else
+                    return false;
+            case 2:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) )
+                    return true;
+                else
+                    return false;
+            case 3:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) )
+                    return true;
+                else
+                    return false;
+            case 4:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) )
+                    return true;
+                else
+                    return false;
+            case 5:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) )
+                    return true;
+                else
+                    return false;
+            case 6:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) || 
+                    (k1.p6 < k2.p6) )
+                    return true;
+                else
+                    return false;
+            case 7:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) || 
+                    (k1.p6 < k2.p6) || 
+                    (k1.p7 < k2.p7) )
+                    return true;
+                else
+                    return false;
+            case 8:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) || 
+                    (k1.p6 < k2.p6) || 
+                    (k1.p7 < k2.p7) || 
+                    (k1.p8 < k2.p8) )
+                    return true;
+                else
+                    return false;
+            case 9:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) || 
+                    (k1.p6 < k2.p6) || 
+                    (k1.p7 < k2.p7) || 
+                    (k1.p8 < k2.p8) || 
+                    (k1.p9 < k2.p9) )
+                    return true;
+                else
+                    return false;
+            case 10:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) || 
+                    (k1.p6 < k2.p6) || 
+                    (k1.p7 < k2.p7) || 
+                    (k1.p8 < k2.p8) || 
+                    (k1.p9 < k2.p9) || 
+                    (k1.p10 < k2.p10) )
+                    return true;
+                else
+                    return false;
+            case 11:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) || 
+                    (k1.p6 < k2.p6) || 
+                    (k1.p7 < k2.p7) || 
+                    (k1.p8 < k2.p8) || 
+                    (k1.p9 < k2.p9) || 
+                    (k1.p10 < k2.p10) || 
+                    (k1.p11 < k2.p11) )
+                    return true;
+                else
+                    return false;
+            case 12:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) || 
+                    (k1.p6 < k2.p6) || 
+                    (k1.p7 < k2.p7) || 
+                    (k1.p8 < k2.p8) || 
+                    (k1.p9 < k2.p9) || 
+                    (k1.p10 < k2.p10) || 
+                    (k1.p11 < k2.p11) || 
+                    (k1.p12 < k2.p12) )
+                    return true;
+                else
+                    return false;
+            case 13:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) || 
+                    (k1.p6 < k2.p6) || 
+                    (k1.p7 < k2.p7) || 
+                    (k1.p8 < k2.p8) || 
+                    (k1.p9 < k2.p9) || 
+                    (k1.p10 < k2.p10) || 
+                    (k1.p11 < k2.p11) || 
+                    (k1.p12 < k2.p12) || 
+                    (k1.p13 < k2.p13) )
+                    return true;
+                else
+                    return false;
+            case 14:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) || 
+                    (k1.p6 < k2.p6) || 
+                    (k1.p7 < k2.p7) || 
+                    (k1.p8 < k2.p8) || 
+                    (k1.p9 < k2.p9) || 
+                    (k1.p10 < k2.p10) || 
+                    (k1.p11 < k2.p11) || 
+                    (k1.p12 < k2.p12) || 
+                    (k1.p13 < k2.p13) || 
+                    (k1.p14 < k2.p14) )
+                    return true;
+                else
+                    return false;
+            case 15:
+                if( (k1.id < k2.id) || 
+                    (k1.p1 < k2.p1) || 
+                    (k1.p2 < k2.p2) || 
+                    (k1.p3 < k2.p3) || 
+                    (k1.p4 < k2.p4) || 
+                    (k1.p5 < k2.p5) || 
+                    (k1.p6 < k2.p6) || 
+                    (k1.p7 < k2.p7) || 
+                    (k1.p8 < k2.p8) || 
+                    (k1.p9 < k2.p9) || 
+                    (k1.p10 < k2.p10) || 
+                    (k1.p11 < k2.p11) || 
+                    (k1.p12 < k2.p12) || 
+                    (k1.p13 < k2.p13) || 
+                    (k1.p14 < k2.p14) || 
+                    (k1.p15 < k2.p15) )
+                    return true;
+                else
+                    return false;
+            default:
+                return false;
+        }
+    }
+
+    
+
+} // namespace Loki
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LockingPtr.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LockingPtr.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LockingPtr.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,101 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code is from the article:
+//     "Generic<Programming>: volatile — Multithreaded Programmer’s Best Friend
+//     Volatile-Correctness or How to Have Your Compiler Detect Race Conditions
+//     for You" by Alexandrescu, Andrei.
+//     Published in the February 2001 issue of the C/C++ Users Journal.
+//     http://www.cuj.com/documents/s=7998/cujcexp1902alexandr/
+// Prepared for Loki library by Richard Sposato
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_LOCKING_PTR_INC_
+#define LOKI_LOCKING_PTR_INC_
+
+// $Id: LockingPtr.h 748 2006-10-17 19:49:08Z syntheticpp $
+
+
+#include <loki/ConstPolicy.h>
+
+namespace Loki
+{
+    /** @class LockingPtr
+     Locks a volatile object and casts away volatility so that the object
+     can be safely used in a single-threaded region of code.
+     Original version of LockingPtr had only one template - for the shared
+     object, but not the mutex type.  This version allows users to specify a
+     the mutex type as a LockingPolicy class.  The only requirements for a
+     LockingPolicy class are to provide Lock and Unlock methods.
+     */
+    template < typename SharedObject, typename LockingPolicy = LOKI_DEFAULT_MUTEX, 
+               template<class> class ConstPolicy = LOKI_DEFAULT_CONSTNESS >
+    class LockingPtr
+    {
+    public:
+
+        typedef typename ConstPolicy<SharedObject>::Type ConstOrNotType;
+
+        /** Constructor locks mutex associated with an object.
+         @param object Reference to object.
+         @param mutex Mutex used to control thread access to object.
+         */
+        LockingPtr( volatile ConstOrNotType & object, LockingPolicy & mutex )
+           : pObject_( const_cast< SharedObject * >( &object ) ),
+            pMutex_( &mutex )
+        {
+            mutex.Lock();
+        }
+
+        typedef typename std::pair<volatile ConstOrNotType *, LockingPolicy *> Pair;
+
+        /** Constructor locks mutex associated with an object.
+         @param lockpair a std::pair of pointers to the object and the mutex
+         */
+        LockingPtr( Pair lockpair )
+           : pObject_( const_cast< SharedObject * >( lockpair.first ) ),
+            pMutex_( lockpair.second )
+        {
+            lockpair.second->Lock();
+        }
+
+        /// Destructor unlocks the mutex.
+        ~LockingPtr()
+        {
+            pMutex_->Unlock();
+        }
+
+        /// Star-operator dereferences pointer.
+        ConstOrNotType & operator * ()
+        {
+            return *pObject_;
+        }
+
+        /// Point-operator returns pointer to object.
+        ConstOrNotType * operator -> ()
+        {
+            return pObject_;
+        }
+
+    private:
+
+        /// Default constructor is not implemented.
+        LockingPtr();
+
+        /// Copy-constructor is not implemented.
+        LockingPtr( const LockingPtr & );
+
+        /// Copy-assignment-operator is not implemented.
+        LockingPtr & operator = ( const LockingPtr & );
+
+        /// Pointer to the shared object.
+        ConstOrNotType * pObject_;
+
+        /// Pointer to the mutex.
+        LockingPolicy * pMutex_;
+
+    }; // end class LockingPtr
+
+} // namespace Loki
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LokiExport.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LokiExport.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LokiExport.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,69 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 by Peter Kümmel
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_LOKIEXPORT_INC_
+#define LOKI_LOKIEXPORT_INC_
+
+// $Id: LokiExport.h 748 2006-10-17 19:49:08Z syntheticpp $
+
+
+#ifdef __GNUC__
+
+#ifdef _HAVE_GCC_VISIBILITY
+#define LOKI_EXPORT_SPEC __attribute__ ((visibility("default")))
+#define LOKI_IMPORT_SPEC 
+#else
+#define LOKI_EXPORT_SPEC
+#define LOKI_IMPORT_SPEC 
+#endif
+
+#else
+
+#ifdef _WIN32
+#define LOKI_EXPORT_SPEC __declspec(dllexport)
+#define LOKI_IMPORT_SPEC __declspec(dllimport)
+#else
+#define LOKI_EXPORT_SPEC 
+#define LOKI_IMPORT_SPEC 
+#endif
+
+#endif
+
+
+#if (defined(LOKI_MAKE_DLL) && defined(LOKI_DLL)) || \
+    (defined(LOKI_MAKE_DLL) && defined(LOKI_STATIC)) || \
+    (defined(LOKI_DLL) && defined(LOKI_STATIC))
+#error export macro error: you could not build AND use the library
+#endif
+
+#ifdef LOKI_MAKE_DLL
+#define LOKI_EXPORT LOKI_EXPORT_SPEC
+#endif
+
+#ifdef LOKI_DLL
+#define LOKI_EXPORT LOKI_IMPORT_SPEC
+#endif
+
+#ifdef LOKI_STATIC
+#define LOKI_EXPORT
+#endif
+
+#if !defined(LOKI_EXPORT) && !defined(EXPLICIT_EXPORT)
+#define LOKI_EXPORT
+#endif
+
+#ifndef LOKI_EXPORT
+#error export macro error: LOKI_EXPORT was not defined, disable EXPLICIT_EXPORT or define a export specification
+#endif
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LokiTypeInfo.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LokiTypeInfo.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/LokiTypeInfo.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,103 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_LOKITYPEINFO_INC_
+#define LOKI_LOKITYPEINFO_INC_
+
+// $Id: LokiTypeInfo.h 748 2006-10-17 19:49:08Z syntheticpp $
+
+
+#include <typeinfo>
+#include <cassert>
+#include "Typelist.h"
+
+namespace Loki
+{
+////////////////////////////////////////////////////////////////////////////////
+// class TypeInfo
+// Purpose: offer a first-class, comparable wrapper over std::type_info
+////////////////////////////////////////////////////////////////////////////////
+
+    class TypeInfo
+    {
+    public:
+        // Constructors
+        TypeInfo(); // needed for containers
+        TypeInfo(const std::type_info&); // non-explicit
+
+        // Access for the wrapped std::type_info
+        const std::type_info& Get() const;
+        // Compatibility functions
+        bool before(const TypeInfo& rhs) const;
+        const char* name() const;
+
+    private:
+        const std::type_info* pInfo_;
+    };
+    
+// Implementation
+    
+    inline TypeInfo::TypeInfo()
+    {
+        class Nil {};
+        pInfo_ = &typeid(Nil);
+        assert(pInfo_);
+    }
+    
+    inline TypeInfo::TypeInfo(const std::type_info& ti)
+    : pInfo_(&ti)
+    { assert(pInfo_); }
+    
+    inline bool TypeInfo::before(const TypeInfo& rhs) const
+    {
+        assert(pInfo_);
+        // type_info::before return type is int in some VC libraries 
+        return pInfo_->before(*rhs.pInfo_) != 0;
+    }
+
+    inline const std::type_info& TypeInfo::Get() const
+    {
+        assert(pInfo_);
+        return *pInfo_;
+    }
+    
+    inline const char* TypeInfo::name() const
+    {
+        assert(pInfo_);
+        return pInfo_->name();
+    }
+
+// Comparison operators
+    
+    inline bool operator==(const TypeInfo& lhs, const TypeInfo& rhs)
+    // type_info::operator== return type is int in some VC libraries
+    { return (lhs.Get() == rhs.Get()) != 0; }
+
+    inline bool operator<(const TypeInfo& lhs, const TypeInfo& rhs)
+    { return lhs.before(rhs); }
+
+    inline bool operator!=(const TypeInfo& lhs, const TypeInfo& rhs)
+    { return !(lhs == rhs); }    
+    
+    inline bool operator>(const TypeInfo& lhs, const TypeInfo& rhs)
+    { return rhs < lhs; }
+    
+    inline bool operator<=(const TypeInfo& lhs, const TypeInfo& rhs)
+    { return !(lhs > rhs); }
+     
+    inline bool operator>=(const TypeInfo& lhs, const TypeInfo& rhs)
+    { return !(lhs < rhs); }
+}
+
+#endif // end file guardian

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/MultiMethods.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/MultiMethods.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/MultiMethods.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,415 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_MULTIMETHODS_INC_
+#define LOKI_MULTIMETHODS_INC_
+
+// $Id: MultiMethods.h 751 2006-10-17 19:50:37Z syntheticpp $
+
+
+#include "Typelist.h"
+#include "LokiTypeInfo.h"
+#include "Functor.h"
+#include "AssocVector.h"
+
+////////////////////////////////////////////////////////////////////////////////
+// IMPORTANT NOTE:
+// The double dispatchers implemented below differ from the excerpts shown in
+// the book - they are simpler while respecting the same interface.
+////////////////////////////////////////////////////////////////////////////////
+
+namespace Loki
+{
+////////////////////////////////////////////////////////////////////////////////
+// class template InvocationTraits (helper)
+// Helps implementing optional symmetry
+////////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+        template <class SomeLhs, class SomeRhs, 
+            class Executor, typename ResultType>
+        struct InvocationTraits
+        {
+            static ResultType 
+        DoDispatch(SomeLhs& lhs, SomeRhs& rhs, 
+            Executor& exec, Int2Type<false>)
+            {
+                return exec.Fire(lhs, rhs);
+            }
+            static ResultType 
+        DoDispatch(SomeLhs& lhs, SomeRhs& rhs, 
+            Executor& exec, Int2Type<true>)
+            {
+                return exec.Fire(rhs, lhs);
+            }
+        };
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+// class template StaticDispatcher
+// Implements an automatic static double dispatcher based on two typelists
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        class Executor,
+        class BaseLhs, 
+        class TypesLhs,
+        bool symmetric = true,
+        class BaseRhs = BaseLhs,
+        class TypesRhs = TypesLhs,
+        typename ResultType = void
+    >
+    class StaticDispatcher
+    {
+        template <class SomeLhs>
+        static ResultType DispatchRhs(SomeLhs& lhs, BaseRhs& rhs,
+            Executor exec, NullType)
+        { return exec.OnError(lhs, rhs); }
+        
+        template <class Head, class Tail, class SomeLhs>
+        static ResultType DispatchRhs(SomeLhs& lhs, BaseRhs& rhs,
+            Executor exec, Typelist<Head, Tail>)
+        {            
+            if (Head* p2 = dynamic_cast<Head*>(&rhs))
+            {
+                Int2Type<(symmetric &&
+                          int(TL::IndexOf<TypesRhs, Head>::value) <
+                          int(TL::IndexOf<TypesLhs, SomeLhs>::value))> i2t;
+
+                typedef Private::InvocationTraits< 
+                        SomeLhs, Head, Executor, ResultType> CallTraits;
+                    
+                return CallTraits::DoDispatch(lhs, *p2, exec, i2t);
+            }
+            return DispatchRhs(lhs, rhs, exec, Tail());
+        }
+        
+        static ResultType DispatchLhs(BaseLhs& lhs, BaseRhs& rhs,
+            Executor exec, NullType)
+        { return exec.OnError(lhs, rhs); }
+        
+        template <class Head, class Tail>
+        static ResultType DispatchLhs(BaseLhs& lhs, BaseRhs& rhs,
+            Executor exec, Typelist<Head, Tail>)
+        {            
+            if (Head* p1 = dynamic_cast<Head*>(&lhs))
+            {
+                return DispatchRhs(*p1, rhs, exec, TypesRhs());
+            }
+            return DispatchLhs(lhs, rhs, exec, Tail());
+        }
+
+    public:
+        static ResultType Go(BaseLhs& lhs, BaseRhs& rhs,
+            Executor exec)
+        { return DispatchLhs(lhs, rhs, exec, TypesLhs()); }
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+// class template BasicDispatcher
+// Implements a logarithmic double dispatcher for functors (or functions)
+// Doesn't offer automated casts or symmetry
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        class BaseLhs,
+        class BaseRhs = BaseLhs,
+        typename ResultType = void,
+        typename CallbackType = ResultType (*)(BaseLhs&, BaseRhs&)
+    >
+    class BasicDispatcher
+    {
+        typedef std::pair<TypeInfo,TypeInfo> KeyType;
+        typedef CallbackType MappedType;
+        typedef AssocVector<KeyType, MappedType> MapType;
+        MapType callbackMap_;
+        
+        void DoAdd(TypeInfo lhs, TypeInfo rhs, CallbackType fun);
+        bool DoRemove(TypeInfo lhs, TypeInfo rhs);
+        
+    public:
+        template <class SomeLhs, class SomeRhs>
+        void Add(CallbackType fun)
+        {
+            DoAdd(typeid(SomeLhs), typeid(SomeRhs), fun);
+        }
+        
+        template <class SomeLhs, class SomeRhs>
+        bool Remove()
+        {
+            return DoRemove(typeid(SomeLhs), typeid(SomeRhs));
+        }
+        
+        ResultType Go(BaseLhs& lhs, BaseRhs& rhs);
+    };
+
+    // Non-inline to reduce compile time overhead...
+    template <class BaseLhs, class BaseRhs, 
+        typename ResultType, typename CallbackType>
+    void BasicDispatcher<BaseLhs,BaseRhs,ResultType,CallbackType>
+         ::DoAdd(TypeInfo lhs, TypeInfo rhs, CallbackType fun)
+    {
+        callbackMap_[KeyType(lhs, rhs)] = fun;
+    }
+        
+    template <class BaseLhs, class BaseRhs, 
+        typename ResultType, typename CallbackType>
+    bool BasicDispatcher<BaseLhs,BaseRhs,ResultType,CallbackType>
+         ::DoRemove(TypeInfo lhs, TypeInfo rhs)
+    {
+        return callbackMap_.erase(KeyType(lhs, rhs)) == 1;
+    }
+
+    template <class BaseLhs, class BaseRhs, 
+        typename ResultType, typename CallbackType>
+    ResultType BasicDispatcher<BaseLhs,BaseRhs,ResultType,CallbackType>
+               ::Go(BaseLhs& lhs, BaseRhs& rhs)
+    {
+        typename MapType::key_type k(typeid(lhs),typeid(rhs));
+        typename MapType::iterator i = callbackMap_.find(k);
+        if (i == callbackMap_.end())
+        {
+                throw std::runtime_error("Function not found");
+        }
+        return (i->second)(lhs, rhs);
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+// class template StaticCaster
+// Implementation of the CastingPolicy used by FunctorDispatcher
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class To, class From>
+    struct StaticCaster
+    {
+        static To& Cast(From& obj)
+        {
+            return static_cast<To&>(obj);
+        }
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template DynamicCaster
+// Implementation of the CastingPolicy used by FunctorDispatcher
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class To, class From>
+    struct DynamicCaster
+    {
+        static To& Cast(From& obj)
+        {
+            return dynamic_cast<To&>(obj);
+        }
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template Private::FnDispatcherHelper
+// Implements trampolines and argument swapping used by FnDispatcher
+////////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+        template <class BaseLhs, class BaseRhs,
+        class SomeLhs, class SomeRhs,
+            typename ResultType,
+            class CastLhs, class CastRhs,
+            ResultType (*Callback)(SomeLhs&, SomeRhs&)>
+        struct FnDispatcherHelper
+        {
+            static ResultType Trampoline(BaseLhs& lhs, BaseRhs& rhs)
+            {
+                return Callback(CastLhs::Cast(lhs), CastRhs::Cast(rhs));
+            }
+            static ResultType TrampolineR(BaseRhs& rhs, BaseLhs& lhs)
+            {
+                return Trampoline(lhs, rhs);
+            }
+        };
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FnDispatcher
+// Implements an automatic logarithmic double dispatcher for functions
+// Features automated conversions
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class BaseLhs, class BaseRhs = BaseLhs,
+              typename ResultType = void,
+              template <class, class> class CastingPolicy = DynamicCaster,
+              template <class, class, class, class>
+              class DispatcherBackend = BasicDispatcher>
+    class FnDispatcher
+    {
+        DispatcherBackend<BaseLhs, BaseRhs, ResultType, 
+            ResultType (*)(BaseLhs&, BaseRhs&)> backEnd_;
+        
+    public:
+        template <class SomeLhs, class SomeRhs>
+        void Add(ResultType (*pFun)(BaseLhs&, BaseRhs&))
+        {
+            return backEnd_.template Add<SomeLhs, SomeRhs>(pFun);
+        }        
+        
+        template <class SomeLhs, class SomeRhs,
+            ResultType (*callback)(SomeLhs&, SomeRhs&)>
+        void Add()
+        {
+        typedef Private::FnDispatcherHelper<
+                    BaseLhs, BaseRhs, 
+                    SomeLhs, SomeRhs,
+                    ResultType,
+                    CastingPolicy<SomeLhs,BaseLhs>, 
+                    CastingPolicy<SomeRhs,BaseRhs>, 
+                    callback> Local;
+
+            Add<SomeLhs, SomeRhs>(&Local::Trampoline);
+        }
+        
+        template <class SomeLhs, class SomeRhs,
+            ResultType (*callback)(SomeLhs&, SomeRhs&),
+            bool symmetric>
+        void Add(bool = true) // [gcc] dummy bool
+        {
+        typedef Private::FnDispatcherHelper<
+                    BaseLhs, BaseRhs, 
+                    SomeLhs, SomeRhs,
+                    ResultType,
+                    CastingPolicy<SomeLhs,BaseLhs>, 
+                    CastingPolicy<SomeRhs,BaseRhs>, 
+                    callback> Local;
+
+            Add<SomeLhs, SomeRhs>(&Local::Trampoline);
+            if (symmetric)
+            {
+                Add<SomeRhs, SomeLhs>(&Local::TrampolineR);
+            }
+        }
+        
+        template <class SomeLhs, class SomeRhs>
+        void Remove()
+        {
+            backEnd_.template Remove<SomeLhs, SomeRhs>();
+        }
+
+        ResultType Go(BaseLhs& lhs, BaseRhs& rhs)
+        {
+            return backEnd_.Go(lhs, rhs);
+        }
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorDispatcherAdaptor
+// permits use of FunctorDispatcher under gcc.2.95.2/3
+///////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+    template <class BaseLhs, class BaseRhs,
+          class SomeLhs, class SomeRhs,
+          typename ResultType,
+          class CastLhs, class CastRhs,
+          class Fun, bool SwapArgs>
+        class FunctorDispatcherHelper 
+        {
+            Fun fun_;
+            ResultType Fire(BaseLhs& lhs, BaseRhs& rhs,Int2Type<false>)
+            {
+                return fun_(CastLhs::Cast(lhs), CastRhs::Cast(rhs));
+            }
+            ResultType Fire(BaseLhs& rhs, BaseRhs& lhs,Int2Type<true>)
+            {
+                return fun_(CastLhs::Cast(lhs), CastRhs::Cast(rhs));
+            }
+        public:
+            FunctorDispatcherHelper(const Fun& fun) : fun_(fun) {}
+
+            ResultType operator()(BaseLhs& lhs, BaseRhs& rhs)
+            {
+                return Fire(lhs,rhs,Int2Type<SwapArgs>());
+            }
+        };
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+// class template FunctorDispatcher
+// Implements a logarithmic double dispatcher for functors
+// Features automated casting
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class BaseLhs, class BaseRhs = BaseLhs,
+              typename ResultType = void,
+              template <class, class> class CastingPolicy = DynamicCaster, 
+              template <class, class, class, class>
+              class DispatcherBackend = BasicDispatcher>
+    class FunctorDispatcher
+    {
+        typedef LOKI_TYPELIST_2(BaseLhs&, BaseRhs&) ArgsList;
+        typedef Functor<ResultType, ArgsList, LOKI_DEFAULT_THREADING> FunctorType;
+
+        DispatcherBackend<BaseLhs, BaseRhs, ResultType, FunctorType> backEnd_;
+
+    public:
+        template <class SomeLhs, class SomeRhs, class Fun>
+        void Add(const Fun& fun)
+        {
+            typedef Private::FunctorDispatcherHelper<
+                    BaseLhs, BaseRhs,
+                    SomeLhs, SomeRhs,
+                    ResultType,
+                    CastingPolicy<SomeLhs, BaseLhs>,
+                    CastingPolicy<SomeRhs, BaseRhs>,
+                    Fun, false> Adapter;
+
+            backEnd_.template Add<SomeLhs, SomeRhs>(FunctorType(Adapter(fun)));
+    }
+        template <class SomeLhs, class SomeRhs, bool symmetric, class Fun>
+        void Add(const Fun& fun)
+        {
+        Add<SomeLhs,SomeRhs>(fun);
+
+        if (symmetric)
+        {
+        // Note: symmetry only makes sense where BaseLhs==BaseRhs
+                typedef Private::FunctorDispatcherHelper<
+                    BaseLhs, BaseLhs,
+                    SomeLhs, SomeRhs,
+                    ResultType,
+                    CastingPolicy<SomeLhs, BaseLhs>,
+                    CastingPolicy<SomeRhs, BaseLhs>,
+                    Fun, true> AdapterR;
+
+                backEnd_.template Add<SomeRhs, SomeLhs>(FunctorType(AdapterR(fun)));
+        }
+        }
+        
+        template <class SomeLhs, class SomeRhs>
+        void Remove()
+        {
+            backEnd_.template Remove<SomeLhs, SomeRhs>();
+        }
+
+        ResultType Go(BaseLhs& lhs, BaseRhs& rhs)
+        {
+            return backEnd_.Go(lhs, rhs);
+        }
+    };
+} // namespace Loki
+
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/NullType.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/NullType.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/NullType.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,34 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_NULLTYPE_INC_
+#define LOKI_NULLTYPE_INC_
+
+// $Id: NullType.h 751 2006-10-17 19:50:37Z syntheticpp $
+
+
+namespace Loki
+{
+////////////////////////////////////////////////////////////////////////////////
+// class NullType
+// Used as a placeholder for "no type here"
+// Useful as an end marker in typelists 
+////////////////////////////////////////////////////////////////////////////////
+
+    class NullType {};
+    
+}   // namespace Loki
+
+
+#endif // end file guardian

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/OrderedStatic.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/OrderedStatic.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/OrderedStatic.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,225 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2005 Peter Kümmel
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_ORDEREDSTATIC_INC_
+#define LOKI_ORDEREDSTATIC_INC_
+
+// $Id: OrderedStatic.h 751 2006-10-17 19:50:37Z syntheticpp $
+
+
+#include <vector>
+#include <iostream>
+
+#include "LokiExport.h"
+#include "Singleton.h"
+#include "Typelist.h"
+#include "Sequence.h"
+
+// usage: see test/OrderedStatic
+
+namespace Loki
+{
+    namespace Private
+    {
+        ////////////////////////////////////////////////////////////////////////////////
+        // polymorph base class for OrderedStatic template,
+        // necessary because of the creator
+        ////////////////////////////////////////////////////////////////////////////////
+        class LOKI_EXPORT OrderedStaticCreatorFunc
+        {
+        public:
+            virtual void createObject() = 0;
+        
+        protected:
+            OrderedStaticCreatorFunc();
+            virtual ~OrderedStaticCreatorFunc();
+        
+        private:
+            OrderedStaticCreatorFunc(const OrderedStaticCreatorFunc&);
+        };
+
+        ////////////////////////////////////////////////////////////////////////////////
+        // template base clase for OrderedStatic template, 
+        // common for all specializations
+        ////////////////////////////////////////////////////////////////////////////////
+        template<class T>
+        class OrderedStaticBase : public OrderedStaticCreatorFunc
+        {
+        public:
+            T& operator*()
+            {
+                return *val_;
+            }
+
+            T* operator->()
+            {
+                return val_;
+            }
+
+        protected:
+
+            OrderedStaticBase(unsigned int longevity) :  val_(0), longevity_(longevity)
+            {
+            }
+            
+            virtual ~OrderedStaticBase()
+            {
+            }
+            
+            void SetLongevity(T* ptr)
+            {
+                val_=ptr;
+                Loki::SetLongevity(val_,longevity_);
+            }
+
+        private:
+            OrderedStaticBase();
+            OrderedStaticBase(const OrderedStaticBase&);
+            OrderedStaticBase& operator=(const OrderedStaticBase&);
+            T* val_;
+            unsigned int longevity_;
+            
+        };
+
+        ////////////////////////////////////////////////////////////////////////////////
+        // OrderedStaticManagerClass implements details 
+        // OrderedStaticManager is then defined as a Singleton
+        ////////////////////////////////////////////////////////////////////////////////
+        class LOKI_EXPORT OrderedStaticManagerClass
+        {
+        public:
+            OrderedStaticManagerClass();
+            virtual ~OrderedStaticManagerClass();
+
+            typedef void (OrderedStaticCreatorFunc::*Creator)();
+
+            void createObjects();
+            void registerObject(unsigned int longevity,OrderedStaticCreatorFunc*,Creator);
+
+        private:
+            OrderedStaticManagerClass(const OrderedStaticManagerClass&);
+            OrderedStaticManagerClass& operator=(const OrderedStaticManagerClass&);
+            
+            struct Data
+            {
+                Data(unsigned int,OrderedStaticCreatorFunc*, Creator);
+                unsigned int longevity;
+                OrderedStaticCreatorFunc* object;
+                Creator creator;
+            };
+
+            std::vector<Data> staticObjects_;
+            unsigned int max_longevity_;
+            unsigned int min_longevity_;
+        };
+
+    }// namespace Private
+
+    ////////////////////////////////////////////////////////////////////////////////
+    // OrderedStaticManager is only a Singleton typedef
+    ////////////////////////////////////////////////////////////////////////////////
+
+    typedef Loki::SingletonHolder
+    <
+        Loki::Private::OrderedStaticManagerClass, 
+        Loki::CreateUsingNew,
+        Loki::NoDestroy,
+        Loki::SingleThreaded
+    >
+    OrderedStaticManager;
+
+    ////////////////////////////////////////////////////////////////////////////////
+    // template OrderedStatic template: 
+    // L        : longevity
+    // T        : object type
+    // TList    : creator parameters
+    ////////////////////////////////////////////////////////////////////////////////
+
+    template<unsigned int L, class T, class TList = Loki::NullType>
+    class OrderedStatic;
+
+
+    ////////////////////////////////////////////////////////////////////////////////
+    // OrderedStatic specializations
+    ////////////////////////////////////////////////////////////////////////////////
+
+    template<unsigned int L, class T>
+    class OrderedStatic<L, T, Loki::NullType> : public Private::OrderedStaticBase<T>
+    {
+    public:    
+        OrderedStatic() : Private::OrderedStaticBase<T>(L)
+        {
+            OrderedStaticManager::Instance().registerObject
+                                (L,this,&Private::OrderedStaticCreatorFunc::createObject);
+        }
+
+        void createObject()
+        {
+            Private::OrderedStaticBase<T>::SetLongevity(new T);
+        }
+
+    private:
+        OrderedStatic(const OrderedStatic&);
+        OrderedStatic& operator=(const OrderedStatic&);
+    };
+
+    template<unsigned int L, class T, typename P1>
+    class OrderedStatic<L, T, Loki::Seq<P1> > : public Private::OrderedStaticBase<T>
+    {
+    public:
+        OrderedStatic(P1 p) : Private::OrderedStaticBase<T>(L), para_(p)
+        {
+            OrderedStaticManager::Instance().registerObject
+                                (L,this,&Private::OrderedStaticCreatorFunc::createObject);
+        }
+        
+        void createObject()
+        {
+            Private::OrderedStaticBase<T>::SetLongevity(new T(para_));
+        }
+
+    private:
+        OrderedStatic();
+        OrderedStatic(const OrderedStatic&);
+        OrderedStatic& operator=(const OrderedStatic&);
+        P1 para_;
+    };
+
+    template<unsigned int L, class T, typename P1>
+    class OrderedStatic<L, T,  P1(*)() > : public Private::OrderedStaticBase<T>
+    {
+    public:
+
+        typedef P1(*Func)();
+
+        OrderedStatic(Func p) : Private::OrderedStaticBase<T>(L), para_(p)
+        {
+            OrderedStaticManager::Instance().registerObject
+                                (L,this,&Private::OrderedStaticCreatorFunc::createObject);
+        }
+
+        void createObject()
+        {
+            Private::OrderedStaticBase<T>::SetLongevity(new T(para_()));
+        }
+
+    private:
+        OrderedStatic();
+        OrderedStatic(const OrderedStatic&);
+        OrderedStatic& operator=(const OrderedStatic&);
+        Func para_;
+    };
+
+}// namespace Loki
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Pimpl.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Pimpl.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Pimpl.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,198 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 Peter Kümmel
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_PIMPL_INC_
+#define LOKI_PIMPL_INC_
+
+// $Id: Pimpl.h 751 2006-10-17 19:50:37Z syntheticpp $
+
+
+///  \defgroup PimplGroup Pimpl 
+
+#ifndef LOKI_INHERITED_PIMPL_NAME
+#define LOKI_INHERITED_PIMPL_NAME d
+#endif
+
+#ifndef LOKI_INHERITED_RIMPL_NAME
+#define LOKI_INHERITED_RIMPL_NAME d
+#endif
+
+namespace Loki
+{
+
+    //////////////////////////////////////////
+    ///  \class ConstPropPtr
+    ///
+    ///  \ingroup PimplGroup
+    ///   Simple const propagating smart pointer
+    ///   Is the default smart pointer of Pimpl.
+    //////////////////////////////////////////
+
+    template<class T>
+    struct ConstPropPtr
+    {
+        explicit ConstPropPtr(T* p) : ptr_(p) {}
+        ~ConstPropPtr() { delete  ptr_; ptr_ = 0; }
+        T* operator->()    { return  ptr_; }
+        T& operator*()    { return *ptr_; }
+        const T* operator->() const    { return  ptr_; }
+        const T& operator*()  const    { return *ptr_; }
+    
+    private:
+        ConstPropPtr();
+        ConstPropPtr(const ConstPropPtr&);
+        ConstPropPtr& operator=(const ConstPropPtr&);
+        T* ptr_;
+    };
+
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \class Pimpl
+    ///
+    ///  \ingroup PimplGroup
+    ///
+    ///  Implements the Pimpl idiom. It's a wrapper for a smart pointer which
+    ///  automatically creates and deletes the implementation object and adds
+    ///  const propagation to the smart pointer.
+    ///  
+    ///  \par Usage
+    ///  see test/Pimpl
+    ////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <    
+        class T, 
+        typename Pointer = ConstPropPtr<T>
+    >
+    class Pimpl 
+    {
+    public:
+
+        typedef T Impl;
+
+        Pimpl() : ptr_(new T)
+        {}
+
+        ~Pimpl()
+        {
+            // Don't compile with incomplete type
+            //
+            // If compilation breaks here make sure
+            // the compiler does not auto-generate the 
+            // destructor of the class hosting the pimpl:
+            // - implement the destructor of the class 
+            // - don't inline the destructor
+            typedef char T_must_be_defined[sizeof(T) ? 1 : -1 ];
+        }
+
+
+        T* operator->()
+        {
+            return ptr_.operator->();
+        }
+
+        T& operator*()
+        {
+            return ptr_.operator*();
+        }
+
+        const T* operator->() const
+        {
+            return ptr_.operator->();
+        }
+
+        const T& operator*() const
+        {
+            return ptr_.operator*();
+        }
+
+        Pointer& wrapped()
+        {
+            return ptr_;
+        }
+
+        const Pointer& wrapped() const
+        {
+            return ptr_;
+        }
+
+
+    private:
+        Pimpl(const Pimpl&);
+        Pimpl& operator=(const Pimpl&);
+
+        Pointer ptr_;
+    };
+
+
+    template<class T, typename Pointer = ConstPropPtr<T> >
+    struct PimplOwner 
+    {    
+        Pimpl<T,Pointer> LOKI_INHERITED_PIMPL_NAME;
+    };
+
+
+    //////////////////////////////////////////
+    /// \class  ImplOf
+    ///
+    /// \ingroup PimplGroup
+    /// Convenience template for the 
+    /// implementations which Pimpl points to.
+    //////////////////////////////////////////
+
+    template<class T>
+    struct ImplOf;
+
+
+    //////////////////////////////////////////
+    /// \class  PImplOf
+    ///
+    /// \ingroup PimplGroup
+    /// Convenience template which uses ImplOf
+    /// as implementation structure
+    //////////////////////////////////////////
+
+
+    template<class T, template<class> class Ptr = ConstPropPtr>
+    struct PimplOf
+    {
+        typedef T Impl;
+
+        // declare pimpl
+        typedef Pimpl<ImplOf<T>, Ptr<ImplOf<T> > > Type;
+
+        // inherit pimpl
+        typedef PimplOwner<ImplOf<T>, Ptr<ImplOf<T> > > Owner;
+    };
+
+
+    template<class T, class UsedPimpl = typename PimplOf<T>::Type >
+    struct RimplOf
+    {
+        typedef typename UsedPimpl::Impl & Type;
+
+        class Owner
+        {
+            UsedPimpl pimpl;
+
+        public:
+            Owner() : LOKI_INHERITED_RIMPL_NAME(*pimpl)
+            {}
+
+            Type LOKI_INHERITED_RIMPL_NAME;
+        };
+
+    };
+  
+}
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/RefToValue.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/RefToValue.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/RefToValue.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,70 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 Richard Sposato
+// Copyright (c) 2006 Peter Kümmel
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The authors make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_REFTOVALUE_INC_
+#define LOKI_REFTOVALUE_INC_
+
+// $Id: RefToValue.h 751 2006-10-17 19:50:37Z syntheticpp $
+
+
+namespace Loki
+{
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \class RefToValue
+    ///
+    ///  \ingroup SmartPointerGroup 
+    ///  Transports a reference as a value
+    ///  Serves to implement the Colvin/Gibbons trick for SmartPtr/ScopeGuard
+    ////////////////////////////////////////////////////////////////////////////////
+
+    template <class T>
+    class RefToValue
+    {   
+    public:
+    
+        RefToValue(T& ref) : ref_(ref) 
+        {}
+
+        RefToValue(const RefToValue& rhs) : ref_(rhs.ref_)
+        {}
+
+        operator T& () const 
+        {
+            return ref_;
+        }
+
+    private:
+        // Disable - not implemented
+        RefToValue();
+        RefToValue& operator=(const RefToValue&);
+        
+        T& ref_;
+    };
+
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \ingroup ExceptionGroup 
+    ///  RefToValue creator.
+    ////////////////////////////////////////////////////////////////////////////////
+
+    template <class T>
+    inline RefToValue<T> ByRef(T& t)
+    {
+        return RefToValue<T>(t);
+    }    
+    
+}
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Register.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Register.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Register.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,134 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 Peter Kümmel
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_REGISTER_INC_
+#define LOKI_REGISTER_INC_
+
+// $Id: Register.h 776 2006-11-09 13:12:57Z syntheticpp $
+
+
+#include "TypeManip.h"
+#include "HierarchyGenerators.h"
+
+///  \defgroup RegisterGroup Register 
+
+namespace Loki
+{
+
+    ////////////////////////////////////////////////////////////////////////////////
+    //
+    //  Helper classes/functions for RegisterByCreateSet
+    //
+    ////////////////////////////////////////////////////////////////////////////////
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \ingroup RegisterGroup
+    ///  Must be specialized be the user
+    ////////////////////////////////////////////////////////////////////////////////
+    template<class t> bool RegisterFunction();
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \ingroup RegisterGroup
+    ///  Must be specialized be the user
+    ////////////////////////////////////////////////////////////////////////////////
+    template<class t> bool UnRegisterFunction();
+
+    namespace Private
+    {
+        template<class T> 
+        struct RegisterOnCreate
+        {
+            RegisterOnCreate()  { RegisterFunction<T>(); }
+        };
+
+        template<class T> 
+        struct UnRegisterOnDelete
+        {
+            ~UnRegisterOnDelete() { UnRegisterFunction<T>(); }
+        };    
+
+        template<class T>
+        struct RegisterOnCreateElement
+        {
+            RegisterOnCreate<T> registerObj;
+        };
+
+        template<class T>
+        struct UnRegisterOnDeleteElement
+        {
+            UnRegisterOnDelete<T> unregisterObj;
+        };
+    }
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \class RegisterOnCreateSet
+    ///
+    ///  \ingroup RegisterGroup
+    ///  Implements a generic register class which registers classes of a typelist
+    ///
+    ///  \par Usage
+    ///  see test/Register
+    ////////////////////////////////////////////////////////////////////////////////
+
+    template<typename ElementList>
+    struct RegisterOnCreateSet 
+        : GenScatterHierarchy<ElementList, Private::RegisterOnCreateElement>
+    {};
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \class UnRegisterOnDeleteSet
+    ///
+    ///  \ingroup RegisterGroup
+    ///  Implements a generic register class which unregisters classes of a typelist
+    ///
+    ///  \par Usage
+    ///  see test/Register
+    ////////////////////////////////////////////////////////////////////////////////
+    template<typename ElementList>
+    struct UnRegisterOnDeleteSet 
+        : GenScatterHierarchy<ElementList, Private::UnRegisterOnDeleteElement>
+    {};
+
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \def  LOKI_CHECK_CLASS_IN_LIST( CLASS , LIST )
+    ///
+    ///  \ingroup RegisterGroup
+    ///  Check if CLASS is in the typelist LIST.
+    ///
+    ///  \par Usage
+    ///  see test/Register
+    ////////////////////////////////////////////////////////////////////////////////
+
+    
+#define LOKI_CONCATE(a,b,c,d) a ## b ## c ## d 
+#define LOKI_CONCAT(a,b,c,d) LOKI_CONCATE(a,b,c,d)
+
+#define LOKI_CHECK_CLASS_IN_LIST( CLASS , LIST )                                \
+                                                                                \
+    struct LOKI_CONCAT(check_,CLASS,_isInList_,LIST)                            \
+    {                                                                           \
+        typedef int LOKI_CONCAT(ERROR_class_,CLASS,_isNotInList_,LIST);         \
+    };                                                                          \
+    typedef Loki::Select<Loki::TL::IndexOf<LIST, CLASS>::value == -1,           \
+                        CLASS,                                                  \
+                        LOKI_CONCAT(check_,CLASS,_isInList_,LIST)>              \
+                        ::Result LOKI_CONCAT(CLASS,isInList,LIST,result);       \
+    typedef LOKI_CONCAT(CLASS,isInList,LIST,result)::                           \
+                        LOKI_CONCAT(ERROR_class_,CLASS,_isNotInList_,LIST)      \
+                        LOKI_CONCAT(ERROR_class_,CLASS,_isNotInList__,LIST);
+
+
+} // namespace Loki
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SPCachedFactory.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SPCachedFactory.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SPCachedFactory.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,204 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 by Guillaume Chatelet
+//
+// Code covered by the MIT License
+//
+// Permission to use, copy, modify, distribute and sell this software for any 
+// purpose is hereby granted without fee, provided that the above copyright 
+// notice appear in all copies and that both that copyright notice and this 
+// permission notice appear in supporting documentation.
+//
+// The authors make no representations about the suitability of this software
+// for any purpose. It is provided "as is" without express or implied warranty.
+//
+// This code DOES NOT accompany the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// $Id: SPCachedFactory.h 810 2007-02-25 14:36:28Z syntheticpp $
+
+#ifndef SPCACHEDFACTORY_H_
+#define SPCACHEDFACTORY_H_
+
+/**
+ * This file is intented to be used if you want a CachedFactory with
+ * a SmartPointer encapsulation policy.
+ * It as been defined in a separate file because of the many introduced
+ * dependencies (SmartPtr.h would depend on Functor.h and CachedFactory.h
+ * would depend on SmartPtr.h). By defining another header you pay for those
+ * extra dependencies only if you need it. 
+ * 
+ * This file defines FunctionStorage a new SmartPointer storage policy and
+ * SmartPointer a new CachedFactory encapsulation policy.
+ */
+
+#include <loki/Functor.h>
+#include <loki/SmartPtr.h>
+#include <loki/CachedFactory.h>
+
+namespace Loki
+{
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class FunctionStorage
+///
+///  \ingroup  SmartPointerStorageGroup 
+///  \brief Implementation of the StoragePolicy used by SmartPtr.
+///
+///  This storage policy is used by SmartPointer CachedFactory's encapsulation
+///  policy. It's purpose is to call a Functor instead of deleting the
+///  underlying pointee object. You have to set the callback functor by calling
+///  SetCallBackFunction(const FunctorType &functor).
+///
+///  Unfortunately, the functor argument is not a reference to the SmartPtr but
+///  a void *. Making functor argument a reference to the pointer would require
+///  the FunctionStorage template to know the full definition of the SmartPtr.
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class T>
+    class FunctionStorage
+    {
+    public:
+    	/// the type of the pointee_ object
+        typedef T* StoredType;
+        /// type used to declare OwnershipPolicy type.
+        typedef T* InitPointerType;
+        /// type returned by operator->
+        typedef T* PointerType;
+        /// type returned by operator*
+        typedef T& ReferenceType;
+        /// type of the Functor to set
+        typedef Functor< void , Seq< void* > > FunctorType;
+
+        FunctionStorage() : pointee_(Default()), functor_()
+        {}
+
+        // The storage policy doesn't initialize the stored pointer 
+        //     which will be initialized by the OwnershipPolicy's Clone fn
+        FunctionStorage(const FunctionStorage& rsh) : pointee_(0), functor_(rsh.functor_)
+        {}
+
+        template <class U>
+        FunctionStorage(const FunctionStorage<U>& rsh) : pointee_(0), functor_(rsh.functor_)
+        {}
+        
+        FunctionStorage(const StoredType& p) : pointee_(p), functor_() {}
+        
+        PointerType operator->() const { return pointee_; }
+        
+        ReferenceType operator*() const { return *pointee_; }
+        
+        void Swap(FunctionStorage& rhs)
+        { 
+        	std::swap(pointee_, rhs.pointee_);
+        	std::swap(functor_, rhs.functor_);
+        }
+        
+        /// Sets the callback function to call. You have to specify it or
+        /// the smartPtr will throw a bad_function_call exception.
+        void SetCallBackFunction(const FunctorType &functor)
+        {
+        	functor_ = functor;
+        }
+    
+        // Accessors
+        template <class F>
+        friend typename FunctionStorage<F>::PointerType GetImpl(const FunctionStorage<F>& sp);
+
+        template <class F>
+        friend const typename FunctionStorage<F>::StoredType& GetImplRef(const FunctionStorage<F>& sp);
+
+        template <class F>
+        friend typename FunctionStorage<F>::StoredType& GetImplRef(FunctionStorage<F>& sp);
+
+    protected:
+        // Destroys the data stored
+        // (Destruction might be taken over by the OwnershipPolicy)
+        void Destroy()
+        {
+            functor_(this);
+        }
+
+        // Default value to initialize the pointer
+        static StoredType Default()
+        { return 0; }
+    
+    private:
+        // Data
+        StoredType pointee_;
+        FunctorType functor_;
+    };
+
+    template <class T>
+    inline typename FunctionStorage<T>::PointerType GetImpl(const FunctionStorage<T>& sp)
+    { return sp.pointee_; }
+
+    template <class T>
+    inline const typename FunctionStorage<T>::StoredType& GetImplRef(const FunctionStorage<T>& sp)
+    { return sp.pointee_; }
+
+    template <class T>
+    inline typename FunctionStorage<T>::StoredType& GetImplRef(FunctionStorage<T>& sp)
+    { return sp.pointee_; }
+
+    /**
+	 * \class	SmartPointer
+	 * \ingroup	EncapsulationPolicyCachedFactoryGroup
+	 * \brief	Encapsulate the object in a SmartPtr with FunctionStorage policy.
+	 * 
+	 * The object will come back to the Cache as soon as no more SmartPtr are
+	 * referencing this object. You can customize the SmartPointer with the standard
+	 * SmartPtr policies (OwnershipPolicy, ConversionPolicy, CheckingPolicy,
+	 * ConstnessPolicy) but StoragePolicy is forced to FunctionStorage.
+	 */
+     template
+     <
+     	class AbstractProduct,
+     	template <class> class OwnershipPolicy = RefCounted,
+        class ConversionPolicy = DisallowConversion,
+        template <class> class CheckingPolicy = AssertCheck,
+        template<class> class ConstnessPolicy = LOKI_DEFAULT_CONSTNESS 
+     >     
+     class SmartPointer
+     {
+     private:
+     	   typedef SmartPtr< AbstractProduct,OwnershipPolicy,
+     	   	ConversionPolicy, CheckingPolicy,
+     	   	FunctionStorage, ConstnessPolicy > CallBackSP;
+     protected:           
+           typedef CallBackSP ProductReturn;
+           SmartPointer() : fun(this, &SmartPointer::smartPointerCallbackFunction) {}
+           virtual ~SmartPointer(){};
+           
+           ProductReturn encapsulate(AbstractProduct* pProduct)
+           {
+           		CallBackSP SP(pProduct);
+           		SP.SetCallBackFunction(fun);
+                return SP;
+           }
+           
+           AbstractProduct* release(ProductReturn &pProduct)
+           {
+                return GetImpl(pProduct);
+           }
+           
+           const char* name(){return "smart pointer";}
+
+     private:
+           SmartPointer& operator=(const SmartPointer&);
+           SmartPointer(const SmartPointer&);
+     	   void smartPointerCallbackFunction(void* pSP)
+     	   {
+     	   		CallBackSP &SP(*reinterpret_cast<CallBackSP*>(pSP));
+     	   		ReleaseObject(SP);
+     	   }
+           virtual void ReleaseObject(ProductReturn &object)=0;
+           const typename CallBackSP::FunctorType fun;
+     };
+
+} // namespace Loki
+
+#endif /*SPCACHEDFACTORY_H_*/

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SafeFormat.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SafeFormat.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SafeFormat.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,595 @@
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2005 by Andrei Alexandrescu
+// Copyright (c) 2006 Peter Kümmel
+// Permission to use, copy, modify, distribute, and sell this software for any
+//     purpose is hereby granted without fee, provided that the above copyright
+//     notice appear in all copies and that both that copyright notice and this
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the suitability of this software 
+//     for any purpose. It is provided "as is" without express or implied 
+//     warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_SAFEFORMAT_INC_
+#define LOKI_SAFEFORMAT_INC_
+
+// $Id: SafeFormat.h 747 2006-10-17 19:48:40Z syntheticpp $
+
+
+////////////////////////////////////////////////////////////////////////////////
+// This file contains definitions for SafePrintf. SafeScanf coming soon (the 
+//   design is similar). 
+// See Alexandrescu, Andrei: Type-safe Formatting, C/C++ Users Journal, Aug 2005
+////////////////////////////////////////////////////////////////////////////////
+
+#include <cstdio>
+#include <string>
+#include <stdexcept>
+#include <utility>
+#include <cassert>
+#include <locale>
+#include <iostream>
+
+#include <loki/LokiExport.h>
+
+
+// long is 32 bit on 64-bit Windows!
+// intptr_t used to get 64 bit on Win64
+#if defined(_WIN32) || defined(_WIN64)
+#  define LOKI_SAFEFORMAT_SIGNED_LONG intptr_t
+#  define LOKI_SAFEFORMAT_UNSIGNED_LONG uintptr_t
+#else
+#  define LOKI_SAFEFORMAT_SIGNED_LONG signed long
+#  define LOKI_SAFEFORMAT_UNSIGNED_LONG unsigned long
+#endif
+
+// Windows headers could have min/max defined
+#ifdef max 
+#  undef max 
+#endif 
+#ifdef min 
+#  undef min 
+#endif 
+
+namespace Loki
+{
+
+    // Crude writing method: writes straight to the file, unbuffered
+    // Must be combined with a buffer to work properly (and efficiently)
+    LOKI_EXPORT
+    void write(std::FILE* f, const char* from, const char* to);
+
+    // Write to an ostream
+    LOKI_EXPORT
+    void write(std::ostream& f, const char* from, const char* to);
+
+    // Write to a string
+    LOKI_EXPORT
+    void write(std::string& s, const char* from, const char* to);
+
+    // Write to a fixed-size buffer
+    template <class Char>
+    void write(std::pair<Char*, std::size_t>& s, const Char* from, const Char* to) {
+        assert(from <= to);
+        if(from + s.second < to)
+            throw std::overflow_error("");
+        // s.first: position one past the final copied element 
+        s.first = std::copy(from, to, s.first);
+        // remaining buffer size
+        s.second -= to - from;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////////
+    // PrintfState class template
+    // Holds the formatting state, and implements operator() to format stuff
+    // Todo: make sure errors are handled properly
+    ////////////////////////////////////////////////////////////////////////////////
+
+    template <class Device, class Char>
+    struct PrintfState {
+        PrintfState(Device dev, const Char * format) 
+                : device_(dev)
+                , format_(format)
+                , width_(0)
+                , prec_(0)
+                , flags_(0)
+                , result_(0) {
+            Advance();
+        }
+        
+        ~PrintfState() {
+        }
+
+        #define LOKI_PRINTF_STATE_FORWARD(type) \
+            PrintfState& operator()(type par) {\
+                return (*this)(static_cast< LOKI_SAFEFORMAT_UNSIGNED_LONG >(par)); \
+            }
+
+        LOKI_PRINTF_STATE_FORWARD(bool)
+        LOKI_PRINTF_STATE_FORWARD(char)
+        LOKI_PRINTF_STATE_FORWARD(signed char)
+        LOKI_PRINTF_STATE_FORWARD(unsigned char)
+        LOKI_PRINTF_STATE_FORWARD(signed short)
+        LOKI_PRINTF_STATE_FORWARD(unsigned short)
+        LOKI_PRINTF_STATE_FORWARD(signed int)
+        LOKI_PRINTF_STATE_FORWARD(signed long)
+#if (defined(_WIN32) || defined(_WIN64))
+        LOKI_PRINTF_STATE_FORWARD(unsigned long)
+#else
+        // on Windows already defined by uintptr_t
+        LOKI_PRINTF_STATE_FORWARD(unsigned int)
+#endif
+
+        // Print (or gobble in case of the "*" specifier) an int
+        PrintfState& operator()(LOKI_SAFEFORMAT_UNSIGNED_LONG i) {
+            if (result_ == -1) return *this; // don't even bother
+            // % [flags] [width] [.prec] [modifier] type_char
+            // Fetch the flags 
+            ReadFlags();
+            if (*format_ == '*') {
+                // read the width and get out
+                SetWidth(static_cast<size_t>(i));
+                ++format_;
+                return *this;
+            }
+            ReadWidth();
+            // precision
+            if (*format_ == '.') {
+                // deal with precision
+                if (format_[1] == '*') {
+                    // read the precision and get out
+                    SetPrec(static_cast<size_t>(i));
+                    format_ += 2;
+                    return *this;
+                }
+                ReadPrecision();
+            }
+            ReadModifiers();
+            // input size modifier
+            if (ForceShort()) {
+                // short int
+                const Char c = *format_;
+                if (c == 'x' || c == 'X' || c == 'u' || c == 'o') {
+                    i = static_cast<LOKI_SAFEFORMAT_UNSIGNED_LONG>(static_cast<unsigned short>(i));
+                }
+            }
+            FormatWithCurrentFlags(i);
+            return *this;
+        }
+
+        PrintfState& operator()(void* n) {
+            if (result_ == -1) return *this; // don't even bother
+            PrintUsing_snprintf(n,"p");
+            return *this;
+        }
+        
+        PrintfState& operator()(double n) {
+            if (result_ == -1) return *this; // don't even bother
+            PrintUsing_snprintf(n,"eEfgG");
+            return *this;
+        }
+
+        PrintfState& operator()(long double n) {
+            if (result_ == -1) return *this; // don't even bother
+            PrintUsing_snprintf(n,"eEfgG");
+            return *this;
+        }
+
+        // Store the number of characters printed so far
+        PrintfState& operator()(int * pi) {
+            return StoreCountHelper(pi);
+        }
+        
+        // Store the number of characters printed so far
+        PrintfState& operator()(short * pi) {
+            return StoreCountHelper(pi);
+        }
+        
+        // Store the number of characters printed so far
+        PrintfState& operator()(long * pi) {
+            return StoreCountHelper(pi);
+        }
+        
+        PrintfState& operator()(const std::string& stdstr) {
+            return operator()(stdstr.c_str());
+        }
+
+        PrintfState& operator()(const char *const s) {
+            if (result_ == -1) return *this;
+            ReadLeaders();
+            const char fmt = *format_;
+            if (fmt == 'p') {
+                FormatWithCurrentFlags(reinterpret_cast<LOKI_SAFEFORMAT_UNSIGNED_LONG>(s));
+                return *this;
+            }
+            if (fmt != 's') {
+                result_ = -1;
+                return *this;
+            }
+            const size_t len = std::min(strlen(s), prec_);
+            if (width_ > len) {
+                if (LeftJustify()) {
+                    Write(s, s + len);
+                    Fill(' ', width_ - len);
+                } else {
+                    Fill(' ', width_ - len);
+                    Write(s, s + len);
+                }
+            } else {
+                Write(s, s + len);
+            }
+            Next();
+            return *this;
+        }
+        
+        PrintfState& operator()(const void *const p) {
+            return (*this)(reinterpret_cast<LOKI_SAFEFORMAT_UNSIGNED_LONG>(p));
+        }
+        
+        // read the result
+        operator int() const {
+            return static_cast<int>(result_);
+        }
+        
+    private:
+        PrintfState& operator=(const PrintfState&);
+        template <typename T>
+        PrintfState& StoreCountHelper(T *const pi) {
+            if (result_ == -1) return *this; // don't even bother
+            ReadLeaders();
+            const char fmt = *format_;
+            if (fmt == 'p') { // pointer
+                FormatWithCurrentFlags(reinterpret_cast<LOKI_SAFEFORMAT_UNSIGNED_LONG>(pi));
+                return *this;
+            }
+            if (fmt != 'n') {
+                result_ = -1;
+                return *this;
+            }
+            assert(pi != 0);
+            *pi = result_;
+            Next();
+            return *this;
+        }
+
+        void FormatWithCurrentFlags(const LOKI_SAFEFORMAT_UNSIGNED_LONG i) {
+            // look at the format character
+            Char formatChar = *format_;
+            bool isSigned = formatChar == 'd' || formatChar == 'i';
+            if (formatChar == 'p') {
+                formatChar = 'x'; // pointers go to hex
+                SetAlternateForm(); // printed with '0x' in front
+                isSigned = true; // that's what gcc does
+            }
+            if (!strchr("cdiuoxX", formatChar)) {
+                result_ = -1;
+                return;
+            }
+            Char buf[
+                sizeof(LOKI_SAFEFORMAT_UNSIGNED_LONG) * 3 // digits
+                + 1 // sign or ' '
+                + 2 // 0x or 0X
+                + 1]; // terminating zero
+            const Char *const bufEnd = buf + (sizeof(buf) / sizeof(Char));
+            Char * bufLast = buf + (sizeof(buf) / sizeof(Char) - 1);
+            Char signChar = 0;
+            unsigned int base = 10;
+            
+            if (formatChar == 'c') {
+                // Format only one character
+                // The 'fill with zeros' flag is ignored
+                ResetFillZeros();
+                *bufLast = static_cast<char>(i);
+            } else {
+                // TODO: inefficient code, refactor
+                const bool negative = isSigned && static_cast<LOKI_SAFEFORMAT_SIGNED_LONG>(i) < 0;
+                if (formatChar == 'o') base = 8;
+                else if (formatChar == 'x' || formatChar == 'X') base = 16;
+                bufLast = isSigned
+                    ? RenderWithoutSign(static_cast<LOKI_SAFEFORMAT_SIGNED_LONG>(i), bufLast, base,
+                        formatChar == 'X')
+                    : RenderWithoutSign(i, bufLast, base, 
+                        formatChar == 'X');
+                // Add the sign
+                if (isSigned) {
+                    negative ? signChar = '-'
+                    : ShowSignAlways() ? signChar = '+'
+                    : Blank() ? signChar = ' '
+                    : 0;
+                }
+            }
+            // precision 
+            size_t 
+                countDigits = bufEnd - bufLast,
+                countZeros = prec_ != size_t(-1) && countDigits < prec_ && 
+                        formatChar != 'c'
+                    ? prec_ - countDigits 
+                    : 0,
+                countBase = base != 10 && AlternateForm() && i != 0
+                    ? (base == 16 ? 2 : countZeros > 0 ? 0 : 1)
+                    : 0,
+                countSign = (signChar != 0),
+                totalPrintable = countDigits + countZeros + countBase + countSign;
+            size_t countPadLeft = 0, countPadRight = 0;
+            if (width_ > totalPrintable) {
+                if (LeftJustify()) {
+                    countPadRight = width_ - totalPrintable;
+                    countPadLeft = 0;
+                } else {
+                    countPadLeft = width_ - totalPrintable;
+                    countPadRight = 0;
+                }
+            }
+            if (FillZeros() && prec_ == size_t(-1)) {
+                // pad with zeros and no precision - transfer padding to precision
+                countZeros = countPadLeft;
+                countPadLeft = 0;
+            }
+            // ok, all computed, ready to print to device
+            Fill(' ', countPadLeft);
+            if (signChar != 0) Write(&signChar, &signChar + 1);
+            if (countBase > 0) Fill('0', 1);
+            if (countBase == 2) Fill(formatChar, 1);
+            Fill('0', countZeros);
+            Write(bufLast, bufEnd);
+            Fill(' ', countPadRight);
+            // done, advance
+            Next();
+        }
+        
+        void Write(const Char* b, const Char* e) {
+            if (result_ < 0) return;
+            const LOKI_SAFEFORMAT_SIGNED_LONG x = e - b;
+            write(device_, b, e);
+            result_ += x;
+        }
+
+        template <class Value>
+        void PrintUsing_snprintf(Value n, const char* check_fmt_char) {
+            const Char *const fmt = format_ - 1;
+            assert(*fmt == '%');
+            // enforce format string validity
+            ReadLeaders();
+            // enforce format spec
+            if (!strchr(check_fmt_char, *format_)) {
+                result_ = -1;
+                return;
+            }
+            // format char validated, copy it to a temp and use legacy sprintf
+            ++format_;
+            Char fmtBuf[128], resultBuf[1024];
+            if (format_  >= fmt + sizeof(fmtBuf) / sizeof(Char)) {
+                result_ = -1;
+                return;
+            }
+            memcpy(fmtBuf, fmt, (format_ - fmt) * sizeof(Char));
+            fmtBuf[format_ - fmt] = 0;
+
+            const int stored = 
+#ifdef _MSC_VER
+#if _MSC_VER < 1400
+            _snprintf
+#else
+            _snprintf_s
+#endif
+#else
+            snprintf 
+#endif        
+                     (resultBuf, sizeof(resultBuf) / sizeof(Char), fmtBuf, n);
+                     
+            if (stored < 0) {
+                result_ = -1;
+                return;
+            }
+            Write(resultBuf, resultBuf + strlen(resultBuf));
+            Advance(); // output stuff to the next format directive
+        }
+
+        void Fill(const Char c, size_t n) {
+            for (; n > 0; --n) {
+                Write(&c, &c + 1);
+            }
+        }
+       
+        Char* RenderWithoutSign(LOKI_SAFEFORMAT_UNSIGNED_LONG n, char* bufLast, 
+                unsigned int base, bool uppercase) {
+            const Char hex1st = uppercase ? 'A' : 'a';
+            for (;;) {
+                const LOKI_SAFEFORMAT_UNSIGNED_LONG next = n / base;
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable: 4244)
+#endif
+                Char c = n - next * base;
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+                c += (c <= 9) ? '0' : hex1st - 10;
+                *bufLast = c;
+                n = next;
+                if (n == 0) break;
+                --bufLast;
+            }
+            return bufLast;
+        }
+
+        char* RenderWithoutSign(LOKI_SAFEFORMAT_SIGNED_LONG n, char* bufLast, unsigned int base, 
+                bool uppercase) {
+            if (n != LONG_MIN) {
+                return RenderWithoutSign(static_cast<LOKI_SAFEFORMAT_UNSIGNED_LONG>(n < 0 ? -n : n),
+                    bufLast, base, uppercase);            
+            }
+            // annoying corner case
+            char* save = bufLast;
+            ++n;
+            bufLast = RenderWithoutSign(static_cast<LOKI_SAFEFORMAT_UNSIGNED_LONG>(n),
+                bufLast, base, uppercase);
+            --(*save);
+            return bufLast;
+        }
+        
+        void Next() {
+            ++format_;
+            Advance();
+        }
+        
+        void Advance() {
+            ResetAll();
+            const Char* begin = format_;
+            for (;;) {
+                if (*format_ == '%') { 
+                    if (format_[1] != '%') { // It's a format specifier
+                        Write(begin, format_);
+                        ++format_;
+                        break;
+                    }
+                    // It's a "%%"
+                    Write(begin, ++format_);
+                    begin = ++format_;
+                    continue; 
+                }
+                if (*format_ == 0) {
+                    Write(begin, format_);
+                    break;
+                }
+                ++format_;
+            }
+        }
+        
+        void ReadFlags() {
+            for (;; ++format_) {
+                switch (*format_) {
+                    case '-': SetLeftJustify(); break;
+                    case '+': SetShowSignAlways(); break;
+                    case ' ': SetBlank(); break;
+                    case '#': SetAlternateForm(); break;
+                    case '0': SetFillZeros(); break;
+                    default: return;
+                }
+            }
+        }
+        
+        void ParseDecimalSizeT(size_t& dest) {
+            if (!std::isdigit(*format_, std::locale())) return;
+            size_t r = 0;
+            do {
+                // TODO: inefficient - rewrite
+                r *= 10;
+                r += *format_ - '0';
+                ++format_;
+            } while (std::isdigit(*format_, std::locale()));
+            dest = r;
+        }
+        
+        void ReadWidth() {
+            ParseDecimalSizeT(width_);
+        }    
+        
+        void ReadPrecision() {
+            assert(*format_ == '.');
+            ++format_;
+            ParseDecimalSizeT(prec_);
+        }    
+        
+        void ReadModifiers() {
+            switch (*format_) {
+                case 'h': SetForceShort(); ++format_; break;
+                case 'l': ++format_; break;
+                // more (C99 and platform-specific modifiers) to come
+            }
+        }
+        
+        void ReadLeaders() {
+            ReadFlags();
+            ReadWidth();
+            if (*format_ == '.') ReadPrecision();
+            ReadModifiers();
+        }
+        
+        enum { 
+            leftJustify = 1,
+            showSignAlways = 2,
+            blank = 4,
+            alternateForm = 8,
+            fillZeros = 16,
+            forceShort = 32
+        };
+        
+        bool LeftJustify() const { return (flags_ & leftJustify) != 0; }
+        bool ShowSignAlways() const { return (flags_ & showSignAlways) != 0; }
+        void SetWidth(size_t w) { width_  = w; }
+        void SetLeftJustify() { flags_  |= leftJustify; }
+        void SetShowSignAlways() { flags_ |= showSignAlways; }
+        bool Blank() const { return (flags_ & blank) != 0; }
+        bool AlternateForm() const { return (flags_ & alternateForm) != 0; }
+        bool FillZeros() const { return (flags_ & fillZeros) != 0; }
+        bool ForceShort() const { return (flags_ & forceShort) != 0; }
+
+        void SetPrec(size_t p) { prec_ = p; }
+        void SetBlank() { flags_ |= blank; }
+        void SetAlternateForm() { flags_ |=  alternateForm; }
+        void SetFillZeros() { flags_ |= fillZeros; }
+        void ResetFillZeros() { flags_ &= ~fillZeros; }
+        void SetForceShort() { flags_ |= forceShort; }
+        
+        void ResetAll() {
+            assert(result_ != EOF);
+            width_ = 0;
+            prec_ = size_t(-1);
+            flags_ = 0;
+        }
+
+        // state
+        Device device_;
+        const Char* format_;
+        size_t width_;
+        size_t prec_;
+        unsigned int flags_;
+        LOKI_SAFEFORMAT_SIGNED_LONG result_;
+    };
+
+    LOKI_EXPORT
+    PrintfState<std::FILE*, char> Printf(const char* format);
+
+    LOKI_EXPORT
+    PrintfState<std::FILE*, char> Printf(const std::string& format);
+
+    LOKI_EXPORT
+    PrintfState<std::FILE*, char> FPrintf(std::FILE* f, const char* format);
+
+    LOKI_EXPORT
+    PrintfState<std::FILE*, char> FPrintf(std::FILE* f, const std::string& format);
+
+    LOKI_EXPORT
+    PrintfState<std::ostream&, char> FPrintf(std::ostream& f, const char* format);
+
+    LOKI_EXPORT
+    PrintfState<std::ostream&, char> FPrintf(std::ostream& f, const std::string& format);
+
+    LOKI_EXPORT
+    PrintfState<std::string&, char> SPrintf(std::string& s, const char* format);
+
+    LOKI_EXPORT
+    PrintfState<std::string&, char> SPrintf(std::string& s, const std::string& format);
+
+    template <class T, class Char>
+    PrintfState<T&, Char> XPrintf(T& device, const Char* format) {
+        return PrintfState<T&, Char>(device, format);
+    }
+
+    template <class T>
+    PrintfState<T&, char> XPrintf(T& device, const std::string& format) {
+        return PrintfState<T&, char>(device, format.c_str());
+    }
+
+    template <class Char, std::size_t N>
+    PrintfState<std::pair<Char*, std::size_t>, Char> 
+    BufPrintf(Char (&buf)[N], const Char* format) {
+        std::pair<Char*, std::size_t> temp(buf, N);
+        return PrintfState<std::pair<Char*, std::size_t>, Char>(temp, format);
+    }
+
+}// namespace Loki
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/ScopeGuard.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/ScopeGuard.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/ScopeGuard.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,666 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2000 Andrei Alexandrescu
+// Copyright (c) 2000 Petru Marginean
+// Copyright (c) 2005 Joshua Lehrer
+//
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_SCOPEGUARD_INC_
+#define LOKI_SCOPEGUARD_INC_
+
+// $Id: ScopeGuard.h 799 2006-12-20 00:37:13Z rich_sposato $
+
+
+#include <loki/RefToValue.h>
+
+/// \defgroup ExceptionGroup Exception-safe code
+
+namespace Loki
+{
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ScopeGuardImplBase
+    /// \ingroup ExceptionGroup
+    ///
+    /// Base class used by all ScopeGuard implementations.  All commonly used
+    /// functions are in this class (e.g. - Dismiss and SafeExecute).
+    ///
+    /// See Andrei's and Petru Marginean's CUJ article
+    /// http://www.cuj.com/documents/s=8000/cujcexp1812alexandr/alexandr.htm
+    ///
+    /// Changes to the original code by Joshua Lehrer:
+    /// http://www.lehrerfamily.com/scopeguard.html
+    ////////////////////////////////////////////////////////////////
+
+    class ScopeGuardImplBase
+    {
+        /// Copy-assignment operator is not implemented and private.
+        ScopeGuardImplBase& operator =(const ScopeGuardImplBase&);
+
+    protected:
+
+        ~ScopeGuardImplBase()
+        {}
+
+        /// Copy-constructor takes over responsibility from other ScopeGuard.
+        ScopeGuardImplBase(const ScopeGuardImplBase& other) throw() 
+            : dismissed_(other.dismissed_)
+        {
+            other.Dismiss();
+        }
+
+        template <typename J>
+        static void SafeExecute(J& j) throw() 
+        {
+            if (!j.dismissed_)
+                try
+                {
+                    j.Execute();
+                }
+                catch(...)
+                {}
+        }
+        
+        mutable bool dismissed_;
+
+    public:
+        ScopeGuardImplBase() throw() : dismissed_(false) 
+        {}
+
+        void Dismiss() const throw() 
+        {
+            dismissed_ = true;
+        }
+    };
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \typedef typedef const ScopeGuardImplBase& ScopeGuard
+    /// \ingroup ExceptionGroup
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    typedef const ScopeGuardImplBase& ScopeGuard;
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ScopeGuardImpl0
+    /// \ingroup ExceptionGroup
+    ///
+    /// Implementation class for a standalone function or class static function
+    /// with no parameters.  ScopeGuard ignores any value returned from the
+    /// call within the Execute function.
+    ///
+    /// This class has a single standalone helper function, MakeGuard which
+    /// creates and returns a ScopeGuard.
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    template <typename F>
+    class ScopeGuardImpl0 : public ScopeGuardImplBase
+    {
+    public:
+        static ScopeGuardImpl0<F> MakeGuard(F fun)
+        {
+            return ScopeGuardImpl0<F>(fun);
+        }
+
+        ~ScopeGuardImpl0() throw() 
+        {
+            SafeExecute(*this);
+        }
+
+        void Execute() 
+        {
+            fun_();
+        }
+
+    protected:
+        ScopeGuardImpl0(F fun) : fun_(fun) 
+        {}
+
+        F fun_;
+    };
+
+    template <typename F> 
+    inline ScopeGuardImpl0<F> MakeGuard(F fun)
+    {
+        return ScopeGuardImpl0<F>::MakeGuard(fun);
+    }
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ScopeGuardImpl1
+    /// \ingroup ExceptionGroup
+    ///
+    /// Implementation class for a standalone function or class static function
+    /// with one parameter.  Each parameter is copied by value - use
+    /// ::Loki::ByRef if you must use a reference instead.  ScopeGuard ignores
+    /// any value returned from the call within the Execute function.
+    ///
+    /// This class has a single standalone helper function, MakeGuard which
+    /// creates and returns a ScopeGuard.
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    template <typename F, typename P1>
+    class ScopeGuardImpl1 : public ScopeGuardImplBase
+    {
+    public:
+        static ScopeGuardImpl1<F, P1> MakeGuard(F fun, P1 p1)
+        {
+            return ScopeGuardImpl1<F, P1>(fun, p1);
+        }
+
+        ~ScopeGuardImpl1() throw() 
+        {
+            SafeExecute(*this);
+        }
+
+        void Execute()
+        {
+            fun_(p1_);
+        }
+
+    protected:
+        ScopeGuardImpl1(F fun, P1 p1) : fun_(fun), p1_(p1) 
+        {}
+
+        F fun_;
+        const P1 p1_;
+    };
+
+    template <typename F, typename P1> 
+    inline ScopeGuardImpl1<F, P1> MakeGuard(F fun, P1 p1)
+    {
+        return ScopeGuardImpl1<F, P1>::MakeGuard(fun, p1);
+    }
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ScopeGuardImpl2
+    /// \ingroup ExceptionGroup
+    ///
+    /// Implementation class for a standalone function or class static function
+    /// with two parameters.  Each parameter is copied by value - use
+    /// ::Loki::ByRef if you must use a reference instead.  ScopeGuard ignores
+    /// any value returned from the call within the Execute function.
+    ///
+    /// This class has a single standalone helper function, MakeGuard which
+    /// creates and returns a ScopeGuard.
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    template <typename F, typename P1, typename P2>
+    class ScopeGuardImpl2: public ScopeGuardImplBase
+    {
+    public:
+        static ScopeGuardImpl2<F, P1, P2> MakeGuard(F fun, P1 p1, P2 p2)
+        {
+            return ScopeGuardImpl2<F, P1, P2>(fun, p1, p2);
+        }
+
+        ~ScopeGuardImpl2() throw() 
+        {
+            SafeExecute(*this);
+        }
+
+        void Execute()
+        {
+            fun_(p1_, p2_);
+        }
+
+    protected:
+        ScopeGuardImpl2(F fun, P1 p1, P2 p2) : fun_(fun), p1_(p1), p2_(p2) 
+        {}
+
+        F fun_;
+        const P1 p1_;
+        const P2 p2_;
+    };
+
+    template <typename F, typename P1, typename P2>
+    inline ScopeGuardImpl2<F, P1, P2> MakeGuard(F fun, P1 p1, P2 p2)
+    {
+        return ScopeGuardImpl2<F, P1, P2>::MakeGuard(fun, p1, p2);
+    }
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ScopeGuardImpl3
+    /// \ingroup ExceptionGroup
+    ///
+    /// Implementation class for a standalone function or class static function
+    /// with three parameters.  Each parameter is copied by value - use
+    /// ::Loki::ByRef if you must use a reference instead.  ScopeGuard ignores
+    /// any value returned from the call within the Execute function.
+    ///
+    /// This class has a single standalone helper function, MakeGuard which
+    /// creates and returns a ScopeGuard.
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    template <typename F, typename P1, typename P2, typename P3>
+    class ScopeGuardImpl3 : public ScopeGuardImplBase
+    {
+    public:
+        static ScopeGuardImpl3<F, P1, P2, P3> MakeGuard(F fun, P1 p1, P2 p2, P3 p3)
+        {
+            return ScopeGuardImpl3<F, P1, P2, P3>(fun, p1, p2, p3);
+        }
+
+        ~ScopeGuardImpl3() throw() 
+        {
+            SafeExecute(*this);
+        }
+
+        void Execute()
+        {
+            fun_(p1_, p2_, p3_);
+        }
+
+    protected:
+        ScopeGuardImpl3(F fun, P1 p1, P2 p2, P3 p3) : fun_(fun), p1_(p1), p2_(p2), p3_(p3) 
+        {}
+
+        F fun_;
+        const P1 p1_;
+        const P2 p2_;
+        const P3 p3_;
+    };
+
+    template <typename F, typename P1, typename P2, typename P3>
+    inline ScopeGuardImpl3<F, P1, P2, P3> MakeGuard(F fun, P1 p1, P2 p2, P3 p3)
+    {
+        return ScopeGuardImpl3<F, P1, P2, P3>::MakeGuard(fun, p1, p2, p3);
+    }
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ScopeGuardImpl4
+    /// \ingroup ExceptionGroup
+    ///
+    /// Implementation class for a standalone function or class static function
+    /// with four parameters.  Each parameter is copied by value - use
+    /// ::Loki::ByRef if you must use a reference instead.  ScopeGuard ignores
+    /// any value returned from the call within the Execute function.
+    ///
+    /// This class has a single standalone helper function, MakeGuard which
+    /// creates and returns a ScopeGuard.
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    template < typename F, typename P1, typename P2, typename P3, typename P4 >
+    class ScopeGuardImpl4 : public ScopeGuardImplBase
+    {
+    public:
+        static ScopeGuardImpl4< F, P1, P2, P3, P4 > MakeGuard(
+            F fun, P1 p1, P2 p2, P3 p3, P4 p4 )
+        {
+            return ScopeGuardImpl4< F, P1, P2, P3, P4 >( fun, p1, p2, p3, p4 );
+        }
+
+        ~ScopeGuardImpl4() throw() 
+        {
+            SafeExecute( *this );
+        }
+
+        void Execute()
+        {
+            fun_( p1_, p2_, p3_, p4_ );
+        }
+
+    protected:
+        ScopeGuardImpl4( F fun, P1 p1, P2 p2, P3 p3, P4 p4 ) :
+             fun_( fun ), p1_( p1 ), p2_( p2 ), p3_( p3 ), p4_( p4 )
+        {}
+
+        F fun_;
+        const P1 p1_;
+        const P2 p2_;
+        const P3 p3_;
+        const P4 p4_;
+    };
+
+    template < typename F, typename P1, typename P2, typename P3, typename P4 >
+    inline ScopeGuardImpl4< F, P1, P2, P3, P4 > MakeGuard( F fun, P1 p1, P2 p2, P3 p3, P4 p4 )
+    {
+        return ScopeGuardImpl4< F, P1, P2, P3, P4 >::MakeGuard( fun, p1, p2, p3, p4 );
+    }
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ScopeGuardImpl5
+    /// \ingroup ExceptionGroup
+    ///
+    /// Implementation class for a standalone function or class static function
+    /// with five parameters.  Each parameter is copied by value - use
+    /// ::Loki::ByRef if you must use a reference instead.  ScopeGuard ignores
+    /// any value returned from the call within the Execute function.
+    ///
+    /// This class has a single standalone helper function, MakeGuard which
+    /// creates and returns a ScopeGuard.
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    template < typename F, typename P1, typename P2, typename P3, typename P4, typename P5 >
+    class ScopeGuardImpl5 : public ScopeGuardImplBase
+    {
+    public:
+        static ScopeGuardImpl5< F, P1, P2, P3, P4, P5 > MakeGuard(
+            F fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5 )
+        {
+            return ScopeGuardImpl5< F, P1, P2, P3, P4, P5 >( fun, p1, p2, p3, p4, p5 );
+        }
+
+        ~ScopeGuardImpl5() throw() 
+        {
+            SafeExecute( *this );
+        }
+
+        void Execute()
+        {
+            fun_( p1_, p2_, p3_, p4_, p5_ );
+        }
+
+    protected:
+        ScopeGuardImpl5( F fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5 ) :
+             fun_( fun ), p1_( p1 ), p2_( p2 ), p3_( p3 ), p4_( p4 ), p5_( p5 )
+        {}
+
+        F fun_;
+        const P1 p1_;
+        const P2 p2_;
+        const P3 p3_;
+        const P4 p4_;
+        const P5 p5_;
+    };
+
+    template < typename F, typename P1, typename P2, typename P3, typename P4, typename P5 >
+    inline ScopeGuardImpl5< F, P1, P2, P3, P4, P5 > MakeGuard( F fun, P1 p1, P2 p2, P3 p3, P4 p4, P5 p5 )
+    {
+        return ScopeGuardImpl5< F, P1, P2, P3, P4, P5 >::MakeGuard( fun, p1, p2, p3, p4, p5 );
+    }
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ObjScopeGuardImpl0
+    /// \ingroup ExceptionGroup
+    ///
+    /// Implementation class for a class per-instance member function with no
+    /// parameters.  ScopeGuard ignores any value returned from the call within
+    /// the Execute function.
+    ///
+    /// This class has 3 standalone helper functions which create a ScopeGuard.
+    /// One is MakeObjGuard, which is deprecated but provided for older code.
+    /// The other two are MakeGuard overloads, one which takes a pointer to an
+    /// object, and the other which takes a reference.
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    template <class Obj, typename MemFun>
+    class ObjScopeGuardImpl0 : public ScopeGuardImplBase
+    {
+    public:
+        static ObjScopeGuardImpl0<Obj, MemFun> MakeObjGuard(Obj& obj, MemFun memFun)
+        {
+            return ObjScopeGuardImpl0<Obj, MemFun>(obj, memFun);
+        }
+
+        ~ObjScopeGuardImpl0() throw() 
+        {
+            SafeExecute(*this);
+        }
+
+        void Execute() 
+        {
+            (obj_.*memFun_)();
+        }
+
+    protected:
+        ObjScopeGuardImpl0(Obj& obj, MemFun memFun) : obj_(obj), memFun_(memFun) 
+        {}
+
+        Obj& obj_;
+        MemFun memFun_;
+    };
+
+    template <class Obj, typename MemFun>
+    inline ObjScopeGuardImpl0<Obj, MemFun> MakeObjGuard(Obj& obj, MemFun memFun)
+    {
+        return ObjScopeGuardImpl0<Obj, MemFun>::MakeObjGuard(obj, memFun);
+    }
+
+    template <typename Ret, class Obj1, class Obj2>
+    inline ObjScopeGuardImpl0<Obj1,Ret(Obj2::*)()> MakeGuard(Ret(Obj2::*memFun)(), Obj1 &obj) 
+    {
+      return ObjScopeGuardImpl0<Obj1,Ret(Obj2::*)()>::MakeObjGuard(obj,memFun);
+    }
+
+    template <typename Ret, class Obj1, class Obj2>
+    inline ObjScopeGuardImpl0<Obj1,Ret(Obj2::*)()> MakeGuard(Ret(Obj2::*memFun)(), Obj1 *obj) 
+    {
+      return ObjScopeGuardImpl0<Obj1,Ret(Obj2::*)()>::MakeObjGuard(*obj,memFun);
+    }
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ObjScopeGuardImpl1
+    /// \ingroup ExceptionGroup
+    ///
+    /// Implementation class for a class per-instance member function with one
+    /// parameter.  The parameter is copied by value - use ::Loki::ByRef if you
+    /// must use a reference instead.  ScopeGuard ignores any value returned
+    /// from the call within the Execute function.
+    ///
+    /// This class has 3 standalone helper functions which create a ScopeGuard.
+    /// One is MakeObjGuard, which is deprecated but provided for older code.
+    /// The other two are MakeGuard overloads, one which takes a pointer to an
+    /// object, and the other which takes a reference.
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    template <class Obj, typename MemFun, typename P1>
+    class ObjScopeGuardImpl1 : public ScopeGuardImplBase
+    {
+    public:
+        static ObjScopeGuardImpl1<Obj, MemFun, P1> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1)
+        {
+            return ObjScopeGuardImpl1<Obj, MemFun, P1>(obj, memFun, p1);
+        }
+
+        ~ObjScopeGuardImpl1() throw() 
+        {
+            SafeExecute(*this);
+        }
+
+        void Execute() 
+        {
+            (obj_.*memFun_)(p1_);
+        }
+
+    protected:
+        ObjScopeGuardImpl1(Obj& obj, MemFun memFun, P1 p1) : obj_(obj), memFun_(memFun), p1_(p1) 
+        {}
+        
+        Obj& obj_;
+        MemFun memFun_;
+        const P1 p1_;
+    };
+
+    template <class Obj, typename MemFun, typename P1>
+    inline ObjScopeGuardImpl1<Obj, MemFun, P1> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1)
+    {
+        return ObjScopeGuardImpl1<Obj, MemFun, P1>::MakeObjGuard(obj, memFun, p1);
+    }
+
+    template <typename Ret, class Obj1, class Obj2, typename P1a, typename P1b>
+    inline ObjScopeGuardImpl1<Obj1,Ret(Obj2::*)(P1a),P1b> MakeGuard(Ret(Obj2::*memFun)(P1a), Obj1 &obj, P1b p1) 
+    {
+      return ObjScopeGuardImpl1<Obj1,Ret(Obj2::*)(P1a),P1b>::MakeObjGuard(obj,memFun,p1);
+    }
+
+    template <typename Ret, class Obj1, class Obj2, typename P1a, typename P1b>
+    inline ObjScopeGuardImpl1<Obj1,Ret(Obj2::*)(P1a),P1b> MakeGuard(Ret(Obj2::*memFun)(P1a), Obj1 *obj, P1b p1) 
+    {
+      return ObjScopeGuardImpl1<Obj1,Ret(Obj2::*)(P1a),P1b>::MakeObjGuard(*obj,memFun,p1);
+    }
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ObjScopeGuardImpl2
+    /// \ingroup ExceptionGroup
+    ///
+    /// Implementation class for a class per-instance member function with two
+    /// parameters.  Each parameter is copied by value - use ::Loki::ByRef if you
+    /// must use a reference instead.  ScopeGuard ignores any value returned
+    /// from the call within the Execute function.
+    ///
+    /// This class has 3 standalone helper functions which create a ScopeGuard.
+    /// One is MakeObjGuard, which is deprecated but provided for older code.
+    /// The other two are MakeGuard overloads, one which takes a pointer to an
+    /// object, and the other which takes a reference.
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    template <class Obj, typename MemFun, typename P1, typename P2>
+    class ObjScopeGuardImpl2 : public ScopeGuardImplBase
+    {
+    public:
+        static ObjScopeGuardImpl2<Obj, MemFun, P1, P2> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1, P2 p2)
+        {
+            return ObjScopeGuardImpl2<Obj, MemFun, P1, P2>(obj, memFun, p1, p2);
+        }
+
+        ~ObjScopeGuardImpl2() throw() 
+        {
+            SafeExecute(*this);
+        }
+
+        void Execute() 
+        {
+            (obj_.*memFun_)(p1_, p2_);
+        }
+
+    protected:
+        ObjScopeGuardImpl2(Obj& obj, MemFun memFun, P1 p1, P2 p2) : obj_(obj), memFun_(memFun), p1_(p1), p2_(p2) 
+        {}
+
+        Obj& obj_;
+        MemFun memFun_;
+        const P1 p1_;
+        const P2 p2_;
+    };
+
+    template <class Obj, typename MemFun, typename P1, typename P2>
+    inline ObjScopeGuardImpl2<Obj, MemFun, P1, P2> MakeObjGuard(Obj& obj, MemFun memFun, P1 p1, P2 p2)
+    {
+        return ObjScopeGuardImpl2<Obj, MemFun, P1, P2>::MakeObjGuard(obj, memFun, p1, p2);
+    }
+
+    template <typename Ret, class Obj1, class Obj2, typename P1a, typename P1b, typename P2a, typename P2b>
+    inline ObjScopeGuardImpl2<Obj1,Ret(Obj2::*)(P1a,P2a),P1b,P2b> MakeGuard(Ret(Obj2::*memFun)(P1a,P2a), Obj1 &obj, P1b p1, P2b p2) 
+    {
+      return ObjScopeGuardImpl2<Obj1,Ret(Obj2::*)(P1a,P2a),P1b,P2b>::MakeObjGuard(obj,memFun,p1,p2);
+    }
+
+    template <typename Ret, class Obj1, class Obj2, typename P1a, typename P1b, typename P2a, typename P2b>
+    inline ObjScopeGuardImpl2<Obj1,Ret(Obj2::*)(P1a,P2a),P1b,P2b> MakeGuard(Ret(Obj2::*memFun)(P1a,P2a), Obj1 *obj, P1b p1, P2b p2) 
+    {
+      return ObjScopeGuardImpl2<Obj1,Ret(Obj2::*)(P1a,P2a),P1b,P2b>::MakeObjGuard(*obj,memFun,p1,p2);
+    }
+
+    ////////////////////////////////////////////////////////////////
+    ///
+    /// \class ObjScopeGuardImpl3
+    /// \ingroup ExceptionGroup
+    ///
+    /// Implementation class for a class per-instance member function with three
+    /// parameters.  Each parameter is copied by value - use ::Loki::ByRef if you
+    /// must use a reference instead.  ScopeGuard ignores any value returned
+    /// from the call within the Execute function.
+    ///
+    /// This class has 3 standalone helper functions which create a ScopeGuard.
+    /// One is MakeObjGuard, which is deprecated but provided for older code.
+    /// The other two are MakeGuard overloads, one which takes a pointer to an
+    /// object, and the other which takes a reference.
+    ///
+    ////////////////////////////////////////////////////////////////
+
+    template < class Obj, typename MemFun, typename P1, typename P2, typename P3 >
+    class ObjScopeGuardImpl3 : public ScopeGuardImplBase
+    {
+    public:
+        static ObjScopeGuardImpl3< Obj, MemFun, P1, P2, P3 > MakeObjGuard(
+            Obj & obj, MemFun memFun, P1 p1, P2 p2, P3 p3 )
+        {
+            return ObjScopeGuardImpl3< Obj, MemFun, P1, P2, P3 >( obj, memFun, p1, p2, p3 );
+        }
+
+        ~ObjScopeGuardImpl3() throw() 
+        {
+            SafeExecute( *this );
+        }
+
+        void Execute() 
+        {
+            ( obj_.*memFun_ )( p1_, p2_, p3_ );
+        }
+
+    protected:
+        ObjScopeGuardImpl3( Obj & obj, MemFun memFun, P1 p1, P2 p2, P3 p3 ) :
+             obj_( obj ), memFun_( memFun ), p1_( p1 ), p2_( p2 ), p3_( p3 )
+        {}
+
+        Obj& obj_;
+        MemFun memFun_;
+        const P1 p1_;
+        const P2 p2_;
+        const P3 p3_;
+    };
+
+    template < class Obj, typename MemFun, typename P1, typename P2, typename P3 >
+    inline ObjScopeGuardImpl3< Obj, MemFun, P1, P2, P3 > MakeObjGuard(
+        Obj & obj, MemFun memFun, P1 p1, P2 p2, P3 p3 )
+    {
+        return ObjScopeGuardImpl3< Obj, MemFun, P1, P2, P3 >::MakeObjGuard(
+            obj, memFun, p1, p2, p3 );
+    }
+
+    template < typename Ret, class Obj1, class Obj2, typename P1a, typename P1b,
+        typename P2a, typename P2b, typename P3a, typename P3b >
+    inline ObjScopeGuardImpl3< Obj1, Ret( Obj2::* )( P1a, P2a, P3a ), P1b, P2b, P3b >
+        MakeGuard( Ret( Obj2::*memFun )( P1a, P2a, P3a ), Obj1 & obj, P1b p1, P2b p2, P3b p3 )
+    {
+      return ObjScopeGuardImpl3< Obj1, Ret( Obj2::* )( P1a, P2a, P3a ), P1b, P2b, P3b >
+          ::MakeObjGuard( obj, memFun, p1, p2, p3 );
+    }
+
+    template < typename Ret, class Obj1, class Obj2, typename P1a, typename P1b,
+        typename P2a, typename P2b, typename P3a, typename P3b >
+    inline ObjScopeGuardImpl3< Obj1, Ret( Obj2::* )( P1a, P2a, P3a ), P1b, P2b, P3b >
+        MakeGuard( Ret( Obj2::*memFun )( P1a, P2a, P3a ), Obj1 * obj, P1b p1, P2b p2, P3b p3 )
+    {
+      return ObjScopeGuardImpl3< Obj1, Ret( Obj2::* )( P1a, P2a, P3a ), P1b, P2b, P3b >
+          ::MakeObjGuard( *obj, memFun, p1, p2, p3 );
+    }
+
+} // namespace Loki
+
+#define LOKI_CONCATENATE_DIRECT(s1, s2)  s1##s2
+#define LOKI_CONCATENATE(s1, s2)         LOKI_CONCATENATE_DIRECT(s1, s2)
+#define LOKI_ANONYMOUS_VARIABLE(str)     LOKI_CONCATENATE(str, __LINE__)
+
+#define LOKI_ON_BLOCK_EXIT      ::Loki::ScopeGuard LOKI_ANONYMOUS_VARIABLE(scopeGuard) = ::Loki::MakeGuard
+#define LOKI_ON_BLOCK_EXIT_OBJ  ::Loki::ScopeGuard LOKI_ANONYMOUS_VARIABLE(scopeGuard) = ::Loki::MakeObjGuard
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Sequence.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Sequence.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Sequence.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2005 by Peter Kümmel
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_SEQUENCE_INC_
+#define LOKI_SEQUENCE_INC_
+
+// $Id: Sequence.h 768 2006-10-25 20:40:40Z syntheticpp $
+
+
+#include "Typelist.h"
+
+namespace Loki
+{
+
+    template
+    <
+        class T01=NullType,class T02=NullType,class T03=NullType,class T04=NullType,class T05=NullType,
+        class T06=NullType,class T07=NullType,class T08=NullType,class T09=NullType,class T10=NullType,
+        class T11=NullType,class T12=NullType,class T13=NullType,class T14=NullType,class T15=NullType,
+        class T16=NullType,class T17=NullType,class T18=NullType,class T19=NullType,class T20=NullType
+    >
+    struct Seq
+    {
+    private:
+        typedef typename Seq<     T02, T03, T04, T05, T06, T07, T08, T09, T10,
+                             T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>::Type 
+                         TailResult;
+    public:
+        typedef Typelist<T01, TailResult> Type;
+    };
+        
+    template<>
+    struct Seq<>
+    {
+        typedef NullType Type;
+    };
+
+}   // namespace Loki
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Singleton.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Singleton.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Singleton.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,889 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_SINGLETON_INC_
+#define LOKI_SINGLETON_INC_
+
+// $Id: Singleton.h 747 2006-10-17 19:48:40Z syntheticpp $
+
+
+#include "LokiExport.h"
+#include "Threads.h"
+#include <algorithm>
+#include <stdexcept>
+#include <cassert>
+#include <cstdlib>
+#include <new>
+#include <vector>
+#include <list>
+#include <memory>
+
+#ifdef _MSC_VER
+#define LOKI_C_CALLING_CONVENTION_QUALIFIER __cdecl 
+#else
+#define LOKI_C_CALLING_CONVENTION_QUALIFIER 
+#endif
+
+///  \defgroup  SingletonGroup Singleton
+///  \defgroup  CreationGroup Creation policies
+///  \ingroup   SingletonGroup
+///  \defgroup  LifetimeGroup Lifetime policies
+///  \ingroup   SingletonGroup
+///  The lifetimes of the singleton.
+///  \par Special lifetime for SmallObjects
+///  When the holded object is a Small(Value)Object or the holded object 
+///  uses objects which are or inherit from Small(Value)Object
+///  then you can't use the default lifetime: you must use the lifetime
+///  \code Loki::LongevityLifetime::DieAsSmallObjectChild \endcode
+///  Be aware of this when you use Loki::Factory, Loki::Functor, or Loki::Function.
+
+
+
+namespace Loki
+{
+    typedef void (LOKI_C_CALLING_CONVENTION_QUALIFIER *atexit_pfn_t)();
+
+    namespace Private
+    {
+
+#ifndef LOKI_MAKE_DLL
+        void LOKI_C_CALLING_CONVENTION_QUALIFIER AtExitFn(); // declaration needed below   
+#else
+        void LOKI_EXPORT AtExitFn();
+#endif
+
+        class LifetimeTracker;
+
+#define LOKI_ENABLE_NEW_SETLONGLIVITY_HELPER_DATA_IMPL        
+#ifdef LOKI_ENABLE_NEW_SETLONGLIVITY_HELPER_DATA_IMPL
+
+        // Helper data
+        // std::list because of the inserts
+        typedef std::list<LifetimeTracker*> TrackerArray;
+        extern LOKI_EXPORT TrackerArray* pTrackerArray;
+#else
+        // Helper data
+        typedef LifetimeTracker** TrackerArray;
+        extern TrackerArray pTrackerArray;
+        extern unsigned int elements;
+#endif
+
+        ////////////////////////////////////////////////////////////////////////////////
+        // class LifetimeTracker
+        // Helper class for SetLongevity
+        ////////////////////////////////////////////////////////////////////////////////
+
+        class LifetimeTracker
+        {
+        public:
+            LifetimeTracker(unsigned int x) : longevity_(x) 
+            {}
+            
+            virtual ~LifetimeTracker() = 0;
+            
+            static bool Compare(const LifetimeTracker* lhs,
+                const LifetimeTracker* rhs)
+            {
+                return lhs->longevity_ > rhs->longevity_;
+            }
+            
+        private:
+            unsigned int longevity_;
+        };
+        
+        // Definition required
+        inline LifetimeTracker::~LifetimeTracker() {} 
+
+        // Helper destroyer function
+        template <typename T>
+        struct Deleter
+        {
+            typedef void (*Type)(T*);
+            static void Delete(T* pObj)
+            { delete pObj; }
+        };
+
+        // Concrete lifetime tracker for objects of type T
+        template <typename T, typename Destroyer>
+        class ConcreteLifetimeTracker : public LifetimeTracker
+        {
+        public:
+            ConcreteLifetimeTracker(T* p,unsigned int longevity, Destroyer d)
+                : LifetimeTracker(longevity)
+                , pTracked_(p)
+                , destroyer_(d)
+            {}
+            
+            ~ConcreteLifetimeTracker()
+            { destroyer_(pTracked_); }
+            
+        private:
+            T* pTracked_;
+            Destroyer destroyer_;
+        };
+
+    } // namespace Private
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \ingroup LifetimeGroup
+    ///  
+    ///  Assigns an object a longevity; ensures ordered destructions of objects 
+    ///  registered thusly during the exit sequence of the application
+    ////////////////////////////////////////////////////////////////////////////////
+
+#ifdef LOKI_ENABLE_NEW_SETLONGLIVITY_HELPER_DATA_IMPL
+
+    template <typename T, typename Destroyer>
+    void SetLongevity(T* pDynObject, unsigned int longevity,
+        Destroyer d)
+    {
+        using namespace Private;
+
+        // manage lifetime of stack manually
+        if(pTrackerArray==0)
+            pTrackerArray = new TrackerArray;
+
+        // automatically delete the ConcreteLifetimeTracker object when a exception is thrown
+        std::auto_ptr<LifetimeTracker> 
+            p( new ConcreteLifetimeTracker<T, Destroyer>(pDynObject, longevity, d) );
+
+        // Find correct position
+        TrackerArray::iterator pos = std::upper_bound(
+            pTrackerArray->begin(), 
+            pTrackerArray->end(), 
+            p.get(), 
+            LifetimeTracker::Compare);
+        
+        // Insert the pointer to the ConcreteLifetimeTracker object into the queue
+        pTrackerArray->insert(pos, p.get());
+        
+        // nothing has thrown: don't delete the ConcreteLifetimeTracker object
+        p.release();
+        
+        // Register a call to AtExitFn
+        std::atexit(Private::AtExitFn);
+    }
+
+#else
+    
+    template <typename T, typename Destroyer>
+    void SetLongevity(T* pDynObject, unsigned int longevity,
+        Destroyer d)
+    {
+        using namespace Private;
+        
+        TrackerArray pNewArray = static_cast<TrackerArray>(
+                std::realloc(pTrackerArray, 
+                    sizeof(*pTrackerArray) * (elements + 1)));
+        if (!pNewArray) throw std::bad_alloc();
+        
+        // Delayed assignment for exception safety
+        pTrackerArray = pNewArray;
+        
+        LifetimeTracker* p = new ConcreteLifetimeTracker<T, Destroyer>(
+            pDynObject, longevity, d);
+ 
+        // Insert a pointer to the object into the queue
+        TrackerArray pos = std::upper_bound(
+            pTrackerArray, 
+            pTrackerArray + elements, 
+            p, 
+            LifetimeTracker::Compare);
+        std::copy_backward(
+            pos, 
+            pTrackerArray + elements,
+            pTrackerArray + elements + 1);
+        *pos = p;
+        ++elements;
+        
+        // Register a call to AtExitFn
+        std::atexit(Private::AtExitFn);
+    }
+
+#endif
+
+    template <typename T>
+    void SetLongevity(T* pDynObject, unsigned int longevity,
+        typename Private::Deleter<T>::Type d = Private::Deleter<T>::Delete)
+    {
+        SetLongevity<T, typename Private::Deleter<T>::Type>(pDynObject, longevity, d);
+    }
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \struct CreateUsingNew 
+    ///
+    ///  \ingroup CreationGroup
+    ///  Implementation of the CreationPolicy used by SingletonHolder
+    ///  Creates objects using a straight call to the new operator 
+    ////////////////////////////////////////////////////////////////////////////////
+    template <class T> struct CreateUsingNew
+    {
+        static T* Create()
+        { return new T; }
+        
+        static void Destroy(T* p)
+        { delete p; }
+    };
+    
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \struct CreateUsing
+    ///
+    ///  \ingroup CreationGroup
+    ///  Implementation of the CreationPolicy used by SingletonHolder
+    ///  Creates objects using a custom allocater.
+    ///  Usage: e.g. CreateUsing<std::allocator>::Allocator
+    ////////////////////////////////////////////////////////////////////////////////
+    template<template<class> class Alloc>
+    struct CreateUsing
+    {
+        template <class T>
+        struct Allocator
+        {
+            static Alloc<T> allocator;
+
+            static T* Create()
+            {
+                return new (allocator.allocate(1)) T;
+            }
+
+            static void Destroy(T* p)
+            {
+                //allocator.destroy(p);
+                p->~T();
+                allocator.deallocate(p,1);
+            }
+        };
+    };
+    
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \struct CreateUsingMalloc
+    ///
+    ///  \ingroup CreationGroup
+    ///  Implementation of the CreationPolicy used by SingletonHolder
+    ///  Creates objects using a call to std::malloc, followed by a call to the 
+    ///  placement new operator
+    ////////////////////////////////////////////////////////////////////////////////
+    template <class T> struct CreateUsingMalloc
+    {
+        static T* Create()
+        {
+            void* p = std::malloc(sizeof(T));
+            if (!p) return 0;
+            return new(p) T;
+        }
+        
+        static void Destroy(T* p)
+        {
+            p->~T();
+            std::free(p);
+        }
+    };
+    
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \struct CreateStatic
+    ///
+    ///  \ingroup CreationGroup
+    ///  Implementation of the CreationPolicy used by SingletonHolder
+    ///  Creates an object in static memory
+    ///  Implementation is slightly nonportable because it uses the MaxAlign trick 
+    ///  (an union of all types to ensure proper memory alignment). This trick is 
+    ///  nonportable in theory but highly portable in practice.
+    ////////////////////////////////////////////////////////////////////////////////
+    template <class T> struct CreateStatic
+    {
+        
+#ifdef _MSC_VER
+#pragma warning( push ) 
+#pragma warning( disable : 4121 )
+// alignment of a member was sensitive to packing
+#endif // _MSC_VER
+
+        union MaxAlign
+        {
+            char t_[sizeof(T)];
+            short int shortInt_;
+            int int_;
+            long int longInt_;
+            float float_;
+            double double_;
+            long double longDouble_;
+            struct Test;
+            int Test::* pMember_;
+            int (Test::*pMemberFn_)(int);
+        };
+        
+#ifdef _MSC_VER
+#pragma warning( pop )
+#endif // _MSC_VER
+        
+        static T* Create()
+        {
+            static MaxAlign staticMemory_;
+            return new(&staticMemory_) T;
+        }
+        
+        static void Destroy(T* p)
+        {
+            p->~T();
+        }
+    };
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \struct DefaultLifetime
+    ///
+    ///  \ingroup LifetimeGroup
+    ///  Implementation of the LifetimePolicy used by SingletonHolder
+    ///  Schedules an object's destruction as per C++ rules
+    ///  Forwards to std::atexit
+    ////////////////////////////////////////////////////////////////////////////////
+    template <class T>
+    struct DefaultLifetime
+    {
+        static void ScheduleDestruction(T*, atexit_pfn_t pFun)
+        { std::atexit(pFun); }
+        
+        static void OnDeadReference()
+        { throw std::logic_error("Dead Reference Detected"); }
+    };
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \struct  PhoenixSingleton
+    ///
+    ///  \ingroup LifetimeGroup
+    ///  Implementation of the LifetimePolicy used by SingletonHolder
+    ///  Schedules an object's destruction as per C++ rules, and it allows object 
+    ///  recreation by not throwing an exception from OnDeadReference
+    ////////////////////////////////////////////////////////////////////////////////
+    template <class T>
+    class PhoenixSingleton
+    {
+    public:
+        static void ScheduleDestruction(T*, atexit_pfn_t pFun)
+        {
+#ifndef ATEXIT_FIXED
+            if (!destroyedOnce_)
+#endif
+                std::atexit(pFun);
+        }
+        
+        static void OnDeadReference()
+        {
+#ifndef ATEXIT_FIXED
+            destroyedOnce_ = true;
+#endif
+        }
+        
+    private:
+#ifndef ATEXIT_FIXED
+        static bool destroyedOnce_;
+#endif
+    };
+    
+#ifndef ATEXIT_FIXED
+    template <class T> bool PhoenixSingleton<T>::destroyedOnce_ = false;
+#endif
+
+    ////////////////////////////////////////////////////////////////////////////////
+    // Copyright (c) 2004 by Curtis Krauskopf - curtis at decompile.com
+    ///
+    ///  \struct  DeletableSingleton
+    ///
+    ///  \ingroup LifetimeGroup
+    ///
+    ///  A DeletableSingleton allows the instantiated singleton to be 
+    ///  destroyed at any time. The singleton can be reinstantiated at 
+    ///  any time, even during program termination.
+    ///  If the singleton exists when the program terminates, it will 
+    ///  be automatically deleted.
+    ///
+    ///  \par Usage:  
+    ///  The singleton can be deleted manually:
+    ///
+    ///  DeletableSingleton<MyClass>::GracefulDelete();
+    ////////////////////////////////////////////////////////////////////////////////
+    template <class T>
+    class DeletableSingleton
+    {
+    public:
+
+        static void ScheduleDestruction(T*, atexit_pfn_t pFun)
+        {
+            static bool firstPass = true;
+            isDead = false;
+            deleter = pFun;
+            if (firstPass || needCallback)
+            {
+                std::atexit(atexitCallback);
+                firstPass = false;
+                needCallback = false;
+            }
+        }
+    
+        static void OnDeadReference()
+        { 
+        }
+        ///  delete singleton object manually
+        static void GracefulDelete()
+        {
+            if (isDead)
+                return;
+            isDead = true;
+            deleter();
+        }
+    
+    protected:
+        static atexit_pfn_t deleter;
+        static bool isDead;
+        static bool needCallback;
+        
+        static void atexitCallback()
+        {
+#ifdef ATEXIT_FIXED
+            needCallback = true;
+#else
+            needCallback = false;
+#endif
+            GracefulDelete();
+        }
+    };
+    
+    template <class T>
+    atexit_pfn_t DeletableSingleton<T>::deleter = 0;
+    
+    template <class T>
+    bool DeletableSingleton<T>::isDead = true;
+    
+    template <class T>
+    bool DeletableSingleton<T>::needCallback = true;
+
+    ////////////////////////////////////////////////////////////////////////////////
+    // class template Adapter
+    // Helper for SingletonWithLongevity below
+    ////////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+        template <class T>
+        struct Adapter
+        {
+            void operator()(T*) { return pFun_(); }
+            atexit_pfn_t pFun_;
+        };
+    }
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \struct SingletonWithLongevity
+    ///
+    ///  \ingroup LifetimeGroup
+    ///  Implementation of the LifetimePolicy used by SingletonHolder
+    ///  Schedules an object's destruction in order of their longevities
+    ///  Assumes a visible function GetLongevity(T*) that returns the longevity of the
+    ///  object.
+    ////////////////////////////////////////////////////////////////////////////////
+    template <class T>
+    class SingletonWithLongevity
+    {
+    public:
+        static void ScheduleDestruction(T* pObj, atexit_pfn_t pFun)
+        {
+            Private::Adapter<T> adapter = { pFun };
+            SetLongevity(pObj, GetLongevity(pObj), adapter);
+        }
+        
+        static void OnDeadReference()
+        { throw std::logic_error("Dead Reference Detected"); }
+    };
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \struct NoDestroy
+    ///
+    ///  \ingroup LifetimeGroup
+    ///  Implementation of the LifetimePolicy used by SingletonHolder
+    ///  Never destroys the object
+    ////////////////////////////////////////////////////////////////////////////////
+    template <class T>
+    struct NoDestroy
+    {
+        static void ScheduleDestruction(T*, atexit_pfn_t)
+        {}
+        
+        static void OnDeadReference()
+        {}
+    };
+    
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \defgroup LongevityLifetimeGroup LongevityLifetime
+    ///  \ingroup LifetimeGroup
+    ///
+    ///  \namespace LongevityLifetime
+    ///
+    ///  \ingroup LongevityLifetimeGroup
+    ///  \brief  In this namespace are special lifetime policies to manage lifetime
+    ///  dependencies.
+    ////////////////////////////////////////////////////////////////////////////////
+    namespace LongevityLifetime
+    {
+        ////////////////////////////////////////////////////////////////////////////////
+        ///  \struct  SingletonFixedLongevity 
+        ///
+        ///  \ingroup LongevityLifetimeGroup
+        ///  Add your own lifetimes into the namespace 'LongevityLifetime'
+        ///  with your prefered lifetime by adding a struct like this:
+        ///
+        ///  template<class T>
+        ///  struct MyLifetime  : SingletonFixedLongevity< MyLifetimeNumber ,T> {}
+        ////////////////////////////////////////////////////////////////////////////////
+        template <unsigned int Longevity, class T>
+        class SingletonFixedLongevity
+        {
+        public:
+            virtual ~SingletonFixedLongevity() {}
+            
+            static void ScheduleDestruction(T* pObj, atexit_pfn_t pFun)
+            {
+                Private::Adapter<T> adapter = { pFun };
+                SetLongevity(pObj, Longevity , adapter);
+            }
+            
+            static void OnDeadReference()
+            { throw std::logic_error("Dead Reference Detected"); }
+        };
+
+        ///  \struct DieLast
+        ///  \ingroup LongevityLifetimeGroup
+        ///  \brief  Longest possible SingletonWithLongevity lifetime: 0xFFFFFFFF
+        template <class T>
+        struct DieLast  : SingletonFixedLongevity<0xFFFFFFFF ,T>
+        {};
+
+        ///  \struct DieDirectlyBeforeLast
+        ///  \ingroup LongevityLifetimeGroup
+        ///  \brief  Lifetime is a one less than DieLast: 0xFFFFFFFF-1
+        template <class T>
+        struct DieDirectlyBeforeLast  : SingletonFixedLongevity<0xFFFFFFFF-1 ,T>
+        {};
+
+        ///  \struct DieFirst
+        ///  \ingroup LongevityLifetimeGroup
+        ///  \brief  Shortest possible SingletonWithLongevity lifetime: 0 
+        template <class T>
+        struct DieFirst : SingletonFixedLongevity<0,T>
+        {};
+    
+    }//namespace LongevityLifetime
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \class FollowIntoDeath
+    ///
+    ///  \ingroup LifetimeGroup
+    ///
+    ///  Lifetime policyfor the SingletonHolder tempalte. 
+    ///  Followers will die after the master dies Followers will not die, if
+    ///    - master never dies (NoDestroy policy)
+    ///    - master never created
+    ///    - master dies not in the function registered with atexit
+    ///    - master dies not by a call of a the atexit registerd function (DeletableSingleton::GracefulDelete)         
+    ///
+    ///  \par Usage:
+    ///
+    ///  Lifetimes of the master and the follower singletons,  e.g. with a M and a F class:
+    ///   \code SingletonHolder< M , FollowIntoDeath::With<DefaultLifetime>::AsMasterLifetime > MasterSingleton; \endcode
+    ///   \code SingletonHolder< F , CreateUsingNew, FollowIntoDeath::AfterMaster< MasterSingleton >::IsDestroyed > FollowerSingleton \endcode
+    ////////////////////////////////////////////////////////////////////////////////
+    class FollowIntoDeath
+    {
+        template<class T>
+        class Followers
+        {
+            typedef std::vector<atexit_pfn_t> Container;
+            typedef typename Container::iterator iterator;
+            static Container* followers_;
+        
+        public:
+            static void Init()
+            {
+                static bool done = false;
+                if(!done)
+                {
+                    followers_ = new Container;
+                    done = true;
+                }
+            }
+
+            static void AddFollower(atexit_pfn_t ae)
+            {
+                Init();
+                followers_->push_back(ae);
+            }
+
+            static void DestroyFollowers()
+            {
+                Init();
+                for(iterator it = followers_->begin();it != followers_->end();++it)
+                    (*it)();    
+                delete followers_;
+            }
+        };
+
+    public:
+
+        ///  \struct With
+        ///  Template for the master 
+        ///  \param Lifetime Lifetime policy for the master
+        template<template <class> class Lifetime>
+        struct With
+        {
+            ///  \struct AsMasterLifetime
+            ///  Policy for master
+            template<class Master>
+            struct AsMasterLifetime
+            {
+                static void ScheduleDestruction(Master* pObj, atexit_pfn_t pFun)
+                {
+                    Followers<Master>::Init();
+                    Lifetime<Master>::ScheduleDestruction(pObj, pFun);
+
+                    // use same policy for the followers and force a new 
+                    // template instantiation,  this adds a additional atexit entry
+                    // does not work with SetLonlevity, but there you can control
+                    // the lifetime with the GetLongevity function.
+                    Lifetime<Followers<Master> >::ScheduleDestruction(0,Followers<Master>::DestroyFollowers);
+                }
+
+                static void OnDeadReference()
+                { 
+                    throw std::logic_error("Dead Reference Detected"); 
+                }
+            };
+        };
+
+        ///  \struct AfterMaster
+        ///  Template for the follower
+        ///  \param Master Master to follow into death
+        template<class Master>
+        struct AfterMaster
+        {
+            ///  \struct IsDestroyed
+            ///  Policy for followers 
+            template<class F>
+            struct IsDestroyed
+            {
+                static void ScheduleDestruction(F*, atexit_pfn_t pFun)
+                {
+                    Followers<Master>::AddFollower(pFun);
+                }
+      
+                static void OnDeadReference()
+                { 
+                    throw std::logic_error("Dead Reference Detected"); 
+                }
+            };
+        };
+    };
+
+    template<class T>
+    typename FollowIntoDeath::Followers<T>::Container* 
+    FollowIntoDeath::Followers<T>::followers_ = 0;
+    
+    
+    
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \class  SingletonHolder
+    ///
+    ///  \ingroup SingletonGroup
+    ///
+    ///  Provides Singleton amenities for a type T
+    ///  To protect that type from spurious instantiations, 
+    ///  you have to protect it yourself.
+    ///  
+    ///  \param CreationPolicy Creation policy, default: CreateUsingNew
+    ///  \param LifetimePolicy Lifetime policy, default: DefaultLifetime,
+    ///  \param ThreadingModel Threading policy, 
+    ///                         default: LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL
+    ////////////////////////////////////////////////////////////////////////////////
+    template
+    <
+        typename T,
+        template <class> class CreationPolicy = CreateUsingNew,
+        template <class> class LifetimePolicy = DefaultLifetime,
+        template <class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
+        class MutexPolicy = LOKI_DEFAULT_MUTEX
+    >
+    class SingletonHolder
+    {
+    public:
+
+        ///  Type of the singleton object
+        typedef T ObjectType;
+
+        ///  Returns a reference to singleton object
+        static T& Instance();
+        
+    private:
+        // Helpers
+        static void MakeInstance();
+        static void LOKI_C_CALLING_CONVENTION_QUALIFIER DestroySingleton();
+        
+        // Protection
+        SingletonHolder();
+        
+        // Data
+        typedef typename ThreadingModel<T*,MutexPolicy>::VolatileType PtrInstanceType;
+        static PtrInstanceType pInstance_;
+        static bool destroyed_;
+    };
+    
+    ////////////////////////////////////////////////////////////////////////////////
+    // SingletonHolder's data
+    ////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        class T,
+        template <class> class C,
+        template <class> class L,
+        template <class, class> class M,
+        class X
+    >
+    typename SingletonHolder<T, C, L, M, X>::PtrInstanceType
+        SingletonHolder<T, C, L, M, X>::pInstance_;
+
+    template
+    <
+        class T,
+        template <class> class C,
+        template <class> class L,
+        template <class, class> class M,
+        class X
+    >
+    bool SingletonHolder<T, C, L, M, X>::destroyed_;
+
+    ////////////////////////////////////////////////////////////////////////////////
+    // SingletonHolder::Instance
+    ////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        class T,
+        template <class> class CreationPolicy,
+        template <class> class LifetimePolicy,
+        template <class, class> class ThreadingModel,
+        class MutexPolicy
+    >
+    inline T& SingletonHolder<T, CreationPolicy, 
+        LifetimePolicy, ThreadingModel, MutexPolicy>::Instance()
+    {
+        if (!pInstance_)
+        {
+            MakeInstance();
+        }
+        return *pInstance_;
+    }
+
+    ////////////////////////////////////////////////////////////////////////////////
+    // SingletonHolder::MakeInstance (helper for Instance)
+    ////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        class T,
+        template <class> class CreationPolicy,
+        template <class> class LifetimePolicy,
+        template <class, class> class ThreadingModel,
+        class MutexPolicy
+    >
+    void SingletonHolder<T, CreationPolicy, 
+        LifetimePolicy, ThreadingModel, MutexPolicy>::MakeInstance()
+    {
+        typename ThreadingModel<SingletonHolder,MutexPolicy>::Lock guard;
+        (void)guard;
+        
+        if (!pInstance_)
+        {
+            if (destroyed_)
+            {
+                destroyed_ = false;
+                LifetimePolicy<T>::OnDeadReference();
+            }
+            pInstance_ = CreationPolicy<T>::Create();
+            LifetimePolicy<T>::ScheduleDestruction(pInstance_, 
+                &DestroySingleton);
+        }
+    }
+
+    template
+    <
+        class T,
+        template <class> class CreationPolicy,
+        template <class> class L,
+        template <class, class> class M,
+        class X
+    >
+    void LOKI_C_CALLING_CONVENTION_QUALIFIER 
+    SingletonHolder<T, CreationPolicy, L, M, X>::DestroySingleton()
+    {
+        assert(!destroyed_);
+        CreationPolicy<T>::Destroy(pInstance_);
+        pInstance_ = 0;
+        destroyed_ = true;
+    }
+
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \class  Singleton
+    ///
+    ///  \ingroup SingletonGroup
+    ///
+    ///  Convenience template to implement a getter function for a singleton object.
+    ///  Often needed in a shared library which hosts singletons.
+    ///  
+    ///  \par Usage
+    ///
+    ///  see test/SingletonDll
+    ///
+    ////////////////////////////////////////////////////////////////////////////////
+
+#ifndef LOKI_SINGLETON_EXPORT
+#define LOKI_SINGLETON_EXPORT
+#endif
+
+    template<class T>
+    class LOKI_SINGLETON_EXPORT Singleton
+    {
+    public:
+        static T& Instance();
+    };
+
+} // namespace Loki
+
+
+/// \def LOKI_SINGLETON_INSTANCE_DEFINITION(SHOLDER)
+/// Convenience macro for the definition of the static Instance member function
+/// Put this macro called with a SingletonHolder typedef into your cpp file.
+
+#define LOKI_SINGLETON_INSTANCE_DEFINITION(SHOLDER)                     \
+namespace Loki                                                          \
+{                                                                        \
+    template<>                                                          \
+    SHOLDER::ObjectType&  Singleton<SHOLDER::ObjectType>::Instance()    \
+    {                                                                   \
+        return SHOLDER::Instance();                                     \
+    }                                                                    \
+}
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SmallObj.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SmallObj.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SmallObj.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,644 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_SMALLOBJ_INC_
+#define LOKI_SMALLOBJ_INC_
+
+// $Id: SmallObj.h 806 2007-02-03 00:01:52Z rich_sposato $
+
+
+#include "LokiExport.h"
+#include "Threads.h"
+#include "Singleton.h"
+#include <cstddef>
+#include <new> // needed for std::nothrow_t parameter.
+
+#ifndef LOKI_DEFAULT_CHUNK_SIZE
+#define LOKI_DEFAULT_CHUNK_SIZE 4096
+#endif
+
+#ifndef LOKI_MAX_SMALL_OBJECT_SIZE
+#define LOKI_MAX_SMALL_OBJECT_SIZE 256
+#endif
+
+#ifndef LOKI_DEFAULT_OBJECT_ALIGNMENT
+#define LOKI_DEFAULT_OBJECT_ALIGNMENT 4
+#endif
+
+#ifndef LOKI_DEFAULT_SMALLOBJ_LIFETIME
+#define LOKI_DEFAULT_SMALLOBJ_LIFETIME ::Loki::LongevityLifetime::DieAsSmallObjectParent
+#endif
+
+#if defined(LOKI_SMALL_OBJECT_USE_NEW_ARRAY) && defined(_MSC_VER)
+#pragma message("Don't define LOKI_SMALL_OBJECT_USE_NEW_ARRAY when using a Microsoft compiler to prevent memory leaks.")
+#pragma message("now calling '#undef LOKI_SMALL_OBJECT_USE_NEW_ARRAY'")
+#undef LOKI_SMALL_OBJECT_USE_NEW_ARRAY
+#endif
+
+///  \defgroup  SmallObjectGroup Small objects
+///
+///  \defgroup  SmallObjectGroupInternal Internals
+///  \ingroup   SmallObjectGroup
+
+namespace Loki
+{
+    namespace LongevityLifetime
+    {
+        /** @struct DieAsSmallObjectParent
+            @ingroup SmallObjectGroup
+            Lifetime policy to manage lifetime dependencies of 
+            SmallObject base and child classes.
+            The Base class should have this lifetime
+        */
+        template <class T>
+        struct DieAsSmallObjectParent  : DieLast<T> {};
+
+        /** @struct DieAsSmallObjectChild
+            @ingroup SmallObjectGroup
+            Lifetime policy to manage lifetime dependencies of 
+            SmallObject base and child classes.
+            The Child class should have this lifetime
+        */
+        template <class T>
+        struct DieAsSmallObjectChild  : DieDirectlyBeforeLast<T> {};
+
+    } 
+
+    class FixedAllocator;
+
+    /** @class SmallObjAllocator
+        @ingroup SmallObjectGroupInternal
+     Manages pool of fixed-size allocators.
+     Designed to be a non-templated base class of AllocatorSingleton so that
+     implementation details can be safely hidden in the source code file.
+     */
+    class LOKI_EXPORT SmallObjAllocator
+    {
+    protected:
+        /** The only available constructor needs certain parameters in order to
+         initialize all the FixedAllocator's.  This throws only if
+         @param pageSize # of bytes in a page of memory.
+         @param maxObjectSize Max # of bytes which this may allocate.
+         @param objectAlignSize # of bytes between alignment boundaries.
+         */
+        SmallObjAllocator( std::size_t pageSize, std::size_t maxObjectSize,
+            std::size_t objectAlignSize );
+
+        /** Destructor releases all blocks, all Chunks, and FixedAllocator's.
+         Any outstanding blocks are unavailable, and should not be used after
+         this destructor is called.  The destructor is deliberately non-virtual
+         because it is protected, not public.
+         */
+        ~SmallObjAllocator( void );
+
+    public:
+        /** Allocates a block of memory of requested size.  Complexity is often
+         constant-time, but might be O(C) where C is the number of Chunks in a
+         FixedAllocator. 
+
+         @par Exception Safety Level
+         Provides either strong-exception safety, or no-throw exception-safety
+         level depending upon doThrow parameter.  The reason it provides two
+         levels of exception safety is because it is used by both the nothrow
+         and throwing new operators.  The underlying implementation will never
+         throw of its own accord, but this can decide to throw if it does not
+         allocate.  The only exception it should emit is std::bad_alloc.
+
+         @par Allocation Failure
+         If it does not allocate, it will call TrimExcessMemory and attempt to
+         allocate again, before it decides to throw or return NULL.  Many
+         allocators loop through several new_handler functions, and terminate
+         if they can not allocate, but not this one.  It only makes one attempt
+         using its own implementation of the new_handler, and then returns NULL
+         or throws so that the program can decide what to do at a higher level.
+         (Side note: Even though the C++ Standard allows allocators and
+         new_handlers to terminate if they fail, the Loki allocator does not do
+         that since that policy is not polite to a host program.)
+
+         @param size # of bytes needed for allocation.
+         @param doThrow True if this should throw if unable to allocate, false
+          if it should provide no-throw exception safety level.
+         @return NULL if nothing allocated and doThrow is false.  Else the
+          pointer to an available block of memory.
+         */
+        void * Allocate( std::size_t size, bool doThrow );
+
+        /** Deallocates a block of memory at a given place and of a specific
+        size.  Complexity is almost always constant-time, and is O(C) only if
+        it has to search for which Chunk deallocates.  This never throws.
+         */
+        void Deallocate( void * p, std::size_t size );
+
+        /** Deallocates a block of memory at a given place but of unknown size
+        size.  Complexity is O(F + C) where F is the count of FixedAllocator's
+        in the pool, and C is the number of Chunks in all FixedAllocator's.  This
+        does not throw exceptions.  This overloaded version of Deallocate is
+        called by the nothow delete operator - which is called when the nothrow
+        new operator is used, but a constructor throws an exception.
+         */
+        void Deallocate( void * p );
+
+        /// Returns max # of bytes which this can allocate.
+        inline std::size_t GetMaxObjectSize() const
+        { return maxSmallObjectSize_; }
+
+        /// Returns # of bytes between allocation boundaries.
+        inline std::size_t GetAlignment() const { return objectAlignSize_; }
+
+        /** Releases empty Chunks from memory.  Complexity is O(F + C) where F
+        is the count of FixedAllocator's in the pool, and C is the number of
+        Chunks in all FixedAllocator's.  This will never throw.  This is called
+        by AllocatorSingleto::ClearExtraMemory, the new_handler function for
+        Loki's allocator, and is called internally when an allocation fails.
+        @return True if any memory released, or false if none released.
+         */
+        bool TrimExcessMemory( void );
+
+        /** Returns true if anything in implementation is corrupt.  Complexity
+         is O(F + C + B) where F is the count of FixedAllocator's in the pool,
+         C is the number of Chunks in all FixedAllocator's, and B is the number
+         of blocks in all Chunks.  If it determines any data is corrupted, this
+         will return true in release version, but assert in debug version at
+         the line where it detects the corrupted data.  If it does not detect
+         any corrupted data, it returns false.
+         */
+        bool IsCorrupt( void ) const;
+
+    private:
+        /// Default-constructor is not implemented.
+        SmallObjAllocator( void );
+        /// Copy-constructor is not implemented.
+        SmallObjAllocator( const SmallObjAllocator & );
+        /// Copy-assignment operator is not implemented.
+        SmallObjAllocator & operator = ( const SmallObjAllocator & );
+
+        /// Pointer to array of fixed-size allocators.
+        Loki::FixedAllocator * pool_;
+
+        /// Largest object size supported by allocators.
+        const std::size_t maxSmallObjectSize_;
+
+        /// Size of alignment boundaries.
+        const std::size_t objectAlignSize_;
+    };
+
+
+    /** @class AllocatorSingleton
+        @ingroup SmallObjectGroupInternal
+     This template class is derived from
+     SmallObjAllocator in order to pass template arguments into it, and still
+     have a default constructor for the singleton.  Each instance is a unique
+     combination of all the template parameters, and hence is singleton only 
+     with respect to those parameters.  The template parameters have default
+     values and the class has typedefs identical to both SmallObject and
+     SmallValueObject so that this class can be used directly instead of going
+     through SmallObject or SmallValueObject.  That design feature allows
+     clients to use the new_handler without having the name of the new_handler
+     function show up in classes derived from SmallObject or SmallValueObject.
+     Thus, the only functions in the allocator which show up in SmallObject or
+     SmallValueObject inheritance hierarchies are the new and delete
+     operators.
+    */
+    template
+    <
+        template <class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
+        std::size_t chunkSize = LOKI_DEFAULT_CHUNK_SIZE,
+        std::size_t maxSmallObjectSize = LOKI_MAX_SMALL_OBJECT_SIZE,
+        std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
+        template <class> class LifetimePolicy = LOKI_DEFAULT_SMALLOBJ_LIFETIME,
+        class MutexPolicy = LOKI_DEFAULT_MUTEX
+    >
+    class AllocatorSingleton : public SmallObjAllocator
+    {
+    public:
+
+        /// Defines type of allocator.
+        typedef AllocatorSingleton< ThreadingModel, chunkSize,
+            maxSmallObjectSize, objectAlignSize, LifetimePolicy > MyAllocator;
+
+        /// Defines type for thread-safety locking mechanism.
+        typedef ThreadingModel< MyAllocator, MutexPolicy > MyThreadingModel;
+
+        /// Defines singleton made from allocator.
+        typedef Loki::SingletonHolder< MyAllocator, Loki::CreateStatic,
+            LifetimePolicy, ThreadingModel > MyAllocatorSingleton;
+
+        /// Returns reference to the singleton.
+        inline static AllocatorSingleton & Instance( void )
+        {
+            return MyAllocatorSingleton::Instance();
+        }
+
+        /// The default constructor is not meant to be called directly.
+        inline AllocatorSingleton() :
+            SmallObjAllocator( chunkSize, maxSmallObjectSize, objectAlignSize )
+            {}
+
+        /// The destructor is not meant to be called directly.
+        inline ~AllocatorSingleton( void ) {}
+
+        /** Clears any excess memory used by the allocator.  Complexity is
+         O(F + C) where F is the count of FixedAllocator's in the pool, and C
+         is the number of Chunks in all FixedAllocator's.  This never throws.
+         @note This function can be used as a new_handler when Loki and other
+         memory allocators can no longer allocate.  Although the C++ Standard
+         allows new_handler functions to terminate the program when they can
+         not release any memory, this will not do so.
+         */
+        static void ClearExtraMemory( void );
+
+        /** Returns true if anything in implementation is corrupt.  Complexity
+         is O(F + C + B) where F is the count of FixedAllocator's in the pool,
+         C is the number of Chunks in all FixedAllocator's, and B is the number
+         of blocks in all Chunks.  If it determines any data is corrupted, this
+         will return true in release version, but assert in debug version at
+         the line where it detects the corrupted data.  If it does not detect
+         any corrupted data, it returns false.
+         */
+        static bool IsCorrupted( void );
+
+    private:
+        /// Copy-constructor is not implemented.
+        AllocatorSingleton( const AllocatorSingleton & );
+        /// Copy-assignment operator is not implemented.
+        AllocatorSingleton & operator = ( const AllocatorSingleton & );
+    };
+
+    template
+    <
+        template <class, class> class T,
+        std::size_t C,
+        std::size_t M,
+        std::size_t O,
+        template <class> class L,
+        class X
+    >
+    void AllocatorSingleton< T, C, M, O, L, X >::ClearExtraMemory( void )
+    {
+        typename MyThreadingModel::Lock lock;
+        (void)lock; // get rid of warning
+        Instance().TrimExcessMemory();
+    }
+
+    template
+    <
+        template <class, class> class T,
+        std::size_t C,
+        std::size_t M,
+        std::size_t O,
+        template <class> class L,
+        class X
+    >
+    bool AllocatorSingleton< T, C, M, O, L, X >::IsCorrupted( void )
+    {
+        typename MyThreadingModel::Lock lock;
+        (void)lock; // get rid of warning
+        return Instance().IsCorrupt();
+    }
+
+    /** This standalone function provides the longevity level for Small-Object
+     Allocators which use the Loki::SingletonWithLongevity policy.  The
+     SingletonWithLongevity class can find this function through argument-
+     dependent lookup.
+
+     @par Longevity Levels
+     No Small-Object Allocator depends on any other Small-Object allocator, so
+     this does not need to calculate dependency levels among allocators, and
+     it returns just a constant.  All allocators must live longer than the
+     objects which use the allocators, it must return a longevity level higher
+     than any such object.
+     */
+    template
+    <
+        template <class, class> class T,
+        std::size_t C,
+        std::size_t M,
+        std::size_t O,
+        template <class> class L,
+        class X
+    >
+    inline unsigned int GetLongevity(
+        AllocatorSingleton< T, C, M, O, L, X > * )
+    {
+        // Returns highest possible value.
+        return 0xFFFFFFFF;
+    }
+
+
+    /** @class SmallObjectBase
+        @ingroup SmallObjectGroup
+     Base class for small object allocation classes.
+     The shared implementation of the new and delete operators are here instead
+     of being duplicated in both SmallObject or SmallValueObject, later just 
+     called Small-Objects.  This class is not meant to be used directly by clients, 
+     or derived from by clients. Class has no data members so compilers can 
+     use Empty-Base-Optimization.
+
+     @par ThreadingModel
+     This class doesn't support ObjectLevelLockable policy for ThreadingModel.
+     The allocator is a singleton, so a per-instance mutex is not necessary.
+     Nor is using ObjectLevelLockable recommended with SingletonHolder since
+     the SingletonHolder::MakeInstance function requires a mutex that exists
+     prior to when the object is created - which is not possible if the mutex
+     is inside the object, such as required for ObjectLevelLockable.  If you
+     attempt to use ObjectLevelLockable, the compiler will emit errors because
+     it can't use the default constructor in ObjectLevelLockable.  If you need
+     a thread-safe allocator, use the ClassLevelLockable policy.
+
+     @par Lifetime Policy
+     
+     The SmallObjectBase template needs a lifetime policy because it owns
+     a singleton of SmallObjAllocator which does all the low level functions. 
+     When using a Small-Object in combination with the SingletonHolder template
+     you have to choose two lifetimes, that of the Small-Object and that of
+     the singleton. The rule is: The Small-Object lifetime must be greater than
+     the lifetime of the singleton hosting the Small-Object. Violating this rule
+     results in a crash on exit, because the hosting singleton tries to delete
+     the Small-Object which is then already destroyed. 
+     
+     The lifetime policies recommended for use with Small-Objects hosted 
+     by a SingletonHolder template are 
+         - LongevityLifetime::DieAsSmallObjectParent / LongevityLifetime::DieAsSmallObjectChild
+         - SingletonWithLongevity
+         - FollowIntoDeath (not supported by MSVC 7.1)
+         - NoDestroy
+     
+     The default lifetime of Small-Objects is 
+     LongevityLifetime::DieAsSmallObjectParent to
+     insure that memory is not released before a object with the lifetime
+     LongevityLifetime::DieAsSmallObjectChild using that
+     memory is destroyed. The LongevityLifetime::DieAsSmallObjectParent
+     lifetime has the highest possible value of a SetLongevity lifetime, so
+     you can use it in combination with your own lifetime not having also
+     the highest possible value.
+     
+     The DefaultLifetime and PhoenixSingleton policies are *not* recommended 
+     since they can cause the allocator to be destroyed and release memory 
+     for singletons hosting a object which inherit from either SmallObject
+     or SmallValueObject.  
+     
+     @par Lifetime usage
+    
+        - LongevityLifetime: The Small-Object has 
+          LongevityLifetime::DieAsSmallObjectParent policy and the Singleton
+          hosting the Small-Object has LongevityLifetime::DieAsSmallObjectChild. 
+          The child lifetime has a hard coded SetLongevity lifetime which is 
+          shorter than the lifetime of the parent, thus the child dies 
+          before the parent.
+         
+        - Both Small-Object and Singleton use SingletonWithLongevity policy.
+          The longevity level for the singleton must be lower than that for the
+          Small-Object. This is why the AllocatorSingleton's GetLongevity function 
+          returns the highest value.
+         
+        - FollowIntoDeath lifetime: The Small-Object has 
+          FollowIntoDeath::With<LIFETIME>::AsMasterLiftime
+          policy and the Singleton has 
+          FollowIntoDeath::AfterMaster<MASTERSINGLETON>::IsDestroyed policy,
+          where you could choose the LIFETIME. 
+        
+        - Both Small-Object and Singleton use NoDestroy policy. 
+          Since neither is ever destroyed, the destruction order does not matter.
+          Note: you will get memory leaks!
+         
+        - The Small-Object has NoDestroy policy but the Singleton has
+          SingletonWithLongevity policy. Note: you will get memory leaks!
+         
+     
+     You should *not* use NoDestroy for the singleton, and then use
+     SingletonWithLongevity for the Small-Object. 
+     
+     @par Examples:
+     
+     - test/SmallObj/SmallSingleton.cpp
+     - test/Singleton/Dependencies.cpp
+     */
+    template
+    <
+        template <class, class> class ThreadingModel,
+        std::size_t chunkSize,
+        std::size_t maxSmallObjectSize,
+        std::size_t objectAlignSize,
+        template <class> class LifetimePolicy,
+        class MutexPolicy
+    >
+    class SmallObjectBase
+    {
+
+#if (LOKI_MAX_SMALL_OBJECT_SIZE != 0) && (LOKI_DEFAULT_CHUNK_SIZE != 0) && (LOKI_DEFAULT_OBJECT_ALIGNMENT != 0)
+
+    public:        
+        /// Defines type of allocator singleton, must be public 
+        /// to handle singleton lifetime dependencies.
+        typedef AllocatorSingleton< ThreadingModel, chunkSize,
+            maxSmallObjectSize, objectAlignSize, LifetimePolicy > ObjAllocatorSingleton;
+    
+    private:
+
+        /// Defines type for thread-safety locking mechanism.
+        typedef ThreadingModel< ObjAllocatorSingleton, MutexPolicy > MyThreadingModel;
+
+        /// Use singleton defined in AllocatorSingleton.
+        typedef typename ObjAllocatorSingleton::MyAllocatorSingleton MyAllocatorSingleton;
+        
+    public:
+
+        /// Throwing single-object new throws bad_alloc when allocation fails.
+#ifdef _MSC_VER
+        /// @note MSVC complains about non-empty exception specification lists.
+        static void * operator new ( std::size_t size )
+#else
+        static void * operator new ( std::size_t size ) throw ( std::bad_alloc )
+#endif
+        {
+            typename MyThreadingModel::Lock lock;
+            (void)lock; // get rid of warning
+            return MyAllocatorSingleton::Instance().Allocate( size, true );
+        }
+
+        /// Non-throwing single-object new returns NULL if allocation fails.
+        static void * operator new ( std::size_t size, const std::nothrow_t & ) throw ()
+        {
+            typename MyThreadingModel::Lock lock;
+            (void)lock; // get rid of warning
+            return MyAllocatorSingleton::Instance().Allocate( size, false );
+        }
+
+        /// Placement single-object new merely calls global placement new.
+        inline static void * operator new ( std::size_t size, void * place )
+        {
+            return ::operator new( size, place );
+        }
+
+        /// Single-object delete.
+        static void operator delete ( void * p, std::size_t size ) throw ()
+        {
+            typename MyThreadingModel::Lock lock;
+            (void)lock; // get rid of warning
+            MyAllocatorSingleton::Instance().Deallocate( p, size );
+        }
+
+        /** Non-throwing single-object delete is only called when nothrow
+         new operator is used, and the constructor throws an exception.
+         */
+        static void operator delete ( void * p, const std::nothrow_t & ) throw()
+        {
+            typename MyThreadingModel::Lock lock;
+            (void)lock; // get rid of warning
+            MyAllocatorSingleton::Instance().Deallocate( p );
+        }
+
+        /// Placement single-object delete merely calls global placement delete.
+        inline static void operator delete ( void * p, void * place )
+        {
+            ::operator delete ( p, place );
+        }
+
+#ifdef LOKI_SMALL_OBJECT_USE_NEW_ARRAY
+
+        /// Throwing array-object new throws bad_alloc when allocation fails.
+#ifdef _MSC_VER
+        /// @note MSVC complains about non-empty exception specification lists.
+        static void * operator new [] ( std::size_t size )
+#else
+        static void * operator new [] ( std::size_t size )
+            throw ( std::bad_alloc )
+#endif
+        {
+            typename MyThreadingModel::Lock lock;
+            (void)lock; // get rid of warning
+            return MyAllocatorSingleton::Instance().Allocate( size, true );
+        }
+
+        /// Non-throwing array-object new returns NULL if allocation fails.
+        static void * operator new [] ( std::size_t size,
+            const std::nothrow_t & ) throw ()
+        {
+            typename MyThreadingModel::Lock lock;
+            (void)lock; // get rid of warning
+            return MyAllocatorSingleton::Instance().Allocate( size, false );
+        }
+
+        /// Placement array-object new merely calls global placement new.
+        inline static void * operator new [] ( std::size_t size, void * place )
+        {
+            return ::operator new( size, place );
+        }
+
+        /// Array-object delete.
+        static void operator delete [] ( void * p, std::size_t size ) throw ()
+        {
+            typename MyThreadingModel::Lock lock;
+            (void)lock; // get rid of warning
+            MyAllocatorSingleton::Instance().Deallocate( p, size );
+        }
+
+        /** Non-throwing array-object delete is only called when nothrow
+         new operator is used, and the constructor throws an exception.
+         */
+        static void operator delete [] ( void * p,
+            const std::nothrow_t & ) throw()
+        {
+            typename MyThreadingModel::Lock lock;
+            (void)lock; // get rid of warning
+            MyAllocatorSingleton::Instance().Deallocate( p );
+        }
+
+        /// Placement array-object delete merely calls global placement delete.
+        inline static void operator delete [] ( void * p, void * place )
+        {
+            ::operator delete ( p, place );
+        }
+#endif  // #if use new array functions.
+
+#endif  // #if default template parameters are not zero
+
+    protected:
+        inline SmallObjectBase( void ) {}
+        inline SmallObjectBase( const SmallObjectBase & ) {}
+        inline SmallObjectBase & operator = ( const SmallObjectBase & )
+        { return *this; }
+        inline ~SmallObjectBase() {}
+    }; // end class SmallObjectBase
+
+
+    /** @class SmallObject
+        @ingroup SmallObjectGroup
+     SmallObject Base class for polymorphic small objects, offers fast
+     allocations & deallocations.  Destructor is virtual and public.  Default
+     constructor is trivial.   Copy-constructor and copy-assignment operator are
+     not implemented since polymorphic classes almost always disable those
+     operations.  Class has no data members so compilers can use
+     Empty-Base-Optimization.
+     */
+    template
+    <
+        template <class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
+        std::size_t chunkSize = LOKI_DEFAULT_CHUNK_SIZE,
+        std::size_t maxSmallObjectSize = LOKI_MAX_SMALL_OBJECT_SIZE,
+        std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
+        template <class> class LifetimePolicy = LOKI_DEFAULT_SMALLOBJ_LIFETIME,
+        class MutexPolicy = LOKI_DEFAULT_MUTEX
+    >
+    class SmallObject : public SmallObjectBase< ThreadingModel, chunkSize,
+            maxSmallObjectSize, objectAlignSize, LifetimePolicy, MutexPolicy >
+    {
+
+    public:
+        virtual ~SmallObject() {}
+    protected:
+        inline SmallObject( void ) {}
+
+    private:
+        /// Copy-constructor is not implemented.
+        SmallObject( const SmallObject & );
+        /// Copy-assignment operator is not implemented.
+        SmallObject & operator = ( const SmallObject & );
+    }; // end class SmallObject
+
+
+    /** @class SmallValueObject
+        @ingroup SmallObjectGroup
+     SmallValueObject Base class for small objects with value-type
+     semantics - offers fast allocations & deallocations.  Destructor is
+     non-virtual, inline, and protected to prevent unintentional destruction
+     through base class.  Default constructor is trivial.   Copy-constructor
+     and copy-assignment operator are trivial since value-types almost always
+     need those operations.  Class has no data members so compilers can use
+     Empty-Base-Optimization.
+     */
+    template
+    <
+        template <class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL,
+        std::size_t chunkSize = LOKI_DEFAULT_CHUNK_SIZE,
+        std::size_t maxSmallObjectSize = LOKI_MAX_SMALL_OBJECT_SIZE,
+        std::size_t objectAlignSize = LOKI_DEFAULT_OBJECT_ALIGNMENT,
+        template <class> class LifetimePolicy = LOKI_DEFAULT_SMALLOBJ_LIFETIME,
+        class MutexPolicy = LOKI_DEFAULT_MUTEX
+    >
+    class SmallValueObject : public SmallObjectBase< ThreadingModel, chunkSize,
+            maxSmallObjectSize, objectAlignSize, LifetimePolicy, MutexPolicy >
+    {
+    protected:
+        inline SmallValueObject( void ) {}
+        inline SmallValueObject( const SmallValueObject & ) {}
+        inline SmallValueObject & operator = ( const SmallValueObject & )
+        { return *this; }
+        inline ~SmallValueObject() {}
+    }; // end class SmallValueObject
+
+} // namespace Loki
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SmartPtr.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SmartPtr.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/SmartPtr.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1763 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_SMARTPTR_INC_
+#define LOKI_SMARTPTR_INC_
+
+// $Id: SmartPtr.h 791 2006-12-15 01:36:29Z rich_sposato $
+
+
+///  \defgroup  SmartPointerGroup Smart pointers
+///  Policy based implementation of a smart pointer
+///  \defgroup  SmartPointerOwnershipGroup Ownership policies
+///  \ingroup   SmartPointerGroup
+///  \defgroup  SmartPointerStorageGroup Storage policies
+///  \ingroup   SmartPointerGroup
+///  \defgroup  SmartPointerConversionGroup Conversion policies
+///  \ingroup   SmartPointerGroup
+///  \defgroup  SmartPointerCheckingGroup Checking policies
+///  \ingroup   SmartPointerGroup
+
+#include "LokiExport.h"
+#include "SmallObj.h"
+#include "TypeManip.h"
+#include "static_check.h"
+#include "RefToValue.h"
+#include "ConstPolicy.h"
+
+#include <functional>
+#include <stdexcept>
+#include <cassert>
+#include <string>
+
+#if !defined(_MSC_VER)
+    #include <stdint.h>
+#endif
+
+#if defined(_MSC_VER) || defined(__GNUC__)
+// GCC>=4.1 must use -ffriend-injection due to a bug in GCC
+#define LOKI_ENABLE_FRIEND_TEMPLATE_TEMPLATE_PARAMETER_WORKAROUND
+#endif
+
+
+namespace Loki
+{
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class HeapStorage
+///
+///  \ingroup  SmartPointerStorageGroup 
+///  Implementation of the StoragePolicy used by SmartPtr.  Uses explicit call
+///   to T's destructor followed by call to free.
+////////////////////////////////////////////////////////////////////////////////
+
+
+    template <class T>
+    class HeapStorage
+    {
+    public:
+        typedef T* StoredType;      /// the type of the pointee_ object
+        typedef T* InitPointerType; /// type used to declare OwnershipPolicy type.
+        typedef T* PointerType;     /// type returned by operator->
+        typedef T& ReferenceType;   /// type returned by operator*
+
+        HeapStorage() : pointee_(Default()) 
+        {}
+
+        // The storage policy doesn't initialize the stored pointer 
+        //     which will be initialized by the OwnershipPolicy's Clone fn
+        HeapStorage(const HeapStorage&) : pointee_(0)
+        {}
+
+        template <class U>
+        HeapStorage(const HeapStorage<U>&) : pointee_(0)
+        {}
+        
+        HeapStorage(const StoredType& p) : pointee_(p) {}
+        
+        PointerType operator->() const { return pointee_; }
+        
+        ReferenceType operator*() const { return *pointee_; }
+        
+        void Swap(HeapStorage& rhs)
+        { std::swap(pointee_, rhs.pointee_); }
+    
+        // Accessors
+        template <class F>
+        friend typename HeapStorage<F>::PointerType GetImpl(const HeapStorage<F>& sp);
+
+        template <class F>
+        friend const typename HeapStorage<F>::StoredType& GetImplRef(const HeapStorage<F>& sp);
+
+        template <class F>
+        friend typename HeapStorage<F>::StoredType& GetImplRef(HeapStorage<F>& sp);
+
+    protected:
+        // Destroys the data stored
+        // (Destruction might be taken over by the OwnershipPolicy)
+        void Destroy()
+        {
+            if ( 0 != pointee_ )
+            {
+                pointee_->~T();
+                ::free( pointee_ );
+            }
+        }
+
+        // Default value to initialize the pointer
+        static StoredType Default()
+        { return 0; }
+    
+    private:
+        // Data
+        StoredType pointee_;
+    };
+
+    template <class T>
+    inline typename HeapStorage<T>::PointerType GetImpl(const HeapStorage<T>& sp)
+    { return sp.pointee_; }
+
+    template <class T>
+    inline const typename HeapStorage<T>::StoredType& GetImplRef(const HeapStorage<T>& sp)
+    { return sp.pointee_; }
+
+    template <class T>
+    inline typename HeapStorage<T>::StoredType& GetImplRef(HeapStorage<T>& sp)
+    { return sp.pointee_; }
+
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class DefaultSPStorage
+///
+///  \ingroup  SmartPointerStorageGroup 
+///  Implementation of the StoragePolicy used by SmartPtr
+////////////////////////////////////////////////////////////////////////////////
+
+
+    template <class T>
+    class DefaultSPStorage
+    {
+    public:
+        typedef T* StoredType;    // the type of the pointee_ object
+        typedef T* InitPointerType; /// type used to declare OwnershipPolicy type.
+        typedef T* PointerType;   // type returned by operator->
+        typedef T& ReferenceType; // type returned by operator*
+
+        DefaultSPStorage() : pointee_(Default()) 
+        {}
+
+        // The storage policy doesn't initialize the stored pointer 
+        //     which will be initialized by the OwnershipPolicy's Clone fn
+        DefaultSPStorage(const DefaultSPStorage&) : pointee_(0)
+        {}
+
+        template <class U>
+        DefaultSPStorage(const DefaultSPStorage<U>&) : pointee_(0)
+        {}
+        
+        DefaultSPStorage(const StoredType& p) : pointee_(p) {}
+        
+        PointerType operator->() const { return pointee_; }
+        
+        ReferenceType operator*() const { return *pointee_; }
+        
+        void Swap(DefaultSPStorage& rhs)
+        { std::swap(pointee_, rhs.pointee_); }
+    
+        // Accessors
+        template <class F>
+        friend typename DefaultSPStorage<F>::PointerType GetImpl(const DefaultSPStorage<F>& sp);
+
+        template <class F>
+        friend const typename DefaultSPStorage<F>::StoredType& GetImplRef(const DefaultSPStorage<F>& sp);
+
+        template <class F>
+        friend typename DefaultSPStorage<F>::StoredType& GetImplRef(DefaultSPStorage<F>& sp);
+
+    protected:
+        // Destroys the data stored
+        // (Destruction might be taken over by the OwnershipPolicy)
+        void Destroy()
+        {
+            delete pointee_;
+        }
+
+        // Default value to initialize the pointer
+        static StoredType Default()
+        { return 0; }
+    
+    private:
+        // Data
+        StoredType pointee_;
+    };
+
+    template <class T>
+    inline typename DefaultSPStorage<T>::PointerType GetImpl(const DefaultSPStorage<T>& sp)
+    { return sp.pointee_; }
+
+    template <class T>
+    inline const typename DefaultSPStorage<T>::StoredType& GetImplRef(const DefaultSPStorage<T>& sp)
+    { return sp.pointee_; }
+
+    template <class T>
+    inline typename DefaultSPStorage<T>::StoredType& GetImplRef(DefaultSPStorage<T>& sp)
+    { return sp.pointee_; }
+
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class LockedStorage
+///
+///  \ingroup  SmartPointerStorageGroup 
+///  Implementation of the StoragePolicy used by SmartPtr.
+///
+///  Each call to operator-> locks the object for the duration of a call to a
+///  member function of T.
+///
+///  \par How It Works
+///  LockedStorage has a helper class called Locker, which acts as a smart
+///  pointer with limited abilities.  LockedStorage::operator-> returns an
+///  unnamed temporary of type Locker<T> that exists for the duration of the
+///  call to a member function of T.  The unnamed temporary locks the object
+///  when it is constructed by operator-> and unlocks the object when it is
+///  destructed.
+///
+///  \note This storage policy requires class T to have member functions Lock
+///  and Unlock.  If your class does not have Lock or Unlock functions, you may
+///  either make a child class which does, or make a policy class similar to
+///  LockedStorage which calls other functions to lock the object.
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class T>
+    class Locker
+    {
+    public:
+        Locker( const T * p ) : pointee_( const_cast< T * >( p ) )
+        {
+            if ( pointee_ != 0 )
+                pointee_->Lock();
+        }
+
+        ~Locker( void )
+        {
+            if ( pointee_ != 0 )
+                pointee_->Unlock();
+        }
+
+        operator T * ()
+        {
+            return pointee_;
+        }
+
+        T * operator->()
+        {
+            return pointee_;
+        }
+
+    private:
+        Locker( void );
+        Locker & operator = ( const Locker & );
+        T * pointee_;
+    };
+
+    template <class T>
+    class LockedStorage
+    {
+    public:
+
+        typedef T* StoredType;           /// the type of the pointee_ object
+        typedef T* InitPointerType;      /// type used to declare OwnershipPolicy type.
+        typedef Locker< T > PointerType; /// type returned by operator->
+        typedef T& ReferenceType;        /// type returned by operator*
+
+        LockedStorage() : pointee_( Default() ) {}
+
+        ~LockedStorage( void ) {}
+
+        LockedStorage( const LockedStorage&) : pointee_( 0 ) {}
+
+        LockedStorage( const StoredType & p ) : pointee_( p ) {}
+
+        PointerType operator->()
+        {
+            return Locker< T >( pointee_ );
+        }
+
+        void Swap(LockedStorage& rhs)
+        {
+            std::swap( pointee_, rhs.pointee_ );
+        }
+
+        // Accessors
+        template <class F>
+        friend typename LockedStorage<F>::InitPointerType GetImpl(const LockedStorage<F>& sp);
+
+        template <class F>
+        friend const typename LockedStorage<F>::StoredType& GetImplRef(const LockedStorage<F>& sp);
+
+        template <class F>
+        friend typename LockedStorage<F>::StoredType& GetImplRef(LockedStorage<F>& sp);
+
+    protected:
+        // Destroys the data stored
+        // (Destruction might be taken over by the OwnershipPolicy)
+        void Destroy()
+        {
+            delete pointee_;
+        }
+
+        // Default value to initialize the pointer
+        static StoredType Default()
+        { return 0; }
+
+    private:
+        /// Dereference operator is not implemented.
+        ReferenceType operator*();
+
+        // Data
+        StoredType pointee_;
+    };
+
+    template <class T>
+    inline typename LockedStorage<T>::InitPointerType GetImpl(const LockedStorage<T>& sp)
+    { return sp.pointee_; }
+
+    template <class T>
+    inline const typename LockedStorage<T>::StoredType& GetImplRef(const LockedStorage<T>& sp)
+    { return sp.pointee_; }
+
+    template <class T>
+    inline typename LockedStorage<T>::StoredType& GetImplRef(LockedStorage<T>& sp)
+    { return sp.pointee_; }
+
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class ArrayStorage
+///
+///  \ingroup  SmartPointerStorageGroup 
+///  Implementation of the ArrayStorage used by SmartPtr
+////////////////////////////////////////////////////////////////////////////////
+
+
+    template <class T>
+    class ArrayStorage
+    {
+    public:
+        typedef T* StoredType;    // the type of the pointee_ object
+        typedef T* InitPointerType; /// type used to declare OwnershipPolicy type.
+        typedef T* PointerType;   // type returned by operator->
+        typedef T& ReferenceType; // type returned by operator*
+
+        ArrayStorage() : pointee_(Default()) 
+        {}
+
+        // The storage policy doesn't initialize the stored pointer 
+        //     which will be initialized by the OwnershipPolicy's Clone fn
+        ArrayStorage(const ArrayStorage&) : pointee_(0)
+        {}
+
+        template <class U>
+        ArrayStorage(const ArrayStorage<U>&) : pointee_(0)
+        {}
+        
+        ArrayStorage(const StoredType& p) : pointee_(p) {}
+        
+        PointerType operator->() const { return pointee_; }
+        
+        ReferenceType operator*() const { return *pointee_; }
+        
+        void Swap(ArrayStorage& rhs)
+        { std::swap(pointee_, rhs.pointee_); }
+    
+        // Accessors
+        template <class F>
+        friend typename ArrayStorage<F>::PointerType GetImpl(const ArrayStorage<F>& sp);
+
+        template <class F>
+        friend const typename ArrayStorage<F>::StoredType& GetImplRef(const ArrayStorage<F>& sp);
+
+        template <class F>
+        friend typename ArrayStorage<F>::StoredType& GetImplRef(ArrayStorage<F>& sp);
+
+    protected:
+        // Destroys the data stored
+        // (Destruction might be taken over by the OwnershipPolicy)
+        void Destroy()
+        { delete [] pointee_; }
+        
+        // Default value to initialize the pointer
+        static StoredType Default()
+        { return 0; }
+    
+    private:
+        // Data
+        StoredType pointee_;
+    };
+
+    template <class T>
+    inline typename ArrayStorage<T>::PointerType GetImpl(const ArrayStorage<T>& sp)
+    { return sp.pointee_; }
+
+    template <class T>
+    inline const typename ArrayStorage<T>::StoredType& GetImplRef(const ArrayStorage<T>& sp)
+    { return sp.pointee_; }
+
+    template <class T>
+    inline typename ArrayStorage<T>::StoredType& GetImplRef(ArrayStorage<T>& sp)
+    { return sp.pointee_; }
+
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class RefCounted
+///
+///  \ingroup  SmartPointerOwnershipGroup 
+///  Implementation of the OwnershipPolicy used by SmartPtr
+///  Provides a classic external reference counting implementation
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    class RefCounted
+    {
+    public:
+        RefCounted() 
+            : pCount_(static_cast<uintptr_t*>(
+                SmallObject<>::operator new(sizeof(uintptr_t))))
+        {
+            assert(pCount_!=0);
+            *pCount_ = 1;
+        }
+        
+        RefCounted(const RefCounted& rhs) 
+        : pCount_(rhs.pCount_)
+        {}
+        
+        // MWCW lacks template friends, hence the following kludge
+        template <typename P1>
+        RefCounted(const RefCounted<P1>& rhs) 
+        : pCount_(reinterpret_cast<const RefCounted&>(rhs).pCount_)
+        {}
+        
+        P Clone(const P& val)
+        {
+            ++*pCount_;
+            return val;
+        }
+        
+        bool Release(const P&)
+        {
+            if (!--*pCount_)
+            {
+                SmallObject<>::operator delete(pCount_, sizeof(uintptr_t));
+                pCount_ = NULL;
+                return true;
+            }
+            return false;
+        }
+        
+        void Swap(RefCounted& rhs)
+        { std::swap(pCount_, rhs.pCount_); }
+    
+        enum { destructiveCopy = false };
+
+    private:
+        // Data
+        uintptr_t* pCount_;
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+///  \struct RefCountedMT
+///
+///  \ingroup  SmartPointerOwnershipGroup 
+///  Implementation of the OwnershipPolicy used by SmartPtr
+///  Implements external reference counting for multithreaded programs
+///  Policy Usage: RefCountedMTAdj<ThreadingModel>::RefCountedMT
+///
+///  \par Warning
+///  There could be a race condition, see bug "Race condition in RefCountedMTAdj::Release"
+///  http://sourceforge.net/tracker/index.php?func=detail&aid=1408845&group_id=29557&atid=396644
+////////////////////////////////////////////////////////////////////////////////
+    
+    template <template <class, class> class ThreadingModel,
+              class MX = LOKI_DEFAULT_MUTEX >
+    struct RefCountedMTAdj
+    {
+        template <class P>
+        class RefCountedMT : public ThreadingModel< RefCountedMT<P>, MX >
+        {
+            typedef ThreadingModel< RefCountedMT<P>, MX > base_type;
+            typedef typename base_type::IntType       CountType;
+            typedef volatile CountType               *CountPtrType;
+
+        public:
+            RefCountedMT() 
+            {
+                pCount_ = static_cast<CountPtrType>(
+                    SmallObject<LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>::operator new(
+                        sizeof(*pCount_)));
+                assert(pCount_);
+                //*pCount_ = 1;
+                ThreadingModel<RefCountedMT, MX>::AtomicAssign(*pCount_, 1);
+            }
+
+            RefCountedMT(const RefCountedMT& rhs) 
+            : pCount_(rhs.pCount_)
+            {}
+
+            //MWCW lacks template friends, hence the following kludge
+            template <typename P1>
+            RefCountedMT(const RefCountedMT<P1>& rhs) 
+            : pCount_(reinterpret_cast<const RefCountedMT<P>&>(rhs).pCount_)
+            {}
+
+            P Clone(const P& val)
+            {
+                ThreadingModel<RefCountedMT, MX>::AtomicIncrement(*pCount_);
+                return val;
+            }
+
+            bool Release(const P&)
+            {
+                if (!ThreadingModel<RefCountedMT, MX>::AtomicDecrement(*pCount_))
+                {
+                    SmallObject<LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL>::operator delete(
+                        const_cast<CountType *>(pCount_), 
+                        sizeof(*pCount_));
+                    return true;
+                }
+                return false;
+            }
+
+            void Swap(RefCountedMT& rhs)
+            { std::swap(pCount_, rhs.pCount_); }
+
+            enum { destructiveCopy = false };
+
+        private:
+            // Data
+            CountPtrType pCount_;
+        };
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class COMRefCounted
+///
+///  \ingroup  SmartPointerOwnershipGroup 
+///  Implementation of the OwnershipPolicy used by SmartPtr
+///  Adapts COM intrusive reference counting to OwnershipPolicy-specific syntax
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    class COMRefCounted
+    {
+    public:
+        COMRefCounted()
+        {}
+        
+        template <class U>
+        COMRefCounted(const COMRefCounted<U>&)
+        {}
+        
+        static P Clone(const P& val)
+        {
+            if(val!=0)
+               val->AddRef();
+            return val;
+        }
+        
+        static bool Release(const P& val)
+        { 
+            if(val!=0) 
+                val->Release(); 
+            return false; 
+        }
+        
+        enum { destructiveCopy = false };
+        
+        static void Swap(COMRefCounted&)
+        {}
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+///  \struct DeepCopy
+///
+///  \ingroup  SmartPointerOwnershipGroup 
+///  Implementation of the OwnershipPolicy used by SmartPtr
+///  Implements deep copy semantics, assumes existence of a Clone() member 
+///  function of the pointee type
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    struct DeepCopy
+    {
+        DeepCopy()
+        {}
+        
+        template <class P1>
+        DeepCopy(const DeepCopy<P1>&)
+        {}
+        
+        static P Clone(const P& val)
+        { return val->Clone(); }
+        
+        static bool Release(const P&)
+        { return true; }
+        
+        static void Swap(DeepCopy&)
+        {}
+        
+        enum { destructiveCopy = false };
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+///  \class RefLinked
+///
+///  \ingroup  SmartPointerOwnershipGroup 
+///  Implementation of the OwnershipPolicy used by SmartPtr
+///  Implements reference linking
+////////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+        class LOKI_EXPORT RefLinkedBase
+        {
+        public:
+            RefLinkedBase() 
+            { prev_ = next_ = this; }
+
+            RefLinkedBase(const RefLinkedBase& rhs);
+
+            bool Release();
+
+            void Swap(RefLinkedBase& rhs);
+
+            bool Merge( RefLinkedBase & rhs );
+
+            enum { destructiveCopy = false };
+
+        private:
+            static unsigned int CountPrevCycle( const RefLinkedBase * pThis );
+            static unsigned int CountNextCycle( const RefLinkedBase * pThis );
+            bool HasPrevNode( const RefLinkedBase * p ) const;
+            bool HasNextNode( const RefLinkedBase * p ) const;
+
+            mutable const RefLinkedBase* prev_;
+            mutable const RefLinkedBase* next_;
+        };
+    }
+    
+    template <class P>
+    class RefLinked : public Private::RefLinkedBase
+    {
+    public:
+        RefLinked()
+        {}
+        
+        template <class P1>
+        RefLinked(const RefLinked<P1>& rhs) 
+        : Private::RefLinkedBase(rhs)
+        {}
+
+        static P Clone(const P& val)
+        { return val; }
+
+        bool Release(const P&)
+        { return Private::RefLinkedBase::Release(); }
+
+        template < class P1 >
+        bool Merge( RefLinked< P1 > & rhs )
+        {
+            return Private::RefLinkedBase::Merge( rhs );
+        }
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+///  \class DestructiveCopy
+///
+///  \ingroup  SmartPointerOwnershipGroup 
+///  Implementation of the OwnershipPolicy used by SmartPtr
+///  Implements destructive copy semantics (a la std::auto_ptr)
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    class DestructiveCopy
+    {
+    public:
+        DestructiveCopy()
+        {}
+        
+        template <class P1>
+        DestructiveCopy(const DestructiveCopy<P1>&)
+        {}
+        
+        template <class P1>
+        static P Clone(P1& val)
+        {
+            P result(val);
+            val = P1();
+            return result;
+        }
+        
+        static bool Release(const P&)
+        { return true; }
+        
+        static void Swap(DestructiveCopy&)
+        {}
+        
+        enum { destructiveCopy = true };
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+///  \class NoCopy
+///
+///  \ingroup  SmartPointerOwnershipGroup 
+///  Implementation of the OwnershipPolicy used by SmartPtr
+///  Implements a policy that doesn't allow copying objects
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    class NoCopy
+    {
+    public:
+        NoCopy()
+        {}
+        
+        template <class P1>
+        NoCopy(const NoCopy<P1>&)
+        {}
+        
+        static P Clone(const P&)
+        {
+            // Make it depended on template parameter
+            static const bool DependedFalse = sizeof(P*) == 0;
+
+            LOKI_STATIC_CHECK(DependedFalse, This_Policy_Disallows_Value_Copying);
+        }
+        
+        static bool Release(const P&)
+        { return true; }
+        
+        static void Swap(NoCopy&)
+        {}
+        
+        enum { destructiveCopy = false };
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+///  \struct AllowConversion
+///  
+///  \ingroup  SmartPointerConversionGroup 
+///  Implementation of the ConversionPolicy used by SmartPtr
+///  Allows implicit conversion from SmartPtr to the pointee type
+////////////////////////////////////////////////////////////////////////////////
+
+    struct AllowConversion
+    {
+        enum { allow = true };
+
+        void Swap(AllowConversion&)
+        {}
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+///  \struct DisallowConversion
+///
+///  \ingroup  SmartPointerConversionGroup 
+///  Implementation of the ConversionPolicy used by SmartPtr
+///  Does not allow implicit conversion from SmartPtr to the pointee type
+///  You can initialize a DisallowConversion with an AllowConversion
+////////////////////////////////////////////////////////////////////////////////
+
+    struct DisallowConversion
+    {
+        DisallowConversion()
+        {}
+        
+        DisallowConversion(const AllowConversion&)
+        {}
+        
+        enum { allow = false };
+
+        void Swap(DisallowConversion&)
+        {}
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+///  \struct NoCheck
+///
+///  \ingroup  SmartPointerCheckingGroup 
+///  Implementation of the CheckingPolicy used by SmartPtr
+///  Well, it's clear what it does :o)
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    struct NoCheck
+    {
+        NoCheck()
+        {}
+        
+        template <class P1>
+        NoCheck(const NoCheck<P1>&)
+        {}
+        
+        static void OnDefault(const P&)
+        {}
+
+        static void OnInit(const P&)
+        {}
+
+        static void OnDereference(const P&)
+        {}
+
+        static void Swap(NoCheck&)
+        {}
+    };
+
+
+////////////////////////////////////////////////////////////////////////////////
+///  \struct AssertCheck
+///
+///  \ingroup  SmartPointerCheckingGroup 
+///  Implementation of the CheckingPolicy used by SmartPtr
+///  Checks the pointer before dereference
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    struct AssertCheck
+    {
+        AssertCheck()
+        {}
+        
+        template <class P1>
+        AssertCheck(const AssertCheck<P1>&)
+        {}
+        
+        template <class P1>
+        AssertCheck(const NoCheck<P1>&)
+        {}
+        
+        static void OnDefault(const P&)
+        {}
+
+        static void OnInit(const P&)
+        {}
+
+        static void OnDereference(P val)
+        { assert(val); (void)val; }
+
+        static void Swap(AssertCheck&)
+        {}
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+///  \struct AssertCheckStrict
+///
+///  \ingroup  SmartPointerCheckingGroup 
+///  Implementation of the CheckingPolicy used by SmartPtr
+///  Checks the pointer against zero upon initialization and before dereference
+///  You can initialize an AssertCheckStrict with an AssertCheck 
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    struct AssertCheckStrict
+    {
+        AssertCheckStrict()
+        {}
+        
+        template <class U>
+        AssertCheckStrict(const AssertCheckStrict<U>&)
+        {}
+        
+        template <class U>
+        AssertCheckStrict(const AssertCheck<U>&)
+        {}
+        
+        template <class P1>
+        AssertCheckStrict(const NoCheck<P1>&)
+        {}
+        
+        static void OnDefault(P val)
+        { assert(val); }
+        
+        static void OnInit(P val)
+        { assert(val); }
+        
+        static void OnDereference(P val)
+        { assert(val); }
+        
+        static void Swap(AssertCheckStrict&)
+        {}
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+///  \struct NullPointerException
+///
+///  \ingroup SmartPointerGroup 
+///  Used by some implementations of the CheckingPolicy used by SmartPtr
+////////////////////////////////////////////////////////////////////////////////
+
+    struct NullPointerException : public std::runtime_error
+    {
+        NullPointerException() : std::runtime_error(std::string(""))
+        { }
+        const char* what() const throw()
+        { return "Null Pointer Exception"; }
+    };
+        
+////////////////////////////////////////////////////////////////////////////////
+///  \struct RejectNullStatic
+///
+///  \ingroup  SmartPointerCheckingGroup 
+///  Implementation of the CheckingPolicy used by SmartPtr
+///  Checks the pointer upon initialization and before dereference
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    struct RejectNullStatic
+    {
+        RejectNullStatic()
+        {}
+        
+        template <class P1>
+        RejectNullStatic(const RejectNullStatic<P1>&)
+        {}
+        
+        template <class P1>
+        RejectNullStatic(const NoCheck<P1>&)
+        {}
+        
+        template <class P1>
+        RejectNullStatic(const AssertCheck<P1>&)
+        {}
+        
+        template <class P1>
+        RejectNullStatic(const AssertCheckStrict<P1>&)
+        {}
+        
+        static void OnDefault(const P&)
+        {
+            // Make it depended on template parameter
+            static const bool DependedFalse = sizeof(P*) == 0;
+
+            LOKI_STATIC_CHECK(DependedFalse, ERROR_This_Policy_Does_Not_Allow_Default_Initialization);
+        }
+        
+        static void OnInit(const P& val)
+        { if (!val) throw NullPointerException(); }
+        
+        static void OnDereference(const P& val)
+        { if (!val) throw NullPointerException(); }
+        
+        static void Swap(RejectNullStatic&)
+        {}
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+///  \struct RejectNull
+///
+///  \ingroup  SmartPointerCheckingGroup 
+///  Implementation of the CheckingPolicy used by SmartPtr
+///  Checks the pointer before dereference
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    struct RejectNull
+    {
+        RejectNull()
+        {}
+        
+        template <class P1>
+        RejectNull(const RejectNull<P1>&)
+        {}
+        
+        static void OnInit(P)
+        {}
+
+        static void OnDefault(P)
+        {}
+        
+        void OnDereference(P val)
+        { if (!val) throw NullPointerException(); }
+        
+        void OnDereference(P val) const
+        { if (!val) throw NullPointerException(); }
+
+        void Swap(RejectNull&)
+        {}        
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+///  \struct RejectNullStrict
+///
+///  \ingroup  SmartPointerCheckingGroup 
+///  Implementation of the CheckingPolicy used by SmartPtr
+///  Checks the pointer upon initialization and before dereference
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class P>
+    struct RejectNullStrict
+    {
+        RejectNullStrict()
+        {}
+        
+        template <class P1>
+        RejectNullStrict(const RejectNullStrict<P1>&)
+        {}
+        
+        template <class P1>
+        RejectNullStrict(const RejectNull<P1>&)
+        {}
+        
+        static void OnInit(P val)
+        { if (!val) throw NullPointerException(); }
+
+        void OnDereference(P val)
+        { OnInit(val); }
+
+        void OnDereference(P val) const
+        { OnInit(val); }
+
+        void Swap(RejectNullStrict&)
+        {}        
+    };
+
+
+////////////////////////////////////////////////////////////////////////////////
+// class template SmartPtr (declaration)
+// The reason for all the fuss above
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OwnershipPolicy = RefCounted,
+        class ConversionPolicy = DisallowConversion,
+        template <class> class CheckingPolicy = AssertCheck,
+        template <class> class StoragePolicy = DefaultSPStorage,
+        template<class> class ConstnessPolicy = LOKI_DEFAULT_CONSTNESS 
+     >
+     class SmartPtr;
+
+////////////////////////////////////////////////////////////////////////////////
+// class template SmartPtrDef (definition)
+// this class added to unify the usage of SmartPtr 
+// instead of writing SmartPtr<T,OP,CP,KP,SP> write SmartPtrDef<T,OP,CP,KP,SP>::type
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OwnershipPolicy = RefCounted,
+        class ConversionPolicy = DisallowConversion,
+        template <class> class CheckingPolicy = AssertCheck,
+        template <class> class StoragePolicy = DefaultSPStorage,
+        template<class> class ConstnessPolicy = LOKI_DEFAULT_CONSTNESS 
+    >
+    struct SmartPtrDef
+    {
+        typedef SmartPtr
+        <
+            T,
+            OwnershipPolicy,
+            ConversionPolicy,
+            CheckingPolicy,
+            StoragePolicy,
+            ConstnessPolicy
+        >
+        type;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class SmartPtr
+///
+///  \ingroup SmartPointerGroup 
+///
+///  \param OwnershipPolicy  default =  RefCounted,
+///  \param ConversionPolicy default = DisallowConversion,
+///  \param CheckingPolicy default = AssertCheck,
+///  \param StoragePolicy default = DefaultSPStorage
+///  \param ConstnessPolicy default = LOKI_DEFAULT_CONSTNESS
+///
+///  \par IMPORTANT NOTE
+///  Due to threading issues, the OwnershipPolicy has been changed as follows:
+///
+///     - Release() returns a boolean saying if that was the last release
+///        so the pointer can be deleted by the StoragePolicy
+///     - IsUnique() was removed
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OwnershipPolicy,
+        class ConversionPolicy,
+        template <class> class CheckingPolicy,
+        template <class> class StoragePolicy,
+        template <class> class ConstnessPolicy
+    >
+    class SmartPtr
+        : public StoragePolicy<T>
+        , public OwnershipPolicy<typename StoragePolicy<T>::InitPointerType>
+        , public CheckingPolicy<typename StoragePolicy<T>::StoredType>
+        , public ConversionPolicy
+    {
+        typedef StoragePolicy<T> SP;
+        typedef OwnershipPolicy<typename StoragePolicy<T>::InitPointerType> OP;
+        typedef CheckingPolicy<typename StoragePolicy<T>::StoredType> KP;
+        typedef ConversionPolicy CP;
+        
+    public:
+        typedef typename ConstnessPolicy<T>::Type* ConstPointerType;
+        typedef typename ConstnessPolicy<T>::Type& ConstReferenceType;
+
+        typedef typename SP::PointerType PointerType;
+        typedef typename SP::StoredType StoredType;
+        typedef typename SP::ReferenceType ReferenceType;
+        
+        typedef typename Select<OP::destructiveCopy,SmartPtr, const SmartPtr>::Result
+                CopyArg;
+    
+    private:
+        struct NeverMatched {};
+       
+#ifdef LOKI_SMARTPTR_CONVERSION_CONSTRUCTOR_POLICY
+        typedef typename Select< CP::allow, const StoredType&, NeverMatched>::Result ImplicitArg;
+        typedef typename Select<!CP::allow, const StoredType&, NeverMatched>::Result ExplicitArg;
+#else
+        typedef const StoredType& ImplicitArg;
+        typedef typename Select<false, const StoredType&, NeverMatched>::Result ExplicitArg;
+#endif
+
+    public:
+
+        SmartPtr()
+        {
+            KP::OnDefault(GetImpl(*this));
+        }
+        
+        explicit
+        SmartPtr(ExplicitArg p) : SP(p)
+        {
+            KP::OnInit(GetImpl(*this));
+        }
+
+        SmartPtr(ImplicitArg p) : SP(p)
+        {
+            KP::OnInit(GetImpl(*this));
+        }
+
+        SmartPtr(CopyArg& rhs) : SP(rhs), OP(rhs), KP(rhs), CP(rhs)
+        {
+            GetImplRef(*this) = OP::Clone(GetImplRef(rhs));
+        }
+
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        SmartPtr(const SmartPtr<T1, OP1, CP1, KP1, SP1, CNP1 >& rhs)
+        : SP(rhs), OP(rhs), KP(rhs), CP(rhs)
+        { GetImplRef(*this) = OP::Clone(GetImplRef(rhs)); }
+
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        SmartPtr(SmartPtr<T1, OP1, CP1, KP1, SP1, CNP1 >& rhs)
+        : SP(rhs), OP(rhs), KP(rhs), CP(rhs)
+        {
+            GetImplRef(*this) = OP::Clone(GetImplRef(rhs));
+        }
+
+        SmartPtr(RefToValue<SmartPtr> rhs)
+        : SP(rhs), OP(rhs), KP(rhs), CP(rhs)
+        {}
+        
+        operator RefToValue<SmartPtr>()
+        { return RefToValue<SmartPtr>(*this); }
+
+        SmartPtr& operator=(CopyArg& rhs)
+        {
+            SmartPtr temp(rhs);
+            temp.Swap(*this);
+            return *this;
+        }
+
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        SmartPtr& operator=(const SmartPtr<T1, OP1, CP1, KP1, SP1, CNP1 >& rhs)
+        {
+            SmartPtr temp(rhs);
+            temp.Swap(*this);
+            return *this;
+        }
+        
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        SmartPtr& operator=(SmartPtr<T1, OP1, CP1, KP1, SP1, CNP1 >& rhs)
+        {
+            SmartPtr temp(rhs);
+            temp.Swap(*this);
+            return *this;
+        }
+        
+        void Swap(SmartPtr& rhs)
+        {
+            OP::Swap(rhs);
+            CP::Swap(rhs);
+            KP::Swap(rhs);
+            SP::Swap(rhs);
+        }
+        
+        ~SmartPtr()
+        {
+            if (OP::Release(GetImpl(*static_cast<SP*>(this))))
+            {
+                SP::Destroy();
+            }
+        }
+
+#ifdef LOKI_ENABLE_FRIEND_TEMPLATE_TEMPLATE_PARAMETER_WORKAROUND
+
+        // old non standard in class definition of friends
+        friend inline void Release(SmartPtr& sp, typename SP::StoredType& p)
+        {
+            p = GetImplRef(sp);
+            GetImplRef(sp) = SP::Default();
+        }
+        
+        friend inline void Reset(SmartPtr& sp, typename SP::StoredType p)
+        { SmartPtr(p).Swap(sp); }
+
+#else
+
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        friend void Release(SmartPtr<T1, OP1, CP1, KP1, SP1, CNP1>& sp,
+                            typename SP1<T1>::StoredType& p);
+
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        friend void Reset(SmartPtr<T1, OP1, CP1, KP1, SP1, CNP1>& sp,
+                          typename SP1<T1>::StoredType p);
+#endif
+
+
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        bool Merge( SmartPtr< T1, OP1, CP1, KP1, SP1, CNP1 > & rhs )
+        {
+            if ( GetImpl( *this ) != GetImpl( rhs ) )
+            {
+                return false;
+            }
+            return OP::template Merge( rhs );
+        }
+
+        PointerType operator->()
+        {
+            KP::OnDereference(GetImplRef(*this));
+            return SP::operator->();
+        }
+
+        ConstPointerType operator->() const
+        {
+            KP::OnDereference(GetImplRef(*this));
+            return SP::operator->();
+        }
+
+        ReferenceType operator*()
+        {
+            KP::OnDereference(GetImplRef(*this));
+            return SP::operator*();
+        }
+        
+        ConstReferenceType operator*() const
+        {
+            KP::OnDereference(GetImplRef(*this));
+            return SP::operator*();
+        }
+        
+        bool operator!() const // Enables "if (!sp) ..."
+        { return GetImpl(*this) == 0; }
+
+        static inline T * GetPointer( const SmartPtr & sp )
+        { return GetImpl( sp ); }
+
+        // Ambiguity buster
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        bool operator==(const SmartPtr<T1, OP1, CP1, KP1, SP1, CNP1 >& rhs) const
+        { return GetImpl(*this) == GetImpl(rhs); }
+
+        // Ambiguity buster
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        bool operator!=(const SmartPtr<T1, OP1, CP1, KP1, SP1, CNP1 >& rhs) const
+        { return !(*this == rhs); }
+
+        // Ambiguity buster
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        bool operator<(const SmartPtr<T1, OP1, CP1, KP1, SP1, CNP1 >& rhs) const
+        { return GetImpl(*this) < GetImpl(rhs); }
+
+        // Ambiguity buster
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        inline bool operator > ( const SmartPtr< T1, OP1, CP1, KP1, SP1, CNP1 > & rhs )
+        {
+            return ( GetImpl( rhs ) < GetImpl( *this ) );
+        }
+
+        // Ambiguity buster
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        inline bool operator <= ( const SmartPtr< T1, OP1, CP1, KP1, SP1, CNP1 > & rhs )
+        {
+            return !( GetImpl( rhs ) < GetImpl( *this ) );
+        }
+
+        // Ambiguity buster
+        template
+        <
+            typename T1,
+            template <class> class OP1,
+            class CP1,
+            template <class> class KP1,
+            template <class> class SP1,
+            template <class> class CNP1
+        >
+        inline bool operator >= ( const SmartPtr< T1, OP1, CP1, KP1, SP1, CNP1 > & rhs )
+        {
+            return !( GetImpl( *this ) < GetImpl( rhs ) );
+        }
+
+    private:
+        // Helper for enabling 'if (sp)'
+        struct Tester
+        {
+            Tester(int) {}
+            void dummy() {}
+        };
+        
+        typedef void (Tester::*unspecified_boolean_type_)();
+
+        typedef typename Select<CP::allow, Tester, unspecified_boolean_type_>::Result
+            unspecified_boolean_type;
+
+    public:
+        // enable 'if (sp)'
+        operator unspecified_boolean_type() const
+        {
+            return !*this ? 0 : &Tester::dummy;
+        }
+
+    private:
+        // Helper for disallowing automatic conversion
+        struct Insipid
+        {
+            Insipid(PointerType) {}
+        };
+        
+        typedef typename Select<CP::allow, PointerType, Insipid>::Result
+            AutomaticConversionResult;
+    
+    public:        
+        operator AutomaticConversionResult() const
+        { return GetImpl(*this); }
+    };
+
+
+////////////////////////////////////////////////////////////////////////////////
+// friends
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef LOKI_ENABLE_FRIEND_TEMPLATE_TEMPLATE_PARAMETER_WORKAROUND
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP
+    >
+    inline void Release(SmartPtr<T, OP, CP, KP, SP, CNP>& sp,
+                        typename SP<T>::StoredType& p)
+    {
+      p = GetImplRef(sp);
+      GetImplRef(sp) = SP<T>::Default();
+    }
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP
+    >
+    inline void Reset(SmartPtr<T, OP, CP, KP, SP, CNP>& sp,
+                      typename SP<T>::StoredType p)
+    { SmartPtr<T, OP, CP, KP, SP, CNP>(p).Swap(sp); }
+
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+// free comparison operators for class template SmartPtr
+////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////////////////////////////////////////////
+///  operator== for lhs = SmartPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP1,
+        typename U
+    >
+    inline bool operator==(const SmartPtr<T, OP, CP, KP, SP, CNP1 >& lhs,
+        U* rhs)
+    { return GetImpl(lhs) == rhs; }
+
+////////////////////////////////////////////////////////////////////////////////
+///  operator== for lhs = raw pointer, rhs = SmartPtr
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP1,
+        typename U
+    >
+    inline bool operator==(U* lhs,
+        const SmartPtr<T, OP, CP, KP, SP, CNP1 >& rhs)
+    { return rhs == lhs; }
+
+////////////////////////////////////////////////////////////////////////////////
+///  operator!= for lhs = SmartPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP,
+        typename U
+    >
+    inline bool operator!=(const SmartPtr<T, OP, CP, KP, SP, CNP >& lhs,
+        U* rhs)
+    { return !(lhs == rhs); }
+    
+////////////////////////////////////////////////////////////////////////////////
+///  operator!= for lhs = raw pointer, rhs = SmartPtr
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP,
+        typename U
+    >
+    inline bool operator!=(U* lhs,
+        const SmartPtr<T, OP, CP, KP, SP, CNP >& rhs)
+    { return rhs != lhs; }
+
+////////////////////////////////////////////////////////////////////////////////
+///  operator< for lhs = SmartPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP,
+        typename U
+    >
+    inline bool operator<(const SmartPtr<T, OP, CP, KP, SP, CNP >& lhs,
+        U* rhs)
+    {
+        return ( GetImpl( lhs ) < rhs );
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+///  operator< for lhs = raw pointer, rhs = SmartPtr
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP,
+        typename U
+    >
+    inline bool operator<(U* lhs,
+        const SmartPtr<T, OP, CP, KP, SP, CNP >& rhs)
+    {
+        return ( GetImpl( rhs ) < lhs );
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+//  operator> for lhs = SmartPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP,
+        typename U
+    >
+    inline bool operator>(const SmartPtr<T, OP, CP, KP, SP, CNP >& lhs,
+        U* rhs)
+    { return rhs < lhs; }
+        
+////////////////////////////////////////////////////////////////////////////////
+///  operator> for lhs = raw pointer, rhs = SmartPtr
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP,
+        typename U
+    >
+    inline bool operator>(U* lhs,
+        const SmartPtr<T, OP, CP, KP, SP, CNP >& rhs)
+    { return rhs < lhs; }
+  
+////////////////////////////////////////////////////////////////////////////////
+///  operator<= for lhs = SmartPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP,
+        typename U
+    >
+    inline bool operator<=(const SmartPtr<T, OP, CP, KP, SP, CNP >& lhs,
+        U* rhs)
+    { return !(rhs < lhs); }
+        
+////////////////////////////////////////////////////////////////////////////////
+///  operator<= for lhs = raw pointer, rhs = SmartPtr
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP,
+        typename U
+    >
+    inline bool operator<=(U* lhs,
+        const SmartPtr<T, OP, CP, KP, SP, CNP >& rhs)
+    { return !(rhs < lhs); }
+
+////////////////////////////////////////////////////////////////////////////////
+///  operator>= for lhs = SmartPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP,
+        typename U
+    >
+    inline bool operator>=(const SmartPtr<T, OP, CP, KP, SP, CNP >& lhs,
+        U* rhs)
+    { return !(lhs < rhs); }
+        
+////////////////////////////////////////////////////////////////////////////////
+///  operator>= for lhs = raw pointer, rhs = SmartPtr
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP,
+        typename U
+    >
+    inline bool operator>=(U* lhs,
+        const SmartPtr<T, OP, CP, KP, SP, CNP >& rhs)
+    { return !(lhs < rhs); }
+
+} // namespace Loki
+
+////////////////////////////////////////////////////////////////////////////////
+///  specialization of std::less for SmartPtr
+///  \ingroup SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+namespace std
+{
+    template
+    <
+        typename T,
+        template <class> class OP,
+        class CP,
+        template <class> class KP,
+        template <class> class SP,
+        template <class> class CNP
+    >
+    struct less< Loki::SmartPtr<T, OP, CP, KP, SP, CNP > >
+        : public binary_function<Loki::SmartPtr<T, OP, CP, KP, SP, CNP >,
+            Loki::SmartPtr<T, OP, CP, KP, SP, CNP >, bool>
+    {
+        bool operator()(const Loki::SmartPtr<T, OP, CP, KP, SP, CNP >& lhs,
+            const Loki::SmartPtr<T, OP, CP, KP, SP, CNP >& rhs) const
+        { return less<T*>()(GetImpl(lhs), GetImpl(rhs)); }
+    };
+}
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/StrongPtr.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/StrongPtr.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/StrongPtr.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1680 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 Rich Sposato
+// The copyright on this file is protected under the terms of the MIT license.
+//
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_STRONG_PTR_INC_
+#define LOKI_STRONG_PTR_INC_
+
+// $Id: StrongPtr.h 807 2007-02-25 12:49:19Z syntheticpp $
+
+
+#include <loki/SmartPtr.h>
+#if defined (LOKI_OBJECT_LEVEL_THREADING) || defined (LOKI_CLASS_LEVEL_THREADING)
+    #include <loki/Threads.h>
+#endif
+
+
+////////////////////////////////////////////////////////////////////////////////
+///
+///  \par Terminology
+///   These terms are used within this file's comments.
+///   -# StrongPtr : Class used to implement both strong and weak pointers. The
+///      second template parameter determines if a StrongPtr is weak or strong.
+///   -# Strong pointer : A pointer that claims ownership of a shared object.
+///      When the last strong copointer dies, the object is destroyed even if
+///      there are weak copointers.
+///   -# Weak pointer : A pointer that does not own the shared object it points
+///       to.  It only destroys the shared object if there no strong copointers
+///       exist when it dies.
+///   -# Copointers : All the pointers that refer to the same shared object.
+///      The copointers must have the same ownership policy, but the other
+///      policies may be different.
+///   -# Pointee : The shared object.
+///
+///  \par OwnershipPolicy
+///   The ownership policy has the pointer to the actual object, and it also
+///   keeps track of the strong and weak copointers so that it can know if any
+///   strong copointers remain.  The plain pointer it maintains is stored as a
+///   void pointer, which allows the ownership policy classes to be monolithic
+///   classes instead of template classes.  As monolithic classes, they reduce
+///   amount of code-bloat.
+///
+///  \par Writing Your Own OwnershipPolicy
+///   If you write your own policy, you must implement these 12 functions:
+///   -# explicit YourPolicy( bool strong )
+///   -# YourPolicy( void * p, bool strong )
+///   -# YourPolicy( const YourPolicy & rhs, bool strong )
+///   -# bool Release( bool strong )
+///   -# void Increment( bool strong )
+///   -# bool Decrement( bool strong )
+///   -# bool HasStrongPointer( void ) const
+///   -# void Swap( YourPolicy & rhs )
+///   -# void SetPointer( void * p )
+///   -# void ZapPointer( void )
+///   -# void * GetPointer( void ) const
+///   -# void * & GetPointerRef( void ) const
+///   It is strongly recommended that all 12 of these functions be protected
+///   instead of public.  These two functions are optional for single-threaded
+///   policies, but required for multi-threaded policies:
+///   -# void Lock( void ) const
+///   -# void Unlock( void ) const
+///   This function is entirely optional:
+///   -# bool Merge( TwoRefLinks & rhs )
+///
+///  \par DeletePolicy
+///   The delete policy provides a mechanism to destroy an object and a default
+///   value for an uninitialized pointer.  You can override this policy with
+///   your own when using the Singleton, NullObject, or Prototype design
+///   patterns.
+///
+///  \par Writing Your Own DeletePolicy
+///   If you write your own policy, you must implement these 3 functions:
+///   -# void static Delete( const P * p )
+///   -# static P * Default( void )
+///   -# void Swap( YourResetPolicy & )
+///
+///  \par ResetPolicy
+///   A reset policy tells the ReleaseAll and ResetAll functions whether they
+///   should release or reset the StrongPtr copointers.  These functions do
+///   not affect just one StrongPtr, but all copointers.  That is unlike
+///   SmartPtr where the Release and Reset functions only affect 1 SmartPtr,
+///   and leave all copointers untouched.  A useful trick you can do with the
+///   ResetPolicy is to not allow reset when a strong pointer exists, and then
+///   use the NoCheck policy for all strong pointers.  The reset policy
+///   guarantees the strong pointers always have a valid pointee, so checking
+///   is not required; but weak pointers may still require checking.
+///
+///  \par Writing Your Own ResetPolicy
+///   If you write your own policy, you must implement these 2 functions:
+///   -# bool OnReleaseAll( bool ) const
+///   -# bool OnResetAll( bool ) const
+///   The bool parameter means that this was called with a strong pointer or
+///   one of its copointers is strong.  The return value means the pointer
+///   can be reset or released.
+///
+///  \defgroup  StrongPointerOwnershipGroup StrongPtr Ownership policies
+///  \ingroup   SmartPointerGroup
+///  \defgroup  StrongPointerDeleteGroup Delete policies
+///  \ingroup   SmartPointerGroup
+///  \defgroup  StrongPointerResetGroup Reset policies
+///  \ingroup   SmartPointerGroup
+////////////////////////////////////////////////////////////////////////////////
+
+
+namespace Loki
+{
+
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class DeleteUsingFree
+///
+///  \ingroup  StrongPointerDeleteGroup 
+///  Implementation of the DeletePolicy used by StrongPtr.  Uses explicit call
+///   to T's destructor followed by call to free.  This policy is useful for
+///   managing the lifetime of pointers to structs returned by C functions.
+////////////////////////////////////////////////////////////////////////////////
+
+template < class P >
+class DeleteUsingFree
+{
+public:
+    inline void static Delete( const P * p )
+    {
+        if ( 0 != p )
+        {
+            p->~P();
+            ::free( p );
+        }
+    }
+
+    /// Provides default value to initialize the pointer
+    inline static P * Default( void )
+    {
+        return 0;
+    }
+
+    inline void Swap( DeleteUsingFree & ) {}
+};
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class DeleteNothing
+///
+///  \ingroup  StrongPointerDeleteGroup 
+///  Implementation of the DeletePolicy used by StrongPtr.  This will never
+///   delete anything.  You can use this policy with pointers to an undefined
+///   type or a pure interface class with a protected destructor.
+////////////////////////////////////////////////////////////////////////////////
+
+template < class P >
+class DeleteNothing
+{
+public:
+    inline static void Delete( const P * )
+    {
+        // Do nothing at all!
+    }
+
+    inline static P * Default( void )
+    {
+        return 0;
+    }
+
+    inline void Swap( DeleteNothing & ) {}
+};
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class DeleteSingle
+///
+///  \ingroup  StrongPointerDeleteGroup 
+///  Implementation of the DeletePolicy used by StrongPtr.  This deletes just
+///   one shared object.  This is the default class for the DeletePolicy.
+////////////////////////////////////////////////////////////////////////////////
+
+template < class P >
+class DeleteSingle
+{
+public:
+    inline static void Delete( const P * p )
+    {
+        /** @note If you see an error message about a negative subscript, that
+         means your are attempting to use Loki to delete an incomplete type.
+         Please don't use this policy with incomplete types; you may want to
+         use DeleteNothing instead.
+         */
+        typedef char Type_Must_Be_Defined[ sizeof(P) ? 1 : -1 ];
+        delete p;
+    }
+
+    inline static P * Default( void )
+    {
+        return 0;
+    }
+
+    inline void Swap( DeleteSingle & ) {}
+};
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class DeleteArray
+///
+///  \ingroup  StrongPointerDeleteGroup 
+///  Implementation of the DeletePolicy used by StrongPtr.  This deletes an
+///   array of shared objects.
+////////////////////////////////////////////////////////////////////////////////
+
+template < class P >
+class DeleteArray
+{
+public:
+    inline static void Delete( const P * p )
+    {
+        /** @note If you see an error message about a negative subscript, that
+         means your are attempting to use Loki to delete an incomplete type.
+         Please don't use this policy with incomplete types; you may want to
+         use DeleteNothing instead.
+         */
+        typedef char Type_Must_Be_Defined[ sizeof(P) ? 1 : -1 ];
+        delete [] p;
+    }
+
+    inline static P * Default( void )
+    {
+        return 0;
+    }
+
+    inline void Swap( DeleteArray & ) {}
+};
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class CantResetWithStrong
+///
+///  \ingroup  StrongPointerResetGroup 
+///  Implementation of the ResetPolicy used by StrongPtr.  This is the default
+///   ResetPolicy for StrongPtr.  It forbids reset and release only if a strong
+///   copointer exists.
+////////////////////////////////////////////////////////////////////////////////
+
+template < class P >
+struct CantResetWithStrong
+{
+    inline bool OnReleaseAll( bool hasStrongPtr ) const
+    {
+        return ! hasStrongPtr;
+    }
+
+    inline bool OnResetAll( bool hasStrongPtr ) const
+    {
+        return ! hasStrongPtr;
+    }
+};
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class AllowReset
+///
+///  \ingroup  StrongPointerResetGroup 
+///  Implementation of the ResetPolicy used by StrongPtr.  It allows reset and
+///   release under any circumstance.
+////////////////////////////////////////////////////////////////////////////////
+
+template < class P >
+struct AllowReset
+{
+    inline bool OnReleaseAll( bool ) const
+    {
+        return true;
+    }
+    inline bool OnResetAll( bool ) const
+    {
+        return true;
+    }
+};
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class NeverReset
+///
+///  \ingroup  StrongPointerResetGroup 
+///  Implementation of the ResetPolicy used by StrongPtr.  It forbids reset and
+///   release under any circumstance.
+////////////////////////////////////////////////////////////////////////////////
+
+template < class P >
+struct NeverReset
+{
+    inline bool OnReleaseAll( bool ) const
+    {
+        return false;
+    }
+    inline bool OnResetAll( bool ) const
+    {
+        return false;
+    }
+};
+
+// ----------------------------------------------------------------------------
+
+namespace Private
+{
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class TwoRefCountInfo
+///
+///  \ingroup  StrongPointerOwnershipGroup
+///   Implementation detail for reference counting strong and weak pointers.
+///   It maintains a void pointer and 2 reference counts.  Since it is just a
+///   class for managing implementation details, it is not intended to be used
+///   directly - which is why it is in a private namespace.  Each instance is a
+///   shared resource for all copointers, and there should be only one of these
+///   for each set of copointers.  This class is small, trivial, and inline.
+////////////////////////////////////////////////////////////////////////////////
+
+class LOKI_EXPORT TwoRefCountInfo
+{
+public:
+
+    inline explicit TwoRefCountInfo( bool strong )
+        : m_pointer( 0 )
+        , m_strongCount( strong ? 1 : 0 )
+        , m_weakCount( strong ? 0 : 1 )
+    {
+    }
+
+    inline TwoRefCountInfo( void * p, bool strong )
+        : m_pointer( p )
+        , m_strongCount( strong ? 1 : 0 )
+        , m_weakCount( strong ? 0 : 1 )
+    {
+    }
+
+    inline ~TwoRefCountInfo( void )
+    {
+        assert( 0 == m_strongCount );
+        assert( 0 == m_weakCount );
+    }
+
+    inline bool HasStrongPointer( void ) const
+    {
+        return ( 0 < m_strongCount );
+    }
+
+    inline bool HasWeakPointer( void ) const
+    {
+        return ( 0 < m_weakCount );
+    }
+
+    inline void IncStrongCount( void )
+    {
+        ++m_strongCount;
+    }
+
+    inline void IncWeakCount( void )
+    {
+        ++m_weakCount;
+    }
+
+    inline void DecStrongCount( void )
+    {
+        assert( 0 < m_strongCount );
+        --m_strongCount;
+    }
+
+    inline void DecWeakCount( void )
+    {
+        assert( 0 < m_weakCount );
+        --m_weakCount;
+    }
+
+    inline void ZapPointer( void )
+    {
+        m_pointer = 0;
+    }
+
+    void SetPointer( void * p )
+    {
+        m_pointer = p;
+    }
+
+    inline void * GetPointer( void ) const
+    {
+        return m_pointer;
+    }
+
+    inline void * & GetPointerRef( void ) const
+    {
+        return const_cast< void * & >( m_pointer );
+    }
+
+private:
+    /// Copy-constructor not implemented.
+    TwoRefCountInfo( const TwoRefCountInfo & );
+    /// Copy-assignment operator not implemented.
+    TwoRefCountInfo & operator = ( const TwoRefCountInfo & );
+
+    void * m_pointer;
+    unsigned int m_strongCount;
+    unsigned int m_weakCount;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class LockableTwoRefCountInfo
+///
+///  \ingroup  StrongPointerOwnershipGroup
+///   Implementation detail for thread-safe reference counting for strong and
+///   weak pointers.  It uses TwoRefCountInfo to manage the pointer and counts.
+///   All this does is provide a thread safety mechanism.  Since it is just a
+///   class for managing implementation details, it is not intended to be used
+///   directly - which is why it is in a private namespace.  Each instance is a
+///   shared resource for all copointers, and there should be only one of these
+///   for each set of copointers.  This class is small, trivial, and inline.
+///
+///  \note This class is not designed for use with a single-threaded model.
+///   Tests using a single-threaded model will not run properly, but tests in a
+///   multi-threaded model with either class-level-locking or object-level-locking
+///   do run properly.
+////////////////////////////////////////////////////////////////////////////////
+
+#if defined (LOKI_OBJECT_LEVEL_THREADING) || defined (LOKI_CLASS_LEVEL_THREADING)
+
+class LOKI_EXPORT LockableTwoRefCountInfo
+    : private Loki::Private::TwoRefCountInfo
+{
+public:
+
+    inline explicit LockableTwoRefCountInfo( bool strong )
+        : TwoRefCountInfo( strong )
+        , m_Mutex()
+    {
+    }
+
+    LockableTwoRefCountInfo( void * p, bool strong )
+        : TwoRefCountInfo( p, strong )
+        , m_Mutex()
+    {
+    }
+
+    inline ~LockableTwoRefCountInfo( void )
+    {
+    }
+
+    inline void Lock( void ) const
+    {
+        m_Mutex.Lock();
+    }
+
+    inline void Unlock( void ) const
+    {
+        m_Mutex.Unlock();
+    }
+
+    inline bool HasStrongPointer( void ) const
+    {
+        m_Mutex.Lock();
+        const bool has = TwoRefCountInfo::HasStrongPointer();
+        m_Mutex.Unlock();
+        return has;
+    }
+
+    inline bool HasWeakPointer( void ) const
+    {
+        m_Mutex.Lock();
+        const bool has = TwoRefCountInfo::HasWeakPointer();
+        m_Mutex.Unlock();
+        return has;
+    }
+
+    inline void IncStrongCount( void )
+    {
+        m_Mutex.Lock();
+        TwoRefCountInfo::IncStrongCount();
+        m_Mutex.Unlock();
+    }
+
+    inline void IncWeakCount( void )
+    {
+        m_Mutex.Lock();
+        TwoRefCountInfo::IncWeakCount();
+        m_Mutex.Unlock();
+    }
+
+    inline void DecStrongCount( void )
+    {
+        m_Mutex.Lock();
+        TwoRefCountInfo::DecStrongCount();
+        m_Mutex.Unlock();
+    }
+
+    inline void DecWeakCount( void )
+    {
+        m_Mutex.Lock();
+        TwoRefCountInfo::DecWeakCount();
+        m_Mutex.Unlock();
+    }
+
+    inline void ZapPointer( void )
+    {
+        m_Mutex.Lock();
+        TwoRefCountInfo::ZapPointer();
+        m_Mutex.Unlock();
+    }
+
+    void SetPointer( void * p )
+    {
+        m_Mutex.Lock();
+        TwoRefCountInfo::SetPointer( p );
+        m_Mutex.Unlock();
+    }
+
+    inline void * GetPointer( void ) const
+    {
+        return TwoRefCountInfo::GetPointer();
+    }
+
+    inline void * & GetPointerRef( void ) const
+    {
+        return TwoRefCountInfo::GetPointerRef();
+    }
+
+private:
+    /// Default constructor is not available.
+    LockableTwoRefCountInfo( void );
+    /// Copy constructor is not available.
+    LockableTwoRefCountInfo( const LockableTwoRefCountInfo & );
+    /// Copy-assignment operator is not available.
+    LockableTwoRefCountInfo & operator = ( const LockableTwoRefCountInfo & );
+
+    mutable LOKI_DEFAULT_MUTEX m_Mutex;
+};
+
+#endif // if object-level-locking or class-level-locking
+
+} // end namespace Private
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class TwoRefCounts
+///
+///  \ingroup  StrongPointerOwnershipGroup
+///   This implementation of StrongPtr's OwnershipPolicy uses a pointer to a
+///   shared instance of TwoRefCountInfo.  This is the default policy for
+///   OwnershipPolicy.  Some functions are trivial enough to be inline, while
+///   others are implemented elsewhere.  It is not thread safe, and is intended
+///   for single-threaded environments.
+////////////////////////////////////////////////////////////////////////////////
+
+class LOKI_EXPORT TwoRefCounts
+{
+protected:
+
+    explicit TwoRefCounts( bool strong );
+
+    TwoRefCounts( const void * p, bool strong );
+
+    TwoRefCounts( const TwoRefCounts & rhs, bool strong ) :
+        m_counts( rhs.m_counts )
+    {
+        Increment( strong );
+    }
+
+    inline bool Release( bool strong )
+    {
+        return Decrement( strong );
+    }
+
+    void Increment( bool strong );
+
+    bool Decrement( bool strong );
+
+    bool HasStrongPointer( void ) const
+    {
+        return m_counts->HasStrongPointer();
+    }
+
+    void Swap( TwoRefCounts & rhs );
+
+    void SetPointer( void * p )
+    {
+        m_counts->SetPointer( p );
+    }
+
+    void ZapPointer( void );
+
+    inline void * & GetPointerRef( void ) const
+    {
+        return m_counts->GetPointerRef();
+    }
+
+    inline void * GetPointer( void ) const
+    {
+        return m_counts->GetPointer();
+    }
+
+private:
+    TwoRefCounts( void );
+    TwoRefCounts & operator = ( const TwoRefCounts & );
+
+    /// Pointer to all shared data.
+    Loki::Private::TwoRefCountInfo * m_counts;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class LockableTwoRefCounts
+///
+///  \ingroup  StrongPointerOwnershipGroup
+///   This implementation of StrongPtr's OwnershipPolicy uses a pointer to a
+///   shared instance of LockableTwoRefCountInfo.  It behaves very similarly to
+///   TwoRefCounts, except that it provides thread-safety.  Some functions are
+///   trivial enough to be inline, while others are implemented elsewhere.
+///
+///  \note This class is not designed for use with a single-threaded model.
+///   Tests using a single-threaded model will not run properly, but tests in a
+///   multi-threaded model with either class-level-locking or object-level-locking
+///   do run properly.
+////////////////////////////////////////////////////////////////////////////////
+
+#if defined (LOKI_OBJECT_LEVEL_THREADING) || defined (LOKI_CLASS_LEVEL_THREADING)
+
+class LOKI_EXPORT LockableTwoRefCounts
+{
+    typedef SmallValueObject< ::Loki::ClassLevelLockable > ThreadSafePointerAllocator;
+
+protected:
+
+    explicit LockableTwoRefCounts( bool strong )
+        : m_counts( NULL )
+    {
+        void * temp = ThreadSafePointerAllocator::operator new(
+            sizeof(Loki::Private::LockableTwoRefCountInfo) );
+#ifdef DO_EXTRA_LOKI_TESTS
+        assert( temp != 0 );
+#endif
+        m_counts = new ( temp ) Loki::Private::LockableTwoRefCountInfo( strong );
+    }
+
+    LockableTwoRefCounts( const void * p, bool strong )
+        : m_counts( NULL )
+    {
+        void * temp = ThreadSafePointerAllocator::operator new(
+            sizeof(Loki::Private::LockableTwoRefCountInfo) );
+#ifdef DO_EXTRA_LOKI_TESTS
+        assert( temp != 0 );
+#endif
+        void * p2 = const_cast< void * >( p );
+        m_counts = new ( temp )
+            Loki::Private::LockableTwoRefCountInfo( p2, strong );
+    }
+
+    LockableTwoRefCounts( const LockableTwoRefCounts & rhs, bool strong ) :
+        m_counts( rhs.m_counts )
+    {
+        Increment( strong );
+    }
+
+    inline void Lock( void ) const
+    {
+        m_counts->Lock();
+    }
+
+    inline void Unlock( void ) const
+    {
+        m_counts->Unlock();
+    }
+
+    inline bool Release( bool strong )
+    {
+        return Decrement( strong );
+    }
+
+    void Increment( bool strong )
+    {
+        if ( strong )
+        {
+            m_counts->IncStrongCount();
+        }
+        else
+        {
+            m_counts->IncWeakCount();
+        }
+    }
+
+    bool Decrement( bool strong )
+    {
+        if ( strong )
+        {
+            m_counts->DecStrongCount();
+        }
+        else
+        {
+            m_counts->DecWeakCount();
+        }
+        return !m_counts->HasStrongPointer();
+    }
+
+    bool HasStrongPointer( void ) const
+    {
+        return m_counts->HasStrongPointer();
+    }
+
+    void Swap( LockableTwoRefCounts & rhs )
+    {
+        std::swap( m_counts, rhs.m_counts );
+    }
+
+    void SetPointer( void * p )
+    {
+        m_counts->SetPointer( p );
+    }
+
+    void ZapPointer( void )
+    {
+#ifdef DO_EXTRA_LOKI_TESTS
+        assert( !m_counts->HasStrongPointer() );
+#endif
+        if ( m_counts->HasWeakPointer() )
+        {
+            m_counts->ZapPointer();
+        }
+        else
+        {
+            ThreadSafePointerAllocator::operator delete ( m_counts,
+                sizeof(Loki::Private::LockableTwoRefCountInfo) );
+            m_counts = NULL;
+        }
+    }
+
+    inline void * GetPointer( void ) const
+    {
+        return m_counts->GetPointer();
+    }
+
+    inline void * & GetPointerRef( void ) const
+    {
+        return m_counts->GetPointerRef();
+    }
+
+private:
+    LockableTwoRefCounts( void );
+    LockableTwoRefCounts & operator = ( const LockableTwoRefCounts & );
+
+    /// Pointer to all shared data.
+    Loki::Private::LockableTwoRefCountInfo * m_counts;
+};
+
+#endif // if object-level-locking or class-level-locking
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class TwoRefLinks
+///
+///  \ingroup  StrongPointerOwnershipGroup
+///   This implementation of StrongPtr's OwnershipPolicy uses a doubly-linked
+///   cycle of copointers to a shared object. Some functions are trivial enough
+///   to be inline, while others are implemented in elsewhere.  It is not thread
+///   safe, and is intended for single-threaded environments.
+////////////////////////////////////////////////////////////////////////////////
+
+class LOKI_EXPORT TwoRefLinks
+{
+protected:
+
+    inline explicit TwoRefLinks( bool strong )
+        : m_pointer( 0 )
+        , m_strong( strong )
+    {
+        m_prev = m_next = this;
+    }
+
+    TwoRefLinks( const void * p, bool strong );
+
+    TwoRefLinks( const TwoRefLinks & rhs, bool strong );
+
+    bool Release( bool strong );
+
+    void Swap( TwoRefLinks & rhs );
+
+    bool Merge( TwoRefLinks & rhs );
+
+    bool HasStrongPointer( void ) const;
+
+    inline void ZapPointer( void )
+    {
+        ZapAllNodes();
+    }
+
+    void SetPointer( void * p );
+
+    inline void * GetPointer( void ) const
+    {
+        return m_pointer;
+    }
+
+    inline void * & GetPointerRef( void ) const
+    {
+        return const_cast< void * & >( m_pointer );
+    }
+
+private:
+    static unsigned int CountPrevCycle( const TwoRefLinks * pThis );
+    static unsigned int CountNextCycle( const TwoRefLinks * pThis );
+
+    /// Not implemented.
+    TwoRefLinks( void );
+    /// Not implemented.
+    TwoRefLinks & operator = ( const TwoRefLinks & );
+
+    bool HasPrevNode( const TwoRefLinks * p ) const;
+    bool HasNextNode( const TwoRefLinks * p ) const;
+    bool AllNodesHaveSamePointer( void ) const;
+    void ZapAllNodes( void );
+
+    void * m_pointer;
+    mutable TwoRefLinks * m_prev;
+    mutable TwoRefLinks * m_next;
+    const bool m_strong;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+///  \class StrongPtr
+///
+///  \ingroup SmartPointerGroup 
+///
+///  \param Strong           default = true,
+///  \param OwnershipPolicy  default = TwoRefCounts,
+///  \param ConversionPolicy default = DisallowConversion,
+///  \param CheckingPolicy   default = AssertCheck,
+///  \param ResetPolicy      default = CantResetWithStrong,
+///  \param DeletePolicy     default = DeleteSingle
+///  \param ConstnessPolicy  default = LOKI_DEFAULT_CONSTNESS
+////////////////////////////////////////////////////////////////////////////////
+
+template
+<
+    typename T,
+    bool Strong = true,
+    class OwnershipPolicy = Loki::TwoRefCounts,
+    class ConversionPolicy = Loki::DisallowConversion,
+    template < class > class CheckingPolicy = Loki::AssertCheck,
+    template < class > class ResetPolicy = Loki::CantResetWithStrong,
+    template < class > class DeletePolicy = Loki::DeleteSingle,
+    template < class > class ConstnessPolicy = LOKI_DEFAULT_CONSTNESS
+>
+class StrongPtr
+    : public OwnershipPolicy
+    , public ConversionPolicy
+    , public CheckingPolicy< T * >
+    , public ResetPolicy< T >
+    , public DeletePolicy< T >
+{
+    typedef ConversionPolicy CP;
+    typedef CheckingPolicy< T * > KP;
+    typedef ResetPolicy< T > RP;
+    typedef DeletePolicy< T > DP;
+
+public:
+
+    typedef OwnershipPolicy OP;
+
+    typedef T * StoredType;    // the type of the pointer
+    typedef T * PointerType;   // type returned by operator->
+    typedef T & ReferenceType; // type returned by operator*
+
+    typedef typename ConstnessPolicy< T >::Type * ConstPointerType;
+    typedef typename ConstnessPolicy< T >::Type & ConstReferenceType;
+
+private:
+    struct NeverMatched {};
+
+#ifdef LOKI_SMARTPTR_CONVERSION_CONSTRUCTOR_POLICY
+    typedef typename Select< CP::allow, const StoredType&, NeverMatched>::Result ImplicitArg;
+    typedef typename Select<!CP::allow, const StoredType&, NeverMatched>::Result ExplicitArg;
+#else
+    typedef const StoredType& ImplicitArg;
+    typedef typename Select<false, const StoredType&, NeverMatched>::Result ExplicitArg;
+#endif
+
+public:
+
+    StrongPtr( void ) : OP( Strong )
+    {
+        KP::OnDefault( GetPointer() );
+    }
+
+    explicit StrongPtr( ExplicitArg p ) : OP( p, Strong )
+    {
+        KP::OnInit( GetPointer() );
+    }
+
+    StrongPtr( ImplicitArg p ) : OP( p, Strong )
+    {
+        KP::OnInit( GetPointer() );
+    }
+
+    StrongPtr( const StrongPtr & rhs )
+        : OP( rhs, Strong ), CP( rhs ), KP( rhs ), DP( rhs )
+    {
+    }
+
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    StrongPtr(
+        const StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & rhs )
+        : OP( rhs, Strong )
+    {
+    }
+
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    StrongPtr(
+        StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & rhs )
+        : OP( rhs, Strong )
+    {
+    }
+
+    StrongPtr( RefToValue< StrongPtr > rhs )
+        : OP( rhs, Strong ), KP( rhs ), CP( rhs ), DP( rhs )
+    {
+    }
+
+    operator RefToValue< StrongPtr >( void )
+    {
+        return RefToValue< StrongPtr >( *this );
+    }
+
+    StrongPtr & operator = ( const StrongPtr & rhs )
+    {
+        if ( GetPointer() != rhs.GetPointer() )
+        {
+            StrongPtr temp( rhs );
+            temp.Swap( *this );
+        }
+        return *this;
+    }
+
+    StrongPtr & operator = ( T * p )
+    {
+        if ( GetPointer() != p )
+        {
+            StrongPtr temp( p );
+            Swap( temp );
+        }
+        return *this;
+    }
+
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    StrongPtr & operator = (
+        const StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & rhs )
+    {
+        if ( !rhs.Equals( GetPointer() ) )
+        {
+            StrongPtr temp( rhs );
+            temp.Swap( *this );
+        }
+        return *this;
+    }
+
+    bool IsStrong( void ) const
+    {
+        return Strong;
+    }
+
+    void Swap( StrongPtr & rhs )
+    {
+        OP::Swap( rhs );
+        CP::Swap( rhs );
+        KP::Swap( rhs );
+        DP::Swap( rhs );
+    }
+
+    ~StrongPtr()
+    {
+        if ( OP::Release( Strong ) )
+        {
+            // Must zap the pointer before deleteing the object. Otherwise a
+            // cycle of weak pointers will lead to recursion, which leads to
+            // to deleting the shared object multiple times, which leads to
+            // undefined behavior.  Therefore, this must get pointer before
+            // zapping it, and then delete the temp pointer.
+            T * p = GetPointer();
+            if ( p != 0 )
+            {
+                OP::ZapPointer();
+                DP::Delete( p );
+            }
+        }
+    }
+
+#ifdef LOKI_ENABLE_FRIEND_TEMPLATE_TEMPLATE_PARAMETER_WORKAROUND
+
+    // old non standard in class definition of friends
+    friend bool ReleaseAll( StrongPtr & sp,
+        typename StrongPtr::StoredType & p )
+    {
+        if ( !sp.RP::OnReleaseAll( sp.IsStrong() || sp.OP::HasStrongPointer() ) )
+        {
+            return false;
+        }
+        p = sp.GetPointer();
+        sp.OP::SetPointer( sp.DP::Default() );
+        return true;
+    }
+
+    friend bool ResetAll( StrongPtr & sp,
+        typename StrongPtr::StoredType p )
+    {
+        if ( sp.OP::GetPointer() == p )
+        {
+            return true;
+        }
+        if ( !sp.RP::OnResetAll( sp.IsStrong() || sp.OP::HasStrongPointer() ) )
+        {
+            return false;
+        }
+        sp.DP::Delete( sp.GetPointer() );
+        sp.OP::SetPointer( p );
+        return true;
+    }
+
+#else
+  
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    friend bool ReleaseAll( StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & sp,
+        typename StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 >::StoredType & p );
+ 
+
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    friend bool ResetAll( StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & sp,
+        typename StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 >::StoredType p );
+
+#endif
+
+
+    /** Merges ownership of two StrongPtr's that point to same shared object
+      but are not copointers.  Requires Merge function in OwnershipPolicy.
+      \return True for success, false if not pointer to same object.
+     */
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    bool Merge( StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & rhs )
+    {
+        if ( OP::GetPointer() != rhs.OP::GetPointer() )
+        {
+            return false;
+        }
+        return OP::Merge( rhs );
+    }
+
+    /** Locks StrongPtr so other threads can't affect pointer.  Requires the
+     OwnershipPolicy to have Lock function.
+     */
+    void Lock( void )
+    {
+        OP::Lock();
+    }
+
+    /** Unlocks StrongPtr so other threads can affect pointer.  Requires the
+     OwnershipPolicy to have Unlock function.
+     */
+    void Unlock( void )
+    {
+        OP::Unlock();
+    }
+
+    PointerType operator -> ()
+    {
+        KP::OnDereference( GetPointer() );
+        return GetPointer();
+    }
+
+    ConstPointerType operator -> () const
+    {
+        KP::OnDereference( GetPointer() );
+        return GetPointer();
+    }
+
+    ReferenceType operator * ()
+    {
+        KP::OnDereference( GetPointer() );
+        return * GetPointer();
+    }
+
+    ConstReferenceType operator * () const
+    {
+        KP::OnDereference( GetPointer() );
+        return * GetPointer();
+    }
+
+    /// Helper function which can be called to avoid exposing GetPointer function.
+    template < class T1 >
+    bool Equals( const T1 * p ) const
+    {
+        return ( GetPointer() == p );
+    }
+
+    /// Helper function which can be called to avoid exposing GetPointer function.
+    template < class T1 >
+    bool LessThan( const T1 * p ) const
+    {
+        return ( GetPointer() < p );
+    }
+
+    /// Helper function which can be called to avoid exposing GetPointer function.
+    template < class T1 >
+    bool GreaterThan( const T1 * p ) const
+    {
+        return ( GetPointer() > p );
+    }
+
+    /// Equality comparison operator is templated to handle ambiguity.
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    bool operator == (
+        const StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & rhs ) const
+    {
+        return ( rhs.Equals( GetPointer() ) );
+    }
+
+    /// Inequality comparison operator is templated to handle ambiguity.
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    bool operator != (
+        const StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & rhs ) const
+    {
+        return !( rhs.Equals( GetPointer() ) );
+    }
+
+    /// Less-than comparison operator is templated to handle ambiguity.
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    bool operator < (
+        const StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & rhs ) const
+    {
+        return ( rhs.GreaterThan( GetPointer() ) );
+    }
+
+    /// Greater-than comparison operator is templated to handle ambiguity.
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    inline bool operator > (
+        const StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & rhs ) const
+    {
+        return ( rhs.LessThan( GetPointer() ) );
+    }
+
+    /// Less-than-or-equal-to operator is templated to handle ambiguity.
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    inline bool operator <= (
+        const StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & rhs ) const
+    {
+        return !( rhs.LessThan( GetPointer() ) );
+    }
+
+    /// Greater-than-or-equal-to operator is templated to handle ambiguity.
+    template
+    <
+        typename T1,
+        bool S1,
+        class OP1,
+        class CP1,
+        template < class > class KP1,
+        template < class > class RP1,
+        template < class > class DP1,
+        template < class > class CNP1
+    >
+    inline bool operator >= (
+        const StrongPtr< T1, S1, OP1, CP1, KP1, RP1, DP1, CNP1 > & rhs ) const
+    {
+        return !( rhs.GreaterThan( GetPointer() ) );
+    }
+
+    inline bool operator ! () const // Enables "if ( !sp ) ..."
+    {
+        return ( 0 == OP::GetPointer() );
+    }
+
+protected:
+
+    inline PointerType GetPointer( void )
+    {
+        return reinterpret_cast< PointerType >( OP::GetPointer() );
+    }
+
+    inline ConstPointerType GetPointer( void ) const
+    {
+        return reinterpret_cast< ConstPointerType >( OP::GetPointer() );
+    }
+
+private:
+
+    inline ReferenceType GetPointerRef( void )
+    {
+        return reinterpret_cast< ReferenceType >( OP::GetPointerRef() );
+    }
+
+    inline ConstReferenceType GetPointerRef( void ) const
+    {
+        return reinterpret_cast< ConstReferenceType >( OP::GetPointerRef() );
+    }
+
+    // Helper for enabling 'if (sp)'
+    struct Tester
+    {
+        Tester(int) {}
+        void dummy() {}
+    };
+    
+    typedef void (Tester::*unspecified_boolean_type_)();
+
+    typedef typename Select< CP::allow, Tester, unspecified_boolean_type_ >::Result
+        unspecified_boolean_type;
+
+public:
+    // enable 'if (sp)'
+    operator unspecified_boolean_type() const
+    {
+        return !*this ? 0 : &Tester::dummy;
+    }
+
+private:
+    // Helper for disallowing automatic conversion
+    struct Insipid
+    {
+        Insipid(PointerType) {}
+    };
+    
+    typedef typename Select< CP::allow, PointerType, Insipid >::Result
+        AutomaticConversionResult;
+
+public:        
+    operator AutomaticConversionResult() const
+    {
+        return GetPointer();
+    }
+
+};
+
+// ----------------------------------------------------------------------------
+
+// friend functions
+
+#ifndef LOKI_ENABLE_FRIEND_TEMPLATE_TEMPLATE_PARAMETER_WORKAROUND
+
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+bool ReleaseAll( StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & sp,
+                 typename StrongPtr< T, S, OP, CP, KP, RP, DP, CNP >::StoredType & p )
+{
+  if ( !sp.RP<T>::OnReleaseAll( sp.IsStrong() || sp.OP::HasStrongPointer() ) )
+  {
+    return false;
+  }
+  p = sp.GetPointer();
+  sp.OP::SetPointer( sp.DP<T>::Default() );
+  return true;
+}
+
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+bool ResetAll( StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & sp,
+               typename StrongPtr< T, S, OP, CP, KP, RP, DP, CNP >::StoredType p )
+{
+  if ( sp.OP::GetPointer() == p )
+  {
+    return true;
+  }
+  if ( !sp.RP<T>::OnResetAll( sp.IsStrong() || sp.OP::HasStrongPointer() ) )
+  {
+    return false;
+  }
+  sp.DP<T>::Delete( sp.GetPointer() );
+  sp.OP::SetPointer( p );
+  return true;
+}
+#endif
+
+
+// free comparison operators for class template StrongPtr
+
+///  operator== for lhs = StrongPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator == (
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & lhs, U * rhs )
+{
+    return ( lhs.Equals( rhs ) );
+}
+
+///  operator== for lhs = raw pointer, rhs = StrongPtr
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator == ( U * lhs,
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & rhs )
+{
+    return ( rhs.Equals( lhs ) );
+}
+
+///  operator!= for lhs = StrongPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator != (
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & lhs, U * rhs )
+{
+    return !( lhs.Equals( rhs ) );
+}
+
+///  operator!= for lhs = raw pointer, rhs = StrongPtr
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator != ( U * lhs,
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & rhs )
+{
+    return !( rhs.Equals( lhs ) );
+}
+
+///  operator< for lhs = StrongPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator < (
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & lhs, U * rhs )
+{
+    return ( lhs.LessThan( rhs ) );
+}
+
+///  operator< for lhs = raw pointer, rhs = StrongPtr
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator < ( U * lhs,
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & rhs )
+{
+    return ( rhs.GreaterThan( lhs ) );
+}
+
+//  operator> for lhs = StrongPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator > (
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & lhs, U * rhs )
+{
+    return ( lhs.GreaterThan( rhs ) );
+}
+
+///  operator> for lhs = raw pointer, rhs = StrongPtr
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator > ( U * lhs,
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & rhs )
+{
+    return ( rhs.LessThan( lhs ) );
+}
+
+///  operator<= for lhs = StrongPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator <= (
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & lhs, U * rhs )
+{
+    return !( lhs.GreaterThan( rhs ) );
+}
+
+///  operator<= for lhs = raw pointer, rhs = StrongPtr
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator <= ( U * lhs,
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & rhs )
+{
+    return !( rhs.LessThan( lhs ) );
+}
+
+///  operator>= for lhs = StrongPtr, rhs = raw pointer
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator >= (
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & lhs, U * rhs )
+{
+    return !( lhs.LessThan( rhs ) );
+}
+
+///  operator>= for lhs = raw pointer, rhs = StrongPtr
+///  \ingroup SmartPointerGroup
+template
+<
+    typename U,
+    typename T,
+    bool S,
+    class OP,
+    class CP,
+    template < class > class KP,
+    template < class > class RP,
+    template < class > class DP,
+    template < class > class CNP
+>
+inline bool operator >= ( U * lhs,
+    const StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & rhs )
+{
+    return !( rhs.GreaterThan( lhs ) );
+}
+
+} // namespace Loki
+
+namespace std
+{
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  specialization of std::less for StrongPtr
+    ///  \ingroup SmartPointerGroup
+    ////////////////////////////////////////////////////////////////////////////////
+    template
+    <
+        typename T,
+        bool S,
+        class OP,
+        class CP,
+        template < class > class KP,
+        template < class > class RP,
+        template < class > class DP,
+        template < class > class CNP
+    >
+    struct less< Loki::StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > >
+        : public binary_function<
+            Loki::StrongPtr< T, S, OP, CP, KP, RP, DP, CNP >,
+            Loki::StrongPtr< T, S, OP, CP, KP, RP, DP, CNP >, bool >
+    {
+        bool operator () (
+            const Loki::StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & lhs,
+            const Loki::StrongPtr< T, S, OP, CP, KP, RP, DP, CNP > & rhs ) const
+        {
+            return ( lhs < rhs );
+        }
+    };
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Threads.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Threads.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Threads.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,407 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_THREADS_INC_
+#define LOKI_THREADS_INC_
+
+// $Id: Threads.h 749 2006-10-17 19:49:26Z syntheticpp $
+
+
+///  @defgroup  ThreadingGroup Threading
+///  Policies to for the threading model:
+///
+///  - SingleThreaded
+///  - ObjectLevelLockable
+///  - ClassLevelLockable
+///
+///  All classes in Loki have configurable threading model.
+///
+///  The macro LOKI_DEFAULT_THREADING selects the default 
+///  threading model for certain components of Loki 
+///  (it affects only default template arguments)
+///  
+///  \par Usage:
+/// 
+///  To use a specific threading model define
+///
+///  - nothing, single-theading is default
+///  - LOKI_OBJECT_LEVEL_THREADING for object-level-threading
+///  - LOKI_CLASS_LEVEL_THREADING for class-level-threading
+///
+///  \par Supported platfroms:
+///
+///  - Windows (windows.h)
+///  - POSIX (pthread.h):
+///    No recursive mutex support with pthread. 
+///    This means: calling Lock() on a Loki::Mutex twice from the 
+///    same thread before unlocking the mutex deadlocks the system. 
+///    To avoid this redesign your synchronization. See also:
+///    http://sourceforge.net/tracker/index.php?func=detail&aid=1516182&group_id=29557&atid=396647
+
+
+#include <cassert>
+
+#if defined(LOKI_CLASS_LEVEL_THREADING) || defined(LOKI_OBJECT_LEVEL_THREADING)
+
+    #define LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL ::Loki::ClassLevelLockable
+    
+    #if defined(LOKI_CLASS_LEVEL_THREADING) && !defined(LOKI_OBJECT_LEVEL_THREADING)
+        #define LOKI_DEFAULT_THREADING ::Loki::ClassLevelLockable
+    #else
+        #define LOKI_DEFAULT_THREADING ::Loki::ObjectLevelLockable
+    #endif
+     
+    #if defined(_WIN32) || defined(_WIN64)
+        #include <windows.h> 
+        #define LOKI_WINDOWS_H
+    #else
+        #include <pthread.h>
+        #define LOKI_PTHREAD_H
+    #endif
+    
+#else
+
+    #define LOKI_DEFAULT_THREADING ::Loki::SingleThreaded
+    #define LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL ::Loki::SingleThreaded
+    
+#endif
+    
+#ifndef LOKI_DEFAULT_MUTEX
+#define LOKI_DEFAULT_MUTEX ::Loki::Mutex
+#endif
+
+#ifdef LOKI_WINDOWS_H
+
+#define LOKI_THREADS_MUTEX(x)           CRITICAL_SECTION (x);
+#define LOKI_THREADS_MUTEX_INIT(x)      ::InitializeCriticalSection (x)
+#define LOKI_THREADS_MUTEX_DELETE(x)    ::DeleteCriticalSection (x)
+#define LOKI_THREADS_MUTEX_LOCK(x)      ::EnterCriticalSection (x)
+#define LOKI_THREADS_MUTEX_UNLOCK(x)    ::LeaveCriticalSection (x)
+#define LOKI_THREADS_LONG               LONG
+
+#define LOKI_THREADS_ATOMIC_FUNCTIONS                                   \
+        static IntType AtomicIncrement(volatile IntType& lval)          \
+        { return InterlockedIncrement(&const_cast<IntType&>(lval)); }   \
+                                                                        \
+        static IntType AtomicDecrement(volatile IntType& lval)          \
+        { return InterlockedDecrement(&const_cast<IntType&>(lval)); }   \
+                                                                        \
+        static void AtomicAssign(volatile IntType& lval, IntType val)   \
+        { InterlockedExchange(&const_cast<IntType&>(lval), val); }      \
+                                                                        \
+        static void AtomicAssign(IntType& lval, volatile IntType& val)  \
+        { InterlockedExchange(&lval, val); }
+
+
+
+#elif defined(LOKI_PTHREAD_H)
+
+
+#define LOKI_THREADS_MUTEX(x)           pthread_mutex_t (x);
+
+// no recursive mutex support
+#define LOKI_THREADS_MUTEX_INIT(x)      ::pthread_mutex_init(x, 0)
+
+#define LOKI_THREADS_MUTEX_DELETE(x)    ::pthread_mutex_destroy (x)
+#define LOKI_THREADS_MUTEX_LOCK(x)      ::pthread_mutex_lock (x)
+#define LOKI_THREADS_MUTEX_UNLOCK(x)    ::pthread_mutex_unlock (x)
+#define LOKI_THREADS_LONG               long
+
+#define LOKI_THREADS_ATOMIC(x)                                           \
+                pthread_mutex_lock(&atomic_mutex_);                      \
+                x;                                                       \
+                pthread_mutex_unlock(&atomic_mutex_)    
+                
+#define LOKI_THREADS_ATOMIC_FUNCTIONS                                    \
+        private:                                                         \
+            static pthread_mutex_t atomic_mutex_;                        \
+        public:                                                          \
+        static IntType AtomicIncrement(volatile IntType& lval)           \
+        { LOKI_THREADS_ATOMIC( lval++ ); return lval; }                  \
+                                                                         \
+        static IntType AtomicDecrement(volatile IntType& lval)           \
+        { LOKI_THREADS_ATOMIC(lval-- ); return lval; }                   \
+                                                                         \
+        static void AtomicAssign(volatile IntType& lval, IntType val)    \
+        { LOKI_THREADS_ATOMIC( lval = val ); }                           \
+                                                                         \
+        static void AtomicAssign(IntType& lval, volatile IntType& val)   \
+        { LOKI_THREADS_ATOMIC( lval = val ); }            
+
+#else // single threaded
+
+#define LOKI_THREADS_MUTEX(x)
+#define LOKI_THREADS_MUTEX_INIT(x)      
+#define LOKI_THREADS_MUTEX_DELETE(x)       
+#define LOKI_THREADS_MUTEX_LOCK(x)         
+#define LOKI_THREADS_MUTEX_UNLOCK(x)       
+#define LOKI_THREADS_LONG               
+
+#endif
+
+
+
+namespace Loki
+{
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \class Mutex
+    //
+    ///  \ingroup ThreadingGroup
+    ///  A simple and portable Mutex.  A default policy class for locking objects.
+    ////////////////////////////////////////////////////////////////////////////////
+
+    class Mutex
+    {
+    public:
+        Mutex()
+        {
+            LOKI_THREADS_MUTEX_INIT(&mtx_);
+        }
+        ~Mutex()
+        {
+            LOKI_THREADS_MUTEX_DELETE(&mtx_);
+        }
+        void Lock()
+        {
+            LOKI_THREADS_MUTEX_LOCK(&mtx_);
+        }
+        void Unlock()
+        {
+            LOKI_THREADS_MUTEX_UNLOCK(&mtx_);
+        }
+    private:
+        /// Copy-constructor not implemented.
+        Mutex(const Mutex &);
+        /// Copy-assignement operator not implemented.
+        Mutex & operator = (const Mutex &);
+        LOKI_THREADS_MUTEX(mtx_)
+    };
+
+
+     ////////////////////////////////////////////////////////////////////////////////
+    ///  \class SingleThreaded
+    ///
+    ///  \ingroup ThreadingGroup
+    ///  Implementation of the ThreadingModel policy used by various classes
+    ///  Implements a single-threaded model; no synchronization
+    ////////////////////////////////////////////////////////////////////////////////
+    template <class Host, class MutexPolicy = LOKI_DEFAULT_MUTEX>
+    class SingleThreaded
+    {
+    public:
+        /// \struct Lock
+        /// Dummy Lock class
+        struct Lock
+        {
+            Lock() {}
+            explicit Lock(const SingleThreaded&) {}
+            explicit Lock(const SingleThreaded*) {}
+        };
+        
+        typedef Host VolatileType;
+
+        typedef int IntType; 
+
+        static IntType AtomicAdd(volatile IntType& lval, IntType val)
+        { return lval += val; }
+        
+        static IntType AtomicSubtract(volatile IntType& lval, IntType val)
+        { return lval -= val; }
+
+        static IntType AtomicMultiply(volatile IntType& lval, IntType val)
+        { return lval *= val; }
+        
+        static IntType AtomicDivide(volatile IntType& lval, IntType val)
+        { return lval /= val; }
+        
+        static IntType AtomicIncrement(volatile IntType& lval)
+        { return ++lval; }
+        
+        static IntType AtomicDecrement(volatile IntType& lval)
+        { return --lval; }
+        
+        static void AtomicAssign(volatile IntType & lval, IntType val)
+        { lval = val; }
+        
+        static void AtomicAssign(IntType & lval, volatile IntType & val)
+        { lval = val; }
+    };
+    
+
+#if defined(LOKI_WINDOWS_H) || defined(LOKI_PTHREAD_H) 
+
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \class ObjectLevelLockable
+    ///
+    ///  \ingroup ThreadingGroup
+    ///  Implementation of the ThreadingModel policy used by various classes
+    ///  Implements a object-level locking scheme
+    ////////////////////////////////////////////////////////////////////////////////
+    template < class Host, class MutexPolicy = LOKI_DEFAULT_MUTEX >
+    class ObjectLevelLockable
+    {
+        mutable MutexPolicy mtx_;
+
+    public:
+        ObjectLevelLockable() : mtx_() {}
+
+        ObjectLevelLockable(const ObjectLevelLockable&) : mtx_() {}
+
+        ~ObjectLevelLockable() {}
+
+        class Lock;
+        friend class Lock;
+        
+        ///  \struct Lock
+        ///  Lock class to lock on object level
+        class Lock
+        { 
+        public:
+            
+            /// Lock object
+            explicit Lock(const ObjectLevelLockable& host) : host_(host)
+            {
+                host_.mtx_.Lock();
+            }
+
+            /// Lock object
+            explicit Lock(const ObjectLevelLockable* host) : host_(*host)
+            {
+                host_.mtx_.Lock();
+            }
+
+            /// Unlock object
+            ~Lock()
+            {
+                host_.mtx_.Unlock();
+            }
+
+        private:
+            /// private by design of the object level threading
+            Lock();
+            Lock(const Lock&);
+            Lock& operator=(const Lock&);
+            const ObjectLevelLockable& host_;
+        };
+
+        typedef volatile Host VolatileType;
+
+        typedef LOKI_THREADS_LONG IntType; 
+        
+        LOKI_THREADS_ATOMIC_FUNCTIONS   
+        
+    };
+
+#ifdef LOKI_PTHREAD_H
+    template <class Host, class MutexPolicy>
+    pthread_mutex_t ObjectLevelLockable<Host, MutexPolicy>::atomic_mutex_ = PTHREAD_MUTEX_INITIALIZER;
+#endif
+    
+    ////////////////////////////////////////////////////////////////////////////////
+    ///  \class ClassLevelLockable
+    ///
+    ///  \ingroup ThreadingGroup
+    ///  Implementation of the ThreadingModel policy used by various classes
+    ///  Implements a class-level locking scheme
+    ////////////////////////////////////////////////////////////////////////////////
+    template <class Host, class MutexPolicy = LOKI_DEFAULT_MUTEX >
+    class ClassLevelLockable
+    {
+        struct Initializer
+        {   
+            bool init_;
+            MutexPolicy mtx_;
+
+            Initializer() : init_(false), mtx_()
+            {
+                init_ = true;
+            }
+
+            ~Initializer()
+            {
+                assert(init_);
+            }
+        };
+
+        static Initializer initializer_;
+
+    public:
+
+        class Lock;
+        friend class Lock;
+
+        ///  \struct Lock
+        ///  Lock class to lock on class level
+        class Lock
+        {    
+        public:
+
+            /// Lock class
+            Lock()
+            {
+                assert(initializer_.init_);
+                initializer_.mtx_.Lock();
+            }
+
+            /// Lock class
+            explicit Lock(const ClassLevelLockable&)
+            {
+                assert(initializer_.init_);
+                initializer_.mtx_.Lock();
+            }
+
+            /// Lock class
+            explicit Lock(const ClassLevelLockable*)
+            {
+                assert(initializer_.init_);
+                initializer_.mtx_.Lock();
+            }
+
+            /// Unlock class
+            ~Lock()
+            {
+                assert(initializer_.init_);
+                initializer_.mtx_.Unlock();
+            }
+
+        private:
+            Lock(const Lock&);
+            Lock& operator=(const Lock&);
+        };
+
+        typedef volatile Host VolatileType;
+
+        typedef LOKI_THREADS_LONG IntType; 
+
+        LOKI_THREADS_ATOMIC_FUNCTIONS
+        
+    };
+
+#ifdef LOKI_PTHREAD_H 
+    template <class Host, class MutexPolicy>
+    pthread_mutex_t ClassLevelLockable<Host, MutexPolicy>::atomic_mutex_ = PTHREAD_MUTEX_INITIALIZER;
+#endif
+
+    template < class Host, class MutexPolicy >
+    typename ClassLevelLockable< Host, MutexPolicy >::Initializer 
+    ClassLevelLockable< Host, MutexPolicy >::initializer_;
+
+#endif // #if defined(LOKI_WINDOWS_H) || defined(LOKI_PTHREAD_H) 
+  
+} // namespace Loki
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Tuple.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Tuple.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Tuple.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+// Last update: June 20, 2001
+
+////////////////////////////////////////////////////////////////////////////////
+// This file is intentionally left empty
+// Due to compiler limitations, its contents has been moved to
+//     HierarchyGenerators.h 
+////////////////////////////////////////////////////////////////////////////////

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypeManip.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypeManip.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypeManip.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,284 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Welsey Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_TYPEMANIP_INC_
+#define LOKI_TYPEMANIP_INC_
+
+// $Id: TypeManip.h 749 2006-10-17 19:49:26Z syntheticpp $
+
+
+namespace Loki
+{
+////////////////////////////////////////////////////////////////////////////////
+// class template Int2Type
+// Converts each integral constant into a unique type
+// Invocation: Int2Type<v> where v is a compile-time constant integral
+// Defines 'value', an enum that evaluates to v
+////////////////////////////////////////////////////////////////////////////////
+
+    template <int v>
+    struct Int2Type
+    {
+        enum { value = v };
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+// class template Type2Type
+// Converts each type into a unique, insipid type
+// Invocation Type2Type<T> where T is a type
+// Defines the type OriginalType which maps back to T
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename T>
+    struct Type2Type
+    {
+        typedef T OriginalType;
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+// class template Select
+// Selects one of two types based upon a boolean constant
+// Invocation: Select<flag, T, U>::Result
+// where:
+// flag is a compile-time boolean constant
+// T and U are types
+// Result evaluates to T if flag is true, and to U otherwise.
+////////////////////////////////////////////////////////////////////////////////
+
+    template <bool flag, typename T, typename U>
+    struct Select
+    {
+        typedef T Result;
+    };
+    template <typename T, typename U>
+    struct Select<false, T, U>
+    {
+        typedef U Result;
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+// class template IsSameType
+// Return true iff two given types are the same
+// Invocation: SameType<T, U>::value
+// where:
+// T and U are types
+// Result evaluates to true iff U == T (types equal)
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename T, typename U>
+    struct IsSameType
+    {
+        enum { value = false };
+    };
+    
+    template <typename T>
+    struct IsSameType<T,T>
+    {
+        enum { value = true };
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// Helper types Small and Big - guarantee that sizeof(Small) < sizeof(Big)
+////////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+        template <class T, class U>
+        struct ConversionHelper
+        {
+            typedef char Small;
+            struct Big { char dummy[2]; };
+            static Big   Test(...);
+            static Small Test(U);
+            static T MakeT();
+        };
+    }
+
+////////////////////////////////////////////////////////////////////////////////
+// class template Conversion
+// Figures out the conversion relationships between two types
+// Invocations (T and U are types):
+// a) Conversion<T, U>::exists
+// returns (at compile time) true if there is an implicit conversion from T
+// to U (example: Derived to Base)
+// b) Conversion<T, U>::exists2Way
+// returns (at compile time) true if there are both conversions from T
+// to U and from U to T (example: int to char and back)
+// c) Conversion<T, U>::sameType
+// returns (at compile time) true if T and U represent the same type
+//
+// Caveat: might not work if T and U are in a private inheritance hierarchy.
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class T, class U>
+    struct Conversion
+    {
+        typedef Private::ConversionHelper<T, U> H;
+#ifndef __MWERKS__
+        enum { exists = sizeof(typename H::Small) == sizeof((H::Test(H::MakeT()))) };
+#else
+        enum { exists = false };
+#endif
+        enum { exists2Way = exists && Conversion<U, T>::exists };
+        enum { sameType = false };
+    };
+    
+    template <class T>
+    struct Conversion<T, T>    
+    {
+        enum { exists = 1, exists2Way = 1, sameType = 1 };
+    };
+    
+    template <class T>
+    struct Conversion<void, T>    
+    {
+        enum { exists = 0, exists2Way = 0, sameType = 0 };
+    };
+    
+    template <class T>
+    struct Conversion<T, void>    
+    {
+        enum { exists = 0, exists2Way = 0, sameType = 0 };
+    };
+    
+    template <>
+    struct Conversion<void, void>    
+    {
+    public:
+        enum { exists = 1, exists2Way = 1, sameType = 1 };
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template SuperSubclass
+// Invocation: SuperSubclass<B, D>::value where B and D are types. 
+// Returns true if B is a public base of D, or if B and D are aliases of the 
+// same type.
+//
+// Caveat: might not work if T and U are in a private inheritance hierarchy.
+////////////////////////////////////////////////////////////////////////////////
+
+template <class T, class U>
+struct SuperSubclass
+{
+    enum { value = (::Loki::Conversion<const volatile U*, const volatile T*>::exists &&
+                  !::Loki::Conversion<const volatile T*, const volatile void*>::sameType) };
+      
+    // Dummy enum to make sure that both classes are fully defined.
+    enum{ dontUseWithIncompleteTypes = ( sizeof (T) == sizeof (U) ) };
+};
+
+template <>
+struct SuperSubclass<void, void> 
+{
+    enum { value = false };
+};
+
+template <class U>
+struct SuperSubclass<void, U> 
+{
+    enum { value = (::Loki::Conversion<const volatile U*, const volatile void*>::exists &&
+                  !::Loki::Conversion<const volatile void*, const volatile void*>::sameType) };
+      
+    // Dummy enum to make sure that both classes are fully defined.
+    enum{ dontUseWithIncompleteTypes = ( 0 == sizeof (U) ) };
+};
+
+template <class T>
+struct SuperSubclass<T, void> 
+{
+    enum { value = (::Loki::Conversion<const volatile void*, const volatile T*>::exists &&
+                  !::Loki::Conversion<const volatile T*, const volatile void*>::sameType) };
+      
+    // Dummy enum to make sure that both classes are fully defined.
+    enum{ dontUseWithIncompleteTypes = ( sizeof (T) == 0 ) };
+};
+
+////////////////////////////////////////////////////////////////////////////////
+// class template SuperSubclassStrict
+// Invocation: SuperSubclassStrict<B, D>::value where B and D are types. 
+// Returns true if B is a public base of D.
+//
+// Caveat: might not work if T and U are in a private inheritance hierarchy.
+////////////////////////////////////////////////////////////////////////////////
+
+template<class T,class U>
+struct SuperSubclassStrict
+{
+    enum { value = (::Loki::Conversion<const volatile U*, const volatile T*>::exists &&
+                 !::Loki::Conversion<const volatile T*, const volatile void*>::sameType &&
+                 !::Loki::Conversion<const volatile T*, const volatile U*>::sameType) };
+    
+    // Dummy enum to make sure that both classes are fully defined.
+    enum{ dontUseWithIncompleteTypes = ( sizeof (T) == sizeof (U) ) };
+};
+
+template<>
+struct SuperSubclassStrict<void, void> 
+{
+    enum { value = false };
+};
+
+template<class U>
+struct SuperSubclassStrict<void, U> 
+{
+    enum { value = (::Loki::Conversion<const volatile U*, const volatile void*>::exists &&
+                 !::Loki::Conversion<const volatile void*, const volatile void*>::sameType &&
+                 !::Loki::Conversion<const volatile void*, const volatile U*>::sameType) };
+    
+    // Dummy enum to make sure that both classes are fully defined.
+    enum{ dontUseWithIncompleteTypes = ( 0 == sizeof (U) ) };
+};
+
+template<class T>
+struct SuperSubclassStrict<T, void> 
+{
+    enum { value = (::Loki::Conversion<const volatile void*, const volatile T*>::exists &&
+                 !::Loki::Conversion<const volatile T*, const volatile void*>::sameType &&
+                 !::Loki::Conversion<const volatile T*, const volatile void*>::sameType) };
+    
+    // Dummy enum to make sure that both classes are fully defined.
+    enum{ dontUseWithIncompleteTypes = ( sizeof (T) == 0 ) };
+};
+
+
+}   // namespace Loki
+
+////////////////////////////////////////////////////////////////////////////////
+// macro SUPERSUBCLASS
+// Invocation: SUPERSUBCLASS(B, D) where B and D are types. 
+// Returns true if B is a public base of D, or if B and D are aliases of the 
+// same type.
+//
+// Caveat: might not work if T and U are in a private inheritance hierarchy.
+// Deprecated: Use SuperSubclass class template instead.
+////////////////////////////////////////////////////////////////////////////////
+
+#define LOKI_SUPERSUBCLASS(T, U) \
+    ::Loki::SuperSubclass<T,U>::value
+
+////////////////////////////////////////////////////////////////////////////////
+// macro SUPERSUBCLASS_STRICT
+// Invocation: SUPERSUBCLASS(B, D) where B and D are types. 
+// Returns true if B is a public base of D.
+//
+// Caveat: might not work if T and U are in a private inheritance hierarchy.
+// Deprecated: Use SuperSubclassStrict class template instead.
+////////////////////////////////////////////////////////////////////////////////
+
+#define LOKI_SUPERSUBCLASS_STRICT(T, U) \
+    ::Loki::SuperSubclassStrict<T,U>::value
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypeTraits.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypeTraits.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypeTraits.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,2228 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_TYPETRAITS_INC_
+#define LOKI_TYPETRAITS_INC_
+
+// $Id: TypeTraits.h 749 2006-10-17 19:49:26Z syntheticpp $
+
+
+#include "Typelist.h"
+#include "Sequence.h"
+
+#if (defined _MSC_VER) && (_MSC_VER < 1400)
+#include <string>
+#endif
+
+
+#ifdef _MSC_VER
+#pragma warning( push ) 
+#pragma warning( disable : 4180 ) //qualifier applied to function type has no meaning; ignored
+#endif
+
+namespace Loki
+{
+////////////////////////////////////////////////////////////////////////////////
+// class template IsCustomUnsignedInt
+// Offers a means to integrate nonstandard built-in unsigned integral types
+// (such as unsigned __int64 or unsigned long long int) with the TypeTraits 
+//     class template defined below.
+// Invocation: IsCustomUnsignedInt<T> where T is any type
+// Defines 'value', an enum that is 1 iff T is a custom built-in unsigned
+//     integral type
+// Specialize this class template for nonstandard unsigned integral types
+//     and define value = 1 in those specializations
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename T>
+    struct IsCustomUnsignedInt
+    {
+        enum { value = 0 };
+    };        
+
+////////////////////////////////////////////////////////////////////////////////
+// class template IsCustomSignedInt
+// Offers a means to integrate nonstandard built-in unsigned integral types
+// (such as unsigned __int64 or unsigned long long int) with the TypeTraits 
+//     class template defined below.
+// Invocation: IsCustomSignedInt<T> where T is any type
+// Defines 'value', an enum that is 1 iff T is a custom built-in signed
+//     integral type
+// Specialize this class template for nonstandard unsigned integral types
+//     and define value = 1 in those specializations
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename T>
+    struct IsCustomSignedInt
+    {
+        enum { value = 0 };
+    };        
+
+////////////////////////////////////////////////////////////////////////////////
+// class template IsCustomFloat
+// Offers a means to integrate nonstandard floating point types with the
+//     TypeTraits class template defined below.
+// Invocation: IsCustomFloat<T> where T is any type
+// Defines 'value', an enum that is 1 iff T is a custom built-in
+//     floating point type
+// Specialize this class template for nonstandard unsigned integral types
+//     and define value = 1 in those specializations
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename T>
+    struct IsCustomFloat
+    {
+        enum { value = 0 };
+    };        
+
+////////////////////////////////////////////////////////////////////////////////
+// Helper types for class template TypeTraits defined below
+////////////////////////////////////////////////////////////////////////////////
+
+    namespace Private
+    {
+#ifndef LOKI_DISABLE_TYPELIST_MACROS    
+        typedef LOKI_TYPELIST_4(unsigned char, unsigned short int,unsigned int, unsigned long int) 
+            StdUnsignedInts;
+        typedef LOKI_TYPELIST_4(signed char, short int,int, long int) 
+            StdSignedInts;
+        typedef LOKI_TYPELIST_3(bool, char, wchar_t) 
+            StdOtherInts;
+        typedef LOKI_TYPELIST_3(float, double, long double) 
+            StdFloats;
+#else
+        typedef Loki::Seq<unsigned char, unsigned short int,unsigned int, unsigned long int>::Type
+            StdUnsignedInts;
+        typedef Loki::Seq<signed char, short int,int, long int>::Type
+            StdSignedInts;
+        typedef Loki::Seq<bool, char, wchar_t>::Type
+            StdOtherInts;
+        typedef Loki::Seq<float, double, long double>::Type
+            StdFloats;
+
+#endif            
+        template <typename U> struct AddPointer
+        {
+            typedef U* Result;
+        };
+
+        template <typename U> struct AddPointer<U&>
+        {
+            typedef U* Result;
+        };
+
+        template <class U> struct AddReference
+        {
+            typedef U & Result;
+        };
+
+        template <class U> struct AddReference<U &>
+        {
+            typedef U & Result;
+        };
+
+        template <> struct AddReference<void>
+        {
+            typedef NullType Result;
+        };
+
+        template <class U> struct AddParameterType
+        {
+            typedef const U & Result;
+        };
+
+        template <class U> struct AddParameterType<U &>
+        {
+            typedef U & Result;
+        };
+
+        template <> struct AddParameterType<void>
+        {
+            typedef NullType Result;
+        };
+    
+        template <typename T>
+        struct IsFunctionPointerRaw
+        {enum{result = 0};};
+
+        template <typename T>
+        struct IsFunctionPointerRaw<T(*)()> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01>
+        struct IsFunctionPointerRaw<T(*)(P01)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, P15)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19, typename P20>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, P20)> 
+        {enum {result = 1};};
+
+        template <typename T>
+        struct IsFunctionPointerRaw<T(*)(
+            ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, P15,
+            ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19, typename P20>
+        struct IsFunctionPointerRaw<T(*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, P20,
+            ...)> 
+        {enum {result = 1};};
+        
+        
+        template <typename T>
+        struct IsMemberFunctionPointerRaw
+        {enum{result = 0};};
+
+        template <typename T, typename S>
+        struct IsMemberFunctionPointerRaw<T (S::*)()> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01>
+        struct IsMemberFunctionPointerRaw<T (S::*)(P01)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, P15)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19, typename P20>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, P20)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, P15,
+            ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, ...)> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19, typename P20>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, P20,
+            ...)> 
+        {enum {result = 1};};
+
+        // Const versions
+
+        template <typename T, typename S>
+        struct IsMemberFunctionPointerRaw<T (S::*)() const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01>
+        struct IsMemberFunctionPointerRaw<T (S::*)(P01) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, P15) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19, typename P20>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, P20) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, P15,
+            ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, ...) const> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19, typename P20>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, P20,
+            ...) const> 
+        {enum {result = 1};};
+
+        // Volatile versions
+
+        template <typename T, typename S>
+        struct IsMemberFunctionPointerRaw<T (S::*)() volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01>
+        struct IsMemberFunctionPointerRaw<T (S::*)(P01) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, P15) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19, typename P20>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, P20) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, P15,
+            ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, ...) volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19, typename P20>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, P20,
+            ...) volatile> 
+        {enum {result = 1};};
+
+        // Const volatile versions
+
+        template <typename T, typename S>
+        struct IsMemberFunctionPointerRaw<T (S::*)() const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01>
+        struct IsMemberFunctionPointerRaw<T (S::*)(P01) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, P15) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19, typename P20>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, P20) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05,
+            P06, P07, P08, P09, P10,
+            P11, P12, P13, P14, P15,
+            ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, ...) const volatile> 
+        {enum {result = 1};};
+
+        template <typename T, typename S, 
+            typename P01, typename P02, typename P03, typename P04, typename P05,
+            typename P06, typename P07, typename P08, typename P09, typename P10,
+            typename P11, typename P12, typename P13, typename P14, typename P15,
+            typename P16, typename P17, typename P18, typename P19, typename P20>
+        struct IsMemberFunctionPointerRaw<T (S::*)(
+            P01, P02, P03, P04, P05, 
+            P06, P07, P08, P09, P10, 
+            P11, P12, P13, P14, P15,
+            P16, P17, P18, P19, P20,
+            ...) const volatile> 
+        {enum {result = 1};};
+               
+      }// namespace Private
+        
+////////////////////////////////////////////////////////////////////////////////
+// class template TypeTraits
+//
+// Figures out at compile time various properties of any given type
+// Invocations (T is a type, TypeTraits<T>::Propertie):
+//
+// - isPointer       : returns true if T is a pointer type
+// - PointeeType     : returns the type to which T points if T is a pointer 
+//                     type, NullType otherwise
+// - isReference     : returns true if T is a reference type
+// - ReferredType    : returns the type to which T refers if T is a reference 
+//                     type, NullType otherwise
+// - isMemberPointer : returns true if T is a pointer to member type
+// - isStdUnsignedInt: returns true if T is a standard unsigned integral type
+// - isStdSignedInt  : returns true if T is a standard signed integral type
+// - isStdIntegral   : returns true if T is a standard integral type
+// - isStdFloat      : returns true if T is a standard floating-point type
+// - isStdArith      : returns true if T is a standard arithmetic type
+// - isStdFundamental: returns true if T is a standard fundamental type
+// - isUnsignedInt   : returns true if T is a unsigned integral type
+// - isSignedInt     : returns true if T is a signed integral type
+// - isIntegral      : returns true if T is a integral type
+// - isFloat         : returns true if T is a floating-point type
+// - isArith         : returns true if T is a arithmetic type
+// - isFundamental   : returns true if T is a fundamental type
+// - ParameterType   : returns the optimal type to be used as a parameter for 
+//                     functions that take Ts
+// - isConst         : returns true if T is a const-qualified type
+// - NonConstType    : Type with removed 'const' qualifier from T, if any
+// - isVolatile      : returns true if T is a volatile-qualified type
+// - NonVolatileType : Type with removed 'volatile' qualifier from T, if any
+// - UnqualifiedType : Type with removed 'const' and 'volatile' qualifiers from 
+//                     T, if any
+// - ConstParameterType: returns the optimal type to be used as a parameter 
+//                       for functions that take 'const T's
+//
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename T>
+    class TypeTraits
+    {
+    private:
+    
+        template <class U> struct ReferenceTraits
+        {
+            enum { result = false };
+            typedef U ReferredType;
+        };
+        
+        template <class U> struct ReferenceTraits<U&>
+        {
+            enum { result = true };
+            typedef U ReferredType;
+        };
+               
+        template <class U> struct PointerTraits
+        {
+            enum { result = false };
+            typedef NullType PointeeType;
+        };
+        
+        template <class U> struct PointerTraits<U*>
+        {
+            enum { result = true };
+            typedef U PointeeType;
+        };
+        
+        template <class U> struct PointerTraits<U*&>
+        {
+            enum { result = true };
+            typedef U PointeeType;
+        };
+          
+        template <class U> struct PToMTraits
+        {
+            enum { result = false };
+        };
+        
+        template <class U, class V> struct PToMTraits<U V::*>
+        {
+            enum { result = true };
+        };
+        
+        template <class U, class V> struct PToMTraits<U V::*&>
+        {
+            enum { result = true };
+        };
+        
+        template <class U> struct FunctionPointerTraits
+        {
+            enum{ result = Private::IsFunctionPointerRaw<U>::result };
+        };
+        
+        template <typename U> struct PToMFunctionTraits
+        {
+            enum{ result = Private::IsMemberFunctionPointerRaw<U>::result };
+        };
+         
+        template <class U> struct UnConst
+        {
+            typedef U Result;
+            enum { isConst = 0 };
+        };
+        
+        template <class U> struct UnConst<const U>
+        {
+            typedef U Result;
+            enum { isConst = 1 };
+        };
+
+        template <class U> struct UnConst<const U&>
+        {
+            typedef U& Result;
+            enum { isConst = 1 };
+        };
+  
+        template <class U> struct UnVolatile
+        {
+            typedef U Result;
+            enum { isVolatile = 0 };
+        };
+       
+        template <class U> struct UnVolatile<volatile U>
+        {
+            typedef U Result;
+            enum { isVolatile = 1 };
+        };
+
+        template <class U> struct UnVolatile<volatile U&>
+        {
+            typedef U& Result;
+            enum { isVolatile = 1 };
+        };
+        
+    public:
+        typedef typename UnConst<T>::Result 
+            NonConstType;
+        typedef typename UnVolatile<T>::Result 
+            NonVolatileType;
+        typedef typename UnVolatile<typename UnConst<T>::Result>::Result 
+            UnqualifiedType;
+        typedef typename PointerTraits<UnqualifiedType>::PointeeType 
+            PointeeType;
+        typedef typename ReferenceTraits<T>::ReferredType 
+            ReferredType;
+
+        enum { isConst          = UnConst<T>::isConst };
+        enum { isVolatile       = UnVolatile<T>::isVolatile };
+        enum { isReference      = ReferenceTraits<UnqualifiedType>::result };
+        enum { isFunction       = FunctionPointerTraits<typename Private::AddPointer<T>::Result >::result };
+        enum { isFunctionPointer= FunctionPointerTraits<
+                                        typename ReferenceTraits<UnqualifiedType>::ReferredType >::result };
+        enum { isMemberFunctionPointer= PToMFunctionTraits<
+                                        typename ReferenceTraits<UnqualifiedType>::ReferredType >::result };
+        enum { isMemberPointer  = PToMTraits<
+                                        typename ReferenceTraits<UnqualifiedType>::ReferredType >::result ||
+                                        isMemberFunctionPointer };
+        enum { isPointer        = PointerTraits<
+                                        typename ReferenceTraits<UnqualifiedType>::ReferredType >::result ||
+                                        isFunctionPointer };
+        
+        enum { isStdUnsignedInt = TL::IndexOf<Private::StdUnsignedInts, UnqualifiedType>::value >= 0 ||
+                                  TL::IndexOf<Private::StdUnsignedInts, 
+                                        typename ReferenceTraits<UnqualifiedType>::ReferredType>::value >= 0};
+        enum { isStdSignedInt   = TL::IndexOf<Private::StdSignedInts, UnqualifiedType>::value >= 0 ||
+                                  TL::IndexOf<Private::StdSignedInts, 
+                                        typename ReferenceTraits<UnqualifiedType>::ReferredType>::value >= 0};
+        enum { isStdIntegral    = isStdUnsignedInt || isStdSignedInt ||
+                                  TL::IndexOf<Private::StdOtherInts, UnqualifiedType>::value >= 0 ||
+                                  TL::IndexOf<Private::StdOtherInts, 
+                                        typename ReferenceTraits<UnqualifiedType>::ReferredType>::value >= 0};
+        enum { isStdFloat       = TL::IndexOf<Private::StdFloats, UnqualifiedType>::value >= 0 ||
+                                  TL::IndexOf<Private::StdFloats, 
+                                        typename ReferenceTraits<UnqualifiedType>::ReferredType>::value >= 0};
+        enum { isStdArith       = isStdIntegral || isStdFloat };
+        enum { isStdFundamental = isStdArith || isStdFloat || Conversion<T, void>::sameType };
+            
+        enum { isUnsignedInt    = isStdUnsignedInt || IsCustomUnsignedInt<UnqualifiedType>::value };
+        enum { isSignedInt      = isStdSignedInt || IsCustomSignedInt<UnqualifiedType>::value };
+        enum { isIntegral       = isStdIntegral || isUnsignedInt || isSignedInt };
+        enum { isFloat          = isStdFloat || IsCustomFloat<UnqualifiedType>::value };
+        enum { isArith          = isIntegral || isFloat };
+        enum { isFundamental    = isStdFundamental || isArith };
+        
+        typedef typename Select<isStdArith || isPointer || isMemberPointer, T, 
+                typename Private::AddParameterType<T>::Result>::Result 
+            ParameterType;
+    };
+}
+
+#ifdef _MSC_VER
+#pragma warning( pop )
+#endif // _MSC_VER
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Typelist.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Typelist.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Typelist.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,459 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Welsey Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_TYPELIST_INC_
+#define LOKI_TYPELIST_INC_
+
+// $Id: Typelist.h 749 2006-10-17 19:49:26Z syntheticpp $
+
+
+#include "NullType.h"
+#include "TypeManip.h"
+#include "TypelistMacros.h"
+
+
+namespace Loki
+{
+////////////////////////////////////////////////////////////////////////////////
+// class template Typelist
+// The building block of typelists of any length
+// Use it through the LOKI_TYPELIST_NN macros
+// Defines nested types:
+//     Head (first element, a non-typelist type by convention)
+//     Tail (second element, can be another typelist)
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class T, class U>
+    struct Typelist
+    {
+       typedef T Head;
+       typedef U Tail;
+    };
+
+// Typelist utility algorithms
+
+    namespace TL
+    {
+
+////////////////////////////////////////////////////////////////////////////////
+// class template MakeTypelist
+// Takes a number of arguments equal to its numeric suffix
+// The arguments are type names.
+// MakeTypelist<T1, T2, ...>::Result
+// returns a typelist that is of T1, T2, ...
+////////////////////////////////////////////////////////////////////////////////
+
+        template
+        <
+            typename T1  = NullType, typename T2  = NullType, typename T3  = NullType,
+            typename T4  = NullType, typename T5  = NullType, typename T6  = NullType,
+            typename T7  = NullType, typename T8  = NullType, typename T9  = NullType,
+            typename T10 = NullType, typename T11 = NullType, typename T12 = NullType,
+            typename T13 = NullType, typename T14 = NullType, typename T15 = NullType,
+            typename T16 = NullType, typename T17 = NullType, typename T18 = NullType
+        > 
+        struct MakeTypelist
+        {
+        private:
+            typedef typename MakeTypelist
+            <
+                T2 , T3 , T4 , 
+                T5 , T6 , T7 , 
+                T8 , T9 , T10, 
+                T11, T12, T13,
+                T14, T15, T16, 
+                T17, T18
+            >
+            ::Result TailResult;
+
+        public:
+            typedef Typelist<T1, TailResult> Result;
+        };
+
+        template<>
+        struct MakeTypelist<>
+        {
+            typedef NullType Result;
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template Length
+// Computes the length of a typelist
+// Invocation (TList is a typelist):
+// Length<TList>::value
+// returns a compile-time constant containing the length of TList, not counting
+//     the end terminator (which by convention is NullType)
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList> struct Length;
+        template <> struct Length<NullType>
+        {
+            enum { value = 0 };
+        };
+        
+        template <class T, class U>
+        struct Length< Typelist<T, U> >
+        {
+            enum { value = 1 + Length<U>::value };
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template TypeAt
+// Finds the type at a given index in a typelist
+// Invocation (TList is a typelist and index is a compile-time integral 
+//     constant):
+// TypeAt<TList, index>::Result
+// returns the type in position 'index' in TList
+// If you pass an out-of-bounds index, the result is a compile-time error
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList, unsigned int index> struct TypeAt;
+        
+        template <class Head, class Tail>
+        struct TypeAt<Typelist<Head, Tail>, 0>
+        {
+            typedef Head Result;
+        };
+
+        template <class Head, class Tail, unsigned int i>
+        struct TypeAt<Typelist<Head, Tail>, i>
+        {
+            typedef typename TypeAt<Tail, i - 1>::Result Result;
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template TypeAtNonStrict
+// Finds the type at a given index in a typelist
+// Invocations (TList is a typelist and index is a compile-time integral 
+//     constant):
+// a) TypeAt<TList, index>::Result
+// returns the type in position 'index' in TList, or NullType if index is 
+//     out-of-bounds
+// b) TypeAt<TList, index, D>::Result
+// returns the type in position 'index' in TList, or D if index is out-of-bounds
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList, unsigned int index,
+            typename DefaultType = NullType>
+        struct TypeAtNonStrict
+        {
+            typedef DefaultType Result;
+        };
+        
+        template <class Head, class Tail, typename DefaultType>
+        struct TypeAtNonStrict<Typelist<Head, Tail>, 0, DefaultType>
+        {
+            typedef Head Result;
+        };
+        
+        template <class Head, class Tail, unsigned int i, typename DefaultType>
+        struct TypeAtNonStrict<Typelist<Head, Tail>, i, DefaultType>
+        {
+            typedef typename 
+                TypeAtNonStrict<Tail, i - 1, DefaultType>::Result Result;
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template IndexOf
+// Finds the index of a type in a typelist
+// Invocation (TList is a typelist and T is a type):
+// IndexOf<TList, T>::value
+// returns the position of T in TList, or NullType if T is not found in TList
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList, class T> struct IndexOf;
+        
+        template <class T>
+        struct IndexOf<NullType, T>
+        {
+            enum { value = -1 };
+        };
+        
+        template <class T, class Tail>
+        struct IndexOf<Typelist<T, Tail>, T>
+        {
+            enum { value = 0 };
+        };
+        
+        template <class Head, class Tail, class T>
+        struct IndexOf<Typelist<Head, Tail>, T>
+        {
+        private:
+            enum { temp = IndexOf<Tail, T>::value };
+        public:
+            enum { value = (temp == -1 ? -1 : 1 + temp) };
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template Append
+// Appends a type or a typelist to another
+// Invocation (TList is a typelist and T is either a type or a typelist):
+// Append<TList, T>::Result
+// returns a typelist that is TList followed by T and NullType-terminated
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList, class T> struct Append;
+        
+        template <> struct Append<NullType, NullType>
+        {
+            typedef NullType Result;
+        };
+        
+        template <class T> struct Append<NullType, T>
+        {
+            typedef Typelist<T,NullType> Result;
+        };
+
+        template <class Head, class Tail>
+        struct Append<NullType, Typelist<Head, Tail> >
+        {
+            typedef Typelist<Head, Tail> Result;
+        };
+        
+        template <class Head, class Tail, class T>
+        struct Append<Typelist<Head, Tail>, T>
+        {
+            typedef Typelist<Head, 
+                    typename Append<Tail, T>::Result>
+                Result;
+        };
+        
+////////////////////////////////////////////////////////////////////////////////
+// class template Erase
+// Erases the first occurence, if any, of a type in a typelist
+// Invocation (TList is a typelist and T is a type):
+// Erase<TList, T>::Result
+// returns a typelist that is TList without the first occurence of T
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList, class T> struct Erase;
+        
+        template <class T>                         // Specialization 1
+        struct Erase<NullType, T>
+        {
+            typedef NullType Result;
+        };
+
+        template <class T, class Tail>             // Specialization 2
+        struct Erase<Typelist<T, Tail>, T>
+        {
+            typedef Tail Result;
+        };
+
+        template <class Head, class Tail, class T> // Specialization 3
+        struct Erase<Typelist<Head, Tail>, T>
+        {
+            typedef Typelist<Head, 
+                    typename Erase<Tail, T>::Result>
+                Result;
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template EraseAll
+// Erases all first occurences, if any, of a type in a typelist
+// Invocation (TList is a typelist and T is a type):
+// EraseAll<TList, T>::Result
+// returns a typelist that is TList without any occurence of T
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList, class T> struct EraseAll;
+        template <class T>
+        struct EraseAll<NullType, T>
+        {
+            typedef NullType Result;
+        };
+        template <class T, class Tail>
+        struct EraseAll<Typelist<T, Tail>, T>
+        {
+            // Go all the way down the list removing the type
+            typedef typename EraseAll<Tail, T>::Result Result;
+        };
+        template <class Head, class Tail, class T>
+        struct EraseAll<Typelist<Head, Tail>, T>
+        {
+            // Go all the way down the list removing the type
+            typedef Typelist<Head, 
+                    typename EraseAll<Tail, T>::Result>
+                Result;
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template NoDuplicates
+// Removes all duplicate types in a typelist
+// Invocation (TList is a typelist):
+// NoDuplicates<TList, T>::Result
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList> struct NoDuplicates;
+        
+        template <> struct NoDuplicates<NullType>
+        {
+            typedef NullType Result;
+        };
+
+        template <class Head, class Tail>
+        struct NoDuplicates< Typelist<Head, Tail> >
+        {
+        private:
+            typedef typename NoDuplicates<Tail>::Result L1;
+            typedef typename Erase<L1, Head>::Result L2;
+        public:
+            typedef Typelist<Head, L2> Result;
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template Replace
+// Replaces the first occurence of a type in a typelist, with another type
+// Invocation (TList is a typelist, T, U are types):
+// Replace<TList, T, U>::Result
+// returns a typelist in which the first occurence of T is replaced with U
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList, class T, class U> struct Replace;
+        
+        template <class T, class U>
+        struct Replace<NullType, T, U>
+        {
+            typedef NullType Result;
+        };
+
+        template <class T, class Tail, class U>
+        struct Replace<Typelist<T, Tail>, T, U>
+        {
+            typedef Typelist<U, Tail> Result;
+        };
+
+        template <class Head, class Tail, class T, class U>
+        struct Replace<Typelist<Head, Tail>, T, U>
+        {
+            typedef Typelist<Head,
+                    typename Replace<Tail, T, U>::Result>
+                Result;
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template ReplaceAll
+// Replaces all occurences of a type in a typelist, with another type
+// Invocation (TList is a typelist, T, U are types):
+// Replace<TList, T, U>::Result
+// returns a typelist in which all occurences of T is replaced with U
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList, class T, class U> struct ReplaceAll;
+        
+        template <class T, class U>
+        struct ReplaceAll<NullType, T, U>
+        {
+            typedef NullType Result;
+        };
+        
+        template <class T, class Tail, class U>
+        struct ReplaceAll<Typelist<T, Tail>, T, U>
+        {
+            typedef Typelist<U, typename ReplaceAll<Tail, T, U>::Result> Result;
+        };
+        
+        template <class Head, class Tail, class T, class U>
+        struct ReplaceAll<Typelist<Head, Tail>, T, U>
+        {
+            typedef Typelist<Head,
+                    typename ReplaceAll<Tail, T, U>::Result>
+                Result;
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template Reverse
+// Reverses a typelist
+// Invocation (TList is a typelist):
+// Reverse<TList>::Result
+// returns a typelist that is TList reversed
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList> struct Reverse;
+        
+        template <>
+        struct Reverse<NullType>
+        {
+            typedef NullType Result;
+        };
+        
+        template <class Head, class Tail>
+        struct Reverse< Typelist<Head, Tail> >
+        {
+            typedef typename Append<
+                typename Reverse<Tail>::Result, Head>::Result Result;
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template MostDerived
+// Finds the type in a typelist that is the most derived from a given type
+// Invocation (TList is a typelist, T is a type):
+// MostDerived<TList, T>::Result
+// returns the type in TList that's the most derived from T
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList, class T> struct MostDerived;
+        
+        template <class T>
+        struct MostDerived<NullType, T>
+        {
+            typedef T Result;
+        };
+        
+        template <class Head, class Tail, class T>
+        struct MostDerived<Typelist<Head, Tail>, T>
+        {
+        private:
+            typedef typename MostDerived<Tail, T>::Result Candidate;
+        public:
+            typedef typename Select<
+                SuperSubclass<Candidate,Head>::value,
+                    Head, Candidate>::Result Result;
+        };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template DerivedToFront
+// Arranges the types in a typelist so that the most derived types appear first
+// Invocation (TList is a typelist):
+// DerivedToFront<TList>::Result
+// returns the reordered TList 
+////////////////////////////////////////////////////////////////////////////////
+
+        template <class TList> struct DerivedToFront;
+        
+        template <>
+        struct DerivedToFront<NullType>
+        {
+            typedef NullType Result;
+        };
+        
+        template <class Head, class Tail>
+        struct DerivedToFront< Typelist<Head, Tail> >
+        {
+        private:
+            typedef typename MostDerived<Tail, Head>::Result
+                TheMostDerived;
+            typedef typename Replace<Tail,
+                TheMostDerived, Head>::Result Temp;
+            typedef typename DerivedToFront<Temp>::Result L;
+        public:
+            typedef Typelist<TheMostDerived, L> Result;
+        };
+        
+    }   // namespace TL
+}   // namespace Loki
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypelistMacros.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypelistMacros.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/TypelistMacros.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,353 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Welsey Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_TYPELISTMACROS_INC_
+#define LOKI_TYPELISTMACROS_INC_
+
+// $Id: TypelistMacros.h 749 2006-10-17 19:49:26Z syntheticpp $
+
+
+//#define LOKI_DISABLE_TYPELIST_MACROS
+#ifndef LOKI_DISABLE_TYPELIST_MACROS
+
+////////////////////////////////////////////////////////////////////////////////
+// macros LOKI_TYPELIST_1, LOKI_TYPELIST_2, ... LOKI_TYPELIST_50
+// Each takes a number of arguments equal to its numeric suffix
+// The arguments are type names. LOKI_TYPELIST_NN generates a typelist containing 
+//     all types passed as arguments, in that order.
+// Example: LOKI_TYPELIST_2(char, int) generates a type containing char and int.
+////////////////////////////////////////////////////////////////////////////////
+
+#define LOKI_TYPELIST_1(T1) ::Loki::Typelist<T1, ::Loki::NullType>
+
+#define LOKI_TYPELIST_2(T1, T2) ::Loki::Typelist<T1, LOKI_TYPELIST_1(T2) >
+
+#define LOKI_TYPELIST_3(T1, T2, T3) ::Loki::Typelist<T1, LOKI_TYPELIST_2(T2, T3) >
+
+#define LOKI_TYPELIST_4(T1, T2, T3, T4) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_3(T2, T3, T4) >
+
+#define LOKI_TYPELIST_5(T1, T2, T3, T4, T5) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_4(T2, T3, T4, T5) >
+
+#define LOKI_TYPELIST_6(T1, T2, T3, T4, T5, T6) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_5(T2, T3, T4, T5, T6) >
+
+#define LOKI_TYPELIST_7(T1, T2, T3, T4, T5, T6, T7) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_6(T2, T3, T4, T5, T6, T7) >
+
+#define LOKI_TYPELIST_8(T1, T2, T3, T4, T5, T6, T7, T8) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_7(T2, T3, T4, T5, T6, T7, T8) >
+
+#define LOKI_TYPELIST_9(T1, T2, T3, T4, T5, T6, T7, T8, T9) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_8(T2, T3, T4, T5, T6, T7, T8, T9) >
+
+#define LOKI_TYPELIST_10(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_9(T2, T3, T4, T5, T6, T7, T8, T9, T10) >
+
+#define LOKI_TYPELIST_11(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_10(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) >
+
+#define LOKI_TYPELIST_12(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_11(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12) >
+
+#define LOKI_TYPELIST_13(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_12(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13) >
+
+#define LOKI_TYPELIST_14(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_13(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14) >
+
+#define LOKI_TYPELIST_15(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_14(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15) >
+
+#define LOKI_TYPELIST_16(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_15(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16) >
+
+#define LOKI_TYPELIST_17(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_16(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17) >
+
+#define LOKI_TYPELIST_18(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_17(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18) >
+
+#define LOKI_TYPELIST_19(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_18(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19) >
+
+#define LOKI_TYPELIST_20(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_19(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) >
+
+#define LOKI_TYPELIST_21(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_20(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) >
+
+#define LOKI_TYPELIST_22(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_21(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) >
+
+#define LOKI_TYPELIST_23(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_22(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) >
+
+#define LOKI_TYPELIST_24(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_23(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) >
+
+#define LOKI_TYPELIST_25(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_24(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25) >
+
+#define LOKI_TYPELIST_26(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_25(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26) >
+
+#define LOKI_TYPELIST_27(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_26(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27) >
+
+#define LOKI_TYPELIST_28(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_27(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28) >
+
+#define LOKI_TYPELIST_29(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_28(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29) >
+
+#define LOKI_TYPELIST_30(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_29(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) >
+
+#define LOKI_TYPELIST_31(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_30(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) >
+
+#define LOKI_TYPELIST_32(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_31(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) >
+
+#define LOKI_TYPELIST_33(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_32(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) >
+
+#define LOKI_TYPELIST_34(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_33(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) >
+
+#define LOKI_TYPELIST_35(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_34(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35) >
+
+#define LOKI_TYPELIST_36(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_35(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36) >
+
+#define LOKI_TYPELIST_37(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_36(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37) >
+
+#define LOKI_TYPELIST_38(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_37(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38) >
+
+#define LOKI_TYPELIST_39(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_38(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39) >
+
+#define LOKI_TYPELIST_40(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_39(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) >
+
+#define LOKI_TYPELIST_41(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_40(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) >
+
+#define LOKI_TYPELIST_42(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_41(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) >
+
+#define LOKI_TYPELIST_43(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_42(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) >
+
+#define LOKI_TYPELIST_44(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_43(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) >
+
+#define LOKI_TYPELIST_45(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_44(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45) >
+
+#define LOKI_TYPELIST_46(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45, T46) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_45(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45, T46) >
+
+#define LOKI_TYPELIST_47(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45, T46, T47) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_46(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45, T46, T47) >
+
+#define LOKI_TYPELIST_48(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45, T46, T47, T48) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_47(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45, T46, T47, T48) >
+
+#define LOKI_TYPELIST_49(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45, T46, T47, T48, T49) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_48(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45, T46, T47, T48, T49) >
+
+#define LOKI_TYPELIST_50(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) \
+    ::Loki::Typelist<T1, LOKI_TYPELIST_49(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
+        T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
+        T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
+        T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
+        T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) >
+
+#endif //LOKI_DISABLE_TYPELIST_MACROS
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Visitor.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Visitor.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/Visitor.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,355 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_VISITOR_INC_
+#define LOKI_VISITOR_INC_
+
+// $Id: Visitor.h 751 2006-10-17 19:50:37Z syntheticpp $
+
+
+///  \defgroup VisitorGroup Visitor
+
+#include "Typelist.h"
+#include "HierarchyGenerators.h"
+
+namespace Loki
+{
+
+////////////////////////////////////////////////////////////////////////////////
+/// \class BaseVisitor
+///  
+/// \ingroup VisitorGroup
+/// The base class of any Acyclic Visitor
+////////////////////////////////////////////////////////////////////////////////
+
+    class BaseVisitor
+    {
+    public:
+        virtual ~BaseVisitor() {}
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+/// \class Visitor
+///
+/// \ingroup VisitorGroup
+/// The building block of Acyclic Visitor
+///
+/// \par Usage
+///
+/// Defining the visitable class:
+/// 
+/// \code
+/// class RasterBitmap : public BaseVisitable<>
+/// {
+/// public:
+///     LOKI_DEFINE_VISITABLE()
+/// };
+/// \endcode
+///
+/// Way 1 to define a visitor:
+/// \code
+/// class SomeVisitor : 
+///     public BaseVisitor // required
+///     public Visitor<RasterBitmap>,
+///     public Visitor<Paragraph>
+/// {
+/// public:
+///     void Visit(RasterBitmap&); // visit a RasterBitmap
+///     void Visit(Paragraph &);   // visit a Paragraph
+/// };
+/// \endcode
+///
+/// Way 2 to define the visitor:
+/// \code
+/// class SomeVisitor : 
+///     public BaseVisitor // required
+///     public Visitor<LOKI_TYPELIST_2(RasterBitmap, Paragraph)>
+/// {
+/// public:
+///     void Visit(RasterBitmap&); // visit a RasterBitmap
+///     void Visit(Paragraph &);   // visit a Paragraph
+/// };
+/// \endcode
+///
+/// Way 3 to define the visitor:
+/// \code
+/// class SomeVisitor : 
+///     public BaseVisitor // required
+///     public Visitor<Seq<RasterBitmap, Paragraph>::Type>
+/// {
+/// public:
+///     void Visit(RasterBitmap&); // visit a RasterBitmap
+///     void Visit(Paragraph &);   // visit a Paragraph
+/// };
+/// \endcode
+///
+/// \par Using const visit functions:
+///
+/// Defining the visitable class (true for const):
+/// 
+/// \code
+/// class RasterBitmap : public BaseVisitable<void, DefaultCatchAll, true>
+/// {
+/// public:
+///     LOKI_DEFINE_CONST_VISITABLE()
+/// };
+/// \endcode
+///
+/// Defining the visitor which only calls const member functions:
+/// \code
+/// class SomeVisitor : 
+///     public BaseVisitor // required
+///     public Visitor<RasterBitmap, void, true>,
+/// {
+/// public:
+///     void Visit(const RasterBitmap&); // visit a RasterBitmap by a const member function
+/// };
+/// \endcode
+///
+/// \par Example:
+///
+/// test/Visitor/main.cpp 
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class T, typename R = void, bool ConstVisit = false>
+    class Visitor;
+
+    template <class T, typename R>
+    class Visitor<T, R, false>
+    {
+    public:
+        typedef R ReturnType;
+        typedef T ParamType;
+        virtual ~Visitor() {}
+        virtual ReturnType Visit(ParamType&) = 0;
+    };
+
+    template <class T, typename R>
+    class Visitor<T, R, true>
+    {
+    public:
+        typedef R ReturnType;
+        typedef const T ParamType;
+        virtual ~Visitor() {}
+        virtual ReturnType Visit(ParamType&) = 0;
+    };
+
+////////////////////////////////////////////////////////////////////////////////
+// class template Visitor (specialization)
+// This specialization is not present in the book. It makes it easier to define
+// Visitors for multiple types in a shot by using a typelist. Example:
+//
+// class SomeVisitor : 
+//     public BaseVisitor // required
+//     public Visitor<LOKI_TYPELIST_2(RasterBitmap, Paragraph)>
+// {
+// public:
+//     void Visit(RasterBitmap&); // visit a RasterBitmap
+//     void Visit(Paragraph &);   // visit a Paragraph
+// };
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class Head, class Tail, typename R>
+    class Visitor<Typelist<Head, Tail>, R, false>
+        : public Visitor<Head, R, false>, public Visitor<Tail, R, false>
+    {
+    public:
+        typedef R ReturnType;
+       // using Visitor<Head, R>::Visit;
+       // using Visitor<Tail, R>::Visit;
+    };
+    
+    template <class Head, typename R>
+    class Visitor<Typelist<Head, NullType>, R, false> : public Visitor<Head, R, false>
+    {
+    public:
+        typedef R ReturnType;
+        using Visitor<Head, R, false>::Visit;
+    };
+
+    template <class Head, class Tail, typename R>
+    class Visitor<Typelist<Head, Tail>, R, true>
+        : public Visitor<Head, R, true>, public Visitor<Tail, R, true>
+    {
+    public:
+        typedef R ReturnType;
+       // using Visitor<Head, R>::Visit;
+       // using Visitor<Tail, R>::Visit;
+    };
+    
+    template <class Head, typename R>
+    class Visitor<Typelist<Head, NullType>, R, true> : public Visitor<Head, R, true>
+    {
+    public:
+        typedef R ReturnType;
+        using Visitor<Head, R, true>::Visit;
+    };
+
+
+////////////////////////////////////////////////////////////////////////////////
+// class template BaseVisitorImpl
+// Implements non-strict visitation (you can implement only part of the Visit
+//     functions)
+////////////////////////////////////////////////////////////////////////////////
+
+    template <class TList, typename R = void> class BaseVisitorImpl;
+
+    template <class Head, class Tail, typename R>
+    class BaseVisitorImpl<Typelist<Head, Tail>, R>
+        : public Visitor<Head, R>
+        , public BaseVisitorImpl<Tail, R>
+    {
+    public:
+       // using BaseVisitorImpl<Tail, R>::Visit;
+
+        virtual R Visit(Head&)
+        { return R(); }
+    };
+    
+    template <class Head, typename R>
+    class BaseVisitorImpl<Typelist<Head, NullType>, R>
+        : public Visitor<Head, R>
+    {
+    public:
+        virtual R Visit(Head&)
+        { return R(); }
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+// class template BaseVisitable
+////////////////////////////////////////////////////////////////////////////////
+
+template <typename R, typename Visited>
+struct DefaultCatchAll
+{
+    static R OnUnknownVisitor(Visited&, BaseVisitor&)
+    { return R(); }
+};
+
+////////////////////////////////////////////////////////////////////////////////
+// class template BaseVisitable
+////////////////////////////////////////////////////////////////////////////////
+
+    template 
+    <
+        typename R = void, 
+        template <typename, class> class CatchAll = DefaultCatchAll,
+        bool ConstVisitable = false
+    >
+    class BaseVisitable;
+
+    template<typename R,template <typename, class> class CatchAll>
+    class BaseVisitable<R, CatchAll, false>
+    {
+    public:
+        typedef R ReturnType;
+        virtual ~BaseVisitable() {}
+        virtual ReturnType Accept(BaseVisitor&) = 0;
+        
+    protected: // give access only to the hierarchy
+        template <class T>
+        static ReturnType AcceptImpl(T& visited, BaseVisitor& guest)
+        {
+            // Apply the Acyclic Visitor
+            if (Visitor<T,R>* p = dynamic_cast<Visitor<T,R>*>(&guest))
+            {
+                return p->Visit(visited);
+            }
+            return CatchAll<R, T>::OnUnknownVisitor(visited, guest);
+        }
+    };
+
+    template<typename R,template <typename, class> class CatchAll>
+    class BaseVisitable<R, CatchAll, true>
+    {
+    public:
+        typedef R ReturnType;
+        virtual ~BaseVisitable() {}
+        virtual ReturnType Accept(BaseVisitor&) const = 0;
+        
+    protected: // give access only to the hierarchy
+        template <class T>
+        static ReturnType AcceptImpl(const T& visited, BaseVisitor& guest)
+        {
+            // Apply the Acyclic Visitor
+            if (Visitor<T,R,true>* p = dynamic_cast<Visitor<T,R,true>*>(&guest))
+            {
+                return p->Visit(visited);
+            }
+            return CatchAll<R, T>::OnUnknownVisitor(const_cast<T&>(visited), guest);
+        }
+    };
+
+
+////////////////////////////////////////////////////////////////////////////////
+/// \def LOKI_DEFINE_VISITABLE()
+/// \ingroup VisitorGroup
+/// Put it in every class that you want to make visitable 
+/// (in addition to deriving it from BaseVisitable<R>)
+////////////////////////////////////////////////////////////////////////////////
+
+#define LOKI_DEFINE_VISITABLE() \
+    virtual ReturnType Accept(::Loki::BaseVisitor& guest) \
+    { return AcceptImpl(*this, guest); }
+
+////////////////////////////////////////////////////////////////////////////////
+/// \def LOKI_DEFINE_CONST_VISITABLE()
+/// \ingroup VisitorGroup
+/// Put it in every class that you want to make visitable by const member 
+/// functions (in addition to deriving it from BaseVisitable<R>)
+////////////////////////////////////////////////////////////////////////////////
+
+#define LOKI_DEFINE_CONST_VISITABLE() \
+    virtual ReturnType Accept(::Loki::BaseVisitor& guest) const \
+    { return AcceptImpl(*this, guest); }
+
+////////////////////////////////////////////////////////////////////////////////
+/// \class CyclicVisitor
+///
+/// \ingroup VisitorGroup
+/// Put it in every class that you want to make visitable (in addition to 
+/// deriving it from BaseVisitable<R>
+////////////////////////////////////////////////////////////////////////////////
+
+    template <typename R, class TList>
+    class CyclicVisitor : public Visitor<TList, R>
+    {
+    public:
+        typedef R ReturnType;
+        // using Visitor<TList, R>::Visit;
+        
+        template <class Visited>
+        ReturnType GenericVisit(Visited& host)
+        {
+            Visitor<Visited, ReturnType>& subObj = *this;
+            return subObj.Visit(host);
+        }
+    };
+    
+////////////////////////////////////////////////////////////////////////////////
+/// \def LOKI_DEFINE_CYCLIC_VISITABLE(SomeVisitor)
+/// \ingroup VisitorGroup
+/// Put it in every class that you want to make visitable by a cyclic visitor
+////////////////////////////////////////////////////////////////////////////////
+
+#define LOKI_DEFINE_CYCLIC_VISITABLE(SomeVisitor) \
+    virtual SomeVisitor::ReturnType Accept(SomeVisitor& guest) \
+    { return guest.GenericVisit(*this); }
+
+} // namespace Loki
+
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/allocatorstringstorage.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/allocatorstringstorage.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/allocatorstringstorage.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,278 @@
+////////////////////////////////////////////////////////////////////////////////
+// flex_string
+// Copyright (c) 2001 by Andrei Alexandrescu
+// Permission to use, copy, modify, distribute and sell this software for any
+//     purpose is hereby granted without fee, provided that the above copyright
+//     notice appear in all copies and that both that copyright notice and this
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the
+//     suitability of this software for any purpose. It is provided "as is"
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef ALLOCATOR_STRING_STORAGE_INC_
+#define ALLOCATOR_STRING_STORAGE_INC_
+
+// $Id: allocatorstringstorage.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+/* This is the template for a storage policy
+////////////////////////////////////////////////////////////////////////////////
+template <typename E, class A = @>
+class StoragePolicy
+{
+    typedef E value_type;
+    typedef @ iterator;
+    typedef @ const_iterator;
+    typedef A allocator_type;
+    typedef @ size_type;
+    
+    StoragePolicy(const StoragePolicy& s);
+    StoragePolicy(const A&);
+    StoragePolicy(const E* s, size_type len, const A&);
+    StoragePolicy(size_type len, E c, const A&);
+    ~StoragePolicy();
+
+    iterator begin();
+    const_iterator begin() const;
+    iterator end();
+    const_iterator end() const;
+    
+    size_type size() const;
+    size_type max_size() const;
+    size_type capacity() const;
+
+    void reserve(size_type res_arg);
+
+    template <class ForwardIterator>
+    void append(ForwardIterator b, ForwardIterator e);
+
+    void resize(size_type newSize, E fill);
+
+    void swap(StoragePolicy& rhs);
+    
+    const E* c_str() const;
+    const E* data() const;
+    
+    A get_allocator() const;
+};
+////////////////////////////////////////////////////////////////////////////////
+*/
+
+#include <memory>
+#include <algorithm>
+#include <functional>
+#include <cassert>
+#include <limits>
+#include <stdexcept>
+#include "flex_string_details.h"
+#include "simplestringstorage.h"
+
+////////////////////////////////////////////////////////////////////////////////
+// class template AllocatorStringStorage
+// Allocates with your allocator
+// Takes advantage of the Empty Base Optimization if available
+////////////////////////////////////////////////////////////////////////////////
+
+template <typename E, class A = std::allocator<E> >
+class AllocatorStringStorage : public A
+{
+    typedef typename A::size_type size_type;
+    typedef typename SimpleStringStorage<E, A>::Data Data;
+
+    void* Alloc(size_type sz, const void* p = 0)
+    {
+        return A::allocate(1 + (sz - 1) / sizeof(E), 
+            static_cast<const char*>(p));
+    }
+
+    void* Realloc(void* p, size_type oldSz, size_type newSz)
+    {
+        void* r = Alloc(newSz);
+        flex_string_details::pod_copy(p, p + Min(oldSz, newSz), r);
+        Free(p, oldSz);
+        return r;
+    }
+
+    void Free(void* p, size_type sz)
+    {
+        A::deallocate(static_cast<E*>(p), sz);
+    }
+
+    Data* pData_;
+
+    void Init(size_type size, size_type cap)
+    {
+        assert(size <= cap);
+
+        if (cap == 0)
+        {
+            pData_ = const_cast<Data*>(
+                &SimpleStringStorage<E, A>::emptyString_);
+        }
+        else
+        {
+            pData_ = static_cast<Data*>(Alloc(
+                cap * sizeof(E) + sizeof(Data)));
+            pData_->pEnd_ = pData_->buffer_ + size;
+            pData_->pEndOfMem_ = pData_->buffer_ + cap;
+        }
+    }
+    
+public:
+    typedef E value_type;
+    typedef A allocator_type;
+    typedef typename A::pointer iterator;
+    typedef typename A::const_pointer const_iterator;
+
+    AllocatorStringStorage() 
+    : A(), pData_(0)
+    {
+    }
+
+    AllocatorStringStorage(const AllocatorStringStorage& rhs) 
+    : A(rhs.get_allocator())
+    {
+        const size_type sz = rhs.size();
+        Init(sz, sz);
+        if (sz) flex_string_details::pod_copy(rhs.begin(), rhs.end(), begin());
+    }
+    
+    AllocatorStringStorage(const AllocatorStringStorage& s, 
+        flex_string_details::Shallow) 
+    : A(s.get_allocator())
+    {
+        pData_ = s.pData_;
+    }
+    
+    AllocatorStringStorage(const A& a) : A(a)
+    { 
+        pData_ = const_cast<Data*>(
+            &SimpleStringStorage<E, A>::emptyString_);
+    }
+    
+    AllocatorStringStorage(const E* s, size_type len, const A& a)
+    : A(a)
+    {
+        Init(len, len);        
+        flex_string_details::pod_copy(s, s + len, begin());
+    }
+
+    AllocatorStringStorage(size_type len, E c, const A& a)
+    : A(a)
+    {
+        Init(len, len);
+        flex_string_details::pod_fill(&*begin(), &*end(), c);
+    }
+    
+    AllocatorStringStorage& operator=(const AllocatorStringStorage& rhs)
+    {
+        const size_type sz = rhs.size();
+        reserve(sz);
+        flex_string_details::pod_copy(&*rhs.begin(), &*rhs.end(), begin());
+        pData_->pEnd_ = &*begin() + rhs.size();
+        return *this;
+    }
+    
+    ~AllocatorStringStorage()
+    {
+        if (capacity())
+        {
+            Free(pData_, 
+                sizeof(Data) + capacity() * sizeof(E));
+        }
+    }
+        
+    iterator begin()
+    { return pData_->buffer_; }
+    
+    const_iterator begin() const
+    { return pData_->buffer_; }
+    
+    iterator end()
+    { return pData_->pEnd_; }
+    
+    const_iterator end() const
+    { return pData_->pEnd_; }
+    
+    size_type size() const
+    { return size_type(end() - begin()); }
+
+    size_type max_size() const
+    { return A::max_size(); }
+
+    size_type capacity() const
+    { return size_type(pData_->pEndOfMem_ - pData_->buffer_); }
+
+    void resize(size_type n, E c)
+    {
+        reserve(n);
+        iterator newEnd = begin() + n;
+        iterator oldEnd = end();
+        if (newEnd > oldEnd) 
+        {
+            // Copy the characters
+            flex_string_details::pod_fill(oldEnd, newEnd, c);
+        }
+        if (capacity()) pData_->pEnd_ = newEnd;
+    }
+
+    void reserve(size_type res_arg)
+    {
+        if (res_arg <= capacity())
+        {
+            // @@@ shrink to fit here 
+            return;
+        }
+        
+        A& myAlloc = *this;
+        AllocatorStringStorage newStr(myAlloc);
+        newStr.Init(size(), res_arg);
+        
+        flex_string_details::pod_copy(begin(), end(), newStr.begin());
+        
+        swap(newStr);
+    }
+
+    template <class ForwardIterator>
+    void append(ForwardIterator b, ForwardIterator e)
+    {
+        const size_type 
+            sz = std::distance(b, e),
+            neededCapacity = size() + sz;
+
+        if (capacity() < neededCapacity)
+        {
+            static std::less_equal<const E*> le;
+            (void) le;
+            assert(!(le(begin(), &*b) && le(&*b, end())));
+            reserve(neededCapacity);
+        }
+        std::copy(b, e, end());
+        pData_->pEnd_ += sz;
+    }
+    
+    void swap(AllocatorStringStorage& rhs)
+    {
+        // @@@ The following line is commented due to a bug in MSVC
+        //std::swap(lhsAlloc, rhsAlloc);
+        std::swap(pData_, rhs.pData_);
+    }
+    
+    const E* c_str() const
+    { 
+        if (pData_ != &SimpleStringStorage<E, A>::emptyString_) 
+        {
+            *pData_->pEnd_ = E();
+        }
+        return &*begin(); 
+    }
+
+    const E* data() const
+    { return &*begin(); }
+    
+    A get_allocator() const
+    { return *this; }
+};
+
+#endif // ALLOCATOR_STRING_STORAGE_INC_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/cowstringopt.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/cowstringopt.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/cowstringopt.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,278 @@
+////////////////////////////////////////////////////////////////////////////////
+// flex_string
+// Copyright (c) 2001 by Andrei Alexandrescu
+// Permission to use, copy, modify, distribute and sell this software for any
+//     purpose is hereby granted without fee, provided that the above copyright
+//     notice appear in all copies and that both that copyright notice and this
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the
+//     suitability of this software for any purpose. It is provided "as is"
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef COW_STRING_OPT_INC_
+#define COW_STRING_OPT_INC_
+
+// $Id: cowstringopt.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+////////////////////////////////////////////////////////////////////////////////
+// class template CowStringOpt
+// Implements Copy on Write over any storage
+////////////////////////////////////////////////////////////////////////////////
+
+
+/* This is the template for a storage policy
+////////////////////////////////////////////////////////////////////////////////
+template <typename E, class A = @>
+class StoragePolicy
+{
+    typedef E value_type;
+    typedef @ iterator;
+    typedef @ const_iterator;
+    typedef A allocator_type;
+    typedef @ size_type;
+    
+    StoragePolicy(const StoragePolicy& s);
+    StoragePolicy(const A&);
+    StoragePolicy(const E* s, size_type len, const A&);
+    StoragePolicy(size_type len, E c, const A&);
+    ~StoragePolicy();
+
+    iterator begin();
+    const_iterator begin() const;
+    iterator end();
+    const_iterator end() const;
+    
+    size_type size() const;
+    size_type max_size() const;
+    size_type capacity() const;
+
+    void reserve(size_type res_arg);
+
+    void append(const E* s, size_type sz);
+    
+    template <class InputIterator>
+    void append(InputIterator b, InputIterator e);
+
+    void resize(size_type newSize, E fill);
+
+    void swap(StoragePolicy& rhs);
+    
+    const E* c_str() const;
+    const E* data() const;
+    
+    A get_allocator() const;
+};
+////////////////////////////////////////////////////////////////////////////////
+*/
+
+#include <memory>
+#include <algorithm>
+#include <functional>
+#include <cassert>
+#include <limits>
+#include <stdexcept>
+#include "flex_string_details.h"
+
+
+////////////////////////////////////////////////////////////////////////////////
+// class template CowStringOpt
+// Implements Copy on Write over any storage
+////////////////////////////////////////////////////////////////////////////////
+
+template <class Storage, typename Align = typename Storage::value_type*>
+class CowStringOpt
+{
+    typedef typename Storage::value_type E;
+    typedef typename flex_string_details::get_unsigned<E>::result RefCountType;
+
+public:
+    typedef E value_type;
+    typedef typename Storage::iterator iterator;
+    typedef typename Storage::const_iterator const_iterator;
+    typedef typename Storage::allocator_type allocator_type;
+    typedef typename allocator_type::size_type size_type;
+    typedef typename Storage::reference reference;
+    
+private:
+    union
+    {
+        mutable char buf_[sizeof(Storage)];
+        Align align_;
+    };
+
+    Storage& Data() const
+    { return *reinterpret_cast<Storage*>(buf_); }
+
+    RefCountType GetRefs() const
+    {
+        const Storage& d = Data();
+        assert(d.size() > 0);
+        assert(*d.begin() > 0);
+        return *d.begin();
+    }
+    
+    RefCountType& Refs()
+    {
+        Storage& d = Data();
+        assert(d.size() > 0);
+        return reinterpret_cast<RefCountType&>(*d.begin());
+    }
+    
+    void MakeUnique() const
+    {
+        assert(GetRefs() >= 1);
+        if (GetRefs() == 1) return;
+
+        union
+        {
+            char buf_[sizeof(Storage)];
+            Align align_;
+        } temp;
+
+        new(buf_) Storage(
+            *new(temp.buf_) Storage(Data()), 
+            flex_string_details::Shallow());
+        *Data().begin() = 1;
+    }
+
+public:
+    CowStringOpt(const CowStringOpt& s)
+    {
+        if (s.GetRefs() == std::numeric_limits<RefCountType>::max())
+        {
+            // must make a brand new copy
+            new(buf_) Storage(s.Data()); // non shallow
+            Refs() = 1;
+        }
+        else
+        {
+            new(buf_) Storage(s.Data(), flex_string_details::Shallow());
+            ++Refs();
+        }
+        assert(Data().size() > 0);
+    }
+    
+    CowStringOpt(const allocator_type& a)
+    {
+        new(buf_) Storage(1, 1, a);
+    }
+    
+    CowStringOpt(const E* s, size_type len, const allocator_type& a)
+    {
+        // Warning - MSVC's debugger has trouble tracing through the code below.
+        // It seems to be a const-correctness issue
+        //
+        new(buf_) Storage(a);
+        Data().reserve(len + 1);
+        Data().resize(1, 1);
+        Data().append(s, s + len);
+    }
+
+    CowStringOpt(size_type len, E c, const allocator_type& a)
+    {
+        new(buf_) Storage(len + 1, c, a);
+        Refs() = 1;
+    }
+    
+    CowStringOpt& operator=(const CowStringOpt& rhs)
+    {
+        CowStringOpt(rhs).swap(*this);
+        return *this;
+    }
+
+    ~CowStringOpt()
+    {
+        assert(Data().size() > 0);
+        if (--Refs() == 0) Data().~Storage();
+    }
+
+    iterator begin()
+    {
+        assert(Data().size() > 0);
+        MakeUnique();
+        return Data().begin() + 1; 
+    }
+    
+    const_iterator begin() const
+    {
+        assert(Data().size() > 0);
+        return Data().begin() + 1; 
+    }
+    
+    iterator end()
+    {
+        MakeUnique();
+        return Data().end(); 
+    }
+    
+    const_iterator end() const
+    {
+        return Data().end(); 
+    }
+    
+    size_type size() const
+    {
+        assert(Data().size() > 0);
+        return Data().size() - 1;
+    }
+
+    size_type max_size() const
+    { 
+        assert(Data().max_size() > 0);
+        return Data().max_size() - 1;
+    }
+
+    size_type capacity() const
+    { 
+        assert(Data().capacity() > 0);
+        return Data().capacity() - 1;
+    }
+
+    void resize(size_type n, E c)
+    {
+        assert(Data().size() > 0);
+        MakeUnique();
+        Data().resize(n + 1, c);
+    }
+
+    template <class FwdIterator>
+    void append(FwdIterator b, FwdIterator e)
+    {
+        MakeUnique();
+        Data().append(b, e);
+    }
+    
+    void reserve(size_type res_arg)
+    {
+        if (capacity() > res_arg) return;
+        MakeUnique();
+        Data().reserve(res_arg + 1);
+    }
+    
+    void swap(CowStringOpt& rhs)
+    {
+        Data().swap(rhs.Data());
+    }
+    
+    const E* c_str() const
+    { 
+        assert(Data().size() > 0);
+        return Data().c_str() + 1;
+    }
+
+    const E* data() const
+    { 
+        assert(Data().size() > 0);
+        return Data().data() + 1;
+    }
+    
+    allocator_type get_allocator() const
+    { 
+        return Data().get_allocator();
+    }
+};
+
+
+#endif // COW_STRING_OPT_INC_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,30 @@
+////////////////////////////////////////////////////////////////////////////////
+// flex_string
+// Copyright (c) 2001 by Andrei Alexandrescu
+// Permission to use, copy, modify, distribute and sell this software for any
+//     purpose is hereby granted without fee, provided that the above copyright
+//     notice appear in all copies and that both that copyright notice and this
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the
+//     suitability of this software for any purpose. It is provided "as is"
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef FLEX_STRING_INC_
+#define FLEX_STRING_INC_
+
+// $Id: flex_string.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+// <THE> string
+#include "flex_string_shell.h"
+
+// Storage policies
+#include "simplestringstorage.h"
+#include "allocatorstringstorage.h"
+#include "vectorstringstorage.h"
+#include "smallstringopt.h"
+#include "cowstringopt.h"
+//#include "utf16encoding.h"
+
+#endif // FLEX_STRING_INC_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string_details.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string_details.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string_details.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,102 @@
+////////////////////////////////////////////////////////////////////////////////
+// flex_string
+// Copyright (c) 2001 by Andrei Alexandrescu
+// Permission to use, copy, modify, distribute and sell this software for any
+//     purpose is hereby granted without fee, provided that the above copyright
+//     notice appear in all copies and that both that copyright notice and this
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the
+//     suitability of this software for any purpose. It is provided "as is"
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef FLEX_STRING_DETAILS_INC_
+#define FLEX_STRING_DETAILS_INC_
+
+// $Id: flex_string_details.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+#include <memory>
+
+namespace flex_string_details
+{
+    template <class InIt, class OutIt>
+    OutIt copy_n(InIt b, typename std::iterator_traits<InIt>::difference_type n, OutIt d)
+    {
+        for (; n != 0; --n, ++b, ++d)
+        {
+            *d = *b;
+        }
+        return d;
+    }
+
+    template <class Pod, class T>
+    inline void pod_fill(Pod* b, Pod* e, T c)
+    {
+        switch ((e - b) & 7)
+        {
+        case 0:
+            while (b != e)
+            {
+                *b = c; ++b;
+        case 7: *b = c; ++b;
+        case 6: *b = c; ++b;
+        case 5: *b = c; ++b;
+        case 4: *b = c; ++b;
+        case 3: *b = c; ++b;
+        case 2: *b = c; ++b;
+        case 1: *b = c; ++b;
+            }
+        }
+    }
+
+    template <class Pod>
+    inline void pod_move(const Pod* b, const Pod* e, Pod* d)
+    {
+        using namespace std;
+        memmove(d, b, (e - b) * sizeof(*b));
+    }
+
+    template <class Pod>
+    inline Pod* pod_copy(const Pod* b, const Pod* e, Pod* d)
+    {
+        const size_t s = e - b;
+        using namespace std;
+        memcpy(d, b, s * sizeof(*b));
+        return d + s;
+    }
+
+    template <typename T> struct get_unsigned
+    {
+        typedef T result;
+    };
+
+    template <> struct get_unsigned<char>
+    {
+        typedef unsigned char result;
+    };
+
+    template <> struct get_unsigned<signed char>
+    {
+        typedef unsigned char result;
+    };
+
+    template <> struct get_unsigned<short int>
+    {
+        typedef unsigned short int result;
+    };
+
+    template <> struct get_unsigned<int>
+    {
+        typedef unsigned int result;
+    };
+
+    template <> struct get_unsigned<long int>
+    {
+        typedef unsigned long int result;
+    };
+
+    enum Shallow {};
+}
+
+#endif // FLEX_STRING_DETAILS_INC_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string_shell.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string_shell.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/flex_string_shell.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1296 @@
+////////////////////////////////////////////////////////////////////////////////
+// flex_string
+// Copyright (c) 2001 by Andrei Alexandrescu
+// Permission to use, copy, modify, distribute and sell this software for any
+//     purpose is hereby granted without fee, provided that the above copyright
+//     notice appear in all copies and that both that copyright notice and this
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the
+//     suitability of this software for any purpose. It is provided "as is"
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef FLEX_STRING_SHELL_INC_
+#define FLEX_STRING_SHELL_INC_
+
+// $Id: flex_string_shell.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+///////////////////////////////////////////////////////////////////////////////
+// class template flex_string
+// This file does not include any storage policy headers
+///////////////////////////////////////////////////////////////////////////////
+
+#include <memory>
+#include <algorithm>
+#include <functional>
+#include <cassert>
+#include <limits>
+#include <stdexcept>
+#include "flex_string_details.h"
+#include <string>
+
+// Forward declaration for default storage policy
+template <typename E, class A> class AllocatorStringStorage;
+
+
+template <class T> class mallocator
+{
+public:
+    typedef T                 value_type;
+    typedef value_type*       pointer;
+    typedef const value_type* const_pointer;
+    typedef value_type&       reference;
+    typedef const value_type& const_reference;
+    typedef std::size_t       size_type;
+    //typedef unsigned int      size_type;
+    //typedef std::ptrdiff_t    difference_type;
+    typedef int               difference_type;
+
+    template <class U> 
+    struct rebind { typedef mallocator<U> other; };
+
+    mallocator() {}
+    mallocator(const mallocator&) {}
+    //template <class U> 
+    //mallocator(const mallocator<U>&) {}
+    ~mallocator() {}
+
+    pointer address(reference x) const { return &x; }
+    const_pointer address(const_reference x) const 
+    { 
+        return x;
+    }
+
+    pointer allocate(size_type n, const_pointer = 0) 
+    {
+        using namespace std;
+        void* p = malloc(n * sizeof(T));
+        if (!p) throw bad_alloc();
+        return static_cast<pointer>(p);
+    }
+
+    void deallocate(pointer p, size_type) 
+    { 
+        using namespace std;
+        free(p); 
+    }
+
+    size_type max_size() const 
+    { 
+        return static_cast<size_type>(-1) / sizeof(T);
+    }
+
+    void construct(pointer p, const value_type& x) 
+    { 
+        new(p) value_type(x); 
+    }
+
+    void destroy(pointer p) 
+    { 
+        p->~value_type(); 
+    }
+
+private:
+    void operator=(const mallocator&);
+};
+
+template<> class mallocator<void>
+{
+  typedef void        value_type;
+  typedef void*       pointer;
+  typedef const void* const_pointer;
+
+  template <class U> 
+  struct rebind { typedef mallocator<U> other; };
+};
+
+template <class T>
+inline bool operator==(const mallocator<T>&, 
+                       const mallocator<T>&) {
+  return true;
+}
+
+template <class T>
+inline bool operator!=(const mallocator<T>&, 
+                       const mallocator<T>&) {
+  return false;
+}
+
+template <class Allocator>
+typename Allocator::pointer Reallocate(
+    Allocator& alloc,
+    typename Allocator::pointer p, 
+    typename Allocator::size_type oldObjCount,
+    typename Allocator::size_type newObjCount,
+    void*)
+{
+    // @@@ not implemented
+}
+
+template <class Allocator>
+typename Allocator::pointer Reallocate(
+    Allocator& alloc,
+    typename Allocator::pointer p, 
+    typename Allocator::size_type oldObjCount,
+    typename Allocator::size_type newObjCount,
+    mallocator<void>*)
+{
+    // @@@ not implemented
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+// class template flex_string
+// a std::basic_string compatible implementation 
+// Uses a Storage policy 
+////////////////////////////////////////////////////////////////////////////////
+
+template <typename E,
+    class T = std::char_traits<E>,
+    class A = std::allocator<E>,
+    class Storage = AllocatorStringStorage<E, A> >
+class flex_string : private Storage
+{
+
+    template <typename Exception>
+    static void Enforce(bool condition, Exception*, const char* msg)
+    { if (!condition) throw Exception(msg); }
+
+    bool Sane() const
+    {
+        return
+            begin() <= end() &&
+            empty() == (size() == 0) &&
+            empty() == (begin() == end()) &&
+            size() <= max_size() &&
+            capacity() <= max_size() &&
+            size() <= capacity();
+    }
+
+    struct Invariant;
+    friend struct Invariant;
+    struct Invariant
+    {
+#ifndef NDEBUG
+        Invariant(const flex_string& s) : s_(s)
+        {
+            assert(s_.Sane());
+        }
+        ~Invariant()
+        {
+            assert(s_.Sane());
+        }
+    private:
+        const flex_string& s_;
+#else
+        Invariant(const flex_string&) {} 
+#endif
+    Invariant& operator=(const Invariant&);
+    };
+    
+public:
+    // types
+    typedef T traits_type;
+    typedef typename traits_type::char_type value_type;
+    typedef A allocator_type;
+    typedef typename A::size_type size_type;
+    typedef typename A::difference_type difference_type;
+    
+    typedef typename Storage::reference reference;
+    typedef typename A::const_reference const_reference;
+    typedef typename A::pointer pointer;
+    typedef typename A::const_pointer const_pointer;
+    
+    typedef typename Storage::iterator iterator;
+    typedef typename Storage::const_iterator const_iterator;
+    typedef std::reverse_iterator<iterator
+#ifdef NO_ITERATOR_TRAITS
+    , value_type
+#endif
+    > reverse_iterator;
+    typedef std::reverse_iterator<const_iterator
+#ifdef NO_ITERATOR_TRAITS
+    , const value_type 
+#endif
+    > const_reverse_iterator;
+
+    static const size_type npos;    // = size_type(-1)
+
+private:
+    static size_type Min(size_type lhs, size_type rhs)
+    { return lhs < rhs ? lhs : rhs; }
+    static size_type Max(size_type lhs, size_type rhs)
+    { return lhs > rhs ? lhs : rhs; }
+    static void Procust(size_type& n, size_type nmax)
+    { if (n > nmax) n = nmax; }
+    
+public:    
+    // 21.3.1 construct/copy/destroy
+    explicit flex_string(const A& a = A())
+    : Storage(a) 
+    {}
+    
+    flex_string(const flex_string& str)
+    : Storage(str) 
+    {}
+    
+    flex_string(const flex_string& str, size_type pos, 
+        size_type n = npos, const A& a = A())
+    : Storage(a) 
+    {
+        assign(str, pos, n);
+    }
+    
+    flex_string(const value_type* s, const A& a = A())
+    : Storage(s, traits_type::length(s), a)
+    {}
+    
+    flex_string(const value_type* s, size_type n, const A& a = A())
+    : Storage(s, n, a)
+    {}
+    
+    flex_string(size_type n, value_type c, const A& a = A())
+    : Storage(n, c, a)
+    {}
+
+    template <class InputIterator>
+    flex_string(InputIterator begin, InputIterator end, const A& a = A())
+    : Storage(a)
+    {
+        assign(begin, end);
+    }
+
+    ~flex_string()
+    {}
+    
+    flex_string& operator=(const flex_string& str)
+    {
+        Storage& s = *this;
+        s = str;
+        return *this;
+    }   
+    
+    flex_string& operator=(const value_type* s)
+    {
+        assign(s);
+        return *this;
+    }
+
+    flex_string& operator=(value_type c)
+    {
+        assign(1, c);
+        return *this;
+    }
+    
+    // 21.3.2 iterators:
+    iterator begin()
+    { return Storage::begin(); }
+    
+    const_iterator begin() const
+    { return Storage::begin(); }
+    
+    iterator end()
+    { return Storage::end(); }
+    
+    const_iterator end() const
+    { return Storage::end(); }
+
+    reverse_iterator rbegin()
+    { return reverse_iterator(end()); }
+    
+    const_reverse_iterator rbegin() const
+    { return const_reverse_iterator(end()); }
+    
+    reverse_iterator rend()
+    { return reverse_iterator(begin()); }
+    
+    const_reverse_iterator rend() const
+    { return const_reverse_iterator(begin()); }
+    
+    // 21.3.3 capacity:
+    size_type size() const
+    { return Storage::size(); }
+    
+    size_type length() const
+    { return size(); }
+    
+    size_type max_size() const
+    { return Storage::max_size(); }
+
+    void resize(size_type n, value_type c)
+    { Storage::resize(n, c); }
+    
+    void resize(size_type n)
+    { resize(n, value_type()); }
+    
+    size_type capacity() const
+    { return Storage::capacity(); }
+    
+    void reserve(size_type res_arg = 0)
+    {
+        Enforce(res_arg <= max_size(), static_cast<std::length_error*>(0), "");
+        Storage::reserve(res_arg);
+    }
+    
+    void clear()
+    { resize(0); } 
+    
+    bool empty() const
+    { return size() == 0; }
+    
+    // 21.3.4 element access:
+    const_reference operator[](size_type pos) const
+    { return *(c_str() + pos); }
+    
+    reference operator[](size_type pos)
+    { return *(begin() + pos); }
+
+    const_reference at(size_type n) const
+    {
+        Enforce(n <= size(), static_cast<std::out_of_range*>(0), "");
+        return (*this)[n];
+    }
+    
+    reference at(size_type n)
+    {
+        Enforce(n < size(), static_cast<std::out_of_range*>(0), "");
+        return (*this)[n];
+    }
+    
+    // 21.3.5 modifiers:
+    flex_string& operator+=(const flex_string& str)
+    { return append(str); }
+    
+    flex_string& operator+=(const value_type* s)
+    { return append(s); }
+
+    flex_string& operator+=(const value_type c)
+    { 
+        push_back(c);
+        return *this;
+    }
+    
+    flex_string& append(const flex_string& str)
+    { return append(str.data(), str.length()); }
+    
+    flex_string& append(const flex_string& str, const size_type pos,
+        size_type n)
+    { 
+        const size_type sz = str.size();
+        Enforce(pos <= sz, static_cast<std::out_of_range*>(0), "");
+        Procust(n, sz - pos);
+        return append(str.data() + pos, n); 
+    }
+    
+    flex_string& append(const value_type* s, const size_type n)
+    { 
+        Invariant checker(*this); 
+        (void) checker; 
+        static std::less_equal<const value_type*> le;
+        if (le(&*begin(), s) && le(s, &*end())) // aliasing
+        {
+            const size_type offset = s - &*begin();
+            Storage::reserve(size() + n);
+            s = &*begin() + offset;
+        }
+        Storage::append(s, s + n); 
+        return *this;
+    }
+    
+    flex_string& append(const value_type* s)
+    { return append(s, traits_type::length(s)); }
+    
+    flex_string& append(size_type n, value_type c)
+    { 
+        resize(size() + n, c);
+        return *this;
+    }
+    
+    template<class InputIterator>
+    flex_string& append(InputIterator first, InputIterator last)
+    {
+        insert(end(), first, last);
+        return *this;
+    }
+    
+    void push_back(const value_type c) // primitive
+    { 
+        const size_type cap = capacity();
+        if (size() == cap)
+        {
+            reserve(cap << 1u);
+        }
+        Storage::append(&c, &c + 1);
+    }
+
+    flex_string& assign(const flex_string& str)
+    { 
+        if (&str == this) return *this;
+        return assign(str.data(), str.size());
+    }
+    
+    flex_string& assign(const flex_string& str, const size_type pos,
+        size_type n)
+    { 
+        const size_type sz = str.size();
+        Enforce(pos <= sz, static_cast<std::out_of_range*>(0), "");
+        Procust(n, sz - pos);
+        return assign(str.data() + pos, n);
+    }
+    
+    flex_string& assign(const value_type* s, const size_type n)
+    {
+        Invariant checker(*this); 
+        (void) checker; 
+        if (size() >= n)
+        {
+            std::copy(s, s + n, begin());
+            resize(n);
+        }
+        else
+        {
+            const value_type *const s2 = s + size();
+            std::copy(s, s2, begin());
+            append(s2, n - size());
+        }
+        return *this;
+    }
+    
+    flex_string& assign(const value_type* s)
+    { return assign(s, traits_type::length(s)); }
+    
+    template <class ItOrLength, class ItOrChar>
+    flex_string& assign(ItOrLength first_or_n, ItOrChar last_or_c)
+    { return replace(begin(), end(), first_or_n, last_or_c); }
+    
+    flex_string& insert(size_type pos1, const flex_string& str)
+    { return insert(pos1, str.data(), str.size()); }
+    
+    flex_string& insert(size_type pos1, const flex_string& str,
+        size_type pos2, size_type n)
+    { 
+        Enforce(pos2 <= str.length(), static_cast<std::out_of_range*>(0), "");
+        Procust(n, str.length() - pos2);
+        return insert(pos1, str.data() + pos2, n); 
+    }
+    
+    flex_string& insert(size_type pos, const value_type* s, size_type n)
+    { 
+        Enforce(pos <= length(), static_cast<std::out_of_range*>(0), "");
+        insert(begin() + pos, s, s + n); 
+        return *this;
+    }
+    
+    flex_string& insert(size_type pos, const value_type* s)
+    { return insert(pos, s, traits_type::length(s)); }
+    
+    flex_string& insert(size_type pos, size_type n, value_type c)
+    {
+        Enforce(pos <= length(), static_cast<std::out_of_range*>(0), "");
+        insert(begin() + pos, n, c);
+        return *this;
+    }
+    
+    iterator insert(const iterator p, const value_type c) 
+    {
+        const size_type pos = p - begin();
+        insert(p, 1, c);
+        return begin() + pos;
+    }
+    
+private:
+    template <int i> class Selector {};
+
+    flex_string& InsertImplDiscr(iterator p, 
+        size_type n, value_type c, Selector<1>)
+    { 
+        Invariant checker(*this); 
+        (void) checker; 
+        assert(p >= begin() && p <= end());
+        if (capacity() - size() < n)
+        {
+            const size_type sz = p - begin();
+            reserve(size() + n);
+            p = begin() + sz;
+        }
+        const iterator oldEnd = end();
+        //if (p + n < oldEnd) // replaced because of crash (pk)
+        if( n < size_type(oldEnd - p))
+        {
+            append(oldEnd - n, oldEnd);
+            //std::copy(
+            //    reverse_iterator(oldEnd - n), 
+            //    reverse_iterator(p), 
+            //    reverse_iterator(oldEnd));
+            flex_string_details::pod_move(&*p, &*oldEnd - n, &*p + n);
+            std::fill(p, p + n, c);
+        }
+        else
+        {
+            append(n - (end() - p), c);
+            append(p, oldEnd);
+            std::fill(p, oldEnd, c);
+        }
+        return *this;
+    }    
+
+    template<class InputIterator>
+    flex_string& InsertImplDiscr(iterator i,
+        InputIterator b, InputIterator e, Selector<0>)
+    { 
+        InsertImpl(i, b, e, 
+            typename std::iterator_traits<InputIterator>::iterator_category());
+        return *this;
+    }
+
+    template <class FwdIterator>
+    void InsertImpl(iterator i,
+        FwdIterator s1, FwdIterator s2, std::forward_iterator_tag)
+    { 
+        Invariant checker(*this); 
+        (void) checker;
+        const size_type pos = i - begin();
+        const typename std::iterator_traits<FwdIterator>::difference_type n2 = 
+            std::distance(s1, s2);
+        assert(n2 >= 0);
+        using namespace flex_string_details;
+        assert(pos <= size());
+
+        const typename std::iterator_traits<FwdIterator>::difference_type maxn2 = 
+            capacity() - size();
+        if (maxn2 < n2)
+        {
+            // realloc the string
+            static const std::less_equal<const value_type*> le = 
+                std::less_equal<const value_type*>();
+            assert(!(le(&*begin(), &*s1) && le(&*s1, &*end())));
+            reserve(size() + n2);
+            i = begin() + pos;
+        }
+        if (pos + n2 <= size())
+        {
+            //const iterator oldEnd = end();
+            //Storage::append(oldEnd - n2, n2);
+            //std::copy(i, oldEnd - n2, i + n2);
+            const iterator tailBegin = end() - n2;
+            Storage::append(tailBegin, tailBegin + n2);
+            //std::copy(i, tailBegin, i + n2);
+            std::copy(reverse_iterator(tailBegin), reverse_iterator(i), 
+                reverse_iterator(tailBegin + n2));
+            std::copy(s1, s2, i);
+        }
+        else
+        {
+            FwdIterator t = s1;
+            const size_type old_size = size();
+            std::advance(t, old_size - pos);
+            assert(std::distance(t, s2) >= 0);
+            Storage::append(t, s2);
+            Storage::append(data() + pos, data() + old_size);
+            std::copy(s1, t, i);
+        }
+    }
+
+    template <class InputIterator>
+    void InsertImpl(iterator i1, iterator i2,
+        InputIterator b, InputIterator e, std::input_iterator_tag)
+    { 
+        flex_string temp(begin(), i1);
+        for (; b != e; ++b)
+        {
+            temp.push_back(*b);
+        }
+        temp.append(i2, end());
+        swap(temp);
+    }
+
+public:
+    template <class ItOrLength, class ItOrChar>
+    void insert(iterator p, ItOrLength first_or_n, ItOrChar last_or_c)
+    { 
+        Selector<std::numeric_limits<ItOrLength>::is_specialized> sel;
+        InsertImplDiscr(p, first_or_n, last_or_c, sel);
+    }
+    
+    flex_string& erase(size_type pos = 0, size_type n = npos)
+    { 
+        Invariant checker(*this); 
+        (void) checker;
+        Enforce(pos <= length(), static_cast<std::out_of_range*>(0), "");
+        Procust(n, length() - pos);
+        std::copy(begin() + pos + n, end(), begin() + pos);
+        resize(length() - n);
+        return *this;
+    }
+    
+    iterator erase(iterator position)
+    {
+        const size_type pos(position - begin());
+        erase(pos, 1);
+        return begin() + pos;
+    }
+    
+    iterator erase(iterator first, iterator last)
+    {
+        const size_type pos(first - begin());
+        erase(pos, last - first);
+        return begin() + pos;
+    }
+
+    // Replaces at most n1 chars of *this, starting with pos1 with the content of str
+    flex_string& replace(size_type pos1, size_type n1, const flex_string& str)
+    { return replace(pos1, n1, str.data(), str.size()); }
+    
+    // Replaces at most n1 chars of *this, starting with pos1,
+    // with at most n2 chars of str starting with pos2
+    flex_string& replace(size_type pos1, size_type n1, const flex_string& str,
+        size_type pos2, size_type n2)
+    {
+        Enforce(pos2 <= str.length(), static_cast<std::out_of_range*>(0), "");
+        return replace(pos1, n1, str.data() + pos2, 
+            Min(n2, str.size() - pos2));
+    }
+    
+/*
+    // Replaces at most n1 chars of *this, starting with pos,
+    // with at most n2 chars of str.
+    // str must have at least n2 chars.
+    flex_string& replace(const size_type pos, size_type n1, 
+        const value_type* s1, const size_type n2)
+    {
+        Invariant checker(*this); 
+        (void) checker;
+        Enforce(pos <= size(), (std::out_of_range*)0, "");
+        Procust(n1, size() - pos);
+        const iterator b = begin() + pos;
+        return replace(b, b + n1, s1, s1 + n2);
+        using namespace flex_string_details;
+        const int delta = int(n2 - n1);
+        static const std::less_equal<const value_type*> le;
+        const bool aliased = le(&*begin(), s1) && le(s1, &*end());
+
+        // From here on we're dealing with an aliased replace
+        if (delta <= 0)
+        {
+            // simple case, we're shrinking
+            pod_move(s1, s1 + n2, &*begin() + pos);
+            pod_move(&*begin() + pos + n1, &*end(), &*begin() + pos + n1 + delta);
+            resize(size() + delta);
+            return *this;
+        }
+
+        // From here on we deal with aliased growth
+        if (capacity() < size() + delta)
+        {
+            // realloc the string
+            const size_type offset = s1 - data();
+            reserve(size() + delta);
+            s1 = data() + offset;
+        }
+
+        const value_type* s2 = s1 + n2;
+        value_type* d1 = &*begin() + pos;
+        value_type* d2 = d1 + n1;
+
+        const int tailLen = int(&*end() - d2);
+
+        if (delta <= tailLen)
+        {
+            value_type* oldEnd = &*end();
+            // simple case
+            Storage::append(oldEnd - delta, delta);
+
+            pod_move(d2, d2 + (tailLen - delta), d2 + delta);
+            if (le(d2, s1))
+            {
+                pod_copy(s1 + delta, s2 + delta, d1);
+            }
+            else
+            {
+                // d2 > s1
+                if (le(d2, s2))
+                {
+                    pod_move(s1, d2, d1);
+                    pod_move(d2 + delta, s2 + delta, d1 + (d2 - s1));
+                }
+                else
+                {
+                    pod_move(s1, s2, d1);
+                }
+            }
+        }
+        else
+        {
+            const size_type sz = delta - tailLen;
+            Storage::append(s2 - sz, sz);
+            Storage::append(d2, tailLen);
+            pod_move(s1, s2 - (delta - tailLen), d1);
+        }
+        return *this;
+    }
+*/
+
+    // Replaces at most n1 chars of *this, starting with pos, with chars from s
+    flex_string& replace(size_type pos, size_type n1, const value_type* s)
+    { return replace(pos, n1, s, traits_type::length(s)); }
+    
+    // Replaces at most n1 chars of *this, starting with pos, with n2 occurences of c
+    // consolidated with
+    // Replaces at most n1 chars of *this, starting with pos,
+    // with at most n2 chars of str.
+    // str must have at least n2 chars.
+    template <class StrOrLength, class NumOrChar>
+    flex_string& replace(size_type pos, size_type n1, 
+        StrOrLength s_or_n2, NumOrChar n_or_c)
+    {
+        Invariant checker(*this); 
+        (void) checker;
+        Enforce(pos <= size(), static_cast<std::out_of_range*>(0), "");
+        Procust(n1, length() - pos);
+        const iterator b = begin() + pos;
+        return replace(b, b + n1, s_or_n2, n_or_c);
+    }
+        
+    flex_string& replace(iterator i1, iterator i2, const flex_string& str)
+    { return replace(i1, i2, str.data(), str.length()); }
+    
+    flex_string& replace(iterator i1, iterator i2, const value_type* s)
+    { return replace(i1, i2, s, traits_type::length(s)); }
+    
+private:
+    flex_string& ReplaceImplDiscr(iterator i1, iterator i2, 
+        const value_type* s, size_type n, Selector<2>)
+    { 
+        assert(i1 <= i2);
+        assert(begin() <= i1 && i1 <= end());
+        assert(begin() <= i2 && i2 <= end());
+        return replace(i1, i2, s, s + n); 
+    }
+    
+    flex_string& ReplaceImplDiscr(iterator i1, iterator i2,
+        size_type n2, value_type c, Selector<1>)
+    { 
+        const size_type n1 = i2 - i1;
+        if (n1 > n2)
+        {
+            std::fill(i1, i1 + n2, c);
+            erase(i1 + n2, i2);
+        }
+        else
+        {
+            std::fill(i1, i2, c);
+            insert(i2, n2 - n1, c);
+        }
+        return *this;
+    }    
+
+    template <class InputIterator>
+    flex_string& ReplaceImplDiscr(iterator i1, iterator i2,
+        InputIterator b, InputIterator e, Selector<0>)
+    { 
+        ReplaceImpl(i1, i2, b, e, 
+            typename std::iterator_traits<InputIterator>::iterator_category());
+        return *this;
+    }
+
+    template <class FwdIterator>
+    void ReplaceImpl(iterator i1, iterator i2,
+        FwdIterator s1, FwdIterator s2, std::forward_iterator_tag)
+    { 
+        Invariant checker(*this); 
+        (void) checker;
+        const typename std::iterator_traits<iterator>::difference_type n1 = 
+            i2 - i1;
+        assert(n1 >= 0);
+        const typename std::iterator_traits<FwdIterator>::difference_type n2 = 
+            std::distance(s1, s2);
+        assert(n2 >= 0);
+
+        // Handle aliased replace
+        static const std::less_equal<const value_type*> le = 
+            std::less_equal<const value_type*>();
+        const bool aliased = le(&*begin(), &*s1) && le(&*s1, &*end());
+        if (aliased /* && capacity() < size() - n1 + n2 */)
+        {
+            // Aliased replace, copy to new string
+            flex_string temp;
+            temp.reserve(size() - n1 + n2);
+            temp.append(begin(), i1).append(s1, s2).append(i2, end());
+            swap(temp);
+            return;
+        }
+
+        if (n1 > n2)
+        {
+            // shrinks
+            std::copy(s1, s2, i1);
+            erase(i1 + n2, i2);
+        }
+        else
+        {
+            // grows
+            flex_string_details::copy_n(s1, n1, i1);
+            std::advance(s1, n1);
+            insert(i2, s1, s2);
+        }
+    }
+
+    template <class InputIterator>
+    void ReplaceImpl(iterator i1, iterator i2,
+        InputIterator b, InputIterator e, std::input_iterator_tag)
+    {
+        flex_string temp(begin(), i1);
+        temp.append(b, e).append(i2, end());
+        swap(temp);
+    }
+
+public:
+    template <class T1, class T2>
+    flex_string& replace(iterator i1, iterator i2,
+        T1 first_or_n_or_s, T2 last_or_c_or_n)
+    { 
+        const bool 
+            num1 = std::numeric_limits<T1>::is_specialized,
+            num2 = std::numeric_limits<T2>::is_specialized;
+        return ReplaceImplDiscr(i1, i2, first_or_n_or_s, last_or_c_or_n, 
+            Selector<num1 ? (num2 ? 1 : -1) : (num2 ? 2 : 0)>()); 
+    }
+       
+    size_type copy(value_type* s, size_type n, size_type pos = 0) const
+    {
+        Enforce(pos <= size(), static_cast<std::out_of_range*>(0), "");
+        Procust(n, size() - pos);
+        
+        flex_string_details::pod_copy(
+            data() + pos,
+            data() + pos + n,
+            s);
+        return n;
+    }
+    
+    void swap(flex_string& rhs)
+    {
+        Storage& srhs = rhs;
+        this->Storage::swap(srhs);
+    }
+    
+    // 21.3.6 string operations:
+    const value_type* c_str() const
+    { return Storage::c_str(); }
+    
+    const value_type* data() const
+    { return Storage::data(); }
+    
+    allocator_type get_allocator() const
+    { return Storage::get_allocator(); }
+    
+    size_type find(const flex_string& str, size_type pos = 0) const
+    { return find(str.data(), pos, str.length()); }
+    
+    size_type find (const value_type* s, size_type pos, size_type n) const
+    {
+        for (; pos <= size(); ++pos)
+        {
+            if (traits_type::compare(data() + pos, s, n) == 0)
+            {
+                return pos;
+            }
+        }
+        return npos;
+    }
+    
+    size_type find (const value_type* s, size_type pos = 0) const
+    { return find(s, pos, traits_type::length(s)); }
+
+    size_type find (value_type c, size_type pos = 0) const
+    { return find(&c, pos, 1); }
+    
+    size_type rfind(const flex_string& str, size_type pos = npos) const
+    { return rfind(str.data(), pos, str.length()); }
+    
+    size_type rfind(const value_type* s, size_type pos, size_type n) const
+    {
+        if (n > length()) return npos;
+        pos = Min(pos, length() - n);
+        if (n == 0) return pos;
+
+        const_iterator i(begin() + pos);
+        for (; ; --i)
+        {
+            if (traits_type::eq(*i, *s) 
+                && traits_type::compare(&*i, s, n) == 0)
+            {
+                return i - begin();
+            }
+            if (i == begin()) break;
+        }
+        return npos;
+    }
+
+    size_type rfind(const value_type* s, size_type pos = npos) const
+    { return rfind(s, pos, traits_type::length(s)); }
+
+    size_type rfind(value_type c, size_type pos = npos) const
+    { return rfind(&c, pos, 1); }
+    
+    size_type find_first_of(const flex_string& str, size_type pos = 0) const
+    { return find_first_of(str.data(), pos, str.length()); }
+    
+    size_type find_first_of(const value_type* s, 
+        size_type pos, size_type n) const
+    {
+        if (pos > length() || n == 0) return npos;
+        const_iterator i(begin() + pos),
+            finish(end());
+        for (; i != finish; ++i)
+        {
+            if (traits_type::find(s, n, *i) != 0)
+            {
+                return i - begin();
+            }
+        }
+        return npos;
+    }
+        
+    size_type find_first_of(const value_type* s, size_type pos = 0) const
+    { return find_first_of(s, pos, traits_type::length(s)); }
+    
+    size_type find_first_of(value_type c, size_type pos = 0) const
+    { return find_first_of(&c, pos, 1); }
+    
+    size_type find_last_of (const flex_string& str,
+        size_type pos = npos) const
+    { return find_last_of(str.data(), pos, str.length()); }
+    
+    size_type find_last_of (const value_type* s, size_type pos, 
+        size_type n) const
+    {
+        if (!empty() && n > 0)
+        {
+            pos = Min(pos, length() - 1);
+            const_iterator i(begin() + pos);
+            for (;; --i)
+            {
+                if (traits_type::find(s, n, *i) != 0)
+                {
+                    return i - begin();
+                }
+                if (i == begin()) break;
+            }
+        }
+        return npos;
+    }
+
+    size_type find_last_of (const value_type* s, 
+        size_type pos = npos) const
+    { return find_last_of(s, pos, traits_type::length(s)); }
+
+    size_type find_last_of (value_type c, size_type pos = npos) const
+    { return find_last_of(&c, pos, 1); }
+    
+    size_type find_first_not_of(const flex_string& str,
+        size_type pos = 0) const
+    { return find_first_not_of(str.data(), pos, str.size()); }
+    
+    size_type find_first_not_of(const value_type* s, size_type pos,
+        size_type n) const
+    {
+        if (pos < length())
+        {
+            const_iterator 
+                i(begin() + pos),
+                finish(end());
+            for (; i != finish; ++i)
+            {
+                if (traits_type::find(s, n, *i) == 0)
+                {
+                    return i - begin();
+                }
+            }
+        }
+        return npos;
+    }
+    
+    size_type find_first_not_of(const value_type* s, 
+        size_type pos = 0) const
+    { return find_first_not_of(s, pos, traits_type::length(s)); }
+        
+    size_type find_first_not_of(value_type c, size_type pos = 0) const
+    { return find_first_not_of(&c, pos, 1); }
+    
+    size_type find_last_not_of(const flex_string& str,
+        size_type pos = npos) const
+    { return find_last_not_of(str.data(), pos, str.length()); }
+    
+    size_type find_last_not_of(const value_type* s, size_type pos,
+        size_type n) const
+    {
+        if (!this->empty())
+        {
+            pos = Min(pos, size() - 1);
+            const_iterator i(begin() + pos);
+            for (;; --i)
+            {
+                if (traits_type::find(s, n, *i) == 0)
+                {
+                    return i - begin();
+                }
+                if (i == begin()) break;
+            }
+        }
+        return npos;
+    }
+
+    size_type find_last_not_of(const value_type* s, 
+        size_type pos = npos) const
+    { return find_last_not_of(s, pos, traits_type::length(s)); }
+    
+    size_type find_last_not_of (value_type c, size_type pos = npos) const
+    { return find_last_not_of(&c, pos, 1); }
+    
+    flex_string substr(size_type pos = 0, size_type n = npos) const
+    {
+        Enforce(pos <= size(), static_cast<std::out_of_range*>(0), "");
+        return flex_string(data() + pos, Min(n, size() - pos));
+    }
+
+    int compare(const flex_string& str) const
+    { 
+        // FIX due to Goncalo N M de Carvalho July 18, 2005
+        return compare(0, size(), str);
+    }
+    
+    int compare(size_type pos1, size_type n1,
+        const flex_string& str) const
+    { return compare(pos1, n1, str.data(), str.size()); }
+    
+    // FIX to compare: added the TC 
+    // (http://www.comeaucomputing.com/iso/lwg-defects.html number 5)
+    // Thanks to Caleb Epstein for the fix
+
+    int compare(size_type pos1, size_type n1,
+        const value_type* s) const
+    {
+        return compare(pos1, n1, s, traits_type::length(s));
+    }
+    
+    int compare(size_type pos1, size_type n1,
+        const value_type* s, size_type n2) const
+    {
+        Enforce(pos1 <= size(), static_cast<std::out_of_range*>(0), "");
+        Procust(n1, size() - pos1);
+        const int r = traits_type::compare(data(), s, Min(n1, n2));
+        return 
+            r != 0 ? r :
+            n1 > n2 ? 1 :
+            n1 < n2 ? -1 :
+            0;
+    }
+    
+    int compare(size_type pos1, size_type n1,
+        const flex_string& str,
+        size_type pos2, size_type n2) const
+    {
+        Enforce(pos2 <= str.size(), static_cast<std::out_of_range*>(0), "");
+        return compare(pos1, n1, str.data() + pos2, Min(n2, str.size() - pos2));
+    }
+
+    int compare(const value_type* s) const
+    { 
+        return traits_type::compare(data(), s, Max(length(),traits_type::length(s))); 
+    }
+};
+
+// non-member functions
+template <typename E, class T, class A, class S>
+flex_string<E, T, A, S> operator+(const flex_string<E, T, A, S>& lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{
+    flex_string<E, T, A, S> result;
+    result.reserve(lhs.size() + rhs.size());
+    result.append(lhs).append(rhs);
+    return result;
+}
+
+template <typename E, class T, class A, class S>
+flex_string<E, T, A, S> operator+(const typename flex_string<E, T, A, S>::value_type* lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{
+    flex_string<E, T, A, S> result;
+    const typename flex_string<E, T, A, S>::size_type len = 
+        flex_string<E, T, A, S>::traits_type::length(lhs);
+    result.reserve(len + rhs.size());
+    result.append(lhs, len).append(rhs);
+    return result;
+}
+
+template <typename E, class T, class A, class S>
+flex_string<E, T, A, S> operator+(
+    typename flex_string<E, T, A, S>::value_type lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{
+    flex_string<E, T, A, S> result;
+    result.reserve(1 + rhs.size());
+    result.push_back(lhs);
+    result.append(rhs);
+    return result;
+}
+
+template <typename E, class T, class A, class S>
+flex_string<E, T, A, S> operator+(const flex_string<E, T, A, S>& lhs, 
+    const typename flex_string<E, T, A, S>::value_type* rhs)
+{
+    typedef typename flex_string<E, T, A, S>::size_type size_type;
+    typedef typename flex_string<E, T, A, S>::traits_type traits_type;
+
+    flex_string<E, T, A, S> result;
+    const size_type len = traits_type::length(rhs);
+    result.reserve(lhs.size() + len);
+    result.append(lhs).append(rhs, len);
+    return result;
+}
+
+template <typename E, class T, class A, class S>
+flex_string<E, T, A, S> operator+(const flex_string<E, T, A, S>& lhs, 
+    typename flex_string<E, T, A, S>::value_type rhs)
+{
+    flex_string<E, T, A, S> result;
+    result.reserve(lhs.size() + 1);
+    result.append(lhs);
+    result.push_back(rhs);
+    return result;
+}
+
+template <typename E, class T, class A, class S>
+bool operator==(const flex_string<E, T, A, S>& lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return lhs.compare(rhs) == 0; }
+
+template <typename E, class T, class A, class S>
+bool operator==(const typename flex_string<E, T, A, S>::value_type* lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return rhs == lhs; }
+
+template <typename E, class T, class A, class S>
+bool operator==(const flex_string<E, T, A, S>& lhs, 
+    const typename flex_string<E, T, A, S>::value_type* rhs)
+{ return lhs.compare(rhs) == 0; }
+
+template <typename E, class T, class A, class S>
+bool operator!=(const flex_string<E, T, A, S>& lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return !(lhs == rhs); }
+
+template <typename E, class T, class A, class S>
+bool operator!=(const typename flex_string<E, T, A, S>::value_type* lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return !(lhs == rhs); }
+
+template <typename E, class T, class A, class S>
+bool operator!=(const flex_string<E, T, A, S>& lhs, 
+    const typename flex_string<E, T, A, S>::value_type* rhs)
+{ return !(lhs == rhs); }
+
+template <typename E, class T, class A, class S>
+bool operator<(const flex_string<E, T, A, S>& lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return lhs.compare(rhs) < 0; }
+
+template <typename E, class T, class A, class S>
+bool operator<(const flex_string<E, T, A, S>& lhs, 
+    const typename flex_string<E, T, A, S>::value_type* rhs)
+{ return lhs.compare(rhs) < 0; }
+
+template <typename E, class T, class A, class S>
+bool operator<(const typename flex_string<E, T, A, S>::value_type* lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return rhs.compare(lhs) > 0; }
+
+template <typename E, class T, class A, class S>
+bool operator>(const flex_string<E, T, A, S>& lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return rhs < lhs; }
+
+template <typename E, class T, class A, class S>
+bool operator>(const flex_string<E, T, A, S>& lhs, 
+    const typename flex_string<E, T, A, S>::value_type* rhs)
+{ return rhs < lhs; }
+
+template <typename E, class T, class A, class S>
+bool operator>(const typename flex_string<E, T, A, S>::value_type* lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return rhs < lhs; }
+
+template <typename E, class T, class A, class S>
+bool operator<=(const flex_string<E, T, A, S>& lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return !(rhs < lhs); }
+
+template <typename E, class T, class A, class S>
+bool operator<=(const flex_string<E, T, A, S>& lhs, 
+    const typename flex_string<E, T, A, S>::value_type* rhs)
+{ return !(rhs < lhs); }
+
+template <typename E, class T, class A, class S>
+bool operator<=(const typename flex_string<E, T, A, S>::value_type* lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return !(rhs < lhs); }
+
+template <typename E, class T, class A, class S>
+bool operator>=(const flex_string<E, T, A, S>& lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return !(lhs < rhs); }
+
+template <typename E, class T, class A, class S>
+bool operator>=(const flex_string<E, T, A, S>& lhs, 
+    const typename flex_string<E, T, A, S>::value_type* rhs)
+{ return !(lhs < rhs); }
+
+template <typename E, class T, class A, class S>
+bool operator>=(const typename flex_string<E, T, A, S>::value_type* lhs, 
+    const flex_string<E, T, A, S>& rhs)
+{ return !(lhs < rhs); }
+
+// subclause 21.3.7.8:
+//void swap(flex_string<E, T, A, S>& lhs, flex_string<E, T, A, S>& rhs);    // to do
+
+template <typename E, class T, class A, class S>
+std::basic_istream<typename flex_string<E, T, A, S>::value_type, 
+    typename flex_string<E, T, A, S>::traits_type>&
+operator>>(
+    std::basic_istream<typename flex_string<E, T, A, S>::value_type, 
+        typename flex_string<E, T, A, S>::traits_type>& is,
+    flex_string<E, T, A, S>& str);
+
+template <typename E, class T, class A, class S>
+std::basic_ostream<typename flex_string<E, T, A, S>::value_type,
+    typename flex_string<E, T, A, S>::traits_type>&
+operator<<(
+    std::basic_ostream<typename flex_string<E, T, A, S>::value_type, 
+        typename flex_string<E, T, A, S>::traits_type>& os,
+    const flex_string<E, T, A, S>& str)
+{ return os << str.c_str(); }
+
+template <typename E, class T, class A, class S>
+std::basic_istream<typename flex_string<E, T, A, S>::value_type,
+    typename flex_string<E, T, A, S>::traits_type>&
+getline(
+    std::basic_istream<typename flex_string<E, T, A, S>::value_type, 
+        typename flex_string<E, T, A, S>::traits_type>& is,
+    flex_string<E, T, A, S>& str,
+    typename flex_string<E, T, A, S>::value_type delim);
+
+template <typename E, class T, class A, class S>
+std::basic_istream<typename flex_string<E, T, A, S>::value_type, 
+    typename flex_string<E, T, A, S>::traits_type>&
+getline(
+    std::basic_istream<typename flex_string<E, T, A, S>::value_type, 
+        typename flex_string<E, T, A, S>::traits_type>& is,
+    flex_string<E, T, A, S>& str);
+
+template <typename E1, class T, class A, class S>
+const typename flex_string<E1, T, A, S>::size_type
+flex_string<E1, T, A, S>::npos = static_cast<typename flex_string<E1, T, A, S>::size_type>(-1);
+
+#endif // FLEX_STRING_SHELL_INC_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/simplestringstorage.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/simplestringstorage.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/simplestringstorage.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,285 @@
+////////////////////////////////////////////////////////////////////////////////
+// flex_string
+// Copyright (c) 2001 by Andrei Alexandrescu
+// Permission to use, copy, modify, distribute and sell this software for any
+//     purpose is hereby granted without fee, provided that the above copyright
+//     notice appear in all copies and that both that copyright notice and this
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the
+//     suitability of this software for any purpose. It is provided "as is"
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef SIMPLE_STRING_STORAGE_INC_
+#define SIMPLE_STRING_STORAGE_INC_
+
+// $Id: simplestringstorage.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+/* This is the template for a storage policy
+////////////////////////////////////////////////////////////////////////////////
+template <typename E, class A = @>
+class StoragePolicy
+{
+    typedef E value_type;
+    typedef @ iterator;
+    typedef @ const_iterator;
+    typedef A allocator_type;
+    typedef @ size_type;
+    
+    StoragePolicy(const StoragePolicy& s);
+    StoragePolicy(const A&);
+    StoragePolicy(const E* s, size_type len, const A&);
+    StoragePolicy(size_type len, E c, const A&);
+    ~StoragePolicy();
+
+    iterator begin();
+    const_iterator begin() const;
+    iterator end();
+    const_iterator end() const;
+    
+    size_type size() const;
+    size_type max_size() const;
+    size_type capacity() const;
+
+    void reserve(size_type res_arg);
+
+    template <class ForwardIterator>
+    void append(ForwardIterator b, ForwardIterator e);
+
+    void resize(size_type newSize, E fill);
+
+    void swap(StoragePolicy& rhs);
+    
+    const E* c_str() const;
+    const E* data() const;
+    
+    A get_allocator() const;
+};
+////////////////////////////////////////////////////////////////////////////////
+*/
+
+#include <memory>
+#include <algorithm>
+#include <functional>
+#include <cassert>
+#include <limits>
+#include <stdexcept>
+
+
+////////////////////////////////////////////////////////////////////////////////
+// class template SimpleStringStorage
+// Allocates memory with malloc
+////////////////////////////////////////////////////////////////////////////////
+
+template <typename E, class A = std::allocator<E> >
+class SimpleStringStorage
+{
+    // The "public" below exists because MSVC can't do template typedefs
+public:
+    struct Data
+    {
+        Data() : pEnd_(buffer_), pEndOfMem_(buffer_) { buffer_[0] = E(0); }
+
+        E* pEnd_;
+        E* pEndOfMem_;
+        E buffer_[1];
+    };
+    static const Data emptyString_;
+    
+    typedef typename A::size_type size_type;
+
+private:
+    Data* pData_;
+
+    void Init(size_type size, size_type capacity)
+    {
+        assert(size <= capacity);
+        if (capacity == 0) 
+        {
+            pData_ = const_cast<Data*>(&emptyString_);
+        }
+        else
+        {
+            // 11-17-2000: comment added: 
+            //     No need to allocate (capacity + 1) to 
+            //     accomodate the terminating 0, because Data already
+            //     has one one character in there
+            pData_ = static_cast<Data*>(
+                malloc(sizeof(Data) + capacity * sizeof(E)));
+            if (!pData_) throw std::bad_alloc();
+            pData_->pEnd_ = pData_->buffer_ + size;
+            pData_->pEndOfMem_ = pData_->buffer_ + capacity;
+        }
+    }
+    
+private:
+    // Warning - this doesn't initialize pData_. Used in reserve()
+    SimpleStringStorage()
+    { }
+    
+public:
+    typedef E value_type;
+    typedef E* iterator;
+    typedef const E* const_iterator;
+    typedef A allocator_type;
+    typedef typename A::reference reference;
+
+    
+    SimpleStringStorage(const SimpleStringStorage& rhs) 
+    {
+        const size_type sz = rhs.size();
+        Init(sz, sz);
+        if (sz) flex_string_details::pod_copy(rhs.begin(), rhs.end(), begin());
+    }
+    
+    SimpleStringStorage(const SimpleStringStorage& s, 
+        flex_string_details::Shallow) 
+        : pData_(s.pData_)
+    {
+    }
+    
+    SimpleStringStorage(const A&)
+    { pData_ = const_cast<Data*>(&emptyString_); }
+    
+    SimpleStringStorage(const E* s, size_type len, const A&)
+    {
+        Init(len, len);
+        flex_string_details::pod_copy(s, s + len, begin());
+    }
+
+    SimpleStringStorage(size_type len, E c, const A&)
+    {
+        Init(len, len);
+        flex_string_details::pod_fill(begin(), end(), c);
+    }
+    
+    SimpleStringStorage& operator=(const SimpleStringStorage& rhs)
+    {
+        const size_type sz = rhs.size();
+        reserve(sz);
+        flex_string_details::pod_copy(&*rhs.begin(), &*rhs.end(), begin());
+        pData_->pEnd_ = &*begin() + sz;
+        return *this;
+    }
+
+    ~SimpleStringStorage()
+    {
+        assert(begin() <= end());
+        if (pData_ != &emptyString_) free(pData_);
+    }
+
+    iterator begin()
+    { return pData_->buffer_; }
+    
+    const_iterator begin() const
+    { return pData_->buffer_; }
+    
+    iterator end()
+    { return pData_->pEnd_; }
+    
+    const_iterator end() const
+    { return pData_->pEnd_; }
+    
+    size_type size() const
+    { return pData_->pEnd_ - pData_->buffer_; }
+
+    size_type max_size() const
+    { return size_t(-1) / sizeof(E) - sizeof(Data) - 1; }
+
+    size_type capacity() const
+    { return pData_->pEndOfMem_ - pData_->buffer_; }
+
+    void reserve(size_type res_arg)
+    {
+        if (res_arg <= capacity())
+        {
+            // @@@ insert shrinkage here if you wish
+            return;
+        }
+
+        if (pData_ == &emptyString_) 
+        {
+            Init(0, res_arg);
+        }
+        else
+        {
+            const size_type sz = size();
+
+            void* p = realloc(pData_, 
+                sizeof(Data) + res_arg * sizeof(E));
+            if (!p) throw std::bad_alloc();
+        
+            if (p != pData_)
+            {
+                pData_ = static_cast<Data*>(p);
+                pData_->pEnd_ = pData_->buffer_ + sz;
+            }
+            pData_->pEndOfMem_ = pData_->buffer_ + res_arg;
+        }
+    }
+
+    template <class InputIterator>
+    void append(InputIterator b, InputIterator e)
+    {
+        const size_type 
+            sz = std::distance(b, e),
+            neededCapacity = size() + sz;
+        if (capacity() < neededCapacity)
+        {
+            static std::less_equal<const E*> le;
+            (void) le;
+            assert(!(le(begin(), &*b) && le(&*b, end()))); // no aliasing
+            reserve(neededCapacity);
+        }
+        std::copy(b, e, end());
+        pData_->pEnd_ += sz;
+    }
+    
+    void resize(size_type newSize, E fill)
+    {
+        const int delta = int(newSize - size());
+        if (delta == 0) return;
+
+        if (delta > 0)
+        {
+            if (newSize > capacity()) 
+            {
+                reserve(newSize);
+            }
+            E* e = &*end();
+            flex_string_details::pod_fill(e, e + delta, fill);
+        }
+        pData_->pEnd_ = pData_->buffer_ + newSize;
+    }
+
+    void swap(SimpleStringStorage& rhs)
+    {
+        std::swap(pData_, rhs.pData_);
+    }
+    
+    const E* c_str() const
+    {
+        if (pData_ != &emptyString_) *pData_->pEnd_ = E();
+        return pData_->buffer_; 
+    }
+
+    const E* data() const
+    { return pData_->buffer_; }
+    
+    A get_allocator() const
+    { return A(); }
+};
+
+template <typename E, class A>
+const typename SimpleStringStorage<E, A>::Data
+SimpleStringStorage<E, A>::emptyString_;
+//{ 
+//    const_cast<E*>(SimpleStringStorage<E, A>::emptyString_.buffer_), 
+//    const_cast<E*>(SimpleStringStorage<E, A>::emptyString_.buffer_), 
+//    { E() }
+//};
+
+
+
+#endif // SIMPLE_STRING_STORAGE_INC_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/smallstringopt.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/smallstringopt.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/smallstringopt.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,395 @@
+////////////////////////////////////////////////////////////////////////////////
+// flex_string
+// Copyright (c) 2001 by Andrei Alexandrescu
+// Permission to use, copy, modify, distribute and sell this software for any
+//     purpose is hereby granted without fee, provided that the above copyright
+//     notice appear in all copies and that both that copyright notice and this
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the
+//     suitability of this software for any purpose. It is provided "as is"
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef SMALL_STRING_OPT_INC_
+#define SMALL_STRING_OPT_INC_
+
+// $Id: smallstringopt.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+////////////////////////////////////////////////////////////////////////////////
+// class template SmallStringOpt
+// Builds the small string optimization over any other storage
+////////////////////////////////////////////////////////////////////////////////
+
+/* This is the template for a storage policy
+////////////////////////////////////////////////////////////////////////////////
+template <typename E, class A = @>
+class StoragePolicy
+{
+    typedef E value_type;
+    typedef @ iterator;
+    typedef @ const_iterator;
+    typedef A allocator_type;
+    typedef @ size_type;
+    
+    StoragePolicy(const StoragePolicy& s);
+    StoragePolicy(const A&);
+    StoragePolicy(const E* s, size_type len, const A&);
+    StoragePolicy(size_type len, E c, const A&);
+    ~StoragePolicy();
+
+    iterator begin();
+    const_iterator begin() const;
+    iterator end();
+    const_iterator end() const;
+    
+    size_type size() const;
+    size_type max_size() const;
+    size_type capacity() const;
+
+    void reserve(size_type res_arg);
+
+    void append(const E* s, size_type sz);
+    
+    template <class InputIterator>
+    void append(InputIterator b, InputIterator e);
+
+    void resize(size_type newSize, E fill);
+
+    void swap(StoragePolicy& rhs);
+    
+    const E* c_str() const;
+    const E* data() const;
+    
+    A get_allocator() const;
+};
+////////////////////////////////////////////////////////////////////////////////
+*/
+
+#include <memory>
+#include <algorithm>
+#include <functional>
+#include <cassert>
+#include <limits>
+#include <stdexcept>
+#include "flex_string_details.h"
+
+////////////////////////////////////////////////////////////////////////////////
+// class template SmallStringOpt
+// Builds the small string optimization over any other storage
+////////////////////////////////////////////////////////////////////////////////
+
+template <class Storage, unsigned int threshold, 
+    typename Align = typename Storage::value_type*>
+class SmallStringOpt
+{
+public:
+    typedef typename Storage::value_type value_type;
+    typedef value_type* iterator;
+    typedef const value_type* const_iterator;
+    typedef typename Storage::allocator_type allocator_type;
+    typedef typename allocator_type::size_type size_type;
+    typedef typename Storage::reference reference;
+    
+private:
+    enum { temp1 = threshold * sizeof(value_type) > sizeof(Storage) 
+        ? threshold  * sizeof(value_type) 
+        : sizeof(Storage) };
+    
+    enum { temp2 = temp1 > sizeof(Align) ? temp1 : sizeof(Align) };
+
+public:
+    enum { maxSmallString = 
+        (temp2 + sizeof(value_type) - 1) / sizeof(value_type) };
+    
+private:
+    enum { magic = maxSmallString + 1 };
+    
+    union
+    {
+        mutable value_type buf_[maxSmallString + 1];
+        Align align_;
+    };
+    
+    Storage& GetStorage()
+    {
+        assert(buf_[maxSmallString] == magic);
+        Storage* p = reinterpret_cast<Storage*>(&buf_[0]);
+        return *p;
+    }
+    
+    const Storage& GetStorage() const
+    {
+        assert(buf_[maxSmallString] == magic);
+        const Storage *p = reinterpret_cast<const Storage*>(&buf_[0]);
+        return *p;
+    }
+    
+    bool Small() const
+    {
+        return buf_[maxSmallString] != magic;
+    }
+        
+public:
+    SmallStringOpt(const SmallStringOpt& s)
+    {
+        if (s.Small())
+        {
+            flex_string_details::pod_copy(
+                s.buf_, 
+                s.buf_ + s.size(), 
+                buf_);
+        }
+        else
+        {
+            new(buf_) Storage(s.GetStorage());
+        }
+        buf_[maxSmallString] = s.buf_[maxSmallString];
+    }
+    
+    SmallStringOpt(const allocator_type&)
+    {
+        buf_[maxSmallString] = maxSmallString;
+    }
+    
+    SmallStringOpt(const value_type* s, size_type len, const allocator_type& a)
+    {
+        if (len <= maxSmallString)
+        {
+            flex_string_details::pod_copy(s, s + len, buf_);
+            buf_[maxSmallString] = value_type(maxSmallString - len);
+        }
+        else
+        {
+            new(buf_) Storage(s, len, a);
+            buf_[maxSmallString] = magic;
+        }
+    }
+
+    SmallStringOpt(size_type len, value_type c, const allocator_type& a)
+    {
+        if (len <= maxSmallString)
+        {
+            flex_string_details::pod_fill(buf_, buf_ + len, c);
+            buf_[maxSmallString] = value_type(maxSmallString - len);
+        }
+        else
+        {
+            new(buf_) Storage(len, c, a);
+            buf_[maxSmallString] = magic;
+        }
+    }
+    
+    SmallStringOpt& operator=(const SmallStringOpt& rhs)
+    {
+        if (&rhs != this)
+        {
+            reserve(rhs.size());
+            resize(0, 0);
+            append(rhs.data(), rhs.data() + rhs.size());
+        }
+        return *this;
+    }
+
+    ~SmallStringOpt()
+    {
+        if (!Small()) GetStorage().~Storage();
+    }
+
+    iterator begin()
+    {
+        if (Small()) return buf_;
+        return &*GetStorage().begin(); 
+    }
+    
+    const_iterator begin() const
+    {
+        if (Small()) return buf_;
+        return &*GetStorage().begin(); 
+    }
+    
+    iterator end()
+    {
+        if (Small()) return buf_ + maxSmallString - buf_[maxSmallString];
+        return &*GetStorage().end(); 
+    }
+    
+    const_iterator end() const
+    {
+        if (Small()) return buf_ + maxSmallString - buf_[maxSmallString];
+        return &*GetStorage().end(); 
+    }
+    
+    size_type size() const
+    {
+        assert(!Small() || maxSmallString >= buf_[maxSmallString]);
+        return Small() 
+            ? maxSmallString - buf_[maxSmallString] 
+            : GetStorage().size();
+    }
+
+    size_type max_size() const
+    { return get_allocator().max_size(); }
+
+    size_type capacity() const
+    { return Small() ? maxSmallString : GetStorage().capacity(); }
+
+    void reserve(size_type res_arg)
+    {
+        if (Small())
+        {
+            if (res_arg <= maxSmallString) return;
+            SmallStringOpt temp(*this);
+            this->~SmallStringOpt();
+            new(buf_) Storage(temp.data(), temp.size(), 
+                temp.get_allocator());
+            buf_[maxSmallString] = magic;
+            GetStorage().reserve(res_arg);
+        }
+        else
+        {
+            GetStorage().reserve(res_arg);
+        }
+        assert(capacity() >= res_arg);
+    }
+    
+    template <class FwdIterator>
+    void append(FwdIterator b, FwdIterator e)
+    {
+        if (!Small())
+        {
+            GetStorage().append(b, e);
+        }
+        else
+        {
+            // append to a small string
+            const size_type 
+                sz = std::distance(b, e),
+                neededCapacity = maxSmallString - buf_[maxSmallString] + sz;
+
+            if (maxSmallString < neededCapacity)
+            {
+                // need to change storage strategy
+                allocator_type alloc;
+                Storage temp(alloc);
+                temp.reserve(neededCapacity);
+                temp.append(buf_, buf_ + maxSmallString - buf_[maxSmallString]);
+                temp.append(b, e);
+                buf_[maxSmallString] = magic;
+                new(buf_) Storage(temp.get_allocator());
+                GetStorage().swap(temp);
+            }
+            else
+            {
+                std::copy(b, e, buf_ + maxSmallString - buf_[maxSmallString]);
+                buf_[maxSmallString] = buf_[maxSmallString] - value_type(sz);
+            }
+        }
+    }
+
+    void resize(size_type n, value_type c)
+    {
+        if (Small())
+        {
+            if (n > maxSmallString)
+            {
+                // Small string resized to big string
+                SmallStringOpt temp(*this); // can't throw
+                // 11-17-2001: correct exception safety bug
+                Storage newString(temp.data(), temp.size(), 
+                    temp.get_allocator());
+                newString.resize(n, c);
+                // We make the reasonable assumption that an empty Storage
+                //     constructor won't throw
+                this->~SmallStringOpt();
+                new(&buf_[0]) Storage(temp.get_allocator());
+                buf_[maxSmallString] = value_type(magic);
+                GetStorage().swap(newString);
+            }
+            else
+            {
+                // Small string resized to small string
+                // 11-17-2001: bug fix: terminating zero not copied
+                size_type toFill = n > size() ? n - size() : 0;
+                flex_string_details::pod_fill(end(), end() + toFill, c);
+                buf_[maxSmallString] = value_type(maxSmallString - n);
+            }
+        }
+        else
+        {
+            if (n > maxSmallString)
+            {
+                // Big string resized to big string
+                GetStorage().resize(n, c);
+            }
+            else
+            {
+                // Big string resized to small string
+                // 11-17=2001: bug fix in the assertion below
+                assert(capacity() > n);
+                SmallStringOpt newObj(data(), n, get_allocator());
+                newObj.swap(*this);
+            }
+        }
+    }
+
+    void swap(SmallStringOpt& rhs)
+    {
+        if (Small())
+        {
+            if (rhs.Small())
+            {
+                // Small swapped with small
+                std::swap_ranges(buf_, buf_ + maxSmallString + 1, 
+                    rhs.buf_);
+            }
+            else
+            {
+                // Small swapped with big
+                // Make a copy of myself - can't throw
+                SmallStringOpt temp(*this);
+                // Nuke myself
+                this->~SmallStringOpt();
+                // Make an empty storage for myself (likely won't throw)
+                new(buf_) Storage(0, value_type(), rhs.get_allocator());
+                buf_[maxSmallString] = magic;
+                // Recurse to this same function
+                swap(rhs);
+                // Nuke rhs
+                rhs.~SmallStringOpt();
+                // Build the new small string into rhs
+                new(&rhs) SmallStringOpt(temp);
+            }
+        }
+        else
+        {
+            if (rhs.Small())
+            {
+                // Big swapped with small
+                // Already implemented, recurse with reversed args
+                rhs.swap(*this);
+            }
+            else
+            {
+                // Big swapped with big
+                GetStorage().swap(rhs.GetStorage());
+            }
+        }
+    }
+    
+    const value_type* c_str() const
+    { 
+        if (!Small()) return GetStorage().c_str(); 
+        buf_[maxSmallString - buf_[maxSmallString]] = value_type();
+        return buf_;
+    }
+
+    const value_type* data() const
+    { return Small() ? buf_ : GetStorage().data(); }
+    
+    allocator_type get_allocator() const
+    { return allocator_type(); }
+};
+
+
+#endif // SMALL_STRING_OPT_INC_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/vectorstringstorage.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/vectorstringstorage.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/flex/vectorstringstorage.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,193 @@
+////////////////////////////////////////////////////////////////////////////////
+// flex_string
+// Copyright (c) 2001 by Andrei Alexandrescu
+// Permission to use, copy, modify, distribute and sell this software for any
+//     purpose is hereby granted without fee, provided that the above copyright
+//     notice appear in all copies and that both that copyright notice and this
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the
+//     suitability of this software for any purpose. It is provided "as is"
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+#ifndef VECTOR_STRING_STORAGE_INC_
+#define VECTOR_STRING_STORAGE_INC_
+
+// $Id: vectorstringstorage.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+/* This is the template for a storage policy
+////////////////////////////////////////////////////////////////////////////////
+template <typename E, class A = @>
+class StoragePolicy
+{
+    typedef E value_type;
+    typedef @ iterator;
+    typedef @ const_iterator;
+    typedef A allocator_type;
+    typedef @ size_type;
+    
+    StoragePolicy(const StoragePolicy& s);
+    StoragePolicy(const A&);
+    StoragePolicy(const E* s, size_type len, const A&);
+    StoragePolicy(size_type len, E c, const A&);
+    ~StoragePolicy();
+
+    iterator begin();
+    const_iterator begin() const;
+    iterator end();
+    const_iterator end() const;
+    
+    size_type size() const;
+    size_type max_size() const;
+    size_type capacity() const;
+
+    void reserve(size_type res_arg);
+
+    void append(const E* s, size_type sz);
+    
+    template <class InputIterator>
+    void append(InputIterator b, InputIterator e);
+
+    void resize(size_type newSize, E fill);
+
+    void swap(StoragePolicy& rhs);
+    
+    const E* c_str() const;
+    const E* data() const;
+    
+    A get_allocator() const;
+};
+////////////////////////////////////////////////////////////////////////////////
+*/
+
+#include <memory>
+#include <vector>
+#include <algorithm>
+#include <functional>
+#include <cassert>
+#include <limits>
+#include <stdexcept>
+
+////////////////////////////////////////////////////////////////////////////////
+// class template VectorStringStorage
+// Uses std::vector
+// Takes advantage of the Empty Base Optimization if available
+////////////////////////////////////////////////////////////////////////////////
+
+template <typename E, class A = std::allocator<E> >
+class VectorStringStorage : protected std::vector<E, A>
+{
+    typedef std::vector<E, A> base;
+
+public: // protected:
+    typedef E value_type;
+    typedef typename base::iterator iterator;
+    typedef typename base::const_iterator const_iterator;
+    typedef A allocator_type;
+    typedef typename A::size_type size_type;
+    typedef typename A::reference reference;
+    
+    VectorStringStorage(const VectorStringStorage& s) : base(s)
+    { }
+    
+    VectorStringStorage(const A& a) : base(1, value_type(), a)
+    { }
+    
+    VectorStringStorage(const value_type* s, size_type len, const A& a)
+    : base(a)
+    {
+        base::reserve(len + 1);
+        base::insert(base::end(), s, s + len);
+        // Terminating zero
+        base::push_back(value_type());
+    }
+
+    VectorStringStorage(size_type len, E c, const A& a)
+    : base(len + 1, c, a)
+    {
+        // Terminating zero
+        base::back() = value_type();
+    }
+    
+    VectorStringStorage& operator=(const VectorStringStorage& rhs)
+    {
+        base& v = *this;
+        v = rhs;
+        return *this;
+    }
+   
+    iterator begin()
+    { return base::begin(); }
+    
+    const_iterator begin() const
+    { return base::begin(); }
+    
+    iterator end()
+    { return base::end() - 1; }
+    
+    const_iterator end() const
+    { return base::end() - 1; }
+    
+    size_type size() const
+    { return base::size() - 1; }
+
+    size_type max_size() const
+    { return base::max_size() - 1; }
+
+    size_type capacity() const
+    { return base::capacity() - 1; }
+
+    void reserve(size_type res_arg)
+    { 
+        assert(res_arg < max_size());
+        base::reserve(res_arg + 1); 
+    }
+    
+    template <class ForwardIterator>
+    void append(ForwardIterator b, ForwardIterator e)
+    {
+        const typename std::iterator_traits<ForwardIterator>::difference_type
+            sz = std::distance(b, e);
+        assert(sz >= 0);
+        if (sz == 0) return;
+        base::reserve(base::size() + sz);
+        const value_type & v = *b;
+        struct OnBlockExit
+        {
+            VectorStringStorage * that;
+            ~OnBlockExit()
+            {
+                that->base::push_back(value_type());
+            }
+        } onBlockExit = { this };
+        (void) onBlockExit;
+        assert(!base::empty());
+        assert(base::back() == value_type());
+        base::back() = v;
+        base::insert(base::end(), ++b, e);
+    }
+
+    void resize(size_type n, E c)
+    {
+        base::reserve(n + 1);
+        base::back() = c;
+        base::resize(n + 1, c);
+        base::back() = E();
+    }
+
+    void swap(VectorStringStorage& rhs)
+    { base::swap(rhs); }
+    
+    const E* c_str() const
+    { return &*begin(); }
+
+    const E* data() const
+    { return &*begin(); }
+    
+    A get_allocator() const
+    { return base::get_allocator(); }
+};
+
+
+#endif // VECTOR_STRING_STORAGE_INC_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/readme.txt
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/readme.txt	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/readme.txt	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,12 @@
+// $Id: readme.txt 753 2006-10-17 19:54:22Z syntheticpp $
+
+The Golden Code
+KEEPEN DER DAMDDEN FUGGERMUTTENS OTTEN DIS CODDEN FIL
+
+A compliant C++ compiler will compile all of this code as is.
+See the respective vendor directories for code that actually compiles & runs.
+
+Note: Right now, this code contains CodeWarrior & gcc modifications, 
+which may be removed at a future point in time 
+(by moving them to a vendor specific implementation).
+MKH
\ No newline at end of file

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/static_check.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/static_check.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/static_check.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,45 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+#ifndef LOKI_STATIC_CHECK_INC_
+#define LOKI_STATIC_CHECK_INC_
+
+// $Id: static_check.h 752 2006-10-17 19:52:18Z syntheticpp $
+
+
+namespace Loki
+{
+////////////////////////////////////////////////////////////////////////////////
+// Helper structure for the STATIC_CHECK macro
+////////////////////////////////////////////////////////////////////////////////
+
+    template<int> struct CompileTimeError;
+    template<> struct CompileTimeError<true> {};
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// macro STATIC_CHECK
+// Invocation: STATIC_CHECK(expr, id)
+// where:
+// expr is a compile-time integral or pointer expression
+// id is a C++ identifier that does not need to be defined
+// If expr is zero, id will appear in a compile-time error message.
+////////////////////////////////////////////////////////////////////////////////
+
+#define LOKI_STATIC_CHECK(expr, msg) \
+    { Loki::CompileTimeError<((expr) != 0)> ERROR_##msg; (void)ERROR_##msg; } 
+
+
+#endif // end file guardian
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/platform.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/platform.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/platform.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,79 @@
+#ifndef YASLI_PLATFORM_H_
+#define YASLI_PLATFORM_H_
+
+// $Id: platform.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+// Most conservative
+
+#define YASLI_HAS_EFFICIENT_MSIZE 0
+#define YASLI_REALLOC_AFTER_NEW 0
+#define YASLI_HAS_EXPAND 0
+
+#include <malloc.h>
+
+// Works on MSVC (all versions)
+#if defined(_MSC_VER)
+
+    #if defined(NDEBUG)//why only if ndebug?
+        #undef YASLI_REALLOC_AFTER_NEW//this is not used: what is it's intention?
+        #define YASLI_REALLOC_AFTER_NEW 1
+
+        #undef YASLI_HAS_EFFICIENT_MSIZE 
+        #define YASLI_HAS_EFFICIENT_MSIZE 1
+    #endif
+
+    // On Wintel platforms, uninit pointers can be copied
+    #define YASLI_UNDEFINED_POINTERS_COPYABLE 1
+
+    namespace yasli_platform 
+    {
+        inline size_t msize(const void *p) 
+        { 
+            return _msize(const_cast<void*>(p)); 
+        }
+    }
+    
+    #undef YASLI_HAS_EXPAND
+    #define YASLI_HAS_EXPAND 1
+    namespace yasli_platform 
+    {
+        inline void* expand(const void *p, size_t s) 
+        { 
+            return _expand (const_cast<void*>(p), s);
+        }
+    }
+    
+#elif defined(__MINGW32_VERSION) && !defined(RC_INVOKED)
+//I havinclude Malloc.h in order to find whether this library is Mingw32 
+//i.e. defines __MINGW32_VERSION, 
+//hmm, I really need to sort this out in earlier versions
+//it was _STRICT_ANSI_ not RC_INVOKED but I don't know the details
+    #undef YASLI_HAS_EFFICIENT_MSIZE 
+    #define YASLI_HAS_EFFICIENT_MSIZE 1
+    namespace yasli_platform 
+    {
+        inline size_t msize(const void *p) 
+        { 
+            return _msize(const_cast<void*>(p)); 
+        }
+    }
+    
+    #undef YASLI_HAS_EXPAND 
+    #define YASLI_HAS_EXPAND 1
+    namespace yasli_platform 
+    {
+        inline void* expand(const void *p, size_t s) 
+        { 
+            return _expand (const_cast<void*>(p), s);
+        }
+    }
+    
+    #define YASLI_UNDEFINED_POINTERS_COPYABLE 1 //well it appears to compile ok anyway
+#endif
+
+
+
+
+
+#endif // YASLI_PLATFORM_H_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/random.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/random.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/random.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,55 @@
+#ifndef YASLI_RANDOM_H_
+#define YASLI_RANDOM_H_
+
+// $Id: random.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+#include <ctime>
+
+class Random 
+{
+    unsigned int seed_;
+public:
+    Random(unsigned int seed = 0)
+        : seed_(seed ? seed : static_cast<unsigned int>(std::time(0)))
+    {
+    }
+    unsigned short nextShort()
+    {
+        /* Use any number from this list for "a"
+            18000 18030 18273 18513 18879 19074 19098 19164 19215 19584       
+            19599 19950 20088 20508 20544 20664 20814 20970 21153 21243       
+            21423 21723 21954 22125 22188 22293 22860 22938 22965 22974       
+            23109 23124 23163 23208 23508 23520 23553 23658 23865 24114       
+            24219 24660 24699 24864 24948 25023 25308 25443 26004 26088       
+            26154 26550 26679 26838 27183 27258 27753 27795 27810 27834       
+            27960 28320 28380 28689 28710 28794 28854 28959 28980 29013       
+            29379 29889 30135 30345 30459 30714 30903 30963 31059 31083
+        */
+        static const unsigned int a = 18000;
+        return static_cast<unsigned short>(seed_ = 
+            a * (seed_ & 65535) + 
+                (seed_ >> 16));
+    }
+
+    unsigned int nextUint()
+    {
+        return (unsigned int)nextShort() << (CHAR_BIT * sizeof(unsigned short)) |
+            nextShort();
+    }
+    unsigned int nextUint(unsigned int high)
+    {
+        assert(high < ULONG_MAX - 1);
+        ++high;
+        const unsigned int bucket_size = ULONG_MAX / high;
+        unsigned int a;
+        do 
+        {
+            a = nextUint() / bucket_size;
+        }
+        while (a >= high);
+        return a;
+    }
+};
+
+#endif // RANDOM_H_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_fill_iterator.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_fill_iterator.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_fill_iterator.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,184 @@
+#ifndef YASLI_FILL_ITERATOR_H_
+#define YASLI_FILL_ITERATOR_H_
+
+// $Id: yasli_fill_iterator.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+#include <iterator>
+#include <cstddef>
+
+namespace yasli_nstd
+{
+    template <class T>
+    class fill_iterator_base
+        : public std::iterator<
+            std::random_access_iterator_tag,
+            T,
+            ptrdiff_t,
+            T*,
+            T&>
+    {
+    };
+
+    template <class T>
+    class fill_iterator_base<T&>
+        : public std::iterator<
+            std::random_access_iterator_tag,
+            T,
+            ptrdiff_t,
+            T*,
+            T&>
+    {
+    };
+
+    template <class T>
+    class fill_iterator : public fill_iterator_base<T>
+    {
+        T value_;
+        /*difference_type*/ ptrdiff_t count_;//////////////////////////////////
+    
+    public:
+        typedef std::ptrdiff_t difference_type;
+        typedef typename fill_iterator_base<T>::pointer pointer;
+        typedef typename fill_iterator_base<T>::reference reference;
+        //typedef iterator_type;
+
+        fill_iterator()
+        {    
+        }
+
+        explicit fill_iterator(reference value, difference_type count = 0)
+        : value_(value), count_(count)
+        {    
+        }
+
+        template<class U>
+        fill_iterator(const fill_iterator<U>& rhs)
+        : value_(rhs.value_), count_(rhs.count_)
+        {
+        }
+
+        reference operator*() const
+        {
+            return value_;
+        }
+
+        pointer operator->() const
+        {
+            return &**this;
+        }
+
+        fill_iterator& operator++()
+        {    
+            ++count_;
+            return *this;
+        }
+
+        fill_iterator operator++(int)
+        {
+            fill_iterator it(*this);
+            ++*this;
+            return it;
+        }
+
+        fill_iterator& operator--()
+        {    
+            --count_;
+            return *this;
+        }
+
+        fill_iterator operator--(int)
+        {
+            fill_iterator it(*this);
+            --*this;
+            return it;
+        }
+
+        fill_iterator& operator+=(difference_type d)
+        {
+            count_ += d;
+            return *this;
+        }
+
+        fill_iterator operator+(difference_type d) const
+        {
+            return fill_iterator(*this) += d;
+        }
+
+        fill_iterator& operator-=(difference_type d)
+        {
+            count_ -= d;
+            return *this;
+        }
+
+        fill_iterator operator-(difference_type d) const
+        {
+            return fill_iterator(*this) -= d;
+        }
+
+        difference_type operator-(const fill_iterator<T>& rhs) const
+        {
+            return count_ - rhs.count_;
+        }
+
+        reference operator[](difference_type) const
+        {
+            return **this;
+        }
+
+        template <class T2> 
+        bool operator==(const fill_iterator<T2>& rhs) const
+        {
+            return count_ == rhs.count_;
+        }
+
+    };
+
+    template <class T, class D> 
+    inline fill_iterator<T> operator+(D lhs, const fill_iterator<T>& rhs)
+    {
+        return rhs + lhs;
+    }
+
+    template <class T> 
+    inline bool operator!=(
+        const fill_iterator<T>& lhs,
+        const fill_iterator<T>& rhs)
+    {    // test for fill_iterator inequality
+        return !(lhs == rhs);
+    }
+
+    template <class T> 
+    inline bool operator<(
+        const fill_iterator<T>& lhs,
+        const fill_iterator<T>& rhs)
+    {
+        return lhs.count_ < rhs.count_;
+    }
+
+    template <class T> 
+    inline bool operator>(
+        const fill_iterator<T>& lhs,
+        const fill_iterator<T>& rhs)
+    {
+        return rhs < lhs;
+    }
+
+    template <class T> 
+    inline bool operator<=(
+        const fill_iterator<T>& lhs,
+        const fill_iterator<T>& rhs)
+    {
+        return !(rhs < lhs);
+    }
+
+    template <class T> 
+    inline bool operator>=(
+        const fill_iterator<T>& lhs,
+        const fill_iterator<T>& rhs)
+    {
+        return !(lhs < rhs);
+    }
+} // namespace yasli_nstd
+
+#endif

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_memory.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_memory.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_memory.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,450 @@
+#ifndef YASLI_MEMORY_H_
+#define YASLI_MEMORY_H_
+
+// $Id: yasli_memory.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+#include "yasli_traits.h"
+#include "yasli_protocols.h"//!
+#include <cassert>
+#include <cstddef>
+#include <misc/mojo.h>//NOT A SAFE WAY TO INCLUDE IT
+
+namespace yasli {
+          
+         
+    // 20.4.1, the default allocator:
+    template <class T> class allocator;
+    template <> class allocator<void>;
+    
+    // 20.4.1.2, allocator globals
+    template <class T, class U>
+    bool operator==(const allocator<T>&, const allocator<U>&) throw()
+    { return true; }
+
+    template <class T, class U>
+    bool operator!=(const allocator<T>&, const allocator<U>&) throw()
+    { return false; }
+    
+    // 20.4.2, raw storage iterator:
+    // @@@ not defined, use the std one @@@
+    //template <class OutputIterator, class T> class raw_storage_iterator;
+    
+    // 20.4.3, temporary buffers:
+    // @@@ not defined, use the std one @@@
+    //template <class T>
+    //pair<T*,ptrdiff_t> get_temporary_buffer(ptrdiff_t n);
+    // @@@ not defined, use the std one @@@
+    // template <class T>
+    // void return_temporary_buffer(T* p);
+
+    // 20.4.4, specialized algorithms:
+    template <class InputIterator, class ForwardIterator>
+    ForwardIterator
+    uninitialized_copy(InputIterator first, InputIterator last,
+    ForwardIterator result);
+
+    template <class ForwardIterator, class Size, class T>
+    void uninitialized_fill_n(ForwardIterator first, Size n, const T& x);
+    // 20.4.5, pointers:
+    // @@@ not defined, use the std one @@@
+    // template<class X> class auto_ptr;
+}
+
+namespace yasli {
+    template <class T> class allocator;
+    // specialize for void:
+    template <> class allocator<void> 
+    {
+    public:
+        typedef void* pointer;
+        typedef const void* const_pointer;
+        // reference-to-void members are impossible.
+        typedef void value_type;
+        template <class U> struct rebind { typedef allocator<U> other; };
+    };
+
+    template <class T> class allocator 
+    {
+    public:
+        typedef size_t                 size_type;
+        typedef std::ptrdiff_t         difference_type;
+        typedef T*                     pointer;
+        typedef const T*               const_pointer;
+        typedef T&                     reference;
+        typedef const T&               const_reference;
+        typedef T                      value_type;
+        
+        template <class U> struct rebind { typedef allocator<U> other; };
+        allocator() throw() {}
+        allocator(const allocator&) throw() {}
+        template <class U> allocator(const allocator<U>&) throw() {}
+        ~allocator() throw() {}
+        pointer address(reference x) const { return &x; }
+        const_pointer address(const_reference x) { return &x; }
+        pointer allocate(size_type n, allocator<void>::const_pointer = 0)
+        {
+            return static_cast<pointer>(::operator new(n * sizeof(T)));
+        }
+        void deallocate(pointer p, size_type) 
+        {
+            ::operator delete(p);
+        }
+        size_type max_size() const throw() 
+        {
+            return size_type(-1);
+        }
+        void construct(pointer p, const T& val) 
+        {
+            new((void *) p) T(val);
+        }
+        void destroy(pointer p) 
+        {
+            ((T*) p)->~T();
+        }
+    };
+} // namespace yasli
+
+namespace yasli_nstd
+{
+    template <class T> class mallocator 
+    {
+    public:
+        typedef size_t       size_type;
+        typedef ptrdiff_t    difference_type;
+        typedef T*           pointer;
+        typedef const T*     const_pointer;
+        typedef T&           reference;
+        typedef const T&     const_reference;
+        typedef T            value_type;
+        
+        template <class U> struct rebind { typedef mallocator<U> other; };
+        mallocator() throw() {}
+        mallocator(const mallocator&) throw() {}
+        template <class U> mallocator(const mallocator<U>&) throw() {}
+        ~mallocator() throw() {}
+        pointer address(reference x) const { return &x; }
+        const_pointer address(const_reference x) { return &x; }
+        pointer allocate(size_type n, yasli::allocator<void>::const_pointer = 0)
+        {
+            return static_cast<pointer>(malloc(n * sizeof(T)));
+        }
+        void deallocate(pointer p, size_type) 
+        {
+            free(p);
+        }
+        size_type max_size() const throw() 
+        {
+            return size_type(-1);
+        }
+        void construct(pointer p, const T& val) 
+        {
+            new((void *) p) T(val);
+        }
+        void destroy(pointer p) 
+        {
+            ((T*) p)->~T();
+        }
+    };
+    
+    //--------------destroy--------
+    
+    namespace _impl
+    {                  
+       struct non_destroyer
+       {
+           template <class A, class T>   
+           static void destroy(A& a, T* p, typename A::size_type n) {}
+              
+           template <class ForwardIterator>
+           static void destroy_range(ForwardIterator b, ForwardIterator e) {} 
+       };
+       
+       struct destroyer
+       {
+           template <class A, class T>
+           static void destroy(A& a, T* p, typename A::size_type n)
+           {
+               const typename A::pointer p1 = p + n;
+               for (; p < p1; ++p) a.destroy(p);
+           }
+              
+           template <class ForwardIterator>
+           static void destroy_range(ForwardIterator b, ForwardIterator e) 
+           {
+               typedef typename std::iterator_traits<ForwardIterator>::value_type
+                  value_type;
+               for (; b != e; ++b) (*b).~value_type();
+           }
+       };    
+    }
+
+    template <class A, class T>
+    void destroy(A& a, T* p, typename A::size_type n) 
+    {
+        yasli_nstd::type_selector<yasli_nstd::is_class<T>::value != 0,
+                                  _impl::destroyer,
+                                  _impl::non_destroyer
+                                 >::result::destroy(a, p, n);
+    }
+    
+    template <class ForwardIterator>
+    void destroy_range(ForwardIterator b, ForwardIterator e) 
+    {
+        yasli_nstd::type_selector<
+            yasli_nstd::is_class<typename std::iterator_traits<ForwardIterator>
+            ::value_type>::value != 0,
+            _impl::destroyer,
+            _impl::non_destroyer
+            >::result::destroy_range(b, e);
+    }
+    
+    //---------------
+
+
+    template <class It1, class It2>
+    It2 uninitialized_move(It1 b, It1 e, It2 d)
+    {
+        return mojo::uninitialized_move(b, e, d);
+    }
+    
+    template <class A>
+    struct generic_allocator_traits
+    {
+        static typename A::pointer 
+        reallocate(
+            A& a, 
+            typename A::pointer b, 
+            typename A::pointer e, 
+            typename A::size_type newSize) 
+        {
+            typename A::pointer p1 = a.allocate(newSize, b);
+            const typename A::size_type oldSize = e - b;
+            if (oldSize <= newSize) // expand
+            {
+                yasli_protocols::move_traits<typename A::value_type>::destructive_move(
+                    b, b + oldSize, p1);
+            }
+            else // shrink
+            {
+                yasli_protocols::move_traits<typename A::value_type>::destructive_move(
+                    b, b + newSize, p1);
+                yasli_nstd::destroy(a, b + newSize, oldSize - newSize);
+            }
+            a.deallocate(b, oldSize);
+            return p1;
+        }
+
+        static bool reallocate_inplace(
+        A& a,
+        typename A::pointer b,
+        typename A::size_type newSize) 
+        {
+            return false;
+        }
+
+    private:
+        generic_allocator_traits();
+    };
+
+    template <class A>
+    struct allocator_traits : public generic_allocator_traits<A> 
+    {
+    };
+
+    template <class T>
+    struct allocator_traits< yasli::allocator<T> >  
+        : public generic_allocator_traits< yasli::allocator<T> > 
+    {
+#if YASLI_NEW_IS_MALLOC != 0
+        
+        static bool reallocate_inplace(
+                        A& a,
+                        typename A::pointer b,
+                        typename A::size_type newSize) 
+        {
+            allocator_traits< yasli_nstd::mallocator<T> >
+                              ::reallocate_inplace(a, b, newSize);
+        }
+               
+        static typename yasli::allocator<T>::pointer 
+        reallocate(
+            yasli::allocator<T>& a, 
+            typename yasli::allocator<T>::pointer b, 
+            typename yasli::allocator<T>::pointer e, 
+            typename yasli::allocator<T>::size_type newSize) 
+        {    
+            allocator_traits< yasli_nstd::mallocator<T> >
+                              ::reallocate(a, b, e, newSize);      
+        }
+#endif//yasli_new_is_malloc
+    };
+
+    template <class T>
+    struct allocator_traits< yasli_nstd::mallocator<T> >  
+        : public generic_allocator_traits< yasli_nstd::mallocator<T> > 
+    {
+#if YASLI_HAS_EXPAND && YASLI_HAS_EFFICIENT_MSIZE
+        static bool reallocate_inplace(
+                        yasli_nstd::mallocator<T>& a,
+                        typename yasli_nstd::mallocator<T>::pointer b,
+                        typename yasli_nstd::mallocator<T>::size_type newSize) 
+        {
+            if (b == 0) return malloc(newSize);
+            if (newSize == 0) {free(b); return false;}
+            return b == yasli_platform::expand(b, newSize) 
+                   && yasli_platform::msize(b) >= newSize;
+        } 
+#endif
+        static typename yasli_nstd::mallocator<T>::pointer 
+        reallocate(
+            yasli_nstd::mallocator<T>& a,
+            typename yasli_nstd::mallocator<T>::pointer b,
+            typename yasli_nstd::mallocator<T>::pointer e,
+            typename yasli_nstd::mallocator<T>::size_type newSize)
+        {
+            if (yasli_nstd::is_memmoveable<T>::value)
+            {
+                return static_cast<T*>(realloc(b, newSize));
+            }
+            if(reallocate_inplace(a, b, newSize)) return b;           
+            return generic_allocator_traits< yasli_nstd::mallocator<T> >::
+                          reallocate(a, b, e, newSize);            
+        }
+    };
+}
+
+namespace yasli
+{
+     //Here is where type_selector is really much more ugly than 
+     //enable_if.
+          
+    //----------------UNINIT COPY--------
+    namespace _impl
+    {                   
+          //safe
+          template <class InputItr, class FwdItr>
+          struct uninitialized_safe_copier
+          {
+             static FwdItr execute(InputItr first, InputItr last, FwdItr result)
+             {
+                 //
+                 struct ScopeGuard
+                 {
+                     FwdItr begin;
+                     FwdItr* current;
+                     ~ScopeGuard()
+                     {
+                         if (!current) return;
+                         FwdItr end = *current;
+                         typedef typename std::iterator_traits<FwdItr>::value_type T;
+                         for (; begin != end; ++begin) (&*begin)->~T();
+                     }
+                 } guard = { result, &result };
+                 for (; first != last; ++first, ++result) 
+                     new(&*result) typename std::iterator_traits<FwdItr>::value_type(*first);
+                 // commit
+                 return result;
+             }
+          };                    
+          
+          template <class T>
+          struct uninitialized_memcopier
+          {
+             static T* execute(const T* first, const T* last, T* result)
+             {
+                 yasli_nstd::is_memcopyable<T>::value;
+                 const size_t s = last - first;
+                 memmove(result, first, s * sizeof(T));
+                 return result + s;                 
+             }
+          };
+            
+    }// _impl
+    
+    // @@@ TODO: specialize for yasli_nstd::fill_iterator 
+   
+    template <class InputItr, class FwdItr>
+    FwdItr uninitialized_copy(InputItr first, InputItr last, FwdItr result)
+    {
+           std::cout<<"neither\n";
+        return _impl::uninitialized_safe_copier<InputItr, FwdItr>::execute(first, last, result);
+    }
+    
+    template <class T>
+    T* uninitialized_copy(const T* first, const T* last, T* result)
+    {
+       std::cout<<"const\n";
+       return yasli_nstd::type_selector<yasli_nstd::is_memcopyable<T>::value != 0,
+                                         _impl::uninitialized_memcopier<T>,
+                                         _impl::uninitialized_safe_copier<const T*, T*>
+                                        >::result::execute(first, last, result);
+    }
+    
+    template <class T>
+    T* uninitialized_copy(T* first, T* last, T* result)
+    {
+       std::cout<<"non-const\n";
+       return uninitialized_copy(static_cast<const T*>(first), 
+                                 static_cast<const T*>(last), result);
+    }  
+   
+    //-------------------------UNINIT FILL------
+    
+    template <class ForwardIterator, class T>
+    void
+    uninitialized_fill(ForwardIterator first, ForwardIterator last,
+        const T& x)
+    {
+        struct ScopeGuard
+        {
+            ForwardIterator first;
+            ForwardIterator* pCrt;
+            ~ScopeGuard()
+            {
+                if (pCrt) yasli_nstd::destroy_range(first, *pCrt);
+            }
+        } guard = { first, &first };
+        for (; first != last; ++first)
+            new(&*first) T(x); 
+        // Commit
+        guard.pCrt = 0;
+    }
+
+    template <class T, class U>
+    void
+    uninitialized_fill(T* first, T* last, const U& x)
+    {
+        struct ScopeGuard
+        {
+            T* first;
+            T** pCrt;
+            ~ScopeGuard()
+            {
+                if (pCrt) yasli_nstd::destroy_range(first, *pCrt);
+            }
+        } guard = { first, &first };
+        assert(first <= last);
+        switch ((last - first) & 7u)
+        {
+        case 0:
+            while (first != last)
+            {
+                new(first) T(x); ++first;
+        case 7: new(first) T(x); ++first;
+        case 6: new(first) T(x); ++first;
+        case 5: new(first) T(x); ++first;
+        case 4: new(first) T(x); ++first;
+        case 3: new(first) T(x); ++first;
+        case 2: new(first) T(x); ++first;
+        case 1: new(first) T(x); ++first;
+                assert(first <= last);
+            }
+        }
+        // Commit
+        guard.pCrt = 0;
+    }
+    
+}// yasli
+
+#endif // YASLI_MEMORY_H_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_protocols.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_protocols.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_protocols.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,116 @@
+#ifndef YASLI_PROTOCOLS_H_
+#define YASLI_PROTOCOLS_H_
+
+// $Id: yasli_protocols.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+#include <complex>
+#include <functional>
+#include "yasli_memory.h"
+#include <memory.h>
+
+namespace yasli_protocols
+{
+             
+    // Most conservative
+    template <class T>
+    struct safe_move_traits
+    {
+        static T* destructive_move(
+            T* begin, 
+            T* end, 
+            void* dest)
+        {
+            T* tdest = static_cast<T*>(dest);
+            typedef std::less<T*> ls;
+            assert(!ls()(tdest, end) || ls()(tdest, begin - (end - begin)));
+            tdest = /*yasli*/std::uninitialized_copy(begin, end, tdest);
+            if (yasli_nstd::is_class<T>::value)
+            {
+                for (; begin != end; ++begin)
+                {
+                    begin->~T();
+                }
+            }
+            return tdest;
+        }
+        static T* nondestructive_move(
+            T* begin, 
+            T* end, 
+            void* dest)
+        {
+            T* d = static_cast<T*>(dest);
+            for (; begin != end; ++begin, ++d)
+                new(d) T(*begin);
+            return d;
+        }
+        static T* nondestructive_assign_move(
+            T* begin, 
+            T* end, 
+            T* dest)
+        {
+            if (begin <= dest && dest < end)
+            {
+                dest += end - begin;
+                T* const result = dest;
+                while (begin != end)
+                    *--dest = *--end;
+                return result;
+            }
+            for (; begin != end; ++begin, ++dest)
+                *dest = *begin;
+            return dest;
+        }
+    };
+    
+
+    template <class T>
+    struct memmove_traits
+    {
+        static T* destructive_move(
+            T* begin, 
+            T* end, 
+            void* dest)
+        {
+            memmove(dest, begin, (end - begin) * sizeof(T));
+            return static_cast<T*>(dest) + (end - begin);
+        };
+        static T* nondestructive_move(
+            T* begin, 
+            T* end, 
+            void* dest)
+        {
+            memmove(dest, begin, (end - begin) * sizeof(T));
+            return static_cast<T*>(dest) + (end - begin);
+        }
+        static T* nondestructive_assign_move(
+            T* begin, 
+            T* end, 
+            T* dest)
+        {
+            yasli_nstd::destroy_range(begin, end);
+            memmove(dest, begin, (end - begin) * sizeof(T));
+            return static_cast<T*>(dest) + (end - begin);
+        }
+    };
+    
+    // for nonspecialized classes, use safe_move_traits
+    template <class T>
+    struct move_traits: public 
+    yasli_nstd::type_selector<yasli_nstd::is_class<T>::value == 0,
+                                          memmove_traits<T>,
+                                          safe_move_traits<T>
+                                      >::result
+    {};    
+       
+    template <class T>
+    struct move_traits<std::complex<T> >:public 
+    yasli_nstd::type_selector<sizeof(std::complex<T>) == 2 * sizeof(T),
+                                          memmove_traits< std::complex<T> >,
+                                          safe_move_traits< std::complex<T> >
+                                      >::result
+    {
+    };
+}
+
+#endif // YASLI_PROTOCOLS_H_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_traits.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_traits.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_traits.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,79 @@
+#ifndef YASLI_TRAITS_H_
+#define YASLI_TRAITS_H_
+
+// $Id: yasli_traits.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+
+
+namespace yasli_nstd 
+{
+    /*
+    template <bool b, class T = void> 
+    struct enable_if {};
+
+    template <class T> 
+    struct enable_if<true, T> { typedef T type; };
+    */
+    
+    //!! TYPE SELECTORS
+    //Used in place of enable_if:
+    //not so neat or so versitile but they do compile
+    template<bool condition, class if_true, class if_false>
+    struct type_selector
+    {
+        typedef if_true result; 
+    };
+    
+    template<class if_true, class if_false>
+    struct type_selector<false, if_true, if_false>
+    {
+        typedef if_false result; 
+    };  
+
+    // Types for differentiating compile-time choices
+    typedef char (&yes_t)[1];
+    typedef char (&no_t)[2];
+
+    // Credit goes to Boost; 
+    // also found in the C++ Templates book by Vandevoorde and Josuttis
+
+    //!! Wouldn't compile with these inside is_class
+    template <class U>
+    yes_t class_test(int U::*);
+    template <class U>
+    no_t class_test(...);
+
+    template <class T> struct is_class
+    {
+        enum { value = (sizeof(class_test<T>(0)) == sizeof(yes_t)) };
+    };
+
+    template <typename T> struct is_pointer
+    {
+        enum { value = false };
+    };
+
+    template <typename T> struct is_pointer<T*>
+    {
+        enum { value = true };
+    };
+
+    template <typename T> struct is_memcopyable
+    {
+        enum { value = int(!is_class<T>::value) };
+    };
+
+    
+   template <typename T> struct is_memmoveable
+    {
+        enum { value = int(!is_class<T>::value) };
+    };
+   
+
+    // For moving
+    enum move_t { move };
+
+} // namespace yasli_nstd
+
+#endif // YASLI_TRAITS_H_

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_vector.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_vector.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/include/loki/yasli/yasli_vector.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,583 @@
+#ifndef YASLI_VECTOR_H_
+#define YASLI_VECTOR_H_
+
+// $Id: yasli_vector.h 754 2006-10-17 19:59:11Z syntheticpp $
+
+
+#include "platform.h"
+#include "yasli_fill_iterator.h"
+#include "yasli_memory.h"
+#include "yasli_traits.h"
+#include "yasli_protocols.h"
+#include <iterator>
+#include <cassert>
+#include <stdexcept>
+#include "../TypeManip.h"
+
+namespace yasli 
+{
+    template <class T, class Allocator = allocator<T> >
+    class vector;
+}
+
+namespace yasli {
+     
+   template <class T, class Allocator>
+   class vector 
+   {
+       struct ebo : public Allocator
+       {
+           T *beg_;
+           ebo() {}
+           ebo(const Allocator& a) : Allocator(a) {}
+       } ebo_;
+       T *end_;
+       T *eos_; 
+   public:
+       // types:
+       typedef          vector<T, Allocator>             this_type;//not standard
+       typedef typename Allocator::reference             reference;
+       typedef typename Allocator::const_reference       const_reference;
+       typedef typename Allocator::pointer               iterator;       // See 23.1
+       typedef typename Allocator::const_pointer         const_iterator; // See 23.1
+       typedef typename Allocator::size_type             size_type;      // See 23.1
+       typedef typename Allocator::difference_type       difference_type;// See 23.1
+       typedef          T                                value_type;
+       typedef          Allocator                        allocator_type;
+       typedef typename Allocator::pointer               pointer;
+       typedef typename Allocator::const_pointer         const_pointer;
+       typedef std::reverse_iterator<iterator>           reverse_iterator;
+       typedef std::reverse_iterator<const_iterator>     const_reverse_iterator;
+   private:
+       void init_empty() 
+       {
+            
+   #if YASLI_UNDEFINED_POINTERS_COPYABLE == 1
+           end_ = ebo_.beg_;
+           eos_ = ebo_.beg_;
+   #else   
+           ebo_.beg_ = 0;
+           end_ = 0;
+           eos_ = 0;    
+   #endif
+           assert(empty());
+           
+       }
+       
+       void init_move(vector& temp)
+       {
+           ebo_ = temp.ebo_;
+           end_ = temp.end_;
+           eos_ = temp.eos_;
+           temp.init_empty();
+       }
+   
+       void init_fill(size_type n, const T& value, const Allocator& a)
+       {
+           // Will avoid catch (...)
+           vector<T, Allocator> temp(a);
+           temp.insert(temp.end(), n, value);
+           init_move(temp);
+           assert(size() == n);
+       }
+       
+       // 23.2.4.1 construct/copy/destroy:
+       template <class InputIterator, class looks_like_itr>
+       void init(InputIterator first, InputIterator last, looks_like_itr, const Allocator& a)
+       {
+           vector temp(a);
+           temp.insert(temp.end(), first, last);
+           init_move(temp);
+       }
+       
+       template <class non_iterator>
+       void init(non_iterator n, non_iterator datum, Loki::Int2Type<false>, 
+                                                     const Allocator& a)
+       {
+            init_fill((size_type)n, (const T&)datum, a);
+       }
+       
+   public:
+       vector()
+       {
+           init_empty();
+       }
+       
+       explicit vector(const Allocator& a) 
+           : ebo_(a)
+       {
+           init_empty();
+       }
+   
+       explicit vector(size_type n, const T& value = T(),
+               const Allocator& a = Allocator())
+       {
+           init_fill(n, value, a);
+       }
+       
+       //!! avoid enable_if
+       template <class InputIterator>
+       vector(InputIterator first, InputIterator last, const Allocator& a = Allocator())
+       {                
+            init(first, last, Loki::Int2Type<
+                       yasli_nstd::is_class<InputIterator>::value || 
+                       yasli_nstd::is_pointer<InputIterator>::value >(), a);
+       }
+       
+   public:
+       vector(const vector<T,Allocator>& x)
+       {
+           vector temp(x.begin(), x.end(), x.ebo_);
+           init_move(temp);
+       }
+   
+       ~vector()
+       {
+           yasli_nstd::destroy(ebo_, ebo_.beg_, size());
+           const size_type c = capacity();
+           if (c != 0) ebo_.deallocate(ebo_.beg_, c);
+       }
+   
+       // Note pass by value
+       vector<T,Allocator>& operator=(vector<T,Allocator> temp)
+       {
+           temp.swap(*this);
+           return *this;
+       }
+   
+       template <class InputIterator>   
+       void assign(InputIterator first, InputIterator last)
+       {
+                     
+           assign_pre_impl(first, last, Loki::Int2Type<yasli_nstd::
+                                  is_class<InputIterator>::value||yasli_nstd::
+                                  is_pointer<InputIterator>::value>());
+       }
+       
+   private://-------ASSIGN IMPLEMENTATION
+       template <class InputIterator, class looks_like_itr>
+       void assign_pre_impl(InputIterator first, InputIterator last, looks_like_itr)
+       {    
+            assign_impl(first, last,
+               std::iterator_traits<InputIterator>::iterator_category());
+       }
+       
+       template <class InputIterator>
+       void assign_pre_impl(InputIterator n, InputIterator datum, Loki::Int2Type<false>)
+       {    
+            assign((size_type) n, (const T&) datum);
+       }
+   
+       template <class InputIterator>
+       void assign_impl(InputIterator first, InputIterator last, std::input_iterator_tag)
+       {
+           for (iterator i = begin(); i != end(); ++i, ++first)
+           {
+               if (first == last) 
+               {
+                   resize(i - begin());
+                   return;
+               }
+               *i = *first;
+           }
+           // we filled up the vector, now insert the rest
+           insert(end(), first, last);
+       }
+   
+       template <class RanIt>
+       void assign_impl(RanIt first, RanIt last, std::random_access_iterator_tag)
+       {
+           const typename std::iterator_traits<RanIt>::difference_type d = 
+               last - first;
+           assert(d >= 0);
+           size_type newSize = size_type(d);
+           assert(newSize == d); // no funky iterators
+           reserve(newSize);
+           if (newSize >= size())
+           {
+               const size_t delta = newSize - size();
+               RanIt i = last - delta;
+               copy(first, i, ebo_.beg_);
+               insert(end(), i, last);
+           }
+           else
+           {
+               copy(first, last, ebo_.beg_);
+               resize(newSize);
+           }
+           assert(size() == newSize);
+       }
+   public:
+       void assign(size_type n, const T& u)
+       {
+           const size_type s = size();
+           if (n <= s)
+           {
+               T* const newEnd = ebo_.beg_ + n;
+               fill(ebo_.beg_, newEnd, u);
+               yasli_nstd::destroy(ebo_, newEnd, s - n);
+               end_ = newEnd;
+           }
+           else
+           {
+               reserve(n);
+               T* const newEnd = ebo_.beg_ + n;
+               fill(ebo_.beg_, end_, u);
+               uninitialized_fill(end_, newEnd, u);
+               end_ = newEnd;
+           }
+           assert(size() == n);
+           assert(empty() || front() == back());
+       }
+   
+       allocator_type get_allocator() const
+       {
+           return ebo_;
+       }
+       // iterators:
+       iterator begin() { return ebo_.beg_; }
+       const_iterator begin() const { return ebo_.beg_; }
+       iterator end() { return end_; }
+       const_iterator end() const { return end_; }
+       reverse_iterator rbegin() { return reverse_iterator(end()); }
+       const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); }
+       reverse_iterator rend() { return reverse_iterator(begin()); }
+       const_reverse_iterator rend() const { return const_reverse_iterator(begin()); }
+   
+       // 23.2.4.2 capacity:
+   
+       size_type size() const { return end_ - ebo_.beg_; }
+       size_type max_size() const { return ebo_.max_size(); }
+   
+       void resize(size_type sz, T c = T()) 
+       {
+           const size_type oldSz = size();
+           if (oldSz >= sz)
+           {
+               erase(ebo_.beg_ + sz, end_);
+           }
+           else
+           {
+               reserve(sz);
+               uninitialized_fill(end_, end_ + (sz - oldSz), c);
+               end_ = ebo_.beg_ + sz;
+           }
+           assert(size() == sz);
+       }
+   private:
+       template<class is>
+       void resize_impl(size_type sz, T c)
+       {
+       }
+   public:
+       size_type capacity() const
+       {
+           return eos_ - ebo_.beg_; 
+       }
+       bool empty() const
+       {
+           return ebo_.beg_ == end_; 
+       }
+       void reserve(size_type n)
+       {
+           const size_type 
+               s = size(),
+               c = capacity();
+           if (c >= n) return;
+           if (capacity() == 0)
+           {
+               ebo_.beg_ = ebo_.allocate(n);
+           }
+           else
+           {
+               ebo_.beg_ = yasli_nstd::allocator_traits<Allocator>::reallocate(
+                   ebo_, ebo_.beg_, end_, n);
+           }
+           end_ = ebo_.beg_ + s;
+           eos_ = ebo_.beg_ + n;
+           assert(capacity() >= n);
+           assert(size() == s);
+       }
+       bool reserve_inplace_nstd(size_type n)
+       {
+           if (capacity() >= n) return true;
+           if (!yasli_nstd::allocator_traits<Allocator>::reallocate_inplace(
+               ebo_, ebo_.beg_, n)) 
+           {
+               return false;
+           }
+           eos_ = ebo_.beg_ + n;
+           return true;
+       }
+       // element access:
+       reference operator[](size_type n)
+       {
+           assert(n < size());
+           return ebo_.beg_[n];
+       }
+       const_reference operator[](size_type n) const
+       {
+           assert(n < size());
+           return ebo_.beg_[n];
+       }
+       const_reference at(size_type n) const
+       {
+           // Fix by Joseph Canedo
+           if (n >= size()) throw std::range_error("vector<>::at");
+           return ebo_.beg_[n];
+       }
+       reference at(size_type n)
+       {
+           // Fix by Joseph Canedo
+           if (n >= size()) throw std::range_error("vector<>::at");
+           return ebo_.beg_[n];
+       }
+       reference front()
+       {
+           assert(!empty());
+           return *ebo_.beg_;
+       }
+       const_reference front() const
+       {
+           assert(!empty());
+           return *ebo_.beg_;
+       }
+       reference back()
+       {
+           assert(!empty());
+           return end_[-1];
+       }
+       const_reference back() const
+       {
+           assert(!empty());
+           return end_[-1];
+       }
+   
+   private:
+           
+       void prepare_growth(size_type delta)
+       {
+           const size_type s = size();
+           // @@@ todo: replace magic constant with something meaningful
+           const size_type smallThreshold = 8;
+           if (s < smallThreshold)
+           {
+               reserve(std::max(smallThreshold, delta));
+           }
+           else
+           {
+               const size_type multiply = 3;
+               const size_type divide = 2;
+               const size_type suggestedSize = (s * multiply) / divide;
+               reserve(std::max(s + delta, suggestedSize));
+           }
+       }
+   
+   public:
+       // 23.2.4.3 modifiers:
+       void push_back(const T& x)
+       {
+           if (size() == capacity()) 
+           {
+               prepare_growth(1);
+           }
+           new(end_) T(x);
+           ++end_;
+       }
+       void pop_back()
+       {
+           assert(!empty());
+           ebo_.destroy(--end_);
+       }
+       void move_back_nstd(T& x)
+       {
+           if (size() == capacity()) 
+           {
+               prepare_growth(1);
+           }
+           yasli_protocols::move_traits<T>::nondestructive_move(&x, &x + 1, end_);
+       }
+   
+       // 23.2.4.3 modifiers:
+       iterator insert(iterator position, const T& x)
+       {
+           // @@@ be smarter about this reservation 
+           reserve(size() + 1);
+           const size_type pos = position - begin();
+           insert(position, (size_type)1, x);
+           return ebo_.beg_ + pos;
+       }
+       void insert(iterator position, size_type n, const T& x)
+       {
+           insert(position, 
+               yasli_nstd::fill_iterator<const T&>(x),
+               yasli_nstd::fill_iterator<const T&>(x, n)
+               );
+       }
+       
+       template <class InputIterator>
+       void insert(iterator position, InputIterator first, InputIterator last)
+       {
+           insert_pre_impl(position, first, last,
+              Loki::Int2Type<yasli_nstd::is_class<InputIterator>::value||
+                             yasli_nstd::is_pointer<InputIterator>::value>()); 
+       }
+   private:
+       template<class InputIterator, class looks_like_iterator>
+       void 
+       insert_pre_impl(iterator position, InputIterator first, InputIterator last,
+                       looks_like_iterator)
+       {      
+           insert_impl(position, first, last, 
+           typename std::iterator_traits<InputIterator>::iterator_category());
+       }
+       
+       template <class non_iterator>
+       void insert_pre_impl(iterator position, non_iterator n, non_iterator x, 
+                                                         Loki::Int2Type<false>)
+       {   //used if e.g. T is int and insert(itr, 10, 6) is called
+           insert(position, static_cast<size_type>(n), 
+                            static_cast<value_type>(x));
+       }
+       
+       template <class InputIterator>
+       void insert_impl(iterator position,
+           InputIterator first, InputIterator last, std::input_iterator_tag)
+       {
+           for (; first != last; ++first)
+           {
+               position = insert(position, *first) + 1;
+           }
+       }
+       template <class FwdIterator>
+       void insert_impl(iterator position,
+           FwdIterator first, FwdIterator last, std::forward_iterator_tag)
+       {
+           typedef yasli_protocols::move_traits<T> mt;
+           
+           const typename std::iterator_traits<FwdIterator>::difference_type 
+                          count = std::distance(first, last);
+               
+           if (eos_ - end_ > count || reserve_inplace_nstd(size() + count)) // there's enough room
+           {
+               if (count > end_ - &*position)
+               {
+                   // Step 1: fill the hole between end_ and position+count
+                   FwdIterator i1 = first; 
+                   std::advance(i1, end_ - &*position);
+                   FwdIterator i2 = i1;
+                   std::advance(i2, &*position + count - end_);//why not i2 = first; advance(i2,count);
+                   T* const oldEnd = end_;
+                   end_ = copy(i1, i2, end_);
+                   assert(end_ == &*position + count);
+                   // Step 2: move existing data to the end
+                   mt::nondestructive_move(
+                       position,
+                       oldEnd,
+                       end_);
+                   end_ = oldEnd + count;
+                   // Step 3: copy in the remaining data
+                   copy(first, i1, position);
+               }
+               else // simpler case
+               {
+                   mt::nondestructive_move(
+                       end_ - count,
+                       end_,
+                       end_);
+                   end_ += count;
+                   mt::nondestructive_assign_move(
+                       position,
+                       end_ - count,
+                       position + count);
+                   copy(first, last, position);
+               }
+           }
+           else
+           {
+               vector<T, Allocator> temp(ebo_);
+               temp.reserve(size() + count);
+               // The calls below won't cause infinite recursion
+               //   because they will fall on the other branch
+               //   of the if statement
+               temp.insert(temp.end(), begin(), position);
+               temp.insert(temp.end(), first, last);
+               temp.insert(temp.end(), position, end());
+               assert(temp.size() == size() + count);
+               temp.swap(*this);
+           }
+       }
+   public:
+   
+       iterator erase(iterator position)
+       {
+           erase(position, position + 1);
+           return position;
+       }
+       iterator erase(iterator first, iterator last)
+       {
+           yasli_protocols::move_traits<T>::nondestructive_assign_move(
+               last, end(), first);
+           Allocator& a = ebo_;
+           const size_type destroyed = last - first;
+           yasli_nstd::destroy(a, end_ - destroyed, destroyed);
+           end_ -= destroyed;
+           return first;
+       }
+       void swap(vector<T,Allocator>& rhs)//COULD DO THIS WITH LESS TEMPORARIES
+       {
+           std::swap(static_cast<Allocator&>(ebo_), static_cast<Allocator&>(rhs.ebo_));
+           std::swap(ebo_.beg_, rhs.ebo_.beg_);
+           std::swap(end_, rhs.end_);
+           std::swap(eos_, rhs.eos_);
+       }
+       void clear()
+       {
+           Allocator& a = ebo_;
+           yasli_nstd::destroy(a, ebo_.beg_, size());
+           end_ = ebo_.beg_;
+       }
+   };//vector
+   
+   
+   
+   template <class T, class Allocator>
+   bool operator==(const vector<T,Allocator>& x,
+                   const vector<T,Allocator>& y);
+   template <class T, class Allocator>
+   bool operator< (const vector<T,Allocator>& x,
+                   const vector<T,Allocator>& y);
+   template <class T, class Allocator>
+   bool operator!=(const vector<T,Allocator>& x,
+                   const vector<T,Allocator>& y);
+   template <class T, class Allocator>
+   bool operator> (const vector<T,Allocator>& x,
+                   const vector<T,Allocator>& y);
+   template <class T, class Allocator>
+   bool operator>=(const vector<T,Allocator>& x,
+                   const vector<T,Allocator>& y);
+   template <class T, class Allocator>
+   bool operator<=(const vector<T,Allocator>& x,
+                   const vector<T,Allocator>& y);
+   // specialized algorithms:
+   template <class T, class Allocator>
+   void swap(vector<T,Allocator>& x, vector<T,Allocator>& y);
+   
+}//yasli
+
+
+
+namespace yasli_protocols
+{         
+    template <class T, class A>
+    struct move_traits< yasli::vector<T, A> >:public 
+    yasli_nstd::type_selector<
+                    sizeof(yasli::vector<T, A>) != (3 * sizeof(T*)),
+                    memmove_traits< std::complex<T> >,
+                    safe_move_traits< std::complex<T> >
+             >::result 
+    {
+    };
+}
+
+#endif
\ No newline at end of file

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Library.vcproj
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Library.vcproj	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Library.vcproj	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="Library"
+	ProjectGUID="{CBDB8E7A-4286-4AE3-A190-BA33D7C53FF0}"
+	RootNamespace="Library"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="4"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalOptions="-wd4996"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE _SECURE_SCL=1"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="false"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="../lib/loki_D.lib"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="4"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				AdditionalIncludeDirectories="..\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				UsePrecompiledHeader="0"
+				WarningLevel="4"
+				Detect64BitPortabilityProblems="false"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+				OutputFile="../lib/loki.lib"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\include\loki\AbstractFactory.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\AssocVector.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\ConstPolicy.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\DataGenerators.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\EmptyType.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\Factory.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\Function.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\Functor.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\HierarchyGenerators.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\LockingPtr.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\LokiExport.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\LokiTypeInfo.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\MultiMethods.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\NullType.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\OrderedStatic.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\Pimpl.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\RefToValue.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\SafeFormat.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\ScopeGuard.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\Sequence.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\Singleton.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\SmallObj.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\SmartPtr.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\static_check.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\StrongPtr.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\Threads.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\Tuple.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\Typelist.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\TypelistMacros.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\TypeManip.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\TypeTraits.h"
+				>
+			</File>
+			<File
+				RelativePath="..\include\loki\Visitor.h"
+				>
+			</File>
+			<Filter
+				Name="flexstring"
+				>
+				<File
+					RelativePath="..\loki\include\loki\flex\allocatorstringstorage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\loki\include\loki\flex\cowstringopt.h"
+					>
+				</File>
+				<File
+					RelativePath="..\loki\include\loki\flex\flex_string.h"
+					>
+				</File>
+				<File
+					RelativePath="..\loki\include\loki\flex\flex_string_details.h"
+					>
+				</File>
+				<File
+					RelativePath="..\loki\include\loki\flex\flex_string_shell.h"
+					>
+				</File>
+				<File
+					RelativePath="..\loki\include\loki\flex\simplestringstorage.h"
+					>
+				</File>
+				<File
+					RelativePath="..\loki\include\loki\flex\smallstringopt.h"
+					>
+				</File>
+				<File
+					RelativePath="..\loki\include\loki\flex\vectorstringstorage.h"
+					>
+				</File>
+			</Filter>
+		</Filter>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\OrderedStatic.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\SafeFormat.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\Singleton.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\SmallObj.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\SmartPtr.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\StrongPtr.cpp"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Makefile
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Makefile	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Makefile	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,75 @@
+include ../Makefile.common
+
+SRC := $(wildcard *.cpp)
+STATIC_OBJ := $(SRC:.cpp=.o)
+SHARED_OBJ := $(SRC:.cpp=.lo)
+
+override CPPFLAGS += -I../include -DNDEBUG
+
+STATIC_LIB := libloki.a
+
+ifeq ($(OS), Darwin)
+  SHARED_LIB_BASE := libloki.dylib
+  SHARED_LIB_VERSIONED := libloki.$(VERSION).dylib
+  override LDFLAGS += -dynamiclib -single_module -install_name $(SHARED_LIB_VERSIONED) -fPIC
+  LDLIBS := -lpthread
+  RESULT_DIR := ../lib/
+else
+ifeq ($(OS), Linux)
+  SHARED_LIB_BASE := libloki.so
+  SHARED_LIB_VERSIONED := libloki.so.$(VERSION)
+  override LDFLAGS += --shared -Wl,-soname=$(SHARED_LIB_VERSIONED) -fPIC
+  LDLIBS := -lpthread
+  RESULT_DIR := ../lib/
+else
+  SHARED_LIB_VERSIONED := libloki.dll
+  override LDFLAGS += --shared
+  LDLIBS :=
+  RESULT_DIR := ../lib/
+endif
+endif
+
+.PHONY: all build-static build-shared clean distclean
+all: build-static build-shared
+build-static: $(RESULT_DIR)$(STATIC_LIB)
+build-shared: $(RESULT_DIR)$(SHARED_LIB_VERSIONED)
+
+clean:
+	$(RM) $(STATIC_OBJ)
+ifneq ($(OS), Windows)
+	$(RM) $(SHARED_OBJ)
+endif
+
+distclean: clean cleandeps
+	$(RM) $(RESULT_DIR)$(STATIC_LIB)
+	$(RM) $(RESULT_DIR)$(SHARED_LIB_VERSIONED)
+
+ifneq ($(OS),Windows)
+INSTALL := install
+INSTALL_DATA := $(INSTALL) -m 644
+
+.PHONY: install install-static install-shared
+install: install-static install-shared
+
+install-static: $(RESULT_DIR)$(STATIC_LIB)
+	mkdir -p $(prefix)/lib
+	$(INSTALL_DATA) $(RESULT_DIR)$(STATIC_LIB) $(prefix)/lib
+
+install-shared: $(RESULT_DIR)$(SHARED_LIB_VERSIONED)
+	mkdir -p $(prefix)/lib
+	$(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(prefix)/lib
+	cd $(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE)
+
+%.lo : %.cpp
+	$(CXX) -c $(CXXFLAGS) -fPIC $(CPPFLAGS) -o $@ $<
+
+$(RESULT_DIR)$(SHARED_LIB_VERSIONED): $(SHARED_OBJ)
+else
+$(RESULT_DIR)$(SHARED_LIB_VERSIONED): $(STATIC_OBJ)
+endif
+	$(CXX) $(LDFLAGS) -o $@ $^ $(LDLIBS)
+
+$(RESULT_DIR)$(STATIC_LIB): $(STATIC_OBJ)
+	$(AR) $(ARFLAGS) $@ $^
+
+include ../Makefile.deps

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/OrderedStatic.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/OrderedStatic.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/OrderedStatic.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,81 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2005 Peter Kümmel
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+// $Id: OrderedStatic.cpp 756 2006-10-17 20:05:42Z syntheticpp $
+
+
+#include <loki/OrderedStatic.h>
+#include <limits>
+
+#ifdef min 
+#undef min 
+#endif
+ 
+#ifdef max 
+#undef max 
+#endif 
+
+namespace Loki
+{
+    namespace Private
+    {
+
+        OrderedStaticCreatorFunc::OrderedStaticCreatorFunc()
+        {
+        }
+        
+        OrderedStaticCreatorFunc::~OrderedStaticCreatorFunc()
+        {
+        }
+    
+
+        OrderedStaticManagerClass::OrderedStaticManagerClass() :
+                    staticObjects_(),
+                    max_longevity_(std::numeric_limits<unsigned int>::min()),
+                    min_longevity_(std::numeric_limits<unsigned int>::max())
+        {
+        }
+
+        OrderedStaticManagerClass::~OrderedStaticManagerClass()
+        {
+        }
+
+        void OrderedStaticManagerClass::createObjects()
+        {
+            for(unsigned int longevity=max_longevity_; longevity>=min_longevity_; longevity--)
+            {
+                for(unsigned int i=0; i<staticObjects_.size(); i++)
+                {
+                    Data cur = staticObjects_.at(i);
+                    if(cur.longevity==longevity)
+                        ( (*cur.object).*cur.creator )();
+                }
+            }
+        }
+
+        void OrderedStaticManagerClass::registerObject(unsigned int l, OrderedStaticCreatorFunc* o,Creator f)
+        {
+            staticObjects_.push_back(Data(l,o,f));
+
+            if(l>max_longevity_) max_longevity_=l;
+            if(l<min_longevity_) min_longevity_=l;
+        }
+
+        OrderedStaticManagerClass::Data::Data(unsigned int l, OrderedStaticCreatorFunc* o, Creator f)
+            : longevity(l), object(o), creator(f)
+        {
+        }
+
+    }//namespace Private
+
+} // end namespace Loki
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SafeFormat.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SafeFormat.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SafeFormat.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,85 @@
+////////////////////////////////////////////////////////////////////////////////
+// Copyright (c) 2005 by Andrei Alexandrescu
+// Copyright (c) 2006 Peter Kümmel
+// Permission to use, copy, modify, distribute, and sell this software for any
+//     purpose is hereby granted without fee, provided that the above copyright
+//     notice appear in all copies and that both that copyright notice and this
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the suitability of this software 
+//     for any purpose. It is provided "as is" without express or implied 
+//     warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+// $Id: SafeFormat.cpp 756 2006-10-17 20:05:42Z syntheticpp $
+
+
+#include <loki/SafeFormat.h>
+
+
+namespace Loki
+{
+
+    // Crude writing method: writes straight to the file, unbuffered
+    // Must be combined with a buffer to work properly (and efficiently)
+
+    void write(std::FILE* f, const char* from, const char* to) {
+        assert(from <= to);
+        ::std::fwrite(from, 1, to - from, f);
+    }
+
+    // Write to a string
+
+    void write(std::string& s, const char* from, const char* to) {
+        assert(from <= to);
+        s.append(from, to);
+    }
+  
+    // Write to a stream
+
+    void write(std::ostream& f, const char* from, const char* to) {
+        assert(from <= to);
+        f.write(from, std::streamsize(to - from));
+    }
+
+    ////////////////////////////////////////////////////////////////////////////////
+    // PrintfState class template
+    // Holds the formatting state, and implements operator() to format stuff
+    // Todo: make sure errors are handled properly
+    ////////////////////////////////////////////////////////////////////////////////
+
+
+    PrintfState<std::FILE*, char> Printf(const char* format) {
+        return PrintfState<std::FILE*, char>(stdout, format);
+    }
+
+    PrintfState<std::FILE*, char> Printf(const std::string& format) {
+        return PrintfState<std::FILE*, char>(stdout, format.c_str());
+    }
+
+    PrintfState<std::FILE*, char> FPrintf(std::FILE* f, const char* format) {
+        return PrintfState<std::FILE*, char>(f, format);
+    }
+
+    PrintfState<std::FILE*, char> FPrintf(std::FILE* f, const std::string& format) {
+        return PrintfState<std::FILE*, char>(f, format.c_str());
+    }
+
+    PrintfState<std::ostream&, char> FPrintf(std::ostream& f, const char* format) {
+        return PrintfState<std::ostream&, char>(f, format);
+    }
+
+    PrintfState<std::ostream&, char> FPrintf(std::ostream& f, const std::string& format) {
+        return PrintfState<std::ostream&, char>(f, format.c_str());
+    }
+
+    PrintfState<std::string&, char> SPrintf(std::string& s, const char* format) {
+        return PrintfState<std::string&, char>(s, format);
+    }
+
+    PrintfState<std::string&, char> SPrintf(std::string& s, const std::string& format) {
+        return PrintfState<std::string&, char>(s, format.c_str());
+    }
+
+
+} // end namespace Loki
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Singleton.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Singleton.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/Singleton.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+// $Id: Singleton.cpp 756 2006-10-17 20:05:42Z syntheticpp $
+
+
+#include <loki/Singleton.h>
+
+
+#ifdef LOKI_ENABLE_NEW_SETLONGLIVITY_HELPER_DATA_IMPL
+Loki::Private::TrackerArray* Loki::Private::pTrackerArray = 0;
+#else
+Loki::Private::TrackerArray Loki::Private::pTrackerArray = 0;
+unsigned int Loki::Private::elements = 0;
+#endif
+
+////////////////////////////////////////////////////////////////////////////////
+// function AtExitFn
+// Ensures proper destruction of objects with longevity
+////////////////////////////////////////////////////////////////////////////////
+
+#ifdef LOKI_ENABLE_NEW_SETLONGLIVITY_HELPER_DATA_IMPL
+
+void LOKI_C_CALLING_CONVENTION_QUALIFIER Loki::Private::AtExitFn()
+{
+    assert(pTrackerArray!=0 && !pTrackerArray->empty());
+    
+    // Pick the element at the top of the stack
+    LifetimeTracker* pTop = pTrackerArray->back();
+    
+    // Remove that object off the stack _before_ deleting pTop
+    pTrackerArray->pop_back();
+    
+    // Destroy the element
+    delete pTop;
+    
+    // Destroy stack when it's empty _after_ deleting pTop
+    if(pTrackerArray->empty())
+    {
+        delete pTrackerArray;
+        pTrackerArray = 0;
+    }
+}
+
+#else
+
+void LOKI_C_CALLING_CONVENTION_QUALIFIER Loki::Private::AtExitFn()
+{
+    assert(elements > 0 && pTrackerArray != 0);
+    // Pick the element at the top of the stack
+    LifetimeTracker* pTop = pTrackerArray[elements - 1];
+    // Remove that object off the stack
+    // Don't check errors - realloc with less memory 
+    //     can't fail
+    pTrackerArray = static_cast<TrackerArray>(std::realloc(
+        pTrackerArray, sizeof(*pTrackerArray) * --elements));
+    // Destroy the element
+    delete pTop;
+}
+
+#endif 
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SmallObj.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SmallObj.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SmallObj.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1217 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above  copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+// $Id: SmallObj.cpp 756 2006-10-17 20:05:42Z syntheticpp $
+
+
+#include <loki/SmallObj.h>
+
+#include <cassert>
+#include <vector>
+#include <bitset>
+
+//#define DO_EXTRA_LOKI_TESTS
+//#define USE_NEW_TO_ALLOCATE
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    #include <iostream>
+#endif
+
+namespace Loki
+{
+
+    /** @struct Chunk
+        @ingroup SmallObjectGroupInternal
+     Contains info about each allocated Chunk - which is a collection of
+     contiguous blocks.  Each block is the same size, as specified by the
+     FixedAllocator.  The number of blocks in a Chunk depends upon page size.
+     This is a POD-style struct with value-semantics.  All functions and data
+     are private so that they can not be changed by anything other than the
+     FixedAllocator which owns the Chunk.
+
+     @par Minimal Interface
+     For the sake of runtime efficiency, no constructor, destructor, or
+     copy-assignment operator is defined. The inline functions made by the
+     compiler should be sufficient, and perhaps faster than hand-crafted
+     functions.  The lack of these functions allows vector to create and copy
+     Chunks as needed without overhead.  The Init and Release functions do
+     what the default constructor and destructor would do.  A Chunk is not in
+     a usable state after it is constructed and before calling Init.  Nor is
+     a Chunk usable after Release is called, but before the destructor.
+
+     @par Efficiency
+     Down near the lowest level of the allocator, runtime efficiencies trump
+     almost all other considerations.  Each function does the minimum required
+     of it.  All functions should execute in constant time to prevent higher-
+     level code from unwittingly using a version of Shlemiel the Painter's
+     Algorithm.
+
+     @par Stealth Indexes
+     The first char of each empty block contains the index of the next empty
+     block.  These stealth indexes form a singly-linked list within the blocks.
+     A Chunk is corrupt if this singly-linked list has a loop or is shorter
+     than blocksAvailable_.  Much of the allocator's time and space efficiency
+     comes from how these stealth indexes are implemented.
+     */
+    class Chunk
+    {
+    private:
+        friend class FixedAllocator;
+
+        /** Initializes a just-constructed Chunk.
+         @param blockSize Number of bytes per block.
+         @param blocks Number of blocks per Chunk.
+         @return True for success, false for failure.
+         */
+        bool Init( std::size_t blockSize, unsigned char blocks );
+
+        /** Allocate a block within the Chunk.  Complexity is always O(1), and
+         this will never throw.  Does not actually "allocate" by calling
+         malloc, new, or any other function, but merely adjusts some internal
+         indexes to indicate an already allocated block is no longer available.
+         @return Pointer to block within Chunk.
+         */
+        void * Allocate( std::size_t blockSize );
+
+        /** Deallocate a block within the Chunk. Complexity is always O(1), and
+         this will never throw.  For efficiency, this assumes the address is
+         within the block and aligned along the correct byte boundary.  An
+         assertion checks the alignment, and a call to HasBlock is done from
+         within VicinityFind.  Does not actually "deallocate" by calling free,
+         delete, or other function, but merely adjusts some internal indexes to
+         indicate a block is now available.
+         */
+        void Deallocate( void * p, std::size_t blockSize );
+
+        /** Resets the Chunk back to pristine values. The available count is
+         set back to zero, and the first available index is set to the zeroth
+         block.  The stealth indexes inside each block are set to point to the
+         next block. This assumes the Chunk's data was already using Init.
+         */
+        void Reset( std::size_t blockSize, unsigned char blocks );
+
+        /// Releases the allocated block of memory.
+        void Release();
+
+        /** Determines if the Chunk has been corrupted.
+         @param numBlocks Total # of blocks in the Chunk.
+         @param blockSize # of bytes in each block.
+         @param checkIndexes True if caller wants to check indexes of available
+          blocks for corruption.  If false, then caller wants to skip some
+          tests tests just to run faster.  (Debug version does more checks, but
+          release version runs faster.)
+         @return True if Chunk is corrupt.
+         */
+        bool IsCorrupt( unsigned char numBlocks, std::size_t blockSize,
+            bool checkIndexes ) const;
+
+        /** Determines if block is available.
+         @param p Address of block managed by Chunk.
+         @param numBlocks Total # of blocks in the Chunk.
+         @param blockSize # of bytes in each block.
+         @return True if block is available, else false if allocated.
+         */
+        bool IsBlockAvailable( void * p, unsigned char numBlocks,
+            std::size_t blockSize ) const;
+
+        /// Returns true if block at address P is inside this Chunk.
+        inline bool HasBlock( void * p, std::size_t chunkLength ) const
+        {
+            unsigned char * pc = static_cast< unsigned char * >( p );
+            return ( pData_ <= pc ) && ( pc < pData_ + chunkLength );
+        }
+
+        inline bool HasAvailable( unsigned char numBlocks ) const
+        { return ( blocksAvailable_ == numBlocks ); }
+
+        inline bool IsFilled( void ) const
+        { return ( 0 == blocksAvailable_ ); }
+
+        /// Pointer to array of allocated blocks.
+        unsigned char * pData_;
+        /// Index of first empty block.
+        unsigned char firstAvailableBlock_;
+        /// Count of empty blocks.
+        unsigned char blocksAvailable_;
+    };
+
+    /** @class FixedAllocator
+        @ingroup SmallObjectGroupInternal
+     Offers services for allocating fixed-sized objects.  It has a container
+     of "containers" of fixed-size blocks.  The outer container has all the
+     Chunks.  The inner container is a Chunk which owns some blocks.
+
+     @par Class Level Invariants
+     - There is always either zero or one Chunk which is empty.
+     - If this has no empty Chunk, then emptyChunk_ is NULL.
+     - If this has an empty Chunk, then emptyChunk_ points to it.
+     - If the Chunk container is empty, then deallocChunk_ and allocChunk_
+       are NULL.
+     - If the Chunk container is not-empty, then deallocChunk_ and allocChunk_
+       are either NULL or point to Chunks within the container.
+     - allocChunk_ will often point to the last Chunk in the container since
+       it was likely allocated most recently, and therefore likely to have an
+       available block.
+     */
+    class FixedAllocator
+    {
+    private:
+
+        /** Deallocates the block at address p, and then handles the internal
+         bookkeeping needed to maintain class invariants.  This assumes that
+         deallocChunk_ points to the correct chunk.
+         */
+        void DoDeallocate( void * p );
+
+        /** Creates an empty Chunk and adds it to the end of the ChunkList.
+         All calls to the lower-level memory allocation functions occur inside
+         this function, and so the only try-catch block is inside here.
+         @return true for success, false for failure.
+         */
+        bool MakeNewChunk( void );
+
+        /** Finds the Chunk which owns the block at address p.  It starts at
+         deallocChunk_ and searches in both forwards and backwards directions
+         from there until it finds the Chunk which owns p.  This algorithm
+         should find the Chunk quickly if it is deallocChunk_ or is close to it
+         in the Chunks container.  This goes both forwards and backwards since
+         that works well for both same-order and opposite-order deallocations.
+         (Same-order = objects are deallocated in the same order in which they
+         were allocated.  Opposite order = objects are deallocated in a last to
+         first order.  Complexity is O(C) where C is count of all Chunks.  This
+         never throws.
+         @return Pointer to Chunk that owns p, or NULL if no owner found.
+         */
+        Chunk * VicinityFind( void * p ) const;
+
+        /// Not implemented.
+        FixedAllocator(const FixedAllocator&);
+        /// Not implemented.
+        FixedAllocator& operator=(const FixedAllocator&);
+
+        /// Type of container used to hold Chunks.
+        typedef std::vector< Chunk > Chunks;
+        /// Iterator through container of Chunks.
+        typedef Chunks::iterator ChunkIter;
+        /// Iterator through const container of Chunks.
+        typedef Chunks::const_iterator ChunkCIter;
+
+        /// Fewest # of objects managed by a Chunk.
+        static unsigned char MinObjectsPerChunk_;
+
+        /// Most # of objects managed by a Chunk - never exceeds UCHAR_MAX.
+        static unsigned char MaxObjectsPerChunk_;
+
+        /// Number of bytes in a single block within a Chunk.
+        std::size_t blockSize_;
+        /// Number of blocks managed by each Chunk.
+        unsigned char numBlocks_;
+
+        /// Container of Chunks.
+        Chunks chunks_;
+        /// Pointer to Chunk used for last or next allocation.
+        Chunk * allocChunk_;
+        /// Pointer to Chunk used for last or next deallocation.
+        Chunk * deallocChunk_;
+        /// Pointer to the only empty Chunk if there is one, else NULL.
+        Chunk * emptyChunk_;
+
+    public:
+        /// Create a FixedAllocator which manages blocks of 'blockSize' size.
+        FixedAllocator();
+
+        /// Destroy the FixedAllocator and release all its Chunks.
+        ~FixedAllocator();
+
+        /// Initializes a FixedAllocator by calculating # of blocks per Chunk.
+        void Initialize( std::size_t blockSize, std::size_t pageSize );
+
+        /** Returns pointer to allocated memory block of fixed size - or NULL
+         if it failed to allocate.
+         */
+        void * Allocate( void );
+
+        /** Deallocate a memory block previously allocated with Allocate.  If
+         the block is not owned by this FixedAllocator, it returns false so
+         that SmallObjAllocator can call the default deallocator.  If the
+         block was found, this returns true.
+         */
+        bool Deallocate( void * p, Chunk * hint );
+
+        /// Returns block size with which the FixedAllocator was initialized.
+        inline std::size_t BlockSize() const { return blockSize_; }
+
+        /** Releases the memory used by the empty Chunk.  This will take
+         constant time under any situation.
+         @return True if empty chunk found and released, false if none empty.
+         */
+        bool TrimEmptyChunk( void );
+
+        /** Releases unused spots from ChunkList.  This takes constant time
+         with respect to # of Chunks, but actual time depends on underlying
+         memory allocator.
+         @return False if no unused spots, true if some found and released.
+         */
+        bool TrimChunkList( void );
+
+        /** Returns count of empty Chunks held by this allocator.  Complexity
+         is O(C) where C is the total number of Chunks - empty or used.
+         */
+        std::size_t CountEmptyChunks( void ) const;
+
+        /** Determines if FixedAllocator is corrupt.  Checks data members to
+         see if any have erroneous values, or violate class invariants.  It
+         also checks if any Chunk is corrupt.  Complexity is O(C) where C is
+         the number of Chunks.  If any data is corrupt, this will return true
+         in release mode, or assert in debug mode.
+         */
+        bool IsCorrupt( void ) const;
+
+        /** Returns true if the block at address p is within a Chunk owned by
+         this FixedAllocator.  Complexity is O(C) where C is the total number
+         of Chunks - empty or used.
+         */
+        const Chunk * HasBlock( void * p ) const;
+        inline Chunk * HasBlock( void * p )
+        {
+            return const_cast< Chunk * >(
+                const_cast< const FixedAllocator * >( this )->HasBlock( p ) );
+        }
+
+    };
+
+    unsigned char FixedAllocator::MinObjectsPerChunk_ = 8;
+    unsigned char FixedAllocator::MaxObjectsPerChunk_ = UCHAR_MAX;
+
+// Chunk::Init ----------------------------------------------------------------
+
+bool Chunk::Init( std::size_t blockSize, unsigned char blocks )
+{
+    assert(blockSize > 0);
+    assert(blocks > 0);
+    // Overflow check
+    const std::size_t allocSize = blockSize * blocks;
+    assert( allocSize / blockSize == blocks);
+
+#ifdef USE_NEW_TO_ALLOCATE
+    // If this new operator fails, it will throw, and the exception will get
+    // caught one layer up.
+    pData_ = static_cast< unsigned char * >( ::operator new ( allocSize ) );
+#else
+    // malloc can't throw, so its only way to indicate an error is to return
+    // a NULL pointer, so we have to check for that.
+    pData_ = static_cast< unsigned char * >( ::std::malloc( allocSize ) );
+    if ( NULL == pData_ ) return false;
+#endif
+
+    Reset( blockSize, blocks );
+    return true;
+}
+
+// Chunk::Reset ---------------------------------------------------------------
+
+void Chunk::Reset(std::size_t blockSize, unsigned char blocks)
+{
+    assert(blockSize > 0);
+    assert(blocks > 0);
+    // Overflow check
+    assert((blockSize * blocks) / blockSize == blocks);
+
+    firstAvailableBlock_ = 0;
+    blocksAvailable_ = blocks;
+
+    unsigned char i = 0;
+    for ( unsigned char * p = pData_; i != blocks; p += blockSize )
+    {
+        *p = ++i;
+    }
+}
+
+// Chunk::Release -------------------------------------------------------------
+
+void Chunk::Release()
+{
+    assert( NULL != pData_ );
+#ifdef USE_NEW_TO_ALLOCATE
+    ::operator delete ( pData_ );
+#else
+    ::std::free( static_cast< void * >( pData_ ) );
+#endif
+}
+
+// Chunk::Allocate ------------------------------------------------------------
+
+void* Chunk::Allocate(std::size_t blockSize)
+{
+    if ( IsFilled() ) return NULL;
+
+    assert((firstAvailableBlock_ * blockSize) / blockSize == 
+        firstAvailableBlock_);
+    unsigned char * pResult = pData_ + (firstAvailableBlock_ * blockSize);
+    firstAvailableBlock_ = *pResult;
+    --blocksAvailable_;
+
+    return pResult;
+}
+
+// Chunk::Deallocate ----------------------------------------------------------
+
+void Chunk::Deallocate(void* p, std::size_t blockSize)
+{
+    assert(p >= pData_);
+
+    unsigned char* toRelease = static_cast<unsigned char*>(p);
+    // Alignment check
+    assert((toRelease - pData_) % blockSize == 0);
+    unsigned char index = static_cast< unsigned char >(
+        ( toRelease - pData_ ) / blockSize);
+
+#if defined(DEBUG) || defined(_DEBUG)
+    // Check if block was already deleted.  Attempting to delete the same
+    // block more than once causes Chunk's linked-list of stealth indexes to
+    // become corrupt.  And causes count of blocksAvailable_ to be wrong.
+    if ( 0 < blocksAvailable_ )
+        assert( firstAvailableBlock_ != index );
+#endif
+
+    *toRelease = firstAvailableBlock_;
+    firstAvailableBlock_ = index;
+    // Truncation check
+    assert(firstAvailableBlock_ == (toRelease - pData_) / blockSize);
+
+    ++blocksAvailable_;
+}
+
+// Chunk::IsCorrupt -----------------------------------------------------------
+
+bool Chunk::IsCorrupt( unsigned char numBlocks, std::size_t blockSize,
+    bool checkIndexes ) const
+{
+
+    if ( numBlocks < blocksAvailable_ )
+    {
+        // Contents at this Chunk corrupted.  This might mean something has
+        // overwritten memory owned by the Chunks container.
+        assert( false );
+        return true;
+    }
+    if ( IsFilled() )
+        // Useless to do further corruption checks if all blocks allocated.
+        return false;
+    unsigned char index = firstAvailableBlock_;
+    if ( numBlocks <= index )
+    {
+        // Contents at this Chunk corrupted.  This might mean something has
+        // overwritten memory owned by the Chunks container.
+        assert( false );
+        return true;
+    }
+    if ( !checkIndexes )
+        // Caller chose to skip more complex corruption tests.
+        return false;
+
+    /* If the bit at index was set in foundBlocks, then the stealth index was
+     found on the linked-list.
+     */
+    std::bitset< UCHAR_MAX > foundBlocks;
+    unsigned char * nextBlock = NULL;
+
+    /* The loop goes along singly linked-list of stealth indexes and makes sure
+     that each index is within bounds (0 <= index < numBlocks) and that the
+     index was not already found while traversing the linked-list.  The linked-
+     list should have exactly blocksAvailable_ nodes, so the for loop will not
+     check more than blocksAvailable_.  This loop can't check inside allocated
+     blocks for corruption since such blocks are not within the linked-list.
+     Contents of allocated blocks are not changed by Chunk.
+
+     Here are the types of corrupted link-lists which can be verified.  The
+     corrupt index is shown with asterisks in each example.
+
+     Type 1: Index is too big.
+      numBlocks == 64
+      blocksAvailable_ == 7
+      firstAvailableBlock_ -> 17 -> 29 -> *101*
+      There should be no indexes which are equal to or larger than the total
+      number of blocks.  Such an index would refer to a block beyond the
+      Chunk's allocated domain.
+
+     Type 2: Index is repeated.
+      numBlocks == 64
+      blocksAvailable_ == 5
+      firstAvailableBlock_ -> 17 -> 29 -> 53 -> *17* -> 29 -> 53 ...
+      No index should be repeated within the linked-list since that would
+      indicate the presence of a loop in the linked-list.
+     */
+    for ( unsigned char cc = 0; ; )
+    {
+        nextBlock = pData_ + ( index * blockSize );
+        foundBlocks.set( index, true );
+        ++cc;
+        if ( cc >= blocksAvailable_ )
+            // Successfully counted off number of nodes in linked-list.
+            break;
+        index = *nextBlock;
+        if ( numBlocks <= index )
+        {
+            /* This catches Type 1 corruptions as shown in above comments.
+             This implies that a block was corrupted due to a stray pointer
+             or an operation on a nearby block overran the size of the block.
+             */
+            assert( false );
+            return true;
+        }
+        if ( foundBlocks.test( index ) )
+        {
+            /* This catches Type 2 corruptions as shown in above comments.
+             This implies that a block was corrupted due to a stray pointer
+             or an operation on a nearby block overran the size of the block.
+             Or perhaps the program tried to delete a block more than once.
+             */
+            assert( false );
+            return true;
+        }
+    }
+    if ( foundBlocks.count() != blocksAvailable_ )
+    {
+        /* This implies that the singly-linked-list of stealth indexes was
+         corrupted.  Ideally, this should have been detected within the loop.
+         */
+        assert( false );
+        return true;
+    }
+
+    return false;
+}
+
+// Chunk::IsBlockAvailable ----------------------------------------------------
+
+bool Chunk::IsBlockAvailable( void * p, unsigned char numBlocks,
+    std::size_t blockSize ) const
+{
+    (void) numBlocks;
+    
+    if ( IsFilled() )
+        return false;
+
+    unsigned char * place = static_cast< unsigned char * >( p );
+    // Alignment check
+    assert( ( place - pData_ ) % blockSize == 0 );
+    unsigned char blockIndex = static_cast< unsigned char >(
+        ( place - pData_ ) / blockSize );
+
+    unsigned char index = firstAvailableBlock_;
+    assert( numBlocks > index );
+    if ( index == blockIndex )
+        return true;
+
+    /* If the bit at index was set in foundBlocks, then the stealth index was
+     found on the linked-list.
+     */
+    std::bitset< UCHAR_MAX > foundBlocks;
+    unsigned char * nextBlock = NULL;
+    for ( unsigned char cc = 0; ; )
+    {
+        nextBlock = pData_ + ( index * blockSize );
+        foundBlocks.set( index, true );
+        ++cc;
+        if ( cc >= blocksAvailable_ )
+            // Successfully counted off number of nodes in linked-list.
+            break;
+        index = *nextBlock;
+        if ( index == blockIndex )
+            return true;
+        assert( numBlocks > index );
+        assert( !foundBlocks.test( index ) );
+    }
+
+    return false;
+}
+
+// FixedAllocator::FixedAllocator ---------------------------------------------
+
+FixedAllocator::FixedAllocator()
+    : blockSize_( 0 )
+    , numBlocks_( 0 )
+    , chunks_( 0 )
+    , allocChunk_( NULL )
+    , deallocChunk_( NULL )
+    , emptyChunk_( NULL )
+{
+}
+
+// FixedAllocator::~FixedAllocator --------------------------------------------
+
+FixedAllocator::~FixedAllocator()
+{
+#ifdef DO_EXTRA_LOKI_TESTS
+    TrimEmptyChunk();
+    assert( chunks_.empty() && "Memory leak detected!" );
+#endif
+    for ( ChunkIter i( chunks_.begin() ); i != chunks_.end(); ++i )
+       i->Release();
+}
+
+// FixedAllocator::Initialize -------------------------------------------------
+
+void FixedAllocator::Initialize( std::size_t blockSize, std::size_t pageSize )
+{
+    assert( blockSize > 0 );
+    assert( pageSize >= blockSize );
+    blockSize_ = blockSize;
+
+    std::size_t numBlocks = pageSize / blockSize;
+    if ( numBlocks > MaxObjectsPerChunk_ ) numBlocks = MaxObjectsPerChunk_;
+    else if ( numBlocks < MinObjectsPerChunk_ ) numBlocks = MinObjectsPerChunk_;
+
+    numBlocks_ = static_cast<unsigned char>(numBlocks);
+    assert(numBlocks_ == numBlocks);
+}
+
+// FixedAllocator::CountEmptyChunks -------------------------------------------
+
+std::size_t FixedAllocator::CountEmptyChunks( void ) const
+{
+#ifdef DO_EXTRA_LOKI_TESTS
+    // This code is only used for specialized tests of the allocator.
+    // It is #ifdef-ed so that its O(C) complexity does not overwhelm the
+    // functions which call it.
+    std::size_t count = 0;
+    for ( ChunkCIter it( chunks_.begin() ); it != chunks_.end(); ++it )
+    {
+        const Chunk & chunk = *it;
+        if ( chunk.HasAvailable( numBlocks_ ) )
+            ++count;
+    }
+    return count;
+#else
+    return ( NULL == emptyChunk_ ) ? 0 : 1;
+#endif
+}
+
+// FixedAllocator::IsCorrupt --------------------------------------------------
+
+bool FixedAllocator::IsCorrupt( void ) const
+{
+    const bool isEmpty = chunks_.empty();
+    ChunkCIter start( chunks_.begin() );
+    ChunkCIter last( chunks_.end() );
+    const size_t emptyChunkCount = CountEmptyChunks();
+
+    if ( isEmpty )
+    {
+        if ( start != last )
+        {
+            assert( false );
+            return true;
+        }
+        if ( 0 < emptyChunkCount )
+        {
+            assert( false );
+            return true;
+        }
+        if ( NULL != deallocChunk_ )
+        {
+            assert( false );
+            return true;
+        }
+        if ( NULL != allocChunk_ )
+        {
+            assert( false );
+            return true;
+        }
+        if ( NULL != emptyChunk_ )
+        {
+            assert( false );
+            return true;
+        }
+    }
+
+    else
+    {
+        const Chunk * front = &chunks_.front();
+        const Chunk * back  = &chunks_.back();
+        if ( start >= last )
+        {
+            assert( false );
+            return true;
+        }
+        if ( back < deallocChunk_ )
+        {
+            assert( false );
+            return true;
+        }
+        if ( back < allocChunk_ )
+        {
+            assert( false );
+            return true;
+        }
+        if ( front > deallocChunk_ )
+        {
+            assert( false );
+            return true;
+        }
+        if ( front > allocChunk_ )
+        {
+            assert( false );
+            return true;
+        }
+
+        switch ( emptyChunkCount )
+        {
+            case 0:
+                if ( emptyChunk_ != NULL )
+                {
+                    assert( false );
+                    return true;
+                }
+                break;
+            case 1:
+                if ( emptyChunk_ == NULL )
+                {
+                    assert( false );
+                    return true;
+                }
+                if ( back < emptyChunk_ )
+                {
+                    assert( false );
+                    return true;
+                }
+                if ( front > emptyChunk_ )
+                {
+                    assert( false );
+                    return true;
+                }
+                if ( !emptyChunk_->HasAvailable( numBlocks_ ) )
+                {
+                    // This may imply somebody tried to delete a block twice.
+                    assert( false );
+                    return true;
+                }
+                break;
+            default:
+                assert( false );
+                return true;
+        }
+        for ( ChunkCIter it( start ); it != last; ++it )
+        {
+            const Chunk & chunk = *it;
+            if ( chunk.IsCorrupt( numBlocks_, blockSize_, true ) )
+                return true;
+        }
+    }
+
+    return false;
+}
+
+// FixedAllocator::HasBlock ---------------------------------------------------
+
+const Chunk * FixedAllocator::HasBlock( void * p ) const
+{
+    const std::size_t chunkLength = numBlocks_ * blockSize_;
+    for ( ChunkCIter it( chunks_.begin() ); it != chunks_.end(); ++it )
+    {
+        const Chunk & chunk = *it;
+        if ( chunk.HasBlock( p, chunkLength ) )
+            return &chunk;
+    }
+    return NULL;
+}
+
+// FixedAllocator::TrimEmptyChunk ---------------------------------------------
+
+bool FixedAllocator::TrimEmptyChunk( void )
+{
+    // prove either emptyChunk_ points nowhere, or points to a truly empty Chunk.
+    assert( ( NULL == emptyChunk_ ) || ( emptyChunk_->HasAvailable( numBlocks_ ) ) );
+    if ( NULL == emptyChunk_ ) return false;
+
+    // If emptyChunk_ points to valid Chunk, then chunk list is not empty.
+    assert( !chunks_.empty() );
+    // And there should be exactly 1 empty Chunk.
+    assert( 1 == CountEmptyChunks() );
+
+    Chunk * lastChunk = &chunks_.back();
+    if ( lastChunk != emptyChunk_ )
+        std::swap( *emptyChunk_, *lastChunk );
+    assert( lastChunk->HasAvailable( numBlocks_ ) );
+    lastChunk->Release();
+    chunks_.pop_back();
+
+    if ( chunks_.empty() )
+    {
+        allocChunk_ = NULL;
+        deallocChunk_ = NULL;
+    }
+    else
+    {
+        if ( deallocChunk_ == emptyChunk_ )
+        {
+            deallocChunk_ = &chunks_.front();
+            assert( deallocChunk_->blocksAvailable_ < numBlocks_ );
+        }
+        if ( allocChunk_ == emptyChunk_ )
+        {
+            allocChunk_ = &chunks_.back();
+            assert( allocChunk_->blocksAvailable_ < numBlocks_ );
+        }
+    }
+
+    emptyChunk_ = NULL;
+    assert( 0 == CountEmptyChunks() );
+
+    return true;
+}
+
+// FixedAllocator::TrimChunkList ----------------------------------------------
+
+bool FixedAllocator::TrimChunkList( void )
+{
+    if ( chunks_.empty() )
+    {
+        assert( NULL == allocChunk_ );
+        assert( NULL == deallocChunk_ );
+    }
+
+    if ( chunks_.size() == chunks_.capacity() )
+        return false;
+    // Use the "make-a-temp-and-swap" trick to remove excess capacity.
+    Chunks( chunks_ ).swap( chunks_ );
+
+    return true;
+}
+
+// FixedAllocator::MakeNewChunk -----------------------------------------------
+
+bool FixedAllocator::MakeNewChunk( void )
+{
+    bool allocated = false;
+    try
+    {
+        std::size_t size = chunks_.size();
+        // Calling chunks_.reserve *before* creating and initializing the new
+        // Chunk means that nothing is leaked by this function in case an
+        // exception is thrown from reserve.
+        if ( chunks_.capacity() == size )
+        {
+            if ( 0 == size ) size = 4;
+            chunks_.reserve( size * 2 );
+        }
+        Chunk newChunk;
+        allocated = newChunk.Init( blockSize_, numBlocks_ );
+        if ( allocated )
+            chunks_.push_back( newChunk );
+    }
+    catch ( ... )
+    {
+        allocated = false;
+    }
+    if ( !allocated ) return false;
+
+    allocChunk_ = &chunks_.back();
+    deallocChunk_ = &chunks_.front();
+    return true;
+}
+
+// FixedAllocator::Allocate ---------------------------------------------------
+
+void * FixedAllocator::Allocate( void )
+{
+    // prove either emptyChunk_ points nowhere, or points to a truly empty Chunk.
+    assert( ( NULL == emptyChunk_ ) || ( emptyChunk_->HasAvailable( numBlocks_ ) ) );
+    assert( CountEmptyChunks() < 2 );
+
+    if ( ( NULL == allocChunk_ ) || allocChunk_->IsFilled() )
+    {
+        if ( NULL != emptyChunk_ )
+        {
+            allocChunk_ = emptyChunk_;
+            emptyChunk_ = NULL;
+        }
+        else
+        {
+            for ( ChunkIter i( chunks_.begin() ); ; ++i )
+            {
+                if ( chunks_.end() == i )
+                {
+                    if ( !MakeNewChunk() )
+                        return NULL;
+                    break;
+                }
+                if ( !i->IsFilled() )
+                {
+                    allocChunk_ = &*i;
+                    break;
+                }
+            }
+        }
+    }
+    else if ( allocChunk_ == emptyChunk_)
+        // detach emptyChunk_ from allocChunk_, because after 
+        // calling allocChunk_->Allocate(blockSize_); the chunk 
+        // is no longer empty.
+        emptyChunk_ = NULL;
+
+    assert( allocChunk_ != NULL );
+    assert( !allocChunk_->IsFilled() );
+    void * place = allocChunk_->Allocate( blockSize_ );
+
+    // prove either emptyChunk_ points nowhere, or points to a truly empty Chunk.
+    assert( ( NULL == emptyChunk_ ) || ( emptyChunk_->HasAvailable( numBlocks_ ) ) );
+    assert( CountEmptyChunks() < 2 );
+
+    return place;
+}
+
+// FixedAllocator::Deallocate -------------------------------------------------
+
+bool FixedAllocator::Deallocate( void * p, Chunk * hint )
+{
+    assert(!chunks_.empty());
+    assert(&chunks_.front() <= deallocChunk_);
+    assert(&chunks_.back() >= deallocChunk_);
+    assert( &chunks_.front() <= allocChunk_ );
+    assert( &chunks_.back() >= allocChunk_ );
+    assert( CountEmptyChunks() < 2 );
+
+    Chunk * foundChunk = ( NULL == hint ) ? VicinityFind( p ) : hint;
+    if ( NULL == foundChunk )
+        return false;
+
+    assert( foundChunk->HasBlock( p, numBlocks_ * blockSize_ ) );
+#ifdef LOKI_CHECK_FOR_CORRUPTION
+    if ( foundChunk->IsCorrupt( numBlocks_, blockSize_, true ) )
+    {
+        assert( false );
+        return false;
+    }
+    if ( foundChunk->IsBlockAvailable( p, numBlocks_, blockSize_ ) )
+    {
+        assert( false );
+        return false;
+    }
+#endif
+    deallocChunk_ = foundChunk;
+    DoDeallocate(p);
+    assert( CountEmptyChunks() < 2 );
+
+    return true;
+}
+
+// FixedAllocator::VicinityFind -----------------------------------------------
+
+Chunk * FixedAllocator::VicinityFind( void * p ) const
+{
+    if ( chunks_.empty() ) return NULL;
+    assert(deallocChunk_);
+
+    const std::size_t chunkLength = numBlocks_ * blockSize_;
+    Chunk * lo = deallocChunk_;
+    Chunk * hi = deallocChunk_ + 1;
+    const Chunk * loBound = &chunks_.front();
+    const Chunk * hiBound = &chunks_.back() + 1;
+
+    // Special case: deallocChunk_ is the last in the array
+    if (hi == hiBound) hi = NULL;
+
+    for (;;)
+    {
+        if (lo)
+        {
+            if ( lo->HasBlock( p, chunkLength ) ) return lo;
+            if ( lo == loBound )
+            {
+                lo = NULL;
+                if ( NULL == hi ) break;
+            }
+            else --lo;
+        }
+
+        if (hi)
+        {
+            if ( hi->HasBlock( p, chunkLength ) ) return hi;
+            if ( ++hi == hiBound )
+            {
+                hi = NULL;
+                if ( NULL == lo ) break;
+            }
+        }
+    }
+
+    return NULL;
+}
+
+// FixedAllocator::DoDeallocate -----------------------------------------------
+
+void FixedAllocator::DoDeallocate(void* p)
+{
+    // Show that deallocChunk_ really owns the block at address p.
+    assert( deallocChunk_->HasBlock( p, numBlocks_ * blockSize_ ) );
+    // Either of the next two assertions may fail if somebody tries to
+    // delete the same block twice.
+    assert( emptyChunk_ != deallocChunk_ );
+    assert( !deallocChunk_->HasAvailable( numBlocks_ ) );
+    // prove either emptyChunk_ points nowhere, or points to a truly empty Chunk.
+    assert( ( NULL == emptyChunk_ ) || ( emptyChunk_->HasAvailable( numBlocks_ ) ) );
+
+    // call into the chunk, will adjust the inner list but won't release memory
+    deallocChunk_->Deallocate(p, blockSize_);
+
+    if ( deallocChunk_->HasAvailable( numBlocks_ ) )
+    {
+        assert( emptyChunk_ != deallocChunk_ );
+        // deallocChunk_ is empty, but a Chunk is only released if there are 2
+        // empty chunks.  Since emptyChunk_ may only point to a previously
+        // cleared Chunk, if it points to something else besides deallocChunk_,
+        // then FixedAllocator currently has 2 empty Chunks.
+        if ( NULL != emptyChunk_ )
+        {
+            // If last Chunk is empty, just change what deallocChunk_
+            // points to, and release the last.  Otherwise, swap an empty
+            // Chunk with the last, and then release it.
+            Chunk * lastChunk = &chunks_.back();
+            if ( lastChunk == deallocChunk_ )
+                deallocChunk_ = emptyChunk_;
+            else if ( lastChunk != emptyChunk_ )
+                std::swap( *emptyChunk_, *lastChunk );
+            assert( lastChunk->HasAvailable( numBlocks_ ) );
+            lastChunk->Release();
+            chunks_.pop_back();
+            if ( ( allocChunk_ == lastChunk ) || allocChunk_->IsFilled() ) 
+                allocChunk_ = deallocChunk_;
+        }
+        emptyChunk_ = deallocChunk_;
+    }
+
+    // prove either emptyChunk_ points nowhere, or points to a truly empty Chunk.
+    assert( ( NULL == emptyChunk_ ) || ( emptyChunk_->HasAvailable( numBlocks_ ) ) );
+}
+
+// GetOffset ------------------------------------------------------------------
+/// @ingroup SmallObjectGroupInternal
+/// Calculates index into array where a FixedAllocator of numBytes is located.
+inline std::size_t GetOffset( std::size_t numBytes, std::size_t alignment )
+{
+    const std::size_t alignExtra = alignment-1;
+    return ( numBytes + alignExtra ) / alignment;
+}
+
+// DefaultAllocator -----------------------------------------------------------
+/** @ingroup SmallObjectGroupInternal
+ Calls the default allocator when SmallObjAllocator decides not to handle a
+ request.  SmallObjAllocator calls this if the number of bytes is bigger than
+ the size which can be handled by any FixedAllocator.
+ @param numBytes number of bytes
+ @param doThrow True if this function should throw an exception, or false if it
+  should indicate failure by returning a NULL pointer.
+*/
+void * DefaultAllocator( std::size_t numBytes, bool doThrow )
+{
+#ifdef USE_NEW_TO_ALLOCATE
+    return doThrow ? ::operator new( numBytes ) :
+        ::operator new( numBytes, std::nothrow_t() );
+#else
+    void * p = ::std::malloc( numBytes );
+    if ( doThrow && ( NULL == p ) )
+        throw std::bad_alloc();
+    return p;
+#endif
+}
+
+// DefaultDeallocator ---------------------------------------------------------
+/** @ingroup SmallObjectGroupInternal
+ Calls default deallocator when SmallObjAllocator decides not to handle a   
+ request.  The default deallocator could be the global delete operator or the
+ free function.  The free function is the preferred default deallocator since
+ it matches malloc which is the preferred default allocator.  SmallObjAllocator
+ will call this if an address was not found among any of its own blocks.
+ */
+void DefaultDeallocator( void * p )
+{
+#ifdef USE_NEW_TO_ALLOCATE
+    ::operator delete( p );
+#else
+    ::std::free( p );
+#endif
+}
+
+// SmallObjAllocator::SmallObjAllocator ---------------------------------------
+
+SmallObjAllocator::SmallObjAllocator( std::size_t pageSize,
+    std::size_t maxObjectSize, std::size_t objectAlignSize ) :
+    pool_( NULL ),
+    maxSmallObjectSize_( maxObjectSize ),
+    objectAlignSize_( objectAlignSize )
+{
+#ifdef DO_EXTRA_LOKI_TESTS
+    std::cout << "SmallObjAllocator " << this << std::endl;
+#endif
+    assert( 0 != objectAlignSize );
+    const std::size_t allocCount = GetOffset( maxObjectSize, objectAlignSize );
+    pool_ = new FixedAllocator[ allocCount ];
+    for ( std::size_t i = 0; i < allocCount; ++i )
+        pool_[ i ].Initialize( ( i+1 ) * objectAlignSize, pageSize );
+}
+
+// SmallObjAllocator::~SmallObjAllocator --------------------------------------
+
+SmallObjAllocator::~SmallObjAllocator( void )
+{
+#ifdef DO_EXTRA_LOKI_TESTS
+    std::cout << "~SmallObjAllocator " << this << std::endl;
+#endif
+    delete [] pool_;
+}
+
+// SmallObjAllocator::TrimExcessMemory ----------------------------------------
+
+bool SmallObjAllocator::TrimExcessMemory( void )
+{
+    bool found = false;
+    const std::size_t allocCount = GetOffset( GetMaxObjectSize(), GetAlignment() );
+    std::size_t i = 0;
+    for ( ; i < allocCount; ++i )
+    {
+        if ( pool_[ i ].TrimEmptyChunk() )
+            found = true;
+    }
+    for ( i = 0; i < allocCount; ++i )
+    {
+        if ( pool_[ i ].TrimChunkList() )
+            found = true;
+    }
+
+    return found;
+}
+
+// SmallObjAllocator::Allocate ------------------------------------------------
+
+void * SmallObjAllocator::Allocate( std::size_t numBytes, bool doThrow )
+{
+    if ( numBytes > GetMaxObjectSize() )
+        return DefaultAllocator( numBytes, doThrow );
+
+    assert( NULL != pool_ );
+    if ( 0 == numBytes ) numBytes = 1;
+    const std::size_t index = GetOffset( numBytes, GetAlignment() ) - 1;
+    const std::size_t allocCount = GetOffset( GetMaxObjectSize(), GetAlignment() );
+    (void) allocCount;
+    assert( index < allocCount );
+
+    FixedAllocator & allocator = pool_[ index ];
+    assert( allocator.BlockSize() >= numBytes );
+    assert( allocator.BlockSize() < numBytes + GetAlignment() );
+    void * place = allocator.Allocate();
+
+    if ( ( NULL == place ) && TrimExcessMemory() )
+        place = allocator.Allocate();
+
+    if ( ( NULL == place ) && doThrow )
+    {
+#ifdef _MSC_VER
+        throw std::bad_alloc( "could not allocate small object" );
+#else
+        // GCC did not like a literal string passed to std::bad_alloc.
+        // so just throw the default-constructed exception.
+        throw std::bad_alloc();
+#endif
+    }
+    return place;
+}
+
+// SmallObjAllocator::Deallocate ----------------------------------------------
+
+void SmallObjAllocator::Deallocate( void * p, std::size_t numBytes )
+{
+    if ( NULL == p ) return;
+    if ( numBytes > GetMaxObjectSize() )
+    {
+        DefaultDeallocator( p );
+        return;
+    }
+    assert( NULL != pool_ );
+    if ( 0 == numBytes ) numBytes = 1;
+    const std::size_t index = GetOffset( numBytes, GetAlignment() ) - 1;
+    const std::size_t allocCount = GetOffset( GetMaxObjectSize(), GetAlignment() );
+    (void) allocCount;
+    assert( index < allocCount );
+    FixedAllocator & allocator = pool_[ index ];
+    assert( allocator.BlockSize() >= numBytes );
+    assert( allocator.BlockSize() < numBytes + GetAlignment() );
+    const bool found = allocator.Deallocate( p, NULL );
+    (void) found;
+    assert( found );
+}
+
+// SmallObjAllocator::Deallocate ----------------------------------------------
+
+void SmallObjAllocator::Deallocate( void * p )
+{
+    if ( NULL == p ) return;
+    assert( NULL != pool_ );
+    FixedAllocator * pAllocator = NULL;
+    const std::size_t allocCount = GetOffset( GetMaxObjectSize(), GetAlignment() );
+    Chunk * chunk = NULL;
+
+    for ( std::size_t ii = 0; ii < allocCount; ++ii )
+    {
+        chunk = pool_[ ii ].HasBlock( p );
+        if ( NULL != chunk )
+        {
+            pAllocator = &pool_[ ii ];
+            break;
+        }
+    }
+    if ( NULL == pAllocator )
+    {
+        DefaultDeallocator( p );
+        return;
+    }
+
+    assert( NULL != chunk );
+    const bool found = pAllocator->Deallocate( p, chunk );
+    (void) found;
+    assert( found );
+}
+
+// SmallObjAllocator::IsCorrupt -----------------------------------------------
+
+bool SmallObjAllocator::IsCorrupt( void ) const
+{
+    if ( NULL == pool_ )
+    {
+        assert( false );
+        return true;
+    }
+    if ( 0 == GetAlignment() )
+    {
+        assert( false );
+        return true;
+    }
+    if ( 0 == GetMaxObjectSize() )
+    {
+        assert( false );
+        return true;
+    }
+    const std::size_t allocCount = GetOffset( GetMaxObjectSize(), GetAlignment() );
+    for ( std::size_t ii = 0; ii < allocCount; ++ii )
+    {
+        if ( pool_[ ii ].IsCorrupt() )
+            return true;
+    }
+    return false;
+}
+
+} // end namespace Loki
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SmartPtr.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SmartPtr.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/SmartPtr.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,314 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2001 by Andrei Alexandrescu
+// Copyright (c) 2006 Richard Sposato
+// This code accompanies the book:
+// Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design 
+//     Patterns Applied". Copyright (c) 2001. Addison-Wesley.
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above  copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author or Addison-Wesley Longman make no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+// $Id: SmartPtr.cpp 756 2006-10-17 20:05:42Z syntheticpp $
+
+
+#include <loki/SmartPtr.h>
+
+#include <cassert>
+
+//#define DO_EXTRA_LOKI_TESTS
+#ifdef DO_EXTRA_LOKI_TESTS
+    #include <iostream>
+#endif
+
+
+// ----------------------------------------------------------------------------
+
+namespace Loki
+{
+
+namespace Private
+{
+
+// ----------------------------------------------------------------------------
+
+RefLinkedBase::RefLinkedBase(const RefLinkedBase& rhs) 
+{
+    prev_ = &rhs;
+    next_ = rhs.next_;
+    prev_->next_ = this;
+    next_->prev_ = this;
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( prev_->HasPrevNode( this ) );
+    assert( next_->HasNextNode( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+#endif
+}
+
+// ----------------------------------------------------------------------------
+
+bool RefLinkedBase::Release()
+{
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( prev_->HasPrevNode( this ) );
+    assert( next_->HasNextNode( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+#endif
+
+    if ( NULL == next_ )
+    {
+        assert( NULL == prev_ );
+        // Return false so it does not try to destroy shared object
+        // more than once.
+        return false;
+    }
+    else if (next_ == this)
+    {   
+        assert(prev_ == this);
+        // Set these to NULL to prevent re-entrancy.
+        prev_ = NULL;
+        next_ = NULL;
+        return true;
+    }
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( this != prev_ );
+    assert( NULL != prev_ );
+    assert( prev_->HasPrevNode( this ) );
+    assert( next_->HasNextNode( this ) );
+#endif
+
+    prev_->next_ = next_;
+    next_->prev_ = prev_;
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    next_ = this;
+    prev_ = this;
+    assert( 1 == CountNextCycle( this ) );
+    assert( 1 == CountPrevCycle( this ) );
+#endif
+
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+
+void RefLinkedBase::Swap(RefLinkedBase& rhs)
+{
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( prev_->HasPrevNode( this ) );
+    assert( next_->HasNextNode( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+#endif
+
+    if (next_ == this)
+    {
+        assert(prev_ == this);
+        if (rhs.next_ == &rhs)
+        {
+            assert(rhs.prev_ == &rhs);
+            // both lists are empty, nothing 2 do
+            return;
+        }
+        prev_ = rhs.prev_;
+        next_ = rhs.next_;
+        prev_->next_ = next_->prev_ = this;
+        rhs.next_ = rhs.prev_ = &rhs;
+        return;
+    }
+    if (rhs.next_ == &rhs)
+    {
+        rhs.Swap(*this);
+        return;
+    }
+    if (next_ == &rhs ) // rhs is next neighbour
+    {
+        if ( prev_ == &rhs )
+            return;  // cycle of 2 pointers - no need to swap.
+        std::swap(prev_, next_);
+        std::swap(rhs.prev_, rhs.next_);
+        std::swap(rhs.prev_, next_);
+        std::swap(rhs.prev_->next_,next_->prev_);
+    }
+    else if ( prev_ == &rhs ) // rhs is prev neighbor
+    {
+        if ( next_ == &rhs )
+            return;  // cycle of 2 pointers - no need to swap.
+        std::swap( prev_, next_ );
+        std::swap( rhs.next_, rhs.prev_ );
+        std::swap( rhs.next_, prev_ );
+        std::swap( rhs.next_->prev_, prev_->next_ );
+    }
+    else // not neighhbors
+    {
+        std::swap(prev_, rhs.prev_);
+        std::swap(next_, rhs.next_);
+        std::swap(prev_->next_, rhs.prev_->next_);
+        std::swap(next_->prev_, rhs.next_->prev_);
+    }
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( next_ == this ? prev_ == this : prev_ != this);
+    assert( prev_ == this ? next_ == this : next_ != this);
+    assert( prev_->HasPrevNode( this ) );
+    assert( next_->HasNextNode( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+    assert( rhs.prev_->HasPrevNode( &rhs ) );
+    assert( rhs.next_->HasNextNode( &rhs ) );
+    assert( CountPrevCycle( &rhs ) == CountNextCycle( &rhs ) );
+#endif
+
+}
+
+// ----------------------------------------------------------------------------
+
+unsigned int RefLinkedBase::CountPrevCycle( const RefLinkedBase * pThis )
+{
+    if ( NULL == pThis )
+        return 0;
+    const RefLinkedBase * p = pThis->prev_;
+    if ( NULL == p )
+        return 0;
+    if ( pThis == p )
+        return 1;
+
+    unsigned int count = 1;
+    do
+    {
+        p = p->prev_;
+        ++count;
+    } while ( p != pThis );
+
+    return count;
+}
+
+// ----------------------------------------------------------------------------
+
+unsigned int RefLinkedBase::CountNextCycle( const RefLinkedBase * pThis )
+{
+    if ( NULL == pThis )
+        return 0;
+    const RefLinkedBase * p = pThis->next_;
+    if ( NULL == p )
+        return 0;
+    if ( pThis == p )
+        return 1;
+
+    unsigned int count = 1;
+    while ( p != pThis )
+    {
+        p = p->next_;
+        ++count;
+    }
+
+    return count;
+}
+
+// ----------------------------------------------------------------------------
+
+bool RefLinkedBase::HasPrevNode( const RefLinkedBase * p ) const
+{
+    if ( this == p )
+        return true;
+    const RefLinkedBase * prev = prev_;
+    if ( NULL == prev )
+        return false;
+    while ( prev != this )
+    {
+        if ( p == prev )
+            return true;
+        prev = prev->prev_;
+    }
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+
+bool RefLinkedBase::HasNextNode( const RefLinkedBase * p ) const
+{
+    if ( this == p )
+        return true;
+    const RefLinkedBase * next = next_;
+    if ( NULL == next )
+        return false;
+    while ( next != this )
+    {
+        if ( p == next )
+            return true;
+        next = next->next_;
+    }
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+
+bool RefLinkedBase::Merge( RefLinkedBase & rhs )
+{
+
+    if ( NULL == next_ )
+    {
+        assert( NULL == prev_ );
+        return false;
+    }
+    RefLinkedBase * prhs = &rhs;
+    if ( prhs == this )
+        return true;
+    if ( NULL == prhs->next_ )
+    {
+        assert( NULL == prhs->prev_ );
+        return true;
+    }
+
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+    assert( CountPrevCycle( prhs ) == CountNextCycle( prhs ) );
+    // If rhs node is already in this cycle, then no need to merge.
+    if ( HasPrevNode( &rhs ) )
+    {
+        assert( HasNextNode( &rhs ) );
+        return true;
+    }
+
+    if ( prhs == prhs->next_ )
+    {
+        /// rhs is in a cycle with 1 node.
+        assert( prhs->prev_ == prhs );
+        prhs->prev_ = prev_;
+        prhs->next_ = this;
+        prev_->next_ = prhs;
+        prev_ = prhs;
+    }
+    else if ( this == next_ )
+    {
+        /// this is in a cycle with 1 node.
+        assert( prev_ == this );
+        prev_ = prhs->prev_;
+        next_ = prhs;
+        prhs->prev_->next_ = this;
+        prhs->prev_ = this;
+    }
+    else
+    {
+        next_->prev_ = prhs->prev_;
+        prhs->prev_->next_ = prev_;
+        next_ = prhs;
+        prhs->prev_ = this;
+    }
+
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+
+} // end namespace Private
+
+} // end namespace Loki
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/StrongPtr.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/StrongPtr.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/StrongPtr.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,530 @@
+////////////////////////////////////////////////////////////////////////////////
+// The Loki Library
+// Copyright (c) 2006 Rich Sposato
+// Permission to use, copy, modify, distribute and sell this software for any 
+//     purpose is hereby granted without fee, provided that the above copyright 
+//     notice appear in all copies and that both that copyright notice and this 
+//     permission notice appear in supporting documentation.
+// The author makes no representations about the 
+//     suitability of this software for any purpose. It is provided "as is" 
+//     without express or implied warranty.
+////////////////////////////////////////////////////////////////////////////////
+
+// $Id: StrongPtr.cpp 807 2007-02-25 12:49:19Z syntheticpp $
+
+
+#include <loki/StrongPtr.h>
+
+#include <memory.h>
+#ifdef DO_EXTRA_LOKI_TESTS
+    #include <cassert>
+#endif
+
+#include <loki/SmallObj.h>
+
+
+// ----------------------------------------------------------------------------
+
+namespace Loki
+{
+
+// ----------------------------------------------------------------------------
+
+TwoRefCounts::TwoRefCounts( bool strong )
+    : m_counts( NULL )
+{
+    void * temp = SmallObject<>::operator new(
+        sizeof(Loki::Private::TwoRefCountInfo) );
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( temp != 0 );
+#endif
+    m_counts = new ( temp ) Loki::Private::TwoRefCountInfo( strong );
+}
+
+// ----------------------------------------------------------------------------
+
+TwoRefCounts::TwoRefCounts( const void * p, bool strong )
+    : m_counts( NULL )
+{
+    void * temp = SmallObject<>::operator new(
+        sizeof(Loki::Private::TwoRefCountInfo) );
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( temp != 0 );
+#endif
+    void * p2 = const_cast< void * >( p );
+    m_counts = new ( temp ) Loki::Private::TwoRefCountInfo( p2, strong );
+}
+
+// ----------------------------------------------------------------------------
+
+void TwoRefCounts::Increment( bool strong )
+{
+    if ( strong )
+    {
+        m_counts->IncStrongCount();
+    }
+    else
+    {
+        m_counts->IncWeakCount();
+    }
+}
+
+// ----------------------------------------------------------------------------
+
+bool TwoRefCounts::Decrement( bool strong )
+{
+    if ( strong )
+    {
+        m_counts->DecStrongCount();
+    }
+    else
+    {
+        m_counts->DecWeakCount();
+    }
+    return !m_counts->HasStrongPointer();
+}
+
+// ----------------------------------------------------------------------------
+
+void TwoRefCounts::Swap( TwoRefCounts & rhs )
+{
+    std::swap( m_counts, rhs.m_counts );
+}
+
+// ----------------------------------------------------------------------------
+
+void TwoRefCounts::ZapPointer( void )
+{
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( !m_counts->HasStrongPointer() );
+#endif
+    if ( m_counts->HasWeakPointer() )
+    {
+        m_counts->ZapPointer();
+    }
+    else
+    {
+        SmallObject<>::operator delete ( m_counts,
+            sizeof(Loki::Private::TwoRefCountInfo) );
+        m_counts = NULL;
+    }
+}
+
+
+// ----------------------------------------------------------------------------
+
+TwoRefLinks::TwoRefLinks( const void * p, bool strong )
+    : m_pointer( const_cast< void * >( p ) )
+    , m_strong( strong )
+{
+    m_prev = m_next = this;
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+#endif
+}
+
+// ----------------------------------------------------------------------------
+
+TwoRefLinks::TwoRefLinks( const TwoRefLinks & rhs, bool strong )
+    : m_pointer( rhs.m_pointer )
+    , m_prev( const_cast< TwoRefLinks * >( &rhs ) )
+    , m_next( rhs.m_next )
+    , m_strong( strong )
+{
+    m_prev->m_next = this;
+    m_next->m_prev = this;
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( m_prev->HasPrevNode( this ) );
+    assert( m_next->HasNextNode( this ) );
+    assert( rhs.m_next->HasNextNode( this ) );
+    assert( rhs.m_prev->HasPrevNode( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( &rhs ) );
+    assert( AllNodesHaveSamePointer() );
+#endif
+}
+
+// ----------------------------------------------------------------------------
+
+void TwoRefLinks::SetPointer( void * p )
+{
+    TwoRefLinks * node = m_prev;
+    if ( ( this == node ) || ( 0 == node ) )
+        return;
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( m_prev->HasPrevNode( this ) );
+    assert( m_next->HasNextNode( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+    assert( AllNodesHaveSamePointer() );
+#endif
+
+    while ( node != this )
+    {
+        node->m_pointer = p;
+        node = node->m_next;
+    }
+    m_pointer = node;
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( m_prev->HasPrevNode( this ) );
+    assert( m_next->HasNextNode( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+    assert( AllNodesHaveSamePointer() );
+#endif
+}
+
+// ----------------------------------------------------------------------------
+
+bool TwoRefLinks::Release( bool strong )
+{
+
+    (void)strong;
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( strong == m_strong );
+    assert( m_prev->HasPrevNode( this ) );
+    assert( m_next->HasNextNode( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+    assert( AllNodesHaveSamePointer() );
+#endif
+
+    if ( NULL == m_next )
+    {
+#ifdef DO_EXTRA_LOKI_TESTS
+        assert( NULL == m_prev );
+#endif
+        // Return false so it does not try to destroy shared object
+        // more than once.
+        return false;
+    }
+    else if (m_next == this)
+    {   
+#ifdef DO_EXTRA_LOKI_TESTS
+        assert(m_prev == this);
+#endif
+        // Set these to NULL to prevent re-entrancy.
+        m_prev = NULL;
+        m_next = NULL;
+        // Last one in the cycle has to release the pointer.
+        return true;
+    }
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( this != m_prev );
+    assert( NULL != m_prev );
+    assert( m_prev->HasPrevNode( this ) );
+    assert( m_next->HasNextNode( this ) );
+#endif
+
+    // If a single node is strong, then return false so it won't release.
+    if ( HasStrongPointer() )
+    {
+        // A cyclic chain of pointers is only as strong as the strongest link.
+        m_prev->m_next = m_next;
+        m_next->m_prev = m_prev;
+        return false;
+    }
+
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+
+void TwoRefLinks::ZapAllNodes( void )
+{
+    TwoRefLinks * p = m_prev;
+    if ( ( this == p ) || ( 0 == p ) )
+        return;
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( AllNodesHaveSamePointer() );
+#endif
+
+    while ( p != this )
+    {
+        TwoRefLinks * p1 = p->m_prev;
+        p->m_pointer = 0;
+        p->m_next = p;
+        p->m_prev = p;
+        p = p1;
+    }
+    m_pointer = 0;
+}
+
+// ----------------------------------------------------------------------------
+
+void TwoRefLinks::Swap( TwoRefLinks & rhs )
+{
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( m_prev->HasPrevNode( this ) );
+    assert( m_next->HasNextNode( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+    assert( AllNodesHaveSamePointer() );
+    assert( rhs.AllNodesHaveSamePointer() );
+#endif
+
+    std::swap( rhs.m_pointer, m_pointer );
+    if (m_next == this)
+    {
+#ifdef DO_EXTRA_LOKI_TESTS
+        // This is in a cycle by itself.
+        assert(m_prev == this);
+#endif
+        if (rhs.m_next == &rhs)
+        {
+#ifdef DO_EXTRA_LOKI_TESTS
+            assert(rhs.m_prev == &rhs);
+#endif
+            // both are in 1-node cycles - thus there is nothing to do.
+            return;
+        }
+        m_prev = rhs.m_prev;
+        m_next = rhs.m_next;
+        m_prev->m_next = m_next->m_prev = this;
+        rhs.m_next = rhs.m_prev = &rhs;
+        return;
+    }
+    if (rhs.m_next == &rhs)
+    {
+#ifdef DO_EXTRA_LOKI_TESTS
+        // rhs is in a cycle by itself.
+        assert( rhs.m_prev == &rhs );
+#endif
+        rhs.m_prev = m_prev;
+        rhs.m_next = m_next;
+        m_prev->m_next = m_next->m_prev = &rhs;
+        m_next = m_prev = this;
+        return;
+    }
+    if (m_next == &rhs ) // rhs is next neighbour
+    {
+        if ( m_prev == &rhs )
+            return;  // cycle of 2 pointers - no need to swap.
+        std::swap(m_prev, m_next);
+        std::swap(rhs.m_prev, rhs.m_next);
+        std::swap(rhs.m_prev, m_next);
+        std::swap(rhs.m_prev->m_next,m_next->m_prev);
+    }
+    else if ( m_prev == &rhs ) // rhs is prev neighbor
+    {
+        if ( m_next == &rhs )
+            return;  // cycle of 2 pointers - no need to swap.
+        std::swap( m_prev, m_next );
+        std::swap( rhs.m_next, rhs.m_prev );
+        std::swap( rhs.m_next, m_prev );
+        std::swap( rhs.m_next->m_prev, m_prev->m_next );
+    }
+    else // not neighhbors
+    {
+        std::swap(m_prev, rhs.m_prev);
+        std::swap(m_next, rhs.m_next);
+        std::swap(m_prev->m_next, rhs.m_prev->m_next);
+        std::swap(m_next->m_prev, rhs.m_next->m_prev);
+    }
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( m_next == this ? m_prev == this : m_prev != this);
+    assert( m_prev == this ? m_next == this : m_next != this);
+    assert( m_prev->HasPrevNode( this ) );
+    assert( m_next->HasNextNode( this ) );
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+    assert( rhs.m_prev->HasPrevNode( &rhs ) );
+    assert( rhs.m_next->HasNextNode( &rhs ) );
+    assert( CountPrevCycle( &rhs ) == CountNextCycle( &rhs ) );
+    assert( AllNodesHaveSamePointer() );
+    assert( rhs.AllNodesHaveSamePointer() );
+#endif
+
+}
+
+// ----------------------------------------------------------------------------
+
+bool TwoRefLinks::AllNodesHaveSamePointer( void ) const
+{
+    const TwoRefLinks * next = m_next;
+    if ( NULL == next )
+        return true;
+    do
+    {
+        if ( next->m_pointer != m_pointer )
+            return false;
+        next = next->m_next;
+    } while ( next != this );
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+
+unsigned int TwoRefLinks::CountPrevCycle( const TwoRefLinks * pThis )
+{
+    if ( NULL == pThis )
+        return 0;
+    const TwoRefLinks * p = pThis->m_prev;
+    if ( NULL == p )
+        return 0;
+    if ( pThis == p )
+        return 1;
+
+    unsigned int count = 1;
+    do
+    {
+        p = p->m_prev;
+        ++count;
+    } while ( p != pThis );
+
+    return count;
+}
+
+// ----------------------------------------------------------------------------
+
+unsigned int TwoRefLinks::CountNextCycle( const TwoRefLinks * pThis )
+{
+    if ( NULL == pThis )
+        return 0;
+    const TwoRefLinks * p = pThis->m_next;
+    if ( NULL == p )
+        return 0;
+    if ( pThis == p )
+        return 1;
+
+    unsigned int count = 1;
+    while ( p != pThis )
+    {
+        p = p->m_next;
+        ++count;
+    }
+
+    return count;
+}
+
+// ----------------------------------------------------------------------------
+
+bool TwoRefLinks::HasPrevNode( const TwoRefLinks * p ) const
+{
+    if ( this == p )
+        return true;
+    const TwoRefLinks * prev = m_prev;
+    if ( NULL == prev )
+        return false;
+    while ( prev != this )
+    {
+        if ( p == prev )
+            return true;
+        prev = prev->m_prev;
+    }
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+
+bool TwoRefLinks::HasNextNode( const TwoRefLinks * p ) const
+{
+    if ( this == p )
+        return true;
+    const TwoRefLinks * next = m_next;
+    if ( NULL == next )
+        return false;
+    while ( next != this )
+    {
+        if ( p == next )
+            return true;
+        next = next->m_next;
+    }
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+
+bool TwoRefLinks::HasStrongPointer( void ) const
+{
+    const TwoRefLinks * next = m_next;
+    if ( NULL == next )
+        return false;
+    while ( next != this )
+    {
+        if ( next->m_strong )
+            return true;
+        next = next->m_next;
+    }
+    return false;
+}
+
+// ----------------------------------------------------------------------------
+
+bool TwoRefLinks::Merge( TwoRefLinks & rhs )
+{
+
+    if ( NULL == m_next )
+    {
+#ifdef DO_EXTRA_LOKI_TESTS
+        assert( NULL == m_prev );
+#endif
+        return false;
+    }
+    TwoRefLinks * prhs = &rhs;
+    if ( prhs == this )
+        return true;
+    if ( NULL == prhs->m_next )
+    {
+#ifdef DO_EXTRA_LOKI_TESTS
+        assert( NULL == prhs->m_prev );
+#endif
+        return true;
+    }
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+    assert( CountPrevCycle( prhs ) == CountNextCycle( prhs ) );
+#endif
+    // If rhs node is already in this cycle, then no need to merge.
+    if ( HasPrevNode( &rhs ) )
+    {
+#ifdef DO_EXTRA_LOKI_TESTS
+        assert( HasNextNode( &rhs ) );
+#endif
+        return true;
+    }
+
+    if ( prhs == prhs->m_next )
+    {
+        /// rhs is in a cycle with 1 node.
+#ifdef DO_EXTRA_LOKI_TESTS
+        assert( prhs->m_prev == prhs );
+#endif
+        prhs->m_prev = m_prev;
+        prhs->m_next = this;
+        m_prev->m_next = prhs;
+        m_prev = prhs;
+    }
+    else if ( this == m_next )
+    {
+        /// this is in a cycle with 1 node.
+#ifdef DO_EXTRA_LOKI_TESTS
+        assert( m_prev == this );
+#endif
+        m_prev = prhs->m_prev;
+        m_next = prhs;
+        prhs->m_prev->m_next = this;
+        prhs->m_prev = this;
+    }
+    else
+    {
+        m_next->m_prev = prhs->m_prev;
+        prhs->m_prev->m_next = m_prev;
+        m_next = prhs;
+        prhs->m_prev = this;
+    }
+
+
+#ifdef DO_EXTRA_LOKI_TESTS
+    assert( CountPrevCycle( this ) == CountNextCycle( this ) );
+#endif
+
+    return true;
+}
+
+// ----------------------------------------------------------------------------
+
+} // end namespace Loki
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/make.msvc.bat
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/make.msvc.bat	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/make.msvc.bat	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,7 @@
+
+cl -c -Zm200 -O2 -DNDEBUG -MT -EHsc -GR -W4 -I"." -I"..\include" OrderedStatic.cpp SafeFormat.cpp SmallObj.cpp SmartPtr.cpp Singleton.cpp StrongPtr.cpp
+
+link /lib /NOLOGO /OUT:"..\lib\loki.lib" OrderedStatic.obj SafeFormat.obj SmallObj.obj SmartPtr.obj Singleton.obj StrongPtr.obj
+
+del *.obj
+

Added: kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/make.msvc.dll.bat
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/make.msvc.dll.bat	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/loki/loki-0.1.6/src/make.msvc.dll.bat	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,7 @@
+
+cl -c -Zm200 -O2 -DNDEBUG -MT -D_WINDLL -DLOKI_MAKE_DLL -EHsc -GR -W4 -wd4251 -I"." -I"..\include" OrderedStatic.cpp SafeFormat.cpp SmallObj.cpp SmartPtr.cpp Singleton.cpp StrongPtr.cpp
+
+link /NOLOGO /DLL /OUT:"..\lib\loki015.dll" OrderedStatic.obj SafeFormat.obj SmallObj.obj SmartPtr.obj Singleton.obj StrongPtr.obj
+
+del *.obj
+

Added: kde-extras/tora/branches/upstream/current/ext/otl/otlv4.h
===================================================================
--- kde-extras/tora/branches/upstream/current/ext/otl/otlv4.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ext/otl/otlv4.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,30035 @@
+// ==============================================================
+// Oracle, ODBC and DB2/CLI Template Library, Version 4.0.157,
+// Copyright (C) Sergei Kuchin, 1996,2007
+// Author: Sergei Kuchin
+// This library is free software. Permission to use, copy,
+// modify and redistribute it for any purpose is hereby granted
+// without fee, provided that the above copyright notice appear
+// in all copies.
+// ==============================================================
+
+#ifndef __OTL_H__
+#define __OTL_H__
+
+#define OTL_VERSION_NUMBER (0x04009DL)
+
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+//#pragma warning (disable:4996)
+#define OTL_STRCAT_S(dest,dest_sz,src) strcat_s(dest,dest_sz,src)
+#define OTL_STRCPY_S(dest,dest_sz,src) strcpy_s(dest,dest_sz,src)
+#define OTL_STRNCPY_S(dest,dest_sz,src,count) strncpy_s(dest,dest_sz,src,count)
+#else
+#define OTL_STRCAT_S(dest,dest_sz,src) strcat(dest,src)
+#define OTL_STRCPY_S(dest,dest_sz,src) strcpy(dest,src)
+#define OTL_STRNCPY_S(dest,dest_sz,src,count) strncpy(dest,src,count)
+#endif
+#else
+#define OTL_STRCAT_S(dest,dest_sz,src) strcat(dest,src)
+#define OTL_STRCPY_S(dest,dest_sz,src) strcpy(dest,src)
+#define OTL_STRNCPY_S(dest,dest_sz,src,count) strncpy(dest,src,count)
+#endif
+
+#include <string.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+//======================= CONFIGURATION #DEFINEs ===========================
+
+// Uncomment the following line in order to include the OTL for ODBC:
+//#define OTL_ODBC
+
+// Uncomment the following line in order to include the OTL for
+// MySQL/MyODBC for MyODBC 2.5 (pretty old). Otherwise, use OTL_ODBC
+//#define OTL_ODBC_MYSQL
+
+// Uncomment the following line in order to include the OTL for DB2 CLI:
+//#define OTL_DB2_CLI
+
+// Uncomment the following line in order to include the OTL for
+// Oracle 7: 
+//#define OTL_ORA7
+
+// Uncomment the following line in order to include the OTL for
+// Oracle 8:
+//#define OTL_ORA8
+
+// Uncomment the following line in order to include the OTL for
+// Oracle 8i:
+//#define OTL_ORA8I
+
+// Uncomment the following line in order to include the OTL for
+// Oracle 9i:
+//#define OTL_ORA9I
+
+// Uncomment the following line in order to include the OTL for
+// Oracle 10g Release 1:
+//#define OTL_ORA10G
+
+// Uncomment the following line in order to include the OTL for
+// Oracle 10g Release 2:
+//#define OTL_ORA10G_R2
+
+
+// The macro definitions may be also turned on via C++ compiler command line
+// option, e.g.: -DOTL_ODBC, -DOTL_ORA7, -DOTL_ORA8, -DOTL_ORA8I, -DOTL_ODBC_UNIX
+// -DOTL_ODBC_MYSQL, -DOTL_DB2_CLI
+
+#if defined(OTL_STREAM_LEGACY_BUFFER_SIZE_TYPE)
+typedef short int otl_stream_buffer_size_type;
+#else
+typedef int otl_stream_buffer_size_type;
+#endif
+
+
+#if defined(OTL_ODBC_MSSQL_2005)
+#define OTL_ODBC
+#endif
+
+#if defined(OTL_IODBC_BSD)
+#define OTL_ODBC
+#define OTL_ODBC_UNIX
+#endif
+
+#if defined(OTL_ODBC_TIMESTEN_WIN)
+#define OTL_ODBC_TIMESTEN
+#define OTL_ODBC
+#define OTL_ODBC_SQL_EXTENDED_FETCH_ON
+#define ODBCVER 0x0250
+#include <timesten.h>
+#endif
+
+#if defined(OTL_ODBC_TIMESTEN_UNIX)
+#define OTL_ODBC_TIMESTEN
+#define OTL_ODBC
+#define OTL_ODBC_UNIX
+#define OTL_ODBC_SQL_EXTENDED_FETCH_ON
+#include <timesten.h>
+#endif
+
+#if defined(OTL_ODBC_POSTGRESQL)
+#define OTL_ODBC
+#endif
+
+// Comment out this #define when using pre-ANSI C++ compiler
+#if !defined(OTL_ODBC_zOS) && !defined (OTL_ANSI_CPP)
+#define OTL_ANSI_CPP
+#endif
+
+#if defined(OTL_ODBC_zOS)
+#define OTL_ODBC_UNIX
+#define OTL_ODBC_SQL_EXTENDED_FETCH_ON
+#endif
+
+#if defined(OTL_ORA8I)
+#define OTL_ORA8
+#define OTL_ORA8_8I_REFCUR
+#define OTL_ORA8_8I_DESC_COLUMN_SCALE
+#endif
+
+#if defined(OTL_ORA10G)||defined(OTL_ORA10G_R2)
+#define  OTL_ORA9I
+#define OTL_ORA_NATIVE_TYPES
+#endif
+
+#if defined(OTL_ORA9I)
+#define OTL_ORA8
+#define OTL_ORA8_8I_REFCUR
+#define OTL_ORA8_8I_DESC_COLUMN_SCALE
+#endif
+
+#if defined(OTL_ODBC_MYSQL)
+#define OTL_ODBC
+#endif
+
+#if defined(OTL_ODBC_XTG_IBASE6)
+#define OTL_ODBC
+#endif
+
+#define OTL_VALUE_TEMPLATE
+//#define OTL_ODBC_SQL_EXTENDED_FETCH_ON
+
+#if defined(OTL_ODBC_UNIX) && !defined(OTL_ODBC)
+#define OTL_ODBC
+#endif
+
+#if defined(OTL_BIND_VAR_STRICT_TYPE_CHECKING_ON)
+#define OTL_CHECK_BIND_VARS                     \
+  if(strcmp(type_arr,"INT")==0||                \
+     strcmp(type_arr,"UNSIGNED")==0||           \
+     strcmp(type_arr,"SHORT")==0||              \
+     strcmp(type_arr,"LONG")==0||               \
+     strcmp(type_arr,"FLOAT")==0||              \
+     strcmp(type_arr,"DOUBLE")==0||             \
+     strcmp(type_arr,"TIMESTAMP")==0||          \
+     strcmp(type_arr,"TZ_TIMESTAMP")==0||       \
+     strcmp(type_arr,"LTZ_TIMESTAMP")==0||      \
+     strcmp(type_arr,"BIGINT")==0||             \
+     strcmp(type_arr,"CHAR")==0||               \
+     strcmp(type_arr,"CHARZ")==0||              \
+     strcmp(type_arr,"DB2DATE")==0||            \
+     strcmp(type_arr,"DB2TIME")==0||            \
+     strcmp(type_arr,"VARCHAR_LONG")==0||       \
+     strcmp(type_arr,"RAW_LONG")==0||           \
+     strcmp(type_arr,"RAW")==0||                \
+     strcmp(type_arr,"CLOB")==0||               \
+     strcmp(type_arr,"BLOB")==0||               \
+     strcmp(type_arr,"NCHAR")==0||              \
+     strcmp(type_arr,"NCLOB")==0||              \
+     strcmp(type_arr,"REFCUR")==0)              \
+    ;                                           \
+  else                                          \
+    return 0;
+#else
+#define OTL_CHECK_BIND_VARS
+#endif
+
+// ------------------- Namespace generation ------------------------
+#if defined(OTL_EXPLICIT_NAMESPACES)
+
+#if defined(OTL_DB2_CLI)
+#define OTL_ODBC_NAMESPACE_BEGIN namespace db2 {
+#define OTL_ODBC_NAMESPACE_PREFIX db2::
+#define OTL_ODBC_NAMESPACE_END }
+#else
+#define OTL_ODBC_NAMESPACE_BEGIN namespace odbc {
+#define OTL_ODBC_NAMESPACE_PREFIX odbc::
+#define OTL_ODBC_NAMESPACE_END }
+#endif
+
+#define OTL_ORA7_NAMESPACE_BEGIN namespace oracle {
+#define OTL_ORA7_NAMESPACE_PREFIX oracle::
+#define OTL_ORA7_NAMESPACE_END }
+
+#define OTL_ORA8_NAMESPACE_BEGIN namespace oracle {
+#define OTL_ORA8_NAMESPACE_PREFIX oracle::
+#define OTL_ORA8_NAMESPACE_END }
+
+#else
+
+// Only one OTL is being intantiated
+#if defined(OTL_ODBC)&&!defined(OTL_ORA8)&& \
+    !defined(OTL_ORA7)&&!defined(OTL_DB2_CLI) \
+ || !defined(OTL_ODBC)&&defined(OTL_ORA8)&& \
+    !defined(OTL_ORA7)&&!defined(OTL_DB2_CLI) \
+ || !defined(OTL_ODBC)&&!defined(OTL_ORA8)&& \
+    defined(OTL_ORA7)&&!defined(OTL_DB2_CLI) \
+ || !defined(OTL_ODBC)&&!defined(OTL_ORA8)&& \
+    !defined(OTL_ORA7)&&defined(OTL_DB2_CLI)
+
+#define OTL_ODBC_NAMESPACE_BEGIN
+#define OTL_ODBC_NAMESPACE_PREFIX
+#define OTL_ODBC_NAMESPACE_END
+
+#define OTL_ORA7_NAMESPACE_BEGIN
+#define OTL_ORA7_NAMESPACE_PREFIX
+#define OTL_ORA7_NAMESPACE_END
+
+#define OTL_ORA8_NAMESPACE_BEGIN
+#define OTL_ORA8_NAMESPACE_PREFIX
+#define OTL_ORA8_NAMESPACE_END
+
+#endif
+
+// ================ Combinations of two OTLs =========================
+#if defined(OTL_ODBC) && defined(OTL_ORA7) && \
+    !defined(OTL_ORA8) && !defined(OTL_DB2_CLI)
+
+#define OTL_ODBC_NAMESPACE_BEGIN namespace odbc{
+#define OTL_ODBC_NAMESPACE_PREFIX odbc::
+#define OTL_ODBC_NAMESPACE_END }
+
+#define OTL_ORA7_NAMESPACE_BEGIN namespace oracle {
+#define OTL_ORA7_NAMESPACE_PREFIX oracle::
+#define OTL_ORA7_NAMESPACE_END }
+
+#define OTL_ORA8_NAMESPACE_BEGIN
+#define OTL_ORA8_NAMESPACE_PREFIX
+#define OTL_ORA8_NAMESPACE_END
+
+#endif
+
+#if defined(OTL_ODBC) && !defined(OTL_ORA7) && \
+    defined(OTL_ORA8) && !defined(OTL_DB2_CLI)
+
+#define OTL_ODBC_NAMESPACE_BEGIN namespace odbc{
+#define OTL_ODBC_NAMESPACE_PREFIX odbc::
+#define OTL_ODBC_NAMESPACE_END }
+
+#define OTL_ORA8_NAMESPACE_BEGIN namespace oracle {
+#define OTL_ORA8_NAMESPACE_PREFIX oracle::
+#define OTL_ORA8_NAMESPACE_END }
+
+#define OTL_ORA7_NAMESPACE_BEGIN
+#define OTL_ORA7_NAMESPACE_PREFIX
+#define OTL_ORA7_NAMESPACE_END
+
+
+#endif
+
+#if !defined(OTL_ODBC) && defined(OTL_ORA7) && \
+    !defined(OTL_ORA8) && defined(OTL_DB2_CLI)
+
+#define OTL_ORA7_NAMESPACE_BEGIN namespace oracle {
+#define OTL_ORA7_NAMESPACE_PREFIX oracle::
+#define OTL_ORA7_NAMESPACE_END }
+
+#define OTL_ORA8_NAMESPACE_BEGIN
+#define OTL_ORA8_NAMESPACE_PREFIX
+#define OTL_ORA8_NAMESPACE_END
+
+#define OTL_ODBC_NAMESPACE_BEGIN namespace db2 {
+#define OTL_ODBC_NAMESPACE_PREFIX db2::
+#define OTL_ODBC_NAMESPACE_END }
+
+
+#endif
+
+#if !defined(OTL_ODBC) && !defined(OTL_ORA7) && \
+    defined(OTL_ORA8) && defined(OTL_DB2_CLI)
+
+#define OTL_ORA8_NAMESPACE_BEGIN namespace oracle {
+#define OTL_ORA8_NAMESPACE_PREFIX oracle::
+#define OTL_ORA8_NAMESPACE_END }
+
+#define OTL_ORA7_NAMESPACE_BEGIN
+#define OTL_ORA7_NAMESPACE_PREFIX
+#define OTL_ORA7_NAMESPACE_END
+
+#define OTL_ODBC_NAMESPACE_BEGIN namespace db2 {
+#define OTL_ODBC_NAMESPACE_PREFIX db2::
+#define OTL_ODBC_NAMESPACE_END }
+
+
+#endif
+
+#endif
+
+// -------------------- End of namespace generation -------------------
+
+// --------------------- Invalid combinations --------------------------
+
+#if defined(OTL_ORA_UTF8) && !defined(OTL_ORA10G) && \
+    !defined(OTL_ORA_10G_R2) && !defined(OTL_ORA9I)
+#error Invalid combination: OTL_ORA_UTF8 can only be used with OTL_ORA9I or higher
+#endif
+
+#if defined(OTL_ORA_UTF8) && defined(OTL_UNICODE)
+#error Invalid combination: OTL_ORA_UTF8 and OTL_UNICODE are mutually exclusive
+#endif
+
+#if defined(OTL_ODBC) && defined(OTL_DB2_CLI)
+#error Invalid combination: OTL_ODBC && OTL_DB2_CLI together
+#endif
+
+#if defined(OTL_ORA7) && defined(OTL_ORA8)
+#error Invalid combination: OTL_ORA7 && OTL_ORA8(I) together
+#endif
+
+#if (defined(OTL_ORA7) || defined(OTL_ORA8) ||          \
+     defined(OTL_ORA8I) || defined(OTL_ORA9I) ) &&      \
+     defined(OTL_BIGINT) &&                             \
+     (defined(OTL_ODBC) || defined(OTL_DB2_CLI)) 
+#error OTL_BIGINT is not supported when OTL_ORAXX and OTL_ODBC \
+(or OTL_DB2_CLI) are defined together
+#endif
+
+#if defined (OTL_ORA7) && defined(OTL_ORA8)
+#error Invalid combination: OTL_ORA7 && OTL_ORA8(I) together
+#endif
+
+#if defined(OTL_ORA_OCI_ENV_CREATE) && \
+    (!defined(OTL_ORA8I) && !defined(OTL_ORA9I) && \
+     !defined(OTL_ORA10G) && !defined(OTL_ORA10G_R2))
+#error OTL_ORA_OCI_ENV_CREATE can be only defined when OTL_ORA8I, OTL_ORA9I, OTL_ORA10G, or OTL_ORA10G_R2 is defined
+#endif
+// --------------------------------------------------------------------
+
+#if defined(OTL_TRACE_LEVEL)
+
+#if !defined(OTL_TRACE_LINE_PREFIX)
+#define OTL_TRACE_LINE_PREFIX "OTL TRACE ==> "
+#endif
+
+#if defined(OTL_UNICODE_CHAR_TYPE) && !defined(OTL_UNICODE)
+#error OTL_UNICODE needs to be defined if OTL_UNICODE_CHAR_TYPE is defined
+#endif
+
+#if defined(OTL_UNICODE_STRING_TYPE) && !defined(OTL_UNICODE_CHAR_TYPE)
+#error OTL_UNICODE_CHAR_TYPE needs to be defined if OTL_UNICODE_STRING_TYPE is defined
+#endif
+
+#if defined(OTL_UNICODE_STRING_TYPE) && !defined(OTL_UNICODE_CHAR_TYPE)
+#error OTL_UNICODE_CHAR_TYPE needs to be defined if OTL_UNICODE_STRING_TYPE is defined
+#endif
+
+#if defined(OTL_UNICODE_STRING_TYPE) && !defined(OTL_UNICODE)
+#error OTL_UNICODE needs to be defined if OTL_UNICODE_STRING_TYPE is defined
+#endif
+
+#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON) && !defined(OTL_UNICODE_CHAR_TYPE)
+#error OTL_UNICODE_CHAR_TYPE needs to be defined if OTL_UNICODE_EXCEPTION_AND_RLOGON is defined
+#endif
+
+
+#if !defined(OTL_TRACE_LINE_SUFFIX)
+#if defined(OTL_UNICODE)
+#define OTL_TRACE_LINE_SUFFIX L"\n"
+#else
+#define OTL_TRACE_LINE_SUFFIX "\n"
+#endif
+#endif
+
+#if !defined(OTL_TRACE_STREAM_OPEN)
+#define OTL_TRACE_STREAM_OPEN                   \
+  if(OTL_TRACE_LEVEL & 0x4){                    \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;    \
+    OTL_TRACE_STREAM<<"otl_stream(this=";       \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,this);    \
+    OTL_TRACE_STREAM<<")::open(buffer_size=";   \
+    OTL_TRACE_STREAM<<arr_size;                 \
+    OTL_TRACE_STREAM<<", sqlstm=";              \
+    OTL_TRACE_STREAM<<sqlstm;                   \
+    OTL_TRACE_STREAM<<", connect=";             \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,&db);     \
+    OTL_TRACE_STREAM<<", implicit_select=";     \
+    OTL_TRACE_STREAM<<implicit_select;          \
+    if(sqlstm_label){                           \
+      OTL_TRACE_STREAM<<", label=";             \
+      OTL_TRACE_STREAM<<sqlstm_label;           \
+    }                                           \
+    OTL_TRACE_STREAM<<");";                     \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;    \
+  }
+#endif
+
+#if !defined(OTL_TRACE_STREAM_OPEN2)
+#define OTL_TRACE_STREAM_OPEN2                          \
+  if(OTL_TRACE_LEVEL & 0x4){                            \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;            \
+    OTL_TRACE_STREAM<<"otl_stream(this=";               \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,this);            \
+    OTL_TRACE_STREAM<<")::open(buffer_size=";           \
+    OTL_TRACE_STREAM<<arr_size;                         \
+    OTL_TRACE_STREAM<<", sqlstm=";                      \
+    OTL_TRACE_STREAM<<sqlstm;                           \
+    OTL_TRACE_STREAM<<", connect=";                     \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,&db);             \
+    if(ref_cur_placeholder){                            \
+      OTL_TRACE_STREAM<<", ref_cur_placeholder=";       \
+      OTL_TRACE_STREAM<<ref_cur_placeholder;            \
+    }                                                   \
+    if(sqlstm_label){                                   \
+      OTL_TRACE_STREAM<<", label=";                     \
+      OTL_TRACE_STREAM<<sqlstm_label;                   \
+    }                                                   \
+    OTL_TRACE_STREAM<<");";                             \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;            \
+  }
+#endif
+
+#if !defined(OTL_TRACE_DIRECT_EXEC)
+#define OTL_TRACE_DIRECT_EXEC                             \
+  if(OTL_TRACE_LEVEL & 0x2){                              \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;              \
+    OTL_TRACE_STREAM<<"otl_cursor::direct_exec(connect="; \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,&connect);          \
+    OTL_TRACE_STREAM<<",sqlstm=\"";                       \
+    OTL_TRACE_STREAM<<sqlstm;                             \
+    OTL_TRACE_STREAM<<"\",exception_enabled=";            \
+    OTL_TRACE_STREAM<<exception_enabled;                  \
+    OTL_TRACE_STREAM<<");";                               \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;              \
+  }
+#endif
+
+#if !defined(OTL_TRACE_SYNTAX_CHECK)
+#define OTL_TRACE_SYNTAX_CHECK                             \
+  if(OTL_TRACE_LEVEL & 0x2){                               \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;               \
+    OTL_TRACE_STREAM<<"otl_cursor::syntax_check(connect="; \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,&connect);           \
+    OTL_TRACE_STREAM<<",sqlstm=\"";                        \
+    OTL_TRACE_STREAM<<sqlstm;                              \
+    OTL_TRACE_STREAM<<"\"";                                \
+    OTL_TRACE_STREAM<<");";                                \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;               \
+  }
+#endif
+
+#if !defined(OTL_TRACE_FUNC)
+#define OTL_TRACE_FUNC(level,class_name,func_name,args) \
+  if(OTL_TRACE_LEVEL & level){                          \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;            \
+    OTL_TRACE_STREAM<<class_name;                       \
+    OTL_TRACE_STREAM<<"(this=";                         \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,this);            \
+    OTL_TRACE_STREAM<<")::" func_name "(";              \
+    OTL_TRACE_STREAM<<args;                             \
+    OTL_TRACE_STREAM<<");";                             \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;            \
+  }
+#endif
+
+#if !defined(OTL_TRACE_EXCEPTION)
+#define OTL_TRACE_EXCEPTION(code,msg,stm_text,var_info) \
+  if(OTL_TRACE_LEVEL & 0x20){                           \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;            \
+    OTL_TRACE_STREAM<<"otl_exception, code=";           \
+    OTL_TRACE_STREAM<<code;                             \
+    OTL_TRACE_STREAM<<", msg=";                         \
+    char* c=OTL_RCAST(char*,msg);                       \
+    while(*c && *c!='\n'){                              \
+      OTL_TRACE_STREAM<<*c;                             \
+      ++c;                                              \
+    }                                                   \
+    OTL_TRACE_STREAM<<", stm_text=";                    \
+    OTL_TRACE_STREAM<<stm_text;                         \
+    OTL_TRACE_STREAM<<", var_info=";                    \
+    OTL_TRACE_STREAM<<var_info;                         \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;            \
+  }
+#endif
+
+#if !defined(OTL_TRACE_RLOGON_ORA7) && defined(OTL_ORA7)
+#define OTL_TRACE_RLOGON_ORA7(level,class_name,func_name,       \
+                              connect_str,auto_commit)          \
+  if(OTL_TRACE_LEVEL & level){                                  \
+    char temp_connect_str[2048];                                \
+    const char* c1=OTL_RCAST(const char*,connect_str);          \
+    char* c2=temp_connect_str;                                  \
+    while(*c1 && *c1!='/'){                                     \
+      *c2=*c1;                                                  \
+      ++c1; ++c2;                                               \
+    }                                                           \
+    if(*c1=='/'){                                               \
+      *c2=*c1;                                                  \
+      ++c1; ++c2;                                               \
+      while(*c1 && *c1!='@'){                                   \
+        *c2='*';                                                \
+        ++c1; ++c2;                                             \
+      }                                                         \
+      if(*c1=='@'){                                             \
+        while(*c1){                                             \
+          *c2=*c1;                                              \
+          ++c1; ++c2;                                           \
+        }                                                       \
+      }                                                         \
+    }                                                           \
+    *c2=0;                                                      \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                    \
+    OTL_TRACE_STREAM<<class_name;                               \
+    OTL_TRACE_STREAM<<"(this=";                                 \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,this);                    \
+    OTL_TRACE_STREAM<<")::" func_name "(";                      \
+    OTL_TRACE_STREAM<<"connect_str=\"";                         \
+    OTL_TRACE_STREAM<<temp_connect_str;                         \
+    OTL_TRACE_STREAM<<"\", auto_commit=";                       \
+    OTL_TRACE_STREAM<<auto_commit;                              \
+    OTL_TRACE_STREAM<<");";                                     \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                    \
+  }
+#endif
+
+#if !defined(OTL_TRACE_RLOGON_ORA8) && defined(OTL_ORA8)
+#define OTL_TRACE_RLOGON_ORA8(level,class_name,func_name,               \
+                              tnsname,userid,passwd,                    \
+                              auto_commit)                              \
+  if(OTL_TRACE_LEVEL & level){                                          \
+    char temp_connect_str[2048];                                        \
+    OTL_STRCPY_S(temp_connect_str,sizeof(temp_connect_str),userid);     \
+    OTL_STRCAT_S(temp_connect_str,sizeof(temp_connect_str),"/");        \
+    size_t sz=strlen(passwd);                                           \
+    for(size_t i=0;i<sz;++i)                                            \
+      OTL_STRCAT_S(temp_connect_str,sizeof(temp_connect_str),"*");      \
+    size_t tns_sz=strlen(tnsname);                                      \
+    if(tns_sz>0){                                                       \
+      OTL_STRCAT_S(temp_connect_str,sizeof(temp_connect_str),"@");      \
+      OTL_STRCAT_S(temp_connect_str,sizeof(temp_connect_str),tnsname);  \
+    }                                                                   \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                            \
+    OTL_TRACE_STREAM<<class_name<<"(this=";                             \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,this);                            \
+    OTL_TRACE_STREAM<<")::" func_name "(";                              \
+    OTL_TRACE_STREAM<<"connect_str=\"";                                 \
+    OTL_TRACE_STREAM<<temp_connect_str;                                 \
+    OTL_TRACE_STREAM<<"\", auto_commit=";                               \
+    OTL_TRACE_STREAM<<auto_commit <<");";                               \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                            \
+  }
+#endif
+
+#if !defined(OTL_TRACE_RLOGON_ODBC)&&(defined(OTL_ODBC)||defined(OTL_DB2_CLI))
+#define OTL_TRACE_RLOGON_ODBC(level,class_name,func_name,                       \
+                              tnsname,userid,passwd,                            \
+                              auto_commit)                                      \
+  if(OTL_TRACE_LEVEL & level){                                                  \
+    char temp_connect_str2[2048];                                               \
+    OTL_STRCPY_S(temp_connect_str2,sizeof(temp_connect_str2),userid);           \
+    OTL_STRCPY_S(temp_connect_str2,sizeof(temp_connect_str2),"/");              \
+    size_t sz=strlen(passwd);                                                   \
+    for(size_t i=0;i<sz;++i)                                                    \
+      OTL_STRCAT_S(temp_connect_str2,sizeof(temp_connect_str2),"*");            \
+    size_t tns_sz=strlen(tnsname);                                              \
+    if(tns_sz>0){                                                               \
+      OTL_STRCAT_S(temp_connect_str2,sizeof(temp_connect_str2),"@");            \
+      OTL_STRCAT_S(temp_connect_str2,sizeof(temp_connect_str2),tnsname);        \
+    }                                                                           \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                                    \
+    OTL_TRACE_STREAM<<class_name;                                               \
+    OTL_TRACE_STREAM<<"(this=";                                                 \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,this);                                    \
+    OTL_TRACE_STREAM<<")::" func_name "(";                                      \
+    OTL_TRACE_STREAM<<"connect_str=\"";                                         \
+    OTL_TRACE_STREAM<<temp_connect_str2;                                        \
+    OTL_TRACE_STREAM<<"\", auto_commit=";                                       \
+    OTL_TRACE_STREAM<<auto_commit;                                              \
+    OTL_TRACE_STREAM<<");";                                                     \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                                    \
+  }
+#endif
+
+#if !defined(OTL_TRACE_RLOGON_ODBC_W)&& \
+    (defined(OTL_ODBC)||defined(OTL_DB2_CLI))
+#define OTL_TRACE_RLOGON_ODBC_W(level,class_name,func_name,     \
+                              tnsname,userid,passwd,            \
+                              auto_commit)                      \
+  if(OTL_TRACE_LEVEL & level){                                  \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                    \
+    OTL_TRACE_STREAM<<class_name;                               \
+    OTL_TRACE_STREAM<<L"(this=";                                \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,this);                    \
+    OTL_TRACE_STREAM<<L")::" func_name L"(";                    \
+    OTL_TRACE_STREAM<<L"connect_str=\"";                        \
+    OTL_TRACE_STREAM<<userid<<L"/***@"<<tnsname;                \
+    OTL_TRACE_STREAM<<L"\", auto_commit=";                      \
+    OTL_TRACE_STREAM<<auto_commit;                              \
+    OTL_TRACE_STREAM<<L");";                                    \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                    \
+  }
+#endif
+
+#if !defined(OTL_TRACE_FIRST_FETCH)
+#if defined(OTL_TRACE_ENABLE_STREAM_LABELS)
+#define OTL_TRACE_FIRST_FETCH                                                   \
+  if(OTL_TRACE_LEVEL & 0x8){                                                    \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                                    \
+    OTL_TRACE_STREAM<<"otl_stream, fetched the first batch of rows, SQL Stm=";  \
+     if(this->stm_label)                                                        \
+       OTL_TRACE_STREAM<<this->stm_label;                                       \
+     else                                                                       \
+       OTL_TRACE_STREAM<<this->stm_text;                                        \
+    OTL_TRACE_STREAM<<", RPC=";                                                 \
+    OTL_TRACE_STREAM<<row_count;                                                \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                                    \
+  }
+#else
+#define OTL_TRACE_FIRST_FETCH                                                   \
+  if(OTL_TRACE_LEVEL & 0x8){                                                    \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                                    \
+    OTL_TRACE_STREAM<<"otl_stream, fetched the first batch of rows, SQL Stm=";  \
+    OTL_TRACE_STREAM<<this->stm_text;                                           \
+    OTL_TRACE_STREAM<<", RPC=";                                                 \
+    OTL_TRACE_STREAM<<row_count;                                                \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                                    \
+  }
+#endif
+#endif
+
+#if !defined(OTL_TRACE_NEXT_FETCH)
+#if defined(OTL_TRACE_ENABLE_STREAM_LABELS)
+#define OTL_TRACE_NEXT_FETCH                                                    \
+   if(OTL_TRACE_LEVEL & 0x8 && cur_row==0){                                     \
+     OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                                   \
+     OTL_TRACE_STREAM<<"otl_stream, fetched the next batch of rows, SQL Stm=" ; \
+     if(this->stm_label)                                                        \
+       OTL_TRACE_STREAM<<this->stm_label;                                       \
+     else                                                                       \
+       OTL_TRACE_STREAM<<this->stm_text;                                        \
+     OTL_TRACE_STREAM<<", RPC=";                                                \
+     OTL_TRACE_STREAM<<row_count;                                               \
+     OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                                   \
+   }
+#else
+#define OTL_TRACE_NEXT_FETCH                                                    \
+   if(OTL_TRACE_LEVEL & 0x8 && cur_row==0){                                     \
+     OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                                   \
+     OTL_TRACE_STREAM<<"otl_stream, fetched the next batch of rows, SQL Stm=" ; \
+     OTL_TRACE_STREAM<<this->stm_text;                                          \
+     OTL_TRACE_STREAM<<", RPC=";                                                \
+     OTL_TRACE_STREAM<<row_count;                                               \
+     OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                                   \
+   }
+#endif
+#endif
+
+#if !defined(OTL_TRACE_STREAM_EXECUTION)
+#if defined(OTL_TRACE_ENABLE_STREAM_LABELS)
+#define OTL_TRACE_STREAM_EXECUTION                              \
+   if(OTL_TRACE_LEVEL & 0x8){                                   \
+     OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                   \
+     OTL_TRACE_STREAM<<"otl_stream, executing SQL Stm=";        \
+     if(this->stm_label)                                        \
+       OTL_TRACE_STREAM<<this->stm_label;                       \
+     else                                                       \
+       OTL_TRACE_STREAM<<this->stm_text;                        \
+     OTL_TRACE_STREAM<<", buffer size=";                        \
+     OTL_TRACE_STREAM<<this->array_size;                        \
+     OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                   \
+   }
+#else
+#define OTL_TRACE_STREAM_EXECUTION                              \
+   if(OTL_TRACE_LEVEL & 0x8){                                   \
+     OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                   \
+     OTL_TRACE_STREAM<<"otl_stream, executing SQL Stm=";        \
+     OTL_TRACE_STREAM<<this->stm_text;                          \
+     OTL_TRACE_STREAM<<", buffer size=";                        \
+     OTL_TRACE_STREAM<<this->array_size;                        \
+     OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                   \
+   }
+#endif
+#endif
+
+#if !defined(OTL_TRACE_STREAM_EXECUTION2)
+#if defined(OTL_TRACE_ENABLE_STREAM_LABELS)
+#define OTL_TRACE_STREAM_EXECUTION2                             \
+    if(OTL_TRACE_LEVEL & 0x8){                                  \
+      OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                  \
+      OTL_TRACE_STREAM<<"otl_stream, executing SQL Stm=";       \
+     if(this->stm_label)                                        \
+       OTL_TRACE_STREAM<<this->stm_label;                       \
+     else                                                       \
+       OTL_TRACE_STREAM<<this->stm_text;                        \
+      OTL_TRACE_STREAM<<", current batch size=";                \
+      OTL_TRACE_STREAM<<(cur_y+1);                              \
+      OTL_TRACE_STREAM<<", row offset=";                        \
+      OTL_TRACE_STREAM<<rowoff;                                 \
+      OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                  \
+    }
+#else
+#define OTL_TRACE_STREAM_EXECUTION2                             \
+    if(OTL_TRACE_LEVEL & 0x8){                                  \
+      OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;                  \
+      OTL_TRACE_STREAM<<"otl_stream, executing SQL Stm=";       \
+      OTL_TRACE_STREAM<<this->stm_text;                         \
+      OTL_TRACE_STREAM<<", current batch size=";                \
+      OTL_TRACE_STREAM<<(cur_y+1);                              \
+      OTL_TRACE_STREAM<<", row offset=";                        \
+      OTL_TRACE_STREAM<<rowoff;                                 \
+      OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;                  \
+    }
+#endif
+#endif
+
+#if !defined(OTL_TRACE_READ)
+#define OTL_TRACE_READ(val,function,type)               \
+  if(OTL_TRACE_LEVEL & 0x10){                           \
+    otl_var_desc* temp_vdesc=describe_next_in_var();    \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;            \
+    OTL_TRACE_STREAM<<"otl_stream(this=";               \
+    OTL_TRACE_STREAM<<OTL_RCAST(void*,this);            \
+    OTL_TRACE_STREAM<<")::" function "(" type ": ";     \
+    OTL_TRACE_STREAM<<"ftype=";                         \
+    OTL_TRACE_STREAM<<temp_vdesc->ftype;                \
+    OTL_TRACE_STREAM<<", placeholder=";                 \
+    OTL_TRACE_STREAM<<temp_vdesc->name;                 \
+    OTL_TRACE_STREAM<<", value=";                       \
+    OTL_TRACE_STREAM<<val;                              \
+    OTL_TRACE_STREAM <<");";                            \
+    OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;            \
+  }
+#endif
+
+#if !defined(OTL_TRACE_WRITE)
+#define OTL_TRACE_WRITE(val,function,type)              \
+   if(OTL_TRACE_LEVEL & 0x10){                          \
+     otl_var_desc* temp_vdesc=describe_next_out_var();  \
+     OTL_TRACE_STREAM<<OTL_TRACE_LINE_PREFIX;           \
+     OTL_TRACE_STREAM<<"otl_stream(this=";              \
+     OTL_TRACE_STREAM<<OTL_RCAST(void*,this);           \
+     OTL_TRACE_STREAM<<")::" function "(" type " : ";   \
+     OTL_TRACE_STREAM<<"ftype=";                        \
+     OTL_TRACE_STREAM<<temp_vdesc->ftype;               \
+     OTL_TRACE_STREAM<<", placeholder=";                \
+     OTL_TRACE_STREAM<<temp_vdesc->name;                \
+     OTL_TRACE_STREAM<<", value=";                      \
+     if(this->is_null())                                \
+       OTL_TRACE_STREAM<<"NULL";                        \
+     else                                               \
+       OTL_TRACE_STREAM<<val;                           \
+     OTL_TRACE_STREAM<<");";                            \
+     OTL_TRACE_STREAM<<OTL_TRACE_LINE_SUFFIX;           \
+   }
+#endif
+
+#else
+
+#define OTL_TRACE_LINE_PREFIX
+#define OTL_TRACE_LINE_SUFFIX
+#define OTL_TRACE_DIRECT_EXEC
+#define OTL_TRACE_SYNTAX_CHECK
+#define OTL_TRACE_FUNC(level,class_name,func_name,args)
+#define OTL_TRACE_EXCEPTION(code,msg,stm_text,var_info)
+#define OTL_TRACE_RLOGON_ORA7(level,class_name,func_name, \
+                              connect_str,auto_commit)
+#define OTL_TRACE_RLOGON_ORA8(level,class_name,func_name,       \
+                              tnsname,userid,passwd,            \
+                              auto_commit)
+#define OTL_TRACE_RLOGON_ODBC(level,class_name,func_name,       \
+                              tnsname,userid,passwd,            \
+                              auto_commit)
+#define OTL_TRACE_STREAM_OPEN
+#define OTL_TRACE_STREAM_OPEN2
+#define OTL_TRACE_FIRST_FETCH
+#define OTL_TRACE_NEXT_FETCH
+#define OTL_TRACE_STREAM_EXECUTION
+#define OTL_TRACE_STREAM_EXECUTION2
+#define OTL_TRACE_WRITE(val,function,type)
+#define OTL_TRACE_READ(val,function,type)
+#define OTL_TRACE_RLOGON_ODBC_W(level,class_name,func_name, \
+                              tnsname,userid,passwd,        \
+                              auto_commit)
+#endif
+
+#if defined(OTL_DB2_CLI)
+#define OTL_ODBC
+#endif
+
+#if defined(OTL_UNICODE)
+
+#if !defined(OTL_UNICODE_CHAR_TYPE)
+#define OTL_UNICODE_CHAR_TYPE wchar_t
+#endif
+
+#if !defined(OTL_UNICODE_CHAR_TYPE_TRACE_NAME)
+#define OTL_UNICODE_CHAR_TYPE_TRACE_NAME "wchar_t"
+#endif
+
+#endif
+
+#if defined(OTL_UNICODE)&& \
+    (defined(OTL_ORA8I)|| \
+     defined(OTL_ORA9I)|| \
+     defined(OTL_ORA10G)||defined(OTL_ORA10G_R2))
+#define OTL_ORA_UNICODE
+#endif
+
+#if defined(OTL_UNICODE)
+
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I)||defined(OTL_ORA10G)||defined(OTL_ORA10G_R2)) && defined(OTL_ODBC)
+#error OTL_UNICODE is not supported when both OTL_ORAxx and OTL_ODBC/OTL_DB2_CLI are defined
+#endif
+
+#if defined(OTL_ORA8I)||defined(OTL_ORA9I)||defined(OTL_ORA10G)||defined(OTL_ORA10G_R2)
+
+#define OTL_CHAR unsigned short
+#define OTL_UNICODE_CHAR OTL_CHAR
+#define OTL_WCHAR unsigned long
+
+#if defined(OTL_ORA8I)
+#define OTL_UNICODE_ID OCI_UCS2ID
+#endif
+
+#if defined(OTL_ORA9I)
+#define OTL_UNICODE_ID OCI_UTF16ID
+#endif
+
+#elif defined(OTL_ODBC)
+
+#define OTL_CHAR unsigned short
+#define OTL_UNICODE_CHAR OTL_CHAR
+#define OTL_WCHAR OTL_CHAR
+
+#endif
+
+#else
+
+#define OTL_CHAR unsigned char
+
+#endif
+
+
+#if defined(OTL_ORA7) || defined(OTL_ORA8)
+#define OTL_PL_TAB
+#endif
+
+const int otl_odbc_adapter=1;
+const int otl_ora7_adapter=2;
+const int otl_ora8_adapter=3;
+
+const int otl_inout_binding=1;
+const int otl_select_binding=2;
+
+const int otl_unsupported_type=-10000;
+
+#if defined(OTL_ANSI_CPP)
+
+#define OTL_SCAST(_t,_e) static_cast<_t >(_e)
+#define OTL_RCAST(_t,_e) reinterpret_cast<_t >(_e)
+#define OTL_DCAST(_t,_e) dynamic_cast<_t >(_e)
+#define OTL_CCAST(_t,_e) const_cast<_t >(_e)
+
+#define OTL_CONST_EXCEPTION const
+
+#if defined OTL_FUNC_THROW_SPEC_ON
+#define OTL_THROWS_OTL_EXCEPTION throw(otl_exception)
+#define OTL_NO_THROW throw()
+#else
+#define OTL_THROWS_OTL_EXCEPTION
+#define OTL_NO_THROW
+#endif
+
+#define OTL_TYPE_NAME typename
+
+#include <new>
+
+#else
+
+#define OTL_SCAST(_t,_e) ((_t)(_e))
+#define OTL_RCAST(_t,_e) ((_t)(_e))
+#define OTL_DCAST(_t,_e) ((_t)(_e))
+#define OTL_CCAST(_t,_e) ((_t)(_e))
+#define OTL_CONST_EXCEPTION
+#define OTL_THROWS_OTL_EXCEPTION
+#define OTL_NO_THROW
+#define OTL_TYPE_NAME class
+
+#endif
+
+#define OTL_PCONV(_to,_from,_val) \
+OTL_SCAST(_to,*OTL_RCAST(_from*,OTL_CCAST(void*,_val)))
+
+#if defined(OTL_ACE)
+
+#include <ace/SString.h>
+#include <ace/Array.h>
+#include <ace/Functor.h>
+#include <ace/RB_Tree.h>
+
+#define OTL_USER_DEFINED_STRING_CLASS_ON
+#define USER_DEFINED_STRING_CLASS ACE_TString
+#define OTL_VALUE_TEMPLATE_ON
+
+const int otl_tmpl_vector_default_size=16;
+
+template<OTL_TYPE_NAME T>
+class otl_tmpl_vector: public ACE_Array<T>{
+public:
+
+ otl_tmpl_vector(const int init_size=otl_tmpl_vector_default_size)
+  : ACE_Array<T>(init_size==0?otl_tmpl_vector_default_size:init_size)
+ {
+  _length=0;
+ }
+
+ ~otl_tmpl_vector(){}
+
+ int capacity(void) const
+ {
+  return this->max_size();
+ }
+
+ int size(void) const
+ {
+  return _length;
+ }
+
+ void clear(void)
+ {
+  _length=0;
+ }
+
+ void resize(const int new_size, const T& t=T())
+ {
+  ACE_Array<T>::size(new_size);
+  if(new_size>_length){
+   for(int i=_length;i<new_size;++i)
+    (*this)[i]=t;
+  }
+  _length=new_size;
+ }
+
+ void push_back(const T& elem)
+ {
+  int curr_max_size=this->max_size();
+  if(_length==curr_max_size)
+   ACE_Array<T>::size(curr_max_size*2);
+  ++_length;
+  (*this)[_length-1]=elem;
+ }
+
+ void pop_back(void)
+ {
+  if(_length>0)
+   --_length;
+ }
+
+protected:
+
+ int _length;
+ 
+};
+
+#endif
+
+#if defined(OTL_STLPORT)
+
+#if defined(__STLPORT_STD)
+#define OTL_STLPORT_NAMESPACE __STLPORT_STD
+#else
+#if defined(_STLP_USE_OWN_NAMESPACE)
+#define OTL_STLPORT_NAMESPACE _STL
+#else
+#define OTL_STLPORT_NAMESPACE std
+#endif
+#endif
+
+#define OTL_STL
+
+#endif
+
+#if defined(OTL_VALUE_TEMPLATE_ON) && !defined(OTL_STL) && !defined(OTL_ACE)
+#define STD_NAMESPACE_PREFIX
+#if (defined(_MSC_VER)&&(_MSC_VER>=1300))||defined(OTL_ANSI_CPP)
+#include <iostream>
+using namespace std;
+#else
+#include <iostream.h>
+#endif
+#endif
+
+#if defined(OTL_USER_DEFINED_STRING_CLASS_ON)
+
+#if defined(OTL_STL)
+#error OTL_STL cannot be used in combination with OTL_USER_DEFINED_STRING_CLASS_ON
+#endif
+
+#if defined(USER_DEFINED_STRING_CLASS)
+#define OTL_STRING_CONTAINER USER_DEFINED_STRING_CLASS
+#define STD_NAMESPACE_PREFIX
+#else
+#error USER_DEFINED_STRING_CLASS macro needs to be defined before including otlv4.h
+#endif
+
+#endif
+
+
+#if defined(OTL_STL)
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1200)
+#pragma warning (disable:4786) 
+#pragma warning (disable:4290)
+#pragma warning (disable:4996)
+#endif
+#endif
+
+#if defined(OTL_STL_NOSTD_NAMESPACE)
+#ifndef OTL_STRING_CONTAINER
+#define OTL_STRING_CONTAINER string
+#endif
+#define STD_NAMESPACE_PREFIX
+#else
+#ifndef OTL_STRING_CONTAINER
+
+#if defined(OTL_STLPORT)
+#define OTL_STRING_CONTAINER OTL_STLPORT_NAMESPACE ::string
+#else
+#define OTL_STRING_CONTAINER std::string
+#endif
+
+#endif
+
+#if defined(OTL_STLPORT)
+#define STD_NAMESPACE_PREFIX OTL_STLPORT_NAMESPACE ::
+#else
+#define STD_NAMESPACE_PREFIX std::
+#endif
+
+
+#endif
+
+#include <string>
+#include <iterator>
+#include <vector>
+
+#if defined(OTL_UNCAUGHT_EXCEPTION_ON)
+#include <exception>
+#endif
+
+
+#ifndef OTL_STL_NOSTD_NAMESPACE
+#include <iostream>
+#else
+#if defined(_MSC_VER) && (_MSC_VER >= 1300)
+#include <iostream>
+using namespace std;
+#else
+#include <iostream.h>
+#endif
+#endif
+
+#endif
+
+//======================= END OF CONFIGURATION ==============================
+
+
+// ====== COMMON NON-TEMPLATE OBJECTS: CONSTANTS, CLASSES, ETC. ===========
+
+#if defined(OTL_ORA8)
+const int otl_var_list_size=1024;
+#else
+const int otl_var_list_size=512;
+#endif
+
+const int otl_error_code_0=32000;
+#define otl_error_msg_0 "Incompatible data types in stream operation"
+
+const int otl_error_code_1=32004;
+#define otl_error_msg_1 "No input variables have been defined in SQL statement"
+
+const int otl_error_code_2=32003;
+#define otl_error_msg_2 "Not all input variables have been initialized"
+
+const int otl_error_code_3=32001;
+#define otl_error_msg_3 "Row must be full for flushing output stream"
+
+const int otl_error_code_4=32005;
+#define otl_error_msg_4 "Input string value is too large to fit into the buffer"
+
+const int otl_error_code_5=32006;
+#define otl_error_msg_5 "Input otl_long_string is too large to fit into the buffer"
+
+const int otl_error_code_6=32007;
+#define otl_error_msg_6 "PL/SQL table size is too large (>32767)"
+
+const int otl_error_code_7=32008;
+#define otl_error_msg_7 "Writing CLOB/BLOB in stream mode: actual size is greater than specified"
+
+const int otl_error_code_8=32009;
+#define otl_error_msg_8 "Closing CLOB/BLOB in stream mode: actual size is not equal to specified size"
+
+const int otl_error_code_9=32010;
+#define otl_error_msg_9 "CLOB/BLOB stream is not open for writing"
+
+const int otl_error_code_10=32011;
+#define otl_error_msg_10 "CLOB/BLOB stream is not open for reading"
+
+const int otl_error_code_11=32012;
+#define otl_error_msg_11 "First session must be started with session_begin()"
+
+const int otl_error_code_12=32013;
+#define otl_error_msg_12 "Invalid bind variable declaration"
+
+const int otl_error_code_13=32014;
+#define otl_error_msg_13 "No stored procedure was found"
+
+const int otl_error_code_14=32015;
+#define otl_error_msg_14 "Unsupported data type: "
+
+const int otl_error_code_15=32016;
+#define otl_error_msg_15 "Unsupported procedure type"
+
+const int otl_error_code_16=32017;
+#define otl_error_msg_16 "Stream buffer size can't be > 1 in this case"
+
+const int otl_error_code_17=32018;
+#define otl_error_msg_17                                        \
+"ODBC / DB2 CLI function name is not recognized. "              \
+"It should be one of the following: SQLTables, SQLColumns, "    \
+"SQLProcedures, SQLColumnPrivileges, SQLTablePrivileges, "      \
+"SQLPrimaryKeys, SQLProcedureColumns, SQLForeignKeys"
+
+const int otl_error_code_18=32019;
+#define otl_error_msg_18                                \
+"otl_stream::operator>>() should have been called "     \
+"before otl_stream::operator int()"
+
+const int otl_error_code_19=32020;
+#define otl_error_msg_19                                \
+"otl_stream_read_iterator: otl_stream is not open"
+
+const int otl_error_code_20=32021;
+#define otl_error_msg_20                                \
+"otl_stream_read_iterator: PL/SQL table and 'refcur' "  \
+"parameters are not supported"
+
+const int otl_error_code_21=32022;
+#define otl_error_msg_21                                        \
+"otl_stream_read_iterator: otl_stream cannot be described" 
+
+const int otl_error_code_22=32023;
+#define otl_error_msg_22                                \
+"otl_stream_read_iterator: position is out of range" 
+
+const int otl_error_code_23=32024;
+#define otl_error_msg_23                        \
+"otl_stream_read_iterator: incompatible types in get()" 
+
+const int otl_error_code_24=32025;
+#define otl_error_msg_24 \
+"otl_stream::operator int() is not supported in the LOB stream mode"
+
+const int otl_error_code_25=32026;
+#define otl_error_msg_25                                                        \
+"otl_stream_read_iterator: get(otl_lob_stream*&) function "                     \
+"can only be used if otl_stream::set_lob_stream_mode(true) had been called "    \
+"before the iterator was attached to the stream"
+
+const int otl_error_code_26=32027;
+#define otl_error_msg_26                                \
+"otl_stream_read_iterator: variable name is not recognized " 
+
+const int otl_error_code_27=32028;
+#define otl_error_msg_27 "Unsupported column data type" 
+
+const int otl_error_code_28=32029;
+#define otl_error_msg_28 \
+"RAW value cannot be read with otl_lob_stream, use otl_long_string instead" 
+
+const int otl_error_code_29=32030;
+#define otl_error_msg_29 \
+"otl_stream is already open" 
+
+const int otl_error_code_30=32031;
+#define otl_error_msg_30 \
+"otl_connect is already connected" 
+
+const int otl_error_code_31=32032;
+#define otl_error_msg_31 \
+"SELECT otl_stream buffer size for TimesTen should be in [1..128] range" 
+
+
+const int otl_oracle_date_size=7;
+
+const int otl_explicit_select=0;
+const int otl_implicit_select=1;
+
+const int otl_input_param=0;
+const int otl_output_param=1;
+const int otl_inout_param=2;
+
+const unsigned int otl_all_num2str=1;
+const unsigned int otl_all_date2str=2;
+
+const int otl_num_str_size=60;
+const int otl_date_str_size=60;
+
+class otl_select_struct_override{
+public:
+
+  short int* col_ndx;
+  short int* col_type;
+  int* col_size;
+  int len;
+  
+  unsigned int all_mask;
+  bool lob_stream_mode;
+  
+  otl_select_struct_override()
+  {
+    container_size_=otl_var_list_size;
+    col_ndx=new short int[container_size_];
+    col_type=new short int[container_size_];
+    col_size=new int[container_size_];
+    reset();
+  }
+
+  void reset(void)
+  {
+    len=0;
+    all_mask=0;
+    lob_stream_mode=false;
+  }
+  
+  ~otl_select_struct_override()
+  {
+    delete[] col_ndx;
+    delete[] col_type;
+    delete[] col_size;
+  }
+  
+  void add_override(const int andx, const int atype, const int asize=0)
+  {
+    if(len==otl_var_list_size){
+      int temp_container_size=container_size_;
+      container_size_*=2;
+      short int* temp_col_ndx=new short int[container_size_];
+      short int* temp_col_type=new short int[container_size_];
+      int* temp_col_size=new int[container_size_];
+      memcpy(temp_col_ndx,col_ndx,sizeof(short int)*temp_container_size);
+      memcpy(temp_col_type,col_type,sizeof(short int)*temp_container_size);
+      memcpy(temp_col_size,col_size,sizeof(int)*temp_container_size);
+      delete[] col_ndx;
+      delete[] col_type;
+      delete[] col_size;
+      col_ndx=temp_col_ndx;
+      col_type=temp_col_type;
+      col_size=temp_col_size;
+    }
+    ++len;
+    col_ndx[len-1]=OTL_SCAST(short,andx);
+    col_type[len-1]=OTL_SCAST(short,atype);
+    col_size[len-1]=asize;
+  }
+  
+  int find(const int ndx)
+  {
+    int i;
+    for(i=0;i<len;++i)
+      if(ndx==col_ndx[i])
+        return i;
+    return -1;
+  }
+  
+  void set_all_column_types(const unsigned int amask=0)
+  {
+    all_mask=amask;
+  }
+  
+  int getLen(void){return len;}
+
+protected:
+
+  int container_size_;
+  
+};
+
+inline int otl_decimal_degree(unsigned int num)
+{
+  int n=0;
+  while(num!=0){
+    ++n;
+    num/=10;
+  }
+  return n;
+}
+
+inline bool otl_isspace(char c)
+{
+  return c==' '||c=='\t'||c=='\n'||
+         c=='\r'||c=='\f'||c=='\v';
+}
+
+inline char otl_to_upper(char c)
+{
+ return OTL_SCAST(char,toupper(c));
+}
+
+inline unsigned int otl_to_fraction
+(unsigned int fraction,int frac_prec)
+{
+  if(fraction==0||frac_prec==0)return fraction;
+  int degree_diff=9-frac_prec;
+  for(int i=0;i<degree_diff;++i)
+    fraction*=10;
+  return fraction;
+}
+
+inline unsigned int otl_from_fraction
+(unsigned int fraction,int frac_prec)
+{
+  if(fraction==0||frac_prec==0)return fraction;
+  int degree_diff=9-frac_prec;
+  for(int i=0;i<degree_diff;++i)
+    fraction/=10;
+  return fraction;
+}
+
+#define OTL_NO_STM_TEXT "#No Stm Text available#"
+
+class otl_datetime{
+public:
+
+  int year;
+  int month;
+  int day;
+  int hour;
+  int minute;
+  int second;
+  unsigned long fraction;
+  int frac_precision;
+
+#if defined(OTL_ORA_TIMESTAMP)
+  short int tz_hour;
+  short int tz_minute;
+#endif
+
+ otl_datetime()
+ {
+  year=1900;
+  month=1;
+  day=1;
+  hour=0;
+  minute=0;
+  second=0;
+  fraction=0;
+  frac_precision=0;
+#if defined(OTL_ORA_TIMESTAMP)
+  tz_hour=0;
+  tz_minute=0;
+#endif
+ }
+
+ otl_datetime
+ (const int ayear,
+  const int amonth,
+  const int aday,
+  const int ahour,
+  const int aminute,
+  const int asecond,
+  const unsigned long afraction=0,
+  const int afrac_precision=0
+#if defined(OTL_ORA_TIMESTAMP)
+  , 
+  const short int atz_hour=0,
+  const short int atz_minute=0
+#endif
+
+ )
+ {
+  year=ayear;
+  month=amonth;
+  day=aday;
+  hour=ahour;
+  minute=aminute;
+  second=asecond;
+  fraction=afraction;
+  frac_precision=afrac_precision;
+#if defined(OTL_ORA_TIMESTAMP)
+  tz_hour=atz_hour;
+  tz_minute=atz_minute;
+#endif
+ }
+
+ otl_datetime(const otl_datetime& dt)
+ {
+   copy(dt);
+ }
+
+ ~otl_datetime(){}
+
+ otl_datetime& operator=(const otl_datetime& dt)
+ {
+   copy(dt);
+  return *this;
+ }
+
+protected:
+
+  void copy(const otl_datetime& dt)
+  {
+    year=dt.year;
+    month=dt.month;
+    day=dt.day;
+    hour=dt.hour;
+    minute=dt.minute;
+    second=dt.second;
+    fraction=dt.fraction;
+    frac_precision=dt.frac_precision;
+#if defined(OTL_ORA_TIMESTAMP)
+    tz_hour=dt.tz_hour;
+    tz_minute=dt.tz_minute;
+#endif
+  }
+
+};
+
+class otl_oracle_date{
+public:
+ unsigned char century;
+ unsigned char year;
+ unsigned char month;
+ unsigned char day;
+ unsigned char hour;
+ unsigned char minute;
+ unsigned char second;
+
+ otl_oracle_date(){}
+ ~otl_oracle_date(){}
+
+};
+
+inline void convert_date(otl_datetime& t,const otl_oracle_date& s)
+{
+ t.year=(OTL_SCAST(int, s.century-100)*100+(OTL_SCAST(int, s.year-100)));
+ t.month=s.month;
+ t.day=s.day;
+ t.hour=s.hour-1;
+ t.minute=s.minute-1;
+ t.second=s.second-1;
+}
+
+inline void convert_date(otl_oracle_date& t,const otl_datetime& s)
+{
+ t.year=OTL_SCAST(unsigned char, ((s.year%100)+100));
+ t.century=OTL_SCAST(unsigned char, ((s.year/100)+100));
+ t.month=OTL_SCAST(unsigned char, s.month);
+ t.day=OTL_SCAST(unsigned char, s.day);
+ t.hour=OTL_SCAST(unsigned char, (s.hour+1));
+ t.minute=OTL_SCAST(unsigned char, (s.minute+1));
+ t.second=OTL_SCAST(unsigned char, (s.second+1));
+}
+
+class otl_null{
+public:
+#if (defined(_MSC_VER)&&(_MSC_VER==1200))
+ int dummy; // this is to fix a compiler bug in VC++ 6.0
+#endif
+
+ otl_null(){}
+ ~otl_null(){}
+};
+
+class otl_column_desc{
+public:
+
+  char* name;
+  int  dbtype;
+  int  otl_var_dbtype;
+#if defined(_WIN64)
+  __int64 dbsize;
+#else
+  int  dbsize;
+#endif
+  int  scale;
+#if defined(_WIN64)
+  __int64 prec;
+#else
+  int  prec;
+#endif
+  int  nullok;
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+  int charset_form;
+  int char_size;
+#endif
+
+  otl_column_desc()
+  {
+    name=0;
+    name_len_=0;
+    dbtype=0;
+    otl_var_dbtype=0;
+    dbsize=0;
+    scale=0;
+    prec=0;
+    nullok=0;
+#if defined(OTL_ORA_UNICODE)
+    charset_form=0;
+    char_size=0;
+#endif
+  }
+
+  ~otl_column_desc()
+  {
+    delete[] name;
+  }
+
+  otl_column_desc& operator=(const otl_column_desc& desc)
+  {
+    if(name_len_>=desc.name_len_)
+      OTL_STRCPY_S(name,name_len_,desc.name);
+    else if(name==0 && desc.name!=0){
+      name=new char[desc.name_len_];
+      name_len_=desc.name_len_;
+      OTL_STRCPY_S(name,name_len_,desc.name);
+    }else if(name_len_<desc.name_len_ && desc.name!=0){
+      delete[] name;
+      name=new char[desc.name_len_];
+      name_len_=desc.name_len_;
+      OTL_STRCPY_S(name,name_len_,desc.name);
+    }
+    dbtype=desc.dbtype;
+    otl_var_dbtype=desc.otl_var_dbtype;
+    dbsize=desc.dbsize;
+    scale=desc.scale;
+    prec=desc.prec;
+    nullok=desc.nullok;
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+    charset_form=desc.charset_form;
+    char_size=desc.char_size;
+#endif
+
+    return *this;
+  }
+
+  void set_name(const char* aname,const int aname_len=0)
+  {
+    int len;
+    if(aname_len==0)
+      len=OTL_SCAST(int,strlen(aname))+1;
+    else
+      len=aname_len+1;
+    if(name_len_<len){
+      if(name)delete[] name;
+      name=new char[len];
+      name_len_=len;
+      for(int i=0;i<len-1;++i)
+        name[i]=aname[i];
+      name[len-1]=0;
+    }
+  }
+
+protected:
+
+  int name_len_;
+
+};
+
+class otl_var_desc{
+public:
+  int  param_type;
+  int  ftype;
+  int  elem_size;
+  int  array_size;
+  int  pos;
+  int  name_pos;
+  char name[128];
+  int  pl_tab_flag;
+
+ otl_var_desc()
+ {
+  param_type=0;
+  ftype=0;
+  elem_size=0;
+  array_size=0;
+  pos=0;
+  name_pos=0;
+  name[0]=0;
+  pl_tab_flag=0;
+ }
+
+ ~otl_var_desc(){}
+
+ void copy_name(const char* nm)
+ {
+  if(!nm)
+   name[0]=0;
+  else{
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+   OTL_STRNCPY_S(name,sizeof(name),nm,sizeof(name)-1);
+   name[sizeof(name)-1]=0;
+#else
+   strncpy(name,nm,sizeof(name));
+   name[sizeof(name)-1]=0;
+#endif
+#else
+   strncpy(name,nm,sizeof(name));
+   name[sizeof(name)-1]=0;
+#endif
+  }
+ }
+
+};
+
+const int otl_var_none=0;
+const int otl_var_char=1;
+const int otl_var_double=2;
+const int otl_var_float=3;
+const int otl_var_int=4;
+const int otl_var_unsigned_int=5;
+const int otl_var_short=6;
+const int otl_var_long_int=7;
+const int otl_var_timestamp=8;
+const int otl_var_varchar_long=9;
+const int otl_var_raw_long=10;
+const int otl_var_clob=11;
+const int otl_var_blob=12;
+const int otl_var_refcur=13;
+const int otl_var_long_string=15;
+const int otl_var_db2time=16;
+const int otl_var_db2date=17;
+const int otl_var_tz_timestamp=18;
+const int otl_var_ltz_timestamp=19;
+const int otl_var_bigint=20;
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+const int otl_var_nchar=21;
+const int otl_var_nclob=22;
+#else
+#endif
+const int otl_var_raw=23;
+const int otl_var_lob_stream=100;
+
+const int otl_bigint_str_size=40;
+
+class otl_long_string{
+public:
+
+  unsigned char* v;
+  int length;
+  int extern_buffer_flag;
+  int buf_size;
+  bool this_is_last_piece_;
+
+ otl_long_string(const int buffer_size=32760,const int input_length=0)
+ {
+   this_is_last_piece_=false;
+   if(buffer_size==0){
+     v=0;
+     length=0;
+     extern_buffer_flag=0;
+   }else{
+     extern_buffer_flag=0;
+     length=input_length;
+     buf_size=buffer_size;
+     v=new unsigned char[buffer_size+1];
+     memset(v,0,buffer_size);
+   }
+ }
+
+ otl_long_string
+ (const void* external_buffer,
+  const int buffer_size,
+  const int input_length=0)
+ {
+   this_is_last_piece_=false;
+   extern_buffer_flag=1;
+   length=input_length;
+   buf_size=buffer_size;
+   v=OTL_RCAST(unsigned char*, OTL_CCAST(void*, external_buffer));
+ }
+
+  otl_long_string& operator=(const otl_long_string& s)
+  {
+    this_is_last_piece_=s.this_is_last_piece_;
+    if(s.extern_buffer_flag){
+      if(!extern_buffer_flag)
+        delete[] v;
+      v=s.v;
+      length=s.length;
+      extern_buffer_flag=s.extern_buffer_flag;
+      buf_size=s.buf_size;
+    }else{
+      if(extern_buffer_flag){
+        v=new unsigned char[s.buf_size];
+        buf_size=s.buf_size;
+      }else if(buf_size<s.buf_size){
+        delete[] v;
+        v=new unsigned char[s.buf_size];
+        buf_size=s.buf_size;
+      }
+      length=s.length;
+      extern_buffer_flag=s.extern_buffer_flag;
+      memcpy(v,s.v,length);
+      if(length<buf_size&&s.v[length]==0)
+        v[length]=0;
+    }
+    return *this;
+  }
+
+  otl_long_string(const otl_long_string& s)
+  {
+    this_is_last_piece_=s.this_is_last_piece_;
+    length=s.length;
+    extern_buffer_flag=s.extern_buffer_flag;
+    buf_size=s.buf_size;
+    if(s.extern_buffer_flag)
+      v=s.v;
+    else{
+      v=new unsigned char[buf_size];
+      memcpy(v,s.v,length);
+      if(length<buf_size&&s.v[length]==0)
+        v[length]=0;
+    }
+  }
+  
+  virtual ~otl_long_string()
+  {
+   if(!extern_buffer_flag)delete[] v;
+  }
+
+  void set_len(const int alen=0){length=alen;}
+  int len(void)const {return length;}
+
+  void set_last_piece(const bool this_is_last_piece=false)
+  {
+    this_is_last_piece_=this_is_last_piece;
+  }
+
+  unsigned char& operator[](int ndx){return v[ndx];}
+
+  virtual void null_terminate_string(const int alen)
+  {
+    (*this)[alen]=0;
+  }
+
+};
+
+#if defined(OTL_UNICODE)
+class otl_long_unicode_string: public otl_long_string{
+public:
+
+  otl_long_unicode_string(const int buffer_size=32760,const int input_length=0)
+    : otl_long_string(0,0)
+  {
+    extern_buffer_flag=0;
+    length=input_length;
+    buf_size=buffer_size;
+    v=new unsigned char[(buffer_size+1)*sizeof(OTL_WCHAR)];
+    memset(v,0,buffer_size*sizeof(OTL_WCHAR));
+  }
+  
+  otl_long_unicode_string
+  (const void* external_buffer, 
+   const int buffer_size,
+   const int input_length=0)
+    : otl_long_string(external_buffer,buffer_size,input_length)
+  {
+    extern_buffer_flag=1;
+    length=input_length;
+    buf_size=buffer_size;
+    v=OTL_RCAST(unsigned char*, OTL_CCAST(void*, external_buffer));
+  }
+  
+  virtual ~otl_long_unicode_string(){}
+  
+  OTL_CHAR& operator[](int ndx)
+  {
+    return OTL_RCAST(OTL_CHAR*,v)[ndx];
+  }
+
+  virtual void null_terminate_string(const int alen)
+  {
+    (*this)[alen]=0;
+  }
+
+};
+
+#endif
+
+inline const char* otl_var_type_name(const int ftype)
+{
+  const char* const_CHAR="CHAR";
+  const char* const_DOUBLE="DOUBLE";
+  const char* const_FLOAT="FLOAT";
+  const char* const_INT="INT";
+  const char* const_UNSIGNED_INT="UNSIGNED INT";
+  const char* const_SHORT_INT="SHORT INT";
+  const char* const_LONG_INT="LONG INT";
+  const char* const_TIMESTAMP="TIMESTAMP";
+  const char* const_DB2DATE="DB2DATE";
+  const char* const_DB2TIME="DB2TIME";
+  const char* const_TZ_TIMESTAMP="TIMESTAMP WITH TIME ZONE";
+  const char* const_LTZ_TIMESTAMP="TIMESTAMP WITH LOCAL TIME ZONE";
+  const char* const_BIGINT="BIGINT";
+  const char* const_VARCHAR_LONG="VARCHAR LONG";
+  const char* const_RAW_LONG="RAW LONG";
+  const char* const_CLOB="CLOB";
+  const char* const_BLOB="BLOB";
+  const char* const_RAW="RAW";
+  const char* const_UNKNOWN="UNKNOWN";
+  const char* const_LONG_STRING="otl_long_string()";
+  const char* const_LOB_STREAM="otl_lob_stream*&";
+  const char* const_USER_DEFINED="User-defined type (object type, VARRAY, Nested Table)";
+  
+  switch(ftype){
+  case otl_var_char:
+    return const_CHAR;
+  case otl_var_double:
+    return const_DOUBLE;
+  case otl_var_float:
+    return const_FLOAT;
+  case otl_var_int:
+    return const_INT;
+  case otl_var_unsigned_int:
+    return const_UNSIGNED_INT;
+  case otl_var_short:
+    return const_SHORT_INT;
+  case otl_var_long_int:
+    return const_LONG_INT;
+  case otl_var_timestamp:
+    return const_TIMESTAMP;
+  case otl_var_db2date:
+    return const_DB2DATE;
+  case otl_var_db2time:
+    return const_DB2TIME;
+  case otl_var_tz_timestamp:
+    return const_TZ_TIMESTAMP;
+  case otl_var_ltz_timestamp:
+    return const_LTZ_TIMESTAMP;
+  case otl_var_bigint:
+    return const_BIGINT;
+  case otl_var_varchar_long:
+    return const_VARCHAR_LONG;
+  case otl_var_raw_long:
+    return const_RAW_LONG;
+  case otl_var_clob:
+    return const_CLOB;
+  case otl_var_blob:
+    return const_BLOB;
+  case otl_var_raw:
+    return const_RAW;
+  case otl_var_long_string:
+    return const_LONG_STRING;
+  case otl_var_lob_stream:
+    return const_LOB_STREAM;
+  case 108:
+    return const_USER_DEFINED;
+ default:
+  return const_UNKNOWN;
+ }
+}
+
+inline void otl_var_info_var
+(const char* name,
+ const int ftype,
+ const int type_code,
+ char* var_info,
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400) // VC++ 8.0 or higher
+ const size_t var_info_sz
+#else
+ const size_t /*var_info_sz*/
+#endif
+#else
+ const size_t /*var_info_sz*/
+#endif
+)
+{char buf1[128];
+ char buf2[128];
+ OTL_STRCPY_S(buf1,sizeof(buf1),otl_var_type_name(ftype));
+ OTL_STRCPY_S(buf2,sizeof(buf2),otl_var_type_name(type_code));
+ OTL_STRCPY_S(var_info,var_info_sz,"Variable: ");
+ OTL_STRCAT_S(var_info,var_info_sz,name);
+ OTL_STRCAT_S(var_info,var_info_sz,"<");
+ OTL_STRCAT_S(var_info,var_info_sz,buf1);
+ OTL_STRCAT_S(var_info,var_info_sz,">, datatype in operator <</>>: ");
+ OTL_STRCAT_S(var_info,var_info_sz,buf2);
+}
+
+inline void otl_var_info_var2
+(const char* name,
+ const int ftype,
+ char* var_info,
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400) // VC++ 8.0 or higher
+ const size_t var_info_sz
+#else
+ const size_t /*var_info_sz*/
+#endif
+#else
+ const size_t /*var_info_sz*/
+#endif
+)
+{char buf1[128];
+ OTL_STRCPY_S(buf1,sizeof(buf1),otl_var_type_name(ftype));
+ OTL_STRCPY_S(var_info,var_info_sz,"Variable: ");
+ OTL_STRCPY_S(var_info,var_info_sz,name);
+ OTL_STRCAT_S(var_info,var_info_sz,"<");
+ OTL_STRCAT_S(var_info,var_info_sz,buf1);
+ OTL_STRCAT_S(var_info,var_info_sz,">");
+}
+
+inline void otl_var_info_var3
+(const char* name,
+ const int ftype,
+ const int type_code,
+ char* var_info,
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400) // VC++ 8.0 or higher
+ const size_t var_info_sz
+#else
+ const size_t /*var_info_sz*/
+#endif
+#else
+ const size_t /*var_info_sz*/
+#endif
+)
+{char buf1[128];
+ char buf2[128];
+ OTL_STRCPY_S(buf1,sizeof(buf1),otl_var_type_name(ftype));
+ OTL_STRCPY_S(buf2,sizeof(buf2),otl_var_type_name(type_code));
+ OTL_STRCPY_S(var_info,var_info_sz,"Variable: ");
+ OTL_STRCAT_S(var_info,var_info_sz,name);
+ OTL_STRCAT_S(var_info,var_info_sz,"<");
+ OTL_STRCAT_S(var_info,var_info_sz,buf1);
+ OTL_STRCAT_S(var_info,
+              var_info_sz,
+              ">, datatype in otl_stream_read_iterator::get(): ");
+ OTL_STRCAT_S(var_info,var_info_sz,buf2);
+}
+
+inline void otl_var_info_var4
+(const char* name,
+ const int ftype,
+ const int type_code,
+ char* var_info,
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400) // VC++ 8.0 or higher
+ const size_t var_info_sz
+#else
+ const size_t /*var_info_sz*/
+#endif
+#else
+ const size_t /*var_info_sz*/
+#endif
+)
+{char buf1[128];
+ char buf2[128];
+ OTL_STRCPY_S(buf1,sizeof(buf1),otl_var_type_name(ftype));
+ OTL_STRCPY_S(buf2,sizeof(buf2),otl_var_type_name(type_code));
+ OTL_STRCPY_S(var_info,var_info_sz,"Variable: ");
+ OTL_STRCAT_S(var_info,var_info_sz,name);
+ OTL_STRCAT_S(var_info,var_info_sz,"<");
+ OTL_STRCAT_S(var_info,var_info_sz,buf1);
+ OTL_STRCAT_S(var_info,
+              sizeof(var_info),
+              ">, datatype in otl_stream_read_iterator::get(): ");
+ OTL_STRCAT_S(var_info,sizeof(var_info),buf2);
+}
+
+inline void otl_strcpy(
+  unsigned char* trg,
+  unsigned char* src,
+  int& overflow,
+  const int inp_size=0,
+  const int actual_inp_size=-1
+)
+{
+  OTL_CHAR* c1=OTL_RCAST(OTL_CHAR*,trg);
+  const OTL_CHAR* c2=OTL_RCAST(const OTL_CHAR*,src);
+  int out_size=0;
+  overflow=0;
+  if(actual_inp_size!=-1){
+    while(out_size<inp_size-1 && out_size<actual_inp_size){
+      *c1++=*c2++;
+      ++out_size;
+    }
+    *c1=0;
+    if(out_size==inp_size-1 && out_size<actual_inp_size)
+      overflow=1;
+  }else{
+    while(*c2 && out_size<inp_size-1){
+      *c1++=*c2++;
+      ++out_size;
+    }
+    *c1=0;
+    if(*c2 && out_size==inp_size-1)
+      overflow=1;
+  }
+}
+
+#if defined(OTL_UNICODE) || (defined(_MSC_VER) && (_MSC_VER >= 1400))
+inline void otl_strcpy
+ (unsigned char* trg,
+  const unsigned char* src)
+{
+ OTL_CHAR* c1=OTL_RCAST(OTL_CHAR*,trg);
+ const OTL_CHAR* c2=OTL_RCAST(const OTL_CHAR*,src);
+ while(*c2){
+  *c1++=*c2++;
+ }
+ *c1=0;
+}
+#else
+inline void otl_strcpy(unsigned char* trg,const unsigned char* src)
+{
+  strcpy(OTL_RCAST(char*,trg),OTL_RCAST(const char*,src));
+}
+#endif
+
+inline void otl_strcat(char* trg,const char* src)
+{
+  while(*trg)++trg;
+  while(*src){
+    *trg=*src;
+    ++trg;
+    ++src;
+  }
+  *trg=0;
+}
+
+#if defined(OTL_UNICODE) && !defined(OTL_ODBC)
+inline void otl_strcpy2(
+  unsigned char* trg,
+  const unsigned char* src,
+  const int max_src_len
+)
+{
+ OTL_CHAR* c1=OTL_RCAST(OTL_CHAR*,trg);
+ const OTL_CHAR* c2=OTL_RCAST(const OTL_CHAR*,src);
+ int src_len=OTL_SCAST(int,*OTL_SCAST(const unsigned short*,c2));
+ int len=0;
+ ++c2;
+ while(*c2&&len<max_src_len&&len<src_len){
+  *c1++=*c2++;
+  ++len;
+ }
+ *c1=0;
+#else
+inline void otl_strcpy2(
+  unsigned char* trg,
+  const unsigned char* src,
+  const int /* max_src_len */
+)
+{
+ otl_strcpy(trg,src);
+#endif
+}
+
+#if defined(OTL_UNICODE)
+inline void otl_memcpy(
+  unsigned char* trg,
+  unsigned char* src,
+  const int src_len,
+  const int ftype
+)
+{
+  if(ftype==otl_var_raw_long||ftype==otl_var_raw){
+    memcpy(trg,src,src_len);
+    return;
+  }
+
+  OTL_CHAR* c1=OTL_RCAST(OTL_CHAR*,trg);
+  OTL_CHAR* c2=OTL_RCAST(OTL_CHAR*,src);
+  int len=0;
+  while(len<src_len){
+    *c1++=*c2++;
+    ++len;
+  }
+
+#else
+inline void otl_memcpy(
+  unsigned char* trg,
+  unsigned char* src,
+  const int src_len,
+  const int /* ftype */
+)
+{
+ memcpy(trg,src,src_len);
+#endif
+}
+
+#if defined(OTL_UNICODE) && !defined(OTL_ODBC)
+inline void otl_strcpy3(
+  unsigned char* trg,
+  unsigned char* src,
+  const int max_src_len,
+  int& overflow,
+  const int inp_size=0
+)
+{
+ OTL_CHAR* c1=OTL_RCAST(OTL_CHAR*,trg);
+ OTL_CHAR* c2=OTL_RCAST(OTL_CHAR*,src);
+ int len=0;
+ int src_len=OTL_SCAST(int,*OTL_RCAST(unsigned short*,c2));
+ ++c2;
+ int out_size=0;
+ overflow=0;
+ while(len<src_len&&len<max_src_len&&out_size<inp_size-1){
+  *c1++=*c2++;
+  ++out_size;
+  ++len;
+ }
+ *c1=0;
+ if(len<src_len&&out_size==inp_size-1)
+  overflow=1;
+#else
+inline void otl_strcpy3(
+  unsigned char* trg,
+  unsigned char* src,
+  const int /* max_src_len */,
+  int& overflow,
+  const int inp_size=0
+)
+{
+ OTL_CHAR* c1=OTL_RCAST(OTL_CHAR*,trg);
+ OTL_CHAR* c2=OTL_RCAST(OTL_CHAR*,src);
+ int out_size=0;
+ overflow=0;
+ while(*c2&&out_size<inp_size-1){
+  *c1++=*c2++;
+  ++out_size;
+ }
+ *c1=0;
+ if(*c2&&out_size==inp_size-1)
+  overflow=1;
+#endif
+}
+
+inline void otl_strcpy4(
+  unsigned char* trg,
+  unsigned char* src,
+  int& overflow,
+  const int inp_size=0,
+  const int actual_inp_size=-1
+)
+{
+#if  defined(OTL_UNICODE) && !defined(OTL_ODBC)
+  OTL_CHAR* c1=OTL_RCAST(OTL_CHAR*,trg);
+  OTL_CHAR* bc1=c1;
+  ++c1;
+  OTL_CHAR* c2=OTL_RCAST(OTL_CHAR*,src);
+  int out_size=0;
+  overflow=0;
+  if(actual_inp_size!=-1){
+    while(out_size<inp_size-1 && out_size<actual_inp_size){
+      *c1++=*c2++;
+      ++out_size;
+    }
+    *OTL_RCAST(unsigned short*,bc1)=OTL_SCAST(unsigned short,out_size);
+    if(out_size==inp_size-1 && out_size<actual_inp_size)
+      overflow=1;
+  }else{
+    while(*c2&&out_size<inp_size-1){
+     *c1++=*c2++;
+     ++out_size;
+    }
+    *OTL_RCAST(unsigned short*,bc1)=OTL_SCAST(unsigned short,out_size);
+    if(*c2&&out_size==inp_size-1)
+      overflow=1;
+  }
+#else
+  OTL_CHAR* c1=OTL_RCAST(OTL_CHAR*,trg);
+  OTL_CHAR* c2=OTL_RCAST(OTL_CHAR*,src);
+  int out_size=0;
+  overflow=0;
+  if(actual_inp_size!=-1){
+    while(out_size<inp_size-1 && out_size<actual_inp_size){
+      *c1++=*c2++;
+      ++out_size;
+    }
+    *c1=0;
+    if(out_size==inp_size-1 && out_size<actual_inp_size)
+      overflow=1;
+  }else{
+    while(*c2&&out_size<inp_size-1){
+      *c1++=*c2++;
+      ++out_size;
+    }
+    *c1=0;
+    if(*c2&&out_size==inp_size-1)
+      overflow=1;
+  }
+#endif
+}
+
+inline char* otl_itoa(int i,char* a)
+{
+  const char* digits="0123456789";
+  int n=i;
+  int k;
+  char buf[64];
+  char* c=buf;
+  char *c1=a;
+  int klen=0;
+  char digit=' ';
+  bool negative=false;
+  if(n<0){
+    n=-n;
+    negative=true;
+  }
+  do{
+    if(n>=10)
+      k=n%10;
+    else
+      k=n;
+    digit=digits[k];
+    *c=digit;
+    ++c;
+    ++klen;
+    n=n/10;
+  }while(n!=0);
+  *c=0;
+  if(negative){
+    *c1='-';
+    ++c1;
+  }
+  for(int j=klen-1;j>=0;--j){
+    *c1=buf[j];
+    ++c1;
+  }
+  *c1=0;
+  return c1;
+}
+
+inline void otl_var_info_col
+(const int pos,
+ const int ftype,
+ const int type_code,
+ char* var_info,
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400) // VC++ 8.0 or higher
+ const size_t var_info_sz
+#else
+ const size_t /*var_info_sz*/
+#endif
+#else
+ const size_t /*var_info_sz*/
+#endif
+)
+{
+ char buf1[128];
+ char buf2[128];
+ char name[128];
+
+ otl_itoa(pos,name);
+ OTL_STRCPY_S(buf1,sizeof(buf1),otl_var_type_name(ftype));
+ OTL_STRCPY_S(buf2,sizeof(buf2),otl_var_type_name(type_code));
+ OTL_STRCPY_S(var_info,var_info_sz,"Column: ");
+ OTL_STRCAT_S(var_info,var_info_sz,name);
+ OTL_STRCAT_S(var_info,var_info_sz,"<");
+ OTL_STRCAT_S(var_info,var_info_sz,buf1);
+ OTL_STRCAT_S(var_info,
+              var_info_sz,
+              ">, datatype in operator <</>>: ");
+ OTL_STRCAT_S(var_info,var_info_sz,buf2);
+}
+
+inline void otl_var_info_col2
+(const int pos,
+ const int ftype,
+ char* var_info,
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400) // VC++ 8.0 or higher
+ const size_t var_info_sz
+#else
+ const size_t /*var_info_sz*/
+#endif
+#else
+ const size_t /*var_info_sz*/
+#endif
+)
+{
+  char buf1[128];
+  char name[128];
+  
+  otl_itoa(pos,name);
+  OTL_STRCPY_S(buf1,sizeof(buf1),otl_var_type_name(ftype));
+  OTL_STRCPY_S(var_info,var_info_sz,"Column: ");
+  OTL_STRCAT_S(var_info,var_info_sz,name);
+  OTL_STRCAT_S(var_info,var_info_sz,"<");
+  OTL_STRCAT_S(var_info,var_info_sz,buf1);
+  OTL_STRCAT_S(var_info,var_info_sz,">");
+}
+
+inline void otl_var_info_col3
+(const int pos,
+ const int ftype,
+ const char* col_name,
+ char* var_info,
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400) // VC++ 8.0 or higher
+ const size_t var_info_sz
+#else
+ const size_t /*var_info_sz*/
+#endif
+#else
+ const size_t /*var_info_sz*/
+#endif
+)
+{
+  char buf1[128];
+  char name[128];
+  
+  otl_itoa(pos,name);
+  OTL_STRCPY_S(buf1,sizeof(buf1),otl_var_type_name(ftype));
+  OTL_STRCPY_S(var_info,var_info_sz,"Column: ");
+  OTL_STRCAT_S(var_info,var_info_sz,name);
+  OTL_STRCAT_S(var_info,var_info_sz," / ");
+  OTL_STRCAT_S(var_info,var_info_sz,col_name);
+  OTL_STRCAT_S(var_info,var_info_sz," <");
+  OTL_STRCAT_S(var_info,var_info_sz,buf1);
+  OTL_STRCAT_S(var_info,var_info_sz,">");
+}
+
+class otl_pl_tab_generic{
+public:
+
+ unsigned char* p_v;
+ short* p_null;
+ int elem_size;
+ int tab_size;
+ int tab_len;
+ int vtype;
+
+ otl_pl_tab_generic()
+ {
+  elem_size=0;
+  tab_size=0;
+  tab_len=0;
+  p_v=0;
+  p_null=0;
+  vtype=0;
+ }
+
+ virtual ~otl_pl_tab_generic(){}
+
+ unsigned char* val(int ndx=0)
+ {
+  return p_v+(ndx*elem_size);
+ }
+
+ int is_null(int ndx=0)
+ {
+  return p_null[ndx]!=0;
+ }
+
+ void set_null(int ndx=0)
+ {
+  p_null[ndx]=1;
+ }
+
+ void set_non_null(int ndx=0)
+ {
+  p_null[ndx]=0;
+ }
+
+ void init_generic(void)
+ {int i;
+  memset(p_v,0,elem_size*tab_len);
+  for(i=0;i<tab_len;++i)
+   p_null[i]=0;
+ }
+
+ int len()
+ {
+  return tab_len;
+ }
+
+ void set_len(int new_len=0)
+ {
+  tab_len=new_len;
+ }
+
+};
+
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+template<OTL_TYPE_NAME T,const int T_type>
+inline int otl_numeric_convert_T
+(const int ftype,const void* val,T& n)
+{
+  if(ftype==T_type){
+    n=*OTL_RCAST(T*,OTL_CCAST(void*,val));
+    return 1;
+  }else
+    return 0;
+}
+
+template<OTL_TYPE_NAME T>
+inline int otl_numeric_convert_T2(const int ftype,const void* val,T& n)
+{
+  int rc=1;
+  switch(ftype){
+  case otl_var_double:
+    n=OTL_PCONV(T,double,val);
+    break;
+  case otl_var_short:
+    n=OTL_PCONV(T,short,val);
+    break;
+  case otl_var_int:
+    n=OTL_PCONV(T,int,val);
+    break;
+  case otl_var_unsigned_int:
+    n=OTL_PCONV(T,unsigned int,val);
+    break;
+  case otl_var_long_int:
+    n=OTL_PCONV(T,long int,val);
+    break;
+  case otl_var_float:
+    n=OTL_PCONV(T,float,val);
+    break;
+#if defined(OTL_BIGINT)
+  case otl_var_bigint:
+    n=OTL_PCONV(T,OTL_BIGINT,val);
+    break;
+#endif
+ default:
+  rc=0;
+  break;
+ }
+ return rc;  
+}
+
+#else
+template<OTL_TYPE_NAME T>
+inline int otl_numeric_convert_T(const int ftype,const void* val,T& n)
+{
+  int rc=1;
+  switch(ftype){
+  case otl_var_double:
+    n=OTL_PCONV(T,double,val);
+    break;
+  case otl_var_short:
+    n=OTL_PCONV(T,short,val);
+    break;
+  case otl_var_int:
+    n=OTL_PCONV(T,int,val);
+    break;
+  case otl_var_unsigned_int:
+    n=OTL_PCONV(T,unsigned int,val);
+    break;
+  case otl_var_long_int:
+    n=OTL_PCONV(T,long int,val);
+    break;
+  case otl_var_float:
+    n=OTL_PCONV(T,float,val);
+    break;
+#if defined(OTL_BIGINT)
+  case otl_var_bigint:
+    n=OTL_PCONV(T,OTL_BIGINT,val);
+    break;
+#endif
+ default:
+  rc=0;
+  break;
+ }
+ return rc;  
+}
+#endif
+
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+
+class otl_ltstr{
+public:
+ 
+ bool operator()(const OTL_STRING_CONTAINER& s1, const OTL_STRING_CONTAINER& s2) const
+ {
+  return strcmp(s1.c_str(), s2.c_str()) < 0;
+ }
+ 
+};
+
+const int otl_max_default_pool_size=32;
+
+#endif
+
+#if defined(OTL_ACE)
+const int otl_max_default_pool_size=32;
+#endif
+
+
+class otl_stream_shell_generic{
+public:
+
+ int should_delete;
+
+ otl_stream_shell_generic()
+ {
+  should_delete=0;
+ }
+
+ virtual ~otl_stream_shell_generic(){}
+
+};
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+
+#if defined(OTL_STL)
+#include <map>
+#endif
+
+class otl_stream_pool_entry{
+public:
+
+#if defined(OTL_ACE)
+ otl_tmpl_vector<otl_stream_shell_generic*> s;
+#else
+ STD_NAMESPACE_PREFIX vector<otl_stream_shell_generic*> s;
+#endif
+
+ int cnt;
+ 
+ otl_stream_pool_entry()
+ {
+  cnt=0;
+ }
+ 
+ otl_stream_pool_entry(const otl_stream_pool_entry& sc)
+ {
+   copy(sc);
+ }
+ 
+ otl_stream_pool_entry& operator=(const otl_stream_pool_entry& sc)
+ {
+   copy(sc);
+   return *this;
+ }
+ 
+ virtual ~otl_stream_pool_entry(){}
+
+private:
+
+  void copy(const otl_stream_pool_entry& sc)
+  {
+    s.clear();
+    for(size_t i=0;i<sc.s.size();++i)
+      s.push_back(sc.s[i]);
+    cnt=sc.cnt;
+  }
+
+};
+
+class otl_stream_pool{
+public:
+ 
+ typedef otl_stream_pool_entry cache_entry_type;
+#if defined(OTL_ACE)
+ typedef
+ ACE_RB_Tree
+   <OTL_STRING_CONTAINER,cache_entry_type,
+    ACE_Less_Than<OTL_STRING_CONTAINER>,
+    ACE_Null_Mutex> sc_type;
+ typedef otl_tmpl_vector<otl_stream_shell_generic*> vec_type;
+ typedef ACE_RB_Tree_Node<OTL_STRING_CONTAINER,cache_entry_type> ace_map_entry;
+#else
+  typedef STD_NAMESPACE_PREFIX
+  map<OTL_STRING_CONTAINER,cache_entry_type,otl_ltstr> sc_type;
+  typedef STD_NAMESPACE_PREFIX vector<otl_stream_shell_generic*> vec_type;
+#endif
+
+  sc_type sc;
+  int max_size;
+  int size;
+ 
+ otl_stream_pool()
+ {
+  max_size=otl_max_default_pool_size;
+  size=0;
+ }
+
+ void init(int amax_size=otl_max_default_pool_size)
+ {
+  if(size==0&&max_size==0)return;
+  if(amax_size<2)
+    amax_size=2;
+#if defined(OTL_ACE)
+  sc_type::iterator elem0=sc.begin();
+  sc_type::iterator elemN=sc.end();
+  for(sc_type::iterator i=elem0; i!=elemN; ++i){
+   cache_entry_type& ce=(*i).item();
+   int sz=ce.s.size();
+   for(int j=0;j<sz;++j){
+    ce.s[j]->should_delete=1;
+    delete ce.s[j];
+    ce.s[j]=0;
+   }
+   ce.s.clear();
+   ce.cnt=0;
+  }
+  sc.clear();
+#else
+  sc_type::iterator elem0=sc.begin();
+  sc_type::iterator elemN=sc.end();
+  for(sc_type::iterator i=elem0; i!=elemN; ++i){
+   cache_entry_type& ce=(*i).second;
+   size_t sz=ce.s.size();
+   for(size_t j=0;j<sz;++j){
+    ce.s[j]->should_delete=1;
+    delete ce.s[j];
+    ce.s[j]=0;
+   }
+   ce.s.clear();
+   ce.cnt=0;
+  }
+  sc.clear();
+#endif
+
+  size=0;
+  max_size=amax_size;
+
+ }
+
+ otl_stream_shell_generic* find(const OTL_STRING_CONTAINER& stmtxt)
+ {
+  otl_stream_shell_generic* s;
+  
+#if defined(OTL_ACE)
+  ace_map_entry* ce=0;
+  int found=sc.find(stmtxt,ce);
+  if(found==-1)return 0; // entry not found
+  s=ce->item().s[ce->item().s.size()-1];
+  ce->item().s.pop_back();
+  if(ce->item().s.size()==0){
+   sc.unbind(ce);
+   --size;
+  }
+#else
+  sc_type::iterator cur=sc.find(stmtxt);
+  if(cur==sc.end())
+    return 0; // entry not found
+  cache_entry_type& ce=(*cur).second;
+  s=ce.s[ce.s.size()-1];
+  ce.s.pop_back();
+  if(ce.s.size()==0){
+   sc.erase(cur);
+   --size;
+  }
+#endif
+
+  return s;
+ }
+
+ void remove(const otl_stream_shell_generic* s,const OTL_STRING_CONTAINER& stmtxt)
+ {
+#if defined(OTL_ACE)
+  ace_map_entry* cur=0;
+  int found=sc.find(stmtxt,cur);
+  if(found==-1)
+   return;
+  cache_entry_type& ce=(*cur).item();
+  for(int i=0;i<ce.s.size();++i)
+   if(ce.s[i]==s){
+    if(ce.s.size()>1 && i!=ce.s.size()-1){
+     otl_stream_shell_generic* temp_s=ce.s[i];
+     ce.s[i]=ce.s[ce.s.size()-1];
+     ce.s[ce.s.size()-1]=temp_s;
+    }
+    ce.s.pop_back();
+    --size;
+    return;
+   }
+#else
+  sc_type::iterator cur=sc.find(stmtxt);
+  if(cur==sc.end())
+   return;
+  cache_entry_type& ce=(*cur).second;
+  vec_type::iterator bgn=ce.s.begin();
+  vec_type::iterator end=ce.s.end();
+  for(vec_type::iterator i=bgn;i!=end;++i)
+   if((*i)==s){
+    ce.s.erase(i);
+    --size;
+    return;
+   }
+#endif
+ }
+
+ void add(otl_stream_shell_generic* s,const char* stm_text)
+ {
+  OTL_STRING_CONTAINER stmtxt(stm_text);
+
+#if defined(OTL_ACE)
+
+  ace_map_entry* cur=0;
+  int found_in_map=sc.find(stmtxt,cur);
+  if(found_in_map==0){ // entry found
+   bool found=false;
+   cache_entry_type& ce=(*cur).item();
+   int sz=ce.s.size();
+   for(int i=0;i<sz;++i){
+    if(s==ce.s[i]){
+     found=true;
+     break;
+    }
+   }
+   if(!found)
+     ce.s.push_back(s);
+   ++ce.cnt;
+  }else{ // entry not found
+   if(size<max_size-1){ // add new entry
+    cache_entry_type ce;
+    ce.s.push_back(s);
+    ce.cnt=1;
+    sc.bind(stmtxt,ce);
+    ++size;
+   }else{ // erase the least used entry and add new one
+
+    sc_type::iterator elem0=sc.begin();
+    sc_type::iterator elemN=sc.end();
+    int min_cnt=0;
+    ace_map_entry* min_entry;
+    
+    for(sc_type::iterator i=elem0;i!=elemN;++i){
+     if(i==elem0){ // first element
+      min_entry=&(*i);
+      min_cnt=(*i).item().cnt;
+     }
+     if(min_cnt>(*i).item().cnt){ // found less used entry
+      min_entry=&(*i);
+      min_cnt=(*i).item().cnt;
+     }
+    }
+    cache_entry_type& me=(*min_entry).item();
+    int sz=me.s.size();
+    for(int n=0;n<sz;++n){
+     me.s[n]->should_delete=1;
+     me.s[n]->close();
+     delete me.s[n];
+    }
+    me.s.clear();
+    sc.unbind(min_entry);
+    cache_entry_type ce;
+    ce.cnt=1;
+    ce.s.push_back(s);
+    sc.bind(stmtxt,ce);
+   }
+  }
+
+#else
+
+  sc_type::iterator cur=sc.find(stmtxt);
+
+  if(cur!=sc.end()){ // entry found
+   bool found=false;
+   cache_entry_type& ce=(*cur).second;
+   size_t sz=ce.s.size();
+   for(size_t i=0;i<sz;++i){
+    if(s==ce.s[i]){
+     found=true;
+     break;
+    }
+   }
+   if(!found)ce.s.push_back(s);
+   ++ce.cnt;
+  }else{ // entry not found
+   if(size<max_size-1){ // add new entry
+    cache_entry_type ce;
+    ce.s.push_back(s);
+    ce.cnt=1;
+    sc[stmtxt]=ce;
+    ++size;
+   }else{ // erase the least used entry and add new one
+
+    sc_type::iterator elem0=sc.begin();
+    sc_type::iterator elemN=sc.end();
+    int min_cnt=0;
+    sc_type::iterator min_entry;
+    
+    for(sc_type::iterator i=elem0;i!=elemN;++i){
+     if(i==elem0){ // first element
+      min_entry=i;
+      min_cnt=(*i).second.cnt;
+     }
+     if(min_cnt>(*i).second.cnt){ // found less used entry
+      min_entry=i;
+      min_cnt=(*i).second.cnt;
+     }
+    }
+    cache_entry_type& me=(*min_entry).second;
+    size_t sz=me.s.size();
+    for(size_t n=0;n<sz;++n){
+     me.s[n]->should_delete=1;
+     otl_stream_shell_generic* tmp=me.s[n];
+     delete tmp;
+     //     delete me.s[n];
+    }
+    me.s.clear();
+    sc.erase(min_entry);
+    cache_entry_type ce;
+    ce.cnt=1;
+    ce.s.push_back(s);
+    sc[stmtxt]=ce;
+   }
+  }
+#endif
+ }
+ 
+ virtual ~otl_stream_pool()
+ {
+  init();
+ }
+ 
+};
+
+#endif
+
+
+// =========================== COMMON TEMPLATES  ============================
+
+
+#if (defined(OTL_STL)||defined(OTL_VALUE_TEMPLATE_ON)) && defined(OTL_VALUE_TEMPLATE)
+
+template <OTL_TYPE_NAME TData>
+class otl_value{
+public:
+
+ TData v;
+ bool ind;
+
+ otl_value(){ind=true;}
+ virtual ~otl_value(){}
+
+ otl_value(const otl_value<TData>& var)
+ {
+  v=var.v;
+  ind=var.ind;
+ }
+
+ otl_value(const TData& var)
+ {
+  v=var;
+  ind=false;
+ }
+
+ otl_value(const otl_null&)
+ {
+  ind=true;
+ }
+
+ otl_value<TData>& operator=(const otl_value<TData>& var)
+ {
+  v=var.v;
+  ind=var.ind;
+  return *this;
+ }
+
+ otl_value<TData>& operator=(const TData& var)
+ {
+  v=var;
+  ind=false;
+  return *this;
+ }
+
+ otl_value<TData>& operator=(const otl_null&)
+ {
+  ind=true;
+  return *this;
+ }
+
+ bool is_null(void)const {return ind;}
+ void set_null(void){ind=true;}
+ void set_non_null(void){ind=false;}
+
+};
+
+template <OTL_TYPE_NAME TData>
+STD_NAMESPACE_PREFIX ostream& operator<<
+  (STD_NAMESPACE_PREFIX ostream& s, 
+   const otl_value<TData>& var)
+{
+ if(var.ind)
+  s<<"NULL";
+ else
+  s<<var.v;
+ return s;
+}
+
+inline STD_NAMESPACE_PREFIX ostream& operator<<(
+ STD_NAMESPACE_PREFIX ostream& s, 
+ const otl_value<otl_datetime>& var)
+{
+ if(var.ind)
+   s<<"NULL";
+ else{
+   s<<var.v.month<<"/"<<var.v.day<<"/"<<var.v.year<<" "
+    <<var.v.hour<<":"<<var.v.minute<<":"<<var.v.second;
+ }
+ return s;
+}
+
+#endif
+
+template <OTL_TYPE_NAME T>
+class otl_auto_array_ptr{
+public:
+  
+  T* ptr;
+  int arr_size_;
+  
+  otl_auto_array_ptr()
+  {
+    ptr=0;
+    arr_size_=0;
+  }
+  
+  otl_auto_array_ptr(const int arr_size)
+  {
+    ptr=new T[arr_size];
+    arr_size_=arr_size;
+  }
+  
+  void double_size(void)
+  {
+    int old_arr_size=arr_size_;
+    arr_size_*=2;
+    T* temp_ptr=new T[arr_size_];
+    for(int i=0;i<old_arr_size;++i)
+      temp_ptr[i]=ptr[i];
+    delete[] ptr;
+    ptr=temp_ptr;
+  }
+  
+  virtual ~otl_auto_array_ptr()
+  {
+    delete[] ptr;
+  }
+
+};
+
+template <OTL_TYPE_NAME T>
+class otl_ptr{
+public:
+
+ T** ptr;
+ int arr_flag;
+
+ otl_ptr()
+ {
+  ptr=0;
+  arr_flag=0;
+ }
+
+ void assign(T** var)
+ {
+  ptr=var;
+  arr_flag=0;
+ }
+
+ void assign_array(T** var)
+ {
+  ptr=var;
+  arr_flag=1;
+ }
+
+
+ void disconnect(void)
+ {
+  if(ptr!=0)
+   *ptr=0;
+  ptr=0;
+ }
+
+ void destroy(void)
+ {
+  if(ptr==0)return;
+  if(*ptr!=0){
+   if(arr_flag)
+    delete[] *ptr;
+   else
+    delete *ptr;
+   *ptr=0;
+  }
+ }
+
+ ~otl_ptr()
+ {
+  destroy();
+ }
+
+};
+
+template <OTL_TYPE_NAME T>
+class otl_Tptr{
+public:
+
+  T* ptr;
+  
+  bool do_not_destroy;
+  
+  otl_Tptr()
+  {
+    ptr=0;
+    do_not_destroy=false;
+  }
+  
+  void assign(T* var)
+  {
+    ptr=var;
+ }
+  
+  void disconnect(void)
+  {
+    ptr=0;
+  }
+  
+  void destroy(void)
+  {
+    if(do_not_destroy)
+      return;
+    delete ptr;
+    ptr=0;
+ }
+  
+  ~otl_Tptr()
+  {
+    destroy();
+  }
+
+};
+
+
+template <OTL_TYPE_NAME OTLStream,
+          OTL_TYPE_NAME OTLConnect,
+          OTL_TYPE_NAME otl_exception>
+class otl_tmpl_nocommit_stream: public OTLStream{
+public:
+
+ otl_tmpl_nocommit_stream() OTL_NO_THROW
+   : OTLStream()
+ {
+  OTLStream::set_commit(0);
+ }
+
+ otl_tmpl_nocommit_stream
+ (const otl_stream_buffer_size_type arr_size, 
+  const char* sqlstm,
+  OTLConnect& pdb,
+  const char* ref_cur_placeholder=0)
+   OTL_THROWS_OTL_EXCEPTION
+  : OTLStream(arr_size,sqlstm,pdb,ref_cur_placeholder)
+ {
+  OTLStream::set_commit(0);
+ }
+
+ void open
+ (otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  OTLConnect& db,
+  const char* ref_cur_placeholder=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  OTLStream::open(arr_size,sqlstm,db,ref_cur_placeholder);
+  OTLStream::set_commit(0);
+ }
+
+};
+
+#if defined(OTL_STL)
+
+class otl_pl_vec_generic{
+public:
+
+ typedef STD_NAMESPACE_PREFIX vector<bool> null_flag_type;
+
+ void* p_v;
+ null_flag_type null_flag;
+ int vtype;
+ int elem_size;
+
+ otl_pl_vec_generic()
+ {
+  p_v=0;
+  vtype=0;
+  elem_size=0;
+ }
+
+ virtual int len(void) const
+ {
+  return 0;
+ }
+
+  virtual void set_len(const int /*new_len*/=0,
+                       const bool /*set_all_to_null*/=true)
+
+ {
+   
+ }
+
+ bool is_null(const int ndx=0)
+ {
+  return null_flag[ndx];
+ }
+
+ void set_null(const int ndx=0)
+ {
+  null_flag[ndx]=true;
+ }
+
+ void set_non_null(const int ndx=0)
+ {
+  null_flag[ndx]=false;
+ }
+
+ virtual ~otl_pl_vec_generic(){}
+
+};
+
+template<OTL_TYPE_NAME T,const int type_code,const int T_sz>
+class otl_T_vec: public otl_pl_vec_generic{
+public:
+
+ STD_NAMESPACE_PREFIX vector<T> v;
+
+ otl_T_vec()
+ {
+  this->p_v=OTL_RCAST(void*,&v);
+  this->vtype=type_code;
+  this->elem_size=T_sz;
+ }
+
+ virtual ~otl_T_vec(){}
+
+ virtual void set_len
+   (const int new_len=0,
+    const bool set_all_to_null=true)
+ {int i,vsize;
+
+  v.resize(new_len);
+  this->null_flag.resize(new_len);
+  vsize=OTL_SCAST(int,v.size());
+  if(set_all_to_null)
+    for(i=0;i<vsize;++i)
+      this->null_flag[i]=true;
+ }
+
+ virtual int len(void) const
+ {
+  return OTL_SCAST(int,v.size());
+ }
+
+ T& operator[](int ndx)
+ {
+  return v[ndx];
+ }
+
+};
+
+typedef otl_T_vec<double,otl_var_double,sizeof(double)> otl_double_vec;
+typedef otl_T_vec<float,otl_var_float,sizeof(float)> otl_float_vec;
+typedef otl_T_vec<int,otl_var_int,sizeof(int)> otl_int_vec;
+typedef otl_T_vec<short,otl_var_short,sizeof(short)> otl_short_vec;
+typedef otl_T_vec<long,otl_var_long_int,sizeof(long)> otl_long_int_vec;
+typedef otl_T_vec<otl_datetime,otl_var_timestamp,
+                  sizeof(otl_oracle_date)> otl_datetime_vec;
+typedef otl_T_vec<OTL_STRING_CONTAINER,otl_var_char,1> otl_string_vec;
+
+#endif
+
+template <OTL_TYPE_NAME T,const int atab_size,const int avtype>
+class otl_tmpl_pl_tab: public otl_pl_tab_generic{
+public:
+ T v[atab_size];
+ short null_flag[atab_size];
+
+ void init(void)
+ {int i;
+  tab_len=0;
+  vtype=avtype;
+  tab_size=atab_size;
+  p_null=null_flag;
+  p_v=OTL_RCAST(unsigned char*,v);
+  elem_size=sizeof(T);
+  for(i=0;i<atab_size;++i)
+   null_flag[i]=0;
+  memset(v,0,sizeof(v));
+ }
+
+ otl_tmpl_pl_tab()
+ {
+  init();
+ }
+
+ virtual ~otl_tmpl_pl_tab(){}
+
+};
+
+template <const int atab_size>
+class otl_int_tab: public otl_tmpl_pl_tab<int,atab_size,otl_var_int>{
+public:
+ otl_int_tab():otl_tmpl_pl_tab<int,atab_size,otl_var_int>(){}
+};
+
+template <const int atab_size>
+class otl_double_tab: public otl_tmpl_pl_tab<double,atab_size,otl_var_double>{
+public:
+ otl_double_tab():otl_tmpl_pl_tab<double,atab_size,otl_var_double>(){}
+};
+
+template <const int atab_size>
+class otl_float_tab: public otl_tmpl_pl_tab<float,atab_size,otl_var_float>{
+public:
+ otl_float_tab():otl_tmpl_pl_tab<float,atab_size,otl_var_float>(){}
+};
+
+template <const int atab_size>
+class otl_unsigned_tab: public otl_tmpl_pl_tab<unsigned,atab_size,otl_var_unsigned_int>{
+public:
+ otl_unsigned_tab():otl_tmpl_pl_tab<unsigned,atab_size,otl_var_unsigned_int>(){}
+};
+
+template <const int atab_size>
+class otl_short_tab: public otl_tmpl_pl_tab<short,atab_size,otl_var_short>{
+public:
+ otl_short_tab():otl_tmpl_pl_tab<short,atab_size,otl_var_short>(){}
+};
+
+template <const int atab_size>
+class otl_long_int_tab: public otl_tmpl_pl_tab<long,atab_size,otl_var_long_int>{
+public:
+ otl_long_int_tab():otl_tmpl_pl_tab<long,atab_size,otl_var_long_int>(){}
+};
+
+template <const int atab_size,const int str_size>
+class otl_cstr_tab: public otl_pl_tab_generic{
+public:
+ typedef unsigned char T[str_size];
+ T v[atab_size];
+ short null_flag[atab_size];
+
+ void init(void)
+ {int i;
+  tab_len=0;
+  vtype=otl_var_char;
+  tab_size=atab_size;
+  p_null=null_flag;
+  p_v=OTL_RCAST(unsigned char*,v);
+  elem_size=sizeof(T);
+  for(i=0;i<atab_size;++i)
+   null_flag[i]=0;
+  memset(v,0,sizeof(v));
+ }
+
+ otl_cstr_tab()
+ {
+  init();
+ }
+
+ virtual ~otl_cstr_tab(){}
+
+};
+
+template <const int atab_size>
+class otl_datetime_tab: public otl_pl_tab_generic{
+public:
+
+ typedef otl_datetime T;
+
+ T v[atab_size];
+ short null_flag[atab_size];
+
+ void init(void)
+ {int i;
+  tab_len=0;
+  vtype=otl_var_timestamp;
+  tab_size=atab_size;
+  p_null=null_flag;
+  p_v=OTL_RCAST(unsigned char*,v);
+  elem_size=sizeof(otl_oracle_date);
+  for(i=0;i<atab_size;++i)
+   null_flag[i]=0;
+ }
+
+ otl_datetime_tab()
+ {
+  init();
+ }
+
+ virtual ~otl_datetime_tab(){}
+
+};
+
+template <OTL_TYPE_NAME T,const int avtype>
+class otl_tmpl_dyn_pl_tab: public otl_pl_tab_generic{
+public:
+ T* v;
+ short* null_flag;
+
+ void init(const int atab_size=1)
+ {int i;
+  tab_len=0;
+  vtype=avtype;
+  tab_size=atab_size;
+  v=new T[tab_size];
+  null_flag=new short[tab_size];
+  p_null=null_flag;
+  p_v=OTL_RCAST(unsigned char*,v);
+  elem_size=sizeof(T);
+  for(i=0;i<atab_size;++i)
+   null_flag[i]=0;
+  memset(v,0,elem_size*tab_size);
+ }
+
+ otl_tmpl_dyn_pl_tab(const int atab_size=1)
+ {
+  v=0;
+  null_flag=0;
+  init(atab_size);
+ }
+
+ virtual ~otl_tmpl_dyn_pl_tab()
+ {
+  delete[] v;
+  delete[] null_flag;
+ }
+
+};
+
+class otl_dynamic_int_tab: public otl_tmpl_dyn_pl_tab<int,otl_var_int>{
+public:
+ otl_dynamic_int_tab(const int atab_size=1)
+  :otl_tmpl_dyn_pl_tab<int,otl_var_int>(atab_size){}
+};
+
+class otl_dynamic_double_tab: public otl_tmpl_dyn_pl_tab<double,otl_var_double>{
+public:
+ otl_dynamic_double_tab(const int atab_size=1)
+  :otl_tmpl_dyn_pl_tab<double,otl_var_double>(atab_size){}
+};
+
+class otl_dynamic_float_tab: public otl_tmpl_dyn_pl_tab<float,otl_var_float>{
+public:
+ otl_dynamic_float_tab(const int atab_size=1)
+  :otl_tmpl_dyn_pl_tab<float,otl_var_float>(atab_size){}
+};
+
+class otl_dynamic_unsigned_tab: public
+otl_tmpl_dyn_pl_tab<unsigned,otl_var_unsigned_int>{
+public:
+ otl_dynamic_unsigned_tab(const int atab_size=1)
+  :otl_tmpl_dyn_pl_tab<unsigned,otl_var_unsigned_int>(atab_size){}
+};
+
+class otl_dynamic_short_tab: public otl_tmpl_dyn_pl_tab<short,otl_var_short>{
+public:
+ otl_dynamic_short_tab(const int atab_size=1)
+  :otl_tmpl_dyn_pl_tab<short,otl_var_short>(atab_size){}
+};
+
+class otl_dynamic_long_int_tab: public otl_tmpl_dyn_pl_tab<long,otl_var_long_int>{
+public:
+ otl_dynamic_long_int_tab(const int atab_size=1)
+  :otl_tmpl_dyn_pl_tab<long,otl_var_long_int>(atab_size){}
+};
+
+template <const int str_size>
+class otl_dynamic_cstr_tab: public otl_pl_tab_generic{
+public:
+ typedef unsigned char T[str_size];
+ T* v;
+ short* null_flag;
+
+ void init(const int atab_size=1)
+ {int i;
+  tab_len=0;
+  vtype=otl_var_char;
+  tab_size=atab_size;
+  v=new T[tab_size];
+  null_flag=new short[tab_size];
+  p_null=null_flag;
+  p_v=OTL_RCAST(unsigned char*,v);
+  elem_size=sizeof(T);
+  for(i=0;i<atab_size;++i)
+   null_flag[i]=0;
+  memset(v,0,elem_size*tab_size);
+ }
+
+ otl_dynamic_cstr_tab(const int atab_size=1)
+ {
+  v=0;
+  null_flag=0;
+  init(atab_size);
+ }
+
+ virtual ~otl_dynamic_cstr_tab()
+ {
+  delete[] v;
+  delete[] null_flag;
+ }
+
+};
+
+class otl_dynamic_datetime_tab: public otl_pl_tab_generic{
+public:
+
+ typedef otl_datetime T;
+
+ T* v;
+ short* null_flag;
+
+ void init(const int atab_size=1)
+ {int i;
+  tab_len=0;
+  vtype=otl_var_timestamp;
+  tab_size=atab_size;
+  v=new T[tab_size];
+  null_flag=new short[tab_size];
+  p_null=null_flag;
+  p_v=OTL_RCAST(unsigned char*,v);
+  elem_size=sizeof(otl_oracle_date);
+  for(i=0;i<atab_size;++i)
+   null_flag[i]=0;
+ }
+
+ otl_dynamic_datetime_tab(const int atab_size=1)
+ {
+  v=0;
+  null_flag=0;
+  init(atab_size);
+ }
+
+ virtual ~otl_dynamic_datetime_tab()
+ {
+  delete[] v;
+  delete[] null_flag;
+ }
+
+};
+
+
+#define OTL_TMPL_EXCEPTION   \
+  otl_tmpl_exception         \
+    <TExceptionStruct,       \
+     TConnectStruct,         \
+     TCursorStruct>
+
+#define OTL_TMPL_CONNECT  \
+  otl_tmpl_connect        \
+   <TExceptionStruct,     \
+    TConnectStruct,       \
+    TCursorStruct>
+
+#define OTL_TMPL_CURSOR                   \
+    otl_tmpl_cursor                       \
+   <TExceptionStruct,TConnectStruct,      \
+    TCursorStruct,TVariableStruct>      
+
+#define OTL_TMPL_OUT_STREAM            \
+  otl_tmpl_out_stream                  \
+   <TExceptionStruct,TConnectStruct,   \
+    TCursorStruct,TVariableStruct,     \
+    TTimestampStruct>
+
+#define OTL_TMPL_SELECT_CURSOR                          \
+ otl_tmpl_select_cursor                                 \
+  <TExceptionStruct,TConnectStruct,                     \
+   TCursorStruct,TVariableStruct,TSelectCursorStruct>
+
+#define OTL_TMPL_INOUT_STREAM             \
+  otl_tmpl_inout_stream                   \
+   <TExceptionStruct,TConnectStruct,      \
+    TCursorStruct,TVariableStruct,        \
+    TTimestampStruct>
+
+#define OTL_TMPL_SELECT_STREAM                      \
+ otl_tmpl_select_stream                             \
+   <TExceptionStruct,TConnectStruct,TCursorStruct,  \
+    TVariableStruct,TSelectCursorStruct,            \
+    TTimestampStruct>
+
+template <OTL_TYPE_NAME TExceptionStruct,
+          OTL_TYPE_NAME TConnectStruct,
+          OTL_TYPE_NAME TCursorStruct>
+#if defined(OTL_EXCEPTION_DERIVED_FROM)
+class otl_tmpl_exception: 
+  public OTL_EXCEPTION_DERIVED_FROM,
+  public TExceptionStruct{
+#else
+class otl_tmpl_exception: public TExceptionStruct{
+#endif
+public:
+
+#if defined(OTL_EXCEPTION_HAS_MEMBERS)
+  OTL_EXCEPTION_HAS_MEMBERS
+#endif
+
+#if defined(OTL_EXCEPTION_STM_TEXT_SIZE)
+  char stm_text[OTL_EXCEPTION_STM_TEXT_SIZE];
+#else
+  char stm_text[2048];
+#endif
+  char var_info[256];
+
+  otl_tmpl_exception() 
+#if defined(__GNUC__) && (__GNUC__>=3)
+    throw()
+#else
+    OTL_NO_THROW
+#endif
+ {
+  stm_text[0]=0;
+  var_info[0]=0;
+ }
+
+ otl_tmpl_exception(TConnectStruct& conn_struct, const char* sqlstm=0)
+#if defined(__GNUC__) && (__GNUC__>=3)
+    throw()
+#else
+    OTL_NO_THROW
+#endif
+ {
+  stm_text[0]=0;
+  var_info[0]=0;
+  if(sqlstm){
+   OTL_STRNCPY_S(OTL_RCAST(char*,stm_text),
+                 sizeof(stm_text),
+                 sqlstm,
+                 sizeof(stm_text)-1);
+   stm_text[sizeof(stm_text)-1]=0;
+  }
+  conn_struct.error(OTL_SCAST(TExceptionStruct&,*this));
+  OTL_TRACE_EXCEPTION(this->code,this->msg,this->stm_text,this->var_info)
+ }
+
+ otl_tmpl_exception(TCursorStruct& cursor_struct, const char* sqlstm=0)
+#if defined(__GNUC__) && (__GNUC__>=3)
+    throw()
+#else
+    OTL_NO_THROW
+#endif
+ {
+  stm_text[0]=0;
+  var_info[0]=0;
+  if(sqlstm){
+   OTL_STRNCPY_S(OTL_RCAST(char*,stm_text),
+                 sizeof(stm_text),
+                 sqlstm,
+                 sizeof(stm_text)-1);
+   stm_text[sizeof(stm_text)-1]=0;
+  }
+  cursor_struct.error(OTL_SCAST(TExceptionStruct&,*this));
+  OTL_TRACE_EXCEPTION(this->code,this->msg,this->stm_text,this->var_info)
+ }
+
+ otl_tmpl_exception
+ (const char* amsg,
+  const int acode,
+  const char* sqlstm=0,
+  const char* varinfo=0)
+#if defined(__GNUC__) && (__GNUC__>=3)
+    throw()
+#else
+    OTL_NO_THROW
+#endif
+ {
+  stm_text[0]=0;
+  var_info[0]=0;
+  if(sqlstm){
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+    OTL_STRCPY_S(OTL_RCAST(char*,stm_text),sizeof(stm_text),sqlstm);
+#else
+    strncpy(OTL_RCAST(char*,stm_text),sqlstm,sizeof(stm_text));
+    stm_text[sizeof(stm_text)-1]=0;
+#endif
+#else
+    strncpy(OTL_RCAST(char*,stm_text),sqlstm,sizeof(stm_text));
+    stm_text[sizeof(stm_text)-1]=0;
+#endif
+  }
+  if(varinfo)
+    OTL_STRCPY_S(OTL_RCAST(char*,var_info),sizeof(var_info),varinfo);
+  TExceptionStruct::init(amsg,acode);
+  OTL_TRACE_EXCEPTION(this->code,this->msg,this->stm_text,this->var_info)
+ }
+
+ virtual ~otl_tmpl_exception() 
+#if defined(__GNUC__) && (__GNUC__>=3)
+    throw()
+#else
+    OTL_NO_THROW
+#endif
+ {
+ }
+
+};
+
+template <OTL_TYPE_NAME TExceptionStruct,
+          OTL_TYPE_NAME TConnectStruct,
+          OTL_TYPE_NAME TCursorStruct>
+class otl_tmpl_connect{
+public:
+
+ int connected;
+ TConnectStruct connect_struct;
+ int long_max_size;
+ int retcode;
+ int throw_count;
+
+ void set_max_long_size(const int amax_size)
+ {
+  reset_throw_count();
+#if defined(OTL_UNICODE)
+#if defined(OTL_ORA8I)||defined(OTL_ORA9I)||defined(OTL_ORA10G)||defined(OTL_ORA10G_R2)
+  long_max_size=amax_size*sizeof(OTL_WCHAR);
+#else
+  long_max_size=amax_size;
+#endif
+#else
+  long_max_size=amax_size;
+#endif
+ }
+
+ int get_max_long_size(void)
+ {
+  reset_throw_count();
+  return long_max_size;
+ }
+
+ void set_timeout(const int atimeout=0)
+ {
+  reset_throw_count();
+  connect_struct.set_timeout(atimeout);
+ }
+
+ void set_cursor_type(const int acursor_type=0)
+ {
+  reset_throw_count();
+  connect_struct.set_cursor_type(acursor_type);
+ }
+
+ void reset_throw_count(void)
+ {
+  throw_count=0;
+ }
+
+ otl_tmpl_connect()
+ {
+  throw_count=0;
+  connected=0;
+  long_max_size=32760;
+  retcode=1;
+ }
+
+ otl_tmpl_connect(const char* connect_str,const int auto_commit=0)
+ {
+  connected=0;
+  throw_count=0;
+  retcode=1;
+  long_max_size=32760;
+  rlogon(connect_str,auto_commit);
+ }
+
+ virtual ~otl_tmpl_connect()
+ {
+  logoff();
+ }
+
+ static int otl_initialize(const int threaded_mode=0)
+ {
+  return TConnectStruct::initialize(threaded_mode);
+ }
+
+ void rlogon(const char* connect_str,const int auto_commit=0)
+ {
+  throw_count=0;
+  retcode=connect_struct.rlogon(connect_str,auto_commit);
+  if(retcode)
+   connected=1;
+  else{
+   connected=0;
+   ++throw_count;
+  if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw OTL_TMPL_EXCEPTION(connect_struct);
+  }
+ }
+
+ void logoff(void)
+ {
+  if(!connected)return;
+  OTL_TRACE_FUNC(0x1,"otl_connect","logoff","")
+  retcode=connect_struct.logoff();
+  connected=0;
+  if(retcode)return;
+  if(throw_count>0)
+   return;
+  ++throw_count;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return; 
+#endif
+  throw OTL_TMPL_EXCEPTION(connect_struct);
+ }
+
+ void commit(void)
+ {
+  if(!connected)return;
+  OTL_TRACE_FUNC(0x1,"otl_connect","commit","")
+  reset_throw_count();
+  retcode=connect_struct.commit();
+  if(retcode)return;
+  ++throw_count;
+  if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return; 
+#endif
+  throw OTL_TMPL_EXCEPTION(connect_struct);
+ }
+
+ void auto_commit_on(void)
+ {
+  if(!connected)return;
+  OTL_TRACE_FUNC(0x1,"otl_connect","auto_commit_on","")
+  reset_throw_count();
+  retcode=connect_struct.auto_commit_on();
+  if(retcode)return;
+  ++throw_count;
+  if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return; 
+#endif
+  throw OTL_TMPL_EXCEPTION(connect_struct);
+ }
+
+ void auto_commit_off(void)
+ {
+  if(!connected)return;
+  OTL_TRACE_FUNC(0x1,"otl_connect","auto_commit_off","")
+  reset_throw_count();
+  retcode=connect_struct.auto_commit_off();
+  if(retcode)return;
+  ++throw_count;
+  if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return; 
+#endif
+  throw OTL_TMPL_EXCEPTION(connect_struct);
+ }
+
+ void rollback(void)
+ {
+  if(!connected)return;
+  OTL_TRACE_FUNC(0x1,"otl_connect","rollback","")
+  reset_throw_count();
+  retcode=connect_struct.rollback();
+  if(retcode)return;
+  ++throw_count;
+  if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return; 
+#endif
+  throw OTL_TMPL_EXCEPTION(connect_struct);
+ }
+
+};
+
+template <OTL_TYPE_NAME TVariableStruct>
+class otl_tmpl_variable{
+public:
+
+ int param_type;
+ int ftype;
+ int elem_size;
+ int array_size;
+ char* name;
+ int pos;
+ int name_pos;
+ int bound;
+
+ int pl_tab_flag;
+
+ TVariableStruct var_struct;
+
+
+ int actual_elem_size(void)
+ {
+  return var_struct.actual_elem_size();
+ }
+
+ void copy_var_desc(otl_var_desc& v)
+ {
+  v.param_type=param_type;
+  v.ftype=ftype;
+  v.elem_size=elem_size;
+  v.array_size=array_size;
+  v.pos=pos;
+  v.name_pos=name_pos;
+  if(name){
+   OTL_STRNCPY_S(v.name,sizeof(v.name),name,sizeof(v.name)-1);
+   v.name[sizeof(v.name)-1]=0;
+  }else
+   v.name[0]=0;
+  v.pl_tab_flag=pl_tab_flag;
+ }
+
+ otl_tmpl_variable()
+ {
+  name=0;
+  pos=0;
+  name_pos=0;
+  pl_tab_flag=0;
+  bound=0;
+  param_type=otl_input_param;
+ }
+
+ virtual ~otl_tmpl_variable()
+ {
+  delete[] name;
+ }
+
+ otl_tmpl_variable
+ (const int column_num,
+  const int aftype,
+  const int aelem_size,
+  const short aarray_size)
+ {
+  copy_pos(column_num);
+  init(aftype,aelem_size,aarray_size);
+ }
+
+ otl_tmpl_variable
+ (const char* aname,
+  const int aftype,
+  const int aelem_size,
+  const short aarray_size,
+  const int apl_tab_flag=0)
+ {
+  copy_name(aname);
+  init
+   (aftype,
+    aelem_size,
+    aarray_size,
+    0,
+    apl_tab_flag);
+ }
+
+ void init
+ (const int aftype,
+  const int aelem_size,
+  const otl_stream_buffer_size_type aarray_size,
+  const void* connect_struct=0,
+  const int apl_tab_flag=0)
+ {
+  ftype=aftype;
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+  if(ftype==otl_var_nchar)
+    ftype=otl_var_char;
+  else if(ftype==otl_var_nclob)
+    ftype=otl_var_clob;
+#endif
+  elem_size=aelem_size;
+  array_size=aarray_size;
+  pl_tab_flag=apl_tab_flag;
+  bound=0;
+  var_struct.init(aftype,elem_size,aarray_size,connect_struct,pl_tab_flag);
+ }
+
+ void set_param_type(const int aparam_type=otl_input_param)
+ {
+  param_type=aparam_type;
+ }
+
+ int get_param_type(void)
+ {
+  return param_type;
+ }
+
+ void copy_name(const char* aname)
+ {
+  pos=0;
+  if(name==aname)return;
+  if(name)delete[] name;
+  size_t len=strlen(aname)+1;
+  name=new char[len];
+  OTL_STRCPY_S(name,len,aname);
+ }
+
+ void copy_pos(const int apos)
+ {
+  if(name){
+   delete[] name;
+   name=0;
+   name_pos=0;
+  }
+  pos=apos;
+ }
+
+  
+ void set_null(int ndx)
+ {
+  var_struct.set_null(ndx);
+ }
+
+ void set_not_null(int ndx)
+ {
+  var_struct.set_not_null(ndx,elem_size);
+ }
+
+  void bulk_set_not_null(int aarray_size)
+  {
+    var_struct.bulk_set_not_null(elem_size,aarray_size);
+  }
+
+  void set_len(int len, int ndx=0)
+  {
+    var_struct.set_len(len,ndx);
+  }
+  
+ int get_len(int ndx=0)
+ {
+  return var_struct.get_len(ndx);
+ }
+
+ int get_pl_tab_len(void)
+ {
+  return this->var_struct.get_pl_tab_len();
+ }
+
+ int get_max_pl_tab_len(void)
+ {
+  return this->var_struct.get_max_pl_tab_len();
+ }
+
+ void set_pl_tab_len(const int pl_tab_len)
+ {
+  this->var_struct.set_pl_tab_len(pl_tab_len);
+ }
+
+ int is_null(int ndx)
+ {
+  return var_struct.is_null(ndx);
+ }
+
+ void* val(int ndx=0)
+ {
+  return var_struct.val(ndx,elem_size);
+ }
+
+ static void map_ftype
+ (otl_column_desc& desc,
+  const int max_long_size,
+  int& aftype,
+  int& aelem_size,
+  otl_select_struct_override& override,
+  const int column_ndx)
+ {
+  TVariableStruct::map_ftype
+    (desc,
+     max_long_size,
+     aftype,
+     aelem_size,
+     override,
+     column_ndx);
+ }
+
+ static int int2ext(int int_type)
+ {
+   return TVariableStruct::int2ext(int_type);
+ }
+
+};
+
+template <OTL_TYPE_NAME TExceptionStruct,
+          OTL_TYPE_NAME TConnectStruct,
+          OTL_TYPE_NAME TCursorStruct,
+          OTL_TYPE_NAME TVariableStruct>
+class otl_tmpl_cursor{
+public:
+
+  int connected;
+  char* stm_text;
+  char*stm_label;
+  
+ TCursorStruct cursor_struct;
+ int vl_len;
+ otl_tmpl_variable<TVariableStruct>** vl;
+ OTL_TMPL_CONNECT* adb;
+ int eof_data;
+ int eof_desc;
+ int retcode;
+ long _rpc;
+ int in_destructor;
+
+ otl_tmpl_cursor()
+ {
+  in_destructor=0;
+  connected=0;
+  stm_label=0;
+  stm_text=0;
+  vl_len=0;
+  vl=0;
+  eof_data=0;
+  eof_desc=0;
+  adb=0;
+  _rpc=0;
+  retcode=1;
+ }
+
+ otl_tmpl_cursor
+ (OTL_TMPL_CONNECT& connect)
+ {
+  in_destructor=0;
+  connected=0;
+  stm_text=0;
+  stm_label=0;
+  vl_len=0;
+  vl=0;
+  eof_data=0;
+  eof_desc=0;
+  retcode=1;
+  _rpc=0;
+  adb=&connect;
+  open(connect);
+ }
+
+ otl_tmpl_cursor
+ (OTL_TMPL_CONNECT& connect,
+  TVariableStruct* var)
+ {
+  in_destructor=0;
+  connected=0;
+  stm_text=0;
+  stm_label=0;
+  vl_len=0;
+  vl=0;
+  eof_data=0;
+  eof_desc=0;
+  retcode=1;
+  _rpc=0;
+  adb=&connect;
+  open(connect,var);
+ }
+
+ virtual ~otl_tmpl_cursor()
+ {
+  in_destructor=1;
+  close();
+  delete[] stm_label;
+  stm_label=0;
+  delete[] stm_text;
+  stm_text=0;
+ }
+
+ void open
+ (OTL_TMPL_CONNECT& connect,
+  TVariableStruct* var=0)
+ {
+  in_destructor=0;
+  eof_data=0;
+  eof_desc=0;
+  retcode=1;
+  adb=&connect;
+  _rpc=0;
+  if(var==0)
+   retcode=cursor_struct.open(connect.connect_struct);
+  else
+   retcode=cursor_struct.open(connect.connect_struct,var);
+  if(retcode){
+   connected=1;
+   return;
+  }
+  if(this->adb)this->adb->throw_count++;
+  if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return; 
+#endif
+  throw OTL_TMPL_EXCEPTION(cursor_struct);
+ }
+
+ virtual void close(void)
+ {_rpc=0;
+  if(!connected)return;
+  if(!this->adb)return;
+  if(!adb->connected){
+   connected=0;
+   adb=0;
+   retcode=1;
+   return;
+  }
+  connected=0;
+  retcode=cursor_struct.close();
+  if(retcode){
+   adb=0;
+   return;
+  }
+  if(this->adb->throw_count>0){
+   adb=0;
+   return;
+  }
+  this->adb->throw_count++;
+  adb=0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return; 
+#endif
+  throw OTL_TMPL_EXCEPTION(cursor_struct);
+ }
+
+ void parse(void)
+ {_rpc=0;
+  if(!connected)return;
+  retcode=cursor_struct.parse(stm_text);
+  switch(retcode){
+  case 0:
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return; 
+#endif
+    throw OTL_TMPL_EXCEPTION(cursor_struct,stm_label?stm_label:stm_text);
+  case 2:
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return; 
+#endif
+    char var_info[1];
+    var_info[0]=0;
+    throw OTL_TMPL_EXCEPTION
+     (otl_error_msg_17,
+      otl_error_code_17,
+      this->stm_label?this->stm_label:this->stm_text,
+      var_info);
+  }
+ }
+
+ void parse(const char* sqlstm)
+ {
+  if(!connected)return;
+  if(stm_text){
+   delete[] stm_text;
+   stm_text=0;
+  }
+  size_t len=strlen(sqlstm)+1;
+  stm_text=new char[len];
+  OTL_STRCPY_S(stm_text,len,sqlstm);
+  parse();
+ }
+
+ long get_rpc()
+ {
+  return _rpc;
+ }
+
+ void exec(const int iters=1,const int rowoff=0)
+ {
+  if(!connected)return;
+  retcode=cursor_struct.exec(iters,rowoff);
+  _rpc=cursor_struct.get_rpc();
+  if(retcode)return;
+  if(this->adb)this->adb->throw_count++;
+  if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return; 
+#endif
+  throw OTL_TMPL_EXCEPTION(cursor_struct,stm_label?stm_label:stm_text);
+ }
+
+  virtual bool valid_binding
+  (const otl_tmpl_variable<TVariableStruct>& v,
+   const int binding_type)
+  {
+    bool rc=true;
+    if((v.ftype==otl_var_varchar_long||v.ftype==otl_var_raw_long) &&
+       (v.var_struct.otl_adapter==otl_ora7_adapter ||
+        v.var_struct.otl_adapter==otl_ora8_adapter) &&
+       v.array_size>1 ||
+       (v.ftype==otl_var_blob||v.ftype==otl_var_clob) &&
+       v.var_struct.otl_adapter==otl_ora8_adapter &&
+       v.array_size>1 && binding_type==otl_inout_binding) 
+      rc=false;
+    return rc;
+  }
+
+ virtual void bind
+ (const char* name,
+  otl_tmpl_variable<TVariableStruct>& v)
+ {
+  if(!connected)return;
+  if(v.bound)return;
+  v.copy_name(name);
+  if(!valid_binding(v,otl_inout_binding)){
+    char var_info[256];
+    otl_var_info_var2
+      (v.name,
+       v.ftype,
+       var_info,
+       sizeof(var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return; 
+#endif
+    throw OTL_TMPL_EXCEPTION
+     (otl_error_msg_16,
+      otl_error_code_16,
+      stm_label?stm_label:stm_text,
+      var_info);
+  }
+  retcode=cursor_struct.bind
+   (name,
+    v.var_struct,
+    v.elem_size,
+    v.ftype,
+    v.param_type,
+    v.name_pos,
+    v.pl_tab_flag);
+  if(retcode){
+   v.bound=1;
+   return;
+  }
+  if(this->adb)this->adb->throw_count++;
+  if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return; 
+#endif
+  throw OTL_TMPL_EXCEPTION(cursor_struct,stm_label?stm_label:stm_text);
+ }
+
+ virtual void bind
+ (const int column_num,
+  otl_tmpl_variable<TVariableStruct>& v)
+ {
+  if(!connected)return;
+  v.copy_pos(column_num);
+  if(!valid_binding(v,otl_select_binding)){
+    char var_info[256];
+    otl_var_info_col2
+      (v.pos,
+       v.ftype,
+       var_info,
+       sizeof(var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return; 
+#endif
+    throw OTL_TMPL_EXCEPTION
+     (otl_error_msg_16,
+      otl_error_code_16,
+      stm_label?stm_label:stm_text,
+      var_info);
+  }
+  retcode=cursor_struct.bind
+   (column_num,
+    v.var_struct,
+    v.elem_size,
+    v.ftype,
+    v.param_type);
+  if(retcode)return;
+  if(this->adb)this->adb->throw_count++;
+  if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return; 
+#endif
+  throw OTL_TMPL_EXCEPTION(cursor_struct,stm_label?stm_label:stm_text);
+ }
+
+ virtual void bind(otl_tmpl_variable<TVariableStruct>& v)
+ {
+  if(!connected)return;
+  if(v.name) bind(v.name,v);
+  if(v.pos) bind(v.pos,v);
+ }
+
+  
+  static long direct_exec
+  (OTL_TMPL_CONNECT& connect,
+   const char* sqlstm,
+   const int exception_enabled=1)
+#if defined(OTL_ANSI_CPP) && defined(OTL_FUNC_THROW_SPEC_ON)
+    throw(OTL_TMPL_EXCEPTION)
+#endif
+  {
+    connect.reset_throw_count();
+    OTL_TRACE_DIRECT_EXEC
+      try{
+        OTL_TMPL_CURSOR cur(connect);
+        cur.cursor_struct.set_direct_exec(1);
+        cur.parse(sqlstm);
+        cur.exec();
+        return cur.cursor_struct.get_rpc();
+      }catch(OTL_CONST_EXCEPTION OTL_TMPL_EXCEPTION&){
+        if(exception_enabled){
+          connect.throw_count++;
+          throw;
+        }
+      }
+    return -1;
+  }
+
+  static void syntax_check
+  (OTL_TMPL_CONNECT& connect,
+   const char* sqlstm)
+#if defined(OTL_ANSI_CPP) && defined(OTL_FUNC_THROW_SPEC_ON)
+    throw(OTL_TMPL_EXCEPTION)
+#endif
+  {
+    connect.reset_throw_count();
+    OTL_TRACE_SYNTAX_CHECK
+    OTL_TMPL_CURSOR cur(connect);
+    cur.cursor_struct.set_direct_exec(1);
+    cur.cursor_struct.set_parse_only(1);
+    cur.parse(sqlstm);
+  }
+  
+ int eof(void){return eof_data;}
+
+ int describe_column
+ (otl_column_desc& col,
+  const int column_num)
+ {
+  if(!connected)return 0;
+  retcode=cursor_struct.describe_column
+   (col,column_num,eof_desc);
+  if(eof_desc)return 0;
+  if(retcode)return 1;
+  if(this->adb)this->adb->throw_count++;
+  if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return 0; 
+#endif
+  throw OTL_TMPL_EXCEPTION(cursor_struct,stm_label?stm_label:stm_text);
+ }
+
+};
+
+inline int is_num(char c)
+{
+  return c>='0' && c<='9';
+}
+
+template <OTL_TYPE_NAME TVariableStruct,
+          OTL_TYPE_NAME TTimestampStruct,
+          OTL_TYPE_NAME TExceptionStruct,
+          OTL_TYPE_NAME TConnectStruct,
+          OTL_TYPE_NAME TCursorStruct>
+class otl_tmpl_ext_hv_decl{
+public:
+
+ enum var_status{
+  in=0,
+  out=1,
+  io=2,
+  def=3
+ };
+
+  char** hv;
+  short* inout;
+  int* pl_tab_size;
+  int array_size;
+  int prev_array_size;
+  short vst[4];
+  int len;
+  char* stm_text_;
+  char* stm_label_;
+  int container_size_;
+
+ otl_tmpl_ext_hv_decl(char* stm,
+                      int arr_size=1,
+                      char* label=0,
+                      otl_select_struct_override** select_override=0,
+                      OTL_TMPL_CONNECT* adb=0)
+  {
+    container_size_=otl_var_list_size;
+    hv=new char*[container_size_];
+    inout=new short[container_size_];
+    pl_tab_size=new int[container_size_];
+
+    int j;
+    array_size=arr_size;
+    prev_array_size=arr_size;
+    stm_text_=stm;
+    stm_label_=label;
+    int i=0;
+    short in_str=0;
+    bool in_comment=false;
+    bool in_one_line_comment=false;
+    char *c=stm;
+    
+    hv[i]=0;
+    while(*c){
+      switch(*c){
+      case '\'':
+        if(!in_comment&&!in_one_line_comment){
+          if(!in_str)
+            in_str=1;
+          else{
+            if(c[1]=='\'')
+              ++c;
+            else
+              in_str=0;
+          }
+        }
+        break;
+      case '/':
+        if(c[1]=='*'&&!in_str){
+          in_comment=true;
+          ++c;
+        }
+        break;
+      case '-':
+        if(c[1]=='-'&&!in_str){
+          in_one_line_comment=true;
+          ++c;
+        }
+        break;
+      case '*':
+        if(c[1]=='/'&&in_comment){
+          in_comment=false;
+          ++c;
+        }      
+        break;
+      case '\n':
+        if(in_one_line_comment)
+          in_one_line_comment=false;
+        break;
+      }
+      if(*c==':' && !in_str && !in_comment && !in_one_line_comment &&
+         (c>stm && *(c-1)!='\\' || c==stm)){
+        char* bind_var_ptr=c;
+        short in_out=def;
+        int apl_tab_size=0;
+        char var[64];
+        char* v=var;
+        *v++=*c++;
+        while(is_id(*c))
+          *v++=*c++;
+        while(otl_isspace(*c)&&*c)
+          ++c;
+        if(*c=='<'){
+          *c=' ';
+          while(*c!='>'&&*c!=','&&*c){
+            *v++=*c;
+            *c++=' ';
+          }
+          if(*c==','){
+            *c++=' ';
+            if(otl_to_upper(*c)=='I'){
+              if(otl_to_upper(c[2])=='O')
+                in_out=io;
+              else
+                in_out=in;
+            }else if(otl_to_upper(*c)=='O')
+              in_out=out;
+            while(*c!='>'&&*c&&(*c!='[' && *c!='('))
+              *c++=' ';
+            if(*c=='[' || *c=='('){
+              char tmp[32];
+              char *t=tmp;
+              *c++=' ';
+              while((*c!=']' && *c!=')')&&*c!='>'&&*c){
+                *t++=*c;
+                *c++=' ';
+              }
+              *t='\0';
+              apl_tab_size=atoi(tmp);
+              while(*c!='>'&&*c)
+                *c++=' ';
+            }
+          }
+          if(*c)*c=' ';
+          *v='\0';
+          if(select_override!=0 && bind_var_ptr[1]=='#'){
+            char* c4=bind_var_ptr+2;
+            char col_num[64];
+            char* col_num_ptr=col_num;
+            while(is_num(*c4) && *c4){
+              *col_num_ptr=*c4;
+              ++col_num_ptr;
+              ++c4;
+            }
+            *col_num_ptr=0;
+            int col_ndx=atoi(col_num);
+            if(col_ndx>0){
+              if(*select_override==0){
+                *select_override=new otl_select_struct_override();
+              }
+              int data_type=otl_var_none;
+              int data_len=0;
+              char name[128];
+              parse_var
+                (adb,
+                 var,
+                 data_type,
+                 data_len,
+                 name);
+              (*select_override)->add_override
+                (col_ndx,
+                 data_type,
+                 data_len);
+            }
+            c4=bind_var_ptr;
+            while(*c4 && *c4!=' '){
+              *c4=' ';
+              ++c4;
+            }
+          }else
+            add_var(i,var,in_out,apl_tab_size);
+        }
+      }
+      if(*c)++c;
+    }
+    for(j=0;j<4;++j)vst[j]=0;
+    i=0;
+    while(hv[i]){
+      switch(inout[i]){
+      case in:
+        ++vst[0];
+        break;
+      case out:
+        ++vst[1];
+        break;
+      case io:
+        ++vst[2];
+        break;
+      case def:
+        ++vst[3];
+        break;
+      }
+      ++i;
+    }
+    len=i;
+ }
+  
+ virtual ~otl_tmpl_ext_hv_decl()
+ {int i;
+  for(i=0;hv[i]!=0;++i)
+   delete[] hv[i];
+  delete[] hv;
+  delete[] inout;
+  delete[] pl_tab_size;
+ }
+
+
+  char* operator[](int ndx){return hv[ndx];}
+  short v_status(int ndx){return inout[ndx];}
+  int is_id(char c){return isalnum(c)||c=='_'||c=='#';}
+
+ int name_comp(char* n1,char* n2)
+ {
+  while(*n1!=' '&&*n1!='\0'&&*n2!=' '&&*n2!='\0'){
+   if(otl_to_upper(*n1)!=otl_to_upper(*n2))return 0;
+   ++n1;
+   ++n2;
+  }
+  if(*n1==' '&&*n2!=' '||*n2==' '&&*n1!=' ')
+   return 0;
+  return 1;
+ }
+
+ void add_var(int &n,char* v,short in_out,int apl_tab_size=0)
+ {int i;
+  for(i=0;i<n;++i)
+   if(name_comp(hv[i],v))
+    return;
+  size_t v_len=strlen(v)+1;
+  hv[n]=new char[v_len];
+  OTL_STRCPY_S(hv[n],v_len,v);
+  inout[n]=in_out;
+  pl_tab_size[n]=apl_tab_size;
+  if(n==container_size_-1){
+    int temp_container_size=container_size_;
+    container_size_*=2;
+    char** temp_hv=new char*[container_size_];
+    short* temp_inout=new short[container_size_];
+    int* temp_pl_tab_size=new int[container_size_];
+    memcpy(temp_hv,hv,sizeof(char*)*temp_container_size);
+    memcpy(temp_inout,inout,sizeof(short)*temp_container_size);
+    memcpy(temp_pl_tab_size,pl_tab_size,sizeof(int)*temp_container_size);
+    delete[] hv;
+    delete[] inout;
+    delete[] pl_tab_size;
+    hv=temp_hv;
+    inout=temp_inout;
+    pl_tab_size=temp_pl_tab_size;
+  }
+  hv[++n]=0;
+  inout[n]=def;
+  pl_tab_size[n]=0;
+ }
+
+ int parse_var
+ (OTL_TMPL_CONNECT* pdb,
+  char* s,
+  int& data_type,
+  int& data_len,
+  char* name)
+ {
+   data_type=otl_var_none;
+   data_len=0;
+#if defined(OTL_BIND_VAR_STRICT_TYPE_CHECKING_ON)
+  char type_arr[256];
+#endif
+  char type=' ';
+  char t2=' ';
+  char t3=' ';
+  char t4=' ';
+  int size=0;
+
+  char *c=name,*c1=s;
+  while(*c1!=' '&&*c1)
+   *c++=*c1++;
+  *c=0;
+  while(*c1==' '&&*c1)
+   ++c1;
+
+#if defined(OTL_BIND_VAR_STRICT_TYPE_CHECKING_ON)
+  char* ct=c1;
+  char* tac=type_arr;
+  size_t ta_len=0;
+  while(*ct && (*ct!='[' && *ct!='(') && ta_len<sizeof(type_arr)){
+    *tac=otl_to_upper(*ct);
+    ++ct;
+    ++tac;
+    ++ta_len;
+  }
+  *tac=0;
+#endif
+  size_t clen=strlen(c1);
+  if(clen>=3){
+    type=otl_to_upper(c1[0]);
+    t2=otl_to_upper(c1[1]);
+    t3=otl_to_upper(c1[2]);
+    t4=otl_to_upper(c1[3]);
+  }
+  if(type=='C'&&t2=='H'||type=='R'&&t2=='A'&&t3=='W'&&(t4=='['||t4=='(')){
+   char tmp[32];
+   char *t=tmp;
+   while((*c1!='[' && *c1!='(')&&*c1)
+    ++c1;
+   ++c1;
+   while((*c1!=']' && *c1!=')')&&*c1)
+    *t++=*c1++;
+   *t=0;
+   size=atoi(tmp);
+#if defined(OTL_ADD_NULL_TERMINATOR_TO_STRING_SIZE)
+   size+=1;
+#endif
+  }
+
+#if defined(OTL_ORA_UNICODE)
+  if(type=='N'&&t2=='C'&&t3=='H'){
+   char tmp[32];
+   char *t=tmp;
+   while((*c1!='[' && *c1!='(')&&*c1)
+    ++c1;
+   ++c1;
+   while((*c1!=']' && *c1!=')')&&*c1)
+    *t++=*c1++;
+   *t=0;
+   size=atoi(tmp);
+#if defined(OTL_ADD_NULL_TERMINATOR_TO_STRING_SIZE)
+   size+=1;
+#endif
+  }
+#endif
+  
+  OTL_CHECK_BIND_VARS
+
+  int rc=1;
+  switch(type){
+  case 'B':
+    if(t2=='L'){
+      data_type=otl_var_blob;
+      if(pdb)
+        data_len=pdb->get_max_long_size();
+      else
+        data_len=0;
+    }
+#if defined(OTL_BIGINT) && (defined(OTL_ODBC)||defined(OTL_DB2_CLI))
+    else if(t2=='I'){
+      data_type=otl_var_bigint;
+      data_len=sizeof(OTL_BIGINT);
+    }
+#elif (defined(OTL_ORA7)||defined(OTL_ORA8)|| \
+       defined(OTL_ORA8I)||defined(OTL_ORA9I)) && \
+       defined(OTL_BIGINT)
+    else if(t2=='I'){
+      data_type=otl_var_char;
+      data_len=otl_bigint_str_size;
+    }
+#endif
+    break;
+  case 'C':
+    if(t2=='H'){
+      data_type=otl_var_char;
+      data_len=size;
+    }else if(t2=='L'){
+      data_type=otl_var_clob;
+      if(pdb)
+        data_len=pdb->get_max_long_size();
+      else
+        data_len=0;
+    }else
+      rc=0;
+    break;
+  case 'D':
+    if(t2=='O'){
+      data_type=otl_var_double;
+      data_len=sizeof(double);
+    }
+    else if(t2=='B'&&t3=='2'){
+      if(t4=='T'){
+        data_type=otl_var_db2time;
+        data_len=sizeof(TTimestampStruct);
+      }
+      else if(t4=='D'){
+        data_type=otl_var_db2date;
+        data_len=sizeof(TTimestampStruct);
+      }else
+        rc=0;
+   }else
+     rc=0;
+   break;
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+  case 'N':
+    if(t2=='C'){
+      if(t3=='L'){
+        data_type=otl_var_nclob;
+        if(pdb)
+          data_len=pdb->get_max_long_size();
+        else
+          data_len=0;
+      }else if(t3=='H'){
+        data_type=otl_var_nchar;
+        data_len=size;
+      }
+    }
+   break;
+#endif
+  case 'F':
+    data_type=otl_var_float;
+    data_len=sizeof(float);
+    break;
+  case 'I':
+    data_type=otl_var_int;
+    data_len=sizeof(int);
+    break;
+  case 'U':
+    data_type=otl_var_unsigned_int;
+    data_len=sizeof(unsigned);
+   break;
+  case 'R':
+    if(t2=='E'&&t3=='F'){
+      data_type=otl_var_refcur;
+      data_len=1;
+    }else if(t2=='A'&&t3=='W'){
+      data_type=otl_var_raw_long;
+      if(pdb)
+        data_len=pdb->get_max_long_size();
+      else
+        data_len=0;
+    }
+    break;
+  case 'S':
+    data_type=otl_var_short;
+    data_len=sizeof(short);
+    break;
+  case 'L':
+    if(t2=='O'&&t3=='N'){
+      data_type=otl_var_long_int;
+      data_len=sizeof(long);
+    }else if(t2=='T'&&t3=='Z'){
+      data_type=otl_var_ltz_timestamp;
+      data_len=sizeof(TTimestampStruct);
+    }else
+      rc=0;
+    break;
+  case 'T':
+    if(t2=='Z'){
+      data_type=otl_var_tz_timestamp;
+      data_len=sizeof(TTimestampStruct);
+    }else if(t2=='I' && t3=='M'){
+      data_type=otl_var_timestamp;
+      data_len=sizeof(TTimestampStruct);
+    }else
+      rc=0;
+    break;
+  case 'V':
+    data_type=otl_var_varchar_long;
+    if(pdb)
+      data_len=pdb->get_max_long_size();
+    else
+      data_len=0;
+   break;
+  default:
+    return 0;
+  }
+  return rc;
+ }
+
+ otl_tmpl_variable<TVariableStruct>* alloc_var
+ (char* s,
+  const int vstat,
+  const int status,
+  OTL_TMPL_CONNECT& adb,
+  const int apl_tab_size=0)
+ {
+   char name[128];
+#if defined(OTL_BIND_VAR_STRICT_TYPE_CHECKING_ON)
+   char type_arr[256];
+#endif
+   char type=' ';
+   char t2=' ';
+   char t3=' ';
+   char t4=' ';
+   char t5=' ';
+   
+   int size=0;
+   
+   char *c=name,*c1=s;
+   while(*c1!=' '&&*c1)
+     *c++=*c1++;
+   *c=0;
+   while(*c1==' '&&*c1)
+     ++c1;
+   
+#if defined(OTL_BIND_VAR_STRICT_TYPE_CHECKING_ON)
+   char* ct=c1;
+   char* tac=type_arr;
+   size_t ta_len=0;
+   while(*ct && (*ct!='[' && *ct!='(') && ta_len<sizeof(type_arr)){
+     *tac=otl_to_upper(*ct);
+     ++ct;
+     ++tac;
+     ++ta_len;
+   }
+   *tac=0;
+#endif
+   size_t clen=strlen(c1);
+   if(clen>=3){
+     type=otl_to_upper(c1[0]);
+     t2=otl_to_upper(c1[1]);
+     t3=otl_to_upper(c1[2]);
+     t4=otl_to_upper(c1[3]);
+   }
+   if(clen>4)
+     t5=otl_to_upper(c1[4]);
+   if(type=='C'&&t2=='H'||type=='R'&&t2=='A'&&t3=='W'&&(t4=='['||t4=='(')){
+     char tmp[32];
+     char *t=tmp;
+     while((*c1!='[' && *c1!='(')&&*c1)
+       ++c1;
+     if(*c1)++c1;
+     while((*c1!=']' && *c1!=')')&&*c1)
+       *t++=*c1++;
+     *t=0;
+     if(*tmp==0)
+       // declaration <char> is invalid
+       return 0;
+     size=atoi(tmp);
+#if defined(OTL_ADD_NULL_TERMINATOR_TO_STRING_SIZE)
+     if(type=='C')size+=1;
+#endif
+     if(size<2)
+       // minimum size of <char[XXX]> should be at 2
+       return 0;
+   }
+   
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+   if(type=='N'&&t2=='C'&&t3=='H'){
+     char tmp[32];
+     char *t=tmp;
+     while((*c1!='[' && *c1!='(')&&*c1)
+       ++c1;
+     if(*c1)++c1;
+     while((*c1!=']' && *c1!=')')&&*c1)
+       *t++=*c1++;
+     *t=0;
+     if(*tmp==0)
+       return 0;
+     size=atoi(tmp);
+#if defined(OTL_ADD_NULL_TERMINATOR_TO_STRING_SIZE)
+     size+=1;
+#endif
+   }
+#endif
+   
+   
+   if(status==in && (vstat==in||vstat==io))
+     ;
+   else if(status==out && (vstat==out||vstat==io||vstat==def))
+     ;
+   else if(status==def)
+     ;
+   else
+     return 0;
+   
+   OTL_CHECK_BIND_VARS
+     
+     int pl_tab_flag=0;
+   
+   if(apl_tab_size){
+     array_size=apl_tab_size;
+     pl_tab_flag=1;
+   }else
+     array_size=prev_array_size;
+   
+   otl_tmpl_variable<TVariableStruct>* v=
+     new otl_tmpl_variable<TVariableStruct>;
+   v->copy_name(name);
+   switch(type){
+   case 'B':
+     if(t2=='L')
+       v->init(otl_var_blob,
+               adb.get_max_long_size(),
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct);
+#if defined(OTL_BIGINT) && (defined(OTL_ODBC)||defined(OTL_DB2_CLI))
+     else if(t2=='I')
+       v->init(otl_var_bigint,sizeof(OTL_BIGINT),
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct,pl_tab_flag);
+#elif (defined(OTL_ORA7)||defined(OTL_ORA8)|| \
+       defined(OTL_ORA8I)||defined(OTL_ORA9I)) && \
+       defined(OTL_BIGINT)
+     else if(t2=='I')
+       v->init(otl_var_char,
+               otl_bigint_str_size,
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct,
+               pl_tab_flag);
+#endif
+     break;
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+   case 'N':
+     if(t2=='C' && (t3=='L'||t3=='H')){
+       if(t3=='L'){
+         v->init(otl_var_nclob,
+                 adb.get_max_long_size(),
+                 OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+                 &adb.connect_struct);
+         v->ftype=otl_var_clob;
+       }else if(t3=='H'){
+         v->init(otl_var_nchar,
+                 size,
+                 OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+                 &adb.connect_struct,pl_tab_flag);
+         v->ftype=otl_var_char;
+       }
+     }else{
+       delete v;
+       v=0;
+     }
+     break;
+#endif
+   case 'C':
+     if(t2=='H'){
+       v->init(otl_var_char,
+               size,
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct,pl_tab_flag);
+       if(t5=='Z')
+         v->var_struct.charz_flag=true;
+     }else if(t2=='L')
+       v->init(otl_var_clob,
+               adb.get_max_long_size(),
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct);
+     else{
+       delete v;
+       v=0;
+     }
+     break;
+   case 'D':
+     if(t2=='O')
+       v->init(otl_var_double,sizeof(double),
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct,pl_tab_flag);
+     else if(t2=='B'&&t3=='2'){
+       if(t4=='T')
+         v->init(otl_var_db2time,sizeof(TTimestampStruct),
+                 OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+                 &adb.connect_struct,pl_tab_flag);
+       else if(t4=='D')
+         v->init(otl_var_db2date,sizeof(TTimestampStruct),
+                 OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+                 &adb.connect_struct,pl_tab_flag);
+       else{
+         delete v;
+         v=0;
+       }
+     }else{
+       delete v;
+       v=0;
+     }
+     break;
+   case 'F':
+     v->init(otl_var_float,
+             sizeof(float),
+             OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+             &adb.connect_struct,pl_tab_flag);
+     break;
+   case 'I':
+     v->init(otl_var_int,
+             sizeof(int),
+             OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+             &adb.connect_struct,pl_tab_flag);
+     break;
+   case 'U':
+     v->init(otl_var_unsigned_int,
+             sizeof(unsigned),
+             OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+             &adb.connect_struct,pl_tab_flag);
+     break;
+   case 'R':
+     if(t2=='E'&&t3=='F')
+       v->init(otl_var_refcur,
+               1,
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct,0);
+     else if(t2=='A'&&t3=='W'&&(t4=='['||t4=='('))
+       v->init(otl_var_raw,
+               size,
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct,pl_tab_flag);
+     else if(t2=='A'&&t3=='W')
+       v->init(otl_var_raw_long,
+               adb.get_max_long_size(),
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct);
+     break;
+   case 'S':
+     v->init(otl_var_short,
+             sizeof(short),
+             OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+             &adb.connect_struct,pl_tab_flag);
+     break;
+   case 'L':
+     if(t2=='O'&&t3=='N')
+       v->init(otl_var_long_int,
+               sizeof(long),
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct,pl_tab_flag);
+     else if(t2=='T'&&t3=='Z')
+       v->init(otl_var_ltz_timestamp,
+               sizeof(TTimestampStruct),
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct,pl_tab_flag);
+     else{
+       delete v;
+       v=0;
+     }
+     break;
+   case 'T':
+     if(t2=='Z')
+       v->init(otl_var_tz_timestamp,sizeof(TTimestampStruct),
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct,pl_tab_flag);
+     else if(t2=='I' && t3=='M')
+       v->init(otl_var_timestamp,sizeof(TTimestampStruct),
+               OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+               &adb.connect_struct,pl_tab_flag);
+     else{
+       delete v;
+       v=0;
+     }
+     break;
+   case 'V':
+     v->init(otl_var_varchar_long,adb.get_max_long_size(),
+             OTL_SCAST(const otl_stream_buffer_size_type,array_size),
+             &adb.connect_struct);
+     break;
+   default:
+     delete v;
+     v=0;
+     break;
+   }
+   return v;
+ }
+
+ void alloc_host_var_list
+ (otl_tmpl_variable<TVariableStruct>** &vl,
+  int& vl_len,
+  OTL_TMPL_CONNECT& adb,
+  const int status=def)
+ {
+  int j;
+  vl_len=0;
+  if(!hv[0]){
+   vl=0;
+   return;
+  }
+  otl_auto_array_ptr<otl_tmpl_variable<TVariableStruct>*> 
+    loc_ptr(container_size_);
+  otl_tmpl_variable<TVariableStruct>** tmp_vl=loc_ptr.ptr;
+  int i=0;
+  while(hv[i]){
+    otl_tmpl_variable<TVariableStruct>* vp=
+      alloc_var(hv[i],inout[i],status,adb,pl_tab_size[i]);
+    if(vp==0){
+      int j2;
+      for(j2=0;j2<vl_len;++j2)
+        delete tmp_vl[j2];
+      vl_len=0;
+      throw OTL_TMPL_EXCEPTION
+        (otl_error_msg_12,
+         otl_error_code_12,
+         stm_label_?stm_label_:stm_text_,
+         hv[i]);
+    }
+    vp->name_pos=i+1;
+    if(vp){
+      ++vl_len;
+      tmp_vl[vl_len-1]=vp;
+    }
+    ++i;
+  }
+  if(vl_len>0){
+   vl=new otl_tmpl_variable<TVariableStruct>*[vl_len];
+   for(j=0;j<vl_len;++j)
+    vl[j]=tmp_vl[j];
+  }
+ }
+
+};
+
+template <OTL_TYPE_NAME TExceptionStruct,
+          OTL_TYPE_NAME TConnectStruct,
+          OTL_TYPE_NAME TCursorStruct,
+          OTL_TYPE_NAME TVariableStruct,
+          OTL_TYPE_NAME TSelectCursorStruct>
+class otl_tmpl_select_cursor:
+public OTL_TMPL_CURSOR{
+public:
+
+  int cur_row;
+  int cur_size;
+  int row_count;
+  int array_size;
+  int prefetch_array_size;
+  
+  TSelectCursorStruct select_cursor_struct;
+  otl_select_struct_override local_override;
+ 
+ otl_tmpl_select_cursor
+ (OTL_TMPL_CONNECT& pdb,
+  const otl_stream_buffer_size_type arr_size=1,
+  const char* sqlstm_label=0)
+   : OTL_TMPL_CURSOR(pdb)
+ {
+   local_override.reset();
+   cur_row=-1;
+   row_count=0;
+   cur_size=0;
+   if(sqlstm_label!=0){
+     if(this->stm_label!=0){
+       delete[] this->stm_label;
+       this->stm_label=0;
+     }
+     size_t len=strlen(sqlstm_label)+1;
+     this->stm_label=new char[len];
+     OTL_STRCPY_S(this->stm_label,len,sqlstm_label);
+   }
+#if defined(OTL_ODBC_TIMESTEN)
+   array_size=1;
+   prefetch_array_size=arr_size;
+#else
+   array_size=arr_size;
+   prefetch_array_size=0;
+#endif
+   select_cursor_struct.init(array_size);
+ }
+
+ otl_tmpl_select_cursor()
+  : OTL_TMPL_CURSOR(){}
+
+ void open
+ (OTL_TMPL_CONNECT& db,
+  otl_stream_buffer_size_type  arr_size=1)
+ {
+   local_override.reset();
+   cur_row=-1;
+   row_count=0;
+   cur_size=0;
+   array_size=arr_size;
+   OTL_TMPL_CURSOR::open(db);
+ }
+
+ void close(void)
+ {
+   local_override.reset();
+   OTL_TMPL_CURSOR::close();
+ }
+
+ int first(void)
+ {
+  if(!OTL_TMPL_CURSOR::connected)return 0;
+  select_cursor_struct.set_prefetch_size(prefetch_array_size);
+  int rc=select_cursor_struct.first
+   (this->cursor_struct,
+    cur_row,cur_size,
+    row_count,
+    this->eof_data,
+    array_size);
+  OTL_TRACE_FIRST_FETCH
+  if(!rc){
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return 0; 
+#endif
+   throw OTL_TMPL_EXCEPTION
+     (this->cursor_struct,
+      this->stm_label?
+      this->stm_label:
+      this->stm_text);
+  }
+  return cur_size!=0;
+ }
+
+  int next_throw(void)
+  {
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw OTL_TMPL_EXCEPTION
+      (this->cursor_struct,
+       this->stm_label?
+       this->stm_label:
+       this->stm_text);
+  }
+
+ int next(void)
+ {
+  if(!this->connected)return 0;
+  if(cur_row==-1)return first();
+  int rc=select_cursor_struct.next
+   (this->cursor_struct,
+    cur_row,cur_size,
+    row_count,
+    this->eof_data,
+    array_size);
+  if(!rc){
+    return next_throw();
+  }
+  OTL_TRACE_NEXT_FETCH
+  return cur_size!=0;
+ }
+
+};
+
+#if defined(OTL_ORA8)||defined(OTL_ODBC)
+
+const int otl_lob_stream_read_mode=1;
+const int otl_lob_stream_write_mode=2;
+const int otl_lob_stream_zero_mode=3;
+
+const int otl_lob_stream_first_piece=1;
+const int otl_lob_stream_next_piece=2;
+const int otl_lob_stream_last_piece=3;
+
+class otl_lob_stream_generic{
+public:
+
+ int mode;
+ int retcode;
+ int ndx;
+ int offset;
+ int lob_len;
+ int in_destructor;
+ int eof_flag;
+ int lob_is_null;
+ bool ora_lob;
+
+ otl_lob_stream_generic(const bool aora_lob=true)
+ {
+  ora_lob=aora_lob;
+ }
+
+ virtual ~otl_lob_stream_generic(){}
+
+ virtual void init
+ (void* avar,void* aconnect,void* acursor,int andx,
+  int amode,const int alob_is_null=0) = 0;
+ virtual void set_len(const int new_len=0) = 0;
+ virtual otl_lob_stream_generic& operator<<(const otl_long_string& s) = 0;
+ virtual otl_lob_stream_generic& operator>>(otl_long_string& s) = 0;
+#if (defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)) && !defined(OTL_UNICODE)
+  virtual otl_lob_stream_generic& operator<<(const OTL_STRING_CONTAINER& s) = 0;
+  virtual otl_lob_stream_generic& operator>>(OTL_STRING_CONTAINER& s) = 0;
+  virtual  void setStringBuffer(const int chunk_size) = 0;
+#endif
+
+ virtual int eof(void) = 0;
+ virtual int len(void) = 0;
+ virtual bool is_initialized(void) = 0;
+ virtual void close(void) = 0;
+
+};
+
+#endif
+
+#if defined(__GNUC__) || defined(__SUNPRO_CC) || \
+    (defined(_MSC_VER) && (_MSC_VER <= 1300)) || \
+  defined(__HP_aCC)
+  // Enable the kludge for compilers that do not support template
+  // member functions at all, or have bugs: g++, Forte C++ (Solaris),
+  // Visual C++ 6.0, Visual C++ 7.0, etc.
+#define OTL_NO_TMPL_MEMBER_FUNC_SUPPORT
+#endif
+
+template <OTL_TYPE_NAME TExceptionStruct,
+          OTL_TYPE_NAME TConnectStruct,
+          OTL_TYPE_NAME TCursorStruct,
+          OTL_TYPE_NAME TVariableStruct,
+          OTL_TYPE_NAME TSelectCursorStruct,
+          OTL_TYPE_NAME TTimestampStruct>
+class otl_tmpl_select_stream: public OTL_TMPL_SELECT_CURSOR{
+public:
+
+ otl_column_desc* sl_desc;
+ otl_tmpl_variable<TVariableStruct>* sl;
+ int sl_len;
+ int null_fetched;
+ int cur_col;
+ int cur_in;
+ int executed;
+ int eof_status;
+ char var_info[256];
+ otl_select_struct_override* override;
+ int delay_next;
+ bool lob_stream_mode;
+ long _rfc;
+
+ void cleanup(void)
+ {int i;
+  delete[] sl;
+  for(i=0;i<this->vl_len;++i)
+   delete this->vl[i];
+  delete[] this->vl;
+  delete[] sl_desc;
+ }
+
+ virtual ~otl_tmpl_select_stream()
+ {
+  cleanup();
+ }
+
+ otl_tmpl_select_stream
+ (otl_select_struct_override* aoverride,
+  const otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  OTL_TMPL_CONNECT& pdb,
+  const int implicit_select=otl_explicit_select,
+  const char* sqlstm_label=0)
+  : OTL_TMPL_SELECT_CURSOR(pdb,arr_size,sqlstm_label)
+ {
+   int i;
+   this->select_cursor_struct.set_select_type(implicit_select);
+   sl=0;
+   sl_len=0;
+   _rfc=0;
+   null_fetched=0;
+   lob_stream_mode=aoverride->lob_stream_mode;
+   this->retcode=0;
+   sl_desc=0;
+   executed=0;
+   cur_in=0;
+   this->stm_text=0;
+   eof_status=1;
+   override=aoverride;
+   
+   {
+     size_t len=strlen(sqlstm)+1;
+     this->stm_text=new char[len];
+     OTL_STRCPY_S(this->stm_text,len,sqlstm);
+     otl_select_struct_override* temp_local_override=&this->local_override;
+     otl_tmpl_ext_hv_decl
+       <TVariableStruct,TTimestampStruct,TExceptionStruct,
+       TConnectStruct,TCursorStruct> hvd
+       (this->stm_text,
+        1,
+        this->stm_label,
+        &temp_local_override,
+        &pdb
+         );
+     hvd.alloc_host_var_list(this->vl,this->vl_len,pdb);
+   }
+   
+   try{
+     this->parse();
+     if(!this->select_cursor_struct.implicit_cursor){
+       get_select_list();
+       bind_all();
+     }else{
+       for(i=0;i<this->vl_len;++i)
+         this->bind(*this->vl[i]);
+     }
+     if(this->vl_len==0){
+       rewind();
+       null_fetched=0;
+     }
+   }catch(OTL_CONST_EXCEPTION OTL_TMPL_EXCEPTION&){
+     cleanup();
+     if(this->adb)this->adb->throw_count++;
+     throw;
+   }
+
+ }
+
+ void rewind(void)
+ {
+  OTL_TRACE_STREAM_EXECUTION
+  int i;
+  _rfc=0;
+  if(!this->select_cursor_struct.close_select(this->cursor_struct)){
+   throw OTL_TMPL_EXCEPTION
+    (this->cursor_struct,
+     this->stm_label?this->stm_label:this->stm_text);
+  }
+  if(this->select_cursor_struct.implicit_cursor){
+   this->exec(1);
+   if(sl){
+    delete[] sl;
+    sl=0;
+   }
+   get_select_list();
+   for(i=0;i<sl_len;++i)this->bind(sl[i]);
+  }
+  eof_status=this->first();
+  null_fetched=0;
+  cur_col=-1;
+  cur_in=0;
+  executed=1;
+  delay_next=0;
+ }
+  
+  void clean(void)
+  {
+    _rfc=0;
+    this->cursor_struct.canceled=false;
+    null_fetched=0;
+    cur_col=-1;
+    cur_in=0;
+    executed=0;
+    delay_next=0;
+    this->cur_row=-1;
+    this->row_count=0;
+    this->cur_size=0;
+    if(!this->select_cursor_struct.close_select(this->cursor_struct)){
+      throw OTL_TMPL_EXCEPTION
+        (this->cursor_struct,
+         this->stm_label?this->stm_label:this->stm_text);
+    }
+  }
+
+ int is_null(void)
+ {
+  return null_fetched;
+ }
+
+ int eof(void)
+ {
+  if(delay_next){
+   look_ahead();
+   delay_next=0;
+  }
+  return !eof_status;
+ }
+
+ int eof_intern(void)
+ {
+  return !eof_status;
+ }
+
+
+ void bind_all(void)
+ {int i;
+  for(i=0;i<this->vl_len;++i)this->bind(*this->vl[i]);
+  for(i=0;i<sl_len;++i)this->bind(sl[i]);
+ }
+
+ void get_select_list(void)
+ {
+   int j;
+   otl_auto_array_ptr<otl_column_desc> loc_ptr(otl_var_list_size);
+   otl_column_desc* sl_desc_tmp=loc_ptr.ptr;
+   int sld_tmp_len=0;
+   int ftype,elem_size,i;
+   for(i=1;this->describe_column(sl_desc_tmp[i-1],i);++i){
+     if(otl_tmpl_variable<TVariableStruct>::int2ext
+        (sl_desc_tmp[i-1].dbtype)==otl_unsupported_type){
+       otl_var_info_col3
+         (i-1,
+          sl_desc_tmp[i-1].dbtype,
+          sl_desc_tmp[i-1].name,
+          this->var_info,
+          sizeof(this->var_info));
+       throw OTL_TMPL_EXCEPTION
+         (otl_error_msg_27,
+          otl_error_code_27,
+          this->stm_label?
+          this->stm_label:
+          this->stm_text,
+          this->var_info);
+     }
+     ++sld_tmp_len;
+     if(sld_tmp_len==loc_ptr.arr_size_){
+       loc_ptr.double_size();
+       sl_desc_tmp=loc_ptr.ptr;
+     }
+   }
+   sl_len=sld_tmp_len;
+   if(sl){
+     delete[] sl;
+     sl=0;
+   }
+   sl=new otl_tmpl_variable<TVariableStruct>[sl_len==0?1:sl_len];
+   int max_long_size=this->adb->get_max_long_size();
+   for(j=0;j<sl_len;++j){
+     otl_tmpl_variable<TVariableStruct>::map_ftype
+       (sl_desc_tmp[j],
+        max_long_size,
+        ftype,
+        elem_size,
+        this->local_override.getLen()>0?this->local_override:*override,
+        j+1);
+     sl[j].copy_pos(j+1);
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+     if(sl_desc_tmp[j].charset_form==2)
+       sl[j].var_struct.nls_flag=true;
+#endif
+     sl[j].init(ftype,
+                elem_size,
+                OTL_SCAST(otl_stream_buffer_size_type,(this->array_size)),
+                &this->adb->connect_struct
+                );
+     sl[j].var_struct.lob_stream_mode=this->lob_stream_mode;
+   }
+   if(sl_desc){
+     delete[] sl_desc;
+     sl_desc=0;
+   }
+   sl_desc=new otl_column_desc[sl_len==0?1:sl_len];
+   for(j=0;j<sl_len;++j)
+     sl_desc[j]=sl_desc_tmp[j];
+ }
+  
+  void check_if_executed_throw(void)
+  {
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return; 
+#endif
+    throw OTL_TMPL_EXCEPTION
+      (otl_error_msg_2,
+       otl_error_code_2,
+       this->stm_label?
+       this->stm_label:
+       this->stm_text,
+       0);
+  }
+
+ void check_if_executed(void)
+ {
+  if(!executed){
+    check_if_executed_throw();
+  }
+ }
+
+  int check_type_throw(int type_code,int actual_data_type)
+  {
+   int out_type_code;
+   if(actual_data_type!=0)
+     out_type_code=actual_data_type;
+   else
+     out_type_code=type_code;
+   otl_var_info_col
+     (sl[cur_col].pos,
+      sl[cur_col].ftype,
+      out_type_code,
+      var_info,
+      sizeof(var_info));
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return 0; 
+#endif
+   throw OTL_TMPL_EXCEPTION
+     (otl_error_msg_0,
+      otl_error_code_0,
+      this->stm_label?
+      this->stm_label:
+      this->stm_text,
+      var_info);
+  }
+
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+  void strict_check_throw(int type_code)
+  {
+   otl_var_info_col
+     (sl[cur_col].pos,
+      sl[cur_col].ftype,
+      type_code,
+      var_info,
+      sizeof(var_info));
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return;
+#endif
+   throw OTL_TMPL_EXCEPTION
+     (otl_error_msg_0,
+      otl_error_code_0,
+      this->stm_label?
+      this->stm_label:
+      this->stm_text,
+      var_info);
+  }
+#endif
+
+ int check_type(int type_code,int actual_data_type=0)
+ {
+   switch(sl[cur_col].ftype){
+   case otl_var_timestamp:
+   case otl_var_tz_timestamp:
+   case otl_var_ltz_timestamp:
+     if(type_code==otl_var_timestamp)
+       return 1;
+   default:
+     if(sl[cur_col].ftype==type_code)
+       return 1;
+   }
+   return check_type_throw(type_code,actual_data_type);
+ }
+
+ void get_next(void)
+ {
+  if(cur_col<sl_len-1){
+   ++cur_col;
+   null_fetched=sl[cur_col].is_null(this->cur_row);
+  }else{
+   eof_status=this->next();
+   cur_col=0;
+  }
+ }
+
+ void look_ahead(void)
+ {
+  if(cur_col==sl_len-1){
+   eof_status=this->next();
+   cur_col=-1;
+   ++_rfc;
+  }
+ }
+
+  OTL_TMPL_SELECT_STREAM& operator>>(char& c)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   c=*OTL_RCAST(char*,sl[cur_col].val(this->cur_row));
+   look_ahead();
+  }
+  return *this;
+ }
+
+  OTL_TMPL_SELECT_STREAM& operator>>(unsigned char& c)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   c=*OTL_RCAST(unsigned char*,sl[cur_col].val(this->cur_row));
+   look_ahead();
+  }
+  return *this;
+ }
+
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+  OTL_TMPL_SELECT_STREAM& operator>>(OTL_STRING_CONTAINER& s)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+
+  switch(sl[cur_col].ftype){
+  case otl_var_char:
+    if(!eof_intern()){
+#if defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,sl[cur_col].val(this->cur_row)),1);
+#else
+      s=OTL_RCAST(char*,sl[cur_col].val(this->cur_row));
+#endif
+      look_ahead();
+    }
+    break;
+#if defined(OTL_USER_DEFINED_STRING_CLASS_ON) || \
+    defined(OTL_STL) || defined(OTL_ACE)
+  case otl_var_varchar_long:
+  case otl_var_raw_long:
+    if(!eof_intern()){
+      unsigned char* c=OTL_RCAST(unsigned char*,
+                                 sl[cur_col].val(this->cur_row));
+      int len=sl[cur_col].get_len(this->cur_row);
+      int buf_sz=sl[cur_col].elem_size;
+      if(len>buf_sz)len=buf_sz;
+
+#if (defined(OTL_USER_DEFINED_STRING_CLASS_ON) || defined(OTL_STL)) \
+     && !defined(OTL_ACE)
+      s.assign(OTL_RCAST(char*,c),len);
+#elif defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,c),len,1);
+#endif
+      look_ahead();
+    }
+    break;
+  case otl_var_blob:
+  case otl_var_clob:
+    if(!eof_intern()){
+      int len=0;
+      int max_long_sz=this->adb->get_max_long_size();
+      otl_auto_array_ptr<unsigned char> loc_ptr(max_long_sz);
+      unsigned char* temp_buf=loc_ptr.ptr;
+      int rc=sl[cur_col].var_struct.get_blob
+        (this->cur_row,
+         temp_buf,
+         max_long_sz,
+         len);
+      if(rc==0){
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return *this; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (this->adb->connect_struct,
+           this->stm_label?this->stm_label:
+           this->stm_text);
+      }
+#if (defined(OTL_USER_DEFINED_STRING_CLASS_ON) || \
+     defined(OTL_STL)) && !defined(OTL_ACE)
+      s.assign(OTL_RCAST(char*,temp_buf),len);
+#elif defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,temp_buf),len,1);
+#endif
+      look_ahead();
+    }
+    break;
+#endif
+  default:
+    check_type(otl_var_char);
+  } // switch
+  return *this;
+ }
+#endif
+
+  OTL_TMPL_SELECT_STREAM& operator>>(char* s)
+  {
+    check_if_executed();
+    if(eof_intern())return *this;
+    get_next();
+    if(check_type(otl_var_char)&&!eof_intern()){
+      otl_strcpy(OTL_RCAST(unsigned char*,s),
+                 OTL_RCAST(const unsigned char*,sl[cur_col].val(this->cur_row))
+                 );
+      look_ahead();
+    }
+    return *this;
+  }
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+  OTL_TMPL_SELECT_STREAM& operator<<(const OTL_UNICODE_STRING_TYPE& s)
+  {
+    check_in_var();
+    if(check_in_type(otl_var_char,1)){
+      
+      int overflow;
+      otl_strcpy4
+        (OTL_RCAST(unsigned char*,this->vl[cur_in]->val()),
+         OTL_RCAST(unsigned char*,
+                   OTL_CCAST(OTL_UNICODE_CHAR_TYPE*,s.c_str())),
+         overflow,
+         this->vl[cur_in]->elem_size,
+         OTL_SCAST(int,s.length())
+        );
+      if(overflow){
+        char temp_var_info[256];
+        otl_var_info_var
+          (this->vl[cur_in]->name,
+           this->vl[cur_in]->ftype,
+           otl_var_char,
+           temp_var_info,
+           sizeof(temp_var_info));
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return *this; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (otl_error_msg_4,
+           otl_error_code_4,
+           this->stm_label?this->stm_label:
+           this->stm_text,
+      temp_var_info);
+      }
+      
+      this->vl[cur_in]->set_not_null(0);
+      
+    }
+    get_in_next();
+    return *this;
+  }
+
+#endif
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+  OTL_TMPL_SELECT_STREAM& operator>>(OTL_UNICODE_STRING_TYPE& s)
+  {
+    check_if_executed();
+    if(eof_intern())return *this;
+    get_next();
+    switch(sl[cur_col].ftype){
+    case otl_var_char:
+      if(!eof_intern()){
+#if defined(OTL_ODBC) || defined(DB2_CLI)
+        s=OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,sl[cur_col].val(this->cur_row));
+#else
+
+#if defined(OTL_UNICODE_STRING_TYPE_CAST_FROM_CHAR)
+        OTL_UNICODE_CHAR_TYPE* temp_s=OTL_RCAST
+          (OTL_UNICODE_CHAR_TYPE*,sl[cur_col].val(this->cur_row));
+        OTL_UNICODE_STRING_TYPE_CAST_FROM_CHAR(s,temp_s+1,*temp_s);
+#else
+        OTL_UNICODE_CHAR_TYPE* temp_s=OTL_RCAST
+          (OTL_UNICODE_CHAR_TYPE*,sl[cur_col].val(this->cur_row));
+        s.assign(temp_s+1,*temp_s);
+#endif
+
+#endif
+        look_ahead();
+      }
+      break;
+    case otl_var_varchar_long:
+      if(!eof_intern()){
+        s=OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,sl[cur_col].val(this->cur_row));
+        look_ahead();
+      }
+      break;
+    case otl_var_clob:
+      if(!eof_intern()){
+        int len=0;
+        int max_long_sz=this->adb->get_max_long_size();
+        otl_auto_array_ptr<unsigned short> loc_ptr(max_long_sz);
+        unsigned char* temp_buf=OTL_RCAST(unsigned char*,loc_ptr.ptr);
+
+        int rc=sl[cur_col].var_struct.get_blob
+          (this->cur_row,
+           temp_buf,
+           max_long_sz,
+           len);
+        if(rc==0){
+          if(this->adb)this->adb->throw_count++;
+          if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+          if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+            uncaught_exception())return *this; 
+#endif
+          throw OTL_TMPL_EXCEPTION
+            (this->adb->connect_struct,
+             this->stm_label?this->stm_label:
+             this->stm_text);
+        }
+        s=OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,temp_buf);
+        look_ahead();
+      }
+      break;
+    default:
+      check_type(otl_var_char);
+    }
+    return *this;
+  }
+#endif
+
+  OTL_TMPL_SELECT_STREAM& operator>>(unsigned char* s)
+  {
+    check_if_executed();
+    if(eof_intern())return *this;
+    get_next();
+    if(check_type(otl_var_char)&&!eof_intern()){
+      otl_strcpy2(OTL_RCAST(unsigned char*,s),
+                  OTL_RCAST(unsigned char*,sl[cur_col].val(this->cur_row)),
+                  sl[cur_col].get_len(this->cur_row)
+                  );
+      look_ahead();
+    }
+    return *this;
+  }
+
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+#define OTL_D1(T,T_type)                                        \
+  OTL_TMPL_SELECT_STREAM& operator>>(T& n)                      \
+  {                                                             \
+    check_if_executed();                                        \
+    if(eof_intern())return *this;                               \
+    get_next();                                                 \
+    if(!eof_intern()){                                          \
+      int match_found=otl_numeric_convert_T<T,T_type>           \
+        (sl[cur_col].ftype,                                     \
+         sl[cur_col].val(this->cur_row),                        \
+         n);                                                    \
+      if(!match_found)                                          \
+        strict_check_throw(T_type);                             \
+        look_ahead();                                           \
+    }                                                           \
+    return *this;                                               \
+  }
+#else
+#define OTL_D1(T,T_type)                                        \
+  OTL_TMPL_SELECT_STREAM& operator>>(T& n)                      \
+  {                                                             \
+    check_if_executed();                                        \
+    if(eof_intern())return *this;                               \
+    get_next();                                                 \
+    if(!eof_intern()){                                          \
+      int match_found=otl_numeric_convert_T                     \
+        (sl[cur_col].ftype,                                     \
+         sl[cur_col].val(this->cur_row),                        \
+         n);                                                    \
+      if(!match_found){                                         \
+        if(check_type(otl_var_double,T_type))                   \
+        n=OTL_PCONV(T,double,sl[cur_col].val(this->cur_row));   \
+      }                                                         \
+      look_ahead();                                             \
+   }                                                            \
+   return *this;                                                \
+  }
+#endif
+
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+
+  OTL_D1(int,otl_var_int)
+#if defined(OTL_BIGINT)
+  OTL_D1(OTL_BIGINT,otl_var_bigint)
+#endif
+  OTL_D1(unsigned,otl_var_unsigned_int)
+  OTL_D1(long,otl_var_long_int)
+  OTL_D1(short,otl_var_short)
+  OTL_D1(float,otl_var_float)
+  OTL_D1(double,otl_var_double)
+
+#else
+  template<OTL_TYPE_NAME T,const int T_type> OTL_D1(T,T_type)
+#endif
+
+  OTL_TMPL_SELECT_STREAM& operator>>(TTimestampStruct& t)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_timestamp)&&!eof_intern()){
+   TTimestampStruct* tm=
+    OTL_RCAST(TTimestampStruct*,sl[cur_col].val(this->cur_row));
+   int rc=sl[cur_col].var_struct.read_dt
+     (&t,tm,sizeof(TTimestampStruct));
+   if(rc==0){
+     if(this->adb)this->adb->throw_count++;
+     if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return *this; 
+#endif
+     throw OTL_TMPL_EXCEPTION
+       (this->adb->connect_struct,
+        this->stm_label?this->stm_label:
+        this->stm_text);
+   }
+   look_ahead();
+  }
+  return *this;
+ }
+
+  OTL_TMPL_SELECT_STREAM& operator>>(otl_long_string& s)
+ {
+   check_if_executed();
+   if(eof_intern())return *this;
+   get_next();
+   switch(sl[cur_col].ftype){
+   case otl_var_varchar_long:
+   case otl_var_raw_long:
+     {
+       if(!eof_intern()){
+         unsigned char* c=
+           OTL_RCAST(unsigned char*,sl[cur_col].val(this->cur_row));
+         int len2=sl[cur_col].get_len(this->cur_row);
+         if(len2>s.buf_size)len2=s.buf_size;
+         otl_memcpy(s.v,c,len2,sl[cur_col].ftype);
+         if(sl[cur_col].ftype==otl_var_varchar_long)
+           s.null_terminate_string(len2);
+         s.set_len(len2);
+         look_ahead();
+       }
+     }
+     break;
+   case otl_var_raw:
+     {
+       if(!eof_intern()){
+         unsigned char* c=OTL_RCAST(unsigned char*,sl[cur_col].val(this->cur_row));
+         if(sl[cur_col].var_struct.otl_adapter==otl_ora7_adapter||
+            sl[cur_col].var_struct.otl_adapter==otl_ora8_adapter){
+           int len2=OTL_SCAST(int,*OTL_RCAST(unsigned short*,c));
+           otl_memcpy(s.v,c+sizeof(short int),len2,sl[cur_col].ftype);
+           s.set_len(len2);
+         }else{
+           int len2=sl[cur_col].get_len(this->cur_row);           
+           if(len2>s.buf_size)len2=s.buf_size;
+           otl_memcpy(s.v,c,len2,sl[cur_col].ftype);
+           s.set_len(len2);
+         }
+         look_ahead();
+       }
+     }
+     break;
+   case otl_var_blob:
+   case otl_var_clob:
+     {
+       if(!eof_intern()){
+         int len=0;
+         int rc=sl[cur_col].var_struct.get_blob(this->cur_row,s.v,s.buf_size,len);
+         if(rc==0){
+           if(this->adb)this->adb->throw_count++;
+           if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+           if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+             uncaught_exception())return *this; 
+#endif
+           throw OTL_TMPL_EXCEPTION
+             (this->adb->connect_struct,
+              this->stm_label?this->stm_label:
+              this->stm_text);
+         }
+         if(len>s.buf_size)len=s.buf_size;
+         s.set_len(len);
+         if(sl[cur_col].ftype==otl_var_clob)
+           s.null_terminate_string(len);
+         look_ahead();
+       }      
+     }
+     break;
+   default:
+     {
+       char tmp_var_info[256];
+       otl_var_info_col
+         (sl[cur_col].pos,
+          sl[cur_col].ftype,
+          otl_var_long_string,
+          tmp_var_info,
+          sizeof(tmp_var_info));
+       if(this->adb)this->adb->throw_count++;
+       if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+       if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+         uncaught_exception())return *this; 
+#endif
+       throw OTL_TMPL_EXCEPTION
+         (otl_error_msg_0,
+          otl_error_code_0,
+          this->stm_label?this->stm_label:
+          this->stm_text,
+          tmp_var_info);
+     }
+   }
+   return *this;
+ }
+
+#if defined(OTL_ORA8)||defined(OTL_ODBC)
+  OTL_TMPL_SELECT_STREAM& operator>>
+  (otl_lob_stream_generic& s)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(s.ora_lob&&
+     (sl[cur_col].ftype==otl_var_blob||
+      sl[cur_col].ftype==otl_var_clob)&&
+     !eof_intern()){
+   s.init
+     (OTL_RCAST(void*,&sl[cur_col]),
+      OTL_RCAST(void*,this->adb),
+      OTL_RCAST(void*,this),
+      this->cur_row,
+      otl_lob_stream_read_mode,
+      this->is_null());
+   delay_next=1;
+  }else if((sl[cur_col].ftype==otl_var_varchar_long||
+            sl[cur_col].ftype==otl_var_raw_long)&&
+           !eof_intern()){
+   s.init
+    (OTL_RCAST(void*,&sl[cur_col]),
+     OTL_RCAST(void*,this->adb),
+     OTL_RCAST(void*,this),
+     this->cur_row,
+     otl_lob_stream_read_mode);
+   delay_next=1;
+  }else{
+   char tmp_var_info[256];
+   otl_var_info_col
+    (sl[cur_col].pos,
+     sl[cur_col].ftype,
+     otl_var_long_string,
+     tmp_var_info,
+     sizeof(tmp_var_info));
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return *this; 
+#endif
+   throw OTL_TMPL_EXCEPTION
+    (otl_error_msg_0,
+     otl_error_code_0,
+     this->stm_label?this->stm_label:
+     this->stm_text,
+     tmp_var_info);
+  }
+  return *this;
+ }
+#endif
+
+  int check_in_type_throw(int type_code)
+  {
+    otl_var_info_var
+      (this->vl[cur_in]->name,
+       this->vl[cur_in]->ftype,
+       type_code,
+       var_info,
+       sizeof(var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw OTL_TMPL_EXCEPTION
+      (otl_error_msg_0,
+       otl_error_code_0,
+       this->stm_label?this->stm_label:
+       this->stm_text,
+       var_info);
+  }
+
+  int check_in_type(int type_code,int tsize)
+  {
+    switch(this->vl[cur_in]->ftype){
+    case otl_var_char:
+      if(type_code==otl_var_char)
+        return 1;
+    case otl_var_db2date:
+    case otl_var_db2time:
+    case otl_var_timestamp:
+    case otl_var_tz_timestamp:
+    case otl_var_ltz_timestamp:
+      if(type_code==otl_var_timestamp)
+        return 1;
+    default:
+      if(this->vl[cur_in]->ftype==type_code &&
+         this->vl[cur_in]->elem_size==tsize)
+        return 1;
+    }
+    return check_in_type_throw(type_code);
+  }
+
+  void check_in_var_throw(void)
+  {
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return; 
+#endif
+    throw OTL_TMPL_EXCEPTION
+      (otl_error_msg_1,
+       otl_error_code_1,
+       this->stm_label?this->stm_label:
+       this->stm_text,
+       0);
+  }
+
+  void check_in_var(void)
+  {
+    if(this->vl_len==0)
+      check_in_var_throw();
+  }
+
+ void get_in_next(void)
+ {
+  if(cur_in==this->vl_len-1)
+   rewind();
+  else{
+   ++cur_in;
+   executed=0;
+  }
+ }
+
+  OTL_TMPL_SELECT_STREAM& operator<<(const otl_null& /* n */)
+ {
+  check_in_var();
+  this->vl[cur_in]->set_null(0);
+  get_in_next();
+  return *this;
+ }
+
+ OTL_TMPL_SELECT_STREAM& operator<<(const char c)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+   char* tmp=OTL_RCAST(char*,this->vl[cur_in]->val());
+   tmp[0]=c;
+   tmp[1]=0;
+   this->vl[cur_in]->set_not_null(0);
+  }
+  get_in_next();
+  return *this;
+ }
+
+  OTL_TMPL_SELECT_STREAM& operator<<(const unsigned char c)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+   unsigned char* tmp=
+    OTL_RCAST(unsigned char*,this->vl[cur_in]->val());
+   tmp[0]=c;
+   tmp[1]=0;
+   this->vl[cur_in]->set_not_null(0);
+  }
+  get_in_next();
+  return *this;
+ }
+
+ OTL_TMPL_SELECT_STREAM& operator<<(const char* s)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+
+   int overflow;
+   otl_strcpy
+    (OTL_RCAST(unsigned char*,this->vl[cur_in]->val()),
+     OTL_RCAST(unsigned char*,OTL_CCAST(char*,s)),
+     overflow,
+     this->vl[cur_in]->elem_size
+    );
+   if(overflow){
+    char tmp_var_info[256];
+    otl_var_info_var
+     (this->vl[cur_in]->name,
+      this->vl[cur_in]->ftype,
+      otl_var_char,
+      tmp_var_info,
+      sizeof(tmp_var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw OTL_TMPL_EXCEPTION
+     (otl_error_msg_4,
+      otl_error_code_4,
+      this->stm_label?this->stm_label:
+      this->stm_text,
+      tmp_var_info);
+   }
+
+   this->vl[cur_in]->set_not_null(0);
+
+  }
+  get_in_next();
+  return *this;
+ }
+
+ OTL_TMPL_SELECT_STREAM& operator<<(const otl_long_string& s)
+ {
+  check_in_var();
+  switch(this->vl[cur_in]->ftype){
+  case otl_var_raw_long:
+    {
+      unsigned char* c=OTL_RCAST(unsigned char*,this->vl[cur_in]->val(0));
+      int len=OTL_CCAST(otl_long_string*,&s)->len();
+      if(len>this->vl[cur_in]->actual_elem_size()){
+        otl_var_info_var
+          (this->vl[cur_in]->name,
+           this->vl[cur_in]->ftype,
+           otl_var_char,
+           var_info,
+           sizeof(var_info));
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return *this; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (otl_error_msg_5,
+           otl_error_code_5,
+           this->stm_label?this->stm_label:
+           this->stm_text,
+           var_info);
+      }
+      this->vl[cur_in]->set_not_null(0);
+      otl_memcpy(c,s.v,len,this->vl[cur_in]->ftype);
+      this->vl[cur_in]->set_len(len,0);
+    }
+    break;
+  case otl_var_raw:
+    {
+      unsigned char* c=OTL_RCAST(unsigned char*,this->vl[cur_in]->val(0));
+      int len=OTL_CCAST(otl_long_string*,&s)->len();
+      if(len>this->vl[cur_in]->actual_elem_size()){
+        otl_var_info_var
+          (this->vl[cur_in]->name,
+           this->vl[cur_in]->ftype,
+           otl_var_char,
+           var_info,
+           sizeof(var_info));
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return *this; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (otl_error_msg_5,
+           otl_error_code_5,
+           this->stm_label?this->stm_label:
+           this->stm_text,
+           var_info);
+      }
+      this->vl[cur_in]->set_not_null(0);
+      if((this->vl[cur_in]->var_struct.otl_adapter==otl_ora7_adapter||
+          this->vl[cur_in]->var_struct.otl_adapter==otl_ora8_adapter) &&
+         this->vl[cur_in]->ftype==otl_var_raw){
+        otl_memcpy
+          (c+sizeof(unsigned short),
+           s.v,
+           len,
+           this->vl[cur_in]->ftype);
+        *OTL_RCAST(unsigned short*,
+                   this->vl[cur_in]->val(0))=OTL_SCAST(unsigned short,len);
+        this->vl[cur_in]->set_len(len,0);
+      }else{
+        otl_memcpy(c,s.v,len,this->vl[cur_in]->ftype);
+        this->vl[cur_in]->set_len(len,0);
+      }
+    }
+    break;
+  }
+  get_in_next();
+  return *this;
+ }
+
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+  OTL_TMPL_SELECT_STREAM& operator<<(const OTL_STRING_CONTAINER& s)
+  {
+    check_in_var();
+    if(check_in_type(otl_var_char,1)){
+      
+      int overflow;
+      otl_strcpy
+        (OTL_RCAST(unsigned char*,this->vl[cur_in]->val()),
+         OTL_RCAST(unsigned char*,OTL_CCAST(char*,s.c_str())),
+         overflow,
+         this->vl[cur_in]->elem_size,
+         OTL_SCAST(int,s.length())
+        );
+      if(overflow){
+        char temp_var_info[256];
+        otl_var_info_var
+          (this->vl[cur_in]->name,
+           this->vl[cur_in]->ftype,
+           otl_var_char,
+           temp_var_info,
+           sizeof(temp_var_info));
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return *this; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (otl_error_msg_4,
+           otl_error_code_4,
+           this->stm_label?this->stm_label:
+           this->stm_text,
+      temp_var_info);
+      }
+      
+      this->vl[cur_in]->set_not_null(0);
+      
+    }
+    get_in_next();
+    return *this;
+  }
+
+#endif
+
+  OTL_TMPL_SELECT_STREAM& operator<<(const unsigned char* s)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+
+   int overflow;
+   otl_strcpy4
+    (OTL_RCAST(unsigned char*,this->vl[cur_in]->val()),
+     OTL_CCAST(unsigned char*,s),
+     overflow,
+     this->vl[cur_in]->elem_size
+    );
+   if(overflow){
+    char temp_var_info[256];
+    otl_var_info_var
+     (this->vl[cur_in]->name,
+      this->vl[cur_in]->ftype,
+      otl_var_char,
+      temp_var_info,
+      sizeof(temp_var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw OTL_TMPL_EXCEPTION
+     (otl_error_msg_4,
+      otl_error_code_4,
+      this->stm_label?this->stm_label:
+      this->stm_text,
+      temp_var_info);
+   }
+
+   this->vl[cur_in]->set_not_null(0);
+
+  }
+  get_in_next();
+  return *this;
+ }
+
+#define OTL_D2(T,T_type)                        \
+  OTL_TMPL_SELECT_STREAM& operator<<(const T n) \
+  {                                             \
+    check_in_var();                             \
+    if(check_in_type(T_type,sizeof(T))){        \
+      *OTL_RCAST(T*,this->vl[cur_in]->val())=n; \
+    }                                           \
+    this->vl[cur_in]->set_not_null(0);          \
+    get_in_next();                              \
+    return *this;                               \
+  }
+
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  OTL_D2(int,otl_var_int)
+  OTL_D2(unsigned,otl_var_unsigned_int)
+#if defined(OTL_BIGINT)
+  OTL_D2(OTL_BIGINT,otl_var_bigint)
+#endif
+  OTL_D2(long,otl_var_long_int)
+  OTL_D2(short,otl_var_short)
+  OTL_D2(float,otl_var_float)
+  OTL_D2(double,otl_var_double)
+#else
+  template<OTL_TYPE_NAME T,const int T_type> OTL_D2(T,T_type)
+#endif
+
+  OTL_TMPL_SELECT_STREAM& operator<<(const TTimestampStruct& t)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_timestamp,sizeof(TTimestampStruct))){
+   TTimestampStruct* tm=
+    OTL_RCAST(TTimestampStruct*,this->vl[cur_in]->val());
+   int rc=this->vl[cur_in]->var_struct.write_dt
+     (tm,&t,sizeof(TTimestampStruct));
+   if(rc==0){
+     if(this->adb)this->adb->throw_count++;
+     if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return *this; 
+#endif
+     throw OTL_TMPL_EXCEPTION
+       (this->adb->connect_struct,
+        this->stm_label?this->stm_label:
+        this->stm_text);
+   }
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+};
+
+template <OTL_TYPE_NAME TExceptionStruct,
+          OTL_TYPE_NAME TConnectStruct,
+          OTL_TYPE_NAME TCursorStruct,
+          OTL_TYPE_NAME TVariableStruct,
+          OTL_TYPE_NAME TTimestampStruct>
+class otl_tmpl_out_stream: public OTL_TMPL_CURSOR{
+public:
+
+ int auto_commit_flag;
+ int dirty;
+ int cur_x;
+ int cur_y;
+ otl_stream_buffer_size_type array_size;
+ int in_exception_flag;
+ int in_destruct_flag;
+ int should_delete_flag;
+ char var_info[256];
+ bool flush_flag;
+ bool flush_flag2;
+ bool lob_stream_mode;
+
+
+ void cleanup(void)
+ {int i;
+  if(should_delete_flag){
+   for(i=0;i<this->vl_len;++i)
+    delete this->vl[i];
+  }
+  delete[] this->vl;
+ }
+
+ otl_tmpl_out_stream
+ (otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  OTL_TMPL_CONNECT& db,
+  const bool alob_stream_mode=false,
+  const char* sqlstm_label=0)
+   : OTL_TMPL_CURSOR(db)
+ {
+   int i;
+   if(sqlstm_label!=0){
+     if(this->stm_label!=0){
+       delete[] this->stm_label;
+       this->stm_label=0;
+     }
+     size_t len=strlen(sqlstm_label)+1;
+     this->stm_label=new char[strlen(sqlstm_label)+1];
+     OTL_STRCPY_S(this->stm_label,len,sqlstm_label);
+   }
+   dirty=0;
+   auto_commit_flag=1;
+   flush_flag=true;
+   flush_flag2=true;
+   lob_stream_mode=alob_stream_mode;
+   this->cursor_struct.last_param_data_token=0;
+   this->cursor_struct.last_sql_param_data_status=0;
+   this->cursor_struct.sql_param_data_count=0;
+   cur_x=-1;
+   cur_y=0;
+   should_delete_flag=1;
+   in_exception_flag=0;
+   in_destruct_flag=0;
+   this->stm_text=0;
+   array_size=arr_size;
+   {
+     int len=strlen(sqlstm)+1;
+     this->stm_text=new char[len];
+     OTL_STRCPY_S(this->stm_text,len,sqlstm);
+     otl_tmpl_ext_hv_decl
+       <TVariableStruct,TTimestampStruct,TExceptionStruct,
+       TConnectStruct,TCursorStruct> hvd(this->stm_text,arr_size);
+     hvd.alloc_host_var_list(this->vl,this->vl_len,db);
+   }
+   try{
+     this->parse();
+     for(i=0;i<this->vl_len;++i){
+       if(this->vl[i]->var_struct.otl_adapter==otl_odbc_adapter){
+         this->vl[i]->var_struct.lob_stream_mode=lob_stream_mode;
+         this->vl[i]->var_struct.vparam_type=this->vl[i]->param_type;
+         if(this->vl[i]->ftype==otl_var_varchar_long||
+            this->vl[i]->ftype==otl_var_raw_long){
+           this->vl[i]->set_not_null(0);
+         }
+       }
+       bind(*(this->vl[i]));
+     }
+   }catch(OTL_CONST_EXCEPTION OTL_TMPL_EXCEPTION&){
+     cleanup();
+     if(this->adb)this->adb->throw_count++;
+     throw;
+   }
+ }
+
+ otl_tmpl_out_stream
+ (OTL_TMPL_CONNECT& pdb,
+  const bool alob_stream_mode=false,
+  const char* sqlstm_label=0)
+  : OTL_TMPL_CURSOR(pdb)
+ {
+   if(sqlstm_label!=0){
+     if(this->stm_label!=0){
+       delete[] this->stm_label;
+       this->stm_label=0;
+     }
+     size_t len=strlen(sqlstm_label)+1;
+     this->stm_label=new char[len];
+     OTL_STRCPY_S(this->stm_label,len,sqlstm_label);
+   }
+   should_delete_flag=1;
+   in_exception_flag=0;
+   in_destruct_flag=0;
+   dirty=0;
+   auto_commit_flag=1;
+   flush_flag=true;
+   flush_flag2=true;
+   lob_stream_mode=alob_stream_mode;
+   this->cursor_struct.last_param_data_token=0;
+   this->cursor_struct.last_sql_param_data_status=0;
+   this->cursor_struct.sql_param_data_count=0;
+   cur_x=-1;
+   cur_y=0;
+   this->stm_text=0;
+ }
+
+ virtual ~otl_tmpl_out_stream()
+ {in_destruct_flag=1;
+  this->in_destructor=1;
+  if(dirty&&!in_exception_flag&&
+     flush_flag&&flush_flag2)
+   flush();
+  cleanup();
+  in_destruct_flag=0;
+ }
+
+ virtual void flush(const int rowoff=0,const bool force_flush=false)
+ {int i,rc;
+
+ this->_rpc=0;
+
+  if(!dirty)return;
+  if(!flush_flag2)return;
+
+  if(force_flush){
+    if(rowoff>cur_y){
+      clean();
+      return;
+    }
+    int temp_rc;
+    OTL_TRACE_STREAM_EXECUTION2
+    this->exec(OTL_SCAST(otl_stream_buffer_size_type,(cur_y+1)),rowoff);
+    for(i=0;i<this->vl_len;++i){
+      temp_rc=this->vl[i]->var_struct.put_blob();
+      if(temp_rc==0){
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (this->adb->connect_struct,
+           this->stm_label?this->stm_label:
+           this->stm_text);
+      }
+    }
+    if(auto_commit_flag)
+      this->adb->commit();
+    clean();
+    return;
+  }
+
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception()){
+   clean();
+   return; 
+  }
+#endif
+
+  if(this->retcode==0||this->adb->retcode==0){
+    clean();
+    return;
+  }
+  if(cur_x!=this->vl_len-1){
+   in_exception_flag=1;
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception()){
+    clean();
+    return; 
+   }
+#endif
+   throw OTL_TMPL_EXCEPTION
+    (otl_error_msg_3,
+     otl_error_code_3,
+     this->stm_label?this->stm_label:
+     this->stm_text,
+     0);
+  }
+  if(in_destruct_flag){
+    OTL_TRACE_STREAM_EXECUTION2
+    this->retcode=this->cursor_struct.exec(cur_y+1,rowoff);
+    for(i=0;i<this->vl_len;++i){
+      rc=this->vl[i]->var_struct.put_blob();
+      if(rc==0){
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (this->adb->connect_struct,
+           this->stm_label?this->stm_label:
+           this->stm_text);
+      }
+    }
+    if(!this->retcode){
+    clean();
+    in_exception_flag=1;
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return; 
+#endif
+    throw OTL_TMPL_EXCEPTION
+      (this->cursor_struct,
+       this->stm_label?this->stm_label:
+       this->stm_text);
+   }
+   if(auto_commit_flag){
+    this->adb->retcode=this->adb->connect_struct.commit();
+    if(!this->adb->retcode){
+     clean();
+     if(this->adb)this->adb->throw_count++;
+     if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return; 
+#endif
+     throw OTL_TMPL_EXCEPTION
+       (this->adb->connect_struct,
+        this->stm_label?this->stm_label:
+        this->stm_text);
+    }
+   }
+  }else{
+    int temp_rc;
+    OTL_TRACE_STREAM_EXECUTION2
+    this->exec(OTL_SCAST(otl_stream_buffer_size_type,(cur_y+1)),rowoff);
+    for(i=0;i<this->vl_len;++i){
+      temp_rc=this->vl[i]->var_struct.put_blob();
+      if(temp_rc==0){
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (this->adb->connect_struct,
+           this->stm_label?this->stm_label:
+           this->stm_text);
+      }
+    }
+   if(auto_commit_flag)
+    this->adb->commit();
+   if(rowoff>0)
+     clean();
+   else
+     clean(0,cur_y+1);
+  }
+
+ }
+
+ virtual void clean
+ (const int clean_up_error_flag=0,
+  const int rows=0)
+ {
+   
+   int j;
+   if(clean_up_error_flag) {             
+     this->retcode=1;
+     this->in_exception_flag=0;
+   }
+   if(!dirty)return;
+   for(j=0;j<this->vl_len;++j)
+     if(this->vl[j]->param_type!=otl_inout_param)
+       this->vl[j]->bulk_set_not_null
+         (rows==0?this->vl[j]->array_size:rows);
+   cur_x=-1;
+   cur_y=0;
+   dirty=0;
+ }
+
+ void set_commit(int auto_commit=0)
+ {
+   auto_commit_flag=auto_commit;
+ }
+
+ void get_next(void)
+ {
+  if(cur_x<this->vl_len-1)
+   ++cur_x;
+  else{
+   if(cur_y<array_size-1){
+    ++cur_y;
+    cur_x=0;
+   }else{
+    flush();
+    cur_x=0;
+   }
+  }
+  dirty=1;
+ }
+
+  int check_type_throw(int type_code)
+  {
+   in_exception_flag=1;
+   otl_var_info_var
+     (this->vl[cur_x]->name,
+      this->vl[cur_x]->ftype,
+      type_code,
+      var_info,
+      sizeof(var_info));
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return 0; 
+#endif
+   throw OTL_TMPL_EXCEPTION
+     (otl_error_msg_0,
+      otl_error_code_0,
+      this->stm_label?this->stm_label:
+      this->stm_text,
+      var_info);
+  }
+
+ int check_type(int type_code, int tsize)
+ {
+   switch(this->vl[cur_x]->ftype){
+   case otl_var_char:
+     if(type_code==otl_var_char)return 1;
+   case otl_var_db2time:
+   case otl_var_tz_timestamp:
+   case otl_var_ltz_timestamp:
+   case otl_var_db2date:
+     if(type_code==otl_var_timestamp)return 1;
+   case otl_var_refcur:
+     if(type_code==otl_var_refcur)return 1;
+   default:
+     if(this->vl[cur_x]->ftype==type_code &&
+        this->vl[cur_x]->elem_size==tsize)
+       return 1;
+   }
+   return check_type_throw(type_code);
+ }
+
+ void check_buf(void)
+ {
+  if(cur_x==this->vl_len-1 && cur_y==array_size-1)
+   flush();
+ }
+
+ OTL_TMPL_OUT_STREAM& operator<<(const char c)
+ {
+  if(this->vl_len>0){
+   get_next();
+   if(check_type(otl_var_char,1)){
+    char* tmp=OTL_RCAST(char*,this->vl[cur_x]->val(cur_y));
+    tmp[0]=c;
+    tmp[1]=0;
+    this->vl[cur_x]->set_not_null(cur_y);
+   }
+   check_buf();
+  }
+  return *this;
+ }
+
+ OTL_TMPL_OUT_STREAM& operator<<(const unsigned char c)
+ {
+  if(this->vl_len>0){
+   get_next();
+   if(check_type(otl_var_char,1)){
+    unsigned char* tmp=OTL_RCAST(unsigned char*,this->vl[cur_x]->val(cur_y));
+    tmp[0]=c;
+    tmp[1]=0;
+    this->vl[cur_x]->set_not_null(cur_y);
+   }
+   check_buf();
+  }
+  return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ OTL_TMPL_OUT_STREAM& operator<<(const OTL_STRING_CONTAINER& s)
+ {
+   if(this->vl_len>0){
+     get_next();
+     
+     switch(this->vl[cur_x]->ftype){
+     case otl_var_char:
+       {
+         int overflow;
+         otl_strcpy
+           (OTL_RCAST(unsigned char*,this->vl[cur_x]->val(cur_y)),
+            OTL_RCAST(unsigned char*,OTL_CCAST(char*,s.c_str())),
+            overflow,
+            this->vl[cur_x]->elem_size,
+            OTL_SCAST(int,s.length()));
+         if(overflow){
+           otl_var_info_var
+             (this->vl[cur_x]->name,
+              this->vl[cur_x]->ftype,
+              otl_var_char,
+              var_info,
+              sizeof(var_info));
+           in_exception_flag=1;
+           if(this->adb)this->adb->throw_count++;
+           if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+           if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+             uncaught_exception())return *this; 
+#endif
+           throw OTL_TMPL_EXCEPTION
+             (otl_error_msg_4,
+              otl_error_code_4,
+              this->stm_label?this->stm_label:
+              this->stm_text,
+              var_info);
+         }
+         this->vl[cur_x]->set_not_null(cur_y);
+       }
+       break;
+#if defined(OTL_USER_DEFINED_STRING_CLASS_ON) || \
+     defined(OTL_STL) || defined(OTL_ACE)
+     case otl_var_varchar_long:
+     case otl_var_raw_long:
+       {
+         unsigned char* c=OTL_RCAST(unsigned char*,
+                                    this->vl[cur_x]->val(cur_y));
+         int len=OTL_SCAST(int,s.length());
+         this->vl[cur_x]->set_not_null(cur_y);
+         if(len>this->vl[cur_x]->actual_elem_size()){
+           otl_var_info_var
+             (this->vl[cur_x]->name,
+              this->vl[cur_x]->ftype,
+              otl_var_char,
+              var_info,
+              sizeof(var_info));
+           if(this->adb)this->adb->throw_count++;
+           if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+           if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+             uncaught_exception())return *this; 
+#endif
+           throw OTL_TMPL_EXCEPTION
+             (otl_error_msg_5,
+              otl_error_code_5,
+              this->stm_label?this->stm_label:
+              this->stm_text,
+              var_info);
+         }
+         
+         otl_memcpy(c,
+                    OTL_RCAST(unsigned char*,
+                              OTL_CCAST(char*,s.c_str())),
+                    len,
+                    this->vl[cur_x]->ftype);
+         this->vl[cur_x]->set_len(len,cur_y);
+       }
+       break;
+     case otl_var_blob:
+     case otl_var_clob:
+       {
+         int len=OTL_SCAST(int,s.length());
+         if(len>this->vl[cur_x]->actual_elem_size()){
+           otl_var_info_var
+             (this->vl[cur_x]->name,
+              this->vl[cur_x]->ftype,
+              otl_var_char,
+              var_info,
+              sizeof(var_info));
+           if(this->adb)this->adb->throw_count++;
+           if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+           if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+             uncaught_exception())return *this; 
+#endif
+           throw OTL_TMPL_EXCEPTION
+             (otl_error_msg_5,
+              otl_error_code_5,
+              this->stm_label?this->stm_label:
+              this->stm_text,
+              var_info);
+         }
+         this->vl[cur_x]->set_not_null(cur_y);
+         this->vl[cur_x]->var_struct.save_blob
+           (OTL_RCAST(unsigned char*,OTL_CCAST(char*,s.c_str())),len,0);
+       }
+       break;
+#endif
+     default:
+       check_type(otl_var_char,1);
+     } // switch     
+     check_buf();
+   }
+   return *this;
+ }
+#endif
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+  OTL_TMPL_OUT_STREAM& operator<<(const OTL_UNICODE_STRING_TYPE& s)
+  {
+    if(this->vl_len>0){
+      get_next();
+      switch(this->vl[cur_x]->ftype){
+      case otl_var_char:
+        {
+          int overflow;
+          otl_strcpy4
+            (OTL_RCAST(unsigned char*,this->vl[cur_x]->val(cur_y)),
+             OTL_RCAST(unsigned char*,
+                       OTL_CCAST(OTL_UNICODE_CHAR_TYPE*,s.c_str())),
+             overflow,
+             this->vl[cur_x]->elem_size,
+             OTL_SCAST(int,s.length())
+             );
+          if(overflow){
+            otl_var_info_var
+              (this->vl[cur_x]->name,
+               this->vl[cur_x]->ftype,
+               otl_var_char,
+               var_info,
+               sizeof(var_info));
+            in_exception_flag=1;
+            if(this->adb)this->adb->throw_count++;
+            if(this->adb&&this->adb->throw_count>1)return *this;
+            throw OTL_TMPL_EXCEPTION
+              (otl_error_msg_4,
+               otl_error_code_4,
+               this->stm_label?this->stm_label:
+               this->stm_text,
+               var_info);
+          }
+          this->vl[cur_x]->set_not_null(cur_y);
+          break;
+        }
+      case otl_var_varchar_long:
+        {
+          unsigned char* c=OTL_RCAST(unsigned char*,
+                                     this->vl[cur_x]->val(cur_y));
+          int len=OTL_SCAST(int,s.length());
+          this->vl[cur_x]->set_not_null(cur_y);
+          if(len>this->vl[cur_x]->actual_elem_size()){
+            otl_var_info_var
+              (this->vl[cur_x]->name,
+               this->vl[cur_x]->ftype,
+               otl_var_char,
+               var_info,
+               sizeof(var_info));
+            if(this->adb)this->adb->throw_count++;
+            if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+            if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+              uncaught_exception())return *this; 
+#endif
+            throw OTL_TMPL_EXCEPTION
+              (otl_error_msg_5,
+               otl_error_code_5,
+               this->stm_label?this->stm_label:
+               this->stm_text,
+               var_info);
+          }
+          otl_memcpy(c,
+                     OTL_RCAST(unsigned char*,
+                               OTL_CCAST(OTL_UNICODE_CHAR_TYPE*,s.c_str())),
+                     len,
+                     this->vl[cur_x]->ftype);
+          this->vl[cur_x]->set_len(len,cur_y);
+          break;
+        }
+      case otl_var_clob:
+        {
+          int len=OTL_SCAST(int,s.length());
+          if(len>this->vl[cur_x]->actual_elem_size()){
+            otl_var_info_var
+              (this->vl[cur_x]->name,
+               this->vl[cur_x]->ftype,
+               otl_var_char,
+               var_info,
+               sizeof(var_info));
+            if(this->adb)this->adb->throw_count++;
+            if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+            if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+              uncaught_exception())return *this; 
+#endif
+            throw OTL_TMPL_EXCEPTION
+              (otl_error_msg_5,
+               otl_error_code_5,
+               this->stm_label?this->stm_label:
+               this->stm_text,
+               var_info);
+          }
+          this->vl[cur_x]->set_not_null(cur_y);
+          this->vl[cur_x]->var_struct.save_blob
+            (OTL_RCAST(const unsigned char*,s.c_str()),
+             len,
+             0);
+        }
+        break;
+      default:
+        check_type(otl_var_char,1);
+      }
+      check_buf();
+    }
+    return *this;
+  }
+#endif
+
+  OTL_TMPL_OUT_STREAM& operator<<(const char* s)
+  {
+    if(this->vl_len>0){
+      get_next();
+      if(check_type(otl_var_char,1)){
+
+        int overflow;
+        otl_strcpy
+          (OTL_RCAST(unsigned char*,this->vl[cur_x]->val(cur_y)),
+           OTL_RCAST(unsigned char*,OTL_CCAST(char*,s)),
+           overflow,
+           this->vl[cur_x]->elem_size
+           );
+        if(overflow){
+          otl_var_info_var
+            (this->vl[cur_x]->name,
+             this->vl[cur_x]->ftype,
+             otl_var_char,
+             var_info,
+             sizeof(var_info));
+          in_exception_flag=1;
+          if(this->adb)this->adb->throw_count++;
+          if(this->adb&&this->adb->throw_count>1)return *this;
+          throw OTL_TMPL_EXCEPTION
+            (otl_error_msg_4,
+             otl_error_code_4,
+             this->stm_label?this->stm_label:
+             this->stm_text,
+             var_info);
+        }
+        this->vl[cur_x]->set_not_null(cur_y);
+      }
+      check_buf();
+    }
+    return *this;
+  }
+
+ OTL_TMPL_OUT_STREAM& operator<<(const unsigned char* s)
+ {
+  if(this->vl_len>0){
+   get_next();
+   if(check_type(otl_var_char,1)){
+
+    int overflow;
+    otl_strcpy4
+     (OTL_RCAST(unsigned char*,this->vl[cur_x]->val(cur_y)),
+      OTL_CCAST(unsigned char*,s),
+      overflow,
+      this->vl[cur_x]->elem_size
+     );
+    if(overflow){
+     otl_var_info_var
+      (this->vl[cur_x]->name,
+       this->vl[cur_x]->ftype,
+       otl_var_char,
+       var_info,
+       sizeof(var_info));
+     in_exception_flag=1;
+     if(this->adb)this->adb->throw_count++;
+     if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return *this; 
+#endif
+     throw OTL_TMPL_EXCEPTION
+      (otl_error_msg_4,
+       otl_error_code_4,
+       this->stm_label?this->stm_label:
+       this->stm_text,
+       var_info);
+    }
+    this->vl[cur_x]->set_not_null(cur_y);
+   }
+   check_buf();
+  }
+  return *this;
+ }
+
+#define OTL_D3(T,T_type)                                \
+ OTL_TMPL_OUT_STREAM& operator<<(const T n)             \
+ {                                                      \
+  if(this->vl_len>0){                                   \
+   get_next();                                          \
+   if(check_type(T_type,sizeof(T))){                    \
+    *OTL_RCAST(T*,this->vl[cur_x]->val(cur_y))=n;       \
+    this->vl[cur_x]->set_not_null(cur_y);               \
+   }                                                    \
+   check_buf();                                         \
+  }                                                     \
+  return *this;                                         \
+ }
+
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  OTL_D3(int,otl_var_int)
+#if defined(OTL_BIGINT)
+  OTL_D3(OTL_BIGINT,otl_var_bigint)
+#endif
+  OTL_D3(unsigned,otl_var_unsigned_int)
+  OTL_D3(long,otl_var_long_int)
+  OTL_D3(short,otl_var_short)
+  OTL_D3(float,otl_var_float)
+  OTL_D3(double,otl_var_double)
+#else
+    template<OTL_TYPE_NAME T,const int T_type> OTL_D3(T,T_type)
+#endif
+
+#if defined(OTL_PL_TAB)
+ OTL_TMPL_OUT_STREAM& operator<<(otl_pl_tab_generic& tab)
+ {
+  if(this->vl_len>0){
+   get_next();
+   if(check_type(tab.vtype,tab.elem_size)){
+    int i,tmp_len;
+    if(tab.len()<=this->vl[cur_x]->array_size)
+     tmp_len=tab.len();
+    else
+     tmp_len=this->vl[cur_x]->array_size;
+    this->vl[cur_x]->set_pl_tab_len(tmp_len);
+    if(tab.vtype==otl_var_char){
+     int i2;
+     for(i2=0;i2<tmp_len;++i2){
+      int overflow;
+      otl_strcpy4
+       (OTL_RCAST(unsigned char*,this->vl[cur_x]->val(i2)),
+        OTL_RCAST(unsigned char*,tab.val(i2)),
+        overflow,
+        this->vl[cur_x]->elem_size
+       );
+      if(overflow){
+       char tmp_var_info[256];
+       otl_var_info_var
+        (this->vl[cur_x]->name,
+         this->vl[cur_x]->ftype,
+         otl_var_char,
+         tmp_var_info,
+         sizeof(tmp_var_info));
+       if(this->adb)this->adb->throw_count++;
+       if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+       if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+         uncaught_exception())return *this; 
+#endif
+       throw OTL_TMPL_EXCEPTION
+        (otl_error_msg_4,
+         otl_error_code_4,
+         this->stm_label?this->stm_label:
+         this->stm_text,
+         tmp_var_info);
+      }
+     }
+    }else if(tab.vtype==otl_var_timestamp){
+      otl_datetime* ext_dt=OTL_RCAST(otl_datetime*,tab.p_v);
+      otl_oracle_date* int_dt=OTL_RCAST(otl_oracle_date*,
+                                        this->vl[cur_x]->val());
+      int j;
+      for(j=0;j<tmp_len;++j){
+        convert_date(*int_dt,*ext_dt);
+        ++int_dt;
+        ++ext_dt;
+      }
+    }else
+     memcpy(OTL_RCAST(char*,this->vl[cur_x]->val()),
+            OTL_RCAST(char*,tab.val()),
+            tab.elem_size*tmp_len);
+    for(i=0;i<tmp_len;++i){
+     if(tab.is_null(i))
+      this->vl[cur_x]->set_null(i);
+     else
+      this->vl[cur_x]->set_not_null(i);
+    }
+   }
+   check_buf();
+  }
+  return *this;
+ }
+#endif
+
+#if defined(OTL_PL_TAB) && defined(OTL_STL)
+ OTL_TMPL_OUT_STREAM& operator<<(otl_pl_vec_generic& vec)
+ {
+  if(this->vl_len>0){
+   get_next();
+   if(check_type(vec.vtype,vec.elem_size)){
+    int i,tmp_len;
+    if(vec.len()<=this->vl[cur_x]->array_size)
+     tmp_len=vec.len();
+    else
+     tmp_len=this->vl[cur_x]->array_size;
+    this->vl[cur_x]->set_pl_tab_len(tmp_len);
+    switch(vec.vtype){
+    case otl_var_char:
+     int i2;
+     for(i2=0;i2<tmp_len;++i2){
+      int overflow;
+      otl_strcpy
+       (OTL_RCAST(unsigned char*,this->vl[cur_x]->val(i2)),
+        OTL_RCAST(unsigned char*,
+                  OTL_CCAST(char*,(*OTL_RCAST(STD_NAMESPACE_PREFIX 
+                                              vector<OTL_STRING_CONTAINER>*,
+                                              vec.p_v))[i2].c_str())),
+        overflow,
+        this->vl[cur_x]->elem_size,
+        OTL_SCAST(int,(*OTL_RCAST(STD_NAMESPACE_PREFIX 
+                                  vector<OTL_STRING_CONTAINER>*,
+                                  vec.p_v))[i2].length())
+       );
+      if(overflow){
+       char temp_var_info[256];
+       otl_var_info_var
+        (this->vl[cur_x]->name,
+         this->vl[cur_x]->ftype,
+         otl_var_char,
+         temp_var_info,
+         sizeof(temp_var_info));
+       if(this->adb)this->adb->throw_count++;
+       if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+       if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+         uncaught_exception())return *this; 
+#endif
+       throw OTL_TMPL_EXCEPTION
+        (otl_error_msg_4,
+         otl_error_code_4,
+         this->stm_label?this->stm_label:
+         this->stm_text,
+         temp_var_info);
+      }
+     }
+     break;
+    case otl_var_timestamp:
+     {
+      otl_oracle_date* int_dt=OTL_RCAST(otl_oracle_date*,this->vl[cur_x]->val());
+      int j;
+      otl_datetime* ext_dt;
+      for(j=0;j<tmp_len;++j){
+       ext_dt=OTL_RCAST(otl_datetime*,
+                        &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<otl_datetime>*,
+                                     vec.p_v))[j]);
+       convert_date(*int_dt,*ext_dt);
+       ++int_dt;
+      }
+     }
+     break;
+    case otl_var_int:
+     memcpy(OTL_RCAST(char*,this->vl[cur_x]->val()),
+            OTL_RCAST(char*,
+                      &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<int>*,vec.p_v))[0]),
+            sizeof(int)*tmp_len);
+     break;
+    case otl_var_double:
+     memcpy(OTL_RCAST(char*,this->vl[cur_x]->val()),
+            OTL_RCAST(char*,
+                      &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<double>*,vec.p_v))[0]),
+            sizeof(double)*tmp_len);
+     break;
+    case otl_var_float:
+     memcpy(OTL_RCAST(char*,this->vl[cur_x]->val()),
+            OTL_RCAST(char*,
+                      &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<float>*,vec.p_v))[0]),
+            sizeof(float)*tmp_len);
+     break;
+    case otl_var_unsigned_int:
+     memcpy(OTL_RCAST(char*,this->vl[cur_x]->val()),
+            OTL_RCAST(char*,
+                      &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<unsigned>*,vec.p_v))[0]),
+            sizeof(unsigned)*tmp_len);
+     break;
+    case otl_var_short:
+     memcpy(OTL_RCAST(char*,this->vl[cur_x]->val()),
+            OTL_RCAST(char*,
+                      &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<short>*,vec.p_v))[0]),
+            sizeof(short)*tmp_len);
+     break;
+    case otl_var_long_int:
+     memcpy(OTL_RCAST(char*,this->vl[cur_x]->val()),
+            OTL_RCAST(char*,
+                      &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<long int>*,vec.p_v))[0]),
+            sizeof(long int)*tmp_len);
+     break;
+    }
+    for(i=0;i<tmp_len;++i){
+     if(vec.is_null(i))
+      this->vl[cur_x]->set_null(i);
+     else
+      this->vl[cur_x]->set_not_null(i);
+    }
+   }
+   check_buf();
+  }
+  return *this;
+ }
+#endif
+
+ OTL_TMPL_OUT_STREAM& operator<<(const otl_null& /* n */)
+ {
+  if(this->vl_len>0){
+   get_next();
+   this->vl[cur_x]->set_null(cur_y);
+   check_buf();
+  }
+  return *this;
+ }
+
+ OTL_TMPL_OUT_STREAM& operator<<(const TTimestampStruct& t)
+ {
+  if(this->vl_len>0){
+   get_next();
+   if(check_type(otl_var_timestamp,sizeof(TTimestampStruct))){
+    TTimestampStruct* tm=
+     OTL_RCAST(TTimestampStruct*,this->vl[cur_x]->val(cur_y));
+    this->vl[cur_x]->set_not_null(cur_y);
+    int rc=this->vl[cur_x]->var_struct.write_dt
+      (tm,&t,sizeof(TTimestampStruct));
+    if(rc==0){
+      if(this->adb)this->adb->throw_count++;
+      if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+      if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+        uncaught_exception())return *this; 
+#endif
+      throw OTL_TMPL_EXCEPTION
+        (this->adb->connect_struct,
+         this->stm_label?this->stm_label:
+         this->stm_text);
+    }
+   }
+   check_buf();
+  }
+  return *this;
+ }
+
+ OTL_TMPL_OUT_STREAM& operator<<(const otl_long_string& s)
+ {
+  if(this->vl_len>0){
+   get_next();
+
+   switch(this->vl[cur_x]->ftype){
+   case otl_var_varchar_long:
+   case otl_var_raw_long:
+   case otl_var_raw:
+     {
+       unsigned char* c=OTL_RCAST(unsigned char*,this->vl[cur_x]->val(cur_y));
+       int len=OTL_CCAST(otl_long_string*,&s)->len();
+       if(this->vl[cur_x]->ftype!=otl_var_raw)
+         this->vl[cur_x]->set_not_null(cur_y);
+       if(len>this->vl[cur_x]->actual_elem_size()){
+         otl_var_info_var
+           (this->vl[cur_x]->name,
+            this->vl[cur_x]->ftype,
+            otl_var_long_string,
+            var_info,
+            sizeof(var_info));
+         if(this->adb)this->adb->throw_count++;
+         if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+         if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+           uncaught_exception())return *this; 
+#endif
+         throw OTL_TMPL_EXCEPTION
+           (otl_error_msg_5,
+            otl_error_code_5,
+            this->stm_label?this->stm_label:
+            this->stm_text,
+            var_info);
+       }
+       if((this->vl[cur_x]->var_struct.otl_adapter==otl_ora7_adapter||
+           this->vl[cur_x]->var_struct.otl_adapter==otl_ora8_adapter) &&
+          this->vl[cur_x]->ftype==otl_var_raw){
+         otl_memcpy
+           (c+sizeof(unsigned short),
+            s.v,
+            len,
+            this->vl[cur_x]->ftype);
+         *OTL_RCAST(unsigned short*,
+                    this->vl[cur_x]->val(cur_y))=OTL_SCAST(unsigned short,len);
+         this->vl[cur_x]->set_len(len,cur_y);
+       }else{
+         otl_memcpy(c,s.v,len,this->vl[cur_x]->ftype);
+         this->vl[cur_x]->set_len(len,cur_y);
+       }
+     }
+     break;
+   case otl_var_blob:
+   case otl_var_clob:
+     {
+       int len=OTL_CCAST(otl_long_string*,&s)->len();
+       if(len>this->vl[cur_x]->actual_elem_size()){
+         otl_var_info_var
+           (this->vl[cur_x]->name,
+            this->vl[cur_x]->ftype,
+            otl_var_long_string,
+            var_info,
+            sizeof(var_info));
+         if(this->adb)this->adb->throw_count++;
+         if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+         if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+           uncaught_exception())return *this; 
+#endif
+         throw OTL_TMPL_EXCEPTION
+           (otl_error_msg_5,
+            otl_error_code_5,
+            this->stm_label?this->stm_label:
+            this->stm_text,
+            var_info);
+       }
+       this->vl[cur_x]->set_not_null(cur_y);
+       this->vl[cur_x]->var_struct.save_blob(s.v,len,s.extern_buffer_flag);
+     }
+     break;
+   }
+   check_buf();
+  }
+  return *this;
+ }
+
+#if defined(OTL_ORA8)||defined(OTL_ODBC)
+#define OTL_TMPL_CUR_DUMMY OTL_TMPL_CURSOR
+
+ OTL_TMPL_OUT_STREAM& operator<<
+  (otl_lob_stream_generic& s)
+ {
+  if(this->vl_len>0){
+   get_next();
+   if((s.ora_lob&&
+       this->vl[cur_x]->ftype==otl_var_blob||
+       this->vl[cur_x]->ftype==otl_var_clob)||
+      (this->vl[cur_x]->ftype==otl_var_varchar_long||
+      this->vl[cur_x]->ftype==otl_var_raw_long)){
+    s.init
+     (this->vl[cur_x],
+      this->adb,
+      OTL_RCAST(OTL_TMPL_CUR_DUMMY*,this),
+      0,
+      otl_lob_stream_write_mode);
+    if(!s.ora_lob)
+     this->vl[cur_x]->set_not_null(cur_y);
+   }
+   check_buf();
+  }else{
+   char temp_var_info[256];
+   otl_var_info_var
+    (this->vl[cur_x]->name,
+     this->vl[cur_x]->ftype,
+     otl_var_long_string,
+     temp_var_info,
+     sizeof(temp_var_info));
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return *this; 
+#endif
+   throw OTL_TMPL_EXCEPTION
+    (otl_error_msg_0,
+     otl_error_code_0,
+     this->stm_label?this->stm_label:
+     this->stm_text,
+     temp_var_info);
+  }
+  return *this;
+ }
+#undef OTL_TMPL_CUR_DUMMY
+#endif
+
+};
+
+template <OTL_TYPE_NAME TExceptionStruct,
+          OTL_TYPE_NAME TConnectStruct,
+          OTL_TYPE_NAME TCursorStruct,
+          OTL_TYPE_NAME TVariableStruct,
+          OTL_TYPE_NAME TTimestampStruct>
+class otl_tmpl_inout_stream: public OTL_TMPL_OUT_STREAM{
+public:
+
+ otl_tmpl_variable<TVariableStruct>** in_vl;
+ int iv_len;
+ int cur_in_x;
+ int cur_in_y;
+ int in_y_len;
+ int null_fetched;
+ otl_tmpl_variable<TVariableStruct>** avl;
+ int avl_len;
+ char var_info[256];
+
+ void cleanup(void)
+ {int i;
+  for(i=0;i<avl_len;++i){
+   delete avl[i];
+  }
+  delete[] avl;
+  delete[] in_vl;
+ }
+
+ otl_tmpl_inout_stream
+ (otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  OTL_TMPL_CONNECT& pdb,
+  const bool alob_stream_mode=false,
+  const char* sqlstm_label=0)
+  : OTL_TMPL_OUT_STREAM(pdb,alob_stream_mode,sqlstm_label)
+ {
+  int i,j;
+  this->dirty=0;
+  this->auto_commit_flag=1;
+  this->adb=&pdb;
+  this->in_exception_flag=0;
+  this->stm_text=0;
+  this->array_size=arr_size;
+  this->should_delete_flag=0;
+
+  in_vl=0;
+  iv_len=0;
+  avl_len=0;
+  avl=0;
+
+  {
+   size_t len=strlen(sqlstm)+1;
+   this->stm_text=new char[len];
+   OTL_STRCPY_S(this->stm_text,len,sqlstm);
+   otl_tmpl_ext_hv_decl
+    <TVariableStruct,TTimestampStruct,TExceptionStruct,
+     TConnectStruct,TCursorStruct> hvd(this->stm_text,arr_size);
+   if(hvd.vst[otl_tmpl_ext_hv_decl
+               <TVariableStruct,TTimestampStruct,TExceptionStruct,
+                TConnectStruct,TCursorStruct>::def]==hvd.len){
+    this->should_delete_flag=1;
+    hvd.alloc_host_var_list(this->vl,this->vl_len,pdb);
+   }else{
+    for(i=0;i<hvd.len;++i){
+     if(hvd.inout[i]==otl_tmpl_ext_hv_decl
+                       <TVariableStruct,
+                        TTimestampStruct,
+                        TExceptionStruct,
+                        TConnectStruct,
+                        TCursorStruct>::in)
+      ++this->vl_len;
+     else if(hvd.inout[i]==otl_tmpl_ext_hv_decl
+                            <TVariableStruct,
+                             TTimestampStruct,
+                             TExceptionStruct,
+                             TConnectStruct,
+                             TCursorStruct>::out)
+      ++iv_len;
+     else if(hvd.inout[i]==otl_tmpl_ext_hv_decl
+                            <TVariableStruct,
+                             TTimestampStruct,
+                             TExceptionStruct,
+                             TConnectStruct,
+                             TCursorStruct>::io){
+      ++this->vl_len;
+      ++iv_len;
+     }
+    }
+    if(this->vl_len>0){
+     this->vl=new otl_tmpl_variable<TVariableStruct>*[this->vl_len];
+    }
+    if(iv_len>0){
+     in_vl=new otl_tmpl_variable<TVariableStruct>*[iv_len];
+    }
+    if(hvd.len>0){
+     avl=new otl_tmpl_variable<TVariableStruct>*[hvd.len];
+    }
+    iv_len=0; this->vl_len=0; avl_len=hvd.len;
+    for(j=0;j<avl_len;++j){
+#if defined(OTL_STREAM_LEGACY_BUFFER_SIZE_TYPE)
+     if(hvd.pl_tab_size[j]>32767){
+      char tmp_var_info[256];
+      otl_var_info_var
+       (hvd[j],
+        otl_var_none,
+        otl_var_none,
+        tmp_var_info,
+        sizeof(tmp_var_info));
+      if(this->adb)this->adb->throw_count++;
+      if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+      if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+        uncaught_exception())return; 
+#endif
+      throw OTL_TMPL_EXCEPTION
+       (otl_error_msg_6,
+        otl_error_code_6,
+        this->stm_label?this->stm_label:
+        this->stm_text,
+        tmp_var_info);
+      }
+#endif
+     otl_tmpl_variable<TVariableStruct>* v=hvd.alloc_var
+      (hvd[j],
+       hvd.inout[j],
+       otl_tmpl_ext_hv_decl
+        <TVariableStruct,TTimestampStruct,TExceptionStruct,
+         TConnectStruct,TCursorStruct>::def,
+       pdb,
+       hvd.pl_tab_size[j]);
+     if(v==0){
+       int k;
+       for(k=0;k<j;++k){
+         delete avl[k];
+         avl[k]=0;
+       }
+       delete[] avl;
+       avl=0;
+       this->vl_len=0;
+       throw OTL_TMPL_EXCEPTION
+         (otl_error_msg_12,
+          otl_error_code_12,
+          hvd.stm_label_?hvd.stm_label_:hvd.stm_text_,
+          hvd[j]);
+     }
+     v->name_pos=j+1;
+     avl[j]=v;
+     if(hvd.inout[j]==otl_tmpl_ext_hv_decl
+                        <TVariableStruct,
+                         TTimestampStruct,
+                         TExceptionStruct,
+                         TConnectStruct,
+                         TCursorStruct>::in){
+      ++this->vl_len;
+      this->vl[this->vl_len-1]=v;
+      v->set_param_type(otl_input_param);
+     }else if(hvd.inout[j]==otl_tmpl_ext_hv_decl
+                              <TVariableStruct,
+                               TTimestampStruct,
+                               TExceptionStruct,
+                               TConnectStruct,
+                               TCursorStruct>::out){
+      ++iv_len;
+      in_vl[iv_len-1]=v;
+      v->set_param_type(otl_output_param);
+     }else if(hvd.inout[j]==otl_tmpl_ext_hv_decl
+                              <TVariableStruct,
+                               TTimestampStruct,
+                               TExceptionStruct,
+                               TConnectStruct,
+                               TCursorStruct>::io){
+      ++this->vl_len;
+      ++iv_len;
+      this->vl[this->vl_len-1]=v;
+      in_vl[iv_len-1]=v;
+      v->set_param_type(otl_inout_param);
+     }
+    }
+   }
+  }
+  try{
+   this->parse();
+   for(i=0;i<this->vl_len;++i){
+    if(this->vl[i]->var_struct.otl_adapter==otl_odbc_adapter){
+     this->vl[i]->var_struct.lob_stream_mode=this->lob_stream_mode;
+     this->vl[i]->var_struct.vparam_type=this->vl[i]->param_type;
+     if(this->vl[i]->ftype==otl_var_varchar_long||
+        this->vl[i]->ftype==otl_var_raw_long){
+      this->vl[i]->set_not_null(0);
+     }
+    }
+    this->bind(*(this->vl[i]));
+   }
+   for(j=0;j<iv_len;++j)
+    this->bind(*in_vl[j]);
+   rewind();
+  }catch(OTL_CONST_EXCEPTION OTL_TMPL_EXCEPTION&){
+   cleanup();
+   if(this->adb)this->adb->throw_count++;
+   throw;
+  }
+
+ }
+
+ virtual ~otl_tmpl_inout_stream()
+ {this->in_destructor=1;
+  if(!this->in_exception_flag)
+   flush();
+  cleanup();
+ }
+
+ int eof(void)
+ {
+  if(iv_len==0)return 1;
+  if(in_y_len==0)return 1;
+  if(cur_in_y<=in_y_len-1)return 0;
+  return 1;
+ }
+
+ void flush(const int rowoff=0, const bool force_flush=false)
+ {
+  if(this->vl_len==0)return;
+  in_y_len=this->cur_y+1;
+  cur_in_y=0;
+  cur_in_x=0;
+  if(!this->in_exception_flag)
+   OTL_TMPL_OUT_STREAM::flush(rowoff,force_flush);
+ }
+
+  void clean(const int clean_up_error_flag=0,const int rows=0)
+ {
+  if(this->vl_len!=0) {
+    in_y_len=this->cur_y+1;
+    cur_in_y=0;
+    cur_in_x=0;
+  }
+  OTL_TMPL_OUT_STREAM::clean(clean_up_error_flag,rows);
+ }
+
+ void rewind(void)
+ {
+  flush();
+  cur_in_x=0;
+  cur_in_y=0;
+  this->cur_x=-1;
+  this->cur_y=0;
+  in_y_len=0;
+  null_fetched=0;
+  if(this->vl_len==0){
+   this->exec(this->array_size);
+   in_y_len=this->array_size;
+   cur_in_y=0;
+   cur_in_x=0;
+  }
+ }
+
+ int is_null(void)
+ {
+  return null_fetched;
+ }
+
+ void get_in_next(void)
+ {
+  if(iv_len==0)return;
+  if(in_y_len==0)return;
+  if(cur_in_x<iv_len-1)
+   ++cur_in_x;
+  else{
+   if(cur_in_y<in_y_len-1){
+    ++cur_in_y;
+    cur_in_x=0;
+   }else{
+    cur_in_y=0;
+    cur_in_x=0;
+    in_y_len=0;
+   }
+  }
+ }
+
+  int check_in_type_throw(int type_code)
+  {
+    this->in_exception_flag=1;
+    otl_var_info_var
+      (in_vl[cur_in_x]->name,
+       in_vl[cur_in_x]->ftype,
+       type_code,
+       var_info,
+       sizeof(var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw OTL_TMPL_EXCEPTION
+      (otl_error_msg_0,
+       otl_error_code_0,
+       this->stm_label?this->stm_label:
+       this->stm_text,
+       var_info);
+  }
+
+  int check_in_type(int type_code,int tsize)
+  {
+    switch(in_vl[cur_in_x]->ftype){
+    case otl_var_refcur:
+      if(type_code==otl_var_refcur)
+        return 1;
+    case otl_var_db2time:
+    case otl_var_db2date:
+      if(type_code==otl_var_timestamp)
+        return 1;
+    case otl_var_char:
+      if(type_code==otl_var_char)
+        return 1;
+    default:
+      if(in_vl[cur_in_x]->ftype==type_code &&
+         in_vl[cur_in_x]->elem_size==tsize)
+        return 1;
+    }
+    return check_in_type_throw(type_code);
+ }
+
+ int is_null_intern(void)
+ {
+  if(iv_len==0)return 0;
+  if(in_y_len==0)return 0;
+  if(in_y_len>0)
+   return in_vl[cur_in_x]->is_null(cur_in_y);
+  return 0;
+ }
+
+
+ OTL_TMPL_INOUT_STREAM& operator>>(char& c)
+ {
+  if(eof())return *this;
+  if(check_in_type(otl_var_char,1)){
+   c=*OTL_RCAST(char*,in_vl[cur_in_x]->val(cur_in_y));
+   null_fetched=is_null_intern();
+  }
+  get_in_next();
+  return *this;
+ }
+
+ OTL_TMPL_INOUT_STREAM& operator>>(unsigned char& c)
+ {
+  if(eof())return *this;
+  if(check_in_type(otl_var_char,1)){
+   c=*OTL_RCAST(unsigned char*,in_vl[cur_in_x]->val(cur_in_y));
+   null_fetched=is_null_intern();
+  }
+  get_in_next();
+  return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ OTL_TMPL_INOUT_STREAM& operator>>(OTL_STRING_CONTAINER& s)
+ {
+  if(eof())return *this;
+  switch(in_vl[cur_in_x]->ftype){
+  case otl_var_char:
+    {
+#if defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,in_vl[cur_in_x]->val(cur_in_y)),1);
+#else
+      s=OTL_RCAST(char*,in_vl[cur_in_x]->val(cur_in_y));
+#endif
+      null_fetched=is_null_intern();
+    }
+    break;
+#if defined(USER_DEFINED_STRING_CLASS) || \
+    defined(OTL_STL) || defined(OTL_ACE)
+  case otl_var_varchar_long:
+  case otl_var_raw_long:
+    {
+      unsigned char* c=
+        OTL_RCAST(unsigned char*,in_vl[cur_in_x]->val(cur_in_y));
+      int len=in_vl[cur_in_x]->get_len();
+#if (defined(USER_DEFINED_STRING_CLASS) || defined(OTL_STL)) && !defined(OTL_ACE)
+      s.assign(OTL_RCAST(char*,c),len);
+#elif defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,c),len,1);
+#endif
+      null_fetched=is_null_intern();
+    }
+    break;
+  case otl_var_blob:
+  case otl_var_clob:
+    {
+      int len=0;
+      int max_long_sz=this->adb->get_max_long_size();
+      otl_auto_array_ptr<unsigned char> loc_ptr(max_long_sz);
+      unsigned char* temp_buf=loc_ptr.ptr;
+      int rc=in_vl[cur_in_x]->var_struct.get_blob
+        (cur_in_y,
+         temp_buf,
+         max_long_sz,
+         len);
+      if(rc==0){
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return *this; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (this->adb->connect_struct,
+           this->stm_label?this->stm_label:
+           this->stm_text);
+      }
+#if (defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)) && !defined(OTL_ACE)
+      s.assign(OTL_RCAST(char*,temp_buf),len);
+#elif defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,temp_buf),len,1);
+#endif
+
+      null_fetched=is_null_intern();
+    }
+    break;
+#endif
+  default:
+    check_in_type(otl_var_char,1);
+  } // switch
+  get_in_next();
+  return *this;
+ }
+#endif
+
+ OTL_TMPL_INOUT_STREAM& operator>>(char* s)
+ {
+  if(eof())return *this;
+  if(check_in_type(otl_var_char,1)){
+   otl_strcpy(OTL_RCAST(unsigned char*,s),
+              OTL_RCAST(const unsigned char*,in_vl[cur_in_x]->val(cur_in_y)));
+   null_fetched=is_null_intern();
+  }
+  get_in_next();
+  return *this;
+ }
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+  OTL_TMPL_INOUT_STREAM& operator>>(OTL_UNICODE_STRING_TYPE& s)
+  {
+    if(eof())return *this;
+    if(check_in_type(otl_var_char,1)){
+#if defined(OTL_ODBC) || defined(DB2_CLI)
+      s=OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,in_vl[cur_in_x]->val(cur_in_y));
+#else
+#if defined(OTL_UNICODE_STRING_TYPE_CAST_FROM_CHAR)
+      OTL_UNICODE_CHAR_TYPE* temp_s=OTL_RCAST
+        (OTL_UNICODE_CHAR_TYPE*,in_vl[cur_in_x]->val(cur_in_y));
+      OTL_UNICODE_STRING_TYPE_CAST_FROM_CHAR(s,temp_s+1,*temp_s);
+#else
+      OTL_UNICODE_CHAR_TYPE* temp_s=OTL_RCAST
+        (OTL_UNICODE_CHAR_TYPE*,in_vl[cur_in_x]->val(cur_in_y));
+      s.assign(temp_s+1,*temp_s);
+#endif
+#endif
+
+
+      null_fetched=is_null_intern();
+    }
+    get_in_next();
+    return *this;
+  }
+#endif
+
+ OTL_TMPL_INOUT_STREAM& operator>>(unsigned char* s)
+ {
+  if(eof())return *this;
+  if(check_in_type(otl_var_char,1)){
+   otl_strcpy2(OTL_RCAST(unsigned char*,s),
+               OTL_RCAST(unsigned char*,in_vl[cur_in_x]->val(cur_in_y)),
+               in_vl[cur_in_x]->get_len(cur_in_y)
+              );
+   null_fetched=is_null_intern();
+  }
+  get_in_next();
+  return *this;
+ }
+
+#define OTL_D4(T,T_type)                                \
+ OTL_TMPL_INOUT_STREAM& operator>>(T& n)                \
+ {                                                      \
+  if(eof())return *this;                                \
+  if(check_in_type(T_type,sizeof(T))){                  \
+   n=*OTL_RCAST(T*,in_vl[cur_in_x]->val(cur_in_y));     \
+   null_fetched=is_null_intern();                       \
+  }                                                     \
+  get_in_next();                                        \
+  return *this;                                         \
+ }
+
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  OTL_D4(int,otl_var_int)
+  OTL_D4(unsigned,otl_var_unsigned_int)
+#if defined(OTL_BIGINT)
+  OTL_D4(OTL_BIGINT,otl_var_bigint)
+#endif
+  OTL_D4(long,otl_var_long_int)
+  OTL_D4(short,otl_var_short)
+  OTL_D4(float,otl_var_float)
+  OTL_D4(double,otl_var_double)
+#else
+    template<OTL_TYPE_NAME T,const int T_type> OTL_D4(T,T_type)
+#endif
+
+#if defined(OTL_PL_TAB)
+ OTL_TMPL_INOUT_STREAM& operator>>(otl_pl_tab_generic& tab)
+ {
+  if(eof())return *this;
+  if(check_in_type(tab.vtype,tab.elem_size)){
+    int i,tmp_len;
+    tmp_len=in_vl[cur_in_x]->get_pl_tab_len();
+    if(tab.tab_size<tmp_len)
+     tmp_len=tab.tab_size;
+    tab.set_len(tmp_len);
+    if(tab.vtype==otl_var_char){
+     for(i=0;i<tmp_len;++i){
+      int overflow;
+      otl_strcpy3
+       (OTL_RCAST(unsigned char*,tab.val(i)),
+        OTL_RCAST(unsigned char*,in_vl[cur_in_x]->val(i)),
+        in_vl[cur_in_x]->get_len(i),
+        overflow,
+        tab.elem_size
+       );
+     }
+    }else if(tab.vtype==otl_var_timestamp){
+      otl_datetime* ext_dt=OTL_RCAST(otl_datetime*,tab.p_v);
+      otl_oracle_date* int_dt=
+        OTL_RCAST(otl_oracle_date*,in_vl[cur_in_x]->val());
+      int j;
+      for(j=0;j<tmp_len;++j){
+        convert_date(*ext_dt,*int_dt);
+        ++int_dt;
+        ++ext_dt;
+      }
+    }else
+      memcpy(OTL_RCAST(char*,tab.val()),
+             OTL_RCAST(char*,in_vl[cur_in_x]->val()),
+             tab.elem_size*tmp_len);
+    for(i=0;i<tmp_len;++i){
+     if(in_vl[cur_in_x]->is_null(i))
+      tab.set_null(i);
+     else
+      tab.set_non_null(i);
+    }
+   null_fetched=0;
+  }
+  get_in_next();
+  return *this;
+ }
+#endif
+
+#if defined(OTL_PL_TAB) && defined(OTL_STL)
+ OTL_TMPL_INOUT_STREAM& operator>>(otl_pl_vec_generic& vec)
+ {
+  if(eof())return *this;
+  if(check_in_type(vec.vtype,vec.elem_size)){
+    int i,tmp_len;
+    tmp_len=in_vl[cur_in_x]->get_pl_tab_len();
+    vec.set_len(tmp_len);
+    if(tmp_len>0){
+      switch(vec.vtype){
+      case otl_var_char:
+        for(i=0;i<tmp_len;++i){
+          (*OTL_RCAST(STD_NAMESPACE_PREFIX vector<OTL_STRING_CONTAINER>*,vec.p_v))[i]=
+            OTL_RCAST(char*,in_vl[cur_in_x]->val(i));
+        }
+        break;
+      case otl_var_timestamp:
+        {
+          otl_datetime* ext_dt;
+          otl_oracle_date* int_dt=
+            OTL_RCAST(otl_oracle_date*,in_vl[cur_in_x]->val());
+          int j;
+          for(j=0;j<tmp_len;++j){
+            ext_dt=OTL_RCAST
+              (otl_datetime*,
+               &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<otl_datetime>*,vec.p_v))[j]);
+            convert_date(*ext_dt,*int_dt);
+            ++int_dt;
+          }
+        }
+        break;
+      case otl_var_int:
+        memcpy(OTL_RCAST(char*,
+                         &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<int>*,vec.p_v))[0]),
+               OTL_RCAST(char*,in_vl[cur_in_x]->val()),
+               sizeof(int)*tmp_len);
+        break;
+      case otl_var_double:
+        memcpy(OTL_RCAST(char*,
+                         &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<double>*,vec.p_v))[0]),
+               OTL_RCAST(char*,in_vl[cur_in_x]->val()),
+               sizeof(double)*tmp_len);
+        break;
+      case otl_var_float:
+        memcpy(OTL_RCAST(char*,
+                         &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<float>*,vec.p_v))[0]),
+               OTL_RCAST(char*,in_vl[cur_in_x]->val()),
+               sizeof(float)*tmp_len);
+        break;
+      case otl_var_unsigned_int:
+        memcpy(OTL_RCAST(char*,
+                         &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<unsigned>*,vec.p_v))[0]),
+               OTL_RCAST(char*,in_vl[cur_in_x]->val()),
+               sizeof(unsigned)*tmp_len);
+        break;
+      case otl_var_short:
+        memcpy(OTL_RCAST(char*,
+                         &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<short>*,vec.p_v))[0]),
+               OTL_RCAST(char*,in_vl[cur_in_x]->val()),
+               sizeof(short)*tmp_len);
+        break;
+      case otl_var_long_int:
+        memcpy(OTL_RCAST(char*,
+                         &(*OTL_RCAST(STD_NAMESPACE_PREFIX vector<long int>*,vec.p_v))[0]),
+               OTL_RCAST(char*,in_vl[cur_in_x]->val()),
+               sizeof(long int)*tmp_len);
+        break;
+      }
+      
+    }
+    for(i=0;i<tmp_len;++i){
+     if(in_vl[cur_in_x]->is_null(i))
+      vec.set_null(i);
+     else
+      vec.set_non_null(i);
+    }
+   null_fetched=0;
+  }
+  get_in_next();
+  return *this;
+ }
+#endif
+
+
+ OTL_TMPL_INOUT_STREAM& operator>>(TTimestampStruct& t)
+ {
+  if(eof())return *this;
+  if(check_in_type(otl_var_timestamp,sizeof(TTimestampStruct))){
+   TTimestampStruct* tm=
+    OTL_RCAST(TTimestampStruct*,in_vl[cur_in_x]->val(cur_in_y));
+   int rc=in_vl[cur_in_x]->var_struct.read_dt
+     (&t,tm,sizeof(TTimestampStruct));
+   if(rc==0){
+     if(this->adb)this->adb->throw_count++;
+     if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return *this; 
+#endif
+     throw OTL_TMPL_EXCEPTION
+       (this->adb->connect_struct,
+        this->stm_label?this->stm_label:
+        this->stm_text);
+   }
+   null_fetched=is_null_intern();
+  }
+  get_in_next();
+  return *this;
+ }
+
+ OTL_TMPL_INOUT_STREAM& operator>>(otl_long_string& s)
+ {
+  int len=0;
+  if(eof())return *this;
+  switch(in_vl[cur_in_x]->ftype){
+  case otl_var_raw:
+  case otl_var_varchar_long:
+  case otl_var_raw_long:
+    {
+      unsigned char* c=OTL_RCAST(unsigned char*,in_vl[cur_in_x]->val(cur_in_y));
+      len=in_vl[cur_in_x]->get_len();
+      if(len>s.buf_size)len=s.buf_size;
+      otl_memcpy(s.v,c,len,in_vl[cur_in_x]->ftype);
+      s.set_len(len);
+      if(in_vl[cur_in_x]->ftype==otl_var_varchar_long)
+        s.null_terminate_string(len);
+      null_fetched=is_null_intern();
+    }
+    break;
+  case otl_var_clob:
+  case otl_var_blob:
+    {
+      int rc=in_vl[cur_in_x]->var_struct.get_blob(cur_in_y,s.v,s.buf_size,len);
+      if(rc==0){
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return *this; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (this->adb->connect_struct,
+           this->stm_label?this->stm_label:
+           this->stm_text);
+      }
+      if(len>s.buf_size)len=s.buf_size;
+      s.set_len(len);
+      if(in_vl[cur_in_x]->ftype==otl_var_clob)
+        s.null_terminate_string(len);
+      null_fetched=is_null_intern();
+    }
+    break;
+  default:
+    {
+      char temp_var_info[256];
+      otl_var_info_var
+        (in_vl[cur_in_x]->name,
+         in_vl[cur_in_x]->ftype,
+         otl_var_long_string,
+         temp_var_info,
+         sizeof(temp_var_info));
+      if(this->adb)this->adb->throw_count++;
+      if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+      if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+        uncaught_exception())return *this; 
+#endif
+      throw OTL_TMPL_EXCEPTION
+        (otl_error_msg_0,
+         otl_error_code_0,
+         this->stm_label?this->stm_label:
+         this->stm_text,
+         temp_var_info);
+    }
+  }
+  get_in_next();
+  return *this;
+ }
+
+#if defined(OTL_ORA8)||defined(OTL_ODBC)
+ OTL_TMPL_INOUT_STREAM& operator>>
+  (otl_lob_stream_generic& s)
+ {
+  if(eof())return *this;
+  if(s.ora_lob&&
+     in_vl[cur_in_x]->ftype==otl_var_clob||
+     in_vl[cur_in_x]->ftype==otl_var_blob){
+   s.init
+    (OTL_RCAST(void*,in_vl[cur_in_x]),
+     OTL_RCAST(void*,this->adb),
+     OTL_RCAST(void*,this),
+     0,
+     otl_lob_stream_read_mode,
+     this->is_null());
+  }else if(in_vl[cur_in_x]->ftype==otl_var_varchar_long||
+           in_vl[cur_in_x]->ftype==otl_var_raw_long){
+   s.init
+    (OTL_RCAST(void*,in_vl[cur_in_x]),
+     OTL_RCAST(void*,this->adb),
+     OTL_RCAST(void*,this),
+     0,
+     otl_lob_stream_read_mode);
+  }else{
+   char tmp_var_info[256];
+   otl_var_info_var
+    (in_vl[cur_in_x]->name,
+     in_vl[cur_in_x]->ftype,
+     otl_var_long_string,
+     tmp_var_info,
+     sizeof(tmp_var_info));
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return *this; 
+#endif
+   throw OTL_TMPL_EXCEPTION
+    (otl_error_msg_0,
+     otl_error_code_0,
+     this->stm_label?this->stm_label:
+     this->stm_text,
+     tmp_var_info);
+  }
+  get_in_next();
+  return *this;
+ }
+#endif
+
+
+};
+
+// ==================== OTL-Adapter for ODBC/CLI =========================
+
+#if defined(OTL_ODBC)
+
+#if !defined(OTL_DB2_CLI) && !defined(OTL_ODBC_zOS)
+
+// in case if it's ODBC for Windows (!OTL_ODBC_UNIX), and windows.h is
+// not included yet (_WINDOWS_ not defined yet), then include the file
+// explicitly
+#if !defined(OTL_ODBC_UNIX) && !defined(_WINDOWS_)
+#include <windows.h>
+#endif
+
+#if defined(OTL_ODBC_UNIX) && defined(OTL_INFORMIX_CLI)
+#include <infxsql.h>
+#else
+#include <sql.h>
+#include <sqlext.h>
+#endif
+
+#else
+#include <sqlcli1.h>
+#endif
+
+#if defined(OTL_ODBC)
+
+#if (ODBCVER >= 0x0300)
+#define OTL_SQL_TIMESTAMP_STRUCT SQL_TIMESTAMP_STRUCT
+#define OTL_SQL_TIME_STRUCT SQL_TIME_STRUCT
+#define OTL_SQL_DATE_STRUCT SQL_DATE_STRUCT
+#else
+#define OTL_SQL_TIMESTAMP_STRUCT TIMESTAMP_STRUCT
+#define OTL_SQL_TIME_STRUCT TIME_STRUCT
+#define OTL_SQL_DATE_STRUCT DATE_STRUCT
+#endif
+
+#if defined(OTL_DB2_CLI)
+
+#define OTL_HENV SQLHANDLE
+#define OTL_HDBC SQLHANDLE
+#define OTL_SQLHANDLE SQLHANDLE
+#define OTL_SQLRETURN SQLRETURN
+#define OTL_SQLSMALLINT SQLSMALLINT
+#define OTL_SQLCHAR_PTR SQLCHAR*
+#define OTL_SQLINTEGER_PTR SQLINTEGER*
+#define OTL_SQLSMALLINT_PTR SQLSMALLINT*
+#define OTL_SQLINTEGER SQLINTEGER
+#define OTL_SQLHSTMT SQLHSTMT
+#define OTL_SQLUSMALLINT SQLUSMALLINT
+#define OTL_SQLPOINTER SQLPOINTER
+#define OTL_SQLCHAR SQLCHAR
+#define OTL_SQLUINTEGER SQLUINTEGER
+
+#if defined(OTL_IODBC_BSD)
+
+#define OTL_SQLLEN SQLLEN
+#define OTL_SQLULEN SQLULEN
+#define OTL_SQLULEN_PTR SQLULEN*
+#define OTL_SQLLEN_PTR SQLLEN*
+
+#else // #if defined(OTL_IODBC_BSD)
+
+#define OTL_SQLLEN SQLINTEGER
+#define OTL_SQLLEN_PTR SQLINTEGER*
+#define OTL_SQLULEN SQLUINTEGER
+#define OTL_SQLULEN_PTR SQLUINTEGER*
+
+#endif // #if defined(OTL_IODBC_BSD)
+
+#else // #if defined(OTL_DB2_CLI)
+
+#if (ODBCVER >= 0x0300)
+
+#define OTL_HENV SQLHANDLE
+#define OTL_HDBC SQLHANDLE
+#define OTL_SQLHANDLE SQLHANDLE
+#define OTL_SQLRETURN SQLRETURN
+#define OTL_SQLSMALLINT SQLSMALLINT
+#define OTL_SQLCHAR_PTR SQLCHAR*
+#define OTL_SQLINTEGER_PTR SQLINTEGER*
+#define OTL_SQLSMALLINT_PTR SQLSMALLINT*
+#define OTL_SQLINTEGER SQLINTEGER
+#define OTL_SQLHSTMT SQLHSTMT
+#define OTL_SQLUSMALLINT SQLUSMALLINT
+#define OTL_SQLPOINTER SQLPOINTER
+#define OTL_SQLCHAR SQLCHAR
+#define OTL_SQLUINTEGER SQLUINTEGER
+
+#if defined(OTL_IODBC_BSD)
+
+#define OTL_SQLLEN SQLLEN
+#define OTL_SQLLEN_PTR SQLLEN*
+#define OTL_SQLULEN SQLULEN
+#define OTL_SQLULEN_PTR SQLULEN*
+
+#else // #if defined(OTL_IODBC_BSD)
+
+#if (defined(_MSC_VER)&&(_MSC_VER==1200)) // VC 6++
+#define OTL_SQLLEN SQLINTEGER
+#define OTL_SQLLEN_PTR SQLINTEGER*
+#define OTL_SQLULEN SQLUINTEGER
+#define OTL_SQLULEN_PTR SQLUINTEGER*
+#else
+#define OTL_SQLLEN SQLLEN
+#define OTL_SQLLEN_PTR SQLLEN*
+#define OTL_SQLULEN SQLULEN
+#define OTL_SQLULEN_PTR SQLULEN*
+#endif
+
+#endif // #if defined(OTL_IODBC_BSD)
+
+#else // #if (ODBCVER >= 0x0300)
+
+#define OTL_HENV HENV
+#define OTL_HDBC HDBC
+#define OTL_SQLHANDLE HSTMT
+#define OTL_SQLRETURN SQLRETURN
+#define OTL_SQLSMALLINT SQLSMALLINT
+#define OTL_SQLCHAR_PTR SQLCHAR*
+#define OTL_SQLINTEGER_PTR SQLINTEGER*
+#define OTL_SQLSMALLINT_PTR SQLSMALLINT*
+#define OTL_SQLINTEGER SQLINTEGER
+#define OTL_SQLHSTMT SQLHSTMT
+#define OTL_SQLUSMALLINT SQLUSMALLINT
+#define OTL_SQLPOINTER SQLPOINTER
+#define OTL_SQLCHAR SQLCHAR
+#define OTL_SQLUINTEGER SQLUINTEGER
+
+#if defined(OTL_IODBC_BSD)
+
+#define OTL_SQLLEN SQLLEN
+#define OTL_SQLLEN_PTR SQLLEN*
+#define OTL_SQLULEN SQLULEN
+#define OTL_SQLULEN_PTR SQLULEN*
+
+#else // #if defined(OTL_IODBC_BSD)
+
+#if (defined(_MSC_VER)&&(_MSC_VER==1200)) // VC 6++
+#define OTL_SQLLEN SQLINTEGER
+#define OTL_SQLLEN_PTR SQLINTEGER*
+#define OTL_SQLULEN SQLUINTEGER
+#define OTL_SQLULEN_PTR SQLUINTEGER*
+#else
+#define OTL_SQLLEN SQLLEN
+#define OTL_SQLLEN_PTR SQLLEN*
+#define OTL_SQLULEN SQLULEN
+#define OTL_SQLULEN_PTR SQLULEN*
+#endif
+
+#endif // #if defined(OTL_IODBC_BSD)
+
+#endif
+
+#endif
+
+#endif
+
+OTL_ODBC_NAMESPACE_BEGIN
+
+#if (defined(UNICODE) || defined(_UNICODE)) && defined(OTL_ODBC)
+
+inline void otl_convert_char_to_SQLWCHAR(SQLWCHAR* dst, const char* src)
+{
+  while(*src)
+    *dst++=OTL_SCAST(SQLWCHAR,*src++);
+  *dst=0;
+}
+
+inline void otl_convert_SQLWCHAR_to_char(char* dst, const SQLWCHAR*src)
+{
+  while(*src)
+    *dst++=OTL_SCAST(char,*src++);
+  *dst=0;
+}
+
+inline size_t otl_strlen(const SQLWCHAR* s)
+{
+  size_t len=0;
+  while(*s){
+    ++s;
+    ++len;
+  }
+  return len;
+}
+
+#endif
+
+typedef OTL_SQL_TIMESTAMP_STRUCT otl_time;
+const int otl_odbc_date_prec=23;
+const int otl_odbc_date_scale=0;
+
+const int OTL_MAX_MSG_ARR=512;
+
+class otl_exc{
+public:
+
+#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)
+  SQLWCHAR msg[1000];
+  SQLWCHAR sqlstate[1000];
+#else
+  unsigned char msg[1000];
+  unsigned char sqlstate[1000];
+#endif
+  int code;
+  
+#if defined(OTL_EXTENDED_EXCEPTION)
+
+#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)
+  SQLWCHAR** msg_arr;
+  SQLWCHAR** sqlstate_arr;
+#else
+  char** msg_arr;
+  char** sqlstate_arr;
+#endif
+
+  int* code_arr;
+  int arr_len;
+
+#endif
+
+ enum{disabled=0,enabled=1};
+
+ otl_exc()
+ {
+  sqlstate[0]=0;
+  code=0;
+  msg[0]=0;
+#if defined(OTL_EXTENDED_EXCEPTION)
+  msg_arr=0;
+  sqlstate_arr=0;
+  code_arr=0;
+  arr_len=0;
+#endif
+ }
+
+#if defined(OTL_EXTENDED_EXCEPTION)
+  otl_exc(const otl_exc& ex)
+  {
+#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)
+    otl_strcpy(OTL_RCAST(unsigned char*,msg),
+               OTL_RCAST(const unsigned char*,
+                         OTL_CCAST(SQLWCHAR*,ex.msg)));
+    otl_strcpy(OTL_RCAST(unsigned char*,
+                         OTL_CCAST(SQLWCHAR*,sqlstate)),
+               OTL_RCAST(const unsigned char*,
+                         OTL_CCAST(SQLWCHAR*,ex.sqlstate)));
+    code=ex.code;
+    arr_len=0;
+    msg_arr=0;
+    sqlstate_arr=0;
+    code_arr=0;
+    if(ex.arr_len>0){
+      sqlstate_arr=new SQLWCHAR*[ex.arr_len];
+      msg_arr=new SQLWCHAR*[ex.arr_len];
+      code_arr=new int[ex.arr_len];
+      int i;
+      size_t msg_len, sqlstate_len;
+      for(i=0;i<ex.arr_len;++i){
+        msg_len=otl_strlen(ex.msg_arr[i]);
+        sqlstate_len=otl_strlen(ex.sqlstate_arr[i]);
+        msg_arr[i]=new SQLWCHAR[msg_len+1];
+        sqlstate_arr[i]=new SQLWCHAR[sqlstate_len+1];
+        otl_strcpy(OTL_RCAST(unsigned char*,msg_arr[i]),
+                   OTL_RCAST(const unsigned char*,
+                             OTL_CCAST(SQLWCHAR*,ex.msg_arr[i])));
+        otl_strcpy(OTL_RCAST(unsigned char*,sqlstate_arr[i]),
+                   OTL_RCAST(const unsigned char*,
+                             OTL_CCAST(SQLWCHAR*,ex.sqlstate_arr[i])));
+        code_arr[i]=ex.code_arr[i];
+      }
+      arr_len=ex.arr_len;
+    }
+#else
+    OTL_STRCPY_S(OTL_RCAST(char*,msg),
+                 sizeof(msg),
+                 OTL_RCAST(const char*,ex.msg));
+    OTL_STRCPY_S(OTL_RCAST(char*,sqlstate),
+                 sizeof(sqlstate),
+                 OTL_RCAST(const char*,ex.sqlstate));
+    code=ex.code;
+    arr_len=0;
+    msg_arr=0;
+    sqlstate_arr=0;
+    code_arr=0;
+    if(ex.arr_len>0){
+      sqlstate_arr=new char*[ex.arr_len];
+      msg_arr=new char*[ex.arr_len];
+      code_arr=new int[ex.arr_len];
+      int i;
+      size_t msg_len, sqlstate_len;
+      for(i=0;i<ex.arr_len;++i){
+        msg_len=strlen(ex.msg_arr[i]);
+        sqlstate_len=strlen(ex.sqlstate_arr[i]);
+        msg_arr[i]=new char[msg_len+1];
+        sqlstate_arr[i]=new char[sqlstate_len+1];
+        OTL_STRCPY_S(msg_arr[i],msg_len+1,ex.msg_arr[i]);
+        OTL_STRCPY_S(sqlstate_arr[i],sqlstate_len+1,ex.sqlstate_arr[i]);
+        code_arr[i]=ex.code_arr[i];
+      }
+      arr_len=ex.arr_len;
+    }
+#endif
+  }
+#endif
+
+ void init(const char* amsg, const int acode)
+ {
+#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)
+   otl_convert_char_to_SQLWCHAR(msg,amsg);
+#else
+  OTL_STRCPY_S(OTL_RCAST(char*,msg),sizeof(msg),amsg);
+#endif
+   code=acode;
+   sqlstate[0]=0;
+#if defined(OTL_EXTENDED_EXCEPTION)
+   msg_arr=0;
+   sqlstate_arr=0;
+   code_arr=0;
+   arr_len=0;
+#endif
+ }
+
+  virtual ~otl_exc()
+  {
+#if defined(OTL_EXTENDED_EXCEPTION)
+    int i;
+    if(arr_len>0){
+      for(i=0;i<arr_len;++i){
+        delete[] msg_arr[i];
+        delete[] sqlstate_arr[i];
+      }
+      delete[] msg_arr;
+      delete[] sqlstate_arr;
+      delete[] code_arr;
+      arr_len=0;
+      msg_arr=0;
+      sqlstate_arr=0;
+      code_arr=0;
+    }
+#endif
+  }
+
+};
+
+#if (ODBCVER >= 0x0300)
+#if defined(OTL_EXTENDED_EXCEPTION)
+inline void otl_fill_exception(
+  otl_exc& exception_struct,
+  OTL_SQLHANDLE handle,
+  OTL_SQLSMALLINT htype
+)
+{
+#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)
+  OTL_SQLRETURN rc;
+  OTL_SQLSMALLINT msg_len=0;
+  SQLWCHAR* tmp_msg_arr[OTL_MAX_MSG_ARR];
+  SQLWCHAR* tmp_sqlstate_arr[OTL_MAX_MSG_ARR];
+  int tmp_code_arr[OTL_MAX_MSG_ARR];
+  int tmp_arr_len=0;
+  OTL_SQLSMALLINT tmp_msg_len=0;
+  OTL_SQLSMALLINT tmp_sqlstate_len=0;
+  int tmp_code;
+  SQLWCHAR tmp_msg[SQL_MAX_MESSAGE_LENGTH];
+  SQLWCHAR tmp_sqlstate[1000];
+
+  otl_strcpy(OTL_RCAST(unsigned char*,tmp_msg),
+             OTL_RCAST(const unsigned char*,
+                       OTL_CCAST(SQLWCHAR*,exception_struct.msg)));
+  otl_strcpy(OTL_RCAST(unsigned char*,tmp_sqlstate),
+             OTL_RCAST(const unsigned char*,
+                       OTL_CCAST(SQLWCHAR*,exception_struct.sqlstate)));
+  tmp_code=exception_struct.code;
+
+  do{
+    tmp_sqlstate_len=OTL_SCAST(OTL_SQLSMALLINT,otl_strlen(tmp_sqlstate));
+    tmp_msg_len=OTL_SCAST(OTL_SQLSMALLINT,otl_strlen(tmp_msg));
+    ++tmp_arr_len;
+    tmp_msg_arr[tmp_arr_len-1]=new SQLWCHAR[tmp_msg_len+1];
+    tmp_sqlstate_arr[tmp_arr_len-1]=new SQLWCHAR[tmp_sqlstate_len+1];
+    otl_strcpy(OTL_RCAST(unsigned char*,tmp_msg_arr[tmp_arr_len-1]),
+               OTL_RCAST(const unsigned char*,
+                         OTL_CCAST(SQLWCHAR*,tmp_msg)));
+    otl_strcpy(OTL_RCAST(unsigned char*,tmp_sqlstate_arr[tmp_arr_len-1]),
+               OTL_RCAST(const unsigned char*,
+                         OTL_CCAST(SQLWCHAR*,tmp_sqlstate)));
+    tmp_code_arr[tmp_arr_len-1]=tmp_code;
+    rc=SQLGetDiagRec
+      (htype,
+       handle,
+       OTL_SCAST(OTL_SQLSMALLINT,tmp_arr_len+1),
+       OTL_RCAST(SQLWCHAR*,tmp_sqlstate),
+       OTL_RCAST(OTL_SQLINTEGER_PTR,&tmp_code),
+       OTL_RCAST(SQLWCHAR*,tmp_msg),
+       SQL_MAX_MESSAGE_LENGTH-1,
+       OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+    tmp_msg[msg_len]=0;
+    if((rc==SQL_NO_DATA||rc==SQL_INVALID_HANDLE||
+        rc==SQL_ERROR)&&tmp_arr_len==1){
+      int i;
+      for(i=0;i<tmp_arr_len;++i){
+        delete[] tmp_msg_arr[i];
+        delete[] tmp_sqlstate_arr[i];
+      }
+      return;
+    }
+  }while(rc!=SQL_NO_DATA&&rc!=SQL_INVALID_HANDLE&&
+         rc!=SQL_ERROR&&tmp_arr_len<OTL_MAX_MSG_ARR);
+    
+  exception_struct.arr_len=tmp_arr_len;
+  exception_struct.msg_arr=new SQLWCHAR*[tmp_arr_len];
+  exception_struct.sqlstate_arr=new SQLWCHAR*[tmp_arr_len];
+  exception_struct.code_arr=new int[tmp_arr_len];
+  memcpy(exception_struct.msg_arr,tmp_msg_arr,tmp_arr_len*sizeof(SQLWCHAR*));
+  memcpy(exception_struct.sqlstate_arr,
+         tmp_sqlstate_arr,
+         tmp_arr_len*sizeof(SQLWCHAR*));
+  memcpy(exception_struct.code_arr,
+         tmp_code_arr,
+         tmp_arr_len*sizeof(int));
+#elif defined(UNICODE)||defined(_UNICODE)
+  OTL_SQLRETURN rc;
+  OTL_SQLSMALLINT msg_len=0;
+  char* tmp_msg_arr[OTL_MAX_MSG_ARR];
+  char* tmp_sqlstate_arr[OTL_MAX_MSG_ARR];
+  int tmp_code_arr[OTL_MAX_MSG_ARR];
+  int tmp_arr_len=0;
+  OTL_SQLSMALLINT tmp_msg_len=0;
+  OTL_SQLSMALLINT tmp_sqlstate_len=0;
+  int tmp_code;
+  SQLWCHAR tmp_msg[SQL_MAX_MESSAGE_LENGTH];
+  SQLWCHAR tmp_sqlstate[1000];
+
+  otl_convert_char_to_SQLWCHAR
+    (tmp_msg,
+     OTL_RCAST(const char*,exception_struct.msg));
+  otl_convert_char_to_SQLWCHAR
+    (tmp_sqlstate,
+     OTL_RCAST(const char*,exception_struct.sqlstate));
+  tmp_code=exception_struct.code;
+
+  do{
+    tmp_sqlstate_len=OTL_SCAST(OTL_SQLSMALLINT,otl_strlen(tmp_sqlstate));
+    tmp_msg_len=OTL_SCAST(OTL_SQLSMALLINT,otl_strlen(tmp_msg));
+    ++tmp_arr_len;
+    tmp_msg_arr[tmp_arr_len-1]=new char[tmp_msg_len+1];
+    tmp_sqlstate_arr[tmp_arr_len-1]=new char[tmp_sqlstate_len+1];
+    otl_convert_SQLWCHAR_to_char
+      (OTL_RCAST(char*,tmp_msg_arr[tmp_arr_len-1]),tmp_msg);
+    otl_convert_SQLWCHAR_to_char
+      (OTL_RCAST(char*,tmp_sqlstate_arr[tmp_arr_len-1]),tmp_sqlstate);
+    tmp_code_arr[tmp_arr_len-1]=tmp_code;
+    rc=SQLGetDiagRec
+      (htype,
+       handle,
+       OTL_SCAST(OTL_SQLSMALLINT,tmp_arr_len+1),
+       tmp_sqlstate,
+       OTL_RCAST(OTL_SQLINTEGER_PTR,&tmp_code),
+       tmp_msg,
+       SQL_MAX_MESSAGE_LENGTH-1,
+       OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+    tmp_msg[msg_len]=0;
+    if((rc==SQL_NO_DATA||rc==SQL_INVALID_HANDLE||
+        rc==SQL_ERROR)&&tmp_arr_len==1){
+      int i;
+      for(i=0;i<tmp_arr_len;++i){
+        delete[] tmp_msg_arr[i];
+        delete[] tmp_sqlstate_arr[i];
+      }
+      return;
+    }
+  }while(rc!=SQL_NO_DATA&&rc!=SQL_INVALID_HANDLE&&
+         rc!=SQL_ERROR&&tmp_arr_len<OTL_MAX_MSG_ARR);
+    
+  exception_struct.arr_len=tmp_arr_len;
+  exception_struct.msg_arr=new char*[tmp_arr_len];
+  exception_struct.sqlstate_arr=new char*[tmp_arr_len];
+  exception_struct.code_arr=new int[tmp_arr_len];
+  memcpy(exception_struct.msg_arr,tmp_msg_arr,tmp_arr_len*sizeof(char*));
+  memcpy(exception_struct.sqlstate_arr,tmp_sqlstate_arr,tmp_arr_len*sizeof(char*));
+  memcpy(exception_struct.code_arr,tmp_code_arr,tmp_arr_len*sizeof(int));
+
+#else
+
+  OTL_SQLRETURN rc;
+  OTL_SQLSMALLINT msg_len=0;
+  char* tmp_msg_arr[OTL_MAX_MSG_ARR];
+  char* tmp_sqlstate_arr[OTL_MAX_MSG_ARR];
+  int tmp_code_arr[OTL_MAX_MSG_ARR];
+  int tmp_arr_len=0;
+  OTL_SQLSMALLINT tmp_msg_len=0;
+  OTL_SQLSMALLINT tmp_sqlstate_len=0;
+  int tmp_code;
+  char tmp_msg[SQL_MAX_MESSAGE_LENGTH];
+  char tmp_sqlstate[1000];
+
+  OTL_STRCPY_S(tmp_msg,
+               sizeof(tmp_msg),
+               OTL_RCAST(char*,exception_struct.msg));
+  OTL_STRCPY_S(tmp_sqlstate,
+               sizeof(tmp_sqlstate),
+               OTL_RCAST(char*,exception_struct.sqlstate));
+  tmp_code=exception_struct.code;
+
+  do{
+    tmp_sqlstate_len=OTL_SCAST(OTL_SQLSMALLINT,strlen(tmp_sqlstate));
+    tmp_msg_len=OTL_SCAST(OTL_SQLSMALLINT,strlen(tmp_msg));
+    ++tmp_arr_len;
+    tmp_msg_arr[tmp_arr_len-1]=new char[tmp_msg_len+1];
+    tmp_sqlstate_arr[tmp_arr_len-1]=new char[tmp_sqlstate_len+1];
+    OTL_STRCPY_S(tmp_msg_arr[tmp_arr_len-1],tmp_msg_len+1,tmp_msg);
+    OTL_STRCPY_S(tmp_sqlstate_arr[tmp_arr_len-1],
+                 tmp_sqlstate_len+1,
+                 tmp_sqlstate);
+    tmp_code_arr[tmp_arr_len-1]=tmp_code;
+    void* temp_ptr=&tmp_code;
+    rc=SQLGetDiagRec
+      (htype,
+       handle,
+       OTL_SCAST(OTL_SQLSMALLINT,tmp_arr_len+1),
+       OTL_RCAST(OTL_SQLCHAR_PTR,tmp_sqlstate),
+       OTL_RCAST(OTL_SQLINTEGER_PTR,temp_ptr),
+       OTL_RCAST(OTL_SQLCHAR_PTR,tmp_msg),
+       SQL_MAX_MESSAGE_LENGTH-1,
+       OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+    tmp_msg[msg_len]=0;
+    if((rc==SQL_NO_DATA||rc==SQL_INVALID_HANDLE||
+        rc==SQL_ERROR)&&tmp_arr_len==1){
+      int i;
+      for(i=0;i<tmp_arr_len;++i){
+        delete[] tmp_msg_arr[i];
+        delete[] tmp_sqlstate_arr[i];
+      }
+      return;
+    }
+  }while(rc!=SQL_NO_DATA&&rc!=SQL_INVALID_HANDLE&&
+         rc!=SQL_ERROR&&tmp_arr_len<OTL_MAX_MSG_ARR);
+    
+  exception_struct.arr_len=tmp_arr_len;
+  exception_struct.msg_arr=new char*[tmp_arr_len];
+  exception_struct.sqlstate_arr=new char*[tmp_arr_len];
+  exception_struct.code_arr=new int[tmp_arr_len];
+  memcpy(exception_struct.msg_arr,tmp_msg_arr,tmp_arr_len*sizeof(char*));
+  memcpy(exception_struct.sqlstate_arr,tmp_sqlstate_arr,tmp_arr_len*sizeof(char*));
+  memcpy(exception_struct.code_arr,tmp_code_arr,tmp_arr_len*sizeof(int));
+#endif
+}
+#endif
+#endif
+
+class otl_conn{
+public:
+
+ OTL_HENV henv;
+ OTL_HDBC hdbc;
+
+ int timeout;
+ int cursor_type;
+ int status;
+ int long_max_size;
+ bool extern_lda;
+
+#if defined(OTL_ODBC_zOS)
+  bool logoff_commit;
+#endif
+
+#if defined(OTL_THROWS_ON_SQL_SUCCESS_WITH_INFO)
+  bool throws_on_sql_success_with_info;
+#endif
+
+  static int initialize(const int /* threaded_mode */=0)
+  {
+    return 1;
+  }
+
+ otl_conn()
+ {
+  timeout=0;
+  cursor_type=0;
+  henv=0;
+  hdbc=0;
+  long_max_size=32760;
+  status=SQL_SUCCESS;
+  extern_lda=false;
+#if defined(OTL_ODBC_zOS)
+  logoff_commit=true;
+#endif
+#if defined(OTL_THROWS_ON_SQL_SUCCESS_WITH_INFO)
+  throws_on_sql_success_with_info=false;
+#endif
+
+ }
+
+#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)
+ int rlogon(const SQLWCHAR* username,
+            const SQLWCHAR* passwd,
+            const SQLWCHAR* tnsname,
+            const int auto_commit)
+  {
+    if(extern_lda){
+      extern_lda=false;
+      henv=0;
+      hdbc=0;
+    }
+    OTL_TRACE_RLOGON_ODBC_W
+      (0x1,
+       L"otl_connect",
+       L"rlogon",
+       OTL_RCAST(const OTL_UNICODE_CHAR_TYPE*,tnsname),
+       OTL_RCAST(const OTL_UNICODE_CHAR_TYPE*,username),
+       OTL_RCAST(const OTL_UNICODE_CHAR_TYPE*,passwd),
+       auto_commit);
+    if(henv==0||hdbc==0){
+      status=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
+      if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+      status=SQLSetEnvAttr
+        (henv,
+         SQL_ATTR_ODBC_VERSION,
+         OTL_RCAST(void*,SQL_OV_ODBC3),
+         SQL_NTS);
+      if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+      status=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
+      if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+    }
+    if(auto_commit){
+      status=SQLSetConnectAttr
+        (hdbc,
+         SQL_ATTR_AUTOCOMMIT,
+         OTL_RCAST(SQLPOINTER,SQL_AUTOCOMMIT_ON),
+         SQL_IS_POINTER);
+      if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+    }
+    if(timeout>0){
+      status=SQLSetConnectAttr
+        (hdbc,
+         SQL_ATTR_LOGIN_TIMEOUT,
+         OTL_RCAST(void*,OTL_SCAST(size_t,timeout)),
+         0);
+      if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+    }
+
+#if defined(OTL_DB2_CLI)
+    status=SQLSetConnectAttr
+      (hdbc,
+       SQL_ATTR_LONGDATA_COMPAT,
+       OTL_RCAST(SQLPOINTER,SQL_LD_COMPAT_YES),
+       SQL_IS_INTEGER);
+    if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+#endif
+    status=SQLConnect
+      (hdbc,
+       OTL_CCAST(SQLWCHAR*,tnsname),SQL_NTS,
+       OTL_CCAST(SQLWCHAR*,username),SQL_NTS,
+       OTL_CCAST(SQLWCHAR*,passwd),SQL_NTS);
+    if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+      return 0;
+    else
+      return 1;
+  }
+#endif
+
+ int ext_logon(OTL_HENV ahenv,
+               OTL_HDBC ahdbc,
+               const int 
+#ifndef OTL_ODBC_MYSQL
+               auto_commit
+#endif
+              )
+ {
+  if(!extern_lda){
+#if (ODBCVER >= 0x0300)
+    if(hdbc!=0){
+      status=SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
+    }
+#else
+    if(hdbc!=0)
+      status=SQLFreeConnect(hdbc);
+#endif
+    hdbc=0;
+#if (ODBCVER >= 0x0300)
+    if(henv!=0){
+      status=SQLFreeHandle(SQL_HANDLE_ENV,henv);
+    }
+#else
+   if(henv!=0)
+     status=SQLFreeEnv(henv);
+#endif
+   henv=0;
+  }
+  extern_lda=true;
+  henv=ahenv;
+  hdbc=ahdbc;
+#ifndef OTL_ODBC_MYSQL
+#if (ODBCVER >= 0x0300)
+  if(auto_commit)
+   status=SQLSetConnectAttr
+    (hdbc,
+     SQL_ATTR_AUTOCOMMIT,
+     OTL_RCAST(SQLPOINTER,SQL_AUTOCOMMIT_ON),
+     SQL_IS_POINTER);
+  else
+   status=SQLSetConnectAttr
+    (hdbc,
+     SQL_ATTR_AUTOCOMMIT,
+     OTL_RCAST(SQLPOINTER,SQL_AUTOCOMMIT_OFF),
+     SQL_IS_POINTER);
+#else
+  if(auto_commit)
+   status=SQLSetConnectOption(hdbc,SQL_AUTOCOMMIT,1); 
+  else
+   status=SQLSetConnectOption(hdbc,SQL_AUTOCOMMIT,0); 
+#endif
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+#endif
+
+#if defined(OTL_DB2_CLI)
+  status=SQLSetConnectAttr
+   (hdbc,
+    SQL_ATTR_LONGDATA_COMPAT,
+    OTL_RCAST(SQLPOINTER,SQL_LD_COMPAT_YES),
+    SQL_IS_INTEGER);
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+#endif
+
+  return 1;
+
+ }
+
+ virtual ~otl_conn()
+ {
+  if(extern_lda){
+   hdbc=0;
+   henv=0;
+   extern_lda=false;
+  }else{
+#if (ODBCVER >= 0x0300)
+    if(hdbc!=0){
+      status=SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
+    }
+#else
+    if(hdbc!=0)
+      status=SQLFreeConnect(hdbc);
+#endif
+   hdbc=0;
+#if (ODBCVER >= 0x0300)
+   if(henv!=0){
+     status=SQLFreeHandle(SQL_HANDLE_ENV,henv);
+   }
+#else
+   if(henv!=0)
+     status=SQLFreeEnv(henv);
+#endif
+   henv=0;
+  }
+ }
+ 
+ void set_timeout(const int atimeout=0)
+ {
+  timeout=atimeout;
+ }
+
+ void set_cursor_type(const int acursor_type=0)
+ {
+  cursor_type=acursor_type;
+ }
+
+ int rlogon(const char* connect_str,
+            const int 
+#ifndef OTL_ODBC_MYSQL
+            auto_commit
+#endif
+           )
+ {
+  char username[256];
+  char passwd[256];
+  char tnsname[256];
+  char* tnsname_ptr=0;
+  char* c=OTL_CCAST(char*,connect_str);
+  char* username_ptr=username;
+  char* passwd_ptr=passwd;
+  char temp_connect_str[512];
+
+  if(extern_lda){
+   extern_lda=false;
+   henv=0;
+   hdbc=0;
+  }
+  memset(username,0,sizeof(username));
+  memset(passwd,0,sizeof(passwd));
+  memset(tnsname,0,sizeof(tnsname));
+
+  char* c1=OTL_CCAST(char*,connect_str);
+  int oracle_format=0;
+  char prev_c=' ';
+  while(*c1){
+   if(*c1=='@' && prev_c!='\\'){
+    oracle_format=1;
+    break;
+   }
+   prev_c=*c1;
+   ++c1;
+  }
+
+  if(oracle_format){
+   while(*c && *c!='/' && (OTL_SCAST(unsigned,username_ptr-username)<
+                           sizeof(username)-1)){
+    *username_ptr=*c;
+    ++c;
+    ++username_ptr;
+   }
+   *username_ptr=0;
+
+   if(*c=='/')++c;
+   prev_c=' ';
+   while(*c && !(*c=='@' && prev_c!='\\') && 
+         (OTL_SCAST(unsigned,passwd_ptr-passwd)<sizeof(passwd)-1)){
+     if(prev_c=='\\')--passwd_ptr;
+    *passwd_ptr=*c;
+    prev_c=*c;
+    ++c;
+    ++passwd_ptr;
+   }
+   *passwd_ptr=0;
+
+   if(*c=='@'){
+    ++c;
+    tnsname_ptr=tnsname;
+    while(*c && (OTL_SCAST(unsigned,tnsname_ptr-tnsname)<sizeof(tnsname)-1)){
+     *tnsname_ptr=*c;
+     ++c;
+     ++tnsname_ptr;
+    }
+    *tnsname_ptr=0;
+   }
+  }else{
+   c1=OTL_CCAST(char*,connect_str);
+   char* c2=temp_connect_str;
+   while(*c1 && (OTL_SCAST(unsigned,c2-temp_connect_str)
+                 <sizeof(temp_connect_str)-1)){
+    *c2=otl_to_upper(*c1);
+    ++c1;
+    ++c2;
+   }
+   *c2=0;
+   c1=temp_connect_str;
+   char entry_name[256];
+   char entry_value[256];
+   while(*c1 && (OTL_SCAST(unsigned,c1-temp_connect_str)<
+                 sizeof(temp_connect_str)-1)){
+    c2=entry_name;
+    while(*c1 && *c1!='=' && 
+          (OTL_SCAST(unsigned,c1-temp_connect_str)<
+           sizeof(temp_connect_str)-1)){
+     *c2=*c1;
+     ++c1;
+     ++c2;
+    }
+    *c2=0;
+    if(*c1) ++c1;
+    c2=entry_value;
+    prev_c=' ';
+    while(*c1&&*c1!=';' && 
+          (OTL_SCAST(unsigned,c2-entry_value)<
+           sizeof(entry_value)-1)){
+      if(prev_c=='\\')
+        --c2;
+      *c2=*c1;
+      prev_c=*c1;
+      ++c1;
+      ++c2;
+    }
+    *c2=0;
+    if(*c1) ++c1;
+    if(strcmp(entry_name,"DSN")==0)
+      OTL_STRCPY_S(tnsname,sizeof(tnsname),entry_value);
+    if(strcmp(entry_name,"UID")==0)
+      OTL_STRCPY_S(username,sizeof(username),entry_value);
+    if(strcmp(entry_name,"PWD")==0)
+      OTL_STRCPY_S(passwd,sizeof(passwd),entry_value);
+   }
+  }
+#ifndef OTL_ODBC_MYSQL
+  OTL_TRACE_RLOGON_ODBC
+    (0x1,
+     "otl_connect",
+     "rlogon",
+     tnsname,
+     username,
+     passwd,
+     auto_commit)
+#else
+  OTL_TRACE_RLOGON_ODBC
+    (0x1,
+     "otl_connect",
+     "rlogon",
+     tnsname,
+     username,
+     passwd,
+     0)
+#endif
+  if(henv==0||hdbc==0){
+#if (ODBCVER >= 0x0300)
+   status=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
+#else
+   status=SQLAllocEnv(&henv);
+#endif
+   if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+
+#if (ODBCVER >= 0x0300)
+   status=SQLSetEnvAttr
+     (henv,
+      SQL_ATTR_ODBC_VERSION,
+      OTL_RCAST(void*,SQL_OV_ODBC3),
+      SQL_NTS);
+   if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+#endif
+
+#if (ODBCVER >= 0x0300)
+   status=SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
+#else
+   status=SQLAllocConnect(henv, &hdbc);
+#endif
+   if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+  }
+
+#ifndef OTL_ODBC_MYSQL
+#if (ODBCVER >= 0x0300)
+  if(auto_commit)
+   status=SQLSetConnectAttr
+    (hdbc,
+     SQL_ATTR_AUTOCOMMIT,
+     OTL_RCAST(SQLPOINTER,SQL_AUTOCOMMIT_ON),
+     SQL_IS_POINTER);
+  else
+   status=SQLSetConnectAttr
+    (hdbc,
+     SQL_ATTR_AUTOCOMMIT,
+     OTL_RCAST(SQLPOINTER,SQL_AUTOCOMMIT_OFF),
+     SQL_IS_POINTER);
+#else
+  if(auto_commit)
+   status=SQLSetConnectOption(hdbc,SQL_AUTOCOMMIT,1); 
+  else
+   status=SQLSetConnectOption(hdbc,SQL_AUTOCOMMIT,0); 
+#endif
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+#endif
+#if (ODBCVER >= 0x0300)
+  if(timeout>0)
+   status=SQLSetConnectAttr
+    (hdbc,
+     SQL_ATTR_LOGIN_TIMEOUT,
+     OTL_RCAST(void*,OTL_SCAST(size_t,timeout)),
+     0);
+#else
+  if (timeout>0)
+    status=SQLSetConnectOption(hdbc,SQL_LOGIN_TIMEOUT,timeout); 
+#endif
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+
+
+#if defined(OTL_DB2_CLI)
+  status=SQLSetConnectAttr
+   (hdbc,
+    SQL_ATTR_LONGDATA_COMPAT,
+    OTL_RCAST(SQLPOINTER,SQL_LD_COMPAT_YES),
+    SQL_IS_INTEGER);
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+#endif
+
+  if(oracle_format){
+#if defined(OTL_ODBC_zOS)
+    if(tnsname[0]==0 && username[0]==0 && passwd[0]==0){
+      status=SQLConnect
+        (hdbc,
+         0L,SQL_NTS,
+         0L,SQL_NTS,
+         0L,SQL_NTS);
+      logoff_commit = false;
+    }else
+      status=SQLConnect
+        (hdbc,
+         OTL_RCAST(unsigned char*,tnsname),SQL_NTS,
+         OTL_RCAST(unsigned char*,username),SQL_NTS,
+         OTL_RCAST(unsigned char*,passwd),SQL_NTS);
+#else
+
+#if defined(UNICODE) || defined(_UNICODE)
+ {
+   SQLWCHAR* temp_tnsname=new SQLWCHAR[strlen(tnsname)+1];
+   SQLWCHAR* temp_username=new SQLWCHAR[strlen(username)+1];
+   SQLWCHAR* temp_passwd=new SQLWCHAR[strlen(passwd)+1];
+   otl_convert_char_to_SQLWCHAR(temp_tnsname,tnsname);
+   otl_convert_char_to_SQLWCHAR(temp_username,username);
+   otl_convert_char_to_SQLWCHAR(temp_passwd,passwd);
+   status=SQLConnect
+     (hdbc,
+      temp_tnsname,SQL_NTS,
+      temp_username,SQL_NTS,
+      temp_passwd,SQL_NTS);
+    delete[] temp_tnsname;
+    delete[] temp_username;
+    delete[] temp_passwd;
+ }
+#else
+    status=SQLConnect
+      (hdbc,
+       OTL_RCAST(unsigned char*,tnsname),SQL_NTS,
+       OTL_RCAST(unsigned char*,username),SQL_NTS,
+       OTL_RCAST(unsigned char*,passwd),SQL_NTS);
+#endif
+
+#endif
+  }else{
+   char* tc2=temp_connect_str;
+   const char* tc1=connect_str;
+   prev_c=' ';
+   while(*tc1 && (OTL_SCAST(unsigned,tc2-temp_connect_str)<
+                  sizeof(temp_connect_str)-1)){
+     if(*tc1=='@' && prev_c=='\\')
+       --tc2;
+     *tc2=*tc1;
+     prev_c=*tc1;
+     ++tc1;
+     ++tc2;
+   }
+   *tc2=0;
+   SQLSMALLINT out_len=0;
+#if (defined(UNICODE)||defined(_UNICODE))
+ {
+   size_t len=strlen(temp_connect_str);
+   SQLWCHAR* temp_connect_str2=new SQLWCHAR[len+1];
+   SQLWCHAR out_str[2048];
+   otl_convert_char_to_SQLWCHAR(temp_connect_str2,temp_connect_str);
+   status=SQLDriverConnect
+    (hdbc,
+     0,
+     temp_connect_str2,
+     OTL_SCAST(short,len),
+     out_str,
+     sizeof(out_str),
+     &out_len,
+     SQL_DRIVER_NOPROMPT);
+    delete[] temp_connect_str2;
+ }
+#else
+   SQLCHAR out_str[2048];
+   status=SQLDriverConnect
+    (hdbc,
+     0,
+     OTL_RCAST(SQLCHAR*,OTL_CCAST(char*,temp_connect_str)),
+     OTL_SCAST(short,strlen(temp_connect_str)),
+     out_str,
+     sizeof(out_str),
+     &out_len,
+     SQL_DRIVER_NOPROMPT);
+#endif
+  }
+
+  if(status == SQL_SUCCESS_WITH_INFO || status == SQL_SUCCESS)
+    return 1;
+  else
+    return 0;
+
+ }
+
+  int set_transaction_isolation_level
+  (const long int 
+#ifndef OTL_ODBC_MYSQL
+   level
+#endif
+  )
+  {
+#ifndef OTL_ODBC_MYSQL
+#if (ODBCVER >= 0x0300)
+   status=SQLSetConnectAttr
+    (hdbc,
+     SQL_ATTR_TXN_ISOLATION,
+     OTL_RCAST(SQLPOINTER,OTL_SCAST(size_t,level)),
+     SQL_IS_POINTER);
+#else
+   status=SQLSetConnectOption(hdbc,SQL_TXN_ISOLATION,level);
+#endif
+   if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+    return 0;
+   else
+    return 1;
+#else
+   return 1;
+#endif
+
+  }
+
+ int auto_commit_on(void)
+ {
+#if defined(OTL_ODBC_MYSQL)
+  return 1;
+#else
+#if (ODBCVER >= 0x0300)
+  status=SQLSetConnectAttr
+   (hdbc,
+    SQL_ATTR_AUTOCOMMIT,
+    OTL_RCAST(SQLPOINTER,SQL_AUTOCOMMIT_ON),
+    SQL_IS_POINTER);
+#else
+  status=SQLSetConnectOption(hdbc,SQL_AUTOCOMMIT,1); 
+#endif
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+   return 0;
+  else
+   return 1;
+#endif
+ }
+
+ int auto_commit_off(void)
+ {
+#if defined(OTL_ODBC_MYSQL)
+  return 1;
+#else
+#if (ODBCVER >= 0x0300)
+  status=SQLSetConnectAttr
+   (hdbc,
+    SQL_ATTR_AUTOCOMMIT,
+    OTL_RCAST(SQLPOINTER,SQL_AUTOCOMMIT_OFF),
+    SQL_IS_POINTER);
+#else
+ status=SQLSetConnectOption(hdbc,SQL_AUTOCOMMIT,0); 
+#endif
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+   return 0;
+  else
+   return 1;
+#endif
+ }
+
+
+ int logoff(void)
+ {
+  if(extern_lda){
+   extern_lda=false;
+   henv=0;
+   hdbc=0;
+   return 1;
+  }else{
+#if defined(OTL_ODBC_zOS)
+   if(logoff_commit) 
+     commit();
+#else
+   commit();
+#endif
+   status=SQLDisconnect(hdbc);
+   if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+    return 0;
+   else
+    return 1;
+  }
+ }
+
+ void error(otl_exc& exception_struct)
+ {OTL_SQLRETURN rc;
+  OTL_SQLSMALLINT msg_len=0;
+
+#if (ODBCVER >= 0x0300)
+
+#if (defined(UNICODE)||defined(_UNICODE))
+
+#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)
+
+   rc=SQLGetDiagRec
+#if defined(OTL_ODBC_zOS)
+     (hdbc==0?SQL_HANDLE_ENV:SQL_HANDLE_DBC,
+      hdbc==0?henv:hdbc,
+#else
+      (SQL_HANDLE_DBC,
+       hdbc,
+#endif
+       1,
+       &exception_struct.sqlstate[0],
+       OTL_RCAST(OTL_SQLINTEGER_PTR,&exception_struct.code),
+       &exception_struct.msg[0],
+       SQL_MAX_MESSAGE_LENGTH-1,
+       OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+   exception_struct.msg[msg_len]=0;
+
+#else
+
+ {
+   SQLWCHAR temp_msg[SQL_MAX_MESSAGE_LENGTH];
+   SQLWCHAR temp_sqlstate[1000];
+
+   rc=SQLGetDiagRec
+#if defined(OTL_ODBC_zOS)
+     (hdbc==0?SQL_HANDLE_ENV:SQL_HANDLE_DBC,
+      hdbc==0?henv:hdbc,
+#else
+      (SQL_HANDLE_DBC,
+       hdbc,
+#endif
+       1,
+       temp_sqlstate,
+       OTL_RCAST(OTL_SQLINTEGER_PTR,&exception_struct.code),
+       temp_msg,
+       SQL_MAX_MESSAGE_LENGTH-1,
+       OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+   temp_msg[msg_len]=0;
+   otl_convert_SQLWCHAR_to_char
+      (OTL_RCAST(char*,&exception_struct.sqlstate[0]),
+       temp_sqlstate);
+   otl_convert_SQLWCHAR_to_char
+      (OTL_RCAST(char*,&exception_struct.msg[0]),
+       temp_msg);
+  }
+
+#endif
+
+#else
+   void* temp_ptr=&exception_struct.code;
+   rc=SQLGetDiagRec
+#if defined(OTL_ODBC_zOS)
+     (hdbc==0?SQL_HANDLE_ENV:SQL_HANDLE_DBC,
+      hdbc==0?henv:hdbc,
+#else
+      (SQL_HANDLE_DBC,
+       hdbc,
+#endif
+       1,
+       OTL_RCAST(OTL_SQLCHAR_PTR,&exception_struct.sqlstate[0]),
+       OTL_RCAST(OTL_SQLINTEGER_PTR,temp_ptr),
+       OTL_RCAST(OTL_SQLCHAR_PTR,&exception_struct.msg[0]),
+       SQL_MAX_MESSAGE_LENGTH-1,
+       OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+#endif
+
+#else
+ rc=SQLError(henv, 
+             hdbc, 
+             0, // hstmt
+             OTL_RCAST(OTL_SQLCHAR_PTR,&exception_struct.sqlstate[0]),
+             OTL_RCAST(OTL_SQLINTEGER_PTR,&exception_struct.code),
+             OTL_RCAST(OTL_SQLCHAR_PTR,&exception_struct.msg[0]),
+             SQL_MAX_MESSAGE_LENGTH-1,
+             OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+#endif
+  exception_struct.msg[msg_len]=0;
+
+  if(rc==SQL_INVALID_HANDLE||rc==SQL_ERROR)
+    exception_struct.msg[0]=0;
+#if (ODBCVER >= 0x0300)
+#if defined(OTL_EXTENDED_EXCEPTION)
+  else if(rc!=SQL_NO_DATA)
+#if defined(OTL_ODBC_zOS)
+    {
+      if(hdbc)
+        otl_fill_exception(exception_struct,hdbc,SQL_HANDLE_DBC);
+      else
+        otl_fill_exception(exception_struct,henv,SQL_HANDLE_ENV);
+    }
+#else
+    otl_fill_exception(exception_struct,hdbc,SQL_HANDLE_DBC);
+#endif
+#endif
+#endif
+
+ }
+
+ int commit(void)
+ {
+#ifndef OTL_ODBC_MYSQL
+#if (ODBCVER >= 0x0300)
+  status=SQLEndTran(SQL_HANDLE_DBC,hdbc,SQL_COMMIT);
+#else
+ status=SQLTransact(henv,hdbc,SQL_COMMIT); 
+#endif
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+   return 0;
+  else
+  return 1;
+#else
+  return 1;
+#endif
+ }
+
+ int rollback(void)
+ {
+#ifndef OTL_ODBC_MYSQL
+#if (ODBCVER >= 0x0300)
+  status=SQLEndTran(SQL_HANDLE_DBC,hdbc,SQL_ROLLBACK);
+#else
+ status=SQLTransact(henv,hdbc,SQL_ROLLBACK); 
+#endif
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+   return 0;
+  else
+  return 1;
+#else
+  return 1;
+#endif
+ }
+
+};
+
+class otl_cur0{
+public:
+
+ OTL_SQLHSTMT cda;
+ int last_param_data_token;
+ int last_sql_param_data_status;
+ int sql_param_data_count;
+
+ otl_cur0()
+ {
+  cda=0;
+  last_param_data_token=0;
+  last_sql_param_data_status=0;
+  sql_param_data_count=0;
+ }
+
+ virtual ~otl_cur0(){}
+
+};
+
+class otl_var{
+public:
+
+  unsigned char* p_v;
+  OTL_SQLLEN_PTR p_len;
+  int ftype;
+  int act_elem_size;
+  bool lob_stream_mode;
+  int lob_stream_flag;
+  int vparam_type;
+  int lob_len;
+  int lob_pos;
+  int lob_ftype;
+  int otl_adapter;
+  bool charz_flag;
+
+ otl_var()
+ {
+  otl_adapter=otl_odbc_adapter;
+  lob_stream_flag=0;
+  p_v=0;
+  p_len=0;
+  act_elem_size=0;
+  lob_stream_mode=false;
+  vparam_type=-1;
+  lob_len=0;
+  lob_pos=0;
+  lob_ftype=0;
+  charz_flag=false;
+ }
+
+ virtual ~otl_var()
+ {
+  delete[] p_v;
+  delete[] p_len;
+ }
+
+  int write_dt(void* trg, const void* src, const int sz)
+  {
+    memcpy(trg,src,sz);
+    return 1;
+  }
+
+  int read_dt(void* trg, const void* src, const int sz)
+  {
+    memcpy(trg,src,sz);
+    return 1;
+  }
+
+ void set_lob_stream_flag(const int flg=1)
+ {
+  lob_stream_flag=flg;
+ }
+
+ int get_pl_tab_len(void)
+ {
+  return 0;
+ }
+
+ int get_max_pl_tab_len(void)
+ {
+  return 0;
+ }
+
+  void set_pl_tab_len(const int /* pl_tab_len */)
+  {
+  }
+
+ int write_blob
+ (const otl_long_string& s,
+  const int /* alob_len */,
+  int& aoffset,
+  otl_cur0& cur)
+ {
+  SQLRETURN rc=0;
+  SQLINTEGER temp_len=0;
+  SQLPOINTER pToken=0;
+  int param_number=0;
+
+  if(!lob_stream_flag&&!lob_stream_mode)return 1;
+  if(aoffset==1){
+   if(cur.sql_param_data_count==0){
+    rc=SQLParamData(cur.cda, &pToken);
+    param_number=OTL_SCAST(int,OTL_RCAST(size_t,pToken));
+    ++cur.sql_param_data_count;
+    cur.last_sql_param_data_status=rc;
+    cur.last_param_data_token=param_number;
+    if(rc!=SQL_SUCCESS&&rc!=SQL_SUCCESS_WITH_INFO&&
+       rc!=SQL_NEED_DATA)
+     return 0;
+   }
+  }
+  if(ftype==otl_var_raw_long)
+    temp_len=s.length;
+  else
+    temp_len=s.length*sizeof(OTL_CHAR);
+  rc=SQLPutData(cur.cda,s.v,temp_len);
+  if(rc!=SQL_SUCCESS&&rc!=SQL_SUCCESS_WITH_INFO)
+    return 0;
+   else{
+    aoffset+=s.length;
+    return 1;
+   }
+ }
+
+ int clob_blob(otl_cur0& cur)
+ {
+  SQLRETURN rc=0;
+  SQLPOINTER pToken=0;
+  int param_number=0;
+
+  if(!(cur.last_param_data_token==0&&cur.sql_param_data_count>0)){
+    rc=SQLParamData(cur.cda, &pToken);
+    param_number=OTL_SCAST(int,OTL_RCAST(size_t,pToken));
+    ++cur.sql_param_data_count;
+    cur.last_sql_param_data_status=rc;
+    cur.last_param_data_token=param_number;
+    if(rc!=SQL_SUCCESS&&rc!=SQL_SUCCESS_WITH_INFO&&
+#if (ODBCVER >= 0x0300)
+       rc!=SQL_NO_DATA &&
+#endif
+       rc!=SQL_NEED_DATA)
+      return 0;
+  }
+  return 1;
+ }
+
+ int read_blob
+ (otl_cur0& cur,
+  otl_long_string& s,
+  const int andx,
+  int& aoffset,
+  int& eof_flag)
+ {
+  SQLRETURN rc=0;
+  OTL_SQLLEN retLen=0;
+  int chunkLen=0;
+  if(!lob_stream_flag&&!lob_stream_mode)return 1;
+  int buf_size=s.buf_size*sizeof(OTL_CHAR);
+  if(ftype==otl_var_raw_long)
+    buf_size=s.buf_size;
+  rc=SQLGetData
+   (cur.cda,
+    OTL_SCAST(SQLSMALLINT,lob_pos),
+    OTL_SCAST(SQLSMALLINT,lob_ftype),
+    s.v, 
+    buf_size,
+    &retLen);
+  if(rc==SQL_SUCCESS_WITH_INFO||rc==SQL_SUCCESS){
+   if(retLen==SQL_NULL_DATA){
+    chunkLen=0;
+    p_len[andx]=SQL_NULL_DATA;
+   }else if(retLen>buf_size||retLen==SQL_NO_TOTAL)
+     chunkLen=s.buf_size;
+   else{
+     if(ftype==otl_var_raw_long)
+       chunkLen=OTL_SCAST(int,retLen);
+     else
+       chunkLen=OTL_SCAST(int,retLen)/sizeof(OTL_CHAR);
+   }
+#if defined(OTL_UNICODE)
+   if(lob_ftype==SQL_C_WCHAR)
+    s.set_len(chunkLen-1);
+#else
+   if(lob_ftype==SQL_C_CHAR)
+    s.set_len(chunkLen-1);
+#endif
+   else
+    s.set_len(chunkLen);
+   if(lob_len==0&&aoffset==1&&
+      retLen!=SQL_NULL_DATA&&
+      retLen!=SQL_NO_TOTAL)
+    lob_len=OTL_SCAST(int,retLen);
+   aoffset+=chunkLen;
+   if(chunkLen<s.buf_size||rc==SQL_SUCCESS){
+    s.set_len(chunkLen);
+    eof_flag=1;
+   }else
+    eof_flag=0;
+   return 1;
+  }
+#if (ODBCVER >= 0x0300)
+  else if(rc==SQL_NO_DATA)
+#else
+  else if(rc==SQL_NO_DATA_FOUND)
+#endif
+   return 1;
+  else
+   return 0;
+ }
+
+
+  int get_blob_len(const int /* ndx */,int& alen)
+  {
+    alen=lob_len;
+    return 1;
+  }
+  
+ int put_blob(void)
+ {
+  return 1;
+ }
+
+ int get_blob
+ (const int /* ndx */,
+  unsigned char* /* abuf */,
+  const int /* buf_size */,
+  int& /* len */)
+ {
+  return 1;
+ }
+
+ int save_blob
+ (const unsigned char* /* abuf  */,
+  const int /* len */,
+  const int /* extern_buffer_flag */)
+ {
+  return 1;
+ }
+
+ int actual_elem_size(void)
+ {
+  return act_elem_size;
+ }
+
+ void init
+ (const int aftype,
+  int& aelem_size,
+  const otl_stream_buffer_size_type aarray_size,
+  const void* /* connect_struct */=0,
+  const int /*apl_tab_size*/=0)
+ {int i;
+  size_t byte_size=0;
+  ftype=aftype;
+  act_elem_size=aelem_size;
+  byte_size=aelem_size*OTL_SCAST(size_t,aarray_size);
+#if defined(OTL_UNICODE)
+  if(aftype==otl_var_char||aftype==otl_var_varchar_long){
+    byte_size*=sizeof(OTL_CHAR);
+    p_v=new unsigned char[byte_size];
+  }
+  else
+  p_v=new unsigned char[byte_size];
+#else
+  p_v=new unsigned char[byte_size];
+#endif
+  p_len=new OTL_SQLLEN[aarray_size];
+  memset(p_v,0,byte_size);
+  for(i=0;i<aarray_size;++i){
+   if(ftype==otl_var_char)
+    p_len[i]=OTL_SCAST(OTL_SQLLEN,SQL_NTS);
+   else if(ftype==otl_var_varchar_long||ftype==otl_var_raw_long)
+    p_len[i]=0;
+   else
+    p_len[i]=OTL_SCAST(OTL_SQLLEN,aelem_size);
+  }
+ }
+
+ void set_null(int ndx)
+ {
+  p_len[ndx]=SQL_NULL_DATA;
+ }
+
+ void set_not_null(int ndx, int pelem_size)
+ {
+   set_len(pelem_size,ndx);
+ }
+
+ void bulk_set_not_null(int pelem_size,int array_size)
+ {
+   bulk_set_len(pelem_size,array_size);
+ }
+
+ void set_len(int len, int ndx)
+ {
+   switch(ftype){
+   case otl_var_char:
+     p_len[ndx]=SQL_NTS;
+     break;
+   case otl_var_varchar_long:
+     if(lob_stream_mode && 
+        (vparam_type==otl_input_param||
+         vparam_type==otl_inout_param))
+       p_len[ndx]=SQL_DATA_AT_EXEC;
+     else
+#if defined(OTL_UNICODE)
+       p_len[ndx]=OTL_SCAST(OTL_SQLLEN,len*sizeof(OTL_CHAR));
+#else
+       p_len[ndx]=OTL_SCAST(OTL_SQLLEN,len);
+#endif
+     break;
+   case otl_var_raw_long:
+     if(lob_stream_mode && 
+        (vparam_type==otl_input_param||
+         vparam_type==otl_inout_param))
+       p_len[ndx]=SQL_DATA_AT_EXEC;
+     else
+       p_len[ndx]=OTL_SCAST(OTL_SQLLEN,len);       
+     break;
+   default:
+     p_len[ndx]=OTL_SCAST(OTL_SQLLEN,len);
+     break;
+   }
+ }
+
+ void bulk_set_len(int len, int array_size)
+ {
+   int i;
+   switch(ftype){
+   case otl_var_char:
+     for(i=0;i<array_size;++i)
+       p_len[i]=SQL_NTS;
+     break;
+   case otl_var_varchar_long:
+     if(lob_stream_mode && 
+        (vparam_type==otl_input_param||
+         vparam_type==otl_inout_param))
+       for(i=0;i<array_size;++i)
+         p_len[i]=SQL_DATA_AT_EXEC;
+     else
+#if defined(OTL_UNICODE)
+       for(i=0;i<array_size;++i)
+         p_len[i]=OTL_SCAST(OTL_SQLLEN,len*sizeof(OTL_CHAR));
+#else
+     for(i=0;i<array_size;++i)
+       p_len[i]=OTL_SCAST(OTL_SQLLEN,len);
+#endif
+     break;
+   case otl_var_raw_long:
+     if(lob_stream_mode && 
+        (vparam_type==otl_input_param||
+         vparam_type==otl_inout_param))
+       for(i=0;i<array_size;++i)
+         p_len[i]=SQL_DATA_AT_EXEC;
+     else
+       for(i=0;i<array_size;++i)
+         p_len[i]=OTL_SCAST(OTL_SQLLEN,len);       
+     break;
+   default:
+     for(i=0;i<array_size;++i)
+       p_len[i]=OTL_SCAST(OTL_SQLLEN,len);
+     break;
+   }
+ }
+
+ int get_len(int ndx)
+ {
+  if(p_len[ndx]==SQL_NULL_DATA)
+   return 0;
+  else
+#if defined(OTL_UNICODE)
+    if(ftype==otl_var_varchar_long || ftype==otl_var_char)
+      return OTL_SCAST(int,p_len[ndx])/sizeof(OTL_CHAR);
+    else
+      return OTL_SCAST(int,p_len[ndx]);
+#else
+   return OTL_SCAST(int,p_len[ndx]);
+#endif
+ }
+
+ int is_null(int ndx)
+ {
+   return p_len[ndx]==SQL_NULL_DATA;
+ }
+
+ void* val(int ndx,int pelem_size)
+ {
+#if defined(OTL_UNICODE)
+   switch(ftype){
+   case otl_var_char:
+   case otl_var_varchar_long:
+     return OTL_RCAST(void*,
+                      &p_v[(OTL_SCAST(size_t,ndx))*pelem_size*sizeof(OTL_CHAR)]);
+   default:
+     return OTL_RCAST(void*,&p_v[(OTL_SCAST(size_t,ndx))*pelem_size]);
+   }
+#else
+   return OTL_RCAST(void*,&p_v[(OTL_SCAST(size_t,ndx))*pelem_size]);
+#endif
+ }
+
+#define OTL_SQL_UNICODE_CHAR                        (-95)
+#define OTL_SQL_UNICODE_VARCHAR                     (-96)
+#define OTL_SQL_UNICODE_LONGVARCHAR                 (-97)
+
+ static int int2ext(int int_type)
+ {
+   switch(int_type){
+#if defined(OTL_UNICODE)
+   case SQL_VARCHAR: return SQL_C_WCHAR;
+   case SQL_WVARCHAR: return SQL_C_WCHAR;
+   case SQL_CHAR: return SQL_C_WCHAR;
+   case SQL_WCHAR: return SQL_C_WCHAR;
+   case SQL_LONGVARCHAR: return SQL_WLONGVARCHAR;
+   case SQL_WLONGVARCHAR: return SQL_WLONGVARCHAR;
+   case OTL_SQL_UNICODE_VARCHAR: return SQL_C_WCHAR;
+   case OTL_SQL_UNICODE_CHAR: return SQL_C_WCHAR;
+   case OTL_SQL_UNICODE_LONGVARCHAR: return SQL_WLONGVARCHAR;
+#else
+   case SQL_CHAR: return SQL_C_CHAR;
+   case SQL_VARCHAR: return SQL_C_CHAR;
+#if defined(SQL_WCHAR)
+   case SQL_WCHAR: return SQL_C_CHAR;
+#else
+   case -8: return SQL_C_CHAR;
+#endif
+#if defined(SQL_WVARCHAR)
+   case SQL_WVARCHAR: return SQL_C_CHAR;
+#else
+   case -9: return SQL_C_CHAR;
+#endif
+   case SQL_LONGVARCHAR: return SQL_LONGVARCHAR;
+#if defined(SQL_WLONGVARCHAR)
+   case SQL_WLONGVARCHAR: return SQL_LONGVARCHAR;
+#else
+   case -10: return SQL_LONGVARCHAR;
+#endif
+   case OTL_SQL_UNICODE_VARCHAR: return SQL_C_CHAR;
+   case OTL_SQL_UNICODE_CHAR: return SQL_C_CHAR;
+   case OTL_SQL_UNICODE_LONGVARCHAR: return SQL_LONGVARCHAR;
+#endif
+#if (ODBCVER >= 0x0300)
+   case SQL_TYPE_DATE: return SQL_C_TIMESTAMP;
+   case SQL_TYPE_TIMESTAMP: return SQL_C_TIMESTAMP;
+   case SQL_TYPE_TIME: return SQL_C_TIMESTAMP;
+#else
+   case SQL_DATE: return SQL_C_TIMESTAMP;
+   case SQL_TIMESTAMP: return SQL_C_TIMESTAMP;
+   case SQL_TIME: return SQL_C_TIMESTAMP;
+#endif
+#if defined(OTL_BIGINT)
+   case SQL_BIGINT: return SQL_C_SBIGINT;
+#else
+   case SQL_BIGINT: return SQL_C_DOUBLE;
+#endif
+   case SQL_DECIMAL: return SQL_C_DOUBLE;
+   case SQL_DOUBLE: return SQL_C_DOUBLE;
+   case SQL_FLOAT: return SQL_C_DOUBLE;
+   case SQL_INTEGER: return SQL_C_SLONG;
+   case SQL_NUMERIC: return SQL_C_DOUBLE;
+   case SQL_REAL: return SQL_C_DOUBLE;
+   case SQL_SMALLINT: return SQL_C_SSHORT;
+   case SQL_BIT: return SQL_C_SSHORT;
+   case SQL_TINYINT: return SQL_C_SSHORT;
+   case SQL_LONGVARBINARY: return SQL_LONGVARBINARY;
+#if defined(OTL_MAP_SQL_VARBINARY_TO_RAW_LONG)
+   case SQL_VARBINARY: return SQL_LONGVARBINARY;
+#else
+   case SQL_VARBINARY: return SQL_C_BINARY;
+#endif
+#if (ODBCVER >= 0x0350)
+#if defined(OTL_MAP_SQL_GUID_TO_CHAR)
+#if defined(OTL_UNICODE)
+   case SQL_GUID: return SQL_C_WCHAR;
+#else
+   case SQL_GUID: return SQL_C_CHAR;
+#endif
+#else
+   case SQL_GUID: return SQL_C_BINARY;
+#endif
+#endif
+#if defined(OTL_MAP_SQL_BINARY_TO_CHAR)
+#if defined(OTL_UNICODE)
+   case SQL_BINARY: // MS SQL TIMESTAMP, BINARY
+     return SQL_C_WCHAR;
+#else
+   case SQL_BINARY: // MS SQL TIMESTAMP, BINARY
+     return SQL_C_CHAR;
+#endif
+#else
+   case SQL_BINARY:
+     return SQL_C_BINARY;
+#endif
+   default: return otl_unsupported_type;
+   }
+ }
+
+ static int datatype_size(int ftype,int maxsz,int int_type,int max_long_size)
+ {
+  switch(ftype){
+#if defined(OTL_UNICODE)
+  case SQL_C_WCHAR:
+#endif
+  case SQL_C_CHAR:
+   switch(int_type){
+   case SQL_BINARY: // MS SQL TIMESTAMP
+     return 17;
+#if defined(OTL_UNICODE)
+   case SQL_WLONGVARCHAR:
+#endif
+   case SQL_LONGVARCHAR:
+    return max_long_size*sizeof(OTL_CHAR);
+   case SQL_LONGVARBINARY:
+    return max_long_size;
+   case SQL_DATE:
+    return 40;
+#if (ODBCVER >= 0x0300)
+   case SQL_TYPE_TIMESTAMP:
+#else
+   case SQL_TIMESTAMP:
+#endif
+    return 40;
+#if (ODBCVER >= 0x0300)
+   case SQL_TYPE_TIME:
+#else
+   case SQL_TIME:
+#endif
+    return 40;
+#if (ODBCVER >= 0x0350)
+#if defined(OTL_MAP_SQL_GUID_TO_SQL_VARBINARY)
+   case SQL_GUID:
+    return 16;
+#else
+   case SQL_GUID:
+    return 40;
+#endif
+#endif
+   default:
+     return (maxsz+1);
+   }
+#if defined(OTL_BIGINT)
+  case SQL_C_SBIGINT:
+   return sizeof(OTL_BIGINT);
+#endif
+  case SQL_C_DOUBLE:
+   return sizeof(double);
+  case SQL_C_SLONG:
+   return sizeof(int);
+  case SQL_C_SSHORT:
+   return sizeof(short int);
+  case SQL_C_TIMESTAMP:
+   return sizeof(OTL_SQL_TIMESTAMP_STRUCT);
+  case SQL_C_TIME:
+   return sizeof(OTL_SQL_TIME_STRUCT);
+  case SQL_C_DATE:
+   return sizeof(OTL_SQL_DATE_STRUCT);
+#if defined(OTL_UNICODE)
+  case SQL_WLONGVARCHAR:
+    return max_long_size;
+#endif
+  case SQL_LONGVARCHAR:
+   return max_long_size;
+  case SQL_LONGVARBINARY:
+   return max_long_size;
+  case SQL_C_BINARY:
+   return maxsz;
+  default:
+   return 0;
+  }
+ }
+
+ static void map_ftype
+ (otl_column_desc& desc,
+  const int max_long_size,
+  int& ftype,
+  int& elem_size,
+  otl_select_struct_override& override,
+  const int column_ndx)
+ {
+  int ndx=override.find(column_ndx);
+  if(ndx==-1){
+#if defined(OTL_ODBC_MSSQL_2005)
+   if(desc.prec==0 && desc.dbtype==SQL_VARBINARY)
+     ftype=SQL_LONGVARBINARY;
+   else
+#endif
+     ftype=int2ext(desc.dbtype);
+   if(desc.dbsize==0){
+#if !defined(OTL_UNICODE)
+     if(ftype==SQL_C_CHAR)
+       ftype=SQL_LONGVARCHAR;
+#else
+     if(ftype==SQL_C_CHAR)
+       ftype=SQL_LONGVARCHAR;
+     else if(ftype==SQL_C_WCHAR)
+       ftype=SQL_WLONGVARCHAR;
+#endif
+     elem_size=max_long_size*sizeof(OTL_CHAR);
+   }else{
+     elem_size=datatype_size
+       (ftype,
+        OTL_SCAST(int,desc.dbsize),
+        desc.dbtype,
+        max_long_size);
+   }
+   switch(ftype){
+#if defined(OTL_UNICODE)
+   case SQL_C_WCHAR:
+    ftype=otl_var_char;
+    break;
+   case SQL_WLONGVARCHAR:
+    ftype=otl_var_varchar_long;
+    break;
+#else
+   case SQL_C_CHAR:
+    ftype=otl_var_char;
+    break;
+   case SQL_LONGVARCHAR:
+    ftype=otl_var_varchar_long;
+    break;
+#endif
+   case SQL_C_DOUBLE:
+    if(override.all_mask&otl_all_num2str){
+     ftype=otl_var_char;
+     elem_size=otl_num_str_size;
+    }else
+     ftype=otl_var_double;
+    break;
+#if defined(OTL_BIGINT)
+   case SQL_C_SBIGINT:
+    if(override.all_mask&otl_all_num2str){
+     ftype=otl_var_char;
+     elem_size=otl_num_str_size;
+    }else
+     ftype=otl_var_bigint;
+    break;
+#endif
+   case SQL_C_SLONG:
+    if(override.all_mask&otl_all_num2str){
+     ftype=otl_var_char;
+     elem_size=otl_num_str_size;
+    }else
+     ftype=otl_var_int;
+    break;
+   case SQL_C_SSHORT:
+    if(override.all_mask&otl_all_num2str){
+     ftype=otl_var_char;
+     elem_size=otl_num_str_size;
+    }else
+     ftype=otl_var_short;
+    break;
+   case SQL_LONGVARBINARY:
+    ftype=otl_var_raw_long;
+    break;
+   case SQL_C_DATE:
+   case SQL_C_TIME:
+   case SQL_C_TIMESTAMP:
+    if(override.all_mask&otl_all_date2str){
+     ftype=otl_var_char;
+     elem_size=otl_date_str_size;
+    }else
+     ftype=otl_var_timestamp;
+    break;
+   case SQL_C_BINARY:
+    ftype=otl_var_raw;
+    break;
+   default:
+    ftype=0;
+    break;
+   }
+  }else{
+   ftype=override.col_type[ndx];
+   switch(ftype){
+   case otl_var_char:
+    elem_size=override.col_size[ndx]*sizeof(OTL_CHAR);
+    break;
+   case otl_var_raw:
+    elem_size=override.col_size[ndx];
+    break;
+   case otl_var_double:
+    elem_size=sizeof(double);
+    break;
+   case otl_var_float:
+    elem_size=sizeof(float);
+    break;
+   case otl_var_int:
+    elem_size=sizeof(int);
+    break;
+#if defined(OTL_BIGINT)
+   case otl_var_bigint:
+    elem_size=sizeof(OTL_BIGINT);
+    break;
+#endif
+   case otl_var_unsigned_int:
+    elem_size=sizeof(unsigned);
+    break;
+   case otl_var_short:
+    elem_size=sizeof(short);
+    break;
+   case otl_var_long_int:
+    elem_size=sizeof(double);
+    break;
+   default:
+    elem_size=override.col_size[ndx];
+    break;
+   }
+  }
+  desc.otl_var_dbtype=ftype;
+ }
+
+};
+
+#if defined(OTL_ODBC_zOS)||defined(OTL_ODBC_TIMESTEN)
+const long otl_tran_read_uncommitted=SQL_TXN_READ_UNCOMMITTED;
+const long otl_tran_read_committed=SQL_TXN_READ_COMMITTED;
+const long otl_tran_repeatable_read=SQL_TXN_REPEATABLE_READ;
+const long otl_tran_serializable=SQL_TXN_SERIALIZABLE;
+#else
+const long otl_tran_read_uncommitted=SQL_TRANSACTION_READ_UNCOMMITTED;
+const long otl_tran_read_committed=SQL_TRANSACTION_READ_COMMITTED;
+const long otl_tran_repeatable_read=SQL_TRANSACTION_REPEATABLE_READ;
+const long otl_tran_serializable=SQL_TRANSACTION_SERIALIZABLE;
+#endif
+
+class otl_cur: public otl_cur0{
+public:
+
+ int status;
+ otl_conn* adb;
+ int direct_exec_flag;
+ long _rpc;
+  bool canceled;
+
+ otl_cur()
+ {
+  cda=0;
+  adb=0;
+  canceled=false;
+  _rpc=0;
+  direct_exec_flag=0;
+  last_param_data_token=0;
+  last_sql_param_data_status=0;
+  sql_param_data_count=0;
+ }
+
+ virtual ~otl_cur(){}
+
+  int cancel(void)
+  {
+    status=SQLCancel(cda);
+    canceled=true;
+    if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+      return 0;
+    else
+      return 1;
+  }
+
+  int open(otl_conn& /* connect */,otl_var* /* var */)
+  {
+    return 1;
+  }
+
+ void set_direct_exec(const int flag)
+ {
+  direct_exec_flag=flag;
+ }
+
+  void set_parse_only(const int /*flag*/){}
+
+ int open(otl_conn& connect)
+ {
+  direct_exec_flag=0;
+  adb=&connect;
+#if (ODBCVER >= 0x0300)
+  status=SQLAllocHandle(SQL_HANDLE_STMT,connect.hdbc,&cda);
+#else
+ status=SQLAllocStmt(connect.hdbc,&cda); 
+#endif
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+  if(connect.timeout>0){
+#if (ODBCVER >= 0x0300)
+   status=SQLSetStmtAttr
+    (cda,
+     SQL_ATTR_QUERY_TIMEOUT,
+     OTL_RCAST(void*,OTL_SCAST(size_t,connect.timeout)),
+     SQL_NTS);
+#else
+  status=SQLSetStmtOption(cda,SQL_QUERY_TIMEOUT,connect.timeout);
+#endif
+   if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+    return 0;
+  }
+  if(connect.cursor_type!=0){ // other than default
+#if (ODBCVER >= 0x0300)
+   status=SQLSetStmtAttr
+    (cda,
+     SQL_ATTR_CURSOR_TYPE,
+     OTL_RCAST(void*,OTL_SCAST(size_t,connect.cursor_type)),
+     SQL_NTS);
+#else
+  status=SQLSetStmtOption(cda,SQL_CURSOR_TYPE,connect.cursor_type);
+#endif
+   if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+    return 0;
+  }
+  return 1;
+ }
+
+ int close(void)
+ {
+#if (ODBCVER >= 0x0300)
+  status=SQLFreeHandle(SQL_HANDLE_STMT,cda);
+#else
+  status=SQLFreeStmt(cda,SQL_DROP);
+#endif
+  adb=0;
+  cda=0;
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+   return 0;
+  else
+   return 1;
+ }
+
+ int parse(char* stm_text)
+ {
+#if !defined(OTL_ODBC_TIMESTEN)
+   short in_str=0;
+#endif
+  char *c=stm_text;
+
+  if(*c=='$'){
+    ++c;
+    _rpc=0;
+    direct_exec_flag=1;
+    const int ctl_arr_size=6;
+    struct{
+      OTL_SQLCHAR_PTR name_ptr;
+      OTL_SQLSMALLINT name_len;
+      OTL_SQLCHAR name[512];
+    } ctl_arr[ctl_arr_size];
+#if (defined(UNICODE)||defined(_UNICODE))
+    struct{
+      SQLWCHAR name_ptr;
+      OTL_SQLSMALLINT name_len;
+      SQLWCHAR name[512];
+    } ctl_arr_W[ctl_arr_size];
+#endif
+    int i=0;
+    for(i=0;i<ctl_arr_size;++i){
+      ctl_arr[i].name_ptr=0;
+      ctl_arr[i].name_len=0;
+      ctl_arr[i].name[0]=0;
+#if (defined(UNICODE)||defined(_UNICODE))
+      ctl_arr_W[i].name_ptr=0;
+      ctl_arr_W[i].name_len=0;
+      ctl_arr_W[i].name[0]=0;
+#endif
+    }
+    char func_name[256];
+    int par_num=0;
+    char par_val[512];
+    size_t par_val_len=0;
+    size_t fn_len=0;
+    bool func_found=false;
+    while(*c && *c!=' ' && fn_len<sizeof(func_name)){
+      ++fn_len;
+      func_name[fn_len-1]=*c;
+      ++c;
+    }
+    if(fn_len<sizeof(func_name)-1){
+      ++fn_len;
+      func_name[fn_len-1]=0;
+    }else
+      func_name[sizeof(func_name)-1]=0;
+    while(*c==' ')++c;
+    while(*c){
+      if(*c=='$'){
+        ++c;
+        par_num=OTL_SCAST(int,*c-'0')-1;
+        ++c;
+        while(*c && *c==' ')++c;
+        if(*c==':' && (c>stm_text && *(c-1)!='\\' || c==stm_text)){
+          ++c;
+          while(*c && *c==' ')++c;
+          if(*c=='\''){
+            par_val_len=0;
+            ++c;
+            while(*c && *c!='\'' && par_val_len<sizeof(par_val)){
+              ++par_val_len;
+              par_val[par_val_len-1]=*c;
+              ++c;
+            }
+            if(par_val_len<sizeof(par_val)-1){
+              ++par_val_len;
+              par_val[par_val_len-1]=0;
+            }else
+              par_val[sizeof(par_val)-1]=0;
+            if(par_num>=0 && par_num<ctl_arr_size){
+              ctl_arr[par_num].name_ptr=ctl_arr[par_num].name;
+              ctl_arr[par_num].name_len=SQL_NTS;
+              OTL_STRCPY_S(OTL_RCAST(char*,ctl_arr[par_num].name),
+                           sizeof(ctl_arr[par_num].name),
+                           OTL_RCAST(const char*,par_val));
+            }
+          }
+          ++c;
+          while(*c && *c==' ')++c;
+        }
+      }else
+        ++c;
+    }
+    status=SQL_SUCCESS;
+    if(strcmp(func_name,"SQLTables")==0){
+#if (defined(UNICODE)||defined(_UNICODE))
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[0].name,OTL_RCAST(char*,ctl_arr[0].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[1].name,OTL_RCAST(char*,ctl_arr[1].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[2].name,OTL_RCAST(char*,ctl_arr[2].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[3].name,OTL_RCAST(char*,ctl_arr[3].name));
+#if !defined(OTL_UNICODE_USE_ANSI_ODBC_FUNCS_FOR_DATA_DICT)
+      status=SQLTables
+        (cda, 
+         ctl_arr_W[0].name,SQL_NTS,
+         ctl_arr_W[1].name,SQL_NTS,
+         ctl_arr_W[2].name,SQL_NTS,
+         ctl_arr_W[3].name,SQL_NTS);
+#else
+      status=SQLTablesA
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len,
+         ctl_arr[3].name_ptr,ctl_arr[3].name_len);
+#endif
+
+#else
+      status=SQLTables
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len,
+         ctl_arr[3].name_ptr,ctl_arr[3].name_len);
+#endif
+      func_found=true;
+    }else if(strcmp(func_name,"SQLColumns")==0){
+#if (defined(UNICODE)||defined(_UNICODE))
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[0].name,OTL_RCAST(char*,ctl_arr[0].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[1].name,OTL_RCAST(char*,ctl_arr[1].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[2].name,OTL_RCAST(char*,ctl_arr[2].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[3].name,OTL_RCAST(char*,ctl_arr[3].name));
+
+#if !defined(OTL_UNICODE_USE_ANSI_ODBC_FUNCS_FOR_DATA_DICT)
+      status=SQLColumns
+        (cda, 
+         ctl_arr_W[0].name,SQL_NTS,
+         ctl_arr_W[1].name,SQL_NTS,
+         ctl_arr_W[2].name,SQL_NTS,
+         ctl_arr_W[3].name,SQL_NTS);
+#else
+      status=SQLColumnsA
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len,
+         ctl_arr[3].name_ptr,ctl_arr[3].name_len);
+#endif
+
+#else
+      status=SQLColumns
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len,
+         ctl_arr[3].name_ptr,ctl_arr[3].name_len);
+#endif
+      func_found=true;
+    }else if(strcmp(func_name,"SQLProcedures")==0){
+#if (defined(UNICODE)||defined(_UNICODE))
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[0].name,OTL_RCAST(char*,ctl_arr[0].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[1].name,OTL_RCAST(char*,ctl_arr[1].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[2].name,OTL_RCAST(char*,ctl_arr[2].name));
+
+#if !defined(OTL_UNICODE_USE_ANSI_ODBC_FUNCS_FOR_DATA_DICT)
+      status=SQLProcedures
+        (cda, 
+         ctl_arr_W[0].name,SQL_NTS,
+         ctl_arr_W[1].name,SQL_NTS,
+         ctl_arr_W[2].name,SQL_NTS);
+#else
+      status=SQLProceduresA
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len);
+#endif
+
+#else
+      status=SQLProcedures
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len);
+#endif
+      func_found=true;
+    }else if(strcmp(func_name,"SQLColumnPrivileges")==0){
+#if (defined(UNICODE)||defined(_UNICODE))
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[0].name,OTL_RCAST(char*,ctl_arr[0].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[1].name,OTL_RCAST(char*,ctl_arr[1].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[2].name,OTL_RCAST(char*,ctl_arr[2].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[3].name,OTL_RCAST(char*,ctl_arr[3].name));
+#if !defined(OTL_UNICODE_USE_ANSI_ODBC_FUNCS_FOR_DATA_DICT)
+     status=SQLColumnPrivileges
+       (cda, 
+        ctl_arr_W[0].name,SQL_NTS,
+        ctl_arr_W[1].name,SQL_NTS,
+        ctl_arr_W[2].name,SQL_NTS,
+        ctl_arr_W[3].name,SQL_NTS);
+#else
+     status=SQLColumnPrivilegesA
+       (cda, 
+        ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+        ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+        ctl_arr[2].name_ptr,ctl_arr[2].name_len,
+        ctl_arr[3].name_ptr,ctl_arr[3].name_len);
+#endif
+
+#else
+      status=SQLColumnPrivileges
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len,
+         ctl_arr[3].name_ptr,ctl_arr[3].name_len);
+#endif
+      func_found=true;
+    }else if(strcmp(func_name,"SQLTablePrivileges")==0){
+#if (defined(UNICODE)||defined(_UNICODE))
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[0].name,OTL_RCAST(char*,ctl_arr[0].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[1].name,OTL_RCAST(char*,ctl_arr[1].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[2].name,OTL_RCAST(char*,ctl_arr[2].name));
+
+#if !defined(OTL_UNICODE_USE_ANSI_ODBC_FUNCS_FOR_DATA_DICT)
+      status=SQLTablePrivileges
+        (cda, 
+         ctl_arr_W[0].name,SQL_NTS,
+         ctl_arr_W[1].name,SQL_NTS,
+         ctl_arr_W[2].name,SQL_NTS);
+#else
+      status=SQLTablePrivilegesA
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len);
+#endif
+
+#else
+      status=SQLTablePrivileges
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len);
+#endif
+      func_found=true;
+    }else if(strcmp(func_name,"SQLPrimaryKeys")==0){
+#if (defined(UNICODE)||defined(_UNICODE))
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[0].name,OTL_RCAST(char*,ctl_arr[0].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[1].name,OTL_RCAST(char*,ctl_arr[1].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[2].name,OTL_RCAST(char*,ctl_arr[2].name));
+
+#if !defined(OTL_UNICODE_USE_ANSI_ODBC_FUNCS_FOR_DATA_DICT)
+      status=SQLPrimaryKeys
+        (cda, 
+         ctl_arr_W[0].name,SQL_NTS,
+         ctl_arr_W[1].name,SQL_NTS,
+         ctl_arr_W[2].name,SQL_NTS);
+#else
+      status=SQLPrimaryKeysA
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len);
+#endif
+
+#else
+      status=SQLPrimaryKeys
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len);
+#endif
+      func_found=true;
+    }else if(strcmp(func_name,"SQLProcedureColumns")==0){
+#if (defined(UNICODE)||defined(_UNICODE))
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[0].name,OTL_RCAST(char*,ctl_arr[0].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[1].name,OTL_RCAST(char*,ctl_arr[1].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[2].name,OTL_RCAST(char*,ctl_arr[2].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[3].name,OTL_RCAST(char*,ctl_arr[3].name));
+
+#if !defined(OTL_UNICODE_USE_ANSI_ODBC_FUNCS_FOR_DATA_DICT)
+      status=SQLProcedureColumns
+        (cda, 
+         ctl_arr_W[0].name,SQL_NTS,
+         ctl_arr_W[1].name,SQL_NTS,
+         ctl_arr_W[2].name,SQL_NTS,
+         ctl_arr_W[3].name,SQL_NTS);
+#else
+      status=SQLProcedureColumnsA
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len,
+         ctl_arr[3].name_ptr,ctl_arr[3].name_len);
+#endif
+
+#else
+      status=SQLProcedureColumns
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len,
+         ctl_arr[3].name_ptr,ctl_arr[3].name_len);
+#endif
+      func_found=true;
+    }else if(strcmp(func_name,"SQLForeignKeys")==0){
+#if (defined(UNICODE)||defined(_UNICODE))
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[0].name,OTL_RCAST(char*,ctl_arr[0].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[1].name,OTL_RCAST(char*,ctl_arr[1].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[2].name,OTL_RCAST(char*,ctl_arr[2].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[3].name,OTL_RCAST(char*,ctl_arr[3].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[4].name,OTL_RCAST(char*,ctl_arr[4].name));
+      otl_convert_char_to_SQLWCHAR
+        (ctl_arr_W[5].name,OTL_RCAST(char*,ctl_arr[5].name));
+
+#if !defined(OTL_UNICODE_USE_ANSI_ODBC_FUNCS_FOR_DATA_DICT)
+      status=SQLForeignKeys
+        (cda, 
+         ctl_arr_W[0].name,SQL_NTS,
+         ctl_arr_W[1].name,SQL_NTS,
+         ctl_arr_W[2].name,SQL_NTS,
+         ctl_arr_W[3].name,SQL_NTS,
+         ctl_arr_W[4].name,SQL_NTS,
+         ctl_arr_W[5].name,SQL_NTS);
+#else
+      status=SQLForeignKeysA
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len,
+         ctl_arr[3].name_ptr,ctl_arr[3].name_len,
+         ctl_arr[4].name_ptr,ctl_arr[4].name_len,
+         ctl_arr[5].name_ptr,ctl_arr[5].name_len);
+#endif
+
+#else
+      status=SQLForeignKeys
+        (cda, 
+         ctl_arr[0].name_ptr,ctl_arr[0].name_len,
+         ctl_arr[1].name_ptr,ctl_arr[1].name_len,
+         ctl_arr[2].name_ptr,ctl_arr[2].name_len,
+         ctl_arr[3].name_ptr,ctl_arr[3].name_len,
+         ctl_arr[4].name_ptr,ctl_arr[4].name_len,
+         ctl_arr[5].name_ptr,ctl_arr[5].name_len);
+#endif
+      func_found=true;
+    }
+    if(!func_found)return 2;
+    if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+      return 0;
+    else
+      return 1;
+  }
+
+  if(direct_exec_flag){
+   _rpc=0;
+#if (defined(UNICODE)||defined(_UNICODE))
+ {
+   SQLWCHAR* temp_stm_text=new SQLWCHAR[strlen(stm_text)+1];
+   otl_convert_char_to_SQLWCHAR(temp_stm_text,stm_text);
+   status=SQLExecDirect
+    (cda,
+     temp_stm_text,
+     SQL_NTS);
+   delete[] temp_stm_text;
+ }
+#else
+   status=SQLExecDirect
+    (cda,
+     OTL_RCAST(OTL_SQLCHAR_PTR,stm_text),
+     SQL_NTS);
+#endif
+
+#if defined(OTL_THROWS_ON_SQL_SUCCESS_WITH_INFO)
+   if(adb && adb->throws_on_sql_success_with_info &&
+      status==SQL_SUCCESS_WITH_INFO)
+     return 0;
+#endif
+
+   if(status!=SQL_SUCCESS&&
+      status!=SQL_SUCCESS_WITH_INFO&&
+#if (ODBCVER >= 0x0300)
+      status!=SQL_NO_DATA
+#else
+      status!=SQL_NO_DATA_FOUND
+#endif
+     )
+    return 0;
+   else{
+    OTL_SQLLEN tmp_rpc=0;
+    SQLRETURN diag_status=SQLRowCount(cda,&tmp_rpc);
+    if(diag_status==SQL_SUCCESS||
+       diag_status==SQL_SUCCESS_WITH_INFO)
+     _rpc=OTL_SCAST(long,tmp_rpc);
+    return 1;
+   }
+  }
+
+#if !defined(OTL_ODBC_TIMESTEN)
+  // Converting : notation into ODBC's native notation ?
+  while(*c){
+   if(*c=='\''){
+    if(!in_str)
+     in_str=1;
+    else{
+     if(c[1]=='\'')
+      ++c;
+     else
+      in_str=0;
+    }
+   }
+   if(*c==':' && !in_str && 
+      (c>stm_text && *(c-1)!='\\' || c==stm_text)){
+    *c='?';
+    ++c;
+    while(isdigit(*c)||isalpha(*c)||*c=='_'){
+     *c=' ';
+     ++c;
+    }
+   }else if(*c==':' && !in_str && 
+            (c>stm_text && *(c-1)=='\\' || c==stm_text)){
+     char* c_1=c-1;
+     char* c_=c;
+     while(*c_){
+       *c_1=*c_;
+       ++c_1;
+       ++c_;
+     }
+     if(c_1>c-1)
+       *c_1=0;
+     --c;
+   }
+   ++c;
+  }
+#endif
+
+#if defined(OTL_DB2_CLI)
+
+  OTL_SQLINTEGER temp_isolation_level=0;
+  status=SQLGetStmtAttr
+   (cda,
+    SQL_ATTR_TXN_ISOLATION,
+    OTL_RCAST(SQLPOINTER,&temp_isolation_level),
+    SQL_IS_POINTER,
+    0);
+  if(OTL_SCAST(long,temp_isolation_level)==otl_tran_read_committed||
+     OTL_SCAST(long,temp_isolation_level)==otl_tran_read_uncommitted){
+    status=SQLSetStmtAttr
+      (cda,
+       SQL_ATTR_CLOSE_BEHAVIOR,
+       OTL_RCAST(void*,SQL_CC_RELEASE),
+       SQL_NTS);
+    if(status!=SQL_SUCCESS&&
+       status!=SQL_SUCCESS_WITH_INFO)
+      return 0;
+  }
+#endif 
+  
+#if (defined(UNICODE)||defined(_UNICODE))
+ {
+   SQLWCHAR* temp_stm_text=new SQLWCHAR[strlen(stm_text)+1];
+   otl_convert_char_to_SQLWCHAR(temp_stm_text,stm_text);
+   status=SQLPrepare
+     (cda,
+      temp_stm_text,
+      SQL_NTS);
+   delete[] temp_stm_text;
+ }
+#else
+ status=SQLPrepare
+  (cda,
+   OTL_RCAST(OTL_SQLCHAR_PTR,stm_text),
+   SQL_NTS);
+#endif
+
+ if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+  return 0;
+ else
+  return 1;
+ }
+
+ int exec(const int iters, const int /*rowoff*/)
+ {
+#if (ODBCVER >= 0x0300)
+#else
+  OTL_SQLUINTEGER irows;
+#endif
+  if(direct_exec_flag){
+   return 1;
+  }else{
+#if !defined(OTL_ODBC_MYSQL) && !defined(OTL_ODBC_XTG_IBASE6)
+#if (ODBCVER >= 0x0300)
+   if(iters>1||_rpc>1){
+     size_t temp_iters=OTL_SCAST(size_t,iters);
+    status=SQLSetStmtAttr
+     (cda,
+      SQL_ATTR_PARAMSET_SIZE,
+      OTL_RCAST(void*,temp_iters),
+      SQL_NTS
+      );
+    if(status!=SQL_SUCCESS&&
+       status!=SQL_SUCCESS_WITH_INFO)
+     return 0;
+   }
+#else
+   if(iters>1||_rpc>1){
+    status=SQLParamOptions
+     (cda,
+      OTL_SCAST(OTL_SQLUINTEGER,iters),
+      &irows); 
+    if(status!=SQL_SUCCESS&&
+       status!=SQL_SUCCESS_WITH_INFO)
+     return 0;
+   }
+#endif
+#endif
+   _rpc=0;
+
+   last_param_data_token=0;
+   last_sql_param_data_status=0;
+   sql_param_data_count=0;
+   
+   status=SQLExecute(cda);
+   if(canceled)return 0;
+#if defined(OTL_THROWS_ON_SQL_SUCCESS_WITH_INFO)
+   if(adb && adb->throws_on_sql_success_with_info && 
+      status==SQL_SUCCESS_WITH_INFO)
+     return 0;
+#endif
+   if(status!=SQL_SUCCESS&&
+      status!=SQL_SUCCESS_WITH_INFO&&
+#if (ODBCVER >= 0x0300)
+      status!=SQL_NO_DATA&&
+#else
+      status!=SQL_NO_DATA_FOUND&&
+#endif
+      status!=SQL_NEED_DATA)return 0;
+   if(status==SQL_NEED_DATA){
+    _rpc=iters;
+    return 1;
+   }
+   OTL_SQLLEN tmp_rpc=0;
+   SQLRETURN diag_status=SQLRowCount(cda,&tmp_rpc);
+   if(diag_status==SQL_SUCCESS||
+      diag_status==SQL_SUCCESS_WITH_INFO)
+    _rpc=OTL_SCAST(long,tmp_rpc);
+   return 1;
+  }
+ }
+
+ long get_rpc()
+ {
+  return _rpc;
+ }
+
+ int tmpl_ftype2odbc_ftype(const int ftype)
+ {
+  switch(ftype){
+#if defined(OTL_UNICODE)
+  case otl_var_char:
+   return SQL_C_WCHAR;
+  case otl_var_varchar_long:
+   return SQL_WLONGVARCHAR;
+#else
+  case otl_var_char:
+   return SQL_C_CHAR;
+  case otl_var_varchar_long:
+   return SQL_LONGVARCHAR;
+#endif
+  case otl_var_double:
+   return SQL_C_DOUBLE;
+#if defined(OTL_BIGINT)
+  case otl_var_bigint:
+   return SQL_C_SBIGINT;
+#endif
+  case otl_var_float:
+   return SQL_C_FLOAT;
+  case otl_var_int:
+  case otl_var_long_int:
+   return SQL_C_SLONG;
+  case otl_var_unsigned_int:
+   return SQL_C_ULONG;
+  case otl_var_short:
+   return SQL_C_SSHORT;
+  case otl_var_timestamp:
+  case otl_var_db2time:
+  case otl_var_db2date:
+   return SQL_C_TIMESTAMP;
+  case otl_var_raw_long:
+   return SQL_LONGVARBINARY;
+  case otl_var_raw:
+   return SQL_C_BINARY;
+  default:
+   return 0;
+  }
+ }
+
+ int otl_map_ext2int(int ftype)
+ {
+  switch(ftype){
+#if defined(OTL_UNICODE)
+  case SQL_WLONGVARCHAR: return SQL_WLONGVARCHAR;
+  case SQL_C_WCHAR: return SQL_WVARCHAR;
+#else
+  case SQL_LONGVARCHAR: return SQL_LONGVARCHAR;
+  case SQL_C_CHAR: return SQL_VARCHAR;
+#endif
+  case SQL_LONGVARBINARY: return SQL_LONGVARBINARY;
+  case SQL_C_DATE: return SQL_DATE;
+#if (ODBCVER >= 0x0300)
+  case SQL_C_TIME: return SQL_TYPE_TIME;
+  case SQL_C_TIMESTAMP: return SQL_TYPE_TIMESTAMP;
+#else
+  case SQL_C_TIME: return SQL_TIME;
+  case SQL_C_TIMESTAMP: return SQL_TIMESTAMP;
+#endif
+  case SQL_C_DOUBLE: return SQL_DOUBLE;
+#if defined(OTL_BIGINT)
+  case SQL_C_SBIGINT: return SQL_BIGINT;
+#endif
+  case SQL_C_FLOAT: return SQL_FLOAT;
+  case SQL_C_SLONG: return SQL_INTEGER;
+  case SQL_C_SSHORT: return SQL_SMALLINT;
+  case SQL_C_ULONG: return SQL_DOUBLE;
+  case SQL_C_BINARY: return SQL_VARBINARY;
+  default: return -1;
+  }
+ }
+
+ int bind
+ (const char* /* name */,
+  otl_var& v,
+  const int aelem_size,
+  const int aftype,
+  const int aparam_type,
+  const int name_pos,
+  const int /* apl_tab_size */)
+ {OTL_SQLSMALLINT ftype=OTL_SCAST(OTL_SQLSMALLINT,tmpl_ftype2odbc_ftype(aftype));
+  OTL_SQLSMALLINT ftype_save=ftype;
+  int param_type;
+  int parm_pos=name_pos;
+  v.vparam_type=aparam_type;
+  switch(aparam_type){
+  case otl_input_param:
+   param_type=SQL_PARAM_INPUT;
+   break;
+  case otl_output_param:
+   param_type=SQL_PARAM_OUTPUT;
+   break;
+  case otl_inout_param:
+   param_type=SQL_PARAM_INPUT_OUTPUT;
+   break;
+  default:
+   param_type=SQL_PARAM_INPUT;
+   break;
+  }
+#if defined(OTL_UNICODE)
+  if(ftype==SQL_WLONGVARCHAR){
+   ftype=SQL_C_WCHAR;
+#else
+  if(ftype==SQL_LONGVARCHAR){
+   ftype=SQL_C_CHAR;
+#endif
+  }else if(ftype==SQL_LONGVARBINARY){
+   ftype=SQL_C_BINARY;
+  }
+  int sqltype=otl_map_ext2int(ftype_save);
+  int mapped_sqltype=sqltype;
+
+  if(aftype==otl_var_db2date)
+#if (ODBCVER >= 0x0300)
+   mapped_sqltype=SQL_TYPE_DATE;
+#else
+   mapped_sqltype=SQL_DATE;
+#endif
+  else if(aftype==otl_var_db2time)
+#if (ODBCVER >= 0x0300)
+   mapped_sqltype=SQL_TYPE_TIME;
+#else
+   mapped_sqltype=SQL_TIME;
+#endif
+  if(v.lob_stream_mode&&
+     (ftype_save==SQL_LONGVARBINARY||
+#if defined(OTL_UNICODE)
+      ftype_save==SQL_WLONGVARCHAR)){
+#else
+      ftype_save==SQL_LONGVARCHAR)){
+#endif
+   // in case of "stream mode" the variable
+   // gets bound in a special way
+#if defined(OTL_ODBC_MSSQL_2005)
+    switch(ftype_save){
+    case SQL_LONGVARBINARY:
+      mapped_sqltype=SQL_VARBINARY;
+      break;
+#if defined(OTL_UNICODE)
+    case SQL_WLONGVARCHAR:
+      mapped_sqltype=SQL_WVARCHAR;
+      break;
+#else
+    case SQL_LONGVARCHAR:
+      mapped_sqltype=SQL_VARCHAR;
+      break;
+#endif
+    }
+#endif
+   status=SQLBindParameter
+    (cda,                                             
+     OTL_SCAST(OTL_SQLUSMALLINT,parm_pos),            
+     OTL_SCAST(OTL_SQLSMALLINT,param_type),           
+     ftype,                                           
+     OTL_SCAST(OTL_SQLSMALLINT,mapped_sqltype),       
+#if (ODBCVER >= 0x0300)
+
+#if defined(OTL_ODBC_MSSQL_2005)
+     0,
+#else
+     sqltype==SQL_TYPE_TIMESTAMP?otl_odbc_date_prec:aelem_size,
+#endif
+
+#else
+     sqltype==SQL_TIMESTAMP?otl_odbc_date_prec:aelem_size,
+#endif
+#if (ODBCVER >= 0x0300)
+     sqltype==SQL_TYPE_TIMESTAMP?otl_odbc_date_scale:0,
+#else
+     sqltype==SQL_TIMESTAMP?otl_odbc_date_scale:0,
+#endif
+     OTL_RCAST(OTL_SQLPOINTER,OTL_SCAST(size_t,parm_pos)),
+     0,                     
+     v.p_len);                                        
+  }else{
+    int temp_column_size=0;
+#if (ODBCVER >= 0x0300)
+    if(sqltype==SQL_TYPE_TIMESTAMP)
+      temp_column_size=otl_odbc_date_prec;
+#if defined(OTL_UNICODE)
+    else if(ftype==SQL_C_WCHAR)
+      temp_column_size=(aelem_size-1)*sizeof(OTL_CHAR); 
+#else
+    else if(ftype==SQL_C_CHAR)
+      temp_column_size=aelem_size-1;
+#endif
+    else
+      temp_column_size=aelem_size;
+#else
+    if(sqltype==SQL_TIMESTAMP)
+      temp_column_size=otl_odbc_date_prec;
+    else if(ftype==SQL_C_CHAR)
+      temp_column_size=aelem_size-1;
+    else
+      temp_column_size=aelem_size;
+#endif
+    OTL_SQLINTEGER buflen=0;
+#if defined(OTL_UNICODE)
+    if(ftype==SQL_C_WCHAR)
+      buflen=aelem_size*sizeof(OTL_CHAR);
+    else
+#endif
+      buflen=aelem_size;
+   status=SQLBindParameter
+    (cda,
+     OTL_SCAST(OTL_SQLUSMALLINT,parm_pos),
+     OTL_SCAST(OTL_SQLSMALLINT,param_type),
+     ftype,
+     OTL_SCAST(OTL_SQLSMALLINT,mapped_sqltype),
+     temp_column_size,
+#if (ODBCVER >= 0x0300)
+     sqltype==SQL_TYPE_TIMESTAMP?otl_odbc_date_scale:0,
+#else
+     sqltype==SQL_TIMESTAMP?otl_odbc_date_scale:0,
+#endif
+     OTL_RCAST(OTL_SQLPOINTER,v.p_v),
+     buflen,
+     v.p_len);
+  }
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+   return 0;
+  else
+   return 1;
+ }
+
+  int bind
+  (const int column_num,
+   otl_var& v,
+   const int elem_size,
+   const int aftype,
+   const int param_type)
+  {SWORD ftype=OTL_SCAST(SWORD,tmpl_ftype2odbc_ftype(aftype));
+  v.vparam_type=param_type;
+  SWORD ftype_save=ftype;
+#if defined(OTL_UNICODE)
+  if(ftype==SQL_WLONGVARCHAR){
+   ftype=SQL_C_WCHAR;
+#else
+  if(ftype==SQL_LONGVARCHAR){
+   ftype=SQL_C_CHAR;
+#endif
+  }else if(ftype==SQL_LONGVARBINARY){
+   ftype=SQL_C_BINARY;
+  }
+  if(v.lob_stream_mode&&
+     (ftype_save==SQL_LONGVARBINARY||
+#if defined(OTL_UNICODE)
+      ftype_save==SQL_WLONGVARCHAR)){
+#else
+      ftype_save==SQL_LONGVARCHAR)){
+#endif
+   // in case of "stream mode" the variable
+   // remains unbound
+   v.lob_ftype=ftype;
+   v.lob_pos=column_num;
+   return 1;
+  }else{
+    SQLINTEGER buflen=elem_size;
+#if defined(OTL_UNICODE)
+    if(ftype==SQL_C_WCHAR||ftype==SQL_WLONGVARCHAR)
+      buflen=elem_size*sizeof(OTL_CHAR);
+#endif
+   status=SQLBindCol
+    (cda,
+     OTL_SCAST(unsigned short,column_num),
+     ftype,
+     OTL_RCAST(PTR,v.p_v),
+     buflen,
+     &v.p_len[0]);
+   if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)
+    return 0;
+   else
+    return 1;
+  }
+
+ }
+
+ int describe_column
+ (otl_column_desc& col,
+  const int column_num,
+  int& eof_desc)
+ {
+  OTL_SQLCHAR name[256];
+  OTL_SQLSMALLINT nlen;
+  OTL_SQLSMALLINT dbtype;
+  OTL_SQLLEN dbsize;
+  OTL_SQLSMALLINT scale;
+  OTL_SQLULEN prec;
+  OTL_SQLSMALLINT nullok;
+  OTL_SQLSMALLINT icols;
+
+  eof_desc=0;
+  status=SQLNumResultCols(cda,&icols);
+  if(status!=SQL_SUCCESS&&
+     status!=SQL_SUCCESS_WITH_INFO)
+   return 0;
+  if(column_num>icols){
+   eof_desc=1;
+   return 0;
+  }
+#if (defined(UNICODE)||defined(_UNICODE))
+ {
+   SQLWCHAR temp_name[256];
+   status=SQLDescribeCol
+     (cda,
+      OTL_SCAST(unsigned short,column_num),
+      temp_name,
+      sizeof(temp_name),
+      &nlen,
+      &dbtype,
+      &prec,
+      &scale,
+      &nullok);
+   otl_convert_SQLWCHAR_to_char(OTL_RCAST(char*,name),temp_name);
+ }
+#else
+  status=SQLDescribeCol
+   (cda,
+    OTL_SCAST(unsigned short,column_num),
+    name,
+    sizeof(name),
+    &nlen,
+    &dbtype,
+    &prec,
+    &scale,
+    &nullok);
+#endif
+  if(!(status == SQL_SUCCESS || 
+       status == SQL_SUCCESS_WITH_INFO))
+    return 0;
+  dbsize=prec;
+  col.set_name(OTL_RCAST(char*,name));
+
+#if defined(OTL_DB2_CLI) && defined(OTL_DB2_CLI_MAP_LONG_VARCHAR_TO_VARCHAR)
+#if defined(OTL_UNICODE)
+#error OTL_DB2_CLI_MAP_LONG_VARCHAR_TO_VARCHAR is not supported when \
+OTL_UNICODE is defined
+#else
+  if(dbtype==SQL_LONGVARCHAR && 
+     dbsize <= OTL_DB2_CLI_MAP_LONG_VARCHAR_TO_VARCHAR){
+    dbtype=SQL_VARCHAR;
+  }
+#endif
+#endif
+
+  col.dbtype=dbtype;
+  col.dbsize=dbsize;
+  col.scale=scale;
+  col.prec=prec;
+  col.nullok=nullok;
+  return 1;
+ }
+
+ void error(otl_exc& exception_struct)
+ {OTL_SQLRETURN rc;
+  OTL_SQLSMALLINT msg_len=0;
+#if (ODBCVER >= 0x0300)
+
+#if (defined(UNICODE)||defined(_UNICODE))
+ {
+#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)
+   rc=SQLGetDiagRec
+     (SQL_HANDLE_STMT,
+      cda,
+      1,
+      &exception_struct.sqlstate[0],
+      OTL_RCAST(OTL_SQLINTEGER_PTR,&exception_struct.code),
+      &exception_struct.msg[0],
+      SQL_MAX_MESSAGE_LENGTH-1,
+      OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+   exception_struct.msg[msg_len]=0;
+#else
+   SQLWCHAR temp_sqlstate[1000];
+   SQLWCHAR temp_msg[SQL_MAX_MESSAGE_LENGTH];
+   rc=SQLGetDiagRec
+     (SQL_HANDLE_STMT,
+      cda,
+      1,
+      temp_sqlstate,
+      OTL_RCAST(OTL_SQLINTEGER_PTR,&exception_struct.code),
+      temp_msg,
+      SQL_MAX_MESSAGE_LENGTH-1,
+      OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+   temp_msg[msg_len]=0;
+   otl_convert_SQLWCHAR_to_char
+     (OTL_RCAST(char*,&exception_struct.sqlstate[0]),
+      temp_sqlstate);
+   otl_convert_SQLWCHAR_to_char
+     (OTL_RCAST(char*,&exception_struct.msg[0]),
+      temp_msg);
+#endif
+ }
+#else
+ void* temp_ptr=&exception_struct.code;
+ rc=SQLGetDiagRec
+   (SQL_HANDLE_STMT,
+    cda,
+    1,
+    OTL_RCAST(OTL_SQLCHAR_PTR,&exception_struct.sqlstate[0]),
+    OTL_RCAST(OTL_SQLINTEGER_PTR,temp_ptr),
+    OTL_RCAST(OTL_SQLCHAR_PTR,&exception_struct.msg[0]),
+    SQL_MAX_MESSAGE_LENGTH-1,
+    OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+#endif
+
+#else
+ rc=SQLError(adb->henv, 
+             adb->hdbc, 
+             cda,
+             OTL_RCAST(OTL_SQLCHAR_PTR,&exception_struct.sqlstate[0]),
+             OTL_RCAST(OTL_SQLINTEGER_PTR,&exception_struct.code),
+             OTL_RCAST(OTL_SQLCHAR_PTR,&exception_struct.msg[0]),
+             SQL_MAX_MESSAGE_LENGTH-1,
+             OTL_RCAST(OTL_SQLSMALLINT_PTR,&msg_len));
+#endif
+
+  exception_struct.msg[msg_len]=0;
+
+  if(rc==SQL_INVALID_HANDLE||rc==SQL_ERROR)
+    exception_struct.msg[0]=0;    
+#if (ODBCVER >= 0x0300)
+#if defined(OTL_EXTENDED_EXCEPTION)
+  else if(rc!=SQL_NO_DATA)
+    otl_fill_exception(exception_struct,cda,SQL_HANDLE_STMT);
+#endif
+#endif
+ }
+
+};
+
+class otl_sel{
+public:
+
+  int implicit_cursor;
+  int status;
+  int prefetch_array_size;
+  OTL_SQLUINTEGER crow;
+  int in_sequence;
+#if defined(OTL_ODBC_SQL_EXTENDED_FETCH_ON) || (ODBCVER<0x0300)
+  OTL_SQLUSMALLINT* row_status;
+  int row_status_arr_size;
+#endif
+ 
+ int close_select(otl_cur& cur)
+ {
+  if(!in_sequence)return 1;
+#if defined(OTL_DB2_CLI)
+  status=SQLCloseCursor(cur.cda);
+#else
+  status=SQLFreeStmt(cur.cda,SQL_CLOSE);
+#endif
+  in_sequence=0;
+  if(status==SQL_ERROR)
+   return 0;
+  else
+  return 1;
+ }
+
+ otl_sel()
+ {
+  implicit_cursor=0;
+  in_sequence=0;
+  prefetch_array_size=0;
+#if defined(OTL_ODBC_SQL_EXTENDED_FETCH_ON) || (ODBCVER<0x0300)
+  row_status=0;
+  row_status_arr_size=0;
+#endif
+ }
+
+  virtual ~otl_sel()
+  {
+#if defined(OTL_ODBC_SQL_EXTENDED_FETCH_ON) || (ODBCVER<0x0300)
+    if(row_status!=0){
+      delete[] row_status;
+      row_status=0;
+      row_status_arr_size=0;
+    }
+#endif
+  }
+
+#if defined(OTL_ODBC_SQL_EXTENDED_FETCH_ON) || (ODBCVER<0x0300)
+  void alloc_row_status(const int array_size)
+  {
+    if(row_status==0){
+      row_status=new OTL_SQLUSMALLINT[array_size];
+      row_status_arr_size=array_size;
+      memset(row_status,0,sizeof(OTL_SQLUSMALLINT)*array_size);
+    }else if(row_status!=0 && array_size!=row_status_arr_size){
+      delete[] row_status;
+      row_status=new OTL_SQLUSMALLINT[array_size];
+      row_status_arr_size=array_size;
+      memset(row_status,0,sizeof(OTL_SQLUSMALLINT)*array_size);
+    }
+  }
+#endif
+
+ void set_select_type(const int atype)
+ {
+  implicit_cursor=atype;
+ }
+
+  void init(const int /* array_size */)
+  {
+  }
+
+  void set_prefetch_size(const int aprefetch_array_size)
+  {
+    prefetch_array_size=aprefetch_array_size;
+  }
+
+ int first
+ (otl_cur& cur,
+  int& cur_row,
+  int& cur_size,
+  int& row_count,
+  int& eof_data,
+  const int 
+#if !defined(OTL_ODBC_XTG_IBASE6)
+  array_size
+#endif
+ )
+ {
+#if defined(OTL_ODBC_XTG_IBASE6)
+
+  cur_row=-1;
+  eof_data=0;
+  if(!implicit_cursor){
+   status=SQLExecute(cur.cda);
+   if(cur.canceled)return 0;
+#if defined(OTL_THROWS_ON_SQL_SUCCESS_WITH_INFO)
+   if(cur.adb && cur.adb->throws_on_sql_success_with_info &&
+      status==SQL_SUCCESS_WITH_INFO)
+     return 0;
+#endif
+   if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+  }
+  crow=0;
+  status=SQLFetch(cur.cda);
+  if(cur.canceled)return 0;
+  if(status==SQL_SUCCESS||status==SQL_SUCCESS_WITH_INFO){
+   crow=1;
+   in_sequence=1;
+  }
+
+#else
+
+#if defined(OTL_ODBC_SQL_EXTENDED_FETCH_ON)
+  alloc_row_status(array_size);
+#endif
+  cur_row=-1;
+  eof_data=0;
+#if (ODBCVER >= 0x0300)
+  status=SQLSetStmtAttr
+   (cur.cda,
+    SQL_ATTR_ROW_ARRAY_SIZE,
+    OTL_RCAST(void*,OTL_SCAST(size_t,array_size)),
+    SQL_NTS);
+#else
+#if defined(OTL_ODBC_TIMESTEN)
+  status=SQLSetStmtOption(cur.cda,TT_PREFETCH_COUNT,prefetch_array_size); 
+#else
+ status=SQLSetStmtOption(cur.cda,SQL_ROWSET_SIZE,array_size); 
+#endif
+#endif
+  if(cur.canceled)return 0;
+  if(status!=SQL_SUCCESS&&
+     status!=SQL_SUCCESS_WITH_INFO)
+   return 0;
+#if defined(OTL_ODBC_SQL_EXTENDED_FETCH_ON)
+#else
+#if (ODBCVER >= 0x0300)
+
+  status=SQLSetStmtAttr(cur.cda,SQL_ATTR_ROWS_FETCHED_PTR,&crow,SQL_NTS);
+  if(cur.canceled)return 0;
+  if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+
+#else
+#endif
+#endif
+  if(!implicit_cursor){
+    status=SQLExecute(cur.cda);
+    if(cur.canceled)return 0;
+#if defined(OTL_THROWS_ON_SQL_SUCCESS_WITH_INFO)
+    if(cur.adb && cur.adb->throws_on_sql_success_with_info &&
+      status==SQL_SUCCESS_WITH_INFO)
+     return 0;
+#endif
+    if(status!=SQL_SUCCESS&&status!=SQL_SUCCESS_WITH_INFO)return 0;
+  }
+#if defined(OTL_ODBC_SQL_EXTENDED_FETCH_ON)
+  if(array_size==1){
+   crow=0;
+   status=SQLFetch(cur.cda);
+   if(cur.canceled)return 0;
+   if(status==SQL_SUCCESS||status==SQL_SUCCESS_WITH_INFO){
+    crow=1;
+    in_sequence=1;
+   }
+  }else{
+   status=SQLExtendedFetch
+    (cur.cda, 
+     SQL_FETCH_NEXT,
+     1,
+     &crow, 
+     row_status); 
+  }
+#else
+#if (ODBCVER >= 0x0300)
+  status=SQLFetchScroll(cur.cda,SQL_FETCH_NEXT,1);
+#else
+  {
+    alloc_row_status(array_size);
+    status=SQLExtendedFetch
+      (cur.cda, 
+       SQL_FETCH_NEXT,
+       1,
+       &crow, 
+       row_status); 
+  }
+#endif
+
+#endif
+
+#endif
+  
+  in_sequence=1;
+  if(cur.canceled)return 0;
+  if(status==SQL_ERROR||
+     status==SQL_INVALID_HANDLE)
+   return 0;
+  if(status==SQL_NO_DATA_FOUND){
+   eof_data=1;
+   cur_row=-1;
+   crow=0;
+   row_count=0;
+   cur_size=0;
+#if defined(OTL_DB2_CLI)
+  status=SQLCloseCursor(cur.cda);
+#else
+   status=SQLFreeStmt(cur.cda,SQL_CLOSE);
+#endif
+   in_sequence=0;
+   if(status==SQL_ERROR)return 0;
+   return 1;
+  }
+  row_count=crow;
+  cur_size=row_count;
+  if(cur_size!=0)cur_row=0;
+  return 1;
+ }
+
+#if defined(OTL_ODBC_SQL_EXTENDED_FETCH_ON)
+ int next
+ (otl_cur& cur,
+  int& cur_row,
+  int& cur_size,
+  int& row_count,
+  int& eof_data,
+  const int array_size)
+ {
+   alloc_row_status(array_size);
+#else
+ int next
+ (otl_cur& cur,
+  int& cur_row,
+  int& cur_size,
+  int& row_count,
+  int& eof_data,
+#if (ODBCVER >= 0x0300)
+  const int /* array_size */)
+#else
+  const int array_size)
+#endif
+ {
+#endif
+  if(cur_row<cur_size-1){
+   ++cur_row;
+   return 1;
+  }else{
+   if(eof_data){
+    cur_row=-1;
+    cur_size=0;
+    in_sequence=0;
+#if defined(OTL_DB2_CLI)
+    status=SQLCloseCursor(cur.cda);
+#else
+    status=SQLFreeStmt(cur.cda,SQL_CLOSE);
+#endif
+    if(status==SQL_ERROR)return 0;
+    return 1;
+   }
+#if defined(OTL_ODBC_SQL_EXTENDED_FETCH_ON)
+  if(array_size==1){
+   crow=0;
+   status=SQLFetch(cur.cda);
+   if(cur.canceled)return 0;
+   if(status==SQL_SUCCESS||status==SQL_SUCCESS_WITH_INFO){
+    crow=1;
+    in_sequence=1;
+   }
+  }else{
+   status=SQLExtendedFetch
+    (cur.cda, 
+     SQL_FETCH_NEXT,
+     1,
+     &crow, 
+     row_status); 
+ }
+#else
+#if (ODBCVER >= 0x0300)
+  status=SQLFetchScroll(cur.cda,SQL_FETCH_NEXT,1);
+#else
+  {
+    alloc_row_status(array_size);
+    status=SQLExtendedFetch
+      (cur.cda, 
+       SQL_FETCH_NEXT,
+       1,
+       &crow, 
+       row_status); 
+  }
+#endif
+#endif
+   in_sequence=1;
+   if(cur.canceled)return 0;
+   if(status==SQL_ERROR||
+//    status==SQL_SUCCESS_WITH_INFO||
+      status==SQL_INVALID_HANDLE)
+    return 0;
+   if(status==SQL_NO_DATA_FOUND){
+    eof_data=1;
+    cur_row=-1;
+    cur_size=0;
+    in_sequence=0;
+#if defined(OTL_DB2_CLI)
+    status=SQLCloseCursor(cur.cda);
+#else
+    status=SQLFreeStmt(cur.cda,SQL_CLOSE);
+#endif
+    if(status==SQL_ERROR)return 0;
+    return 1;
+   }
+   cur_size=crow;
+   row_count+=crow;
+   if(cur_size!=0)cur_row=0;
+   return 1;
+  }
+ }
+
+};
+
+typedef otl_tmpl_connect
+  <otl_exc,
+   otl_conn,
+   otl_cur> otl_odbc_connect;
+
+typedef otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var> otl_cursor;
+
+typedef otl_tmpl_exception
+  <otl_exc,
+   otl_conn,
+   otl_cur> otl_exception;
+
+typedef otl_tmpl_select_stream
+ <otl_exc,
+  otl_conn,
+  otl_cur,
+  otl_var,
+  otl_sel,
+  otl_time> otl_select_stream;
+
+typedef otl_tmpl_inout_stream
+ <otl_exc,
+  otl_conn,
+  otl_cur,
+  otl_var,
+  otl_time> otl_inout_stream;
+
+class otl_connect: public otl_odbc_connect{
+public:
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+ otl_stream_pool sc;
+
+ void set_stream_pool_size(const int max_size=otl_max_default_pool_size)
+ {
+  sc.init(max_size);
+ }
+
+#endif
+
+  long direct_exec
+  (const char* sqlstm,
+   const int exception_enabled=1)
+   OTL_THROWS_OTL_EXCEPTION
+  {
+    return otl_cursor::direct_exec(*this,sqlstm,exception_enabled);
+  }
+
+  void syntax_check(const char* sqlstm)
+   OTL_THROWS_OTL_EXCEPTION
+  {
+    otl_cursor::syntax_check(*this,sqlstm);
+  }
+
+ otl_connect() OTL_NO_THROW
+ :otl_odbc_connect()
+  {
+    cmd_=0;
+  }
+
+ otl_connect(const char* connect_str, const int aauto_commit=0)
+   OTL_THROWS_OTL_EXCEPTION
+   : otl_odbc_connect(connect_str, aauto_commit)
+  {
+    cmd_=0;
+  }
+  
+ otl_connect(OTL_HENV ahenv,OTL_HDBC ahdbc,const int auto_commit=0)
+   OTL_THROWS_OTL_EXCEPTION
+   : otl_odbc_connect()
+  {
+    cmd_=0;
+    rlogon(ahenv,ahdbc,auto_commit);
+  }
+
+  const char* getCmd(void) const
+  {
+    return cmd_;
+  }
+
+  otl_connect& operator<<(const char* cmd)
+  {
+    if(!connected){
+      this->rlogon(cmd);
+    }else{
+      otl_cursor::direct_exec(*this,cmd);
+    }
+    return *this;
+  }
+
+  otl_connect& operator<<=(const char* cmd)
+  {
+    if(cmd_){
+      delete[] cmd_;
+      cmd_=0;
+    }
+    size_t cmd_len=strlen(cmd);
+    cmd_=new char[cmd_len+1];
+    OTL_STRCPY_S(cmd_,cmd_len+1,cmd);
+    return *this;
+  }
+
+#if defined(OTL_THROWS_ON_SQL_SUCCESS_WITH_INFO)
+  void set_throw_on_sql_success_with_info(const bool throw_flag=false)
+  {
+    this->connect_struct.throws_on_sql_success_with_info=throw_flag;
+  }
+#endif
+
+  void rlogon(OTL_HENV ahenv,OTL_HDBC ahdbc,const int auto_commit=0)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    if(this->connected){
+     throw otl_exception(otl_error_msg_30,otl_error_code_30);
+    }
+    if(cmd_){
+      delete[] cmd_;
+      cmd_=0;
+    }
+    retcode=connect_struct.ext_logon(ahenv,ahdbc,auto_commit);
+    if(retcode)
+      connected=1;
+   else{
+     connected=0;
+     throw_count++;
+     if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return; 
+#endif
+     throw otl_exception(connect_struct);
+   }
+  }
+
+#if defined(OTL_UNICODE_EXCEPTION_AND_RLOGON)
+  void rlogon(const OTL_UNICODE_CHAR_TYPE* username,
+              const OTL_UNICODE_CHAR_TYPE* passwd,
+              const OTL_UNICODE_CHAR_TYPE* dns,
+              const int auto_commit=0)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    if(this->connected){
+     throw otl_exception(otl_error_msg_30,otl_error_code_30);
+    }
+    retcode=connect_struct.rlogon
+      (OTL_RCAST(const SQLWCHAR*,username),
+       OTL_RCAST(const SQLWCHAR*,passwd),
+       OTL_RCAST(const SQLWCHAR*,dns),
+       auto_commit);
+    if(retcode)
+      connected=1;
+   else{
+     connected=0;
+     throw_count++;
+     if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return; 
+#endif
+     throw otl_exception(connect_struct);
+   }
+  }
+#endif
+  
+ virtual ~otl_connect() 
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   OTL_THROWS_OTL_EXCEPTION
+#endif
+  {
+    if(cmd_){
+      delete[] cmd_;
+      cmd_=0;
+    }
+#if defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+    try{
+      logoff();
+    }catch(otl_exception&){
+    }
+#endif
+  }
+
+ void rlogon(const char* connect_str, const int aauto_commit=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+    if(this->connected){
+     throw otl_exception(otl_error_msg_30,otl_error_code_30);
+    }
+    if(cmd_){
+      delete[] cmd_;
+      cmd_=0;
+   }
+    otl_odbc_connect::rlogon(connect_str,aauto_commit);
+ }
+  
+ void logoff(void) 
+   OTL_THROWS_OTL_EXCEPTION
+ {
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+  if(connected)
+   sc.init(sc.max_size);
+#endif
+  otl_odbc_connect::logoff();
+ }
+
+  void set_transaction_isolation_level(const long int level)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    retcode=connect_struct.set_transaction_isolation_level(level);
+    if(!retcode){
+     throw_count++;
+     if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return; 
+#endif
+     throw otl_exception(connect_struct);
+    }
+  }
+
+private:
+
+  char* cmd_;
+
+  otl_connect& operator=(const otl_connect&)
+  {
+    return *this;
+  }
+
+  otl_connect(const otl_connect&)
+  : otl_odbc_connect(){}
+
+};
+
+const int otl_odbc_no_stream=0;
+const int otl_odbc_io_stream=1;
+const int otl_odbc_select_stream=2;
+
+class otl_stream_shell: public otl_stream_shell_generic{
+public:
+
+  otl_select_stream* ss;
+  otl_inout_stream* io;
+  otl_connect* adb;
+  
+  int auto_commit_flag;
+  
+  otl_var_desc* iov;
+  int iov_len;
+  int next_iov_ndx;
+  
+  otl_var_desc* ov;
+  int ov_len;
+  int next_ov_ndx;
+  
+  bool flush_flag;
+  int stream_type;
+  bool lob_stream_flag;
+
+ otl_select_struct_override override;
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+ OTL_STRING_CONTAINER orig_sql_stm;
+#endif
+
+ otl_stream_shell()
+ {
+  should_delete=0;
+  stream_type=otl_odbc_no_stream;
+ }
+
+ otl_stream_shell(const int ashould_delete)
+ {
+  should_delete=0;
+  iov=0; iov_len=0;
+  ov=0; ov_len=0;
+  next_iov_ndx=0;
+  next_ov_ndx=0;
+  override.len=0;
+  ss=0; io=0;
+  adb=0;
+  flush_flag=true;
+  should_delete=ashould_delete;
+  lob_stream_flag=false;
+  stream_type=otl_odbc_no_stream;
+ }
+
+ virtual ~otl_stream_shell()
+ {
+  if(should_delete){
+   delete[] iov;
+   delete[] ov;
+
+   iov=0; iov_len=0;
+   ov=0; ov_len=0;
+   next_iov_ndx=0;
+   next_ov_ndx=0;
+   override.len=0;
+   flush_flag=true;
+
+   delete ss;
+   delete io;
+   ss=0; io=0;
+   adb=0;
+  }
+ }
+
+};
+
+template <OTL_TYPE_NAME TExceptionStruct,
+          OTL_TYPE_NAME TConnectStruct,
+          OTL_TYPE_NAME TCursorStruct,
+          OTL_TYPE_NAME TVariableStruct>
+class otl_tmpl_lob_stream: public otl_lob_stream_generic{
+public:
+
+  typedef otl_tmpl_exception
+  <TExceptionStruct,
+   TConnectStruct,
+   TCursorStruct> otl_exception;
+
+  typedef otl_tmpl_variable<TVariableStruct>* p_bind_var;
+  typedef otl_tmpl_connect
+  <TExceptionStruct,
+   TConnectStruct,
+   TCursorStruct>* p_connect;
+
+ typedef otl_tmpl_cursor
+ <TExceptionStruct,
+  TConnectStruct,
+  TCursorStruct,
+  TVariableStruct>* p_cursor;
+  
+  p_bind_var bind_var;
+  p_connect connect;
+  p_cursor cursor;
+  otl_long_string* temp_buf;
+  char* temp_char_buf;
+  bool written_to_flag;
+  bool closed_flag;
+  
+ void init
+ (void* avar,void* aconnect,void* acursor,
+  int andx,int amode,const int alob_is_null=0)
+   OTL_NO_THROW
+ {
+   closed_flag=false;
+   if(written_to_flag){
+      retcode=bind_var->var_struct.clob_blob(cursor->cursor_struct);
+      written_to_flag=false;
+      if(!retcode){
+        if(this->connect)this->connect->throw_count++;
+        if(this->connect&&this->connect->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (cursor->cursor_struct,
+           cursor->stm_label?cursor->stm_label:
+           cursor->stm_text);
+      }
+     
+   }
+  connect=OTL_RCAST(p_connect,aconnect);
+  bind_var=OTL_RCAST(p_bind_var,avar);
+  cursor=OTL_RCAST(p_cursor,acursor);
+  mode=amode;
+  retcode=0;
+  lob_is_null=alob_is_null;
+  ndx=andx;
+  offset=0;
+  lob_len=0;
+  eof_flag=0;
+  in_destructor=0;
+  if(bind_var)
+   bind_var->var_struct.set_lob_stream_flag();
+ }
+
+ void set_len(void) OTL_NO_THROW
+ {
+ }
+
+ void set_len(const int /*new_len*/) OTL_NO_THROW
+ {
+ }
+
+ otl_tmpl_lob_stream() OTL_NO_THROW
+   : otl_lob_stream_generic(false)
+ {
+  temp_buf=0;
+  temp_char_buf=0;
+  written_to_flag=false;
+  init(0,0,0,0,otl_lob_stream_zero_mode);
+ }
+
+ ~otl_tmpl_lob_stream() 
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   OTL_THROWS_OTL_EXCEPTION
+#endif
+ {
+   in_destructor=1;
+   if(temp_buf){
+     delete temp_buf;
+     temp_buf=0;
+   }
+   if(temp_char_buf){
+     delete[] temp_char_buf;
+     temp_char_buf=0;
+   }
+#if defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   try{
+     if(!closed_flag)
+       close();
+   }catch(otl_exception&){
+   }
+#else
+   if(!closed_flag)
+   close();
+#endif
+ }
+
+#if (defined(OTL_STL) || defined(OTL_ACE) || \
+     defined(OTL_USER_DEFINED_STRING_CLASS_ON)) && !defined(OTL_UNICODE)
+  otl_lob_stream_generic& operator<<(const OTL_STRING_CONTAINER& s)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    otl_long_string temp_s(s.c_str(),                  
+                           OTL_SCAST(int,s.length()),
+                           OTL_SCAST(int,s.length()));
+    (*this)<<temp_s;
+    return *this;
+  }
+
+  void setStringBuffer(const int chunk_size)
+  {
+    delete[] temp_char_buf;
+    temp_char_buf=0;
+    delete temp_buf;
+    temp_buf=0;
+    temp_char_buf=new char[chunk_size+1];
+    temp_buf=new otl_long_string(temp_char_buf,chunk_size);
+  }
+
+  otl_lob_stream_generic& operator>>(OTL_STRING_CONTAINER& s)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    const int TEMP_BUF_SIZE=4096;
+    if(!temp_char_buf)temp_char_buf=new char[TEMP_BUF_SIZE];
+    if(!temp_buf)temp_buf=new otl_long_string(temp_char_buf,TEMP_BUF_SIZE-1);
+    int iters=0;
+    while(!this->eof()){
+      ++iters;
+      (*this)>>(*temp_buf);
+      temp_char_buf[temp_buf->len()]=0;
+      if(iters>1)
+        s+=temp_char_buf;
+      else
+        s=temp_char_buf;
+    }
+    return *this;
+  }
+
+#endif
+
+ otl_lob_stream_generic& operator<<(const otl_long_string& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  if(mode!=otl_lob_stream_write_mode){
+   char* stm=0;
+   char var_info[256];
+   var_info[0]=0;
+   if(cursor!=0){
+     if(cursor->stm_label)
+       stm=cursor->stm_label;
+     else
+       stm=cursor->stm_text;
+   }
+   if(bind_var!=0){
+    otl_var_info_var
+     (bind_var->name,
+      bind_var->ftype,
+      otl_var_long_string,
+      var_info,
+      sizeof(var_info));
+   }
+   char* vinfo=0;
+   if(var_info[0]!=0)
+    vinfo=&var_info[0];
+   if(this->connect)this->connect->throw_count++;
+   if(this->connect&&this->connect->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return *this; 
+#endif
+   throw otl_tmpl_exception
+    <TExceptionStruct,
+     TConnectStruct,
+     TCursorStruct>
+     (otl_error_msg_9,
+      otl_error_code_9,
+      stm,
+      vinfo);
+  }
+  if(offset==0)offset=1;
+  retcode=bind_var->var_struct.write_blob
+   (s,lob_len,offset,cursor->cursor_struct);
+  written_to_flag=true;
+  if(retcode)
+   return *this;
+  if(this->connect)this->connect->throw_count++;
+  if(this->connect&&this->connect->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return *this; 
+#endif
+  throw OTL_TMPL_EXCEPTION
+    (cursor->cursor_struct,
+     cursor->stm_label?cursor->stm_label:
+     cursor->stm_text);
+ }
+
+ otl_lob_stream_generic& operator>>(otl_long_string& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  if(mode!=otl_lob_stream_read_mode){
+   char* stm=0;
+   char var_info[256];
+   var_info[0]=0;
+   if(cursor!=0){
+     if(cursor->stm_label)
+       stm=cursor->stm_label;
+     else
+       stm=cursor->stm_text;
+   }
+   if(bind_var!=0){
+    otl_var_info_var
+     (bind_var->name,
+      bind_var->ftype,
+      otl_var_long_string,
+      var_info,
+      sizeof(var_info));
+   }
+   char* vinfo=0;
+   if(var_info[0]!=0)
+    vinfo=&var_info[0];
+   if(this->connect)this->connect->throw_count++;
+   if(this->connect&&this->connect->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return *this; 
+#endif
+   throw OTL_TMPL_EXCEPTION
+    (otl_error_msg_10,
+     otl_error_code_10,
+     stm,
+     vinfo);
+  }
+  if(offset==0)offset=1;
+  retcode=bind_var->var_struct.read_blob
+   (cursor->cursor_struct,s,ndx,offset,eof_flag);
+  if(retcode){
+   if(eof())
+    close();
+   return *this;
+  }
+  if(this->connect)this->connect->throw_count++;
+  if(this->connect&&this->connect->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return *this; 
+#endif
+  throw OTL_TMPL_EXCEPTION
+    (cursor->cursor_struct,
+     cursor->stm_label?cursor->stm_label:
+     cursor->stm_text);
+ }
+
+ int eof(void) OTL_NO_THROW
+ {
+  if(mode!=otl_lob_stream_read_mode)return 1;
+  if(lob_is_null)return 1;
+  return eof_flag;
+ }
+
+ int len(void) OTL_THROWS_OTL_EXCEPTION
+ {
+  if(cursor==0||connect==0||bind_var==0||lob_is_null)return 0;
+  int alen;
+  retcode=bind_var->var_struct.get_blob_len(ndx,alen);
+  if(retcode)return alen;
+  if(this->connect)this->connect->throw_count++;
+  if(this->connect&&this->connect->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return 0; 
+#endif
+  throw OTL_TMPL_EXCEPTION
+    (connect->connect_struct,
+     cursor->stm_label?cursor->stm_label:
+     cursor->stm_text);
+ }
+
+ bool is_initialized(void) OTL_THROWS_OTL_EXCEPTION
+ {
+  if(cursor==0||connect==0||bind_var==0||lob_is_null)
+    return false;
+  else
+    return true;
+ }
+
+ void close(void) OTL_THROWS_OTL_EXCEPTION
+ {
+  if(in_destructor){
+   if(mode==otl_lob_stream_read_mode){
+    bind_var->var_struct.set_lob_stream_flag(0);
+    bind_var->set_not_null(0);
+   } if(mode==otl_lob_stream_write_mode){
+     retcode=bind_var->var_struct.clob_blob(cursor->cursor_struct);
+     closed_flag=true;
+     written_to_flag=false;
+     if(!retcode){
+       if(this->connect)this->connect->throw_count++;
+       if(this->connect&&this->connect->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+       if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+         uncaught_exception())return; 
+#endif
+       throw OTL_TMPL_EXCEPTION
+         (cursor->cursor_struct,
+          cursor->stm_label?cursor->stm_label:
+          cursor->stm_text);
+     }
+   }
+   return;
+  }
+  if(mode==otl_lob_stream_zero_mode)return;
+  if(mode==otl_lob_stream_read_mode){
+   bind_var->var_struct.set_lob_stream_flag(0);
+   bind_var->set_not_null(0);
+   init(0,0,0,0,otl_lob_stream_zero_mode);
+  }else{
+   // write mode
+    if(mode==otl_lob_stream_write_mode){
+      retcode=bind_var->var_struct.clob_blob(cursor->cursor_struct);
+      written_to_flag=false;
+      closed_flag=true;
+      if(!retcode){
+        if(this->connect)this->connect->throw_count++;
+        if(this->connect&&this->connect->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return; 
+#endif
+        throw OTL_TMPL_EXCEPTION
+          (cursor->cursor_struct,
+           cursor->stm_label?cursor->stm_label:
+           cursor->stm_text);
+      }
+    }
+    bind_var->var_struct.set_lob_stream_flag(0);
+    bind_var->set_not_null(0);
+  }
+ }
+
+};
+
+typedef otl_tmpl_lob_stream
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var> otl_lob_stream;
+
+class otl_stream{
+public:
+
+  otl_stream_shell* shell;
+  otl_ptr<otl_stream_shell> shell_pt;
+  int connected;
+  
+  otl_select_stream** ss;
+  otl_inout_stream** io;
+  otl_connect** adb;
+  
+  int* auto_commit_flag;
+  
+  otl_var_desc** iov;
+  int* iov_len;
+  int* next_iov_ndx;
+  
+  otl_var_desc** ov;
+  int* ov_len;
+  int* next_ov_ndx;
+  
+  otl_select_struct_override* override;
+  int end_marker;
+  int oper_int_called;
+  int last_eof_rc;
+  bool last_oper_was_read_op;
+
+protected:
+
+  int buf_size_;
+
+  void reset_end_marker(void)
+  {
+    last_eof_rc=0;
+    end_marker=-1;
+    oper_int_called=0;
+  }
+
+public:
+
+  const char* get_stm_text(void)
+  {
+    const char* no_stm_text=OTL_NO_STM_TEXT;
+    switch(shell->stream_type){
+    case otl_odbc_no_stream:
+      return no_stm_text;
+    case otl_odbc_io_stream:
+      return (*io)->stm_label?(*io)->stm_label:(*io)->stm_text;
+    case otl_odbc_select_stream:
+      return (*ss)->stm_label?(*ss)->stm_label:(*ss)->stm_text;
+    default:
+      return no_stm_text;
+    }
+  }
+
+
+  void setBufSize(int buf_size)
+  {
+    buf_size_=buf_size;
+  }
+  
+  int getBufSize(void) const
+  {
+    return buf_size_;
+  }
+
+ long get_rpc() OTL_THROWS_OTL_EXCEPTION
+ {
+  if((*io)){
+   (*adb)->reset_throw_count();
+   return (*io)->get_rpc();
+  }else if((*ss)){
+   (*adb)->reset_throw_count();
+   return (*ss)->_rfc;
+  }else
+   return 0;
+ }
+
+  operator int(void) OTL_THROWS_OTL_EXCEPTION
+  {
+    if(shell && shell->lob_stream_flag){
+      if(this->adb&&*this->adb)(*this->adb)->throw_count++;
+      if(this->adb&&*this->adb&&(*this->adb)->throw_count>1)return 0;
+      char* stm_label=0;
+      char* stm_text=0;
+      if((*io)){
+        stm_label=(*io)->stm_label;
+        stm_text=(*io)->stm_text;
+      }else if((*ss)){
+        stm_label=(*ss)->stm_label;
+        stm_text=(*ss)->stm_text;
+      }
+      throw otl_exception
+        (otl_error_msg_24,
+         otl_error_code_24,
+         stm_label?stm_label:stm_text);
+    }
+    if(!last_oper_was_read_op){
+      if(this->adb&&*this->adb)(*this->adb)->throw_count++;
+      if(this->adb&&*this->adb&&(*this->adb)->throw_count>1)return 0;
+      char* stm_label=0;
+      char* stm_text=0;
+      if((*io)){
+        stm_label=(*io)->stm_label;
+        stm_text=(*io)->stm_text;
+      }else if((*ss)){
+        stm_label=(*ss)->stm_label;
+        stm_text=(*ss)->stm_text;
+      }
+      throw otl_exception
+        (otl_error_msg_18,
+         otl_error_code_18,
+         stm_label?stm_label:stm_text);
+    }
+    if(end_marker==1)return 0;
+    int rc=0;
+    int temp_eof=eof();
+    if(temp_eof && end_marker==-1 && oper_int_called==0){
+      end_marker=1;
+      if(last_eof_rc==1)
+        rc=0;
+      else
+        rc=1;
+    }else if(!temp_eof && end_marker==-1)
+      rc=1;
+    else if(temp_eof && end_marker==-1){
+      end_marker=0;
+      rc=1;
+    }else if(temp_eof && end_marker==0){
+      end_marker=1;
+      rc=0;
+    }
+    if(!oper_int_called)oper_int_called=1;
+    return rc;
+  }
+
+  void cancel(void) OTL_THROWS_OTL_EXCEPTION
+  {
+    if((*ss)){
+      (*adb)->reset_throw_count();
+      int status=(*ss)->cursor_struct.cancel();
+      if(status==0)
+        throw otl_exception((*ss)->cursor_struct);
+    }else if((*io)){
+      (*adb)->reset_throw_count();
+      int status=(*io)->cursor_struct.cancel();
+      if(status==0)
+        throw otl_exception((*io)->cursor_struct);
+    }
+  }
+
+ void create_var_desc(void)
+ {int i;
+  delete[] (*iov);
+  delete[] (*ov);
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  if((*ss)){
+   if((*ss)->vl_len>0){
+    (*iov)=new otl_var_desc[(*ss)->vl_len];
+    (*iov_len)=(*ss)->vl_len;
+    for(i=0;i<(*ss)->vl_len;++i)
+     (*ss)->vl[i]->copy_var_desc((*iov)[i]);
+   }
+   if((*ss)->sl_len>0){
+    (*ov)=new otl_var_desc[(*ss)->sl_len];
+    (*ov_len)=(*ss)->sl_len;
+    for(i=0;i<(*ss)->sl_len;++i){
+      (*ss)->sl[i].copy_var_desc((*ov)[i]);
+      if((*ss)->sl_desc!=0)
+        (*ov)[i].copy_name((*ss)->sl_desc[i].name);
+    }
+   }
+  }else if((*io)){
+   if((*io)->vl_len>0){
+    (*iov)=new otl_var_desc[(*io)->vl_len];
+    (*iov_len)=(*io)->vl_len;
+    for(i=0;i<(*io)->vl_len;++i)
+     (*io)->vl[i]->copy_var_desc((*iov)[i]);
+   }
+   if((*io)->iv_len>0){
+    (*ov)=new otl_var_desc[(*io)->iv_len];
+    (*ov_len)=(*io)->iv_len;
+    for(i=0;i<(*io)->iv_len;++i)
+     (*io)->in_vl[i]->copy_var_desc((*ov)[i]);
+   }
+  }
+ }
+
+ void set_column_type(const int column_ndx,
+                      const int col_type,
+                      const int col_size=0)
+   OTL_NO_THROW
+ {
+   if(shell==0){
+     init_stream();
+     shell->flush_flag=true;
+   }
+  override->add_override(column_ndx,col_type,col_size);
+ }
+
+  void set_all_column_types(const unsigned mask=0)
+    OTL_NO_THROW
+  {
+    if(shell==0){
+      init_stream();
+      shell->flush_flag=true;
+    }
+    override->set_all_column_types(mask);
+  }
+
+ void set_flush(const bool flush_flag=true)
+   OTL_NO_THROW
+ {
+   if(shell==0)init_stream();
+   shell->flush_flag=flush_flag;
+ }
+
+ void set_lob_stream_mode(const bool lob_stream_flag=false)
+   OTL_NO_THROW
+ {
+  if(shell==0)return;
+  shell->lob_stream_flag=lob_stream_flag;
+ }
+
+ void inc_next_ov(void)
+ {
+  if((*ov_len)==0)return;
+  if((*next_ov_ndx)<(*ov_len)-1)
+   ++(*next_ov_ndx);
+  else
+   (*next_ov_ndx)=0;
+ }
+ 
+ void inc_next_iov(void)
+ {
+  if((*iov_len)==0)return;
+  if((*next_iov_ndx)<(*iov_len)-1)
+   ++(*next_iov_ndx);
+  else
+   (*next_iov_ndx)=0;
+ }
+
+ otl_var_desc* describe_in_vars(int& desc_len)
+   OTL_NO_THROW
+ {
+  desc_len=0;
+  if(shell==0)return 0;
+  if(shell->iov==0)return 0;
+  desc_len=shell->iov_len;
+  return shell->iov;
+ }
+
+ otl_var_desc* describe_out_vars(int& desc_len)
+   OTL_NO_THROW
+ {
+  desc_len=0;
+  if(shell==0)return 0;
+  if(shell->ov==0)return 0;
+  desc_len=shell->ov_len;
+  return shell->ov;
+ }
+
+ otl_var_desc* describe_next_in_var(void)
+   OTL_NO_THROW
+ {
+  if(shell==0)return 0;
+  if(shell->iov==0)return 0;
+  return &(shell->iov[shell->next_iov_ndx]);
+ }
+
+ otl_var_desc* describe_next_out_var(void)
+   OTL_NO_THROW
+ {
+  if(shell==0)return 0;
+  if(shell->ov==0)return 0;
+  return &(shell->ov[shell->next_ov_ndx]);
+ }
+
+ void init_stream(void)
+ {
+   buf_size_=1;
+   last_oper_was_read_op=false;
+   shell=0;
+   shell=new otl_stream_shell(0);
+   shell_pt.assign(&shell);
+   connected=0;
+   
+   ss=&(shell->ss);
+   io=&(shell->io);
+   adb=&(shell->adb);
+   auto_commit_flag=&(shell->auto_commit_flag);
+   iov=&(shell->iov);
+   iov_len=&(shell->iov_len);
+   next_iov_ndx=&(shell->next_iov_ndx);
+   ov=&(shell->ov);
+   ov_len=&(shell->ov_len);
+   next_ov_ndx=&(shell->next_ov_ndx);
+   override=&(shell->override);
+   
+   (*io)=0;
+   (*ss)=0;
+   (*adb)=0;
+   (*ov)=0; 
+   (*ov_len)=0;
+   (*next_iov_ndx)=0;
+   (*next_ov_ndx)=0;
+   (*auto_commit_flag)=1;
+   (*iov)=0; 
+   (*iov_len)=0;
+
+ }
+
+ otl_stream
+ (const otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  otl_connect& db,
+  const int implicit_select=otl_explicit_select,
+  const char* sqlstm_label=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  init_stream();
+
+  (*io)=0; (*ss)=0;
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  (*auto_commit_flag)=1;
+  (*next_iov_ndx)=0;
+  (*next_ov_ndx)=0;
+  (*adb)=&db;
+  shell->flush_flag=true;
+  open(arr_size,sqlstm,db,implicit_select,sqlstm_label);
+ }
+
+ otl_stream()
+   OTL_NO_THROW
+ {
+  init_stream();
+  shell->flush_flag=true;
+ }
+
+ virtual ~otl_stream()
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   OTL_THROWS_OTL_EXCEPTION
+#endif
+ {
+  if(!connected)return;
+  try{
+   if((*io)!=0&&shell->flush_flag==false)
+    (*io)->flush_flag2=false;
+   close();
+   if(shell!=0){
+    if((*io)!=0)
+     (*io)->flush_flag2=true;
+   }
+  }catch(OTL_CONST_EXCEPTION otl_exception&){
+   if(shell!=0){
+    if((*io)!=0)
+     (*io)->flush_flag2=true;
+   }
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+   clean(1);
+   if(shell!=0)
+    shell->should_delete=1;
+   shell_pt.destroy();
+#else
+   shell_pt.destroy();
+#endif
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   throw;
+#endif
+  }
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+  if(adb && (*adb) && (*adb)->throw_count>0
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  || 
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception()
+#endif
+     ){
+   //
+  }
+#else
+   shell_pt.destroy();
+#endif
+ }
+
+ int eof(void) OTL_NO_THROW
+ {
+  if((*io)){
+   (*adb)->reset_throw_count();
+   return (*io)->eof();
+  }else if((*ss)){
+   (*adb)->reset_throw_count();
+   return (*ss)->eof();
+  }else
+   return 1;
+ }
+
+ void flush(void) OTL_THROWS_OTL_EXCEPTION
+ {
+  if((*io)){
+   (*adb)->reset_throw_count();
+   (*io)->flush();
+  }
+ }
+
+ void clean(const int clean_up_error_flag=0) 
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  if((*io)){
+   (*adb)->reset_throw_count();
+   (*io)->clean(clean_up_error_flag);
+  }else if((*ss)){
+    (*adb)->reset_throw_count();
+    (*ss)->clean();
+  }
+ }
+
+ void rewind(void) OTL_THROWS_OTL_EXCEPTION
+ {
+  if((*io)){
+   (*adb)->reset_throw_count();
+   (*io)->rewind();
+  }else if((*ss)){
+   (*adb)->reset_throw_count();
+   (*ss)->rewind();
+  }
+ }
+
+ 
+ int is_null(void) OTL_NO_THROW
+ {
+  if((*io))
+   return (*io)->is_null();
+  else if((*ss))
+   return (*ss)->is_null();
+  else
+   return 0;
+ }
+
+ void set_commit(int auto_commit=0) OTL_NO_THROW
+ {
+  (*auto_commit_flag)=auto_commit;
+  if((*io)){
+   (*adb)->reset_throw_count();
+   (*io)->set_commit(auto_commit);
+  }
+ }
+
+ const char* assign_stream_type
+ (const char* stm_text,
+  const char* stm_label)
+ {
+   const char* temp_stm_text=0;
+   temp_stm_text=stm_label?stm_label:stm_text;
+   return temp_stm_text;
+ }
+ 
+ void open
+ (const otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  otl_connect& db,
+  const int implicit_select=otl_explicit_select,
+  const char* sqlstm_label=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   reset_end_marker();
+   otl_stream_buffer_size_type temp_arr_size=arr_size;
+   if(this->good()){
+     const char* temp_stm_text=assign_stream_type(sqlstm,sqlstm_label);
+     throw otl_exception
+       (otl_error_msg_29,
+        otl_error_code_29,
+        temp_stm_text);
+   }
+  if(shell==0)
+   init_stream();
+  buf_size_=arr_size;
+  OTL_TRACE_STREAM_OPEN
+
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+  char temp_buf[128];
+  otl_itoa(arr_size,temp_buf);
+  OTL_STRING_CONTAINER sql_stm=
+    OTL_STRING_CONTAINER(temp_buf)+
+    OTL_STRING_CONTAINER("===>")+
+    sqlstm;
+  otl_stream_shell* temp_shell=OTL_RCAST(otl_stream_shell*,db.sc.find(sql_stm));
+  if(temp_shell){
+   if(shell!=0)shell_pt.destroy();
+   shell=temp_shell;
+   ss=&(shell->ss);
+   io=&(shell->io);
+   if((*io)!=0)(*io)->flush_flag2=true;
+   adb=&(shell->adb);
+   auto_commit_flag=&(shell->auto_commit_flag);
+   iov=&(shell->iov);
+   iov_len=&(shell->iov_len);
+   next_iov_ndx=&(shell->next_iov_ndx);
+   ov=&(shell->ov);
+   ov_len=&(shell->ov_len);
+   next_ov_ndx=&(shell->next_ov_ndx);
+   override=&(shell->override);
+   try{
+     if((*iov_len)==0)this->rewind();
+   }catch(OTL_CONST_EXCEPTION otl_exception&){
+     if((*adb))
+      (*adb)->sc.remove(shell,shell->orig_sql_stm);
+     intern_cleanup();
+     shell_pt.destroy();
+     connected=0;
+     throw;     
+   }
+   connected=1;
+   return;
+  }
+  shell->orig_sql_stm=sql_stm;
+#endif
+
+  delete[] (*iov);
+  delete[] (*ov);
+
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  (*next_iov_ndx)=0;
+  (*next_ov_ndx)=0;
+
+  char tmp[7];
+  char* c=OTL_CCAST(char*,sqlstm);
+
+  override->lob_stream_mode=shell->lob_stream_flag;
+  while(otl_isspace(*c)||(*c)=='(')++c;
+  OTL_STRNCPY_S(tmp,sizeof(tmp),c,6);
+  tmp[6]=0;
+  c=tmp;
+  while(*c){
+   *c=OTL_SCAST(char,otl_to_upper(*c));
+   ++c;
+  }
+  if(adb==0)adb=&(shell->adb);
+  (*adb)=&db;
+  (*adb)->reset_throw_count();
+  try{
+#if defined(OTL_ODBC_POSTGRESQL) || \
+    defined(OTL_ODBC_SELECT_STM_EXECUTE_BEFORE_DESCRIBE)
+   if((strncmp(tmp,"SELECT",6)==0||
+       strncmp(tmp,"WITH",4)==0)){
+    (*ss)=new otl_select_stream(override,
+                                temp_arr_size,
+                                sqlstm,
+                                db,otl_implicit_select,
+                                sqlstm_label);
+    shell->stream_type=otl_odbc_select_stream;
+   }
+#else
+   if((strncmp(tmp,"SELECT",6)==0||
+       strncmp(tmp,"WITH",4)==0)&&
+      !implicit_select){
+#if defined(OTL_ODBC_TIMESTEN)
+   if(temp_arr_size>128||temp_arr_size<1){
+     const char* temp_stm_text=assign_stream_type(sqlstm,sqlstm_label);
+     throw otl_exception
+       (otl_error_msg_31,
+        otl_error_code_31,
+        temp_stm_text);
+   }
+#endif     
+    (*ss)=new otl_select_stream(override,temp_arr_size,sqlstm,
+                                db,otl_explicit_select,
+                                sqlstm_label);
+    shell->stream_type=otl_odbc_select_stream;
+   }
+#endif
+   else if(tmp[0]=='$'){
+     (*ss)=new otl_select_stream
+       (override,temp_arr_size,
+        sqlstm,db,
+        1,sqlstm_label);
+     shell->stream_type=otl_odbc_select_stream;
+   }else{
+     if(implicit_select){
+#if defined(OTL_ODBC_TIMESTEN)
+   if(temp_arr_size>128||temp_arr_size<1){
+     const char* temp_stm_text=assign_stream_type(sqlstm,sqlstm_label);
+     throw otl_exception
+       (otl_error_msg_31,
+        otl_error_code_31,
+        temp_stm_text);
+   }
+#endif     
+       (*ss)=new otl_select_stream(override,temp_arr_size,
+                                   sqlstm,db,
+                                   1,sqlstm_label);
+       shell->stream_type=otl_odbc_select_stream;
+     }else{
+       (*io)=new otl_inout_stream
+         (arr_size,sqlstm,db,
+          shell->lob_stream_flag,
+          sqlstm_label);
+       (*io)->flush_flag=shell->flush_flag;
+       shell->stream_type=otl_odbc_io_stream;
+     }
+   }
+  }catch(OTL_CONST_EXCEPTION otl_exception&){
+   shell_pt.destroy();
+   throw;
+  }
+  if((*io))(*io)->set_commit((*auto_commit_flag));
+  create_var_desc();
+  connected=1;
+ }
+
+ void intern_cleanup(void)
+ {
+  delete[] (*iov);
+  delete[] (*ov);
+
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  (*next_iov_ndx)=0;
+  (*next_ov_ndx)=0;
+  override->len=0;
+  override->lob_stream_mode=false;
+
+  switch(shell->stream_type){
+  case otl_odbc_no_stream:
+    break;
+  case otl_odbc_io_stream:
+    try{
+      (*io)->flush();
+      (*io)->close();
+    }catch(OTL_CONST_EXCEPTION otl_exception&){
+      clean(1);
+      (*io)->close();
+      delete (*io);
+      (*io)=0;
+      shell->stream_type=otl_odbc_no_stream;
+      throw;
+    }
+    delete (*io);
+    (*io)=0;
+    shell->stream_type=otl_odbc_no_stream;
+    break;
+  case otl_odbc_select_stream:
+    try{
+      (*ss)->close();
+    }catch(OTL_CONST_EXCEPTION otl_exception&){
+      delete (*ss);
+      (*ss)=0;
+      shell->stream_type=otl_odbc_no_stream;
+      throw;
+    }
+    delete (*ss);
+    (*ss)=0;
+    shell->stream_type=otl_odbc_no_stream;
+    break;
+  }
+  (*ss)=0; (*io)=0;
+  if(adb!=0)(*adb)=0; 
+  adb=0;
+ }
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+ void close(const bool save_in_stream_pool=true)
+   OTL_THROWS_OTL_EXCEPTION
+#else
+ void close(void)
+   OTL_THROWS_OTL_EXCEPTION
+#endif
+ {
+  if(shell==0)return;
+
+  OTL_TRACE_FUNC(0x4,"otl_stream","close","")
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+  if(save_in_stream_pool&&(*adb)&&
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     !(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())&&
+#endif
+     (*adb)->throw_count==0){
+   try{
+    this->flush();
+    this->clean(1);
+   }catch(OTL_CONST_EXCEPTION otl_exception&){
+    this->clean(1);
+    throw;
+   }
+   if((*adb) && (*adb)->throw_count>0){
+    (*adb)->sc.remove(shell,shell->orig_sql_stm);
+    intern_cleanup();
+    shell_pt.destroy();
+    connected=0;
+    return;
+   }
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception()){
+    if((*adb))
+     (*adb)->sc.remove(shell,shell->orig_sql_stm);
+    intern_cleanup();
+    shell_pt.destroy();
+    connected=0;
+    return; 
+   }
+#endif
+   (*adb)->sc.add(shell,shell->orig_sql_stm.c_str());
+   shell_pt.disconnect();
+   connected=0;
+  }else{
+   if((*adb))
+    (*adb)->sc.remove(shell,shell->orig_sql_stm);
+   intern_cleanup();
+   shell_pt.destroy();
+   connected=0;
+  }
+#else
+  intern_cleanup();
+  connected=0;
+#endif
+ }
+
+ otl_column_desc* describe_select(int& desc_len)
+   OTL_NO_THROW
+ {
+  desc_len=0;
+  if((*ss)){
+   (*adb)->reset_throw_count();
+   desc_len=(*ss)->sl_len;
+   return (*ss)->sl_desc;
+  }
+  return 0;
+ }
+
+ int good(void) OTL_NO_THROW
+ {
+  if(!connected)return 0;
+  if((*io)||(*ss)){
+   (*adb)->reset_throw_count();
+   return 1;
+  }else
+   return 0;
+ }
+
+ otl_stream& operator<<(otl_lob_stream& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=false;
+   reset_end_marker();
+  if((*io)){
+    (*io)->operator<<(s);
+   inc_next_iov();
+  }
+  return *this;
+ }
+
+ otl_stream& operator>>(otl_lob_stream& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   }
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(otl_time& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   }
+   return *this;
+ }
+
+ otl_stream& operator<<(const otl_time& n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     (*io)->operator<<(n);
+     break;
+   case otl_odbc_select_stream:
+     (*ss)->operator<<(n);
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   return *this;
+ }
+
+ otl_stream& operator>>(otl_datetime& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   otl_time tmp;
+   (*this)>>tmp;
+#if defined(OTL_DEFAULT_DATETIME_NULL_TO_VAL)
+   if((*this).is_null())
+     s=OTL_DEFAULT_DATETIME_NULL_TO_VAL;
+   else{
+     s.year=tmp.year;
+     s.month=tmp.month;
+     s.day=tmp.day;
+     s.hour=tmp.hour;
+     s.minute=tmp.minute;
+     s.second=tmp.second;
+     s.fraction=otl_from_fraction(tmp.fraction,s.frac_precision);
+   }
+#else
+  s.year=tmp.year;
+  s.month=tmp.month;
+  s.day=tmp.day;
+  s.hour=tmp.hour;
+  s.minute=tmp.minute;
+  s.second=tmp.second;
+  s.fraction=otl_from_fraction(tmp.fraction,s.frac_precision);
+#endif
+  OTL_TRACE_WRITE
+    (s.month<<"/"<<s.day<<"/"
+     <<s.year<<" "<<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+     "operator >>",
+     "otl_datetime&");
+  inc_next_ov();
+  return *this;
+ }
+
+ otl_stream& operator<<(const otl_datetime& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   otl_time tmp;
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   tmp.year=OTL_SCAST(SQLSMALLINT,s.year);
+   tmp.month=OTL_SCAST(SQLSMALLINT,s.month);
+   tmp.day=OTL_SCAST(SQLSMALLINT,s.day);
+   tmp.hour=OTL_SCAST(SQLSMALLINT,s.hour);
+   tmp.minute=OTL_SCAST(SQLSMALLINT,s.minute);
+   tmp.second=OTL_SCAST(SQLSMALLINT,s.second);
+   tmp.fraction=otl_to_fraction(s.fraction,s.frac_precision);
+   (*this)<<tmp;  
+   OTL_TRACE_READ(s.month<<"/"<<s.day<<"/"<<s.year
+                  <<" "<<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+                  "operator >>",
+                  "otl_datetime&");
+   inc_next_iov();
+   return *this;
+ }
+
+#if !defined(OTL_UNICODE)
+ otl_stream& operator>>(char& c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(c);
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(c);
+     break;
+   }
+#if defined(OTL_DEFAULT_CHAR_NULL_TO_VAL)
+   if((*this).is_null())
+     c=OTL_DEFAULT_CHAR_NULL_TO_VAL;
+#endif
+   OTL_TRACE_WRITE("'"<<c<<"'","operator >>","char&")
+   inc_next_ov();
+   return *this;
+ }
+#endif
+
+#if !defined(OTL_UNICODE)
+ otl_stream& operator>>(unsigned char& c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(c);
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(c);
+     break;
+   }
+#if defined(OTL_DEFAULT_CHAR_NULL_TO_VAL)
+   if((*this).is_null())
+     c=OTL_DEFAULT_CHAR_NULL_TO_VAL;
+#endif
+   OTL_TRACE_WRITE("'"<<c<<"'","operator >>","unsigned char&")
+   inc_next_ov();
+   return *this;
+ }
+#endif
+
+#if !defined(OTL_UNICODE)
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ otl_stream& operator>>(OTL_STRING_CONTAINER& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   }
+
+#if defined(OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL)
+   if((*this).is_null()){
+     OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL(s);
+   }
+#elif defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     s=OTL_DEFAULT_STRING_NULL_TO_VAL;
+#endif
+
+   OTL_TRACE_WRITE(s,"operator >>","OTL_STRING_CONTAINER&")
+   inc_next_ov();
+   return *this;
+ }
+#endif
+#endif
+
+#if !defined(OTL_UNICODE)
+ otl_stream& operator>>(char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   }
+#if defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     otl_strcpy(OTL_RCAST(unsigned char*,s),
+                OTL_RCAST(const unsigned char*,OTL_DEFAULT_STRING_NULL_TO_VAL));
+#endif
+   OTL_TRACE_WRITE(s,"operator >>","char*")
+   inc_next_ov();
+   return *this;
+ }
+#endif
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+ otl_stream& operator>>(OTL_UNICODE_STRING_TYPE& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   }
+
+#if defined(OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL)
+   if((*this).is_null()){
+     OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL(s);
+   }
+#elif defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     s=OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,OTL_DEFAULT_STRING_NULL_TO_VAL);
+#endif
+
+   OTL_TRACE_WRITE(s,
+                   "operator >>",
+                   "OTL_UNICODE_STRING_TYPE&");
+   inc_next_ov();
+   return *this;
+ }
+#endif
+
+ otl_stream& operator>>(unsigned char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   }
+#if defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     otl_strcpy
+       (OTL_RCAST(unsigned char*,s),
+        OTL_RCAST(unsigned char*,
+                  OTL_CCAST(char*,OTL_DEFAULT_STRING_NULL_TO_VAL)));
+#endif
+#if defined(OTL_UNICODE)
+   OTL_TRACE_WRITE(OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,s),
+                   "operator >>",
+                   OTL_UNICODE_CHAR_TYPE_TRACE_NAME "*")
+#else
+   OTL_TRACE_WRITE(s,"operator >>","unsigned char*")
+#endif
+   inc_next_ov();
+   return *this;
+ }
+
+#if defined(OTL_UNICODE)
+
+ otl_stream& operator>>(OTL_UNICODE_CHAR_TYPE& c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   OTL_UNICODE_CHAR_TYPE s[1024];
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(OTL_RCAST(unsigned char*,s));
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(OTL_RCAST(unsigned char*,s));
+     break;
+   }
+   c=s[0];
+#if defined(OTL_DEFAULT_CHAR_NULL_TO_VAL)
+   if((*this).is_null())
+     c=OTL_DEFAULT_CHAR_NULL_TO_VAL;
+#endif
+   OTL_TRACE_WRITE(c,"operator >>",
+                   OTL_UNICODE_CHAR_TYPE_TRACE_NAME "")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(OTL_UNICODE_CHAR_TYPE* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(OTL_RCAST(unsigned char*,s));
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(OTL_RCAST(unsigned char*,s));
+     break;
+   }
+#if defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     otl_strcpy(OTL_RCAST(unsigned char*,s),
+                OTL_RCAST(const unsigned char*,OTL_DEFAULT_STRING_NULL_TO_VAL));
+#endif
+   OTL_TRACE_WRITE(OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,s),
+                   "operator >>",
+                   OTL_UNICODE_CHAR_TYPE_TRACE_NAME "*")
+   inc_next_ov();
+   return *this;
+ }
+
+#endif
+
+ otl_stream& operator>>(int& n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(n);
+#else
+     (*io)->operator>><int,otl_var_int>(n);
+#endif
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(n);
+#else
+     (*ss)->operator>><int,otl_var_int>(n);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     n=OTL_SCAST(int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(n,"operator >>","int&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(unsigned& u)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(u);
+#else
+     (*io)->operator>><unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(u);
+#else
+     (*ss)->operator>><unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     u=OTL_SCAST(unsigned int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(u,"operator >>","unsigned&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(short& sh)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(sh);
+#else
+     (*io)->operator>><short,otl_var_short>(sh);
+#endif
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(sh);
+#else
+     (*ss)->operator>><short,otl_var_short>(sh);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     sh=OTL_SCAST(short int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(sh,"operator >>","short int&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(long int& l)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(l);
+#else
+     (*io)->operator>><long,otl_var_long_int>(l);
+#endif
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(l);
+#else
+     (*ss)->operator>><long,otl_var_long_int>(l);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     l=OTL_SCAST(long int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(l,"operator >>","long int&")
+   inc_next_ov();
+   return *this;
+ }
+
+#if defined(OTL_BIGINT)
+ otl_stream& operator>>(OTL_BIGINT& l)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_STR_TO_BIGINT) && defined(OTL_BIGINT_TO_STR)
+     {
+       otl_var_desc* var_desc=describe_next_out_var();
+       if(var_desc){
+         if(var_desc->ftype==otl_var_char){
+           char temp_val[otl_bigint_str_size];
+#if defined(OTL_UNICODE)
+           OTL_CHAR unitemp_val[otl_bigint_str_size];
+           (*ss)->operator>>(OTL_RCAST(unsigned char*,unitemp_val));
+           OTL_CHAR* uc=unitemp_val;
+           char* c=temp_val;
+           while(*uc){
+             *c=OTL_SCAST(char,*uc);
+             ++c; ++uc;
+           }
+           *c=0;
+#else
+           (*ss)->operator>>(temp_val);
+#endif
+           OTL_STR_TO_BIGINT(temp_val,l);
+         }else
+         (*io)->operator>>(l);
+       }
+     }
+#else
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(l);
+#else
+     (*io)->operator>><OTL_BIGINT,otl_var_bigint>(l);
+#endif
+#endif
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_STR_TO_BIGINT) && defined(OTL_BIGINT_TO_STR)
+     {
+       otl_var_desc* var_desc=describe_next_out_var();
+       if(var_desc){
+         if(var_desc->ftype==otl_var_char){
+           char temp_val[otl_bigint_str_size];
+           (*ss)->operator>>(temp_val);
+           OTL_STR_TO_BIGINT(temp_val,l);
+         }else
+           (*ss)->operator>>(l);
+       }
+     }
+#else
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(l);
+#else
+     (*ss)->operator>><OTL_BIGINT,otl_var_bigint>(l);
+#endif
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     l=OTL_SCAST(OTL_BIGINT,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+
+#if defined(_MSC_VER) && defined(OTL_TRACE_LEVEL)
+   // VC ++
+   {
+     char temp_str[otl_bigint_str_size];
+     _i64toa(l,temp_str,10);
+     OTL_TRACE_WRITE(temp_str,"operator >>","BIGINT&")
+   }
+#elif !defined(_MSC_VER) && defined(OTL_TRACE_LEVEL)
+   OTL_TRACE_WRITE(l,"operator >>","BIGINT&")
+#endif
+   inc_next_ov();
+   return *this;
+ }
+#endif
+
+ otl_stream& operator>>(float& f)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(f);
+#else
+     (*io)->operator>><float,otl_var_float>(f);
+#endif
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(f);
+#else
+     (*ss)->operator>><float,otl_var_float>(f);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     f=OTL_SCAST(float,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(f,"operator >>","float&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(double& d)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(d);
+#else
+     (*io)->operator>><double,otl_var_double>(d);
+#endif
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(d);
+#else
+     (*ss)->operator>><double,otl_var_double>(d);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     d=OTL_SCAST(double,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(d,"operator >>","double&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(otl_long_string& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_odbc_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   }
+   OTL_TRACE_WRITE(" string length: "<<s.len(),"operator >>","otl_long_string&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const char c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     (*io)->operator<<(c);
+     break;
+   case otl_odbc_select_stream:
+     (*ss)->operator<<(c);
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   OTL_TRACE_READ("'"<<c<<"'","operator <<","char");
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const unsigned char c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("'"<<c<<"'","operator <<","unsigned char");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     (*io)->operator<<(c);
+     break;
+   case otl_odbc_select_stream:
+     (*ss)->operator<<(c);
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+#if defined(OTL_UNICODE)
+
+ otl_stream& operator<<(const OTL_UNICODE_CHAR_TYPE* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ
+     ("\""<<OTL_RCAST(const OTL_UNICODE_CHAR_TYPE*,s)<<"\"",
+      "operator <<",
+      OTL_UNICODE_CHAR_TYPE_TRACE_NAME "*");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     (*io)->operator<<(OTL_RCAST(const unsigned char*,s));
+     break;
+   case otl_odbc_select_stream:
+     (*ss)->operator<<(OTL_RCAST(const unsigned char*,s));
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const OTL_UNICODE_CHAR_TYPE c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   OTL_UNICODE_CHAR_TYPE s[2];
+   s[0]=c;
+   s[1]=0;
+   (*this)<<s;
+   return *this;
+ }
+
+#endif
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ otl_stream& operator<<(const OTL_STRING_CONTAINER& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","OTL_STRING_CONTAINER&");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     (*io)->operator<<(s);
+     break;
+   case otl_odbc_select_stream:
+     (*ss)->operator<<(s);
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+#endif
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+ otl_stream& operator<<(const OTL_UNICODE_STRING_TYPE& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","OTL_UNICODE_STRING_TYPE&");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     (*io)->operator<<(s);
+     break;
+   case otl_odbc_select_stream:
+     (*ss)->operator<<(s);
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+#endif
+
+#if !defined(OTL_UNICODE)
+ otl_stream& operator<<(const char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","char*");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     (*io)->operator<<(s);
+     break;
+   case otl_odbc_select_stream:
+     (*ss)->operator<<(s);
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+#endif
+
+ otl_stream& operator<<(const unsigned char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+#if defined(OTL_UNICODE)
+   OTL_TRACE_READ
+     ("\""<<OTL_RCAST(const OTL_UNICODE_CHAR_TYPE*,s)<<"\"",
+      "operator <<",
+      OTL_UNICODE_CHAR_TYPE_TRACE_NAME "*");
+#else
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","unsigned char*");
+#endif
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     (*io)->operator<<(s);
+     break;
+   case otl_odbc_select_stream:
+     (*ss)->operator<<(s);
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const int n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(n,"operator <<","int");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(n);
+#else
+     (*io)->operator<<<int,otl_var_int>(n);
+#endif
+     break;
+   case otl_odbc_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(n);
+#else
+     (*ss)->operator<<<int,otl_var_int>(n);
+#endif
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+#if defined(OTL_BIGINT)
+ otl_stream& operator<<(const OTL_BIGINT n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+#if defined(_MSC_VER) && defined(OTL_TRACE_LEVEL)
+   // VC ++
+   {
+     char temp_str[otl_bigint_str_size];
+     _i64toa(n,temp_str,10);
+     OTL_TRACE_READ(temp_str,"operator >>","BIGINT")
+   }
+#elif !defined(_MSC_VER) && defined(OTL_TRACE_LEVEL)
+   OTL_TRACE_READ(n,"operator >>","BIGINT");
+#endif
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+#if defined(OTL_STR_TO_BIGINT) && defined(OTL_BIGINT_TO_STR)
+     {
+       otl_var_desc* var_desc=describe_next_in_var();
+       if(var_desc){
+         if(var_desc->ftype==otl_var_char){
+           char temp_val[otl_bigint_str_size];
+           OTL_BIGINT_TO_STR(n,temp_val);
+#if defined(OTL_UNICODE)
+           OTL_CHAR unitemp_val[otl_bigint_str_size];
+           OTL_CHAR* uc=unitemp_val;
+           char* c=temp_val;
+           while(*c){
+             *uc=OTL_SCAST(OTL_CHAR,*c);
+             ++c; ++uc;
+           }
+           *uc=0;
+           (*io)->operator<<(OTL_RCAST(const unsigned char*,unitemp_val));
+#else
+           (*io)->operator<<(temp_val);
+#endif
+         }else
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+           (*io)->operator<<(n);
+#else
+           (*io)->operator<<<OTL_BIGINT,otl_var_bigint>(n);
+#endif
+       }
+     }
+#else
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(n);
+#else
+     (*io)->operator<<<OTL_BIGINT,otl_var_bigint>(n);
+#endif
+#endif
+     break;
+   case otl_odbc_select_stream:
+#if defined(OTL_STR_TO_BIGINT) && defined(OTL_BIGINT_TO_STR)
+     {
+       otl_var_desc* var_desc=describe_next_in_var();
+       if(var_desc){
+         if(var_desc->ftype==otl_var_char){
+           char temp_val[otl_bigint_str_size];
+           OTL_BIGINT_TO_STR(n,temp_val);
+           (*ss)->operator<<(temp_val);
+         }else
+           (*ss)->operator<<(n);
+       }
+     }
+#else
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(n);
+#else
+     (*ss)->operator<<<OTL_BIGINT,otl_var_bigint>(n);
+#endif
+#endif
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+#endif
+
+ otl_stream& operator<<(const unsigned u)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(u,"operator <<","unsigned int");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(u);
+#else
+     (*io)->operator<<<unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   case otl_odbc_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(u);
+#else
+     (*ss)->operator<<<unsigned,otl_var_unsigned_int>(u);
+#endif
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const short sh)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(sh,"operator <<","short int");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(sh);
+#else
+     (*io)->operator<<<short,otl_var_short>(sh);
+#endif
+     break;
+   case otl_odbc_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(sh);
+#else
+     (*ss)->operator<<<short,otl_var_short>(sh);
+#endif
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const long int l)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(l,"operator <<","long int");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(l);
+#else
+     (*io)->operator<<<long,otl_var_long_int>(l);
+#endif
+     break;
+   case otl_odbc_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(l);
+#else
+     (*ss)->operator<<<long,otl_var_long_int>(l);
+#endif
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const float f)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(f,"operator <<","float");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(f);
+#else
+     (*io)->operator<<<float,otl_var_float>(f);
+#endif
+     break;
+   case otl_odbc_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(f);
+#else
+     (*ss)->operator<<<float,otl_var_float>(f);
+#endif
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const double d)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(d,"operator <<","double");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(d);
+#else
+     (*io)->operator<<<double,otl_var_double>(d);
+#endif
+     break;
+   case otl_odbc_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(d);
+#else
+     (*ss)->operator<<<double,otl_var_double>(d);
+#endif
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+  otl_stream& operator<<(const otl_null& /* n */)
+    OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("NULL","operator <<","otl_null&");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     (*io)->operator<<(otl_null());
+     break;
+   case otl_odbc_select_stream:
+     (*ss)->operator<<(otl_null());
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+  inc_next_iov();
+  return *this;
+ }
+
+ otl_stream& operator<<(const otl_long_string& d)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(" len= "<<d.len(),"operator <<","otl_long_string&");
+   switch(shell->stream_type){
+   case otl_odbc_no_stream:
+     break;
+   case otl_odbc_io_stream:
+     (*io)->operator<<(d);
+     break;
+   case otl_odbc_select_stream:
+     (*ss)->operator<<(d);
+     if(!(*ov)&&(*ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+private:
+
+  otl_stream& operator=(const otl_stream&)
+  {
+    return *this;
+  }
+
+  otl_stream(const otl_stream&){}
+
+#if !defined(OTL_STREAM_NO_PRIVATE_BOOL_OPERATORS)
+  otl_stream& operator>>(bool&)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+
+  otl_stream& operator<<(const bool)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+
+#endif
+
+#if !defined(OTL_STREAM_NO_PRIVATE_UNSIGNED_LONG_OPERATORS)
+  otl_stream& operator>>(unsigned long int&)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+
+  otl_stream& operator<<(const unsigned long int)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+#endif
+  
+};
+
+inline otl_connect& operator>>(otl_connect& connect, otl_stream& s)
+{
+  const char* cmd=connect.getCmd();
+  const char* invalid_cmd="*** INVALID COMMAND ***";
+  if(!cmd)
+    cmd=invalid_cmd;
+  s.open(s.getBufSize(),cmd,connect);
+  return connect;
+}
+
+#if (defined(OTL_STL)||defined(OTL_VALUE_TEMPLATE_ON)) && defined(OTL_VALUE_TEMPLATE)
+template <OTL_TYPE_NAME TData>
+otl_stream& operator<<(otl_stream& s, const otl_value<TData>& var)
+  OTL_THROWS_OTL_EXCEPTION
+{
+ if(var.ind)
+  s<<otl_null();
+ else
+  s<<var.v;
+ return s;
+}
+
+template <OTL_TYPE_NAME TData>
+otl_stream& operator>>(otl_stream& s, otl_value<TData>& var)
+  OTL_THROWS_OTL_EXCEPTION
+{
+  s>>var.v;
+  if(s.is_null())
+    var.ind=true;
+  else
+    var.ind=false;
+  return s;
+}
+
+#endif
+
+
+class otl_nocommit_stream: public otl_stream{
+public:
+
+ otl_nocommit_stream() OTL_NO_THROW
+   : otl_stream() 
+ {
+  set_commit(0);
+ }
+
+ otl_nocommit_stream
+ (const otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  otl_connect& db,
+  const int implicit_select=otl_explicit_select)
+   OTL_THROWS_OTL_EXCEPTION
+  : otl_stream(arr_size,sqlstm,db,implicit_select)
+ {
+  set_commit(0);
+ }
+
+ void open
+ (otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  otl_connect& db,
+  const int implicit_select=otl_explicit_select)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  otl_stream::open(arr_size,sqlstm,db,implicit_select);
+  set_commit(0);
+ }
+
+};
+
+OTL_ODBC_NAMESPACE_END
+#endif
+
+// ==================== OTL-Adapter for Oracle 7 =====================
+#if defined(OTL_ORA7)
+
+#if defined(OTL_UNICODE)
+#error OTL_ORA7 and OTL_UNICODE are incompatible
+#endif
+
+#if defined(OTL_ORA_TEXT_ON)
+#define text OTL_ORA_TEXT
+#endif
+
+extern "C"{
+#include <ociapr.h>
+}
+
+OTL_ORA7_NAMESPACE_BEGIN
+
+ const int inVarChar2=1;
+ const int inNumber=2;
+ const int inLong=8;
+ const int inRowId=11;
+ const int inDate=12;
+ const int inRaw=23;
+ const int inLongRaw=24;
+ const int inChar=96;
+ const int inMslabel=106;
+
+ const int  extVarChar2=inVarChar2;
+ const int  extNumber=inNumber;
+ const int  extInt=3;
+ const int  extFloat=4;
+ const int  extCChar=5;
+ const int  extVarNum=6;
+ const int  extLong=inLong;
+ const int  extVarChar=9;
+ const int  extRowId=inRowId;
+ const int  extDate=inDate;
+ const int  extVarRaw=15;
+ const int  extRaw=extVarRaw;
+ const int  extLongRaw=inLongRaw;
+ const int  extUInt=68;
+ const int  extLongVarChar=94;
+ const int  extLongVarRaw=95;
+ const int  extChar=inChar;
+ const int  extCharZ=97;
+ const int  extMslabel=inMslabel;
+
+typedef otl_oracle_date otl_time0;
+
+class otl_exc{
+public:
+ unsigned char msg[1000];
+ int code;
+ char sqlstate[32];
+
+#if defined(OTL_EXCEPTION_ENABLE_ERROR_OFFSET)
+  int error_offset;
+#endif
+
+#if defined(OTL_EXTENDED_EXCEPTION)
+ char** msg_arr;
+ char** sqlstate_arr;
+ int* code_arr;
+ int arr_len;
+#endif
+
+
+ enum{disabled=0,enabled=1};
+
+ otl_exc()
+ {
+  sqlstate[0]=0;
+  msg[0]=0;
+  code=0;
+#if defined(OTL_EXTENDED_EXCEPTION)
+  msg_arr=0;
+  sqlstate_arr=0;
+  code_arr=0;
+  arr_len=0;
+#endif
+ }
+
+ void init(const char* amsg, const int acode)
+ {
+  OTL_STRCPY_S(OTL_RCAST(char*,msg),sizeof(msg),amsg);
+  code=acode;
+#if defined(OTL_EXTENDED_EXCEPTION)
+  msg_arr=0;
+  sqlstate_arr=0;
+  code_arr=0;
+  arr_len=0;
+#endif
+ }
+
+};
+
+class otl_conn{
+public:
+
+ Lda_Def* lda;
+ unsigned char hda[512];
+ int extern_lda;
+
+ static int initialize(const int threaded_mode=0)
+ {
+  if(threaded_mode)
+   return !opinit(1);
+  else
+   return 1;
+ }
+
+ otl_conn()
+ {
+  extern_lda=0;
+  lda=new Lda_Def;
+  memset(lda,0,sizeof(*lda));
+  memset(hda,0,sizeof(hda));
+ }
+
+ virtual ~otl_conn()
+ {
+  delete lda;
+ }
+
+  void set_timeout(const int /*atimeout*/=0){}
+  void set_cursor_type(const int /*acursor_type*/=0){}
+
+ int ext_logon(Lda_Def* ext_lda,const int auto_commit)
+ {int rc;
+  if(!extern_lda)delete lda;
+  lda=ext_lda;
+  extern_lda=1;
+  if(auto_commit){
+   rc=ocon(lda);
+   if(rc)
+    return 0;
+   else
+    return 1;
+  }
+  return 1;
+ }
+
+ int rlogon(const char* connect_str,const int auto_commit)
+ {
+  if(!extern_lda)delete lda;
+  OTL_TRACE_RLOGON_ORA7
+    (0x1,
+     "otl_connect",
+     "rlogon",
+     connect_str,
+     auto_commit)
+  lda=new Lda_Def;
+  extern_lda=0;
+  memset(lda,0,sizeof(*lda));
+  memset(hda,0,sizeof(hda));
+  int rc=olog(lda,
+              hda,
+              OTL_RCAST(unsigned char*,OTL_CCAST(char*,connect_str)),
+              -1,
+              0,
+              -1,
+              0,
+              -1,
+              0
+             );
+  if(rc)return 0;
+  if(!auto_commit)return 1;
+  rc=ocon(lda);
+  if(rc)
+   return 0;
+  else
+   return 1;
+ }
+
+ int logoff(void)
+ {
+  if(extern_lda){
+   lda=0;
+   extern_lda=0;
+   return 1;
+  }else{
+   if(!lda)return 1;
+   if(lda->rc==3113||lda->rc==1041||lda->rc==1033||lda->rc==1034){
+    delete lda;
+    lda=0;
+    return 1;
+   }
+   int rc=ologof(lda);
+   delete lda;
+   lda=0;
+   return !rc;
+  }
+ }
+
+ void error(otl_exc& exception_struct)
+ {
+  if(!lda){
+   exception_struct.code=3113;
+   OTL_STRCPY_S(OTL_RCAST(char*,exception_struct.msg),
+                sizeof(exception_struct.msg),
+                "ORA-03113: end-of-file on communication channel"
+               );
+   return;
+  }
+  size_t len;
+  exception_struct.code=lda->rc;
+  oerhms
+   (lda,
+    lda->rc,
+    exception_struct.msg,
+    sizeof(exception_struct.msg)
+    );
+  len = strlen(OTL_RCAST(const char*,exception_struct.msg));
+  exception_struct.msg[len]=0;
+ }
+
+ int commit(void)
+ {
+  return !ocom(lda);
+ }
+
+ int auto_commit_on(void)
+ {
+  return !ocon(lda);
+ }
+
+ int auto_commit_off(void)
+ {
+  return !ocof(lda);
+ }
+
+ int rollback(void)
+ {
+  return !orol(lda);
+ }
+
+};
+
+class otl_var{
+public:
+
+  ub1* p_v;
+  sb2* p_ind;
+  ub2* p_rlen;
+  ub2* p_rcode;
+  int ftype;
+  int act_elem_size;
+  int array_size;
+  ub4 max_tab_len;
+  ub4 cur_tab_len;
+  int pl_tab_flag;
+  int vparam_type;
+  int lob_len;
+  int lob_pos;
+  int lob_ftype;
+  int otl_adapter;
+  bool lob_stream_mode;
+  bool charz_flag;
+  sb2 null_ind;
+
+ otl_var()
+ {
+  otl_adapter=otl_ora7_adapter;
+  p_v=0;
+  p_ind=0;
+  p_rlen=0;
+  p_rcode=0;
+  act_elem_size=0;
+  max_tab_len=0;
+  cur_tab_len=0;
+  pl_tab_flag=0;
+  vparam_type=-1;
+  lob_len=0;
+  lob_pos=0;
+  lob_ftype=0;
+  lob_stream_mode=false;
+  charz_flag=false;
+  null_ind=0;
+ }
+
+ virtual ~otl_var()
+ {
+  delete[] p_v;
+  delete[] p_ind;
+  delete[] p_rlen;
+  delete[] p_rcode;
+ }
+
+  int write_dt(void* trg, const void* src, const int sz)
+  {
+    memcpy(trg,src,sz);
+    return 1;
+  }
+
+  int read_dt(void* trg, const void* src, const int sz)
+  {
+    memcpy(trg,src,sz);
+    return 1;
+  }
+
+ int actual_elem_size(void)
+ {
+  return act_elem_size;
+ }
+
+ void init
+ (const int aftype,
+  int& aelem_size,
+  const otl_stream_buffer_size_type aarray_size,
+  const void* /*connect_struct*/=0,
+  const int apl_tab_flag=0)
+ {
+   int i,elem_size;
+   ftype=aftype;
+   pl_tab_flag=apl_tab_flag;
+   act_elem_size=aelem_size;
+   if(aftype==otl_var_varchar_long||aftype==otl_var_raw_long){
+     elem_size=aelem_size+sizeof(sb4);
+     array_size=1;
+   }else if(aftype==otl_var_raw){
+     elem_size=aelem_size+sizeof(short int);
+     array_size=aarray_size;
+   }else{
+     elem_size=aelem_size;
+     array_size=aarray_size;
+   }
+   
+   p_v=new ub1[elem_size*OTL_SCAST(unsigned,array_size)];
+   p_ind=new sb2[array_size];
+   p_rlen=new ub2[array_size];
+   p_rcode=new ub2[array_size];
+   memset(p_v,0,elem_size*OTL_SCAST(unsigned,array_size));
+   
+   if(aftype==otl_var_varchar_long||aftype==otl_var_raw_long){
+     if(aelem_size>32760)
+       p_ind[0]=0;
+     else
+       p_ind[0]=OTL_SCAST(short,aelem_size);
+     p_rcode[0]=0;
+   }else{
+     for(i=0;i<array_size;++i){
+       p_ind[i]=OTL_SCAST(short,aelem_size);
+       p_rlen[i]=OTL_SCAST(short,elem_size);
+       p_rcode[i]=0;
+     }
+   }
+   max_tab_len=OTL_SCAST(ub4,array_size);
+   cur_tab_len=OTL_SCAST(ub4,array_size);
+   switch(ftype){
+   case otl_var_varchar_long:
+   case otl_var_raw_long:
+     null_ind=0;
+     break;
+   case otl_var_raw:
+     null_ind=OTL_SCAST(short,aelem_size);
+     break;
+   default:
+     null_ind=OTL_SCAST(short,aelem_size);
+     break;
+   }
+ }
+
+ void set_pl_tab_len(const int apl_tab_len)
+ {
+  max_tab_len=OTL_SCAST(ub4,array_size);
+  cur_tab_len=OTL_SCAST(ub4,apl_tab_len);
+ }
+
+ int get_pl_tab_len(void)
+ {
+  return OTL_SCAST(int,cur_tab_len);
+ }
+
+ int get_max_pl_tab_len(void)
+ {
+  return OTL_SCAST(int,max_tab_len);
+ }
+
+ int put_blob(void)
+ {
+  return 1;
+ }
+
+ int get_blob
+ (const int /* ndx */,
+  unsigned char* /* abuf */,
+  const int /* buf_size */,
+  int& /* len */)
+ {
+  return 1;
+ }
+
+ int save_blob
+ (const unsigned char* /* abuf */,
+  const int /* len */,
+  const int /* extern_buffer_flag */)
+ {
+  return 1;
+ }
+
+ void set_null(int ndx)
+ {
+  p_ind[ndx]=-1;
+ }
+
+  void set_not_null(int ndx, int /*pelem_size*/)
+ {
+   p_ind[ndx]=null_ind;
+ }
+
+ void bulk_set_not_null(int pelem_size,int aarray_size)
+ {
+   bulk_set_len(pelem_size,aarray_size);
+ }
+
+ void set_len(int len, int ndx)
+ {
+   switch(ftype){
+   case otl_var_varchar_long:
+   case otl_var_raw_long:
+     *OTL_RCAST(sb4*,p_v)=len;
+     break;
+   default:
+     p_rlen[ndx]=OTL_SCAST(short,len);
+   }
+ }
+
+ void bulk_set_len(int len, int aarray_size)
+ {
+   switch(ftype){
+   case otl_var_varchar_long:
+   case otl_var_raw_long:
+     *OTL_RCAST(sb4*,p_v)=len;
+     break;
+   default:
+     for(int i=0;i<aarray_size;++i)
+       p_rlen[i]=OTL_SCAST(short,len);
+   }
+ }
+
+ int get_len(int ndx)
+ {
+  if(ftype==otl_var_varchar_long||ftype==otl_var_raw_long)
+   return *OTL_RCAST(sb4*,p_v);
+  else
+   return p_rlen[ndx];
+ }
+
+ int is_null(int ndx)
+ {
+  return p_ind[ndx]==-1;
+ }
+
+ void* val(int ndx,int pelem_size)
+ {
+   switch(ftype){
+   case otl_var_varchar_long:
+   case otl_var_raw_long:
+     return OTL_RCAST(void*,(p_v+sizeof(sb4)));
+   case otl_var_raw:
+     return OTL_RCAST(void*,&p_v[(OTL_SCAST(unsigned,ndx))*
+                                 (pelem_size+sizeof(short int))]);
+   default:
+     return OTL_RCAST(void*,&p_v[(OTL_SCAST(unsigned,ndx))*pelem_size]);
+   }
+ }
+
+ static int int2ext(int int_type)
+ {
+  switch(int_type){
+  case inVarChar2: return extCChar;
+  case inNumber:   return extFloat;
+  case inLong:     return extLongVarChar;
+  case inRowId:    return extCChar;
+  case inDate:     return extDate;
+  case inRaw:      return extRaw;
+  case inLongRaw:  return extLongVarRaw;
+  case inChar:     return extCChar;
+  default:
+   return otl_unsupported_type;
+  }
+ }
+
+ static int datatype_size(int aftype,int maxsz,int int_type,int max_long_size)
+ {
+  switch(aftype){
+  case extCChar:
+   switch(int_type){
+   case inRowId:
+    return 30;
+   case inDate:
+    return otl_oracle_date_size;
+   case inRaw:
+     return max_long_size;
+   default:
+    return maxsz+1;
+   }
+  case extLongVarChar:
+   return max_long_size;
+  case extLongVarRaw:
+   return max_long_size;
+  case extFloat:
+   return sizeof(double);
+  case extDate:
+   return otl_oracle_date_size;
+  case extRaw:
+    return maxsz;
+  default:
+   return 0;
+  }
+ }
+
+ static void map_ftype
+ (otl_column_desc& desc,
+  const int max_long_size,
+  int& aftype,
+  int& elem_size,
+  otl_select_struct_override& override,
+  const int column_ndx)
+ {int ndx=override.find(column_ndx);
+  if(ndx==-1){
+   aftype=int2ext(desc.dbtype);
+   elem_size=datatype_size
+     (aftype,
+      OTL_SCAST(int,desc.dbsize),
+      desc.dbtype,
+      max_long_size);
+   switch(aftype){
+   case extCChar:
+    aftype=otl_var_char;
+    break;
+   case extRaw:
+    aftype=otl_var_raw;
+    break;
+   case extFloat:
+    if(override.all_mask&otl_all_num2str){
+     aftype=otl_var_char;
+     elem_size=otl_num_str_size;
+    }else
+     aftype=otl_var_double;
+    break;
+   case extLongVarChar:
+    aftype=otl_var_varchar_long;
+    break;
+   case extLongVarRaw:
+    aftype=otl_var_raw_long;
+    break;
+   case extDate:
+    if(override.all_mask&otl_all_date2str){
+     aftype=otl_var_char;
+     elem_size=otl_date_str_size;
+    }else
+     aftype=otl_var_timestamp;
+    break;
+   }
+  }else{
+   aftype=override.col_type[ndx];
+   switch(aftype){
+   case otl_var_char:
+     elem_size=override.col_size[ndx];
+     break;
+   case otl_var_raw:
+     elem_size=override.col_size[ndx];
+     break;
+   case otl_var_double:
+     elem_size=sizeof(double);
+     break;
+   case otl_var_float:
+     elem_size=sizeof(float);
+     break;
+   case otl_var_int:
+     elem_size=sizeof(int);
+     break;
+   case otl_var_unsigned_int:
+     elem_size=sizeof(unsigned);
+     break;
+   case otl_var_short:
+     elem_size=sizeof(short);
+     break;
+   case otl_var_long_int:
+     elem_size=sizeof(long);
+     break;
+   default:
+     elem_size=override.col_size[ndx];
+     break;
+   }
+  }
+  desc.otl_var_dbtype=aftype;
+ }
+
+};
+
+class otl_cur{
+public:
+
+ Cda_Def cda;
+
+ ub4* rpc; // reference to "rows processed count"
+ ub2* ft; // reference to "OCI function code"
+ ub2* rc; // reference to "V7 return code"
+ ub2* peo; // reference to "parse error offset"
+ int last_param_data_token;
+ int last_sql_param_data_status;
+ int sql_param_data_count;
+ bool canceled;
+
+
+ otl_cur& operator=(const otl_cur& cur)
+ {
+  *rpc=*cur.rpc;
+  *ft=*cur.ft;
+  *rc=*cur.rc;
+  *peo=*cur.peo;
+  memcpy(OTL_RCAST(void*,&cda),
+         OTL_RCAST(void*,OTL_CCAST(cda_def *,&cur.cda)),
+         sizeof(cda));
+  return *this;
+ }
+
+ otl_cur()
+ {
+  rpc=&cda.rpc;
+  ft=&cda.ft;
+  rc=&cda.rc;
+  peo=&cda.peo;
+  memset(&cda,0,sizeof(cda));
+  last_param_data_token=0;
+  last_sql_param_data_status=0;
+  sql_param_data_count=0;
+  canceled=false;
+ }
+
+ virtual ~otl_cur(){}
+
+  int open(otl_conn& /* connect */,otl_var* /* var */)
+  {
+    return 1;
+  }
+
+ long get_rpc()
+ {
+  return *rpc;
+ }
+
+  void set_direct_exec(const int /* flag */){}
+  void set_parse_only(const int /*flag*/){}
+
+
+ int open(otl_conn& connect)
+ {
+  memset(&cda,0,sizeof(cda));
+  return !oopen(&cda,connect.lda,0,-1,-1,0,-1);
+ }
+
+ int close(void)
+ {
+  if(cda.rc==3113||cda.rc==1041||cda.rc==1033||cda.rc==1034)
+   return 1;
+  return !oclose(&cda);
+ }
+
+ int parse(const char* stm_text)
+ {
+  return !oparse(&cda,OTL_RCAST(unsigned char*,OTL_CCAST(char*,stm_text)),-1,0,1);
+ }
+
+  int exec(const int iters, const int /*rowoff*/)
+ {
+  int temp_rc=oexn(&cda,iters,0);
+  return !temp_rc;
+ }
+
+ int fetch(const otl_stream_buffer_size_type iters,int& eof_data)
+ {int temp_rc=ofen(&cda,iters);
+  eof_data=0;
+  if(cda.rc==1403){
+   eof_data=1;
+   return 1;
+  }else if(temp_rc==0)
+   return 1;
+  else
+   return 0;
+ }
+
+ int tmpl_ftype2ora_ftype(const int ftype)
+ {
+   switch(ftype){
+   case otl_var_char:
+     return extCChar;
+   case otl_var_double:
+     return extFloat;
+   case otl_var_float:
+     return extFloat;
+   case otl_var_int:
+     return extInt;
+   case otl_var_long_int:
+     return extInt;
+   case otl_var_unsigned_int:
+     return extUInt;
+   case otl_var_short:
+     return extInt;
+   case otl_var_timestamp:
+     return extDate;
+   case otl_var_varchar_long:
+     return extLongVarChar;
+   case otl_var_raw_long:
+     return extLongVarRaw;
+   case otl_var_raw:
+     return extRaw;
+   default:
+     return 0;
+   }
+ }
+
+ int bind
+ (const char* name,
+  otl_var& v,
+  const int elem_size,
+  const int ftype,
+  const int /* param_type */,
+  const int /* name_pos */,
+  const int apl_tab_flag)
+ {
+  if(apl_tab_flag)
+   return !obndra(&cda,
+                  OTL_RCAST(unsigned char*,OTL_CCAST(char*,name)),
+                  -1,
+                  OTL_RCAST(ub1*,v.p_v),
+                  ftype==otl_var_raw?elem_size+sizeof(short):elem_size,
+                  v.charz_flag?extCharZ:tmpl_ftype2ora_ftype(ftype),
+                  -1,
+                  v.p_ind,
+                  v.p_rlen,
+                  v.p_rcode,
+                  v.max_tab_len,
+                  &v.cur_tab_len,
+                  0,
+                  -1,
+                  -1);
+  else
+   return !obndrv
+    (&cda,
+     OTL_RCAST(unsigned char*,OTL_CCAST(char*,name)),
+     -1,
+     OTL_RCAST(ub1*,v.p_v),
+     ftype==otl_var_raw?elem_size+sizeof(short):elem_size,
+     tmpl_ftype2ora_ftype(ftype),
+     -1,
+     v.p_ind,
+     0,
+     -1,
+     -1);
+ }
+
+ int bind
+ (const int column_num,
+  otl_var& v,
+  const int elem_size,
+  const int ftype,
+  const int /* param_type */)
+ {
+  return !odefin
+   (&cda,
+    column_num,
+    OTL_RCAST(ub1*,v.p_v),
+    ftype==otl_var_raw?elem_size+sizeof(short):elem_size,
+    tmpl_ftype2ora_ftype(ftype),
+    -1,
+    v.p_ind,
+    0,
+    -1,
+    -1,
+    v.p_rlen,
+    v.p_rcode);
+ }
+
+ int describe_column
+ (otl_column_desc& col,
+  const int column_num,
+  int& eof_desc)
+ {
+  sb1  name[241];
+  sb4  nlen;
+  sb4  dbsize;
+  sb2  dbtype;
+
+  sb2  scale;
+  sb2  prec;
+  sb4  dsize;
+  sb2  nullok;
+
+  nlen=sizeof(name);
+  int temp_rc=odescr
+   (&cda,
+    column_num,
+    &dbsize,
+    &dbtype,
+    &name[0],
+    &nlen,
+    &dsize,
+    &prec,
+    &scale,
+    &nullok);
+  if(temp_rc==0)name[nlen]=0;
+  eof_desc=0;
+  if(cda.rc==1007){
+   eof_desc=1;
+   return 0;
+  }
+  if(temp_rc==0){
+    col.set_name(OTL_RCAST(char*,name));
+   col.dbtype=dbtype;
+   col.dbsize=dbsize;
+   col.scale=scale;
+   col.prec=prec;
+   col.nullok=nullok;
+   return 1;
+  }else
+   return 0;
+ }
+
+ void error(otl_exc& exception_struct)
+ {
+  size_t len;
+  exception_struct.code=cda.rc;
+  oerhms
+   (&cda,
+    cda.rc,
+    exception_struct.msg,
+    sizeof(exception_struct.msg)
+    );
+  len=strlen(OTL_RCAST(const char*,exception_struct.msg));
+  exception_struct.msg[len]=0;
+#if defined(OTL_EXCEPTION_ENABLE_ERROR_OFFSET)
+  ub2 error_offset=cda.peo;
+  exception_struct.error_offset=OTL_SCAST(int,error_offset);
+#endif
+ }
+
+};
+
+class otl_sel{
+public:
+
+ int implicit_cursor;
+
+  void set_prefetch_size(const int /*aprefetch_array_size*/)
+  {
+  }
+
+  int close_select(otl_cur& /* cur */)
+  {
+    int rc=1;
+    return rc;
+  }
+
+ otl_sel()
+ {
+  implicit_cursor=0;
+ }
+
+ virtual ~otl_sel(){}
+
+  void set_select_type(const int /* atype */)
+ {
+  implicit_cursor=0;
+ }
+
+  void init(const int /* array_size */){}
+
+ int first
+ (otl_cur& cur,
+  int& cur_row,
+  int& cur_size,
+  int& row_count,
+  int& eof_data,
+  const int array_size)
+ {int rc;
+  eof_data=0;
+  cur_row=-1;
+  rc=cur.exec(1,0);
+  if(rc==0)return 0;
+  rc=cur.fetch(OTL_SCAST(otl_stream_buffer_size_type,array_size),eof_data);
+  if(rc==0)return 0;
+  row_count=*cur.rpc;
+  cur_size=row_count;
+  if(cur_size!=0)cur_row=0;
+  return 1;
+ }
+
+ int next
+ (otl_cur& cur,
+  int& cur_row,
+  int& cur_size,
+  int& row_count,
+  int& eof_data,
+  const int array_size)
+ {int rc;
+  if(cur_row<cur_size-1){
+   ++cur_row;
+   return 1;
+  }else{
+   if(eof_data){
+    cur_row=-1;
+    cur_size=0;
+    return 1;
+   }
+   rc=cur.fetch(OTL_SCAST(otl_stream_buffer_size_type,array_size),eof_data);
+   if(rc==0)return 0;
+   cur_size=*cur.rpc-row_count;
+   row_count=*cur.rpc;
+   if(cur_size!=0)cur_row=0;
+   return 1;
+  }
+ }
+
+};
+
+typedef otl_tmpl_connect
+  <otl_exc,
+   otl_conn,
+   otl_cur> otl_ora7_connect;
+
+typedef otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var> otl_cursor;
+
+typedef otl_tmpl_exception
+  <otl_exc,
+   otl_conn,
+   otl_cur> otl_exception;
+
+typedef otl_tmpl_inout_stream
+ <otl_exc,
+  otl_conn,
+  otl_cur,
+  otl_var,
+  otl_time0> otl_inout_stream;
+
+typedef otl_tmpl_select_stream
+ <otl_exc,
+  otl_conn,
+  otl_cur,
+  otl_var,
+  otl_sel,
+  otl_time0> otl_select_stream;
+
+
+typedef otl_tmpl_ext_hv_decl
+ <otl_var,
+  otl_time0,
+  otl_exc,
+  otl_conn,
+  otl_cur> otl_ext_hv_decl;
+
+class otl_stream_shell;
+
+class otl_connect: public otl_ora7_connect{
+public:
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+ otl_stream_pool sc;
+
+ void set_stream_pool_size(const int max_size=otl_max_default_pool_size)
+ {
+  sc.init(max_size);
+ }
+
+#endif
+
+  long direct_exec
+  (const char* sqlstm,
+   const int exception_enabled=1)
+   OTL_THROWS_OTL_EXCEPTION
+  {
+    return otl_cursor::direct_exec(*this,sqlstm,exception_enabled);
+  }
+
+  void syntax_check(const char* sqlstm)
+   OTL_THROWS_OTL_EXCEPTION
+  {
+    otl_cursor::syntax_check(*this,sqlstm);
+  }
+
+ otl_connect() OTL_NO_THROW
+   :otl_ora7_connect()
+  {
+    cmd_=0;
+  }
+
+ otl_connect(const char* connect_str, const int aauto_commit=0)
+   OTL_THROWS_OTL_EXCEPTION
+   : otl_ora7_connect(connect_str, aauto_commit)
+  {
+    cmd_=0;
+  }
+
+  virtual ~otl_connect() 
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+    OTL_THROWS_OTL_EXCEPTION
+#endif
+  {
+    if(cmd_){
+      delete[] cmd_;
+      cmd_=0;
+    }
+#if defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+    try{
+      logoff();
+    }catch(otl_exception&){
+    }
+#endif
+  }
+
+  void rlogon(Lda_Def* alda)
+   OTL_THROWS_OTL_EXCEPTION
+  {
+    if(this->connected){
+     throw otl_exception(otl_error_msg_30,otl_error_code_30);
+    }
+    if(cmd_){
+      delete[] cmd_;
+      cmd_=0;
+    }
+    connected=0;
+    long_max_size=32760;
+    retcode=connect_struct.ext_logon(alda,0);
+    if(retcode)
+      connected=1;
+    else{
+      connected=0;
+      throw_count++;
+      if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+      if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+        uncaught_exception())return; 
+#endif
+      throw otl_exception(connect_struct);
+    }
+  }
+
+ void rlogon(const char* connect_str, const int aauto_commit=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+    if(this->connected){
+     throw otl_exception(otl_error_msg_30,otl_error_code_30);
+    }
+    otl_ora7_connect::rlogon(connect_str,aauto_commit);
+ }
+
+ void logoff(void)
+ {
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+  if(connected)
+   sc.init(sc.max_size);
+#endif
+  otl_ora7_connect::logoff();
+ }
+
+  const char* getCmd(void) const
+  {
+    return cmd_;
+  }
+
+  otl_connect& operator<<(const char* cmd)
+  {
+    if(!connected){
+      this->rlogon(cmd);
+    }else{
+      otl_cursor::direct_exec(*this,cmd);
+    }
+    return *this;
+  }
+
+  otl_connect& operator<<=(const char* cmd)
+  {
+    if(cmd_){
+      delete[] cmd_;
+      cmd_=0;
+    }
+    size_t cmd_len=strlen(cmd);
+    cmd_=new char[cmd_len+1];
+    OTL_STRCPY_S(cmd_,cmd_len+1,cmd);
+    return *this;
+  }
+  
+private:
+
+  char* cmd_;
+  
+  otl_connect& operator=(const otl_connect&)
+  {
+    return *this;
+  }
+
+  otl_connect(const otl_connect&)
+    :otl_ora7_connect(){}
+
+};
+
+
+// ============ OTL Reference Cursor Streams for Oracle 7 =================
+
+typedef otl_tmpl_variable<otl_var> otl_generic_variable;
+typedef otl_generic_variable* otl_p_generic_variable;
+
+class otl_ref_cursor: public
+otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>{
+public:
+
+ int cur_row;
+ int cur_size;
+ int row_count;
+ int array_size;
+ otl_select_struct_override local_override;
+
+ otl_ref_cursor
+ (otl_connect& db,
+  const char* cur_placeholder_name,
+  const otl_stream_buffer_size_type arr_size=1)
+  :otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>(db)
+ {int i;
+  local_override.reset();
+  cur_row=-1;
+  row_count=0;
+  cur_size=0;
+  array_size=arr_size;
+  rvl_len=otl_var_list_size;
+  vl_cur_len=0;
+  rvl=new otl_p_generic_variable[rvl_len];
+  for(i=0;i<rvl_len;++i)rvl[i]=0;
+  OTL_STRCPY_S(cur_placeholder,sizeof(cur_placeholder),cur_placeholder_name);
+ }
+
+ otl_ref_cursor():
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>(),
+ sel_cur()
+ {
+   local_override.reset();
+ }
+
+ virtual ~otl_ref_cursor()
+ {
+  this->in_destructor=1;
+  delete[] rvl;
+  rvl=0;
+ }
+
+ void open
+ (otl_connect& db,
+  const char* cur_placeholder_name,
+  const otl_stream_buffer_size_type arr_size=1)
+ {
+  int i;
+  local_override.reset();
+  cur_row=-1;
+  row_count=0;
+  cur_size=0;
+  array_size=arr_size;
+  rvl_len=otl_var_list_size;
+  vl_cur_len=0;
+  rvl=new otl_p_generic_variable[rvl_len];
+  for(i=0;i<rvl_len;++i)rvl[i]=0;
+  OTL_STRCPY_S(cur_placeholder,sizeof(cur_placeholder),cur_placeholder_name);
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::open(db);
+ }
+
+ void close(void)
+ {
+   local_override.reset();
+   delete[] rvl;
+   rvl=0;
+   if(sel_cur.connected && sel_cur.adb==0)
+     sel_cur.adb=adb;
+   sel_cur.close();
+   otl_tmpl_cursor
+     <otl_exc,
+     otl_conn,
+     otl_cur,
+     otl_var>::close();
+ }
+
+ int first(void)
+ {int i,rc;
+  rc=obndrv
+   (&cursor_struct.cda,
+    OTL_RCAST(unsigned char*,cur_placeholder),
+    -1,
+    OTL_RCAST(ub1*,&sel_cur.cursor_struct.cda),
+    sizeof(sel_cur.cursor_struct.cda),
+    102,-1,0,0,-1,-1);
+  if(rc!=0){
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return 0; 
+#endif
+   throw otl_exception(cursor_struct,stm_label?stm_label:stm_text);
+  }
+  if(cur_row==-2)
+   ; // Special case -- calling describe_select() between parse() and first()
+  else{
+   exec(1); // Executing the PLSQL master block
+   sel_cur.connected=1;
+  }
+  cur_row=-1;
+  for(i=0;i<vl_cur_len;++i)
+   sel_cur.bind(i+1,*rvl[i]);
+  rc=sel_cur.cursor_struct.fetch
+   (OTL_SCAST(otl_stream_buffer_size_type,array_size),
+    sel_cur.eof_data);
+  if(rc==0){
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return 0; 
+#endif
+   throw otl_exception(sel_cur.cursor_struct,stm_label?stm_label:stm_text);
+  }
+  row_count=sel_cur.cursor_struct.cda.rpc;
+  OTL_TRACE_FIRST_FETCH
+  cur_size=row_count;
+  if(cur_size!=0)cur_row=0;
+  return cur_size!=0;
+ }
+
+ int next(void)
+ {int rc;
+  if(cur_row<0)return first();
+  if(cur_row<cur_size-1)
+   ++cur_row;
+  else{
+   if(sel_cur.eof()){
+    cur_row=-1;
+    return 0;
+   }
+   rc=sel_cur.cursor_struct.fetch
+    (OTL_SCAST(otl_stream_buffer_size_type,array_size),
+     sel_cur.eof_data);
+   if(rc==0){
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw otl_exception(sel_cur.cursor_struct,stm_label?stm_label:stm_text);
+   }
+   cur_size=sel_cur.cursor_struct.cda.rpc-row_count;
+   row_count=sel_cur.cursor_struct.cda.rpc;
+   OTL_TRACE_NEXT_FETCH
+   if(cur_size!=0)cur_row=0;
+  }
+  return cur_size!=0;
+ }
+
+ void bind
+ (const int column_num,
+  otl_generic_variable& v)
+ {
+  if(!connected)return;
+  ++vl_cur_len;
+  if(vl_cur_len==rvl_len){
+    int temp_rvl_len=rvl_len*2;
+    otl_p_generic_variable* temp_rvl=
+      new otl_p_generic_variable[temp_rvl_len];
+    int i;
+    for(i=0;i<rvl_len;++i)
+      temp_rvl[i]=rvl[i];
+    for(i=rvl_len+1;i<temp_rvl_len;++i)
+      temp_rvl[i]=0;
+    delete[] rvl;
+    rvl=temp_rvl;
+    rvl_len=temp_rvl_len;
+  }
+  rvl[vl_cur_len-1]=&v;
+  v.pos=column_num;
+ }
+
+ void bind(otl_generic_variable& v)
+ {
+  if(v.pos)
+   bind(v.pos,v);
+  else if(v.name)
+   otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::bind(v);
+ }
+
+ void bind
+ (const char* name,
+  otl_generic_variable& v)
+ {
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::bind(name,v);
+ }
+
+ int describe_select
+ (otl_column_desc* desc,
+  int& desc_len)
+ {int i,rc;
+  rc=obndrv
+   (&cursor_struct.cda,
+    OTL_RCAST(unsigned char*,cur_placeholder),
+    -1,
+    OTL_RCAST(ub1*,&sel_cur.cursor_struct.cda),
+    sizeof(sel_cur.cursor_struct.cda),
+    102,-1,0,0,-1,-1);
+  if(rc!=0){
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return 0; 
+#endif
+   throw otl_exception(cursor_struct,stm_label?stm_label:stm_text);
+  }
+  exec(1); // Executing the PLSQL master block
+  sel_cur.connected=1;
+  cur_row=-2; // Special case -- describe_select() before first() or next()
+  desc_len=0;
+  for(i=1;sel_cur.describe_column(desc[i-1],i);++i)
+   ++desc_len;
+  return 1;
+ }
+
+public:
+
+ otl_cursor sel_cur;
+
+protected:
+
+ int rvl_len;
+ otl_p_generic_variable* rvl;
+ int vl_cur_len;
+ char cur_placeholder[64];
+
+};
+
+class otl_ref_select_stream: public otl_ref_cursor{
+public:
+
+ otl_select_struct_override* override;
+ long _rfc;
+
+ void cleanup(void)
+ {int i;
+  delete[] sl;
+  for(i=0;i<vl_len;++i)
+   delete vl[i];
+  delete[] vl;
+  delete[] sl_desc;
+ }
+
+ otl_ref_select_stream
+ (otl_select_struct_override* aoverride,
+  const otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  const char* acur_placeholder,
+  otl_connect& db,
+  const char* sqlstm_label=0)
+  :otl_ref_cursor(db,acur_placeholder,arr_size)
+ {
+   if(sqlstm_label!=0){
+     if(stm_label!=0){
+       delete[] stm_label;
+       stm_label=0;
+     }
+     size_t len=strlen(sqlstm_label)+1;
+     stm_label=new char[len];
+     OTL_STRCPY_S(stm_label,len,sqlstm_label);
+   }
+  _rfc=0;
+  init();
+  {
+   size_t len=strlen(sqlstm)+1;
+   stm_text=new char[len];
+   OTL_STRCPY_S(stm_text,len,sqlstm);
+   otl_select_struct_override* temp_local_override=&this->local_override;
+   otl_ext_hv_decl hvd
+     (this->stm_text,
+      1,
+      this->stm_label,
+      &temp_local_override,
+      adb
+     );
+   hvd.alloc_host_var_list(vl,vl_len,*adb);
+  }
+  override=aoverride;
+  try{
+   parse();
+   if(vl_len==0){
+    rewind();
+    null_fetched=0;
+   }
+  }catch(OTL_CONST_EXCEPTION otl_exception&){
+   cleanup();
+   if(this->adb)this->adb->throw_count++;
+   throw;
+  }
+
+ }
+
+ virtual ~otl_ref_select_stream()
+ {
+  cleanup();
+ }
+
+ void rewind(void)
+ {
+   OTL_TRACE_STREAM_EXECUTION
+  _rfc=0;
+  get_select_list();
+  ret_code=first();
+  null_fetched=0;
+  cur_col=-1;
+  cur_in=0;
+  executed=1;
+ }
+
+  void clean(void)
+  {
+    _rfc=0;
+    null_fetched=0;
+    cur_col=-1;
+    cur_in=0;
+    executed=0;
+  }
+
+ int is_null(void)
+ {
+  return null_fetched;
+ }
+
+ int eof(void)
+ {
+  return !ret_code;
+ }
+
+ otl_ref_select_stream& operator>>(otl_time0& t)
+ {
+  check_if_executed();
+  if(eof())return *this;
+  get_next();
+  if(check_type(otl_var_timestamp)&&!eof()){
+   otl_time0* tm=OTL_RCAST(otl_time0*,sl[cur_col].val(cur_row));
+   memcpy(OTL_RCAST(void*,&t),tm,otl_oracle_date_size);
+   look_ahead();
+  }
+  return *this;
+ }
+
+ otl_ref_select_stream& operator>>(char& c)
+ {
+  check_if_executed();
+  if(eof())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof()){
+   c=*OTL_RCAST(char*,sl[cur_col].val(cur_row));
+   look_ahead();
+  }
+  return *this;
+ }
+
+ otl_ref_select_stream& operator>>(unsigned char& c)
+ {
+  check_if_executed();
+  if(eof())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof()){
+   c=*OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+   look_ahead();
+  }
+  return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ otl_ref_select_stream& operator>>(OTL_STRING_CONTAINER& s)
+ {
+  check_if_executed();
+  if(eof())return *this;
+  get_next();
+  switch(sl[cur_col].ftype){
+  case otl_var_char:
+    if(!eof()){
+#if defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,sl[cur_col].val(cur_row)),1);
+#else
+      s=OTL_RCAST(char*,sl[cur_col].val(cur_row));
+#endif
+      look_ahead();
+    }
+    break;
+#if defined(USER_DEFINED_STRING_CLASS) || \
+    defined(OTL_STL) || defined(OTL_ACE)
+  case otl_var_varchar_long:
+  case otl_var_raw_long:
+    if(!eof()){
+      unsigned char* c=OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+      int len=sl[cur_col].get_len(cur_row);
+#if (defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)) && !defined(OTL_ACE)
+      s.assign(OTL_RCAST(char*,c),len);
+#elif defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,c),len,1);
+#endif
+      look_ahead();
+    }
+    break;
+#endif
+  default:
+    check_type(otl_var_char);
+  } // switch
+  return *this;
+ }
+#endif
+
+ otl_ref_select_stream& operator>>(char* s)
+ {
+  check_if_executed();
+  if(eof())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof()){
+   otl_strcpy(OTL_RCAST(unsigned char*,s),
+              OTL_RCAST(const unsigned char*,sl[cur_col].val(cur_row)));
+   look_ahead();
+  }
+  return *this;
+ }
+
+ otl_ref_select_stream& operator>>(unsigned char* s)
+ {
+  check_if_executed();
+  if(eof())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof()){
+   otl_strcpy2(OTL_RCAST(unsigned char*,s),
+               OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row)),
+               sl[cur_col].get_len(cur_row)
+             );
+   look_ahead();
+  }
+  return *this;
+ }
+
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+#define OTL_D5(T,T_type)                                \
+  otl_ref_select_stream& operator>>(T& n)               \
+  {                                                     \
+    check_if_executed();                                \
+    if(eof())return *this;                              \
+    get_next();                                         \
+    if(!eof()){                                         \
+      int match_found=otl_numeric_convert_T<T,T_type>   \
+        (sl[cur_col].ftype,                             \
+         sl[cur_col].val(cur_row),                      \
+         n);                                            \
+      if(!match_found)                                  \
+        strict_check_throw(T_type);                     \
+      look_ahead();                                     \
+    }                                                   \
+    return *this;                                       \
+  }
+#else
+#define OTL_D5(T,T_type)                                        \
+  otl_ref_select_stream& operator>>(T& n)                       \
+  {                                                             \
+    check_if_executed();                                        \
+    if(eof())return *this;                                      \
+    get_next();                                                 \
+    if(!eof()){                                                 \
+      int match_found=otl_numeric_convert_T                     \
+        (sl[cur_col].ftype,                                     \
+         sl[cur_col].val(cur_row),                              \
+         n);                                                    \
+      if(!match_found){                                         \
+        if(check_type(otl_var_double,T_type))                   \
+          n=OTL_PCONV(T,double,sl[cur_col].val(cur_row));       \
+      }                                                         \
+      look_ahead();                                             \
+    }                                                           \
+    return *this;                                               \
+  }
+#endif
+
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  OTL_D5(int,otl_var_int)
+  OTL_D5(unsigned,otl_var_unsigned_int)
+  OTL_D5(long,otl_var_long_int)
+  OTL_D5(short,otl_var_short)
+  OTL_D5(float,otl_var_float)
+  OTL_D5(double,otl_var_double)
+#else
+    template<OTL_TYPE_NAME T,const int T_type> OTL_D5(T,T_type)
+#endif
+
+ otl_ref_select_stream& operator>>(otl_long_string& s)
+ {
+  check_if_executed();
+  if(eof())return *this;
+  get_next();
+  switch(sl[cur_col].ftype){
+  case otl_var_varchar_long: 
+  case otl_var_raw_long:
+    {
+      if(!eof()){
+        unsigned char* c=OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+        int len=sl[cur_col].get_len(cur_row);
+        if(len>s.buf_size)len=s.buf_size;
+        otl_memcpy(s.v,c,len,sl[cur_col].ftype);
+        if(sl[cur_col].ftype==otl_var_varchar_long)
+          s.null_terminate_string(len);
+        s.set_len(len);
+        look_ahead();
+      }
+    }
+    break;
+  case otl_var_raw:
+    {
+      if(!eof()){
+        unsigned char* c=OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+        int len=OTL_SCAST(int,*OTL_RCAST(unsigned short*,c));
+        if(len>s.buf_size)len=s.buf_size;
+        otl_memcpy(s.v,c+sizeof(short int),len,sl[cur_col].ftype);
+        s.set_len(len);
+        look_ahead();
+      }
+    }
+    break;
+  }
+  return *this;
+ }
+
+
+ otl_ref_select_stream& operator<<(const otl_time0& t)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_timestamp,otl_oracle_date_size)){
+   otl_time0* tm=OTL_RCAST(otl_time0*,vl[cur_in]->val());
+   memcpy(tm,OTL_RCAST(void*,OTL_CCAST(otl_time0*,&t)),otl_oracle_date_size);
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+
+  otl_ref_select_stream& operator<<(const otl_null& /* n */)
+ {
+  check_in_var();
+  this->vl[cur_in]->set_null(0);
+  get_in_next();
+  return *this;
+ }
+
+ otl_ref_select_stream& operator<<(const char c)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+   char* tmp=OTL_RCAST(char*,vl[cur_in]->val());
+   tmp[0]=c;
+   tmp[1]=0;
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+ otl_ref_select_stream& operator<<(const unsigned char c)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+   unsigned char* tmp=OTL_RCAST(unsigned char*,vl[cur_in]->val());
+   tmp[0]=c;
+   tmp[1]=0;
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ otl_ref_select_stream& operator<<(const OTL_STRING_CONTAINER& s)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+
+   int overflow;
+   otl_strcpy
+    (OTL_RCAST(unsigned char*,vl[cur_in]->val()),
+     OTL_RCAST(unsigned char*,OTL_CCAST(char*,s.c_str())),
+     overflow,
+     vl[cur_in]->elem_size,
+     OTL_SCAST(int,s.length())
+    );
+   if(overflow){
+    char temp_var_info[256];
+    otl_var_info_var
+     (vl[cur_in]->name,
+      vl[cur_in]->ftype,
+      otl_var_char,
+      temp_var_info,
+      sizeof(temp_var_info));
+    if(this->adb&&this->adb->throw_count>1)return *this;
+    if(this->adb)this->adb->throw_count++;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw otl_exception
+     (otl_error_msg_4,
+      otl_error_code_4,
+      stm_label?stm_label:stm_text,
+      temp_var_info);
+   }
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+#endif
+
+ otl_ref_select_stream& operator<<(const char* s)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+
+   int overflow;
+   otl_strcpy
+    (OTL_RCAST(unsigned char*,vl[cur_in]->val()),
+     OTL_RCAST(unsigned char*,OTL_CCAST(char*,s)),
+     overflow,
+     vl[cur_in]->elem_size
+    );
+   if(overflow){
+    char temp_var_info[256];
+    otl_var_info_var
+     (vl[cur_in]->name,
+      vl[cur_in]->ftype,
+      otl_var_char,
+      temp_var_info,
+      sizeof(temp_var_info));
+    if(this->adb&&this->adb->throw_count>1)return *this;
+    if(this->adb)this->adb->throw_count++;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw otl_exception
+     (otl_error_msg_4,
+      otl_error_code_4,
+      stm_label?stm_label:stm_text,
+      temp_var_info);
+   }
+
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+ otl_ref_select_stream& operator<<(const unsigned char* s)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+
+   int overflow;
+   otl_strcpy4
+    (OTL_RCAST(unsigned char*,vl[cur_in]->val()),
+     OTL_CCAST(unsigned char*,s),
+     overflow,
+     vl[cur_in]->elem_size
+    );
+   if(overflow){
+    char temp_var_info[256];
+    otl_var_info_var
+     (vl[cur_in]->name,
+      vl[cur_in]->ftype,
+      otl_var_char,
+      temp_var_info,
+      sizeof(temp_var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw otl_exception
+     (otl_error_msg_4,
+      otl_error_code_4,
+      stm_label?stm_label:stm_text,
+      temp_var_info);
+   }
+
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+#define OTL_D6(T,T_type)                        \
+  otl_ref_select_stream& operator<<(const T n)  \
+  {                                             \
+    check_in_var();                             \
+    if(check_in_type(T_type,sizeof(T))){        \
+      *OTL_RCAST(T*,vl[cur_in]->val())=n;       \
+    }                                           \
+    this->vl[cur_in]->set_not_null(0);          \
+    get_in_next();                              \
+    return *this;                               \
+  }
+
+
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  OTL_D6(int,otl_var_int)
+  OTL_D6(unsigned,otl_var_unsigned_int)
+  OTL_D6(long,otl_var_long_int)
+  OTL_D6(short,otl_var_short)
+  OTL_D6(float,otl_var_float)
+  OTL_D6(double,otl_var_double)
+#else
+  template<OTL_TYPE_NAME T,const int T_type> OTL_D6(T,T_type)
+#endif
+
+
+ int select_list_len(void)
+ {
+  return sl_len;
+ }
+
+ int column_ftype(int ndx=0)
+ {
+  return sl[ndx].ftype;
+ }
+
+ int column_size(int ndx=0)
+ {
+  return sl[ndx].elem_size;
+ }
+
+ otl_column_desc* sl_desc;
+ int sl_len;
+ otl_generic_variable* sl;
+
+protected:
+
+
+ int null_fetched;
+ int ret_code;
+ int cur_col;
+ int cur_in;
+ int executed;
+ char var_info[256];
+
+ void init(void)
+ {
+  sl=0;
+  sl_len=0;
+  null_fetched=0;
+  ret_code=0;
+  sl_desc=0;
+  executed=0;
+  cur_in=0;
+  stm_text=0;
+ }
+
+ void get_next(void)
+ {
+  if(cur_col<sl_len-1){
+   ++cur_col;
+   null_fetched=sl[cur_col].is_null(cur_row);
+  }else{
+   ret_code=next();
+   cur_col=0;
+  }
+ }
+
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+  void strict_check_throw(int type_code)
+  {
+   otl_var_info_col
+     (sl[cur_col].pos,
+      sl[cur_col].ftype,
+      type_code,
+      var_info,
+      sizeof(var_info));
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return;
+#endif
+   throw otl_exception
+     (otl_error_msg_0,
+      otl_error_code_0,
+      this->stm_label?
+      this->stm_label:
+      this->stm_text,
+      var_info);
+  }
+#endif
+
+  int check_type_throw(int type_code,int actual_data_type)
+  {
+    int out_type_code;
+    if(actual_data_type!=0)
+      out_type_code=actual_data_type;
+    else
+      out_type_code=type_code;
+    otl_var_info_col
+      (sl[cur_col].pos,
+       sl[cur_col].ftype,
+       out_type_code,
+       var_info,
+       sizeof(var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw otl_exception
+      (otl_error_msg_0,
+       otl_error_code_0,
+       stm_label?stm_label:stm_text,
+       var_info);
+  }
+
+  int check_type(int type_code, int actual_data_type=0)
+  {
+    if(sl[cur_col].ftype==type_code)
+      return 1;
+    return check_type_throw(type_code,actual_data_type);
+  }
+    
+ void look_ahead(void)
+ {
+  if(cur_col==sl_len-1){
+   ret_code=next();
+   cur_col=-1;
+   ++_rfc;
+  }
+ }
+
+ void get_select_list(void)
+ {int i,j,rc;
+
+  otl_auto_array_ptr<otl_column_desc> loc_ptr(otl_var_list_size);
+  otl_column_desc* sl_desc_tmp=loc_ptr.ptr;
+  int sld_tmp_len=0;
+  int ftype,elem_size;
+
+  rc=obndrv
+   (&cursor_struct.cda,
+    OTL_RCAST(unsigned char*,cur_placeholder),
+    -1,
+    OTL_RCAST(ub1*,&sel_cur.cursor_struct.cda),
+    sizeof(sel_cur.cursor_struct.cda),
+    102,-1,0,0,-1,-1);
+  if(rc!=0){
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw otl_exception(cursor_struct,stm_label?stm_label:stm_text);
+  }
+  for(i=0;i<vl_len;++i)otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::bind(*vl[i]);
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::exec(1); // Executing the PLSQL master block
+  sel_cur.connected=1;
+  cur_row=-2;
+  sld_tmp_len=0;
+  for(i=1;sel_cur.describe_column(sl_desc_tmp[i-1],i);++i){
+    ++sld_tmp_len;
+    if(sld_tmp_len==loc_ptr.arr_size_){
+      loc_ptr.double_size();
+      sl_desc_tmp=loc_ptr.ptr;
+    }
+  }
+  sl_len=sld_tmp_len;
+  if(sl){
+   delete[] sl;
+   sl=0;
+  }
+  sl=new otl_generic_variable[sl_len==0?1:sl_len];
+  int max_long_size=this->adb->get_max_long_size();
+  for(j=0;j<sl_len;++j){
+   otl_generic_variable::map_ftype
+    (sl_desc_tmp[j],
+     max_long_size,
+     ftype,
+     elem_size,
+     this->local_override.getLen()>0?this->local_override:*override,
+     j+1);
+   sl[j].copy_pos(j+1);
+   sl[j].init(ftype,
+              elem_size,
+              OTL_SCAST(otl_stream_buffer_size_type,array_size),
+              &adb->connect_struct
+             );
+  }
+  if(sl_desc){
+   delete[] sl_desc;
+   sl_desc=0;
+  }
+  sl_desc=new otl_column_desc[sl_len==0?1:sl_len];
+  for(i=0;i<sl_len;++i)
+    sl_desc[i]=sl_desc_tmp[i];
+  for(i=0;i<sl_len;++i)sel_cur.bind(sl[i]);
+ }
+
+ void get_in_next(void)
+ {
+  if(cur_in==vl_len-1)
+   rewind();
+  else{
+   ++cur_in;
+   executed=0;
+  }
+ }
+
+  int check_in_type_throw(int type_code)
+  {
+    otl_var_info_var
+      (vl[cur_in]->name,
+       vl[cur_in]->ftype,
+       type_code,
+       var_info,
+       sizeof(var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw otl_exception
+      (otl_error_msg_0,
+       otl_error_code_0,
+       stm_label?stm_label:stm_text,
+       var_info);
+  }
+
+  int check_in_type(int type_code,int tsize)
+  {
+    switch(vl[cur_in]->ftype){
+    case otl_var_char:
+      if(type_code==otl_var_char)
+        return 1;
+    default:
+      if(vl[cur_in]->ftype==type_code && 
+         vl[cur_in]->elem_size==tsize)
+        return 1;
+    }
+    return check_in_type_throw(type_code);
+  }
+
+  void check_in_var_throw(void)
+  {
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return; 
+#endif
+    throw otl_exception
+      (otl_error_msg_1,
+       otl_error_code_1,
+       stm_label?stm_label:stm_text,
+       0);
+  }
+
+ void check_in_var(void)
+ {
+  if(vl_len==0)
+    check_in_var();
+ }
+
+  void check_if_executed_throw(void)
+  {
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return; 
+#endif
+    throw otl_exception
+      (otl_error_msg_2,
+       otl_error_code_2,
+       stm_label?stm_label:stm_text,
+       0);
+  }
+
+  void check_if_executed(void)
+  {
+    if(!executed)
+      check_if_executed_throw();
+  }
+
+};
+
+const int otl_ora7_no_stream=0;
+const int otl_ora7_io_stream=1;
+const int otl_ora7_select_stream=2;
+const int otl_ora7_refcur_select_stream=3;
+
+class otl_stream_shell: public otl_stream_shell_generic{
+public:
+
+  otl_ref_select_stream* ref_ss;
+  otl_select_stream* ss;
+  otl_inout_stream* io;
+  otl_connect* adb;
+  bool lob_stream_flag;
+  
+  int auto_commit_flag;
+  
+  otl_var_desc* iov;
+  int iov_len;
+  int next_iov_ndx;
+  
+  otl_var_desc* ov;
+  int ov_len;
+  int next_ov_ndx;
+  
+  bool flush_flag;
+  int stream_type;
+  
+  otl_select_struct_override override;
+  
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+  OTL_STRING_CONTAINER orig_sql_stm;
+#endif
+
+
+ otl_stream_shell()
+ {
+  should_delete=0;
+  stream_type=otl_ora7_no_stream;
+ }
+
+ otl_stream_shell(const int ashould_delete)
+ {
+  should_delete=0;
+  iov=0; iov_len=0;
+  ov=0; ov_len=0;
+  next_iov_ndx=0;
+  next_ov_ndx=0;
+  override.len=0;
+  ss=0; io=0; ref_ss=0;
+  adb=0;
+  flush_flag=true;
+  should_delete=ashould_delete;
+  stream_type=otl_ora7_no_stream;
+  lob_stream_flag=false;
+ }
+
+ virtual ~otl_stream_shell()
+ {
+  if(should_delete){
+   delete[] iov;
+   delete[] ov;
+
+   iov=0; iov_len=0;
+   ov=0; ov_len=0;
+   next_iov_ndx=0;
+   next_ov_ndx=0;
+   override.len=0;
+   flush_flag=true;
+   stream_type=otl_ora7_no_stream;
+
+   delete ss;
+   delete io;
+   delete ref_ss;
+   ss=0; io=0; ref_ss=0;
+   adb=0;
+  }
+ }
+
+};
+
+class otl_stream{
+public:
+  
+  otl_stream_shell* shell;
+  otl_ptr<otl_stream_shell> shell_pt;
+  int connected;
+  
+  otl_ref_select_stream** ref_ss;
+  otl_select_stream** ss;
+  otl_inout_stream** io;
+  otl_connect** adb;
+  
+  int* auto_commit_flag;
+  
+  otl_var_desc** iov;
+  int* iov_len;
+  int* next_iov_ndx;
+  
+  otl_var_desc** ov;
+  int* ov_len;
+  int* next_ov_ndx;
+
+  otl_select_struct_override* override;
+
+  int end_marker;
+  int oper_int_called;
+  int last_eof_rc;
+  bool last_oper_was_read_op;
+
+protected:
+
+  void reset_end_marker(void)
+  {
+    last_eof_rc=0;
+    end_marker=-1;
+    oper_int_called=0;
+  }
+
+  int buf_size_;
+
+public:
+
+  const char* get_stm_text(void)
+  {
+    const char* no_stm_text=OTL_NO_STM_TEXT;
+    switch(shell->stream_type){
+    case otl_ora7_no_stream:
+      return no_stm_text;
+    case otl_ora7_io_stream:
+      return (*io)->stm_label?(*io)->stm_label:(*io)->stm_text;
+    case otl_ora7_select_stream:
+      return (*ss)->stm_label?(*ss)->stm_label:(*ss)->stm_text;
+    case otl_ora7_refcur_select_stream:
+      return (*ref_ss)->stm_label?(*ref_ss)->stm_label:(*ref_ss)->stm_text;
+    default:
+      return no_stm_text;
+    }
+  }
+
+  void setBufSize(int buf_size)
+  {
+    buf_size_=buf_size;
+  }
+  
+  int getBufSize(void) const
+  {
+    return buf_size_;
+  }
+
+ long get_rpc() OTL_THROWS_OTL_EXCEPTION
+ {
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     return 0;
+   case otl_ora7_io_stream:
+     (*adb)->reset_throw_count();
+     return (*io)->get_rpc();
+   case otl_ora7_select_stream:
+     (*adb)->reset_throw_count();
+     return (*ss)->_rfc;
+   case otl_ora7_refcur_select_stream:
+     (*adb)->reset_throw_count();
+     return (*ref_ss)->_rfc;
+   default:
+     return 0;
+   }
+ }
+
+  operator int(void) OTL_THROWS_OTL_EXCEPTION
+  {
+    if(!last_oper_was_read_op){
+      if(this->adb&&*this->adb)(*this->adb)->throw_count++;
+      if(this->adb&&*this->adb&&(*this->adb)->throw_count>1)return 0;
+      char* stm_label=0;
+      char* stm_text=0;
+      switch(shell->stream_type){
+      case otl_ora7_no_stream:
+        break;
+      case otl_ora7_io_stream:
+        stm_label=(*io)->stm_label;
+        stm_text=(*io)->stm_text;
+        break;
+      case otl_ora7_select_stream:
+        stm_label=(*ss)->stm_label;
+        stm_text=(*ss)->stm_text;
+        break;
+      case otl_ora7_refcur_select_stream:
+        stm_label=(*ref_ss)->stm_label;
+        stm_text=(*ref_ss)->stm_text;
+        break;
+      }
+      throw otl_exception
+        (otl_error_msg_18,
+         otl_error_code_18,
+         stm_label?stm_label:stm_text);
+    }
+    if(end_marker==1)return 0;
+    int rc=0;
+    int temp_eof=eof();
+    if(temp_eof && end_marker==-1 && oper_int_called==0){
+      end_marker=1;
+      if(last_eof_rc==1)
+        rc=0;
+      else
+        rc=1;
+    }else if(!temp_eof && end_marker==-1)
+      rc=1;
+    else if(temp_eof && end_marker==-1){
+      end_marker=0;
+      rc=1;
+    }else if(temp_eof && end_marker==0){
+      end_marker=1;
+      rc=0;
+    }
+    if(!oper_int_called)oper_int_called=1;
+    return rc;
+  }
+
+ void create_var_desc(void)
+ {int i;
+  delete[] (*iov);
+  delete[] (*ov);
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  switch(shell->stream_type){
+  case otl_ora7_no_stream:
+    break;
+  case otl_ora7_io_stream:
+    if((*io)->vl_len>0){
+      (*iov)=new otl_var_desc[(*io)->vl_len];
+      (*iov_len)=(*io)->vl_len;
+      for(i=0;i<(*io)->vl_len;++i)
+        (*io)->vl[i]->copy_var_desc((*iov)[i]);
+    }
+    if((*io)->iv_len>0){
+      (*ov)=new otl_var_desc[(*io)->iv_len];
+      (*ov_len)=(*io)->iv_len;
+      for(i=0;i<(*io)->iv_len;++i)
+        (*io)->in_vl[i]->copy_var_desc((*ov)[i]);
+    }
+    break;
+  case otl_ora7_select_stream:
+    if((*ss)->vl_len>0){
+      (*iov)=new otl_var_desc[(*ss)->vl_len];
+      (*iov_len)=(*ss)->vl_len;
+      for(i=0;i<(*ss)->vl_len;++i)
+        (*ss)->vl[i]->copy_var_desc((*iov)[i]);
+    }
+    if((*ss)->sl_len>0){
+      (*ov)=new otl_var_desc[(*ss)->sl_len];
+      (*ov_len)=(*ss)->sl_len;
+      for(i=0;i<(*ss)->sl_len;++i){
+        (*ss)->sl[i].copy_var_desc((*ov)[i]);
+        (*ov)[i].copy_name((*ss)->sl_desc[i].name);
+      }
+    }
+    break;
+  case otl_ora7_refcur_select_stream:
+    if((*ref_ss)->vl_len>0){
+      (*iov)=new otl_var_desc[(*ref_ss)->vl_len];
+      (*iov_len)=(*ref_ss)->vl_len;
+      for(i=0;i<(*ref_ss)->vl_len;++i)
+        (*ref_ss)->vl[i]->copy_var_desc((*iov)[i]);
+    }
+    if((*ref_ss)->sl_len>0){
+      (*ov)=new otl_var_desc[(*ref_ss)->sl_len];
+      (*ov_len)=(*ref_ss)->sl_len;
+      for(i=0;i<(*ref_ss)->sl_len;++i){
+        (*ref_ss)->sl[i].copy_var_desc((*ov)[i]);
+        (*ov)[i].copy_name((*ref_ss)->sl_desc[i].name);
+      }
+    }
+    break;
+  }
+
+ }
+
+ void set_column_type(const int column_ndx,
+                      const int col_type,
+                      const int col_size=0)
+   OTL_NO_THROW
+ {
+   if(shell==0){
+     init_stream();
+     shell->flush_flag=true;
+   }
+   override->add_override(column_ndx,col_type,col_size);
+ }
+
+ void set_all_column_types(const unsigned mask=0)
+   OTL_NO_THROW
+ {
+   if(shell==0){
+     init_stream();
+     shell->flush_flag=true;
+   }
+   override->set_all_column_types(mask);
+ }
+
+ void set_flush(const bool flush_flag=true)
+   OTL_NO_THROW
+ {
+   if(shell==0)init_stream();
+  if(shell==0)return;
+  shell->flush_flag=flush_flag;
+ }
+
+
+ void inc_next_ov(void)
+ {
+  if((*ov_len)==0)return;
+  if((*next_ov_ndx)<(*ov_len)-1)
+   ++(*next_ov_ndx);
+  else
+   (*next_ov_ndx)=0;
+ }
+ 
+ void inc_next_iov(void)
+ {
+  if((*iov_len)==0)return;
+  if((*next_iov_ndx)<(*iov_len)-1)
+   ++(*next_iov_ndx);
+  else
+   (*next_iov_ndx)=0;
+ }
+
+ otl_var_desc* describe_in_vars(int& desc_len)
+   OTL_NO_THROW
+ {
+  desc_len=0;
+  if(shell==0)return 0;
+  if(shell->iov==0)return 0;
+  desc_len=shell->iov_len;
+  return shell->iov;
+ }
+
+ otl_var_desc* describe_out_vars(int& desc_len)
+   OTL_NO_THROW
+ {
+  desc_len=0;
+  if(shell==0)return 0;
+  if(shell->ov==0)return 0;
+  desc_len=shell->ov_len;
+  return shell->ov;
+ }
+
+ otl_var_desc* describe_next_in_var(void)
+   OTL_NO_THROW
+ {
+  if(shell==0)return 0;
+  if(shell->iov==0)return 0;
+  return &(shell->iov[shell->next_iov_ndx]);
+ }
+
+  otl_var_desc* describe_next_out_var(void)
+   OTL_NO_THROW
+ {
+  if(shell==0)return 0;
+  if(shell->ov==0)return 0;
+  return &(shell->ov[shell->next_ov_ndx]);
+ }
+
+ void init_stream(void)
+ {
+   buf_size_=1;
+   last_oper_was_read_op=false;
+   shell=0;
+   shell=new otl_stream_shell(0);
+   shell_pt.assign(&shell);
+   connected=0;
+   
+   ref_ss=&(shell->ref_ss);
+   ss=&(shell->ss);
+   io=&(shell->io);
+   adb=&(shell->adb);
+   auto_commit_flag=&(shell->auto_commit_flag);
+   iov=&(shell->iov);
+   iov_len=&(shell->iov_len);
+   next_iov_ndx=&(shell->next_iov_ndx);
+   ov=&(shell->ov);
+   ov_len=&(shell->ov_len);
+   next_ov_ndx=&(shell->next_ov_ndx);
+   override=&(shell->override);
+   
+   (*ref_ss)=0;
+   (*io)=0;
+   (*ss)=0;
+   (*adb)=0;
+   (*ov)=0; 
+   (*ov_len)=0;
+   (*next_iov_ndx)=0;
+   (*next_ov_ndx)=0;
+   (*auto_commit_flag)=1;
+   (*iov)=0; 
+   (*iov_len)=0;
+
+ }
+
+ otl_stream
+ (const otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  otl_connect& db,
+  const char* ref_cur_placeholder=0,
+  const char* sqlstm_label=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  init_stream();
+
+  (*io)=0; (*ss)=0; (*ref_ss)=0;
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  (*auto_commit_flag)=1;
+  (*next_iov_ndx)=0;
+  (*next_ov_ndx)=0;
+  (*adb)=&db;
+  shell->flush_flag=true;
+  open(arr_size,sqlstm,db,ref_cur_placeholder,sqlstm_label);
+ }
+
+ otl_stream() OTL_NO_THROW
+ {
+  init_stream();
+  shell->flush_flag=true;
+ }
+
+ virtual ~otl_stream()
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   OTL_THROWS_OTL_EXCEPTION
+#endif
+ {
+  if(!connected)return;
+  try{
+   if((*io)!=0&&shell->flush_flag==false)
+    (*io)->flush_flag2=false;
+   close();
+   if(shell!=0){
+    if((*io)!=0)
+     (*io)->flush_flag2=true;
+   }
+  }catch(OTL_CONST_EXCEPTION otl_exception&){
+   if(shell!=0){
+    if((*io)!=0)
+     (*io)->flush_flag2=true;
+   }
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+   clean(1);
+   if(shell!=0)
+    shell->should_delete=1;
+   shell_pt.destroy();
+#else
+   shell_pt.destroy();
+#endif
+
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   throw;
+#endif
+
+  }
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+  if(adb && (*adb) && (*adb)->throw_count>0
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  || 
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception()
+#endif
+     ){
+   //
+  }
+#else
+   shell_pt.destroy();
+#endif
+ }
+
+ int eof(void) OTL_NO_THROW
+ {
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     return 1;
+   case otl_ora7_io_stream:
+     (*adb)->reset_throw_count();
+     return (*io)->eof();
+   case otl_ora7_select_stream:
+     (*adb)->reset_throw_count();
+     return (*ss)->eof();
+   case otl_ora7_refcur_select_stream:
+     (*adb)->reset_throw_count();
+     return (*ref_ss)->eof();
+   default:
+     return 0;
+   }
+ }
+
+ void flush(void) OTL_THROWS_OTL_EXCEPTION
+ {
+  if((*io)){
+   (*adb)->reset_throw_count();
+   (*io)->flush();
+  }
+ }
+
+ void clean(const int clean_up_error_flag=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     (*adb)->reset_throw_count();
+     (*io)->clean(clean_up_error_flag);
+     break;
+   case otl_ora7_select_stream:
+     (*adb)->reset_throw_count();
+     (*ss)->clean();
+     break;
+   case otl_ora7_refcur_select_stream:
+     (*adb)->reset_throw_count();
+     (*ref_ss)->clean();
+     break;
+   }
+ }
+
+ void rewind(void)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     (*adb)->reset_throw_count();
+     (*io)->rewind();
+     break;
+   case otl_ora7_select_stream:
+     (*adb)->reset_throw_count();
+     (*ss)->rewind();
+     break;
+   case otl_ora7_refcur_select_stream:
+     (*adb)->reset_throw_count();
+     (*ref_ss)->rewind();
+     break;
+   }
+ }
+
+ int is_null(void) OTL_NO_THROW
+ {
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     return 0;
+   case otl_ora7_io_stream:
+     return (*io)->is_null();
+   case otl_ora7_select_stream:
+     return (*ss)->is_null();
+   case otl_ora7_refcur_select_stream:
+     return (*ref_ss)->is_null();
+   default:
+     return 0;
+   }
+ }
+
+ void set_commit(int auto_commit=0)
+   OTL_NO_THROW
+ {
+  (*auto_commit_flag)=auto_commit;
+  if((*io)){
+   (*adb)->reset_throw_count();
+   (*io)->set_commit(auto_commit);
+  }
+ }
+
+ void intern_cleanup(void)
+ {
+  delete[] (*iov);
+  delete[] (*ov);
+
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  (*next_iov_ndx)=0;
+  (*next_ov_ndx)=0;
+  override->len=0;
+
+  switch(shell->stream_type){
+  case otl_ora7_no_stream:
+    break;
+  case otl_ora7_io_stream:
+    try{
+      (*io)->flush();
+      (*io)->close();
+    }catch(OTL_CONST_EXCEPTION otl_exception&){
+      clean(1);
+      (*io)->close();
+      delete (*io);
+      (*io)=0;
+      shell->stream_type=otl_ora7_no_stream;
+      throw;
+    }
+    delete (*io);
+    (*io)=0;
+    shell->stream_type=otl_ora7_no_stream;
+    break;
+  case otl_ora7_select_stream:
+    try{
+      (*ss)->close();
+    }catch(OTL_CONST_EXCEPTION otl_exception&){
+      delete (*ss);
+      (*ss)=0;
+      shell->stream_type=otl_ora7_no_stream;
+      throw;
+    }
+    delete (*ss);
+    (*ss)=0;
+    shell->stream_type=otl_ora7_no_stream;
+    break;
+  case otl_ora7_refcur_select_stream:
+    try{
+      (*ref_ss)->close();
+    }catch(OTL_CONST_EXCEPTION otl_exception&){
+      delete (*ref_ss);
+      (*ref_ss)=0;
+      shell->stream_type=otl_ora7_no_stream;
+      throw;
+    }
+    delete (*ref_ss);
+    (*ref_ss)=0;
+    shell->stream_type=otl_ora7_no_stream;
+    break;
+  }
+  (*ss)=0; (*io)=0; (*ref_ss)=0;
+  if(adb!=0)(*adb)=0; 
+  adb=0;
+ }
+ 
+ void open
+ (const otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  otl_connect& db,
+  const char* ref_cur_placeholder=0,
+  const char* sqlstm_label=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   reset_end_marker();
+   if(this->good()){
+     const char* temp_stm_text=0;
+     switch(shell->stream_type){
+     case otl_ora7_no_stream:
+       temp_stm_text=OTL_NO_STM_TEXT;
+       break;
+     case otl_ora7_io_stream:
+       temp_stm_text=(*io)->stm_label?(*io)->stm_label:(*io)->stm_text;
+       break;
+     case otl_ora7_select_stream:
+       temp_stm_text=(*ss)->stm_label?(*ss)->stm_label:(*ss)->stm_text;
+     case otl_ora7_refcur_select_stream:
+       temp_stm_text=(*ref_ss)->stm_label?(*ref_ss)->stm_label:(*ref_ss)->stm_text;
+       break;
+     default:
+       temp_stm_text=OTL_NO_STM_TEXT;
+       break;
+     }
+     throw otl_exception
+       (otl_error_msg_29,
+        otl_error_code_29,
+        temp_stm_text);
+   }
+  if(shell==0)
+   init_stream();
+  buf_size_=arr_size;
+  OTL_TRACE_STREAM_OPEN2
+
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+  char temp_buf[128];
+  otl_itoa(arr_size,temp_buf);
+  OTL_STRING_CONTAINER sql_stm=OTL_STRING_CONTAINER(temp_buf)+
+    OTL_STRING_CONTAINER("===>")+sqlstm;
+  otl_stream_shell* temp_shell=OTL_RCAST(otl_stream_shell*,
+                                         db.sc.find(sql_stm));
+  if(temp_shell){
+   if(shell!=0)
+    shell_pt.destroy();
+   shell=temp_shell;
+   ref_ss=&(shell->ref_ss);
+   ss=&(shell->ss);
+   io=&(shell->io); 
+   if((*io)!=0)(*io)->flush_flag2=true;
+   adb=&(shell->adb);
+   auto_commit_flag=&(shell->auto_commit_flag);
+   iov=&(shell->iov);
+   iov_len=&(shell->iov_len);
+   next_iov_ndx=&(shell->next_iov_ndx);
+   ov=&(shell->ov);
+   ov_len=&(shell->ov_len);
+   next_ov_ndx=&(shell->next_ov_ndx);
+   override=&(shell->override);
+   try{
+     if((*iov_len)==0)this->rewind();
+   }catch(OTL_CONST_EXCEPTION otl_exception&){
+     if((*adb))
+      (*adb)->sc.remove(shell,shell->orig_sql_stm);
+     intern_cleanup();
+     shell_pt.destroy();
+     connected=0;
+     throw;     
+   }
+
+   connected=1;
+   return;
+  }
+  shell->orig_sql_stm=sql_stm;
+#endif
+
+  delete[] (*iov);
+  delete[] (*ov);
+
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  (*next_iov_ndx)=0;
+  (*next_ov_ndx)=0;
+
+  char tmp[7];
+  char* c=OTL_CCAST(char*,sqlstm);
+
+  while(otl_isspace(*c)||(*c)=='(')++c;
+  OTL_STRNCPY_S(tmp,sizeof(tmp),c,6);
+  tmp[6]=0;
+  c=tmp;
+  while(*c){
+   *c=OTL_SCAST(char,otl_to_upper(*c));
+   ++c;
+  }
+  if(adb==0)adb=&(shell->adb);
+  (*adb)=&db;
+  (*adb)->reset_throw_count();
+  try{
+   if((strncmp(tmp,"SELECT",6)==0||
+       strncmp(tmp,"WITH",4)==0)&&
+      ref_cur_placeholder==0){
+     (*ss)=new otl_select_stream
+       (override,
+        arr_size,
+        sqlstm,
+        db,
+        otl_explicit_select,
+        sqlstm_label);
+     shell->stream_type=otl_ora7_select_stream;
+   }else if(ref_cur_placeholder!=0){
+     (*ref_ss)=new otl_ref_select_stream
+       (override,arr_size,sqlstm,
+        ref_cur_placeholder,db,
+        sqlstm_label);
+     shell->stream_type=otl_ora7_refcur_select_stream;
+   }else{
+     (*io)=new otl_inout_stream(arr_size,sqlstm,db,false,sqlstm_label);
+     (*io)->flush_flag=shell->flush_flag;
+     shell->stream_type=otl_ora7_io_stream;
+   }
+  }catch(OTL_CONST_EXCEPTION otl_exception&){
+   shell_pt.destroy();
+   throw;
+  }
+  if((*io))(*io)->set_commit((*auto_commit_flag));
+  create_var_desc();
+  connected=1;
+ }
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+ void close(const bool save_in_stream_pool=true)
+   OTL_THROWS_OTL_EXCEPTION
+#else
+ void close(void)
+   OTL_THROWS_OTL_EXCEPTION
+#endif
+ {
+  if(shell==0)return;
+  OTL_TRACE_FUNC(0x4,"otl_stream","close","")
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+  if(save_in_stream_pool&&(*adb)&&
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     !(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())&&
+#endif
+     (*adb)->throw_count==0){
+   try{
+    this->flush();
+    this->clean(1);
+   }catch(OTL_CONST_EXCEPTION otl_exception&){
+    this->clean(1);
+    throw;
+   }
+   if((*adb) && (*adb)->throw_count>0){
+    (*adb)->sc.remove(shell,shell->orig_sql_stm);
+    intern_cleanup();
+    shell_pt.destroy();
+    connected=0;
+    return;
+   }
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception()){
+    if((*adb))
+     (*adb)->sc.remove(shell,shell->orig_sql_stm);
+    intern_cleanup();
+    shell_pt.destroy();
+    connected=0;
+    return; 
+   }
+#endif
+   (*adb)->sc.add(shell,shell->orig_sql_stm.c_str());
+   shell_pt.disconnect();
+   connected=0;
+  }else{
+   if((*adb))
+    (*adb)->sc.remove(shell,shell->orig_sql_stm);
+   intern_cleanup();
+   shell_pt.destroy();
+   connected=0;
+  }
+#else
+  intern_cleanup();
+  connected=0;
+#endif
+ }
+
+ otl_column_desc* describe_select(int& desc_len) OTL_NO_THROW
+ {
+   desc_len=0;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     return 0;
+   case otl_ora7_io_stream:
+     return 0;
+   case otl_ora7_select_stream:
+     (*adb)->reset_throw_count();
+     desc_len=(*ss)->sl_len;
+     return (*ss)->sl_desc;
+   case otl_ora7_refcur_select_stream:
+     (*adb)->reset_throw_count();
+     desc_len=(*ref_ss)->sl_len;
+     return (*ref_ss)->sl_desc;
+   default:
+     return 0;
+   }
+ }
+
+ int good(void) OTL_NO_THROW
+ {
+   if(!connected)return 0;
+   if((*io)||(*ss)||(*ref_ss)){
+     (*adb)->reset_throw_count();
+     return 1;
+   }else
+     return 0;
+ }
+
+
+ otl_stream& operator>>(otl_pl_tab_generic& tab)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=true;
+  if((*io)){
+    last_eof_rc=(*io)->eof();
+   (*io)->operator>>(tab);
+   OTL_TRACE_WRITE(", tab len="<<tab.len(),"operator >>","PL/SQL Tab&")
+   inc_next_ov();
+  }
+  return *this;
+ }
+
+ otl_stream& operator<<(otl_pl_tab_generic& tab)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=false;
+   reset_end_marker();
+  if((*io)){
+    OTL_TRACE_READ(", tab len="<<tab.len(),"operator <<","PL/SQL Tab&")
+   (*io)->operator<<(tab);
+   inc_next_iov();
+  }
+  return *this;
+ }
+
+#if defined(OTL_PL_TAB) && defined(OTL_STL)
+
+ otl_stream& operator>>(otl_pl_vec_generic& vec)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=true;
+   if((*io)){
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(vec);
+     OTL_TRACE_WRITE(", tab len="<<vec.len(),"operator >>","PL/SQL Tab&")
+     inc_next_ov();
+   }
+   return *this;
+ }
+
+ otl_stream& operator<<(otl_pl_vec_generic& vec)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=false;
+   reset_end_marker();
+  if((*io)){
+   (*io)->operator<<(vec);
+   OTL_TRACE_READ(", tab len="<<vec.len(),"operator <<","PL/SQL Tab&")
+   inc_next_iov();
+  }
+  return *this;
+ }
+
+#endif
+
+ otl_stream& operator>>(otl_time0& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+   return *this;
+ }
+
+ otl_stream& operator<<(const otl_time0& n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     (*io)->operator<<(n);
+     break;
+   case otl_ora7_select_stream:
+     (*ss)->operator<<(n);
+     break;
+   case otl_ora7_refcur_select_stream:
+     (*ref_ss)->operator<<(n);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   return *this;
+ }
+
+ otl_stream& operator>>(otl_datetime& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=true;
+#if defined(OTL_ORA7) && defined(OTL_ORA7_STRING_TO_TIMESTAMP)
+  if(describe_next_out_var()->ftype==otl_var_char){
+    char tmp_str[100];
+    (*this)>>tmp_str;
+#if defined(OTL_DEFAULT_DATETIME_NULL_TO_VAL)
+    if((*this).is_null())
+      s=OTL_DEFAULT_DATETIME_NULL_TO_VAL;
+    else
+      OTL_ORA7_STRING_TO_TIMESTAMP(tmp_str,s);
+#else
+    OTL_ORA7_STRING_TO_TIMESTAMP(tmp_str,s);
+#endif
+    OTL_TRACE_WRITE
+      (s.month<<"/"<<s.day<<"/"<<s.year
+       <<" "<<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+       "operator >>",
+       "otl_datetime&");
+    return *this;
+  }else{
+    otl_time0 tmp;
+    (*this)>>tmp;
+#if defined(OTL_DEFAULT_DATETIME_NULL_TO_VAL)
+    if((*this).is_null())
+      s=OTL_DEFAULT_DATETIME_NULL_TO_VAL;
+    else{
+      s.year=(OTL_SCAST(int,tmp.century)-100)*100+(OTL_SCAST(int,tmp.year)-100);
+      s.month=tmp.month;
+      s.day=tmp.day;
+      s.hour=tmp.hour-1;
+      s.minute=tmp.minute-1;
+      s.second=tmp.second-1;
+    }
+#else
+    s.year=(OTL_SCAST(int,tmp.century)-100)*100+(OTL_SCAST(int,tmp.year)-100);
+    s.month=tmp.month;
+    s.day=tmp.day;
+    s.hour=tmp.hour-1;
+    s.minute=tmp.minute-1;
+    s.second=tmp.second-1;
+#endif
+    OTL_TRACE_WRITE
+      (s.month<<"/"<<s.day<<"/"<<s.year
+       <<" "<<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+       "operator >>",
+       "otl_datetime&")
+      inc_next_ov();
+    return *this;
+  }
+#else
+  otl_time0 tmp;
+  (*this)>>tmp;
+#if defined(OTL_DEFAULT_DATETIME_NULL_TO_VAL)
+  if((*this).is_null())
+   s=OTL_DEFAULT_DATETIME_NULL_TO_VAL;
+  else{
+   s.year=(OTL_SCAST(int,tmp.century)-100)*100+(OTL_SCAST(int,tmp.year)-100);
+   s.month=tmp.month;
+   s.day=tmp.day;
+   s.hour=tmp.hour-1;
+   s.minute=tmp.minute-1;
+   s.second=tmp.second-1;
+  }
+#else
+  s.year=(OTL_SCAST(int,tmp.century)-100)*100+(OTL_SCAST(int,tmp.year)-100);
+  s.month=tmp.month;
+  s.day=tmp.day;
+  s.hour=tmp.hour-1;
+  s.minute=tmp.minute-1;
+  s.second=tmp.second-1;
+#endif
+  OTL_TRACE_WRITE
+    (s.month<<"/"<<s.day<<"/"<<s.year
+     <<" "<<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+     "operator >>",
+     "otl_datetime&")
+  inc_next_ov();
+  return *this;
+#endif
+ }
+
+ otl_stream& operator<<(const otl_datetime& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+#if defined(OTL_ORA7) && defined(OTL_ORA7_TIMESTAMP_TO_STRING)
+    if(describe_next_in_var()->ftype==otl_var_char){
+     char tmp_str[100];
+     OTL_ORA7_TIMESTAMP_TO_STRING(s,tmp_str);
+     OTL_TRACE_READ
+       (s.month<<"/"<<s.day<<"/"<<s.year<<" "
+        <<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+        "operator <<",
+        "otl_datetime&");
+     (*this)<<tmp_str;
+     return *this;
+   }else{
+     otl_time0 tmp;
+     tmp.year=OTL_SCAST(unsigned char, ((s.year%100)+100));
+     tmp.century=OTL_SCAST(unsigned char, ((s.year/100)+100));
+     tmp.month=OTL_SCAST(unsigned char, s.month);
+     tmp.day=OTL_SCAST(unsigned char, s.day);
+     tmp.hour=OTL_SCAST(unsigned char, (s.hour+1));
+     tmp.minute=OTL_SCAST(unsigned char, (s.minute+1));
+     tmp.second=OTL_SCAST(unsigned char, (s.second+1));
+     OTL_TRACE_READ
+       (s.month<<"/"<<s.day<<"/"<<s.year<<" "
+        <<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+        "operator <<",
+        "otl_datetime&");
+     (*this)<<tmp;
+     inc_next_iov();
+     return *this;
+   }
+#else
+     otl_time0 tmp;
+     tmp.year=OTL_SCAST(unsigned char, ((s.year%100)+100));
+     tmp.century=OTL_SCAST(unsigned char, ((s.year/100)+100));
+     tmp.month=OTL_SCAST(unsigned char, s.month);
+     tmp.day=OTL_SCAST(unsigned char, s.day);
+     tmp.hour=OTL_SCAST(unsigned char, (s.hour+1));
+     tmp.minute=OTL_SCAST(unsigned char, (s.minute+1));
+     tmp.second=OTL_SCAST(unsigned char, (s.second+1));
+     OTL_TRACE_READ
+       (s.month<<"/"<<s.day<<"/"<<s.year<<" "
+        <<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+        "operator <<",
+        "otl_datetime&");
+     (*this)<<tmp;
+     inc_next_iov();
+     return *this;
+#endif
+ }
+
+ otl_stream& operator>>(char& c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(c);
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(c);
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(c);
+     break;
+   }
+#if defined(OTL_DEFAULT_CHAR_NULL_TO_VAL)
+  if((*this).is_null())
+   c=OTL_DEFAULT_CHAR_NULL_TO_VAL;
+#endif
+  OTL_TRACE_WRITE("'"<<c<<"'","operator >>","char&")
+  inc_next_ov();
+  return *this;
+ }
+
+ otl_stream& operator>>(unsigned char& c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(c);
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(c);
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(c);
+     break;
+   }
+#if defined(OTL_DEFAULT_CHAR_NULL_TO_VAL)
+  if((*this).is_null())
+   c=OTL_DEFAULT_CHAR_NULL_TO_VAL;
+#endif
+  OTL_TRACE_WRITE("'"<<c<<"'","operator >>","unsigned char&")
+  inc_next_ov();
+  return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ otl_stream& operator>>(OTL_STRING_CONTAINER& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+
+#if defined(OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL)
+   if((*this).is_null()){
+     OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL(s);
+   }
+#elif defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     s=OTL_DEFAULT_STRING_NULL_TO_VAL;
+#endif
+
+   OTL_TRACE_WRITE("\""<<s<<"\"","operator >>","OTL_STRING_CONTAINER&")
+   inc_next_ov();
+   return *this;
+ }
+#endif
+
+ otl_stream& operator>>(char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+#if defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     otl_strcpy(OTL_RCAST(unsigned char*,s),
+                OTL_RCAST(const unsigned char*,OTL_DEFAULT_STRING_NULL_TO_VAL)
+               );
+#endif
+   OTL_TRACE_WRITE("\""<<s<<"\"","operator >>","char*")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(unsigned char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+#if defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     otl_strcpy(OTL_RCAST(unsigned char*,s),
+                OTL_RCAST(const unsigned char*,OTL_DEFAULT_STRING_NULL_TO_VAL)
+               );
+#endif
+
+#if defined(OTL_UNICODE)
+   OTL_TRACE_WRITE
+     ("\""<<OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,s)<<"\"",
+      "operator >>",
+      OTL_UNICODE_CHAR_TYPE_TRACE_NAME "*")
+#else
+   OTL_TRACE_WRITE("\""<<s<<"\"","operator >>","unsigned char*")
+#endif
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(int& n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(n);
+#else
+     (*io)->operator>><int,otl_var_int>(n);
+#endif
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(n);
+#else
+     (*ss)->operator>><int,otl_var_int>(n);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(n);
+#else
+     (*ref_ss)->operator>><int,otl_var_int>(n);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     n=OTL_SCAST(int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(n,"operator >>","int&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(unsigned& u)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(u);
+#else
+     (*io)->operator>><unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(u);
+#else
+     (*ss)->operator>><unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(u);
+#else
+     (*ref_ss)->operator>><unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     u=OTL_SCAST(unsigned int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(u,"operator >>","unsigned&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(short& sh)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(sh);
+#else
+     (*io)->operator>><short,otl_var_short>(sh);
+#endif
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(sh);
+#else
+     (*ss)->operator>><short,otl_var_short>(sh);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(sh);
+#else
+     (*ref_ss)->operator>><short,otl_var_short>(sh);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     sh=OTL_SCAST(short int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(sh,"operator >>","short int&")
+  inc_next_ov();
+  return *this;
+ }
+
+ otl_stream& operator>>(long int& l)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(l);
+#else
+     (*io)->operator>><long,otl_var_long_int>(l);
+#endif
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(l);
+#else
+     (*ss)->operator>><long,otl_var_long_int>(l);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(l);
+#else
+     (*ref_ss)->operator>><long,otl_var_long_int>(l);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+   l=OTL_SCAST(long int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(l,"operator >>","long int&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(float& f)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(f);
+#else
+     (*io)->operator>><float,otl_var_float>(f);
+#endif
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(f);
+#else
+     (*ss)->operator>><float,otl_var_float>(f);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(f);
+#else
+     (*ref_ss)->operator>><float,otl_var_float>(f);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     f=OTL_SCAST(float,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(f,"operator >>","float&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator>>(double& d)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator>>(d);
+#else
+     (*io)->operator>><double,otl_var_double>(d);
+#endif
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(d);
+#else
+     (*ss)->operator>><double,otl_var_double>(d);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(d);
+#else
+     (*ref_ss)->operator>><double,otl_var_double>(d);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+  if((*this).is_null())
+    d=OTL_SCAST(double,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+  OTL_TRACE_WRITE(d,"operator >>","double&")
+  inc_next_ov();
+  return *this;
+ }
+
+ otl_stream& operator>>(otl_long_string& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_ora7_select_stream:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   case otl_ora7_refcur_select_stream:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+   OTL_TRACE_WRITE(" len="<<s.len(),"operator >>","otl_long_string&")
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const char c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("'"<<c<<"'","operator <<","char")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+    (*io)->operator<<(c);
+     break;
+   case otl_ora7_select_stream:
+     (*ss)->operator<<(c);
+     break;
+   case otl_ora7_refcur_select_stream:
+     (*ref_ss)->operator<<(c);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+  inc_next_iov();
+  return *this;
+ }
+
+ otl_stream& operator<<(const unsigned char c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("'"<<c<<"'","operator <<","unsigned char")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     (*io)->operator<<(c);
+     break;
+   case otl_ora7_select_stream:
+     (*ss)->operator<<(c);
+     break;
+   case otl_ora7_refcur_select_stream:
+     (*ref_ss)->operator<<(c);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+  inc_next_iov();
+  return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ otl_stream& operator<<(const OTL_STRING_CONTAINER& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","OTL_STRING_CONTAINER&")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     (*io)->operator<<(s);
+     break;
+   case otl_ora7_select_stream:
+     (*ss)->operator<<(s);
+     break;
+   case otl_ora7_refcur_select_stream:
+     (*ref_ss)->operator<<(s);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+  inc_next_iov();
+  return *this;
+ }
+#endif
+
+
+ otl_stream& operator<<(const char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","char*")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     (*io)->operator<<(s);
+     break;
+   case otl_ora7_select_stream:
+     (*ss)->operator<<(s);
+     break;
+   case otl_ora7_refcur_select_stream:
+     (*ref_ss)->operator<<(s);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+  inc_next_iov();
+  return *this;
+ }
+
+ otl_stream& operator<<(const unsigned char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+#if defined(OTL_UNICODE)
+   OTL_TRACE_READ
+     ("\""<<OTL_RCAST(const OTL_UNICODE_CHAR_TYPE*,s)<<"\"",
+      "operator <<",
+      OTL_UNICODE_CHAR_TYPE_TRACE_NAME "*")
+#else
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","unsigned char*")
+#endif
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     (*io)->operator<<(s);
+     break;
+   case otl_ora7_select_stream:
+     (*ss)->operator<<(s);
+     break;
+   case otl_ora7_refcur_select_stream:
+     (*ref_ss)->operator<<(s);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const int n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(n,"operator <<","int")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(n);
+#else
+     (*io)->operator<<<int,otl_var_int>(n);
+#endif
+     break;
+   case otl_ora7_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(n);
+#else
+     (*ss)->operator<<<int,otl_var_int>(n);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(n);
+#else
+     (*ref_ss)->operator<<<int,otl_var_int>(n);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const unsigned u)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(u,"operator <<","unsigned")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(u);
+#else
+     (*io)->operator<<<unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   case otl_ora7_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(u);
+#else
+     (*ss)->operator<<<unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(u);
+#else
+     (*ref_ss)->operator<<<unsigned,otl_var_unsigned_int>(u);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const short sh)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(sh,"operator <<","short int")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(sh);
+#else
+     (*io)->operator<<<short,otl_var_short>(sh);
+#endif
+     break;
+   case otl_ora7_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(sh);
+#else
+     (*ss)->operator<<<short,otl_var_short>(sh);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(sh);
+#else
+     (*ref_ss)->operator<<<short,otl_var_short>(sh);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const long int l)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(l,"operator <<","long int")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(l);
+#else
+     (*io)->operator<<<long,otl_var_long_int>(l);
+#endif
+     break;
+   case otl_ora7_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(l);
+#else
+     (*ss)->operator<<<long,otl_var_long_int>(l);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(l);
+#else
+     (*ref_ss)->operator<<<long,otl_var_long_int>(l);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const float f)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(f,"operator <<","float")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(f);
+#else
+     (*io)->operator<<<float,otl_var_float>(f);
+#endif
+     break;
+   case otl_ora7_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(f);
+#else
+     (*ss)->operator<<<float,otl_var_float>(f);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(f);
+#else
+     (*ref_ss)->operator<<<float,otl_var_float>(f);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const double d)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(d,"operator <<","double")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*io)->operator<<(d);
+#else
+     (*io)->operator<<<double,otl_var_double>(d);
+#endif
+     break;
+   case otl_ora7_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(d);
+#else
+     (*ss)->operator<<<double,otl_var_double>(d);
+#endif
+     break;
+   case otl_ora7_refcur_select_stream:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(d);
+#else
+     (*ref_ss)->operator<<<double,otl_var_double>(d);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+  otl_stream& operator<<(const otl_null& /* n */)
+    OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("NULL","operator <<","otl_null&")
+   switch(shell->stream_type){
+   case otl_ora7_no_stream:
+     break;
+   case otl_ora7_io_stream:
+     (*io)->operator<<(otl_null());
+     break;
+   case otl_ora7_select_stream:
+     (*ss)->operator<<(otl_null());
+     break;
+   case otl_ora7_refcur_select_stream:
+     (*ref_ss)->operator<<(otl_null());
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const otl_long_string& d)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(" len="<<d.len(),"operator <<","otl_long_string&")
+   if((*io)){
+     (*io)->operator<<(d);
+     inc_next_iov();
+   }
+   return *this;
+ }
+
+private:
+
+  otl_stream& operator=(const otl_stream&)
+  {
+    return *this;
+  }
+
+  otl_stream(const otl_stream&){}
+
+#if !defined(OTL_STREAM_NO_PRIVATE_BOOL_OPERATORS)
+  otl_stream& operator>>(bool&)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+
+  otl_stream& operator<<(const bool)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+
+#endif
+
+#if !defined(OTL_STREAM_NO_PRIVATE_UNSIGNED_LONG_OPERATORS)
+  otl_stream& operator>>(unsigned long int&)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+
+  otl_stream& operator<<(const unsigned long int)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+#endif
+
+};
+
+inline otl_connect& operator>>(otl_connect& connect, otl_stream& s)
+{
+  const char* cmd=connect.getCmd();
+  const char* invalid_cmd="*** INVALID COMMAND ***";
+  if(!cmd)
+    cmd=invalid_cmd;
+  s.open(s.getBufSize(),cmd,connect);
+  return connect;
+}
+
+#if (defined(OTL_STL)||defined(OTL_VALUE_TEMPLATE_ON)) && defined(OTL_VALUE_TEMPLATE)
+template <OTL_TYPE_NAME TData>
+otl_stream& operator<<(otl_stream& s, const otl_value<TData>& var)
+  OTL_THROWS_OTL_EXCEPTION
+{
+ if(var.ind)
+  s<<otl_null();
+ else
+  s<<var.v;
+ return s;
+}
+
+template <OTL_TYPE_NAME TData>
+otl_stream& operator>>(otl_stream& s, otl_value<TData>& var)
+  OTL_THROWS_OTL_EXCEPTION
+{
+  s>>var.v;
+  if(s.is_null())
+    var.ind=true;
+  else
+    var.ind=false;
+  return s;
+}
+
+#endif
+
+typedef otl_tmpl_nocommit_stream
+<otl_stream,
+ otl_connect,
+ otl_exception> otl_nocommit_stream;
+
+#if defined(OTL_BIGINT) && defined(OTL_STR_TO_BIGINT) && \
+    defined(OTL_BIGINT_TO_STR)
+inline otl_stream& operator>>(otl_stream& s, OTL_BIGINT& n)
+  OTL_THROWS_OTL_EXCEPTION
+{
+  char temp_val[otl_bigint_str_size];
+
+  s>>temp_val;
+  if(s.is_null()){
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if(s.is_null())
+     n=OTL_SCAST(OTL_BIGINT,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+    return s;
+  }
+  OTL_STR_TO_BIGINT(temp_val,n)
+  return s;
+}
+
+inline otl_stream& operator<<(otl_stream& s, const OTL_BIGINT n)
+  OTL_THROWS_OTL_EXCEPTION
+{
+  char temp_val[otl_bigint_str_size];
+  OTL_BIGINT_TO_STR(n,temp_val);
+  s<<temp_val;
+  return s;
+}
+#endif
+
+
+OTL_ORA7_NAMESPACE_END
+#endif
+
+// ==================== OTL-Adapter for Oracle 8 =====================
+#if defined(OTL_ORA8)
+#if defined(__STDC__)
+#define __STDC__DEFINED
+#else
+#define __STDC__ 1 // making OCI function prototypes show up in oci.h
+#endif
+#if defined(OTL_ORA_TEXT_ON)
+#define text OTL_ORA_TEXT
+#endif
+#include <oci.h>
+
+#if !defined(OTL_ORA_DOES_NOT_UNDEF_MIN_MAX)
+
+#if defined(min)
+#undef min
+#endif
+
+#if defined(max)
+#undef max
+#endif
+
+#endif
+
+#if defined(OTL_ORA8_PROC)
+extern "C" {
+#include <sql2oci.h>
+}
+#endif
+
+OTL_ORA8_NAMESPACE_BEGIN
+
+const int inVarChar2=1;
+const int inNumber=2;
+const int inLong=8;
+const int inRowId=104;
+const int inDate=12;
+const int inRaw=23;
+const int inLongRaw=24;
+const int inChar=96;
+#if defined(OTL_ORA10G)||defined(OTL_ORA10G_R2)
+const int inBFloat=SQLT_IBFLOAT;
+const int inBDouble=SQLT_IBDOUBLE;
+#endif
+const int inMslabel=105;
+const int inUserDefinedType=108;
+const int inRef=111;
+const int inCLOB=112;
+const int inBLOB=113;
+
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+const int inTimestamp=SQLT_TIMESTAMP;
+const int inTimestamp_TZ=SQLT_TIMESTAMP_TZ;
+const int inTimestamp_LTZ=SQLT_TIMESTAMP_LTZ;
+const int inIntervalYM=SQLT_INTERVAL_YM;
+const int inIntervalDS=SQLT_INTERVAL_DS;
+#endif
+
+const int  extVarChar2=1;
+const int  extNumber=2;
+const int  extInt=3;
+const int  extFloat=4;
+#if defined(OTL_ORA_MAP_STRINGS_TO_CHARZ)
+const int  extCChar=97;
+#else
+const int  extCChar=5;
+#endif
+const int  extVarNum=6;
+const int  extLong=8;
+const int  extVarChar=9;
+const int  extRowId=11;
+const int  extDate=12;
+const int  extVarRaw=15;
+const int  extRaw=extVarRaw;
+const int  extLongRaw=24;
+const int  extUInt=68;
+const int  extLongVarChar=94;
+const int  extLongVarRaw=95;
+const int  extChar=96;
+const int  extCharZ=97;
+const int  extMslabel=105;
+const int  extCLOB=inCLOB;
+const int  extBLOB=inBLOB;
+
+#if defined(OTL_ORA10G)||defined(OTL_ORA10G_R2)
+const int extBFloat=SQLT_BFLOAT;
+const int extBDouble=SQLT_BDOUBLE;
+#endif
+
+
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+const int extTimestamp=SQLT_TIMESTAMP;
+const int extTimestamp_TZ=SQLT_TIMESTAMP_TZ;
+const int extTimestamp_LTZ=SQLT_TIMESTAMP_LTZ;
+#endif
+
+
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+typedef otl_datetime otl_time0;
+#else
+typedef otl_oracle_date otl_time0;
+#endif
+
+
+class otl_exc{
+public:
+  unsigned char msg[1000];
+  int code;
+  char sqlstate[32];
+
+#if defined(OTL_EXCEPTION_ENABLE_ERROR_OFFSET)
+  int error_offset;
+#endif
+
+#if defined(OTL_EXTENDED_EXCEPTION)
+  char** msg_arr;
+  char** sqlstate_arr;
+  int* code_arr;
+  int arr_len;
+#endif
+
+  enum{disabled=0,enabled=1};
+
+  otl_exc()
+  {
+    sqlstate[0]=0;
+    msg[0]=0;
+    code=0;
+#if defined(OTL_EXCEPTION_ENABLE_ERROR_OFFSET)
+    error_offset=-1;
+#endif
+#if defined(OTL_EXTENDED_EXCEPTION)
+    msg_arr=0;
+    sqlstate_arr=0;
+    code_arr=0;
+    arr_len=0;
+#endif
+ }
+
+ void init(const char* amsg, const int acode)
+ {
+   OTL_STRCPY_S(OTL_RCAST(char*,msg),sizeof(msg),amsg);
+   code=acode;
+#if defined(OTL_EXCEPTION_ENABLE_ERROR_OFFSET)
+   error_offset=-1;
+#endif
+#if defined(OTL_EXTENDED_EXCEPTION)
+   msg_arr=0;
+   sqlstate_arr=0;
+   code_arr=0;
+   arr_len=0;
+#endif
+ }
+
+};
+
+class otl_conn{
+public:
+
+ OCIEnv *envhp; // OCI environment handle
+ OCIServer *srvhp; // OCI Server handle
+ OCIError *errhp; // OCI Error handle
+ OCISvcCtx *svchp; // OCI Service context handle
+ OCISession *authp; // OCI Session handle
+ int auto_commit;
+ int extern_lda;
+ int attached;
+ int in_session;
+ int char_set_;
+ int session_begin_count;
+ int session_mode_;
+ int ext_cred;
+ int last_status;
+ char* xa_server_external_name;
+ char* xa_server_internal_name;
+
+#if defined(OTL_ORA_OCI_ENV_CREATE)
+  bool threaded_mode;
+#endif
+
+
+#if !defined(OTL_ORA_OCI_ENV_CREATE)
+  static int initialize(const int threaded_mode=0)
+  {
+    int status;
+    int mode;
+    if(threaded_mode)
+      mode=OCI_THREADED;
+    else
+      mode=OCI_DEFAULT;
+    status=OCIInitialize
+      (OTL_SCAST(ub4,mode),
+       OTL_RCAST(dvoid *,0),
+       0,
+       0,
+       0);
+    if(status!=OCI_SUCCESS)
+      return 0;
+    else
+      return 1;
+#else
+  static int initialize(const int /*threaded_mode*/)
+  {
+    return 1;
+#endif
+  }
+
+ otl_conn()
+ {
+  xa_server_external_name=0;
+  xa_server_internal_name=0;
+  envhp=0;
+  srvhp=0;
+  errhp=0;
+  svchp=0;
+  authp=0;
+  auto_commit=0;
+  extern_lda=0;
+  attached=0;
+  in_session=0;
+  session_begin_count=0;
+  session_mode_=OCI_DEFAULT;
+  char_set_=SQLCS_IMPLICIT;
+  ext_cred=0;
+  last_status=OCI_SUCCESS;
+#if defined(OTL_ORA_OCI_ENV_CREATE)
+  threaded_mode=false;
+#endif
+ }
+
+#if defined(OTL_ORA_OCI_ENV_CREATE)
+  void set_connect_mode(bool mode)
+  {
+    threaded_mode=mode;
+  }
+#endif
+
+ void set_char_set(const int char_set)
+ {
+  char_set_=char_set;
+ }
+
+  void set_xa_server_external_name(const char* name)
+  {
+   if(xa_server_external_name){
+     delete[] xa_server_external_name;
+     xa_server_external_name=0;
+   }
+   size_t len=strlen(name)+1;
+   xa_server_external_name=new char[len];
+   OTL_STRCPY_S(xa_server_external_name,len,name);
+  }
+
+  void set_xa_server_internal_name(const char* name)
+  {
+   if(xa_server_internal_name){
+     delete[] xa_server_internal_name;
+     xa_server_internal_name=0;
+   }
+   size_t len=strlen(name)+1;
+   xa_server_internal_name=new char[len];
+   OTL_STRCPY_S(xa_server_internal_name,len,name);
+  }
+
+  void delete_xa_strings(void )
+  {
+    if(xa_server_external_name){
+      delete[] xa_server_external_name;
+      xa_server_external_name=0;
+    }
+    if(xa_server_internal_name){
+      delete[] xa_server_internal_name;
+      xa_server_internal_name=0;
+    }
+  }
+
+ virtual ~otl_conn()
+ {
+   delete_xa_strings();
+ }
+
+  void set_timeout(const int /*atimeout*/=0){}
+  void set_cursor_type(const int /*acursor_type*/=0){}
+
+ int cancel(void)
+ {int status;
+  status=OCIBreak(srvhp,errhp);
+  if(status)
+   return 0;
+  else
+   return 1;
+ }
+
+ int server_attach(const char* tnsname)
+ {int& status=last_status;
+
+  envhp=0;
+  srvhp=0;
+  errhp=0;
+  svchp=0;
+  authp=0;
+  extern_lda=0;
+  attached=0;
+  in_session=0;
+  session_begin_count=0;
+
+#if !defined(OTL_ORA_OCI_ENV_CREATE)
+  status=OCIEnvInit
+   (OTL_RCAST(OCIEnv**,&envhp),
+    OCI_DEFAULT,
+    0,
+    0);
+#else
+  status=OCIEnvCreate
+    (OTL_RCAST(OCIEnv**,&envhp), 
+#if defined(OTL_ORA_OCI_ENV_CREATE_MODE)
+     OTL_ORA_OCI_ENV_CREATE_MODE,
+#else
+     threaded_mode?OCI_THREADED:OCI_DEFAULT,
+#endif
+     0, 
+     0, 
+     0, 
+     0, 
+     0, 
+     0);
+#endif
+
+  if(status)return 0;
+
+#if defined(__GNUC__) && (__GNUC__>=4)
+  void* temp_errhp=&errhp;
+#endif
+  status=OCIHandleAlloc
+   (OTL_RCAST(dvoid*,envhp),
+#if defined(__GNUC__) && (__GNUC__>=4)
+    OTL_RCAST(dvoid**,temp_errhp),
+#else
+    OTL_RCAST(dvoid**,&errhp),
+#endif
+    OCI_HTYPE_ERROR,
+    0,
+    0);
+  if(status)return 0;
+
+#if defined(__GNUC__) && (__GNUC__>=4)
+  void* temp_srvhp=&srvhp;
+#endif
+  status=OCIHandleAlloc
+   (OTL_RCAST(dvoid*,envhp),
+#if defined(__GNUC__) && (__GNUC__>=4)
+    OTL_RCAST(dvoid**,temp_srvhp),
+#else
+    OTL_RCAST(dvoid**,&srvhp),
+#endif
+    OCI_HTYPE_SERVER,
+    0,
+    0);
+  if(status)return 0;
+
+#if defined(__GNUC__) && (__GNUC__>=4)
+  void * temp_svchp=&svchp;
+#endif
+  status=OCIHandleAlloc
+   (OTL_RCAST(dvoid*,envhp),
+#if defined(__GNUC__) && (__GNUC__>=4)
+    OTL_RCAST(dvoid**,temp_svchp),
+#else
+    OTL_RCAST(dvoid**,&svchp),
+#endif
+    OCI_HTYPE_SVCCTX,
+    0,
+    0);
+  if(status)return 0;
+
+  status=OCIServerAttach
+   (srvhp,
+    errhp,
+    tnsname==0?OTL_RCAST(text*,OTL_CCAST(char*,"")):
+               OTL_RCAST(text*,OTL_CCAST(char*,tnsname)),
+    tnsname==0?0:OTL_SCAST(sb4,strlen(OTL_CCAST(char*,tnsname))),
+    0);
+  if(status)return 0;
+  status=OCIAttrSet
+   (OTL_RCAST(dvoid*,svchp),
+    OCI_HTYPE_SVCCTX,
+    OTL_RCAST(dvoid*,srvhp),
+    0,
+    OCI_ATTR_SERVER,
+    OTL_RCAST(OCIError*,errhp));
+  if(status)return 0;
+
+  if(xa_server_external_name!=0 && xa_server_internal_name!=0){
+    status=OCIAttrSet
+      (OTL_RCAST(dvoid*,srvhp),
+       OCI_HTYPE_SERVER,
+       OTL_RCAST(dvoid*,xa_server_external_name),
+       0,
+       OCI_ATTR_EXTERNAL_NAME,
+       errhp);        
+    if(status)return 0;
+    
+    status=OCIAttrSet
+      (OTL_RCAST(dvoid*,srvhp),
+       OCI_HTYPE_SERVER,
+       OTL_RCAST(dvoid*,xa_server_internal_name),
+       0,
+       OCI_ATTR_INTERNAL_NAME,
+       errhp);   
+    if(status)return 0; 
+  }
+
+#if defined(__GNUC__) && (__GNUC__>=4)
+  void* temp_authp=&authp;
+#endif
+  status=OCIHandleAlloc
+   (OTL_RCAST(dvoid*,envhp),
+#if defined(__GNUC__) && (__GNUC__>=4)
+    OTL_RCAST(dvoid **,temp_authp),
+#else
+    OTL_RCAST(dvoid **,&authp),
+#endif
+    OTL_SCAST(ub4,OCI_HTYPE_SESSION),
+    0,
+    0);
+  if(status)return 0;
+
+  attached=1;
+  return 1;
+
+ }
+
+ int session_begin(const int aauto_commit)
+  {int& status=last_status;
+  int cred_type;
+
+  if(!attached)return 0;
+  if(session_begin_count==0)return 0;
+
+  if(ext_cred)
+   cred_type=OCI_CRED_EXT;
+  else
+   cred_type=OCI_CRED_RDBMS;
+  status=OCISessionBegin
+   (svchp,
+    errhp,
+    authp,
+    cred_type,
+    OTL_SCAST(ub4,session_mode_));
+  if(status!=OCI_SUCCESS && 
+     status!=OCI_SUCCESS_WITH_INFO)
+    return 0;
+
+  in_session=1;
+  auto_commit=aauto_commit;
+  ++session_begin_count;
+  return 1;
+
+ }
+
+ int session_begin
+   (const char* userid,
+    const char* password,
+    const int aauto_commit,
+    const int session_mode=OCI_DEFAULT)
+ {int& status=last_status;
+  int cred_type;
+
+  if(!attached)return 0;
+
+  status=OCIAttrSet
+   (OTL_RCAST(dvoid*,authp),
+    OTL_SCAST(ub4,OCI_HTYPE_SESSION),
+    OTL_RCAST(dvoid*,OTL_CCAST(char*,userid)),
+    OTL_SCAST(ub4,strlen(OTL_CCAST(char*,userid))),
+    OTL_SCAST(ub4,OCI_ATTR_USERNAME),
+    errhp);
+  if(status)return 0;
+
+  status=OCIAttrSet
+   (OTL_RCAST(dvoid*,authp),
+    OTL_SCAST(ub4,OCI_HTYPE_SESSION),
+    OTL_RCAST(dvoid*,OTL_CCAST(char*,password)),
+    OTL_SCAST(ub4,strlen(OTL_CCAST(char*,password))),
+    OTL_SCAST(ub4,OCI_ATTR_PASSWORD),
+    errhp);
+  if(status)return 0;
+
+   cred_type=OCI_CRED_RDBMS;
+
+  if(userid[0]==0&&password[0]==0){
+   ext_cred=1;
+   cred_type=OCI_CRED_EXT;
+  }else{
+   ext_cred=0;
+   cred_type=OCI_CRED_RDBMS;
+  }
+
+  session_mode_=session_mode;
+  status=OCISessionBegin
+   (svchp,
+    errhp,
+    authp,
+    cred_type,
+    OTL_SCAST(ub4,session_mode_));
+  if(status!=OCI_SUCCESS &&
+     status!=OCI_SUCCESS_WITH_INFO)
+    return 0;
+
+  status=OCIAttrSet
+   (OTL_RCAST(dvoid*,svchp),
+    OTL_SCAST(ub4,OCI_HTYPE_SVCCTX),
+    OTL_RCAST(dvoid *,authp),
+    0,
+    OTL_SCAST(ub4,OCI_ATTR_SESSION),
+    errhp);
+  if(status)return 0;
+
+  in_session=1;
+  auto_commit=aauto_commit;
+  ++session_begin_count;
+  return 1;
+
+ }
+
+#if defined(OTL_ORA8I) || defined(OTL_ORA9I)
+  int change_password
+  (const char* user_name,
+   const char* password,
+   const char* new_password)
+  {int& status=last_status;
+    
+    OCIAttrSet
+      (OTL_RCAST(dvoid*,svchp),
+       OTL_SCAST(ub4,OCI_HTYPE_SVCCTX),
+       OTL_RCAST(dvoid *,authp),
+       0,
+       OTL_SCAST(ub4,OCI_ATTR_SESSION),
+       errhp);
+    
+    status=OCIPasswordChange 
+      (svchp,  
+       errhp,
+       OTL_RCAST(text*,OTL_CCAST(char*,user_name)),
+       OTL_SCAST(ub4,strlen(user_name)),
+       OTL_RCAST(text*,OTL_CCAST(char*,password)),
+       OTL_SCAST(ub4,strlen(password)),
+       OTL_RCAST(text*,OTL_CCAST(char*,new_password)),
+       OTL_SCAST(ub4,strlen(new_password)),
+       OCI_AUTH);
+    if(status)
+      return 0;
+    else
+      return 1;
+  
+  }
+#endif
+
+ int server_detach(void)
+ {int rc=0;
+  if(attached){
+   OCIServerDetach(srvhp,errhp,OTL_SCAST(ub4,OCI_DEFAULT));
+   rc=1;
+  }
+  if(authp!=0)OCIHandleFree(OTL_RCAST(dvoid*,authp),
+                            OTL_SCAST(ub4,OCI_HTYPE_SESSION));
+  if(errhp!=0)OCIHandleFree(OTL_RCAST(dvoid*,errhp),
+                            OTL_SCAST(ub4,OCI_HTYPE_ERROR));
+  if(svchp!=0)OCIHandleFree(OTL_RCAST(dvoid*,svchp),
+                            OTL_SCAST(ub4,OCI_HTYPE_SVCCTX));
+  if(srvhp!=0)OCIHandleFree(OTL_RCAST(dvoid*,srvhp),
+                            OTL_SCAST(ub4,OCI_HTYPE_SERVER));
+  if(envhp!=0)OCIHandleFree(OTL_RCAST(dvoid*,envhp),
+                            OTL_SCAST(ub4,OCI_HTYPE_ENV));
+  auto_commit=0;
+  attached=0;
+  in_session=0;
+  envhp=0;
+  srvhp=0;
+  errhp=0;
+  svchp=0;
+  authp=0;
+  delete_xa_strings();
+  return rc;
+ }
+
+ int session_end(void)
+ {int& status=last_status;
+  if(!in_session)return 0;
+  status=OCISessionEnd(svchp,errhp,authp,0);
+  if(status)return 0;
+
+  in_session=0;
+  auto_commit=0;
+  return 1;
+ }
+
+ int auto_commit_on(void)
+ {
+  auto_commit=1;
+  return 1;
+ }
+
+ int auto_commit_off(void)
+ {
+  auto_commit=0;
+  return 1;
+ }
+
+ int rlogon(const char* connect_str,const int aauto_commit)
+ {
+   int status;
+   char username[256];
+   char passwd[256];
+   char tnsname[256];
+   char* tnsname_ptr=0;
+   char* username_ptr=username;
+   char* c=OTL_CCAST(char*,connect_str);
+   char* passwd_ptr=passwd;
+   char prev_c=' ';
+   
+   auto_commit=aauto_commit;
+   
+   username[0]=0;
+   passwd[0]=0;
+   tnsname[0]=0;
+   
+   while(*c&&*c!='/'&&(OTL_SCAST(unsigned,username_ptr-username)<
+                       sizeof(username)-1)){
+    *username_ptr=*c;
+    ++c;
+    ++username_ptr;
+   }
+   *username_ptr=0;
+   if(*c=='/')++c;
+   prev_c=' ';
+   while(*c && !(*c=='@' && prev_c!='\\') &&
+         (OTL_SCAST(unsigned,passwd_ptr-passwd)<sizeof(passwd)-1)){
+     if(prev_c=='\\')--passwd_ptr;
+     *passwd_ptr=*c;
+     prev_c=*c;
+     ++c;
+     ++passwd_ptr;
+   }
+   *passwd_ptr=0;
+   
+   if(*c=='@'){
+     ++c;
+     tnsname_ptr=tnsname;
+     while(*c&&(OTL_SCAST(unsigned,tnsname_ptr-tnsname)<sizeof(tnsname)-1)){
+       *tnsname_ptr=*c;
+       ++c;
+       ++tnsname_ptr;
+     }
+     *tnsname_ptr=0;
+   }
+   
+   envhp=0;
+   srvhp=0;
+   errhp=0;
+   svchp=0;
+   authp=0;
+   extern_lda=0;
+   attached=0;
+   in_session=0;
+
+  OTL_TRACE_RLOGON_ORA8
+    (0x1,
+     "otl_connect",
+     "rlogon",
+     tnsname,
+     username,
+     passwd,
+     auto_commit)
+   
+   status=server_attach(tnsname);
+   if(!status)return 0;
+   
+   status=session_begin(username,passwd,aauto_commit);
+   if(!status)return 0;
+   
+   return 1;
+
+ }
+
+ int ext_logon(OCIEnv *a_envhp,OCISvcCtx *a_svchp,const int aauto_commit=0)
+ {int& status=last_status;
+
+  envhp=a_envhp;
+  svchp=a_svchp;
+  errhp=0;
+  srvhp=0;
+  authp=0;
+  extern_lda=1;
+  auto_commit=aauto_commit;
+
+#if defined(__GNUC__) && (__GNUC__>=4)
+  void* temp_errhp=&errhp;
+#endif
+  status=OCIHandleAlloc
+   (OTL_RCAST(dvoid*,envhp),
+#if defined(__GNUC__) && (__GNUC__>=4)
+    OTL_RCAST(dvoid**,temp_errhp),
+#else
+    OTL_RCAST(dvoid**,&errhp),
+#endif
+    OCI_HTYPE_ERROR,
+    0,
+    0);
+  if(status)return 0;
+
+  return 1;
+
+ }
+
+ int logoff(void)
+ {
+  int rc;
+  if(extern_lda){
+   OCIHandleFree(OTL_RCAST(dvoid*,errhp), OTL_SCAST(ub4,OCI_HTYPE_ERROR));
+   envhp=0;
+   svchp=0;
+   errhp=0;
+   extern_lda=0;
+  }else{
+   rc=session_end();
+   if(!rc)return 0;
+   rc=server_detach();
+   if(!rc)return 0;
+  }
+  auto_commit=0;
+  return 1;
+ }
+
+ void error(otl_exc& exception_struct)
+ {sb4 errcode;
+  size_t len;
+  OCIErrorGet
+   (OTL_RCAST(dvoid*,errhp),
+    OTL_SCAST(ub4,1),
+    0,
+    &errcode,
+    OTL_RCAST(text*,exception_struct.msg),
+    OTL_SCAST(ub4,sizeof(exception_struct.msg)),
+    OCI_HTYPE_ERROR);
+  exception_struct.code=errcode;
+  len=strlen(OTL_RCAST(char*,exception_struct.msg));
+  exception_struct.msg[len]=0;
+ }
+
+ int commit(void)
+ {
+   last_status=OCITransCommit(svchp,errhp,OTL_SCAST(ub4,OCI_DEFAULT));
+   return !last_status;
+ }
+
+#if defined(OTL_ORA10G_R2)
+
+ int commit_nowait(void)
+ {
+#if defined(OCI_TRANS_WRITENOWAIT)
+   last_status=OCITransCommit
+     (svchp,
+      errhp,
+      OTL_SCAST(ub4,OCI_TRANS_WRITENOWAIT));
+#else
+   last_status=OCITransCommit
+     (svchp,
+      errhp,
+      OTL_SCAST(ub4,0x00000008));
+#endif
+   return !last_status;
+ }
+
+#endif
+
+ int rollback(void)
+ {
+   last_status=OCITransRollback(svchp,errhp,OTL_SCAST(ub4,OCI_DEFAULT));
+   return !last_status;
+ }
+
+};
+
+class otl_cur0{
+public:
+};
+
+class otl_var{
+public:
+
+  ub1* p_v;
+  sb2* p_ind;
+  ub2* p_rlen;
+  ub2* p_rcode;
+  int ftype;
+  int array_size;
+  int elem_size;
+  bool nls_flag;
+  OCILobLocator** lob;
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  OCIDateTime** timestamp;
+#endif
+  OCIStmt* cda;
+  otl_conn* connect;
+  ub1* buf;
+  int buf_len;
+  int ext_buf_flag;
+  int act_elem_size;
+  ub4 max_tab_len;
+  ub4 cur_tab_len;
+  int pl_tab_flag;
+  int lob_stream_flag;
+  int vparam_type;
+  int lob_len;
+  int lob_pos;
+  int lob_ftype;
+  int otl_adapter;
+  bool lob_stream_mode;
+  sb4 unicode_var_len;
+  ub2 csid; 
+  ub1 csfrm;
+  ub4 read_blob_amt;
+  ub4 total_read_blob_amt;
+  bool charz_flag;
+
+ otl_var()
+ {
+  otl_adapter=otl_ora8_adapter;
+  lob_stream_mode=false;
+  nls_flag=false;
+  read_blob_amt=0;
+  total_read_blob_amt=0;
+  lob_stream_flag=0;
+  unicode_var_len=0;
+  csid=0;
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  timestamp=0;
+#endif
+  csfrm=SQLCS_IMPLICIT;
+  cda=0;
+  p_v=0;
+  p_ind=0;
+  p_rlen=0;
+  p_rcode=0;
+  ftype=0;
+  lob=0;
+  array_size=0;
+  connect=0;
+  elem_size=0;
+  buf=0;
+  buf_len=0;
+  ext_buf_flag=0;
+  act_elem_size=0;
+  max_tab_len=0;
+  cur_tab_len=0;
+  pl_tab_flag=0;
+  vparam_type=-1;
+  lob_len=0;
+  lob_pos=0;
+  lob_ftype=0;
+  charz_flag=false;
+ }
+
+ virtual ~otl_var()
+ {int i;
+  if(ftype==otl_var_refcur&&cda!=0){
+    OCIHandleFree(OTL_RCAST(dvoid*,cda),OCI_HTYPE_STMT);
+    cda=0;
+  }
+  if(ftype==otl_var_blob||ftype==otl_var_clob&&lob!=0){
+   for(i=0;i<array_size;++i)
+    OCIDescriptorFree(OTL_RCAST(dvoid*,lob[i]),
+                      OTL_SCAST(ub4,OCI_DTYPE_LOB));
+  }
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  if((ftype==otl_var_timestamp ||
+      ftype==otl_var_tz_timestamp ||
+      ftype==otl_var_ltz_timestamp)&&
+      timestamp!=0){
+    ub4 dtype=0;
+    switch(ftype){
+    case otl_var_timestamp:
+      dtype=OCI_DTYPE_TIMESTAMP;
+      break;
+    case otl_var_ltz_timestamp:
+      dtype=OCI_DTYPE_TIMESTAMP_LTZ;
+      break;
+    case otl_var_tz_timestamp:
+      dtype=OCI_DTYPE_TIMESTAMP_TZ;
+      break;
+    }
+   for(i=0;i<array_size;++i)
+    OCIDescriptorFree(OTL_RCAST(dvoid*,timestamp[i]),dtype);
+  }
+#endif
+  delete[] p_v;
+  delete[] p_ind;
+  delete[] p_rlen;
+  delete[] p_rcode;
+  if(!ext_buf_flag)
+   delete[] buf;
+ }
+
+  int write_dt(void* trg, 
+               const void* src, 
+               const int 
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+#else
+               sz
+#endif
+              )
+  {
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+    OCIDateTime* trg_ptr=OTL_RCAST(OCIDateTime*,trg);
+    otl_datetime* src_ptr=OTL_RCAST(otl_datetime*,OTL_CCAST(void*,src));
+    int rc=0;
+    if(ftype!=otl_var_tz_timestamp){
+      rc=OCIDateTimeConstruct 
+        (connect->envhp,
+         connect->errhp,
+         trg_ptr,
+         OTL_SCAST(sb2,src_ptr->year),
+         OTL_SCAST(ub1,src_ptr->month),
+         OTL_SCAST(ub1,src_ptr->day),
+         OTL_SCAST(ub1,src_ptr->hour),
+         OTL_SCAST(ub1,src_ptr->minute),
+         OTL_SCAST(ub1,src_ptr->second),
+         OTL_SCAST
+         (ub4,otl_to_fraction(src_ptr->fraction,
+                              src_ptr->frac_precision)),
+         0,
+         0);
+    }else{
+      int tz_hour=src_ptr->tz_hour;
+      int tz_minute=src_ptr->tz_minute;
+      char tz_str[60];
+      char* tzc=otl_itoa(tz_hour,tz_str);
+      *tzc=':';
+      ++tzc;
+      otl_itoa(tz_minute,tzc);
+      rc=OCIDateTimeConstruct 
+        (connect->envhp,
+         connect->errhp,
+         trg_ptr,
+         OTL_SCAST(sb2,src_ptr->year),
+         OTL_SCAST(ub1,src_ptr->month),
+         OTL_SCAST(ub1,src_ptr->day),
+         OTL_SCAST(ub1,src_ptr->hour),
+         OTL_SCAST(ub1,src_ptr->minute),
+         OTL_SCAST(ub1,src_ptr->second),
+         OTL_SCAST
+         (ub4,otl_to_fraction(src_ptr->fraction,
+                              src_ptr->frac_precision)),
+         OTL_RCAST(text*,tz_str),
+         OTL_SCAST(size_t,(tzc-tz_str)));
+    }
+    if(rc!=0)return 0;
+    return 1;
+#else
+    memcpy(trg,src,sz);
+    return 1;
+#endif
+  }
+
+  int read_dt(void* trg, 
+              const void* src, 
+              const int 
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+#else
+              sz
+#endif
+             )
+  {
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+    OCIDateTime* src_ptr=OTL_RCAST(OCIDateTime*,OTL_CCAST(void*,src));
+    otl_datetime* trg_ptr=OTL_RCAST(otl_datetime*,OTL_CCAST(void*,trg));
+    sb2 year;
+    ub1 month, day, hour, minute, sec;
+    ub4 fsec;
+    sb1 tz_hour;
+    sb1 tz_minute;
+    int rc=OCIDateTimeGetDate 
+      (connect->envhp,
+       connect->errhp, 
+       src_ptr,
+       &year,
+       &month,
+       &day);
+    if(rc!=0)return 0;
+    rc=OCIDateTimeGetTime
+      (connect->envhp,
+       connect->errhp, 
+       src_ptr,
+       &hour,
+       &minute,
+       &sec,
+       &fsec);
+    if(rc!=0)return 0;
+    trg_ptr->year=year;
+    trg_ptr->month=month;
+    trg_ptr->day=day;
+    trg_ptr->hour=hour;
+    trg_ptr->minute=minute;
+    trg_ptr->second=sec;
+    trg_ptr->fraction=otl_from_fraction(fsec,trg_ptr->frac_precision);
+    trg_ptr->tz_hour=0;
+    trg_ptr->tz_minute=0;
+    if(ftype==otl_var_tz_timestamp ||
+       ftype==otl_var_ltz_timestamp){
+      rc=OCIDateTimeGetTimeZoneOffset
+        (connect->envhp,
+         connect->errhp, 
+         src_ptr,
+         &tz_hour,
+         &tz_minute);
+      if(rc!=0)return 0;
+      trg_ptr->tz_hour=tz_hour;
+      trg_ptr->tz_minute=tz_minute;
+    }
+    return 1;
+#else
+    memcpy(trg,src,sz);
+    return 1;
+#endif
+  }
+
+
+ int actual_elem_size(void)
+ {
+  return act_elem_size;
+ }
+
+ void init
+ (const int aftype,
+  int& aelem_size,
+  const otl_stream_buffer_size_type aarray_size,
+  const void* connect_struct=0,
+  const int apl_tab_flag=0)
+ {
+  int i;
+  ub4 lobEmpty=0;
+
+  connect=OTL_RCAST(otl_conn*,OTL_CCAST(void*,connect_struct));
+  ftype=aftype;
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+  if(ftype==otl_var_nchar){
+    ftype=otl_var_char;
+    nls_flag=true;
+  }else if(ftype==otl_var_nclob){
+    ftype=otl_var_clob;
+    nls_flag=true;
+  }
+#endif
+  pl_tab_flag=apl_tab_flag;
+  act_elem_size=aelem_size;
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  if((ftype==otl_var_timestamp ||
+      ftype==otl_var_tz_timestamp ||
+      ftype==otl_var_ltz_timestamp) &&
+      apl_tab_flag)
+    act_elem_size=sizeof(otl_oracle_date);
+#endif
+  if(ftype==otl_var_refcur){
+   array_size=aarray_size;
+   elem_size=1;
+#if defined(__GNUC__) && (__GNUC__>=4)
+   void* temp_cda=&cda;
+#endif
+   OCIHandleAlloc
+    (OTL_RCAST(dvoid*,connect->envhp),
+#if defined(__GNUC__) && (__GNUC__>=4)
+     OTL_RCAST(dvoid**,temp_cda),
+#else
+     OTL_RCAST(dvoid**,&cda),
+#endif
+     OCI_HTYPE_STMT,
+     0,
+     0);
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  }else if((ftype==otl_var_timestamp ||
+            ftype==otl_var_tz_timestamp ||
+            ftype==otl_var_ltz_timestamp) &&
+           !apl_tab_flag){
+   array_size=aarray_size;
+   elem_size=sizeof(OCIDateTime*);
+   act_elem_size=elem_size;
+   timestamp=new OCIDateTime*[array_size];
+   p_v=OTL_RCAST(ub1*,timestamp); 
+   p_ind=new sb2[array_size];
+   p_rlen=new ub2[array_size];
+   p_rcode=new ub2[array_size];
+   for(i=0;i<array_size;++i){
+     p_ind[i]=OTL_SCAST(short,elem_size);
+     p_rlen[i]=OTL_SCAST(short,elem_size);
+     p_rcode[i]=0;
+   }
+   if(connect!=0){
+     otl_datetime dt;
+     ub4 dtype=0;
+     switch(ftype){
+     case otl_var_timestamp:
+       dtype=OCI_DTYPE_TIMESTAMP;
+       break;
+     case otl_var_ltz_timestamp:
+       dtype=OCI_DTYPE_TIMESTAMP_LTZ;
+       break;
+     case otl_var_tz_timestamp:
+       dtype=OCI_DTYPE_TIMESTAMP_TZ;
+       break;
+     }
+     for(i=0;i<array_size;++i){
+       OCIDescriptorAlloc
+         (OTL_RCAST(dvoid*,connect->envhp),
+          OTL_RCAST(dvoid**,&timestamp[i]),
+          dtype,
+          0,
+          0);
+       write_dt(timestamp[i],&dt,1);
+    }
+   }else
+    timestamp=0;
+#endif
+  }else if(ftype==otl_var_blob||ftype==otl_var_clob){
+   array_size=aarray_size;
+   elem_size=aelem_size;
+   lob=new OCILobLocator*[array_size];
+   p_v=OTL_RCAST(ub1*,lob);
+   p_ind=new sb2[array_size];
+   p_rlen=0;
+   p_rcode=0;
+   if(connect!=0){
+    for(i=0;i<array_size;++i){
+     OCIDescriptorAlloc
+      (OTL_RCAST(dvoid*,connect->envhp),
+       OTL_RCAST(dvoid**,&lob[i]),
+       OTL_SCAST(ub4,OCI_DTYPE_LOB),
+       0,
+       0);
+     lobEmpty=0;
+     OCIAttrSet
+      (OTL_RCAST(dvoid*,lob[i]),
+       OCI_DTYPE_LOB,
+       OTL_RCAST(dvoid*,&lobEmpty),
+       0,
+       OCI_ATTR_LOBEMPTY,
+       OTL_RCAST(OCIError*,connect->errhp));
+    }
+   }else
+    lob=0;
+  }else{
+   if(ftype==otl_var_varchar_long||ftype==otl_var_raw_long){
+    elem_size=aelem_size+sizeof(sb4);
+    array_size=1;
+   }else if(ftype==otl_var_raw){
+    elem_size=aelem_size+sizeof(short int);
+    array_size=aarray_size;
+   }else{
+    elem_size=aelem_size;
+    array_size=aarray_size;
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+    if((ftype==otl_var_timestamp ||
+        ftype==otl_var_tz_timestamp ||
+        ftype==otl_var_ltz_timestamp) && 
+       apl_tab_flag){
+      elem_size=sizeof(otl_oracle_date);
+      aelem_size=elem_size; // sending feedback back to the template class
+    }
+#endif
+   }
+#if defined(OTL_UNICODE)
+   if(ftype==otl_var_char){
+     unsigned unicode_buffer_size=
+       elem_size*OTL_SCAST(unsigned,array_size)*sizeof(OTL_WCHAR);
+     p_v=new ub1[unicode_buffer_size];
+     memset(p_v,0,unicode_buffer_size);
+   } else if(ftype==otl_var_varchar_long){
+     unsigned unicode_buffer_size=elem_size;
+     p_v=new ub1[unicode_buffer_size];
+     memset(p_v,0,unicode_buffer_size);
+   }else{
+     p_v=new ub1[elem_size*OTL_SCAST(unsigned,array_size)];
+     memset(p_v,0,elem_size*OTL_SCAST(unsigned,array_size));
+   }
+#else
+   p_v=new ub1[elem_size*OTL_SCAST(unsigned,array_size)];
+   memset(p_v,0,elem_size*OTL_SCAST(unsigned,array_size));
+#endif
+   p_ind=new sb2[array_size];
+   p_rlen=new ub2[array_size];
+   p_rcode=new ub2[array_size];
+   if(ftype==otl_var_varchar_long||ftype==otl_var_raw_long){
+    if(aelem_size>32767)
+     p_ind[0]=0;
+    else
+    p_ind[0]=OTL_SCAST(short,aelem_size);
+    p_rcode[0]=0;
+   }else{
+    for(i=0;i<array_size;++i){
+#if defined(OTL_UNICODE)
+      if(ftype==otl_var_char){
+        p_ind[i]=OTL_SCAST(short,elem_size)*sizeof(OTL_WCHAR);
+        p_rlen[i]=OTL_SCAST(short,elem_size)*sizeof(OTL_WCHAR);
+        p_rcode[i]=0;
+      }else{
+        p_ind[i]=OTL_SCAST(short,elem_size);
+        p_rlen[i]=OTL_SCAST(short,elem_size);
+        p_rcode[i]=0;
+      }
+#else
+      if(ftype==otl_var_raw){
+        p_ind[i]=OTL_SCAST(short,elem_size);
+        p_rlen[i]=OTL_SCAST(short,elem_size);
+        p_rcode[i]=0;
+      }else{
+        p_ind[i]=OTL_SCAST(short,elem_size);
+        p_rlen[i]=OTL_SCAST(short,elem_size);
+        p_rcode[i]=0;
+      }
+#endif
+    }
+   }
+  }
+  max_tab_len=OTL_SCAST(ub4,array_size);
+  cur_tab_len=0;
+ }
+
+ void set_pl_tab_len(const int apl_tab_len)
+ {
+  max_tab_len=OTL_SCAST(ub4,array_size);
+  cur_tab_len=OTL_SCAST(ub4,apl_tab_len);
+ }
+
+ int get_pl_tab_len(void)
+ {
+   return OTL_SCAST(int,cur_tab_len);
+ }
+
+ int get_max_pl_tab_len(void)
+ {
+  return OTL_SCAST(int,max_tab_len);
+ }
+
+ int get_blob_len(const int ndx,int& alen)
+ {
+   ub4 blen;
+   int rc;
+   alen=0;
+   rc=OCILobGetLength
+     (connect->svchp,
+      connect->errhp,
+      lob[ndx],
+      &blen);
+   alen=OTL_SCAST(int,blen);
+   if(rc!=OCI_SUCCESS)return 0;
+   return 1;
+
+ }
+
+  int is_blob_initialized(const int ndx,int& is_init)
+  {
+    int rc;
+    is_init=0;
+    rc=OCILobLocatorIsInit
+      (connect->envhp,
+       connect->errhp,
+       lob[ndx],
+       &is_init);
+    if(rc!=OCI_SUCCESS)
+      return 0;
+    else
+      return 1;
+  }
+
+ int get_blob
+ (const int ndx,
+  unsigned char* abuf,
+  const int buf_size,
+  int& len)
+ {
+  int byte_buf_size=buf_size;
+#if defined(OTL_UNICODE)
+  if(ftype==otl_var_clob)
+   byte_buf_size=buf_size*sizeof(OTL_CHAR);
+#endif  
+  ub4 amt=byte_buf_size;
+  ub4 offset=1;
+  int rc;
+  memset(OTL_RCAST(void*,abuf),0,OTL_SCAST(size_t,buf_size));
+  int is_init=0;
+  rc=OCILobLocatorIsInit
+     (connect->envhp,
+      connect->errhp,
+      lob[ndx],
+      &is_init);
+  if (rc!=0) return 0;
+  if (!is_init){
+   len=0;
+   return 1;
+  }
+#if defined(OTL_UNICODE)
+  if(ftype==otl_var_clob)
+    csid=OTL_UNICODE_ID;
+  else
+    csid=0;
+#else
+  csid=0;
+#endif
+  do{
+    rc=OCILobRead
+      (connect->svchp,
+       connect->errhp,
+       lob[ndx],
+       &amt,
+       offset,
+       OTL_RCAST(dvoid*,abuf+offset-1),
+       OTL_SCAST(ub4,byte_buf_size-offset+1),
+       0,
+       0,
+       csid,
+       OTL_SCAST(ub1,nls_flag?SQLCS_NCHAR:connect->char_set_));
+    offset+=amt;
+  }while(rc==OCI_NEED_DATA);
+  len=offset-1;
+  if(rc!=OCI_SUCCESS){
+    len=0;
+    return 0;
+  }
+  return 1;
+ }
+
+ void set_lob_stream_flag(const int flg=1)
+ {
+  lob_stream_flag=flg;
+ }
+
+  int close_lob(void)
+  {
+#if defined(OTL_ORA8I)||defined(OTL_ORA9I)
+    int rc;
+    boolean flag=0;
+    rc=OCILobIsOpen
+      (connect->svchp,
+       connect->errhp,
+       lob[0],
+       &flag);
+    if(rc!=OCI_SUCCESS)return 0;
+    if(flag!=TRUE)return 1;
+    rc=OCILobClose
+      (connect->svchp,
+       connect->errhp,
+       lob[0]);
+    if(rc!=OCI_SUCCESS)return 0;
+#endif
+    return 1;
+  }
+
+ int put_blob(void)
+ {
+  if(ftype!=otl_var_clob&&ftype!=otl_var_blob||
+     lob_stream_flag||buf==0||buf_len==0)return 1;
+  int rc;
+  int byte_buf_len=buf_len;
+#if defined(OTL_UNICODE)
+  if(ftype==otl_var_clob)
+   byte_buf_len=buf_len*sizeof(OTL_CHAR);
+#endif
+  ub4 amt=OTL_SCAST(ub4,buf_len);
+  ub4 offset=1;
+#if defined(OTL_UNICODE)
+  if(ftype==otl_var_clob)
+    csid=OTL_UNICODE_ID;
+  else
+    csid=0;
+#else
+  csid=0;
+#endif
+  rc=OCILobWrite
+   (connect->svchp,
+    connect->errhp,
+    lob[0],
+    &amt,
+    offset,
+    OTL_RCAST(dvoid*,buf),
+    OTL_SCAST(ub4,byte_buf_len),
+    OCI_ONE_PIECE,
+    0,
+    0,
+    csid,
+    OTL_SCAST(ub1,nls_flag?SQLCS_NCHAR:connect->char_set_));
+  if(rc!=0)return 0;
+  return 1;
+ }
+
+ int read_blob
+ (otl_long_string& s,
+  const int andx,
+  int& aoffset,
+  int alob_len)
+ {
+  ub4 byte_buf_size=s.buf_size;
+
+#if defined(OTL_UNICODE)
+  if(ftype==otl_var_clob)
+   byte_buf_size=byte_buf_size*sizeof(OTL_CHAR);
+#endif
+
+  ub4& amt=read_blob_amt;
+  amt=0;
+  if(aoffset==1)total_read_blob_amt=0;
+  ub4& offset=total_read_blob_amt;
+  if(offset==0)offset=1;
+  int rc;
+  int is_init=0;
+  rc=OCILobLocatorIsInit
+     (connect->envhp,
+      connect->errhp,
+      lob[0],
+      &is_init);
+  if(rc!=OCI_SUCCESS)return 0;
+  if(!is_init){
+   s.set_len(0);
+   return 1;
+  }
+#if defined(OTL_UNICODE)
+  if(ftype==otl_var_clob)
+    csid=OTL_UNICODE_ID;
+  else
+    csid=0;
+#else
+  csid=0;
+#endif
+
+  //  amt=byte_buf_size;
+  rc=OCILobRead
+   (connect->svchp,
+    connect->errhp,
+    lob[andx],
+    &amt,
+    offset,
+    OTL_RCAST(dvoid*,s.v),
+    OTL_SCAST(ub4,byte_buf_size),
+    0,
+    0,
+    csid,
+    OTL_SCAST(ub1,nls_flag?SQLCS_NCHAR:connect->char_set_));
+
+#if defined(OTL_UNICODE)
+  if(ftype==otl_var_clob && offset>1 && amt==byte_buf_size)
+    amt/=sizeof(OTL_CHAR);
+#endif
+
+#if defined(OTL_ORA_UTF8)
+  switch(rc){
+  case OCI_SUCCESS:
+    s.set_len(amt);
+    offset+=amt;
+    if(ftype==otl_var_blob)
+      aoffset+=s.length;
+    else
+      aoffset=alob_len+1;
+    return 1;
+  case OCI_NEED_DATA:
+    s.set_len(amt);
+    offset+=amt;
+    if(ftype==otl_var_blob)
+      aoffset+=s.length;
+    else
+      aoffset=2;
+    return 1;
+  case OCI_ERROR:
+  default:
+    s.set_len(0);
+    return 0;
+  }
+#else
+  switch(rc){
+  case OCI_SUCCESS:
+    if(aoffset==1)
+      s.set_len(alob_len);
+    else
+      s.set_len(alob_len-aoffset+1);
+    break;
+  case OCI_NEED_DATA:
+    s.set_len(amt);
+    break;
+  case OCI_ERROR:
+    s.set_len(0);
+    break;
+  }
+  if(rc==OCI_NEED_DATA||rc==OCI_SUCCESS){
+    aoffset+=s.length;
+    return 1;
+  }else
+    return 0;
+#endif
+
+ }
+
+ int write_blob
+ (const otl_long_string& s,
+  const int alob_len,
+  int& aoffset,
+  otl_cur0& /* cur */)
+ {
+  if(!lob_stream_flag)return 1;
+  if(alob_len==0)return 1;
+  int rc;
+  int byte_s_length=s.length;
+#if defined(OTL_UNICODE)
+  int byte_lob_len;
+  if(ftype==otl_var_clob){
+   byte_lob_len=alob_len*sizeof(OTL_CHAR);
+   byte_s_length=s.length*sizeof(OTL_CHAR);
+  }
+#endif
+  ub4 offset=aoffset;
+  ub4 amt=0;
+  ub1 mode;
+  if(aoffset==1&&alob_len>s.length)
+   mode=OCI_FIRST_PIECE;
+  else if(aoffset==1&&alob_len<=s.length){
+   mode=OCI_ONE_PIECE;
+   amt=s.length;
+  }else if((aoffset-1)+s.length<alob_len)
+   mode=OCI_NEXT_PIECE;
+  else
+   mode=OCI_LAST_PIECE;
+#if defined(OTL_UNICODE)
+  if(ftype==otl_var_clob)
+    csid=OTL_UNICODE_ID;
+  else
+    csid=0;
+#else
+  csid=0;
+#endif
+  if(mode==OCI_FIRST_PIECE || mode==OCI_ONE_PIECE){
+    rc=OCILobTrim 
+      (connect->svchp, 
+       connect->errhp, 
+       lob[0], 
+       0);
+    if(rc!=OCI_SUCCESS)
+      return 0;
+  }
+  rc=OCILobWrite
+   (connect->svchp,
+    connect->errhp,
+    lob[0],
+    OTL_RCAST(ub4*,&amt),
+    offset,
+    OTL_RCAST(dvoid*,s.v),
+    OTL_SCAST(ub4,byte_s_length),
+    mode,
+    0,
+    0,
+    csid,
+    OTL_SCAST(ub1,nls_flag?SQLCS_NCHAR:connect->char_set_));
+  if(rc==OCI_NEED_DATA||
+     rc==OCI_SUCCESS||
+     rc==OCI_SUCCESS_WITH_INFO){
+   aoffset+=s.length;
+   return 1;
+  }
+  return 0;
+ }
+
+ int save_blob
+ (const unsigned char* abuf,
+  const int len,
+  const int extern_buffer_flag)
+ {
+  if(extern_buffer_flag){
+   ext_buf_flag=1;
+   buf_len=len;
+   buf=OTL_CCAST(unsigned char*,abuf);
+  }else{
+   if(buf!=0&&!ext_buf_flag){
+    delete[] buf;
+    buf=0;
+   }
+   ext_buf_flag=0;
+   buf_len=len;
+#if defined(OTL_UNICODE)
+   buf=new ub1[buf_len*sizeof(OTL_CHAR)];
+   memcpy(buf,abuf,buf_len*sizeof(OTL_CHAR));
+#else
+   buf=new ub1[buf_len];
+   memcpy(buf,abuf,buf_len);
+#endif
+  }
+  return 1;
+ }
+
+ void set_null(int ndx)
+ {
+  p_ind[ndx]=-1;
+ }
+
+ void set_not_null(int ndx, int pelem_size)
+ {
+   switch(ftype){
+   case otl_var_varchar_long:
+   case otl_var_raw_long:
+     p_ind[0]=0;
+     break;
+   case otl_var_raw:
+     p_ind[ndx]=OTL_SCAST(short,pelem_size);
+     break;
+   case otl_var_clob:
+   case otl_var_blob:
+     if(lob_stream_flag==0){
+       ub4 lobEmpty=0;
+       OCIAttrSet
+         (OTL_RCAST(dvoid*,lob[ndx]),
+          OCI_DTYPE_LOB,
+          OTL_RCAST(dvoid*,&lobEmpty),
+          0,
+          OCI_ATTR_LOBEMPTY,
+          OTL_RCAST(OCIError*,connect->errhp));
+     }
+     break;
+   default:
+     p_ind[ndx]=OTL_SCAST(short,pelem_size);
+     break;
+   }
+ }
+
+ void bulk_set_not_null(int pelem_size,int aarray_size)
+ {
+   int i;
+   switch(ftype){
+   case otl_var_varchar_long:
+   case otl_var_raw_long:
+     p_ind[0]=0;
+     break;
+   case otl_var_raw:
+     for(i=0;i<aarray_size;++i)
+       p_ind[i]=OTL_SCAST(short,pelem_size);
+     break;
+   case otl_var_clob:
+   case otl_var_blob:
+     if(lob_stream_flag==0){
+       ub4 lobEmpty=0;
+       for(i=0;i<aarray_size;++i)
+         OCIAttrSet
+           (OTL_RCAST(dvoid*,lob[i]),
+            OCI_DTYPE_LOB,
+            OTL_RCAST(dvoid*,&lobEmpty),
+            0,
+            OCI_ATTR_LOBEMPTY,
+            OTL_RCAST(OCIError*,connect->errhp));
+     }
+     break;
+   default:
+     for(i=0;i<aarray_size;++i)
+       p_ind[i]=OTL_SCAST(short,pelem_size);
+     break;
+   }
+ }
+
+ void set_len(int len, int ndx)
+ {
+  if(ftype==otl_var_varchar_long||ftype==otl_var_raw_long){
+#if defined(OTL_UNICODE)
+   if(ftype==otl_var_varchar_long)
+    *OTL_RCAST(sb4*,p_v)=len*sizeof(OTL_CHAR);
+   else
+    *OTL_RCAST(sb4*,p_v)=len;
+#else
+   *OTL_RCAST(sb4*,p_v)=len;
+#endif
+  }else
+   p_rlen[ndx]=OTL_SCAST(short,len);
+ }
+
+ int get_len(int ndx)
+ {
+  if(ftype==otl_var_varchar_long||ftype==otl_var_raw_long){
+   if(p_ind[0]==-1)
+    return 0;
+   else{
+#if defined(OTL_UNICODE)
+    if(ftype==otl_var_varchar_long)
+      return (*OTL_RCAST(sb4*,p_v))/sizeof(OTL_CHAR);
+    else
+      return *OTL_RCAST(sb4*,p_v);
+#else
+    return *OTL_RCAST(sb4*,p_v);
+#endif
+   }
+  }else
+   return p_rlen[ndx];
+ }
+
+ int is_null(int ndx)
+ {
+  return p_ind[ndx]==-1;
+ }
+
+ void* val(int ndx,int pelem_size)
+ {
+   switch(ftype){
+#if defined(OTL_UNICODE)
+   case otl_var_char:
+     return OTL_RCAST(void*,&p_v[OTL_SCAST(unsigned,ndx)*
+                                 pelem_size*sizeof(OTL_WCHAR)]);
+#endif
+   case otl_var_raw:
+     return OTL_RCAST(void*,&p_v[(OTL_SCAST(unsigned,ndx))*
+                                 (pelem_size+sizeof(short int))]);
+   case otl_var_varchar_long:
+   case otl_var_raw_long:
+     return OTL_RCAST(void*,p_v+sizeof(sb4));
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+   case otl_var_timestamp:
+   case otl_var_tz_timestamp:
+   case otl_var_ltz_timestamp:
+     if(!pl_tab_flag)
+       return OTL_RCAST(void*,timestamp[ndx]);
+#endif
+   default:
+    return OTL_RCAST(void*,&p_v[OTL_SCAST(unsigned,ndx)*pelem_size]);     
+   }
+ }
+
+ static int int2ext(int int_type)
+ {
+  switch(int_type){
+  case inVarChar2: return extCChar;
+  case inNumber:   return extFloat;
+  case inLong:     return extLongVarChar;
+  case inRowId:    return extCChar;
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  case inDate:     return extTimestamp;
+  case inTimestamp:return extTimestamp;
+  case inTimestamp_TZ:return extTimestamp_TZ;
+  case inTimestamp_LTZ:return extTimestamp_LTZ;
+  case inIntervalYM:return extCChar;
+  case inIntervalDS:return extCChar;
+#else
+  case inDate:     return extDate;
+#endif
+  case inRaw:      return extRaw;
+  case inLongRaw:  return extLongVarRaw;
+  case inChar:     return extCChar;
+#if defined(OTL_ORA10G)||defined(OTL_ORA10G_R2)
+#if defined(OTL_ORA_NATIVE_TYPES)
+  case inBFloat:   return extBFloat;
+  case inBDouble:  return extBDouble;
+#else
+  case inBFloat:   return extFloat;
+  case inBDouble:  return extFloat;
+#endif
+#endif
+  case inCLOB:     return extCLOB;
+  case inBLOB:     return extBLOB;
+  default:
+   return otl_unsupported_type;
+  }
+ }
+
+ static int datatype_size(int aftype,int maxsz,int int_type,int max_long_size)
+ {
+  switch(aftype){
+  case extCChar:
+   switch(int_type){
+#if defined(OTL_ORA_TIMESTAMP)
+   case inIntervalYM:
+     return 30;
+   case inIntervalDS:
+     return 30;
+#endif
+   case inRowId:
+    return 30;
+   case inDate:
+    return otl_oracle_date_size;
+   case inRaw:
+    return max_long_size;
+   default:
+    return maxsz+1;
+   }
+#if (defined(OTL_ORA10G)||defined(OTL_ORA10G_R2)) && defined(OTL_ORA_NATIVE_TYPES)
+  case extBFloat:
+  case extBDouble:
+    return sizeof(double);
+#endif
+  case extLongVarChar:
+   return max_long_size;
+  case extLongVarRaw:
+   return max_long_size;
+  case extRaw:
+   return maxsz;
+  case extCLOB:
+   return max_long_size;
+  case extBLOB:
+   return max_long_size;
+  case extFloat:
+   return sizeof(double);
+
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  case extDate:
+   return sizeof(OCIDateTime*);
+  case extTimestamp:
+  case extTimestamp_TZ:
+  case extTimestamp_LTZ:
+   return sizeof(OCIDateTime*);
+#else
+  case extDate:
+   return otl_oracle_date_size;
+#endif
+  default:
+   return 0;
+  }
+ }
+
+ static void map_ftype
+ (otl_column_desc& desc,
+  const int max_long_size,
+  int& aftype,
+  int& aelem_size,
+  otl_select_struct_override& override,
+  const int column_ndx)
+ {int ndx=override.find(column_ndx);
+  if(ndx==-1){
+   aftype=int2ext(desc.dbtype);
+   aelem_size=datatype_size
+     (aftype,
+      OTL_SCAST(int,desc.dbsize),
+      desc.dbtype,
+      max_long_size);
+   switch(aftype){
+#if (defined(OTL_ORA10G)||defined(OTL_ORA10G_R2))&&defined(OTL_ORA_NATIVE_TYPES)
+  case extBFloat:
+  case extBDouble:
+    if(override.all_mask&otl_all_num2str){
+     aftype=otl_var_char;
+     aelem_size=otl_num_str_size;
+    }else
+     aftype=otl_var_double;
+    break;
+#endif
+   case extCChar:
+    aftype=otl_var_char;
+    break;
+   case extRaw:
+    aftype=otl_var_raw;
+    break;
+   case extFloat:
+    if(override.all_mask&otl_all_num2str){
+     aftype=otl_var_char;
+     aelem_size=otl_num_str_size;
+    }else
+     aftype=otl_var_double;
+    break;
+   case extLongVarChar:
+    aftype=otl_var_varchar_long;
+    break;
+   case extLongVarRaw:
+    aftype=otl_var_raw_long;
+    break;
+   case extCLOB:
+    aftype=otl_var_clob;
+    break;
+   case extBLOB:
+    aftype=otl_var_blob;
+    break;
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+   case extDate:
+   case extTimestamp:
+    if(override.all_mask&otl_all_date2str){
+     aftype=otl_var_char;
+     aelem_size=otl_date_str_size;
+    }else
+      aftype=otl_var_timestamp;
+    break;
+   case extTimestamp_TZ:
+    if(override.all_mask&otl_all_date2str){
+     aftype=otl_var_char;
+     aelem_size=otl_date_str_size;
+    }else
+      aftype=otl_var_tz_timestamp;
+    break;
+   case extTimestamp_LTZ:
+    if(override.all_mask&otl_all_date2str){
+     aftype=otl_var_char;
+     aelem_size=otl_date_str_size;
+    }else
+      aftype=otl_var_ltz_timestamp;
+    break;
+#else
+   case extDate:
+    if(override.all_mask&otl_all_date2str){
+     aftype=otl_var_char;
+     aelem_size=otl_date_str_size;
+    }else
+     aftype=otl_var_timestamp;
+    break;
+#endif
+   }
+  }else{
+   aftype=override.col_type[ndx];
+   switch(aftype){
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+   case otl_var_nchar:
+#endif
+   case otl_var_char:
+    aelem_size=override.col_size[ndx];
+    break;
+   case otl_var_raw:
+    aelem_size=override.col_size[ndx];
+    break;
+   case otl_var_double:
+    aelem_size=sizeof(double);
+    break;
+   case otl_var_float:
+    aelem_size=sizeof(float);
+    break;
+   case otl_var_int:
+    aelem_size=sizeof(int);
+    break;
+   case otl_var_unsigned_int:
+    aelem_size=sizeof(unsigned);
+    break;
+   case otl_var_short:
+    aelem_size=sizeof(short);
+    break;
+   case otl_var_long_int:
+    aelem_size=sizeof(double);
+    break;
+   default:
+    aelem_size=override.col_size[ndx];
+    break;
+   }
+  }
+  desc.otl_var_dbtype=aftype;
+ }
+
+};
+
+class otl_cur: public otl_cur0{
+public:
+
+  OCIStmt* cda; // Statement handle
+  OCIError* errhp; // Error handle
+  bool extern_cda;
+  int status;
+  int eof_status;
+  otl_conn* db;
+  int straight_select;
+  int pos_nbr;
+  int commit_on_success;
+  int last_param_data_token;
+  int last_sql_param_data_status;
+  int sql_param_data_count;
+  bool canceled;
+  int direct_exec_flag;
+  int parse_only_flag;
+  int stm_executed;
+
+ otl_cur()
+ {
+  cda=0;
+  errhp=0;
+  db=0;
+  straight_select=1;
+  pos_nbr=0;
+  commit_on_success=0;
+  last_param_data_token=0;
+  last_sql_param_data_status=0;
+  sql_param_data_count=0;
+  extern_cda=false;
+  canceled=false;
+  direct_exec_flag=0;
+  parse_only_flag=0;
+  stm_executed=0;
+ }
+
+ virtual ~otl_cur(){}
+
+  void set_direct_exec(const int flag)
+  {
+    direct_exec_flag=flag;
+  }
+
+  void set_parse_only(const int flag)
+  {
+    parse_only_flag=flag;
+  }
+
+  ub4 rpc(void)
+  {
+    sb4 arpc;
+    status=OCIAttrGet
+      (OTL_RCAST(dvoid *,cda),
+       OTL_SCAST(ub4,OCI_HTYPE_STMT),
+       OTL_RCAST(dvoid *,&arpc),
+       0,
+       OTL_SCAST(ub4,OCI_ATTR_ROW_COUNT),
+       errhp);
+    if(status)return 0;
+    return arpc;
+  }
+
+ int open(otl_conn& connect,otl_var* var=0)
+ {
+  db=&connect;
+  commit_on_success=db->auto_commit;
+  if(var!=0){
+   extern_cda=true;
+   cda=var->cda;
+   status=OCI_SUCCESS;
+  }else{
+#if defined(__GNUC__) && (__GNUC__>=4)
+    void* temp_cda=&cda;
+#endif
+   status=OCIHandleAlloc
+    (OTL_RCAST(dvoid *,db->envhp),
+#if defined(__GNUC__) && (__GNUC__>=4)
+     OTL_RCAST(dvoid **,temp_cda),
+#else
+     OTL_RCAST(dvoid **,&cda),
+#endif
+     OCI_HTYPE_STMT,
+     0,
+     0);
+   if(status)return 0;
+  }
+#if defined(__GNUC__) && (__GNUC__>=4)
+  void* temp_errhp=&errhp;
+#endif
+  status=OCIHandleAlloc
+   (OTL_RCAST(dvoid *,db->envhp),
+#if defined(__GNUC__) && (__GNUC__>=4)
+    OTL_RCAST(dvoid **,temp_errhp),
+#else
+    OTL_RCAST(dvoid **,&errhp),
+#endif
+    OCI_HTYPE_ERROR,
+    0,
+    0);
+  if(status)return 0;
+  straight_select=1;
+  pos_nbr=0;
+  return 1;
+ }
+
+ int close(void)
+ {
+  if(!extern_cda)
+   status=OCIHandleFree(OTL_RCAST(dvoid*,cda),OCI_HTYPE_STMT);
+  status=OCIHandleFree(OTL_RCAST(dvoid*,errhp),OCI_HTYPE_ERROR);
+  cda=0;
+  errhp=0;
+  commit_on_success=0;
+  return 1;
+ }
+
+ int parse(const char* stm_text)
+ {
+   status=OCIStmtPrepare
+     (cda,
+      errhp,
+      OTL_RCAST(text*,OTL_CCAST(char*,stm_text)),
+      OTL_SCAST(ub4,strlen(stm_text)),
+      OTL_SCAST(ub4,OCI_NTV_SYNTAX),
+      OTL_SCAST(ub4,OCI_DEFAULT));
+   if(status)return 0;
+
+    if(direct_exec_flag && parse_only_flag){
+#if !defined(OCI_PARSE_ONLY)
+      status=OCIStmtExecute
+        (db->svchp,
+         cda,
+         errhp,
+         OTL_SCAST(ub4,1),
+         OTL_SCAST(ub4,0),
+         0,
+         0,
+         0x100);
+ #else
+      status=OCIStmtExecute
+        (db->svchp,
+         cda,
+         errhp,
+         OTL_SCAST(ub4,0),
+         OTL_SCAST(ub4,0),
+         0,
+         0,
+         OCI_PARSE_ONLY);
+ #endif
+      if(status)
+        return 0;
+      else
+        return 1;
+    }else if(direct_exec_flag && !parse_only_flag){
+      ub4 mode;
+      if(commit_on_success)
+        mode=OCI_COMMIT_ON_SUCCESS;
+      else
+        mode=OCI_DEFAULT;
+     
+      status=OCIStmtExecute
+        (db->svchp,
+         cda,
+         errhp,
+         OTL_SCAST(ub4,1),
+         OTL_SCAST(ub4,0),
+         0,
+         0,
+         mode);
+      stm_executed=1;
+      if(status)
+        return 0;
+      else
+        return 1;
+    }
+    return 1;
+ }
+
+ int exec(const int iters, const int rowoff)
+ {
+   if(parse_only_flag){
+     parse_only_flag=0;
+     return 1;
+   }else if(!stm_executed){
+     ub4 mode;
+     if(commit_on_success)
+       mode=OCI_COMMIT_ON_SUCCESS;
+     else
+       mode=OCI_DEFAULT;
+     status=OCIStmtExecute
+       (db->svchp,
+        cda,
+        errhp,
+        OTL_SCAST(ub4,iters),
+        OTL_SCAST(ub4,rowoff),
+        0,
+        0,
+        mode);
+     stm_executed=0;
+     if(status!=OCI_SUCCESS)
+       return 0;
+     return 1;
+   }
+   return 1;
+ }
+
+ long get_rpc()
+ {
+  return rpc();
+ }
+
+ int fetch(const otl_stream_buffer_size_type iters,int& eof_data)
+ {
+  eof_data=0;
+  status=OCIStmtFetch
+   (cda,
+    errhp,
+    OTL_SCAST(ub4,iters),
+    OTL_SCAST(ub4,OCI_FETCH_NEXT),
+    OTL_SCAST(ub4,OCI_DEFAULT));
+  eof_status=status;
+  if(status!=OCI_SUCCESS&&
+     status!=OCI_SUCCESS_WITH_INFO&&
+     status!=OCI_NO_DATA)
+   return 0;
+  if(status==OCI_NO_DATA){
+   eof_data=1;
+   return 1;
+  }
+  return 1;
+ }
+
+ int tmpl_ftype2ora_ftype(const int ftype)
+ {
+  switch(ftype){
+  case otl_var_char:
+   return extCChar;
+#if (defined(OTL_ORA10G)||defined(OTL_ORA10G_R2))&&defined(OTL_ORA_NATIVE_TYPES)
+  case otl_var_double:
+    return extBDouble;
+  case otl_var_float:
+    return extBFloat;
+#else
+  case otl_var_double:
+   return extFloat;
+  case otl_var_float:
+   return extFloat;
+#endif
+  case otl_var_int:
+   return extInt;
+  case otl_var_unsigned_int:
+   return extUInt;
+  case otl_var_short:
+   return extInt;
+  case otl_var_long_int:
+   return extInt;
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  case otl_var_timestamp:
+   return extTimestamp;
+  case otl_var_tz_timestamp:
+   return extTimestamp_TZ;
+  case otl_var_ltz_timestamp:
+   return extTimestamp_LTZ;
+#else
+  case otl_var_timestamp:
+   return extDate;
+#endif
+ case otl_var_varchar_long:
+   return extLongVarChar;
+  case otl_var_raw_long:
+   return extLongVarRaw;
+  case otl_var_raw:
+   return extRaw;
+  case otl_var_clob:
+   return SQLT_CLOB;
+  case otl_var_blob:
+   return SQLT_BLOB;
+  default:
+   return 0;
+  }
+ }
+
+ int bind
+ (const char* name,
+  otl_var& v,
+  const int elem_size,
+  const int ftype,
+  const int /*param_type*/,
+  const int /*name_pos*/,
+  const int apl_tab_flag)
+ {OCIBind* bindpp;
+
+  int db_ftype=0;
+    
+   if(ftype==otl_var_refcur){
+    status=OCIBindByName
+     (cda,
+      &bindpp,
+      errhp,
+      OTL_RCAST(text*,OTL_CCAST(char*,name)),
+      OTL_SCAST(sb4,strlen(name)),
+      OTL_RCAST(dvoid*,&v.cda),
+      0,
+      SQLT_RSET,
+      0,
+      0,
+      0,
+      0,
+      0,
+      OTL_SCAST(ub4,OCI_DEFAULT));
+   }else if(ftype!=otl_var_clob&&ftype!=otl_var_blob){
+     int var_elem_size;
+#if defined(OTL_UNICODE)
+     if(ftype==otl_var_char){
+       var_elem_size=elem_size*sizeof(OTL_WCHAR); // ###
+     }
+     else if(ftype==otl_var_varchar_long)
+      var_elem_size=elem_size;
+     else
+      var_elem_size=elem_size;
+#else
+     if(ftype==otl_var_varchar_long)
+       var_elem_size=elem_size+sizeof(sb4);
+     else
+       var_elem_size=elem_size;
+#endif
+     db_ftype=tmpl_ftype2ora_ftype(ftype);
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+     if(ftype==otl_var_timestamp || 
+        ftype==otl_var_tz_timestamp ||
+        ftype==otl_var_ltz_timestamp){
+       if(!apl_tab_flag)
+         var_elem_size=sizeof(OCIDateTime*);
+       else if(db_ftype==extTimestamp)
+         db_ftype=extDate;
+     }
+#endif
+#if defined(OTL_UNICODE)
+     if(ftype==otl_var_char)
+       db_ftype=SQLT_VCS;
+#endif
+    if(apl_tab_flag)
+     status=OCIBindByName
+      (cda,
+       &bindpp,
+       errhp,
+       OTL_RCAST(text*,OTL_CCAST(char*,name)),
+       OTL_SCAST(sb4,strlen(name)),
+       OTL_RCAST(dvoid*,v.p_v),
+       ftype==otl_var_raw?var_elem_size+sizeof(short):var_elem_size,
+       OTL_SCAST(ub2,v.charz_flag?extCharZ:db_ftype),
+       OTL_RCAST(dvoid*,v.p_ind),
+       0,
+       0,
+       OTL_SCAST(ub4,v.max_tab_len),
+       OTL_RCAST(ub4*,&v.cur_tab_len),
+       OTL_SCAST(ub4,OCI_DEFAULT));
+    else
+     status=OCIBindByName
+      (cda,
+       &bindpp,
+       errhp,
+       OTL_RCAST(text*,OTL_CCAST(char*,name)),
+       OTL_SCAST(sb4,strlen(name)),
+       OTL_RCAST(dvoid*,v.p_v),
+       ftype==otl_var_raw?var_elem_size+sizeof(short):var_elem_size,
+       OTL_SCAST(ub2,db_ftype),
+       OTL_RCAST(dvoid*,v.p_ind),
+       0,
+       0,
+       0,
+       0,
+       OTL_SCAST(ub4,OCI_DEFAULT));
+    if(status)return 0;
+#if defined(OTL_UNICODE)
+    if(ftype==otl_var_char||ftype==otl_var_varchar_long){
+      if(ftype!=otl_var_varchar_long){
+        if(v.nls_flag)
+          v.csfrm=OTL_SCAST(ub1,SQLCS_NCHAR);
+        else
+          v.csfrm=OTL_SCAST(ub1,db->char_set_);
+        status=OCIAttrSet
+          (bindpp, 
+           OCI_HTYPE_BIND, 
+           &v.csfrm, 
+           0, 
+           OTL_SCAST(ub4,OCI_ATTR_CHARSET_FORM),
+           errhp);
+        if(status)return 0;
+      }
+      v.csid=OTL_UNICODE_ID;
+      status=OCIAttrSet
+        (bindpp, 
+         OCI_HTYPE_BIND, 
+         &v.csid, 
+         0, 
+         OCI_ATTR_CHARSET_ID,
+         errhp);
+      if(status)return 0;
+      if(ftype==otl_var_varchar_long)
+        v.unicode_var_len=elem_size-sizeof(sb4);
+      else{
+#if defined(OTL_ORA_MAX_UNICODE_VARCHAR_SIZE)
+        if(var_elem_size>OTL_ORA_MAX_UNICODE_VARCHAR_SIZE)
+          v.unicode_var_len=OTL_ORA_MAX_UNICODE_VARCHAR_SIZE;
+        else
+          v.unicode_var_len=var_elem_size;
+#else
+        v.unicode_var_len=var_elem_size;
+#endif
+      }
+      status=OCIAttrSet
+        (bindpp, 
+         OCI_HTYPE_BIND, 
+         &v.unicode_var_len, 
+         0, 
+         OCI_ATTR_MAXDATA_SIZE, 
+         errhp);
+      if(status)return 0;
+    }
+#endif
+
+#if defined(OTL_ORA_UTF8)
+    if(ftype==otl_var_char){
+      if(v.nls_flag)
+        v.csfrm=OTL_SCAST(ub1,SQLCS_NCHAR);
+      else
+        v.csfrm=OTL_SCAST(ub1,db->char_set_);
+      status=OCIAttrSet
+        (bindpp, 
+         OCI_HTYPE_BIND, 
+         &v.csfrm, 
+         0, 
+         OTL_SCAST(ub4,OCI_ATTR_CHARSET_FORM),
+         errhp);
+      if(status)return 0;
+    }
+#endif
+
+    return 1;
+   }else{
+    status=OCIBindByName
+     (cda,
+      &bindpp,
+      errhp,
+      OTL_RCAST(text*,OTL_CCAST(char*,name)),
+      OTL_SCAST(sb4,strlen(name)),
+      OTL_RCAST(dvoid*,v.p_v),
+      OTL_SCAST(sb4,-1),
+      OTL_SCAST(ub2,tmpl_ftype2ora_ftype(ftype)),
+      OTL_RCAST(dvoid*,v.p_ind),
+      0,
+      0,
+      0,
+      0,
+     OTL_SCAST(ub4,OCI_DEFAULT));
+    if(status)return 0;
+#if defined(OTL_UNICODE)
+    if(ftype==otl_var_clob){
+      v.csid=OTL_UNICODE_ID;
+      status=OCIAttrSet
+        (bindpp, 
+         OCI_HTYPE_BIND, 
+         &v.csid, 
+         0, 
+         OCI_ATTR_CHARSET_ID,
+         errhp);
+      if(status)return 0;
+      if(v.nls_flag)
+        v.csfrm=OTL_SCAST(ub1,SQLCS_NCHAR);
+      else
+        v.csfrm=OTL_SCAST(ub1,db->char_set_);
+      status=OCIAttrSet
+        (bindpp, 
+         OCI_HTYPE_BIND, 
+         &v.csfrm, 
+         0, 
+         OTL_SCAST(ub4,OCI_ATTR_CHARSET_FORM),
+         errhp);
+      if(status)return 0;
+    }
+#endif
+
+#if defined(OTL_ORA_UTF8)
+    if(ftype==otl_var_clob){
+      if(v.nls_flag)
+        v.csfrm=OTL_SCAST(ub1,SQLCS_NCHAR);
+      else
+        v.csfrm=OTL_SCAST(ub1,db->char_set_);
+      status=OCIAttrSet
+        (bindpp, 
+         OCI_HTYPE_BIND, 
+         &v.csfrm, 
+         0, 
+         OTL_SCAST(ub4,OCI_ATTR_CHARSET_FORM),
+         errhp);
+      if(status)return 0;
+    }
+#endif
+    return 1;
+   }
+  if(status)return 0;
+  return 1;
+
+ }
+
+ int bind
+ (const int column_num,
+  otl_var& v,
+  const int elem_size,
+  const int ftype,
+  const int /*param_type*/)
+ {OCIDefine *defnp;
+  int db_ftype=0;
+
+  if(ftype!=otl_var_clob&&ftype!=otl_var_blob){
+    int var_elem_size;
+#if defined(OTL_UNICODE)
+    if(ftype==otl_var_char)
+     var_elem_size=elem_size*sizeof(OTL_WCHAR);
+    else if(ftype==otl_var_varchar_long)
+     var_elem_size=elem_size+sizeof(sb4);
+    else
+     var_elem_size=elem_size;
+#else
+    if(ftype==otl_var_varchar_long)
+      var_elem_size=elem_size+sizeof(sb4);
+    else
+      var_elem_size=elem_size;
+#endif
+    db_ftype=tmpl_ftype2ora_ftype(ftype);
+#if defined(OTL_UNICODE)
+     if(ftype==otl_var_char)
+       db_ftype=SQLT_VCS;
+#endif
+   status=OCIDefineByPos
+    (cda,
+     &defnp,
+     errhp,
+     OTL_SCAST(ub4,column_num),
+     OTL_RCAST(dvoid*,v.p_v),
+     OTL_SCAST(sb4,ftype==otl_var_raw?var_elem_size+sizeof(short):var_elem_size),
+     OTL_SCAST(ub2,db_ftype),
+     OTL_RCAST(dvoid*,v.p_ind),
+     OTL_RCAST(ub2*,v.p_rlen),
+     OTL_RCAST(ub2*,v.p_rcode),
+     OCI_DEFAULT);
+   if(status)return 0;
+
+#if defined(OTL_ORA_UTF8)
+   if(ftype==otl_var_char||ftype==otl_var_varchar_long){
+     if(v.nls_flag)
+       v.csfrm=OTL_SCAST(ub1,SQLCS_NCHAR);
+     else
+       v.csfrm=OTL_SCAST(ub1,db->char_set_);
+     status=OCIAttrSet
+       (defnp, 
+        OCI_HTYPE_DEFINE, 
+        OTL_RCAST(void*,&v.csfrm), 
+        OTL_SCAST(ub4,0),
+        OTL_SCAST(ub4,OCI_ATTR_CHARSET_FORM), 
+        errhp); 
+     if(status)return 0;
+   }
+#endif
+
+#if defined(OTL_UNICODE)
+   if(ftype==otl_var_char||ftype==otl_var_varchar_long){
+     if(v.nls_flag)
+       v.csfrm=OTL_SCAST(ub1,SQLCS_NCHAR);
+     else
+       v.csfrm=OTL_SCAST(ub1,db->char_set_);
+     status=OCIAttrSet
+       (defnp, 
+        OCI_HTYPE_DEFINE, 
+        OTL_RCAST(void*,&v.csfrm), 
+        OTL_SCAST(ub4,0),
+        OTL_SCAST(ub4,OCI_ATTR_CHARSET_FORM), 
+        errhp); 
+     if(status)return 0;
+     v.csid=OTL_UNICODE_ID;
+     status=OCIAttrSet
+       (defnp, 
+        OCI_HTYPE_DEFINE, 
+        &v.csid, 
+        0, 
+        OCI_ATTR_CHARSET_ID, 
+        errhp);
+     if(status)return 0;
+   }
+#endif
+   return 1;
+  }else{
+   status=OCIDefineByPos
+    (cda,
+     &defnp,
+     errhp,
+     OTL_SCAST(ub4,column_num),
+     OTL_RCAST(dvoid*,v.p_v),
+     OTL_SCAST(sb4,-1),
+     OTL_SCAST(ub2,tmpl_ftype2ora_ftype(ftype)),
+     OTL_RCAST(dvoid*,v.p_ind),
+     OTL_RCAST(ub2*,v.p_rlen),
+     OTL_RCAST(ub2*,v.p_rcode),
+     OCI_DEFAULT);
+   if(status)return 0;
+#if defined(OTL_UNICODE)
+   if(ftype==otl_var_char||ftype==otl_var_varchar_long){
+     v.csid=OTL_UNICODE_ID;
+     status=OCIAttrSet
+       (defnp, 
+        OCI_HTYPE_DEFINE, 
+        &v.csid, 
+        0, 
+        OCI_ATTR_CHARSET_ID, 
+        errhp);
+     if(status)return 0;
+   }
+#endif
+#if defined(OTL_ORA_UTF8)
+   if(ftype==otl_var_clob){
+     if(v.nls_flag)
+       v.csfrm=OTL_SCAST(ub1,SQLCS_NCHAR);
+     else
+       v.csfrm=OTL_SCAST(ub1,db->char_set_);
+     status=OCIAttrSet
+       (defnp, 
+        OCI_HTYPE_DEFINE, 
+        OTL_RCAST(void*,&v.csfrm), 
+        OTL_SCAST(ub4,0),
+        OTL_SCAST(ub4,OCI_ATTR_CHARSET_FORM), 
+        errhp); 
+     if(status)return 0;
+   }
+#endif
+
+   return 1;
+  }
+ }
+
+ void set_select_type(const int select_type)
+ {
+  straight_select=select_type;
+ }
+
+ int describe_column
+ (otl_column_desc& col,
+  const int column_num,
+  int& eof_desc)
+ {
+  OCIParam* pard;
+  ub2 dtype;
+  ub2 dbsize;
+  sb2 prec;
+
+#if defined(OTL_ORA8_8I_DESC_COLUMN_SCALE)
+  ub1 scale;
+#else
+  sb2 scale;
+#endif
+
+  ub1 nullok;
+  text* col_name;
+  ub4 col_name_len;
+  ub4 pos_num;
+
+  eof_desc=0;
+  if(straight_select&&pos_nbr==0){
+   status=OCIStmtExecute
+    (db->svchp,
+     cda,
+     errhp,
+     0,
+     0,
+     0,
+     0,
+     OCI_DESCRIBE_ONLY);
+   if(status!=OCI_SUCCESS)return 0;
+   status=OCIAttrGet
+    (cda,
+     OCI_HTYPE_STMT,
+     OTL_RCAST(ub4*,&pos_num),
+     0,
+     OTL_SCAST(ub4,OCI_ATTR_PARAM_COUNT),
+     errhp);
+   if(status!=OCI_SUCCESS)return 0;
+   pos_nbr=OTL_SCAST(int,pos_num);
+  }
+  if(!straight_select&&pos_nbr==0){
+   status=OCIAttrGet
+    (cda,
+     OCI_HTYPE_STMT,
+     OTL_RCAST(ub4*,&pos_num),
+     0,
+     OTL_SCAST(ub4,OCI_ATTR_PARAM_COUNT),
+     errhp);
+   if(status!=OCI_SUCCESS)return 0;
+   pos_nbr=OTL_SCAST(int,pos_num);
+  }
+  if(column_num<1||column_num>pos_nbr){
+   eof_desc=1;
+   return 0;
+  }
+#if defined(__GNUC__) && (__GNUC__>=4)
+  void* temp_pard=&pard;
+#endif
+  status=OCIParamGet
+   (cda,
+    OCI_HTYPE_STMT,
+    errhp,
+#if defined(__GNUC__) && (__GNUC__>=4)
+    OTL_RCAST(void**,temp_pard),
+#else
+    OTL_RCAST(void**,&pard),
+#endif
+    OTL_SCAST(ub4,column_num));
+  if(status!=OCI_SUCCESS&&status!=OCI_NO_DATA)
+   return 0;
+  if(status==OCI_NO_DATA){
+   eof_desc=1;
+   return 1;
+  }
+  status=OCIAttrGet
+   (OTL_RCAST(dvoid*,pard),
+    OTL_SCAST(ub4,OCI_DTYPE_PARAM),
+    OTL_RCAST(dvoid*,&dtype),
+    0,
+    OTL_SCAST(ub4,OCI_ATTR_DATA_TYPE),
+    OTL_RCAST(OCIError*,errhp));
+  if(status!=OCI_SUCCESS)return 0;
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+#if !defined(OTL_ORA8I)
+  ub1 charset_form;
+  status=OCIAttrGet
+   (OTL_RCAST(dvoid*,pard),
+    OTL_SCAST(ub4,OCI_DTYPE_PARAM),
+    OTL_RCAST(dvoid*,&charset_form),
+    0,
+    OTL_SCAST(ub4,OCI_ATTR_CHARSET_FORM),
+    OTL_RCAST(OCIError*,errhp));
+  if(status!=OCI_SUCCESS)return 0;
+  col.charset_form=OTL_SCAST(int,charset_form);
+  ub2 char_size;
+  status=OCIAttrGet
+   (OTL_RCAST(dvoid*,pard),
+    OTL_SCAST(ub4,OCI_DTYPE_PARAM),
+    OTL_RCAST(dvoid*,&char_size),
+    0,
+    OTL_SCAST(ub4,OCI_ATTR_CHAR_SIZE),
+    OTL_RCAST(OCIError*,errhp));
+  if(status!=OCI_SUCCESS)return 0;
+  col.char_size=OTL_SCAST(int,char_size);
+#else
+  col.char_size=0;
+#endif
+#endif
+  col.dbtype=dtype;
+#if defined(__GNUC__) && (__GNUC__>=4)
+  void* temp_col_name=&col_name;
+#endif
+  status=OCIAttrGet
+   (OTL_RCAST(dvoid*,pard),
+    OTL_SCAST(ub4,OCI_DTYPE_PARAM),
+#if defined(__GNUC__) && (__GNUC__>=4)
+    OTL_RCAST(dvoid**,temp_col_name),
+#else
+    OTL_RCAST(dvoid**,&col_name),
+#endif
+    OTL_RCAST(ub4*,&col_name_len),
+    OTL_SCAST(ub4,OCI_ATTR_NAME),
+    OTL_RCAST(OCIError*,errhp));
+  if(status!=OCI_SUCCESS)return 0;
+  col.set_name(OTL_RCAST(char*,col_name),col_name_len);
+  status=OCIAttrGet
+   (OTL_RCAST(dvoid*,pard),
+    OTL_SCAST(ub4,OCI_DTYPE_PARAM),
+    OTL_RCAST(dvoid*,&dbsize),
+    OTL_RCAST(ub4*,0),
+    OTL_SCAST(ub4,OCI_ATTR_DATA_SIZE),
+    OTL_RCAST(OCIError*,errhp));
+  if(status!=OCI_SUCCESS)return 0;
+  col.dbsize=dbsize;
+  status=OCIAttrGet
+   (OTL_RCAST(dvoid*,pard),
+    OTL_SCAST(ub4,OCI_DTYPE_PARAM),
+    OTL_RCAST(dvoid*,&prec),
+    0,
+    OTL_SCAST(ub4,OCI_ATTR_PRECISION),
+    OTL_RCAST(OCIError*,errhp));
+  if(status!=OCI_SUCCESS)return 0;
+  col.prec=prec;
+  status=OCIAttrGet
+   (OTL_RCAST(dvoid*,pard),
+    OTL_SCAST(ub4,OCI_DTYPE_PARAM),
+    OTL_RCAST(dvoid*,&scale),
+    0,
+    OTL_SCAST(ub4,OCI_ATTR_SCALE),
+    OTL_RCAST(OCIError*,errhp));
+  if(status!=OCI_SUCCESS)return 0;
+  col.scale=scale;
+  status=OCIAttrGet
+   (OTL_RCAST(dvoid*,pard),
+    OTL_SCAST(ub4,OCI_DTYPE_PARAM),
+    OTL_RCAST(dvoid*,&nullok),
+    0,
+    OTL_SCAST(ub4,OCI_ATTR_IS_NULL),
+    OTL_RCAST(OCIError*,errhp));
+  if(status!=OCI_SUCCESS)return 0;
+  col.nullok=nullok;
+  return 1;
+ }
+
+ void error(otl_exc& exception_struct)
+ {sb4 errcode;
+  size_t len;
+
+  OTL_STRCPY_S(OTL_RCAST(char*,exception_struct.msg),
+               sizeof(exception_struct.msg),
+               "123456789");
+  OCIErrorGet
+   (OTL_RCAST(dvoid*,errhp),
+    OTL_SCAST(ub4,1),
+    0,
+    &errcode,
+    OTL_RCAST(text*,exception_struct.msg),
+    OTL_SCAST(ub4,sizeof(exception_struct.msg)),
+    OCI_HTYPE_ERROR);
+  exception_struct.code=errcode;
+  len=strlen(OTL_RCAST(char*,exception_struct.msg));
+  exception_struct.msg[len]=0;
+#if defined(OTL_EXCEPTION_ENABLE_ERROR_OFFSET)
+  ub2 error_offset;
+  if(OCIAttrGet
+     (cda,
+      OCI_HTYPE_STMT,
+      OTL_RCAST(ub2*,&error_offset),
+      0,
+      OTL_SCAST(ub4,OCI_ATTR_PARSE_ERROR_OFFSET),
+      errhp)==OCI_SUCCESS)
+    exception_struct.error_offset=OTL_SCAST(int,error_offset);
+#endif
+ }
+
+};
+
+class otl_sel{
+public:
+
+ int implicit_cursor;
+
+  void set_prefetch_size(const int /*aprefetch_array_size*/)
+  {
+  }
+
+ int close_select(otl_cur& /*cur*/)
+ {
+  int i=1;
+  return i;
+ }
+
+ otl_sel()
+ {
+  implicit_cursor=0;
+ }
+
+ virtual ~otl_sel(){}
+
+  void set_select_type(const int /*atype*/)
+ {
+  implicit_cursor=0;
+ }
+
+  void init(const int /*array_size*/){}
+
+ int first
+ (otl_cur& cur,
+  int& cur_row,
+  int& cur_size,
+  int& row_count,
+  int& eof_data,
+  const int array_size)
+ {int rc;
+  eof_data=0;
+  cur_row=-1;
+  cur.commit_on_success=0;
+  rc=cur.exec(0,0);
+  if(rc==0)return 0;
+  rc=cur.fetch(OTL_SCAST(otl_stream_buffer_size_type,array_size),eof_data);
+  if(rc==0)return 0;
+  row_count=cur.rpc();
+  cur_size=row_count;
+  if(cur_size!=0)cur_row=0;
+  return 1;
+ }
+
+ int next
+ (otl_cur& cur,
+  int& cur_row,
+  int& cur_size,
+  int& row_count,
+  int& eof_data,
+  const int array_size)
+ {int rc;
+  if(cur_row<cur_size-1){
+   ++cur_row;
+   return 1;
+  }else{
+   if(eof_data){
+    cur_row=-1;
+    cur_size=0;
+    return 1;
+   }
+   cur.commit_on_success=0;
+   rc=cur.fetch(OTL_SCAST(otl_stream_buffer_size_type,array_size),eof_data);
+   if(rc==0)return 0;
+   int temp_rpc=cur.rpc();
+   cur_size=temp_rpc-row_count;
+   row_count=temp_rpc;
+   if(cur_size!=0)cur_row=0;
+   return 1;
+  }
+ }
+
+
+};
+
+
+typedef otl_tmpl_connect
+  <otl_exc,
+   otl_conn,
+   otl_cur> otl_ora8_connect;
+
+
+typedef otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var> otl_cursor;
+
+template <OTL_TYPE_NAME TExceptionStruct,
+          OTL_TYPE_NAME TConnectStruct,
+          OTL_TYPE_NAME TCursorStruct,
+          OTL_TYPE_NAME TVariableStruct>
+class otl_tmpl_lob_stream: public otl_lob_stream_generic{
+public:
+
+  typedef otl_tmpl_exception
+  <TExceptionStruct,
+   TConnectStruct,
+   TCursorStruct> otl_exception;
+
+ typedef otl_tmpl_variable<TVariableStruct>* p_bind_var;
+ typedef otl_tmpl_connect
+         <TExceptionStruct,
+         TConnectStruct,
+         TCursorStruct>* p_connect;
+
+ typedef otl_tmpl_cursor
+         <TExceptionStruct,
+          TConnectStruct,
+          TCursorStruct,
+          TVariableStruct>* p_cursor;
+
+ p_bind_var bind_var;
+ p_connect connect;
+ p_cursor cursor;
+ otl_long_string* temp_buf;
+ char* temp_char_buf;
+
+ void init
+ (void* avar,void* aconnect,void* acursor,
+  int andx,
+  int amode,
+  const int alob_is_null=0) OTL_NO_THROW
+ {
+  connect=OTL_RCAST(p_connect,aconnect);
+  bind_var=OTL_RCAST(p_bind_var,avar);
+  cursor=OTL_RCAST(p_cursor,acursor);
+  mode=amode;
+  retcode=0;
+  lob_is_null=alob_is_null;
+  ndx=andx;
+  offset=0;
+  if(amode==otl_lob_stream_write_mode)
+    lob_len=2147483647;
+  else
+    lob_len=0;
+  eof_flag=0;
+  in_destructor=0;
+  if(bind_var)
+   bind_var->var_struct.set_lob_stream_flag();
+ }
+
+ void set_len(const int new_len=0) OTL_NO_THROW
+ {
+  lob_len=new_len;
+ }
+
+ otl_tmpl_lob_stream() OTL_NO_THROW
+   : otl_lob_stream_generic(true)
+ {
+  temp_buf=0;
+  temp_char_buf=0;
+  init(0,0,0,0,otl_lob_stream_zero_mode);
+ }
+
+  virtual ~otl_tmpl_lob_stream()
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+    OTL_THROWS_OTL_EXCEPTION
+#endif
+ {
+   in_destructor=1;
+   if(temp_buf){
+     delete temp_buf;
+     temp_buf=0;
+   }
+   if(temp_char_buf){
+     delete[] temp_char_buf;
+     temp_char_buf=0;
+   }
+#if defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   try{
+     close();
+   }catch(otl_exception&){
+   }
+#else
+   close();
+#endif
+ }
+
+#if (defined(OTL_STL) || defined(OTL_ACE) || \
+     defined(OTL_USER_DEFINED_STRING_CLASS_ON)) && !defined(OTL_UNICODE)
+  otl_lob_stream_generic& operator<<(const OTL_STRING_CONTAINER& s)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    otl_long_string temp_s(s.c_str(),                  
+                           OTL_SCAST(int,s.length()),
+                           OTL_SCAST(int,s.length()));
+    (*this)<<temp_s;
+    return *this;
+  }
+
+  void setStringBuffer(const int chunk_size)
+  {
+    delete[] temp_char_buf;
+    temp_char_buf=0;
+    delete temp_buf;
+    temp_buf=0;
+    temp_char_buf=new char[chunk_size+1];
+    temp_buf=new otl_long_string(temp_char_buf,chunk_size);
+  }
+
+  otl_lob_stream_generic& operator>>(OTL_STRING_CONTAINER& s)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    const int TEMP_BUF_SIZE=4096;
+    if(!temp_char_buf)temp_char_buf=new char[TEMP_BUF_SIZE];
+    if(!temp_buf)temp_buf=new otl_long_string(temp_char_buf,TEMP_BUF_SIZE-1);
+    int iters=0;
+    while(!this->eof()){
+      ++iters;
+      (*this)>>(*temp_buf);
+      temp_char_buf[temp_buf->len()]=0;
+      if(iters>1)
+        s+=temp_char_buf;
+      else
+        s=temp_char_buf;
+    }
+    return *this;
+  }
+#endif
+
+
+ otl_lob_stream_generic& operator<<(const otl_long_string& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  if(mode!=otl_lob_stream_write_mode){
+   char* stm=0;
+   char var_info[256];
+   var_info[0]=0;
+   if(cursor!=0){
+     if(cursor->stm_label)
+       stm=cursor->stm_label;
+     else
+       stm=cursor->stm_text;
+   }
+   if(bind_var!=0){
+    otl_var_info_var
+     (bind_var->name,
+      bind_var->ftype,
+      otl_var_long_string,
+      var_info,
+      sizeof(var_info));
+   }
+   char* vinfo=0;
+   if(var_info[0]!=0)
+    vinfo=&var_info[0];
+   if(this->connect)this->connect->throw_count++;
+   if(this->connect&&this->connect->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return *this; 
+#endif
+   throw otl_tmpl_exception
+    <TExceptionStruct,
+     TConnectStruct,
+     TCursorStruct>
+     (otl_error_msg_9,
+      otl_error_code_9,
+      stm,
+      vinfo);
+  }
+  if(offset==0)offset=1; 
+  if((offset-1)+s.length>lob_len){
+   char var_info[256];
+   otl_var_info_var
+    (bind_var->name,
+     bind_var->ftype,
+     otl_var_long_string,
+     var_info,
+     sizeof(var_info));
+   if(this->connect)this->connect->throw_count++;
+   if(this->connect&&this->connect->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return *this; 
+#endif
+   throw otl_tmpl_exception
+    <TExceptionStruct,
+     TConnectStruct,
+     TCursorStruct>
+    (otl_error_msg_7,
+     otl_error_code_7,
+     cursor->stm_label?cursor->stm_label:
+     cursor->stm_text,
+     var_info);
+  }
+  if(s.this_is_last_piece_)
+    lob_len=(offset+s.length-1);
+  retcode=bind_var->var_struct.write_blob
+   (s,lob_len,offset,cursor->cursor_struct);
+  if(retcode){
+   if((offset-1)==lob_len)
+    close();
+   return *this;
+  }
+  if(this->connect)this->connect->throw_count++;
+  if(this->connect&&this->connect->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return *this; 
+#endif
+  throw otl_tmpl_exception
+    <TExceptionStruct,
+     TConnectStruct,
+     TCursorStruct>(connect->connect_struct,
+                    cursor->stm_label?cursor->stm_label:
+                    cursor->stm_text);
+ }
+
+ otl_lob_stream_generic& operator>>(otl_long_string& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  if(mode!=otl_lob_stream_read_mode){
+   char* stm=0;
+   char var_info[256];
+   var_info[0]=0;
+   if(cursor!=0){
+     if(cursor->stm_label)
+       stm=cursor->stm_label;
+     else
+       stm=cursor->stm_text;
+   }
+   if(bind_var!=0){
+    otl_var_info_var
+     (bind_var->name,
+      bind_var->ftype,
+      otl_var_long_string,
+      var_info,
+      sizeof(var_info));
+   }
+   char* vinfo=0;
+   if(var_info[0]!=0)
+    vinfo=&var_info[0];
+   if(this->connect)this->connect->throw_count++;
+   if(this->connect&&this->connect->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return *this; 
+#endif
+   throw otl_tmpl_exception
+    <TExceptionStruct,
+     TConnectStruct,
+     TCursorStruct>
+    (otl_error_msg_10,
+     otl_error_code_10,
+     stm,
+     vinfo);
+  }
+  if(offset==0&&lob_len==0)
+   lob_len=len();
+  if(lob_len==0||(offset-1)==lob_len){
+   s.set_len(0);
+   eof_flag=1;
+   return *this;
+  }
+  if(offset==0)offset=1;
+  retcode=bind_var->var_struct.read_blob(s,ndx,offset,lob_len);
+  if((offset-1)==lob_len)eof_flag=1;
+  if(retcode){
+   if(eof()){
+    close();
+    eof_flag=1;
+   }
+   return *this;
+  }
+  if(this->connect)this->connect->throw_count++;
+  if(this->connect&&this->connect->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return *this; 
+#endif
+  throw otl_tmpl_exception
+    <TExceptionStruct,
+     TConnectStruct,
+     TCursorStruct>(connect->connect_struct,
+                    cursor->stm_label?cursor->stm_label:
+                    cursor->stm_text);
+ }
+
+ int eof(void) OTL_NO_THROW
+ {
+  if(lob_is_null)return 1;
+  return eof_flag;
+ }
+
+ bool is_initialized(void) OTL_THROWS_OTL_EXCEPTION
+ {
+  if(cursor==0||connect==0||bind_var==0||lob_is_null)return false;
+  int is_init=0;
+  retcode=bind_var->var_struct.is_blob_initialized(ndx,is_init);
+  if(retcode) return is_init!=0;
+  if(this->connect)this->connect->throw_count++;
+  if(this->connect&&this->connect->throw_count>1)return false;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return false; 
+#endif
+  throw OTL_TMPL_EXCEPTION
+    (connect->connect_struct,
+     cursor->stm_label?cursor->stm_label:
+     cursor->stm_text);
+ }
+
+ int len(void) OTL_THROWS_OTL_EXCEPTION
+ {
+  if(cursor==0||connect==0||bind_var==0||lob_is_null)return 0;
+  int alen;
+  retcode=bind_var->var_struct.get_blob_len(ndx,alen);
+  if(retcode)return alen;
+  if(this->connect)this->connect->throw_count++;
+  if(this->connect&&this->connect->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return 0; 
+#endif
+  throw otl_tmpl_exception
+    <TExceptionStruct,
+     TConnectStruct,
+     TCursorStruct>(connect->connect_struct,
+                    cursor->stm_label?cursor->stm_label:
+                    cursor->stm_text);
+ }
+
+ void close(void) OTL_THROWS_OTL_EXCEPTION
+ {
+  if(in_destructor){
+   if(mode==otl_lob_stream_read_mode){
+    bind_var->var_struct.set_lob_stream_flag(0);
+    bind_var->set_not_null(0);
+   }
+   return;
+  }
+  if(mode==otl_lob_stream_zero_mode)return;
+  if(mode==otl_lob_stream_read_mode){
+    if(offset<lob_len-1)
+      bind_var->var_struct.close_lob();
+    bind_var->var_struct.set_lob_stream_flag(0);
+    bind_var->set_not_null(0);
+    init(0,0,0,0,otl_lob_stream_zero_mode);
+  }else{
+   // write mode
+   if(!(offset==0&&lob_len==0)&&(offset-1)!=lob_len){
+     bind_var->var_struct.close_lob();     
+     char var_info[256];
+     char msg_buf[1024];
+     OTL_STRCPY_S(msg_buf,sizeof(msg_buf),otl_error_msg_8);
+     otl_var_info_var
+       (bind_var->name,
+        bind_var->ftype,
+        otl_var_long_string,
+        var_info,
+        sizeof(var_info));
+     if(this->connect)this->connect->throw_count++;
+     if(this->connect&&this->connect->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return; 
+#endif
+     throw otl_tmpl_exception
+       <TExceptionStruct,
+       TConnectStruct,
+       TCursorStruct>
+       (msg_buf,
+        otl_error_code_8,
+        cursor->stm_label?cursor->stm_label:
+        cursor->stm_text,
+        var_info);
+   }
+   bind_var->var_struct.set_lob_stream_flag(0);
+   bind_var->set_not_null(0);
+  }
+ }
+
+};
+
+
+typedef otl_tmpl_lob_stream
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var> otl_lob_stream;
+
+typedef otl_tmpl_exception
+  <otl_exc,
+   otl_conn,
+   otl_cur> otl_exception;
+
+typedef otl_tmpl_inout_stream
+ <otl_exc,
+  otl_conn,
+  otl_cur,
+  otl_var,
+  otl_time0> otl_ora8_inout_stream;
+
+typedef otl_tmpl_select_stream
+ <otl_exc,
+  otl_conn,
+  otl_cur,
+  otl_var,
+  otl_sel,
+  otl_time0> otl_select_stream;
+
+
+typedef otl_tmpl_ext_hv_decl
+ <otl_var,
+  otl_time0,
+  otl_exc,
+  otl_conn,
+  otl_cur> otl_ext_hv_decl;
+
+const int otl_no_stream_type=0;
+const int otl_inout_stream_type=1;
+const int otl_refcur_stream_type=2;
+const int otl_select_stream_type=3;
+const int otl_constant_sql_type=4;
+
+class otl_connect: public otl_ora8_connect{
+public:
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+ otl_stream_pool sc;
+
+ void set_stream_pool_size(const int max_size=otl_max_default_pool_size)
+ {
+  sc.init(max_size);
+ }
+
+#endif
+
+public:
+
+  long direct_exec
+  (const char* sqlstm,
+   const int exception_enabled=1)
+   OTL_THROWS_OTL_EXCEPTION
+  {
+    return otl_cursor::direct_exec(*this,sqlstm,exception_enabled);
+  }
+
+  void syntax_check(const char* sqlstm)
+   OTL_THROWS_OTL_EXCEPTION
+  {
+    otl_cursor::syntax_check(*this,sqlstm);
+  }
+
+ otl_connect() OTL_NO_THROW
+   : otl_ora8_connect()
+  {
+    cmd_=0;
+  }
+
+#if defined(OTL_ORA_OCI_ENV_CREATE)
+  void set_connect_mode(bool threaded_mode=false)
+  {
+    connect_struct.threaded_mode=threaded_mode;
+  }
+#endif
+
+#if defined(OTL_UNICODE) || defined(OTL_ORA_UTF8)
+ void set_character_set(const int char_set=SQLCS_IMPLICIT)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  connect_struct.set_char_set(char_set);
+ }
+#endif 
+
+ otl_connect(const char* connect_str, 
+             const int aauto_commit=0
+#if defined(OTL_ORA_OCI_ENV_CREATE)
+             ,bool threaded_mode=false
+#endif
+            )
+   OTL_THROWS_OTL_EXCEPTION
+  : otl_ora8_connect()
+  {
+    cmd_=0;
+#if defined(OTL_ORA_OCI_ENV_CREATE)
+    set_connect_mode(threaded_mode);
+#endif
+    rlogon(connect_str,aauto_commit);
+  }
+
+ virtual ~otl_connect() 
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   OTL_THROWS_OTL_EXCEPTION
+#endif
+  {
+    if(cmd_){
+      delete[] cmd_;
+      cmd_=0;
+    }
+#if defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+    try{
+      logoff();
+    }catch(otl_exception&){
+    }
+#else
+    logoff();
+#endif
+  }
+
+  const char* getCmd(void) const
+  {
+    return cmd_;
+  }
+
+  otl_connect& operator<<(const char* cmd)
+  {
+    if(!connected){
+      this->rlogon(cmd);
+    }else{
+      otl_cursor::direct_exec(*this,cmd);
+    }
+    return *this;
+  }
+
+  otl_connect& operator<<=(const char* cmd)
+  {
+    if(cmd_){
+      delete[] cmd_;
+      cmd_=0;
+    }
+    size_t cmd_len=strlen(cmd);
+    cmd_=new char[cmd_len+1];
+    OTL_STRCPY_S(cmd_,cmd_len+1,cmd);
+    return *this;
+  }
+
+ static int otl_terminate(void)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+#if defined(OTL_ORA8)&&!defined(OTL_ORA8I)&&!defined(OTL_ORA9I)
+   return 1;
+#else
+  return OCITerminate(OCI_DEFAULT)==OCI_SUCCESS;
+#endif
+ }
+
+ void cancel(void)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  if(!connected)return;
+  retcode=connect_struct.cancel();
+  if(!retcode){
+   throw_count++;
+   if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw otl_exception(connect_struct);
+  }
+ }
+
+#if defined(OTL_ORA10G_R2)
+ void commit_nowait(void)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  if(!connected)return;
+  retcode=connect_struct.commit_nowait();
+  if(!retcode){
+   throw_count++;
+   if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw otl_exception(connect_struct);
+  }
+ }
+#endif
+
+#if defined(OTL_ORA8I) || defined(OTL_ORA9I)
+  void change_password
+  (const char* user_name,
+   const char* old_password,
+   const char* new_password)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    throw_count=0;
+    retcode=connect_struct.change_password
+      (user_name,
+       old_password,
+       new_password);
+    if(!retcode){
+      throw_count++;
+      if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+      if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+        uncaught_exception())return; 
+#endif
+      throw otl_exception(connect_struct);
+    }
+  }
+#endif
+
+  void auto_commit_off(void)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    otl_ora8_connect::auto_commit_off();
+  }
+
+  void auto_commit_on(void)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    otl_ora8_connect::auto_commit_on();
+  }
+
+ void rlogon(OCIEnv *envhp,OCISvcCtx *svchp)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   if(this->connected){
+     throw otl_exception(otl_error_msg_30,otl_error_code_30);
+   }
+   if(cmd_){
+     delete[] cmd_;
+     cmd_=0;
+   }
+   connected=0;
+   long_max_size=32760;
+   retcode=connect_struct.ext_logon(envhp,svchp,0);
+   if(retcode)
+     connected=1;
+   else{
+     connected=0;
+     throw_count++;
+     if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return; 
+#endif
+     throw otl_exception(connect_struct);
+   }
+ }
+
+ void rlogon(const char* connect_str, 
+             const int aauto_commit=0,
+             const char* xa_server_external_name=0,
+             const char* xa_server_internal_name=0
+#if defined(OTL_ORA_OCI_ENV_CREATE)
+             ,bool threaded_mode=false
+#endif
+            )
+   OTL_THROWS_OTL_EXCEPTION
+ {
+    if(this->connected){
+     throw otl_exception(otl_error_msg_30,otl_error_code_30);
+    }
+   if(cmd_){
+     delete[] cmd_;
+     cmd_=0;
+   }
+   if(xa_server_external_name!=0 && xa_server_internal_name!=0){
+     connect_struct.set_xa_server_external_name
+       (xa_server_external_name);
+     connect_struct.set_xa_server_internal_name
+       (xa_server_internal_name);
+   }
+#if defined(OTL_ORA_OCI_ENV_CREATE)
+   set_connect_mode(threaded_mode);
+#endif
+   otl_ora8_connect::rlogon(connect_str,aauto_commit);
+   if(connect_struct.last_status==OCI_SUCCESS_WITH_INFO){
+     otl_exception ex(connect_struct);
+     if(ex.code!=0){
+       ++throw_count;
+       if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+       if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+         uncaught_exception())return; 
+#endif
+       throw ex;
+     }
+   }
+ }
+
+ void logoff(void)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+  if(connected)
+   sc.init(sc.max_size);
+#endif
+  if(!connected){
+   connect_struct.session_end();
+   connect_struct.server_detach();
+  }else{
+    OTL_TRACE_FUNC(0x1,"otl_connect","logoff","")
+    if(connect_struct.extern_lda)
+      connect_struct.logoff();
+    else{
+      session_end();
+      server_detach();
+    }
+    connected=0;
+  }
+ }
+
+ void server_attach(const char* tnsname=0,
+                    const char* xa_server_external_name=0,
+                    const char* xa_server_internal_name=0
+#if defined(OTL_ORA_OCI_ENV_CREATE)
+                    ,bool threaded_mode=false
+#endif
+                   )
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   if(cmd_){
+     delete[] cmd_;
+     cmd_=0;
+   }
+   if(xa_server_external_name!=0 && xa_server_internal_name!=0){
+     connect_struct.set_xa_server_external_name
+       (xa_server_external_name);
+     connect_struct.set_xa_server_internal_name
+       (xa_server_internal_name);
+   }
+   connected=0;
+   long_max_size=32760;
+   throw_count=0;
+#if defined(OTL_ORA_OCI_ENV_CREATE)
+   set_connect_mode(threaded_mode);
+#endif
+   retcode=connect_struct.server_attach(tnsname);
+   if(!retcode){
+     ++throw_count;
+     if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return; 
+#endif
+     throw otl_exception(connect_struct);
+   }
+ }
+
+ void server_detach(void)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  retcode=connect_struct.server_detach();
+  if(!retcode){
+   ++throw_count;
+   if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw otl_exception(connect_struct);
+  }
+ }
+
+ void session_begin
+  (const char* username,
+   const char* password,
+   const int auto_commit=0,
+   const int session_mode=OCI_DEFAULT
+   // OCI_SYSDBA -- in this mode, the user is authenticated for SYSDBA
+   // access.  
+   // OCI_SYSOPER -- in this mode, the user is authenticated
+   // for SYSOPER access.
+  ) OTL_THROWS_OTL_EXCEPTION
+ {
+   if(cmd_){
+     delete[] cmd_;
+     cmd_=0;
+   }
+   throw_count=0;
+   retcode=connect_struct.session_begin
+     (username,password,auto_commit,session_mode);
+   if(retcode)
+     connected=1;
+   else{
+     connected=0;
+     ++throw_count;
+     if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())return; 
+#endif
+     throw otl_exception(connect_struct);
+   }
+   if(connect_struct.last_status==OCI_SUCCESS_WITH_INFO){
+     otl_exception ex(connect_struct);
+     if(ex.code!=0){
+       ++throw_count;
+       if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+       if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+         uncaught_exception())return; 
+#endif
+       throw ex;
+     }
+   }
+ }
+
+ void session_reopen(const int auto_commit=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  throw_count=0;
+  if(connect_struct.session_begin_count==0){
+   connected=0;
+   ++throw_count;
+   if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw otl_exception(otl_error_msg_11,otl_error_code_11);
+  }
+  retcode=connect_struct.session_begin(auto_commit);
+  if(retcode)
+   connected=1;
+  else{
+   connected=0;
+   ++throw_count;
+   if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw otl_exception(connect_struct);
+  }
+  if(connect_struct.last_status==OCI_SUCCESS_WITH_INFO){
+    otl_exception ex(connect_struct);
+    if(ex.code!=0){
+      ++throw_count;
+      if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+      if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+        uncaught_exception())return; 
+#endif
+      throw ex;
+    }
+  }
+ }
+
+ void session_end(void)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+  if(connected)
+   sc.init(sc.max_size);
+#endif
+  connected=0;
+  retcode=connect_struct.session_end();
+  if(!retcode){
+   ++throw_count;
+   if(throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw otl_exception(connect_struct);
+  }
+ }
+
+private:
+
+  char* cmd_;
+
+  otl_connect& operator=(const otl_connect&)
+  {
+    return *this;
+  }
+
+  otl_connect(const otl_connect&)
+    : otl_ora8_connect(){}
+
+};
+
+typedef otl_tmpl_variable<otl_var> otl_generic_variable;
+typedef otl_generic_variable* otl_p_generic_variable;
+
+class otl_refcur_base_cursor: public
+ otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var> {
+public:
+
+ int cur_row;
+ int cur_size;
+ int row_count;
+ int array_size;
+
+ otl_refcur_base_cursor
+ (otl_connect& db,
+  otl_var* var,
+  const char* master_plsql_block,
+  const otl_stream_buffer_size_type arr_size=1)
+  :otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>(db,var)
+ {
+  cur_row=-1;
+  row_count=0;
+  cur_size=0;
+  array_size=arr_size;
+  size_t len=strlen(master_plsql_block)+1;
+  stm_text=new char[len];
+  OTL_STRCPY_S(stm_text,len,master_plsql_block);
+ }
+
+ otl_refcur_base_cursor():
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>()
+ {
+ }
+
+ virtual ~otl_refcur_base_cursor()
+ {
+  delete[] stm_text;
+  stm_text=0;
+ }
+
+ void open
+ (otl_connect& db,
+  otl_var* var,
+  const char* master_plsql_block,
+  const otl_stream_buffer_size_type arr_size=1)
+ {
+  cur_row=-1;
+  row_count=0;
+  cur_size=0;
+  array_size=arr_size;
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::open(db,var);
+  size_t len=strlen(master_plsql_block)+1;
+  stm_text=new char[len];
+  OTL_STRCPY_S(stm_text,len,master_plsql_block);
+ }
+
+ void close(void)
+ {
+  delete[] stm_text;
+  stm_text=0;
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::close();
+ }
+
+ int first(void)
+ {int rc;
+
+  cur_row=-1;
+  rc=cursor_struct.fetch(OTL_SCAST
+                         (otl_stream_buffer_size_type,
+                          array_size),
+                         eof_data);
+  if(rc==0){
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return 0; 
+#endif
+   throw otl_exception(cursor_struct,stm_label?stm_label:stm_text);
+  }
+  row_count=cursor_struct.rpc();
+  cur_size=row_count;
+  if(cur_size!=0)cur_row=0;
+  return cur_size!=0;
+ }
+
+ int next(void)
+ {int rc;
+  if(cur_row<0)return first();
+  if(cur_row<cur_size-1)
+   ++cur_row;
+  else{
+   if(otl_tmpl_cursor<otl_exc,otl_conn,otl_cur,otl_var>::eof()){
+    cur_row=-1;
+    return 0;
+   }
+   rc=cursor_struct.fetch(OTL_SCAST(otl_stream_buffer_size_type,
+                                    array_size),eof_data);
+   if(rc==0){
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw otl_exception(cursor_struct,stm_label?stm_label:stm_text);
+   }
+   cur_size=cursor_struct.rpc()-row_count;
+   row_count=cursor_struct.rpc();
+   if(cur_size!=0)cur_row=0;
+  }
+  return cur_size!=0;
+ }
+
+ void bind_col
+ (const int column_num,
+  otl_generic_variable& v)
+ {
+  if(!connected)return;
+  v.pos=column_num;
+  otl_refcur_base_cursor::bind(column_num,v);
+ }
+
+ int describe_select
+ (otl_column_desc* desc,
+  int& desc_len)
+ {int i;
+  desc_len=0;
+  cursor_struct.straight_select=0;
+  for(i=1;describe_column(desc[i-1],i);++i)
+   ++desc_len;
+  return 1;
+ }
+
+};
+
+#if defined(OTL_ORA_DECLARE_COMMON_READ_STREAM_INTERFACE)
+
+#define OTL_ORA_COMMON_READ_STREAM otl_read_stream_interface
+#define OTL_ORA_REFCUR_COMMON_READ_STREAM otl_read_stream_interface
+
+class otl_read_stream_interface{
+public:
+
+  virtual ~otl_read_stream_interface(){}
+
+  virtual int is_null(void) OTL_NO_THROW = 0;
+  virtual void rewind(void) OTL_THROWS_OTL_EXCEPTION = 0;
+  virtual int eof(void) OTL_NO_THROW = 0;
+
+  virtual otl_var_desc* describe_out_vars(int& desc_len) OTL_NO_THROW = 0;
+  virtual otl_var_desc* describe_next_out_var(void) OTL_NO_THROW = 0;
+
+  virtual otl_read_stream_interface& 
+  operator>>(otl_datetime& s) OTL_THROWS_OTL_EXCEPTION = 0;
+
+#if !defined(OTL_UNICODE)
+  virtual otl_read_stream_interface& 
+  operator>>(char& c) OTL_THROWS_OTL_EXCEPTION = 0;
+#endif
+
+  virtual otl_read_stream_interface& 
+  operator>>(unsigned char& c) OTL_THROWS_OTL_EXCEPTION = 0;
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+  virtual otl_read_stream_interface& 
+  operator>>(OTL_STRING_CONTAINER& s) OTL_THROWS_OTL_EXCEPTION = 0;
+#endif
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+  virtual otl_read_stream_interface& 
+  operator>>(OTL_UNICODE_STRING_TYPE& s) OTL_THROWS_OTL_EXCEPTION = 0;
+#endif
+
+#if !defined(OTL_UNICODE)
+  virtual otl_read_stream_interface& 
+  operator>>(char* s) OTL_THROWS_OTL_EXCEPTION = 0;
+#endif
+
+#if defined(OTL_UNICODE)
+
+ virtual otl_read_stream_interface& 
+ operator>>(OTL_UNICODE_CHAR_TYPE* s) OTL_THROWS_OTL_EXCEPTION = 0;
+
+#endif
+
+  virtual otl_read_stream_interface& 
+  operator>>(unsigned char* s) OTL_THROWS_OTL_EXCEPTION = 0;
+
+  virtual otl_read_stream_interface& 
+  operator>>(int& n) OTL_THROWS_OTL_EXCEPTION = 0;
+
+  virtual otl_read_stream_interface& 
+  operator>>(unsigned& u) OTL_THROWS_OTL_EXCEPTION = 0;
+
+  virtual otl_read_stream_interface& 
+  operator>>(short& sh) OTL_THROWS_OTL_EXCEPTION = 0;
+
+  virtual otl_read_stream_interface& 
+  operator>>(long int& l) OTL_THROWS_OTL_EXCEPTION = 0;
+
+  virtual otl_read_stream_interface& 
+  operator>>(float& f) OTL_THROWS_OTL_EXCEPTION = 0;
+
+  virtual otl_read_stream_interface& 
+  operator>>(double& d) OTL_THROWS_OTL_EXCEPTION = 0;
+
+  virtual otl_read_stream_interface& 
+  operator>>(otl_long_string& s) OTL_THROWS_OTL_EXCEPTION = 0;
+
+  virtual otl_read_stream_interface& 
+  operator>>(otl_lob_stream& s) OTL_THROWS_OTL_EXCEPTION = 0;
+
+  virtual otl_column_desc* 
+  describe_select(int& desc_len) OTL_NO_THROW = 0;
+
+};
+#else
+
+#define OTL_ORA_COMMON_READ_STREAM otl_stream
+#define OTL_ORA_REFCUR_COMMON_READ_STREAM otl_refcur_stream
+
+#endif
+
+class otl_refcur_stream:
+#if defined(OTL_ORA_DECLARE_COMMON_READ_STREAM_INTERFACE)
+  public otl_read_stream_interface,
+#endif
+ public otl_refcur_base_cursor{
+public:
+
+  int delay_next;
+  int same_sl_flag;
+  otl_select_struct_override override;
+
+  otl_var_desc* ov;  
+  int ov_len;
+  int next_ov_ndx;
+
+  void inc_next_ov(void)
+  {
+    if(ov_len==0)return;
+    if(next_ov_ndx<ov_len-1)
+      ++next_ov_ndx;
+    else
+      next_ov_ndx=0;
+  }
+
+  void set_column_type(const int column_ndx,
+                       const int col_type,
+                       const int col_size=0)
+    OTL_NO_THROW
+  {
+    override.add_override(column_ndx,col_type,col_size);
+  }
+  
+  void set_all_column_types(const unsigned mask=0)
+    OTL_NO_THROW
+  {
+    override.set_all_column_types(mask);
+  }
+
+ void cleanup(void)
+ {int i;
+  delete[] sl;
+  delete[] ov;
+  for(i=0;i<vl_len;++i)
+   delete vl[i];
+  delete[] vl;
+  delete[] sl_desc;
+ }
+
+ otl_refcur_stream() OTL_NO_THROW
+   :otl_refcur_base_cursor()
+ {
+   init();
+ }
+
+ otl_refcur_stream
+ (const otl_stream_buffer_size_type arr_size,
+  const char* master_plsql_block,
+  otl_var* var,
+  otl_connect& db)
+   OTL_THROWS_OTL_EXCEPTION
+  :otl_refcur_base_cursor(db,var,master_plsql_block,arr_size)
+ {
+  init();
+  try{
+   rewind();
+   null_fetched=0;
+  }catch(OTL_CONST_EXCEPTION otl_exception&){
+   cleanup();
+   if(this->adb)this->adb->throw_count++;
+   throw;
+  }
+ }
+
+ virtual ~otl_refcur_stream()
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  cleanup();
+  close();
+ }
+
+ void rewind(void)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  ret_code=first();
+  null_fetched=0;
+  cur_col=-1;
+  cur_in=0;
+  executed=1;
+  delay_next=0;
+ }
+
+ int is_null(void) OTL_NO_THROW
+ {
+  return null_fetched;
+ }
+
+ int eof(void) OTL_NO_THROW
+ {
+  if(delay_next){
+   look_ahead();
+   delay_next=0;
+  }
+  return !ret_code;
+ }
+
+ int eof_intern(void)
+ {
+  return !ret_code;
+ }
+
+ void check_if_executed(void){}
+
+  void open
+  (otl_connect& db,
+   otl_var* var,
+   const char* master_plsql_block,
+   const otl_stream_buffer_size_type arr_size=1)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    otl_refcur_base_cursor::open(db,var,master_plsql_block,arr_size);
+    get_select_list();
+    rewind();
+    delete[] ov;
+    ov=new otl_var_desc[sl_len];
+    ov_len=sl_len;
+    for(int i=0;i<sl_len;++i){
+      sl[i].copy_var_desc(ov[i]);
+      if(sl_desc!=0)
+        ov[i].copy_name(sl_desc[i].name);
+    }
+  }
+  
+  void close(void)
+    OTL_THROWS_OTL_EXCEPTION
+  {
+    override.reset();
+    otl_refcur_base_cursor::close();
+  }
+
+ otl_refcur_stream& operator>>(otl_time0& t)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_timestamp)&&!eof_intern()){
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+   void* tm=OTL_RCAST(void*,sl[cur_col].val(this->cur_row));
+   int rc=sl[cur_col].var_struct.read_dt(&t,tm,sizeof(otl_time0));
+   if(rc==0){
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw otl_exception(adb->connect_struct,stm_label?stm_label:stm_text);
+   }
+#else
+   otl_time0* tm=OTL_RCAST(otl_time0*,sl[cur_col].val(cur_row));
+   memcpy(OTL_RCAST(void*,&t),tm,otl_oracle_date_size);
+#endif
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  // already declared
+#else
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(otl_datetime& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {otl_time0 tmp;
+  (*this)>>tmp;
+#if defined(OTL_DEFAULT_DATETIME_NULL_TO_VAL)
+  if((*this).is_null())
+   s=OTL_DEFAULT_DATETIME_NULL_TO_VAL;
+  else{
+    s.year=(OTL_SCAST(int,tmp.century)-100)*100+(OTL_SCAST(int,tmp.year)-100);
+    s.month=tmp.month;
+    s.day=tmp.day;
+    s.hour=tmp.hour-1;
+    s.minute=tmp.minute-1;
+    s.second=tmp.second-1;
+  }
+#else
+  s.year=(OTL_SCAST(int,tmp.century)-100)*100+(OTL_SCAST(int,tmp.year)-100);
+  s.month=tmp.month;
+  s.day=tmp.day;
+  s.hour=tmp.hour-1;
+  s.minute=tmp.minute-1;
+  s.second=tmp.second-1;
+#endif
+  inc_next_ov();
+  return *this;
+ }
+#endif
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(char& c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   c=*OTL_RCAST(char*,sl[cur_col].val(cur_row));
+#if defined(OTL_DEFAULT_CHAR_NULL_TO_VAL)
+   if((*this).is_null())
+     c=OTL_DEFAULT_CHAR_NULL_TO_VAL;
+#endif
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(unsigned char& c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   c=*OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+#if defined(OTL_DEFAULT_CHAR_NULL_TO_VAL)
+   if((*this).is_null())
+     c=OTL_DEFAULT_CHAR_NULL_TO_VAL;
+#endif
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(OTL_STRING_CONTAINER& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  switch(sl[cur_col].ftype){
+  case otl_var_char:
+    if(!eof_intern()){
+#if defined(OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL)
+      if((*this).is_null()){
+        OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL(s);
+      }else
+#elif defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+      if((*this).is_null())
+        s=OTL_DEFAULT_STRING_NULL_TO_VAL;
+      else
+#endif
+#if defined(OTL_ACE)
+        s.set(OTL_RCAST(char*,sl[cur_col].val(cur_row)),1);
+#else
+        s=OTL_RCAST(char*,sl[cur_col].val(cur_row));
+#endif
+      look_ahead();
+    }
+    break;
+#if defined(USER_DEFINED_STRING_CLASS) || \
+    defined(OTL_STL) || defined(OTL_ACE)
+  case otl_var_varchar_long:
+  case otl_var_raw_long:
+    if(!eof_intern()){
+      unsigned char* c=OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+      int len=sl[cur_col].get_len(cur_row);
+#if (defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)) && !defined(OTL_ACE)
+      s.assign(OTL_RCAST(char*,c),len);
+#elif defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,c),len,1);
+#endif
+      look_ahead();
+    }
+    break;
+  case otl_var_blob:
+  case otl_var_clob:
+    if(!eof_intern()){
+      int len=0;
+      int max_long_sz=this->adb->get_max_long_size();
+      otl_auto_array_ptr<unsigned char> loc_ptr(max_long_sz);
+      unsigned char* temp_buf=loc_ptr.ptr;
+    
+      int rc=sl[cur_col].var_struct.get_blob
+        (cur_row,
+         temp_buf,
+         max_long_sz,
+         len);
+      if(rc==0){
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return *this; 
+#endif
+        throw otl_exception(adb->connect_struct,
+                            stm_label?stm_label:stm_text);
+      }
+#if (defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)) && !defined(OTL_ACE)
+      s.assign(OTL_RCAST(char*,temp_buf),len);
+#elif defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,temp_buf),len,1);
+#endif
+      look_ahead();
+    }
+    break;
+#endif
+  default:
+    check_type(otl_var_char);
+  } // switch
+  inc_next_ov();
+  return *this;
+ }
+#endif
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   otl_strcpy(OTL_RCAST(unsigned char*,s),
+              OTL_RCAST(const unsigned char*,sl[cur_col].val(cur_row)));
+#if defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     otl_strcpy(OTL_RCAST(unsigned char*,s),
+                OTL_RCAST(const unsigned char*,OTL_DEFAULT_STRING_NULL_TO_VAL)
+               );
+#endif
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(OTL_UNICODE_STRING_TYPE& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+#if defined(OTL_UNICODE_STRING_TYPE_CAST_FROM_CHAR)
+    OTL_UNICODE_CHAR_TYPE* temp_s=OTL_RCAST
+      (OTL_UNICODE_CHAR_TYPE*,sl[cur_col].val(cur_row));
+    OTL_UNICODE_STRING_TYPE_CAST_FROM_CHAR(s,temp_s+1,*temp_s);
+#else
+    OTL_UNICODE_CHAR_TYPE* temp_s=OTL_RCAST
+      (OTL_UNICODE_CHAR_TYPE*,sl[cur_col].val(cur_row));
+    s.assign(temp_s+1,*temp_s);
+#endif
+
+    look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+#endif
+
+#if defined(OTL_UNICODE)
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(OTL_UNICODE_CHAR_TYPE* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   otl_strcpy2(OTL_RCAST(unsigned char*,s),
+               OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row)),
+               sl[cur_col].get_len(cur_row)
+             );
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+#endif
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(unsigned char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   otl_strcpy2(OTL_RCAST(unsigned char*,s),
+               OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row)),
+               sl[cur_col].get_len(cur_row)
+             );
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(int& n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(!eof_intern()){
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+    int match_found=otl_numeric_convert_T2
+      (sl[cur_col].ftype,
+       sl[cur_col].val(cur_row),
+       n);
+#else
+    int match_found=otl_numeric_convert_T
+      (sl[cur_col].ftype,
+       sl[cur_col].val(cur_row),
+       n);
+#endif
+   if(!match_found){
+    if(check_type(otl_var_double,otl_var_int))
+      n=OTL_PCONV(int,double,sl[cur_col].val(cur_row));
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     n=OTL_SCAST(int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(unsigned& u)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(!eof_intern()){
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+   int match_found=otl_numeric_convert_T2
+    (sl[cur_col].ftype,
+     sl[cur_col].val(cur_row),
+     u);
+#else
+   int match_found=otl_numeric_convert_T
+    (sl[cur_col].ftype,
+     sl[cur_col].val(cur_row),
+     u);
+#endif
+   if(!match_found){
+    if(check_type(otl_var_double,otl_var_unsigned_int))
+      u=OTL_PCONV(unsigned,double,sl[cur_col].val(cur_row));
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     u=OTL_SCAST(unsigned int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(short& sh)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(!eof_intern()){
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+   int match_found=otl_numeric_convert_T2
+    (sl[cur_col].ftype,
+     sl[cur_col].val(cur_row),
+     sh);
+#else
+   int match_found=otl_numeric_convert_T
+    (sl[cur_col].ftype,
+     sl[cur_col].val(cur_row),
+     sh);
+#endif
+   if(!match_found){
+    if(check_type(otl_var_double,otl_var_short))
+      sh=OTL_PCONV(short,double,sl[cur_col].val(cur_row));
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     sh=OTL_SCAST(short int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(long int& l)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(!eof_intern()){
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+   int match_found=otl_numeric_convert_T2
+    (sl[cur_col].ftype,
+     sl[cur_col].val(cur_row),
+     l);
+#else
+   int match_found=otl_numeric_convert_T
+    (sl[cur_col].ftype,
+     sl[cur_col].val(cur_row),
+     l);
+#endif
+   if(!match_found){
+    if(check_type(otl_var_double,otl_var_long_int))
+      l=OTL_PCONV(long int,double,sl[cur_col].val(cur_row));
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     l=OTL_SCAST(long int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(float& f)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(!eof_intern()){
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+   int match_found=otl_numeric_convert_T2
+    (sl[cur_col].ftype,
+     sl[cur_col].val(cur_row),
+     f);
+#else
+   int match_found=otl_numeric_convert_T
+    (sl[cur_col].ftype,
+     sl[cur_col].val(cur_row),
+     f);
+#endif
+   if(!match_found){
+    if(check_type(otl_var_double,otl_var_float))
+      f=OTL_PCONV(float,double,sl[cur_col].val(cur_row));
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     f=OTL_SCAST(float,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(double& d)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(!eof_intern()){
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+   int match_found=otl_numeric_convert_T2
+    (sl[cur_col].ftype,
+     sl[cur_col].val(cur_row),
+     d);
+#else
+   int match_found=otl_numeric_convert_T
+    (sl[cur_col].ftype,
+     sl[cur_col].val(cur_row),
+     d);
+#endif
+   if(!match_found){
+    if(check_type(otl_var_double,otl_var_double))
+     d=*OTL_RCAST(double*,sl[cur_col].val(cur_row));
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     d=OTL_SCAST(double,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(otl_long_string& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if((sl[cur_col].ftype==otl_var_varchar_long||
+      sl[cur_col].ftype==otl_var_raw_long)&&
+     !eof_intern()){
+   unsigned char* c=OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+   int len=sl[cur_col].get_len(cur_row);
+   if(len>s.buf_size)len=s.buf_size;
+   otl_memcpy(s.v,c,len,sl[cur_col].ftype);
+   if(sl[cur_col].ftype==otl_var_varchar_long)
+   s.null_terminate_string(len);
+   s.set_len(len);
+   look_ahead();
+  }else if((sl[cur_col].ftype==otl_var_blob||
+            sl[cur_col].ftype==otl_var_clob)&&
+           !eof_intern()){
+   int len;
+   int rc=sl[cur_col].var_struct.get_blob(cur_row,s.v,s.buf_size,len);
+   if(rc==0){
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw otl_exception(adb->connect_struct,
+                        stm_label?stm_label:stm_text);
+   }
+   s.set_len(len);
+   if(sl[cur_col].ftype==otl_var_clob)
+     s.null_terminate_string(len);
+   look_ahead();
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+ OTL_ORA_REFCUR_COMMON_READ_STREAM& operator>>(otl_lob_stream& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if((sl[cur_col].ftype==otl_var_blob||
+      sl[cur_col].ftype==otl_var_clob)&&
+     !eof_intern()){
+   s.init
+    (&sl[cur_col],
+     adb,
+     OTL_RCAST(otl_refcur_base_cursor*,this),
+     cur_row,
+     otl_lob_stream_read_mode,
+     this->is_null());
+   delay_next=1;
+  }
+  inc_next_ov();
+  return *this;
+ }
+
+ otl_var_desc* describe_out_vars(int& desc_len)
+   OTL_NO_THROW
+ {
+   desc_len=0;
+   if(ov==0)return 0;
+   desc_len=ov_len;
+   return ov;
+ }
+
+ otl_var_desc* describe_next_out_var(void)
+   OTL_NO_THROW
+ {
+   if(ov==0)return 0;
+   return &ov[next_ov_ndx];
+ }
+
+ int select_list_len(void) OTL_NO_THROW
+ {
+  return sl_len;
+ }
+
+ int column_ftype(int ndx=0) OTL_NO_THROW
+ {
+  return sl[ndx].ftype;
+ }
+
+ int column_size(int ndx=0) OTL_NO_THROW
+ {
+  return sl[ndx].elem_size;
+ }
+
+ otl_column_desc* describe_select(int& desc_len)
+   OTL_NO_THROW
+ {
+  desc_len=0;
+  desc_len=sl_len;
+  return sl_desc;
+ }
+
+ otl_column_desc* sl_desc;
+ int sl_len;
+ otl_generic_variable* sl;
+
+protected:
+
+ int null_fetched;
+ int ret_code;
+ int cur_col;
+ int cur_in;
+ int executed;
+ char var_info[256];
+
+ void init(void)
+ {
+   ov=0;
+   ov_len=0;
+   next_ov_ndx=0;
+   same_sl_flag=0;
+   sl=0;
+   sl_len=0;
+   null_fetched=0;
+   ret_code=0;
+   sl_desc=0;
+   executed=0;
+   cur_in=0;
+   cur_col=-1;
+   executed=1;
+   stm_text=0;
+   delay_next=0;
+ }
+
+ void get_next(void)
+ {
+  if(cur_col<sl_len-1){
+   ++cur_col;
+   null_fetched=sl[cur_col].is_null(cur_row);
+  }else{
+   ret_code=next();
+   cur_col=0;
+  }
+ }
+
+  int check_type_throw(int type_code, int actual_data_type)
+  {
+    int out_type_code;
+    if(actual_data_type!=0)
+      out_type_code=actual_data_type;
+    else
+      out_type_code=type_code;
+    otl_var_info_col
+      (sl[cur_col].pos,
+       sl[cur_col].ftype,
+       out_type_code,
+       var_info,
+       sizeof(var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw otl_exception
+      (otl_error_msg_0,
+       otl_error_code_0,
+       stm_label?stm_label:stm_text,
+       var_info);
+  }
+  
+  int check_type(int type_code, int actual_data_type=0)
+  {
+    switch(sl[cur_col].ftype){
+    case otl_var_timestamp:
+        case otl_var_tz_timestamp:
+    case otl_var_ltz_timestamp:
+      if(type_code==otl_var_timestamp)
+        return 1;
+    default:
+      if(sl[cur_col].ftype==type_code)
+        return 1;
+    }
+    return check_type_throw(type_code,actual_data_type);
+  }
+  
+ void look_ahead(void)
+ {
+  if(cur_col==sl_len-1){
+   ret_code=next();
+   cur_col=-1;
+  }
+ }
+
+ void get_select_list(void)
+ {
+   int i,j;
+
+   otl_auto_array_ptr<otl_column_desc> loc_ptr(otl_var_list_size);
+   otl_column_desc* sl_desc_tmp=loc_ptr.ptr;
+   int sld_tmp_len=0;
+   int ftype,elem_size;
+   
+   sld_tmp_len=0;
+   cursor_struct.straight_select=0;
+   for(i=1;describe_column(sl_desc_tmp[i-1],i);++i){
+     ++sld_tmp_len;
+     if(sld_tmp_len==loc_ptr.arr_size_){
+       loc_ptr.double_size();
+       sl_desc_tmp=loc_ptr.ptr;
+     }
+   }
+   sl_len=sld_tmp_len;
+   if(sl){
+     delete[] sl;
+     sl=0;
+   }
+   sl=new otl_generic_variable[sl_len==0?1:sl_len];
+   int max_long_size=this->adb->get_max_long_size();
+   for(j=0;j<sl_len;++j){
+     otl_generic_variable::map_ftype
+       (sl_desc_tmp[j],max_long_size,ftype,elem_size,override,j+1);
+     sl[j].copy_pos(j+1);
+     sl[j].init(ftype,
+                elem_size,
+                OTL_SCAST(otl_stream_buffer_size_type,array_size),
+                &adb->connect_struct
+               );
+   }
+   if(sl_desc){
+     delete[] sl_desc;
+     sl_desc=0;
+   }
+   sl_desc=new otl_column_desc[sl_len==0?1:sl_len];
+   for(i=0;i<sl_len;++i)
+     sl_desc[i]=sl_desc_tmp[i];
+   for(i=0;i<sl_len;++i)bind_col(i+1,sl[i]);
+ }
+
+private:
+
+  otl_refcur_stream& operator=(const otl_refcur_stream&)
+  {
+    return *this;
+  }
+
+  otl_refcur_stream(const otl_refcur_stream&) : 
+#if defined(OTL_ORA_DECLARE_COMMON_READ_STREAM_INTERFACE)
+    otl_read_stream_interface(), 
+#endif
+    otl_refcur_base_cursor(){}
+};
+
+class otl_inout_stream: public otl_ora8_inout_stream{
+public:
+
+ otl_inout_stream
+ (otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  otl_connect& db,
+  const bool alob_stream_mode=false,
+  const char* sqlstm_label=0)
+  : otl_ora8_inout_stream(arr_size,sqlstm,db,
+                          alob_stream_mode,sqlstm_label)
+ {
+  adb2=&db;
+ } 
+
+ otl_inout_stream& operator>>(otl_refcur_stream& str)
+ {
+  if(eof())return *this;
+  if(check_in_type(otl_var_refcur,1)){
+   if(str.connected)str.close();
+   str.open(*adb2,
+            &(in_vl[cur_in_x]->var_struct),
+            stm_text,
+            OTL_SCAST
+            (const otl_stream_buffer_size_type, 
+             in_vl[cur_in_x]->var_struct.array_size)
+           );
+   null_fetched=0;
+  }
+  get_in_next();
+  return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+
+ otl_inout_stream& operator>>(OTL_STRING_CONTAINER& s)
+ {
+  otl_ora8_inout_stream::operator>>(s);
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const OTL_STRING_CONTAINER& s)
+ {
+  otl_ora8_inout_stream::operator<<(s);
+  return *this;
+ }
+
+#endif
+
+ otl_inout_stream& operator<<(const otl_null&)
+ {
+  otl_ora8_inout_stream::operator<<(otl_null());
+  return *this;
+ }
+
+
+#if defined(OTL_PL_TAB) && defined(OTL_STL)
+
+ otl_inout_stream& operator>>(otl_pl_vec_generic& tab)
+ {
+  otl_ora8_inout_stream::operator>>(tab);
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(otl_pl_vec_generic& tab)
+ {
+  otl_ora8_inout_stream::operator<<(tab);
+  return *this;
+ }
+
+#endif
+
+ otl_inout_stream& operator>>(otl_pl_tab_generic& tab)
+ {
+  otl_ora8_inout_stream::operator>>(tab);
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(otl_pl_tab_generic& tab)
+ {
+  otl_ora8_inout_stream::operator<<(tab);
+  return *this;
+ }
+
+
+ otl_inout_stream& operator>>(otl_time0& s)
+ {
+  otl_ora8_inout_stream::operator>>(s);
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const otl_time0& s)
+ {
+  otl_ora8_inout_stream::operator<<(s);
+  return *this;
+ }
+
+ otl_inout_stream& operator>>(char& c)
+ {
+  otl_ora8_inout_stream::operator>>(c);
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const char c)
+ {
+  otl_ora8_inout_stream::operator<<(c);
+  return *this;
+ }
+
+
+ otl_inout_stream& operator>>(unsigned char& c)
+ {
+  otl_ora8_inout_stream::operator>>(c);
+  return *this;
+ }
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+ otl_inout_stream& operator>>(OTL_UNICODE_STRING_TYPE& s)
+ {
+  otl_ora8_inout_stream::operator>>(s);
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const OTL_UNICODE_STRING_TYPE& s)
+ {
+  otl_ora8_inout_stream::operator<<(s);
+  return *this;
+ }
+#endif
+
+ otl_inout_stream& operator<<(const unsigned char c)
+ {
+  otl_ora8_inout_stream::operator<<(c);
+  return *this;
+ }
+
+
+ otl_inout_stream& operator>>(char* s)
+ {
+  otl_ora8_inout_stream::operator>>(s);
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const char* s)
+ {
+  otl_ora8_inout_stream::operator<<(s);
+  return *this;
+ }
+
+ otl_inout_stream& operator>>(unsigned char* s)
+ {
+  otl_ora8_inout_stream::operator>>(s);
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const unsigned char* s)
+ {
+  otl_ora8_inout_stream::operator<<(s);
+  return *this;
+ }
+
+ otl_inout_stream& operator>>(int& n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator>>(n);
+#else
+  otl_ora8_inout_stream::operator>><int,otl_var_int>(n);
+#endif
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const int n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+   otl_ora8_inout_stream::operator<<(n);
+#else
+  otl_ora8_inout_stream::operator<<<int,otl_var_int>(n);
+#endif
+  return *this;
+ }
+
+
+ otl_inout_stream& operator>>(float& n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator>>(n);
+#else
+  otl_ora8_inout_stream::operator>><float,otl_var_float>(n);
+#endif
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const float n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator<<(n);
+#else
+  otl_ora8_inout_stream::operator<<<float,otl_var_float>(n);
+#endif
+  return *this;
+ }
+
+ otl_inout_stream& operator>>(double& n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator>>(n);
+#else
+  otl_ora8_inout_stream::operator>><double,otl_var_double>(n);
+#endif
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const double n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator<<(n);
+#else
+  otl_ora8_inout_stream::operator<<<double,otl_var_double>(n);
+#endif
+  return *this;
+ }
+
+
+ otl_inout_stream& operator>>(short int& n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator>>(n);
+#else
+  otl_ora8_inout_stream::operator>><short,otl_var_short>(n);
+#endif
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const short int n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator<<(n);
+#else
+  otl_ora8_inout_stream::operator<<<short,otl_var_short>(n);
+#endif
+  return *this;
+ }
+
+ otl_inout_stream& operator>>(unsigned int& n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator>>(n);
+#else
+  otl_ora8_inout_stream::operator>><unsigned,otl_var_unsigned_int>(n);
+#endif
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const unsigned int n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator<<(n);
+#else
+  otl_ora8_inout_stream::operator<<<unsigned,otl_var_unsigned_int>(n);
+#endif
+  return *this;
+ }
+
+
+ otl_inout_stream& operator>>(long int& n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator>>(n);
+#else
+  otl_ora8_inout_stream::operator>><long,otl_var_long_int>(n);
+#endif
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const long int n)
+ {
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  otl_ora8_inout_stream::operator<<(n);
+#else
+  otl_ora8_inout_stream::operator<<<long,otl_var_long_int>(n);
+#endif
+  return *this;
+ }
+
+ otl_inout_stream& operator>>(otl_long_string& n)
+ {
+  otl_ora8_inout_stream::operator>>(n);
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(const otl_long_string& n)
+ {
+  otl_ora8_inout_stream::operator<<(n);
+  return *this;
+ }
+
+ otl_inout_stream& operator>>(otl_lob_stream& n)
+ {
+  otl_ora8_inout_stream::operator>>(n);
+  return *this;
+ }
+
+ otl_inout_stream& operator<<(otl_lob_stream& s)
+ {
+  otl_ora8_inout_stream::operator<<(s);
+  return *this;
+ }
+
+protected:
+
+ otl_connect* adb2;
+
+};
+
+
+// ============ OTL Reference Cursor Streams for Oracle 8 =================
+
+class otl_ref_cursor: public
+ otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var> {
+public:
+
+ int cur_row;
+ int cur_size;
+ int row_count;
+ int array_size;
+ otl_select_struct_override local_override;
+
+ otl_ref_cursor
+ (otl_connect& db,
+  const char* cur_placeholder_name,
+  const otl_stream_buffer_size_type arr_size=1)
+  :otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>(db)
+ {int i;
+  local_override.reset();
+  cur_row=-1;
+  row_count=0;
+  cur_size=0;
+  array_size=arr_size;
+  rvl_len=otl_var_list_size;
+  vl_cur_len=0;
+  rvl=new otl_p_generic_variable[rvl_len];
+  for(i=0;i<rvl_len;++i)rvl[i]=0;
+  OTL_STRCPY_S(cur_placeholder,sizeof(cur_placeholder),cur_placeholder_name);
+ }
+
+ otl_ref_cursor():
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>(),
+  sel_cur()
+ {
+   local_override.reset();
+ }
+
+ virtual ~otl_ref_cursor()
+ {
+  delete[] rvl;
+  rvl=0;
+ }
+
+ void open
+ (otl_connect& db,
+  const char* cur_placeholder_name,
+  const otl_stream_buffer_size_type arr_size=1)
+ {int i;
+  local_override.reset();
+  cur_row=-1;
+  row_count=0;
+  cur_size=0;
+  array_size=arr_size;
+  rvl_len=otl_var_list_size;
+  vl_cur_len=0;
+  rvl=new otl_p_generic_variable[rvl_len];
+  for(i=0;i<rvl_len;++i)rvl[i]=0;
+  OTL_STRCPY_S(cur_placeholder,sizeof(cur_placeholder),cur_placeholder_name);
+  if(!sel_cur.connected)sel_cur.open(db);
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::open(db);
+ }
+
+ void release_sel_cur(void)
+ {
+#if defined(OTL_ORA8_8I_REFCUR)
+  return;
+#else
+  char tmp_buf[256];
+  OCIBind* bindpp;
+  int rc;
+
+  if(!sel_cur.connected)return;
+  OTL_STRCPY_S(tmp_buf,sizeof(tmp_buf),"begin close ");
+  OTL_STRCAT_S(tmp_buf,sizeof(tmp_buf),cur_placeholder);
+  OTL_STRCAT_S(tmp_buf,sizeof(tmp_buf),"; end;");
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::parse(tmp_buf);
+  rc=OCIBindByName
+   (cursor_struct.cda,
+    &bindpp,
+    cursor_struct.errhp,
+    OTL_RCAST(text*,cur_placeholder),
+    OTL_SCAST(sb4,strlen(cur_placeholder)),
+    OTL_RCAST(dvoid*,&sel_cur.cursor_struct.cda),
+    0,
+    SQLT_RSET,
+    0,
+    0,
+    0,
+    0,
+    0,
+    OTL_SCAST(ub4,OCI_DEFAULT));
+  if(rc!=0){
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw otl_exception(cursor_struct,
+                       stm_label?stm_label:stm_text);
+  }
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::exec();
+#endif
+ }
+
+ void close(void)
+ {
+   local_override.reset();
+   delete[] rvl;
+   rvl=0;
+   release_sel_cur();
+   sel_cur.close();
+   otl_tmpl_cursor
+     <otl_exc,
+     otl_conn,
+     otl_cur,
+     otl_var>::close();
+ }
+
+ int first(void)
+ {int i,rc;
+  OCIBind* bindpp;
+
+  if(!sel_cur.connected){
+   sel_cur.open(*adb);
+   rc=OCIBindByName
+    (cursor_struct.cda,
+     &bindpp,
+     cursor_struct.errhp,
+     OTL_RCAST(text*,cur_placeholder),
+     OTL_SCAST(sb4,strlen(cur_placeholder)),
+     OTL_RCAST(dvoid*,&sel_cur.cursor_struct.cda),
+     0,
+     SQLT_RSET,
+     0,
+     0,
+     0,
+     0,
+     0,
+     OTL_SCAST(ub4,OCI_DEFAULT));
+   if(rc!=0){
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw otl_exception(cursor_struct,
+                        stm_label?stm_label:stm_text);
+   }
+  }
+
+  if(cur_row==-2)
+   ; // Special case -- calling describe_select() between parse() and first()
+  else{
+   exec(1); // Executing the PLSQL master block
+   sel_cur.connected=1;
+  }
+  cur_row=-1;
+  for(i=0;i<vl_cur_len;++i)
+   sel_cur.bind(i+1,*rvl[i]);
+  rc=sel_cur.cursor_struct.fetch(OTL_SCAST(otl_stream_buffer_size_type,
+                                           array_size),sel_cur.eof_data);
+  if(rc==0){
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return 0; 
+#endif
+   throw otl_exception(sel_cur.cursor_struct,
+                       stm_label?stm_label:stm_text);
+  }
+  row_count=sel_cur.cursor_struct.rpc();
+  cur_size=row_count;
+  if(cur_size!=0)cur_row=0;
+  return cur_size!=0;
+ }
+
+ int next(void)
+ {int rc;
+  if(cur_row<0)return first();
+  if(cur_row<cur_size-1)
+   ++cur_row;
+  else{
+   if(sel_cur.eof()){
+     cur_row=-1;
+     return 0;
+   }
+   rc=sel_cur.cursor_struct.fetch(OTL_SCAST(otl_stream_buffer_size_type,
+                                            array_size),sel_cur.eof_data);
+   if(rc==0){
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw otl_exception(sel_cur.cursor_struct,
+                        stm_label?stm_label:stm_text);
+   }
+   cur_size=sel_cur.cursor_struct.rpc()-row_count;
+   row_count=sel_cur.cursor_struct.rpc();
+   if(cur_size!=0)cur_row=0;
+  }
+  return cur_size!=0;
+ }
+
+ void bind
+ (const int column_num,
+  otl_generic_variable& v)
+ {
+  if(!connected)return;
+  ++vl_cur_len;
+  if(vl_cur_len==rvl_len){
+    int temp_rvl_len=rvl_len*2;
+    otl_p_generic_variable* temp_rvl=
+      new otl_p_generic_variable[temp_rvl_len];
+    int i;
+    for(i=0;i<rvl_len;++i)
+      temp_rvl[i]=rvl[i];
+    for(i=rvl_len+1;i<temp_rvl_len;++i)
+      temp_rvl[i]=0;
+    delete[] rvl;
+    rvl=temp_rvl;
+    rvl_len=temp_rvl_len;
+  }
+  rvl[vl_cur_len-1]=&v;
+  v.pos=column_num;
+ }
+
+ void bind(otl_generic_variable& v)
+ {
+  if(v.pos)
+   bind(v.pos,v);
+  else if(v.name)
+   otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::bind(v);
+ }
+
+ void bind
+ (const char* name,
+  otl_generic_variable& v)
+ {
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::bind(name,v);
+ }
+
+ int describe_select
+ (otl_column_desc* desc,
+  int& desc_len)
+ {int i,rc;
+  OCIBind* bindpp;
+
+  if(!sel_cur.connected){
+   sel_cur.open(*adb);
+   rc=OCIBindByName
+    (cursor_struct.cda,
+     &bindpp,
+     cursor_struct.errhp,
+     OTL_RCAST(text*,cur_placeholder),
+     OTL_SCAST(sb4,strlen(cur_placeholder)),
+     OTL_RCAST(dvoid*,&sel_cur.cursor_struct.cda),
+     0,
+     SQLT_RSET,
+     0,
+     0,
+     0,
+     0,
+     0,
+     OTL_SCAST(ub4,OCI_DEFAULT));
+   if(rc!=0){
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw otl_exception(cursor_struct,
+                        stm_label?stm_label:stm_text);
+   }
+  }
+  exec(1); // Executing the PLSQL master block
+  sel_cur.connected=1;
+  cur_row=-2; // Special case -- describe_select() before first() or next()
+  desc_len=0;
+  sel_cur.cursor_struct.straight_select=0;
+  for(i=1;sel_cur.describe_column(desc[i-1],i);++i)
+   ++desc_len;
+  return 1;
+ }
+
+public:
+
+ otl_cursor sel_cur;
+
+protected:
+
+ int rvl_len;
+ otl_p_generic_variable* rvl;
+ int vl_cur_len;
+ char cur_placeholder[64];
+
+};
+
+class otl_ref_select_stream: public otl_ref_cursor{
+public:
+
+ otl_select_struct_override *override;
+ int delay_next;
+ int same_sl_flag;
+ long _rfc;
+
+ void cleanup(void)
+ {int i;
+  delete[] sl;
+  for(i=0;i<vl_len;++i)
+   delete vl[i];
+  delete[] vl;
+  delete[] sl_desc;
+ }
+
+ otl_ref_select_stream
+ (otl_select_struct_override* aoverride,
+  const otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  const char* acur_placeholder,
+  otl_connect& db,
+  const char* sqlstm_label=0)
+  :otl_ref_cursor(db,acur_placeholder,arr_size)
+ {
+   if(sqlstm_label!=0){
+     if(stm_label!=0){
+       delete[] stm_label;
+       stm_label=0;
+     }
+     size_t len=strlen(sqlstm_label)+1;
+     stm_label=new char[len];
+     OTL_STRCPY_S(stm_label,len,sqlstm_label);
+   }
+
+  _rfc=0;
+  init();
+
+  override=aoverride;
+  {
+   size_t len=strlen(sqlstm)+1;
+   stm_text=new char[len];
+   OTL_STRCPY_S(stm_text,len,sqlstm);
+   otl_select_struct_override* temp_local_override=&this->local_override;
+   otl_ext_hv_decl hvd
+     (this->stm_text,
+      1,
+      this->stm_label,
+      &temp_local_override,
+      adb
+     );
+   hvd.alloc_host_var_list(vl,vl_len,*adb);
+  }
+
+  try{
+
+   parse();
+   if(vl_len==0){
+    rewind();
+    null_fetched=0;
+   }
+  }catch(OTL_CONST_EXCEPTION otl_exception&){
+   cleanup();
+   if(this->adb)this->adb->throw_count++;
+   throw;
+  }
+
+ }
+
+ virtual ~otl_ref_select_stream()
+ {
+  cleanup();
+  close();
+ }
+
+ void rewind(void)
+ {
+  _rfc=0;
+  get_select_list();
+  ret_code=first();
+  null_fetched=0;
+  cur_col=-1;
+  cur_in=0;
+  executed=1;
+  delay_next=0;
+ }
+  
+  void clean(void)
+  {
+    _rfc=0;
+    null_fetched=0;
+    cur_col=-1;
+    cur_in=0;
+    executed=0;
+    delay_next=0;
+  }
+
+ int is_null(void)
+ {
+  return null_fetched;
+ }
+
+ int eof(void)
+ {
+  if(delay_next){
+   look_ahead();
+   delay_next=0;
+  }
+  return !ret_code;
+ }
+
+ int eof_intern(void)
+ {
+  return !ret_code;
+ }
+
+
+ otl_ref_select_stream& operator>>(otl_time0& t)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_timestamp)&&!eof_intern()){
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+   void* tm=OTL_RCAST(void*,sl[cur_col].val(this->cur_row));
+   int rc=sl[cur_col].var_struct.read_dt(&t,tm,sizeof(otl_time0));
+   if(rc==0){
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw otl_exception(adb->connect_struct,
+                        stm_label?stm_label:stm_text);
+   }
+#else
+   otl_time0* tm=OTL_RCAST(otl_time0*,sl[cur_col].val(cur_row));
+   memcpy(OTL_RCAST(void*,&t),tm,otl_oracle_date_size);
+#endif
+   look_ahead();
+  }
+  return *this;
+ }
+
+ otl_ref_select_stream& operator<<(const otl_time0& t)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_timestamp,otl_oracle_date_size)){
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+   void* tm=OTL_RCAST(void*,vl[cur_in]->val());
+   int rc=vl[cur_in]->var_struct.write_dt(tm,&t,sizeof(otl_time0));
+   if(rc==0){
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw otl_exception(adb->connect_struct,
+                        stm_label?stm_label:stm_text);
+   }
+#else
+   otl_time0* tm=OTL_RCAST(otl_time0*,vl[cur_in]->val());
+   memcpy(tm,OTL_RCAST(void*,OTL_CCAST(otl_time0*,&t)),otl_oracle_date_size);
+#endif
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+
+ otl_ref_select_stream& operator>>(char& c)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   c=*OTL_RCAST(char*,sl[cur_col].val(cur_row));
+   look_ahead();
+  }
+  return *this;
+ }
+
+ otl_ref_select_stream& operator>>(unsigned char& c)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   c=*OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+   look_ahead();
+  }
+  return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ otl_ref_select_stream& operator>>(OTL_STRING_CONTAINER& s)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  switch(sl[cur_col].ftype){
+  case otl_var_char:
+    if(!eof_intern()){
+#if defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,sl[cur_col].val(cur_row)),1);
+#else
+      s=OTL_RCAST(char*,sl[cur_col].val(cur_row));
+#endif
+      look_ahead();
+    }
+    break;
+#if defined(USER_DEFINED_STRING_CLASS) || \
+    defined(OTL_STL) || defined(OTL_ACE)
+  case otl_var_varchar_long:
+  case otl_var_raw_long:
+    if(!eof_intern()){
+      unsigned char* c=OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+      int len=sl[cur_col].get_len(cur_row);
+#if (defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)) && !defined(OTL_ACE)
+      s.assign(OTL_RCAST(char*,c),len);
+#elif defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,c),len,1);
+#endif
+      look_ahead();
+    }
+    break;
+  case otl_var_blob:
+  case otl_var_clob:
+    if(!eof_intern()){
+      int len=0;
+      int max_long_sz=this->adb->get_max_long_size();
+      otl_auto_array_ptr<unsigned char> loc_ptr(max_long_sz);
+      unsigned char* temp_buf=loc_ptr.ptr;
+    
+      int rc=sl[cur_col].var_struct.get_blob
+        (cur_row,
+         temp_buf,
+         max_long_sz,
+         len);
+      if(rc==0){
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return *this; 
+#endif
+        throw otl_exception(adb->connect_struct,
+                            stm_label?stm_label:stm_text);
+      }
+#if (defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)) && !defined(OTL_ACE)
+      s.assign(OTL_RCAST(char*,temp_buf),len);
+#elif defined(OTL_ACE)
+      s.set(OTL_RCAST(char*,temp_buf),len,1);
+#endif
+      look_ahead();
+    }
+    break;
+#endif
+  default:
+    check_type(otl_var_char);
+  } // switch
+  return *this;
+ }
+#endif
+
+ otl_ref_select_stream& operator>>(char* s)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   otl_strcpy(OTL_RCAST(unsigned char*,s),
+              OTL_RCAST(const unsigned char*,sl[cur_col].val(cur_row)));
+   look_ahead();
+  }
+  return *this;
+ }
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+ otl_ref_select_stream& operator>>(OTL_UNICODE_STRING_TYPE& s)
+ {
+
+    check_if_executed();
+    if(eof_intern())return *this;
+    get_next();
+    switch(sl[cur_col].ftype){
+    case otl_var_char:
+      if(!eof_intern()){
+
+#if defined(OTL_UNICODE_STRING_TYPE_CAST_FROM_CHAR)
+        OTL_UNICODE_CHAR_TYPE* temp_s=OTL_RCAST
+          (OTL_UNICODE_CHAR_TYPE*,sl[cur_col].val(this->cur_row));
+        OTL_UNICODE_STRING_TYPE_CAST_FROM_CHAR(s,temp_s+1,*temp_s);
+#else
+        OTL_UNICODE_CHAR_TYPE* temp_s=OTL_RCAST
+          (OTL_UNICODE_CHAR_TYPE*,sl[cur_col].val(this->cur_row));
+        s.assign(temp_s+1,*temp_s);
+#endif
+
+        look_ahead();
+      }
+      break;
+    case otl_var_varchar_long:
+      if(!eof_intern()){
+        s=OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,sl[cur_col].val(this->cur_row));
+        look_ahead();
+      }
+      break;
+    case otl_var_clob:
+      if(!eof_intern()){
+        int len=0;
+        int max_long_sz=this->adb->get_max_long_size();
+        otl_auto_array_ptr<unsigned short> loc_ptr(max_long_sz);
+        unsigned char* temp_buf=OTL_RCAST(unsigned char*,loc_ptr.ptr);
+
+        int rc=sl[cur_col].var_struct.get_blob
+          (this->cur_row,
+           temp_buf,
+           max_long_sz,
+           len);
+        if(rc==0){
+          if(this->adb)this->adb->throw_count++;
+          if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+          if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+            uncaught_exception())return *this; 
+#endif
+          throw otl_exception
+            (this->adb->connect_struct,
+             this->stm_label?this->stm_label:
+             this->stm_text);
+        }
+        s=OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,temp_buf);
+        look_ahead();
+      }
+      break;
+    default:
+      check_type(otl_var_char);
+    }
+    return *this;
+ }
+#endif
+
+ otl_ref_select_stream& operator>>(unsigned char* s)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if(check_type(otl_var_char)&&!eof_intern()){
+   otl_strcpy2(OTL_RCAST(unsigned char*,s),
+               OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row)),
+               sl[cur_col].get_len(cur_row)
+             );
+   look_ahead();
+  }
+  return *this;
+ }
+
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+#define OTL_D7(T,T_type)                                \
+  otl_ref_select_stream& operator>>(T& n)               \
+  {                                                     \
+    check_if_executed();                                \
+    if(eof_intern())return *this;                       \
+    get_next();                                         \
+    if(!eof_intern()){                                  \
+      int match_found=otl_numeric_convert_T<T,T_type>   \
+        (sl[cur_col].ftype,                             \
+         sl[cur_col].val(cur_row),                      \
+         n);                                            \
+      if(!match_found)                                  \
+        strict_check_throw(T_type);                     \
+      look_ahead();                                     \
+    }                                                   \
+    return *this;                                       \
+  }
+#else
+#define OTL_D7(T,T_type)                                        \
+  otl_ref_select_stream& operator>>(T& n)                       \
+  {                                                             \
+    check_if_executed();                                        \
+    if(eof_intern())return *this;                               \
+    get_next();                                                 \
+    if(!eof_intern()){                                          \
+      int match_found=otl_numeric_convert_T                     \
+        (sl[cur_col].ftype,                                     \
+         sl[cur_col].val(cur_row),                              \
+         n);                                                    \
+      if(!match_found){                                         \
+        if(check_type(otl_var_double,T_type))                   \
+          n=OTL_PCONV(T,double,sl[cur_col].val(cur_row));       \
+      }                                                         \
+      look_ahead();                                             \
+    }                                                           \
+    return *this;                                               \
+  }
+#endif
+
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  OTL_D7(int,otl_var_int)
+  OTL_D7(unsigned,otl_var_unsigned_int)
+  OTL_D7(long,otl_var_long_int)
+  OTL_D7(short,otl_var_short)
+  OTL_D7(float,otl_var_float)
+  OTL_D7(double,otl_var_double)
+#else
+  template<OTL_TYPE_NAME T,const int T_type> OTL_D7(T,T_type)
+#endif
+
+ otl_ref_select_stream& operator>>(otl_long_string& s)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  switch(sl[cur_col].ftype){
+  case otl_var_varchar_long:
+  case otl_var_raw_long:
+    {
+      if(!eof_intern()){
+        unsigned char* c=OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+        int len=sl[cur_col].get_len(cur_row);
+        if(len>s.buf_size)len=s.buf_size;
+        otl_memcpy(s.v,c,len,sl[cur_col].ftype);
+        s.v[len]=0;
+        s.set_len(len);
+        look_ahead();
+      }  
+    }    
+    break;
+  case otl_var_raw:
+    {
+      if(!eof_intern()){
+        unsigned char* c=OTL_RCAST(unsigned char*,sl[cur_col].val(cur_row));
+        int len=OTL_SCAST(int,*OTL_RCAST(unsigned short*,c));
+        if(len>s.buf_size)len=s.buf_size;
+        otl_memcpy(s.v,c+sizeof(short int),len,sl[cur_col].ftype);
+        s.set_len(len);
+        look_ahead();
+      }  
+    }    
+    break;
+  case otl_var_blob:
+  case otl_var_clob:
+    {
+      if(!eof_intern()){
+        int len;
+        int rc=sl[cur_col].var_struct.get_blob(cur_row,s.v,s.buf_size,len);
+        if(rc==0){
+          if(this->adb)this->adb->throw_count++;
+          if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+          if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+            uncaught_exception())return *this; 
+#endif
+          throw otl_exception(adb->connect_struct,
+                              stm_label?stm_label:stm_text);
+        }
+        s.set_len(len);
+        if(sl[cur_col].ftype==otl_var_clob)
+          s.null_terminate_string(len);
+        look_ahead();
+      }
+    }
+    break;
+  }
+  return *this;
+ }
+
+ otl_ref_select_stream& operator>>(otl_lob_stream& s)
+ {
+  check_if_executed();
+  if(eof_intern())return *this;
+  get_next();
+  if((sl[cur_col].ftype==otl_var_blob||
+      sl[cur_col].ftype==otl_var_clob)&&
+     !eof_intern()){
+   s.init
+    (&sl[cur_col],
+     adb,
+     OTL_RCAST(otl_ref_cursor*,this),
+     cur_row,
+     otl_lob_stream_read_mode,
+     this->is_null());
+   delay_next=1;
+  }
+  return *this;
+ }
+
+  otl_ref_select_stream& operator<<(const otl_null& /*n*/)
+  {
+    check_in_var();
+    this->vl[cur_in]->set_null(0);
+    get_in_next();
+    return *this;
+  }
+
+ otl_ref_select_stream& operator<<(const char c)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+   char* tmp=OTL_RCAST(char*,vl[cur_in]->val());
+   tmp[0]=c;
+   tmp[1]=0;
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+ otl_ref_select_stream& operator<<(const unsigned char c)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+   unsigned char* tmp=OTL_RCAST(unsigned char*,vl[cur_in]->val());
+   tmp[0]=c;
+   tmp[1]=0;
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ otl_ref_select_stream& operator<<(const OTL_STRING_CONTAINER& s)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+
+   int overflow;
+   otl_strcpy
+    (OTL_RCAST(unsigned char*,vl[cur_in]->val()),
+     OTL_RCAST(unsigned char*,OTL_CCAST(char*,s.c_str())),
+     overflow,
+     vl[cur_in]->elem_size,
+     OTL_SCAST(int,s.length())
+    );
+   if(overflow){
+    char temp_var_info[256];
+    otl_var_info_var
+     (vl[cur_in]->name,
+      vl[cur_in]->ftype,
+      otl_var_char,
+      temp_var_info,
+      sizeof(temp_var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw otl_exception
+     (otl_error_msg_4,
+      otl_error_code_4,
+      stm_label?stm_label:stm_text,
+      temp_var_info);
+   }
+
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+#endif
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+  otl_ref_select_stream& operator<<(const OTL_UNICODE_STRING_TYPE& s)
+  {
+    check_in_var();
+    if(check_in_type(otl_var_char,1)){
+      
+      int overflow;
+      otl_strcpy4
+        (OTL_RCAST(unsigned char*,vl[cur_in]->val()),
+         OTL_RCAST(unsigned char*,
+                   OTL_CCAST(OTL_UNICODE_CHAR_TYPE*,s.c_str())),
+         overflow,
+         vl[cur_in]->elem_size,
+         OTL_SCAST(int,s.length())
+         );
+      if(overflow){
+        char temp_var_info[256];
+        otl_var_info_var
+          (vl[cur_in]->name,
+           vl[cur_in]->ftype,
+           otl_var_char,
+           temp_var_info,
+           sizeof(temp_var_info));
+        if(this->adb)this->adb->throw_count++;
+        if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+        if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+          uncaught_exception())return *this; 
+#endif
+        throw otl_exception
+          (otl_error_msg_4,
+           otl_error_code_4,
+           stm_label?stm_label:stm_text,
+           temp_var_info);
+      }
+    }
+    this->vl[cur_in]->set_not_null(0);
+    get_in_next();
+    return *this;
+  }
+#endif
+
+ otl_ref_select_stream& operator<<(const char* s)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+
+   int overflow;
+   otl_strcpy
+    (OTL_RCAST(unsigned char*,vl[cur_in]->val()),
+     OTL_RCAST(unsigned char*,OTL_CCAST(char*,s)),
+     overflow,
+     vl[cur_in]->elem_size
+    );
+   if(overflow){
+    char temp_var_info[256];
+    otl_var_info_var
+     (vl[cur_in]->name,
+      vl[cur_in]->ftype,
+      otl_var_char,
+      temp_var_info,
+      sizeof(temp_var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return *this; 
+#endif
+    throw otl_exception
+     (otl_error_msg_4,
+      otl_error_code_4,
+      stm_label?stm_label:stm_text,
+      temp_var_info);
+   }
+
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+ otl_ref_select_stream& operator<<(const unsigned char* s)
+ {
+  check_in_var();
+  if(check_in_type(otl_var_char,1)){
+
+   int overflow;
+   otl_strcpy4
+    (OTL_RCAST(unsigned char*,vl[cur_in]->val()),
+     OTL_CCAST(unsigned char*,s),
+     overflow,
+     vl[cur_in]->elem_size
+    );
+   if(overflow){
+    char temp_var_info[256];
+    otl_var_info_var
+     (vl[cur_in]->name,
+      vl[cur_in]->ftype,
+      otl_var_char,
+      temp_var_info,
+      sizeof(temp_var_info));
+    if(this->adb)this->adb->throw_count++;
+  if(this->adb&&this->adb->throw_count>1)return *this;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+    uncaught_exception())return *this; 
+#endif
+    throw otl_exception
+     (otl_error_msg_4,
+      otl_error_code_4,
+      stm_label?stm_label:stm_text,
+      temp_var_info);
+   }
+
+  }
+  this->vl[cur_in]->set_not_null(0);
+  get_in_next();
+  return *this;
+ }
+
+#define OTL_D8(T,T_type)                        \
+  otl_ref_select_stream& operator<<(const T n)  \
+  {                                             \
+    check_in_var();                             \
+    if(check_in_type(T_type,sizeof(T))){        \
+      *OTL_RCAST(T*,vl[cur_in]->val())=n;       \
+    }                                           \
+    this->vl[cur_in]->set_not_null(0);          \
+    get_in_next();                              \
+    return *this;                               \
+  }
+
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+  OTL_D8(int,otl_var_int)
+  OTL_D8(unsigned,otl_var_unsigned_int)
+  OTL_D8(long,otl_var_long_int)
+  OTL_D8(short,otl_var_short)
+  OTL_D8(float,otl_var_float)
+  OTL_D8(double,otl_var_double)
+#else
+  template<OTL_TYPE_NAME T,const int T_type> OTL_D8(T,T_type)
+#endif
+
+ int select_list_len(void)
+ {
+  return sl_len;
+ }
+
+ int column_ftype(int ndx=0)
+ {
+  return sl[ndx].ftype;
+ }
+
+ int column_size(int ndx=0)
+ {
+  return sl[ndx].elem_size;
+ }
+
+ otl_column_desc* sl_desc;
+ int sl_len;
+ otl_generic_variable* sl;
+
+
+protected:
+
+
+ int null_fetched;
+ int ret_code;
+ int cur_col;
+ int cur_in;
+ int executed;
+ char var_info[256];
+
+ void init(void)
+ {
+  same_sl_flag=0;
+  sl=0;
+  sl_len=0;
+  null_fetched=0;
+  ret_code=0;
+  sl_desc=0;
+  executed=0;
+  cur_in=0;
+  stm_text=0;
+ }
+
+ void get_next(void)
+ {
+  if(cur_col<sl_len-1){
+   ++cur_col;
+   null_fetched=sl[cur_col].is_null(cur_row);
+  }else{
+   ret_code=next();
+   cur_col=0;
+  }
+ }
+
+  int check_type_throw(int type_code, int actual_data_type)
+  {
+    int out_type_code;
+    if(actual_data_type!=0)
+      out_type_code=actual_data_type;
+    else
+      out_type_code=type_code;
+    otl_var_info_col
+      (sl[cur_col].pos,
+       sl[cur_col].ftype,
+       out_type_code,
+       var_info,
+       sizeof(var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw otl_exception
+      (otl_error_msg_0,
+       otl_error_code_0,
+       stm_label?stm_label:stm_text,
+       var_info);
+  }
+
+  int check_type(int type_code, int actual_data_type=0)
+  {
+    switch(sl[cur_col].ftype){
+    case otl_var_timestamp:
+    case otl_var_tz_timestamp:
+    case otl_var_ltz_timestamp:
+      if(type_code==otl_var_timestamp)
+        return 1;
+    default:
+      if(sl[cur_col].ftype==type_code)
+        return 1;
+    }
+    return check_type_throw(type_code,actual_data_type);
+  }
+
+ void look_ahead(void)
+ {
+  if(cur_col==sl_len-1){
+   ret_code=next();
+   cur_col=-1;
+   ++_rfc;
+  }
+ }
+
+ void get_select_list(void)
+ {int i,j,rc;
+
+  otl_auto_array_ptr<otl_column_desc> loc_ptr(otl_var_list_size);
+  otl_column_desc* sl_desc_tmp=loc_ptr.ptr;
+  int sld_tmp_len=0;
+  int ftype,elem_size;
+  OCIBind* bindpp;
+
+  if(!sel_cur.connected){
+   sel_cur.open(*adb);
+   rc=OCIBindByName
+    (cursor_struct.cda,
+     &bindpp,
+     cursor_struct.errhp,
+     OTL_RCAST(text*,cur_placeholder),
+     OTL_SCAST(sb4,strlen(cur_placeholder)),
+     OTL_RCAST(dvoid*,&sel_cur.cursor_struct.cda),
+     0,
+     SQLT_RSET,
+     0,
+     0,
+     0,
+     0,
+     0,
+     OTL_SCAST(ub4,OCI_DEFAULT));
+   if(rc!=0){
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return; 
+#endif
+    throw otl_exception(cursor_struct,
+                        stm_label?stm_label:stm_text);
+   }
+  }
+
+  for(i=0;i<vl_len;++i)
+   otl_tmpl_cursor
+    <otl_exc,
+    otl_conn,
+    otl_cur,
+    otl_var>::bind(*vl[i]);
+  otl_tmpl_cursor
+  <otl_exc,
+   otl_conn,
+   otl_cur,
+   otl_var>::exec(1); // Executing the PLSQL master block
+  sel_cur.connected=1;
+  cur_row=-2;
+  if(same_sl_flag && sl){
+   // assuming that ref.cur's select list is the same as
+   // in previous executions of the master block.
+   for(i=0;i<sl_len;++i)sel_cur.bind(sl[i]);
+   return;
+  }else{
+   sld_tmp_len=0;
+   sel_cur.cursor_struct.straight_select=0;
+   for(i=1;sel_cur.describe_column(sl_desc_tmp[i-1],i);++i){
+    ++sld_tmp_len;
+    if(sld_tmp_len==loc_ptr.arr_size_){
+      loc_ptr.double_size();
+      sl_desc_tmp=loc_ptr.ptr;
+    }
+   }
+   sl_len=sld_tmp_len;
+   if(sl){
+    delete[] sl;
+    sl=0;
+   }
+   sl=new otl_generic_variable[sl_len==0?1:sl_len];
+   int max_long_size=this->adb->get_max_long_size();
+   for(j=0;j<sl_len;++j){
+    otl_generic_variable::map_ftype
+     (sl_desc_tmp[j],
+      max_long_size,
+      ftype,
+      elem_size,
+      this->local_override.getLen()>0?this->local_override:*override,
+      j+1);
+    sl[j].copy_pos(j+1);
+#if defined(OTL_ORA_UNICODE)||defined(OTL_ORA_UTF8)
+     if(sl_desc_tmp[j].charset_form==2)
+       sl[j].var_struct.nls_flag=true;
+#endif
+    sl[j].init(ftype,
+               elem_size,
+               OTL_SCAST(otl_stream_buffer_size_type,array_size),
+               &adb->connect_struct
+               );
+   }
+   if(sl_desc){
+    delete[] sl_desc;
+    sl_desc=0;
+   }
+   sl_desc=new otl_column_desc[sl_len==0?1:sl_len];
+   for(i=0;i<sl_len;++i)
+     sl_desc[i]=sl_desc_tmp[i];
+   for(i=0;i<sl_len;++i)sel_cur.bind(sl[i]);
+  }
+ }
+
+ void get_in_next(void)
+ {
+  if(cur_in==vl_len-1)
+   rewind();
+  else{
+   ++cur_in;
+   executed=0;
+  }
+ }
+
+  int check_in_type_throw(int type_code)
+  {
+    otl_var_info_var
+      (vl[cur_in]->name,
+       vl[cur_in]->ftype,
+       type_code,
+       var_info,
+       sizeof(var_info));
+    if(this->adb)this->adb->throw_count++;
+    if(this->adb&&this->adb->throw_count>1)return 0;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+    if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+      uncaught_exception())return 0; 
+#endif
+    throw otl_exception
+      (otl_error_msg_0,
+       otl_error_code_0,
+       stm_label?stm_label:stm_text,
+       var_info);
+  }
+
+  int check_in_type(int type_code,int tsize)
+  {
+    switch(vl[cur_in]->ftype){
+    case otl_var_char:
+      if(type_code==otl_var_char)
+        return 1;
+    case otl_var_timestamp:
+    case otl_var_tz_timestamp:
+    case otl_var_ltz_timestamp:
+      if(type_code==otl_var_timestamp)
+        return 1;
+    default:
+      if(vl[cur_in]->ftype==type_code &&
+        vl[cur_in]->elem_size==tsize)
+        return 1; 
+    }
+    return check_in_type_throw(type_code);
+  }
+  
+ void check_in_var(void)
+ {
+  if(vl_len==0){
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw otl_exception
+    (otl_error_msg_1,
+     otl_error_code_1,
+     stm_label?stm_label:stm_text,
+     0);
+  }
+ }
+
+ void check_if_executed(void)
+ {
+  if(!executed){
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return; 
+#endif
+   throw otl_exception
+    (otl_error_msg_2,
+     otl_error_code_2,
+     stm_label?stm_label:stm_text,
+     0);
+  }
+ }
+
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+  void strict_check_throw(int type_code)
+  {
+   otl_var_info_col
+     (sl[cur_col].pos,
+      sl[cur_col].ftype,
+      type_code,
+      var_info,
+      sizeof(var_info));
+   if(this->adb)this->adb->throw_count++;
+   if(this->adb&&this->adb->throw_count>1)return;
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception())return;
+#endif
+   throw otl_exception
+     (otl_error_msg_0,
+      otl_error_code_0,
+      this->stm_label?
+      this->stm_label:
+      this->stm_text,
+      var_info);
+  }
+#endif
+
+
+};
+
+class otl_stream_shell: public otl_stream_shell_generic{
+public:
+
+  otl_ref_select_stream* ref_ss;
+  otl_select_stream* ss;
+  otl_inout_stream* io;
+  otl_connect* adb;
+  
+  int auto_commit_flag;
+  bool lob_stream_flag;
+  
+  otl_var_desc* iov;
+  int iov_len;
+  int next_iov_ndx;
+  
+  otl_var_desc* ov;
+  int ov_len;
+  int next_ov_ndx;
+  
+  bool flush_flag;
+  int stream_type;
+
+ otl_select_struct_override override;
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+ OTL_STRING_CONTAINER orig_sql_stm;
+#endif
+
+
+ otl_stream_shell()
+ {
+   should_delete=0;
+   stream_type=otl_no_stream_type;
+   lob_stream_flag=false;
+ }
+
+ otl_stream_shell(const int ashould_delete)
+ {
+  should_delete=0;
+  iov=0; iov_len=0;
+  ov=0; ov_len=0;
+  next_iov_ndx=0;
+  next_ov_ndx=0;
+  override.len=0;
+  ss=0; io=0; ref_ss=0;
+  adb=0;
+  flush_flag=true;
+  should_delete=ashould_delete;
+  stream_type=otl_no_stream_type;
+  lob_stream_flag=false;
+ }
+
+ virtual ~otl_stream_shell()
+ {
+  if(should_delete){
+   delete[] iov;
+   delete[] ov;
+
+   iov=0; iov_len=0;
+   ov=0; ov_len=0;
+   next_iov_ndx=0;
+   next_ov_ndx=0;
+   override.len=0;
+   flush_flag=true;
+
+   delete ss;
+   delete io;
+   delete ref_ss;
+   ss=0; io=0; ref_ss=0;
+   adb=0;
+  }
+ }
+
+};
+
+class otl_sp_parm_desc{
+public:
+
+ int position;
+ char arg_name[40];
+ char in_out[20];
+ char data_type[40];
+ char bind_var[128];
+
+ otl_sp_parm_desc()
+ {
+  position=-1;
+  arg_name[0]=0;
+  in_out[0]=0;
+  data_type[0]=0;
+  bind_var[0]=0;
+ }
+
+ otl_sp_parm_desc(const otl_sp_parm_desc& r)
+ {
+  copy(r);
+ }
+
+ otl_sp_parm_desc& operator=(const otl_sp_parm_desc& r)
+ {
+  copy(r);
+  return *this;
+ }
+
+ ~otl_sp_parm_desc(){}
+
+protected:
+
+ void copy(const otl_sp_parm_desc& r)
+ {
+  position=r.position;
+  OTL_STRCPY_S(arg_name,sizeof(arg_name),r.arg_name);
+  OTL_STRCPY_S(in_out,sizeof(in_out),r.in_out);
+  OTL_STRCPY_S(data_type,sizeof(data_type),r.data_type);
+  OTL_STRCPY_S(bind_var,sizeof(bind_var),r.bind_var);
+ }
+
+};
+
+class otl_stream
+#if defined(OTL_ORA_DECLARE_COMMON_READ_STREAM_INTERFACE)
+  : public otl_read_stream_interface
+#endif
+{
+public:
+  
+  otl_stream_shell* shell;
+  otl_ptr<otl_stream_shell> shell_pt;
+  int connected;
+  
+  otl_ref_select_stream** ref_ss;
+  otl_select_stream** ss;
+  otl_inout_stream** io;
+  otl_connect** adb;
+  
+  int* auto_commit_flag;
+  
+  otl_var_desc** iov;
+  int* iov_len;
+  int* next_iov_ndx;
+
+  otl_var_desc** ov;
+  int* ov_len;
+  int* next_ov_ndx;
+  int end_marker;
+  int oper_int_called;
+  int last_eof_rc;
+  bool last_oper_was_read_op;
+
+  otl_select_struct_override* override;
+
+protected:
+
+  int buf_size_;
+
+  void reset_end_marker(void)
+  {
+    last_eof_rc=0;
+    end_marker=-1;
+    oper_int_called=0;
+  }
+
+ static void convert_bind_var_datatype
+ (char* out_buf,
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400) // VC++ 8.0 or higher
+  const size_t out_buf_sz,
+#else
+  const size_t /*out_buf_sz*/,
+#endif
+#else
+  const size_t /*out_buf_sz*/,
+#endif
+  const char* datatype,
+  const int varchar_size,
+  const int all_num2type)
+ {
+  out_buf[0]=0;
+  if(strcmp(datatype,"BINARY_INTEGER")==0||
+     strcmp(datatype,"NATIVE INTEGER")==0||
+     strcmp(datatype,"FLOAT")==0||
+     strcmp(datatype,"NUMBER")==0){
+   switch(all_num2type){
+   case otl_var_char:
+    OTL_STRCPY_S(out_buf,out_buf_sz,"char[50]");
+    break;
+   case otl_var_double:
+    OTL_STRCPY_S(out_buf,out_buf_sz,"double");
+    break;
+   case otl_var_float:
+    OTL_STRCPY_S(out_buf,out_buf_sz,"float");
+    break;
+   case otl_var_long_int:
+    OTL_STRCPY_S(out_buf,out_buf_sz,"long");
+    break;
+   case otl_var_int:
+    OTL_STRCPY_S(out_buf,out_buf_sz,"int");
+    break;
+   case otl_var_unsigned_int:
+    OTL_STRCPY_S(out_buf,out_buf_sz,"unsigned");
+    break;
+   case otl_var_short:
+    OTL_STRCPY_S(out_buf,out_buf_sz,"short");
+    break;
+   default:
+    break;
+   }
+  }else if(strcmp(datatype,"DATE")==0)
+   OTL_STRCPY_S(out_buf,out_buf_sz,"timestamp");
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+else if(strcmp(datatype,"TIMESTAMP")==0)
+   OTL_STRCPY_S(out_buf,out_buf_sz,"timestamp");
+#endif
+  else if(strcmp(datatype,"VARCHAR2")==0)
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+   sprintf_s(out_buf,out_buf_sz,"char[%d]",varchar_size);
+#else
+   sprintf(out_buf,"char[%d]",varchar_size);
+#endif
+#else
+   sprintf(out_buf,"char[%d]",varchar_size);
+#endif
+  else if(strcmp(datatype,"CHAR")==0)
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+   sprintf_s(out_buf,out_buf_sz,"char[%d]",varchar_size);
+#else
+   sprintf(out_buf,"char[%d]",varchar_size);
+#endif
+#else
+   sprintf(out_buf,"char[%d]",varchar_size);
+#endif
+ }
+ 
+public:
+
+  void setBufSize(int buf_size)
+  {
+    buf_size_=buf_size;
+  }
+  
+  int getBufSize(void) const
+  {
+    return buf_size_;
+  }
+
+  operator int(void) OTL_THROWS_OTL_EXCEPTION
+  {
+    if(shell && shell->lob_stream_flag){
+      if(this->adb&&*this->adb)(*this->adb)->throw_count++;
+      if(this->adb&&*this->adb&&(*this->adb)->throw_count>1)return 0;
+      char* stm_label=0;
+      char* stm_text=0;
+      switch(shell->stream_type){
+      case otl_no_stream_type:
+        break;
+      case otl_inout_stream_type:
+        stm_label=(*io)->stm_label;
+        stm_text=(*io)->stm_text;
+        break;
+      case otl_select_stream_type:
+        stm_label=(*ss)->stm_label;
+        stm_text=(*ss)->stm_text;
+        break;
+      case otl_refcur_stream_type:
+        stm_label=(*ref_ss)->stm_label;
+        stm_text=(*ref_ss)->stm_text;
+        break;
+      }
+      throw otl_exception
+        (otl_error_msg_24,
+         otl_error_code_24,
+         stm_label?stm_label:stm_text);
+    }
+    if(!last_oper_was_read_op){
+      if(this->adb&&*this->adb)(*this->adb)->throw_count++;
+      if(this->adb&&*this->adb&&(*this->adb)->throw_count>1)return 0;
+      char* stm_label=0;
+      char* stm_text=0;
+      switch(shell->stream_type){
+      case otl_no_stream_type:
+        break;
+      case otl_inout_stream_type:
+        stm_label=(*io)->stm_label;
+        stm_text=(*io)->stm_text;
+        break;
+      case otl_select_stream_type:
+        stm_label=(*ss)->stm_label;
+        stm_text=(*ss)->stm_text;
+        break;
+      case otl_refcur_stream_type:
+        stm_label=(*ref_ss)->stm_label;
+        stm_text=(*ref_ss)->stm_text;
+        break;
+      }
+      throw otl_exception
+        (otl_error_msg_18,
+         otl_error_code_18,
+         stm_label?stm_label:stm_text);
+    }
+    if(end_marker==1)return 0;
+    int rc=0;
+    int temp_eof=eof();
+    if(temp_eof && end_marker==-1 && oper_int_called==0){
+      end_marker=1;
+      if(last_eof_rc==1)
+        rc=0;
+      else
+        rc=1;
+    }else if(!temp_eof && end_marker==-1)
+      rc=1;
+    else if(temp_eof && end_marker==-1){
+      end_marker=0;
+      rc=1;
+    }else if(temp_eof && end_marker==0){
+      end_marker=1;
+      rc=0;
+    }
+    if(!oper_int_called)oper_int_called=1;
+    return rc;
+  }
+
+#if !defined(OTL_UNICODE)
+ static void create_stored_proc_call
+ (otl_connect& db,
+  otl_stream& args_strm,
+  char* sql_stm,
+  int& stm_type,
+  char* refcur_placeholder,
+  const char* proc_name,
+  const char* package_name,
+  const char* schema_name=0,
+  const bool schema_name_included=false,
+  const int varchar_size=2001,
+  const int all_num2type=otl_var_double)
+ {
+  sql_stm[0]=0;
+  stm_type=otl_no_stream_type;
+  refcur_placeholder[0]=0;
+
+  char full_name[1024];
+  char temp_buf[1024];
+  char temp_buf2[1024];
+  int i;
+
+  if(package_name==0)
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+    sprintf_s(full_name,sizeof(full_name),"%s",proc_name);
+#else
+    sprintf(full_name,"%s",proc_name);
+#endif
+#else
+    sprintf(full_name,"%s",proc_name);
+#endif
+  else
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+    sprintf_s(full_name,sizeof(full_name),"%s.%s",package_name,proc_name);
+#else
+    sprintf(full_name,"%s.%s",package_name,proc_name);
+#endif
+#else
+    sprintf(full_name,"%s.%s",package_name,proc_name);
+#endif
+  if(schema_name_included&&schema_name!=0){
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+    sprintf_s(temp_buf,sizeof(temp_buf),"%s.%s",schema_name,full_name);
+#else
+    sprintf(temp_buf,"%s.%s",schema_name,full_name);
+#endif
+#else
+    sprintf(temp_buf,"%s.%s",schema_name,full_name);
+#endif
+    OTL_STRCPY_S(full_name,sizeof(full_name),temp_buf);
+  }
+
+  if(!args_strm.good()){
+   args_strm.open
+    (50,
+     "select position, "
+     "       lower(':'||nvl(argument_name,'rc__')) argument_name, "
+     "       in_out, "
+     "       nvl(data_type,'*') data_type, "
+     "       ':'||lower(nvl(argument_name,'rc__'))|| "
+     "       decode(data_type,'REF CURSOR',' ', "
+     "              '<'||'%s,'|| "
+     "              decode(in_out,'IN','in', "
+     "                     'OUT','out', "
+     "                     'IN/OUT','inout', "
+     "                     'xxx') "
+     "              ||'>' "
+     "             ) || decode(position,0,' := ',' ') "
+     "       bind_var "
+     "from all_arguments "
+     "where object_name=upper(:obj_name<char[50]>) "
+     "  and (:pkg_name<char[50]> is null and package_name is null or "
+     "       :pkg_name is not null and package_name=upper(:pkg_name)) "
+     "  and ((:owner<char[50]> is null "
+     "        and owner= "
+     "            (select owner from "
+     "              (select user as owner "
+     "               from user_objects "
+     "               where (:pkg_name<char[50]> is not null "
+     "                      and object_name = upper(:pkg_name<char[50]>) "
+     "                      and object_type = 'PACKAGE') "
+     "               or (:pkg_name<char[50]> is null "
+     "                   and object_name = upper(:obj_name<char[50]>) "
+     "                   and object_type in ('FUNCTION','PROCEDURE')) "
+     "               union all "
+     "               select table_owner as owner "
+     "               from user_synonyms "
+     "               where (:pkg_name<char[50]> is not null "
+     "                      and synonym_name = upper(:pkg_name<char[50]>)) "
+     "               or (:pkg_name<char[50]> is null "
+     "                   and synonym_name = upper(:obj_name<char[50]>)) "
+     "               union all "
+     "               select table_owner as owner "
+     "               from all_synonyms "
+     "               where (:pkg_name<char[50]> is not null "
+     "                      and synonym_name = upper(:pkg_name<char[50]>)) "
+     "               or (:pkg_name<char[50]> is null "
+     "                   and synonym_name = upper(:obj_name<char[50]>)) "
+     "              ) "
+     "             where rownum = 1) "
+     "      or "
+     "       (:owner<char[50]> is not null and owner=upper(:owner))) "
+	 "  and data_level=0 )"
+     "order by position",
+     db);
+  }
+  
+  otl_auto_array_ptr< otl_Tptr<otl_sp_parm_desc> > desc(otl_var_list_size);
+  int desc_len=0;
+  otl_sp_parm_desc parm;
+  
+  args_strm<<proc_name;
+  if(package_name==0)
+   args_strm<<otl_null();
+  else
+   args_strm<<package_name;
+  if(schema_name==0)
+   args_strm<<otl_null();
+  else
+   args_strm<<schema_name;
+  while(!args_strm.eof()){
+   args_strm>>parm.position;
+   args_strm>>parm.arg_name;
+   args_strm>>parm.in_out;
+   args_strm>>parm.data_type;
+   args_strm>>parm.bind_var;
+   ++desc_len;
+   if(desc_len==desc.arr_size_){
+     int j;
+     for(j=0;j<desc.arr_size_;++j)
+       desc.ptr[j].do_not_destroy=true;
+     desc.double_size();
+     for(j=0;j<desc.arr_size_;++j)
+       desc.ptr[j].do_not_destroy=false;
+   }
+   desc.ptr[desc_len-1].assign(new otl_sp_parm_desc(parm));
+  }
+
+  if(desc_len==0){
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+   sprintf_s(temp_buf,sizeof(temp_buf),"procedure %s",full_name);
+#else
+   sprintf(temp_buf,"procedure %s",full_name);
+#endif
+#else
+   sprintf(temp_buf,"procedure %s",full_name);
+#endif
+   throw otl_exception
+    (otl_error_msg_13,
+     otl_error_code_13,
+     temp_buf);
+  }
+
+  if(desc_len==1){
+   if(desc.ptr[0].ptr->position==1 && desc.ptr[0].ptr->data_type[0]=='*'){
+    // procedure without any parameters
+     otl_strcat(sql_stm,"BEGIN ");
+     otl_strcat(sql_stm,full_name);
+     otl_strcat(sql_stm,"; END;");
+     stm_type=otl_constant_sql_type;
+    return;
+   }if(desc.ptr[0].ptr->position==1 && desc.ptr[0].ptr->data_type[0]!='*'){
+    // procedure with one parameter
+    if(strcmp(desc.ptr[0].ptr->data_type,"REF CURSOR")==0){
+     // procedure with one parameter of refcur type
+     if(strcmp(desc.ptr[0].ptr->in_out,"IN")==0){
+      // refcur parameter should be either OUT or IN OUT, not IN.
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+      sprintf_s(temp_buf,sizeof(temp_buf),"procedure %s",full_name);
+#else
+      sprintf(temp_buf,"procedure %s",full_name);
+#endif
+#else
+      sprintf(temp_buf,"procedure %s",full_name);
+#endif
+      throw otl_exception
+       (otl_error_msg_15,
+        otl_error_code_15,
+        temp_buf,0);
+     }
+     otl_strcat(sql_stm,"BEGIN ");
+     otl_strcat(sql_stm,full_name);
+     otl_strcat(sql_stm,"(");
+     otl_strcat(sql_stm,desc.ptr[0].ptr->bind_var);
+     otl_strcat(sql_stm,"); END;");
+     stm_type=otl_refcur_stream_type;
+     otl_strcpy(OTL_RCAST(unsigned char*,refcur_placeholder),
+                OTL_RCAST(const unsigned char*,desc.ptr[0].ptr->arg_name));
+     return;
+    }else{
+     // procedure with one scalar parameter
+     convert_bind_var_datatype
+      (temp_buf,sizeof(temp_buf),desc.ptr[0].ptr->data_type,
+       varchar_size,all_num2type);
+     if(temp_buf[0]==0){
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+      sprintf_s(temp_buf,sizeof(temp_buf),"procedure %s, parameter %s",
+                full_name,desc.ptr[0].ptr->arg_name);
+#else
+      sprintf(temp_buf,"procedure %s, parameter %s",
+              full_name,desc.ptr[0].ptr->arg_name);
+#endif
+#else
+      sprintf(temp_buf,"procedure %s, parameter %s",
+              full_name,desc.ptr[0].ptr->arg_name);
+#endif
+      throw otl_exception
+       (otl_error_msg_14,
+        otl_error_code_14,
+        temp_buf,0);
+     }
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+     sprintf_s(temp_buf2,sizeof(temp_buf2),desc.ptr[0].ptr->bind_var,temp_buf);
+#else
+     sprintf(temp_buf2,desc.ptr[0].ptr->bind_var,temp_buf);
+#endif
+#else
+     sprintf(temp_buf2,desc.ptr[0].ptr->bind_var,temp_buf);
+#endif
+     otl_strcat(sql_stm,"BEGIN ");
+     otl_strcat(sql_stm,full_name);
+     otl_strcat(sql_stm,"(");
+     otl_strcat(sql_stm,temp_buf2);
+     otl_strcat(sql_stm,"); END;");
+     stm_type=otl_inout_stream_type;
+     refcur_placeholder[0]=0;
+     return;
+    }
+   }else if(desc.ptr[0].ptr->position==0){
+    if(strcmp(desc.ptr[0].ptr->data_type,"REF CURSOR")==0){
+     // refcur function without any parameters
+      otl_strcat(sql_stm,"BEGIN ");
+      otl_strcat(sql_stm,desc.ptr[0].ptr->bind_var);
+      otl_strcat(sql_stm," ");
+      otl_strcat(sql_stm,full_name);
+      otl_strcat(sql_stm,"; END;");
+      stm_type=otl_refcur_stream_type;
+      otl_strcpy(OTL_RCAST(unsigned char*,refcur_placeholder),
+                 OTL_RCAST(const unsigned char*,desc.ptr[0].ptr->arg_name));
+      return;
+    }else{
+     // scalar function without any parameters
+     convert_bind_var_datatype
+      (temp_buf,sizeof(temp_buf),desc.ptr[0].ptr->data_type,
+       varchar_size,all_num2type);
+     if(temp_buf[0]==0){
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+       sprintf_s(temp_buf,sizeof(temp_buf),
+                 "procedure %s, parameter %s",
+                 full_name,
+                 desc.ptr[0].ptr->arg_name);
+#else
+      sprintf(temp_buf,
+              "procedure %s, parameter %s",
+              full_name,
+              desc.ptr[0].ptr->arg_name);
+#endif
+#else
+      sprintf(temp_buf,
+              "procedure %s, parameter %s",
+              full_name,
+              desc.ptr[0].ptr->arg_name);
+#endif
+      throw otl_exception
+       (otl_error_msg_14,
+        otl_error_code_14,
+        temp_buf,0);
+     }
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+     sprintf_s(temp_buf2,sizeof(temp_buf2),desc.ptr[0].ptr->bind_var,temp_buf);
+#else
+     sprintf(temp_buf2,desc.ptr[0].ptr->bind_var,temp_buf);
+#endif
+#else
+     sprintf(temp_buf2,desc.ptr[0].ptr->bind_var,temp_buf);
+#endif
+     otl_strcat(sql_stm,"BEGIN ");
+     otl_strcat(sql_stm,temp_buf2);
+     otl_strcat(sql_stm," ");
+     otl_strcat(sql_stm,full_name);
+     otl_strcat(sql_stm,"; END;");
+     stm_type=otl_inout_stream_type;
+     refcur_placeholder[0]=0;
+     return;
+    }
+   }
+  }
+  
+  // Checking if the procedure is of the "refcur" type
+  bool refcur_flag=false;
+  bool refcur_outpar=false;
+  int refcur_count=0;
+  bool inpar_only=true;
+  for(i=0;i<desc_len;++i){
+   if(inpar_only && 
+      strcmp(desc.ptr[i].ptr->in_out,"IN")!=0 &&
+      strcmp(desc.ptr[i].ptr->data_type,"REF CURSOR")!=0)
+    inpar_only=false;
+   if(strcmp(desc.ptr[i].ptr->data_type,"REF CURSOR")==0){
+    ++refcur_count;
+    refcur_flag=true;
+    refcur_outpar=strcmp(desc.ptr[i].ptr->in_out,"IN")!=0;
+   }
+  }
+  if(refcur_flag){
+   if(!inpar_only||refcur_count>1||!refcur_outpar){
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+    sprintf_s(temp_buf,sizeof(temp_buf),"procedure %s",full_name);
+#else
+    sprintf(temp_buf,"procedure %s",full_name);
+#endif
+#else
+    sprintf(temp_buf,"procedure %s",full_name);
+#endif
+    throw otl_exception
+     (otl_error_msg_15,
+      otl_error_code_15,
+      temp_buf,0);
+   }
+   stm_type=otl_refcur_stream_type;
+   refcur_placeholder[0]=0;
+   sql_stm[0]=0;
+   bool full_name_printed=false;
+   for(i=0;i<desc_len;++i){
+
+    if(i==0)otl_strcat(sql_stm,"BEGIN ");
+    if(strcmp(desc.ptr[i].ptr->data_type,"REF CURSOR")==0)
+     otl_strcpy(OTL_RCAST(unsigned char*,refcur_placeholder),
+                OTL_RCAST(const unsigned char*,desc.ptr[i].ptr->arg_name));
+
+    // in case of a function, function's return code
+    if(desc.ptr[i].ptr->position==0){
+     convert_bind_var_datatype
+      (temp_buf,sizeof(temp_buf),desc.ptr[i].ptr->data_type,
+       varchar_size,all_num2type);
+     if(temp_buf[0]==0&&
+        strcmp(desc.ptr[i].ptr->data_type,"REF CURSOR")!=0){
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+      sprintf_s(temp_buf,sizeof(temp_buf),"procedure %s, parameter %s",
+                full_name,desc.ptr[i].ptr->arg_name);
+#else
+      sprintf(temp_buf,"procedure %s, parameter %s",
+                  full_name,desc.ptr[i].ptr->arg_name);
+#endif
+#else
+      sprintf(temp_buf,"procedure %s, parameter %s",
+                  full_name,desc.ptr[i].ptr->arg_name);
+#endif
+      throw otl_exception
+       (otl_error_msg_14,
+        otl_error_code_14,
+        temp_buf,0);
+     }
+     if(strcmp(desc.ptr[i].ptr->data_type,"REF CURSOR")==0)
+      OTL_STRCPY_S(temp_buf2,sizeof(temp_buf2),desc.ptr[i].ptr->bind_var);
+     else
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+       sprintf_s(temp_buf2,sizeof(temp_buf2),desc.ptr[i].ptr->bind_var,temp_buf);
+#else
+      sprintf(temp_buf2,desc.ptr[i].ptr->bind_var,temp_buf);
+#endif
+#else
+      sprintf(temp_buf2,desc.ptr[i].ptr->bind_var,temp_buf);
+#endif
+     otl_strcat(sql_stm,temp_buf2);
+    }
+    
+    // procedure/function's name
+    if(!full_name_printed){
+     otl_strcat(sql_stm,full_name);
+     otl_strcat(sql_stm,"(");
+     full_name_printed=true;
+    }
+
+    if(desc.ptr[i].ptr->position!=0){
+     // normal parameters
+     convert_bind_var_datatype
+      (temp_buf,sizeof(temp_buf),desc.ptr[i].ptr->data_type,
+       varchar_size,all_num2type);
+     if(temp_buf[0]==0&&
+        strcmp(desc.ptr[i].ptr->data_type,"REF CURSOR")!=0){
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+       sprintf_s(temp_buf,sizeof(temp_buf),"procedure %s, parameter %s",
+                 full_name,desc.ptr[i].ptr->arg_name);
+#else
+      sprintf(temp_buf,"procedure %s, parameter %s",
+                    full_name,desc.ptr[i].ptr->arg_name);
+#endif
+#else
+      sprintf(temp_buf,"procedure %s, parameter %s",
+                    full_name,desc.ptr[i].ptr->arg_name);
+#endif
+      throw otl_exception
+       (otl_error_msg_14,
+        otl_error_code_14,
+        temp_buf,0);
+     }
+     if(strcmp(desc.ptr[i].ptr->data_type,"REF CURSOR")==0)
+      OTL_STRCPY_S(temp_buf2,sizeof(temp_buf2),desc.ptr[i].ptr->bind_var);
+     else
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+       sprintf_s(temp_buf2,sizeof(temp_buf2),desc.ptr[i].ptr->bind_var,temp_buf);
+#else
+      sprintf(temp_buf2,desc.ptr[i].ptr->bind_var,temp_buf);
+#endif
+#else
+      sprintf(temp_buf2,desc.ptr[i].ptr->bind_var,temp_buf);
+#endif
+     otl_strcat(sql_stm,temp_buf2);
+    }
+
+    if(i<desc_len-1&&desc.ptr[i].ptr->position!=0)
+     otl_strcat(sql_stm,",");
+    else if(i==desc_len-1)
+     otl_strcat(sql_stm,"); ");
+
+   }
+   otl_strcat(sql_stm," END;");
+   return;
+  }
+
+  // The procedure is of the "general" type
+  stm_type=otl_inout_stream_type;
+  refcur_placeholder[0]=0;
+  sql_stm[0]=0;
+  bool full_name_printed=false;
+  for(i=0;i<desc_len;++i){
+    if(i==0)otl_strcat(sql_stm,"BEGIN ");
+    // in case of a function, function's return code
+    if(desc.ptr[i].ptr->position==0){
+      convert_bind_var_datatype
+        (temp_buf,sizeof(temp_buf),desc.ptr[i].ptr->data_type,
+         varchar_size,all_num2type);
+      if(temp_buf[0]==0){
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+        sprintf_s(temp_buf,sizeof(temp_buf),"procedure %s, parameter %s",
+                  full_name,desc.ptr[i].ptr->arg_name);
+#else
+        sprintf(temp_buf,"procedure %s, parameter %s",
+                full_name,desc.ptr[i].ptr->arg_name);
+#endif
+#else
+        sprintf(temp_buf,"procedure %s, parameter %s",
+                full_name,desc.ptr[i].ptr->arg_name);
+#endif
+        throw otl_exception
+          (otl_error_msg_14,
+           otl_error_code_14,
+           temp_buf,0);
+      }
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+      sprintf_s(temp_buf2,sizeof(temp_buf2),desc.ptr[i].ptr->bind_var,temp_buf);
+#else
+      sprintf(temp_buf2,desc.ptr[i].ptr->bind_var,temp_buf);
+#endif
+#else
+      sprintf(temp_buf2,desc.ptr[i].ptr->bind_var,temp_buf);
+#endif
+      otl_strcat(sql_stm,temp_buf2);
+    }
+    // procedure/function's name
+    if(!full_name_printed){
+      otl_strcat(sql_stm,full_name);
+      otl_strcat(sql_stm,"(");
+      full_name_printed=true;
+    }
+    if(desc.ptr[i].ptr->position!=0){
+      // normal parameters
+      convert_bind_var_datatype
+        (temp_buf,sizeof(temp_buf),desc.ptr[i].ptr->data_type,
+         varchar_size,all_num2type);
+      if(temp_buf[0]==0){
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+        sprintf_s(temp_buf,sizeof(temp_buf),"procedure %s, parameter %s",
+                  full_name,desc.ptr[i].ptr->arg_name);
+#else
+        sprintf(temp_buf,"procedure %s, parameter %s",
+                full_name,desc.ptr[i].ptr->arg_name);
+#endif
+#else
+        sprintf(temp_buf,"procedure %s, parameter %s",
+                full_name,desc.ptr[i].ptr->arg_name);
+#endif
+        throw otl_exception
+          (otl_error_msg_14,
+           otl_error_code_14,
+           temp_buf,0);
+      }
+#if defined(_MSC_VER)
+#if (_MSC_VER >= 1400)
+      sprintf_s(temp_buf2,sizeof(temp_buf2),desc.ptr[i].ptr->bind_var,temp_buf);
+#else
+      sprintf(temp_buf2,desc.ptr[i].ptr->bind_var,temp_buf);
+#endif
+#else
+      sprintf(temp_buf2,desc.ptr[i].ptr->bind_var,temp_buf);
+#endif
+      otl_strcat(sql_stm,temp_buf2);
+    }
+    if(i<desc_len-1&&desc.ptr[i].ptr->position!=0)
+      otl_strcat(sql_stm,",");
+    else if(i==desc_len-1)
+      otl_strcat(sql_stm,"); ");
+  }
+  otl_strcat(sql_stm," END;");
+  
+ }
+#endif
+
+ int get_stream_type(void) OTL_NO_THROW
+ {
+  if(shell==0)
+    return otl_no_stream_type;
+  else
+    return shell->stream_type;
+ }
+
+ void set_column_type(const int column_ndx,
+                      const int col_type,
+                      const int col_size=0) OTL_NO_THROW
+ {
+   if(shell==0){
+     init_stream();
+     shell->flush_flag=true;
+   }
+   override->add_override(column_ndx,col_type,col_size);
+ }
+
+ 
+  void set_all_column_types(const unsigned mask=0)
+    OTL_NO_THROW
+  {
+    if(shell==0){
+      init_stream();
+      shell->flush_flag=true;
+    }
+    override->set_all_column_types(mask);
+ }
+
+ void set_flush(const bool flush_flag=true)
+   OTL_NO_THROW
+ {
+   if(shell==0)init_stream();
+   shell->flush_flag=flush_flag;
+ }
+
+  void set_lob_stream_mode(const bool lob_stream_flag=false)
+    OTL_NO_THROW
+  {
+    if(shell==0)return;
+    shell->lob_stream_flag=lob_stream_flag;
+  }
+ 
+ void inc_next_ov(void)
+ {
+  if((*ov_len)==0)return;
+  if((*next_ov_ndx)<(*ov_len)-1)
+   ++(*next_ov_ndx);
+  else
+   (*next_ov_ndx)=0;
+ }
+ 
+ void inc_next_iov(void)
+ {
+  if((*iov_len)==0)return;
+  if((*next_iov_ndx)<(*iov_len)-1)
+   ++(*next_iov_ndx);
+  else
+   (*next_iov_ndx)=0;
+ }
+
+ otl_var_desc* describe_in_vars(int& desc_len)
+   OTL_NO_THROW
+ {
+  desc_len=0;
+  if(shell==0)return 0;
+  if(shell->iov==0)return 0;
+  desc_len=shell->iov_len;
+  return shell->iov;
+ }
+
+ otl_var_desc* describe_out_vars(int& desc_len)
+   OTL_NO_THROW
+ {
+  desc_len=0;
+  if(shell==0)return 0;
+  if(shell->ov==0)return 0;
+  desc_len=shell->ov_len;
+  return shell->ov;
+ }
+
+ otl_var_desc* describe_next_in_var(void)
+   OTL_NO_THROW
+ {
+  if(shell==0)return 0;
+  if(shell->iov==0)return 0;
+  return &(shell->iov[shell->next_iov_ndx]);
+ }
+
+ otl_var_desc* describe_next_out_var(void)
+   OTL_NO_THROW
+ {
+  if(shell==0)return 0;
+  if(shell->ov==0)return 0;
+  return &(shell->ov[shell->next_ov_ndx]);
+ }
+ 
+  const char* get_stm_text(void)
+  {
+    const char* no_stm_text=OTL_NO_STM_TEXT;
+    switch(shell->stream_type){
+    case otl_no_stream_type:
+      return no_stm_text;
+    case otl_inout_stream_type:
+      return (*io)->stm_label?(*io)->stm_label:(*io)->stm_text;
+    case otl_select_stream_type:
+      return (*ss)->stm_label?(*ss)->stm_label:(*ss)->stm_text;
+    case otl_refcur_stream_type:
+      return (*ref_ss)->stm_label?(*ref_ss)->stm_label:(*ref_ss)->stm_text;
+    default:
+      return no_stm_text;
+    }
+  }
+
+ long get_rpc() OTL_THROWS_OTL_EXCEPTION
+ {
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     return 0;
+   case otl_inout_stream_type:
+     (*adb)->reset_throw_count();
+     return (*io)->get_rpc();
+   case otl_select_stream_type:
+     (*adb)->reset_throw_count();
+     return (*ss)->_rfc;
+   case otl_refcur_stream_type:
+     (*adb)->reset_throw_count();
+     return (*ref_ss)->_rfc;
+   default:
+     return 0;
+   }
+ }
+ 
+ void create_var_desc(void)
+ {int i;
+  delete[] (*iov);
+  delete[] (*ov);
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  if((*ss)){
+   if((*ss)->vl_len>0){
+    (*iov)=new otl_var_desc[(*ss)->vl_len];
+    (*iov_len)=(*ss)->vl_len;
+    for(i=0;i<(*ss)->vl_len;++i)
+     (*ss)->vl[i]->copy_var_desc((*iov)[i]);
+   }
+   if((*ss)->sl_len>0){
+    (*ov)=new otl_var_desc[(*ss)->sl_len];
+    (*ov_len)=(*ss)->sl_len;
+    for(i=0;i<(*ss)->sl_len;++i){
+     (*ss)->sl[i].copy_var_desc((*ov)[i]);
+     (*ov)[i].copy_name((*ss)->sl_desc[i].name);
+    }
+   }
+  }else if((*io)){
+   if((*io)->vl_len>0){
+    (*iov)=new otl_var_desc[(*io)->vl_len];
+    (*iov_len)=(*io)->vl_len;
+    for(i=0;i<(*io)->vl_len;++i)
+     (*io)->vl[i]->copy_var_desc((*iov)[i]);
+   }
+   if((*io)->iv_len>0){
+    (*ov)=new otl_var_desc[(*io)->iv_len];
+    (*ov_len)=(*io)->iv_len;
+    for(i=0;i<(*io)->iv_len;++i)
+     (*io)->in_vl [i]->copy_var_desc((*ov)[i]);
+   }
+  }else if((*ref_ss)){
+   if((*ref_ss)->vl_len>0){
+    (*iov)=new otl_var_desc[(*ref_ss)->vl_len];
+    (*iov_len)=(*ref_ss)->vl_len;
+    for(i=0;i<(*ref_ss)->vl_len;++i)
+     (*ref_ss)->vl[i]->copy_var_desc((*iov)[i]);
+   }
+   if((*ref_ss)->sl_len>0){
+    (*ov)=new otl_var_desc[(*ref_ss)->sl_len];
+    (*ov_len)=(*ref_ss)->sl_len;
+    for(i=0;i<(*ref_ss)->sl_len;++i){
+     (*ref_ss)->sl[i].copy_var_desc((*ov)[i]);
+     (*ov)[i].copy_name((*ref_ss)->sl_desc[i].name);
+    }
+   }
+  }
+ }
+
+ void init_stream(void)
+ {
+   buf_size_=1;
+   last_oper_was_read_op=false;
+   shell=0;
+   shell=new otl_stream_shell(0);
+   shell_pt.assign(&shell);
+   connected=0;
+   
+   ref_ss=&(shell->ref_ss);
+   ss=&(shell->ss);
+   io=&(shell->io);
+   adb=&(shell->adb);
+   auto_commit_flag=&(shell->auto_commit_flag);
+   iov=&(shell->iov);
+   iov_len=&(shell->iov_len);
+   next_iov_ndx=&(shell->next_iov_ndx);
+   ov=&(shell->ov);
+   ov_len=&(shell->ov_len);
+   next_ov_ndx=&(shell->next_ov_ndx);
+   override=&(shell->override);
+   
+   (*ref_ss)=0;
+   (*io)=0;
+   (*ss)=0;
+   (*adb)=0;
+   (*ov)=0; 
+   (*ov_len)=0;
+   (*next_iov_ndx)=0;
+   (*next_ov_ndx)=0;
+   (*auto_commit_flag)=1;
+   (*iov)=0; 
+   (*iov_len)=0;
+
+ }
+
+ otl_stream
+ (const otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  otl_connect& db,
+  const char* ref_cur_placeholder=0,
+  const char* sqlstm_label=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  init_stream();
+
+  (*io)=0; (*ss)=0; (*ref_ss)=0;
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  (*auto_commit_flag)=1;
+  (*next_iov_ndx)=0;
+  (*next_ov_ndx)=0;
+  (*adb)=&db;
+  shell->flush_flag=true;
+  open(arr_size,sqlstm,db,ref_cur_placeholder,sqlstm_label);
+ }
+ 
+ otl_stream() OTL_NO_THROW
+ {
+  init_stream();
+  shell->flush_flag=true;
+ }
+ 
+ virtual ~otl_stream() 
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   OTL_THROWS_OTL_EXCEPTION
+#endif
+ {
+  if(!connected)return;
+  try{
+   if((*io)!=0&&shell->flush_flag==false)
+    (*io)->flush_flag2=false;
+   close();
+   if(shell!=0){
+    if((*io)!=0)
+     (*io)->flush_flag2=true;
+   }
+  }catch(OTL_CONST_EXCEPTION otl_exception&){
+   if(shell!=0){
+   if((*io)!=0)
+    (*io)->flush_flag2=true;
+   }
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+   clean(1);
+   if(shell!=0)
+    shell->should_delete=1;
+   shell_pt.destroy();
+#else
+   shell_pt.destroy();
+#endif
+#if !defined(OTL_DESTRUCTORS_DO_NOT_THROW)
+   throw;
+#endif
+  }
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+  if(adb && (*adb) && (*adb)->throw_count>0
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+  || 
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception()
+#endif
+     ){
+   //
+  }
+#else
+   shell_pt.destroy();
+#endif
+ }
+
+ int eof(void) OTL_NO_THROW
+ {
+  if((*io)){
+   (*adb)->reset_throw_count();
+   return (*io)->eof();
+  }else if((*ss)){
+   (*adb)->reset_throw_count();
+   return (*ss)->eof();
+  }else if((*ref_ss)){
+   (*adb)->reset_throw_count();
+   return (*ref_ss)->eof();
+  }else
+   return 1;
+ }
+ 
+ void flush(const int rowoff=0,const bool force_flush=false)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  if((*io)){
+   (*adb)->reset_throw_count();
+   (*io)->flush(rowoff,force_flush);
+  }
+ }
+ 
+ void clean(const int clean_up_error_flag=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  if((*io)){
+   (*adb)->reset_throw_count();
+   (*io)->clean(clean_up_error_flag);
+  }else if(*ss){
+   (*adb)->reset_throw_count();
+   (*ss)->clean();
+  }else if(*ref_ss){
+   (*adb)->reset_throw_count();
+   (*ref_ss)->clean();
+  }
+ }
+
+ void rewind(void)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  if((*io)){
+   (*adb)->reset_throw_count();
+   (*io)->rewind();
+  }else if((*ss)){
+   (*adb)->reset_throw_count();
+   (*ss)->rewind();
+  }else if((*ref_ss)){
+   (*adb)->reset_throw_count();
+   (*ref_ss)->rewind();
+  }
+ }
+ 
+ int is_null(void) OTL_NO_THROW
+ {
+  if((*io))
+   return (*io)->is_null();
+  else if((*ss))
+   return (*ss)->is_null();
+  else if((*ref_ss))
+   return (*ref_ss)->is_null();
+  else
+   return 0;
+ }
+
+ void set_commit(int auto_commit=0) OTL_NO_THROW
+ {
+  (*auto_commit_flag)=auto_commit;
+  if((*io)){
+   (*adb)->reset_throw_count();
+   (*io)->set_commit(auto_commit);
+  }
+ }
+ 
+ void open
+ (const otl_stream_buffer_size_type arr_size,
+  const char* sqlstm,
+  otl_connect& db,
+  const char* ref_cur_placeholder=0,
+  const char* sqlstm_label=0)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   reset_end_marker();
+   if(this->good()){
+     const char* temp_stm_text=0;
+     switch(shell->stream_type){
+     case otl_no_stream_type:
+       temp_stm_text=OTL_NO_STM_TEXT;
+       break;
+     case otl_inout_stream_type:
+       temp_stm_text=(*io)->stm_label?(*io)->stm_label:(*io)->stm_text;
+       break;
+     case otl_select_stream_type:
+       temp_stm_text=(*ss)->stm_label?(*ss)->stm_label:(*ss)->stm_text;
+     case otl_refcur_stream_type:
+       temp_stm_text=(*ref_ss)->stm_label?(*ref_ss)->stm_label:(*ref_ss)->stm_text;
+       break;
+     default:
+       temp_stm_text=OTL_NO_STM_TEXT;
+       break;
+     }
+     throw otl_exception
+       (otl_error_msg_29,
+        otl_error_code_29,
+        temp_stm_text);
+   }
+   if(shell==0)
+    init_stream();
+   buf_size_=arr_size;
+   OTL_TRACE_STREAM_OPEN2
+#if defined(OTL_STL) && defined(OTL_STREAM_POOLING_ON)
+  char temp_buf[128];
+  otl_itoa(arr_size,temp_buf);
+  OTL_STRING_CONTAINER sql_stm=
+    OTL_STRING_CONTAINER(temp_buf)+
+    OTL_STRING_CONTAINER("===>")+sqlstm;
+  otl_stream_shell_generic* temp_shell=db.sc.find(sql_stm);
+  if(temp_shell){
+    if(shell!=0)
+      shell_pt.destroy();
+   shell=OTL_RCAST(otl_stream_shell*,temp_shell);
+   ref_ss=&(shell->ref_ss);
+   ss=&(shell->ss);
+   io=&(shell->io);
+   if((*io)!=0)(*io)->flush_flag2=true;
+   adb=&(shell->adb);
+   auto_commit_flag=&(shell->auto_commit_flag);
+   iov=&(shell->iov);
+   iov_len=&(shell->iov_len);
+   next_iov_ndx=&(shell->next_iov_ndx);
+   ov=&(shell->ov);
+   ov_len=&(shell->ov_len);
+   next_ov_ndx=&(shell->next_ov_ndx);
+   override=&(shell->override);
+   try{
+     if((*iov_len)==0)this->rewind();
+   }catch(OTL_CONST_EXCEPTION otl_exception&){
+     if((*adb))
+      (*adb)->sc.remove(shell,shell->orig_sql_stm);
+     intern_cleanup();
+     shell_pt.destroy();
+     connected=0;
+     throw;     
+   }
+   connected=1;
+   return;
+  }
+  shell->orig_sql_stm=sql_stm;
+#endif
+
+  delete[] (*iov);
+  delete[] (*ov);
+
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  (*next_iov_ndx)=0;
+  (*next_ov_ndx)=0;
+
+  char tmp[7];
+  char* c=OTL_CCAST(char*,sqlstm);
+
+  while(otl_isspace(*c)||(*c)=='(')++c;
+  OTL_STRNCPY_S(tmp,sizeof(tmp),c,6);
+  tmp[6]=0;
+  c=tmp;
+  while(*c){
+   *c=OTL_SCAST(char,otl_to_upper(*c));
+   ++c;
+  }
+  if(adb==0)adb=&(shell->adb);
+  (*adb)=&db;
+  (*adb)->reset_throw_count();
+  try{
+    if((strncmp(tmp,"SELECT",6)==0||
+        strncmp(tmp,"WITH",4)==0)&&
+       ref_cur_placeholder==0){
+    (*ss)=new otl_select_stream(override,arr_size,
+                                sqlstm,db,otl_explicit_select,
+                                sqlstm_label);
+    shell->stream_type=otl_select_stream_type;
+   }else if(ref_cur_placeholder!=0){
+    (*ref_ss)=new otl_ref_select_stream
+     (override,arr_size,sqlstm,ref_cur_placeholder,
+      db,sqlstm_label);
+    shell->stream_type=otl_refcur_stream_type;
+   }else{
+    (*io)=new otl_inout_stream(arr_size,sqlstm,db,false,sqlstm_label);
+    (*io)->flush_flag=shell->flush_flag;
+    shell->stream_type=otl_inout_stream_type;
+   }
+  }catch(OTL_CONST_EXCEPTION otl_exception&){
+   shell_pt.destroy();
+   throw;
+  }
+  if((*io))(*io)->set_commit((*auto_commit_flag));
+  create_var_desc();
+  connected=1;
+ }
+
+ void intern_cleanup(void)
+ {
+  delete[] (*iov);
+  delete[] (*ov);
+
+  (*iov)=0; (*iov_len)=0;
+  (*ov)=0; (*ov_len)=0;
+  (*next_iov_ndx)=0;
+  (*next_ov_ndx)=0;
+  override->len=0;
+  switch(shell->stream_type){
+  case otl_no_stream_type:
+    break;
+  case otl_inout_stream_type:
+    try{
+      (*io)->flush();
+      (*io)->close();
+    }catch(OTL_CONST_EXCEPTION otl_exception&){
+      clean(1);
+      (*io)->close();
+      delete (*io);
+      (*io)=0;
+      shell->stream_type=otl_no_stream_type;
+      throw;
+    }
+    delete (*io);
+    (*io)=0;
+    shell->stream_type=otl_no_stream_type;
+    break;
+  case otl_select_stream_type:
+    try{
+      (*ss)->close();
+    }catch(OTL_CONST_EXCEPTION otl_exception&){
+      delete (*ss);
+      (*ss)=0;
+      shell->stream_type=otl_no_stream_type;
+      throw;
+    }
+    delete (*ss);
+    (*ss)=0;
+    shell->stream_type=otl_no_stream_type;
+    break;
+  case otl_refcur_stream_type:
+    try{
+      (*ref_ss)->close();
+    }catch(OTL_CONST_EXCEPTION otl_exception&){
+      delete (*ref_ss);
+      (*ref_ss)=0;
+      shell->stream_type=otl_no_stream_type;
+      throw;
+    }
+    delete (*ref_ss);
+    (*ref_ss)=0;
+    shell->stream_type=otl_no_stream_type;
+    break;
+  }
+  (*ss)=0; (*io)=0; (*ref_ss)=0;
+  if(adb!=0)(*adb)=0; 
+  adb=0;
+ }
+
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+ void close(const bool save_in_stream_pool=true)
+#else
+ void close(void)
+#endif
+ {
+  if(shell==0)return;
+  OTL_TRACE_FUNC(0x4,"otl_stream","close","")
+#if (defined(OTL_STL)||defined(OTL_ACE)) && defined(OTL_STREAM_POOLING_ON)
+  if(save_in_stream_pool&&(*adb)&&
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+     !(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+       uncaught_exception())&&
+#endif
+     (*adb)->throw_count==0){
+   try{
+    this->flush();
+    this->clean(1);
+   }catch(OTL_CONST_EXCEPTION otl_exception&){
+    this->clean(1);
+    throw;
+   }
+   if((*adb) && (*adb)->throw_count>0){
+    (*adb)->sc.remove(shell,shell->orig_sql_stm);
+    intern_cleanup();
+    shell_pt.destroy();
+    connected=0;
+    return;
+   }
+#if defined(OTL_STL) && defined(OTL_UNCAUGHT_EXCEPTION_ON)
+   if(
+#if defined(OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE)
+     OTL_UNCAUGHT_EXCEPTION_OWN_NAMESPACE 
+#else
+     STD_NAMESPACE_PREFIX 
+#endif
+     uncaught_exception()){
+    if((*adb))
+     (*adb)->sc.remove(shell,shell->orig_sql_stm);
+    intern_cleanup();
+    shell_pt.destroy();
+    connected=0;
+    return; 
+   }
+#endif
+   (*adb)->sc.add(shell,shell->orig_sql_stm.c_str());
+   shell_pt.disconnect();
+   connected=0;
+  }else{
+   if((*adb))
+    (*adb)->sc.remove(shell,shell->orig_sql_stm);
+   intern_cleanup();
+   shell_pt.destroy();
+   connected=0;
+  }
+#else
+  intern_cleanup();
+  connected=0;
+#endif
+ }
+
+ otl_column_desc* describe_select(int& desc_len)
+   OTL_NO_THROW
+ {
+   desc_len=0;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     return 0;
+   case otl_inout_stream_type:
+     return 0;
+   case otl_select_stream_type:
+     (*adb)->reset_throw_count();
+     desc_len=(*ss)->sl_len;
+     return (*ss)->sl_desc;
+   case otl_refcur_stream_type:
+     (*adb)->reset_throw_count();
+     desc_len=(*ref_ss)->sl_len;
+     return (*ref_ss)->sl_desc;
+   default:
+     return 0;
+   }
+ }
+
+ int good(void) OTL_NO_THROW
+ {
+  if(!connected)return 0;
+  if((*io)||(*ss)||(*ref_ss)){
+   (*adb)->reset_throw_count();
+   return 1;
+  }else
+   return 0;
+ }
+
+ otl_stream& operator>>(otl_pl_tab_generic& tab)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=true;
+  if((*io)){
+   last_eof_rc=(*io)->eof();
+   (*io)->operator>>(tab);
+   OTL_TRACE_WRITE(", tab len="<<tab.len(),"operator >>","PL/SQL Tab&")
+   inc_next_ov();
+  }
+  return *this;
+ }
+
+ otl_stream& operator>>(otl_refcur_stream& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=true;
+  if((*io)){
+   last_eof_rc=(*io)->eof();
+   (*io)->operator>>(s);
+   OTL_TRACE_WRITE(" ref.cur.stream","operator >>","otl_refcur_stream&")
+   inc_next_ov();
+  }
+  return *this;
+ }
+
+ otl_stream& operator<<(otl_pl_tab_generic& tab)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=false;
+   reset_end_marker();
+  if((*io)){
+   (*io)->operator<<(tab);
+   OTL_TRACE_READ(", tab len="<<tab.len(),"operator <<","PL/SQL Tab&")
+   inc_next_iov();
+  }
+  return *this;
+ }
+
+#if defined(OTL_PL_TAB) && defined(OTL_STL)
+
+ otl_stream& operator>>(otl_pl_vec_generic& vec)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=true;
+  if((*io)){
+   last_eof_rc=(*io)->eof();
+   (*io)->operator>>(vec);
+   OTL_TRACE_WRITE(", tab len="<<vec.len(),"operator >>","PL/SQL Tab&")
+   inc_next_ov();
+  }
+  return *this;
+ }
+
+ otl_stream& operator<<(otl_pl_vec_generic& vec)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=false;
+   reset_end_marker();
+  if((*io)){
+   (*io)->operator<<(vec);
+   OTL_TRACE_READ(", tab len="<<vec.len(),"operator <<","PL/SQL Tab&")
+   inc_next_iov();
+  }
+  return *this;
+ }
+
+#endif
+
+ otl_stream& operator<<(otl_lob_stream& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=false;
+   reset_end_marker();
+  if((*io)){
+   (*io)->operator<<(s);
+   OTL_TRACE_READ(", lob stream","operator <<","PL/otl_lob_stream&")
+   inc_next_iov();
+  }
+  return *this;
+ }
+
+ otl_stream& operator>>(otl_time0& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     {
+       last_eof_rc=(*io)->eof();
+       (*io)->operator>>(s);
+#if defined(OTL_ORA_TIMESTAMP)
+       OTL_TRACE_WRITE
+         (s.month<<"/"<<s.day<<"/"<<s.year
+          <<" "<<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+          "operator >>",
+          "otl_datetime&");
+#endif
+       break;
+     }
+   case otl_select_stream_type:
+     {
+       last_eof_rc=(*ss)->eof();
+       (*ss)->operator>>(s);
+#if defined(OTL_ORA_TIMESTAMP)
+       OTL_TRACE_WRITE
+         (s.month<<"/"<<s.day<<"/"<<s.year
+          <<" "<<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+          "operator >>",
+          "otl_datetime&");
+#endif
+       break;
+     }
+   case otl_refcur_stream_type:
+     {
+       last_eof_rc=(*ref_ss)->eof();
+       (*ref_ss)->operator>>(s);
+#if defined(OTL_ORA_TIMESTAMP)
+       OTL_TRACE_WRITE
+         (s.month<<"/"<<s.day<<"/"<<s.year
+          <<" "<<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+          "operator >>",
+          "otl_datetime&");
+#endif
+       break;
+     }
+   }
+#if defined(OTL_ORA_TIMESTAMP)
+   inc_next_ov();
+#endif
+   return *this;
+ }
+
+ otl_stream& operator<<(const otl_time0& n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     {
+       (*io)->operator<<(n);
+#if defined(OTL_ORA_TIMESTAMP)
+       OTL_TRACE_READ(n.month<<"/"<<n.day<<"/"<<n.year
+                      <<" "<<n.hour<<":"<<n.minute<<":"<<n.second<<"."<<n.fraction,
+                      "operator >>",
+                      "otl_datetime&");
+#endif
+       break;
+     }
+   case otl_select_stream_type:
+     {
+       (*ss)->operator<<(n);
+#if defined(OTL_ORA_TIMESTAMP)
+       OTL_TRACE_READ(n.month<<"/"<<n.day<<"/"<<n.year
+                      <<" "<<n.hour<<":"<<n.minute<<":"<<n.second<<"."<<n.fraction,
+                      "operator >>",
+                      "otl_datetime&");
+#endif
+       break;
+     }
+   case otl_refcur_stream_type:
+     {
+       (*ref_ss)->operator<<(n);
+       if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+#if defined(OTL_ORA_TIMESTAMP)
+       OTL_TRACE_READ(n.month<<"/"<<n.day<<"/"<<n.year
+                      <<" "<<n.hour<<":"<<n.minute<<":"<<n.second<<"."<<n.fraction,
+                      "operator >>",
+                      "otl_datetime&");
+#endif
+       break;
+     }
+   }
+#if defined(OTL_ORA_TIMESTAMP)
+   inc_next_iov();
+#endif
+  return *this;
+ }
+
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  // already declared 
+#else
+ OTL_ORA_COMMON_READ_STREAM& operator>>(otl_datetime& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   otl_time0 tmp;
+   (*this)>>tmp;
+#if defined(OTL_DEFAULT_DATETIME_NULL_TO_VAL)
+  if((*this).is_null())
+   s=OTL_DEFAULT_DATETIME_NULL_TO_VAL;
+  else{
+   s.year=(OTL_SCAST(int,tmp.century)-100)*100+(OTL_SCAST(int,tmp.year)-100);
+   s.month=tmp.month;
+   s.day=tmp.day;
+   s.hour=tmp.hour-1;
+   s.minute=tmp.minute-1;
+   s.second=tmp.second-1;
+  }
+#else
+  s.year=(OTL_SCAST(int,tmp.century)-100)*100+(OTL_SCAST(int,tmp.year)-100);
+  s.month=tmp.month;
+  s.day=tmp.day;
+  s.hour=tmp.hour-1;
+  s.minute=tmp.minute-1;
+  s.second=tmp.second-1;
+#endif
+  OTL_TRACE_WRITE
+    (s.month<<"/"<<s.day<<"/"
+     <<s.year<<" "<<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+     "operator >>",
+     "otl_datetime&");
+  inc_next_ov();
+  return *this;
+ }
+#endif
+
+#if (defined(OTL_ORA8I)||defined(OTL_ORA9I))&&defined(OTL_ORA_TIMESTAMP)
+  // already declared
+#else
+ otl_stream& operator<<(const otl_datetime& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+  last_oper_was_read_op=false;
+  otl_time0 tmp;
+  reset_end_marker();
+  tmp.year=OTL_SCAST(unsigned char, ((s.year%100)+100));
+  tmp.century=OTL_SCAST(unsigned char, ((s.year/100)+100));
+  tmp.month=OTL_SCAST(unsigned char, s.month);
+  tmp.day=OTL_SCAST(unsigned char, s.day);
+  tmp.hour=OTL_SCAST(unsigned char, (s.hour+1));
+  tmp.minute=OTL_SCAST(unsigned char, (s.minute+1));
+  tmp.second=OTL_SCAST(unsigned char, (s.second+1));
+  OTL_TRACE_READ
+    (s.month<<"/"<<s.day<<"/"<<s.year<<" "
+     <<s.hour<<":"<<s.minute<<":"<<s.second<<"."<<s.fraction,
+     "operator <<",
+     "otl_datetime&");
+  (*this)<<tmp;
+  inc_next_iov();
+  return *this;
+ }
+#endif
+
+#if !defined(OTL_UNICODE)
+ OTL_ORA_COMMON_READ_STREAM& operator>>(char& c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(c);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(c);
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(c);
+     break;
+   }
+#if defined(OTL_DEFAULT_CHAR_NULL_TO_VAL)
+   if((*this).is_null())
+     c=OTL_DEFAULT_CHAR_NULL_TO_VAL;
+#endif
+   OTL_TRACE_WRITE("'"<<c<<"'","operator >>","char&")
+   inc_next_ov();
+   return *this;
+ }
+#endif
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(unsigned char& c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(c);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(c);
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(c);
+     break;
+   }
+#if defined(OTL_DEFAULT_CHAR_NULL_TO_VAL)
+   if((*this).is_null())
+     c=OTL_DEFAULT_CHAR_NULL_TO_VAL;
+#endif
+   OTL_TRACE_WRITE("'"<<c<<"'","operator >>","unsigned char&")
+   inc_next_ov();
+   return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ OTL_ORA_COMMON_READ_STREAM& operator>>(OTL_STRING_CONTAINER& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+
+#if defined(OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL)
+   if((*this).is_null()){
+     OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL(s);
+   }
+#elif defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     s=OTL_DEFAULT_STRING_NULL_TO_VAL;
+#endif
+
+   OTL_TRACE_WRITE("\""<<s<<"\"","operator >>","OTL_STRING_CONTAINER&")
+   inc_next_ov();
+   return *this;
+ }
+#endif
+
+#if !defined(OTL_UNICODE)
+ OTL_ORA_COMMON_READ_STREAM& operator>>(char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+#if defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     otl_strcpy(OTL_RCAST(unsigned char*,s),
+                OTL_RCAST(const unsigned char*,OTL_DEFAULT_STRING_NULL_TO_VAL));
+#endif
+   OTL_TRACE_WRITE("\""<<s<<"\"","operator >>","char*")
+   inc_next_ov();
+   return *this;
+ }
+#endif
+
+#if defined(OTL_UNICODE_STRING_TYPE)
+ OTL_ORA_COMMON_READ_STREAM& operator>>(OTL_UNICODE_STRING_TYPE& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+#if defined(OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL)
+   if((*this).is_null()){
+     OTL_USER_DEFINED_STRING_CLASS_DEFAULT_NULL_TO_VAL(s);
+   }
+#elif defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     s=OTL_RCAST(const OTL_UNICODE_CHAR_TYPE*,
+                 OTL_DEFAULT_STRING_NULL_TO_VAL);
+#endif
+
+   OTL_TRACE_WRITE
+     ("\""<<s.c_str()<<"\"",
+      "operator >>",
+      "OTL_UNICODE_STRING_TYPE&");
+   inc_next_ov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const OTL_UNICODE_STRING_TYPE& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","OTL_UNICODE_STRING_TYPE&");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(s);
+     break;
+   case otl_select_stream_type:
+     (*ss)->operator<<(s);
+     break;
+   case otl_refcur_stream_type:
+     (*ref_ss)->operator<<(s);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+#endif
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(unsigned char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+#if defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     otl_strcpy(OTL_RCAST(unsigned char*,s),
+                OTL_RCAST(const unsigned char*,OTL_DEFAULT_STRING_NULL_TO_VAL)
+               );
+#endif
+
+#if defined(OTL_UNICODE)
+   OTL_TRACE_WRITE
+     ("\""<<OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,s)<<"\"",
+      "operator >>",
+      OTL_UNICODE_CHAR_TYPE_TRACE_NAME "*")
+#else
+   OTL_TRACE_WRITE("\""<<s<<"\"","operator >>","unsigned char*")
+#endif
+   inc_next_ov();
+   return *this;
+ }
+
+#if defined(OTL_UNICODE)
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(OTL_UNICODE_CHAR_TYPE* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(OTL_RCAST(unsigned char*,s));
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(OTL_RCAST(unsigned char*,s));
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(OTL_RCAST(unsigned char*,s));
+     break;
+   }
+#if defined(OTL_DEFAULT_STRING_NULL_TO_VAL)
+   if((*this).is_null())
+     otl_strcpy(OTL_RCAST(unsigned char*,s),
+                OTL_RCAST(const unsigned char*,OTL_DEFAULT_STRING_NULL_TO_VAL));
+#endif
+   OTL_TRACE_WRITE(OTL_RCAST(OTL_UNICODE_CHAR_TYPE*,s),
+                   "operator >>",
+                   OTL_UNICODE_CHAR_TYPE_TRACE_NAME "*")
+   inc_next_ov();
+   return *this;
+ }
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(OTL_UNICODE_CHAR_TYPE& c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   OTL_UNICODE_CHAR_TYPE s[1024];
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(OTL_RCAST(unsigned char*,s));
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(OTL_RCAST(unsigned char*,s));
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(OTL_RCAST(unsigned char*,s));
+     break;
+   }
+   c=s[0];
+#if defined(OTL_DEFAULT_CHAR_NULL_TO_VAL)
+   if((*this).is_null())
+     c=OTL_DEFAULT_CHAR_NULL_TO_VAL;
+#endif
+   OTL_TRACE_WRITE(c,"operator >>",
+                   OTL_UNICODE_CHAR_TYPE_TRACE_NAME "")
+   inc_next_ov();
+   return *this;
+ }
+
+#endif
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(int& n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(n);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(n);
+#else
+     (*ss)->operator>><int,otl_var_int>(n);
+#endif
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(n);
+#else
+     (*ref_ss)->operator>><int,otl_var_int>(n);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     n=OTL_SCAST(int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(n,"operator >>","int&")
+   inc_next_ov();
+   return *this;
+ }
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(unsigned& u)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(u);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(u);
+#else
+     (*ss)->operator>><unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(u);
+#else
+     (*ref_ss)->operator>><unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     u=OTL_SCAST(unsigned int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(u,"operator >>","unsigned&")
+   inc_next_ov();
+   return *this;
+ }
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(short& sh)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(sh);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(sh);
+#else
+     (*ss)->operator>><short,otl_var_short>(sh);
+#endif
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(sh);
+#else
+     (*ref_ss)->operator>><short,otl_var_short>(sh);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     sh=OTL_SCAST(short int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(sh,"operator >>","short int&")
+   inc_next_ov();
+   return *this;
+ }
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(long int& l)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(l);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(l);
+#else
+     (*ss)->operator>><long,otl_var_long_int>(l);
+#endif
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(l);
+#else
+     (*ref_ss)->operator>><long,otl_var_long_int>(l);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     l=OTL_SCAST(long int,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(l,"operator >>","long int&")
+   inc_next_ov();
+   return *this;
+ }
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(float& f)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(f);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(f);
+#else
+     (*ss)->operator>><float,otl_var_float>(f);
+#endif
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(f);
+#else
+     (*ref_ss)->operator>><float,otl_var_float>(f);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+     f=OTL_SCAST(float,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(f,"operator >>","float&")
+   inc_next_ov();
+   return *this;
+ }
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(double& d)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(d);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator>>(d);
+#else
+     (*ss)->operator>><double,otl_var_double>(d);
+#endif
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator>>(d);
+#else
+     (*ref_ss)->operator>><double,otl_var_double>(d);
+#endif
+     break;
+   }
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if((*this).is_null())
+   d=OTL_SCAST(double,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+   OTL_TRACE_WRITE(d,"operator >>","double&")
+   inc_next_ov();
+   return *this;
+ }
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(otl_long_string& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator>>(s);
+     break;
+   case otl_select_stream_type:
+     (*ss)->operator>>(s);
+     break;
+   case otl_refcur_stream_type:
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+   OTL_TRACE_WRITE(" len="<<s.len(),"operator >>","otl_long_string&")
+   inc_next_ov();
+   return *this;
+ }
+
+ OTL_ORA_COMMON_READ_STREAM& operator>>(otl_lob_stream& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=true;
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     last_eof_rc=(*io)->eof();
+     (*io)->operator>>(s);
+     break;
+   case otl_select_stream_type:
+     last_eof_rc=(*ss)->eof();
+     (*ss)->operator>>(s);
+     break;
+   case otl_refcur_stream_type:
+     last_eof_rc=(*ref_ss)->eof();
+     (*ref_ss)->operator>>(s);
+     break;
+   }
+   shell->lob_stream_flag=true;
+   OTL_TRACE_WRITE(" lob stream","operator >>","otl_lob_stream&")
+   inc_next_ov();
+   return *this;
+ }
+
+#if !defined(OTL_UNICODE)
+ otl_stream& operator<<(const char c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("'"<<c<<"'","operator <<","char");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(c);
+     break;
+   case otl_select_stream_type:
+     (*ss)->operator<<(c);
+     break;
+   case otl_refcur_stream_type:
+     (*ref_ss)->operator<<(c);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+#endif
+
+ otl_stream& operator<<(const unsigned char c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("'"<<c<<"'","operator <<","unsigned char");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(c);
+     break;
+   case otl_select_stream_type:
+     (*ss)->operator<<(c);
+     break;
+   case otl_refcur_stream_type:
+     (*ref_ss)->operator<<(c);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+ otl_stream& operator<<(const OTL_STRING_CONTAINER& s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","OTL_STRING_CONTAINER&");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(s);
+     break;
+   case otl_select_stream_type:
+     (*ss)->operator<<(s);
+     break;
+   case otl_refcur_stream_type:
+     (*ref_ss)->operator<<(s);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+#endif
+
+#if !defined(OTL_UNICODE)
+ otl_stream& operator<<(const char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","char*");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(s);
+     break;
+   case otl_select_stream_type:
+     (*ss)->operator<<(s);
+     break;
+   case otl_refcur_stream_type:
+     (*ref_ss)->operator<<(s);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+#endif
+
+ otl_stream& operator<<(const unsigned char* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+#if defined(OTL_UNICODE)
+   OTL_TRACE_READ
+     ("\""<<OTL_RCAST(const OTL_UNICODE_CHAR_TYPE*,s)<<"\"",
+      "operator <<",
+      OTL_UNICODE_CHAR_TYPE_TRACE_NAME "*");
+#else
+   OTL_TRACE_READ("\""<<s<<"\"","operator <<","unsigned char*");
+#endif
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(s);
+     break;
+   case otl_select_stream_type:
+     (*ss)->operator<<(s);
+     break;
+   case otl_refcur_stream_type:
+     (*ref_ss)->operator<<(s);
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+#if defined(OTL_UNICODE)
+
+ otl_stream& operator<<(const OTL_UNICODE_CHAR_TYPE* s)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ
+     ("\""<<OTL_RCAST(const OTL_UNICODE_CHAR_TYPE*,s)<<"\"",
+      "operator <<",
+      OTL_UNICODE_CHAR_TYPE_TRACE_NAME "*");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(OTL_RCAST(const unsigned char*,s));
+     break;
+   case otl_select_stream_type:
+     (*ss)->operator<<(OTL_RCAST(const unsigned char*,s));
+     break;
+   case otl_refcur_stream_type:
+     (*ref_ss)->operator<<(OTL_RCAST(const unsigned char*,s));
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const OTL_UNICODE_CHAR_TYPE c)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   OTL_UNICODE_CHAR_TYPE s[2];
+   s[0]=c;
+   s[1]=0;
+   (*this)<<s;
+   return *this;
+ }
+
+#endif
+
+ otl_stream& operator<<(const int n)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(n,"operator <<","int");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(n);
+     break;
+   case otl_select_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(n);
+#else
+     (*ss)->operator<<<int,otl_var_int>(n);
+#endif
+     break;
+   case otl_refcur_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(n);
+#else
+     (*ref_ss)->operator<<<int,otl_var_int>(n);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const unsigned u)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(u,"operator <<","unsigned");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(u);
+     break;
+   case otl_select_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(u);
+#else
+     (*ss)->operator<<<unsigned,otl_var_unsigned_int>(u);
+#endif
+     break;
+   case otl_refcur_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(u);
+#else
+     (*ref_ss)->operator<<<unsigned,otl_var_unsigned_int>(u);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const short sh)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(sh,"operator <<","short int");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(sh);
+     break;
+   case otl_select_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(sh);
+#else
+     (*ss)->operator<<<short,otl_var_short>(sh);
+#endif
+     break;
+   case otl_refcur_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(sh);
+#else
+     (*ref_ss)->operator<<<short,otl_var_short>(sh);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+  inc_next_iov();
+  return *this;
+ }
+
+ otl_stream& operator<<(const long int l)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(l,"operator <<","long int");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(l);
+     break;
+   case otl_select_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(l);
+#else
+     (*ss)->operator<<<long,otl_var_long_int>(l);
+#endif
+     break;
+   case otl_refcur_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(l);
+#else
+     (*ref_ss)->operator<<<long,otl_var_long_int>(l);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const float f)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(f,"operator <<","float");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(f);
+     break;
+   case otl_select_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(f);
+#else
+     (*ss)->operator<<<float,otl_var_float>(f);
+#endif
+     break;
+   case otl_refcur_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(f);
+#else
+     (*ref_ss)->operator<<<float,otl_var_float>(f);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+  inc_next_iov();
+  return *this;
+ }
+
+ otl_stream& operator<<(const double d)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(d,"operator <<","double");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(d);
+     break;
+   case otl_select_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ss)->operator<<(d);
+#else
+     (*ss)->operator<<<double,otl_var_double>(d);
+#endif
+     break;
+   case otl_refcur_stream_type:
+#if defined(OTL_NO_TMPL_MEMBER_FUNC_SUPPORT)
+     (*ref_ss)->operator<<(d);
+#else
+     (*ref_ss)->operator<<<double,otl_var_double>(d);
+#endif
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+  otl_stream& operator<<(const otl_null& /*n*/)
+    OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ("NULL","operator <<","otl_null&");
+   switch(shell->stream_type){
+   case otl_no_stream_type:
+     break;
+   case otl_inout_stream_type:
+     (*io)->operator<<(otl_null());
+     break;
+   case otl_select_stream_type:
+     (*ss)->operator<<(otl_null());
+     break;
+   case otl_refcur_stream_type:
+     (*ref_ss)->operator<<(otl_null());
+     if(!(*ov)&&(*ref_ss)->sl) create_var_desc();
+     break;
+   }
+   inc_next_iov();
+   return *this;
+ }
+
+ otl_stream& operator<<(const otl_long_string& d)
+   OTL_THROWS_OTL_EXCEPTION
+ {
+   last_oper_was_read_op=false;
+   reset_end_marker();
+   OTL_TRACE_READ(" len="<<d.len(),"operator <<","otl_long_string&");
+   if((*io)){
+     (*io)->operator<<(d);
+     inc_next_iov();
+   }
+   return *this;
+ }
+
+private:
+
+  otl_stream& operator=(const otl_stream&)
+  {
+    return *this;
+  }
+
+  otl_stream(const otl_stream&)
+#if defined(OTL_ORA_DECLARE_COMMON_READ_STREAM_INTERFACE)
+    : otl_read_stream_interface()
+#endif
+  {}
+
+#if !defined(OTL_STREAM_NO_PRIVATE_BOOL_OPERATORS)
+  otl_stream& operator>>(bool&)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+
+  otl_stream& operator<<(const bool)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+
+#endif
+
+#if !defined(OTL_STREAM_NO_PRIVATE_UNSIGNED_LONG_OPERATORS)
+  otl_stream& operator>>(unsigned long int&)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+
+  otl_stream& operator<<(const unsigned long int)
+    OTL_NO_THROW
+  {
+   return *this;
+  }
+#endif
+
+};
+
+inline otl_connect& operator>>(otl_connect& connect, otl_stream& s)
+{
+  const char* cmd=connect.getCmd();
+  const char* invalid_cmd="*** INVALID COMMAND ***";
+  if(!cmd)
+    cmd=invalid_cmd;
+  s.open(s.getBufSize(),cmd,connect);
+  return connect;
+}
+
+#if (defined(OTL_STL)||defined(OTL_VALUE_TEMPLATE_ON)) \
+    && defined(OTL_VALUE_TEMPLATE)
+template <OTL_TYPE_NAME TData>
+otl_stream& operator<<(otl_stream& s, const otl_value<TData>& var)
+  OTL_THROWS_OTL_EXCEPTION
+{
+ if(var.ind)
+  s<<otl_null();
+ else
+  s<<var.v;
+ return s;
+}
+
+template <OTL_TYPE_NAME TData>
+otl_stream& operator>>(otl_stream& s, otl_value<TData>& var)
+  OTL_THROWS_OTL_EXCEPTION
+{
+  s>>var.v;
+  if(s.is_null())
+    var.ind=true;
+  else
+    var.ind=false;
+  return s;
+}
+
+template <OTL_TYPE_NAME TData>
+otl_refcur_stream& operator>>(otl_refcur_stream& s, otl_value<TData>& var)
+  OTL_THROWS_OTL_EXCEPTION
+{
+  s>>var.v;
+  if(s.is_null())
+    var.ind=true;
+  else
+    var.ind=false;
+  return s;
+}
+
+#endif
+
+typedef otl_tmpl_nocommit_stream
+<otl_stream,
+ otl_connect,
+ otl_exception> otl_nocommit_stream;
+
+#if defined(OTL_BIGINT) && defined(OTL_STR_TO_BIGINT) && \
+    defined(OTL_BIGINT_TO_STR)
+inline otl_stream& operator>>(otl_stream& s, OTL_BIGINT& n)
+  OTL_THROWS_OTL_EXCEPTION
+{
+  char temp_val[otl_bigint_str_size];
+#if defined(OTL_UNICODE)
+  OTL_CHAR unitemp_val[otl_bigint_str_size];
+  s>>OTL_RCAST(unsigned char*,unitemp_val);
+  OTL_CHAR* uc=unitemp_val;
+  char* c=temp_val;
+  while(*uc){
+    *c=OTL_SCAST(char,*uc);
+    ++uc; ++c;
+  }
+  *c=0;
+#else
+  s>>temp_val;
+#endif
+  if(s.is_null()){
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if(s.is_null())
+     n=OTL_SCAST(OTL_BIGINT,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+    return s;
+  }
+  OTL_STR_TO_BIGINT(temp_val,n)
+  return s;
+}
+
+inline otl_refcur_stream& operator>>(otl_refcur_stream& s, OTL_BIGINT& n)
+  OTL_THROWS_OTL_EXCEPTION
+{
+  char temp_val[otl_bigint_str_size];
+  s>>temp_val;
+  if(s.is_null()){
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+   if(s.is_null())
+     n=OTL_SCAST(OTL_BIGINT,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+#endif
+    return s;
+  }
+  OTL_STR_TO_BIGINT(temp_val,n)
+  return s;
+}
+
+inline otl_stream& operator<<(otl_stream& s, const OTL_BIGINT n)
+  OTL_THROWS_OTL_EXCEPTION
+{
+#if defined(OTL_UNICODE)
+  char temp_val[otl_bigint_str_size];
+  OTL_BIGINT_TO_STR(n,temp_val)
+  OTL_CHAR unitemp_val[otl_bigint_str_size];
+  OTL_CHAR* uc=unitemp_val;
+  char* c=temp_val;
+  while(*c){
+    *uc=OTL_SCAST(OTL_CHAR,*c);
+    ++uc; ++c;
+  }
+  *uc=0;
+  s<<OTL_RCAST(unsigned char*,unitemp_val);
+#else
+  char temp_val[otl_bigint_str_size];
+  OTL_BIGINT_TO_STR(n,temp_val)
+  s<<temp_val;
+#endif
+  return s;
+}
+
+#endif
+
+OTL_ORA8_NAMESPACE_END
+#ifndef __STDC__DEFINED
+#undef __STDC__
+#endif
+#endif
+
+#if defined(OTL_STL) && !defined(OTL_STLPORT)
+
+#define STL_INPUT_ITERATOR_TO_DERIVE_FROM 
+#define STL_OUTPUT_ITERATOR_TO_DERIVE_FROM 
+
+#elif defined(OTL_STLPORT)
+
+#define STL_INPUT_ITERATOR_TO_DERIVE_FROM       \
+  : public STD_NAMESPACE_PREFIX iterator        \
+    <STD_NAMESPACE_PREFIX input_iterator_tag,   \
+     T,Distance,T*,T&>
+
+#define STL_OUTPUT_ITERATOR_TO_DERIVE_FROM              \
+  : public STD_NAMESPACE_PREFIX iterator                \
+         <STD_NAMESPACE_PREFIX output_iterator_tag,     \
+           T,void,void,void>
+
+#endif
+
+#if defined(OTL_STL) || defined(OTL_STLPORT)
+
+#define OTL_ITERATORS                                                   \
+template <OTL_TYPE_NAME T, OTL_TYPE_NAME Distance=ptrdiff_t>            \
+class otl_input_iterator STL_INPUT_ITERATOR_TO_DERIVE_FROM {            \
+public:                                                                 \
+                                                                        \
+  typedef STD_NAMESPACE_PREFIX input_iterator_tag iterator_category;    \
+  typedef T                  value_type;                                \
+  typedef Distance           difference_type;                           \
+  typedef const T*           pointer;                                   \
+  typedef const T&           reference;                                 \
+                                                                        \
+ otl_stream* stream;                                                    \
+ T value;                                                               \
+ int end_marker;                                                        \
+                                                                        \
+ void read()                                                            \
+ {                                                                      \
+  if(!stream){                                                          \
+   end_marker=-1;                                                       \
+   return;                                                              \
+  }                                                                     \
+  if(stream->eof()){                                                    \
+   end_marker=-1;                                                       \
+   return;                                                              \
+  }                                                                     \
+  end_marker=stream->eof();                                             \
+  if(!end_marker)*stream>>value;                                        \
+  if(stream->eof())end_marker=1;                                        \
+ }                                                                      \
+                                                                        \
+ otl_input_iterator() : stream(0), end_marker(-1){}                     \
+ otl_input_iterator(otl_stream& s) : stream(&s), end_marker(0){read();} \
+                                                                        \
+ const T& operator*() const { return value; }                           \
+                                                                        \
+ otl_input_iterator<T, Distance>& operator++(){read(); return *this;}   \
+                                                                        \
+ otl_input_iterator<T, Distance> operator++(int)                        \
+ {                                                                      \
+  otl_input_iterator<T, Distance> tmp = *this;                          \
+  read();                                                               \
+  return tmp;                                                           \
+ }                                                                      \
+                                                                        \
+};                                                                      \
+                                                                        \
+template <OTL_TYPE_NAME T, OTL_TYPE_NAME Distance>                      \
+inline STD_NAMESPACE_PREFIX input_iterator_tag iterator_category(       \
+  const otl_input_iterator<T, Distance>&                                \
+)                                                                       \
+{                                                                       \
+  return STD_NAMESPACE_PREFIX input_iterator_tag();                     \
+}                                                                       \
+                                                                        \
+template <OTL_TYPE_NAME T, OTL_TYPE_NAME Distance>                      \
+inline T* value_type(const otl_input_iterator<T, Distance>&)            \
+{                                                                       \
+ return 0;                                                              \
+}                                                                       \
+                                                                        \
+template <OTL_TYPE_NAME T, OTL_TYPE_NAME Distance>                      \
+inline Distance* distance_type(const otl_input_iterator<T, Distance>&)  \
+{                                                                       \
+ return 0;                                                              \
+}                                                                       \
+                                                                        \
+template <OTL_TYPE_NAME T, OTL_TYPE_NAME Distance>                      \
+bool operator==(const otl_input_iterator<T, Distance>& x,               \
+                const otl_input_iterator<T, Distance>& y)               \
+{                                                                       \
+ return x.stream == y.stream && x.end_marker == y.end_marker ||         \
+        x.end_marker == -1 && y.end_marker == -1;                       \
+}                                                                       \
+                                                                        \
+template <OTL_TYPE_NAME T, OTL_TYPE_NAME Distance>                      \
+bool operator!=(const otl_input_iterator<T, Distance>& x,               \
+                const otl_input_iterator<T, Distance>& y)               \
+{                                                                       \
+ return !(x==y);                                                        \
+}                                                                       \
+                                                                        \
+template <OTL_TYPE_NAME T>                                              \
+class otl_output_iterator STL_OUTPUT_ITERATOR_TO_DERIVE_FROM {          \
+protected:                                                              \
+ otl_stream* stream;                                                    \
+public:                                                                 \
+                                                                        \
+  typedef STD_NAMESPACE_PREFIX output_iterator_tag iterator_category;   \
+  typedef void       value_type;                                        \
+  typedef void       difference_type;                                   \
+  typedef void       pointer;                                           \
+  typedef void       reference;                                         \
+                                                                        \
+ otl_output_iterator(otl_stream& s) : stream(&s){}                      \
+ otl_output_iterator<T>& operator=(const T& value)                      \
+ {                                                                      \
+  *stream << value;                                                     \
+  return *this;                                                         \
+ }                                                                      \
+ otl_output_iterator<T>& operator*() { return *this; }                  \
+ otl_output_iterator<T>& operator++() { return *this; }                 \
+ otl_output_iterator<T> operator++(int) { return *this; }               \
+                                                                        \
+};                                                                      \
+                                                                        \
+template <OTL_TYPE_NAME T>                                              \
+inline STD_NAMESPACE_PREFIX output_iterator_tag                         \
+iterator_category(const otl_output_iterator<T>&) {                      \
+  return STD_NAMESPACE_PREFIX output_iterator_tag();                    \
+}
+
+#if defined(OTL_ORA7)
+OTL_ORA7_NAMESPACE_BEGIN
+OTL_ITERATORS
+OTL_ORA7_NAMESPACE_END
+#endif
+
+#if defined(OTL_ORA8)
+OTL_ORA8_NAMESPACE_BEGIN
+OTL_ITERATORS
+OTL_ORA8_NAMESPACE_END
+#endif
+
+#if defined(OTL_ODBC)
+OTL_ODBC_NAMESPACE_BEGIN
+OTL_ITERATORS
+OTL_ODBC_NAMESPACE_END
+#endif
+
+#endif
+
+#if defined(OTL_STREAM_READ_ITERATOR_ON)
+
+#if defined(OTL_UNICODE)
+#error UNICODE is not supported when #define OTL_STREAM_READ_ITERATOR_ON is enabled
+#endif
+
+#if defined(OTL_STL)
+#include <map>
+#endif
+
+#if defined(OTL_ACE)
+#include <ace/SString.h>
+#include <ace/Array.h>
+#include <ace/Functor.h>
+#include <ace/RB_Tree.h>
+#include <ace/Null_Mutex.h>
+#endif
+
+#if defined(OTL_STL)||defined(OTL_ACE)
+class otl_ltcharstar{
+public:
+#if defined(OTL_STL)
+ bool 
+#else
+ int
+#endif
+ operator()(const char* s1, const char* s2) const
+ {
+#if defined(__BORLANDC__) || defined(_MSC_VER)
+   return stricmp(s1,s2)<0;
+#else
+  return strcasecmp(s1,s2)<0;
+#endif
+ }
+};
+#endif
+template<OTL_TYPE_NAME OTLStream,
+         OTL_TYPE_NAME OTLException
+#if !defined(OTL_ORA7)
+         ,OTL_TYPE_NAME OTLLobStream
+#endif
+         >
+class otl_stream_read_iterator{
+public:
+
+  otl_stream_read_iterator(OTLStream& s)
+  {
+    set();
+    attach(s);
+  }
+
+  otl_stream_read_iterator()
+  {
+    set();
+  }
+
+  ~otl_stream_read_iterator()
+  {
+    reset();
+  }
+
+  void attach(OTLStream& s)
+  {
+    reset();
+    str_=&s;
+    if(!str_->good()){
+      str_=0;
+      throw OTLException(otl_error_msg_19,otl_error_code_19);
+    }
+    out_vars_=str_->describe_out_vars(out_vars_len_);
+    if(!out_vars_){
+      throw OTLException(otl_error_msg_21,otl_error_code_21);
+    }
+    if(str_->shell)
+      lob_stream_mode_flag_=str_->shell->lob_stream_flag;
+    allocate_arrays();
+  }
+
+  void detach(void)
+  {
+    reset();
+  }
+
+  const otl_var_desc* describe(int& var_desc_len)
+  {
+    var_desc_len=out_vars_len_;
+    return out_vars_;
+  }
+
+  bool next_row(void)
+  {
+    if(str_->eof())return false;
+    for(int i=0;i<out_vars_len_;++i){
+      otl_var_desc& curr_var=out_vars_[i];
+      unsigned char* curr_ptr=out_vars_arr_[i];
+      switch(curr_var.ftype){
+      case otl_var_char:
+        (*str_)>>OTL_RCAST(char*,curr_ptr);
+        break;
+      case otl_var_double:
+        (*str_)>>*OTL_RCAST(double*,curr_ptr);
+        break;
+      case otl_var_float:
+        (*str_)>>*OTL_RCAST(float*,curr_ptr);
+        break;
+      case otl_var_int:
+        (*str_)>>*OTL_RCAST(int*,curr_ptr);
+        break;
+      case otl_var_unsigned_int:
+        (*str_)>>*OTL_RCAST(unsigned*,curr_ptr);
+        break;
+      case otl_var_short:
+        (*str_)>>*OTL_RCAST(short int*,curr_ptr);
+        break;
+      case otl_var_long_int:
+        (*str_)>>*OTL_RCAST(long int*,curr_ptr);
+        break;
+      case otl_var_raw:
+        (*str_)>>*OTL_RCAST(otl_long_string*,curr_ptr);
+        break;
+      case otl_var_timestamp:
+      case otl_var_db2time:
+      case otl_var_db2date:
+      case otl_var_tz_timestamp:
+      case otl_var_ltz_timestamp:
+        (*str_)>>*OTL_RCAST(otl_datetime*,curr_ptr);
+        break;
+      case otl_var_varchar_long:
+      case otl_var_raw_long:
+      case otl_var_clob:
+      case otl_var_blob:
+#if !defined(OTL_ORA7)
+        if(lob_stream_mode_flag_)
+          (*str_)>>*OTL_RCAST(OTLLobStream*,curr_ptr);
+        else
+#endif
+          (*str_)>>*OTL_RCAST(otl_long_string*,curr_ptr);
+        break;
+#if defined(OTL_BIGINT)
+      case otl_var_bigint:
+        (*str_)>>*OTL_RCAST(OTL_BIGINT*,curr_ptr);
+        break;
+#endif
+      }
+      out_vars_null_arr_[i]=str_->is_null()==1;
+    }
+    return true;
+  }
+
+#if !defined(OTL_ORA7)
+  void get(const int pos, OTLLobStream*& s)
+  {
+    check_pos(pos);
+    check_type(pos,otl_var_long_string);
+    if(!lob_stream_mode_flag_){
+      char var_info[255];
+      otl_var_info_var3
+        (out_vars_[pos-1].name,
+         out_vars_[pos-1].ftype,
+         otl_var_lob_stream,
+         var_info,
+         sizeof(var_info));
+      throw OTLException
+        (otl_error_msg_25,
+         otl_error_code_25,
+         str_->get_stm_text(),
+         var_info);
+    }
+    unsigned char* curr_ptr=out_vars_arr_[pos-1];
+    s=OTL_RCAST(OTLLobStream*,curr_ptr);
+  }
+#endif
+
+#if defined(OTL_STL) && !defined(OTL_ORA7)
+  void get(const char* var_name,OTLLobStream*& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE) && !defined(OTL_ORA7)
+  void get(const char* var_name,OTLLobStream*& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, char& c)
+  {
+    check_pos(pos);
+    check_type(pos,otl_var_char);
+    unsigned char* curr_ptr=out_vars_arr_[pos-1];
+    c=OTL_SCAST(char,*curr_ptr);
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, char& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, char& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, unsigned char& c)
+  {
+    check_pos(pos);
+    check_type(pos,otl_var_char);
+    unsigned char* curr_ptr=out_vars_arr_[pos-1];
+    c=*curr_ptr;
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, unsigned char& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, unsigned char& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, char* s)
+  {
+    check_pos(pos);
+    check_type(pos,otl_var_char);
+    unsigned char* curr_ptr=out_vars_arr_[pos-1];
+    otl_strcpy(OTL_RCAST(unsigned char*,s),
+               OTL_RCAST(const unsigned char*,curr_ptr));
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, char* n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, char* n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, unsigned char* s)
+  {
+    check_pos(pos);
+    check_type(pos,otl_var_char);
+    unsigned char* curr_ptr=out_vars_arr_[pos-1];
+    otl_strcpy(OTL_RCAST(char*,s),OTL_RCAST(const char*,curr_ptr));
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, unsigned char* n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, unsigned char* n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+
+  void get(const int pos, unsigned int& n)
+  {
+    check_pos(pos);
+    void* curr_ptr=out_vars_arr_[pos-1];
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+    int match_found=otl_numeric_convert_T<unsigned,otl_var_unsigned_int>
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#else
+    int match_found=otl_numeric_convert_T
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#endif
+    if(match_found)return;
+    check_type(pos,otl_var_unsigned_int);
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, unsigned int& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, unsigned int& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, int& n)
+  {
+    check_pos(pos);
+    void* curr_ptr=out_vars_arr_[pos-1];
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+    int match_found=otl_numeric_convert_T<int,otl_var_int>
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#else
+    int match_found=otl_numeric_convert_T
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#endif
+    if(match_found)return;
+    check_type(pos,otl_var_unsigned_int);
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, int& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, int& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, short int& n)
+  {
+    check_pos(pos);
+    void* curr_ptr=out_vars_arr_[pos-1];
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+    int match_found=otl_numeric_convert_T<short,otl_var_short>
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#else
+    int match_found=otl_numeric_convert_T
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#endif
+    if(match_found)return;
+    check_type(pos,otl_var_short);
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, short int& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, short int& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, long int& n)
+  {
+    check_pos(pos);
+    void* curr_ptr=out_vars_arr_[pos-1];
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+    int match_found=otl_numeric_convert_T<long int,otl_var_long_int>
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#else
+    int match_found=otl_numeric_convert_T
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#endif
+    if(match_found)return;
+    check_type(pos,otl_var_long_int);
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, long int& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, long int& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, float& n)
+  {
+    check_pos(pos);
+    void* curr_ptr=out_vars_arr_[pos-1];
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+    int match_found=otl_numeric_convert_T<float,otl_var_float>
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#else
+    int match_found=otl_numeric_convert_T
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#endif
+    if(match_found)return;
+    check_type(pos,otl_var_double);
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, float& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, float& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, double& n)
+  {
+    check_pos(pos);
+    void* curr_ptr=out_vars_arr_[pos-1];
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+    int match_found=otl_numeric_convert_T<double,otl_var_double>
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#else
+    int match_found=otl_numeric_convert_T
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#endif
+    if(match_found)return;
+    check_type(pos,otl_var_double);
+  }
+
+#if defined(OTL_BIGINT)
+  void get(const int pos, OTL_BIGINT& n)
+  {
+    check_pos(pos);
+    void* curr_ptr=out_vars_arr_[pos-1];
+#if defined(OTL_STRICT_NUMERIC_TYPE_CHECK_ON_SELECT)
+    int match_found=otl_numeric_convert_T<OTL_BIGINT,otl_var_bigint>
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#else
+    int match_found=otl_numeric_convert_T
+      (out_vars_[pos-1].ftype,
+       curr_ptr,
+       n);
+#endif
+    if(match_found)return;
+#if defined(OTL_STR_TO_BIGINT) && defined(OTL_BIGINT_TO_STR)
+    if(out_vars_[pos-1].ftype==otl_var_char){
+      char* temp_val=OTL_RCAST(char*,curr_ptr);
+#if defined(OTL_DEFAULT_NUMERIC_NULL_TO_VAL)
+      if(is_null(pos)){
+        n=OTL_SCAST(OTL_BIGINT,OTL_DEFAULT_NUMERIC_NULL_TO_VAL);
+        return;
+      }
+#endif
+      OTL_STR_TO_BIGINT(temp_val,n);
+      return;
+    }
+    check_type(pos,otl_var_bigint);
+#else
+    check_type(pos,otl_var_bigint);
+#endif
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, OTL_BIGINT& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, OTL_BIGINT& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+#endif
+
+  bool is_null(const int pos)
+  {
+    check_pos(pos);
+    return out_vars_null_arr_[pos-1];
+  }
+
+#if defined(OTL_STL)
+  bool is_null(const char* var_name)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    return is_null((*it).second+1);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  bool is_null(const char* var_name)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    return is_null(it->item()+1);
+  }
+#endif
+
+#if defined(OTL_STL) || defined(USER_DEFINED_STRING_CLASS)
+  void get(const int pos, OTL_STRING_CONTAINER& s)
+  {
+    check_pos(pos);
+    otl_var_desc& curr_var=out_vars_[pos-1];
+    unsigned char* curr_ptr=out_vars_arr_[pos-1];
+    switch(curr_var.ftype){
+    case otl_var_varchar_long:
+    case otl_var_raw_long:
+    case otl_var_clob:
+    case otl_var_blob:
+      {
+        otl_long_string* ls=OTL_RCAST(otl_long_string*,curr_ptr);
+        int len=ls->len();
+        s.assign(OTL_RCAST(char*,ls->v),len);
+      }
+      break;
+    case otl_var_char:
+      s=OTL_RCAST(char*,curr_ptr);
+      break;
+    default:
+      {
+        char var_info[255];
+        otl_var_info_var3
+          (out_vars_[pos-1].name,
+           out_vars_[pos-1].ftype,
+           otl_var_char,
+           var_info,
+           sizeof(var_info));
+        throw OTLException
+          (otl_error_msg_23,
+           otl_error_code_23,
+           str_->get_stm_text(),
+           var_info);
+      }
+    }
+  }
+#endif
+
+#if defined(OTL_STL)
+  void get(const char* var_name, OTL_STRING_CONTAINER& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, OTL_STRING_CONTAINER& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+
+  void get(const int pos, otl_long_string& s)
+  {
+    check_pos(pos);
+    check_type(pos,otl_var_long_string);
+    unsigned char* curr_ptr=out_vars_arr_[pos-1];
+    s=*OTL_RCAST(otl_long_string*,curr_ptr);
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, otl_long_string& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, otl_long_string& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, otl_long_string*& s)
+  {
+    check_pos(pos);
+    check_type(pos,otl_var_long_string);
+    unsigned char* curr_ptr=out_vars_arr_[pos-1];
+    s=OTL_RCAST(otl_long_string*,curr_ptr);
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, otl_long_string*& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, otl_long_string*& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+  void get(const int pos, otl_datetime& s)
+  {
+    check_pos(pos);
+    check_type(pos,otl_var_timestamp);
+    unsigned char* curr_ptr=out_vars_arr_[pos-1];
+    s=*OTL_RCAST(otl_datetime*,curr_ptr);
+  }
+
+#if defined(OTL_STL)
+  void get(const char* var_name, otl_datetime& n)
+  {
+    var_name2pos_map_type::iterator it=var_name2pos_map_.find(var_name);
+    check_name(it,var_name);
+    get((*it).second+1,n);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void get(const char* var_name, otl_datetime& n)
+  {
+    var_name2pos_map_type::ENTRY* it=0;
+    var_name2pos_map_.find(var_name,it);
+    check_name(it,var_name);
+    get(it->item()+1,n);
+  }
+#endif
+
+protected:
+
+  otl_var_desc* out_vars_;
+  int out_vars_len_;
+  OTLStream* str_;
+  unsigned char** out_vars_arr_;
+  bool* out_vars_null_arr_;
+  bool out_vars_constructed_;
+  bool lob_stream_mode_flag_;
+
+#if defined(OTL_STL)
+  typedef STD_NAMESPACE_PREFIX 
+    map<const char*,int,otl_ltcharstar> var_name2pos_map_type;
+  var_name2pos_map_type var_name2pos_map_;
+#endif
+
+#if defined(OTL_ACE)
+  typedef
+  ACE_RB_Tree<const char*,
+              int,
+              otl_ltcharstar,
+              ACE_Null_Mutex> var_name2pos_map_type;
+  var_name2pos_map_type var_name2pos_map_;
+#endif
+
+  void check_pos(const int pos)
+  {
+    int actual_pos=pos-1;
+    if(actual_pos<0 || actual_pos>out_vars_len_-1){
+      throw OTLException
+        (otl_error_msg_22,
+         otl_error_code_22,
+         str_->get_stm_text());
+    }
+  }
+
+#if defined(OTL_STL)
+  void check_name(var_name2pos_map_type::iterator& it, const char* var_name)
+  {
+    if(it==var_name2pos_map_.end())
+      throw OTLException
+        (otl_error_msg_26,
+         otl_error_code_26,
+         str_->get_stm_text(), 
+         var_name);
+  }
+#endif
+
+#if defined(OTL_ACE)
+  void check_name(var_name2pos_map_type::ENTRY* it,const char* var_name)
+  {
+    if(!it){
+      throw OTLException
+        (otl_error_msg_26,
+         otl_error_code_26,
+         str_->get_stm_text(), 
+         var_name);
+    }
+  }
+#endif
+
+  void check_type(const int pos, const int type_code)
+  {
+    switch(out_vars_[pos-1].ftype){
+    case otl_var_timestamp:
+    case otl_var_tz_timestamp:
+    case otl_var_ltz_timestamp:
+      if(type_code==otl_var_timestamp)
+        return;
+    case otl_var_varchar_long:
+    case otl_var_raw_long:
+    case otl_var_clob:
+    case otl_var_blob:
+      if(type_code==otl_var_long_string)
+        return;
+    case otl_var_raw:
+      if(type_code==otl_var_long_string && lob_stream_mode_flag_){
+        char var_info1[255];
+        otl_var_info_var4
+          (out_vars_[pos-1].name,
+           out_vars_[pos-1].ftype,
+           otl_var_lob_stream,
+           var_info1,
+           sizeof(var_info1));
+        throw OTLException
+          (otl_error_msg_28,
+           otl_error_code_28,
+           str_->get_stm_text(),
+           var_info1);
+      }else
+        return;
+    default:
+      if(out_vars_[pos-1].ftype==type_code)
+        return;
+    }
+    char var_info2[255];
+    otl_var_info_var3
+      (out_vars_[pos-1].name,
+       out_vars_[pos-1].ftype,
+       type_code,
+       var_info2,
+       sizeof(var_info2));
+    throw OTLException
+      (otl_error_msg_23,
+       otl_error_code_23,
+       str_->get_stm_text(),
+       var_info2);
+  }
+
+  void set(void)
+  {
+    out_vars_=0;
+    out_vars_len_=0;
+    str_=0;
+    out_vars_arr_=0;
+    out_vars_null_arr_=0;
+    out_vars_constructed_=false;
+    lob_stream_mode_flag_=false;
+  }
+
+  void reset(void)
+  {
+    if(out_vars_constructed_){
+      for(int i=0;i<out_vars_len_;++i){
+        switch(out_vars_[i].ftype){
+        case otl_var_char:
+          delete[] OTL_RCAST(char*,out_vars_arr_[i]);
+          break;
+        case otl_var_double:
+          delete OTL_RCAST(double*,out_vars_arr_[i]);
+          break;
+        case otl_var_float:
+          delete OTL_RCAST(float*,out_vars_arr_[i]);
+          break;
+        case otl_var_int:
+          delete OTL_RCAST(int*,out_vars_arr_[i]);
+          break;
+        case otl_var_unsigned_int:
+          delete OTL_RCAST(unsigned*,out_vars_arr_[i]);
+          break;
+        case otl_var_short:
+          delete OTL_RCAST(short int*,out_vars_arr_[i]);
+          break;
+        case otl_var_long_int:
+          delete OTL_RCAST(long int*,out_vars_arr_[i]);
+          break;
+#if defined(OTL_BIGINT)
+        case otl_var_bigint:
+          delete OTL_RCAST(OTL_BIGINT*,out_vars_arr_[i]);
+          break;
+#endif
+        case otl_var_raw:
+          delete OTL_RCAST(otl_long_string*,out_vars_arr_[i]);
+          break;
+        case otl_var_varchar_long:
+        case otl_var_raw_long:
+        case otl_var_clob:
+        case otl_var_blob:
+#if !defined(OTL_ORA7)
+          if(lob_stream_mode_flag_)
+            delete OTL_RCAST(OTLLobStream*,out_vars_arr_[i]);
+          else
+#endif
+            delete OTL_RCAST(otl_long_string*,out_vars_arr_[i]);
+          break;
+        case otl_var_timestamp:
+          delete OTL_RCAST(otl_datetime*,out_vars_arr_[i]);
+          break;
+        default:
+          break;
+        }
+        out_vars_arr_[i]=0;
+      }
+      out_vars_constructed_=false;
+    }
+    delete[] out_vars_arr_;
+    delete[] out_vars_null_arr_;
+#if defined(OTL_STL)||defined(OTL_ACE)
+    var_name2pos_map_.clear();
+#endif
+    set();
+  }
+
+  int calculate_buffer_size
+  (const otl_var_desc* var,
+   const int vars_len)
+  {
+    for(int i=0;i<vars_len;++i){
+      const otl_var_desc& curr_var=var[i];
+      if(curr_var.ftype==otl_var_refcur||curr_var.pl_tab_flag)
+        throw OTLException(otl_error_msg_20,otl_error_code_20);
+    }
+    return vars_len;
+  }
+  
+  void allocate_arrays(void)
+  {
+    if(out_vars_){
+      out_vars_null_arr_=new bool[out_vars_len_];
+      int buf_size=calculate_buffer_size(out_vars_,out_vars_len_);
+      out_vars_arr_=new unsigned char*[buf_size];
+      construct_elements();
+    }
+  }
+
+  void construct_elements(void)
+  {
+    for(int i=0;i<out_vars_len_;++i){
+      out_vars_null_arr_[i]=true;
+      const otl_var_desc& curr_var=out_vars_[i];
+      switch(curr_var.ftype){
+      case otl_var_char:
+        {
+          char* ptr=new char[curr_var.elem_size];
+          *ptr=0;
+          out_vars_arr_[i]=OTL_RCAST(unsigned char*,ptr);
+        }
+        break;
+      case otl_var_raw:
+        out_vars_arr_[i]=
+          OTL_RCAST(unsigned char*,new otl_long_string(curr_var.elem_size));
+        break;
+      case otl_var_double:
+        out_vars_arr_[i]=OTL_RCAST(unsigned char*,new double(0));
+        break;
+      case otl_var_float:
+        out_vars_arr_[i]=OTL_RCAST(unsigned char*,new float(0));
+        break;
+      case otl_var_int:
+        out_vars_arr_[i]=OTL_RCAST(unsigned char*,new int(0));
+        break;
+      case otl_var_unsigned_int:
+        out_vars_arr_[i]=OTL_RCAST(unsigned char*,new unsigned(0));
+        break;
+      case otl_var_short:
+        out_vars_arr_[i]=OTL_RCAST(unsigned char*,new short(0));
+        break;
+      case otl_var_long_int:
+        out_vars_arr_[i]=OTL_RCAST(unsigned char*,new long(0));
+        break;
+      case otl_var_timestamp:
+      case otl_var_db2time:
+      case otl_var_db2date:
+      case otl_var_tz_timestamp:
+      case otl_var_ltz_timestamp:
+        out_vars_arr_[i]=OTL_RCAST(unsigned char*,new otl_datetime);
+        break;
+      case otl_var_varchar_long:
+      case otl_var_raw_long:
+      case otl_var_clob:
+      case otl_var_blob:
+#if !defined(OTL_ORA7)
+        if(lob_stream_mode_flag_)
+          out_vars_arr_[i]=OTL_RCAST(unsigned char*,new OTLLobStream());
+        else
+#endif
+          out_vars_arr_[i]=
+            OTL_RCAST(unsigned char*,
+                      new otl_long_string
+                      (str_->shell->adb->get_max_long_size()));
+        break;
+#if defined(OTL_BIGINT)
+      case otl_var_bigint:
+        out_vars_arr_[i]=OTL_RCAST(unsigned char*,new OTL_BIGINT(0));
+        break;
+#endif
+      }
+#if defined(OTL_STL)
+      var_name2pos_map_[curr_var.name]=i;
+#endif
+#if defined(OTL_ACE)
+      var_name2pos_map_.bind(curr_var.name,i);
+#endif
+    }
+    out_vars_constructed_=true;
+  }
+   
+};
+
+#endif
+
+#if defined(OTL_ORA_TEXT_ON)&&defined(text)
+#undef text
+#endif
+
+#endif

Added: kde-extras/tora/branches/upstream/current/install-sh
===================================================================
--- kde-extras/tora/branches/upstream/current/install-sh	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/install-sh	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,294 @@
+#!/bin/sh
+#
+# install - install a program, script, or datafile
+#
+# This originates from X11R5 (mit/util/scripts/install.sh), which was
+# later released in X11R6 (xc/config/util/install.sh) with the
+# following copyright and license.
+#
+# Copyright (C) 1994 X Consortium
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name of the X Consortium shall not
+# be used in advertising or otherwise to promote the sale, use or other deal-
+# ings in this Software without prior written authorization from the X Consor-
+# tium.
+#
+#
+# FSF changes to this file are in the public domain.
+#
+# Calling this script install-sh is preferred over install.sh, to prevent
+# `make' implicit rules from creating a file called install from it
+# when there is no Makefile.
+#
+# This script is compatible with the BSD install script, but was written
+# from scratch.  It can only install one file at a time, a restriction
+# shared with many OS's install programs.
+
+
+# set DOITPROG to echo to test this script
+
+# Don't use :- since 4.3BSD and earlier shells don't like it.
+doit="${DOITPROG-}"
+
+
+# put in absolute paths if you don't have them in your path; or use env. vars.
+
+mvprog="${MVPROG-mv}"
+cpprog="${CPPROG-cp}"
+chmodprog="${CHMODPROG-chmod}"
+chownprog="${CHOWNPROG-chown}"
+chgrpprog="${CHGRPPROG-chgrp}"
+stripprog="${STRIPPROG-strip}"
+rmprog="${RMPROG-rm}"
+mkdirprog="${MKDIRPROG-mkdir}"
+
+transformbasename=""
+transform_arg=""
+instcmd="$mvprog"
+chmodcmd="$chmodprog 0755"
+chowncmd=""
+chgrpcmd=""
+stripcmd=""
+rmcmd="$rmprog -f"
+mvcmd="$mvprog"
+src=""
+dst=""
+dir_arg=""
+
+while [ x"$1" != x ]; do
+    case $1 in
+	-c) instcmd=$cpprog
+	    shift
+	    continue;;
+
+	-d) dir_arg=true
+	    shift
+	    continue;;
+
+	-m) chmodcmd="$chmodprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-o) chowncmd="$chownprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-g) chgrpcmd="$chgrpprog $2"
+	    shift
+	    shift
+	    continue;;
+
+	-s) stripcmd=$stripprog
+	    shift
+	    continue;;
+
+	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
+	    shift
+	    continue;;
+
+	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
+	    shift
+	    continue;;
+
+	*)  if [ x"$src" = x ]
+	    then
+		src=$1
+	    else
+		# this colon is to work around a 386BSD /bin/sh bug
+		:
+		dst=$1
+	    fi
+	    shift
+	    continue;;
+    esac
+done
+
+if [ x"$src" = x ]
+then
+	echo "$0: no input file specified" >&2
+	exit 1
+else
+	:
+fi
+
+if [ x"$dir_arg" != x ]; then
+	dst=$src
+	src=""
+
+	if [ -d "$dst" ]; then
+		instcmd=:
+		chmodcmd=""
+	else
+		instcmd=$mkdirprog
+	fi
+else
+
+# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
+# might cause directories to be created, which would be especially bad
+# if $src (and thus $dsttmp) contains '*'.
+
+	if [ -f "$src" ] || [ -d "$src" ]
+	then
+		:
+	else
+		echo "$0: $src does not exist" >&2
+		exit 1
+	fi
+
+	if [ x"$dst" = x ]
+	then
+		echo "$0: no destination specified" >&2
+		exit 1
+	else
+		:
+	fi
+
+# If destination is a directory, append the input filename; if your system
+# does not like double slashes in filenames, you may need to add some logic
+
+	if [ -d "$dst" ]
+	then
+		dst=$dst/`basename "$src"`
+	else
+		:
+	fi
+fi
+
+## this sed command emulates the dirname command
+dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
+
+# Make sure that the destination directory exists.
+#  this part is taken from Noah Friedman's mkinstalldirs script
+
+# Skip lots of stat calls in the usual case.
+if [ ! -d "$dstdir" ]; then
+defaultIFS='
+	'
+IFS="${IFS-$defaultIFS}"
+
+oIFS=$IFS
+# Some sh's can't handle IFS=/ for some reason.
+IFS='%'
+set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+IFS=$oIFS
+
+pathcomp=''
+
+while [ $# -ne 0 ] ; do
+	pathcomp=$pathcomp$1
+	shift
+
+	if [ ! -d "$pathcomp" ] ;
+        then
+		$mkdirprog "$pathcomp"
+	else
+		:
+	fi
+
+	pathcomp=$pathcomp/
+done
+fi
+
+if [ x"$dir_arg" != x ]
+then
+	$doit $instcmd "$dst" &&
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
+else
+
+# If we're going to rename the final executable, determine the name now.
+
+	if [ x"$transformarg" = x ]
+	then
+		dstfile=`basename "$dst"`
+	else
+		dstfile=`basename "$dst" $transformbasename |
+			sed $transformarg`$transformbasename
+	fi
+
+# don't allow the sed command to completely eliminate the filename
+
+	if [ x"$dstfile" = x ]
+	then
+		dstfile=`basename "$dst"`
+	else
+		:
+	fi
+
+# Make a couple of temp file names in the proper directory.
+
+	dsttmp=$dstdir/_inst.$$_
+	rmtmp=$dstdir/_rm.$$_
+
+# Trap to clean up temp files at exit.
+
+	trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
+	trap '(exit $?); exit' 1 2 13 15
+
+# Move or copy the file name to the temp name
+
+	$doit $instcmd "$src" "$dsttmp" &&
+
+# and set any options; do chmod last to preserve setuid bits
+
+# If any of these fail, we abort the whole thing.  If we want to
+# ignore errors from any of these, just make sure not to ignore
+# errors from the above "$doit $instcmd $src $dsttmp" command.
+
+	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
+	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
+	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
+	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
+
+# Now remove or move aside any old file at destination location.  We try this
+# two ways since rm can't unlink itself on some systems and the destination
+# file might be busy for other reasons.  In this case, the final cleanup
+# might fail but the new file should still install successfully.
+
+{
+	if [ -f "$dstdir/$dstfile" ]
+	then
+		$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
+		$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
+		{
+		  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
+		  (exit 1); exit
+		}
+	else
+		:
+	fi
+} &&
+
+# Now rename the file to the real destination.
+
+	$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
+
+fi &&
+
+# The final little trick to "correctly" pass the exit status to the exit trap.
+
+{
+	(exit 0); exit
+}


Property changes on: kde-extras/tora/branches/upstream/current/install-sh
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/ltconfig
===================================================================
--- kde-extras/tora/branches/upstream/current/ltconfig	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ltconfig	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,3154 @@
+#! /bin/sh
+
+# ltconfig - Create a system-specific libtool.
+# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# A lot of this script is taken from autoconf-2.10.
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+echo=echo
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell.
+  exec "$SHELL" "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit 0
+fi
+
+# Find the correct PATH separator.  Usually this is `:', but
+# DJGPP uses `;' like DOS.
+if test "X${PATH_SEPARATOR+set}" != Xset; then
+  UNAME=${UNAME-`uname 2>/dev/null`}
+  case X$UNAME in
+    *-DOS) PATH_SEPARATOR=';' ;;
+    *)     PATH_SEPARATOR=':' ;;
+  esac
+fi
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+if test "X${echo_test_string+set}" != Xset; then
+  # find a string as large as possible, as long as the shell can cope with it
+  for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+    # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
+       echo_test_string="`eval $cmd`" &&
+       (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null; then
+      break
+    fi
+  done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" != 'X\t' ||
+   test "X`($echo "$echo_test_string") 2>/dev/null`" != X"$echo_test_string"; then
+  # The Solaris, AIX, and Digital Unix default echo programs unquote
+  # backslashes.  This makes it impossible to quote backslashes using
+  #   echo "$something" | sed 's/\\/\\\\/g'
+  #
+  # So, first we look for a working echo in the user's PATH.
+
+  IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+  for dir in $PATH /usr/ucb; do
+    if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+       test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+       test "X`($dir/echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+      echo="$dir/echo"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  if test "X$echo" = Xecho; then
+    # We didn't find a better echo, so look for alternatives.
+    if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+       test "X`(print -r "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+      # This shell has a builtin print -r that does the trick.
+      echo='print -r'
+    elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+	 test "X$CONFIG_SHELL" != X/bin/ksh; then
+      # If we have ksh, try running ltconfig again with it.
+      ORIGINAL_CONFIG_SHELL="${CONFIG_SHELL-/bin/sh}"
+      export ORIGINAL_CONFIG_SHELL
+      CONFIG_SHELL=/bin/ksh
+      export CONFIG_SHELL
+      exec "$CONFIG_SHELL" "$0" --no-reexec ${1+"$@"}
+    else
+      # Try using printf.
+      echo='printf "%s\n"'
+      if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+	 test "X`($echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+	# Cool, printf works
+	:
+      elif test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
+	   test "X`("$ORIGINAL_CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+	CONFIG_SHELL="$ORIGINAL_CONFIG_SHELL"
+	export CONFIG_SHELL
+	SHELL="$CONFIG_SHELL"
+	export SHELL
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      elif test "X`("$CONFIG_SHELL" "$0" --fallback-echo '\t') 2>/dev/null`" = 'X\t' &&
+	   test "X`("$CONFIG_SHELL" "$0" --fallback-echo "$echo_test_string") 2>/dev/null`" = X"$echo_test_string"; then
+	echo="$CONFIG_SHELL $0 --fallback-echo"
+      else
+	# maybe with a smaller string...
+	prev=:
+
+	for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+	  if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null; then
+	    break
+	  fi
+	  prev="$cmd"
+	done
+
+	if test "$prev" != 'sed 50q "$0"'; then
+	  echo_test_string=`eval $prev`
+	  export echo_test_string
+	  exec "${ORIGINAL_CONFIG_SHELL}" "$0" ${1+"$@"}
+	else
+	  # Oops.  We lost completely, so just stick with echo.
+	  echo=echo
+	fi
+      fi
+    fi
+  fi
+fi
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='sed -e s/^X//'
+sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# The name of this program.
+progname=`$echo "X$0" | $Xsed -e 's%^.*/%%'`
+
+# Constants:
+PROGRAM=ltconfig
+PACKAGE=libtool
+VERSION=1.3.5
+TIMESTAMP=" (1.385.2.206 2000/05/27 11:12:27)"
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
+ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+rm="rm -f"
+
+help="Try \`$progname --help' for more information."
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+enable_shared=yes
+# All known linkers require a `.a' archive for static linking (except M$VC,
+# which needs '.lib').
+enable_static=yes
+enable_fast_install=yes
+enable_dlopen=unknown
+enable_win32_dll=no
+ltmain=
+silent=
+srcdir=
+ac_config_guess=
+ac_config_sub=
+host=
+nonopt=
+ofile="$default_ofile"
+verify_host=yes
+with_gcc=no
+with_gnu_ld=no
+need_locks=yes
+ac_ext=c
+objext=o
+libext=a
+exeext=
+cache_file=
+
+old_AR="$AR"
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+old_CPPFLAGS="$CPPFLAGS"
+old_LDFLAGS="$LDFLAGS"
+old_LD="$LD"
+old_LN_S="$LN_S"
+old_LIBS="$LIBS"
+old_NM="$NM"
+old_RANLIB="$RANLIB"
+old_DLLTOOL="$DLLTOOL"
+old_OBJDUMP="$OBJDUMP"
+old_AS="$AS"
+
+# Parse the command line options.
+args=
+prev=
+for option
+do
+  case "$option" in
+  -*=*) optarg=`echo "$option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    eval "$prev=\$option"
+    prev=
+    continue
+  fi
+
+  case "$option" in
+  --help) cat <<EOM
+Usage: $progname [OPTION]... [HOST [LTMAIN]]
+
+Generate a system-specific libtool script.
+
+    --debug                enable verbose shell tracing
+    --disable-shared       do not build shared libraries
+    --disable-static       do not build static libraries
+    --disable-fast-install do not optimize for fast installation
+    --enable-dlopen        enable dlopen support
+    --enable-win32-dll     enable building dlls on win32 hosts
+    --help                 display this help and exit
+    --no-verify            do not verify that HOST is a valid host type
+-o, --output=FILE          specify the output file [default=$default_ofile]
+    --quiet                same as \`--silent'
+    --silent               do not print informational messages
+    --srcdir=DIR           find \`config.guess' in DIR
+    --version              output version information and exit
+    --with-gcc             assume that the GNU C compiler will be used
+    --with-gnu-ld          assume that the C compiler uses the GNU linker
+    --disable-lock         disable file locking
+    --cache-file=FILE      configure cache file
+
+LTMAIN is the \`ltmain.sh' shell script fragment or \`ltmain.c' program
+that provides basic libtool functionality.
+
+HOST is the canonical host system name [default=guessed].
+EOM
+  exit 0
+  ;;
+
+  --debug)
+    echo "$progname: enabling shell trace mode"
+    set -x
+    ;;
+
+  --disable-shared) enable_shared=no ;;
+
+  --disable-static) enable_static=no ;;
+
+  --disable-fast-install) enable_fast_install=no ;;
+
+  --enable-dlopen) enable_dlopen=yes ;;
+
+  --enable-win32-dll) enable_win32_dll=yes ;;
+
+  --quiet | --silent) silent=yes ;;
+
+  --srcdir) prev=srcdir ;;
+  --srcdir=*) srcdir="$optarg" ;;
+
+  --no-verify) verify_host=no ;;
+
+  --output | -o) prev=ofile ;;
+  --output=*) ofile="$optarg" ;;
+
+  --version) echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"; exit 0 ;;
+
+  --with-gcc) with_gcc=yes ;;
+  --with-gnu-ld) with_gnu_ld=yes ;;
+
+  --disable-lock) need_locks=no ;;
+
+  --cache-file=*) cache_file="$optarg" ;;
+
+  -*)
+    echo "$progname: unrecognized option \`$option'" 1>&2
+    echo "$help" 1>&2
+    exit 1
+    ;;
+
+  *)
+    if test -z "$ltmain"; then
+      ltmain="$option"
+    elif test -z "$host"; then
+# This generates an unnecessary warning for sparc-sun-solaris4.1.3_U1
+#      if test -n "`echo $option| sed 's/[-a-z0-9.]//g'`"; then
+#        echo "$progname: warning \`$option' is not a valid host type" 1>&2
+#      fi
+      host="$option"
+    else
+      echo "$progname: too many arguments" 1>&2
+      echo "$help" 1>&2
+      exit 1
+    fi ;;
+  esac
+done
+
+if test -z "$ltmain"; then
+  echo "$progname: you must specify a LTMAIN file" 1>&2
+  echo "$help" 1>&2
+  exit 1
+fi
+
+if test ! -f "$ltmain"; then
+  echo "$progname: \`$ltmain' does not exist" 1>&2
+  echo "$help" 1>&2
+  exit 1
+fi
+
+# Quote any args containing shell metacharacters.
+ltconfig_args=
+for arg
+do
+  case "$arg" in
+  *" "*|*"	"*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
+  ltconfig_args="$ltconfig_args '$arg'" ;;
+  *) ltconfig_args="$ltconfig_args $arg" ;;
+  esac
+done
+
+# A relevant subset of AC_INIT.
+
+# File descriptor usage:
+# 0 standard input
+# 1 file creation
+# 2 errors and warnings
+# 3 some systems may open it to /dev/tty
+# 4 used on the Kubota Titan
+# 5 compiler messages saved in config.log
+# 6 checking for... messages and results
+if test "$silent" = yes; then
+  exec 6>/dev/null
+else
+  exec 6>&1
+fi
+exec 5>>./config.log
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+if test "X${LC_ALL+set}" = Xset; then LC_ALL=C; export LC_ALL; fi
+if test "X${LANG+set}"   = Xset; then LANG=C;   export LANG;   fi
+
+if test -n "$cache_file" && test -r "$cache_file"; then
+  echo "loading cache $cache_file within ltconfig"
+  . $cache_file
+fi
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+  # Stardent Vistra SVR4 grep lacks -e, says ghazi at caip.rutgers.edu.
+  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
+    ac_n= ac_c='
+' ac_t='	'
+  else
+    ac_n=-n ac_c= ac_t=
+  fi
+else
+  ac_n= ac_c='\c' ac_t=
+fi
+
+if test -z "$srcdir"; then
+  # Assume the source directory is the same one as the path to LTMAIN.
+  srcdir=`$echo "X$ltmain" | $Xsed -e 's%/[^/]*$%%'`
+  test "$srcdir" = "$ltmain" && srcdir=.
+fi
+
+trap "$rm conftest*; exit 1" 1 2 15
+if test "$verify_host" = yes; then
+  # Check for config.guess and config.sub.
+  ac_aux_dir=
+  for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+    if test -f $ac_dir/config.guess; then
+      ac_aux_dir=$ac_dir
+      break
+    fi
+  done
+  if test -z "$ac_aux_dir"; then
+    echo "$progname: cannot find config.guess in $srcdir $srcdir/.. $srcdir/../.." 1>&2
+    echo "$help" 1>&2
+    exit 1
+  fi
+  ac_config_guess=$ac_aux_dir/config.guess
+  ac_config_sub=$ac_aux_dir/config.sub
+
+  # Make sure we can run config.sub.
+  if $SHELL $ac_config_sub sun4 >/dev/null 2>&1; then :
+  else
+    echo "$progname: cannot run $ac_config_sub" 1>&2
+    echo "$help" 1>&2
+    exit 1
+  fi
+
+  echo $ac_n "checking host system type""... $ac_c" 1>&6
+
+  host_alias=$host
+  case "$host_alias" in
+  "")
+    if host_alias=`$SHELL $ac_config_guess`; then :
+    else
+      echo "$progname: cannot guess host type; you must specify one" 1>&2
+      echo "$help" 1>&2
+      exit 1
+    fi ;;
+  esac
+  host=`$SHELL $ac_config_sub $host_alias`
+  echo "$ac_t$host" 1>&6
+
+  # Make sure the host verified.
+  test -z "$host" && exit 1
+
+elif test -z "$host"; then
+  echo "$progname: you must specify a host type if you use \`--no-verify'" 1>&2
+  echo "$help" 1>&2
+  exit 1
+else
+  host_alias=$host
+fi
+
+# Transform linux* to *-*-linux-gnu*, to support old configure scripts.
+case "$host_os" in
+linux-gnu*) ;;
+linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
+esac
+
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+case "$host_os" in
+aix3*)
+  # AIX sometimes has problems with the GCC collect2 program.  For some
+  # reason, if we set the COLLECT_NAMES environment variable, the problems
+  # vanish in a puff of smoke.
+  if test "X${COLLECT_NAMES+set}" != Xset; then
+    COLLECT_NAMES=
+    export COLLECT_NAMES
+  fi
+  ;;
+esac
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR cru $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
+
+# Set a sane default for `AR'.
+test -z "$AR" && AR=ar
+
+# Set a sane default for `OBJDUMP'.
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+# If RANLIB is not set, then run the test.
+if test "${RANLIB+set}" != "set"; then
+  result=no
+
+  echo $ac_n "checking for ranlib... $ac_c" 1>&6
+  IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+  for dir in $PATH; do
+    test -z "$dir" && dir=.
+    if test -f $dir/ranlib || test -f $dir/ranlib$ac_exeext; then
+      RANLIB="ranlib"
+      result="ranlib"
+      break
+    fi
+  done
+  IFS="$save_ifs"
+
+  echo "$ac_t$result" 1>&6
+fi
+
+if test -n "$RANLIB"; then
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
+  old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+fi
+
+# Set sane defaults for `DLLTOOL', `OBJDUMP', and `AS', used on cygwin.
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$AS" && AS=as
+
+# Check to see if we are using GCC.
+if test "$with_gcc" != yes || test -z "$CC"; then
+  # If CC is not set, then try to find GCC or a usable CC.
+  if test -z "$CC"; then
+    echo $ac_n "checking for gcc... $ac_c" 1>&6
+    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+    for dir in $PATH; do
+      test -z "$dir" && dir=.
+      if test -f $dir/gcc || test -f $dir/gcc$ac_exeext; then
+	CC="gcc"
+	break
+      fi
+    done
+    IFS="$save_ifs"
+
+    if test -n "$CC"; then
+      echo "$ac_t$CC" 1>&6
+    else
+      echo "$ac_t"no 1>&6
+    fi
+  fi
+
+  # Not "gcc", so try "cc", rejecting "/usr/ucb/cc".
+  if test -z "$CC"; then
+    echo $ac_n "checking for cc... $ac_c" 1>&6
+    IFS="${IFS= 	}"; save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+    cc_rejected=no
+    for dir in $PATH; do
+      test -z "$dir" && dir=.
+      if test -f $dir/cc || test -f $dir/cc$ac_exeext; then
+	if test "$dir/cc" = "/usr/ucb/cc"; then
+	  cc_rejected=yes
+	  continue
+	fi
+	CC="cc"
+	break
+      fi
+    done
+    IFS="$save_ifs"
+    if test $cc_rejected = yes; then
+      # We found a bogon in the path, so make sure we never use it.
+      set dummy $CC
+      shift
+      if test $# -gt 0; then
+	# We chose a different compiler from the bogus one.
+	# However, it has the same name, so the bogon will be chosen
+	# first if we set CC to just the name; use the full file name.
+	shift
+	set dummy "$dir/cc" "$@"
+	shift
+	CC="$@"
+      fi
+    fi
+
+    if test -n "$CC"; then
+      echo "$ac_t$CC" 1>&6
+    else
+      echo "$ac_t"no 1>&6
+    fi
+
+    if test -z "$CC"; then
+      echo "$progname: error: no acceptable cc found in \$PATH" 1>&2
+      exit 1
+    fi
+  fi
+
+  # Now see if the compiler is really GCC.
+  with_gcc=no
+  echo $ac_n "checking whether we are using GNU C... $ac_c" 1>&6
+  echo "$progname:581: checking whether we are using GNU C" >&5
+
+  $rm conftest.c
+  cat > conftest.c <<EOF
+#ifdef __GNUC__
+  yes;
+#endif
+EOF
+  if { ac_try='${CC-cc} -E conftest.c'; { (eval echo $progname:589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+    with_gcc=yes
+  fi
+  $rm conftest.c
+  echo "$ac_t$with_gcc" 1>&6
+fi
+
+# Allow CC to be a program name with arguments.
+set dummy $CC
+compiler="$2"
+
+echo $ac_n "checking for object suffix... $ac_c" 1>&6
+$rm conftest*
+echo 'int i = 1;' > conftest.c
+echo "$progname:603: checking for object suffix" >& 5
+if { (eval echo $progname:604: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; }; then
+  # Append any warnings to the config.log.
+  cat conftest.err 1>&5
+
+  for ac_file in conftest.*; do
+    case $ac_file in
+    *.c) ;;
+    *) objext=`echo $ac_file | sed -e s/conftest.//` ;;
+    esac
+  done
+else
+  cat conftest.err 1>&5
+  echo "$progname: failed program was:" >&5
+  cat conftest.c >&5
+fi
+$rm conftest*
+echo "$ac_t$objext" 1>&6
+
+echo $ac_n "checking for executable suffix... $ac_c" 1>&6
+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_cv_exeext="no"
+  $rm conftest*
+  echo 'main () { return 0; }' > conftest.c
+  echo "$progname:629: checking for executable suffix" >& 5
+  if { (eval echo $progname:630: \"$ac_link\") 1>&5; (eval $ac_link) 2>conftest.err; }; then
+    # Append any warnings to the config.log.
+    cat conftest.err 1>&5
+
+    for ac_file in conftest.*; do
+      case $ac_file in
+      *.c | *.err | *.$objext ) ;;
+      *) ac_cv_exeext=.`echo $ac_file | sed -e s/conftest.//` ;;
+      esac
+    done
+  else
+    cat conftest.err 1>&5
+    echo "$progname: failed program was:" >&5
+    cat conftest.c >&5
+  fi
+  $rm conftest*
+fi
+if test "X$ac_cv_exeext" = Xno; then
+  exeext=""
+else
+  exeext="$ac_cv_exeext"
+fi
+echo "$ac_t$ac_cv_exeext" 1>&6
+
+echo $ac_n "checking for $compiler option to produce PIC... $ac_c" 1>&6
+pic_flag=
+special_shlib_compile_flags=
+wl=
+link_static_flag=
+no_builtin_flag=
+
+if test "$with_gcc" = yes; then
+  wl='-Wl,'
+  link_static_flag='-static'
+
+  case "$host_os" in
+  beos* | irix5* | irix6* | osf3* | osf4* | osf5*)
+    # PIC is the default for these OSes.
+    ;;
+  aix*)
+    # Below there is a dirty hack to force normal static linking with -ldl
+    # The problem is because libdl dynamically linked with both libc and
+    # libC (AIX C++ library), which obviously doesn't included in libraries
+    # list by gcc. This cause undefined symbols with -static flags.
+    # This hack allows C programs to be linked with "-static -ldl", but
+    # we not sure about C++ programs.
+    link_static_flag="$link_static_flag ${wl}-lC"
+    ;;
+  cygwin* | mingw* | os2*)
+    # We can build DLLs from non-PIC.
+    ;;
+  darwin* | rhapsody*)
+    # PIC is the default on this platform
+    # Common symbols not allowed in MH_DYLIB files
+    pic_flag='-fno-common'
+    ;;
+  amigaos*)
+    # FIXME: we need at least 68020 code to build shared libraries, but
+    # adding the `-m68020' flag to GCC prevents building anything better,
+    # like `-m68040'.
+    pic_flag='-m68020 -resident32 -malways-restore-a4'
+    ;;
+  sysv4*MP*)
+    if test -d /usr/nec; then
+       pic_flag=-Kconform_pic
+    fi
+    ;;
+  *)
+    pic_flag='-fPIC'
+    ;;
+  esac
+else
+  # PORTME Check for PIC flags for the system compiler.
+  case "$host_os" in
+  aix3* | aix4*)
+    # All AIX code is PIC.
+    link_static_flag='-bnso -bI:/lib/syscalls.exp'
+    ;;
+
+  hpux9* | hpux10* | hpux11*)
+    # Is there a better link_static_flag that works with the bundled CC?
+    wl='-Wl,'
+    link_static_flag="${wl}-a ${wl}archive"
+    pic_flag='+Z'
+    ;;
+
+  irix5* | irix6*)
+    wl='-Wl,'
+    link_static_flag='-non_shared'
+    # PIC (with -KPIC) is the default.
+    ;;
+
+  cygwin* | mingw* | os2*)
+    # We can build DLLs from non-PIC.
+    ;;
+
+  osf3* | osf4* | osf5*)
+    # All OSF/1 code is PIC.
+    wl='-Wl,'
+    link_static_flag='-non_shared'
+    ;;
+
+  sco3.2v5*)
+    pic_flag='-Kpic'
+    link_static_flag='-dn'
+    special_shlib_compile_flags='-belf'
+    ;;
+
+  solaris*)
+    pic_flag='-KPIC'
+    link_static_flag='-Bstatic'
+    wl='-Wl,'
+    ;;
+
+  sunos4*)
+    pic_flag='-PIC'
+    link_static_flag='-Bstatic'
+    wl='-Qoption ld '
+    ;;
+
+  sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+    pic_flag='-KPIC'
+    link_static_flag='-Bstatic'
+    wl='-Wl,'
+    ;;
+
+  uts4*)
+    pic_flag='-pic'
+    link_static_flag='-Bstatic'
+    ;;
+  sysv4*MP*)
+    if test -d /usr/nec ;then
+      pic_flag='-Kconform_pic'
+      link_static_flag='-Bstatic'
+    fi
+    ;;
+  *)
+    can_build_shared=no
+    ;;
+  esac
+fi
+
+if test -n "$pic_flag"; then
+  echo "$ac_t$pic_flag" 1>&6
+
+  # Check to make sure the pic_flag actually works.
+  echo $ac_n "checking if $compiler PIC flag $pic_flag works... $ac_c" 1>&6
+  $rm conftest*
+  echo "int some_variable = 0;" > conftest.c
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS $pic_flag -DPIC"
+  echo "$progname:781: checking if $compiler PIC flag $pic_flag works" >&5
+  if { (eval echo $progname:782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.$objext; then
+    # Append any warnings to the config.log.
+    cat conftest.err 1>&5
+    
+    case "$host_os" in
+    hpux9* | hpux10* | hpux11*)
+      # On HP-UX, both CC and GCC only warn that PIC is supported... then they
+      # create non-PIC objects.  So, if there were any warnings, we assume that
+      # PIC is not supported.
+      if test -s conftest.err; then
+	echo "$ac_t"no 1>&6
+	can_build_shared=no
+	pic_flag=
+      else
+	echo "$ac_t"yes 1>&6
+	pic_flag=" $pic_flag"
+      fi
+      ;;
+    *)
+      echo "$ac_t"yes 1>&6
+      pic_flag=" $pic_flag"
+      ;;
+    esac
+  else
+    # Append any errors to the config.log.
+    cat conftest.err 1>&5
+    can_build_shared=no
+    pic_flag=
+    echo "$ac_t"no 1>&6
+  fi
+  CFLAGS="$save_CFLAGS"
+  $rm conftest*
+else
+  echo "$ac_t"none 1>&6
+fi
+
+# Check to see if options -o and -c are simultaneously supported by compiler
+echo $ac_n "checking if $compiler supports -c -o file.o... $ac_c" 1>&6
+$rm -r conftest 2>/dev/null
+mkdir conftest
+cd conftest
+$rm conftest*
+echo "int some_variable = 0;" > conftest.c
+mkdir out
+# According to Tom Tromey, Ian Lance Taylor reported there are C compilers
+# that will create temporary files in the current directory regardless of
+# the output directory.  Thus, making CWD read-only will cause this test
+# to fail, enabling locking or at least warning the user not to do parallel
+# builds.
+chmod -w .
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -o out/conftest2.o"
+echo "$progname:834: checking if $compiler supports -c -o file.o" >&5
+if { (eval echo $progname:835: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && test -s out/conftest2.o; then
+
+  # The compiler can only warn and ignore the option if not recognized
+  # So say no if there are warnings
+    if test -s out/conftest.err; then
+      echo "$ac_t"no 1>&6
+      compiler_c_o=no
+    else
+      echo "$ac_t"yes 1>&6
+      compiler_c_o=yes
+    fi
+else
+  # Append any errors to the config.log.
+  cat out/conftest.err 1>&5
+  compiler_c_o=no
+  echo "$ac_t"no 1>&6
+fi
+CFLAGS="$save_CFLAGS"
+chmod u+w .
+$rm conftest* out/*
+rmdir out
+cd ..
+rmdir conftest
+$rm -r conftest 2>/dev/null
+
+if test x"$compiler_c_o" = x"yes"; then
+  # Check to see if we can write to a .lo
+  echo $ac_n "checking if $compiler supports -c -o file.lo... $ac_c" 1>&6
+  $rm conftest*
+  echo "int some_variable = 0;" > conftest.c
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -c -o conftest.lo"
+  echo "$progname:867: checking if $compiler supports -c -o file.lo" >&5
+if { (eval echo $progname:868: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.lo; then
+
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+      if test -s conftest.err; then
+	echo "$ac_t"no 1>&6
+	compiler_o_lo=no
+      else
+	echo "$ac_t"yes 1>&6
+	compiler_o_lo=yes
+      fi
+  else
+    # Append any errors to the config.log.
+    cat conftest.err 1>&5
+    compiler_o_lo=no
+    echo "$ac_t"no 1>&6
+  fi
+  CFLAGS="$save_CFLAGS"
+  $rm conftest*
+else
+  compiler_o_lo=no
+fi
+
+# Check to see if we can do hard links to lock some files if needed
+hard_links="nottested"
+if test "$compiler_c_o" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo $ac_n "checking if we can lock with hard links... $ac_c" 1>&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$ac_t$hard_links" 1>&6
+  $rm conftest*
+  if test "$hard_links" = no; then
+    echo "*** WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
+
+if test "$with_gcc" = yes; then
+  # Check to see if options -fno-rtti -fno-exceptions are supported by compiler
+  echo $ac_n "checking if $compiler supports -fno-rtti -fno-exceptions ... $ac_c" 1>&6
+  $rm conftest*
+  echo "int some_variable = 0;" > conftest.c
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.c"
+  echo "$progname:919: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+  if { (eval echo $progname:920: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>conftest.err; } && test -s conftest.o; then
+
+    # The compiler can only warn and ignore the option if not recognized
+    # So say no if there are warnings
+      if test -s conftest.err; then
+	echo "$ac_t"no 1>&6
+	compiler_rtti_exceptions=no
+      else
+	echo "$ac_t"yes 1>&6
+	compiler_rtti_exceptions=yes
+      fi
+  else
+    # Append any errors to the config.log.
+    cat conftest.err 1>&5
+    compiler_rtti_exceptions=no
+    echo "$ac_t"no 1>&6
+  fi
+  CFLAGS="$save_CFLAGS"
+  $rm conftest*
+
+  if test "$compiler_rtti_exceptions" = "yes"; then
+    no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions'
+  else
+    no_builtin_flag=' -fno-builtin'
+  fi
+  
+fi
+
+# Check for any special shared library compilation flags.
+if test -n "$special_shlib_compile_flags"; then
+  echo "$progname: warning: \`$CC' requires \`$special_shlib_compile_flags' to build shared libraries" 1>&2
+  if echo "$old_CC $old_CFLAGS " | egrep -e "[ 	]$special_shlib_compile_flags[ 	]" >/dev/null; then :
+  else
+    echo "$progname: add \`$special_shlib_compile_flags' to the CC or CFLAGS env variable and reconfigure" 1>&2
+    can_build_shared=no
+  fi
+fi
+
+echo $ac_n "checking if $compiler static flag $link_static_flag works... $ac_c" 1>&6
+$rm conftest*
+echo 'main(){return(0);}' > conftest.c
+save_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS $link_static_flag"
+echo "$progname:963: checking if $compiler static flag $link_static_flag works" >&5
+if { (eval echo $progname:964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+  echo "$ac_t$link_static_flag" 1>&6
+else
+  echo "$ac_t"none 1>&6
+  link_static_flag=
+fi
+LDFLAGS="$save_LDFLAGS"
+$rm conftest*
+
+if test -z "$LN_S"; then
+  # Check to see if we can use ln -s, or we need hard links.
+  echo $ac_n "checking whether ln -s works... $ac_c" 1>&6
+  $rm conftest.dat
+  if ln -s X conftest.dat 2>/dev/null; then
+    $rm conftest.dat
+    LN_S="ln -s"
+  else
+    LN_S=ln
+  fi
+  if test "$LN_S" = "ln -s"; then
+    echo "$ac_t"yes 1>&6
+  else
+    echo "$ac_t"no 1>&6
+  fi
+fi
+
+# Make sure LD is an absolute path.
+if test -z "$LD"; then
+  ac_prog=ld
+  if test "$with_gcc" = yes; then
+    # Check if gcc -print-prog-name=ld gives a path.
+    echo $ac_n "checking for ld used by GCC... $ac_c" 1>&6
+    echo "$progname:996: checking for ld used by GCC" >&5
+    ac_prog=`($CC -print-prog-name=ld) 2>&5`
+    case "$ac_prog" in
+    # Accept absolute paths.
+    [\\/]* | [A-Za-z]:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the path of ld
+      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
+      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+	ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+    "")
+      # If it fails, then pretend we are not using GCC.
+      ac_prog=ld
+      ;;
+    *)
+      # If it is relative, then search for the first ld in PATH.
+      with_gnu_ld=unknown
+      ;;
+    esac
+  elif test "$with_gnu_ld" = yes; then
+    echo $ac_n "checking for GNU ld... $ac_c" 1>&6
+    echo "$progname:1020: checking for GNU ld" >&5
+  else
+    echo $ac_n "checking for non-GNU ld""... $ac_c" 1>&6
+    echo "$progname:1023: checking for non-GNU ld" >&5
+  fi
+
+  if test -z "$LD"; then
+    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+    for ac_dir in $PATH; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+	LD="$ac_dir/$ac_prog"
+	# Check to see if the program is GNU ld.  I'd rather use --version,
+	# but apparently some GNU ld's only accept -v.
+	# Break only if it was the GNU/non-GNU ld that we prefer.
+	if "$LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
+	  test "$with_gnu_ld" != no && break
+	else
+	  test "$with_gnu_ld" != yes && break
+	fi
+      fi
+    done
+    IFS="$ac_save_ifs"
+  fi
+
+  if test -n "$LD"; then
+    echo "$ac_t$LD" 1>&6
+  else
+    echo "$ac_t"no 1>&6
+  fi
+
+  if test -z "$LD"; then
+    echo "$progname: error: no acceptable ld found in \$PATH" 1>&2
+    exit 1
+  fi
+fi
+
+# Check to see if it really is or is not GNU ld.
+echo $ac_n "checking if the linker ($LD) is GNU ld... $ac_c" 1>&6
+# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+  with_gnu_ld=yes
+else
+  with_gnu_ld=no
+fi
+echo "$ac_t$with_gnu_ld" 1>&6
+
+# See if the linker supports building shared libraries.
+echo $ac_n "checking whether the linker ($LD) supports shared libraries... $ac_c" 1>&6
+
+allow_undefined_flag=
+no_undefined_flag=
+need_lib_prefix=unknown
+need_version=unknown
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+archive_cmds=
+archive_expsym_cmds=
+old_archive_from_new_cmds=
+export_dynamic_flag_spec=
+whole_archive_flag_spec=
+thread_safe_flag_spec=
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+hardcode_shlibpath_var=unsupported
+runpath_var=
+always_export_symbols=no
+export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols'
+# include_expsyms should be a list of space-separated symbols to be *always*
+# included in the symbol list
+include_expsyms=
+# exclude_expsyms can be an egrep regular expression of symbols to exclude
+# it will be wrapped by ` (' and `)$', so one must not match beginning or
+# end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+# as well as any symbol that contains `d'.
+exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+# platforms (ab)use it in PIC code, but their linkers get confused if
+# the symbol is explicitly referenced.  Since portable code cannot
+# rely on this symbol name, it's probably fine to never include it in
+# preloaded symbol tables.
+
+case "$host_os" in
+cygwin* | mingw*)
+  # FIXME: the MSVC++ port hasn't been tested in a loooong time
+  # When not using gcc, we currently assume that we are using
+  # Microsoft Visual C++.
+  if test "$with_gcc" != yes; then
+    with_gnu_ld=no
+  fi
+  ;;
+
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+  # If archive_cmds runs LD, not CC, wlarc should be empty
+  wlarc='${wl}'
+
+  # See if GNU ld supports shared libraries.
+  case "$host_os" in
+  aix3* | aix4*)
+    # On AIX, the GNU linker is very broken
+    ld_shlibs=no
+    cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+    ;;
+
+  amigaos*)
+    archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+
+    # Samuel A. Falvo II <kc5tja at dolphin.openprojects.net> reports
+    # that the semantics of dynamic libraries on AmigaOS, at least up
+    # to version 4, is to share data among multiple programs linked
+    # with the same dynamic library.  Since this doesn't match the
+    # behavior of shared libraries on other platforms, we can use
+    # them.
+    ld_shlibs=no
+    ;;
+
+  beos*)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag=unsupported
+      # Joseph Beckenbach <jrb3 at best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds='$CC -nostart $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+
+  cygwin* | mingw*)
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec='-L$libdir'
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+
+    # Extract the symbol export list from an `--export-all' def file,
+    # then regenerate the def file from the symbol export list, so that
+    # the compiled dll only exports the symbol export list.
+    # Be careful not to strip the DATA tag left by newer dlltools.
+    export_symbols_cmds='test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
+      test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
+      $DLLTOOL --export-all --exclude-symbols DllMain at 12,_cygwin_dll_entry at 12,_cygwin_noncygwin_dll_entry at 12 --output-def $objdir/$soname-def  $objdir/$soname-ltdll.$objext $libobjs $convenience~
+      sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $objdir/$soname-def > $export_symbols'
+
+    # If DATA tags from a recent dlltool are present, honour them!
+    archive_expsym_cmds='echo EXPORTS > $objdir/$soname-def~
+      _lt_hint=1;
+      cat $export_symbols | while read symbol; do
+        set dummy \$symbol;
+        case \$# in
+          2) echo "	\$2 @ \$_lt_hint ; " >> $objdir/$soname-def;;
+          *) echo "     \$2 @ \$_lt_hint \$3 ; " >> $objdir/$soname-def;;
+        esac;
+	_lt_hint=`expr 1 + \$_lt_hint`;
+      done~
+      test -f $objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $0 > $objdir/$soname-ltdll.c~
+      test -f $objdir/$soname-ltdll.$objext || (cd $objdir && $CC -c $soname-ltdll.c)~
+      $CC -Wl,--base-file,$objdir/$soname-base -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry at 12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain at 12,_cygwin_dll_entry at 12,_cygwin_noncygwin_dll_entry at 12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
+      $CC -Wl,--base-file,$objdir/$soname-base $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry at 12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts~
+      $DLLTOOL --as=$AS --dllname $soname --exclude-symbols DllMain at 12,_cygwin_dll_entry at 12,_cygwin_noncygwin_dll_entry at 12 --def $objdir/$soname-def --base-file $objdir/$soname-base --output-exp $objdir/$soname-exp~
+      $CC $objdir/$soname-exp -Wl,--dll -nostartfiles -Wl,-e,__cygwin_dll_entry at 12 -o $lib $objdir/$soname-ltdll.$objext $libobjs $deplibs $linkopts'
+
+      old_archive_from_new_cmds='$DLLTOOL --as=$AS --dllname $soname --def $objdir/$soname-def --output-lib $objdir/$libname.a' 
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      archive_cmds='$LD -Bshareable $libobjs $deplibs $linkopts -o $lib'
+      # can we support soname and/or expsyms with a.out? -oliva
+    fi
+    ;;
+
+  solaris* | sysv5*)
+    if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then
+      ld_shlibs=no
+      cat <<EOF 1>&2
+
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+EOF
+    elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;      
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linkopts'
+    wlarc=
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    if $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then
+      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname -o $lib'
+      archive_expsym_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    else
+      ld_shlibs=no
+    fi
+    ;;
+  esac
+
+  if test "$ld_shlibs" = yes; then
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec='${wl}--export-dynamic'
+    case $host_os in
+    cygwin* | mingw*)
+      # dlltool doesn't understand --whole-archive et. al.
+      whole_archive_flag_spec=
+      ;;
+    *)
+      # ancient GNU ld didn't support --whole-archive et. al.
+      if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then
+        whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+        whole_archive_flag_spec=
+      fi
+      ;;
+    esac
+  fi
+else
+  # PORTME fill in a description of your system's linker (not GNU ld)
+  case "$host_os" in
+  aix3*)
+    allow_undefined_flag=unsupported
+    always_export_symbols=yes
+    archive_expsym_cmds='$LD -o $objdir/$soname $libobjs $deplibs $linkopts -bE:$export_symbols -T512 -H512 -bM:SRE~$AR cru $lib $objdir/$soname'
+    # Note: this linker hardcodes the directories in LIBPATH if there
+    # are no directories specified by -L.
+    hardcode_minus_L=yes
+    if test "$with_gcc" = yes && test -z "$link_static_flag"; then
+      # Neither direct hardcoding nor static linking is supported with a
+      # broken collect2.
+      hardcode_direct=unsupported
+    fi
+    ;;
+
+  aix4*)
+    hardcode_libdir_flag_spec='${wl}-b ${wl}nolibpath ${wl}-b ${wl}libpath:$libdir:/usr/lib:/lib'
+    hardcode_libdir_separator=':'
+    if test "$with_gcc" = yes; then
+      collect2name=`${CC} -print-prog-name=collect2`
+      if test -f "$collect2name" && \
+	 strings "$collect2name" | grep resolve_lib_name >/dev/null
+      then
+	# We have reworked collect2
+	hardcode_direct=yes
+      else
+	# We have old collect2
+	hardcode_direct=unsupported
+	# It fails to find uninstalled libraries when the uninstalled
+	# path is not listed in the libpath.  Setting hardcode_minus_L
+	# to unsupported forces relinking
+	hardcode_minus_L=yes
+	hardcode_libdir_flag_spec='-L$libdir'
+	hardcode_libdir_separator=
+      fi
+      shared_flag='-shared'
+    else
+      shared_flag='${wl}-bM:SRE'
+      hardcode_direct=yes
+    fi
+    allow_undefined_flag=' ${wl}-berok'
+    archive_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bexpall ${wl}-bnoentry${allow_undefined_flag}'
+    archive_expsym_cmds="\$CC $shared_flag"' -o $objdir/$soname $libobjs $deplibs $linkopts ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}'
+    case "$host_os" in aix4.[01]|aix4.[01].*)
+      # According to Greg Wooledge, -bexpall is only supported from AIX 4.2 on
+      always_export_symbols=yes ;;
+    esac
+   ;;
+
+  amigaos*)
+    archive_cmds='$rm $objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $objdir/a2ixlibrary.data~$AR cru $lib $libobjs~$RANLIB $lib~(cd $objdir && a2ixlibrary -32)'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    # see comment about different semantics on the GNU ld section
+    ld_shlibs=no
+    ;;
+
+  cygwin* | mingw*)
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    # hardcode_libdir_flag_spec is actually meaningless, as there is
+    # no search path for DLLs.
+    hardcode_libdir_flag_spec=' '
+    allow_undefined_flag=unsupported
+    # Tell ltmain to make .lib files, not .a files.
+    libext=lib
+    # FIXME: Setting linknames here is a bad hack.
+    archive_cmds='$CC -o $lib $libobjs $linkopts `echo "$deplibs" | sed -e '\''s/ -lc$//'\''` -link -dll~linknames='
+    # The linker will automatically build a .lib file if we build a DLL.
+    old_archive_from_new_cmds='true'
+    # FIXME: Should let the user specify the lib program.
+    old_archive_cmds='lib /OUT:$oldlib$oldobjs'
+    fix_srcfile_path='`cygpath -w $srcfile`'
+    ;;
+
+  freebsd1*)
+    ld_shlibs=no
+    ;;
+
+  # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+  # support.  Future versions do this automatically, but an explicit c++rt0.o
+  # does not break anything, and helps significantly (at the cost of a little
+  # extra space).
+  freebsd2.2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts /usr/lib/c++rt0.o'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+  freebsd2*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+  freebsd*)
+    archive_cmds='$CC -shared -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  darwin* | rhapsody*)
+    case "$host_os" in
+    rhapsody* | darwin1.[012])
+      allow_undefined_flag='-undefined suppress'
+      ;;
+    *) # Darwin 1.3 on
+    if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+      allow_undefined_flag='-flat_namespace -undefined suppress'
+    else
+      case ${MACOSX_DEPLOYMENT_TARGET} in
+        10.[012])
+          allow_undefined_flag='-flat_namespace -undefined suppress'
+          ;;
+        10.*)
+          allow_undefined_flag='-undefined dynamic_lookup'
+          ;;
+       esac
+    fi
+      ;;
+    esac
+    archive_cmds='$nonopt $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs $linkopts $(test .$module != .yes && echo -install_name $rpath/$soname $verstring)'
+    # We need to add '_' to the symbols in $export_symbols first
+    #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols $lib'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    whole_archive_flag_spec='-all_load $convenience'
+    ;;
+
+  hpux9* | hpux10* | hpux11*)
+    case "$host_os" in
+    hpux9*) archive_cmds='$rm $objdir/$soname~$LD -b +b $install_libdir -o $objdir/$soname $libobjs $deplibs $linkopts~test $objdir/$soname = $lib || mv $objdir/$soname $lib' ;;
+    *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linkopts' ;;
+    esac
+    hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+    hardcode_libdir_separator=:
+    hardcode_direct=yes
+    hardcode_minus_L=yes # Not in the search PATH, but as the default
+			 # location of the library.
+    export_dynamic_flag_spec='${wl}-E'
+    ;;
+
+  irix5* | irix6*)
+    if test "$with_gcc" = yes; then
+      archive_cmds='$CC -shared $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+    else
+      archive_cmds='$LD -shared $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  netbsd*)
+    if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+      archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'  # a.out
+    else
+      archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linkopts'      # ELF
+    fi
+    hardcode_libdir_flag_spec='${wl}-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  openbsd*)
+    archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_direct=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  os2*)
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_minus_L=yes
+    allow_undefined_flag=unsupported
+    archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $objdir/$libname.def~$echo DATA >> $objdir/$libname.def~$echo " SINGLE NONSHARED" >> $objdir/$libname.def~$echo EXPORTS >> $objdir/$libname.def~emxexp $libobjs >> $objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $linkopts $objdir/$libname.def'
+    old_archive_from_new_cmds='emximp -o $objdir/$libname.a $objdir/$libname.def'
+    ;;
+
+  osf3*)
+    if test "$with_gcc" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+
+  osf4* | osf5*)  # As osf3* with the addition of the -msym flag
+    if test "$with_gcc" = yes; then
+      allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*'
+      archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $linkopts ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${objdir}/so_locations -o $lib'
+    else
+      allow_undefined_flag=' -expect_unresolved \*'
+      archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linkopts -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib'
+    fi
+    hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+    hardcode_libdir_separator=:
+    ;;
+                                       
+  sco3.2v5*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_shlibpath_var=no
+    runpath_var=LD_RUN_PATH
+    hardcode_runpath_var=yes
+    ;;
+
+  solaris*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
+    hardcode_libdir_flag_spec='-R$libdir'
+    hardcode_shlibpath_var=no
+    case "$host_os" in
+    solaris2.[0-5] | solaris2.[0-5].*) ;;
+    *) # Supported since Solaris 2.6 (maybe 2.5.1?)
+      whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+    esac
+    ;;
+
+  sunos4*)
+    archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_direct=yes
+    hardcode_minus_L=yes
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4)
+    if test "x$host_vendor" = xsequent; then
+      # Use $CC to link under sequent, because it throws in some extra .o 
+      # files that make .init and .fini sections work.
+      archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $linkopts'
+    else
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    fi
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    hardcode_direct=no #Motorola manual says yes, but my tests say they lie 
+    ;;  
+
+  sysv4.3*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_shlibpath_var=no
+    export_dynamic_flag_spec='-Bexport'
+    ;;
+
+  sysv5*)
+    no_undefined_flag=' -z text'
+    # $CC -shared without GNU ld will not create a library from C++
+    # object files and a static libstdc++, better avoid it by now
+    archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linkopts'
+    archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linkopts~$rm $lib.exp'
+    hardcode_libdir_flag_spec=
+    hardcode_shlibpath_var=no
+    runpath_var='LD_RUN_PATH'
+    ;;
+
+  uts4*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  dgux*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ;;
+
+  sysv4*MP*)
+    if test -d /usr/nec; then
+      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+      hardcode_shlibpath_var=no
+      runpath_var=LD_RUN_PATH
+      hardcode_runpath_var=yes
+      ld_shlibs=yes
+    fi
+    ;;
+
+  sysv4.2uw2*)
+    archive_cmds='$LD -G -o $lib $libobjs $deplibs $linkopts'
+    hardcode_direct=yes
+    hardcode_minus_L=no
+    hardcode_shlibpath_var=no
+    hardcode_runpath_var=yes
+    runpath_var=LD_RUN_PATH
+    ;;
+
+  unixware7*)
+    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    runpath_var='LD_RUN_PATH'
+    hardcode_shlibpath_var=no
+    ;;
+
+  *)
+    ld_shlibs=no
+    ;;
+  esac
+fi
+echo "$ac_t$ld_shlibs" 1>&6
+test "$ld_shlibs" = no && can_build_shared=no
+
+if test -z "$NM"; then
+  echo $ac_n "checking for BSD-compatible nm... $ac_c" 1>&6
+  case "$NM" in
+  [\\/]* | [A-Za-z]:[\\/]*) ;; # Let the user override the test with a path.
+  *)
+    IFS="${IFS= 	}"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR}"
+    for ac_dir in $PATH /usr/ucb /usr/ccs/bin /bin; do
+      test -z "$ac_dir" && ac_dir=.
+      if test -f $ac_dir/nm || test -f $ac_dir/nm$ac_exeext; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+	  NM="$ac_dir/nm -B"
+	  break
+	elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
+	  NM="$ac_dir/nm -p"
+	  break
+	else
+	  NM=${NM="$ac_dir/nm"} # keep the first match, but
+	  continue # so that we can try to find one that supports BSD flags
+	fi
+      fi
+    done
+    IFS="$ac_save_ifs"
+    test -z "$NM" && NM=nm
+    ;;
+  esac
+  echo "$ac_t$NM" 1>&6
+fi
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+echo $ac_n "checking command to parse $NM output... $ac_c" 1>&6
+
+# These are sane defaults that work on at least a few old systems.
+# [They come from Ultrix.  What could be older than Ultrix?!! ;)]
+
+# Character class describing NM global symbol codes.
+symcode='[BCDEGRST]'
+
+# Regexp to match symbols that can be accessed directly from C.
+sympat='\([_A-Za-z][_A-Za-z0-9]*\)'
+
+# Transform the above into a raw symbol and a C symbol.
+symxfrm='\1 \2\3 \3'
+
+# Transform an extracted symbol line into a proper C declaration
+global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'"
+
+# Define system-specific variables.
+case "$host_os" in
+aix*)
+  symcode='[BCDT]'
+  ;;
+cygwin* | mingw*)
+  symcode='[ABCDGISTW]'
+  ;;
+hpux*) # Its linker distinguishes data from code symbols
+  global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^. .* \(.*\)$/extern char \1;/p'"
+  ;;
+irix*)
+  symcode='[BCDEGRST]'
+  ;;
+solaris*)
+  symcode='[BDT]'
+  ;;
+sysv4)
+  symcode='[DFNSTU]'
+  ;;
+esac
+
+# If we're using GNU nm, then use its standard symbol codes.
+if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then
+  symcode='[ABCDGISTW]'
+fi
+
+# Try without a prefix undercore, then with it.
+for ac_symprfx in "" "_"; do
+
+  # Write the raw and C identifiers.
+  global_symbol_pipe="sed -n -e 's/^.*[ 	]\($symcode\)[ 	][ 	]*\($ac_symprfx\)$sympat$/$symxfrm/p'"
+
+  # Check to see that the pipe works correctly.
+  pipe_works=no
+  $rm conftest*
+  cat > conftest.c <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+  echo "$progname:1680: checking if global_symbol_pipe works" >&5
+  if { (eval echo $progname:1681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } && test -s conftest.$objext; then
+    # Now try to grab the symbols.
+    nlist=conftest.nm
+    if { echo "$progname:1684: eval \"$NM conftest.$objext | $global_symbol_pipe > $nlist\"" >&5; eval "$NM conftest.$objext | $global_symbol_pipe > $nlist 2>&5"; } && test -s "$nlist"; then
+
+      # Try sorting and uniquifying the output.
+      if sort "$nlist" | uniq > "$nlist"T; then
+	mv -f "$nlist"T "$nlist"
+      else
+	rm -f "$nlist"T
+      fi
+
+      # Make sure that we snagged all the symbols we need.
+      if egrep ' nm_test_var$' "$nlist" >/dev/null; then
+	if egrep ' nm_test_func$' "$nlist" >/dev/null; then
+	  cat <<EOF > conftest.c
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+	  # Now generate the symbol file.
+	  eval "$global_symbol_to_cdecl"' < "$nlist" >> conftest.c'
+
+	  cat <<EOF >> conftest.c
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+  const char *name;
+  lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+	  sed 's/^. \(.*\) \(.*\)$/  {"\2", (lt_ptr_t) \&\2},/' < "$nlist" >> conftest.c
+	  cat <<\EOF >> conftest.c
+  {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+	  # Now try linking the two files.
+	  mv conftest.$objext conftstm.$objext
+	  save_LIBS="$LIBS"
+	  save_CFLAGS="$CFLAGS"
+	  LIBS="conftstm.$objext"
+	  CFLAGS="$CFLAGS$no_builtin_flag"
+	  if { (eval echo $progname:1736: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+	    pipe_works=yes
+	  else
+	    echo "$progname: failed program was:" >&5
+	    cat conftest.c >&5
+	  fi
+	  LIBS="$save_LIBS"
+	else
+	  echo "cannot find nm_test_func in $nlist" >&5
+	fi
+      else
+	echo "cannot find nm_test_var in $nlist" >&5
+      fi
+    else
+      echo "cannot run $global_symbol_pipe" >&5
+    fi
+  else
+    echo "$progname: failed program was:" >&5
+    cat conftest.c >&5
+  fi
+  $rm conftest* conftst*
+
+  # Do not use the global_symbol_pipe unless it works.
+  if test "$pipe_works" = yes; then
+    break
+  else
+    global_symbol_pipe=
+  fi
+done
+if test "$pipe_works" = yes; then
+  echo "${ac_t}ok" 1>&6
+else
+  echo "${ac_t}failed" 1>&6
+fi
+
+if test -z "$global_symbol_pipe"; then
+  global_symbol_to_cdecl=
+fi
+
+# Check hardcoding attributes.
+echo $ac_n "checking how to hardcode library paths into programs... $ac_c" 1>&6
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+   test -n "$runpath_var"; then
+
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$hardcode_shlibpath_var" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+echo "$ac_t$hardcode_action" 1>&6
+
+
+reload_flag=
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+echo $ac_n "checking for $LD option to reload object files... $ac_c" 1>&6
+# PORTME Some linkers may need a different reload flag.
+reload_flag='-r'
+echo "$ac_t$reload_flag" 1>&6
+test -n "$reload_flag" && reload_flag=" $reload_flag"
+
+# PORTME Fill in your ld.so characteristics
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+file_magic_cmd=
+file_magic_test_file=
+deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [regex]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given egrep regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
+echo $ac_n "checking dynamic linker characteristics... $ac_c" 1>&6
+case "$host_os" in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix $libname.a'
+  shlibpath_var=LIBPATH
+
+  # AIX has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}.so$major'
+  ;;
+
+aix4*)
+  version_type=linux
+  # AIX has no versioning support, so currently we can not hardcode correct
+  # soname into executable. Probably we can add versioning support to
+  # collect2, so additional links can be useful in future.
+  # We preserve .a as extension for shared libraries though AIX4.2
+  # and later linker supports .so
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.a'
+  shlibpath_var=LIBPATH
+  deplibs_check_method=pass_all
+  ;;
+
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "(cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a)"; (cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a) || exit 1; done'
+  ;;
+
+beos*)
+  library_names_spec='${libname}.so'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  deplibs_check_method=pass_all
+  lt_cv_dlopen="load_add_on"
+  lt_cv_dlopen_libs=
+  lt_cv_dlopen_self=yes
+  ;;
+
+bsdi4*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  file_magic_cmd=/usr/bin/file
+  file_magic_test_file=/shlib/libc.so
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  export_dynamic_flag_spec=-rdynamic
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
+
+cygwin* | mingw*)
+  version_type=windows
+  need_version=no
+  need_lib_prefix=no
+  if test "$with_gcc" = yes; then
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.a'
+  else
+    library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib'
+  fi
+  dynamic_linker='Win32 ld.exe'
+  deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+  file_magic_cmd='${OBJDUMP} -f'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  lt_cv_dlopen="LoadLibrary"
+  lt_cv_dlopen_libs=
+  ;;
+
+freebsd1*)
+  dynamic_linker=no
+  ;;
+  
+freebsd*)
+  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  version_type=freebsd-$objformat
+  case "$version_type" in
+    freebsd-elf*)
+      deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object'
+      file_magic_cmd=/usr/bin/file
+      file_magic_test_file=`echo /usr/lib/libc.so*`
+      library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      deplibs_check_method=unknown
+      library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case "$host_os" in
+  freebsd2* | freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  *) # from 3.2 on
+    shlibpath_overrides_runpath=no
+    ;;
+  esac
+  ;;
+
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  deplibs_check_method='file_magic Mach-O dynamically linked shared library'
+  file_magic_cmd='/usr/bin/file -L'
+  case "$host_os" in
+  rhapsody* | darwin1.[012])
+    file_magic_test_file='/System/Library/Frameworks/System.framework/System'
+    ;;
+  *) # Darwin 1.3 on
+    file_magic_test_file='/usr/lib/libSystem.dylib'
+    ;;
+  esac
+  library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)'
+  soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  ;;
+
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  dynamic_linker="$host_os dld.sl"
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  shlibpath_var=SHLIB_PATH
+  shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+  library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl'
+  soname_spec='${libname}${release}.sl$major'
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  case "$host_os" in
+  hpux10.20*)
+    # TODO:  Does this work for hpux-11 too?
+    deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library'
+    file_magic_cmd=/usr/bin/file
+    file_magic_test_file=/usr/lib/libc.sl
+    ;;
+  esac
+  ;;
+
+irix5* | irix6*)
+  version_type=irix
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}.so.$major'
+  library_names_spec='${libname}${release}.so.$versuffix ${libname}${release}.so.$major ${libname}${release}.so $libname.so'
+  case "$host_os" in
+  irix5*)
+    libsuff= shlibsuff=
+    # this will be overridden with pass_all, but let us keep it just in case
+    deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1"
+    ;;
+  *)
+    case "$LD" in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 ") libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  file_magic_cmd=/usr/bin/file
+  file_magic_test_file=`echo /lib${libsuff}/libc.so*`
+  deplibs_check_method='pass_all'
+  ;;
+
+# No shared lib support for Linux oldld, aout, or coff.
+linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*)
+  dynamic_linker=no
+  ;;
+
+# This must be Linux ELF.
+linux-gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  deplibs_check_method=pass_all
+
+  if test -f /lib/ld.so.1; then
+    dynamic_linker='GNU ld.so'
+  else
+    # Only the GNU ld.so supports shared libraries on MkLinux.
+    case "$host_cpu" in
+    powerpc*) dynamic_linker=no ;;
+    *) dynamic_linker='Linux ld.so' ;;
+    esac
+  fi
+  ;;
+
+netbsd*)
+  version_type=sunos
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so'
+    soname_spec='${libname}${release}.so$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+openbsd*)
+  version_type=sunos
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+    need_version=no
+  fi
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+os2*)
+  libname_spec='$name'
+  need_lib_prefix=no
+  library_names_spec='$libname.dll $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_version=no
+  soname_spec='${libname}${release}.so'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  # this will be overridden with pass_all, but let us keep it just in case
+  deplibs_check_method='file_magic COFF format alpha shared library'
+  file_magic_cmd=/usr/bin/file
+  file_magic_test_file=/shlib/libc.so
+  deplibs_check_method='pass_all'
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+sco3.2v5*)
+  version_type=osf
+  soname_spec='${libname}${release}.so$major'
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  deplibs_check_method="file_magic ELF [0-9][0-9]-bit [LM]SB dynamic lib"
+  file_magic_cmd=/usr/bin/file
+  file_magic_test_file=/lib/libc.so
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case "$host_vendor" in
+    sequent)
+      file_magic_cmd='/bin/file'
+      deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+      ;;
+    ncr)
+      deplibs_check_method='pass_all'
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+      file_magic_cmd=/usr/bin/file
+      file_magic_test_file=`echo /usr/lib/libc.so*`
+      ;;
+  esac
+  ;;
+
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
+  soname_spec='${libname}${release}.so$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so'
+    soname_spec='$libname.so.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$ac_t$dynamic_linker" 1>&6
+test "$dynamic_linker" = no && can_build_shared=no
+
+# Report the final consequences.
+echo "checking if libtool supports shared libraries... $can_build_shared" 1>&6
+
+# Only try to build win32 dlls if AC_LIBTOOL_WIN32_DLL was used in
+# configure.in, otherwise build static only libraries.
+case "$host_os" in
+cygwin* | mingw* | os2*)
+  if test x$can_build_shared = xyes; then
+    test x$enable_win32_dll = xno && can_build_shared=no
+    echo "checking if package supports dlls... $can_build_shared" 1>&6
+  fi
+;;
+esac
+
+if test -n "$file_magic_test_file" && test -n "$file_magic_cmd"; then
+  case "$deplibs_check_method" in
+  "file_magic "*)
+    file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+    if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
+       egrep "$file_magic_regex" > /dev/null; then
+      :
+    else
+      cat <<EOF 1>&2
+
+*** Warning: the command libtool uses to detect shared libraries,
+*** $file_magic_cmd, produces output that libtool cannot recognize.
+*** The result is that libtool may fail to recognize shared libraries
+*** as such.  This will affect the creation of libtool libraries that
+*** depend on shared libraries, but programs linked with such libtool
+*** libraries will work regardless of this problem.  Nevertheless, you
+*** may want to report the problem to your system manager and/or to
+*** bug-libtool at gnu.org
+
+EOF
+    fi ;;
+  esac
+fi
+
+echo $ac_n "checking whether to build shared libraries... $ac_c" 1>&6
+test "$can_build_shared" = "no" && enable_shared=no
+
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case "$host_os" in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+
+aix4*)
+  test "$enable_shared" = yes && enable_static=no
+  ;;
+esac
+
+echo "$ac_t$enable_shared" 1>&6
+
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+
+echo "checking whether to build static libraries... $enable_static" 1>&6
+
+if test "$hardcode_action" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+echo $ac_n "checking for objdir... $ac_c" 1>&6
+rm -f .libs 2>/dev/null
+mkdir .libs 2>/dev/null
+if test -d .libs; then
+  objdir=.libs
+else
+  # MS-DOS does not allow filenames that begin with a dot.
+  objdir=_libs
+fi
+rmdir .libs 2>/dev/null
+echo "$ac_t$objdir" 1>&6
+
+if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+if eval "test \"`echo '$''{'lt_cv_dlopen'+set}'`\" != set"; then
+  lt_cv_dlopen=no lt_cv_dlopen_libs=
+echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
+echo "$progname:2288: checking for dlopen in -ldl" >&5
+ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldl  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2296 "ltconfig"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen();
+
+int main() {
+dlopen()
+; return 0; }
+EOF
+if { (eval echo $progname:2309: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for dlopen""... $ac_c" 1>&6
+echo "$progname:2328: checking for dlopen" >&5
+if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2333 "ltconfig"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char dlopen(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dlopen();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_dlopen) || defined (__stub___dlopen)
+choke me
+#else
+dlopen();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo $progname:2358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_dlopen=yes"
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_dlopen=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_func_'dlopen`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dlopen"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
+echo "$progname:2375: checking for dld_link in -ldld" >&5
+ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldld  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2383 "ltconfig"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dld_link();
+
+int main() {
+dld_link()
+; return 0; }
+EOF
+if { (eval echo $progname:2396: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for shl_load""... $ac_c" 1>&6
+echo "$progname:2415: checking for shl_load" >&5
+if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2420 "ltconfig"
+/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char shl_load(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load();
+
+int main() {
+
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_shl_load) || defined (__stub___shl_load)
+choke me
+#else
+shl_load();
+#endif
+
+; return 0; }
+EOF
+if { (eval echo $progname:2445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_func_shl_load=yes"
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_func_shl_load=no"
+fi
+rm -f conftest*
+fi
+
+if eval "test \"`echo '$ac_cv_func_'shl_load`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="shl_load"
+else
+  echo "$ac_t""no" 1>&6
+echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
+echo "$progname:2463: checking for shl_load in -ldld" >&5
+ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-ldld  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 2471 "ltconfig"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char shl_load();
+
+int main() {
+shl_load()
+; return 0; }
+EOF
+if { (eval echo $progname:2485: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+
+fi
+
+    
+fi
+
+  
+fi
+
+
+fi
+
+fi
+
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  fi
+
+  case "$lt_cv_dlopen" in
+  dlopen)
+for ac_hdr in dlfcn.h; do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "$progname:2528: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  cat > conftest.$ac_ext <<EOF
+#line 2533 "ltconfig"
+#include <$ac_hdr>
+int fnord = 0;
+EOF
+ac_try="$ac_compile >/dev/null 2>conftest.out"
+{ (eval echo $progname:2538: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=yes"
+else
+  echo "$ac_err" >&5
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+done
+
+    if test "x$ac_cv_header_dlfcn_h" = xyes; then
+      CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+    fi
+    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
+
+  echo $ac_n "checking whether a program can dlopen itself""... $ac_c" 1>&6
+echo "$progname:2566: checking whether a program can dlopen itself" >&5
+if test "${lt_cv_dlopen_self+set}" = set; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+    lt_cv_dlopen_self=cross
+  else
+    cat > conftest.c <<EOF
+#line 2574 "ltconfig"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LTDL_GLOBAL	RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+#  define LTDL_GLOBAL	DL_GLOBAL
+# else
+#  define LTDL_GLOBAL	0
+# endif
+#endif
+
+/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LTDL_LAZY_OR_NOW
+# ifdef RTLD_LAZY
+#  define LTDL_LAZY_OR_NOW	RTLD_LAZY
+# else
+#  ifdef DL_LAZY
+#   define LTDL_LAZY_OR_NOW	DL_LAZY
+#  else
+#   ifdef RTLD_NOW
+#    define LTDL_LAZY_OR_NOW	RTLD_NOW
+#   else
+#    ifdef DL_NOW
+#     define LTDL_LAZY_OR_NOW	DL_NOW
+#    else
+#     define LTDL_LAZY_OR_NOW	0
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+fnord() { int i=42;}
+main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
+    if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
+	       if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } 
+
+EOF
+if { (eval echo $progname:2620: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  lt_cv_dlopen_self=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  lt_cv_dlopen_self=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$lt_cv_dlopen_self" 1>&6
+
+  if test "$lt_cv_dlopen_self" = yes; then
+    LDFLAGS="$LDFLAGS $link_static_flag"
+  echo $ac_n "checking whether a statically linked program can dlopen itself""... $ac_c" 1>&6
+echo "$progname:2639: checking whether a statically linked program can dlopen itself" >&5
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  if test "$cross_compiling" = yes; then
+    lt_cv_dlopen_self_static=cross
+  else
+    cat > conftest.c <<EOF
+#line 2647 "ltconfig"
+
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
+
+#include <stdio.h>
+
+#ifdef RTLD_GLOBAL
+# define LTDL_GLOBAL	RTLD_GLOBAL
+#else
+# ifdef DL_GLOBAL
+#  define LTDL_GLOBAL	DL_GLOBAL
+# else
+#  define LTDL_GLOBAL	0
+# endif
+#endif
+
+/* We may have to define LTDL_LAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LTDL_LAZY_OR_NOW
+# ifdef RTLD_LAZY
+#  define LTDL_LAZY_OR_NOW	RTLD_LAZY
+# else
+#  ifdef DL_LAZY
+#   define LTDL_LAZY_OR_NOW	DL_LAZY
+#  else
+#   ifdef RTLD_NOW
+#    define LTDL_LAZY_OR_NOW	RTLD_NOW
+#   else
+#    ifdef DL_NOW
+#     define LTDL_LAZY_OR_NOW	DL_NOW
+#    else
+#     define LTDL_LAZY_OR_NOW	0
+#    endif
+#   endif
+#  endif
+# endif
+#endif
+
+fnord() { int i=42;}
+main() { void *self, *ptr1, *ptr2; self=dlopen(0,LTDL_GLOBAL|LTDL_LAZY_OR_NOW);
+    if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
+    if(ptr1 || ptr2) { dlclose(self); exit(0); } } exit(1); } 
+
+EOF
+if { (eval echo $progname:2693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+then
+  lt_cv_dlopen_self_static=yes
+else
+  echo "$progname: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -fr conftest*
+  lt_cv_dlopen_self_static=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$lt_cv_dlopen_self_static" 1>&6
+fi
+    ;;
+  esac
+
+  case "$lt_cv_dlopen_self" in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
+
+  case "$lt_cv_dlopen_self_static" in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
+
+# Copy echo and quote the copy, instead of the original, because it is
+# used later.
+ltecho="$echo"
+if test "X$ltecho" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+   ltecho="$CONFIG_SHELL \$0 --fallback-echo"
+fi
+LTSHELL="$SHELL"
+
+LTCONFIG_VERSION="$VERSION"
+
+# Only quote variables if we're using ltmain.sh.
+case "$ltmain" in
+*.sh)
+  # Now quote all the things that may contain metacharacters.
+  for var in ltecho old_CC old_CFLAGS old_CPPFLAGS \
+    old_LD old_LDFLAGS old_LIBS \
+    old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS \
+    AR CC LD LN_S NM LTSHELL LTCONFIG_VERSION \
+    reload_flag reload_cmds wl \
+    pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \
+    thread_safe_flag_spec whole_archive_flag_spec libname_spec \
+    library_names_spec soname_spec \
+    RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \
+    old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds postuninstall_cmds \
+    file_magic_cmd export_symbols_cmds deplibs_check_method allow_undefined_flag no_undefined_flag \
+    finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \
+    hardcode_libdir_flag_spec hardcode_libdir_separator  \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do
+
+    case "$var" in
+    reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    export_symbols_cmds | archive_cmds | archive_expsym_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case "$ltecho" in
+  *'\$0 --fallback-echo"')
+    ltecho=`$echo "X$ltecho" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+    ;;
+  esac
+
+  trap "$rm \"$ofile\"; exit 1" 1 2 15
+  echo "creating $ofile"
+  $rm "$ofile"
+  cat <<EOF > "$ofile"
+#! $SHELL
+
+# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltconfig or ltmain.sh.
+#
+# Copyright (C) 1996-1999 Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Sed that helps us avoid accidentally triggering echo(1) options like -n.
+Xsed="sed -e s/^X//"
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi
+
+### BEGIN LIBTOOL CONFIG
+EOF
+  cfgfile="$ofile"
+  ;;
+
+*)
+  # Double-quote the variables that need it (for aesthetics).
+  for var in old_CC old_CFLAGS old_CPPFLAGS \
+    old_LD old_LDFLAGS old_LIBS \
+    old_NM old_RANLIB old_LN_S old_DLLTOOL old_OBJDUMP old_AS; do
+    eval "$var=\\\"\$var\\\""
+  done
+
+  # Just create a config file.
+  cfgfile="$ofile.cfg"
+  trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+  echo "creating $cfgfile"
+  $rm "$cfgfile"
+  cat <<EOF > "$cfgfile"
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Libtool configuration file.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+EOF
+  ;;
+esac
+
+cat <<EOF >> "$cfgfile"
+# Libtool was configured as follows, on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+#
+# CC=$old_CC CFLAGS=$old_CFLAGS CPPFLAGS=$old_CPPFLAGS \\
+# LD=$old_LD LDFLAGS=$old_LDFLAGS LIBS=$old_LIBS \\
+# NM=$old_NM RANLIB=$old_RANLIB LN_S=$old_LN_S \\
+# DLLTOOL=$old_DLLTOOL OBJDUMP=$old_OBJDUMP AS=$old_AS \\
+#   $0$ltconfig_args
+#
+# Compiler and other test output produced by $progname, useful for
+# debugging $progname, is in ./config.log if it exists.
+
+# The version of $progname that generated this script.
+LTCONFIG_VERSION=$LTCONFIG_VERSION
+
+# Shell to use when invoking shell scripts.
+SHELL=$LTSHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# The host system.
+host_alias=$host_alias
+host=$host
+
+# An echo program that does not interpret backslashes.
+echo=$ltecho
+
+# The archiver.
+AR=$AR
+
+# The default C compiler.
+CC=$CC
+
+# The linker used to build libraries.
+LD=$LD
+
+# Whether we need hard or soft links.
+LN_S=$LN_S
+
+# A BSD-compatible nm program.
+NM=$NM
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$reload_flag
+reload_cmds=$reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$wl
+
+# Object file suffix (normally "o").
+objext="$objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$pic_flag
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$compiler_c_o
+
+# Can we write directly to a .lo ?
+compiler_o_lo=$compiler_o_lo
+
+# Must we lock files when doing compilation ?
+need_locks=$need_locks
+
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
+
+# Do we need a version for libraries?
+need_version=$need_version
+
+# Whether dlopen is supported.
+dlopen=$enable_dlopen
+
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
+
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$link_static_flag
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$no_builtin_flag
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$export_dynamic_flag_spec
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$whole_archive_flag_spec
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# Format of library name prefix.
+libname_spec=$libname_spec
+
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$library_names_spec
+
+# The coded name of the library, if different from the real name.
+soname_spec=$soname_spec
+
+# Commands used to build and install an old-style archive.
+RANLIB=$RANLIB
+old_archive_cmds=$old_archive_cmds
+old_postinstall_cmds=$old_postinstall_cmds
+old_postuninstall_cmds=$old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$old_archive_from_new_cmds
+
+# Commands used to build and install a shared archive.
+archive_cmds=$archive_cmds
+archive_expsym_cmds=$archive_expsym_cmds
+postinstall_cmds=$postinstall_cmds
+postuninstall_cmds=$postuninstall_cmds
+
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$deplibs_check_method
+
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$file_magic_cmd
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$finish_eval
+
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$global_symbol_pipe
+
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$global_symbol_to_cdecl
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$hardcode_libdir_flag_spec
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$hardcode_libdir_separator
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var
+
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$sys_lib_search_path_spec
+
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$sys_lib_dlsearch_path_spec
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols
+
+# The commands to list exported symbols.
+export_symbols_cmds=$export_symbols_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$exclude_expsyms
+
+# Symbols that must always be exported.
+include_expsyms=$include_expsyms
+
+EOF
+
+case "$ltmain" in
+*.sh)
+  echo '### END LIBTOOL CONFIG' >> "$ofile"
+  echo >> "$ofile"
+  case "$host_os" in
+  aix3*)
+    cat <<\EOF >> "$ofile"
+
+# AIX sometimes has problems with the GCC collect2 program.  For some
+# reason, if we set the COLLECT_NAMES environment variable, the problems
+# vanish in a puff of smoke.
+if test "X${COLLECT_NAMES+set}" != Xset; then
+  COLLECT_NAMES=
+  export COLLECT_NAMES
+fi
+EOF
+    ;;
+  esac
+
+  # Append the ltmain.sh script.
+  sed '$q' "$ltmain" >> "$ofile" || (rm -f "$ofile"; exit 1)
+  # We use sed instead of cat because bash on DJGPP gets confused if
+  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
+  # text mode, it properly converts lines to CR/LF.  This bash problem
+  # is reportedly fixed, but why not run on old versions too?
+
+  chmod +x "$ofile"
+  ;;
+
+*)
+  # Compile the libtool program.
+  echo "FIXME: would compile $ltmain"
+  ;;
+esac
+
+test -n "$cache_file" || exit 0
+
+# AC_CACHE_SAVE
+trap '' 1 2 15
+cat > confcache <<\EOF
+# This file is a shell script that caches the results of configure
+# tests run on this system so they can be shared between configure
+# scripts and configure runs.  It is not useful on other systems.
+# If it contains results you don't want to keep, you may remove or edit it.
+#
+# By default, configure uses ./config.cache as the cache file,
+# creating it if it does not exist already.  You can give configure
+# the --cache-file=FILE option to use a different cache file; that is
+# what configure does when it calls configure scripts in
+# subdirectories, so they share the cache.
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
+# config.status only pays attention to the cache file if you give it the
+# --recheck option to rerun configure.
+#
+EOF
+# The following way of writing the cache mishandles newlines in values,
+# but we know of no workaround that is simple, portable, and efficient.
+# So, don't put newlines in cache variables' values.
+# Ultrix sh set writes to stderr and can't be redirected directly,
+# and sets the high bit in the cache file unless we assign to the vars.
+(set) 2>&1 |
+  case `(ac_space=' '; set | grep ac_space) 2>&1` in
+  *ac_space=\ *)
+    # `set' does not quote correctly, so add quotes (double-quote substitution
+    # turns \\\\ into \\, and sed turns \\ into \).
+    sed -n \
+      -e "s/'/'\\\\''/g" \
+      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
+    ;;
+  *)
+    # `set' quotes correctly as required by POSIX, so do not add quotes.
+    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
+    ;;
+  esac >> confcache
+if cmp -s $cache_file confcache; then
+  :
+else
+  if test -w $cache_file; then
+    echo "updating cache $cache_file"
+    cat confcache > $cache_file
+  else
+    echo "not updating unwritable cache $cache_file"
+  fi
+fi
+rm -f confcache
+
+exit 0
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:


Property changes on: kde-extras/tora/branches/upstream/current/ltconfig
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/ltmain.sh
===================================================================
--- kde-extras/tora/branches/upstream/current/ltmain.sh	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/ltmain.sh	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,6551 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord at gnu.ai.mit.edu>, 1996
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# define SED for historic ltconfig's generated by Libtool 1.3
+test -z "$SED" && SED=sed
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.20
+TIMESTAMP=" (1.1220.2.287 2005/08/31 18:54:15)"
+
+# See if we are running on zsh, and set the options which allow our
+# commands through without removal of \ escapes.
+if test -n "${ZSH_VERSION+set}" ; then
+  setopt NO_GLOB_SUBST
+fi
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+  # Discard the --no-reexec flag, and continue.
+  shift
+elif test "X$1" = X--fallback-echo; then
+  # Avoid inline document here, it may be left over
+  :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+  # Yippee, $echo works!
+  :
+else
+  # Restart under the correct shell, and then maybe $echo will work.
+  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+  # used as fallback echo
+  shift
+  cat <<EOF
+$*
+EOF
+  exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed="${SED}"' -e 1s/^X//'
+sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  SP2NL='tr \040 \012'
+  NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  SP2NL='tr \100 \n'
+  NL2SP='tr \r\n \100\100'
+  ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+if test "${LC_ALL+set}" = set; then
+  save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+fi
+if test "${LANG+set}" = set; then
+  save_LANG="$LANG"; LANG=C; export LANG
+fi
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" 	$lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+  $echo "$modename: not configured to build any kind of library" 1>&2
+  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# func_win32_libid arg
+# return the library type of file 'arg'
+#
+# Need a lot of goo to handle *both* DLLs and import libs
+# Has to be a shell function in order to 'eat' the argument
+# that is supplied when $file_magic_command is called.
+func_win32_libid ()
+{
+  win32_libid_type="unknown"
+  win32_fileres=`file -L $1 2>/dev/null`
+  case $win32_fileres in
+  *ar\ archive\ import\ library*) # definitely import
+    win32_libid_type="x86 archive import"
+    ;;
+  *ar\ archive*) # could be an import, or static
+    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+      $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+      win32_nmres=`eval $NM -f posix -A $1 | \
+	sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
+      if test "X$win32_nmres" = "Ximport" ; then
+        win32_libid_type="x86 archive import"
+      else
+        win32_libid_type="x86 archive static"
+      fi
+    fi
+    ;;
+  *DLL*)
+    win32_libid_type="x86 DLL"
+    ;;
+  *executable*) # but shell scripts are "executable" too...
+    case $win32_fileres in
+    *MS\ Windows\ PE\ Intel*)
+      win32_libid_type="x86 DLL"
+      ;;
+    esac
+    ;;
+  esac
+  $echo $win32_libid_type
+}
+
+
+# func_infer_tag arg
+# Infer tagged configuration to use if any are available and
+# if one wasn't chosen via the "--tag" command line option.
+# Only attempt this if the compiler in the base compile
+# command doesn't match the default compiler.
+# arg is usually of the form 'gcc ...'
+func_infer_tag ()
+{
+    if test -n "$available_tags" && test -z "$tagname"; then
+      CC_quoted=
+      for arg in $CC; do
+	case $arg in
+	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	CC_quoted="$CC_quoted $arg"
+      done
+      case $@ in
+      # Blanks in the command may have been stripped by the calling shell,
+      # but not from the CC environment variable when configure was run.
+      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+      # Blanks at the start of $base_compile will cause this to fail
+      # if we don't check for them as well.
+      *)
+	for z in $available_tags; do
+	  if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
+	    # Evaluate the configuration.
+	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
+	    CC_quoted=
+	    for arg in $CC; do
+	    # Double-quote args containing other shell metacharacters.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    CC_quoted="$CC_quoted $arg"
+	  done
+	    case "$@ " in
+	      " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+	      # The compiler in the base compile command matches
+	      # the one in the tagged configuration.
+	      # Assume this is the tagged configuration we want.
+	      tagname=$z
+	      break
+	      ;;
+	    esac
+	  fi
+	done
+	# If $tagname still isn't set, then no tagged configuration
+	# was found and let the user know that the "--tag" command
+	# line option must be used.
+	if test -z "$tagname"; then
+	  $echo "$modename: unable to infer tagged configuration"
+	  $echo "$modename: specify a tag with \`--tag'" 1>&2
+	  exit $EXIT_FAILURE
+#        else
+#          $echo "$modename: using $tagname tagged configuration"
+	fi
+	;;
+      esac
+    fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+    f_ex_an_ar_dir="$1"; shift
+    f_ex_an_ar_oldlib="$1"
+
+    $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+    $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+     :
+    else
+      $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+      exit $EXIT_FAILURE
+    fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+    my_gentop="$1"; shift
+    my_oldlibs=${1+"$@"}
+    my_oldobjs=""
+    my_xlib=""
+    my_xabs=""
+    my_xdir=""
+    my_status=""
+
+    $show "${rm}r $my_gentop"
+    $run ${rm}r "$my_gentop"
+    $show "$mkdir $my_gentop"
+    $run $mkdir "$my_gentop"
+    my_status=$?
+    if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+      exit $my_status
+    fi
+
+    for my_xlib in $my_oldlibs; do
+      # Extract the objects.
+      case $my_xlib in
+	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
+	*) my_xabs=`pwd`"/$my_xlib" ;;
+      esac
+      my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+      my_xdir="$my_gentop/$my_xlib"
+
+      $show "${rm}r $my_xdir"
+      $run ${rm}r "$my_xdir"
+      $show "$mkdir $my_xdir"
+      $run $mkdir "$my_xdir"
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$my_xdir"; then
+	exit $status
+      fi
+      case $host in
+      *-darwin*)
+	$show "Extracting $my_xabs"
+	# Do not bother doing anything if just a dry run
+	if test -z "$run"; then
+	  darwin_orig_dir=`pwd`
+	  cd $my_xdir || exit $?
+	  darwin_archive=$my_xabs
+	  darwin_curdir=`pwd`
+	  darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+	  darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+	  if test -n "$darwin_arches"; then 
+	    darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+	    darwin_arch=
+	    $show "$darwin_base_archive has multiple architectures $darwin_arches"
+	    for darwin_arch in  $darwin_arches ; do
+	      mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
+	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
+	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
+	      cd "$darwin_curdir"
+	      $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
+	    done # $darwin_arches
+      ## Okay now we have a bunch of thin objects, gotta fatten them up :)
+	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+	    darwin_file=
+	    darwin_files=
+	    for darwin_file in $darwin_filelist; do
+	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+	      lipo -create -output "$darwin_file" $darwin_files
+	    done # $darwin_filelist
+	    ${rm}r unfat-$$
+	    cd "$darwin_orig_dir"
+	  else
+	    cd "$darwin_orig_dir"
+ 	    func_extract_an_archive "$my_xdir" "$my_xabs"
+	  fi # $darwin_arches
+	fi # $run
+	;;
+      *)
+        func_extract_an_archive "$my_xdir" "$my_xabs"
+        ;;
+      esac
+      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+    done
+    func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+#eval std_shrext=\"$shrext_cmds\"
+
+# And fixing for Darwin sucks for everybody else
+if test -z "$shrext_cmds" && test -n "$shrext"; then
+	eval shrext_cmds=\"$shrext\"
+fi
+eval std_shrext=\"$shrext_cmds\"
+
+# This value is evaluated to 32768, so place it here as a compatilibity hack
+# because older libtool.m4 didn't define this variable
+test -z "$max_cmd_len" && max_cmd_len=32768
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+  arg="$1"
+  shift
+
+  case $arg in
+  -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+  *) optarg= ;;
+  esac
+
+  # If the previous option needs an argument, assign it.
+  if test -n "$prev"; then
+    case $prev in
+    execute_dlfiles)
+      execute_dlfiles="$execute_dlfiles $arg"
+      ;;
+    tag)
+      tagname="$arg"
+      preserve_args="${preserve_args}=$arg"
+
+      # Check whether tagname contains only valid characters
+      case $tagname in
+      *[!-_A-Za-z0-9,/]*)
+	$echo "$progname: invalid tag name: $tagname" 1>&2
+	exit $EXIT_FAILURE
+	;;
+      esac
+
+      case $tagname in
+      CC)
+	# Don't test for the "default" C tag, as we know, it's there, but
+	# not specially marked.
+	;;
+      *)
+	if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+	  taglist="$taglist $tagname"
+	  # Evaluate the configuration.
+	  eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+	else
+	  $echo "$progname: ignoring unknown tag $tagname" 1>&2
+	fi
+	;;
+      esac
+      ;;
+    *)
+      eval "$prev=\$arg"
+      ;;
+    esac
+
+    prev=
+    prevopt=
+    continue
+  fi
+
+  # Have we seen a non-optional argument yet?
+  case $arg in
+  --help)
+    show_help=yes
+    ;;
+
+  --version)
+    $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+    $echo
+    $echo "Copyright (C) 2005  Free Software Foundation, Inc."
+    $echo "This is free software; see the source for copying conditions.  There is NO"
+    $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+    exit $?
+    ;;
+
+  --config)
+    ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+    # Now print the configurations for the tags.
+    for tagname in $taglist; do
+      ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+    done
+    exit $?
+    ;;
+
+  --debug)
+    $echo "$progname: enabling shell trace mode"
+    set -x
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --dry-run | -n)
+    run=:
+    ;;
+
+  --features)
+    $echo "host: $host"
+    if test "$build_libtool_libs" = yes; then
+      $echo "enable shared libraries"
+    else
+      $echo "disable shared libraries"
+    fi
+    if test "$build_old_libs" = yes; then
+      $echo "enable static libraries"
+    else
+      $echo "disable static libraries"
+    fi
+    exit $?
+    ;;
+
+  --finish) mode="finish" ;;
+
+  --mode) prevopt="--mode" prev=mode ;;
+  --mode=*) mode="$optarg" ;;
+
+  --preserve-dup-deps) duplicate_deps="yes" ;;
+
+  --quiet | --silent)
+    show=:
+    preserve_args="$preserve_args $arg"
+    ;;
+
+  --tag) prevopt="--tag" prev=tag ;;
+  --tag=*)
+    set tag "$optarg" ${1+"$@"}
+    shift
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
+
+  -dlopen)
+    prevopt="-dlopen"
+    prev=execute_dlfiles
+    ;;
+
+  -*)
+    $echo "$modename: unrecognized option \`$arg'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+
+  *)
+    nonopt="$arg"
+    break
+    ;;
+  esac
+done
+
+if test -n "$prevopt"; then
+  $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+fi
+
+# If this variable is set in any of the actions, the command in it
+# will be execed at the end.  This prevents here-documents from being
+# left over by shells.
+exec_cmd=
+
+if test -z "$show_help"; then
+
+  # Infer the operation mode.
+  if test -z "$mode"; then
+    $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+    $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+    case $nonopt in
+    *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+      mode=link
+      for arg
+      do
+	case $arg in
+	-c)
+	   mode=compile
+	   break
+	   ;;
+	esac
+      done
+      ;;
+    *db | *dbx | *strace | *truss)
+      mode=execute
+      ;;
+    *install*|cp|mv)
+      mode=install
+      ;;
+    *rm)
+      mode=uninstall
+      ;;
+    *)
+      # If we have no mode, but dlfiles were specified, then do execute mode.
+      test -n "$execute_dlfiles" && mode=execute
+
+      # Just use the default operation mode.
+      if test -z "$mode"; then
+	if test -n "$nonopt"; then
+	  $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+	else
+	  $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+	fi
+      fi
+      ;;
+    esac
+  fi
+
+  # Only execute mode is allowed to have -dlopen flags.
+  if test -n "$execute_dlfiles" && test "$mode" != execute; then
+    $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+    $echo "$help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+
+  # Change the help message to a mode-specific one.
+  generic_help="$help"
+  help="Try \`$modename --help --mode=$mode' for more information."
+
+  # These modes are in order of execution frequency so that they run quickly.
+  case $mode in
+  # libtool compile mode
+  compile)
+    modename="$modename: compile"
+    # Get the compilation command and the source file.
+    base_compile=
+    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
+    suppress_opt=yes
+    suppress_output=
+    arg_mode=normal
+    libobj=
+    later=
+
+    for arg
+    do
+      case $arg_mode in
+      arg  )
+	# do not "continue".  Instead, add this to base_compile
+	lastarg="$arg"
+	arg_mode=normal
+	;;
+
+      target )
+	libobj="$arg"
+	arg_mode=normal
+	continue
+	;;
+
+      normal )
+	# Accept any command-line options.
+	case $arg in
+	-o)
+	  if test -n "$libobj" ; then
+	    $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  arg_mode=target
+	  continue
+	  ;;
+
+	-static | -prefer-pic | -prefer-non-pic)
+	  later="$later $arg"
+	  continue
+	  ;;
+
+	-no-suppress)
+	  suppress_opt=no
+	  continue
+	  ;;
+
+	-Xcompiler)
+	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
+	  continue      #  The current "srcfile" will either be retained or
+	  ;;            #  replaced later.  I would guess that would be a bug.
+
+	-Wc,*)
+	  args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+	  lastarg=
+	  save_ifs="$IFS"; IFS=','
+ 	  for arg in $args; do
+	    IFS="$save_ifs"
+
+	    # Double-quote args containing other shell metacharacters.
+	    # Many Bourne shells cannot handle close brackets correctly
+	    # in scan sets, so we specify it separately.
+	    case $arg in
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	      arg="\"$arg\""
+	      ;;
+	    esac
+	    lastarg="$lastarg $arg"
+	  done
+	  IFS="$save_ifs"
+	  lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+	  # Add the arguments to base_compile.
+	  base_compile="$base_compile $lastarg"
+	  continue
+	  ;;
+
+	* )
+	  # Accept the current argument as the source file.
+	  # The previous "srcfile" becomes the current argument.
+	  #
+	  lastarg="$srcfile"
+	  srcfile="$arg"
+	  ;;
+	esac  #  case $arg
+	;;
+      esac    #  case $arg_mode
+
+      # Aesthetically quote the previous argument.
+      lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+      case $lastarg in
+      # Double-quote args containing other shell metacharacters.
+      # Many Bourne shells cannot handle close brackets correctly
+      # in scan sets, and some SunOS ksh mistreat backslash-escaping
+      # in scan sets (worked around with variable expansion),
+      # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
+      # at all, so we specify them separately.
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	lastarg="\"$lastarg\""
+	;;
+      esac
+
+      base_compile="$base_compile $lastarg"
+    done # for arg
+
+    case $arg_mode in
+    arg)
+      $echo "$modename: you must specify an argument for -Xcompile"
+      exit $EXIT_FAILURE
+      ;;
+    target)
+      $echo "$modename: you must specify a target with \`-o'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *)
+      # Get the name of the library object.
+      [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+      ;;
+    esac
+
+    # Recognize several different file suffixes.
+    # If the user specifies -o file.o, it is replaced with file.lo
+    xform='[cCFSifmso]'
+    case $libobj in
+    *.ada) xform=ada ;;
+    *.adb) xform=adb ;;
+    *.ads) xform=ads ;;
+    *.asm) xform=asm ;;
+    *.c++) xform=c++ ;;
+    *.cc) xform=cc ;;
+    *.ii) xform=ii ;;
+    *.class) xform=class ;;
+    *.cpp) xform=cpp ;;
+    *.cxx) xform=cxx ;;
+    *.f90) xform=f90 ;;
+    *.for) xform=for ;;
+    *.java) xform=java ;;
+    esac
+
+    libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+    case $libobj in
+    *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+    *)
+      $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    esac
+
+    func_infer_tag $base_compile
+
+    for arg in $later; do
+      case $arg in
+      -static)
+	build_old_libs=yes
+	continue
+	;;
+
+      -prefer-pic)
+	pic_mode=yes
+	continue
+	;;
+
+      -prefer-non-pic)
+	pic_mode=no
+	continue
+	;;
+      esac
+    done
+
+    qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+    case $qlibobj in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qlibobj="\"$qlibobj\"" ;;
+    esac
+    test "X$libobj" != "X$qlibobj" \
+	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
+	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+    objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+    xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$xdir" = "X$obj"; then
+      xdir=
+    else
+      xdir=$xdir/
+    fi
+    lobj=${xdir}$objdir/$objname
+
+    if test -z "$base_compile"; then
+      $echo "$modename: you must specify a compilation command" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Delete any leftover library objects.
+    if test "$build_old_libs" = yes; then
+      removelist="$obj $lobj $libobj ${libobj}T"
+    else
+      removelist="$lobj $libobj ${libobj}T"
+    fi
+
+    $run $rm $removelist
+    trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+    # On Cygwin there's no "real" PIC flag so we must build both object types
+    case $host_os in
+    cygwin* | mingw* | pw32* | os2*)
+      pic_mode=default
+      ;;
+    esac
+    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
+      # non-PIC code in shared libraries is not supported
+      pic_mode=default
+    fi
+
+    # Calculate the filename of the output object if compiler does
+    # not support -o with -c
+    if test "$compiler_c_o" = no; then
+      output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+      lockfile="$output_obj.lock"
+      removelist="$removelist $output_obj $lockfile"
+      trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+    else
+      output_obj=
+      need_locks=no
+      lockfile=
+    fi
+
+    # Lock this critical section if it is needed
+    # We use this script file to make the link, it avoids creating a new file
+    if test "$need_locks" = yes; then
+      until $run ln "$progpath" "$lockfile" 2>/dev/null; do
+	$show "Waiting for $lockfile to be removed"
+	sleep 2
+      done
+    elif test "$need_locks" = warn; then
+      if test -f "$lockfile"; then
+	$echo "\
+*** ERROR, $lockfile exists and contains:
+`cat $lockfile 2>/dev/null`
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+      $echo "$srcfile" > "$lockfile"
+    fi
+
+    if test -n "$fix_srcfile_path"; then
+      eval srcfile=\"$fix_srcfile_path\"
+    fi
+    qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+    case $qsrcfile in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+      qsrcfile="\"$qsrcfile\"" ;;
+    esac
+
+    $run $rm "$libobj" "${libobj}T"
+
+    # Create a libtool object file (analogous to a ".la" file),
+    # but don't create it if we're doing a dry run.
+    test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+    # Only build a PIC object if we are building libtool libraries.
+    if test "$build_libtool_libs" = yes; then
+      # Without this assignment, base_compile gets emptied.
+      fbsd_hideous_sh_bug=$base_compile
+
+      if test "$pic_mode" != no; then
+	command="$base_compile $qsrcfile $pic_flag"
+      else
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      fi
+
+      if test ! -d "${xdir}$objdir"; then
+	$show "$mkdir ${xdir}$objdir"
+	$run $mkdir ${xdir}$objdir
+	status=$?
+	if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
+	  exit $status
+	fi
+      fi
+
+      if test -z "$output_obj"; then
+	# Place PIC objects in $objdir
+	command="$command -o $lobj"
+      fi
+
+      $run $rm "$lobj" "$output_obj"
+
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	test -n "$output_obj" && $run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed, then go on to compile the next one
+      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
+	$show "$mv $output_obj $lobj"
+	if $run $mv $output_obj $lobj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the PIC object to the libtool object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+      # Allow error messages only from the first compilation.
+      if test "$suppress_opt" = yes; then
+        suppress_output=' >/dev/null 2>&1'
+      fi
+    else
+      # No PIC object so indicate it doesn't exist in the libtool
+      # object file.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+    fi
+
+    # Only build a position-dependent object if we build old libraries.
+    if test "$build_old_libs" = yes; then
+      if test "$pic_mode" != yes; then
+	# Don't build PIC code
+	command="$base_compile $qsrcfile"
+      else
+	command="$base_compile $qsrcfile $pic_flag"
+      fi
+      if test "$compiler_c_o" = yes; then
+	command="$command -o $obj"
+      fi
+
+      # Suppress compiler output if we already did a PIC compilation.
+      command="$command$suppress_output"
+      $run $rm "$obj" "$output_obj"
+      $show "$command"
+      if $run eval "$command"; then :
+      else
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      if test "$need_locks" = warn &&
+	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
+	$echo "\
+*** ERROR, $lockfile contains:
+`cat $lockfile 2>/dev/null`
+
+but it should contain:
+$srcfile
+
+This indicates that another process is trying to use the same
+temporary object file, and libtool could not work around it because
+your compiler does not support \`-c' and \`-o' together.  If you
+repeat this compilation, it may succeed, by chance, but you had better
+avoid parallel builds (make -j) in this platform, or get a better
+compiler."
+
+	$run $rm $removelist
+	exit $EXIT_FAILURE
+      fi
+
+      # Just move the object if needed
+      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
+	$show "$mv $output_obj $obj"
+	if $run $mv $output_obj $obj; then :
+	else
+	  error=$?
+	  $run $rm $removelist
+	  exit $error
+	fi
+      fi
+
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+    else
+      # Append the name of the non-PIC object the libtool object file.
+      # Only append if the libtool object file exists.
+      test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+    fi
+
+    $run $mv "${libobj}T" "${libobj}"
+
+    # Unlock the critical section if it was locked
+    if test "$need_locks" != no; then
+      $run $rm "$lockfile"
+    fi
+
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool link mode
+  link | relink)
+    modename="$modename: link"
+    case $host in
+    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+      # It is impossible to link a dll without this setting, and
+      # we shouldn't force the makefile maintainer to figure out
+      # which system we are compiling for in order to pass an extra
+      # flag for every libtool invocation.
+      # allow_undefined=no
+
+      # FIXME: Unfortunately, there are problems with the above when trying
+      # to make a dll which has undefined symbols, in which case not
+      # even a static library is built.  For now, we need to specify
+      # -no-undefined on the libtool link line when we can be certain
+      # that all symbols are satisfied, otherwise we get a static library.
+      allow_undefined=yes
+      ;;
+    *)
+      allow_undefined=yes
+      ;;
+    esac
+    libtool_args="$nonopt"
+    base_compile="$nonopt $@"
+    compile_command="$nonopt"
+    finalize_command="$nonopt"
+
+    compile_rpath=
+    finalize_rpath=
+    compile_shlibpath=
+    finalize_shlibpath=
+    convenience=
+    old_convenience=
+    deplibs=
+    old_deplibs=
+    compiler_flags=
+    linker_flags=
+    dllsearchpath=
+    lib_search_path=`pwd`
+    inst_prefix_dir=
+
+    avoid_version=no
+    dlfiles=
+    dlprefiles=
+    dlself=no
+    export_dynamic=no
+    export_symbols=
+    export_symbols_regex=
+    generated=
+    libobjs=
+    ltlibs=
+    module=no
+    no_install=no
+    objs=
+    non_pic_objects=
+    precious_files_regex=
+    prefer_static_libs=no
+    preload=no
+    prev=
+    prevarg=
+    release=
+    rpath=
+    xrpath=
+    perm_rpath=
+    temp_rpath=
+    thread_safe=no
+    vinfo=
+    vinfo_number=no
+
+    func_infer_tag $base_compile
+
+    # We need to know -static, to get the right output filenames.
+    for arg
+    do
+      case $arg in
+      -all-static | -static)
+	if test "X$arg" = "X-all-static"; then
+	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+	    $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+	  fi
+	  if test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	else
+	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
+	    dlopen_self=$dlopen_self_static
+	  fi
+	fi
+	build_libtool_libs=no
+	build_old_libs=yes
+	prefer_static_libs=yes
+	break
+	;;
+      esac
+    done
+
+    # See if our shared archives depend on static archives.
+    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
+
+    # Go through the arguments, transforming them on the way.
+    while test "$#" -gt 0; do
+      arg="$1"
+      shift
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+	;;
+      *) qarg=$arg ;;
+      esac
+      libtool_args="$libtool_args $qarg"
+
+      # If the previous option needs an argument, assign it.
+      if test -n "$prev"; then
+	case $prev in
+	output)
+	  compile_command="$compile_command @OUTPUT@"
+	  finalize_command="$finalize_command @OUTPUT@"
+	  ;;
+	esac
+
+	case $prev in
+	dlfiles|dlprefiles)
+	  if test "$preload" = no; then
+	    # Add the symbol object into the linking commands.
+	    compile_command="$compile_command @SYMFILE@"
+	    finalize_command="$finalize_command @SYMFILE@"
+	    preload=yes
+	  fi
+	  case $arg in
+	  *.la | *.lo) ;;  # We handle these cases below.
+	  force)
+	    if test "$dlself" = no; then
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  self)
+	    if test "$prev" = dlprefiles; then
+	      dlself=yes
+	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
+	      dlself=yes
+	    else
+	      dlself=needless
+	      export_dynamic=yes
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  *)
+	    if test "$prev" = dlfiles; then
+	      dlfiles="$dlfiles $arg"
+	    else
+	      dlprefiles="$dlprefiles $arg"
+	    fi
+	    prev=
+	    continue
+	    ;;
+	  esac
+	  ;;
+	expsyms)
+	  export_symbols="$arg"
+	  if test ! -f "$arg"; then
+	    $echo "$modename: symbol file \`$arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  prev=
+	  continue
+	  ;;
+	expsyms_regex)
+	  export_symbols_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	inst_prefix)
+	  inst_prefix_dir="$arg"
+	  prev=
+	  continue
+	  ;;
+	precious_regex)
+	  precious_files_regex="$arg"
+	  prev=
+	  continue
+	  ;;
+	release)
+	  release="-$arg"
+	  prev=
+	  continue
+	  ;;
+	objectlist)
+	  if test -f "$arg"; then
+	    save_arg=$arg
+	    moreargs=
+	    for fil in `cat $save_arg`
+	    do
+#	      moreargs="$moreargs $fil"
+	      arg=$fil
+	      # A libtool-controlled object.
+
+	      # Check to see that this really is a libtool object.
+	      if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		pic_object=
+		non_pic_object=
+
+		# Read the .lo file
+		# If there is no directory component, then add one.
+		case $arg in
+		*/* | *\\*) . $arg ;;
+		*) . ./$arg ;;
+		esac
+
+		if test -z "$pic_object" || \
+		   test -z "$non_pic_object" ||
+		   test "$pic_object" = none && \
+		   test "$non_pic_object" = none; then
+		  $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+
+		# Extract subdirectory from the argument.
+		xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		if test "X$xdir" = "X$arg"; then
+		  xdir=
+		else
+		  xdir="$xdir/"
+		fi
+
+		if test "$pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  pic_object="$xdir$pic_object"
+
+		  if test "$prev" = dlfiles; then
+		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		      dlfiles="$dlfiles $pic_object"
+		      prev=
+		      continue
+		    else
+		      # If libtool objects are unsupported, then we need to preload.
+		      prev=dlprefiles
+		    fi
+		  fi
+
+		  # CHECK ME:  I think I busted this.  -Ossama
+		  if test "$prev" = dlprefiles; then
+		    # Preload the old-style object.
+		    dlprefiles="$dlprefiles $pic_object"
+		    prev=
+		  fi
+
+		  # A PIC object.
+		  libobjs="$libobjs $pic_object"
+		  arg="$pic_object"
+		fi
+
+		# Non-PIC object.
+		if test "$non_pic_object" != none; then
+		  # Prepend the subdirectory the object is found in.
+		  non_pic_object="$xdir$non_pic_object"
+
+		  # A standard non-PIC object
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		  if test -z "$pic_object" || test "$pic_object" = none ; then
+		    arg="$non_pic_object"
+		  fi
+		fi
+	      else
+		# Only an error if not doing a dry-run.
+		if test -z "$run"; then
+		  $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+		  exit $EXIT_FAILURE
+		else
+		  # Dry-run case.
+
+		  # Extract subdirectory from the argument.
+		  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+		  if test "X$xdir" = "X$arg"; then
+		    xdir=
+		  else
+		    xdir="$xdir/"
+		  fi
+
+		  pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+		  non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+		  libobjs="$libobjs $pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
+		fi
+	      fi
+	    done
+	  else
+	    $echo "$modename: link input file \`$save_arg' does not exist"
+	    exit $EXIT_FAILURE
+	  fi
+	  arg=$save_arg
+	  prev=
+	  continue
+	  ;;
+	rpath | xrpath)
+	  # We need an absolute path.
+	  case $arg in
+	  [\\/]* | [A-Za-z]:[\\/]*) ;;
+	  *)
+	    $echo "$modename: only absolute run-paths are allowed" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	  if test "$prev" = rpath; then
+	    case "$rpath " in
+	    *" $arg "*) ;;
+	    *) rpath="$rpath $arg" ;;
+	    esac
+	  else
+	    case "$xrpath " in
+	    *" $arg "*) ;;
+	    *) xrpath="$xrpath $arg" ;;
+	    esac
+	  fi
+	  prev=
+	  continue
+	  ;;
+	xcompiler)
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	xlinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $wl$qarg"
+	  prev=
+	  compile_command="$compile_command $wl$qarg"
+	  finalize_command="$finalize_command $wl$qarg"
+	  continue
+	  ;;
+	xcclinker)
+	  linker_flags="$linker_flags $qarg"
+	  compiler_flags="$compiler_flags $qarg"
+	  prev=
+	  compile_command="$compile_command $qarg"
+	  finalize_command="$finalize_command $qarg"
+	  continue
+	  ;;
+	shrext)
+  	  shrext_cmds="$arg"
+	  prev=
+	  continue
+	  ;;
+        darwin_framework)
+	  compiler_flags="$compiler_flags $arg"
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  prev=
+	  continue
+	  ;;
+	*)
+	  eval "$prev=\"\$arg\""
+	  prev=
+	  continue
+	  ;;
+	esac
+      fi # test -n "$prev"
+
+      prevarg="$arg"
+
+      case $arg in
+      -all-static)
+	if test -n "$link_static_flag"; then
+	  compile_command="$compile_command $link_static_flag"
+	  finalize_command="$finalize_command $link_static_flag"
+	fi
+	continue
+	;;
+
+      -allow-undefined)
+	# FIXME: remove this flag sometime in the future.
+	$echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+	continue
+	;;
+
+      -avoid-version)
+	avoid_version=yes
+	continue
+	;;
+
+      -dlopen)
+	prev=dlfiles
+	continue
+	;;
+
+      -dlpreopen)
+	prev=dlprefiles
+	continue
+	;;
+
+      -export-dynamic)
+	export_dynamic=yes
+	continue
+	;;
+
+      -export-symbols | -export-symbols-regex)
+	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	  $echo "$modename: more than one -exported-symbols argument is not allowed"
+	  exit $EXIT_FAILURE
+	fi
+	if test "X$arg" = "X-export-symbols"; then
+	  prev=expsyms
+	else
+	  prev=expsyms_regex
+	fi
+	continue
+	;;
+
+      -framework|-arch)
+        prev=darwin_framework
+        compiler_flags="$compiler_flags $arg"
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+        continue
+        ;;
+
+      -inst-prefix-dir)
+	prev=inst_prefix
+	continue
+	;;
+
+      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
+      # so, if we see these flags be careful not to treat them like -L
+      -L[A-Z][A-Z]*:*)
+	case $with_gcc/$host in
+	no/*-*-irix* | /*-*-irix*)
+	  compile_command="$compile_command $arg"
+	  finalize_command="$finalize_command $arg"
+	  ;;
+	esac
+	continue
+	;;
+
+      -L*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  absdir=`cd "$dir" && pwd`
+	  if test -z "$absdir"; then
+	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  dir="$absdir"
+	  ;;
+	esac
+	case "$deplibs " in
+	*" -L$dir "*) ;;
+	*)
+	  deplibs="$deplibs -L$dir"
+	  lib_search_path="$lib_search_path $dir"
+	  ;;
+	esac
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$dir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$dir";;
+	  esac
+	  ;;
+	esac
+	continue
+	;;
+
+      -l*)
+	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
+	  case $host in
+	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	    # These systems don't actually have a C or math library (as such)
+	    continue
+	    ;;
+	  *-*-mingw* | *-*-os2*)
+	    # These systems don't actually have a C library (as such)
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C and math libraries are in the System framework
+	    deplibs="$deplibs -framework System"
+	    continue
+	  esac
+	elif test "X$arg" = "X-lc_r"; then
+	 case $host in
+	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	   # Do not include libc_r directly, use -pthread flag.
+	   continue
+	   ;;
+	 esac
+	fi
+	deplibs="$deplibs $arg"
+	continue
+	;;
+
+      # Tru64 UNIX uses -model [arg] to determine the layout of C++
+      # classes, name mangling, and exception handling.
+      -model)
+	compile_command="$compile_command $arg"
+	compiler_flags="$compiler_flags $arg"
+	finalize_command="$finalize_command $arg"
+	prev=xcompiler
+	continue
+	;;
+
+     -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	compiler_flags="$compiler_flags $arg"
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+	continue
+	;;
+
+      -module)
+	module=yes
+	continue
+	;;
+
+      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+      # -r[0-9][0-9]* specifies the processor on the SGI compiler
+      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+      # +DA*, +DD* enable 64-bit mode on the HP compiler
+      # -q* pass through compiler args for the IBM compiler
+      # -m* pass through architecture-specific compiler args for GCC
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*)
+
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+        compile_command="$compile_command $arg"
+        finalize_command="$finalize_command $arg"
+        if test "$with_gcc" = "yes" ; then
+          compiler_flags="$compiler_flags $arg"
+        fi
+        continue
+        ;;
+
+      -shrext)
+	prev=shrext
+	continue
+	;;
+
+      -no-fast-install)
+	fast_install=no
+	continue
+	;;
+
+      -no-install)
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  # The PATH hackery in wrapper scripts is required on Windows
+	  # in order for the loader to find any dlls it needs.
+	  $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+	  $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+	  fast_install=no
+	  ;;
+	*) no_install=yes ;;
+	esac
+	continue
+	;;
+
+      -no-undefined)
+	allow_undefined=no
+	continue
+	;;
+
+      -objectlist)
+	prev=objectlist
+	continue
+	;;
+
+      -o) prev=output ;;
+
+      -precious-files-regex)
+	prev=precious_regex
+	continue
+	;;
+
+      -release)
+	prev=release
+	continue
+	;;
+
+      -rpath)
+	prev=rpath
+	continue
+	;;
+
+      -R)
+	prev=xrpath
+	continue
+	;;
+
+      -R*)
+	dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+	# We need an absolute path.
+	case $dir in
+	[\\/]* | [A-Za-z]:[\\/]*) ;;
+	*)
+	  $echo "$modename: only absolute run-paths are allowed" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+	case "$xrpath " in
+	*" $dir "*) ;;
+	*) xrpath="$xrpath $dir" ;;
+	esac
+	continue
+	;;
+
+      -static)
+	# The effects of -static are defined in a previous loop.
+	# We used to do the same as -all-static on platforms that
+	# didn't have a PIC flag, but the assumption that the effects
+	# would be equivalent was wrong.  It would break on at least
+	# Digital Unix and AIX.
+	continue
+	;;
+
+      -thread-safe)
+	thread_safe=yes
+	continue
+	;;
+
+      -version-info)
+	prev=vinfo
+	continue
+	;;
+      -version-number)
+	prev=vinfo
+	vinfo_number=yes
+	continue
+	;;
+
+      -Wc,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Wl,*)
+	args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+	arg=
+	save_ifs="$IFS"; IFS=','
+	for flag in $args; do
+	  IFS="$save_ifs"
+	  case $flag in
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	    flag="\"$flag\""
+	    ;;
+	  esac
+	  arg="$arg $wl$flag"
+	  compiler_flags="$compiler_flags $wl$flag"
+	  linker_flags="$linker_flags $flag"
+	done
+	IFS="$save_ifs"
+	arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+	;;
+
+      -Xcompiler)
+	prev=xcompiler
+	continue
+	;;
+
+      -Xlinker)
+	prev=xlinker
+	continue
+	;;
+
+      -XCClinker)
+	prev=xcclinker
+	continue
+	;;
+
+      # Some other compiler flag.
+      -* | +*)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+
+      *.$objext)
+	# A standard object.
+	objs="$objs $arg"
+	;;
+
+      *.lo)
+	# A libtool-controlled object.
+
+	# Check to see that this really is a libtool object.
+	if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  pic_object=
+	  non_pic_object=
+
+	  # Read the .lo file
+	  # If there is no directory component, then add one.
+	  case $arg in
+	  */* | *\\*) . $arg ;;
+	  *) . ./$arg ;;
+	  esac
+
+	  if test -z "$pic_object" || \
+	     test -z "$non_pic_object" ||
+	     test "$pic_object" = none && \
+	     test "$non_pic_object" = none; then
+	    $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  # Extract subdirectory from the argument.
+	  xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	  if test "X$xdir" = "X$arg"; then
+	    xdir=
+ 	  else
+	    xdir="$xdir/"
+	  fi
+
+	  if test "$pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    pic_object="$xdir$pic_object"
+
+	    if test "$prev" = dlfiles; then
+	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
+		dlfiles="$dlfiles $pic_object"
+		prev=
+		continue
+	      else
+		# If libtool objects are unsupported, then we need to preload.
+		prev=dlprefiles
+	      fi
+	    fi
+
+	    # CHECK ME:  I think I busted this.  -Ossama
+	    if test "$prev" = dlprefiles; then
+	      # Preload the old-style object.
+	      dlprefiles="$dlprefiles $pic_object"
+	      prev=
+	    fi
+
+	    # A PIC object.
+	    libobjs="$libobjs $pic_object"
+	    arg="$pic_object"
+	  fi
+
+	  # Non-PIC object.
+	  if test "$non_pic_object" != none; then
+	    # Prepend the subdirectory the object is found in.
+	    non_pic_object="$xdir$non_pic_object"
+
+	    # A standard non-PIC object
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	    if test -z "$pic_object" || test "$pic_object" = none ; then
+	      arg="$non_pic_object"
+	    fi
+	  fi
+	else
+	  # Only an error if not doing a dry-run.
+	  if test -z "$run"; then
+	    $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+	    exit $EXIT_FAILURE
+	  else
+	    # Dry-run case.
+
+	    # Extract subdirectory from the argument.
+	    xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+	    if test "X$xdir" = "X$arg"; then
+	      xdir=
+	    else
+	      xdir="$xdir/"
+	    fi
+
+	    pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+	    non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+	    libobjs="$libobjs $pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
+	  fi
+	fi
+	;;
+
+      *.$libext)
+	# An archive.
+	deplibs="$deplibs $arg"
+	old_deplibs="$old_deplibs $arg"
+	continue
+	;;
+
+      *.la)
+	# A libtool-controlled library.
+
+	if test "$prev" = dlfiles; then
+	  # This library was specified with -dlopen.
+	  dlfiles="$dlfiles $arg"
+	  prev=
+	elif test "$prev" = dlprefiles; then
+	  # The library was specified with -dlpreopen.
+	  dlprefiles="$dlprefiles $arg"
+	  prev=
+	else
+	  deplibs="$deplibs $arg"
+	fi
+	continue
+	;;
+
+      # Some other compiler argument.
+      *)
+	# Unknown arguments in both finalize_command and compile_command need
+	# to be aesthetically quoted because they are evaled later.
+	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+	case $arg in
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	  arg="\"$arg\""
+	  ;;
+	esac
+	;;
+      esac # arg
+
+      # Now actually substitute the argument into the commands.
+      if test -n "$arg"; then
+	compile_command="$compile_command $arg"
+	finalize_command="$finalize_command $arg"
+      fi
+    done # argument parsing loop
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+      eval arg=\"$export_dynamic_flag_spec\"
+      compile_command="$compile_command $arg"
+      finalize_command="$finalize_command $arg"
+    fi
+
+    oldlibs=
+    # calculate the name of the file, without its directory
+    outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+    libobjs_save="$libobjs"
+
+    if test -n "$shlibpath_var"; then
+      # get the directories listed in $shlibpath_var
+      eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
+    else
+      shlib_search_path=
+    fi
+    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
+    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
+
+    output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+    if test "X$output_objdir" = "X$output"; then
+      output_objdir="$objdir"
+    else
+      output_objdir="$output_objdir/$objdir"
+    fi
+    # Create the object directory.
+    if test ! -d "$output_objdir"; then
+      $show "$mkdir $output_objdir"
+      $run $mkdir $output_objdir
+      status=$?
+      if test "$status" -ne 0 && test ! -d "$output_objdir"; then
+	exit $status
+      fi
+    fi
+
+    # Determine the type of output
+    case $output in
+    "")
+      $echo "$modename: you must specify an output file" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+      ;;
+    *.$libext) linkmode=oldlib ;;
+    *.lo | *.$objext) linkmode=obj ;;
+    *.la) linkmode=lib ;;
+    *) linkmode=prog ;; # Anything else should be a program.
+    esac
+
+    case $host in
+    *cygwin* | *mingw* | *pw32*)
+      # don't eliminate duplications in $postdeps and $predeps
+      duplicate_compiler_generated_deps=yes
+      ;;
+    *)
+      duplicate_compiler_generated_deps=$duplicate_deps
+      ;;
+    esac
+    specialdeplibs=
+
+    libs=
+    # Find all interdependent deplibs by searching for libraries
+    # that are linked more than once (e.g. -la -lb -la)
+    for deplib in $deplibs; do
+      if test "X$duplicate_deps" = "Xyes" ; then
+	case "$libs " in
+	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	esac
+      fi
+      libs="$libs $deplib"
+    done
+
+    if test "$linkmode" = lib; then
+      libs="$predeps $libs $compiler_lib_search_path $postdeps"
+
+      # Compute libraries that are listed more than once in $predeps
+      # $postdeps and mark them as special (i.e., whose duplicates are
+      # not to be eliminated).
+      pre_post_deps=
+      if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+	for pre_post_dep in $predeps $postdeps; do
+	  case "$pre_post_deps " in
+	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+	  esac
+	  pre_post_deps="$pre_post_deps $pre_post_dep"
+	done
+      fi
+      pre_post_deps=
+    fi
+
+    deplibs=
+    newdependency_libs=
+    newlib_search_path=
+    need_relink=no # whether we're linking any uninstalled libtool libraries
+    notinst_deplibs= # not-installed libtool libraries
+    notinst_path= # paths that contain not-installed libtool libraries
+    case $linkmode in
+    lib)
+	passes="conv link"
+	for file in $dlfiles $dlprefiles; do
+	  case $file in
+	  *.la) ;;
+	  *)
+	    $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+	    exit $EXIT_FAILURE
+	    ;;
+	  esac
+	done
+	;;
+    prog)
+	compile_deplibs=
+	finalize_deplibs=
+	alldeplibs=no
+	newdlfiles=
+	newdlprefiles=
+	passes="conv scan dlopen dlpreopen link"
+	;;
+    *)  passes="conv"
+	;;
+    esac
+    for pass in $passes; do
+      if test "$linkmode,$pass" = "lib,link" ||
+	 test "$linkmode,$pass" = "prog,scan"; then
+	libs="$deplibs"
+	deplibs=
+      fi
+      if test "$linkmode" = prog; then
+	case $pass in
+	dlopen) libs="$dlfiles" ;;
+	dlpreopen) libs="$dlprefiles" ;;
+	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+	esac
+      fi
+      if test "$pass" = dlopen; then
+	# Collect dlpreopened libraries
+	save_deplibs="$deplibs"
+	deplibs=
+      fi
+      for deplib in $libs; do
+	lib=
+	found=no
+	case $deplib in
+	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+	  if test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$deplib $compile_deplibs"
+	    finalize_deplibs="$deplib $finalize_deplibs"
+	  else
+	    compiler_flags="$compiler_flags $deplib"
+	  fi
+	  continue
+	  ;;
+	-l*)
+	  if test "$linkmode" != lib && test "$linkmode" != prog; then
+	    $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+	    continue
+	  fi
+	  name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+	  for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+	    for search_ext in .la $std_shrext .so .a; do
+	      # Search the libtool library
+	      lib="$searchdir/lib${name}${search_ext}"
+	      if test -f "$lib"; then
+		if test "$search_ext" = ".la"; then
+		  found=yes
+		else
+		  found=no
+		fi
+		break 2
+	      fi
+	    done
+	  done
+	  if test "$found" != yes; then
+	    # deplib doesn't seem to be a libtool library
+	    if test "$linkmode,$pass" = "prog,link"; then
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      deplibs="$deplib $deplibs"
+	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    continue
+	  else # deplib is a libtool library
+	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
+	    # We need to do some special things here, and not later.
+	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	      case " $predeps $postdeps " in
+	      *" $deplib "*)
+		if (${SED} -e '2q' $lib |
+                    grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+		  library_names=
+		  old_library=
+		  case $lib in
+		  */* | *\\*) . $lib ;;
+		  *) . ./$lib ;;
+		  esac
+		  for l in $old_library $library_names; do
+		    ll="$l"
+		  done
+		  if test "X$ll" = "X$old_library" ; then # only static version available
+		    found=no
+		    ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+		    test "X$ladir" = "X$lib" && ladir="."
+		    lib=$ladir/$old_library
+		    if test "$linkmode,$pass" = "prog,link"; then
+		      compile_deplibs="$deplib $compile_deplibs"
+		      finalize_deplibs="$deplib $finalize_deplibs"
+		    else
+		      deplibs="$deplib $deplibs"
+		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
+		    fi
+		    continue
+		  fi
+		fi
+	        ;;
+	      *) ;;
+	      esac
+	    fi
+	  fi
+	  ;; # -l
+	-L*)
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+	    ;;
+	  *)
+	    $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+	    ;;
+	  esac # linkmode
+	  continue
+	  ;; # -L
+	-R*)
+	  if test "$pass" = link; then
+	    dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+	    # Make sure the xrpath contains only unique directories.
+	    case "$xrpath " in
+	    *" $dir "*) ;;
+	    *) xrpath="$xrpath $dir" ;;
+	    esac
+	  fi
+	  deplibs="$deplib $deplibs"
+	  continue
+	  ;;
+	*.la) lib="$deplib" ;;
+	*.$libext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	    continue
+	  fi
+	  case $linkmode in
+	  lib)
+	    valid_a_lib=no
+	    case $deplibs_check_method in
+	      match_pattern*)
+		set dummy $deplibs_check_method
+	        match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+		if eval $echo \"$deplib\" 2>/dev/null \
+		    | $SED 10q \
+		    | $EGREP "$match_pattern_regex" > /dev/null; then
+		  valid_a_lib=yes
+		fi
+		;;
+	      pass_all)
+		valid_a_lib=yes
+		;;
+            esac
+	    if test "$valid_a_lib" != yes; then
+	      $echo
+	      $echo "*** Warning: Trying to link with static lib archive $deplib."
+	      $echo "*** I have the capability to make that library automatically link in when"
+	      $echo "*** you link to this library.  But I can only do this if you have a"
+	      $echo "*** shared version of the library, which you do not appear to have"
+	      $echo "*** because the file extensions .$libext of this argument makes me believe"
+	      $echo "*** that it is just a static archive that I should not used here."
+	    else
+	      $echo
+	      $echo "*** Warning: Linking the shared library $output against the"
+	      $echo "*** static library $deplib is not portable!"
+	      deplibs="$deplib $deplibs"
+	    fi
+	    continue
+	    ;;
+	  prog)
+	    if test "$pass" != link; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    continue
+	    ;;
+	  esac # linkmode
+	  ;; # *.$libext
+	*.lo | *.$objext)
+	  if test "$pass" = conv; then
+	    deplibs="$deplib $deplibs"
+	  elif test "$linkmode" = prog; then
+	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
+	      # If there is no dlopen support or we're linking statically,
+	      # we need to preload.
+	      newdlprefiles="$newdlprefiles $deplib"
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    else
+	      newdlfiles="$newdlfiles $deplib"
+	    fi
+	  fi
+	  continue
+	  ;;
+	%DEPLIBS%)
+	  alldeplibs=yes
+	  continue
+	  ;;
+	esac # case $deplib
+	if test "$found" = yes || test -f "$lib"; then :
+	else
+	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$ladir" = "X$lib" && ladir="."
+
+	dlname=
+	dlopen=
+	dlpreopen=
+	libdir=
+	library_names=
+	old_library=
+	# If the library was installed with an old release of libtool,
+	# it will not redefine variables installed, or shouldnotlink
+	installed=yes
+	shouldnotlink=no
+	avoidtemprpath=
+
+
+	# Read the .la file
+	case $lib in
+	*/* | *\\*) . $lib ;;
+	*) . ./$lib ;;
+	esac
+
+	if test "$linkmode,$pass" = "lib,link" ||
+	   test "$linkmode,$pass" = "prog,scan" ||
+	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
+	fi
+
+	if test "$pass" = conv; then
+	  # Only check for convenience libraries
+	  deplibs="$lib $deplibs"
+	  if test -z "$libdir"; then
+	    if test -z "$old_library"; then
+	      $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	      exit $EXIT_FAILURE
+	    fi
+	    # It is a libtool convenience library, so add in its objects.
+	    convenience="$convenience $ladir/$objdir/$old_library"
+	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
+	    tmp_libs=
+	    for deplib in $dependency_libs; do
+	      deplibs="$deplib $deplibs"
+              if test "X$duplicate_deps" = "Xyes" ; then
+	        case "$tmp_libs " in
+	        *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	        esac
+              fi
+	      tmp_libs="$tmp_libs $deplib"
+	    done
+	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
+	    $echo "$modename: \`$lib' is not a convenience library" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  continue
+	fi # $pass = conv
+
+
+	# Get the name of the library we link against.
+	linklib=
+	for l in $old_library $library_names; do
+	  linklib="$l"
+	done
+	if test -z "$linklib"; then
+	  $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# This library was specified with -dlopen.
+	if test "$pass" = dlopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  if test -z "$dlname" ||
+	     test "$dlopen_support" != yes ||
+	     test "$build_libtool_libs" = no; then
+	    # If there is no dlname, no dlopen support or we're linking
+	    # statically, we need to preload.  We also need to preload any
+	    # dependent libraries so libltdl's deplib preloader doesn't
+	    # bomb out in the load deplibs phase.
+	    dlprefiles="$dlprefiles $lib $dependency_libs"
+	  else
+	    newdlfiles="$newdlfiles $lib"
+	  fi
+	  continue
+	fi # $pass = dlopen
+
+	# We need an absolute path.
+	case $ladir in
+	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
+	*)
+	  abs_ladir=`cd "$ladir" && pwd`
+	  if test -z "$abs_ladir"; then
+	    $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+	    $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+	    abs_ladir="$ladir"
+	  fi
+	  ;;
+	esac
+	laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+	# Find the relevant object directory and library name.
+	if test "X$installed" = Xyes; then
+	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    $echo "$modename: warning: library \`$lib' was moved." 1>&2
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    libdir="$abs_ladir"
+	  else
+	    dir="$libdir"
+	    absdir="$libdir"
+	  fi
+	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
+	else
+	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+	    dir="$ladir"
+	    absdir="$abs_ladir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  else
+	    dir="$ladir/$objdir"
+	    absdir="$abs_ladir/$objdir"
+	    # Remove this search path later
+	    notinst_path="$notinst_path $abs_ladir"
+	  fi
+	fi # $installed = yes
+	name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+	# This library was specified with -dlpreopen.
+	if test "$pass" = dlpreopen; then
+	  if test -z "$libdir"; then
+	    $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	  # Prefer using a static library (so that no silly _DYNAMIC symbols
+	  # are required to link).
+	  if test -n "$old_library"; then
+	    newdlprefiles="$newdlprefiles $dir/$old_library"
+	  # Otherwise, use the dlname, so that lt_dlopen finds it.
+	  elif test -n "$dlname"; then
+	    newdlprefiles="$newdlprefiles $dir/$dlname"
+	  else
+	    newdlprefiles="$newdlprefiles $dir/$linklib"
+	  fi
+	fi # $pass = dlpreopen
+
+	if test -z "$libdir"; then
+	  # Link the convenience library
+	  if test "$linkmode" = lib; then
+	    deplibs="$dir/$old_library $deplibs"
+	  elif test "$linkmode,$pass" = "prog,link"; then
+	    compile_deplibs="$dir/$old_library $compile_deplibs"
+	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
+	  else
+	    deplibs="$lib $deplibs" # used for prog,scan pass
+	  fi
+	  continue
+	fi
+
+
+	if test "$linkmode" = prog && test "$pass" != link; then
+	  newlib_search_path="$newlib_search_path $ladir"
+	  deplibs="$lib $deplibs"
+
+	  linkalldeplibs=no
+	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
+	     test "$build_libtool_libs" = no; then
+	    linkalldeplibs=yes
+	  fi
+
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    case $deplib in
+	    -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+	    esac
+	    # Need to link against all dependency_libs?
+	    if test "$linkalldeplibs" = yes; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      # Need to hardcode shared library paths
+	      # or/and link against static libraries
+	      newdependency_libs="$deplib $newdependency_libs"
+	    fi
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done # for deplib
+	  continue
+	fi # $linkmode = prog...
+
+	if test "$linkmode,$pass" = "prog,link"; then
+	  if test -n "$library_names" &&
+	     { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	    # We need to hardcode the library path
+	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+	      # Make sure the rpath contains only unique directories.
+	      case "$temp_rpath " in
+	      *" $dir "*) ;;
+	      *" $absdir "*) ;;
+	      *) temp_rpath="$temp_rpath $absdir" ;;
+	      esac
+	    fi
+
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi # $linkmode,$pass = prog,link...
+
+	  if test "$alldeplibs" = yes &&
+	     { test "$deplibs_check_method" = pass_all ||
+	       { test "$build_libtool_libs" = yes &&
+		 test -n "$library_names"; }; }; then
+	    # We only need to search for static libraries
+	    continue
+	  fi
+	fi
+
+	link_static=no # Whether the deplib will be linked statically
+	if test -n "$library_names" &&
+	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	  if test "$installed" = no; then
+	    notinst_deplibs="$notinst_deplibs $lib"
+	    need_relink=yes
+	  fi
+	  # This is a shared library
+
+	  # Warn about portability, can't link against -module's on
+	  # some systems (darwin)
+	  if test "$shouldnotlink" = yes && test "$pass" = link ; then
+	    $echo
+	    if test "$linkmode" = prog; then
+	      $echo "*** Warning: Linking the executable $output against the loadable module"
+	    else
+	      $echo "*** Warning: Linking the shared library $output against the loadable module"
+	    fi
+	    $echo "*** $linklib is not portable!"
+	  fi
+	  if test "$linkmode" = lib &&
+	     test "$hardcode_into_libs" = yes; then
+	    # Hardcode the library path.
+	    # Skip directories that are in the system default run-time
+	    # search path.
+	    case " $sys_lib_dlsearch_path " in
+	    *" $absdir "*) ;;
+	    *)
+	      case "$compile_rpath " in
+	      *" $absdir "*) ;;
+	      *) compile_rpath="$compile_rpath $absdir"
+	      esac
+	      ;;
+	    esac
+	    case " $sys_lib_dlsearch_path " in
+	    *" $libdir "*) ;;
+	    *)
+	      case "$finalize_rpath " in
+	      *" $libdir "*) ;;
+	      *) finalize_rpath="$finalize_rpath $libdir"
+	      esac
+	      ;;
+	    esac
+	  fi
+
+	  if test -n "$old_archive_from_expsyms_cmds"; then
+	    # figure out the soname
+	    set dummy $library_names
+	    realname="$2"
+	    shift; shift
+	    libname=`eval \\$echo \"$libname_spec\"`
+	    # use dlname if we got it. it's perfectly good, no?
+	    if test -n "$dlname"; then
+	      soname="$dlname"
+	    elif test -n "$soname_spec"; then
+	      # bleh windows
+	      case $host in
+	      *cygwin* | mingw*)
+		major=`expr $current - $age`
+		versuffix="-$major"
+		;;
+	      esac
+	      eval soname=\"$soname_spec\"
+	    else
+	      soname="$realname"
+	    fi
+
+	    # Make a new name for the extract_expsyms_cmds to use
+	    soroot="$soname"
+	    soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+	    newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+	    # If the library has no export list, then create one now
+	    if test -f "$output_objdir/$soname-def"; then :
+	    else
+	      $show "extracting exported symbol list from \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$extract_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    # Create $newlib
+	    if test -f "$output_objdir/$newlib"; then :; else
+	      $show "generating import library for \`$soname'"
+	      save_ifs="$IFS"; IFS='~'
+	      cmds=$old_archive_from_expsyms_cmds
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd" || exit $?
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # make sure the library variables are pointing to the new library
+	    dir=$output_objdir
+	    linklib=$newlib
+	  fi # test -n "$old_archive_from_expsyms_cmds"
+
+	  if test "$linkmode" = prog || test "$mode" != relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    lib_linked=yes
+	    case $hardcode_action in
+	    immediate | unsupported)
+	      if test "$hardcode_direct" = no; then
+		add="$dir/$linklib"
+		case $host in
+		  *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+		  *-*-darwin* )
+		    # if the lib is a module then we can not link against
+		    # it, someone is ignoring the new warnings I added
+		    if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+		      $echo "** Warning, lib $linklib is a module, not a shared library"
+		      if test -z "$old_library" ; then
+		        $echo
+		        $echo "** And there doesn't seem to be a static archive available"
+		        $echo "** The link will probably fail, sorry"
+		      else
+		        add="$dir/$old_library"
+		      fi
+		    fi
+		esac
+	      elif test "$hardcode_minus_L" = no; then
+		case $host in
+		*-*-sunos*) add_shlibpath="$dir" ;;
+		esac
+		add_dir="-L$dir"
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = no; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    relink)
+	      if test "$hardcode_direct" = yes; then
+		add="$dir/$linklib"
+	      elif test "$hardcode_minus_L" = yes; then
+		add_dir="-L$dir"
+		# Try looking first in the location we're being installed to.
+		if test -n "$inst_prefix_dir"; then
+		  case $libdir in
+		    [\\/]*)
+		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		      ;;
+		  esac
+		fi
+		add="-l$name"
+	      elif test "$hardcode_shlibpath_var" = yes; then
+		add_shlibpath="$dir"
+		add="-l$name"
+	      else
+		lib_linked=no
+	      fi
+	      ;;
+	    *) lib_linked=no ;;
+	    esac
+
+	    if test "$lib_linked" != yes; then
+	      $echo "$modename: configuration error: unsupported hardcode properties"
+	      exit $EXIT_FAILURE
+	    fi
+
+	    if test -n "$add_shlibpath"; then
+	      case :$compile_shlibpath: in
+	      *":$add_shlibpath:"*) ;;
+	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
+	      esac
+	    fi
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
+	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	      if test "$hardcode_direct" != yes && \
+		 test "$hardcode_minus_L" != yes && \
+		 test "$hardcode_shlibpath_var" = yes; then
+		case :$finalize_shlibpath: in
+		*":$libdir:"*) ;;
+		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+		esac
+	      fi
+	    fi
+	  fi
+
+	  if test "$linkmode" = prog || test "$mode" = relink; then
+	    add_shlibpath=
+	    add_dir=
+	    add=
+	    # Finalize command for both is simple: just hardcode it.
+	    if test "$hardcode_direct" = yes; then
+	      add="$libdir/$linklib"
+	    elif test "$hardcode_minus_L" = yes; then
+	      add_dir="-L$libdir"
+	      add="-l$name"
+	    elif test "$hardcode_shlibpath_var" = yes; then
+	      case :$finalize_shlibpath: in
+	      *":$libdir:"*) ;;
+	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+	      esac
+	      add="-l$name"
+	    elif test "$hardcode_automatic" = yes; then
+	      if test -n "$inst_prefix_dir" &&
+		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
+	        add="$inst_prefix_dir$libdir/$linklib"
+	      else
+	        add="$libdir/$linklib"
+	      fi
+	    else
+	      # We cannot seem to hardcode it, guess we'll fake it.
+	      add_dir="-L$libdir"
+	      # Try looking first in the location we're being installed to.
+	      if test -n "$inst_prefix_dir"; then
+		case $libdir in
+		  [\\/]*)
+		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
+		    ;;
+		esac
+	      fi
+	      add="-l$name"
+	    fi
+
+	    if test "$linkmode" = prog; then
+	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
+	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
+	    else
+	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
+	      test -n "$add" && deplibs="$add $deplibs"
+	    fi
+	  fi
+	elif test "$linkmode" = prog; then
+	  # Here we assume that one of hardcode_direct or hardcode_minus_L
+	  # is not unsupported.  This is valid on all known static and
+	  # shared platforms.
+	  if test "$hardcode_direct" != unsupported; then
+	    test -n "$old_library" && linklib="$old_library"
+	    compile_deplibs="$dir/$linklib $compile_deplibs"
+	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
+	  else
+	    compile_deplibs="-l$name -L$dir $compile_deplibs"
+	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
+	  fi
+	elif test "$build_libtool_libs" = yes; then
+	  # Not a shared library
+	  if test "$deplibs_check_method" != pass_all; then
+	    # We're trying link a shared library against a static one
+	    # but the system doesn't support it.
+
+	    # Just print a warning and add the library to dependency_libs so
+	    # that the program can be linked against the static library.
+	    $echo
+	    $echo "*** Warning: This system can not link to static lib archive $lib."
+	    $echo "*** I have the capability to make that library automatically link in when"
+	    $echo "*** you link to this library.  But I can only do this if you have a"
+	    $echo "*** shared version of the library, which you do not appear to have."
+	    if test "$module" = yes; then
+	      $echo "*** But as you try to build a module library, libtool will still create "
+	      $echo "*** a static module, that should work as long as the dlopening application"
+	      $echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
+	      if test -z "$global_symbol_pipe"; then
+		$echo
+		$echo "*** However, this would only work if libtool was able to extract symbol"
+		$echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+		$echo "*** not find such a program.  So, this module is probably useless."
+		$echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	      fi
+	      if test "$build_old_libs" = no; then
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  else
+	    deplibs="$dir/$old_library $deplibs"
+	    link_static=yes
+	  fi
+	fi # link shared/static library?
+
+	if test "$linkmode" = lib; then
+	  if test -n "$dependency_libs" &&
+	     { test "$hardcode_into_libs" != yes ||
+	       test "$build_old_libs" = yes ||
+	       test "$link_static" = yes; }; then
+	    # Extract -R from dependency_libs
+	    temp_deplibs=
+	    for libdir in $dependency_libs; do
+	      case $libdir in
+	      -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+		   case " $xrpath " in
+		   *" $temp_xrpath "*) ;;
+		   *) xrpath="$xrpath $temp_xrpath";;
+		   esac;;
+	      *) temp_deplibs="$temp_deplibs $libdir";;
+	      esac
+	    done
+	    dependency_libs="$temp_deplibs"
+	  fi
+
+	  newlib_search_path="$newlib_search_path $absdir"
+	  # Link against this library
+	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
+	  # ... and its dependency_libs
+	  tmp_libs=
+	  for deplib in $dependency_libs; do
+	    newdependency_libs="$deplib $newdependency_libs"
+	    if test "X$duplicate_deps" = "Xyes" ; then
+	      case "$tmp_libs " in
+	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+	      esac
+	    fi
+	    tmp_libs="$tmp_libs $deplib"
+	  done
+
+	  if test "$link_all_deplibs" != no; then
+	    # Add the search paths of all dependency libraries
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      -L*) path="$deplib" ;;
+	      *.la)
+		dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+		test "X$dir" = "X$deplib" && dir="."
+		# We need an absolute path.
+		case $dir in
+		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+		*)
+		  absdir=`cd "$dir" && pwd`
+		  if test -z "$absdir"; then
+		    $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+		    absdir="$dir"
+		  fi
+		  ;;
+		esac
+		if grep "^installed=no" $deplib > /dev/null; then
+		  path="$absdir/$objdir"
+		else
+		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		  if test -z "$libdir"; then
+		    $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		    exit $EXIT_FAILURE
+		  fi
+		  if test "$absdir" != "$libdir"; then
+		    $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+		  fi
+		  path="$absdir"
+		fi
+		depdepl=
+		case $host in
+		*-*-darwin*)
+		  # we do not want to link against static libs,
+		  # but need to link against shared
+		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+		  if test -n "$deplibrary_names" ; then
+		    for tmp in $deplibrary_names ; do
+		      depdepl=$tmp
+		    done
+		    if test -f "$path/$depdepl" ; then
+		      depdepl="$path/$depdepl"
+		    fi
+		    # do not add paths which are already there
+		    case " $newlib_search_path " in
+		    *" $path "*) ;;
+		    *) newlib_search_path="$newlib_search_path $path";;
+		    esac
+		  fi
+		  path=""
+		  ;;
+		*)
+		  path="-L$path"
+		  ;;
+		esac
+		;;
+	      -l*)
+		case $host in
+		*-*-darwin*)
+		  # Again, we only want to link against shared libraries
+		  eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+		  for tmp in $newlib_search_path ; do
+		    if test -f "$tmp/lib$tmp_libs.dylib" ; then
+		      eval depdepl="$tmp/lib$tmp_libs.dylib"
+		      break
+		    fi
+		  done
+		  path=""
+		  ;;
+		*) continue ;;
+		esac
+		;;
+	      *) continue ;;
+	      esac
+	      case " $deplibs " in
+	      *" $path "*) ;;
+	      *) deplibs="$path $deplibs" ;;
+	      esac
+	      case " $deplibs " in
+	      *" $depdepl "*) ;;
+	      *) deplibs="$depdepl $deplibs" ;;
+	      esac
+	    done
+	  fi # link_all_deplibs != no
+	fi # linkmode = lib
+      done # for deplib in $libs
+      dependency_libs="$newdependency_libs"
+      if test "$pass" = dlpreopen; then
+	# Link the dlpreopened libraries before other libraries
+	for deplib in $save_deplibs; do
+	  deplibs="$deplib $deplibs"
+	done
+      fi
+      if test "$pass" != dlopen; then
+	if test "$pass" != conv; then
+	  # Make sure lib_search_path contains only unique directories.
+	  lib_search_path=
+	  for dir in $newlib_search_path; do
+	    case "$lib_search_path " in
+	    *" $dir "*) ;;
+	    *) lib_search_path="$lib_search_path $dir" ;;
+	    esac
+	  done
+	  newlib_search_path=
+	fi
+
+	if test "$linkmode,$pass" != "prog,link"; then
+	  vars="deplibs"
+	else
+	  vars="compile_deplibs finalize_deplibs"
+	fi
+	for var in $vars dependency_libs; do
+	  # Add libraries to $var in reverse order
+	  eval tmp_libs=\"\$$var\"
+	  new_libs=
+	  for deplib in $tmp_libs; do
+	    # FIXME: Pedantically, this is the right thing to do, so
+	    #        that some nasty dependency loop isn't accidentally
+	    #        broken:
+	    #new_libs="$deplib $new_libs"
+	    # Pragmatically, this seems to cause very few problems in
+	    # practice:
+	    case $deplib in
+	    -L*) new_libs="$deplib $new_libs" ;;
+	    -R*) ;;
+	    *)
+	      # And here is the reason: when a library appears more
+	      # than once as an explicit dependence of a library, or
+	      # is implicitly linked in more than once by the
+	      # compiler, it is considered special, and multiple
+	      # occurrences thereof are not removed.  Compare this
+	      # with having the same library being listed as a
+	      # dependency of multiple other libraries: in this case,
+	      # we know (pedantically, we assume) the library does not
+	      # need to be listed more than once, so we keep only the
+	      # last copy.  This is not always right, but it is rare
+	      # enough that we require users that really mean to play
+	      # such unportable linking tricks to link the library
+	      # using -Wl,-lname, so that libtool does not consider it
+	      # for duplicate removal.
+	      case " $specialdeplibs " in
+	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
+	      *)
+		case " $new_libs " in
+		*" $deplib "*) ;;
+		*) new_libs="$deplib $new_libs" ;;
+		esac
+		;;
+	      esac
+	      ;;
+	    esac
+	  done
+	  tmp_libs=
+	  for deplib in $new_libs; do
+	    case $deplib in
+	    -L*)
+	      case " $tmp_libs " in
+	      *" $deplib "*) ;;
+	      *) tmp_libs="$tmp_libs $deplib" ;;
+	      esac
+	      ;;
+	    *) tmp_libs="$tmp_libs $deplib" ;;
+	    esac
+	  done
+	  eval $var=\"$tmp_libs\"
+	done # for var
+      fi
+      # Last step: remove runtime libs from dependency_libs
+      # (they stay in deplibs)
+      tmp_libs=
+      for i in $dependency_libs ; do
+	case " $predeps $postdeps $compiler_lib_search_path " in
+	*" $i "*)
+	  i=""
+	  ;;
+	esac
+	if test -n "$i" ; then
+	  tmp_libs="$tmp_libs $i"
+	fi
+      done
+      dependency_libs=$tmp_libs
+    done # for pass
+    if test "$linkmode" = prog; then
+      dlfiles="$newdlfiles"
+      dlprefiles="$newdlprefiles"
+    fi
+
+    case $linkmode in
+    oldlib)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+      fi
+
+      if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+	$echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+      fi
+
+      # Now set the variables for building old libraries.
+      build_libtool_libs=no
+      oldlibs="$output"
+      objs="$objs$old_deplibs"
+      ;;
+
+    lib)
+      # Make sure we only generate libraries of the form `libNAME.la'.
+      case $outputname in
+      lib*)
+	name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+	eval shared_ext=\"$shrext_cmds\"
+	eval libname=\"$libname_spec\"
+	;;
+      *)
+	if test "$module" = no; then
+	  $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	if test "$need_lib_prefix" != no; then
+	  # Add the "lib" prefix for modules if required
+	  name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	  eval shared_ext=\"$shrext_cmds\"
+	  eval libname=\"$libname_spec\"
+	else
+	  libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+	fi
+	;;
+      esac
+
+      if test -n "$objs"; then
+	if test "$deplibs_check_method" != pass_all; then
+	  $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+	  exit $EXIT_FAILURE
+	else
+	  $echo
+	  $echo "*** Warning: Linking the shared library $output against the non-libtool"
+	  $echo "*** objects $objs is not portable!"
+	  libobjs="$libobjs $objs"
+	fi
+      fi
+
+      if test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+      fi
+
+      set dummy $rpath
+      if test "$#" -gt 2; then
+	$echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+      fi
+      install_libdir="$2"
+
+      oldlibs=
+      if test -z "$rpath"; then
+	if test "$build_libtool_libs" = yes; then
+	  # Building a libtool convenience library.
+	  # Some compilers have problems with a `.al' extension so
+	  # convenience libraries should have the same extension an
+	  # archive normally would.
+	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
+	  build_libtool_libs=convenience
+	  build_old_libs=yes
+	fi
+
+	if test -n "$vinfo"; then
+	  $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+	fi
+
+	if test -n "$release"; then
+	  $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+	fi
+      else
+
+	# Parse the version information argument.
+	save_ifs="$IFS"; IFS=':'
+	set dummy $vinfo 0 0 0
+	IFS="$save_ifs"
+
+	if test -n "$8"; then
+	  $echo "$modename: too many parameters to \`-version-info'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# convert absolute version numbers to libtool ages
+	# this retains compatibility with .la files and attempts
+	# to make the code below a bit more comprehensible
+
+	case $vinfo_number in
+	yes)
+	  number_major="$2"
+	  number_minor="$3"
+	  number_revision="$4"
+	  #
+	  # There are really only two kinds -- those that
+	  # use the current revision as the major version
+	  # and those that subtract age and use age as
+	  # a minor version.  But, then there is irix
+	  # which has an extra 1 added just for fun
+	  #
+	  case $version_type in
+	  darwin|linux|osf|windows)
+	    current=`expr $number_major + $number_minor`
+	    age="$number_minor"
+	    revision="$number_revision"
+	    ;;
+	  freebsd-aout|freebsd-elf|sunos)
+	    current="$number_major"
+	    revision="$number_minor"
+	    age="0"
+	    ;;
+	  irix|nonstopux)
+	    current=`expr $number_major + $number_minor - 1`
+	    age="$number_minor"
+	    revision="$number_minor"
+	    ;;
+	  esac
+	  ;;
+	no)
+	  current="$2"
+	  revision="$3"
+	  age="$4"
+	  ;;
+	esac
+
+	# Check that each of the things are valid numbers.
+	case $current in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $revision in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	case $age in
+	0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
+	*)
+	  $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	if test "$age" -gt "$current"; then
+	  $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+	  $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Calculate the version variables.
+	major=
+	versuffix=
+	verstring=
+	case $version_type in
+	none) ;;
+
+	darwin)
+	  # Like Linux, but with the current version available in
+	  # verstring for coding it into the library header
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  # Darwin ld doesn't like 0 for these options...
+	  minor_current=`expr $current + 1`
+	  verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+	  ;;
+
+	freebsd-aout)
+	  major=".$current"
+	  versuffix=".$current.$revision";
+	  ;;
+
+	freebsd-elf)
+	  major=".$current"
+	  versuffix=".$current";
+	  ;;
+
+	irix | nonstopux)
+	  major=`expr $current - $age + 1`
+
+	  case $version_type in
+	    nonstopux) verstring_prefix=nonstopux ;;
+	    *)         verstring_prefix=sgi ;;
+	  esac
+	  verstring="$verstring_prefix$major.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$revision
+	  while test "$loop" -ne 0; do
+	    iface=`expr $revision - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring_prefix$major.$iface:$verstring"
+	  done
+
+	  # Before this point, $major must not contain `.'.
+	  major=.$major
+	  versuffix="$major.$revision"
+	  ;;
+
+	linux)
+	  major=.`expr $current - $age`
+	  versuffix="$major.$age.$revision"
+	  ;;
+
+	osf)
+	  major=.`expr $current - $age`
+	  versuffix=".$current.$age.$revision"
+	  verstring="$current.$age.$revision"
+
+	  # Add in all the interfaces that we are compatible with.
+	  loop=$age
+	  while test "$loop" -ne 0; do
+	    iface=`expr $current - $loop`
+	    loop=`expr $loop - 1`
+	    verstring="$verstring:${iface}.0"
+	  done
+
+	  # Make executables depend on our current version.
+	  verstring="$verstring:${current}.0"
+	  ;;
+
+	sunos)
+	  major=".$current"
+	  versuffix=".$current.$revision"
+	  ;;
+
+	windows)
+	  # Use '-' rather than '.', since we only want one
+	  # extension on DOS 8.3 filesystems.
+	  major=`expr $current - $age`
+	  versuffix="-$major"
+	  ;;
+
+	*)
+	  $echo "$modename: unknown library version type \`$version_type'" 1>&2
+	  $echo "Fatal configuration error.  See the $PACKAGE docs for more information." 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Clear the version info if we defaulted, and they specified a release.
+	if test -z "$vinfo" && test -n "$release"; then
+	  major=
+	  case $version_type in
+	  darwin)
+	    # we can't check for "0.0" in archive_cmds due to quoting
+	    # problems, so we reset it completely
+	    verstring=
+	    ;;
+	  *)
+	    verstring="0.0"
+	    ;;
+	  esac
+	  if test "$need_version" = no; then
+	    versuffix=
+	  else
+	    versuffix=".0.0"
+	  fi
+	fi
+
+	# Remove version info from name if versioning should be avoided
+	if test "$avoid_version" = yes && test "$need_version" = no; then
+	  major=
+	  versuffix=
+	  verstring=""
+	fi
+
+	# Check to see if the archive will have undefined symbols.
+	if test "$allow_undefined" = yes; then
+	  if test "$allow_undefined_flag" = unsupported; then
+	    $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+	    build_libtool_libs=no
+	    build_old_libs=yes
+	  fi
+	else
+	  # Don't allow undefined symbols.
+	  allow_undefined_flag="$no_undefined_flag"
+	fi
+      fi
+
+      if test "$mode" != relink; then
+	# Remove our outputs, but don't remove object files since they
+	# may have been created when compiling PIC objects.
+	removelist=
+	tempremovelist=`$echo "$output_objdir/*"`
+	for p in $tempremovelist; do
+	  case $p in
+	    *.$objext)
+	       ;;
+	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
+	       if test "X$precious_files_regex" != "X"; then
+	         if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
+	         then
+		   continue
+		 fi
+	       fi
+	       removelist="$removelist $p"
+	       ;;
+	    *) ;;
+	  esac
+	done
+	if test -n "$removelist"; then
+	  $show "${rm}r $removelist"
+	  $run ${rm}r $removelist
+	fi
+      fi
+
+      # Now set the variables for building old libraries.
+      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+	oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+	# Transform .lo files to .o files.
+	oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+      fi
+
+      # Eliminate all temporary directories.
+      for path in $notinst_path; do
+	lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
+	deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
+	dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+      done
+
+      if test -n "$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	temp_xrpath=
+	for libdir in $xrpath; do
+	  temp_xrpath="$temp_xrpath -R$libdir"
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
+	  dependency_libs="$temp_xrpath $dependency_libs"
+	fi
+      fi
+
+      # Make sure dlfiles contains only unique files that won't be dlpreopened
+      old_dlfiles="$dlfiles"
+      dlfiles=
+      for lib in $old_dlfiles; do
+	case " $dlprefiles $dlfiles " in
+	*" $lib "*) ;;
+	*) dlfiles="$dlfiles $lib" ;;
+	esac
+      done
+
+      # Make sure dlprefiles contains only unique files
+      old_dlprefiles="$dlprefiles"
+      dlprefiles=
+      for lib in $old_dlprefiles; do
+	case "$dlprefiles " in
+	*" $lib "*) ;;
+	*) dlprefiles="$dlprefiles $lib" ;;
+	esac
+      done
+
+      if test "$build_libtool_libs" = yes; then
+	if test -n "$rpath"; then
+	  case $host in
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+	    # these systems don't actually have a c library (as such)!
+	    ;;
+	  *-*-rhapsody* | *-*-darwin1.[012])
+	    # Rhapsody C library is in the System framework
+	    deplibs="$deplibs -framework System"
+	    ;;
+	  *-*-netbsd*)
+	    # Don't link with libc until the a.out ld.so is fixed.
+	    ;;
+	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
+	    # Do not include libc due to us having libc/libc_r.
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+ 	  *)
+	    # Add libc to deplibs on all other systems if necessary.
+	    if test "$build_libtool_need_lc" = "yes"; then
+	      deplibs="$deplibs -lc"
+	    fi
+	    ;;
+	  esac
+	fi
+
+	# Transform deplibs into only deplibs that can be linked in shared.
+	name_save=$name
+	libname_save=$libname
+	release_save=$release
+	versuffix_save=$versuffix
+	major_save=$major
+	# I'm not sure if I'm treating the release correctly.  I think
+	# release should show up in the -l (ie -lgmp5) so we don't want to
+	# add it in twice.  Is that correct?
+	release=""
+	versuffix=""
+	major=""
+	newdeplibs=
+	droppeddeps=no
+	case $deplibs_check_method in
+	pass_all)
+	  # Don't check for shared/static.  Everything works.
+	  # This might be a little naive.  We might want to check
+	  # whether the library exists or not.  But this is on
+	  # osf3 & osf4 and I'm not really sure... Just
+	  # implementing what was already the behavior.
+	  newdeplibs=$deplibs
+	  ;;
+	test_compile)
+	  # This code stresses the "libraries are programs" paradigm to its
+	  # limits. Maybe even breaks it.  We compile a program, linking it
+	  # against the deplibs as a proxy for the library.  Then we can check
+	  # whether they linked in statically or dynamically with ldd.
+	  $rm conftest.c
+	  cat > conftest.c <<EOF
+	  int main() { return 0; }
+EOF
+	  $rm conftest
+	  $LTCC -o conftest conftest.c $deplibs
+	  if test "$?" -eq 0 ; then
+	    ldd_output=`ldd conftest`
+	    for i in $deplibs; do
+	      name=`expr $i : '-l\(.*\)'`
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" -ne "0"; then
+		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		  case " $predeps $postdeps " in
+		  *" $i "*)
+		    newdeplibs="$newdeplibs $i"
+		    i=""
+		    ;;
+		  esac
+	        fi
+		if test -n "$i" ; then
+		  libname=`eval \\$echo \"$libname_spec\"`
+		  deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		  set dummy $deplib_matches
+		  deplib_match=$2
+		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		    newdeplibs="$newdeplibs $i"
+		  else
+		    droppeddeps=yes
+		    $echo
+		    $echo "*** Warning: dynamic linker does not accept needed library $i."
+		    $echo "*** I have the capability to make that library automatically link in when"
+		    $echo "*** you link to this library.  But I can only do this if you have a"
+		    $echo "*** shared version of the library, which I believe you do not have"
+		    $echo "*** because a test_compile did reveal that the linker did not use it for"
+		    $echo "*** its dynamic dependency list that programs get resolved with at runtime."
+		  fi
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  else
+	    # Error occurred in the first compile.  Let's try to salvage
+	    # the situation: Compile a separate program for each library.
+	    for i in $deplibs; do
+	      name=`expr $i : '-l\(.*\)'`
+	      # If $name is empty we are operating on a -L argument.
+              if test "$name" != "" && test "$name" != "0"; then
+		$rm conftest
+		$LTCC -o conftest conftest.c $i
+		# Did it work?
+		if test "$?" -eq 0 ; then
+		  ldd_output=`ldd conftest`
+		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		    case " $predeps $postdeps " in
+		    *" $i "*)
+		      newdeplibs="$newdeplibs $i"
+		      i=""
+		      ;;
+		    esac
+		  fi
+		  if test -n "$i" ; then
+		    libname=`eval \\$echo \"$libname_spec\"`
+		    deplib_matches=`eval \\$echo \"$library_names_spec\"`
+		    set dummy $deplib_matches
+		    deplib_match=$2
+		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+		      newdeplibs="$newdeplibs $i"
+		    else
+		      droppeddeps=yes
+		      $echo
+		      $echo "*** Warning: dynamic linker does not accept needed library $i."
+		      $echo "*** I have the capability to make that library automatically link in when"
+		      $echo "*** you link to this library.  But I can only do this if you have a"
+		      $echo "*** shared version of the library, which you do not appear to have"
+		      $echo "*** because a test_compile did reveal that the linker did not use this one"
+		      $echo "*** as a dynamic dependency that programs can get resolved with at runtime."
+		    fi
+		  fi
+		else
+		  droppeddeps=yes
+		  $echo
+		  $echo "*** Warning!  Library $i is needed by this library but I was not able to"
+		  $echo "***  make it link in!  You will probably need to install it or some"
+		  $echo "*** library that it depends on before this library will be fully"
+		  $echo "*** functional.  Installing it before continuing would be even better."
+		fi
+	      else
+		newdeplibs="$newdeplibs $i"
+	      fi
+	    done
+	  fi
+	  ;;
+	file_magic*)
+	  set dummy $deplibs_check_method
+	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name=`expr $a_deplib : '-l\(.*\)'`
+	    # If $name is empty we are operating on a -L argument.
+            if test "$name" != "" && test  "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		      # Follow soft links.
+		      if ls -lLd "$potent_lib" 2>/dev/null \
+			 | grep " -> " >/dev/null; then
+			continue
+		      fi
+		      # The statement above tries to avoid entering an
+		      # endless loop below, in case of cyclic links.
+		      # We might still enter an endless loop, since a link
+		      # loop can be closed while we follow links,
+		      # but so what?
+		      potlib="$potent_lib"
+		      while test -h "$potlib" 2>/dev/null; do
+			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
+			case $potliblink in
+			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
+			*) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+			esac
+		      done
+		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+			 | ${SED} 10q \
+			 | $EGREP "$file_magic_regex" > /dev/null; then
+			newdeplibs="$newdeplibs $a_deplib"
+			a_deplib=""
+			break 2
+		      fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for file magic test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a file magic. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	match_pattern*)
+	  set dummy $deplibs_check_method
+	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+	  for a_deplib in $deplibs; do
+	    name=`expr $a_deplib : '-l\(.*\)'`
+	    # If $name is empty we are operating on a -L argument.
+	    if test -n "$name" && test "$name" != "0"; then
+	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+		case " $predeps $postdeps " in
+		*" $a_deplib "*)
+		  newdeplibs="$newdeplibs $a_deplib"
+		  a_deplib=""
+		  ;;
+		esac
+	      fi
+	      if test -n "$a_deplib" ; then
+		libname=`eval \\$echo \"$libname_spec\"`
+		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
+		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
+		  for potent_lib in $potential_libs; do
+		    potlib="$potent_lib" # see symlink-check above in file_magic test
+		    if eval $echo \"$potent_lib\" 2>/dev/null \
+		        | ${SED} 10q \
+		        | $EGREP "$match_pattern_regex" > /dev/null; then
+		      newdeplibs="$newdeplibs $a_deplib"
+		      a_deplib=""
+		      break 2
+		    fi
+		  done
+		done
+	      fi
+	      if test -n "$a_deplib" ; then
+		droppeddeps=yes
+		$echo
+		$echo "*** Warning: linker path does not have real file for library $a_deplib."
+		$echo "*** I have the capability to make that library automatically link in when"
+		$echo "*** you link to this library.  But I can only do this if you have a"
+		$echo "*** shared version of the library, which you do not appear to have"
+		$echo "*** because I did check the linker path looking for a file starting"
+		if test -z "$potlib" ; then
+		  $echo "*** with $libname but no candidates were found. (...for regex pattern test)"
+		else
+		  $echo "*** with $libname and none of the candidates passed a file format test"
+		  $echo "*** using a regex pattern. Last file checked: $potlib"
+		fi
+	      fi
+	    else
+	      # Add a -L argument.
+	      newdeplibs="$newdeplibs $a_deplib"
+	    fi
+	  done # Gone through all deplibs.
+	  ;;
+	none | unknown | *)
+	  newdeplibs=""
+	  tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+	    -e 's/ -[LR][^ ]*//g'`
+	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+	    for i in $predeps $postdeps ; do
+	      # can't use Xsed below, because $i might contain '/'
+	      tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+	    done
+	  fi
+	  if $echo "X $tmp_deplibs" | $Xsed -e 's/[ 	]//g' \
+	    | grep . >/dev/null; then
+	    $echo
+	    if test "X$deplibs_check_method" = "Xnone"; then
+	      $echo "*** Warning: inter-library dependencies are not supported in this platform."
+	    else
+	      $echo "*** Warning: inter-library dependencies are not known to be supported."
+	    fi
+	    $echo "*** All declared inter-library dependencies are being dropped."
+	    droppeddeps=yes
+	  fi
+	  ;;
+	esac
+	versuffix=$versuffix_save
+	major=$major_save
+	release=$release_save
+	libname=$libname_save
+	name=$name_save
+
+	case $host in
+	*-*-rhapsody* | *-*-darwin1.[012])
+	  # On Rhapsody replace the C library is the System framework
+	  newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	  ;;
+	esac
+
+	if test "$droppeddeps" = yes; then
+	  if test "$module" = yes; then
+	    $echo
+	    $echo "*** Warning: libtool could not satisfy all declared inter-library"
+	    $echo "*** dependencies of module $libname.  Therefore, libtool will create"
+	    $echo "*** a static module, that should work as long as the dlopening"
+	    $echo "*** application is linked with the -dlopen flag."
+	    if test -z "$global_symbol_pipe"; then
+	      $echo
+	      $echo "*** However, this would only work if libtool was able to extract symbol"
+	      $echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
+	      $echo "*** not find such a program.  So, this module is probably useless."
+	      $echo "*** \`nm' from GNU binutils and a full rebuild may help."
+	    fi
+	    if test "$build_old_libs" = no; then
+	      oldlibs="$output_objdir/$libname.$libext"
+	      build_libtool_libs=module
+	      build_old_libs=yes
+	    else
+	      build_libtool_libs=no
+	    fi
+	  else
+	    $echo "*** The inter-library dependencies that have been dropped here will be"
+	    $echo "*** automatically added whenever a program is linked with this library"
+	    $echo "*** or is declared to -dlopen it."
+
+	    if test "$allow_undefined" = no; then
+	      $echo
+	      $echo "*** Since this library must not contain undefined symbols,"
+	      $echo "*** because either the platform does not support them or"
+	      $echo "*** it was explicitly requested with -no-undefined,"
+	      $echo "*** libtool will only create a static version of it."
+	      if test "$build_old_libs" = no; then
+		oldlibs="$output_objdir/$libname.$libext"
+		build_libtool_libs=module
+		build_old_libs=yes
+	      else
+		build_libtool_libs=no
+	      fi
+	    fi
+	  fi
+	fi
+	# Done checking deplibs!
+	deplibs=$newdeplibs
+      fi
+
+      # All the library-specific variables (install_libdir is set above).
+      library_names=
+      old_library=
+      dlname=
+
+      # Test again, we may have decided not to build it any more
+      if test "$build_libtool_libs" = yes; then
+	if test "$hardcode_into_libs" = yes; then
+	  # Hardcode the library paths
+	  hardcode_libdirs=
+	  dep_rpath=
+	  rpath="$finalize_rpath"
+	  test "$mode" != relink && rpath="$compile_rpath$rpath"
+	  for libdir in $rpath; do
+	    if test -n "$hardcode_libdir_flag_spec"; then
+	      if test -n "$hardcode_libdir_separator"; then
+		if test -z "$hardcode_libdirs"; then
+		  hardcode_libdirs="$libdir"
+		else
+		  # Just accumulate the unique libdirs.
+		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		    ;;
+		  *)
+		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		    ;;
+		  esac
+		fi
+	      else
+		eval flag=\"$hardcode_libdir_flag_spec\"
+		dep_rpath="$dep_rpath $flag"
+	      fi
+	    elif test -n "$runpath_var"; then
+	      case "$perm_rpath " in
+	      *" $libdir "*) ;;
+	      *) perm_rpath="$perm_rpath $libdir" ;;
+	      esac
+	    fi
+	  done
+	  # Substitute the hardcoded libdirs into the rpath.
+	  if test -n "$hardcode_libdir_separator" &&
+	     test -n "$hardcode_libdirs"; then
+	    libdir="$hardcode_libdirs"
+	    if test -n "$hardcode_libdir_flag_spec_ld"; then
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+	    else
+	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+	    fi
+	  fi
+	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
+	    # We should set the runpath_var.
+	    rpath=
+	    for dir in $perm_rpath; do
+	      rpath="$rpath$dir:"
+	    done
+	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
+	  fi
+	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
+	fi
+
+	shlibpath="$finalize_shlibpath"
+	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
+	if test -n "$shlibpath"; then
+	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
+	fi
+
+	# Get the real and link names of the library.
+	eval shared_ext=\"$shrext_cmds\"
+	eval library_names=\"$library_names_spec\"
+	set dummy $library_names
+	realname="$2"
+	shift; shift
+
+	if test -n "$soname_spec"; then
+	  eval soname=\"$soname_spec\"
+	else
+	  soname="$realname"
+	fi
+	if test -z "$dlname"; then
+	  dlname=$soname
+	fi
+
+	lib="$output_objdir/$realname"
+	for link
+	do
+	  linknames="$linknames $link"
+	done
+
+	# Use standard objects if they are pic
+	test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+	# Prepare the list of exported symbols
+	if test -z "$export_symbols"; then
+	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    cmds=$export_symbols_cmds
+	    save_ifs="$IFS"; IFS='~'
+	    for cmd in $cmds; do
+	      IFS="$save_ifs"
+	      eval cmd=\"$cmd\"
+	      if len=`expr "X$cmd" : ".*"` &&
+	       test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	        $show "$cmd"
+	        $run eval "$cmd" || exit $?
+	        skipped_export=false
+	      else
+	        # The command line is too long to execute in one step.
+	        $show "using reloadable object file for export list..."
+	        skipped_export=:
+		# Break out early, otherwise skipped_export may be
+		# set to false by a later but shorter cmd.
+		break
+	      fi
+	    done
+	    IFS="$save_ifs"
+	    if test -n "$export_symbols_regex"; then
+	      $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+	      $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+	      $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+	      $run eval '$mv "${export_symbols}T" "$export_symbols"'
+	    fi
+	  fi
+	fi
+
+	if test -n "$export_symbols" && test -n "$include_expsyms"; then
+	  $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+	fi
+
+	tmp_deplibs=
+	inst_prefix_arg=
+	for test_deplib in $deplibs; do
+		case " $convenience " in
+		*" $test_deplib "*) ;;
+		*)
+			if test -n "$inst_prefix_dir" && (echo "$test_deplib" | grep -- "$inst_prefix_dir" >/dev/null); then
+				inst_prefix_arg="$inst_prefix_arg $test_deplib"
+			else
+				tmp_deplibs="$tmp_deplibs $test_deplib"
+			fi
+			;;
+		esac
+	done
+	deplibs="$tmp_deplibs"
+	if test -n "$inst_prefix_arg"; then
+		deplibs="$inst_prefix_arg $deplibs"
+	fi
+
+	if test -n "$convenience"; then
+	  if test -n "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  else
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    func_extract_archives $gentop $convenience
+	    libobjs="$libobjs $func_extract_archives_result"
+	  fi
+	fi
+	
+	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+	  eval flag=\"$thread_safe_flag_spec\"
+	  linker_flags="$linker_flags $flag"
+	fi
+
+	# Make a backup of the uninstalled library when relinking
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $?
+	fi
+
+	# Do each of the archive commands.
+	if test "$module" = yes && test -n "$module_cmds" ; then
+	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	    eval test_cmds=\"$module_expsym_cmds\"
+	    cmds=$module_expsym_cmds
+	  else
+	    eval test_cmds=\"$module_cmds\"
+	    cmds=$module_cmds
+	  fi
+	else
+	if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	  eval test_cmds=\"$archive_expsym_cmds\"
+	  cmds=$archive_expsym_cmds
+	else
+	  eval test_cmds=\"$archive_cmds\"
+	  cmds=$archive_cmds
+	  fi
+	fi
+
+	if test "X$skipped_export" != "X:" &&
+	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  :
+	else
+	  # The command line is too long to link in one step, link piecewise.
+	  $echo "creating reloadable object files..."
+
+	  # Save the value of $output and $libobjs because we want to
+	  # use them later.  If we have whole_archive_flag_spec, we
+	  # want to use save_libobjs as it was before
+	  # whole_archive_flag_spec was expanded, because we can't
+	  # assume the linker understands whole_archive_flag_spec.
+	  # This may have to be revisited, in case too many
+	  # convenience libraries get linked in and end up exceeding
+	  # the spec.
+	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
+	    save_libobjs=$libobjs
+	  fi
+	  save_output=$output
+	  output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+	  # Clear the reloadable object creation command queue and
+	  # initialize k to one.
+	  test_cmds=
+	  concat_cmds=
+	  objlist=
+	  delfiles=
+	  last_robj=
+	  k=1
+	  output=$output_objdir/$output_la-${k}.$objext
+	  # Loop over the list of objects to be linked.
+	  for obj in $save_libobjs
+	  do
+	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+	    if test "X$objlist" = X ||
+	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+		 test "$len" -le "$max_cmd_len"; }; then
+	      objlist="$objlist $obj"
+	    else
+	      # The command $test_cmds is almost too long, add a
+	      # command to the queue.
+	      if test "$k" -eq 1 ; then
+		# The first file doesn't have a previous command to add.
+		eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+	      else
+		# All subsequent reloadable object files will link in
+		# the last one created.
+		eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+	      fi
+	      last_robj=$output_objdir/$output_la-${k}.$objext
+	      k=`expr $k + 1`
+	      output=$output_objdir/$output_la-${k}.$objext
+	      objlist=$obj
+	      len=1
+	    fi
+	  done
+	  # Handle the remaining objects by creating one last
+	  # reloadable object file.  All subsequent reloadable object
+	  # files will link in the last one created.
+	  test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	  eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+	  if ${skipped_export-false}; then
+	    $show "generating symbol list for \`$libname.la'"
+	    export_symbols="$output_objdir/$libname.exp"
+	    $run $rm $export_symbols
+	    libobjs=$output
+	    # Append the command to create the export file.
+	    eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+          fi
+
+	  # Set up a command to remove the reloadable object files
+	  # after they are used.
+	  i=0
+	  while test "$i" -lt "$k"
+	  do
+	    i=`expr $i + 1`
+	    delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+	  done
+
+	  $echo "creating a temporary reloadable object file: $output"
+
+	  # Loop through the commands generated above and execute them.
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $concat_cmds; do
+	    IFS="$save_ifs"
+	    $show "$cmd"
+	    $run eval "$cmd" || exit $?
+	  done
+	  IFS="$save_ifs"
+
+	  libobjs=$output
+	  # Restore the value of output.
+	  output=$save_output
+
+	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
+	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+	  fi
+	  # Expand the library linking commands again to reset the
+	  # value of $libobjs for piecewise linking.
+
+	  # Do each of the archive commands.
+	  if test "$module" = yes && test -n "$module_cmds" ; then
+	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
+	      cmds=$module_expsym_cmds
+	    else
+	      cmds=$module_cmds
+	    fi
+	  else
+	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
+	    cmds=$archive_expsym_cmds
+	  else
+	    cmds=$archive_cmds
+	    fi
+	  fi
+
+	  # Append the command to remove the reloadable object files
+	  # to the just-reset $cmds.
+	  eval cmds=\"\$cmds~\$rm $delfiles\"
+	fi
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || {
+	    lt_exit=$?
+
+	    # Restore the uninstalled library and exit
+	    if test "$mode" = relink; then
+	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+	    fi
+
+	    exit $lt_exit
+	  }
+	done
+	IFS="$save_ifs"
+
+	# Restore the uninstalled library and exit
+	if test "$mode" = relink; then
+	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+
+	  if test -n "$convenience"; then
+	    if test -z "$whole_archive_flag_spec"; then
+	      $show "${rm}r $gentop"
+	      $run ${rm}r "$gentop"
+	    fi
+	  fi
+
+	  exit $EXIT_SUCCESS
+	fi
+
+	# Create links to the real library.
+	for linkname in $linknames; do
+	  if test "$realname" != "$linkname"; then
+	    $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+	    $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $?
+	  fi
+	done
+
+	# If -module or -export-dynamic was specified, set the dlname.
+	if test "$module" = yes || test "$export_dynamic" = yes; then
+	  # On all known operating systems, these are identical.
+	  dlname="$soname"
+	fi
+      fi
+      ;;
+
+    obj)
+      if test -n "$deplibs"; then
+	$echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+      fi
+
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$rpath"; then
+	$echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$xrpath"; then
+	$echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+      fi
+
+      case $output in
+      *.lo)
+	if test -n "$objs$old_deplibs"; then
+	  $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	libobj="$output"
+	obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+	;;
+      *)
+	libobj=
+	obj="$output"
+	;;
+      esac
+
+      # Delete the old objects.
+      $run $rm $obj $libobj
+
+      # Objects from convenience libraries.  This assumes
+      # single-version convenience libraries.  Whenever we create
+      # different ones for PIC/non-PIC, this we'll have to duplicate
+      # the extraction.
+      reload_conv_objs=
+      gentop=
+      # reload_cmds runs $LD directly, so let us get rid of
+      # -Wl from whole_archive_flag_spec
+      wl=
+
+      if test -n "$convenience"; then
+	if test -n "$whole_archive_flag_spec"; then
+	  eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+	else
+	  gentop="$output_objdir/${obj}x"
+	  generated="$generated $gentop"
+
+	  func_extract_archives $gentop $convenience
+	  reload_conv_objs="$reload_objs $func_extract_archives_result"
+	fi
+      fi
+
+      # Create the old-style object.
+      reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+      output="$obj"
+      cmds=$reload_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+
+      # Exit if we aren't doing a library object file.
+      if test -z "$libobj"; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$build_libtool_libs" != yes; then
+	if test -n "$gentop"; then
+	  $show "${rm}r $gentop"
+	  $run ${rm}r $gentop
+	fi
+
+	# Create an invalid libtool object if no PIC, so that we don't
+	# accidentally link it into a program.
+	# $show "echo timestamp > $libobj"
+	# $run eval "echo timestamp > $libobj" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test -n "$pic_flag" || test "$pic_mode" != default; then
+	# Only do commands if we really have different PIC objects.
+	reload_objs="$libobjs $reload_conv_objs"
+	output="$libobj"
+	cmds=$reload_cmds
+	save_ifs="$IFS"; IFS='~'
+	for cmd in $cmds; do
+	  IFS="$save_ifs"
+	  eval cmd=\"$cmd\"
+	  $show "$cmd"
+	  $run eval "$cmd" || exit $?
+	done
+	IFS="$save_ifs"
+      fi
+
+      if test -n "$gentop"; then
+	$show "${rm}r $gentop"
+	$run ${rm}r $gentop
+      fi
+
+      exit $EXIT_SUCCESS
+      ;;
+
+    prog)
+      case $host in
+	*cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+      esac
+      if test -n "$vinfo"; then
+	$echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+      fi
+
+      if test -n "$release"; then
+	$echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+      fi
+
+      if test "$preload" = yes; then
+	if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+	   test "$dlopen_self_static" = unknown; then
+	  $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+	fi
+      fi
+
+      case $host in
+      *-*-rhapsody* | *-*-darwin1.[012])
+	# On Rhapsody replace the C library is the System framework
+	compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+	;;
+      esac
+
+      case $host in
+      *darwin*)
+        # Don't allow lazy linking, it breaks C++ global constructors
+        if test "$tagname" = CXX ; then
+        compile_command="$compile_command ${wl}-bind_at_load"
+        finalize_command="$finalize_command ${wl}-bind_at_load"
+        fi
+        ;;
+      esac
+
+      compile_command="$compile_command $compile_deplibs"
+      finalize_command="$finalize_command $finalize_deplibs"
+
+      if test -n "$rpath$xrpath"; then
+	# If the user specified any rpath flags, then add them.
+	for libdir in $rpath $xrpath; do
+	  # This is the magic to use -rpath.
+	  case "$finalize_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_rpath="$finalize_rpath $libdir" ;;
+	  esac
+	done
+      fi
+
+      # Now hardcode the library paths
+      rpath=
+      hardcode_libdirs=
+      for libdir in $compile_rpath $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) perm_rpath="$perm_rpath $libdir" ;;
+	  esac
+	fi
+	case $host in
+	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  case :$dllsearchpath: in
+	  *":$libdir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$libdir";;
+	  esac
+	  ;;
+	esac
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      compile_rpath="$rpath"
+
+      rpath=
+      hardcode_libdirs=
+      for libdir in $finalize_rpath; do
+	if test -n "$hardcode_libdir_flag_spec"; then
+	  if test -n "$hardcode_libdir_separator"; then
+	    if test -z "$hardcode_libdirs"; then
+	      hardcode_libdirs="$libdir"
+	    else
+	      # Just accumulate the unique libdirs.
+	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
+	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
+		;;
+	      *)
+		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+		;;
+	      esac
+	    fi
+	  else
+	    eval flag=\"$hardcode_libdir_flag_spec\"
+	    rpath="$rpath $flag"
+	  fi
+	elif test -n "$runpath_var"; then
+	  case "$finalize_perm_rpath " in
+	  *" $libdir "*) ;;
+	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
+	  esac
+	fi
+      done
+      # Substitute the hardcoded libdirs into the rpath.
+      if test -n "$hardcode_libdir_separator" &&
+	 test -n "$hardcode_libdirs"; then
+	libdir="$hardcode_libdirs"
+	eval rpath=\" $hardcode_libdir_flag_spec\"
+      fi
+      finalize_rpath="$rpath"
+
+      if test -n "$libobjs" && test "$build_old_libs" = yes; then
+	# Transform all the library objects into standard objects.
+	compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+      fi
+
+      dlsyms=
+      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+	if test -n "$NM" && test -n "$global_symbol_pipe"; then
+	  dlsyms="${outputname}S.c"
+	else
+	  $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+	fi
+      fi
+
+      if test -n "$dlsyms"; then
+	case $dlsyms in
+	"") ;;
+	*.c)
+	  # Discover the nlist of each of the dlfiles.
+	  nlist="$output_objdir/${outputname}.nm"
+
+	  $show "$rm $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Parse the name list into a source file.
+	  $show "creating $output_objdir/$dlsyms"
+
+	  test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+	  if test "$dlself" = yes; then
+	    $show "generating symbol list for \`$output'"
+
+	    test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+	    # Add our own program objects to the symbol list.
+	    progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+	    for arg in $progfiles; do
+	      $show "extracting global C symbols from \`$arg'"
+	      $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	    done
+
+	    if test -n "$exclude_expsyms"; then
+	      $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    if test -n "$export_symbols_regex"; then
+	      $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+	      $run eval '$mv "$nlist"T "$nlist"'
+	    fi
+
+	    # Prepare the list of exported symbols
+	    if test -z "$export_symbols"; then
+	      export_symbols="$output_objdir/$outputname.exp"
+	      $run $rm $export_symbols
+	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	    else
+	      $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+	      $run eval 'mv "$nlist"T "$nlist"'
+	    fi
+	  fi
+
+	  for arg in $dlprefiles; do
+	    $show "extracting global C symbols from \`$arg'"
+	    name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+	    $run eval '$echo ": $name " >> "$nlist"'
+	    $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+	  done
+
+	  if test -z "$run"; then
+	    # Make sure we have at least an empty file.
+	    test -f "$nlist" || : > "$nlist"
+
+	    if test -n "$exclude_expsyms"; then
+	      $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
+	      $mv "$nlist"T "$nlist"
+	    fi
+
+	    # Try sorting and uniquifying the output.
+	    if grep -v "^: " < "$nlist" |
+		if sort -k 3 </dev/null >/dev/null 2>&1; then
+		  sort -k 3
+		else
+		  sort +2
+		fi |
+		uniq > "$nlist"S; then
+	      :
+	    else
+	      grep -v "^: " < "$nlist" > "$nlist"S
+	    fi
+
+	    if test -f "$nlist"S; then
+	      eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"'
+	    else
+	      $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+	    fi
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+	    case $host in
+	    *cygwin* | *mingw* )
+	  $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+   runtime relocations are performed -- see ld's documentation
+   on pseudo-relocs */
+struct {
+"
+	      ;;
+	    * )
+	  $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+	      ;;
+	    esac
+
+
+	  $echo >> "$output_objdir/$dlsyms" "\
+  const char *name;
+  lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+	    $echo >> "$output_objdir/$dlsyms" "\
+  {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+  return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+	  fi
+
+	  pic_flag_for_symtable=
+	  case $host in
+	  # compiling the symbol table file with pic_flag works around
+	  # a FreeBSD bug that causes programs to crash when -lm is
+	  # linked before any other PIC object.  But we must not use
+	  # pic_flag when linking with -static.  The problem exists in
+	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
+	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+	    esac;;
+	  *-*-hpux*)
+	    case "$compile_command " in
+	    *" -static "*) ;;
+	    *) pic_flag_for_symtable=" $pic_flag";;
+	    esac
+	  esac
+
+	  # Now compile the dynamic symbol file.
+	  $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+	  # Clean up the generated files.
+	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+	  # Transform the symbol file into the correct name.
+	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+	  ;;
+	*)
+	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      else
+	# We keep going just in case the user didn't refer to
+	# lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
+	# really was required.
+
+	# Nullify the symbol file.
+	compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+	finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+      fi
+
+      if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+	# Replace the output file specification.
+	compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	link_command="$compile_command$compile_rpath"
+
+	# We have no uninstalled library dependencies, so finalize right now.
+	$show "$link_command"
+	$run eval "$link_command"
+	status=$?
+
+	# Delete the generated files.
+	if test -n "$dlsyms"; then
+	  $show "$rm $output_objdir/${outputname}S.${objext}"
+	  $run $rm "$output_objdir/${outputname}S.${objext}"
+	fi
+
+	exit $status
+      fi
+
+      if test -n "$shlibpath_var"; then
+	# We should set the shlibpath_var
+	rpath=
+	for dir in $temp_rpath; do
+	  case $dir in
+	  [\\/]* | [A-Za-z]:[\\/]*)
+	    # Absolute path.
+	    rpath="$rpath$dir:"
+	    ;;
+	  *)
+	    # Relative path: add a thisdir entry.
+	    rpath="$rpath\$thisdir/$dir:"
+	    ;;
+	  esac
+	done
+	temp_rpath="$rpath"
+      fi
+
+      if test -n "$compile_shlibpath$finalize_shlibpath"; then
+	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
+      fi
+      if test -n "$finalize_shlibpath"; then
+	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
+      fi
+
+      compile_var=
+      finalize_var=
+      if test -n "$runpath_var"; then
+	if test -n "$perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+	if test -n "$finalize_perm_rpath"; then
+	  # We should set the runpath_var.
+	  rpath=
+	  for dir in $finalize_perm_rpath; do
+	    rpath="$rpath$dir:"
+	  done
+	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
+	fi
+      fi
+
+      if test "$no_install" = yes; then
+	# We don't need to create a wrapper script.
+	link_command="$compile_var$compile_command$compile_rpath"
+	# Replace the output file specification.
+	link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+	# Delete the old output file.
+	$run $rm $output
+	# Link the executable and exit
+	$show "$link_command"
+	$run eval "$link_command" || exit $?
+	exit $EXIT_SUCCESS
+      fi
+
+      if test "$hardcode_action" = relink; then
+	# Fast installation is not supported
+	link_command="$compile_var$compile_command$compile_rpath"
+	relink_command="$finalize_var$finalize_command$finalize_rpath"
+
+	$echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+	$echo "$modename: \`$output' will be relinked during installation" 1>&2
+      else
+	if test "$fast_install" != no; then
+	  link_command="$finalize_var$compile_command$finalize_rpath"
+	  if test "$fast_install" = yes; then
+	    relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+	  else
+	    # fast_install is set to needless
+	    relink_command=
+	  fi
+	else
+	  link_command="$compile_var$compile_command$compile_rpath"
+	  relink_command="$finalize_var$finalize_command$finalize_rpath"
+	fi
+      fi
+
+      # Replace the output file specification.
+      link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+      # Delete the old output files.
+      $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+      $show "$link_command"
+      $run eval "$link_command" || exit $?
+
+      # Now create the wrapper script.
+      $show "creating $output"
+
+      # Quote the relink command for shipping.
+      if test -n "$relink_command"; then
+	# Preserve any variables that may affect compiler behavior
+	for var in $variables_saved_for_relink; do
+	  if eval test -z \"\${$var+set}\"; then
+	    relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	  elif eval var_value=\$$var; test -z "$var_value"; then
+	    relink_command="$var=; export $var; $relink_command"
+	  else
+	    var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	    relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	  fi
+	done
+	relink_command="(cd `pwd`; $relink_command)"
+	relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Quote $echo for shipping.
+      if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+	case $progpath in
+	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+	esac
+	qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+      else
+	qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+      fi
+
+      # Only actually do things if our run command is non-null.
+      if test -z "$run"; then
+	# win32 will think the script is a binary if it has
+	# a .exe suffix, so we strip it off here.
+	case $output in
+	  *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+	esac
+	# test for cygwin because mv fails w/o .exe extensions
+	case $host in
+	  *cygwin*)
+	    exeext=.exe
+	    outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+	  *) exeext= ;;
+	esac
+	case $host in
+	  *cygwin* | *mingw* )
+	    cwrappersource=`$echo ${objdir}/lt-${outputname}.c`
+	    cwrapper=`$echo ${output}.exe`
+	    $rm $cwrappersource $cwrapper
+	    trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+
+	    cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+   Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+   The $output program cannot be directly executed until all the libtool
+   libraries that it depends on are installed.
+
+   This wrapper executable should never be moved out of the build directory.
+   If it is, it will not operate correctly.
+
+   Currently, it simply execs the wrapper *script* "/bin/sh $output",
+   but could eventually absorb all of the scripts functionality and
+   exec $objdir/$outputname directly.
+*/
+EOF
+	    cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#ifndef DIR_SEPARATOR
+#define DIR_SEPARATOR '/'
+#endif
+
+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
+  defined (__OS2__)
+#define HAVE_DOS_BASED_FILE_SYSTEM
+#ifndef DIR_SEPARATOR_2
+#define DIR_SEPARATOR_2 '\\'
+#endif
+#endif
+
+#ifndef DIR_SEPARATOR_2
+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+#else /* DIR_SEPARATOR_2 */
+# define IS_DIR_SEPARATOR(ch) \
+        (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+#endif /* DIR_SEPARATOR_2 */
+
+#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+  if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+char * basename (const char *name);
+char * fnqualify(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+  char **newargz;
+  int i;
+
+  program_name = (char *) xstrdup ((char *) basename (argv[0]));
+  newargz = XMALLOC(char *, argc+2);
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  newargz[0] = "$SHELL";
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+  newargz[1] = fnqualify(argv[0]);
+  /* we know the script has the same name, without the .exe */
+  /* so make sure newargz[1] doesn't end in .exe */
+  strendzap(newargz[1],".exe");
+  for (i = 1; i < argc; i++)
+    newargz[i+1] = xstrdup(argv[i]);
+  newargz[argc+1] = NULL;
+EOF
+
+	    cat >> $cwrappersource <<EOF
+  execv("$SHELL",newargz);
+EOF
+
+	    cat >> $cwrappersource <<"EOF"
+  return 127;
+}
+
+void *
+xmalloc (size_t num)
+{
+  void * p = (void *) malloc (num);
+  if (!p)
+    lt_fatal ("Memory exhausted");
+
+  return p;
+}
+
+char *
+xstrdup (const char *string)
+{
+  return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL
+;
+}
+
+char *
+basename (const char *name)
+{
+  const char *base;
+
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  /* Skip over the disk name in MSDOS pathnames. */
+  if (isalpha (name[0]) && name[1] == ':')
+    name += 2;
+#endif
+
+  for (base = name; *name; name++)
+    if (IS_DIR_SEPARATOR (*name))
+      base = name + 1;
+  return (char *) base;
+}
+
+char *
+fnqualify(const char *path)
+{
+  size_t size;
+  char *p;
+  char tmp[LT_PATHMAX + 1];
+
+  assert(path != NULL);
+
+  /* Is it qualified already? */
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  if (isalpha (path[0]) && path[1] == ':')
+    return xstrdup (path);
+#endif
+  if (IS_DIR_SEPARATOR (path[0]))
+    return xstrdup (path);
+
+  /* prepend the current directory */
+  /* doesn't handle '~' */
+  if (getcwd (tmp, LT_PATHMAX) == NULL)
+    lt_fatal ("getcwd failed");
+  size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
+  p = XMALLOC(char, size);
+  sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
+  return p;
+}
+
+char *
+strendzap(char *str, const char *pat)
+{
+  size_t len, patlen;
+
+  assert(str != NULL);
+  assert(pat != NULL);
+
+  len = strlen(str);
+  patlen = strlen(pat);
+
+  if (patlen <= len)
+  {
+    str += len - patlen;
+    if (strcmp(str, pat) == 0)
+      *str = '\0';
+  }
+  return str;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+          const char * message, va_list ap)
+{
+  fprintf (stderr, "%s: %s: ", program_name, mode);
+  vfprintf (stderr, message, ap);
+  fprintf (stderr, ".\n");
+
+  if (exit_status >= 0)
+    exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+  va_list ap;
+  va_start (ap, message);
+  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+  va_end (ap);
+}
+EOF
+	  # we should really use a build-platform specific compiler
+	  # here, but OTOH, the wrappers (shell script and this C one)
+	  # are only useful if you want to execute the "real" binary.
+	  # Since the "real" binary is built for $host, then this
+	  # wrapper might as well be built for $host, too.
+	  $run $LTCC -s -o $cwrapper $cwrappersource
+	  ;;
+	esac
+	$rm $output
+	trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+	$echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# The $output program cannot be directly executed until all the libtool
+# libraries that it depends on are installed.
+#
+# This wrapper script should never be moved out of the build directory.
+# If it is, it will not operate correctly.
+
+# Sed substitution that helps us do robust quoting.  It backslashifies
+# metacharacters that are still active within double-quoted strings.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# The HP-UX ksh and POSIX shell print the target directory to stdout
+# if CDPATH is set.
+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+relink_command=\"$relink_command\"
+
+# This environment variable determines our operation mode.
+if test \"\$libtool_install_magic\" = \"$magic\"; then
+  # install mode needs the following variable:
+  notinst_deplibs='$notinst_deplibs'
+else
+  # When we are sourced in execute mode, \$file and \$echo are already set.
+  if test \"\$libtool_execute_magic\" != \"$magic\"; then
+    echo=\"$qecho\"
+    file=\"\$0\"
+    # Make sure echo works.
+    if test \"X\$1\" = X--no-reexec; then
+      # Discard the --no-reexec flag, and continue.
+      shift
+    elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+      # Yippee, \$echo works!
+      :
+    else
+      # Restart under the correct shell, and then maybe \$echo will work.
+      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+    fi
+  fi\
+"
+	$echo >> $output "\
+
+  # Find the directory that this script lives in.
+  thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
+  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
+
+  # Follow symbolic links until we get to the real thisdir.
+  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
+  while test -n \"\$file\"; do
+    destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
+
+    # If there was a directory component, then change thisdir.
+    if test \"x\$destdir\" != \"x\$file\"; then
+      case \"\$destdir\" in
+      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
+      *) thisdir=\"\$thisdir/\$destdir\" ;;
+      esac
+    fi
+
+    file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+  done
+
+  # Try to get the absolute directory name.
+  absdir=\`cd \"\$thisdir\" && pwd\`
+  test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+	if test "$fast_install" = yes; then
+	  $echo >> $output "\
+  program=lt-'$outputname'$exeext
+  progdir=\"\$thisdir/$objdir\"
+
+  if test ! -f \"\$progdir/\$program\" || \\
+     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
+       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
+
+    file=\"\$\$-\$program\"
+
+    if test ! -d \"\$progdir\"; then
+      $mkdir \"\$progdir\"
+    else
+      $rm \"\$progdir/\$file\"
+    fi"
+
+	  $echo >> $output "\
+
+    # relink executable if necessary
+    if test -n \"\$relink_command\"; then
+      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
+      else
+	$echo \"\$relink_command_output\" >&2
+	$rm \"\$progdir/\$file\"
+	exit $EXIT_FAILURE
+      fi
+    fi
+
+    $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+    { $rm \"\$progdir/\$program\";
+      $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+    $rm \"\$progdir/\$file\"
+  fi"
+	else
+	  $echo >> $output "\
+  program='$outputname'
+  progdir=\"\$thisdir/$objdir\"
+"
+	fi
+
+	$echo >> $output "\
+
+  if test -f \"\$progdir/\$program\"; then"
+
+	# Export our shlibpath_var if we have one.
+	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+	  $echo >> $output "\
+    # Add our own library path to $shlibpath_var
+    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
+
+    # Some systems cannot cope with colon-terminated $shlibpath_var
+    # The second colon is a workaround for a bug in BeOS R4 sed
+    $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+    export $shlibpath_var
+"
+	fi
+
+	# fixup the dll searchpath if we need to.
+	if test -n "$dllsearchpath"; then
+	  $echo >> $output "\
+    # Add the dll search path components to the executable PATH
+    PATH=$dllsearchpath:\$PATH
+"
+	fi
+
+	$echo >> $output "\
+    if test \"\$libtool_execute_magic\" != \"$magic\"; then
+      # Run the actual program with our arguments.
+"
+	case $host in
+	# Backslashes separate directories on plain windows
+	*-*-mingw | *-*-os2*)
+	  $echo >> $output "\
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+	  ;;
+
+	*)
+	  $echo >> $output "\
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+	  ;;
+	esac
+	$echo >> $output "\
+      \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+      exit $EXIT_FAILURE
+    fi
+  else
+    # The program doesn't exist.
+    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
+    \$echo \"This script is just a wrapper for \$program.\" 1>&2
+    $echo \"See the $PACKAGE documentation for more information.\" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi\
+"
+	chmod +x $output
+      fi
+      exit $EXIT_SUCCESS
+      ;;
+    esac
+
+    # See if we need to build an old-fashioned archive.
+    for oldlib in $oldlibs; do
+
+      if test "$build_libtool_libs" = convenience; then
+	oldobjs="$libobjs_save"
+	addlibs="$convenience"
+	build_libtool_libs=no
+      else
+	if test "$build_libtool_libs" = module; then
+	  oldobjs="$libobjs_save"
+	  build_libtool_libs=no
+	else
+	  oldobjs="$old_deplibs $non_pic_objects"
+	fi
+	addlibs="$old_convenience"
+      fi
+
+      if test -n "$addlibs"; then
+	gentop="$output_objdir/${outputname}x"
+	generated="$generated $gentop"
+
+	func_extract_archives $gentop $addlibs
+	oldobjs="$oldobjs $func_extract_archives_result"
+      fi
+
+      # Do each command in the archive commands.
+      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
+       cmds=$old_archive_from_new_cmds
+      else
+	# POSIX demands no paths to be encoded in archives.  We have
+	# to avoid creating archives with duplicate basenames if we
+	# might have to extract them afterwards, e.g., when creating a
+	# static archive out of a convenience library, or when linking
+	# the entirety of a libtool archive into another (currently
+	# not supported by libtool).
+	if (for obj in $oldobjs
+	    do
+	      $echo "X$obj" | $Xsed -e 's%^.*/%%'
+	    done | sort | sort -uc >/dev/null 2>&1); then
+	  :
+	else
+	  $echo "copying selected object files to avoid basename conflicts..."
+
+	  if test -z "$gentop"; then
+	    gentop="$output_objdir/${outputname}x"
+	    generated="$generated $gentop"
+
+	    $show "${rm}r $gentop"
+	    $run ${rm}r "$gentop"
+	    $show "$mkdir $gentop"
+	    $run $mkdir "$gentop"
+	    status=$?
+	    if test "$status" -ne 0 && test ! -d "$gentop"; then
+	      exit $status
+	    fi
+	  fi
+
+	  save_oldobjs=$oldobjs
+	  oldobjs=
+	  counter=1
+	  for obj in $save_oldobjs
+	  do
+	    objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+	    case " $oldobjs " in
+	    " ") oldobjs=$obj ;;
+	    *[\ /]"$objbase "*)
+	      while :; do
+		# Make sure we don't pick an alternate name that also
+		# overlaps.
+		newobj=lt$counter-$objbase
+		counter=`expr $counter + 1`
+		case " $oldobjs " in
+		*[\ /]"$newobj "*) ;;
+		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
+		esac
+	      done
+	      $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+	      $run ln "$obj" "$gentop/$newobj" ||
+	      $run cp "$obj" "$gentop/$newobj"
+	      oldobjs="$oldobjs $gentop/$newobj"
+	      ;;
+	    *) oldobjs="$oldobjs $obj" ;;
+	    esac
+	  done
+	fi
+
+	eval cmds=\"$old_archive_cmds\"
+
+	if len=`expr "X$cmds" : ".*"` &&
+	     test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+	  cmds=$old_archive_cmds
+	else
+	  # the command line is too long to link in one step, link in parts
+	  $echo "using piecewise archive linking..."
+	  save_RANLIB=$RANLIB
+	  RANLIB=:
+	  objlist=
+	  concat_cmds=
+	  save_oldobjs=$oldobjs
+
+	  # Is there a better way of finding the last object in the list?
+	  for obj in $save_oldobjs
+	  do
+	    last_oldobj=$obj
+	  done
+	  for obj in $save_oldobjs
+	  do
+	    oldobjs="$objlist $obj"
+	    objlist="$objlist $obj"
+	    eval test_cmds=\"$old_archive_cmds\"
+	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+	       test "$len" -le "$max_cmd_len"; then
+	      :
+	    else
+	      # the above command should be used before it gets too long
+	      oldobjs=$objlist
+	      if test "$obj" = "$last_oldobj" ; then
+	        RANLIB=$save_RANLIB
+	      fi
+	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
+	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
+	      objlist=
+	    fi
+	  done
+	  RANLIB=$save_RANLIB
+	  oldobjs=$objlist
+	  if test "X$oldobjs" = "X" ; then
+	    eval cmds=\"\$concat_cmds\"
+	  else
+	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
+	  fi
+	fi
+      fi
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+        eval cmd=\"$cmd\"
+	IFS="$save_ifs"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$generated"; then
+      $show "${rm}r$generated"
+      $run ${rm}r$generated
+    fi
+
+    # Now create the libtool archive.
+    case $output in
+    *.la)
+      old_library=
+      test "$build_old_libs" = yes && old_library="$libname.$libext"
+      $show "creating $output"
+
+      # Preserve any variables that may affect compiler behavior
+      for var in $variables_saved_for_relink; do
+	if eval test -z \"\${$var+set}\"; then
+	  relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command"
+	elif eval var_value=\$$var; test -z "$var_value"; then
+	  relink_command="$var=; export $var; $relink_command"
+	else
+	  var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+	  relink_command="$var=\"$var_value\"; export $var; $relink_command"
+	fi
+      done
+      # Quote the link command for shipping.
+      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+      relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+      if test "$hardcode_automatic" = yes ; then
+	relink_command=
+      fi
+
+
+      # Only create the output if not a dry run.
+      if test -z "$run"; then
+	for installed in no yes; do
+	  if test "$installed" = yes; then
+	    if test -z "$install_libdir"; then
+	      break
+	    fi
+	    output="$output_objdir/$outputname"i
+	    # Replace all uninstalled libtool libraries with the installed ones
+	    newdependency_libs=
+	    for deplib in $dependency_libs; do
+	      case $deplib in
+	      *.la)
+		name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+		if test -z "$libdir"; then
+		  $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+		  exit $EXIT_FAILURE
+		fi
+		newdependency_libs="$newdependency_libs $libdir/$name"
+		;;
+	      *) newdependency_libs="$newdependency_libs $deplib" ;;
+	      esac
+	    done
+	    dependency_libs="$newdependency_libs"
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlfiles="$newdlfiles $libdir/$name"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+	      eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+	      if test -z "$libdir"; then
+		$echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+		exit $EXIT_FAILURE
+	      fi
+	      newdlprefiles="$newdlprefiles $libdir/$name"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  else
+	    newdlfiles=
+	    for lib in $dlfiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlfiles="$newdlfiles $abs"
+	    done
+	    dlfiles="$newdlfiles"
+	    newdlprefiles=
+	    for lib in $dlprefiles; do
+	      case $lib in
+		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+		*) abs=`pwd`"/$lib" ;;
+	      esac
+	      newdlprefiles="$newdlprefiles $abs"
+	    done
+	    dlprefiles="$newdlprefiles"
+	  fi
+	  $rm $output
+	  # place dlname in correct position for cygwin
+	  tdlname=$dlname
+	  case $host,$output,$installed,$module,$dlname in
+	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+	  esac
+	  $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# The name that we can dlopen(3).
+dlname='$tdlname'
+
+# Names of this library.
+library_names='$library_names'
+
+# The name of the static archive.
+old_library='$old_library'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_libs'
+
+# Version information for $libname.
+current=$current
+age=$age
+revision=$revision
+
+# Is this an already installed library?
+installed=$installed
+
+# Should we warn about portability when linking against -modules?
+shouldnotlink=$module
+
+# Files to dlopen/dlpreopen
+dlopen='$dlfiles'
+dlpreopen='$dlprefiles'
+
+# Directory that this library needs to be installed in:
+libdir='$install_libdir'"
+	  if test "$installed" = no && test "$need_relink" = yes; then
+	    $echo >> $output "\
+relink_command=\"$relink_command\""
+	  fi
+	done
+      fi
+
+      # Do a symbolic link so that the libtool archive can be found in
+      # LD_LIBRARY_PATH before the program is installed.
+      $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+      $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+      ;;
+    esac
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool install mode
+  install)
+    modename="$modename: install"
+
+    # There may be an optional sh(1) argument at the beginning of
+    # install_prog (especially on Windows NT).
+    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
+       # Allow the use of GNU shtool's install command.
+       $echo "X$nonopt" | grep shtool > /dev/null; then
+      # Aesthetically quote it.
+      arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$arg "
+      arg="$1"
+      shift
+    else
+      install_prog=
+      arg=$nonopt
+    fi
+
+    # The real first argument should be the name of the installation program.
+    # Aesthetically quote it.
+    arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+    case $arg in
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+      arg="\"$arg\""
+      ;;
+    esac
+    install_prog="$install_prog$arg"
+
+    # We need to accept at least all the BSD install flags.
+    dest=
+    files=
+    opts=
+    prev=
+    install_type=
+    isdir=no
+    stripme=
+    for arg
+    do
+      if test -n "$dest"; then
+	files="$files $dest"
+	dest=$arg
+	continue
+      fi
+
+      case $arg in
+      -d) isdir=yes ;;
+      -f) 
+      	case " $install_prog " in
+	*[\\\ /]cp\ *) ;;
+	*) prev=$arg ;;
+	esac
+	;;
+      -g | -m | -o) prev=$arg ;;
+      -s)
+	stripme=" -s"
+	continue
+	;;
+      -*)
+	;;
+      *)
+	# If the previous option needed an argument, then skip it.
+	if test -n "$prev"; then
+	  prev=
+	else
+	  dest=$arg
+	  continue
+	fi
+	;;
+      esac
+
+      # Aesthetically quote the argument.
+      arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+      case $arg in
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
+	arg="\"$arg\""
+	;;
+      esac
+      install_prog="$install_prog $arg"
+    done
+
+    if test -z "$install_prog"; then
+      $echo "$modename: you must specify an install program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -n "$prev"; then
+      $echo "$modename: the \`$prev' option requires an argument" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    if test -z "$files"; then
+      if test -z "$dest"; then
+	$echo "$modename: no file or destination specified" 1>&2
+      else
+	$echo "$modename: you must specify a destination" 1>&2
+      fi
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    # Strip any trailing slash from the destination.
+    dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+    # Check to see that the destination is a directory.
+    test -d "$dest" && isdir=yes
+    if test "$isdir" = yes; then
+      destdir="$dest"
+      destname=
+    else
+      destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+      test "X$destdir" = "X$dest" && destdir=.
+      destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+      # Not a directory, so check to see that there is only one file specified.
+      set dummy $files
+      if test "$#" -gt 2; then
+	$echo "$modename: \`$dest' is not a directory" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+    fi
+    case $destdir in
+    [\\/]* | [A-Za-z]:[\\/]*) ;;
+    *)
+      for file in $files; do
+	case $file in
+	*.lo) ;;
+	*)
+	  $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+      done
+      ;;
+    esac
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    staticlibs=
+    future_libdirs=
+    current_libdirs=
+    for file in $files; do
+
+      # Do each installation.
+      case $file in
+      *.$libext)
+	# Do the static libraries later.
+	staticlibs="$staticlibs $file"
+	;;
+
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	library_names=
+	old_library=
+	relink_command=
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Add the libdir to current_libdirs if it is the destination.
+	if test "X$destdir" = "X$libdir"; then
+	  case "$current_libdirs " in
+	  *" $libdir "*) ;;
+	  *) current_libdirs="$current_libdirs $libdir" ;;
+	  esac
+	else
+	  # Note the libdir as a future libdir.
+	  case "$future_libdirs " in
+	  *" $libdir "*) ;;
+	  *) future_libdirs="$future_libdirs $libdir" ;;
+	  esac
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+	test "X$dir" = "X$file/" && dir=
+	dir="$dir$objdir"
+
+	if test -n "$relink_command"; then
+	  # Determine the prefix the user has applied to our future dir.
+	  inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"`
+
+	  # Don't allow the user to place us outside of our expected
+	  # location b/c this prevents finding dependent libraries that
+	  # are installed to the same prefix.
+	  # At present, this check doesn't affect windows .dll's that
+	  # are installed into $libdir/../bin (currently, that works fine)
+	  # but it's something to keep an eye on.
+	  if test "$inst_prefix_dir" = "$destdir"; then
+	    $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  if test -n "$inst_prefix_dir"; then
+	    # Stick the inst_prefix_dir data into the link command.
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+	  else
+	    relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+	  fi
+
+	  $echo "$modename: warning: relinking \`$file'" 1>&2
+	  $show "$relink_command"
+	  if $run eval "$relink_command"; then :
+	  else
+	    $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+	fi
+
+	# See the names of the shared library.
+	set dummy $library_names
+	if test -n "$2"; then
+	  realname="$2"
+	  shift
+	  shift
+
+	  srcname="$realname"
+	  test -n "$relink_command" && srcname="$realname"T
+
+	  # Install the shared library and build the symlinks.
+	  $show "$install_prog $dir/$srcname $destdir/$realname"
+	  $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+	  if test -n "$stripme" && test -n "$striplib"; then
+	    $show "$striplib $destdir/$realname"
+	    $run eval "$striplib $destdir/$realname" || exit $?
+	  fi
+
+	  if test "$#" -gt 0; then
+	    # Delete the old symlinks, and create new ones.
+	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
+	    # so we also need to try rm && ln -s.
+	    for linkname
+	    do
+	      if test "$linkname" != "$realname"; then
+                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+	      fi
+	    done
+	  fi
+
+	  # Do each command in the postinstall commands.
+	  lib="$destdir/$realname"
+	  cmds=$postinstall_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || {
+	      lt_exit=$?
+
+	      # Restore the uninstalled library and exit
+	      if test "$mode" = relink; then
+		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+	      fi
+
+	      exit $lt_exit
+	    }
+	  done
+	  IFS="$save_ifs"
+	fi
+
+	# Install the pseudo-library for information purposes.
+	name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	instname="$dir/$name"i
+	$show "$install_prog $instname $destdir/$name"
+	$run eval "$install_prog $instname $destdir/$name" || exit $?
+
+	# Maybe install the static library, too.
+	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
+	;;
+
+      *.lo)
+	# Install (i.e. copy) a libtool object.
+
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# Deduce the name of the destination old-style object file.
+	case $destfile in
+	*.lo)
+	  staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+	  ;;
+	*.$objext)
+	  staticdest="$destfile"
+	  destfile=
+	  ;;
+	*)
+	  $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	  ;;
+	esac
+
+	# Install the libtool object if requested.
+	if test -n "$destfile"; then
+	  $show "$install_prog $file $destfile"
+	  $run eval "$install_prog $file $destfile" || exit $?
+	fi
+
+	# Install the old object if enabled.
+	if test "$build_old_libs" = yes; then
+	  # Deduce the name of the old-style object file.
+	  staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+	  $show "$install_prog $staticobj $staticdest"
+	  $run eval "$install_prog \$staticobj \$staticdest" || exit $?
+	fi
+	exit $EXIT_SUCCESS
+	;;
+
+      *)
+	# Figure out destination file name, if it wasn't already specified.
+	if test -n "$destname"; then
+	  destfile="$destdir/$destname"
+	else
+	  destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+	  destfile="$destdir/$destfile"
+	fi
+
+	# If the file is missing, and there is a .exe on the end, strip it
+	# because it is most likely a libtool script we actually want to
+	# install
+	stripped_ext=""
+	case $file in
+	  *.exe)
+	    if test ! -f "$file"; then
+	      file=`$echo $file|${SED} 's,.exe$,,'`
+	      stripped_ext=".exe"
+	    fi
+	    ;;
+	esac
+
+	# Do a test to see if this is really a libtool program.
+	case $host in
+	*cygwin*|*mingw*)
+	    wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+	    ;;
+	*)
+	    wrapper=$file
+	    ;;
+	esac
+	if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+	  notinst_deplibs=
+	  relink_command=
+
+	  # Note that it is not necessary on cygwin/mingw to append a dot to
+	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
+	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
+	  # `FILE.' does not work on cygwin managed mounts.
+	  #
+	  # If there is no directory component, then add one.
+	  case $wrapper in
+	  */* | *\\*) . ${wrapper} ;;
+	  *) . ./${wrapper} ;;
+	  esac
+
+	  # Check the variables that should have been set.
+	  if test -z "$notinst_deplibs"; then
+	    $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+	    exit $EXIT_FAILURE
+	  fi
+
+	  finalize=yes
+	  for lib in $notinst_deplibs; do
+	    # Check to see that each library is installed.
+	    libdir=
+	    if test -f "$lib"; then
+	      # If there is no directory component, then add one.
+	      case $lib in
+	      */* | *\\*) . $lib ;;
+	      *) . ./$lib ;;
+	      esac
+	    fi
+	    libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+	    if test -n "$libdir" && test ! -f "$libfile"; then
+	      $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+	      finalize=no
+	    fi
+	  done
+
+	  relink_command=
+	  # Note that it is not necessary on cygwin/mingw to append a dot to
+	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
+	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
+	  # `FILE.' does not work on cygwin managed mounts.
+	  #
+	  # If there is no directory component, then add one.
+	  case $wrapper in
+	  */* | *\\*) . ${wrapper} ;;
+	  *) . ./${wrapper} ;;
+	  esac
+
+	  outputname=
+	  if test "$fast_install" = no && test -n "$relink_command"; then
+	    if test "$finalize" = yes && test -z "$run"; then
+	      tmpdir="/tmp"
+	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
+	      tmpdir="$tmpdir/libtool-$$"
+	      save_umask=`umask`
+	      umask 0077
+	      if $mkdir "$tmpdir"; then
+	        umask $save_umask
+	      else
+	        umask $save_umask
+		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
+		continue
+	      fi
+	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+	      outputname="$tmpdir/$file"
+	      # Replace the output file specification.
+	      relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+
+	      $show "$relink_command"
+	      if $run eval "$relink_command"; then :
+	      else
+		$echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+		${rm}r "$tmpdir"
+		continue
+	      fi
+	      file="$outputname"
+	    else
+	      $echo "$modename: warning: cannot relink \`$file'" 1>&2
+	    fi
+	  else
+	    # Install the binary that we compiled earlier.
+	    file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
+	  fi
+	fi
+
+	# remove .exe since cygwin /usr/bin/install will append another
+	# one anyway 
+	case $install_prog,$host in
+	*/usr/bin/install*,*cygwin*)
+	  case $file:$destfile in
+	  *.exe:*.exe)
+	    # this is ok
+	    ;;
+	  *.exe:*)
+	    destfile=$destfile.exe
+	    ;;
+	  *:*.exe)
+	    destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+	    ;;
+	  esac
+	  ;;
+	esac
+	$show "$install_prog$stripme $file $destfile"
+	$run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+	test -n "$outputname" && ${rm}r "$tmpdir"
+	;;
+      esac
+    done
+
+    for file in $staticlibs; do
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+      # Set up the ranlib parameters.
+      oldlib="$destdir/$name"
+
+      $show "$install_prog $file $oldlib"
+      $run eval "$install_prog \$file \$oldlib" || exit $?
+
+      if test -n "$stripme" && test -n "$old_striplib"; then
+	$show "$old_striplib $oldlib"
+	$run eval "$old_striplib $oldlib" || exit $?
+      fi
+
+      # Do each command in the postinstall commands.
+      cmds=$old_postinstall_cmds
+      save_ifs="$IFS"; IFS='~'
+      for cmd in $cmds; do
+	IFS="$save_ifs"
+	eval cmd=\"$cmd\"
+	$show "$cmd"
+	$run eval "$cmd" || exit $?
+      done
+      IFS="$save_ifs"
+    done
+
+    if test -n "$future_libdirs"; then
+      $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+    fi
+
+    if test -n "$current_libdirs"; then
+      # Maybe just do a dry run.
+      test -n "$run" && current_libdirs=" -n$current_libdirs"
+      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+    else
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool finish mode
+  finish)
+    modename="$modename: finish"
+    libdirs="$nonopt"
+    admincmds=
+
+    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+      for dir
+      do
+	libdirs="$libdirs $dir"
+      done
+
+      for libdir in $libdirs; do
+	if test -n "$finish_cmds"; then
+	  # Do each command in the finish commands.
+	  cmds=$finish_cmds
+	  save_ifs="$IFS"; IFS='~'
+	  for cmd in $cmds; do
+	    IFS="$save_ifs"
+	    eval cmd=\"$cmd\"
+	    $show "$cmd"
+	    $run eval "$cmd" || admincmds="$admincmds
+       $cmd"
+	  done
+	  IFS="$save_ifs"
+	fi
+	if test -n "$finish_eval"; then
+	  # Do the single finish_eval.
+	  eval cmds=\"$finish_eval\"
+	  $run eval "$cmds" || admincmds="$admincmds
+       $cmds"
+	fi
+      done
+    fi
+
+    # Exit here if they wanted silent mode.
+    test "$show" = : && exit $EXIT_SUCCESS
+
+    $echo "----------------------------------------------------------------------"
+    $echo "Libraries have been installed in:"
+    for libdir in $libdirs; do
+      $echo "   $libdir"
+    done
+    $echo
+    $echo "If you ever happen to want to link against installed libraries"
+    $echo "in a given directory, LIBDIR, you must either use libtool, and"
+    $echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
+    $echo "flag during linking and do at least one of the following:"
+    if test -n "$shlibpath_var"; then
+      $echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
+      $echo "     during execution"
+    fi
+    if test -n "$runpath_var"; then
+      $echo "   - add LIBDIR to the \`$runpath_var' environment variable"
+      $echo "     during linking"
+    fi
+    if test -n "$hardcode_libdir_flag_spec"; then
+      libdir=LIBDIR
+      eval flag=\"$hardcode_libdir_flag_spec\"
+
+      $echo "   - use the \`$flag' linker flag"
+    fi
+    if test -n "$admincmds"; then
+      $echo "   - have your system administrator run these commands:$admincmds"
+    fi
+    if test -f /etc/ld.so.conf; then
+      $echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
+    fi
+    $echo
+    $echo "See any operating system documentation about shared libraries for"
+    $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+    $echo "----------------------------------------------------------------------"
+    exit $EXIT_SUCCESS
+    ;;
+
+  # libtool execute mode
+  execute)
+    modename="$modename: execute"
+
+    # The first argument is the command name.
+    cmd="$nonopt"
+    if test -z "$cmd"; then
+      $echo "$modename: you must specify a COMMAND" 1>&2
+      $echo "$help"
+      exit $EXIT_FAILURE
+    fi
+
+    # Handle -dlopen flags immediately.
+    for file in $execute_dlfiles; do
+      if test ! -f "$file"; then
+	$echo "$modename: \`$file' is not a file" 1>&2
+	$echo "$help" 1>&2
+	exit $EXIT_FAILURE
+      fi
+
+      dir=
+      case $file in
+      *.la)
+	# Check to see that this really is a libtool archive.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+	else
+	  $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+	  $echo "$help" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+
+	# Read the libtool library.
+	dlname=
+	library_names=
+
+	# If there is no directory component, then add one.
+	case $file in
+	*/* | *\\*) . $file ;;
+	*) . ./$file ;;
+	esac
+
+	# Skip this library if it cannot be dlopened.
+	if test -z "$dlname"; then
+	  # Warn if it was a shared library.
+	  test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+	  continue
+	fi
+
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+
+	if test -f "$dir/$objdir/$dlname"; then
+	  dir="$dir/$objdir"
+	else
+	  $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+	  exit $EXIT_FAILURE
+	fi
+	;;
+
+      *.lo)
+	# Just add the directory containing the .lo file.
+	dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+	test "X$dir" = "X$file" && dir=.
+	;;
+
+      *)
+	$echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+	continue
+	;;
+      esac
+
+      # Get the absolute pathname.
+      absdir=`cd "$dir" && pwd`
+      test -n "$absdir" && dir="$absdir"
+
+      # Now add the directory to shlibpath_var.
+      if eval "test -z \"\$$shlibpath_var\""; then
+	eval "$shlibpath_var=\"\$dir\""
+      else
+	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
+      fi
+    done
+
+    # This variable tells wrapper scripts just to set shlibpath_var
+    # rather than running their programs.
+    libtool_execute_magic="$magic"
+
+    # Check if any of the arguments is a wrapper script.
+    args=
+    for file
+    do
+      case $file in
+      -*) ;;
+      *)
+	# Do a test to see if this is really a libtool program.
+	if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  # If there is no directory component, then add one.
+	  case $file in
+	  */* | *\\*) . $file ;;
+	  *) . ./$file ;;
+	  esac
+
+	  # Transform arg to wrapped name.
+	  file="$progdir/$program"
+	fi
+	;;
+      esac
+      # Quote arguments (to preserve shell metacharacters).
+      file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+      args="$args \"$file\""
+    done
+
+    if test -z "$run"; then
+      if test -n "$shlibpath_var"; then
+	# Export the shlibpath_var.
+	eval "export $shlibpath_var"
+      fi
+
+      # Restore saved environment variables
+      if test "${save_LC_ALL+set}" = set; then
+	LC_ALL="$save_LC_ALL"; export LC_ALL
+      fi
+      if test "${save_LANG+set}" = set; then
+	LANG="$save_LANG"; export LANG
+      fi
+
+      # Now prepare to actually exec the command.
+      exec_cmd="\$cmd$args"
+    else
+      # Display what would be done.
+      if test -n "$shlibpath_var"; then
+	eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\""
+	$echo "export $shlibpath_var"
+      fi
+      $echo "$cmd$args"
+      exit $EXIT_SUCCESS
+    fi
+    ;;
+
+  # libtool clean and uninstall mode
+  clean | uninstall)
+    modename="$modename: $mode"
+    rm="$nonopt"
+    files=
+    rmforce=
+    exit_status=0
+
+    # This variable tells wrapper scripts just to set variables rather
+    # than running their programs.
+    libtool_install_magic="$magic"
+
+    for arg
+    do
+      case $arg in
+      -f) rm="$rm $arg"; rmforce=yes ;;
+      -*) rm="$rm $arg" ;;
+      *) files="$files $arg" ;;
+      esac
+    done
+
+    if test -z "$rm"; then
+      $echo "$modename: you must specify an RM program" 1>&2
+      $echo "$help" 1>&2
+      exit $EXIT_FAILURE
+    fi
+
+    rmdirs=
+
+    origobjdir="$objdir"
+    for file in $files; do
+      dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+      if test "X$dir" = "X$file"; then
+	dir=.
+	objdir="$origobjdir"
+      else
+	objdir="$dir/$origobjdir"
+      fi
+      name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+      test "$mode" = uninstall && objdir="$dir"
+
+      # Remember objdir for removal later, being careful to avoid duplicates
+      if test "$mode" = clean; then
+	case " $rmdirs " in
+	  *" $objdir "*) ;;
+	  *) rmdirs="$rmdirs $objdir" ;;
+	esac
+      fi
+
+      # Don't error if the file doesn't exist and rm -f was used.
+      if (test -L "$file") >/dev/null 2>&1 \
+	|| (test -h "$file") >/dev/null 2>&1 \
+	|| test -f "$file"; then
+	:
+      elif test -d "$file"; then
+	exit_status=1
+	continue
+      elif test "$rmforce" = yes; then
+	continue
+      fi
+
+      rmfiles="$file"
+
+      case $name in
+      *.la)
+	# Possibly a libtool archive, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	  . $dir/$name
+
+	  # Delete the libtool libraries and symlinks.
+	  for n in $library_names; do
+	    rmfiles="$rmfiles $objdir/$n"
+	  done
+	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+	  test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+
+	  if test "$mode" = uninstall; then
+	    if test -n "$library_names"; then
+	      # Do each command in the postuninstall commands.
+	      cmds=$postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+
+	    if test -n "$old_library"; then
+	      # Do each command in the old_postuninstall commands.
+	      cmds=$old_postuninstall_cmds
+	      save_ifs="$IFS"; IFS='~'
+	      for cmd in $cmds; do
+		IFS="$save_ifs"
+		eval cmd=\"$cmd\"
+		$show "$cmd"
+		$run eval "$cmd"
+		if test "$?" -ne 0 && test "$rmforce" != yes; then
+		  exit_status=1
+		fi
+	      done
+	      IFS="$save_ifs"
+	    fi
+	    # FIXME: should reinstall the best remaining shared library.
+	  fi
+	fi
+	;;
+
+      *.lo)
+	# Possibly a libtool object, so verify it.
+	if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+	  # Read the .lo file
+	  . $dir/$name
+
+	  # Add PIC object to the list of files to remove.
+	  if test -n "$pic_object" \
+	     && test "$pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$pic_object"
+	  fi
+
+	  # Add non-PIC object to the list of files to remove.
+	  if test -n "$non_pic_object" \
+	     && test "$non_pic_object" != none; then
+	    rmfiles="$rmfiles $dir/$non_pic_object"
+	  fi
+	fi
+	;;
+
+      *)
+	if test "$mode" = clean ; then
+	  noexename=$name
+	  case $file in
+	  *.exe)
+	    file=`$echo $file|${SED} 's,.exe$,,'`
+	    noexename=`$echo $name|${SED} 's,.exe$,,'`
+	    # $file with .exe has already been added to rmfiles,
+	    # add $file without .exe
+	    rmfiles="$rmfiles $file"
+	    ;;
+	  esac
+	  # Do a test to see if this is a libtool program.
+	  if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+	    relink_command=
+	    . $dir/$noexename
+
+	    # note $name still contains .exe if it was in $file originally
+	    # as does the version of $file that was added into $rmfiles
+	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+	    if test "$fast_install" = yes && test -n "$relink_command"; then
+	      rmfiles="$rmfiles $objdir/lt-$name"
+	    fi
+	    if test "X$noexename" != "X$name" ; then
+	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+	    fi
+	  fi
+	fi
+	;;
+      esac
+      $show "$rm $rmfiles"
+      $run $rm $rmfiles || exit_status=1
+    done
+    objdir="$origobjdir"
+
+    # Try to remove the ${objdir}s in the directories where we deleted files
+    for dir in $rmdirs; do
+      if test -d "$dir"; then
+	$show "rmdir $dir"
+	$run rmdir $dir >/dev/null 2>&1
+      fi
+    done
+
+    exit $exit_status
+    ;;
+
+  "")
+    $echo "$modename: you must specify a MODE" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+    ;;
+  esac
+
+  if test -z "$exec_cmd"; then
+    $echo "$modename: invalid operation mode \`$mode'" 1>&2
+    $echo "$generic_help" 1>&2
+    exit $EXIT_FAILURE
+  fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+  eval exec $exec_cmd
+  exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [OPTION]... [MODE-ARG]...
+
+Provide generalized library-building support services.
+
+    --config          show all configuration variables
+    --debug           enable verbose shell tracing
+-n, --dry-run         display commands without modifying any files
+    --features        display basic configuration information and exit
+    --finish          same as \`--mode=finish'
+    --help            display this help message and exit
+    --mode=MODE       use operation mode MODE [default=inferred from MODE-ARGS]
+    --quiet           same as \`--silent'
+    --silent          don't print informational messages
+    --tag=TAG         use configuration variables from tag TAG
+    --version         print version information
+
+MODE must be one of the following:
+
+      clean           remove files from the build directory
+      compile         compile a source file into a libtool object
+      execute         automatically set library path, then run a program
+      finish          complete the installation of libtool libraries
+      install         install libraries or executables
+      link            create a library or an executable
+      uninstall       remove libraries from an installed directory
+
+MODE-ARGS vary depending on the MODE.  Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool at gnu.org>."
+  exit $EXIT_SUCCESS
+  ;;
+
+clean)
+  $echo \
+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
+
+Remove files from the build directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, object or program, all the files associated
+with it are deleted. Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+compile)
+  $echo \
+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
+
+Compile a source file into a libtool library object.
+
+This mode accepts the following additional options:
+
+  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
+  -prefer-pic       try to building PIC objects only
+  -prefer-non-pic   try to building non-PIC objects only
+  -static           always build a \`.o' file suitable for static linking
+
+COMPILE-COMMAND is a command to be used in creating a \`standard' object file
+from the given SOURCEFILE.
+
+The output file name is determined by removing the directory component from
+SOURCEFILE, then substituting the C source code suffix \`.c' with the
+library object suffix, \`.lo'."
+  ;;
+
+execute)
+  $echo \
+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]...
+
+Automatically set library path, then run a program.
+
+This mode accepts the following additional options:
+
+  -dlopen FILE      add the directory containing FILE to the library path
+
+This mode sets the library path environment variable according to \`-dlopen'
+flags.
+
+If any of the ARGS are libtool executable wrappers, then they are translated
+into their corresponding uninstalled binary, and any of their required library
+directories are added to the library path.
+
+Then, COMMAND is executed, with ARGS as arguments."
+  ;;
+
+finish)
+  $echo \
+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]...
+
+Complete the installation of libtool libraries.
+
+Each LIBDIR is a directory that contains libtool libraries.
+
+The commands that this mode executes may require superuser privileges.  Use
+the \`--dry-run' option if you just want to see what would be executed."
+  ;;
+
+install)
+  $echo \
+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND...
+
+Install executables or libraries.
+
+INSTALL-COMMAND is the installation command.  The first component should be
+either the \`install' or \`cp' program.
+
+The rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+  ;;
+
+link)
+  $echo \
+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND...
+
+Link object files or libraries together to form another library, or to
+create an executable program.
+
+LINK-COMMAND is a command using the C compiler that you would use to create
+a program from several object files.
+
+The following components of LINK-COMMAND are treated specially:
+
+  -all-static       do not do any dynamic linking at all
+  -avoid-version    do not add a version suffix if possible
+  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
+  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
+  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+  -export-symbols SYMFILE
+		    try to export only the symbols listed in SYMFILE
+  -export-symbols-regex REGEX
+		    try to export only the symbols matching REGEX
+  -LLIBDIR          search LIBDIR for required installed libraries
+  -lNAME            OUTPUT-FILE requires the installed library libNAME
+  -module           build a library that can dlopened
+  -no-fast-install  disable the fast-install mode
+  -no-install       link a not-installable executable
+  -no-undefined     declare that a library does not refer to external symbols
+  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
+  -objectlist FILE  Use a list of object files found in FILE to specify objects
+  -precious-files-regex REGEX
+                    don't remove output files matching REGEX
+  -release RELEASE  specify package release information
+  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
+  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
+  -static           do not do any dynamic linking of libtool libraries
+  -version-info CURRENT[:REVISION[:AGE]]
+		    specify library version info [each variable defaults to 0]
+
+All other options (arguments beginning with \`-') are ignored.
+
+Every other argument is treated as a filename.  Files ending in \`.la' are
+treated as uninstalled libtool libraries, other files are standard or library
+object files.
+
+If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
+only library objects (\`.lo' files) may be specified, and \`-rpath' is
+required, except when creating a convenience library.
+
+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
+using \`ar' and \`ranlib', or on Windows using \`lib'.
+
+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
+is created, otherwise an executable program is created."
+  ;;
+
+uninstall)
+  $echo \
+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
+
+Remove libraries from an installation directory.
+
+RM is the name of the program to use to delete files associated with each FILE
+(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
+to RM.
+
+If FILE is a libtool library, all the files associated with it are deleted.
+Otherwise, only FILE itself is deleted using RM."
+  ;;
+
+*)
+  $echo "$modename: invalid operation mode \`$mode'" 1>&2
+  $echo "$help" 1>&2
+  exit $EXIT_FAILURE
+  ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# The TAGs below are defined such that we never get into a situation
+# in which we disable both kinds of libraries.  Given conflicting
+# choices, we go for a static library, that is the most portable,
+# since we can't tell whether shared libraries were disabled because
+# the user asked for that or because the platform doesn't support
+# them.  This is particularly important on AIX, because we don't
+# support having both static and shared libraries enabled at the same
+# time on that platform, so we default to a shared-only configuration.
+# If a disable-shared tag is given, we'll fallback to a static-only
+# configuration.  But we'll never go from static-only to shared-only.
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
+build_libtool_libs=no
+build_old_libs=yes
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:

Added: kde-extras/tora/branches/upstream/current/missing
===================================================================
--- kde-extras/tora/branches/upstream/current/missing	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/missing	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,336 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+# Originally by Fran,cois Pinard <pinard at iro.umontreal.ca>, 1996.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+# 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+if test $# -eq 0; then
+  echo 1>&2 "Try \`$0 --help' for more information"
+  exit 1
+fi
+
+run=:
+
+# In the cases where this matters, `missing' is being run in the
+# srcdir already.
+if test -f configure.ac; then
+  configure_ac=configure.ac
+else
+  configure_ac=configure.in
+fi
+
+case "$1" in
+--run)
+  # Try to run requested program, and just exit if it succeeds.
+  run=
+  shift
+  "$@" && exit 0
+  ;;
+esac
+
+# If it does not exist, or fails to run (possibly an outdated version),
+# try to emulate it.
+case "$1" in
+
+  -h|--h|--he|--hel|--help)
+    echo "\
+$0 [OPTION]... PROGRAM [ARGUMENT]...
+
+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
+error status if there is no known handling for PROGRAM.
+
+Options:
+  -h, --help      display this help and exit
+  -v, --version   output version information and exit
+  --run           try to run the given command, and emulate it if it fails
+
+Supported PROGRAM values:
+  aclocal      touch file \`aclocal.m4'
+  autoconf     touch file \`configure'
+  autoheader   touch file \`config.h.in'
+  automake     touch all \`Makefile.in' files
+  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
+  flex         create \`lex.yy.c', if possible, from existing .c
+  help2man     touch the output file
+  lex          create \`lex.yy.c', if possible, from existing .c
+  makeinfo     touch the output file
+  tar          try tar, gnutar, gtar, then tar without non-portable flags
+  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
+    ;;
+
+  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
+    echo "missing 0.4 - GNU automake"
+    ;;
+
+  -*)
+    echo 1>&2 "$0: Unknown \`$1' option"
+    echo 1>&2 "Try \`$0 --help' for more information"
+    exit 1
+    ;;
+
+  aclocal*)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
+         to install the \`Automake' and \`Perl' packages.  Grab them from
+         any GNU archive site."
+    touch aclocal.m4
+    ;;
+
+  autoconf)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`${configure_ac}'.  You might want to install the
+         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
+         archive site."
+    touch configure
+    ;;
+
+  autoheader)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
+         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
+         from any GNU archive site."
+    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
+    test -z "$files" && files="config.h"
+    touch_files=
+    for f in $files; do
+      case "$f" in
+      *:*) touch_files="$touch_files "`echo "$f" |
+				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+      *) touch_files="$touch_files $f.in";;
+      esac
+    done
+    touch $touch_files
+    ;;
+
+  automake*)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
+         You might want to install the \`Automake' and \`Perl' packages.
+         Grab them from any GNU archive site."
+    find . -type f -name Makefile.am -print |
+	   sed 's/\.am$/.in/' |
+	   while read f; do touch "$f"; done
+    ;;
+
+  autom4te)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
+         proper tools for further handling them.
+         You can get \`$1' as part of \`Autoconf' from any GNU
+         archive site."
+
+    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
+    if test -f "$file"; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo "#! /bin/sh"
+	echo "# Created by GNU Automake missing as a replacement of"
+	echo "#  $ $@"
+	echo "exit 0"
+	chmod +x $file
+	exit 1
+    fi
+    ;;
+
+  bison|yacc)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.y' file.  You may need the \`Bison' package
+         in order for those modifications to take effect.  You can get
+         \`Bison' from any GNU archive site."
+    rm -f y.tab.c y.tab.h
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.y)
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.c
+	    fi
+	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" y.tab.h
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f y.tab.h ]; then
+	echo >y.tab.h
+    fi
+    if [ ! -f y.tab.c ]; then
+	echo 'main() { return 0; }' >y.tab.c
+    fi
+    ;;
+
+  lex|flex)
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.l' file.  You may need the \`Flex' package
+         in order for those modifications to take effect.  You can get
+         \`Flex' from any GNU archive site."
+    rm -f lex.yy.c
+    if [ $# -ne 1 ]; then
+        eval LASTARG="\${$#}"
+	case "$LASTARG" in
+	*.l)
+	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+	    if [ -f "$SRCFILE" ]; then
+	         cp "$SRCFILE" lex.yy.c
+	    fi
+	  ;;
+	esac
+    fi
+    if [ ! -f lex.yy.c ]; then
+	echo 'main() { return 0; }' >lex.yy.c
+    fi
+    ;;
+
+  help2man)
+    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
+       # We have it, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+	 you modified a dependency of a manual page.  You may need the
+	 \`Help2man' package in order for those modifications to take
+	 effect.  You can get \`Help2man' from any GNU archive site."
+
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+    fi
+    if [ -f "$file" ]; then
+	touch $file
+    else
+	test -z "$file" || exec >$file
+	echo ".ab help2man is required to generate this page"
+	exit 1
+    fi
+    ;;
+
+  makeinfo)
+    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
+       # We have makeinfo, but it failed.
+       exit 1
+    fi
+
+    echo 1>&2 "\
+WARNING: \`$1' is missing on your system.  You should only need it if
+         you modified a \`.texi' or \`.texinfo' file, or any other file
+         indirectly affecting the aspect of the manual.  The spurious
+         call might also be the consequence of using a buggy \`make' (AIX,
+         DU, IRIX).  You might want to install the \`Texinfo' package or
+         the \`GNU make' package.  Grab either from any GNU archive site."
+    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+    if test -z "$file"; then
+      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
+    fi
+    touch $file
+    ;;
+
+  tar)
+    shift
+    if test -n "$run"; then
+      echo 1>&2 "ERROR: \`tar' requires --run"
+      exit 1
+    fi
+
+    # We have already tried tar in the generic part.
+    # Look for gnutar/gtar before invocation to avoid ugly error
+    # messages.
+    if (gnutar --version > /dev/null 2>&1); then
+       gnutar "$@" && exit 0
+    fi
+    if (gtar --version > /dev/null 2>&1); then
+       gtar "$@" && exit 0
+    fi
+    firstarg="$1"
+    if shift; then
+	case "$firstarg" in
+	*o*)
+	    firstarg=`echo "$firstarg" | sed s/o//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+	case "$firstarg" in
+	*h*)
+	    firstarg=`echo "$firstarg" | sed s/h//`
+	    tar "$firstarg" "$@" && exit 0
+	    ;;
+	esac
+    fi
+
+    echo 1>&2 "\
+WARNING: I can't seem to be able to run \`tar' with the given arguments.
+         You may want to install GNU tar or Free paxutils, or check the
+         command line arguments."
+    exit 1
+    ;;
+
+  *)
+    echo 1>&2 "\
+WARNING: \`$1' is needed, and you do not seem to have it handy on your
+         system.  You might have modified some files without having the
+         proper tools for further handling them.  Check the \`README' file,
+         it often tells you about the needed prerequisites for installing
+         this package.  You may also peek at any GNU archive site, in case
+         some other package would contain this missing \`$1' program."
+    exit 1
+    ;;
+esac
+
+exit 0


Property changes on: kde-extras/tora/branches/upstream/current/missing
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/mkinstalldirs
===================================================================
--- kde-extras/tora/branches/upstream/current/mkinstalldirs	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/mkinstalldirs	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,111 @@
+#! /bin/sh
+# mkinstalldirs --- make directory hierarchy
+# Author: Noah Friedman <friedman at prep.ai.mit.edu>
+# Created: 1993-05-16
+# Public domain
+
+errstatus=0
+dirmode=""
+
+usage="\
+Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
+
+# process command line arguments
+while test $# -gt 0 ; do
+  case $1 in
+    -h | --help | --h*)         # -h for help
+      echo "$usage" 1>&2
+      exit 0
+      ;;
+    -m)                         # -m PERM arg
+      shift
+      test $# -eq 0 && { echo "$usage" 1>&2; exit 1; }
+      dirmode=$1
+      shift
+      ;;
+    --)                         # stop option processing
+      shift
+      break
+      ;;
+    -*)                         # unknown option
+      echo "$usage" 1>&2
+      exit 1
+      ;;
+    *)                          # first non-opt arg
+      break
+      ;;
+  esac
+done
+
+for file
+do
+  if test -d "$file"; then
+    shift
+  else
+    break
+  fi
+done
+
+case $# in
+  0) exit 0 ;;
+esac
+
+case $dirmode in
+  '')
+    if mkdir -p -- . 2>/dev/null; then
+      echo "mkdir -p -- $*"
+      exec mkdir -p -- "$@"
+    fi
+    ;;
+  *)
+    if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
+      echo "mkdir -m $dirmode -p -- $*"
+      exec mkdir -m "$dirmode" -p -- "$@"
+    fi
+    ;;
+esac
+
+for file
+do
+  set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
+  shift
+
+  pathcomp=
+  for d
+  do
+    pathcomp="$pathcomp$d"
+    case $pathcomp in
+      -*) pathcomp=./$pathcomp ;;
+    esac
+
+    if test ! -d "$pathcomp"; then
+      echo "mkdir $pathcomp"
+
+      mkdir "$pathcomp" || lasterr=$?
+
+      if test ! -d "$pathcomp"; then
+  	errstatus=$lasterr
+      else
+  	if test ! -z "$dirmode"; then
+	  echo "chmod $dirmode $pathcomp"
+    	  lasterr=""
+  	  chmod "$dirmode" "$pathcomp" || lasterr=$?
+
+  	  if test ! -z "$lasterr"; then
+  	    errstatus=$lasterr
+  	  fi
+  	fi
+      fi
+    fi
+
+    pathcomp="$pathcomp/"
+  done
+done
+
+exit $errstatus
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# End:
+# mkinstalldirs ends here


Property changes on: kde-extras/tora/branches/upstream/current/mkinstalldirs
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/rpm/tora.desktop
===================================================================
--- kde-extras/tora/branches/upstream/current/rpm/tora.desktop	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/rpm/tora.desktop	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Exec=tora
+Name=Toolkit for Oracle
+Comment=Toolkit for Oracle and other databases administration and development
+X-KDE-StartupNotify=true
+MimeType=application/x-tora
+Icon=tora
+Terminal=false
+Type=Application
+

Added: kde-extras/tora/branches/upstream/current/rpm/tora.menu
===================================================================
--- kde-extras/tora/branches/upstream/current/rpm/tora.menu	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/rpm/tora.menu	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,5 @@
+?package(tora): needs="X11" icon="tora.xpm" \
+section="Applications/Development/Tools" \
+title="TOra" longtitle="Toolkit for Oracle" \
+command="/usr/bin/tora"
+

Added: kde-extras/tora/branches/upstream/current/rpm/tora.sh
===================================================================
--- kde-extras/tora/branches/upstream/current/rpm/tora.sh	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/rpm/tora.sh	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+if [ "X$ORACLE_HOME" = "X" ]
+then
+    echo "WARNING: Environment variable ORACLE_HOME not set, check your Oracle installation"
+else
+    LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
+    export LD_LIBRARY_PATH
+fi
+tora.real

Added: kde-extras/tora/branches/upstream/current/rpm/tora.spec
===================================================================
--- kde-extras/tora/branches/upstream/current/rpm/tora.spec	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/rpm/tora.spec	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,212 @@
+# This specfile is Mandrake Linux specific
+#
+# This requires a working Oracle installation to build with a set ORACLE_HOME
+# environment. Requires at least version 8.1.7 of Oracle.
+#
+
+
+%define _name		tora
+
+%define _version	1.3.22
+%define _release	1
+%define _prefix		/usr/X11R6
+
+# preferred something like this
+#%define __find_requires  /usr/lib/rpm/find-requires | grep -v libclntsh
+
+# For the moment
+%define __find_requires %{nil}
+
+
+Summary:		Toolkit for Oracle
+Name:			%{_name}
+Version:		%{_version}
+Release:		%{_release}
+Source:			%{_name}-%{_version}.tar.gz
+URL:			http://tora.sourceforge.net
+Group:			Development/Databases
+Packager:		Raj Thukral (thukral at pobox dot com)
+License:		GPL
+BuildRoot:		%{_tmppath}/tora-root
+Prefix:			%{_prefix}
+
+
+#
+# Description below is copied verbatim from the README file
+#
+
+%description
+
+
+TOra - Toolkit for Oracle
+=========================
+Copyright (C) 2003-2005 Quest Software, Inc (http://www.quest.com/)
+Portions Copyright (C) 2005 Other Contributors
+
+For information about license see the LICENSE.txt file. It is distributed 
+under the GPL which basically means that any derivatory work must be 
+released under an open source license as well.
+
+TOra is supported for running with an Oracle 8.1.7 or newer
+client installation. It has been verified to work with Oracle 10g.
+
+In addition, TOra also supports postgres and mysql if your Qt library
+is compiled with that support.
+
+Toolkit for Oracle is a program for Oracle developers and administrators. The
+features that are available so far is (As of version 1.2):
+
+* Handles multiple connections
+* Support Oracle & MySQL
+* Advanced SQL Worksheet
+	* Explain plan
+	* PL/SQL auto indentation
+	* Statement statistics
+	* Error location indication
+	* SQL syntax highlighting
+	* Code completion
+	* Visualization of result
+	* PL/SQL block parsing
+	* Statement statistics comparison
+* Schema browser
+	* Table & view editing
+	* References & dependencies
+	* Reverse engeneering of objects
+	* Tab & tree based browsing
+	* Object & data filtering
+* PL/SQL Editor/Debugger
+	* Breakpoints
+	* Watches
+	* Line stepping
+	* SQL Output viewing
+	* Structure tree parsing
+* Server tuning
+	* Server overview
+	* Tuning charts
+	* Wait state analyzer
+	* I/O by tablespace & file
+	* Performance indicators
+	* Server statistics
+	* Parameter editor (P-file editor)
+* Security manager
+* Storage manager with object & extent viewer
+
+* Session manager
+* Rollback manager with snapshot too old detection
+* SGA and long operations trace
+* Current session information
+
+* PL/SQL profiler
+* Explain plan browser
+* Statistics manager
+* DBMS alert tool
+* Invalid object browser
+* SQL Output viewer
+* Database/schema comparison and search
+* Extract schema objects to SQL script
+
+* Easily extendable
+* Possible to add support for new or older Oracle versions without programming.
+* SQL template help
+* Full UNICODE support
+* Printing of any list, text or chart
+
+For installation instructions se the file INSTALL.
+
+TOra is developed by a community of Open Source developers. The original 
+(pre 1.3.15) development was done by Henrik Johnson of Quest Software, Inc.
+
+The homepage for the TOra project is http://tora.sourceforge.net. If you 
+encounter problems you can find both mailinglists and bugtracking tools 
+from this page.
+
+Oracle is copyright of Oracle Corporation.
+
+%package oracle
+Summary:		Oracle specific plugins for %{_name}
+Group:			Development/Databases
+Requires:		%{_name} = %{_version}
+Autoreq:		0
+
+%description oracle
+Oracle specific plugins for %{_name}. This plugin will require a valid installation
+of an Oracle Client of version 8.1 or later to function that can be downloaded by
+a free registration from Oracle Technet from http://technet.oracle.com. NOTE: You
+will require to download the entire server distribution to install the client, but
+it is available as a choice in the installer.
+
+%changelog
+* Mon Jun 29 2005 Nathan Neulinger <nneul at umr.edu>
+- standardize on a single tora spec file
+
+%prep
+%setup -q
+
+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$ORACLE_HOME/lib"
+
+export CFLAGS="$RPM_OPT_FLAGS"
+export CXXFLAGS="$RPM_OPT_FLAGS"
+
+./configure \
+	 --prefix="%{_prefix}" \
+	 --bindir="%{_prefix}/bin" \
+	 --libdir="%{_prefix}/lib" \
+	--with-qt=$QTDIR \
+	--with-qt-libraries=$QTDIR/lib \
+	--with-qt-includes=$QTDIR/include \
+	--without-kde
+
+%build
+
+%{__make}
+%{__strip} .libs/*.so 
+
+# Ugly hack to remove version from libclntsh.so, if someone knows a better way please let me know
+perl -pi -e 's/libclntsh.so.\d\d.\d\d/libclntsh.so\0\0\0\0\0\0/g' .libs/libtooracleconnection.so
+perl -pi -e 's/libclntsh.so.\d\d.\d/libclntsh.so\0\0\0\0\0/g' .libs/libtooracleconnection.so
+perl -pi -e 's/libclntsh.so.\d.\d/libclntsh.so\0\0\0\0/g' .libs/libtooracleconnection.so
+
+
+%install
+
+%{__rm} -rf "${RPM_BUILD_ROOT}" 
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_prefix}/bin"
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help"
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help/images"
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help/api"
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_iconsdir}/hicolor/16x16/apps"
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_iconsdir}/hicolor/32x32/apps"
+%{__make} DESTDIR="${RPM_BUILD_ROOT}" install
+
+%{__install} --mode=644 help/*.html "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help/"
+%{__install} --mode=644 help/images/*.png "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help/images/"
+%{__install} --mode=644 help/api/*.html "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help/api/"
+
+%{__install} --mode=644 icons/tora.xpm "${RPM_BUILD_ROOT}%{_iconsdir}/hicolor/32x32/apps/tora.xpm"
+%{__install} --mode=644 icons/toramini.xpm "${RPM_BUILD_ROOT}%{_iconsdir}/hicolor/16x16/apps/tora.xpm"
+
+%post
+
+%postun
+
+
+%files 
+%defattr(-,root,root)
+%doc BUGS INSTALL LICENSE.txt NEWS README TODO
+%{_prefix}/bin/*
+%{_prefix}/lib/*.a
+%{_prefix}/lib/*.la
+%{_prefix}/lib/*.so
+%dir %{_prefix}/lib/tora
+#%{_prefix}/lib/tora/*.tpl
+#%{_prefix}/lib/tora/*.qm
+%{_prefix}/lib/tora/help
+#%{_menudir}/tora
+%{_iconsdir}/hicolor/*/apps/tora.xpm
+#%{_datadir}/applnk/Development/tora.desktop
+
+#%files oracle -f rpmoracle
+#%defattr(-,root,root)
+
+%clean
+%{__rm} -rf "${RPM_BUILD_ROOT}"

Added: kde-extras/tora/branches/upstream/current/rpm/tora.spec.in
===================================================================
--- kde-extras/tora/branches/upstream/current/rpm/tora.spec.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/rpm/tora.spec.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,212 @@
+# This specfile is Mandrake Linux specific
+#
+# This requires a working Oracle installation to build with a set ORACLE_HOME
+# environment. Requires at least version 8.1.7 of Oracle.
+#
+
+
+%define _name		tora
+
+%define _version	@VERSION@
+%define _release	1
+%define _prefix		/usr/X11R6
+
+# preferred something like this
+#%define __find_requires  /usr/lib/rpm/find-requires | grep -v libclntsh
+
+# For the moment
+%define __find_requires %{nil}
+
+
+Summary:		Toolkit for Oracle
+Name:			%{_name}
+Version:		%{_version}
+Release:		%{_release}
+Source:			%{_name}-%{_version}.tar.gz
+URL:			http://tora.sourceforge.net
+Group:			Development/Databases
+Packager:		Raj Thukral (thukral at pobox dot com)
+License:		GPL
+BuildRoot:		%{_tmppath}/tora-root
+Prefix:			%{_prefix}
+
+
+#
+# Description below is copied verbatim from the README file
+#
+
+%description
+
+
+TOra - Toolkit for Oracle
+=========================
+Copyright (C) 2003-2005 Quest Software, Inc (http://www.quest.com/)
+Portions Copyright (C) 2005 Other Contributors
+
+For information about license see the LICENSE.txt file. It is distributed 
+under the GPL which basically means that any derivatory work must be 
+released under an open source license as well.
+
+TOra is supported for running with an Oracle 8.1.7 or newer
+client installation. It has been verified to work with Oracle 10g.
+
+In addition, TOra also supports postgres and mysql if your Qt library
+is compiled with that support.
+
+Toolkit for Oracle is a program for Oracle developers and administrators. The
+features that are available so far is (As of version 1.2):
+
+* Handles multiple connections
+* Support Oracle & MySQL
+* Advanced SQL Worksheet
+	* Explain plan
+	* PL/SQL auto indentation
+	* Statement statistics
+	* Error location indication
+	* SQL syntax highlighting
+	* Code completion
+	* Visualization of result
+	* PL/SQL block parsing
+	* Statement statistics comparison
+* Schema browser
+	* Table & view editing
+	* References & dependencies
+	* Reverse engeneering of objects
+	* Tab & tree based browsing
+	* Object & data filtering
+* PL/SQL Editor/Debugger
+	* Breakpoints
+	* Watches
+	* Line stepping
+	* SQL Output viewing
+	* Structure tree parsing
+* Server tuning
+	* Server overview
+	* Tuning charts
+	* Wait state analyzer
+	* I/O by tablespace & file
+	* Performance indicators
+	* Server statistics
+	* Parameter editor (P-file editor)
+* Security manager
+* Storage manager with object & extent viewer
+
+* Session manager
+* Rollback manager with snapshot too old detection
+* SGA and long operations trace
+* Current session information
+
+* PL/SQL profiler
+* Explain plan browser
+* Statistics manager
+* DBMS alert tool
+* Invalid object browser
+* SQL Output viewer
+* Database/schema comparison and search
+* Extract schema objects to SQL script
+
+* Easily extendable
+* Possible to add support for new or older Oracle versions without programming.
+* SQL template help
+* Full UNICODE support
+* Printing of any list, text or chart
+
+For installation instructions se the file INSTALL.
+
+TOra is developed by a community of Open Source developers. The original 
+(pre 1.3.15) development was done by Henrik Johnson of Quest Software, Inc.
+
+The homepage for the TOra project is http://tora.sourceforge.net. If you 
+encounter problems you can find both mailinglists and bugtracking tools 
+from this page.
+
+Oracle is copyright of Oracle Corporation.
+
+%package oracle
+Summary:		Oracle specific plugins for %{_name}
+Group:			Development/Databases
+Requires:		%{_name} = %{_version}
+Autoreq:		0
+
+%description oracle
+Oracle specific plugins for %{_name}. This plugin will require a valid installation
+of an Oracle Client of version 8.1 or later to function that can be downloaded by
+a free registration from Oracle Technet from http://technet.oracle.com. NOTE: You
+will require to download the entire server distribution to install the client, but
+it is available as a choice in the installer.
+
+%changelog
+* Mon Jun 29 2005 Nathan Neulinger <nneul at umr.edu>
+- standardize on a single tora spec file
+
+%prep
+%setup -q
+
+export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$ORACLE_HOME/lib"
+
+export CFLAGS="$RPM_OPT_FLAGS"
+export CXXFLAGS="$RPM_OPT_FLAGS"
+
+./configure \
+	 --prefix="%{_prefix}" \
+	 --bindir="%{_prefix}/bin" \
+	 --libdir="%{_prefix}/lib" \
+	--with-qt=$QTDIR \
+	--with-qt-libraries=$QTDIR/lib \
+	--with-qt-includes=$QTDIR/include \
+	--without-kde
+
+%build
+
+%{__make}
+%{__strip} .libs/*.so 
+
+# Ugly hack to remove version from libclntsh.so, if someone knows a better way please let me know
+perl -pi -e 's/libclntsh.so.\d\d.\d\d/libclntsh.so\0\0\0\0\0\0/g' .libs/libtooracleconnection.so
+perl -pi -e 's/libclntsh.so.\d\d.\d/libclntsh.so\0\0\0\0\0/g' .libs/libtooracleconnection.so
+perl -pi -e 's/libclntsh.so.\d.\d/libclntsh.so\0\0\0\0/g' .libs/libtooracleconnection.so
+
+
+%install
+
+%{__rm} -rf "${RPM_BUILD_ROOT}" 
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_prefix}/bin"
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help"
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help/images"
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help/api"
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_iconsdir}/hicolor/16x16/apps"
+%{__mkdir_p} "${RPM_BUILD_ROOT}%{_iconsdir}/hicolor/32x32/apps"
+%{__make} DESTDIR="${RPM_BUILD_ROOT}" install
+
+%{__install} --mode=644 help/*.html "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help/"
+%{__install} --mode=644 help/images/*.png "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help/images/"
+%{__install} --mode=644 help/api/*.html "${RPM_BUILD_ROOT}%{_prefix}/lib/tora/help/api/"
+
+%{__install} --mode=644 icons/tora.xpm "${RPM_BUILD_ROOT}%{_iconsdir}/hicolor/32x32/apps/tora.xpm"
+%{__install} --mode=644 icons/toramini.xpm "${RPM_BUILD_ROOT}%{_iconsdir}/hicolor/16x16/apps/tora.xpm"
+
+%post
+
+%postun
+
+
+%files 
+%defattr(-,root,root)
+%doc BUGS INSTALL LICENSE.txt NEWS README TODO
+%{_prefix}/bin/*
+%{_prefix}/lib/*.a
+%{_prefix}/lib/*.la
+%{_prefix}/lib/*.so
+%dir %{_prefix}/lib/tora
+#%{_prefix}/lib/tora/*.tpl
+#%{_prefix}/lib/tora/*.qm
+%{_prefix}/lib/tora/help
+#%{_menudir}/tora
+%{_iconsdir}/hicolor/*/apps/tora.xpm
+#%{_datadir}/applnk/Development/tora.desktop
+
+#%files oracle -f rpmoracle
+#%defattr(-,root,root)
+
+%clean
+%{__rm} -rf "${RPM_BUILD_ROOT}"

Added: kde-extras/tora/branches/upstream/current/src/LICENSE.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/LICENSE.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/LICENSE.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,353 @@
+static char *LicenseText=
+"<PRE>"
+"\n"
+" The Toolkit for Oracle is Copyright (C) 2003-2005 Quest Software, Inc.\n"
+" Portions Copyright (C) 2005 Other Contributors\n"
+" \n"
+" You may use, distribute and copy Toolkit for Oracle under the terms of\n"
+" GNU General Public License version 2, which is displayed below.\n"
+"\n"
+"-------------------------------------------------------------------------\n"
+"\n"
+"		    GNU GENERAL PUBLIC LICENSE\n"
+"		       Version 2, June 1991\n"
+"\n"
+" Copyright (C) 1989, 1991 Free Software Foundation, Inc.\n"
+"                          675 Mass Ave, Cambridge, MA 02139, USA\n"
+" Everyone is permitted to copy and distribute verbatim copies\n"
+" of this license document, but changing it is not allowed.\n"
+"\n"
+"			    Preamble\n"
+"\n"
+"  The licenses for most software are designed to take away your\n"
+"freedom to share and change it.  By contrast, the GNU General Public\n"
+"License is intended to guarantee your freedom to share and change free\n"
+"software--to make sure the software is free for all its users.  This\n"
+"General Public License applies to most of the Free Software\n"
+"Foundation's software and to any other program whose authors commit to\n"
+"using it.  (Some other Free Software Foundation software is covered by\n"
+"the GNU Library General Public License instead.)  You can apply it to\n"
+"your programs, too.\n"
+"\n"
+"  When we speak of free software, we are referring to freedom, not\n"
+"price.  Our General Public Licenses are designed to make sure that you\n"
+"have the freedom to distribute copies of free software (and charge for\n"
+"this service if you wish), that you receive source code or can get it\n"
+"if you want it, that you can change the software or use pieces of it\n"
+"in new free programs; and that you know you can do these things.\n"
+"\n"
+"  To protect your rights, we need to make restrictions that forbid\n"
+"anyone to deny you these rights or to ask you to surrender the rights.\n"
+"These restrictions translate to certain responsibilities for you if you\n"
+"distribute copies of the software, or if you modify it.\n"
+"\n"
+"  For example, if you distribute copies of such a program, whether\n"
+"gratis or for a fee, you must give the recipients all the rights that\n"
+"you have.  You must make sure that they, too, receive or can get the\n"
+"source code.  And you must show them these terms so they know their\n"
+"rights.\n"
+"\n"
+"  We protect your rights with two steps: (1) copyright the software, and\n"
+"(2) offer you this license which gives you legal permission to copy,\n"
+"distribute and/or modify the software.\n"
+"\n"
+"  Also, for each author's protection and ours, we want to make certain\n"
+"that everyone understands that there is no warranty for this free\n"
+"software.  If the software is modified by someone else and passed on, we\n"
+"want its recipients to know that what they have is not the original, so\n"
+"that any problems introduced by others will not reflect on the original\n"
+"authors' reputations.\n"
+"\n"
+"  Finally, any free program is threatened constantly by software\n"
+"patents.  We wish to avoid the danger that redistributors of a free\n"
+"program will individually obtain patent licenses, in effect making the\n"
+"program proprietary.  To prevent this, we have made it clear that any\n"
+"patent must be licensed for everyone's free use or not licensed at all.\n"
+"\n"
+"  The precise terms and conditions for copying, distribution and\n"
+"modification follow.\n"
+"\n"
+"		    GNU GENERAL PUBLIC LICENSE\n"
+"   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n"
+"\n"
+"  0. This License applies to any program or other work which contains\n"
+"a notice placed by the copyright holder saying it may be distributed\n"
+"under the terms of this General Public License.  The \"Program\", below,\n"
+"refers to any such program or work, and a \"work based on the Program\"\n"
+"means either the Program or any derivative work under copyright law:\n"
+"that is to say, a work containing the Program or a portion of it,\n"
+"either verbatim or with modifications and/or translated into another\n"
+"language.  (Hereinafter, translation is included without limitation in\n"
+"the term \"modification\".)  Each licensee is addressed as \"you\".\n"
+"\n"
+"Activities other than copying, distribution and modification are not\n"
+"covered by this License; they are outside its scope.  The act of\n"
+"running the Program is not restricted, and the output from the Program\n"
+"is covered only if its contents constitute a work based on the\n"
+"Program (independent of having been made by running the Program).\n"
+"Whether that is true depends on what the Program does.\n"
+"\n"
+"  1. You may copy and distribute verbatim copies of the Program's\n"
+"source code as you receive it, in any medium, provided that you\n"
+"conspicuously and appropriately publish on each copy an appropriate\n"
+"copyright notice and disclaimer of warranty; keep intact all the\n"
+"notices that refer to this License and to the absence of any warranty;\n"
+"and give any other recipients of the Program a copy of this License\n"
+"along with the Program.\n"
+"\n"
+"You may charge a fee for the physical act of transferring a copy, and\n"
+"you may at your option offer warranty protection in exchange for a fee.\n"
+"\n"
+"  2. You may modify your copy or copies of the Program or any portion\n"
+"of it, thus forming a work based on the Program, and copy and\n"
+"distribute such modifications or work under the terms of Section 1\n"
+"above, provided that you also meet all of these conditions:\n"
+"\n"
+"    a) You must cause the modified files to carry prominent notices\n"
+"    stating that you changed the files and the date of any change.\n"
+"\n"
+"    b) You must cause any work that you distribute or publish, that in\n"
+"    whole or in part contains or is derived from the Program or any\n"
+"    part thereof, to be licensed as a whole at no charge to all third\n"
+"    parties under the terms of this License.\n"
+"\n"
+"    c) If the modified program normally reads commands interactively\n"
+"    when run, you must cause it, when started running for such\n"
+"    interactive use in the most ordinary way, to print or display an\n"
+"    announcement including an appropriate copyright notice and a\n"
+"    notice that there is no warranty (or else, saying that you provide\n"
+"    a warranty) and that users may redistribute the program under\n"
+"    these conditions, and telling the user how to view a copy of this\n"
+"    License.  (Exception: if the Program itself is interactive but\n"
+"    does not normally print such an announcement, your work based on\n"
+"    the Program is not required to print an announcement.)\n"
+"\n"
+"These requirements apply to the modified work as a whole.  If\n"
+"identifiable sections of that work are not derived from the Program,\n"
+"and can be reasonably considered independent and separate works in\n"
+"themselves, then this License, and its terms, do not apply to those\n"
+"sections when you distribute them as separate works.  But when you\n"
+"distribute the same sections as part of a whole which is a work based\n"
+"on the Program, the distribution of the whole must be on the terms of\n"
+"this License, whose permissions for other licensees extend to the\n"
+"entire whole, and thus to each and every part regardless of who wrote it.\n"
+"\n"
+"Thus, it is not the intent of this section to claim rights or contest\n"
+"your rights to work written entirely by you; rather, the intent is to\n"
+"exercise the right to control the distribution of derivative or\n"
+"collective works based on the Program.\n"
+"\n"
+"In addition, mere aggregation of another work not based on the Program\n"
+"with the Program (or with a work based on the Program) on a volume of\n"
+"a storage or distribution medium does not bring the other work under\n"
+"the scope of this License.\n"
+"\n"
+"  3. You may copy and distribute the Program (or a work based on it,\n"
+"under Section 2) in object code or executable form under the terms of\n"
+"Sections 1 and 2 above provided that you also do one of the following:\n"
+"\n"
+"    a) Accompany it with the complete corresponding machine-readable\n"
+"    source code, which must be distributed under the terms of Sections\n"
+"    1 and 2 above on a medium customarily used for software interchange; or,\n"
+"\n"
+"    b) Accompany it with a written offer, valid for at least three\n"
+"    years, to give any third party, for a charge no more than your\n"
+"    cost of physically performing source distribution, a complete\n"
+"    machine-readable copy of the corresponding source code, to be\n"
+"    distributed under the terms of Sections 1 and 2 above on a medium\n"
+"    customarily used for software interchange; or,\n"
+"\n"
+"    c) Accompany it with the information you received as to the offer\n"
+"    to distribute corresponding source code.  (This alternative is\n"
+"    allowed only for noncommercial distribution and only if you\n"
+"    received the program in object code or executable form with such\n"
+"    an offer, in accord with Subsection b above.)\n"
+"\n"
+"The source code for a work means the preferred form of the work for\n"
+"making modifications to it.  For an executable work, complete source\n"
+"code means all the source code for all modules it contains, plus any\n"
+"associated interface definition files, plus the scripts used to\n"
+"control compilation and installation of the executable.  However, as a\n"
+"special exception, the source code distributed need not include\n"
+"anything that is normally distributed (in either source or binary\n"
+"form) with the major components (compiler, kernel, and so on) of the\n"
+"operating system on which the executable runs, unless that component\n"
+"itself accompanies the executable.\n"
+"\n"
+"If distribution of executable or object code is made by offering\n"
+"access to copy from a designated place, then offering equivalent\n"
+"access to copy the source code from the same place counts as\n"
+"distribution of the source code, even though third parties are not\n"
+"compelled to copy the source along with the object code.\n"
+"\n"
+"  4. You may not copy, modify, sublicense, or distribute the Program\n"
+"except as expressly provided under this License.  Any attempt\n"
+"otherwise to copy, modify, sublicense or distribute the Program is\n"
+"void, and will automatically terminate your rights under this License.\n"
+"However, parties who have received copies, or rights, from you under\n"
+"this License will not have their licenses terminated so long as such\n"
+"parties remain in full compliance.\n"
+"\n"
+"  5. You are not required to accept this License, since you have not\n"
+"signed it.  However, nothing else grants you permission to modify or\n"
+"distribute the Program or its derivative works.  These actions are\n"
+"prohibited by law if you do not accept this License.  Therefore, by\n"
+"modifying or distributing the Program (or any work based on the\n"
+"Program), you indicate your acceptance of this License to do so, and\n"
+"all its terms and conditions for copying, distributing or modifying\n"
+"the Program or works based on it.\n"
+"\n"
+"  6. Each time you redistribute the Program (or any work based on the\n"
+"Program), the recipient automatically receives a license from the\n"
+"original licensor to copy, distribute or modify the Program subject to\n"
+"these terms and conditions.  You may not impose any further\n"
+"restrictions on the recipients' exercise of the rights granted herein.\n"
+"You are not responsible for enforcing compliance by third parties to\n"
+"this License.\n"
+"\n"
+"  7. If, as a consequence of a court judgment or allegation of patent\n"
+"infringement or for any other reason (not limited to patent issues),\n"
+"conditions are imposed on you (whether by court order, agreement or\n"
+"otherwise) that contradict the conditions of this License, they do not\n"
+"excuse you from the conditions of this License.  If you cannot\n"
+"distribute so as to satisfy simultaneously your obligations under this\n"
+"License and any other pertinent obligations, then as a consequence you\n"
+"may not distribute the Program at all.  For example, if a patent\n"
+"license would not permit royalty-free redistribution of the Program by\n"
+"all those who receive copies directly or indirectly through you, then\n"
+"the only way you could satisfy both it and this License would be to\n"
+"refrain entirely from distribution of the Program.\n"
+"\n"
+"If any portion of this section is held invalid or unenforceable under\n"
+"any particular circumstance, the balance of the section is intended to\n"
+"apply and the section as a whole is intended to apply in other\n"
+"circumstances.\n"
+"\n"
+"It is not the purpose of this section to induce you to infringe any\n"
+"patents or other property right claims or to contest validity of any\n"
+"such claims; this section has the sole purpose of protecting the\n"
+"integrity of the free software distribution system, which is\n"
+"implemented by public license practices.  Many people have made\n"
+"generous contributions to the wide range of software distributed\n"
+"through that system in reliance on consistent application of that\n"
+"system; it is up to the author/donor to decide if he or she is willing\n"
+"to distribute software through any other system and a licensee cannot\n"
+"impose that choice.\n"
+"\n"
+"This section is intended to make thoroughly clear what is believed to\n"
+"be a consequence of the rest of this License.\n"
+"\n"
+"  8. If the distribution and/or use of the Program is restricted in\n"
+"certain countries either by patents or by copyrighted interfaces, the\n"
+"original copyright holder who places the Program under this License\n"
+"may add an explicit geographical distribution limitation excluding\n"
+"those countries, so that distribution is permitted only in or among\n"
+"countries not thus excluded.  In such case, this License incorporates\n"
+"the limitation as if written in the body of this License.\n"
+"\n"
+"  9. The Free Software Foundation may publish revised and/or new versions\n"
+"of the General Public License from time to time.  Such new versions will\n"
+"be similar in spirit to the present version, but may differ in detail to\n"
+"address new problems or concerns.\n"
+"\n"
+"Each version is given a distinguishing version number.  If the Program\n"
+"specifies a version number of this License which applies to it and \"any\n"
+"later version\", you have the option of following the terms and conditions\n"
+"either of that version or of any later version published by the Free\n"
+"Software Foundation.  If the Program does not specify a version number of\n"
+"this License, you may choose any version ever published by the Free Software\n"
+"Foundation.\n"
+"\n"
+"  10. If you wish to incorporate parts of the Program into other free\n"
+"programs whose distribution conditions are different, write to the author\n"
+"to ask for permission.  For software which is copyrighted by the Free\n"
+"Software Foundation, write to the Free Software Foundation; we sometimes\n"
+"make exceptions for this.  Our decision will be guided by the two goals\n"
+"of preserving the free status of all derivatives of our free software and\n"
+"of promoting the sharing and reuse of software generally.\n"
+"\n"
+"			    NO WARRANTY\n"
+"\n"
+"  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\n"
+"FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\n"
+"OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\n"
+"PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\n"
+"OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n"
+"MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\n"
+"TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\n"
+"PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\n"
+"REPAIR OR CORRECTION.\n"
+"\n"
+"  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\n"
+"WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\n"
+"REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\n"
+"INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\n"
+"OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\n"
+"TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\n"
+"YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\n"
+"PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\n"
+"POSSIBILITY OF SUCH DAMAGES.\n"
+"\n"
+"		     END OF TERMS AND CONDITIONS\n"
+"\n"
+"	Appendix: How to Apply These Terms to Your New Programs\n"
+"\n"
+"  If you develop a new program, and you want it to be of the greatest\n"
+"possible use to the public, the best way to achieve this is to make it\n"
+"free software which everyone can redistribute and change under these terms.\n"
+"\n"
+"  To do so, attach the following notices to the program.  It is safest\n"
+"to attach them to the start of each source file to most effectively\n"
+"convey the exclusion of warranty; and each file should have at least\n"
+"the \"copyright\" line and a pointer to where the full notice is found.\n"
+"\n"
+"    <one line to give the program's name and a brief idea of what it does.>\n"
+"    Copyright (C) 19yy  <name of author>\n"
+"\n"
+"    This program is free software; you can redistribute it and/or modify\n"
+"    it under the terms of the GNU General Public License as published by\n"
+"    the Free Software Foundation; either version 2 of the License, or\n"
+"    (at your option) any later version.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"    but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+"    GNU General Public License for more details.\n"
+"\n"
+"    You should have received a copy of the GNU General Public License\n"
+"    along with this program; if not, write to the Free Software\n"
+"    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\n"
+"\n"
+"Also add information on how to contact you by electronic and paper mail.\n"
+"\n"
+"If the program is interactive, make it output a short notice like this\n"
+"when it starts in an interactive mode:\n"
+"\n"
+"    Gnomovision version 69, Copyright (C) 19yy name of author\n"
+"    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n"
+"    This is free software, and you are welcome to redistribute it\n"
+"    under certain conditions; type `show c' for details.\n"
+"\n"
+"The hypothetical commands `show w' and `show c' should show the appropriate\n"
+"parts of the General Public License.  Of course, the commands you use may\n"
+"be called something other than `show w' and `show c'; they could even be\n"
+"mouse-clicks or menu items--whatever suits your program.\n"
+"\n"
+"You should also get your employer (if you work as a programmer) or your\n"
+"school, if any, to sign a \"copyright disclaimer\" for the program, if\n"
+"necessary.  Here is a sample; alter the names:\n"
+"\n"
+"  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n"
+"  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n"
+"\n"
+"  <signature of Ty Coon>, 1 April 1989\n"
+"  Ty Coon, President of Vice\n"
+"\n"
+"This General Public License does not permit incorporating your program into\n"
+"proprietary programs.  If your program is a subroutine library, you may\n"
+"consider it more useful to permit linking proprietary applications with the\n"
+"library.  If this is what you want to do, use the GNU Library General\n"
+"Public License instead of this License.\n"
+"\n"
+"-------------------------------------------------------------------------\n"
+"</PRE>";

Added: kde-extras/tora/branches/upstream/current/src/Makefile.am
===================================================================
--- kde-extras/tora/branches/upstream/current/src/Makefile.am	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/Makefile.am	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,750 @@
+# require version or better
+AUTOMAKE_OPTIONS = 1.7
+
+bin_PROGRAMS=tora
+
+METASOURCES = AUTO
+
+TRANSLATIONS= \
+	i18n/tora_se.ts \
+	i18n/tora_fr.ts \
+	i18n/tora_it.ts \
+	i18n/tora_toad.ts
+
+LOKIDIR_INC=$(top_srcdir)/ext/loki/loki-0.1.6/include
+LOKIDIR_SRC=$(top_srcdir)/ext/loki/loki-0.1.6/src
+
+AM_CPPFLAGS = -I$(top_srcdir)/ext/otl -I$(LOKIDIR_INC) $(KDE_INCLUDES) $(QT_INCLUDES) $(LTDLINCL)
+AM_CPPFLAGS += $(PCRE_CFLAGS) \
+	-DDEFAULT_PLUGIN_DIR=\"$(libdir)\" \
+	-DTOVERSION=\"$(PACKAGE_VERSION)\" \
+	$(ORACLE_CXXFLAGS) \
+	$(QSCINTILLA_CXXFLAGS)
+
+AM_LDFLAGS = $(PCRE_LIBS) \
+	$(KDE_LDFLAGS) \
+	$(X_LDFLAGS) \
+	$(QT_LDFLAGS) \
+	$(LIB_KPARTS) \
+	$(LIB_KDEPRINT) \
+	$(LIB_KDECORE) \
+	$(LIB_KDEUI) \
+	$(LIB_KIO) \
+	$(LIB_KFILE) \
+	$(LIB_DCOP) \
+	$(LIB_KHTML) \
+	-lqscintilla \
+	-lstdc++ \
+	$(LIBPTHREAD) \
+	$(ORACLE_LDFLAGS) \
+	$(QSCINTILLA_LDFLAGS)
+
+# fix for annoying automake naming problems.
+tora_CXXFLAGS  = $(AM_CXXFLAGS)
+
+tora_LDADD = $(ORACLE_LIBS) $(@TORA_LINK_OTHERS@)
+
+if HAVE_ORACLE
+EXTRA_ORACLE_MONO_SOURCE = tooracleconnection.cpp \
+	tooracleextract.cpp \
+	tooraclesettingui.cpp tooraclesettingui.h
+endif
+
+if ENABLE_MONO
+EXTRA_tora_SOURCES = toalert.cpp toalert.h \
+    toanalyze.cpp toanalyze.h  \
+    tobackup.cpp tobackup.h \
+    tobackuptool.cpp tobackuptool.h \
+    tobrowser.cpp tobrowser.h  \
+    tobarchart.cpp tobarchart.h  \
+    tocurrent.cpp tocurrent.h \
+    todebug.cpp todebug.h  \
+    toeditextensions.cpp toeditextensions.h  \
+    todatatype.cpp todatatype.h  \
+    toinvalid.cpp toinvalid.h \
+    tooutput.cpp tooutput.h \
+    topassword.cpp \
+    toprofiler.cpp toprofiler.h \
+    toproject.cpp toproject.h \
+    toqsqlconnection.cpp \
+    torollback.cpp torollback.h  \
+    toscript.cpp toscript.h  \
+    tosecurity.cpp tosecurity.h  \
+    tosession.cpp tosession.h \
+    tosgatrace.cpp tosgatrace.h \
+    tosqledit.cpp tosqledit.h \
+    tostorage.cpp tostorage.h  \
+    tostoragedefinition.cpp tostoragedefinition.h  \
+    totemplate.cpp totemplate.h  \
+    totemporary.cpp totemporary.h \
+    totuning.cpp totuning.h  \
+    tochangeconnection.cpp tochangeconnection.h  \
+    toworksheet.cpp toworksheet.h  \
+    toworksheetstatistic.cpp toworksheetstatistic.h \
+    tobrowserconstraint.cpp tobrowserconstraint.h  \
+    tobrowserconstraintui.cpp tobrowserconstraintui.h  \
+    tobrowserfilterui.cpp tobrowserfilterui.h  \
+    tobrowserindex.cpp tobrowserindex.h  \
+    tobrowserindexui.cpp tobrowserindexui.h  \
+    tobrowsertable.cpp tobrowsertable.h  \
+    tobrowsertableui.cpp tobrowsertableui.h \
+    tochartalarmui.cpp tochartalarmui.h  \
+    tochartmanager.cpp tochartmanager.h  \
+    tochartsetupui.cpp tochartsetupui.h  \
+    tolegendchart.cpp tolegendchart.h  \
+    tolinechart.cpp tolinechart.h  \
+    tolinechartsetupui.cpp tolinechartsetupui.h  \
+    topiechart.cpp topiechart.h  \
+    toresultbar.cpp toresultbar.h  \
+    toresultline.cpp toresultline.h  \
+    toresultpie.cpp toresultpie.h \
+    todebugwatch.cpp todebugwatch.h  \
+    todebugtext.cpp todebugtext.h  \
+    todebugchangeui.cpp todebugchangeui.h \
+    toeditextensiongotoui.cpp toeditextensiongotoui.h  \
+    toeditextensionsetupui.cpp toeditextensionsetupui.h \
+    toextract.cpp toextract.h  \
+    toreport.cpp toreport.h  \
+    toresultconstraint.cpp toresultconstraint.h  \
+    toresultextract.cpp toresultextract.h \
+    toresultcols.cpp toresultcols.h  \
+	toresultcolscomment.cpp toresultcolscomment.h \
+    toresultcombo.cpp toresultcombo.h  \
+    toresultcontent.cpp toresultcontent.h  \
+    toresultcontentfilterui.cpp toresultcontentfilterui.h  \
+    toresultdepend.cpp toresultdepend.h  \
+    toresultindexes.cpp toresultindexes.h  \
+    toresultlabel.cpp toresultlabel.h  \
+    toresultlock.cpp toresultlock.h  \
+    toresultlong.cpp toresultlong.h  \
+    toresultplan.cpp toresultplan.h  \
+    toresultparam.cpp toresultparam.h  \
+    toresultreferences.cpp toresultreferences.h  \
+    toresultstorage.cpp toresultstorage.h \
+    torollbackdialogui.cpp torollbackdialogui.h \
+    toscriptui.cpp toscriptui.h \
+    tosecurityquotaui.cpp tosecurityquotaui.h  \
+    tosecurityroleui.cpp tosecurityroleui.h  \
+    tosecurityuserui.cpp tosecurityuserui.h \
+    tostoragedatafileui.cpp tostoragedatafileui.h  \
+    tostoragedialogui.cpp tostoragedialogui.h  \
+    tostorageprefsui.cpp tostorageprefsui.h  \
+    tostoragetablespaceui.cpp tostoragetablespaceui.h \
+    tostoragedefinitionui.cpp tostoragedefinitionui.h \
+    totemplateaddfileui.cpp totemplateaddfileui.h  \
+    totemplateeditui.cpp totemplateeditui.h  \
+    totemplatesetupui.cpp totemplatesetupui.h \
+    totuningoverviewui.cpp totuningoverviewui.h  \
+    totuningsettingui.cpp totuningsettingui.h \
+    tofilesize.cpp tofilesize.h  \
+    tosgastatement.cpp tosgastatement.h  \
+    totableselect.cpp totableselect.h  \
+    tovisualize.cpp tovisualize.h  \
+    towaitevents.cpp towaitevents.h \
+    toworksheetsetupui.cpp toworksheetsetupui.h \
+    $(EXTRA_ORACLE_MONO_SOURCE)
+endif
+
+tora_SOURCES=main.cpp \
+	toabout.cpp toabout.h \
+	toaboutui.cpp toaboutui.h \
+	tobackground.cpp tobackground.h \
+	tobackgroundlabel.cpp tobackgroundlabel.h \
+	toconfiguration.cpp toconfiguration.h \
+	toconnection.cpp toconnection.h \
+	todatabasesettingui.cpp todatabasesettingui.h \
+	toeditwidget.cpp toeditwidget.h \
+	toglobalsetting.cpp toglobalsetting.h \
+	toglobalsettingui.cpp toglobalsettingui.h \
+	tohelp.cpp tohelp.h \
+	tohelpaddfileui.cpp tohelpaddfileui.h \
+	tohelpsetupui.cpp tohelpsetupui.h \
+	tohelpbrowser.h \
+	tohighlightedtext.cpp tohighlightedtext.h \
+	tohtml.cpp tohtml.h \
+	tolistviewformatter.cpp tolistviewformatter.h \
+	tolistviewformattercsv.cpp tolistviewformattercsv.h \
+	tolistviewformatterfactory.h \
+	tolistviewformatterhtml.cpp tolistviewformatterhtml.h \
+	tolistviewformatteridentifier.h \
+	tolistviewformattersql.cpp tolistviewformattersql.h \
+	tolistviewformattertabdel.cpp tolistviewformattertabdel.h \
+	tolistviewformattertext.cpp tolistviewformattertext.h \
+	tomain.cpp tomain.h \
+	tomarkedtext.cpp tomarkedtext.h \
+	tomemoeditor.cpp tomemoeditor.h \
+	tomessageui.cpp tomessageui.h \
+	tonewconnection.cpp tonewconnection.h \
+	tonewconnectionui.cpp tonewconnectionui.h \
+	tonoblockquery.cpp tonoblockquery.h \
+	toparamget.cpp toparamget.h \
+	topreferences.cpp topreferences.h \
+	topreferencesui.cpp topreferencesui.h \
+	toresult.cpp toresult.h \
+	toresultfield.cpp toresultfield.h \
+	toresultitem.cpp toresultitem.h \
+	toresultlistformatui.cpp toresultlistformatui.h \
+	toresultstats.cpp toresultstats.h \
+	toresultview.cpp toresultview.h \
+	tosearchreplace.cpp tosearchreplace.h \
+	tosearchreplaceui.cpp tosearchreplaceui.h \
+	tosmtp.cpp tosmtp.h \
+	tosplash.cpp tosplash.h \
+	tosql.cpp tosql.h \
+	tosqlparse.cpp tosqlparse.h \
+	tosyntaxsetup.cpp tosyntaxsetup.h \
+	tosyntaxsetupui.cpp tosyntaxsetupui.h \
+	totabwidget.cpp totabwidget.h \
+	totemplateprovider.cpp \
+	totextview.cpp totextview.h \
+	tothread.cpp tothread.h \
+	totimer.cpp totimer.h \
+	totool.cpp totool.h \
+	totoolsettingui.cpp totoolsettingui.h todroptablespaceui.h \
+	todroptablespaceui.cpp utils.cpp utils.h \
+	$(LOKIDIR_SRC)/SmallObj.cpp \
+	$(LOKIDIR_SRC)/Singleton.cpp \
+	$(EXTRA_tora_SOURCES)
+
+UI_FILES =	toaboutui.ui \
+		tobrowserconstraintui.ui \
+		tobrowserfilterui.ui \
+		tobrowserindexui.ui \
+		tobrowsertableui.ui \
+		tooraclesettingui.ui \
+		tostoragetablespaceui.ui \
+		tochartalarmui.ui \
+		topreferencesui.ui \
+		tosyntaxsetupui.ui \
+		tochartsetupui.ui \
+		toresultcontentfilterui.ui \
+		totemplateaddfileui.ui \
+		todatabasesettingui.ui \
+		toresultlistformatui.ui \
+		totemplateeditui.ui \
+		todebugchangeui.ui \
+		torollbackdialogui.ui \
+		totemplatesetupui.ui \
+		todebugwatch.ui \
+		toscriptui.ui \
+		totoolsettingui.ui \
+		toeditextensiongotoui.ui \
+		tosearchreplaceui.ui \
+		totuningoverviewui.ui \
+		toeditextensionsetupui.ui \
+		tosecurityquotaui.ui \
+	      	totuningsettingui.ui \
+		toglobalsettingui.ui \
+		tosecurityroleui.ui \
+	        toworksheetsetupui.ui \
+		tohelpaddfileui.ui \
+	        tosecurityuserui.ui \
+		tohelpsetupui.ui \
+		tostoragedatafileui.ui \
+		tolinechartsetupui.ui \
+		tostoragedefinitionui.ui \
+		tomessageui.ui \
+		tostoragedialogui.ui \
+		tonewconnectionui.ui \
+		tostorageprefsui.ui \
+		todroptablespaceui.ui
+
+
+EXTRA_DIST = icons \
+	templates \
+	windows \
+	$(UI_FILES) \
+	Makefile.am \
+	LICENSE.h \
+	toconf.h \
+	todefaultkeywords.h \
+	toextratranslations.cpp \
+	tomainwindow.h \
+	tomainwindow.kde.h \
+	tomysqlkeywords.h \
+	toocistub.cpp \
+	tooraclepreload.cpp \
+	toqvalue.h \
+	toresultresources.h \
+	$(TRANSLATIONS) \
+	LICENSE.h
+
+# this is a hack (but it *is* mentioned in the automake manual, of all
+# places). EXTRA_DIST includes all files, even things like CVS
+# folders. so we delete them here. but specifying all the files in
+# those subdirs would suck more because many of them are generated
+# (help api for one).
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+
+# mrj: this sorta sucks. there's a lot of generated source files...
+# the old build system distributed the .depends folder in the source
+# tarball, which is the old way of handling the dependencies.  that's
+# not fully portable. using BUILT_SOURCES is the (relatively speaking)
+# new work around. this is mainly why i've required automake >= 1.6.
+
+# files listed in BUILT_SOURCES are built before anything else.
+BUILT_SOURCES = \
+	toabout.moc \
+	toaboutui.moc \
+	toalert.moc \
+	toanalyze.moc \
+	tobackup.moc \
+	tobarchart.moc \
+	tobrowser.moc \
+	tobrowserconstraint.moc \
+	tobrowserconstraintui.moc \
+	tobrowserfilterui.moc \
+	tobrowserindex.moc \
+	tobrowserindexui.moc \
+	tobrowsertable.moc \
+	tobrowsertableui.moc \
+	tochangeconnection.moc \
+	tochartalarmui.moc \
+	tochartmanager.moc \
+	tochartsetupui.moc \
+	tocurrent.moc \
+	todatabasesettingui.moc \
+	todatatype.moc \
+	todebug.moc \
+	todebugchangeui.moc \
+	todebugwatch.moc \
+	todebugtext.moc \
+	todroptablespaceui.moc \
+	toeditextensiongotoui.moc \
+	toeditextensions.moc \
+	toeditextensionsetupui.moc \
+	tofilesize.moc \
+	toglobalsettingui.moc \
+	tohelp.moc \
+	tohelpbrowser.moc \
+	tohelpaddfileui.moc \
+	tohelpbrowser.moc \
+	tohelpsetupui.moc \
+	tohighlightedtext.moc \
+	toinvalid.moc \
+	tolegendchart.moc \
+	tolinechart.moc \
+	tolinechartsetupui.moc \
+	tomain.moc \
+	tomainwindow.kde.moc \
+	tomainwindow.moc \
+	tomarkedtext.moc \
+	tomemoeditor.moc \
+	tomessageui.moc \
+	tonewconnection.moc \
+	tonewconnectionui.moc \
+	tooraclesettingui.moc \
+	tooutput.moc \
+	toparamget.moc \
+	topiechart.moc \
+	topreferences.moc \
+	topreferencesui.moc \
+	toprofiler.moc \
+	toproject.moc \
+	toresult.moc \
+	toresultbar.moc \
+	toresultcols.moc \
+	toresultcolscomment.moc \
+	toresultcombo.moc \
+	toresultconstraint.moc \
+	toresultcontent.moc \
+	toresultcontentfilterui.moc \
+	toresultdepend.moc \
+	toresultextract.moc \
+	toresultfield.moc \
+	toresultindexes.moc \
+	toresultitem.moc \
+	toresultlabel.moc \
+	toresultline.moc \
+	toresultlistformatui.moc \
+	toresultlock.moc \
+	toresultlong.moc \
+	toresultparam.moc \
+	toresultpie.moc \
+	toresultplan.moc \
+	toresultreferences.moc \
+	toresultstats.moc \
+	toresultstorage.moc \
+	toresultview.moc \
+	torollback.moc \
+	torollbackdialogui.moc \
+	toscript.moc \
+	toscriptui.moc \
+	tosearchreplace.moc \
+	tosearchreplaceui.moc \
+	tosecurity.moc \
+	tosecurityquotaui.moc \
+	tosecurityroleui.moc \
+	tosecurityuserui.moc \
+	tosession.moc \
+	tosgastatement.moc \
+	tosgatrace.moc \
+	tosmtp.moc \
+	tosqledit.moc \
+	tostorage.moc \
+	tostoragedatafileui.moc \
+	tostoragedefinitionui.moc \
+	tostoragedialogui.moc \
+	tostorageprefsui.moc \
+	tostoragetablespaceui.moc \
+	tosyntaxsetup.moc \
+	tosyntaxsetupui.moc \
+	totableselect.moc \
+	totabwidget.moc \
+	totemplate.moc \
+	totemplateaddfileui.moc \
+	totemplateeditui.moc \
+	totemplatesetupui.moc \
+	totemporary.moc \
+	totool.moc \
+	totoolsettingui.moc \
+	totuning.moc \
+	totuningoverviewui.moc \
+	totuningsettingui.moc \
+	tovisualize.moc \
+	towaitevents.moc \
+	toworksheet.moc \
+	toworksheetsetupui.moc \
+	toworksheetstatistic.moc \
+	utils.moc \
+	toaboutui.cpp \
+	todroptablespaceui.cpp \
+	tobrowserconstraintui.cpp \
+	tobrowserfilterui.cpp \
+	tobrowserindexui.cpp \
+	tobrowsertableui.cpp \
+	tochartalarmui.cpp \
+	tochartsetupui.cpp \
+	todatabasesettingui.cpp \
+	todebugchangeui.cpp \
+	todebugwatch.cpp \
+	toaboutui.h \
+	todroptablespaceui.h \
+	tobrowserconstraintui.h \
+	tobrowserfilterui.h \
+	tobrowserindexui.h \
+	tobrowsertableui.h \
+	tochartalarmui.h \
+	tochartsetupui.h \
+	todatabasesettingui.h \
+	todebugchangeui.h \
+	todebugwatch.h \
+	toeditextensiongotoui.h \
+	toeditextensionsetupui.h \
+	toglobalsettingui.h \
+	tohelpaddfileui.h \
+	tohelpsetupui.h \
+	tolinechartsetupui.h \
+	tomessageui.h \
+	tonewconnectionui.h \
+	tooraclesettingui.h \
+	topreferencesui.h \
+	toresultcontentfilterui.h \
+	toresultlistformatui.h \
+	torollbackdialogui.h \
+	toscriptui.h \
+	tosearchreplaceui.h \
+	tosecurityquotaui.h \
+	tosecurityroleui.h \
+	tosecurityuserui.h \
+	tostoragedatafileui.h \
+	tostoragedefinitionui.h \
+	tostoragedialogui.h \
+	tostorageprefsui.h \
+	tostoragetablespaceui.h \
+	tosyntaxsetupui.h \
+	totemplateaddfileui.h \
+	totemplateeditui.h \
+	totemplatesetupui.h \
+	totoolsettingui.h \
+	totuningoverviewui.h \
+	totuningsettingui.h \
+	toworksheetsetupui.h \
+	toaboutui.cpp \
+	tobrowserconstraintui.cpp \
+	tobrowserfilterui.cpp \
+	tobrowserindexui.cpp \
+	tobrowsertableui.cpp \
+	tochartalarmui.cpp \
+	tochartsetupui.cpp \
+	todatabasesettingui.cpp \
+	todebugchangeui.cpp \
+	todebugwatch.cpp \
+	toeditextensiongotoui.cpp \
+	toeditextensionsetupui.cpp \
+	toglobalsettingui.cpp \
+	tohelpaddfileui.cpp \
+	tohelpsetupui.cpp \
+	tolinechartsetupui.cpp \
+	tomessageui.cpp \
+	tonewconnectionui.cpp \
+	tooraclesettingui.cpp \
+	topreferencesui.cpp \
+	toresultcontentfilterui.cpp \
+	toresultlistformatui.cpp \
+	torollbackdialogui.cpp \
+	toscriptui.cpp \
+	tosearchreplaceui.cpp \
+	tosecurityquotaui.cpp \
+	tosecurityroleui.cpp \
+	tosecurityuserui.cpp \
+	tostoragedatafileui.cpp \
+	tostoragedefinitionui.cpp \
+	tostoragedialogui.cpp \
+	tostorageprefsui.cpp \
+	tostoragetablespaceui.cpp \
+	tosyntaxsetupui.cpp \
+	totemplateaddfileui.cpp \
+	totemplateeditui.cpp \
+	totemplatesetupui.cpp \
+	totoolsettingui.cpp \
+	totuningoverviewui.cpp \
+	totuningsettingui.cpp \
+	toworksheetsetupui.cpp \
+	$(filter %.qm,$(TRANSLATIONS:%.ts=%.qm)) \
+	tora_toad.h 
+
+# have_oracle conditional. these libraries are not built if oracle is
+# not present.
+if HAVE_ORACLE
+OPTLIB_ORA = libtooracleconnection.la
+else
+OPTlIB_ORA =
+endif
+
+plugins = libtoalert.la \
+	libtoanalyze.la \
+	libtobackup.la \
+	libtobrowser.la \
+	libtochart.la \
+	libtocurrent.la \
+	libtodebug.la \
+	libtoeditextensions.la \
+	libtoextract.la \
+	libtoinvalid.la \
+	libtooutput.la \
+	libtopassword.la \
+	libtoprofiler.la \
+	libtoproject.la \
+	libtoqsqlconnection.la \
+	libtoresult.la \
+	libtorollback.la \
+	libtoscript.la \
+	libtosecurity.la \
+	libtosession.la \
+	libtosgatrace.la \
+	libtosqledit.la \
+	libtostorage.la \
+	libtostoragedefinition.la \
+	libtotemplate.la \
+	libtotemporary.la \
+	libtotuning.la \
+	libtowidget.la \
+	libtoworksheet.la \
+	$(OPTLIB_ORA)
+
+if !ENABLE_MONO
+lib_LTLIBRARIES = $(plugins)
+endif
+
+PFLAGS = -avoid-version -rpath $(libdir) -module -shared
+
+libtoalert_la_LDFLAGS = $(PFLAGS)
+libtoalert_la_SOURCES = toalert.cpp toalert.h
+
+libtoanalyze_la_LDFLAGS = $(PFLAGS)
+libtoanalyze_la_SOURCES = toanalyze.cpp toanalyze.h \
+	toworksheetstatistic.cpp toworksheetstatistic.h
+
+libtobackup_la_LDFLAGS = $(PFLAGS)
+libtobackup_la_SOURCES = tobackup.cpp tobackup.h \
+			tobackuptool.cpp tobackuptool.h
+
+libtobrowser_la_LDFLAGS = $(PFLAGS)
+libtobrowser_la_SOURCES = tobrowser.cpp tobrowser.h \
+	tobrowserconstraint.cpp tobrowserconstraint.h \
+	tobrowserconstraintui.cpp tobrowserconstraintui.h \
+	tobrowserfilterui.cpp tobrowserfilterui.h \
+	tobrowserindex.cpp tobrowserindex.h \
+	tobrowserindexui.cpp tobrowserindexui.h \
+	tobrowsertable.cpp tobrowsertable.h \
+	tobrowsertableui.cpp tobrowsertableui.h
+
+libtochart_la_LDFLAGS = $(PFLAGS)
+libtochart_la_SOURCES = tobarchart.cpp tobarchart.h \
+	tochartalarmui.cpp tochartalarmui.h \
+	tochartmanager.cpp tochartmanager.h \
+	tochartsetupui.cpp tochartsetupui.h \
+	tolegendchart.cpp tolegendchart.h \
+	tolinechart.cpp tolinechart.h \
+	tolinechartsetupui.cpp tolinechartsetupui.h \
+	topiechart.cpp topiechart.h \
+	toresultbar.cpp toresultbar.h \
+	toresultline.cpp toresultline.h \
+	toresultpie.cpp toresultpie.h
+
+libtocurrent_la_LDFLAGS = $(PFLAGS)
+libtocurrent_la_SOURCES = tocurrent.cpp tocurrent.h
+
+libtodebug_la_LDFLAGS = $(PFLAGS)
+libtodebug_la_SOURCES = todebug.cpp todebug.h \
+	todebugwatch.cpp todebugwatch.h \
+	todebugtext.cpp todebugtext.h \
+	todebugchangeui.cpp todebugchangeui.h
+
+libtoeditextensions_la_LDFLAGS = $(PFLAGS)
+libtoeditextensions_la_SOURCES = toeditextensions.cpp toeditextensions.h \
+	toeditextensiongotoui.cpp toeditextensiongotoui.h \
+	toeditextensionsetupui.cpp toeditextensionsetupui.h
+
+libtoextract_la_LDFLAGS = $(PFLAGS)
+libtoextract_la_SOURCES = todatatype.cpp todatatype.h \
+	toextract.cpp toextract.h \
+	toreport.cpp toreport.h \
+	toresultconstraint.cpp toresultconstraint.h \
+	toresultextract.cpp toresultextract.h
+
+libtoinvalid_la_LDFLAGS = $(PFLAGS)
+libtoinvalid_la_SOURCES = toinvalid.cpp toinvalid.h
+
+if HAVE_ORACLE
+libtooracleconnection_la_LIBADD    = $(ORACLE_LIBS)
+libtooracleconnection_la_CXXFLAGS  = $(ORACLE_CXXFLAGS) -DOTL_FUNC_THROW_SPEC_ON
+libtooracleconnection_la_LDFLAGS   = $(PFLAGS) $(ORACLE_LDFLAGS)
+libtooracleconnection_la_SOURCES   =	tooracleconnection.cpp \
+	tooracleextract.cpp \
+	tooraclesettingui.cpp tooraclesettingui.h
+endif
+
+libtooutput_la_LDFLAGS = $(PFLAGS)
+libtooutput_la_SOURCES = tooutput.cpp tooutput.h
+
+libtopassword_la_LDFLAGS = $(PFLAGS)
+libtopassword_la_SOURCES =	topassword.cpp
+
+libtoprofiler_la_LDFLAGS = $(PFLAGS)
+libtoprofiler_la_SOURCES = toprofiler.cpp toprofiler.h
+
+libtoproject_la_LDFLAGS = $(PFLAGS)
+libtoproject_la_SOURCES = toproject.cpp toproject.h
+
+libtoqsqlconnection_la_LDFLAGS = $(PFLAGS)
+libtoqsqlconnection_la_SOURCES = toqsqlconnection.cpp
+
+libtoresult_la_LDFLAGS = $(PFLAGS)
+libtoresult_la_SOURCES = \
+	toresultcols.cpp toresultcols.h \
+	toresultcolscomment.cpp toresultcolscomment.h \
+	toresultcombo.cpp toresultcombo.h \
+	toresultcontent.cpp toresultcontent.h \
+	toresultcontentfilterui.cpp toresultcontentfilterui.h \
+	toresultdepend.cpp toresultdepend.h \
+	toresultindexes.cpp toresultindexes.h \
+	toresultlabel.cpp toresultlabel.h \
+	toresultlock.cpp toresultlock.h \
+	toresultlong.cpp toresultlong.h \
+	toresultplan.cpp toresultplan.h \
+	toresultparam.cpp toresultparam.h \
+	toresultreferences.cpp toresultreferences.h \
+	toresultstorage.cpp toresultstorage.h
+
+libtorollback_la_LDFLAGS = $(PFLAGS)
+libtorollback_la_SOURCES =	torollback.cpp torollback.h \
+	torollbackdialogui.cpp torollbackdialogui.h
+
+libtoscript_la_LDFLAGS = $(PFLAGS)
+libtoscript_la_SOURCES = toscript.cpp toscript.h \
+	toscriptui.cpp toscriptui.h
+
+libtosecurity_la_LDFLAGS = $(PFLAGS)
+libtosecurity_la_SOURCES = tosecurity.cpp tosecurity.h \
+	tosecurityquotaui.cpp tosecurityquotaui.h \
+	tosecurityroleui.cpp tosecurityroleui.h \
+	tosecurityuserui.cpp tosecurityuserui.h
+
+libtosession_la_LDFLAGS = $(PFLAGS)
+libtosession_la_SOURCES = tosession.cpp tosession.h
+
+libtosgatrace_la_LDFLAGS = $(PFLAGS)
+libtosgatrace_la_SOURCES = tosgatrace.cpp tosgatrace.h
+
+libtosqledit_la_LDFLAGS = $(PFLAGS)
+libtosqledit_la_SOURCES = tosqledit.cpp tosqledit.h
+
+libtostorage_la_LDFLAGS = $(PFLAGS)
+libtostorage_la_SOURCES = tostorage.cpp tostorage.h \
+	tostoragedatafileui.cpp tostoragedatafileui.h \
+	tostoragedialogui.cpp tostoragedialogui.h \
+	tostorageprefsui.cpp tostorageprefsui.h \
+	tostoragetablespaceui.cpp tostoragetablespaceui.h
+
+libtostoragedefinition_la_LDFLAGS = $(PFLAGS)
+libtostoragedefinition_la_SOURCES = tostoragedefinition.cpp tostoragedefinition.h \
+	tostoragedefinitionui.cpp tostoragedefinitionui.h
+
+libtotemplate_la_LDFLAGS = $(PFLAGS)
+libtotemplate_la_SOURCES = totemplate.cpp totemplate.h \
+	totemplateaddfileui.cpp totemplateaddfileui.h \
+	totemplateeditui.cpp totemplateeditui.h \
+	totemplatesetupui.cpp totemplatesetupui.h
+
+libtotemporary_la_LDFLAGS = $(PFLAGS)
+libtotemporary_la_SOURCES = totemporary.cpp totemporary.h
+
+libtotuning_la_LDFLAGS = $(PFLAGS)
+libtotuning_la_SOURCES = totuning.cpp totuning.h \
+	totuningoverviewui.cpp totuningoverviewui.h \
+	totuningsettingui.cpp totuningsettingui.h
+
+libtowidget_la_LDFLAGS = $(PFLAGS)
+libtowidget_la_SOURCES = tochangeconnection.cpp tochangeconnection.h \
+	tofilesize.cpp tofilesize.h \
+	tosgastatement.cpp tosgastatement.h \
+	totableselect.cpp totableselect.h \
+	tovisualize.cpp tovisualize.h \
+	towaitevents.cpp towaitevents.h
+
+libtoworksheet_la_LDFLAGS = $(PFLAGS)
+libtoworksheet_la_SOURCES = toworksheet.cpp toworksheet.h \
+	toworksheetsetupui.cpp toworksheetsetupui.h
+
+.ui.h:
+	$(UIC) -o $@ $<
+
+%.cpp: %.h %.ui
+	$(UIC) -o $@ -i $^
+
+.h.moc:
+	$(MOC) -o $@ $<
+
+.ts.qm:
+	@if ! test -d i18n; then mkdir i18n; echo "create i18n"; fi
+	$(LRELEASE) $< -qm $@ 
+
+clean-local:
+	rm -f *.moc
+	for file in `ls *.ui`; do \
+		rm -f `echo $$file | sed 's/\.ui/\.cpp/g'`; \
+		rm -f `echo $$file | sed 's/\.ui/\.h/g'`; \
+	done
+
+tora_toad.h: i18n/tora_toad.qm
+	$(top_builddir)/utils/chex/chex $< > $@
+
+tora.pro: Makefile.am
+	echo "# Not indended to be used for anything except lupdate" > tora.pro
+	echo 'SOURCES=	\ ' >> tora.pro
+	echo '	main.cpp \ ' >> tora.pro
+	echo '	toextratranslations.cpp \ ' >> tora.pro
+	echo "	$(tora_SOURCES)" >> tora.pro
+	echo 'TRANSLATIONS=$(TRANSLATIONS)' >> tora.pro
+
+lupdate: tora.pro
+	$(LUPDATE) tora.pro
+
+lrelease: tora.pro $(TRANSLATIONS)
+	$(LRELEASE) tora.pro
+
+install-data-hook:
+	cp -f $(top_builddir)/src/i18n/*.qm $(DESTDIR)$(libdir)

Added: kde-extras/tora/branches/upstream/current/src/Makefile.in
===================================================================
--- kde-extras/tora/branches/upstream/current/src/Makefile.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/Makefile.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,4249 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = tora$(EXEEXT)
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/m4/cppunit.m4 \
+	$(top_srcdir)/config/m4/oracle.m4 \
+	$(top_srcdir)/config/m4/pcre.m4 \
+	$(top_srcdir)/config/m4/qtkde.m4 \
+	$(top_srcdir)/config/m4/tora.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+libtoalert_la_LIBADD =
+am_libtoalert_la_OBJECTS = toalert.lo
+libtoalert_la_OBJECTS = $(am_libtoalert_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoalert_la_rpath = -rpath $(libdir)
+libtoanalyze_la_LIBADD =
+am_libtoanalyze_la_OBJECTS = toanalyze.lo toworksheetstatistic.lo
+libtoanalyze_la_OBJECTS = $(am_libtoanalyze_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoanalyze_la_rpath = -rpath $(libdir)
+libtobackup_la_LIBADD =
+am_libtobackup_la_OBJECTS = tobackup.lo tobackuptool.lo
+libtobackup_la_OBJECTS = $(am_libtobackup_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtobackup_la_rpath = -rpath $(libdir)
+libtobrowser_la_LIBADD =
+am_libtobrowser_la_OBJECTS = tobrowser.lo tobrowserconstraint.lo \
+	tobrowserconstraintui.lo tobrowserfilterui.lo \
+	tobrowserindex.lo tobrowserindexui.lo tobrowsertable.lo \
+	tobrowsertableui.lo
+libtobrowser_la_OBJECTS = $(am_libtobrowser_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtobrowser_la_rpath = -rpath $(libdir)
+libtochart_la_LIBADD =
+am_libtochart_la_OBJECTS = tobarchart.lo tochartalarmui.lo \
+	tochartmanager.lo tochartsetupui.lo tolegendchart.lo \
+	tolinechart.lo tolinechartsetupui.lo topiechart.lo \
+	toresultbar.lo toresultline.lo toresultpie.lo
+libtochart_la_OBJECTS = $(am_libtochart_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtochart_la_rpath = -rpath $(libdir)
+libtocurrent_la_LIBADD =
+am_libtocurrent_la_OBJECTS = tocurrent.lo
+libtocurrent_la_OBJECTS = $(am_libtocurrent_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtocurrent_la_rpath = -rpath $(libdir)
+libtodebug_la_LIBADD =
+am_libtodebug_la_OBJECTS = todebug.lo todebugwatch.lo todebugtext.lo \
+	todebugchangeui.lo
+libtodebug_la_OBJECTS = $(am_libtodebug_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtodebug_la_rpath = -rpath $(libdir)
+libtoeditextensions_la_LIBADD =
+am_libtoeditextensions_la_OBJECTS = toeditextensions.lo \
+	toeditextensiongotoui.lo toeditextensionsetupui.lo
+libtoeditextensions_la_OBJECTS = $(am_libtoeditextensions_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoeditextensions_la_rpath = -rpath $(libdir)
+libtoextract_la_LIBADD =
+am_libtoextract_la_OBJECTS = todatatype.lo toextract.lo toreport.lo \
+	toresultconstraint.lo toresultextract.lo
+libtoextract_la_OBJECTS = $(am_libtoextract_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoextract_la_rpath = -rpath $(libdir)
+libtoinvalid_la_LIBADD =
+am_libtoinvalid_la_OBJECTS = toinvalid.lo
+libtoinvalid_la_OBJECTS = $(am_libtoinvalid_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoinvalid_la_rpath = -rpath $(libdir)
+am__DEPENDENCIES_1 =
+ at HAVE_ORACLE_TRUE@libtooracleconnection_la_DEPENDENCIES =  \
+ at HAVE_ORACLE_TRUE@	$(am__DEPENDENCIES_1)
+am__libtooracleconnection_la_SOURCES_DIST = tooracleconnection.cpp \
+	tooracleextract.cpp tooraclesettingui.cpp tooraclesettingui.h
+ at HAVE_ORACLE_TRUE@am_libtooracleconnection_la_OBJECTS = libtooracleconnection_la-tooracleconnection.lo \
+ at HAVE_ORACLE_TRUE@	libtooracleconnection_la-tooracleextract.lo \
+ at HAVE_ORACLE_TRUE@	libtooracleconnection_la-tooraclesettingui.lo
+libtooracleconnection_la_OBJECTS =  \
+	$(am_libtooracleconnection_la_OBJECTS)
+ at ENABLE_MONO_FALSE@@HAVE_ORACLE_TRUE at am_libtooracleconnection_la_rpath =  \
+ at ENABLE_MONO_FALSE@@HAVE_ORACLE_TRUE@	-rpath $(libdir)
+libtooutput_la_LIBADD =
+am_libtooutput_la_OBJECTS = tooutput.lo
+libtooutput_la_OBJECTS = $(am_libtooutput_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtooutput_la_rpath = -rpath $(libdir)
+libtopassword_la_LIBADD =
+am_libtopassword_la_OBJECTS = topassword.lo
+libtopassword_la_OBJECTS = $(am_libtopassword_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtopassword_la_rpath = -rpath $(libdir)
+libtoprofiler_la_LIBADD =
+am_libtoprofiler_la_OBJECTS = toprofiler.lo
+libtoprofiler_la_OBJECTS = $(am_libtoprofiler_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoprofiler_la_rpath = -rpath $(libdir)
+libtoproject_la_LIBADD =
+am_libtoproject_la_OBJECTS = toproject.lo
+libtoproject_la_OBJECTS = $(am_libtoproject_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoproject_la_rpath = -rpath $(libdir)
+libtoqsqlconnection_la_LIBADD =
+am_libtoqsqlconnection_la_OBJECTS = toqsqlconnection.lo
+libtoqsqlconnection_la_OBJECTS = $(am_libtoqsqlconnection_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoqsqlconnection_la_rpath = -rpath $(libdir)
+libtoresult_la_LIBADD =
+am_libtoresult_la_OBJECTS = toresultcols.lo toresultcolscomment.lo \
+	toresultcombo.lo toresultcontent.lo toresultcontentfilterui.lo \
+	toresultdepend.lo toresultindexes.lo toresultlabel.lo \
+	toresultlock.lo toresultlong.lo toresultplan.lo \
+	toresultparam.lo toresultreferences.lo toresultstorage.lo
+libtoresult_la_OBJECTS = $(am_libtoresult_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoresult_la_rpath = -rpath $(libdir)
+libtorollback_la_LIBADD =
+am_libtorollback_la_OBJECTS = torollback.lo torollbackdialogui.lo
+libtorollback_la_OBJECTS = $(am_libtorollback_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtorollback_la_rpath = -rpath $(libdir)
+libtoscript_la_LIBADD =
+am_libtoscript_la_OBJECTS = toscript.lo toscriptui.lo
+libtoscript_la_OBJECTS = $(am_libtoscript_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoscript_la_rpath = -rpath $(libdir)
+libtosecurity_la_LIBADD =
+am_libtosecurity_la_OBJECTS = tosecurity.lo tosecurityquotaui.lo \
+	tosecurityroleui.lo tosecurityuserui.lo
+libtosecurity_la_OBJECTS = $(am_libtosecurity_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtosecurity_la_rpath = -rpath $(libdir)
+libtosession_la_LIBADD =
+am_libtosession_la_OBJECTS = tosession.lo
+libtosession_la_OBJECTS = $(am_libtosession_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtosession_la_rpath = -rpath $(libdir)
+libtosgatrace_la_LIBADD =
+am_libtosgatrace_la_OBJECTS = tosgatrace.lo
+libtosgatrace_la_OBJECTS = $(am_libtosgatrace_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtosgatrace_la_rpath = -rpath $(libdir)
+libtosqledit_la_LIBADD =
+am_libtosqledit_la_OBJECTS = tosqledit.lo
+libtosqledit_la_OBJECTS = $(am_libtosqledit_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtosqledit_la_rpath = -rpath $(libdir)
+libtostorage_la_LIBADD =
+am_libtostorage_la_OBJECTS = tostorage.lo tostoragedatafileui.lo \
+	tostoragedialogui.lo tostorageprefsui.lo \
+	tostoragetablespaceui.lo
+libtostorage_la_OBJECTS = $(am_libtostorage_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtostorage_la_rpath = -rpath $(libdir)
+libtostoragedefinition_la_LIBADD =
+am_libtostoragedefinition_la_OBJECTS = tostoragedefinition.lo \
+	tostoragedefinitionui.lo
+libtostoragedefinition_la_OBJECTS =  \
+	$(am_libtostoragedefinition_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtostoragedefinition_la_rpath = -rpath \
+ at ENABLE_MONO_FALSE@	$(libdir)
+libtotemplate_la_LIBADD =
+am_libtotemplate_la_OBJECTS = totemplate.lo totemplateaddfileui.lo \
+	totemplateeditui.lo totemplatesetupui.lo
+libtotemplate_la_OBJECTS = $(am_libtotemplate_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtotemplate_la_rpath = -rpath $(libdir)
+libtotemporary_la_LIBADD =
+am_libtotemporary_la_OBJECTS = totemporary.lo
+libtotemporary_la_OBJECTS = $(am_libtotemporary_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtotemporary_la_rpath = -rpath $(libdir)
+libtotuning_la_LIBADD =
+am_libtotuning_la_OBJECTS = totuning.lo totuningoverviewui.lo \
+	totuningsettingui.lo
+libtotuning_la_OBJECTS = $(am_libtotuning_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtotuning_la_rpath = -rpath $(libdir)
+libtowidget_la_LIBADD =
+am_libtowidget_la_OBJECTS = tochangeconnection.lo tofilesize.lo \
+	tosgastatement.lo totableselect.lo tovisualize.lo \
+	towaitevents.lo
+libtowidget_la_OBJECTS = $(am_libtowidget_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtowidget_la_rpath = -rpath $(libdir)
+libtoworksheet_la_LIBADD =
+am_libtoworksheet_la_OBJECTS = toworksheet.lo toworksheetsetupui.lo
+libtoworksheet_la_OBJECTS = $(am_libtoworksheet_la_OBJECTS)
+ at ENABLE_MONO_FALSE@am_libtoworksheet_la_rpath = -rpath $(libdir)
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am__tora_SOURCES_DIST = main.cpp toabout.cpp toabout.h toaboutui.cpp \
+	toaboutui.h tobackground.cpp tobackground.h \
+	tobackgroundlabel.cpp tobackgroundlabel.h toconfiguration.cpp \
+	toconfiguration.h toconnection.cpp toconnection.h \
+	todatabasesettingui.cpp todatabasesettingui.h toeditwidget.cpp \
+	toeditwidget.h toglobalsetting.cpp toglobalsetting.h \
+	toglobalsettingui.cpp toglobalsettingui.h tohelp.cpp tohelp.h \
+	tohelpaddfileui.cpp tohelpaddfileui.h tohelpsetupui.cpp \
+	tohelpsetupui.h tohelpbrowser.h tohighlightedtext.cpp \
+	tohighlightedtext.h tohtml.cpp tohtml.h \
+	tolistviewformatter.cpp tolistviewformatter.h \
+	tolistviewformattercsv.cpp tolistviewformattercsv.h \
+	tolistviewformatterfactory.h tolistviewformatterhtml.cpp \
+	tolistviewformatterhtml.h tolistviewformatteridentifier.h \
+	tolistviewformattersql.cpp tolistviewformattersql.h \
+	tolistviewformattertabdel.cpp tolistviewformattertabdel.h \
+	tolistviewformattertext.cpp tolistviewformattertext.h \
+	tomain.cpp tomain.h tomarkedtext.cpp tomarkedtext.h \
+	tomemoeditor.cpp tomemoeditor.h tomessageui.cpp tomessageui.h \
+	tonewconnection.cpp tonewconnection.h tonewconnectionui.cpp \
+	tonewconnectionui.h tonoblockquery.cpp tonoblockquery.h \
+	toparamget.cpp toparamget.h topreferences.cpp topreferences.h \
+	topreferencesui.cpp topreferencesui.h toresult.cpp toresult.h \
+	toresultfield.cpp toresultfield.h toresultitem.cpp \
+	toresultitem.h toresultlistformatui.cpp toresultlistformatui.h \
+	toresultstats.cpp toresultstats.h toresultview.cpp \
+	toresultview.h tosearchreplace.cpp tosearchreplace.h \
+	tosearchreplaceui.cpp tosearchreplaceui.h tosmtp.cpp tosmtp.h \
+	tosplash.cpp tosplash.h tosql.cpp tosql.h tosqlparse.cpp \
+	tosqlparse.h tosyntaxsetup.cpp tosyntaxsetup.h \
+	tosyntaxsetupui.cpp tosyntaxsetupui.h totabwidget.cpp \
+	totabwidget.h totemplateprovider.cpp totextview.cpp \
+	totextview.h tothread.cpp tothread.h totimer.cpp totimer.h \
+	totool.cpp totool.h totoolsettingui.cpp totoolsettingui.h \
+	todroptablespaceui.h todroptablespaceui.cpp utils.cpp utils.h \
+	$(LOKIDIR_SRC)/SmallObj.cpp $(LOKIDIR_SRC)/Singleton.cpp \
+	toalert.cpp toalert.h toanalyze.cpp toanalyze.h tobackup.cpp \
+	tobackup.h tobackuptool.cpp tobackuptool.h tobrowser.cpp \
+	tobrowser.h tobarchart.cpp tobarchart.h tocurrent.cpp \
+	tocurrent.h todebug.cpp todebug.h toeditextensions.cpp \
+	toeditextensions.h todatatype.cpp todatatype.h toinvalid.cpp \
+	toinvalid.h tooutput.cpp tooutput.h topassword.cpp \
+	toprofiler.cpp toprofiler.h toproject.cpp toproject.h \
+	toqsqlconnection.cpp torollback.cpp torollback.h toscript.cpp \
+	toscript.h tosecurity.cpp tosecurity.h tosession.cpp \
+	tosession.h tosgatrace.cpp tosgatrace.h tosqledit.cpp \
+	tosqledit.h tostorage.cpp tostorage.h tostoragedefinition.cpp \
+	tostoragedefinition.h totemplate.cpp totemplate.h \
+	totemporary.cpp totemporary.h totuning.cpp totuning.h \
+	tochangeconnection.cpp tochangeconnection.h toworksheet.cpp \
+	toworksheet.h toworksheetstatistic.cpp toworksheetstatistic.h \
+	tobrowserconstraint.cpp tobrowserconstraint.h \
+	tobrowserconstraintui.cpp tobrowserconstraintui.h \
+	tobrowserfilterui.cpp tobrowserfilterui.h tobrowserindex.cpp \
+	tobrowserindex.h tobrowserindexui.cpp tobrowserindexui.h \
+	tobrowsertable.cpp tobrowsertable.h tobrowsertableui.cpp \
+	tobrowsertableui.h tochartalarmui.cpp tochartalarmui.h \
+	tochartmanager.cpp tochartmanager.h tochartsetupui.cpp \
+	tochartsetupui.h tolegendchart.cpp tolegendchart.h \
+	tolinechart.cpp tolinechart.h tolinechartsetupui.cpp \
+	tolinechartsetupui.h topiechart.cpp topiechart.h \
+	toresultbar.cpp toresultbar.h toresultline.cpp toresultline.h \
+	toresultpie.cpp toresultpie.h todebugwatch.cpp todebugwatch.h \
+	todebugtext.cpp todebugtext.h todebugchangeui.cpp \
+	todebugchangeui.h toeditextensiongotoui.cpp \
+	toeditextensiongotoui.h toeditextensionsetupui.cpp \
+	toeditextensionsetupui.h toextract.cpp toextract.h \
+	toreport.cpp toreport.h toresultconstraint.cpp \
+	toresultconstraint.h toresultextract.cpp toresultextract.h \
+	toresultcols.cpp toresultcols.h toresultcolscomment.cpp \
+	toresultcolscomment.h toresultcombo.cpp toresultcombo.h \
+	toresultcontent.cpp toresultcontent.h \
+	toresultcontentfilterui.cpp toresultcontentfilterui.h \
+	toresultdepend.cpp toresultdepend.h toresultindexes.cpp \
+	toresultindexes.h toresultlabel.cpp toresultlabel.h \
+	toresultlock.cpp toresultlock.h toresultlong.cpp \
+	toresultlong.h toresultplan.cpp toresultplan.h \
+	toresultparam.cpp toresultparam.h toresultreferences.cpp \
+	toresultreferences.h toresultstorage.cpp toresultstorage.h \
+	torollbackdialogui.cpp torollbackdialogui.h toscriptui.cpp \
+	toscriptui.h tosecurityquotaui.cpp tosecurityquotaui.h \
+	tosecurityroleui.cpp tosecurityroleui.h tosecurityuserui.cpp \
+	tosecurityuserui.h tostoragedatafileui.cpp \
+	tostoragedatafileui.h tostoragedialogui.cpp \
+	tostoragedialogui.h tostorageprefsui.cpp tostorageprefsui.h \
+	tostoragetablespaceui.cpp tostoragetablespaceui.h \
+	tostoragedefinitionui.cpp tostoragedefinitionui.h \
+	totemplateaddfileui.cpp totemplateaddfileui.h \
+	totemplateeditui.cpp totemplateeditui.h totemplatesetupui.cpp \
+	totemplatesetupui.h totuningoverviewui.cpp \
+	totuningoverviewui.h totuningsettingui.cpp totuningsettingui.h \
+	tofilesize.cpp tofilesize.h tosgastatement.cpp \
+	tosgastatement.h totableselect.cpp totableselect.h \
+	tovisualize.cpp tovisualize.h towaitevents.cpp towaitevents.h \
+	toworksheetsetupui.cpp toworksheetsetupui.h \
+	tooracleconnection.cpp tooracleextract.cpp \
+	tooraclesettingui.cpp tooraclesettingui.h
+ at HAVE_ORACLE_TRUE@am__objects_1 = tora-tooracleconnection.$(OBJEXT) \
+ at HAVE_ORACLE_TRUE@	tora-tooracleextract.$(OBJEXT) \
+ at HAVE_ORACLE_TRUE@	tora-tooraclesettingui.$(OBJEXT)
+ at ENABLE_MONO_TRUE@am__objects_2 = tora-toalert.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toanalyze.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobackup.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobackuptool.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobrowser.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobarchart.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tocurrent.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-todebug.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toeditextensions.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-todatatype.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toinvalid.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tooutput.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-topassword.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toprofiler.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toproject.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toqsqlconnection.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-torollback.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toscript.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tosecurity.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tosession.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tosgatrace.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tosqledit.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tostorage.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tostoragedefinition.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-totemplate.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-totemporary.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-totuning.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tochangeconnection.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toworksheet.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toworksheetstatistic.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobrowserconstraint.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobrowserconstraintui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobrowserfilterui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobrowserindex.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobrowserindexui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobrowsertable.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tobrowsertableui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tochartalarmui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tochartmanager.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tochartsetupui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tolegendchart.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tolinechart.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tolinechartsetupui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-topiechart.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultbar.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultline.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultpie.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-todebugwatch.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-todebugtext.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-todebugchangeui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toeditextensiongotoui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toeditextensionsetupui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toextract.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toreport.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultconstraint.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultextract.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultcols.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultcolscomment.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultcombo.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultcontent.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultcontentfilterui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultdepend.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultindexes.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultlabel.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultlock.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultlong.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultplan.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultparam.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultreferences.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toresultstorage.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-torollbackdialogui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toscriptui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tosecurityquotaui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tosecurityroleui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tosecurityuserui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tostoragedatafileui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tostoragedialogui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tostorageprefsui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tostoragetablespaceui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tostoragedefinitionui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-totemplateaddfileui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-totemplateeditui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-totemplatesetupui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-totuningoverviewui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-totuningsettingui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tofilesize.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tosgastatement.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-totableselect.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-tovisualize.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-towaitevents.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	tora-toworksheetsetupui.$(OBJEXT) \
+ at ENABLE_MONO_TRUE@	$(am__objects_1)
+am_tora_OBJECTS = tora-main.$(OBJEXT) tora-toabout.$(OBJEXT) \
+	tora-toaboutui.$(OBJEXT) tora-tobackground.$(OBJEXT) \
+	tora-tobackgroundlabel.$(OBJEXT) \
+	tora-toconfiguration.$(OBJEXT) tora-toconnection.$(OBJEXT) \
+	tora-todatabasesettingui.$(OBJEXT) tora-toeditwidget.$(OBJEXT) \
+	tora-toglobalsetting.$(OBJEXT) \
+	tora-toglobalsettingui.$(OBJEXT) tora-tohelp.$(OBJEXT) \
+	tora-tohelpaddfileui.$(OBJEXT) tora-tohelpsetupui.$(OBJEXT) \
+	tora-tohighlightedtext.$(OBJEXT) tora-tohtml.$(OBJEXT) \
+	tora-tolistviewformatter.$(OBJEXT) \
+	tora-tolistviewformattercsv.$(OBJEXT) \
+	tora-tolistviewformatterhtml.$(OBJEXT) \
+	tora-tolistviewformattersql.$(OBJEXT) \
+	tora-tolistviewformattertabdel.$(OBJEXT) \
+	tora-tolistviewformattertext.$(OBJEXT) tora-tomain.$(OBJEXT) \
+	tora-tomarkedtext.$(OBJEXT) tora-tomemoeditor.$(OBJEXT) \
+	tora-tomessageui.$(OBJEXT) tora-tonewconnection.$(OBJEXT) \
+	tora-tonewconnectionui.$(OBJEXT) tora-tonoblockquery.$(OBJEXT) \
+	tora-toparamget.$(OBJEXT) tora-topreferences.$(OBJEXT) \
+	tora-topreferencesui.$(OBJEXT) tora-toresult.$(OBJEXT) \
+	tora-toresultfield.$(OBJEXT) tora-toresultitem.$(OBJEXT) \
+	tora-toresultlistformatui.$(OBJEXT) \
+	tora-toresultstats.$(OBJEXT) tora-toresultview.$(OBJEXT) \
+	tora-tosearchreplace.$(OBJEXT) \
+	tora-tosearchreplaceui.$(OBJEXT) tora-tosmtp.$(OBJEXT) \
+	tora-tosplash.$(OBJEXT) tora-tosql.$(OBJEXT) \
+	tora-tosqlparse.$(OBJEXT) tora-tosyntaxsetup.$(OBJEXT) \
+	tora-tosyntaxsetupui.$(OBJEXT) tora-totabwidget.$(OBJEXT) \
+	tora-totemplateprovider.$(OBJEXT) tora-totextview.$(OBJEXT) \
+	tora-tothread.$(OBJEXT) tora-totimer.$(OBJEXT) \
+	tora-totool.$(OBJEXT) tora-totoolsettingui.$(OBJEXT) \
+	tora-todroptablespaceui.$(OBJEXT) tora-utils.$(OBJEXT) \
+	tora-SmallObj.$(OBJEXT) tora-Singleton.$(OBJEXT) \
+	$(am__objects_2)
+am__EXTRA_tora_SOURCES_DIST = toalert.cpp toalert.h toanalyze.cpp \
+	toanalyze.h tobackup.cpp tobackup.h tobackuptool.cpp \
+	tobackuptool.h tobrowser.cpp tobrowser.h tobarchart.cpp \
+	tobarchart.h tocurrent.cpp tocurrent.h todebug.cpp todebug.h \
+	toeditextensions.cpp toeditextensions.h todatatype.cpp \
+	todatatype.h toinvalid.cpp toinvalid.h tooutput.cpp tooutput.h \
+	topassword.cpp toprofiler.cpp toprofiler.h toproject.cpp \
+	toproject.h toqsqlconnection.cpp torollback.cpp torollback.h \
+	toscript.cpp toscript.h tosecurity.cpp tosecurity.h \
+	tosession.cpp tosession.h tosgatrace.cpp tosgatrace.h \
+	tosqledit.cpp tosqledit.h tostorage.cpp tostorage.h \
+	tostoragedefinition.cpp tostoragedefinition.h totemplate.cpp \
+	totemplate.h totemporary.cpp totemporary.h totuning.cpp \
+	totuning.h tochangeconnection.cpp tochangeconnection.h \
+	toworksheet.cpp toworksheet.h toworksheetstatistic.cpp \
+	toworksheetstatistic.h tobrowserconstraint.cpp \
+	tobrowserconstraint.h tobrowserconstraintui.cpp \
+	tobrowserconstraintui.h tobrowserfilterui.cpp \
+	tobrowserfilterui.h tobrowserindex.cpp tobrowserindex.h \
+	tobrowserindexui.cpp tobrowserindexui.h tobrowsertable.cpp \
+	tobrowsertable.h tobrowsertableui.cpp tobrowsertableui.h \
+	tochartalarmui.cpp tochartalarmui.h tochartmanager.cpp \
+	tochartmanager.h tochartsetupui.cpp tochartsetupui.h \
+	tolegendchart.cpp tolegendchart.h tolinechart.cpp \
+	tolinechart.h tolinechartsetupui.cpp tolinechartsetupui.h \
+	topiechart.cpp topiechart.h toresultbar.cpp toresultbar.h \
+	toresultline.cpp toresultline.h toresultpie.cpp toresultpie.h \
+	todebugwatch.cpp todebugwatch.h todebugtext.cpp todebugtext.h \
+	todebugchangeui.cpp todebugchangeui.h \
+	toeditextensiongotoui.cpp toeditextensiongotoui.h \
+	toeditextensionsetupui.cpp toeditextensionsetupui.h \
+	toextract.cpp toextract.h toreport.cpp toreport.h \
+	toresultconstraint.cpp toresultconstraint.h \
+	toresultextract.cpp toresultextract.h toresultcols.cpp \
+	toresultcols.h toresultcolscomment.cpp toresultcolscomment.h \
+	toresultcombo.cpp toresultcombo.h toresultcontent.cpp \
+	toresultcontent.h toresultcontentfilterui.cpp \
+	toresultcontentfilterui.h toresultdepend.cpp toresultdepend.h \
+	toresultindexes.cpp toresultindexes.h toresultlabel.cpp \
+	toresultlabel.h toresultlock.cpp toresultlock.h \
+	toresultlong.cpp toresultlong.h toresultplan.cpp \
+	toresultplan.h toresultparam.cpp toresultparam.h \
+	toresultreferences.cpp toresultreferences.h \
+	toresultstorage.cpp toresultstorage.h torollbackdialogui.cpp \
+	torollbackdialogui.h toscriptui.cpp toscriptui.h \
+	tosecurityquotaui.cpp tosecurityquotaui.h tosecurityroleui.cpp \
+	tosecurityroleui.h tosecurityuserui.cpp tosecurityuserui.h \
+	tostoragedatafileui.cpp tostoragedatafileui.h \
+	tostoragedialogui.cpp tostoragedialogui.h tostorageprefsui.cpp \
+	tostorageprefsui.h tostoragetablespaceui.cpp \
+	tostoragetablespaceui.h tostoragedefinitionui.cpp \
+	tostoragedefinitionui.h totemplateaddfileui.cpp \
+	totemplateaddfileui.h totemplateeditui.cpp totemplateeditui.h \
+	totemplatesetupui.cpp totemplatesetupui.h \
+	totuningoverviewui.cpp totuningoverviewui.h \
+	totuningsettingui.cpp totuningsettingui.h tofilesize.cpp \
+	tofilesize.h tosgastatement.cpp tosgastatement.h \
+	totableselect.cpp totableselect.h tovisualize.cpp \
+	tovisualize.h towaitevents.cpp towaitevents.h \
+	toworksheetsetupui.cpp toworksheetsetupui.h \
+	tooracleconnection.cpp tooracleextract.cpp \
+	tooraclesettingui.cpp tooraclesettingui.h
+tora_OBJECTS = $(am_tora_OBJECTS)
+tora_DEPENDENCIES = $(am__DEPENDENCIES_1)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(libtoalert_la_SOURCES) $(libtoanalyze_la_SOURCES) \
+	$(libtobackup_la_SOURCES) $(libtobrowser_la_SOURCES) \
+	$(libtochart_la_SOURCES) $(libtocurrent_la_SOURCES) \
+	$(libtodebug_la_SOURCES) $(libtoeditextensions_la_SOURCES) \
+	$(libtoextract_la_SOURCES) $(libtoinvalid_la_SOURCES) \
+	$(libtooracleconnection_la_SOURCES) $(libtooutput_la_SOURCES) \
+	$(libtopassword_la_SOURCES) $(libtoprofiler_la_SOURCES) \
+	$(libtoproject_la_SOURCES) $(libtoqsqlconnection_la_SOURCES) \
+	$(libtoresult_la_SOURCES) $(libtorollback_la_SOURCES) \
+	$(libtoscript_la_SOURCES) $(libtosecurity_la_SOURCES) \
+	$(libtosession_la_SOURCES) $(libtosgatrace_la_SOURCES) \
+	$(libtosqledit_la_SOURCES) $(libtostorage_la_SOURCES) \
+	$(libtostoragedefinition_la_SOURCES) \
+	$(libtotemplate_la_SOURCES) $(libtotemporary_la_SOURCES) \
+	$(libtotuning_la_SOURCES) $(libtowidget_la_SOURCES) \
+	$(libtoworksheet_la_SOURCES) $(tora_SOURCES) \
+	$(EXTRA_tora_SOURCES)
+DIST_SOURCES = $(libtoalert_la_SOURCES) $(libtoanalyze_la_SOURCES) \
+	$(libtobackup_la_SOURCES) $(libtobrowser_la_SOURCES) \
+	$(libtochart_la_SOURCES) $(libtocurrent_la_SOURCES) \
+	$(libtodebug_la_SOURCES) $(libtoeditextensions_la_SOURCES) \
+	$(libtoextract_la_SOURCES) $(libtoinvalid_la_SOURCES) \
+	$(am__libtooracleconnection_la_SOURCES_DIST) \
+	$(libtooutput_la_SOURCES) $(libtopassword_la_SOURCES) \
+	$(libtoprofiler_la_SOURCES) $(libtoproject_la_SOURCES) \
+	$(libtoqsqlconnection_la_SOURCES) $(libtoresult_la_SOURCES) \
+	$(libtorollback_la_SOURCES) $(libtoscript_la_SOURCES) \
+	$(libtosecurity_la_SOURCES) $(libtosession_la_SOURCES) \
+	$(libtosgatrace_la_SOURCES) $(libtosqledit_la_SOURCES) \
+	$(libtostorage_la_SOURCES) \
+	$(libtostoragedefinition_la_SOURCES) \
+	$(libtotemplate_la_SOURCES) $(libtotemporary_la_SOURCES) \
+	$(libtotuning_la_SOURCES) $(libtowidget_la_SOURCES) \
+	$(libtoworksheet_la_SOURCES) $(am__tora_SOURCES_DIST) \
+	$(am__EXTRA_tora_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_FALSE = @CPPUNIT_FALSE@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CPPUNIT_TRUE = @CPPUNIT_TRUE@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MONO_FALSE = @ENABLE_MONO_FALSE@
+ENABLE_MONO_TRUE = @ENABLE_MONO_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GREP = @GREP@
+HAVE_ORACLE_FALSE = @HAVE_ORACLE_FALSE@
+HAVE_ORACLE_TRUE = @HAVE_ORACLE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISODATE = @ISODATE@
+KDECONFIG = @KDECONFIG@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBXINERAMA = @LIBXINERAMA@
+LIBZ = @LIBZ@
+LIB_DCOP = @LIB_DCOP@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KFILE = @LIB_KFILE@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIO = @LIB_KIO@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+LUPDATE = @LUPDATE@
+MAKEINFO = @MAKEINFO@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+OBJEXT = @OBJEXT@
+ORACLE_CXXFLAGS = @ORACLE_CXXFLAGS@
+ORACLE_LDFLAGS = @ORACLE_LDFLAGS@
+ORACLE_LIBS = @ORACLE_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_LIBS = @PCRE_LIBS@
+QSCINTILLA_CXXFLAGS = @QSCINTILLA_CXXFLAGS@
+QSCINTILLA_LDFLAGS = @QSCINTILLA_LDFLAGS@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TORA_LINK_OTHERS = @TORA_LINK_OTHERS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+
+# require version or better
+AUTOMAKE_OPTIONS = 1.7
+METASOURCES = AUTO
+TRANSLATIONS = \
+	i18n/tora_se.ts \
+	i18n/tora_fr.ts \
+	i18n/tora_it.ts \
+	i18n/tora_toad.ts
+
+LOKIDIR_INC = $(top_srcdir)/ext/loki/loki-0.1.6/include
+LOKIDIR_SRC = $(top_srcdir)/ext/loki/loki-0.1.6/src
+AM_CPPFLAGS = -I$(top_srcdir)/ext/otl -I$(LOKIDIR_INC) $(KDE_INCLUDES) \
+	$(QT_INCLUDES) $(LTDLINCL) $(PCRE_CFLAGS) \
+	-DDEFAULT_PLUGIN_DIR=\"$(libdir)\" \
+	-DTOVERSION=\"$(PACKAGE_VERSION)\" $(ORACLE_CXXFLAGS) \
+	$(QSCINTILLA_CXXFLAGS)
+AM_LDFLAGS = $(PCRE_LIBS) \
+	$(KDE_LDFLAGS) \
+	$(X_LDFLAGS) \
+	$(QT_LDFLAGS) \
+	$(LIB_KPARTS) \
+	$(LIB_KDEPRINT) \
+	$(LIB_KDECORE) \
+	$(LIB_KDEUI) \
+	$(LIB_KIO) \
+	$(LIB_KFILE) \
+	$(LIB_DCOP) \
+	$(LIB_KHTML) \
+	-lqscintilla \
+	-lstdc++ \
+	$(LIBPTHREAD) \
+	$(ORACLE_LDFLAGS) \
+	$(QSCINTILLA_LDFLAGS)
+
+
+# fix for annoying automake naming problems.
+tora_CXXFLAGS = $(AM_CXXFLAGS)
+tora_LDADD = $(ORACLE_LIBS) $(@TORA_LINK_OTHERS@)
+ at HAVE_ORACLE_TRUE@EXTRA_ORACLE_MONO_SOURCE = tooracleconnection.cpp \
+ at HAVE_ORACLE_TRUE@	tooracleextract.cpp \
+ at HAVE_ORACLE_TRUE@	tooraclesettingui.cpp tooraclesettingui.h
+
+ at ENABLE_MONO_TRUE@EXTRA_tora_SOURCES = toalert.cpp toalert.h \
+ at ENABLE_MONO_TRUE@    toanalyze.cpp toanalyze.h  \
+ at ENABLE_MONO_TRUE@    tobackup.cpp tobackup.h \
+ at ENABLE_MONO_TRUE@    tobackuptool.cpp tobackuptool.h \
+ at ENABLE_MONO_TRUE@    tobrowser.cpp tobrowser.h  \
+ at ENABLE_MONO_TRUE@    tobarchart.cpp tobarchart.h  \
+ at ENABLE_MONO_TRUE@    tocurrent.cpp tocurrent.h \
+ at ENABLE_MONO_TRUE@    todebug.cpp todebug.h  \
+ at ENABLE_MONO_TRUE@    toeditextensions.cpp toeditextensions.h  \
+ at ENABLE_MONO_TRUE@    todatatype.cpp todatatype.h  \
+ at ENABLE_MONO_TRUE@    toinvalid.cpp toinvalid.h \
+ at ENABLE_MONO_TRUE@    tooutput.cpp tooutput.h \
+ at ENABLE_MONO_TRUE@    topassword.cpp \
+ at ENABLE_MONO_TRUE@    toprofiler.cpp toprofiler.h \
+ at ENABLE_MONO_TRUE@    toproject.cpp toproject.h \
+ at ENABLE_MONO_TRUE@    toqsqlconnection.cpp \
+ at ENABLE_MONO_TRUE@    torollback.cpp torollback.h  \
+ at ENABLE_MONO_TRUE@    toscript.cpp toscript.h  \
+ at ENABLE_MONO_TRUE@    tosecurity.cpp tosecurity.h  \
+ at ENABLE_MONO_TRUE@    tosession.cpp tosession.h \
+ at ENABLE_MONO_TRUE@    tosgatrace.cpp tosgatrace.h \
+ at ENABLE_MONO_TRUE@    tosqledit.cpp tosqledit.h \
+ at ENABLE_MONO_TRUE@    tostorage.cpp tostorage.h  \
+ at ENABLE_MONO_TRUE@    tostoragedefinition.cpp tostoragedefinition.h  \
+ at ENABLE_MONO_TRUE@    totemplate.cpp totemplate.h  \
+ at ENABLE_MONO_TRUE@    totemporary.cpp totemporary.h \
+ at ENABLE_MONO_TRUE@    totuning.cpp totuning.h  \
+ at ENABLE_MONO_TRUE@    tochangeconnection.cpp tochangeconnection.h  \
+ at ENABLE_MONO_TRUE@    toworksheet.cpp toworksheet.h  \
+ at ENABLE_MONO_TRUE@    toworksheetstatistic.cpp toworksheetstatistic.h \
+ at ENABLE_MONO_TRUE@    tobrowserconstraint.cpp tobrowserconstraint.h  \
+ at ENABLE_MONO_TRUE@    tobrowserconstraintui.cpp tobrowserconstraintui.h  \
+ at ENABLE_MONO_TRUE@    tobrowserfilterui.cpp tobrowserfilterui.h  \
+ at ENABLE_MONO_TRUE@    tobrowserindex.cpp tobrowserindex.h  \
+ at ENABLE_MONO_TRUE@    tobrowserindexui.cpp tobrowserindexui.h  \
+ at ENABLE_MONO_TRUE@    tobrowsertable.cpp tobrowsertable.h  \
+ at ENABLE_MONO_TRUE@    tobrowsertableui.cpp tobrowsertableui.h \
+ at ENABLE_MONO_TRUE@    tochartalarmui.cpp tochartalarmui.h  \
+ at ENABLE_MONO_TRUE@    tochartmanager.cpp tochartmanager.h  \
+ at ENABLE_MONO_TRUE@    tochartsetupui.cpp tochartsetupui.h  \
+ at ENABLE_MONO_TRUE@    tolegendchart.cpp tolegendchart.h  \
+ at ENABLE_MONO_TRUE@    tolinechart.cpp tolinechart.h  \
+ at ENABLE_MONO_TRUE@    tolinechartsetupui.cpp tolinechartsetupui.h  \
+ at ENABLE_MONO_TRUE@    topiechart.cpp topiechart.h  \
+ at ENABLE_MONO_TRUE@    toresultbar.cpp toresultbar.h  \
+ at ENABLE_MONO_TRUE@    toresultline.cpp toresultline.h  \
+ at ENABLE_MONO_TRUE@    toresultpie.cpp toresultpie.h \
+ at ENABLE_MONO_TRUE@    todebugwatch.cpp todebugwatch.h  \
+ at ENABLE_MONO_TRUE@    todebugtext.cpp todebugtext.h  \
+ at ENABLE_MONO_TRUE@    todebugchangeui.cpp todebugchangeui.h \
+ at ENABLE_MONO_TRUE@    toeditextensiongotoui.cpp toeditextensiongotoui.h  \
+ at ENABLE_MONO_TRUE@    toeditextensionsetupui.cpp toeditextensionsetupui.h \
+ at ENABLE_MONO_TRUE@    toextract.cpp toextract.h  \
+ at ENABLE_MONO_TRUE@    toreport.cpp toreport.h  \
+ at ENABLE_MONO_TRUE@    toresultconstraint.cpp toresultconstraint.h  \
+ at ENABLE_MONO_TRUE@    toresultextract.cpp toresultextract.h \
+ at ENABLE_MONO_TRUE@    toresultcols.cpp toresultcols.h  \
+ at ENABLE_MONO_TRUE@	toresultcolscomment.cpp toresultcolscomment.h \
+ at ENABLE_MONO_TRUE@    toresultcombo.cpp toresultcombo.h  \
+ at ENABLE_MONO_TRUE@    toresultcontent.cpp toresultcontent.h  \
+ at ENABLE_MONO_TRUE@    toresultcontentfilterui.cpp toresultcontentfilterui.h  \
+ at ENABLE_MONO_TRUE@    toresultdepend.cpp toresultdepend.h  \
+ at ENABLE_MONO_TRUE@    toresultindexes.cpp toresultindexes.h  \
+ at ENABLE_MONO_TRUE@    toresultlabel.cpp toresultlabel.h  \
+ at ENABLE_MONO_TRUE@    toresultlock.cpp toresultlock.h  \
+ at ENABLE_MONO_TRUE@    toresultlong.cpp toresultlong.h  \
+ at ENABLE_MONO_TRUE@    toresultplan.cpp toresultplan.h  \
+ at ENABLE_MONO_TRUE@    toresultparam.cpp toresultparam.h  \
+ at ENABLE_MONO_TRUE@    toresultreferences.cpp toresultreferences.h  \
+ at ENABLE_MONO_TRUE@    toresultstorage.cpp toresultstorage.h \
+ at ENABLE_MONO_TRUE@    torollbackdialogui.cpp torollbackdialogui.h \
+ at ENABLE_MONO_TRUE@    toscriptui.cpp toscriptui.h \
+ at ENABLE_MONO_TRUE@    tosecurityquotaui.cpp tosecurityquotaui.h  \
+ at ENABLE_MONO_TRUE@    tosecurityroleui.cpp tosecurityroleui.h  \
+ at ENABLE_MONO_TRUE@    tosecurityuserui.cpp tosecurityuserui.h \
+ at ENABLE_MONO_TRUE@    tostoragedatafileui.cpp tostoragedatafileui.h  \
+ at ENABLE_MONO_TRUE@    tostoragedialogui.cpp tostoragedialogui.h  \
+ at ENABLE_MONO_TRUE@    tostorageprefsui.cpp tostorageprefsui.h  \
+ at ENABLE_MONO_TRUE@    tostoragetablespaceui.cpp tostoragetablespaceui.h \
+ at ENABLE_MONO_TRUE@    tostoragedefinitionui.cpp tostoragedefinitionui.h \
+ at ENABLE_MONO_TRUE@    totemplateaddfileui.cpp totemplateaddfileui.h  \
+ at ENABLE_MONO_TRUE@    totemplateeditui.cpp totemplateeditui.h  \
+ at ENABLE_MONO_TRUE@    totemplatesetupui.cpp totemplatesetupui.h \
+ at ENABLE_MONO_TRUE@    totuningoverviewui.cpp totuningoverviewui.h  \
+ at ENABLE_MONO_TRUE@    totuningsettingui.cpp totuningsettingui.h \
+ at ENABLE_MONO_TRUE@    tofilesize.cpp tofilesize.h  \
+ at ENABLE_MONO_TRUE@    tosgastatement.cpp tosgastatement.h  \
+ at ENABLE_MONO_TRUE@    totableselect.cpp totableselect.h  \
+ at ENABLE_MONO_TRUE@    tovisualize.cpp tovisualize.h  \
+ at ENABLE_MONO_TRUE@    towaitevents.cpp towaitevents.h \
+ at ENABLE_MONO_TRUE@    toworksheetsetupui.cpp toworksheetsetupui.h \
+ at ENABLE_MONO_TRUE@    $(EXTRA_ORACLE_MONO_SOURCE)
+
+tora_SOURCES = main.cpp \
+	toabout.cpp toabout.h \
+	toaboutui.cpp toaboutui.h \
+	tobackground.cpp tobackground.h \
+	tobackgroundlabel.cpp tobackgroundlabel.h \
+	toconfiguration.cpp toconfiguration.h \
+	toconnection.cpp toconnection.h \
+	todatabasesettingui.cpp todatabasesettingui.h \
+	toeditwidget.cpp toeditwidget.h \
+	toglobalsetting.cpp toglobalsetting.h \
+	toglobalsettingui.cpp toglobalsettingui.h \
+	tohelp.cpp tohelp.h \
+	tohelpaddfileui.cpp tohelpaddfileui.h \
+	tohelpsetupui.cpp tohelpsetupui.h \
+	tohelpbrowser.h \
+	tohighlightedtext.cpp tohighlightedtext.h \
+	tohtml.cpp tohtml.h \
+	tolistviewformatter.cpp tolistviewformatter.h \
+	tolistviewformattercsv.cpp tolistviewformattercsv.h \
+	tolistviewformatterfactory.h \
+	tolistviewformatterhtml.cpp tolistviewformatterhtml.h \
+	tolistviewformatteridentifier.h \
+	tolistviewformattersql.cpp tolistviewformattersql.h \
+	tolistviewformattertabdel.cpp tolistviewformattertabdel.h \
+	tolistviewformattertext.cpp tolistviewformattertext.h \
+	tomain.cpp tomain.h \
+	tomarkedtext.cpp tomarkedtext.h \
+	tomemoeditor.cpp tomemoeditor.h \
+	tomessageui.cpp tomessageui.h \
+	tonewconnection.cpp tonewconnection.h \
+	tonewconnectionui.cpp tonewconnectionui.h \
+	tonoblockquery.cpp tonoblockquery.h \
+	toparamget.cpp toparamget.h \
+	topreferences.cpp topreferences.h \
+	topreferencesui.cpp topreferencesui.h \
+	toresult.cpp toresult.h \
+	toresultfield.cpp toresultfield.h \
+	toresultitem.cpp toresultitem.h \
+	toresultlistformatui.cpp toresultlistformatui.h \
+	toresultstats.cpp toresultstats.h \
+	toresultview.cpp toresultview.h \
+	tosearchreplace.cpp tosearchreplace.h \
+	tosearchreplaceui.cpp tosearchreplaceui.h \
+	tosmtp.cpp tosmtp.h \
+	tosplash.cpp tosplash.h \
+	tosql.cpp tosql.h \
+	tosqlparse.cpp tosqlparse.h \
+	tosyntaxsetup.cpp tosyntaxsetup.h \
+	tosyntaxsetupui.cpp tosyntaxsetupui.h \
+	totabwidget.cpp totabwidget.h \
+	totemplateprovider.cpp \
+	totextview.cpp totextview.h \
+	tothread.cpp tothread.h \
+	totimer.cpp totimer.h \
+	totool.cpp totool.h \
+	totoolsettingui.cpp totoolsettingui.h todroptablespaceui.h \
+	todroptablespaceui.cpp utils.cpp utils.h \
+	$(LOKIDIR_SRC)/SmallObj.cpp \
+	$(LOKIDIR_SRC)/Singleton.cpp \
+	$(EXTRA_tora_SOURCES)
+
+UI_FILES = toaboutui.ui \
+		tobrowserconstraintui.ui \
+		tobrowserfilterui.ui \
+		tobrowserindexui.ui \
+		tobrowsertableui.ui \
+		tooraclesettingui.ui \
+		tostoragetablespaceui.ui \
+		tochartalarmui.ui \
+		topreferencesui.ui \
+		tosyntaxsetupui.ui \
+		tochartsetupui.ui \
+		toresultcontentfilterui.ui \
+		totemplateaddfileui.ui \
+		todatabasesettingui.ui \
+		toresultlistformatui.ui \
+		totemplateeditui.ui \
+		todebugchangeui.ui \
+		torollbackdialogui.ui \
+		totemplatesetupui.ui \
+		todebugwatch.ui \
+		toscriptui.ui \
+		totoolsettingui.ui \
+		toeditextensiongotoui.ui \
+		tosearchreplaceui.ui \
+		totuningoverviewui.ui \
+		toeditextensionsetupui.ui \
+		tosecurityquotaui.ui \
+	      	totuningsettingui.ui \
+		toglobalsettingui.ui \
+		tosecurityroleui.ui \
+	        toworksheetsetupui.ui \
+		tohelpaddfileui.ui \
+	        tosecurityuserui.ui \
+		tohelpsetupui.ui \
+		tostoragedatafileui.ui \
+		tolinechartsetupui.ui \
+		tostoragedefinitionui.ui \
+		tomessageui.ui \
+		tostoragedialogui.ui \
+		tonewconnectionui.ui \
+		tostorageprefsui.ui \
+		todroptablespaceui.ui
+
+EXTRA_DIST = icons \
+	templates \
+	windows \
+	$(UI_FILES) \
+	Makefile.am \
+	LICENSE.h \
+	toconf.h \
+	todefaultkeywords.h \
+	toextratranslations.cpp \
+	tomainwindow.h \
+	tomainwindow.kde.h \
+	tomysqlkeywords.h \
+	toocistub.cpp \
+	tooraclepreload.cpp \
+	toqvalue.h \
+	toresultresources.h \
+	$(TRANSLATIONS) \
+	LICENSE.h
+
+
+# mrj: this sorta sucks. there's a lot of generated source files...
+# the old build system distributed the .depends folder in the source
+# tarball, which is the old way of handling the dependencies.  that's
+# not fully portable. using BUILT_SOURCES is the (relatively speaking)
+# new work around. this is mainly why i've required automake >= 1.6.
+
+# files listed in BUILT_SOURCES are built before anything else.
+BUILT_SOURCES = \
+	toabout.moc \
+	toaboutui.moc \
+	toalert.moc \
+	toanalyze.moc \
+	tobackup.moc \
+	tobarchart.moc \
+	tobrowser.moc \
+	tobrowserconstraint.moc \
+	tobrowserconstraintui.moc \
+	tobrowserfilterui.moc \
+	tobrowserindex.moc \
+	tobrowserindexui.moc \
+	tobrowsertable.moc \
+	tobrowsertableui.moc \
+	tochangeconnection.moc \
+	tochartalarmui.moc \
+	tochartmanager.moc \
+	tochartsetupui.moc \
+	tocurrent.moc \
+	todatabasesettingui.moc \
+	todatatype.moc \
+	todebug.moc \
+	todebugchangeui.moc \
+	todebugwatch.moc \
+	todebugtext.moc \
+	todroptablespaceui.moc \
+	toeditextensiongotoui.moc \
+	toeditextensions.moc \
+	toeditextensionsetupui.moc \
+	tofilesize.moc \
+	toglobalsettingui.moc \
+	tohelp.moc \
+	tohelpbrowser.moc \
+	tohelpaddfileui.moc \
+	tohelpbrowser.moc \
+	tohelpsetupui.moc \
+	tohighlightedtext.moc \
+	toinvalid.moc \
+	tolegendchart.moc \
+	tolinechart.moc \
+	tolinechartsetupui.moc \
+	tomain.moc \
+	tomainwindow.kde.moc \
+	tomainwindow.moc \
+	tomarkedtext.moc \
+	tomemoeditor.moc \
+	tomessageui.moc \
+	tonewconnection.moc \
+	tonewconnectionui.moc \
+	tooraclesettingui.moc \
+	tooutput.moc \
+	toparamget.moc \
+	topiechart.moc \
+	topreferences.moc \
+	topreferencesui.moc \
+	toprofiler.moc \
+	toproject.moc \
+	toresult.moc \
+	toresultbar.moc \
+	toresultcols.moc \
+	toresultcolscomment.moc \
+	toresultcombo.moc \
+	toresultconstraint.moc \
+	toresultcontent.moc \
+	toresultcontentfilterui.moc \
+	toresultdepend.moc \
+	toresultextract.moc \
+	toresultfield.moc \
+	toresultindexes.moc \
+	toresultitem.moc \
+	toresultlabel.moc \
+	toresultline.moc \
+	toresultlistformatui.moc \
+	toresultlock.moc \
+	toresultlong.moc \
+	toresultparam.moc \
+	toresultpie.moc \
+	toresultplan.moc \
+	toresultreferences.moc \
+	toresultstats.moc \
+	toresultstorage.moc \
+	toresultview.moc \
+	torollback.moc \
+	torollbackdialogui.moc \
+	toscript.moc \
+	toscriptui.moc \
+	tosearchreplace.moc \
+	tosearchreplaceui.moc \
+	tosecurity.moc \
+	tosecurityquotaui.moc \
+	tosecurityroleui.moc \
+	tosecurityuserui.moc \
+	tosession.moc \
+	tosgastatement.moc \
+	tosgatrace.moc \
+	tosmtp.moc \
+	tosqledit.moc \
+	tostorage.moc \
+	tostoragedatafileui.moc \
+	tostoragedefinitionui.moc \
+	tostoragedialogui.moc \
+	tostorageprefsui.moc \
+	tostoragetablespaceui.moc \
+	tosyntaxsetup.moc \
+	tosyntaxsetupui.moc \
+	totableselect.moc \
+	totabwidget.moc \
+	totemplate.moc \
+	totemplateaddfileui.moc \
+	totemplateeditui.moc \
+	totemplatesetupui.moc \
+	totemporary.moc \
+	totool.moc \
+	totoolsettingui.moc \
+	totuning.moc \
+	totuningoverviewui.moc \
+	totuningsettingui.moc \
+	tovisualize.moc \
+	towaitevents.moc \
+	toworksheet.moc \
+	toworksheetsetupui.moc \
+	toworksheetstatistic.moc \
+	utils.moc \
+	toaboutui.cpp \
+	todroptablespaceui.cpp \
+	tobrowserconstraintui.cpp \
+	tobrowserfilterui.cpp \
+	tobrowserindexui.cpp \
+	tobrowsertableui.cpp \
+	tochartalarmui.cpp \
+	tochartsetupui.cpp \
+	todatabasesettingui.cpp \
+	todebugchangeui.cpp \
+	todebugwatch.cpp \
+	toaboutui.h \
+	todroptablespaceui.h \
+	tobrowserconstraintui.h \
+	tobrowserfilterui.h \
+	tobrowserindexui.h \
+	tobrowsertableui.h \
+	tochartalarmui.h \
+	tochartsetupui.h \
+	todatabasesettingui.h \
+	todebugchangeui.h \
+	todebugwatch.h \
+	toeditextensiongotoui.h \
+	toeditextensionsetupui.h \
+	toglobalsettingui.h \
+	tohelpaddfileui.h \
+	tohelpsetupui.h \
+	tolinechartsetupui.h \
+	tomessageui.h \
+	tonewconnectionui.h \
+	tooraclesettingui.h \
+	topreferencesui.h \
+	toresultcontentfilterui.h \
+	toresultlistformatui.h \
+	torollbackdialogui.h \
+	toscriptui.h \
+	tosearchreplaceui.h \
+	tosecurityquotaui.h \
+	tosecurityroleui.h \
+	tosecurityuserui.h \
+	tostoragedatafileui.h \
+	tostoragedefinitionui.h \
+	tostoragedialogui.h \
+	tostorageprefsui.h \
+	tostoragetablespaceui.h \
+	tosyntaxsetupui.h \
+	totemplateaddfileui.h \
+	totemplateeditui.h \
+	totemplatesetupui.h \
+	totoolsettingui.h \
+	totuningoverviewui.h \
+	totuningsettingui.h \
+	toworksheetsetupui.h \
+	toaboutui.cpp \
+	tobrowserconstraintui.cpp \
+	tobrowserfilterui.cpp \
+	tobrowserindexui.cpp \
+	tobrowsertableui.cpp \
+	tochartalarmui.cpp \
+	tochartsetupui.cpp \
+	todatabasesettingui.cpp \
+	todebugchangeui.cpp \
+	todebugwatch.cpp \
+	toeditextensiongotoui.cpp \
+	toeditextensionsetupui.cpp \
+	toglobalsettingui.cpp \
+	tohelpaddfileui.cpp \
+	tohelpsetupui.cpp \
+	tolinechartsetupui.cpp \
+	tomessageui.cpp \
+	tonewconnectionui.cpp \
+	tooraclesettingui.cpp \
+	topreferencesui.cpp \
+	toresultcontentfilterui.cpp \
+	toresultlistformatui.cpp \
+	torollbackdialogui.cpp \
+	toscriptui.cpp \
+	tosearchreplaceui.cpp \
+	tosecurityquotaui.cpp \
+	tosecurityroleui.cpp \
+	tosecurityuserui.cpp \
+	tostoragedatafileui.cpp \
+	tostoragedefinitionui.cpp \
+	tostoragedialogui.cpp \
+	tostorageprefsui.cpp \
+	tostoragetablespaceui.cpp \
+	tosyntaxsetupui.cpp \
+	totemplateaddfileui.cpp \
+	totemplateeditui.cpp \
+	totemplatesetupui.cpp \
+	totoolsettingui.cpp \
+	totuningoverviewui.cpp \
+	totuningsettingui.cpp \
+	toworksheetsetupui.cpp \
+	$(filter %.qm,$(TRANSLATIONS:%.ts=%.qm)) \
+	tora_toad.h 
+
+
+# have_oracle conditional. these libraries are not built if oracle is
+# not present.
+ at HAVE_ORACLE_TRUE@OPTLIB_ORA = libtooracleconnection.la
+ at HAVE_ORACLE_FALSE@OPTlIB_ORA = 
+plugins = libtoalert.la \
+	libtoanalyze.la \
+	libtobackup.la \
+	libtobrowser.la \
+	libtochart.la \
+	libtocurrent.la \
+	libtodebug.la \
+	libtoeditextensions.la \
+	libtoextract.la \
+	libtoinvalid.la \
+	libtooutput.la \
+	libtopassword.la \
+	libtoprofiler.la \
+	libtoproject.la \
+	libtoqsqlconnection.la \
+	libtoresult.la \
+	libtorollback.la \
+	libtoscript.la \
+	libtosecurity.la \
+	libtosession.la \
+	libtosgatrace.la \
+	libtosqledit.la \
+	libtostorage.la \
+	libtostoragedefinition.la \
+	libtotemplate.la \
+	libtotemporary.la \
+	libtotuning.la \
+	libtowidget.la \
+	libtoworksheet.la \
+	$(OPTLIB_ORA)
+
+ at ENABLE_MONO_FALSE@lib_LTLIBRARIES = $(plugins)
+PFLAGS = -avoid-version -rpath $(libdir) -module -shared
+libtoalert_la_LDFLAGS = $(PFLAGS)
+libtoalert_la_SOURCES = toalert.cpp toalert.h
+libtoanalyze_la_LDFLAGS = $(PFLAGS)
+libtoanalyze_la_SOURCES = toanalyze.cpp toanalyze.h \
+	toworksheetstatistic.cpp toworksheetstatistic.h
+
+libtobackup_la_LDFLAGS = $(PFLAGS)
+libtobackup_la_SOURCES = tobackup.cpp tobackup.h \
+			tobackuptool.cpp tobackuptool.h
+
+libtobrowser_la_LDFLAGS = $(PFLAGS)
+libtobrowser_la_SOURCES = tobrowser.cpp tobrowser.h \
+	tobrowserconstraint.cpp tobrowserconstraint.h \
+	tobrowserconstraintui.cpp tobrowserconstraintui.h \
+	tobrowserfilterui.cpp tobrowserfilterui.h \
+	tobrowserindex.cpp tobrowserindex.h \
+	tobrowserindexui.cpp tobrowserindexui.h \
+	tobrowsertable.cpp tobrowsertable.h \
+	tobrowsertableui.cpp tobrowsertableui.h
+
+libtochart_la_LDFLAGS = $(PFLAGS)
+libtochart_la_SOURCES = tobarchart.cpp tobarchart.h \
+	tochartalarmui.cpp tochartalarmui.h \
+	tochartmanager.cpp tochartmanager.h \
+	tochartsetupui.cpp tochartsetupui.h \
+	tolegendchart.cpp tolegendchart.h \
+	tolinechart.cpp tolinechart.h \
+	tolinechartsetupui.cpp tolinechartsetupui.h \
+	topiechart.cpp topiechart.h \
+	toresultbar.cpp toresultbar.h \
+	toresultline.cpp toresultline.h \
+	toresultpie.cpp toresultpie.h
+
+libtocurrent_la_LDFLAGS = $(PFLAGS)
+libtocurrent_la_SOURCES = tocurrent.cpp tocurrent.h
+libtodebug_la_LDFLAGS = $(PFLAGS)
+libtodebug_la_SOURCES = todebug.cpp todebug.h \
+	todebugwatch.cpp todebugwatch.h \
+	todebugtext.cpp todebugtext.h \
+	todebugchangeui.cpp todebugchangeui.h
+
+libtoeditextensions_la_LDFLAGS = $(PFLAGS)
+libtoeditextensions_la_SOURCES = toeditextensions.cpp toeditextensions.h \
+	toeditextensiongotoui.cpp toeditextensiongotoui.h \
+	toeditextensionsetupui.cpp toeditextensionsetupui.h
+
+libtoextract_la_LDFLAGS = $(PFLAGS)
+libtoextract_la_SOURCES = todatatype.cpp todatatype.h \
+	toextract.cpp toextract.h \
+	toreport.cpp toreport.h \
+	toresultconstraint.cpp toresultconstraint.h \
+	toresultextract.cpp toresultextract.h
+
+libtoinvalid_la_LDFLAGS = $(PFLAGS)
+libtoinvalid_la_SOURCES = toinvalid.cpp toinvalid.h
+ at HAVE_ORACLE_TRUE@libtooracleconnection_la_LIBADD = $(ORACLE_LIBS)
+ at HAVE_ORACLE_TRUE@libtooracleconnection_la_CXXFLAGS = $(ORACLE_CXXFLAGS) -DOTL_FUNC_THROW_SPEC_ON
+ at HAVE_ORACLE_TRUE@libtooracleconnection_la_LDFLAGS = $(PFLAGS) $(ORACLE_LDFLAGS)
+ at HAVE_ORACLE_TRUE@libtooracleconnection_la_SOURCES = tooracleconnection.cpp \
+ at HAVE_ORACLE_TRUE@	tooracleextract.cpp \
+ at HAVE_ORACLE_TRUE@	tooraclesettingui.cpp tooraclesettingui.h
+
+libtooutput_la_LDFLAGS = $(PFLAGS)
+libtooutput_la_SOURCES = tooutput.cpp tooutput.h
+libtopassword_la_LDFLAGS = $(PFLAGS)
+libtopassword_la_SOURCES = topassword.cpp
+libtoprofiler_la_LDFLAGS = $(PFLAGS)
+libtoprofiler_la_SOURCES = toprofiler.cpp toprofiler.h
+libtoproject_la_LDFLAGS = $(PFLAGS)
+libtoproject_la_SOURCES = toproject.cpp toproject.h
+libtoqsqlconnection_la_LDFLAGS = $(PFLAGS)
+libtoqsqlconnection_la_SOURCES = toqsqlconnection.cpp
+libtoresult_la_LDFLAGS = $(PFLAGS)
+libtoresult_la_SOURCES = \
+	toresultcols.cpp toresultcols.h \
+	toresultcolscomment.cpp toresultcolscomment.h \
+	toresultcombo.cpp toresultcombo.h \
+	toresultcontent.cpp toresultcontent.h \
+	toresultcontentfilterui.cpp toresultcontentfilterui.h \
+	toresultdepend.cpp toresultdepend.h \
+	toresultindexes.cpp toresultindexes.h \
+	toresultlabel.cpp toresultlabel.h \
+	toresultlock.cpp toresultlock.h \
+	toresultlong.cpp toresultlong.h \
+	toresultplan.cpp toresultplan.h \
+	toresultparam.cpp toresultparam.h \
+	toresultreferences.cpp toresultreferences.h \
+	toresultstorage.cpp toresultstorage.h
+
+libtorollback_la_LDFLAGS = $(PFLAGS)
+libtorollback_la_SOURCES = torollback.cpp torollback.h \
+	torollbackdialogui.cpp torollbackdialogui.h
+
+libtoscript_la_LDFLAGS = $(PFLAGS)
+libtoscript_la_SOURCES = toscript.cpp toscript.h \
+	toscriptui.cpp toscriptui.h
+
+libtosecurity_la_LDFLAGS = $(PFLAGS)
+libtosecurity_la_SOURCES = tosecurity.cpp tosecurity.h \
+	tosecurityquotaui.cpp tosecurityquotaui.h \
+	tosecurityroleui.cpp tosecurityroleui.h \
+	tosecurityuserui.cpp tosecurityuserui.h
+
+libtosession_la_LDFLAGS = $(PFLAGS)
+libtosession_la_SOURCES = tosession.cpp tosession.h
+libtosgatrace_la_LDFLAGS = $(PFLAGS)
+libtosgatrace_la_SOURCES = tosgatrace.cpp tosgatrace.h
+libtosqledit_la_LDFLAGS = $(PFLAGS)
+libtosqledit_la_SOURCES = tosqledit.cpp tosqledit.h
+libtostorage_la_LDFLAGS = $(PFLAGS)
+libtostorage_la_SOURCES = tostorage.cpp tostorage.h \
+	tostoragedatafileui.cpp tostoragedatafileui.h \
+	tostoragedialogui.cpp tostoragedialogui.h \
+	tostorageprefsui.cpp tostorageprefsui.h \
+	tostoragetablespaceui.cpp tostoragetablespaceui.h
+
+libtostoragedefinition_la_LDFLAGS = $(PFLAGS)
+libtostoragedefinition_la_SOURCES = tostoragedefinition.cpp tostoragedefinition.h \
+	tostoragedefinitionui.cpp tostoragedefinitionui.h
+
+libtotemplate_la_LDFLAGS = $(PFLAGS)
+libtotemplate_la_SOURCES = totemplate.cpp totemplate.h \
+	totemplateaddfileui.cpp totemplateaddfileui.h \
+	totemplateeditui.cpp totemplateeditui.h \
+	totemplatesetupui.cpp totemplatesetupui.h
+
+libtotemporary_la_LDFLAGS = $(PFLAGS)
+libtotemporary_la_SOURCES = totemporary.cpp totemporary.h
+libtotuning_la_LDFLAGS = $(PFLAGS)
+libtotuning_la_SOURCES = totuning.cpp totuning.h \
+	totuningoverviewui.cpp totuningoverviewui.h \
+	totuningsettingui.cpp totuningsettingui.h
+
+libtowidget_la_LDFLAGS = $(PFLAGS)
+libtowidget_la_SOURCES = tochangeconnection.cpp tochangeconnection.h \
+	tofilesize.cpp tofilesize.h \
+	tosgastatement.cpp tosgastatement.h \
+	totableselect.cpp totableselect.h \
+	tovisualize.cpp tovisualize.h \
+	towaitevents.cpp towaitevents.h
+
+libtoworksheet_la_LDFLAGS = $(PFLAGS)
+libtoworksheet_la_SOURCES = toworksheet.cpp toworksheet.h \
+	toworksheetsetupui.cpp toworksheetsetupui.h
+
+all: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .h .lo .moc .o .obj .qm .ts .ui
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+	@$(NORMAL_INSTALL)
+	test -z "$(libdir)" || $(mkdir_p) "$(DESTDIR)$(libdir)"
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  if test -f $$p; then \
+	    f=$(am__strip_dir) \
+	    echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+	    $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+	  else :; fi; \
+	done
+
+uninstall-libLTLIBRARIES:
+	@$(NORMAL_UNINSTALL)
+	@set -x; list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  p=$(am__strip_dir) \
+	  echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+	  $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+	done
+
+clean-libLTLIBRARIES:
+	-test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+	@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+	  test "$$dir" != "$$p" || dir=.; \
+	  echo "rm -f \"$${dir}/so_locations\""; \
+	  rm -f "$${dir}/so_locations"; \
+	done
+libtoalert.la: $(libtoalert_la_OBJECTS) $(libtoalert_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoalert_la_rpath) $(libtoalert_la_LDFLAGS) $(libtoalert_la_OBJECTS) $(libtoalert_la_LIBADD) $(LIBS)
+libtoanalyze.la: $(libtoanalyze_la_OBJECTS) $(libtoanalyze_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoanalyze_la_rpath) $(libtoanalyze_la_LDFLAGS) $(libtoanalyze_la_OBJECTS) $(libtoanalyze_la_LIBADD) $(LIBS)
+libtobackup.la: $(libtobackup_la_OBJECTS) $(libtobackup_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtobackup_la_rpath) $(libtobackup_la_LDFLAGS) $(libtobackup_la_OBJECTS) $(libtobackup_la_LIBADD) $(LIBS)
+libtobrowser.la: $(libtobrowser_la_OBJECTS) $(libtobrowser_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtobrowser_la_rpath) $(libtobrowser_la_LDFLAGS) $(libtobrowser_la_OBJECTS) $(libtobrowser_la_LIBADD) $(LIBS)
+libtochart.la: $(libtochart_la_OBJECTS) $(libtochart_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtochart_la_rpath) $(libtochart_la_LDFLAGS) $(libtochart_la_OBJECTS) $(libtochart_la_LIBADD) $(LIBS)
+libtocurrent.la: $(libtocurrent_la_OBJECTS) $(libtocurrent_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtocurrent_la_rpath) $(libtocurrent_la_LDFLAGS) $(libtocurrent_la_OBJECTS) $(libtocurrent_la_LIBADD) $(LIBS)
+libtodebug.la: $(libtodebug_la_OBJECTS) $(libtodebug_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtodebug_la_rpath) $(libtodebug_la_LDFLAGS) $(libtodebug_la_OBJECTS) $(libtodebug_la_LIBADD) $(LIBS)
+libtoeditextensions.la: $(libtoeditextensions_la_OBJECTS) $(libtoeditextensions_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoeditextensions_la_rpath) $(libtoeditextensions_la_LDFLAGS) $(libtoeditextensions_la_OBJECTS) $(libtoeditextensions_la_LIBADD) $(LIBS)
+libtoextract.la: $(libtoextract_la_OBJECTS) $(libtoextract_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoextract_la_rpath) $(libtoextract_la_LDFLAGS) $(libtoextract_la_OBJECTS) $(libtoextract_la_LIBADD) $(LIBS)
+libtoinvalid.la: $(libtoinvalid_la_OBJECTS) $(libtoinvalid_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoinvalid_la_rpath) $(libtoinvalid_la_LDFLAGS) $(libtoinvalid_la_OBJECTS) $(libtoinvalid_la_LIBADD) $(LIBS)
+libtooracleconnection.la: $(libtooracleconnection_la_OBJECTS) $(libtooracleconnection_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtooracleconnection_la_rpath) $(libtooracleconnection_la_LDFLAGS) $(libtooracleconnection_la_OBJECTS) $(libtooracleconnection_la_LIBADD) $(LIBS)
+libtooutput.la: $(libtooutput_la_OBJECTS) $(libtooutput_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtooutput_la_rpath) $(libtooutput_la_LDFLAGS) $(libtooutput_la_OBJECTS) $(libtooutput_la_LIBADD) $(LIBS)
+libtopassword.la: $(libtopassword_la_OBJECTS) $(libtopassword_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtopassword_la_rpath) $(libtopassword_la_LDFLAGS) $(libtopassword_la_OBJECTS) $(libtopassword_la_LIBADD) $(LIBS)
+libtoprofiler.la: $(libtoprofiler_la_OBJECTS) $(libtoprofiler_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoprofiler_la_rpath) $(libtoprofiler_la_LDFLAGS) $(libtoprofiler_la_OBJECTS) $(libtoprofiler_la_LIBADD) $(LIBS)
+libtoproject.la: $(libtoproject_la_OBJECTS) $(libtoproject_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoproject_la_rpath) $(libtoproject_la_LDFLAGS) $(libtoproject_la_OBJECTS) $(libtoproject_la_LIBADD) $(LIBS)
+libtoqsqlconnection.la: $(libtoqsqlconnection_la_OBJECTS) $(libtoqsqlconnection_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoqsqlconnection_la_rpath) $(libtoqsqlconnection_la_LDFLAGS) $(libtoqsqlconnection_la_OBJECTS) $(libtoqsqlconnection_la_LIBADD) $(LIBS)
+libtoresult.la: $(libtoresult_la_OBJECTS) $(libtoresult_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoresult_la_rpath) $(libtoresult_la_LDFLAGS) $(libtoresult_la_OBJECTS) $(libtoresult_la_LIBADD) $(LIBS)
+libtorollback.la: $(libtorollback_la_OBJECTS) $(libtorollback_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtorollback_la_rpath) $(libtorollback_la_LDFLAGS) $(libtorollback_la_OBJECTS) $(libtorollback_la_LIBADD) $(LIBS)
+libtoscript.la: $(libtoscript_la_OBJECTS) $(libtoscript_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoscript_la_rpath) $(libtoscript_la_LDFLAGS) $(libtoscript_la_OBJECTS) $(libtoscript_la_LIBADD) $(LIBS)
+libtosecurity.la: $(libtosecurity_la_OBJECTS) $(libtosecurity_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtosecurity_la_rpath) $(libtosecurity_la_LDFLAGS) $(libtosecurity_la_OBJECTS) $(libtosecurity_la_LIBADD) $(LIBS)
+libtosession.la: $(libtosession_la_OBJECTS) $(libtosession_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtosession_la_rpath) $(libtosession_la_LDFLAGS) $(libtosession_la_OBJECTS) $(libtosession_la_LIBADD) $(LIBS)
+libtosgatrace.la: $(libtosgatrace_la_OBJECTS) $(libtosgatrace_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtosgatrace_la_rpath) $(libtosgatrace_la_LDFLAGS) $(libtosgatrace_la_OBJECTS) $(libtosgatrace_la_LIBADD) $(LIBS)
+libtosqledit.la: $(libtosqledit_la_OBJECTS) $(libtosqledit_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtosqledit_la_rpath) $(libtosqledit_la_LDFLAGS) $(libtosqledit_la_OBJECTS) $(libtosqledit_la_LIBADD) $(LIBS)
+libtostorage.la: $(libtostorage_la_OBJECTS) $(libtostorage_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtostorage_la_rpath) $(libtostorage_la_LDFLAGS) $(libtostorage_la_OBJECTS) $(libtostorage_la_LIBADD) $(LIBS)
+libtostoragedefinition.la: $(libtostoragedefinition_la_OBJECTS) $(libtostoragedefinition_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtostoragedefinition_la_rpath) $(libtostoragedefinition_la_LDFLAGS) $(libtostoragedefinition_la_OBJECTS) $(libtostoragedefinition_la_LIBADD) $(LIBS)
+libtotemplate.la: $(libtotemplate_la_OBJECTS) $(libtotemplate_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtotemplate_la_rpath) $(libtotemplate_la_LDFLAGS) $(libtotemplate_la_OBJECTS) $(libtotemplate_la_LIBADD) $(LIBS)
+libtotemporary.la: $(libtotemporary_la_OBJECTS) $(libtotemporary_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtotemporary_la_rpath) $(libtotemporary_la_LDFLAGS) $(libtotemporary_la_OBJECTS) $(libtotemporary_la_LIBADD) $(LIBS)
+libtotuning.la: $(libtotuning_la_OBJECTS) $(libtotuning_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtotuning_la_rpath) $(libtotuning_la_LDFLAGS) $(libtotuning_la_OBJECTS) $(libtotuning_la_LIBADD) $(LIBS)
+libtowidget.la: $(libtowidget_la_OBJECTS) $(libtowidget_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtowidget_la_rpath) $(libtowidget_la_LDFLAGS) $(libtowidget_la_OBJECTS) $(libtowidget_la_LIBADD) $(LIBS)
+libtoworksheet.la: $(libtoworksheet_la_OBJECTS) $(libtoworksheet_la_DEPENDENCIES) 
+	$(CXXLINK) $(am_libtoworksheet_la_rpath) $(libtoworksheet_la_LDFLAGS) $(libtoworksheet_la_OBJECTS) $(libtoworksheet_la_LIBADD) $(LIBS)
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  if test -f $$p \
+	     || test -f $$p1 \
+	  ; then \
+	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+tora$(EXEEXT): $(tora_OBJECTS) $(tora_DEPENDENCIES) 
+	@rm -f tora$(EXEEXT)
+	$(CXXLINK) $(tora_LDFLAGS) $(tora_OBJECTS) $(tora_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libtooracleconnection_la-tooracleconnection.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libtooracleconnection_la-tooracleextract.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libtooracleconnection_la-tooraclesettingui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toalert.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toanalyze.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobackup.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobackuptool.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobarchart.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobrowser.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobrowserconstraint.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobrowserconstraintui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobrowserfilterui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobrowserindex.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobrowserindexui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobrowsertable.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tobrowsertableui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tochangeconnection.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tochartalarmui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tochartmanager.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tochartsetupui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tocurrent.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/todatatype.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/todebug.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/todebugchangeui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/todebugtext.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/todebugwatch.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toeditextensiongotoui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toeditextensions.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toeditextensionsetupui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toextract.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tofilesize.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toinvalid.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tolegendchart.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tolinechart.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tolinechartsetupui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tooutput.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/topassword.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/topiechart.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toprofiler.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toproject.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toqsqlconnection.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-Singleton.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-SmallObj.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-main.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toabout.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toaboutui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toalert.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toanalyze.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobackground.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobackgroundlabel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobackup.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobackuptool.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobarchart.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobrowser.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobrowserconstraint.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobrowserconstraintui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobrowserfilterui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobrowserindex.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobrowserindexui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobrowsertable.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tobrowsertableui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tochangeconnection.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tochartalarmui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tochartmanager.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tochartsetupui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toconfiguration.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toconnection.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tocurrent.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-todatabasesettingui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-todatatype.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-todebug.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-todebugchangeui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-todebugtext.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-todebugwatch.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-todroptablespaceui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toeditextensiongotoui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toeditextensions.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toeditextensionsetupui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toeditwidget.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toextract.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tofilesize.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toglobalsetting.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toglobalsettingui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tohelp.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tohelpaddfileui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tohelpsetupui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tohighlightedtext.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tohtml.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toinvalid.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tolegendchart.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tolinechart.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tolinechartsetupui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tolistviewformatter.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tolistviewformattercsv.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tolistviewformatterhtml.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tolistviewformattersql.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tolistviewformattertabdel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tolistviewformattertext.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tomain.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tomarkedtext.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tomemoeditor.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tomessageui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tonewconnection.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tonewconnectionui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tonoblockquery.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tooracleconnection.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tooracleextract.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tooraclesettingui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tooutput.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toparamget.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-topassword.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-topiechart.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-topreferences.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-topreferencesui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toprofiler.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toproject.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toqsqlconnection.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toreport.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresult.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultbar.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultcols.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultcolscomment.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultcombo.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultconstraint.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultcontent.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultcontentfilterui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultdepend.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultextract.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultfield.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultindexes.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultitem.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultlabel.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultline.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultlistformatui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultlock.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultlong.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultparam.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultpie.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultplan.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultreferences.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultstats.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultstorage.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toresultview.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-torollback.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-torollbackdialogui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toscript.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toscriptui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosearchreplace.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosearchreplaceui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosecurity.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosecurityquotaui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosecurityroleui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosecurityuserui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosession.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosgastatement.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosgatrace.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosmtp.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosplash.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosql.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosqledit.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosqlparse.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tostorage.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tostoragedatafileui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tostoragedefinition.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tostoragedefinitionui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tostoragedialogui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tostorageprefsui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tostoragetablespaceui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosyntaxsetup.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tosyntaxsetupui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totableselect.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totabwidget.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totemplate.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totemplateaddfileui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totemplateeditui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totemplateprovider.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totemplatesetupui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totemporary.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totextview.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tothread.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totimer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totool.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totoolsettingui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totuning.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totuningoverviewui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-totuningsettingui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-tovisualize.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-towaitevents.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toworksheet.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toworksheetsetupui.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-toworksheetstatistic.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tora-utils.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toreport.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultbar.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultcols.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultcolscomment.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultcombo.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultconstraint.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultcontent.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultcontentfilterui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultdepend.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultextract.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultindexes.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultlabel.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultline.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultlock.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultlong.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultparam.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultpie.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultplan.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultreferences.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toresultstorage.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/torollback.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/torollbackdialogui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toscript.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toscriptui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tosecurity.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tosecurityquotaui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tosecurityroleui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tosecurityuserui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tosession.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tosgastatement.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tosgatrace.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tosqledit.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tostorage.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tostoragedatafileui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tostoragedefinition.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tostoragedefinitionui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tostoragedialogui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tostorageprefsui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tostoragetablespaceui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/totableselect.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/totemplate.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/totemplateaddfileui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/totemplateeditui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/totemplatesetupui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/totemporary.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/totuning.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/totuningoverviewui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/totuningsettingui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tovisualize.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/towaitevents.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toworksheet.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toworksheetsetupui.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toworksheetstatistic.Plo at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+
+libtooracleconnection_la-tooracleconnection.lo: tooracleconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libtooracleconnection_la_CXXFLAGS) $(CXXFLAGS) -MT libtooracleconnection_la-tooracleconnection.lo -MD -MP -MF "$(DEPDIR)/libtooracleconnection_la-tooracleconnection.Tpo" -c -o libtooracleconnection_la-tooracleconnection.lo `test -f 'tooracleconnection.cpp' || echo '$(srcdir)/'`tooracleconnection.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libtooracleconnection_la-tooracleconnection.Tpo" "$(DEPDIR)/libtooracleconnection_la-tooracleconnection.Plo"; else rm -f "$(DEPDIR)/libtooracleconnection_la-tooracleconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooracleconnection.cpp' object='libtooracleconnection_la-tooracleconnection.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libtooracleconnection_la_CXXFLAGS) $(CXXFLAGS) -c -o libtooracleconnection_la-tooracleconnection.lo `test -f 'tooracleconnection.cpp' || echo '$(srcdir)/'`tooracleconnection.cpp
+
+libtooracleconnection_la-tooracleextract.lo: tooracleextract.cpp
+ at am__fastdepCXX_TRUE@	if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libtooracleconnection_la_CXXFLAGS) $(CXXFLAGS) -MT libtooracleconnection_la-tooracleextract.lo -MD -MP -MF "$(DEPDIR)/libtooracleconnection_la-tooracleextract.Tpo" -c -o libtooracleconnection_la-tooracleextract.lo `test -f 'tooracleextract.cpp' || echo '$(srcdir)/'`tooracleextract.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libtooracleconnection_la-tooracleextract.Tpo" "$(DEPDIR)/libtooracleconnection_la-tooracleextract.Plo"; else rm -f "$(DEPDIR)/libtooracleconnection_la-tooracleextract.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooracleextract.cpp' object='libtooracleconnection_la-tooracleextract.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libtooracleconnection_la_CXXFLAGS) $(CXXFLAGS) -c -o libtooracleconnection_la-tooracleextract.lo `test -f 'tooracleextract.cpp' || echo '$(srcdir)/'`tooracleextract.cpp
+
+libtooracleconnection_la-tooraclesettingui.lo: tooraclesettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libtooracleconnection_la_CXXFLAGS) $(CXXFLAGS) -MT libtooracleconnection_la-tooraclesettingui.lo -MD -MP -MF "$(DEPDIR)/libtooracleconnection_la-tooraclesettingui.Tpo" -c -o libtooracleconnection_la-tooraclesettingui.lo `test -f 'tooraclesettingui.cpp' || echo '$(srcdir)/'`tooraclesettingui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/libtooracleconnection_la-tooraclesettingui.Tpo" "$(DEPDIR)/libtooracleconnection_la-tooraclesettingui.Plo"; else rm -f "$(DEPDIR)/libtooracleconnection_la-tooraclesettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooraclesettingui.cpp' object='libtooracleconnection_la-tooraclesettingui.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libtooracleconnection_la_CXXFLAGS) $(CXXFLAGS) -c -o libtooracleconnection_la-tooraclesettingui.lo `test -f 'tooraclesettingui.cpp' || echo '$(srcdir)/'`tooraclesettingui.cpp
+
+tora-main.o: main.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-main.o -MD -MP -MF "$(DEPDIR)/tora-main.Tpo" -c -o tora-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-main.Tpo" "$(DEPDIR)/tora-main.Po"; else rm -f "$(DEPDIR)/tora-main.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='main.cpp' object='tora-main.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+
+tora-main.obj: main.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-main.obj -MD -MP -MF "$(DEPDIR)/tora-main.Tpo" -c -o tora-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-main.Tpo" "$(DEPDIR)/tora-main.Po"; else rm -f "$(DEPDIR)/tora-main.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='main.cpp' object='tora-main.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+
+tora-toabout.o: toabout.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toabout.o -MD -MP -MF "$(DEPDIR)/tora-toabout.Tpo" -c -o tora-toabout.o `test -f 'toabout.cpp' || echo '$(srcdir)/'`toabout.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toabout.Tpo" "$(DEPDIR)/tora-toabout.Po"; else rm -f "$(DEPDIR)/tora-toabout.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toabout.cpp' object='tora-toabout.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toabout.o `test -f 'toabout.cpp' || echo '$(srcdir)/'`toabout.cpp
+
+tora-toabout.obj: toabout.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toabout.obj -MD -MP -MF "$(DEPDIR)/tora-toabout.Tpo" -c -o tora-toabout.obj `if test -f 'toabout.cpp'; then $(CYGPATH_W) 'toabout.cpp'; else $(CYGPATH_W) '$(srcdir)/toabout.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toabout.Tpo" "$(DEPDIR)/tora-toabout.Po"; else rm -f "$(DEPDIR)/tora-toabout.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toabout.cpp' object='tora-toabout.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toabout.obj `if test -f 'toabout.cpp'; then $(CYGPATH_W) 'toabout.cpp'; else $(CYGPATH_W) '$(srcdir)/toabout.cpp'; fi`
+
+tora-toaboutui.o: toaboutui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toaboutui.o -MD -MP -MF "$(DEPDIR)/tora-toaboutui.Tpo" -c -o tora-toaboutui.o `test -f 'toaboutui.cpp' || echo '$(srcdir)/'`toaboutui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toaboutui.Tpo" "$(DEPDIR)/tora-toaboutui.Po"; else rm -f "$(DEPDIR)/tora-toaboutui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toaboutui.cpp' object='tora-toaboutui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toaboutui.o `test -f 'toaboutui.cpp' || echo '$(srcdir)/'`toaboutui.cpp
+
+tora-toaboutui.obj: toaboutui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toaboutui.obj -MD -MP -MF "$(DEPDIR)/tora-toaboutui.Tpo" -c -o tora-toaboutui.obj `if test -f 'toaboutui.cpp'; then $(CYGPATH_W) 'toaboutui.cpp'; else $(CYGPATH_W) '$(srcdir)/toaboutui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toaboutui.Tpo" "$(DEPDIR)/tora-toaboutui.Po"; else rm -f "$(DEPDIR)/tora-toaboutui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toaboutui.cpp' object='tora-toaboutui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toaboutui.obj `if test -f 'toaboutui.cpp'; then $(CYGPATH_W) 'toaboutui.cpp'; else $(CYGPATH_W) '$(srcdir)/toaboutui.cpp'; fi`
+
+tora-tobackground.o: tobackground.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobackground.o -MD -MP -MF "$(DEPDIR)/tora-tobackground.Tpo" -c -o tora-tobackground.o `test -f 'tobackground.cpp' || echo '$(srcdir)/'`tobackground.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobackground.Tpo" "$(DEPDIR)/tora-tobackground.Po"; else rm -f "$(DEPDIR)/tora-tobackground.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobackground.cpp' object='tora-tobackground.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobackground.o `test -f 'tobackground.cpp' || echo '$(srcdir)/'`tobackground.cpp
+
+tora-tobackground.obj: tobackground.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobackground.obj -MD -MP -MF "$(DEPDIR)/tora-tobackground.Tpo" -c -o tora-tobackground.obj `if test -f 'tobackground.cpp'; then $(CYGPATH_W) 'tobackground.cpp'; else $(CYGPATH_W) '$(srcdir)/tobackground.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobackground.Tpo" "$(DEPDIR)/tora-tobackground.Po"; else rm -f "$(DEPDIR)/tora-tobackground.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobackground.cpp' object='tora-tobackground.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobackground.obj `if test -f 'tobackground.cpp'; then $(CYGPATH_W) 'tobackground.cpp'; else $(CYGPATH_W) '$(srcdir)/tobackground.cpp'; fi`
+
+tora-tobackgroundlabel.o: tobackgroundlabel.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobackgroundlabel.o -MD -MP -MF "$(DEPDIR)/tora-tobackgroundlabel.Tpo" -c -o tora-tobackgroundlabel.o `test -f 'tobackgroundlabel.cpp' || echo '$(srcdir)/'`tobackgroundlabel.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobackgroundlabel.Tpo" "$(DEPDIR)/tora-tobackgroundlabel.Po"; else rm -f "$(DEPDIR)/tora-tobackgroundlabel.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobackgroundlabel.cpp' object='tora-tobackgroundlabel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobackgroundlabel.o `test -f 'tobackgroundlabel.cpp' || echo '$(srcdir)/'`tobackgroundlabel.cpp
+
+tora-tobackgroundlabel.obj: tobackgroundlabel.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobackgroundlabel.obj -MD -MP -MF "$(DEPDIR)/tora-tobackgroundlabel.Tpo" -c -o tora-tobackgroundlabel.obj `if test -f 'tobackgroundlabel.cpp'; then $(CYGPATH_W) 'tobackgroundlabel.cpp'; else $(CYGPATH_W) '$(srcdir)/tobackgroundlabel.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobackgroundlabel.Tpo" "$(DEPDIR)/tora-tobackgroundlabel.Po"; else rm -f "$(DEPDIR)/tora-tobackgroundlabel.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobackgroundlabel.cpp' object='tora-tobackgroundlabel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobackgroundlabel.obj `if test -f 'tobackgroundlabel.cpp'; then $(CYGPATH_W) 'tobackgroundlabel.cpp'; else $(CYGPATH_W) '$(srcdir)/tobackgroundlabel.cpp'; fi`
+
+tora-toconfiguration.o: toconfiguration.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toconfiguration.o -MD -MP -MF "$(DEPDIR)/tora-toconfiguration.Tpo" -c -o tora-toconfiguration.o `test -f 'toconfiguration.cpp' || echo '$(srcdir)/'`toconfiguration.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toconfiguration.Tpo" "$(DEPDIR)/tora-toconfiguration.Po"; else rm -f "$(DEPDIR)/tora-toconfiguration.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toconfiguration.cpp' object='tora-toconfiguration.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toconfiguration.o `test -f 'toconfiguration.cpp' || echo '$(srcdir)/'`toconfiguration.cpp
+
+tora-toconfiguration.obj: toconfiguration.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toconfiguration.obj -MD -MP -MF "$(DEPDIR)/tora-toconfiguration.Tpo" -c -o tora-toconfiguration.obj `if test -f 'toconfiguration.cpp'; then $(CYGPATH_W) 'toconfiguration.cpp'; else $(CYGPATH_W) '$(srcdir)/toconfiguration.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toconfiguration.Tpo" "$(DEPDIR)/tora-toconfiguration.Po"; else rm -f "$(DEPDIR)/tora-toconfiguration.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toconfiguration.cpp' object='tora-toconfiguration.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toconfiguration.obj `if test -f 'toconfiguration.cpp'; then $(CYGPATH_W) 'toconfiguration.cpp'; else $(CYGPATH_W) '$(srcdir)/toconfiguration.cpp'; fi`
+
+tora-toconnection.o: toconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toconnection.o -MD -MP -MF "$(DEPDIR)/tora-toconnection.Tpo" -c -o tora-toconnection.o `test -f 'toconnection.cpp' || echo '$(srcdir)/'`toconnection.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toconnection.Tpo" "$(DEPDIR)/tora-toconnection.Po"; else rm -f "$(DEPDIR)/tora-toconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toconnection.cpp' object='tora-toconnection.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toconnection.o `test -f 'toconnection.cpp' || echo '$(srcdir)/'`toconnection.cpp
+
+tora-toconnection.obj: toconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toconnection.obj -MD -MP -MF "$(DEPDIR)/tora-toconnection.Tpo" -c -o tora-toconnection.obj `if test -f 'toconnection.cpp'; then $(CYGPATH_W) 'toconnection.cpp'; else $(CYGPATH_W) '$(srcdir)/toconnection.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toconnection.Tpo" "$(DEPDIR)/tora-toconnection.Po"; else rm -f "$(DEPDIR)/tora-toconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toconnection.cpp' object='tora-toconnection.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toconnection.obj `if test -f 'toconnection.cpp'; then $(CYGPATH_W) 'toconnection.cpp'; else $(CYGPATH_W) '$(srcdir)/toconnection.cpp'; fi`
+
+tora-todatabasesettingui.o: todatabasesettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todatabasesettingui.o -MD -MP -MF "$(DEPDIR)/tora-todatabasesettingui.Tpo" -c -o tora-todatabasesettingui.o `test -f 'todatabasesettingui.cpp' || echo '$(srcdir)/'`todatabasesettingui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todatabasesettingui.Tpo" "$(DEPDIR)/tora-todatabasesettingui.Po"; else rm -f "$(DEPDIR)/tora-todatabasesettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todatabasesettingui.cpp' object='tora-todatabasesettingui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todatabasesettingui.o `test -f 'todatabasesettingui.cpp' || echo '$(srcdir)/'`todatabasesettingui.cpp
+
+tora-todatabasesettingui.obj: todatabasesettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todatabasesettingui.obj -MD -MP -MF "$(DEPDIR)/tora-todatabasesettingui.Tpo" -c -o tora-todatabasesettingui.obj `if test -f 'todatabasesettingui.cpp'; then $(CYGPATH_W) 'todatabasesettingui.cpp'; else $(CYGPATH_W) '$(srcdir)/todatabasesettingui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todatabasesettingui.Tpo" "$(DEPDIR)/tora-todatabasesettingui.Po"; else rm -f "$(DEPDIR)/tora-todatabasesettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todatabasesettingui.cpp' object='tora-todatabasesettingui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todatabasesettingui.obj `if test -f 'todatabasesettingui.cpp'; then $(CYGPATH_W) 'todatabasesettingui.cpp'; else $(CYGPATH_W) '$(srcdir)/todatabasesettingui.cpp'; fi`
+
+tora-toeditwidget.o: toeditwidget.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toeditwidget.o -MD -MP -MF "$(DEPDIR)/tora-toeditwidget.Tpo" -c -o tora-toeditwidget.o `test -f 'toeditwidget.cpp' || echo '$(srcdir)/'`toeditwidget.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toeditwidget.Tpo" "$(DEPDIR)/tora-toeditwidget.Po"; else rm -f "$(DEPDIR)/tora-toeditwidget.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toeditwidget.cpp' object='tora-toeditwidget.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toeditwidget.o `test -f 'toeditwidget.cpp' || echo '$(srcdir)/'`toeditwidget.cpp
+
+tora-toeditwidget.obj: toeditwidget.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toeditwidget.obj -MD -MP -MF "$(DEPDIR)/tora-toeditwidget.Tpo" -c -o tora-toeditwidget.obj `if test -f 'toeditwidget.cpp'; then $(CYGPATH_W) 'toeditwidget.cpp'; else $(CYGPATH_W) '$(srcdir)/toeditwidget.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toeditwidget.Tpo" "$(DEPDIR)/tora-toeditwidget.Po"; else rm -f "$(DEPDIR)/tora-toeditwidget.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toeditwidget.cpp' object='tora-toeditwidget.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toeditwidget.obj `if test -f 'toeditwidget.cpp'; then $(CYGPATH_W) 'toeditwidget.cpp'; else $(CYGPATH_W) '$(srcdir)/toeditwidget.cpp'; fi`
+
+tora-toglobalsetting.o: toglobalsetting.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toglobalsetting.o -MD -MP -MF "$(DEPDIR)/tora-toglobalsetting.Tpo" -c -o tora-toglobalsetting.o `test -f 'toglobalsetting.cpp' || echo '$(srcdir)/'`toglobalsetting.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toglobalsetting.Tpo" "$(DEPDIR)/tora-toglobalsetting.Po"; else rm -f "$(DEPDIR)/tora-toglobalsetting.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toglobalsetting.cpp' object='tora-toglobalsetting.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toglobalsetting.o `test -f 'toglobalsetting.cpp' || echo '$(srcdir)/'`toglobalsetting.cpp
+
+tora-toglobalsetting.obj: toglobalsetting.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toglobalsetting.obj -MD -MP -MF "$(DEPDIR)/tora-toglobalsetting.Tpo" -c -o tora-toglobalsetting.obj `if test -f 'toglobalsetting.cpp'; then $(CYGPATH_W) 'toglobalsetting.cpp'; else $(CYGPATH_W) '$(srcdir)/toglobalsetting.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toglobalsetting.Tpo" "$(DEPDIR)/tora-toglobalsetting.Po"; else rm -f "$(DEPDIR)/tora-toglobalsetting.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toglobalsetting.cpp' object='tora-toglobalsetting.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toglobalsetting.obj `if test -f 'toglobalsetting.cpp'; then $(CYGPATH_W) 'toglobalsetting.cpp'; else $(CYGPATH_W) '$(srcdir)/toglobalsetting.cpp'; fi`
+
+tora-toglobalsettingui.o: toglobalsettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toglobalsettingui.o -MD -MP -MF "$(DEPDIR)/tora-toglobalsettingui.Tpo" -c -o tora-toglobalsettingui.o `test -f 'toglobalsettingui.cpp' || echo '$(srcdir)/'`toglobalsettingui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toglobalsettingui.Tpo" "$(DEPDIR)/tora-toglobalsettingui.Po"; else rm -f "$(DEPDIR)/tora-toglobalsettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toglobalsettingui.cpp' object='tora-toglobalsettingui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toglobalsettingui.o `test -f 'toglobalsettingui.cpp' || echo '$(srcdir)/'`toglobalsettingui.cpp
+
+tora-toglobalsettingui.obj: toglobalsettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toglobalsettingui.obj -MD -MP -MF "$(DEPDIR)/tora-toglobalsettingui.Tpo" -c -o tora-toglobalsettingui.obj `if test -f 'toglobalsettingui.cpp'; then $(CYGPATH_W) 'toglobalsettingui.cpp'; else $(CYGPATH_W) '$(srcdir)/toglobalsettingui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toglobalsettingui.Tpo" "$(DEPDIR)/tora-toglobalsettingui.Po"; else rm -f "$(DEPDIR)/tora-toglobalsettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toglobalsettingui.cpp' object='tora-toglobalsettingui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toglobalsettingui.obj `if test -f 'toglobalsettingui.cpp'; then $(CYGPATH_W) 'toglobalsettingui.cpp'; else $(CYGPATH_W) '$(srcdir)/toglobalsettingui.cpp'; fi`
+
+tora-tohelp.o: tohelp.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tohelp.o -MD -MP -MF "$(DEPDIR)/tora-tohelp.Tpo" -c -o tora-tohelp.o `test -f 'tohelp.cpp' || echo '$(srcdir)/'`tohelp.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tohelp.Tpo" "$(DEPDIR)/tora-tohelp.Po"; else rm -f "$(DEPDIR)/tora-tohelp.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tohelp.cpp' object='tora-tohelp.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tohelp.o `test -f 'tohelp.cpp' || echo '$(srcdir)/'`tohelp.cpp
+
+tora-tohelp.obj: tohelp.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tohelp.obj -MD -MP -MF "$(DEPDIR)/tora-tohelp.Tpo" -c -o tora-tohelp.obj `if test -f 'tohelp.cpp'; then $(CYGPATH_W) 'tohelp.cpp'; else $(CYGPATH_W) '$(srcdir)/tohelp.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tohelp.Tpo" "$(DEPDIR)/tora-tohelp.Po"; else rm -f "$(DEPDIR)/tora-tohelp.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tohelp.cpp' object='tora-tohelp.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tohelp.obj `if test -f 'tohelp.cpp'; then $(CYGPATH_W) 'tohelp.cpp'; else $(CYGPATH_W) '$(srcdir)/tohelp.cpp'; fi`
+
+tora-tohelpaddfileui.o: tohelpaddfileui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tohelpaddfileui.o -MD -MP -MF "$(DEPDIR)/tora-tohelpaddfileui.Tpo" -c -o tora-tohelpaddfileui.o `test -f 'tohelpaddfileui.cpp' || echo '$(srcdir)/'`tohelpaddfileui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tohelpaddfileui.Tpo" "$(DEPDIR)/tora-tohelpaddfileui.Po"; else rm -f "$(DEPDIR)/tora-tohelpaddfileui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tohelpaddfileui.cpp' object='tora-tohelpaddfileui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tohelpaddfileui.o `test -f 'tohelpaddfileui.cpp' || echo '$(srcdir)/'`tohelpaddfileui.cpp
+
+tora-tohelpaddfileui.obj: tohelpaddfileui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tohelpaddfileui.obj -MD -MP -MF "$(DEPDIR)/tora-tohelpaddfileui.Tpo" -c -o tora-tohelpaddfileui.obj `if test -f 'tohelpaddfileui.cpp'; then $(CYGPATH_W) 'tohelpaddfileui.cpp'; else $(CYGPATH_W) '$(srcdir)/tohelpaddfileui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tohelpaddfileui.Tpo" "$(DEPDIR)/tora-tohelpaddfileui.Po"; else rm -f "$(DEPDIR)/tora-tohelpaddfileui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tohelpaddfileui.cpp' object='tora-tohelpaddfileui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tohelpaddfileui.obj `if test -f 'tohelpaddfileui.cpp'; then $(CYGPATH_W) 'tohelpaddfileui.cpp'; else $(CYGPATH_W) '$(srcdir)/tohelpaddfileui.cpp'; fi`
+
+tora-tohelpsetupui.o: tohelpsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tohelpsetupui.o -MD -MP -MF "$(DEPDIR)/tora-tohelpsetupui.Tpo" -c -o tora-tohelpsetupui.o `test -f 'tohelpsetupui.cpp' || echo '$(srcdir)/'`tohelpsetupui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tohelpsetupui.Tpo" "$(DEPDIR)/tora-tohelpsetupui.Po"; else rm -f "$(DEPDIR)/tora-tohelpsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tohelpsetupui.cpp' object='tora-tohelpsetupui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tohelpsetupui.o `test -f 'tohelpsetupui.cpp' || echo '$(srcdir)/'`tohelpsetupui.cpp
+
+tora-tohelpsetupui.obj: tohelpsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tohelpsetupui.obj -MD -MP -MF "$(DEPDIR)/tora-tohelpsetupui.Tpo" -c -o tora-tohelpsetupui.obj `if test -f 'tohelpsetupui.cpp'; then $(CYGPATH_W) 'tohelpsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/tohelpsetupui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tohelpsetupui.Tpo" "$(DEPDIR)/tora-tohelpsetupui.Po"; else rm -f "$(DEPDIR)/tora-tohelpsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tohelpsetupui.cpp' object='tora-tohelpsetupui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tohelpsetupui.obj `if test -f 'tohelpsetupui.cpp'; then $(CYGPATH_W) 'tohelpsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/tohelpsetupui.cpp'; fi`
+
+tora-tohighlightedtext.o: tohighlightedtext.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tohighlightedtext.o -MD -MP -MF "$(DEPDIR)/tora-tohighlightedtext.Tpo" -c -o tora-tohighlightedtext.o `test -f 'tohighlightedtext.cpp' || echo '$(srcdir)/'`tohighlightedtext.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tohighlightedtext.Tpo" "$(DEPDIR)/tora-tohighlightedtext.Po"; else rm -f "$(DEPDIR)/tora-tohighlightedtext.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tohighlightedtext.cpp' object='tora-tohighlightedtext.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tohighlightedtext.o `test -f 'tohighlightedtext.cpp' || echo '$(srcdir)/'`tohighlightedtext.cpp
+
+tora-tohighlightedtext.obj: tohighlightedtext.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tohighlightedtext.obj -MD -MP -MF "$(DEPDIR)/tora-tohighlightedtext.Tpo" -c -o tora-tohighlightedtext.obj `if test -f 'tohighlightedtext.cpp'; then $(CYGPATH_W) 'tohighlightedtext.cpp'; else $(CYGPATH_W) '$(srcdir)/tohighlightedtext.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tohighlightedtext.Tpo" "$(DEPDIR)/tora-tohighlightedtext.Po"; else rm -f "$(DEPDIR)/tora-tohighlightedtext.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tohighlightedtext.cpp' object='tora-tohighlightedtext.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tohighlightedtext.obj `if test -f 'tohighlightedtext.cpp'; then $(CYGPATH_W) 'tohighlightedtext.cpp'; else $(CYGPATH_W) '$(srcdir)/tohighlightedtext.cpp'; fi`
+
+tora-tohtml.o: tohtml.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tohtml.o -MD -MP -MF "$(DEPDIR)/tora-tohtml.Tpo" -c -o tora-tohtml.o `test -f 'tohtml.cpp' || echo '$(srcdir)/'`tohtml.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tohtml.Tpo" "$(DEPDIR)/tora-tohtml.Po"; else rm -f "$(DEPDIR)/tora-tohtml.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tohtml.cpp' object='tora-tohtml.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tohtml.o `test -f 'tohtml.cpp' || echo '$(srcdir)/'`tohtml.cpp
+
+tora-tohtml.obj: tohtml.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tohtml.obj -MD -MP -MF "$(DEPDIR)/tora-tohtml.Tpo" -c -o tora-tohtml.obj `if test -f 'tohtml.cpp'; then $(CYGPATH_W) 'tohtml.cpp'; else $(CYGPATH_W) '$(srcdir)/tohtml.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tohtml.Tpo" "$(DEPDIR)/tora-tohtml.Po"; else rm -f "$(DEPDIR)/tora-tohtml.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tohtml.cpp' object='tora-tohtml.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tohtml.obj `if test -f 'tohtml.cpp'; then $(CYGPATH_W) 'tohtml.cpp'; else $(CYGPATH_W) '$(srcdir)/tohtml.cpp'; fi`
+
+tora-tolistviewformatter.o: tolistviewformatter.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformatter.o -MD -MP -MF "$(DEPDIR)/tora-tolistviewformatter.Tpo" -c -o tora-tolistviewformatter.o `test -f 'tolistviewformatter.cpp' || echo '$(srcdir)/'`tolistviewformatter.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformatter.Tpo" "$(DEPDIR)/tora-tolistviewformatter.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformatter.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformatter.cpp' object='tora-tolistviewformatter.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformatter.o `test -f 'tolistviewformatter.cpp' || echo '$(srcdir)/'`tolistviewformatter.cpp
+
+tora-tolistviewformatter.obj: tolistviewformatter.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformatter.obj -MD -MP -MF "$(DEPDIR)/tora-tolistviewformatter.Tpo" -c -o tora-tolistviewformatter.obj `if test -f 'tolistviewformatter.cpp'; then $(CYGPATH_W) 'tolistviewformatter.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformatter.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformatter.Tpo" "$(DEPDIR)/tora-tolistviewformatter.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformatter.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformatter.cpp' object='tora-tolistviewformatter.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformatter.obj `if test -f 'tolistviewformatter.cpp'; then $(CYGPATH_W) 'tolistviewformatter.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformatter.cpp'; fi`
+
+tora-tolistviewformattercsv.o: tolistviewformattercsv.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformattercsv.o -MD -MP -MF "$(DEPDIR)/tora-tolistviewformattercsv.Tpo" -c -o tora-tolistviewformattercsv.o `test -f 'tolistviewformattercsv.cpp' || echo '$(srcdir)/'`tolistviewformattercsv.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformattercsv.Tpo" "$(DEPDIR)/tora-tolistviewformattercsv.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformattercsv.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformattercsv.cpp' object='tora-tolistviewformattercsv.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformattercsv.o `test -f 'tolistviewformattercsv.cpp' || echo '$(srcdir)/'`tolistviewformattercsv.cpp
+
+tora-tolistviewformattercsv.obj: tolistviewformattercsv.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformattercsv.obj -MD -MP -MF "$(DEPDIR)/tora-tolistviewformattercsv.Tpo" -c -o tora-tolistviewformattercsv.obj `if test -f 'tolistviewformattercsv.cpp'; then $(CYGPATH_W) 'tolistviewformattercsv.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformattercsv.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformattercsv.Tpo" "$(DEPDIR)/tora-tolistviewformattercsv.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformattercsv.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformattercsv.cpp' object='tora-tolistviewformattercsv.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformattercsv.obj `if test -f 'tolistviewformattercsv.cpp'; then $(CYGPATH_W) 'tolistviewformattercsv.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformattercsv.cpp'; fi`
+
+tora-tolistviewformatterhtml.o: tolistviewformatterhtml.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformatterhtml.o -MD -MP -MF "$(DEPDIR)/tora-tolistviewformatterhtml.Tpo" -c -o tora-tolistviewformatterhtml.o `test -f 'tolistviewformatterhtml.cpp' || echo '$(srcdir)/'`tolistviewformatterhtml.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformatterhtml.Tpo" "$(DEPDIR)/tora-tolistviewformatterhtml.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformatterhtml.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformatterhtml.cpp' object='tora-tolistviewformatterhtml.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformatterhtml.o `test -f 'tolistviewformatterhtml.cpp' || echo '$(srcdir)/'`tolistviewformatterhtml.cpp
+
+tora-tolistviewformatterhtml.obj: tolistviewformatterhtml.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformatterhtml.obj -MD -MP -MF "$(DEPDIR)/tora-tolistviewformatterhtml.Tpo" -c -o tora-tolistviewformatterhtml.obj `if test -f 'tolistviewformatterhtml.cpp'; then $(CYGPATH_W) 'tolistviewformatterhtml.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformatterhtml.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformatterhtml.Tpo" "$(DEPDIR)/tora-tolistviewformatterhtml.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformatterhtml.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformatterhtml.cpp' object='tora-tolistviewformatterhtml.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformatterhtml.obj `if test -f 'tolistviewformatterhtml.cpp'; then $(CYGPATH_W) 'tolistviewformatterhtml.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformatterhtml.cpp'; fi`
+
+tora-tolistviewformattersql.o: tolistviewformattersql.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformattersql.o -MD -MP -MF "$(DEPDIR)/tora-tolistviewformattersql.Tpo" -c -o tora-tolistviewformattersql.o `test -f 'tolistviewformattersql.cpp' || echo '$(srcdir)/'`tolistviewformattersql.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformattersql.Tpo" "$(DEPDIR)/tora-tolistviewformattersql.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformattersql.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformattersql.cpp' object='tora-tolistviewformattersql.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformattersql.o `test -f 'tolistviewformattersql.cpp' || echo '$(srcdir)/'`tolistviewformattersql.cpp
+
+tora-tolistviewformattersql.obj: tolistviewformattersql.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformattersql.obj -MD -MP -MF "$(DEPDIR)/tora-tolistviewformattersql.Tpo" -c -o tora-tolistviewformattersql.obj `if test -f 'tolistviewformattersql.cpp'; then $(CYGPATH_W) 'tolistviewformattersql.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformattersql.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformattersql.Tpo" "$(DEPDIR)/tora-tolistviewformattersql.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformattersql.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformattersql.cpp' object='tora-tolistviewformattersql.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformattersql.obj `if test -f 'tolistviewformattersql.cpp'; then $(CYGPATH_W) 'tolistviewformattersql.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformattersql.cpp'; fi`
+
+tora-tolistviewformattertabdel.o: tolistviewformattertabdel.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformattertabdel.o -MD -MP -MF "$(DEPDIR)/tora-tolistviewformattertabdel.Tpo" -c -o tora-tolistviewformattertabdel.o `test -f 'tolistviewformattertabdel.cpp' || echo '$(srcdir)/'`tolistviewformattertabdel.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformattertabdel.Tpo" "$(DEPDIR)/tora-tolistviewformattertabdel.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformattertabdel.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformattertabdel.cpp' object='tora-tolistviewformattertabdel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformattertabdel.o `test -f 'tolistviewformattertabdel.cpp' || echo '$(srcdir)/'`tolistviewformattertabdel.cpp
+
+tora-tolistviewformattertabdel.obj: tolistviewformattertabdel.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformattertabdel.obj -MD -MP -MF "$(DEPDIR)/tora-tolistviewformattertabdel.Tpo" -c -o tora-tolistviewformattertabdel.obj `if test -f 'tolistviewformattertabdel.cpp'; then $(CYGPATH_W) 'tolistviewformattertabdel.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformattertabdel.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformattertabdel.Tpo" "$(DEPDIR)/tora-tolistviewformattertabdel.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformattertabdel.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformattertabdel.cpp' object='tora-tolistviewformattertabdel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformattertabdel.obj `if test -f 'tolistviewformattertabdel.cpp'; then $(CYGPATH_W) 'tolistviewformattertabdel.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformattertabdel.cpp'; fi`
+
+tora-tolistviewformattertext.o: tolistviewformattertext.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformattertext.o -MD -MP -MF "$(DEPDIR)/tora-tolistviewformattertext.Tpo" -c -o tora-tolistviewformattertext.o `test -f 'tolistviewformattertext.cpp' || echo '$(srcdir)/'`tolistviewformattertext.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformattertext.Tpo" "$(DEPDIR)/tora-tolistviewformattertext.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformattertext.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformattertext.cpp' object='tora-tolistviewformattertext.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformattertext.o `test -f 'tolistviewformattertext.cpp' || echo '$(srcdir)/'`tolistviewformattertext.cpp
+
+tora-tolistviewformattertext.obj: tolistviewformattertext.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolistviewformattertext.obj -MD -MP -MF "$(DEPDIR)/tora-tolistviewformattertext.Tpo" -c -o tora-tolistviewformattertext.obj `if test -f 'tolistviewformattertext.cpp'; then $(CYGPATH_W) 'tolistviewformattertext.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformattertext.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolistviewformattertext.Tpo" "$(DEPDIR)/tora-tolistviewformattertext.Po"; else rm -f "$(DEPDIR)/tora-tolistviewformattertext.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolistviewformattertext.cpp' object='tora-tolistviewformattertext.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolistviewformattertext.obj `if test -f 'tolistviewformattertext.cpp'; then $(CYGPATH_W) 'tolistviewformattertext.cpp'; else $(CYGPATH_W) '$(srcdir)/tolistviewformattertext.cpp'; fi`
+
+tora-tomain.o: tomain.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tomain.o -MD -MP -MF "$(DEPDIR)/tora-tomain.Tpo" -c -o tora-tomain.o `test -f 'tomain.cpp' || echo '$(srcdir)/'`tomain.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tomain.Tpo" "$(DEPDIR)/tora-tomain.Po"; else rm -f "$(DEPDIR)/tora-tomain.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tomain.cpp' object='tora-tomain.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tomain.o `test -f 'tomain.cpp' || echo '$(srcdir)/'`tomain.cpp
+
+tora-tomain.obj: tomain.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tomain.obj -MD -MP -MF "$(DEPDIR)/tora-tomain.Tpo" -c -o tora-tomain.obj `if test -f 'tomain.cpp'; then $(CYGPATH_W) 'tomain.cpp'; else $(CYGPATH_W) '$(srcdir)/tomain.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tomain.Tpo" "$(DEPDIR)/tora-tomain.Po"; else rm -f "$(DEPDIR)/tora-tomain.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tomain.cpp' object='tora-tomain.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tomain.obj `if test -f 'tomain.cpp'; then $(CYGPATH_W) 'tomain.cpp'; else $(CYGPATH_W) '$(srcdir)/tomain.cpp'; fi`
+
+tora-tomarkedtext.o: tomarkedtext.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tomarkedtext.o -MD -MP -MF "$(DEPDIR)/tora-tomarkedtext.Tpo" -c -o tora-tomarkedtext.o `test -f 'tomarkedtext.cpp' || echo '$(srcdir)/'`tomarkedtext.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tomarkedtext.Tpo" "$(DEPDIR)/tora-tomarkedtext.Po"; else rm -f "$(DEPDIR)/tora-tomarkedtext.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tomarkedtext.cpp' object='tora-tomarkedtext.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tomarkedtext.o `test -f 'tomarkedtext.cpp' || echo '$(srcdir)/'`tomarkedtext.cpp
+
+tora-tomarkedtext.obj: tomarkedtext.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tomarkedtext.obj -MD -MP -MF "$(DEPDIR)/tora-tomarkedtext.Tpo" -c -o tora-tomarkedtext.obj `if test -f 'tomarkedtext.cpp'; then $(CYGPATH_W) 'tomarkedtext.cpp'; else $(CYGPATH_W) '$(srcdir)/tomarkedtext.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tomarkedtext.Tpo" "$(DEPDIR)/tora-tomarkedtext.Po"; else rm -f "$(DEPDIR)/tora-tomarkedtext.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tomarkedtext.cpp' object='tora-tomarkedtext.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tomarkedtext.obj `if test -f 'tomarkedtext.cpp'; then $(CYGPATH_W) 'tomarkedtext.cpp'; else $(CYGPATH_W) '$(srcdir)/tomarkedtext.cpp'; fi`
+
+tora-tomemoeditor.o: tomemoeditor.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tomemoeditor.o -MD -MP -MF "$(DEPDIR)/tora-tomemoeditor.Tpo" -c -o tora-tomemoeditor.o `test -f 'tomemoeditor.cpp' || echo '$(srcdir)/'`tomemoeditor.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tomemoeditor.Tpo" "$(DEPDIR)/tora-tomemoeditor.Po"; else rm -f "$(DEPDIR)/tora-tomemoeditor.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tomemoeditor.cpp' object='tora-tomemoeditor.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tomemoeditor.o `test -f 'tomemoeditor.cpp' || echo '$(srcdir)/'`tomemoeditor.cpp
+
+tora-tomemoeditor.obj: tomemoeditor.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tomemoeditor.obj -MD -MP -MF "$(DEPDIR)/tora-tomemoeditor.Tpo" -c -o tora-tomemoeditor.obj `if test -f 'tomemoeditor.cpp'; then $(CYGPATH_W) 'tomemoeditor.cpp'; else $(CYGPATH_W) '$(srcdir)/tomemoeditor.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tomemoeditor.Tpo" "$(DEPDIR)/tora-tomemoeditor.Po"; else rm -f "$(DEPDIR)/tora-tomemoeditor.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tomemoeditor.cpp' object='tora-tomemoeditor.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tomemoeditor.obj `if test -f 'tomemoeditor.cpp'; then $(CYGPATH_W) 'tomemoeditor.cpp'; else $(CYGPATH_W) '$(srcdir)/tomemoeditor.cpp'; fi`
+
+tora-tomessageui.o: tomessageui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tomessageui.o -MD -MP -MF "$(DEPDIR)/tora-tomessageui.Tpo" -c -o tora-tomessageui.o `test -f 'tomessageui.cpp' || echo '$(srcdir)/'`tomessageui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tomessageui.Tpo" "$(DEPDIR)/tora-tomessageui.Po"; else rm -f "$(DEPDIR)/tora-tomessageui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tomessageui.cpp' object='tora-tomessageui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tomessageui.o `test -f 'tomessageui.cpp' || echo '$(srcdir)/'`tomessageui.cpp
+
+tora-tomessageui.obj: tomessageui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tomessageui.obj -MD -MP -MF "$(DEPDIR)/tora-tomessageui.Tpo" -c -o tora-tomessageui.obj `if test -f 'tomessageui.cpp'; then $(CYGPATH_W) 'tomessageui.cpp'; else $(CYGPATH_W) '$(srcdir)/tomessageui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tomessageui.Tpo" "$(DEPDIR)/tora-tomessageui.Po"; else rm -f "$(DEPDIR)/tora-tomessageui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tomessageui.cpp' object='tora-tomessageui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tomessageui.obj `if test -f 'tomessageui.cpp'; then $(CYGPATH_W) 'tomessageui.cpp'; else $(CYGPATH_W) '$(srcdir)/tomessageui.cpp'; fi`
+
+tora-tonewconnection.o: tonewconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tonewconnection.o -MD -MP -MF "$(DEPDIR)/tora-tonewconnection.Tpo" -c -o tora-tonewconnection.o `test -f 'tonewconnection.cpp' || echo '$(srcdir)/'`tonewconnection.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tonewconnection.Tpo" "$(DEPDIR)/tora-tonewconnection.Po"; else rm -f "$(DEPDIR)/tora-tonewconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tonewconnection.cpp' object='tora-tonewconnection.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tonewconnection.o `test -f 'tonewconnection.cpp' || echo '$(srcdir)/'`tonewconnection.cpp
+
+tora-tonewconnection.obj: tonewconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tonewconnection.obj -MD -MP -MF "$(DEPDIR)/tora-tonewconnection.Tpo" -c -o tora-tonewconnection.obj `if test -f 'tonewconnection.cpp'; then $(CYGPATH_W) 'tonewconnection.cpp'; else $(CYGPATH_W) '$(srcdir)/tonewconnection.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tonewconnection.Tpo" "$(DEPDIR)/tora-tonewconnection.Po"; else rm -f "$(DEPDIR)/tora-tonewconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tonewconnection.cpp' object='tora-tonewconnection.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tonewconnection.obj `if test -f 'tonewconnection.cpp'; then $(CYGPATH_W) 'tonewconnection.cpp'; else $(CYGPATH_W) '$(srcdir)/tonewconnection.cpp'; fi`
+
+tora-tonewconnectionui.o: tonewconnectionui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tonewconnectionui.o -MD -MP -MF "$(DEPDIR)/tora-tonewconnectionui.Tpo" -c -o tora-tonewconnectionui.o `test -f 'tonewconnectionui.cpp' || echo '$(srcdir)/'`tonewconnectionui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tonewconnectionui.Tpo" "$(DEPDIR)/tora-tonewconnectionui.Po"; else rm -f "$(DEPDIR)/tora-tonewconnectionui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tonewconnectionui.cpp' object='tora-tonewconnectionui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tonewconnectionui.o `test -f 'tonewconnectionui.cpp' || echo '$(srcdir)/'`tonewconnectionui.cpp
+
+tora-tonewconnectionui.obj: tonewconnectionui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tonewconnectionui.obj -MD -MP -MF "$(DEPDIR)/tora-tonewconnectionui.Tpo" -c -o tora-tonewconnectionui.obj `if test -f 'tonewconnectionui.cpp'; then $(CYGPATH_W) 'tonewconnectionui.cpp'; else $(CYGPATH_W) '$(srcdir)/tonewconnectionui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tonewconnectionui.Tpo" "$(DEPDIR)/tora-tonewconnectionui.Po"; else rm -f "$(DEPDIR)/tora-tonewconnectionui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tonewconnectionui.cpp' object='tora-tonewconnectionui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tonewconnectionui.obj `if test -f 'tonewconnectionui.cpp'; then $(CYGPATH_W) 'tonewconnectionui.cpp'; else $(CYGPATH_W) '$(srcdir)/tonewconnectionui.cpp'; fi`
+
+tora-tonoblockquery.o: tonoblockquery.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tonoblockquery.o -MD -MP -MF "$(DEPDIR)/tora-tonoblockquery.Tpo" -c -o tora-tonoblockquery.o `test -f 'tonoblockquery.cpp' || echo '$(srcdir)/'`tonoblockquery.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tonoblockquery.Tpo" "$(DEPDIR)/tora-tonoblockquery.Po"; else rm -f "$(DEPDIR)/tora-tonoblockquery.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tonoblockquery.cpp' object='tora-tonoblockquery.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tonoblockquery.o `test -f 'tonoblockquery.cpp' || echo '$(srcdir)/'`tonoblockquery.cpp
+
+tora-tonoblockquery.obj: tonoblockquery.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tonoblockquery.obj -MD -MP -MF "$(DEPDIR)/tora-tonoblockquery.Tpo" -c -o tora-tonoblockquery.obj `if test -f 'tonoblockquery.cpp'; then $(CYGPATH_W) 'tonoblockquery.cpp'; else $(CYGPATH_W) '$(srcdir)/tonoblockquery.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tonoblockquery.Tpo" "$(DEPDIR)/tora-tonoblockquery.Po"; else rm -f "$(DEPDIR)/tora-tonoblockquery.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tonoblockquery.cpp' object='tora-tonoblockquery.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tonoblockquery.obj `if test -f 'tonoblockquery.cpp'; then $(CYGPATH_W) 'tonoblockquery.cpp'; else $(CYGPATH_W) '$(srcdir)/tonoblockquery.cpp'; fi`
+
+tora-toparamget.o: toparamget.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toparamget.o -MD -MP -MF "$(DEPDIR)/tora-toparamget.Tpo" -c -o tora-toparamget.o `test -f 'toparamget.cpp' || echo '$(srcdir)/'`toparamget.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toparamget.Tpo" "$(DEPDIR)/tora-toparamget.Po"; else rm -f "$(DEPDIR)/tora-toparamget.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toparamget.cpp' object='tora-toparamget.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toparamget.o `test -f 'toparamget.cpp' || echo '$(srcdir)/'`toparamget.cpp
+
+tora-toparamget.obj: toparamget.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toparamget.obj -MD -MP -MF "$(DEPDIR)/tora-toparamget.Tpo" -c -o tora-toparamget.obj `if test -f 'toparamget.cpp'; then $(CYGPATH_W) 'toparamget.cpp'; else $(CYGPATH_W) '$(srcdir)/toparamget.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toparamget.Tpo" "$(DEPDIR)/tora-toparamget.Po"; else rm -f "$(DEPDIR)/tora-toparamget.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toparamget.cpp' object='tora-toparamget.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toparamget.obj `if test -f 'toparamget.cpp'; then $(CYGPATH_W) 'toparamget.cpp'; else $(CYGPATH_W) '$(srcdir)/toparamget.cpp'; fi`
+
+tora-topreferences.o: topreferences.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-topreferences.o -MD -MP -MF "$(DEPDIR)/tora-topreferences.Tpo" -c -o tora-topreferences.o `test -f 'topreferences.cpp' || echo '$(srcdir)/'`topreferences.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-topreferences.Tpo" "$(DEPDIR)/tora-topreferences.Po"; else rm -f "$(DEPDIR)/tora-topreferences.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='topreferences.cpp' object='tora-topreferences.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-topreferences.o `test -f 'topreferences.cpp' || echo '$(srcdir)/'`topreferences.cpp
+
+tora-topreferences.obj: topreferences.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-topreferences.obj -MD -MP -MF "$(DEPDIR)/tora-topreferences.Tpo" -c -o tora-topreferences.obj `if test -f 'topreferences.cpp'; then $(CYGPATH_W) 'topreferences.cpp'; else $(CYGPATH_W) '$(srcdir)/topreferences.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-topreferences.Tpo" "$(DEPDIR)/tora-topreferences.Po"; else rm -f "$(DEPDIR)/tora-topreferences.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='topreferences.cpp' object='tora-topreferences.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-topreferences.obj `if test -f 'topreferences.cpp'; then $(CYGPATH_W) 'topreferences.cpp'; else $(CYGPATH_W) '$(srcdir)/topreferences.cpp'; fi`
+
+tora-topreferencesui.o: topreferencesui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-topreferencesui.o -MD -MP -MF "$(DEPDIR)/tora-topreferencesui.Tpo" -c -o tora-topreferencesui.o `test -f 'topreferencesui.cpp' || echo '$(srcdir)/'`topreferencesui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-topreferencesui.Tpo" "$(DEPDIR)/tora-topreferencesui.Po"; else rm -f "$(DEPDIR)/tora-topreferencesui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='topreferencesui.cpp' object='tora-topreferencesui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-topreferencesui.o `test -f 'topreferencesui.cpp' || echo '$(srcdir)/'`topreferencesui.cpp
+
+tora-topreferencesui.obj: topreferencesui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-topreferencesui.obj -MD -MP -MF "$(DEPDIR)/tora-topreferencesui.Tpo" -c -o tora-topreferencesui.obj `if test -f 'topreferencesui.cpp'; then $(CYGPATH_W) 'topreferencesui.cpp'; else $(CYGPATH_W) '$(srcdir)/topreferencesui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-topreferencesui.Tpo" "$(DEPDIR)/tora-topreferencesui.Po"; else rm -f "$(DEPDIR)/tora-topreferencesui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='topreferencesui.cpp' object='tora-topreferencesui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-topreferencesui.obj `if test -f 'topreferencesui.cpp'; then $(CYGPATH_W) 'topreferencesui.cpp'; else $(CYGPATH_W) '$(srcdir)/topreferencesui.cpp'; fi`
+
+tora-toresult.o: toresult.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresult.o -MD -MP -MF "$(DEPDIR)/tora-toresult.Tpo" -c -o tora-toresult.o `test -f 'toresult.cpp' || echo '$(srcdir)/'`toresult.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresult.Tpo" "$(DEPDIR)/tora-toresult.Po"; else rm -f "$(DEPDIR)/tora-toresult.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresult.cpp' object='tora-toresult.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresult.o `test -f 'toresult.cpp' || echo '$(srcdir)/'`toresult.cpp
+
+tora-toresult.obj: toresult.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresult.obj -MD -MP -MF "$(DEPDIR)/tora-toresult.Tpo" -c -o tora-toresult.obj `if test -f 'toresult.cpp'; then $(CYGPATH_W) 'toresult.cpp'; else $(CYGPATH_W) '$(srcdir)/toresult.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresult.Tpo" "$(DEPDIR)/tora-toresult.Po"; else rm -f "$(DEPDIR)/tora-toresult.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresult.cpp' object='tora-toresult.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresult.obj `if test -f 'toresult.cpp'; then $(CYGPATH_W) 'toresult.cpp'; else $(CYGPATH_W) '$(srcdir)/toresult.cpp'; fi`
+
+tora-toresultfield.o: toresultfield.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultfield.o -MD -MP -MF "$(DEPDIR)/tora-toresultfield.Tpo" -c -o tora-toresultfield.o `test -f 'toresultfield.cpp' || echo '$(srcdir)/'`toresultfield.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultfield.Tpo" "$(DEPDIR)/tora-toresultfield.Po"; else rm -f "$(DEPDIR)/tora-toresultfield.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultfield.cpp' object='tora-toresultfield.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultfield.o `test -f 'toresultfield.cpp' || echo '$(srcdir)/'`toresultfield.cpp
+
+tora-toresultfield.obj: toresultfield.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultfield.obj -MD -MP -MF "$(DEPDIR)/tora-toresultfield.Tpo" -c -o tora-toresultfield.obj `if test -f 'toresultfield.cpp'; then $(CYGPATH_W) 'toresultfield.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultfield.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultfield.Tpo" "$(DEPDIR)/tora-toresultfield.Po"; else rm -f "$(DEPDIR)/tora-toresultfield.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultfield.cpp' object='tora-toresultfield.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultfield.obj `if test -f 'toresultfield.cpp'; then $(CYGPATH_W) 'toresultfield.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultfield.cpp'; fi`
+
+tora-toresultitem.o: toresultitem.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultitem.o -MD -MP -MF "$(DEPDIR)/tora-toresultitem.Tpo" -c -o tora-toresultitem.o `test -f 'toresultitem.cpp' || echo '$(srcdir)/'`toresultitem.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultitem.Tpo" "$(DEPDIR)/tora-toresultitem.Po"; else rm -f "$(DEPDIR)/tora-toresultitem.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultitem.cpp' object='tora-toresultitem.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultitem.o `test -f 'toresultitem.cpp' || echo '$(srcdir)/'`toresultitem.cpp
+
+tora-toresultitem.obj: toresultitem.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultitem.obj -MD -MP -MF "$(DEPDIR)/tora-toresultitem.Tpo" -c -o tora-toresultitem.obj `if test -f 'toresultitem.cpp'; then $(CYGPATH_W) 'toresultitem.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultitem.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultitem.Tpo" "$(DEPDIR)/tora-toresultitem.Po"; else rm -f "$(DEPDIR)/tora-toresultitem.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultitem.cpp' object='tora-toresultitem.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultitem.obj `if test -f 'toresultitem.cpp'; then $(CYGPATH_W) 'toresultitem.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultitem.cpp'; fi`
+
+tora-toresultlistformatui.o: toresultlistformatui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultlistformatui.o -MD -MP -MF "$(DEPDIR)/tora-toresultlistformatui.Tpo" -c -o tora-toresultlistformatui.o `test -f 'toresultlistformatui.cpp' || echo '$(srcdir)/'`toresultlistformatui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultlistformatui.Tpo" "$(DEPDIR)/tora-toresultlistformatui.Po"; else rm -f "$(DEPDIR)/tora-toresultlistformatui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultlistformatui.cpp' object='tora-toresultlistformatui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultlistformatui.o `test -f 'toresultlistformatui.cpp' || echo '$(srcdir)/'`toresultlistformatui.cpp
+
+tora-toresultlistformatui.obj: toresultlistformatui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultlistformatui.obj -MD -MP -MF "$(DEPDIR)/tora-toresultlistformatui.Tpo" -c -o tora-toresultlistformatui.obj `if test -f 'toresultlistformatui.cpp'; then $(CYGPATH_W) 'toresultlistformatui.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultlistformatui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultlistformatui.Tpo" "$(DEPDIR)/tora-toresultlistformatui.Po"; else rm -f "$(DEPDIR)/tora-toresultlistformatui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultlistformatui.cpp' object='tora-toresultlistformatui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultlistformatui.obj `if test -f 'toresultlistformatui.cpp'; then $(CYGPATH_W) 'toresultlistformatui.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultlistformatui.cpp'; fi`
+
+tora-toresultstats.o: toresultstats.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultstats.o -MD -MP -MF "$(DEPDIR)/tora-toresultstats.Tpo" -c -o tora-toresultstats.o `test -f 'toresultstats.cpp' || echo '$(srcdir)/'`toresultstats.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultstats.Tpo" "$(DEPDIR)/tora-toresultstats.Po"; else rm -f "$(DEPDIR)/tora-toresultstats.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultstats.cpp' object='tora-toresultstats.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultstats.o `test -f 'toresultstats.cpp' || echo '$(srcdir)/'`toresultstats.cpp
+
+tora-toresultstats.obj: toresultstats.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultstats.obj -MD -MP -MF "$(DEPDIR)/tora-toresultstats.Tpo" -c -o tora-toresultstats.obj `if test -f 'toresultstats.cpp'; then $(CYGPATH_W) 'toresultstats.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultstats.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultstats.Tpo" "$(DEPDIR)/tora-toresultstats.Po"; else rm -f "$(DEPDIR)/tora-toresultstats.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultstats.cpp' object='tora-toresultstats.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultstats.obj `if test -f 'toresultstats.cpp'; then $(CYGPATH_W) 'toresultstats.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultstats.cpp'; fi`
+
+tora-toresultview.o: toresultview.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultview.o -MD -MP -MF "$(DEPDIR)/tora-toresultview.Tpo" -c -o tora-toresultview.o `test -f 'toresultview.cpp' || echo '$(srcdir)/'`toresultview.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultview.Tpo" "$(DEPDIR)/tora-toresultview.Po"; else rm -f "$(DEPDIR)/tora-toresultview.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultview.cpp' object='tora-toresultview.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultview.o `test -f 'toresultview.cpp' || echo '$(srcdir)/'`toresultview.cpp
+
+tora-toresultview.obj: toresultview.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultview.obj -MD -MP -MF "$(DEPDIR)/tora-toresultview.Tpo" -c -o tora-toresultview.obj `if test -f 'toresultview.cpp'; then $(CYGPATH_W) 'toresultview.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultview.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultview.Tpo" "$(DEPDIR)/tora-toresultview.Po"; else rm -f "$(DEPDIR)/tora-toresultview.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultview.cpp' object='tora-toresultview.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultview.obj `if test -f 'toresultview.cpp'; then $(CYGPATH_W) 'toresultview.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultview.cpp'; fi`
+
+tora-tosearchreplace.o: tosearchreplace.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosearchreplace.o -MD -MP -MF "$(DEPDIR)/tora-tosearchreplace.Tpo" -c -o tora-tosearchreplace.o `test -f 'tosearchreplace.cpp' || echo '$(srcdir)/'`tosearchreplace.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosearchreplace.Tpo" "$(DEPDIR)/tora-tosearchreplace.Po"; else rm -f "$(DEPDIR)/tora-tosearchreplace.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosearchreplace.cpp' object='tora-tosearchreplace.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosearchreplace.o `test -f 'tosearchreplace.cpp' || echo '$(srcdir)/'`tosearchreplace.cpp
+
+tora-tosearchreplace.obj: tosearchreplace.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosearchreplace.obj -MD -MP -MF "$(DEPDIR)/tora-tosearchreplace.Tpo" -c -o tora-tosearchreplace.obj `if test -f 'tosearchreplace.cpp'; then $(CYGPATH_W) 'tosearchreplace.cpp'; else $(CYGPATH_W) '$(srcdir)/tosearchreplace.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosearchreplace.Tpo" "$(DEPDIR)/tora-tosearchreplace.Po"; else rm -f "$(DEPDIR)/tora-tosearchreplace.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosearchreplace.cpp' object='tora-tosearchreplace.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosearchreplace.obj `if test -f 'tosearchreplace.cpp'; then $(CYGPATH_W) 'tosearchreplace.cpp'; else $(CYGPATH_W) '$(srcdir)/tosearchreplace.cpp'; fi`
+
+tora-tosearchreplaceui.o: tosearchreplaceui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosearchreplaceui.o -MD -MP -MF "$(DEPDIR)/tora-tosearchreplaceui.Tpo" -c -o tora-tosearchreplaceui.o `test -f 'tosearchreplaceui.cpp' || echo '$(srcdir)/'`tosearchreplaceui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosearchreplaceui.Tpo" "$(DEPDIR)/tora-tosearchreplaceui.Po"; else rm -f "$(DEPDIR)/tora-tosearchreplaceui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosearchreplaceui.cpp' object='tora-tosearchreplaceui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosearchreplaceui.o `test -f 'tosearchreplaceui.cpp' || echo '$(srcdir)/'`tosearchreplaceui.cpp
+
+tora-tosearchreplaceui.obj: tosearchreplaceui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosearchreplaceui.obj -MD -MP -MF "$(DEPDIR)/tora-tosearchreplaceui.Tpo" -c -o tora-tosearchreplaceui.obj `if test -f 'tosearchreplaceui.cpp'; then $(CYGPATH_W) 'tosearchreplaceui.cpp'; else $(CYGPATH_W) '$(srcdir)/tosearchreplaceui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosearchreplaceui.Tpo" "$(DEPDIR)/tora-tosearchreplaceui.Po"; else rm -f "$(DEPDIR)/tora-tosearchreplaceui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosearchreplaceui.cpp' object='tora-tosearchreplaceui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosearchreplaceui.obj `if test -f 'tosearchreplaceui.cpp'; then $(CYGPATH_W) 'tosearchreplaceui.cpp'; else $(CYGPATH_W) '$(srcdir)/tosearchreplaceui.cpp'; fi`
+
+tora-tosmtp.o: tosmtp.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosmtp.o -MD -MP -MF "$(DEPDIR)/tora-tosmtp.Tpo" -c -o tora-tosmtp.o `test -f 'tosmtp.cpp' || echo '$(srcdir)/'`tosmtp.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosmtp.Tpo" "$(DEPDIR)/tora-tosmtp.Po"; else rm -f "$(DEPDIR)/tora-tosmtp.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosmtp.cpp' object='tora-tosmtp.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosmtp.o `test -f 'tosmtp.cpp' || echo '$(srcdir)/'`tosmtp.cpp
+
+tora-tosmtp.obj: tosmtp.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosmtp.obj -MD -MP -MF "$(DEPDIR)/tora-tosmtp.Tpo" -c -o tora-tosmtp.obj `if test -f 'tosmtp.cpp'; then $(CYGPATH_W) 'tosmtp.cpp'; else $(CYGPATH_W) '$(srcdir)/tosmtp.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosmtp.Tpo" "$(DEPDIR)/tora-tosmtp.Po"; else rm -f "$(DEPDIR)/tora-tosmtp.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosmtp.cpp' object='tora-tosmtp.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosmtp.obj `if test -f 'tosmtp.cpp'; then $(CYGPATH_W) 'tosmtp.cpp'; else $(CYGPATH_W) '$(srcdir)/tosmtp.cpp'; fi`
+
+tora-tosplash.o: tosplash.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosplash.o -MD -MP -MF "$(DEPDIR)/tora-tosplash.Tpo" -c -o tora-tosplash.o `test -f 'tosplash.cpp' || echo '$(srcdir)/'`tosplash.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosplash.Tpo" "$(DEPDIR)/tora-tosplash.Po"; else rm -f "$(DEPDIR)/tora-tosplash.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosplash.cpp' object='tora-tosplash.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosplash.o `test -f 'tosplash.cpp' || echo '$(srcdir)/'`tosplash.cpp
+
+tora-tosplash.obj: tosplash.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosplash.obj -MD -MP -MF "$(DEPDIR)/tora-tosplash.Tpo" -c -o tora-tosplash.obj `if test -f 'tosplash.cpp'; then $(CYGPATH_W) 'tosplash.cpp'; else $(CYGPATH_W) '$(srcdir)/tosplash.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosplash.Tpo" "$(DEPDIR)/tora-tosplash.Po"; else rm -f "$(DEPDIR)/tora-tosplash.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosplash.cpp' object='tora-tosplash.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosplash.obj `if test -f 'tosplash.cpp'; then $(CYGPATH_W) 'tosplash.cpp'; else $(CYGPATH_W) '$(srcdir)/tosplash.cpp'; fi`
+
+tora-tosql.o: tosql.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosql.o -MD -MP -MF "$(DEPDIR)/tora-tosql.Tpo" -c -o tora-tosql.o `test -f 'tosql.cpp' || echo '$(srcdir)/'`tosql.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosql.Tpo" "$(DEPDIR)/tora-tosql.Po"; else rm -f "$(DEPDIR)/tora-tosql.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosql.cpp' object='tora-tosql.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosql.o `test -f 'tosql.cpp' || echo '$(srcdir)/'`tosql.cpp
+
+tora-tosql.obj: tosql.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosql.obj -MD -MP -MF "$(DEPDIR)/tora-tosql.Tpo" -c -o tora-tosql.obj `if test -f 'tosql.cpp'; then $(CYGPATH_W) 'tosql.cpp'; else $(CYGPATH_W) '$(srcdir)/tosql.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosql.Tpo" "$(DEPDIR)/tora-tosql.Po"; else rm -f "$(DEPDIR)/tora-tosql.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosql.cpp' object='tora-tosql.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosql.obj `if test -f 'tosql.cpp'; then $(CYGPATH_W) 'tosql.cpp'; else $(CYGPATH_W) '$(srcdir)/tosql.cpp'; fi`
+
+tora-tosqlparse.o: tosqlparse.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosqlparse.o -MD -MP -MF "$(DEPDIR)/tora-tosqlparse.Tpo" -c -o tora-tosqlparse.o `test -f 'tosqlparse.cpp' || echo '$(srcdir)/'`tosqlparse.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosqlparse.Tpo" "$(DEPDIR)/tora-tosqlparse.Po"; else rm -f "$(DEPDIR)/tora-tosqlparse.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosqlparse.cpp' object='tora-tosqlparse.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosqlparse.o `test -f 'tosqlparse.cpp' || echo '$(srcdir)/'`tosqlparse.cpp
+
+tora-tosqlparse.obj: tosqlparse.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosqlparse.obj -MD -MP -MF "$(DEPDIR)/tora-tosqlparse.Tpo" -c -o tora-tosqlparse.obj `if test -f 'tosqlparse.cpp'; then $(CYGPATH_W) 'tosqlparse.cpp'; else $(CYGPATH_W) '$(srcdir)/tosqlparse.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosqlparse.Tpo" "$(DEPDIR)/tora-tosqlparse.Po"; else rm -f "$(DEPDIR)/tora-tosqlparse.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosqlparse.cpp' object='tora-tosqlparse.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosqlparse.obj `if test -f 'tosqlparse.cpp'; then $(CYGPATH_W) 'tosqlparse.cpp'; else $(CYGPATH_W) '$(srcdir)/tosqlparse.cpp'; fi`
+
+tora-tosyntaxsetup.o: tosyntaxsetup.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosyntaxsetup.o -MD -MP -MF "$(DEPDIR)/tora-tosyntaxsetup.Tpo" -c -o tora-tosyntaxsetup.o `test -f 'tosyntaxsetup.cpp' || echo '$(srcdir)/'`tosyntaxsetup.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosyntaxsetup.Tpo" "$(DEPDIR)/tora-tosyntaxsetup.Po"; else rm -f "$(DEPDIR)/tora-tosyntaxsetup.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosyntaxsetup.cpp' object='tora-tosyntaxsetup.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosyntaxsetup.o `test -f 'tosyntaxsetup.cpp' || echo '$(srcdir)/'`tosyntaxsetup.cpp
+
+tora-tosyntaxsetup.obj: tosyntaxsetup.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosyntaxsetup.obj -MD -MP -MF "$(DEPDIR)/tora-tosyntaxsetup.Tpo" -c -o tora-tosyntaxsetup.obj `if test -f 'tosyntaxsetup.cpp'; then $(CYGPATH_W) 'tosyntaxsetup.cpp'; else $(CYGPATH_W) '$(srcdir)/tosyntaxsetup.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosyntaxsetup.Tpo" "$(DEPDIR)/tora-tosyntaxsetup.Po"; else rm -f "$(DEPDIR)/tora-tosyntaxsetup.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosyntaxsetup.cpp' object='tora-tosyntaxsetup.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosyntaxsetup.obj `if test -f 'tosyntaxsetup.cpp'; then $(CYGPATH_W) 'tosyntaxsetup.cpp'; else $(CYGPATH_W) '$(srcdir)/tosyntaxsetup.cpp'; fi`
+
+tora-tosyntaxsetupui.o: tosyntaxsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosyntaxsetupui.o -MD -MP -MF "$(DEPDIR)/tora-tosyntaxsetupui.Tpo" -c -o tora-tosyntaxsetupui.o `test -f 'tosyntaxsetupui.cpp' || echo '$(srcdir)/'`tosyntaxsetupui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosyntaxsetupui.Tpo" "$(DEPDIR)/tora-tosyntaxsetupui.Po"; else rm -f "$(DEPDIR)/tora-tosyntaxsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosyntaxsetupui.cpp' object='tora-tosyntaxsetupui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosyntaxsetupui.o `test -f 'tosyntaxsetupui.cpp' || echo '$(srcdir)/'`tosyntaxsetupui.cpp
+
+tora-tosyntaxsetupui.obj: tosyntaxsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosyntaxsetupui.obj -MD -MP -MF "$(DEPDIR)/tora-tosyntaxsetupui.Tpo" -c -o tora-tosyntaxsetupui.obj `if test -f 'tosyntaxsetupui.cpp'; then $(CYGPATH_W) 'tosyntaxsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/tosyntaxsetupui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosyntaxsetupui.Tpo" "$(DEPDIR)/tora-tosyntaxsetupui.Po"; else rm -f "$(DEPDIR)/tora-tosyntaxsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosyntaxsetupui.cpp' object='tora-tosyntaxsetupui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosyntaxsetupui.obj `if test -f 'tosyntaxsetupui.cpp'; then $(CYGPATH_W) 'tosyntaxsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/tosyntaxsetupui.cpp'; fi`
+
+tora-totabwidget.o: totabwidget.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totabwidget.o -MD -MP -MF "$(DEPDIR)/tora-totabwidget.Tpo" -c -o tora-totabwidget.o `test -f 'totabwidget.cpp' || echo '$(srcdir)/'`totabwidget.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totabwidget.Tpo" "$(DEPDIR)/tora-totabwidget.Po"; else rm -f "$(DEPDIR)/tora-totabwidget.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totabwidget.cpp' object='tora-totabwidget.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totabwidget.o `test -f 'totabwidget.cpp' || echo '$(srcdir)/'`totabwidget.cpp
+
+tora-totabwidget.obj: totabwidget.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totabwidget.obj -MD -MP -MF "$(DEPDIR)/tora-totabwidget.Tpo" -c -o tora-totabwidget.obj `if test -f 'totabwidget.cpp'; then $(CYGPATH_W) 'totabwidget.cpp'; else $(CYGPATH_W) '$(srcdir)/totabwidget.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totabwidget.Tpo" "$(DEPDIR)/tora-totabwidget.Po"; else rm -f "$(DEPDIR)/tora-totabwidget.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totabwidget.cpp' object='tora-totabwidget.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totabwidget.obj `if test -f 'totabwidget.cpp'; then $(CYGPATH_W) 'totabwidget.cpp'; else $(CYGPATH_W) '$(srcdir)/totabwidget.cpp'; fi`
+
+tora-totemplateprovider.o: totemplateprovider.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemplateprovider.o -MD -MP -MF "$(DEPDIR)/tora-totemplateprovider.Tpo" -c -o tora-totemplateprovider.o `test -f 'totemplateprovider.cpp' || echo '$(srcdir)/'`totemplateprovider.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemplateprovider.Tpo" "$(DEPDIR)/tora-totemplateprovider.Po"; else rm -f "$(DEPDIR)/tora-totemplateprovider.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemplateprovider.cpp' object='tora-totemplateprovider.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemplateprovider.o `test -f 'totemplateprovider.cpp' || echo '$(srcdir)/'`totemplateprovider.cpp
+
+tora-totemplateprovider.obj: totemplateprovider.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemplateprovider.obj -MD -MP -MF "$(DEPDIR)/tora-totemplateprovider.Tpo" -c -o tora-totemplateprovider.obj `if test -f 'totemplateprovider.cpp'; then $(CYGPATH_W) 'totemplateprovider.cpp'; else $(CYGPATH_W) '$(srcdir)/totemplateprovider.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemplateprovider.Tpo" "$(DEPDIR)/tora-totemplateprovider.Po"; else rm -f "$(DEPDIR)/tora-totemplateprovider.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemplateprovider.cpp' object='tora-totemplateprovider.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemplateprovider.obj `if test -f 'totemplateprovider.cpp'; then $(CYGPATH_W) 'totemplateprovider.cpp'; else $(CYGPATH_W) '$(srcdir)/totemplateprovider.cpp'; fi`
+
+tora-totextview.o: totextview.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totextview.o -MD -MP -MF "$(DEPDIR)/tora-totextview.Tpo" -c -o tora-totextview.o `test -f 'totextview.cpp' || echo '$(srcdir)/'`totextview.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totextview.Tpo" "$(DEPDIR)/tora-totextview.Po"; else rm -f "$(DEPDIR)/tora-totextview.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totextview.cpp' object='tora-totextview.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totextview.o `test -f 'totextview.cpp' || echo '$(srcdir)/'`totextview.cpp
+
+tora-totextview.obj: totextview.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totextview.obj -MD -MP -MF "$(DEPDIR)/tora-totextview.Tpo" -c -o tora-totextview.obj `if test -f 'totextview.cpp'; then $(CYGPATH_W) 'totextview.cpp'; else $(CYGPATH_W) '$(srcdir)/totextview.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totextview.Tpo" "$(DEPDIR)/tora-totextview.Po"; else rm -f "$(DEPDIR)/tora-totextview.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totextview.cpp' object='tora-totextview.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totextview.obj `if test -f 'totextview.cpp'; then $(CYGPATH_W) 'totextview.cpp'; else $(CYGPATH_W) '$(srcdir)/totextview.cpp'; fi`
+
+tora-tothread.o: tothread.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tothread.o -MD -MP -MF "$(DEPDIR)/tora-tothread.Tpo" -c -o tora-tothread.o `test -f 'tothread.cpp' || echo '$(srcdir)/'`tothread.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tothread.Tpo" "$(DEPDIR)/tora-tothread.Po"; else rm -f "$(DEPDIR)/tora-tothread.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tothread.cpp' object='tora-tothread.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tothread.o `test -f 'tothread.cpp' || echo '$(srcdir)/'`tothread.cpp
+
+tora-tothread.obj: tothread.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tothread.obj -MD -MP -MF "$(DEPDIR)/tora-tothread.Tpo" -c -o tora-tothread.obj `if test -f 'tothread.cpp'; then $(CYGPATH_W) 'tothread.cpp'; else $(CYGPATH_W) '$(srcdir)/tothread.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tothread.Tpo" "$(DEPDIR)/tora-tothread.Po"; else rm -f "$(DEPDIR)/tora-tothread.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tothread.cpp' object='tora-tothread.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tothread.obj `if test -f 'tothread.cpp'; then $(CYGPATH_W) 'tothread.cpp'; else $(CYGPATH_W) '$(srcdir)/tothread.cpp'; fi`
+
+tora-totimer.o: totimer.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totimer.o -MD -MP -MF "$(DEPDIR)/tora-totimer.Tpo" -c -o tora-totimer.o `test -f 'totimer.cpp' || echo '$(srcdir)/'`totimer.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totimer.Tpo" "$(DEPDIR)/tora-totimer.Po"; else rm -f "$(DEPDIR)/tora-totimer.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totimer.cpp' object='tora-totimer.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totimer.o `test -f 'totimer.cpp' || echo '$(srcdir)/'`totimer.cpp
+
+tora-totimer.obj: totimer.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totimer.obj -MD -MP -MF "$(DEPDIR)/tora-totimer.Tpo" -c -o tora-totimer.obj `if test -f 'totimer.cpp'; then $(CYGPATH_W) 'totimer.cpp'; else $(CYGPATH_W) '$(srcdir)/totimer.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totimer.Tpo" "$(DEPDIR)/tora-totimer.Po"; else rm -f "$(DEPDIR)/tora-totimer.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totimer.cpp' object='tora-totimer.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totimer.obj `if test -f 'totimer.cpp'; then $(CYGPATH_W) 'totimer.cpp'; else $(CYGPATH_W) '$(srcdir)/totimer.cpp'; fi`
+
+tora-totool.o: totool.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totool.o -MD -MP -MF "$(DEPDIR)/tora-totool.Tpo" -c -o tora-totool.o `test -f 'totool.cpp' || echo '$(srcdir)/'`totool.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totool.Tpo" "$(DEPDIR)/tora-totool.Po"; else rm -f "$(DEPDIR)/tora-totool.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totool.cpp' object='tora-totool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totool.o `test -f 'totool.cpp' || echo '$(srcdir)/'`totool.cpp
+
+tora-totool.obj: totool.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totool.obj -MD -MP -MF "$(DEPDIR)/tora-totool.Tpo" -c -o tora-totool.obj `if test -f 'totool.cpp'; then $(CYGPATH_W) 'totool.cpp'; else $(CYGPATH_W) '$(srcdir)/totool.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totool.Tpo" "$(DEPDIR)/tora-totool.Po"; else rm -f "$(DEPDIR)/tora-totool.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totool.cpp' object='tora-totool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totool.obj `if test -f 'totool.cpp'; then $(CYGPATH_W) 'totool.cpp'; else $(CYGPATH_W) '$(srcdir)/totool.cpp'; fi`
+
+tora-totoolsettingui.o: totoolsettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totoolsettingui.o -MD -MP -MF "$(DEPDIR)/tora-totoolsettingui.Tpo" -c -o tora-totoolsettingui.o `test -f 'totoolsettingui.cpp' || echo '$(srcdir)/'`totoolsettingui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totoolsettingui.Tpo" "$(DEPDIR)/tora-totoolsettingui.Po"; else rm -f "$(DEPDIR)/tora-totoolsettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totoolsettingui.cpp' object='tora-totoolsettingui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totoolsettingui.o `test -f 'totoolsettingui.cpp' || echo '$(srcdir)/'`totoolsettingui.cpp
+
+tora-totoolsettingui.obj: totoolsettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totoolsettingui.obj -MD -MP -MF "$(DEPDIR)/tora-totoolsettingui.Tpo" -c -o tora-totoolsettingui.obj `if test -f 'totoolsettingui.cpp'; then $(CYGPATH_W) 'totoolsettingui.cpp'; else $(CYGPATH_W) '$(srcdir)/totoolsettingui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totoolsettingui.Tpo" "$(DEPDIR)/tora-totoolsettingui.Po"; else rm -f "$(DEPDIR)/tora-totoolsettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totoolsettingui.cpp' object='tora-totoolsettingui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totoolsettingui.obj `if test -f 'totoolsettingui.cpp'; then $(CYGPATH_W) 'totoolsettingui.cpp'; else $(CYGPATH_W) '$(srcdir)/totoolsettingui.cpp'; fi`
+
+tora-todroptablespaceui.o: todroptablespaceui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todroptablespaceui.o -MD -MP -MF "$(DEPDIR)/tora-todroptablespaceui.Tpo" -c -o tora-todroptablespaceui.o `test -f 'todroptablespaceui.cpp' || echo '$(srcdir)/'`todroptablespaceui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todroptablespaceui.Tpo" "$(DEPDIR)/tora-todroptablespaceui.Po"; else rm -f "$(DEPDIR)/tora-todroptablespaceui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todroptablespaceui.cpp' object='tora-todroptablespaceui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todroptablespaceui.o `test -f 'todroptablespaceui.cpp' || echo '$(srcdir)/'`todroptablespaceui.cpp
+
+tora-todroptablespaceui.obj: todroptablespaceui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todroptablespaceui.obj -MD -MP -MF "$(DEPDIR)/tora-todroptablespaceui.Tpo" -c -o tora-todroptablespaceui.obj `if test -f 'todroptablespaceui.cpp'; then $(CYGPATH_W) 'todroptablespaceui.cpp'; else $(CYGPATH_W) '$(srcdir)/todroptablespaceui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todroptablespaceui.Tpo" "$(DEPDIR)/tora-todroptablespaceui.Po"; else rm -f "$(DEPDIR)/tora-todroptablespaceui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todroptablespaceui.cpp' object='tora-todroptablespaceui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todroptablespaceui.obj `if test -f 'todroptablespaceui.cpp'; then $(CYGPATH_W) 'todroptablespaceui.cpp'; else $(CYGPATH_W) '$(srcdir)/todroptablespaceui.cpp'; fi`
+
+tora-utils.o: utils.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-utils.o -MD -MP -MF "$(DEPDIR)/tora-utils.Tpo" -c -o tora-utils.o `test -f 'utils.cpp' || echo '$(srcdir)/'`utils.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-utils.Tpo" "$(DEPDIR)/tora-utils.Po"; else rm -f "$(DEPDIR)/tora-utils.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='utils.cpp' object='tora-utils.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-utils.o `test -f 'utils.cpp' || echo '$(srcdir)/'`utils.cpp
+
+tora-utils.obj: utils.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-utils.obj -MD -MP -MF "$(DEPDIR)/tora-utils.Tpo" -c -o tora-utils.obj `if test -f 'utils.cpp'; then $(CYGPATH_W) 'utils.cpp'; else $(CYGPATH_W) '$(srcdir)/utils.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-utils.Tpo" "$(DEPDIR)/tora-utils.Po"; else rm -f "$(DEPDIR)/tora-utils.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='utils.cpp' object='tora-utils.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-utils.obj `if test -f 'utils.cpp'; then $(CYGPATH_W) 'utils.cpp'; else $(CYGPATH_W) '$(srcdir)/utils.cpp'; fi`
+
+tora-SmallObj.o: $(LOKIDIR_SRC)/SmallObj.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-SmallObj.o -MD -MP -MF "$(DEPDIR)/tora-SmallObj.Tpo" -c -o tora-SmallObj.o `test -f '$(LOKIDIR_SRC)/SmallObj.cpp' || echo '$(srcdir)/'`$(LOKIDIR_SRC)/SmallObj.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-SmallObj.Tpo" "$(DEPDIR)/tora-SmallObj.Po"; else rm -f "$(DEPDIR)/tora-SmallObj.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(LOKIDIR_SRC)/SmallObj.cpp' object='tora-SmallObj.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-SmallObj.o `test -f '$(LOKIDIR_SRC)/SmallObj.cpp' || echo '$(srcdir)/'`$(LOKIDIR_SRC)/SmallObj.cpp
+
+tora-SmallObj.obj: $(LOKIDIR_SRC)/SmallObj.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-SmallObj.obj -MD -MP -MF "$(DEPDIR)/tora-SmallObj.Tpo" -c -o tora-SmallObj.obj `if test -f '$(LOKIDIR_SRC)/SmallObj.cpp'; then $(CYGPATH_W) '$(LOKIDIR_SRC)/SmallObj.cpp'; else $(CYGPATH_W) '$(srcdir)/$(LOKIDIR_SRC)/SmallObj.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-SmallObj.Tpo" "$(DEPDIR)/tora-SmallObj.Po"; else rm -f "$(DEPDIR)/tora-SmallObj.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(LOKIDIR_SRC)/SmallObj.cpp' object='tora-SmallObj.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-SmallObj.obj `if test -f '$(LOKIDIR_SRC)/SmallObj.cpp'; then $(CYGPATH_W) '$(LOKIDIR_SRC)/SmallObj.cpp'; else $(CYGPATH_W) '$(srcdir)/$(LOKIDIR_SRC)/SmallObj.cpp'; fi`
+
+tora-Singleton.o: $(LOKIDIR_SRC)/Singleton.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-Singleton.o -MD -MP -MF "$(DEPDIR)/tora-Singleton.Tpo" -c -o tora-Singleton.o `test -f '$(LOKIDIR_SRC)/Singleton.cpp' || echo '$(srcdir)/'`$(LOKIDIR_SRC)/Singleton.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-Singleton.Tpo" "$(DEPDIR)/tora-Singleton.Po"; else rm -f "$(DEPDIR)/tora-Singleton.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(LOKIDIR_SRC)/Singleton.cpp' object='tora-Singleton.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-Singleton.o `test -f '$(LOKIDIR_SRC)/Singleton.cpp' || echo '$(srcdir)/'`$(LOKIDIR_SRC)/Singleton.cpp
+
+tora-Singleton.obj: $(LOKIDIR_SRC)/Singleton.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-Singleton.obj -MD -MP -MF "$(DEPDIR)/tora-Singleton.Tpo" -c -o tora-Singleton.obj `if test -f '$(LOKIDIR_SRC)/Singleton.cpp'; then $(CYGPATH_W) '$(LOKIDIR_SRC)/Singleton.cpp'; else $(CYGPATH_W) '$(srcdir)/$(LOKIDIR_SRC)/Singleton.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-Singleton.Tpo" "$(DEPDIR)/tora-Singleton.Po"; else rm -f "$(DEPDIR)/tora-Singleton.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$(LOKIDIR_SRC)/Singleton.cpp' object='tora-Singleton.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-Singleton.obj `if test -f '$(LOKIDIR_SRC)/Singleton.cpp'; then $(CYGPATH_W) '$(LOKIDIR_SRC)/Singleton.cpp'; else $(CYGPATH_W) '$(srcdir)/$(LOKIDIR_SRC)/Singleton.cpp'; fi`
+
+tora-toalert.o: toalert.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toalert.o -MD -MP -MF "$(DEPDIR)/tora-toalert.Tpo" -c -o tora-toalert.o `test -f 'toalert.cpp' || echo '$(srcdir)/'`toalert.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toalert.Tpo" "$(DEPDIR)/tora-toalert.Po"; else rm -f "$(DEPDIR)/tora-toalert.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toalert.cpp' object='tora-toalert.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toalert.o `test -f 'toalert.cpp' || echo '$(srcdir)/'`toalert.cpp
+
+tora-toalert.obj: toalert.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toalert.obj -MD -MP -MF "$(DEPDIR)/tora-toalert.Tpo" -c -o tora-toalert.obj `if test -f 'toalert.cpp'; then $(CYGPATH_W) 'toalert.cpp'; else $(CYGPATH_W) '$(srcdir)/toalert.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toalert.Tpo" "$(DEPDIR)/tora-toalert.Po"; else rm -f "$(DEPDIR)/tora-toalert.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toalert.cpp' object='tora-toalert.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toalert.obj `if test -f 'toalert.cpp'; then $(CYGPATH_W) 'toalert.cpp'; else $(CYGPATH_W) '$(srcdir)/toalert.cpp'; fi`
+
+tora-toanalyze.o: toanalyze.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toanalyze.o -MD -MP -MF "$(DEPDIR)/tora-toanalyze.Tpo" -c -o tora-toanalyze.o `test -f 'toanalyze.cpp' || echo '$(srcdir)/'`toanalyze.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toanalyze.Tpo" "$(DEPDIR)/tora-toanalyze.Po"; else rm -f "$(DEPDIR)/tora-toanalyze.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toanalyze.cpp' object='tora-toanalyze.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toanalyze.o `test -f 'toanalyze.cpp' || echo '$(srcdir)/'`toanalyze.cpp
+
+tora-toanalyze.obj: toanalyze.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toanalyze.obj -MD -MP -MF "$(DEPDIR)/tora-toanalyze.Tpo" -c -o tora-toanalyze.obj `if test -f 'toanalyze.cpp'; then $(CYGPATH_W) 'toanalyze.cpp'; else $(CYGPATH_W) '$(srcdir)/toanalyze.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toanalyze.Tpo" "$(DEPDIR)/tora-toanalyze.Po"; else rm -f "$(DEPDIR)/tora-toanalyze.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toanalyze.cpp' object='tora-toanalyze.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toanalyze.obj `if test -f 'toanalyze.cpp'; then $(CYGPATH_W) 'toanalyze.cpp'; else $(CYGPATH_W) '$(srcdir)/toanalyze.cpp'; fi`
+
+tora-tobackup.o: tobackup.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobackup.o -MD -MP -MF "$(DEPDIR)/tora-tobackup.Tpo" -c -o tora-tobackup.o `test -f 'tobackup.cpp' || echo '$(srcdir)/'`tobackup.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobackup.Tpo" "$(DEPDIR)/tora-tobackup.Po"; else rm -f "$(DEPDIR)/tora-tobackup.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobackup.cpp' object='tora-tobackup.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobackup.o `test -f 'tobackup.cpp' || echo '$(srcdir)/'`tobackup.cpp
+
+tora-tobackup.obj: tobackup.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobackup.obj -MD -MP -MF "$(DEPDIR)/tora-tobackup.Tpo" -c -o tora-tobackup.obj `if test -f 'tobackup.cpp'; then $(CYGPATH_W) 'tobackup.cpp'; else $(CYGPATH_W) '$(srcdir)/tobackup.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobackup.Tpo" "$(DEPDIR)/tora-tobackup.Po"; else rm -f "$(DEPDIR)/tora-tobackup.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobackup.cpp' object='tora-tobackup.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobackup.obj `if test -f 'tobackup.cpp'; then $(CYGPATH_W) 'tobackup.cpp'; else $(CYGPATH_W) '$(srcdir)/tobackup.cpp'; fi`
+
+tora-tobackuptool.o: tobackuptool.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobackuptool.o -MD -MP -MF "$(DEPDIR)/tora-tobackuptool.Tpo" -c -o tora-tobackuptool.o `test -f 'tobackuptool.cpp' || echo '$(srcdir)/'`tobackuptool.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobackuptool.Tpo" "$(DEPDIR)/tora-tobackuptool.Po"; else rm -f "$(DEPDIR)/tora-tobackuptool.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobackuptool.cpp' object='tora-tobackuptool.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobackuptool.o `test -f 'tobackuptool.cpp' || echo '$(srcdir)/'`tobackuptool.cpp
+
+tora-tobackuptool.obj: tobackuptool.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobackuptool.obj -MD -MP -MF "$(DEPDIR)/tora-tobackuptool.Tpo" -c -o tora-tobackuptool.obj `if test -f 'tobackuptool.cpp'; then $(CYGPATH_W) 'tobackuptool.cpp'; else $(CYGPATH_W) '$(srcdir)/tobackuptool.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobackuptool.Tpo" "$(DEPDIR)/tora-tobackuptool.Po"; else rm -f "$(DEPDIR)/tora-tobackuptool.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobackuptool.cpp' object='tora-tobackuptool.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobackuptool.obj `if test -f 'tobackuptool.cpp'; then $(CYGPATH_W) 'tobackuptool.cpp'; else $(CYGPATH_W) '$(srcdir)/tobackuptool.cpp'; fi`
+
+tora-tobrowser.o: tobrowser.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowser.o -MD -MP -MF "$(DEPDIR)/tora-tobrowser.Tpo" -c -o tora-tobrowser.o `test -f 'tobrowser.cpp' || echo '$(srcdir)/'`tobrowser.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowser.Tpo" "$(DEPDIR)/tora-tobrowser.Po"; else rm -f "$(DEPDIR)/tora-tobrowser.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowser.cpp' object='tora-tobrowser.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowser.o `test -f 'tobrowser.cpp' || echo '$(srcdir)/'`tobrowser.cpp
+
+tora-tobrowser.obj: tobrowser.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowser.obj -MD -MP -MF "$(DEPDIR)/tora-tobrowser.Tpo" -c -o tora-tobrowser.obj `if test -f 'tobrowser.cpp'; then $(CYGPATH_W) 'tobrowser.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowser.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowser.Tpo" "$(DEPDIR)/tora-tobrowser.Po"; else rm -f "$(DEPDIR)/tora-tobrowser.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowser.cpp' object='tora-tobrowser.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowser.obj `if test -f 'tobrowser.cpp'; then $(CYGPATH_W) 'tobrowser.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowser.cpp'; fi`
+
+tora-tobarchart.o: tobarchart.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobarchart.o -MD -MP -MF "$(DEPDIR)/tora-tobarchart.Tpo" -c -o tora-tobarchart.o `test -f 'tobarchart.cpp' || echo '$(srcdir)/'`tobarchart.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobarchart.Tpo" "$(DEPDIR)/tora-tobarchart.Po"; else rm -f "$(DEPDIR)/tora-tobarchart.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobarchart.cpp' object='tora-tobarchart.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobarchart.o `test -f 'tobarchart.cpp' || echo '$(srcdir)/'`tobarchart.cpp
+
+tora-tobarchart.obj: tobarchart.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobarchart.obj -MD -MP -MF "$(DEPDIR)/tora-tobarchart.Tpo" -c -o tora-tobarchart.obj `if test -f 'tobarchart.cpp'; then $(CYGPATH_W) 'tobarchart.cpp'; else $(CYGPATH_W) '$(srcdir)/tobarchart.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobarchart.Tpo" "$(DEPDIR)/tora-tobarchart.Po"; else rm -f "$(DEPDIR)/tora-tobarchart.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobarchart.cpp' object='tora-tobarchart.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobarchart.obj `if test -f 'tobarchart.cpp'; then $(CYGPATH_W) 'tobarchart.cpp'; else $(CYGPATH_W) '$(srcdir)/tobarchart.cpp'; fi`
+
+tora-tocurrent.o: tocurrent.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tocurrent.o -MD -MP -MF "$(DEPDIR)/tora-tocurrent.Tpo" -c -o tora-tocurrent.o `test -f 'tocurrent.cpp' || echo '$(srcdir)/'`tocurrent.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tocurrent.Tpo" "$(DEPDIR)/tora-tocurrent.Po"; else rm -f "$(DEPDIR)/tora-tocurrent.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tocurrent.cpp' object='tora-tocurrent.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tocurrent.o `test -f 'tocurrent.cpp' || echo '$(srcdir)/'`tocurrent.cpp
+
+tora-tocurrent.obj: tocurrent.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tocurrent.obj -MD -MP -MF "$(DEPDIR)/tora-tocurrent.Tpo" -c -o tora-tocurrent.obj `if test -f 'tocurrent.cpp'; then $(CYGPATH_W) 'tocurrent.cpp'; else $(CYGPATH_W) '$(srcdir)/tocurrent.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tocurrent.Tpo" "$(DEPDIR)/tora-tocurrent.Po"; else rm -f "$(DEPDIR)/tora-tocurrent.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tocurrent.cpp' object='tora-tocurrent.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tocurrent.obj `if test -f 'tocurrent.cpp'; then $(CYGPATH_W) 'tocurrent.cpp'; else $(CYGPATH_W) '$(srcdir)/tocurrent.cpp'; fi`
+
+tora-todebug.o: todebug.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todebug.o -MD -MP -MF "$(DEPDIR)/tora-todebug.Tpo" -c -o tora-todebug.o `test -f 'todebug.cpp' || echo '$(srcdir)/'`todebug.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todebug.Tpo" "$(DEPDIR)/tora-todebug.Po"; else rm -f "$(DEPDIR)/tora-todebug.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todebug.cpp' object='tora-todebug.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todebug.o `test -f 'todebug.cpp' || echo '$(srcdir)/'`todebug.cpp
+
+tora-todebug.obj: todebug.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todebug.obj -MD -MP -MF "$(DEPDIR)/tora-todebug.Tpo" -c -o tora-todebug.obj `if test -f 'todebug.cpp'; then $(CYGPATH_W) 'todebug.cpp'; else $(CYGPATH_W) '$(srcdir)/todebug.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todebug.Tpo" "$(DEPDIR)/tora-todebug.Po"; else rm -f "$(DEPDIR)/tora-todebug.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todebug.cpp' object='tora-todebug.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todebug.obj `if test -f 'todebug.cpp'; then $(CYGPATH_W) 'todebug.cpp'; else $(CYGPATH_W) '$(srcdir)/todebug.cpp'; fi`
+
+tora-toeditextensions.o: toeditextensions.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toeditextensions.o -MD -MP -MF "$(DEPDIR)/tora-toeditextensions.Tpo" -c -o tora-toeditextensions.o `test -f 'toeditextensions.cpp' || echo '$(srcdir)/'`toeditextensions.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toeditextensions.Tpo" "$(DEPDIR)/tora-toeditextensions.Po"; else rm -f "$(DEPDIR)/tora-toeditextensions.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toeditextensions.cpp' object='tora-toeditextensions.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toeditextensions.o `test -f 'toeditextensions.cpp' || echo '$(srcdir)/'`toeditextensions.cpp
+
+tora-toeditextensions.obj: toeditextensions.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toeditextensions.obj -MD -MP -MF "$(DEPDIR)/tora-toeditextensions.Tpo" -c -o tora-toeditextensions.obj `if test -f 'toeditextensions.cpp'; then $(CYGPATH_W) 'toeditextensions.cpp'; else $(CYGPATH_W) '$(srcdir)/toeditextensions.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toeditextensions.Tpo" "$(DEPDIR)/tora-toeditextensions.Po"; else rm -f "$(DEPDIR)/tora-toeditextensions.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toeditextensions.cpp' object='tora-toeditextensions.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toeditextensions.obj `if test -f 'toeditextensions.cpp'; then $(CYGPATH_W) 'toeditextensions.cpp'; else $(CYGPATH_W) '$(srcdir)/toeditextensions.cpp'; fi`
+
+tora-todatatype.o: todatatype.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todatatype.o -MD -MP -MF "$(DEPDIR)/tora-todatatype.Tpo" -c -o tora-todatatype.o `test -f 'todatatype.cpp' || echo '$(srcdir)/'`todatatype.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todatatype.Tpo" "$(DEPDIR)/tora-todatatype.Po"; else rm -f "$(DEPDIR)/tora-todatatype.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todatatype.cpp' object='tora-todatatype.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todatatype.o `test -f 'todatatype.cpp' || echo '$(srcdir)/'`todatatype.cpp
+
+tora-todatatype.obj: todatatype.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todatatype.obj -MD -MP -MF "$(DEPDIR)/tora-todatatype.Tpo" -c -o tora-todatatype.obj `if test -f 'todatatype.cpp'; then $(CYGPATH_W) 'todatatype.cpp'; else $(CYGPATH_W) '$(srcdir)/todatatype.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todatatype.Tpo" "$(DEPDIR)/tora-todatatype.Po"; else rm -f "$(DEPDIR)/tora-todatatype.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todatatype.cpp' object='tora-todatatype.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todatatype.obj `if test -f 'todatatype.cpp'; then $(CYGPATH_W) 'todatatype.cpp'; else $(CYGPATH_W) '$(srcdir)/todatatype.cpp'; fi`
+
+tora-toinvalid.o: toinvalid.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toinvalid.o -MD -MP -MF "$(DEPDIR)/tora-toinvalid.Tpo" -c -o tora-toinvalid.o `test -f 'toinvalid.cpp' || echo '$(srcdir)/'`toinvalid.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toinvalid.Tpo" "$(DEPDIR)/tora-toinvalid.Po"; else rm -f "$(DEPDIR)/tora-toinvalid.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toinvalid.cpp' object='tora-toinvalid.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toinvalid.o `test -f 'toinvalid.cpp' || echo '$(srcdir)/'`toinvalid.cpp
+
+tora-toinvalid.obj: toinvalid.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toinvalid.obj -MD -MP -MF "$(DEPDIR)/tora-toinvalid.Tpo" -c -o tora-toinvalid.obj `if test -f 'toinvalid.cpp'; then $(CYGPATH_W) 'toinvalid.cpp'; else $(CYGPATH_W) '$(srcdir)/toinvalid.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toinvalid.Tpo" "$(DEPDIR)/tora-toinvalid.Po"; else rm -f "$(DEPDIR)/tora-toinvalid.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toinvalid.cpp' object='tora-toinvalid.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toinvalid.obj `if test -f 'toinvalid.cpp'; then $(CYGPATH_W) 'toinvalid.cpp'; else $(CYGPATH_W) '$(srcdir)/toinvalid.cpp'; fi`
+
+tora-tooutput.o: tooutput.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tooutput.o -MD -MP -MF "$(DEPDIR)/tora-tooutput.Tpo" -c -o tora-tooutput.o `test -f 'tooutput.cpp' || echo '$(srcdir)/'`tooutput.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tooutput.Tpo" "$(DEPDIR)/tora-tooutput.Po"; else rm -f "$(DEPDIR)/tora-tooutput.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooutput.cpp' object='tora-tooutput.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tooutput.o `test -f 'tooutput.cpp' || echo '$(srcdir)/'`tooutput.cpp
+
+tora-tooutput.obj: tooutput.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tooutput.obj -MD -MP -MF "$(DEPDIR)/tora-tooutput.Tpo" -c -o tora-tooutput.obj `if test -f 'tooutput.cpp'; then $(CYGPATH_W) 'tooutput.cpp'; else $(CYGPATH_W) '$(srcdir)/tooutput.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tooutput.Tpo" "$(DEPDIR)/tora-tooutput.Po"; else rm -f "$(DEPDIR)/tora-tooutput.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooutput.cpp' object='tora-tooutput.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tooutput.obj `if test -f 'tooutput.cpp'; then $(CYGPATH_W) 'tooutput.cpp'; else $(CYGPATH_W) '$(srcdir)/tooutput.cpp'; fi`
+
+tora-topassword.o: topassword.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-topassword.o -MD -MP -MF "$(DEPDIR)/tora-topassword.Tpo" -c -o tora-topassword.o `test -f 'topassword.cpp' || echo '$(srcdir)/'`topassword.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-topassword.Tpo" "$(DEPDIR)/tora-topassword.Po"; else rm -f "$(DEPDIR)/tora-topassword.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='topassword.cpp' object='tora-topassword.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-topassword.o `test -f 'topassword.cpp' || echo '$(srcdir)/'`topassword.cpp
+
+tora-topassword.obj: topassword.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-topassword.obj -MD -MP -MF "$(DEPDIR)/tora-topassword.Tpo" -c -o tora-topassword.obj `if test -f 'topassword.cpp'; then $(CYGPATH_W) 'topassword.cpp'; else $(CYGPATH_W) '$(srcdir)/topassword.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-topassword.Tpo" "$(DEPDIR)/tora-topassword.Po"; else rm -f "$(DEPDIR)/tora-topassword.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='topassword.cpp' object='tora-topassword.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-topassword.obj `if test -f 'topassword.cpp'; then $(CYGPATH_W) 'topassword.cpp'; else $(CYGPATH_W) '$(srcdir)/topassword.cpp'; fi`
+
+tora-toprofiler.o: toprofiler.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toprofiler.o -MD -MP -MF "$(DEPDIR)/tora-toprofiler.Tpo" -c -o tora-toprofiler.o `test -f 'toprofiler.cpp' || echo '$(srcdir)/'`toprofiler.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toprofiler.Tpo" "$(DEPDIR)/tora-toprofiler.Po"; else rm -f "$(DEPDIR)/tora-toprofiler.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toprofiler.cpp' object='tora-toprofiler.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toprofiler.o `test -f 'toprofiler.cpp' || echo '$(srcdir)/'`toprofiler.cpp
+
+tora-toprofiler.obj: toprofiler.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toprofiler.obj -MD -MP -MF "$(DEPDIR)/tora-toprofiler.Tpo" -c -o tora-toprofiler.obj `if test -f 'toprofiler.cpp'; then $(CYGPATH_W) 'toprofiler.cpp'; else $(CYGPATH_W) '$(srcdir)/toprofiler.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toprofiler.Tpo" "$(DEPDIR)/tora-toprofiler.Po"; else rm -f "$(DEPDIR)/tora-toprofiler.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toprofiler.cpp' object='tora-toprofiler.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toprofiler.obj `if test -f 'toprofiler.cpp'; then $(CYGPATH_W) 'toprofiler.cpp'; else $(CYGPATH_W) '$(srcdir)/toprofiler.cpp'; fi`
+
+tora-toproject.o: toproject.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toproject.o -MD -MP -MF "$(DEPDIR)/tora-toproject.Tpo" -c -o tora-toproject.o `test -f 'toproject.cpp' || echo '$(srcdir)/'`toproject.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toproject.Tpo" "$(DEPDIR)/tora-toproject.Po"; else rm -f "$(DEPDIR)/tora-toproject.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toproject.cpp' object='tora-toproject.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toproject.o `test -f 'toproject.cpp' || echo '$(srcdir)/'`toproject.cpp
+
+tora-toproject.obj: toproject.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toproject.obj -MD -MP -MF "$(DEPDIR)/tora-toproject.Tpo" -c -o tora-toproject.obj `if test -f 'toproject.cpp'; then $(CYGPATH_W) 'toproject.cpp'; else $(CYGPATH_W) '$(srcdir)/toproject.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toproject.Tpo" "$(DEPDIR)/tora-toproject.Po"; else rm -f "$(DEPDIR)/tora-toproject.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toproject.cpp' object='tora-toproject.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toproject.obj `if test -f 'toproject.cpp'; then $(CYGPATH_W) 'toproject.cpp'; else $(CYGPATH_W) '$(srcdir)/toproject.cpp'; fi`
+
+tora-toqsqlconnection.o: toqsqlconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toqsqlconnection.o -MD -MP -MF "$(DEPDIR)/tora-toqsqlconnection.Tpo" -c -o tora-toqsqlconnection.o `test -f 'toqsqlconnection.cpp' || echo '$(srcdir)/'`toqsqlconnection.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toqsqlconnection.Tpo" "$(DEPDIR)/tora-toqsqlconnection.Po"; else rm -f "$(DEPDIR)/tora-toqsqlconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toqsqlconnection.cpp' object='tora-toqsqlconnection.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toqsqlconnection.o `test -f 'toqsqlconnection.cpp' || echo '$(srcdir)/'`toqsqlconnection.cpp
+
+tora-toqsqlconnection.obj: toqsqlconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toqsqlconnection.obj -MD -MP -MF "$(DEPDIR)/tora-toqsqlconnection.Tpo" -c -o tora-toqsqlconnection.obj `if test -f 'toqsqlconnection.cpp'; then $(CYGPATH_W) 'toqsqlconnection.cpp'; else $(CYGPATH_W) '$(srcdir)/toqsqlconnection.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toqsqlconnection.Tpo" "$(DEPDIR)/tora-toqsqlconnection.Po"; else rm -f "$(DEPDIR)/tora-toqsqlconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toqsqlconnection.cpp' object='tora-toqsqlconnection.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toqsqlconnection.obj `if test -f 'toqsqlconnection.cpp'; then $(CYGPATH_W) 'toqsqlconnection.cpp'; else $(CYGPATH_W) '$(srcdir)/toqsqlconnection.cpp'; fi`
+
+tora-torollback.o: torollback.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-torollback.o -MD -MP -MF "$(DEPDIR)/tora-torollback.Tpo" -c -o tora-torollback.o `test -f 'torollback.cpp' || echo '$(srcdir)/'`torollback.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-torollback.Tpo" "$(DEPDIR)/tora-torollback.Po"; else rm -f "$(DEPDIR)/tora-torollback.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='torollback.cpp' object='tora-torollback.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-torollback.o `test -f 'torollback.cpp' || echo '$(srcdir)/'`torollback.cpp
+
+tora-torollback.obj: torollback.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-torollback.obj -MD -MP -MF "$(DEPDIR)/tora-torollback.Tpo" -c -o tora-torollback.obj `if test -f 'torollback.cpp'; then $(CYGPATH_W) 'torollback.cpp'; else $(CYGPATH_W) '$(srcdir)/torollback.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-torollback.Tpo" "$(DEPDIR)/tora-torollback.Po"; else rm -f "$(DEPDIR)/tora-torollback.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='torollback.cpp' object='tora-torollback.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-torollback.obj `if test -f 'torollback.cpp'; then $(CYGPATH_W) 'torollback.cpp'; else $(CYGPATH_W) '$(srcdir)/torollback.cpp'; fi`
+
+tora-toscript.o: toscript.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toscript.o -MD -MP -MF "$(DEPDIR)/tora-toscript.Tpo" -c -o tora-toscript.o `test -f 'toscript.cpp' || echo '$(srcdir)/'`toscript.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toscript.Tpo" "$(DEPDIR)/tora-toscript.Po"; else rm -f "$(DEPDIR)/tora-toscript.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toscript.cpp' object='tora-toscript.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toscript.o `test -f 'toscript.cpp' || echo '$(srcdir)/'`toscript.cpp
+
+tora-toscript.obj: toscript.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toscript.obj -MD -MP -MF "$(DEPDIR)/tora-toscript.Tpo" -c -o tora-toscript.obj `if test -f 'toscript.cpp'; then $(CYGPATH_W) 'toscript.cpp'; else $(CYGPATH_W) '$(srcdir)/toscript.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toscript.Tpo" "$(DEPDIR)/tora-toscript.Po"; else rm -f "$(DEPDIR)/tora-toscript.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toscript.cpp' object='tora-toscript.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toscript.obj `if test -f 'toscript.cpp'; then $(CYGPATH_W) 'toscript.cpp'; else $(CYGPATH_W) '$(srcdir)/toscript.cpp'; fi`
+
+tora-tosecurity.o: tosecurity.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosecurity.o -MD -MP -MF "$(DEPDIR)/tora-tosecurity.Tpo" -c -o tora-tosecurity.o `test -f 'tosecurity.cpp' || echo '$(srcdir)/'`tosecurity.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosecurity.Tpo" "$(DEPDIR)/tora-tosecurity.Po"; else rm -f "$(DEPDIR)/tora-tosecurity.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosecurity.cpp' object='tora-tosecurity.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosecurity.o `test -f 'tosecurity.cpp' || echo '$(srcdir)/'`tosecurity.cpp
+
+tora-tosecurity.obj: tosecurity.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosecurity.obj -MD -MP -MF "$(DEPDIR)/tora-tosecurity.Tpo" -c -o tora-tosecurity.obj `if test -f 'tosecurity.cpp'; then $(CYGPATH_W) 'tosecurity.cpp'; else $(CYGPATH_W) '$(srcdir)/tosecurity.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosecurity.Tpo" "$(DEPDIR)/tora-tosecurity.Po"; else rm -f "$(DEPDIR)/tora-tosecurity.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosecurity.cpp' object='tora-tosecurity.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosecurity.obj `if test -f 'tosecurity.cpp'; then $(CYGPATH_W) 'tosecurity.cpp'; else $(CYGPATH_W) '$(srcdir)/tosecurity.cpp'; fi`
+
+tora-tosession.o: tosession.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosession.o -MD -MP -MF "$(DEPDIR)/tora-tosession.Tpo" -c -o tora-tosession.o `test -f 'tosession.cpp' || echo '$(srcdir)/'`tosession.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosession.Tpo" "$(DEPDIR)/tora-tosession.Po"; else rm -f "$(DEPDIR)/tora-tosession.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosession.cpp' object='tora-tosession.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosession.o `test -f 'tosession.cpp' || echo '$(srcdir)/'`tosession.cpp
+
+tora-tosession.obj: tosession.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosession.obj -MD -MP -MF "$(DEPDIR)/tora-tosession.Tpo" -c -o tora-tosession.obj `if test -f 'tosession.cpp'; then $(CYGPATH_W) 'tosession.cpp'; else $(CYGPATH_W) '$(srcdir)/tosession.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosession.Tpo" "$(DEPDIR)/tora-tosession.Po"; else rm -f "$(DEPDIR)/tora-tosession.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosession.cpp' object='tora-tosession.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosession.obj `if test -f 'tosession.cpp'; then $(CYGPATH_W) 'tosession.cpp'; else $(CYGPATH_W) '$(srcdir)/tosession.cpp'; fi`
+
+tora-tosgatrace.o: tosgatrace.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosgatrace.o -MD -MP -MF "$(DEPDIR)/tora-tosgatrace.Tpo" -c -o tora-tosgatrace.o `test -f 'tosgatrace.cpp' || echo '$(srcdir)/'`tosgatrace.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosgatrace.Tpo" "$(DEPDIR)/tora-tosgatrace.Po"; else rm -f "$(DEPDIR)/tora-tosgatrace.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosgatrace.cpp' object='tora-tosgatrace.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosgatrace.o `test -f 'tosgatrace.cpp' || echo '$(srcdir)/'`tosgatrace.cpp
+
+tora-tosgatrace.obj: tosgatrace.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosgatrace.obj -MD -MP -MF "$(DEPDIR)/tora-tosgatrace.Tpo" -c -o tora-tosgatrace.obj `if test -f 'tosgatrace.cpp'; then $(CYGPATH_W) 'tosgatrace.cpp'; else $(CYGPATH_W) '$(srcdir)/tosgatrace.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosgatrace.Tpo" "$(DEPDIR)/tora-tosgatrace.Po"; else rm -f "$(DEPDIR)/tora-tosgatrace.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosgatrace.cpp' object='tora-tosgatrace.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosgatrace.obj `if test -f 'tosgatrace.cpp'; then $(CYGPATH_W) 'tosgatrace.cpp'; else $(CYGPATH_W) '$(srcdir)/tosgatrace.cpp'; fi`
+
+tora-tosqledit.o: tosqledit.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosqledit.o -MD -MP -MF "$(DEPDIR)/tora-tosqledit.Tpo" -c -o tora-tosqledit.o `test -f 'tosqledit.cpp' || echo '$(srcdir)/'`tosqledit.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosqledit.Tpo" "$(DEPDIR)/tora-tosqledit.Po"; else rm -f "$(DEPDIR)/tora-tosqledit.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosqledit.cpp' object='tora-tosqledit.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosqledit.o `test -f 'tosqledit.cpp' || echo '$(srcdir)/'`tosqledit.cpp
+
+tora-tosqledit.obj: tosqledit.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosqledit.obj -MD -MP -MF "$(DEPDIR)/tora-tosqledit.Tpo" -c -o tora-tosqledit.obj `if test -f 'tosqledit.cpp'; then $(CYGPATH_W) 'tosqledit.cpp'; else $(CYGPATH_W) '$(srcdir)/tosqledit.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosqledit.Tpo" "$(DEPDIR)/tora-tosqledit.Po"; else rm -f "$(DEPDIR)/tora-tosqledit.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosqledit.cpp' object='tora-tosqledit.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosqledit.obj `if test -f 'tosqledit.cpp'; then $(CYGPATH_W) 'tosqledit.cpp'; else $(CYGPATH_W) '$(srcdir)/tosqledit.cpp'; fi`
+
+tora-tostorage.o: tostorage.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostorage.o -MD -MP -MF "$(DEPDIR)/tora-tostorage.Tpo" -c -o tora-tostorage.o `test -f 'tostorage.cpp' || echo '$(srcdir)/'`tostorage.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostorage.Tpo" "$(DEPDIR)/tora-tostorage.Po"; else rm -f "$(DEPDIR)/tora-tostorage.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostorage.cpp' object='tora-tostorage.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostorage.o `test -f 'tostorage.cpp' || echo '$(srcdir)/'`tostorage.cpp
+
+tora-tostorage.obj: tostorage.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostorage.obj -MD -MP -MF "$(DEPDIR)/tora-tostorage.Tpo" -c -o tora-tostorage.obj `if test -f 'tostorage.cpp'; then $(CYGPATH_W) 'tostorage.cpp'; else $(CYGPATH_W) '$(srcdir)/tostorage.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostorage.Tpo" "$(DEPDIR)/tora-tostorage.Po"; else rm -f "$(DEPDIR)/tora-tostorage.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostorage.cpp' object='tora-tostorage.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostorage.obj `if test -f 'tostorage.cpp'; then $(CYGPATH_W) 'tostorage.cpp'; else $(CYGPATH_W) '$(srcdir)/tostorage.cpp'; fi`
+
+tora-tostoragedefinition.o: tostoragedefinition.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostoragedefinition.o -MD -MP -MF "$(DEPDIR)/tora-tostoragedefinition.Tpo" -c -o tora-tostoragedefinition.o `test -f 'tostoragedefinition.cpp' || echo '$(srcdir)/'`tostoragedefinition.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostoragedefinition.Tpo" "$(DEPDIR)/tora-tostoragedefinition.Po"; else rm -f "$(DEPDIR)/tora-tostoragedefinition.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostoragedefinition.cpp' object='tora-tostoragedefinition.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostoragedefinition.o `test -f 'tostoragedefinition.cpp' || echo '$(srcdir)/'`tostoragedefinition.cpp
+
+tora-tostoragedefinition.obj: tostoragedefinition.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostoragedefinition.obj -MD -MP -MF "$(DEPDIR)/tora-tostoragedefinition.Tpo" -c -o tora-tostoragedefinition.obj `if test -f 'tostoragedefinition.cpp'; then $(CYGPATH_W) 'tostoragedefinition.cpp'; else $(CYGPATH_W) '$(srcdir)/tostoragedefinition.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostoragedefinition.Tpo" "$(DEPDIR)/tora-tostoragedefinition.Po"; else rm -f "$(DEPDIR)/tora-tostoragedefinition.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostoragedefinition.cpp' object='tora-tostoragedefinition.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostoragedefinition.obj `if test -f 'tostoragedefinition.cpp'; then $(CYGPATH_W) 'tostoragedefinition.cpp'; else $(CYGPATH_W) '$(srcdir)/tostoragedefinition.cpp'; fi`
+
+tora-totemplate.o: totemplate.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemplate.o -MD -MP -MF "$(DEPDIR)/tora-totemplate.Tpo" -c -o tora-totemplate.o `test -f 'totemplate.cpp' || echo '$(srcdir)/'`totemplate.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemplate.Tpo" "$(DEPDIR)/tora-totemplate.Po"; else rm -f "$(DEPDIR)/tora-totemplate.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemplate.cpp' object='tora-totemplate.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemplate.o `test -f 'totemplate.cpp' || echo '$(srcdir)/'`totemplate.cpp
+
+tora-totemplate.obj: totemplate.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemplate.obj -MD -MP -MF "$(DEPDIR)/tora-totemplate.Tpo" -c -o tora-totemplate.obj `if test -f 'totemplate.cpp'; then $(CYGPATH_W) 'totemplate.cpp'; else $(CYGPATH_W) '$(srcdir)/totemplate.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemplate.Tpo" "$(DEPDIR)/tora-totemplate.Po"; else rm -f "$(DEPDIR)/tora-totemplate.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemplate.cpp' object='tora-totemplate.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemplate.obj `if test -f 'totemplate.cpp'; then $(CYGPATH_W) 'totemplate.cpp'; else $(CYGPATH_W) '$(srcdir)/totemplate.cpp'; fi`
+
+tora-totemporary.o: totemporary.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemporary.o -MD -MP -MF "$(DEPDIR)/tora-totemporary.Tpo" -c -o tora-totemporary.o `test -f 'totemporary.cpp' || echo '$(srcdir)/'`totemporary.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemporary.Tpo" "$(DEPDIR)/tora-totemporary.Po"; else rm -f "$(DEPDIR)/tora-totemporary.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemporary.cpp' object='tora-totemporary.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemporary.o `test -f 'totemporary.cpp' || echo '$(srcdir)/'`totemporary.cpp
+
+tora-totemporary.obj: totemporary.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemporary.obj -MD -MP -MF "$(DEPDIR)/tora-totemporary.Tpo" -c -o tora-totemporary.obj `if test -f 'totemporary.cpp'; then $(CYGPATH_W) 'totemporary.cpp'; else $(CYGPATH_W) '$(srcdir)/totemporary.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemporary.Tpo" "$(DEPDIR)/tora-totemporary.Po"; else rm -f "$(DEPDIR)/tora-totemporary.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemporary.cpp' object='tora-totemporary.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemporary.obj `if test -f 'totemporary.cpp'; then $(CYGPATH_W) 'totemporary.cpp'; else $(CYGPATH_W) '$(srcdir)/totemporary.cpp'; fi`
+
+tora-totuning.o: totuning.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totuning.o -MD -MP -MF "$(DEPDIR)/tora-totuning.Tpo" -c -o tora-totuning.o `test -f 'totuning.cpp' || echo '$(srcdir)/'`totuning.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totuning.Tpo" "$(DEPDIR)/tora-totuning.Po"; else rm -f "$(DEPDIR)/tora-totuning.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totuning.cpp' object='tora-totuning.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totuning.o `test -f 'totuning.cpp' || echo '$(srcdir)/'`totuning.cpp
+
+tora-totuning.obj: totuning.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totuning.obj -MD -MP -MF "$(DEPDIR)/tora-totuning.Tpo" -c -o tora-totuning.obj `if test -f 'totuning.cpp'; then $(CYGPATH_W) 'totuning.cpp'; else $(CYGPATH_W) '$(srcdir)/totuning.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totuning.Tpo" "$(DEPDIR)/tora-totuning.Po"; else rm -f "$(DEPDIR)/tora-totuning.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totuning.cpp' object='tora-totuning.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totuning.obj `if test -f 'totuning.cpp'; then $(CYGPATH_W) 'totuning.cpp'; else $(CYGPATH_W) '$(srcdir)/totuning.cpp'; fi`
+
+tora-tochangeconnection.o: tochangeconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tochangeconnection.o -MD -MP -MF "$(DEPDIR)/tora-tochangeconnection.Tpo" -c -o tora-tochangeconnection.o `test -f 'tochangeconnection.cpp' || echo '$(srcdir)/'`tochangeconnection.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tochangeconnection.Tpo" "$(DEPDIR)/tora-tochangeconnection.Po"; else rm -f "$(DEPDIR)/tora-tochangeconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tochangeconnection.cpp' object='tora-tochangeconnection.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tochangeconnection.o `test -f 'tochangeconnection.cpp' || echo '$(srcdir)/'`tochangeconnection.cpp
+
+tora-tochangeconnection.obj: tochangeconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tochangeconnection.obj -MD -MP -MF "$(DEPDIR)/tora-tochangeconnection.Tpo" -c -o tora-tochangeconnection.obj `if test -f 'tochangeconnection.cpp'; then $(CYGPATH_W) 'tochangeconnection.cpp'; else $(CYGPATH_W) '$(srcdir)/tochangeconnection.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tochangeconnection.Tpo" "$(DEPDIR)/tora-tochangeconnection.Po"; else rm -f "$(DEPDIR)/tora-tochangeconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tochangeconnection.cpp' object='tora-tochangeconnection.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tochangeconnection.obj `if test -f 'tochangeconnection.cpp'; then $(CYGPATH_W) 'tochangeconnection.cpp'; else $(CYGPATH_W) '$(srcdir)/tochangeconnection.cpp'; fi`
+
+tora-toworksheet.o: toworksheet.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toworksheet.o -MD -MP -MF "$(DEPDIR)/tora-toworksheet.Tpo" -c -o tora-toworksheet.o `test -f 'toworksheet.cpp' || echo '$(srcdir)/'`toworksheet.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toworksheet.Tpo" "$(DEPDIR)/tora-toworksheet.Po"; else rm -f "$(DEPDIR)/tora-toworksheet.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toworksheet.cpp' object='tora-toworksheet.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toworksheet.o `test -f 'toworksheet.cpp' || echo '$(srcdir)/'`toworksheet.cpp
+
+tora-toworksheet.obj: toworksheet.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toworksheet.obj -MD -MP -MF "$(DEPDIR)/tora-toworksheet.Tpo" -c -o tora-toworksheet.obj `if test -f 'toworksheet.cpp'; then $(CYGPATH_W) 'toworksheet.cpp'; else $(CYGPATH_W) '$(srcdir)/toworksheet.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toworksheet.Tpo" "$(DEPDIR)/tora-toworksheet.Po"; else rm -f "$(DEPDIR)/tora-toworksheet.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toworksheet.cpp' object='tora-toworksheet.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toworksheet.obj `if test -f 'toworksheet.cpp'; then $(CYGPATH_W) 'toworksheet.cpp'; else $(CYGPATH_W) '$(srcdir)/toworksheet.cpp'; fi`
+
+tora-toworksheetstatistic.o: toworksheetstatistic.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toworksheetstatistic.o -MD -MP -MF "$(DEPDIR)/tora-toworksheetstatistic.Tpo" -c -o tora-toworksheetstatistic.o `test -f 'toworksheetstatistic.cpp' || echo '$(srcdir)/'`toworksheetstatistic.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toworksheetstatistic.Tpo" "$(DEPDIR)/tora-toworksheetstatistic.Po"; else rm -f "$(DEPDIR)/tora-toworksheetstatistic.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toworksheetstatistic.cpp' object='tora-toworksheetstatistic.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toworksheetstatistic.o `test -f 'toworksheetstatistic.cpp' || echo '$(srcdir)/'`toworksheetstatistic.cpp
+
+tora-toworksheetstatistic.obj: toworksheetstatistic.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toworksheetstatistic.obj -MD -MP -MF "$(DEPDIR)/tora-toworksheetstatistic.Tpo" -c -o tora-toworksheetstatistic.obj `if test -f 'toworksheetstatistic.cpp'; then $(CYGPATH_W) 'toworksheetstatistic.cpp'; else $(CYGPATH_W) '$(srcdir)/toworksheetstatistic.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toworksheetstatistic.Tpo" "$(DEPDIR)/tora-toworksheetstatistic.Po"; else rm -f "$(DEPDIR)/tora-toworksheetstatistic.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toworksheetstatistic.cpp' object='tora-toworksheetstatistic.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toworksheetstatistic.obj `if test -f 'toworksheetstatistic.cpp'; then $(CYGPATH_W) 'toworksheetstatistic.cpp'; else $(CYGPATH_W) '$(srcdir)/toworksheetstatistic.cpp'; fi`
+
+tora-tobrowserconstraint.o: tobrowserconstraint.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowserconstraint.o -MD -MP -MF "$(DEPDIR)/tora-tobrowserconstraint.Tpo" -c -o tora-tobrowserconstraint.o `test -f 'tobrowserconstraint.cpp' || echo '$(srcdir)/'`tobrowserconstraint.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowserconstraint.Tpo" "$(DEPDIR)/tora-tobrowserconstraint.Po"; else rm -f "$(DEPDIR)/tora-tobrowserconstraint.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowserconstraint.cpp' object='tora-tobrowserconstraint.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowserconstraint.o `test -f 'tobrowserconstraint.cpp' || echo '$(srcdir)/'`tobrowserconstraint.cpp
+
+tora-tobrowserconstraint.obj: tobrowserconstraint.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowserconstraint.obj -MD -MP -MF "$(DEPDIR)/tora-tobrowserconstraint.Tpo" -c -o tora-tobrowserconstraint.obj `if test -f 'tobrowserconstraint.cpp'; then $(CYGPATH_W) 'tobrowserconstraint.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowserconstraint.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowserconstraint.Tpo" "$(DEPDIR)/tora-tobrowserconstraint.Po"; else rm -f "$(DEPDIR)/tora-tobrowserconstraint.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowserconstraint.cpp' object='tora-tobrowserconstraint.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowserconstraint.obj `if test -f 'tobrowserconstraint.cpp'; then $(CYGPATH_W) 'tobrowserconstraint.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowserconstraint.cpp'; fi`
+
+tora-tobrowserconstraintui.o: tobrowserconstraintui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowserconstraintui.o -MD -MP -MF "$(DEPDIR)/tora-tobrowserconstraintui.Tpo" -c -o tora-tobrowserconstraintui.o `test -f 'tobrowserconstraintui.cpp' || echo '$(srcdir)/'`tobrowserconstraintui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowserconstraintui.Tpo" "$(DEPDIR)/tora-tobrowserconstraintui.Po"; else rm -f "$(DEPDIR)/tora-tobrowserconstraintui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowserconstraintui.cpp' object='tora-tobrowserconstraintui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowserconstraintui.o `test -f 'tobrowserconstraintui.cpp' || echo '$(srcdir)/'`tobrowserconstraintui.cpp
+
+tora-tobrowserconstraintui.obj: tobrowserconstraintui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowserconstraintui.obj -MD -MP -MF "$(DEPDIR)/tora-tobrowserconstraintui.Tpo" -c -o tora-tobrowserconstraintui.obj `if test -f 'tobrowserconstraintui.cpp'; then $(CYGPATH_W) 'tobrowserconstraintui.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowserconstraintui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowserconstraintui.Tpo" "$(DEPDIR)/tora-tobrowserconstraintui.Po"; else rm -f "$(DEPDIR)/tora-tobrowserconstraintui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowserconstraintui.cpp' object='tora-tobrowserconstraintui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowserconstraintui.obj `if test -f 'tobrowserconstraintui.cpp'; then $(CYGPATH_W) 'tobrowserconstraintui.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowserconstraintui.cpp'; fi`
+
+tora-tobrowserfilterui.o: tobrowserfilterui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowserfilterui.o -MD -MP -MF "$(DEPDIR)/tora-tobrowserfilterui.Tpo" -c -o tora-tobrowserfilterui.o `test -f 'tobrowserfilterui.cpp' || echo '$(srcdir)/'`tobrowserfilterui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowserfilterui.Tpo" "$(DEPDIR)/tora-tobrowserfilterui.Po"; else rm -f "$(DEPDIR)/tora-tobrowserfilterui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowserfilterui.cpp' object='tora-tobrowserfilterui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowserfilterui.o `test -f 'tobrowserfilterui.cpp' || echo '$(srcdir)/'`tobrowserfilterui.cpp
+
+tora-tobrowserfilterui.obj: tobrowserfilterui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowserfilterui.obj -MD -MP -MF "$(DEPDIR)/tora-tobrowserfilterui.Tpo" -c -o tora-tobrowserfilterui.obj `if test -f 'tobrowserfilterui.cpp'; then $(CYGPATH_W) 'tobrowserfilterui.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowserfilterui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowserfilterui.Tpo" "$(DEPDIR)/tora-tobrowserfilterui.Po"; else rm -f "$(DEPDIR)/tora-tobrowserfilterui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowserfilterui.cpp' object='tora-tobrowserfilterui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowserfilterui.obj `if test -f 'tobrowserfilterui.cpp'; then $(CYGPATH_W) 'tobrowserfilterui.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowserfilterui.cpp'; fi`
+
+tora-tobrowserindex.o: tobrowserindex.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowserindex.o -MD -MP -MF "$(DEPDIR)/tora-tobrowserindex.Tpo" -c -o tora-tobrowserindex.o `test -f 'tobrowserindex.cpp' || echo '$(srcdir)/'`tobrowserindex.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowserindex.Tpo" "$(DEPDIR)/tora-tobrowserindex.Po"; else rm -f "$(DEPDIR)/tora-tobrowserindex.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowserindex.cpp' object='tora-tobrowserindex.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowserindex.o `test -f 'tobrowserindex.cpp' || echo '$(srcdir)/'`tobrowserindex.cpp
+
+tora-tobrowserindex.obj: tobrowserindex.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowserindex.obj -MD -MP -MF "$(DEPDIR)/tora-tobrowserindex.Tpo" -c -o tora-tobrowserindex.obj `if test -f 'tobrowserindex.cpp'; then $(CYGPATH_W) 'tobrowserindex.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowserindex.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowserindex.Tpo" "$(DEPDIR)/tora-tobrowserindex.Po"; else rm -f "$(DEPDIR)/tora-tobrowserindex.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowserindex.cpp' object='tora-tobrowserindex.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowserindex.obj `if test -f 'tobrowserindex.cpp'; then $(CYGPATH_W) 'tobrowserindex.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowserindex.cpp'; fi`
+
+tora-tobrowserindexui.o: tobrowserindexui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowserindexui.o -MD -MP -MF "$(DEPDIR)/tora-tobrowserindexui.Tpo" -c -o tora-tobrowserindexui.o `test -f 'tobrowserindexui.cpp' || echo '$(srcdir)/'`tobrowserindexui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowserindexui.Tpo" "$(DEPDIR)/tora-tobrowserindexui.Po"; else rm -f "$(DEPDIR)/tora-tobrowserindexui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowserindexui.cpp' object='tora-tobrowserindexui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowserindexui.o `test -f 'tobrowserindexui.cpp' || echo '$(srcdir)/'`tobrowserindexui.cpp
+
+tora-tobrowserindexui.obj: tobrowserindexui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowserindexui.obj -MD -MP -MF "$(DEPDIR)/tora-tobrowserindexui.Tpo" -c -o tora-tobrowserindexui.obj `if test -f 'tobrowserindexui.cpp'; then $(CYGPATH_W) 'tobrowserindexui.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowserindexui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowserindexui.Tpo" "$(DEPDIR)/tora-tobrowserindexui.Po"; else rm -f "$(DEPDIR)/tora-tobrowserindexui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowserindexui.cpp' object='tora-tobrowserindexui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowserindexui.obj `if test -f 'tobrowserindexui.cpp'; then $(CYGPATH_W) 'tobrowserindexui.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowserindexui.cpp'; fi`
+
+tora-tobrowsertable.o: tobrowsertable.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowsertable.o -MD -MP -MF "$(DEPDIR)/tora-tobrowsertable.Tpo" -c -o tora-tobrowsertable.o `test -f 'tobrowsertable.cpp' || echo '$(srcdir)/'`tobrowsertable.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowsertable.Tpo" "$(DEPDIR)/tora-tobrowsertable.Po"; else rm -f "$(DEPDIR)/tora-tobrowsertable.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowsertable.cpp' object='tora-tobrowsertable.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowsertable.o `test -f 'tobrowsertable.cpp' || echo '$(srcdir)/'`tobrowsertable.cpp
+
+tora-tobrowsertable.obj: tobrowsertable.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowsertable.obj -MD -MP -MF "$(DEPDIR)/tora-tobrowsertable.Tpo" -c -o tora-tobrowsertable.obj `if test -f 'tobrowsertable.cpp'; then $(CYGPATH_W) 'tobrowsertable.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowsertable.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowsertable.Tpo" "$(DEPDIR)/tora-tobrowsertable.Po"; else rm -f "$(DEPDIR)/tora-tobrowsertable.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowsertable.cpp' object='tora-tobrowsertable.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowsertable.obj `if test -f 'tobrowsertable.cpp'; then $(CYGPATH_W) 'tobrowsertable.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowsertable.cpp'; fi`
+
+tora-tobrowsertableui.o: tobrowsertableui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowsertableui.o -MD -MP -MF "$(DEPDIR)/tora-tobrowsertableui.Tpo" -c -o tora-tobrowsertableui.o `test -f 'tobrowsertableui.cpp' || echo '$(srcdir)/'`tobrowsertableui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowsertableui.Tpo" "$(DEPDIR)/tora-tobrowsertableui.Po"; else rm -f "$(DEPDIR)/tora-tobrowsertableui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowsertableui.cpp' object='tora-tobrowsertableui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowsertableui.o `test -f 'tobrowsertableui.cpp' || echo '$(srcdir)/'`tobrowsertableui.cpp
+
+tora-tobrowsertableui.obj: tobrowsertableui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tobrowsertableui.obj -MD -MP -MF "$(DEPDIR)/tora-tobrowsertableui.Tpo" -c -o tora-tobrowsertableui.obj `if test -f 'tobrowsertableui.cpp'; then $(CYGPATH_W) 'tobrowsertableui.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowsertableui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tobrowsertableui.Tpo" "$(DEPDIR)/tora-tobrowsertableui.Po"; else rm -f "$(DEPDIR)/tora-tobrowsertableui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tobrowsertableui.cpp' object='tora-tobrowsertableui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tobrowsertableui.obj `if test -f 'tobrowsertableui.cpp'; then $(CYGPATH_W) 'tobrowsertableui.cpp'; else $(CYGPATH_W) '$(srcdir)/tobrowsertableui.cpp'; fi`
+
+tora-tochartalarmui.o: tochartalarmui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tochartalarmui.o -MD -MP -MF "$(DEPDIR)/tora-tochartalarmui.Tpo" -c -o tora-tochartalarmui.o `test -f 'tochartalarmui.cpp' || echo '$(srcdir)/'`tochartalarmui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tochartalarmui.Tpo" "$(DEPDIR)/tora-tochartalarmui.Po"; else rm -f "$(DEPDIR)/tora-tochartalarmui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tochartalarmui.cpp' object='tora-tochartalarmui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tochartalarmui.o `test -f 'tochartalarmui.cpp' || echo '$(srcdir)/'`tochartalarmui.cpp
+
+tora-tochartalarmui.obj: tochartalarmui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tochartalarmui.obj -MD -MP -MF "$(DEPDIR)/tora-tochartalarmui.Tpo" -c -o tora-tochartalarmui.obj `if test -f 'tochartalarmui.cpp'; then $(CYGPATH_W) 'tochartalarmui.cpp'; else $(CYGPATH_W) '$(srcdir)/tochartalarmui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tochartalarmui.Tpo" "$(DEPDIR)/tora-tochartalarmui.Po"; else rm -f "$(DEPDIR)/tora-tochartalarmui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tochartalarmui.cpp' object='tora-tochartalarmui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tochartalarmui.obj `if test -f 'tochartalarmui.cpp'; then $(CYGPATH_W) 'tochartalarmui.cpp'; else $(CYGPATH_W) '$(srcdir)/tochartalarmui.cpp'; fi`
+
+tora-tochartmanager.o: tochartmanager.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tochartmanager.o -MD -MP -MF "$(DEPDIR)/tora-tochartmanager.Tpo" -c -o tora-tochartmanager.o `test -f 'tochartmanager.cpp' || echo '$(srcdir)/'`tochartmanager.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tochartmanager.Tpo" "$(DEPDIR)/tora-tochartmanager.Po"; else rm -f "$(DEPDIR)/tora-tochartmanager.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tochartmanager.cpp' object='tora-tochartmanager.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tochartmanager.o `test -f 'tochartmanager.cpp' || echo '$(srcdir)/'`tochartmanager.cpp
+
+tora-tochartmanager.obj: tochartmanager.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tochartmanager.obj -MD -MP -MF "$(DEPDIR)/tora-tochartmanager.Tpo" -c -o tora-tochartmanager.obj `if test -f 'tochartmanager.cpp'; then $(CYGPATH_W) 'tochartmanager.cpp'; else $(CYGPATH_W) '$(srcdir)/tochartmanager.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tochartmanager.Tpo" "$(DEPDIR)/tora-tochartmanager.Po"; else rm -f "$(DEPDIR)/tora-tochartmanager.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tochartmanager.cpp' object='tora-tochartmanager.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tochartmanager.obj `if test -f 'tochartmanager.cpp'; then $(CYGPATH_W) 'tochartmanager.cpp'; else $(CYGPATH_W) '$(srcdir)/tochartmanager.cpp'; fi`
+
+tora-tochartsetupui.o: tochartsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tochartsetupui.o -MD -MP -MF "$(DEPDIR)/tora-tochartsetupui.Tpo" -c -o tora-tochartsetupui.o `test -f 'tochartsetupui.cpp' || echo '$(srcdir)/'`tochartsetupui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tochartsetupui.Tpo" "$(DEPDIR)/tora-tochartsetupui.Po"; else rm -f "$(DEPDIR)/tora-tochartsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tochartsetupui.cpp' object='tora-tochartsetupui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tochartsetupui.o `test -f 'tochartsetupui.cpp' || echo '$(srcdir)/'`tochartsetupui.cpp
+
+tora-tochartsetupui.obj: tochartsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tochartsetupui.obj -MD -MP -MF "$(DEPDIR)/tora-tochartsetupui.Tpo" -c -o tora-tochartsetupui.obj `if test -f 'tochartsetupui.cpp'; then $(CYGPATH_W) 'tochartsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/tochartsetupui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tochartsetupui.Tpo" "$(DEPDIR)/tora-tochartsetupui.Po"; else rm -f "$(DEPDIR)/tora-tochartsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tochartsetupui.cpp' object='tora-tochartsetupui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tochartsetupui.obj `if test -f 'tochartsetupui.cpp'; then $(CYGPATH_W) 'tochartsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/tochartsetupui.cpp'; fi`
+
+tora-tolegendchart.o: tolegendchart.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolegendchart.o -MD -MP -MF "$(DEPDIR)/tora-tolegendchart.Tpo" -c -o tora-tolegendchart.o `test -f 'tolegendchart.cpp' || echo '$(srcdir)/'`tolegendchart.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolegendchart.Tpo" "$(DEPDIR)/tora-tolegendchart.Po"; else rm -f "$(DEPDIR)/tora-tolegendchart.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolegendchart.cpp' object='tora-tolegendchart.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolegendchart.o `test -f 'tolegendchart.cpp' || echo '$(srcdir)/'`tolegendchart.cpp
+
+tora-tolegendchart.obj: tolegendchart.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolegendchart.obj -MD -MP -MF "$(DEPDIR)/tora-tolegendchart.Tpo" -c -o tora-tolegendchart.obj `if test -f 'tolegendchart.cpp'; then $(CYGPATH_W) 'tolegendchart.cpp'; else $(CYGPATH_W) '$(srcdir)/tolegendchart.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolegendchart.Tpo" "$(DEPDIR)/tora-tolegendchart.Po"; else rm -f "$(DEPDIR)/tora-tolegendchart.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolegendchart.cpp' object='tora-tolegendchart.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolegendchart.obj `if test -f 'tolegendchart.cpp'; then $(CYGPATH_W) 'tolegendchart.cpp'; else $(CYGPATH_W) '$(srcdir)/tolegendchart.cpp'; fi`
+
+tora-tolinechart.o: tolinechart.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolinechart.o -MD -MP -MF "$(DEPDIR)/tora-tolinechart.Tpo" -c -o tora-tolinechart.o `test -f 'tolinechart.cpp' || echo '$(srcdir)/'`tolinechart.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolinechart.Tpo" "$(DEPDIR)/tora-tolinechart.Po"; else rm -f "$(DEPDIR)/tora-tolinechart.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolinechart.cpp' object='tora-tolinechart.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolinechart.o `test -f 'tolinechart.cpp' || echo '$(srcdir)/'`tolinechart.cpp
+
+tora-tolinechart.obj: tolinechart.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolinechart.obj -MD -MP -MF "$(DEPDIR)/tora-tolinechart.Tpo" -c -o tora-tolinechart.obj `if test -f 'tolinechart.cpp'; then $(CYGPATH_W) 'tolinechart.cpp'; else $(CYGPATH_W) '$(srcdir)/tolinechart.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolinechart.Tpo" "$(DEPDIR)/tora-tolinechart.Po"; else rm -f "$(DEPDIR)/tora-tolinechart.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolinechart.cpp' object='tora-tolinechart.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolinechart.obj `if test -f 'tolinechart.cpp'; then $(CYGPATH_W) 'tolinechart.cpp'; else $(CYGPATH_W) '$(srcdir)/tolinechart.cpp'; fi`
+
+tora-tolinechartsetupui.o: tolinechartsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolinechartsetupui.o -MD -MP -MF "$(DEPDIR)/tora-tolinechartsetupui.Tpo" -c -o tora-tolinechartsetupui.o `test -f 'tolinechartsetupui.cpp' || echo '$(srcdir)/'`tolinechartsetupui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolinechartsetupui.Tpo" "$(DEPDIR)/tora-tolinechartsetupui.Po"; else rm -f "$(DEPDIR)/tora-tolinechartsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolinechartsetupui.cpp' object='tora-tolinechartsetupui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolinechartsetupui.o `test -f 'tolinechartsetupui.cpp' || echo '$(srcdir)/'`tolinechartsetupui.cpp
+
+tora-tolinechartsetupui.obj: tolinechartsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tolinechartsetupui.obj -MD -MP -MF "$(DEPDIR)/tora-tolinechartsetupui.Tpo" -c -o tora-tolinechartsetupui.obj `if test -f 'tolinechartsetupui.cpp'; then $(CYGPATH_W) 'tolinechartsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/tolinechartsetupui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tolinechartsetupui.Tpo" "$(DEPDIR)/tora-tolinechartsetupui.Po"; else rm -f "$(DEPDIR)/tora-tolinechartsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tolinechartsetupui.cpp' object='tora-tolinechartsetupui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tolinechartsetupui.obj `if test -f 'tolinechartsetupui.cpp'; then $(CYGPATH_W) 'tolinechartsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/tolinechartsetupui.cpp'; fi`
+
+tora-topiechart.o: topiechart.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-topiechart.o -MD -MP -MF "$(DEPDIR)/tora-topiechart.Tpo" -c -o tora-topiechart.o `test -f 'topiechart.cpp' || echo '$(srcdir)/'`topiechart.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-topiechart.Tpo" "$(DEPDIR)/tora-topiechart.Po"; else rm -f "$(DEPDIR)/tora-topiechart.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='topiechart.cpp' object='tora-topiechart.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-topiechart.o `test -f 'topiechart.cpp' || echo '$(srcdir)/'`topiechart.cpp
+
+tora-topiechart.obj: topiechart.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-topiechart.obj -MD -MP -MF "$(DEPDIR)/tora-topiechart.Tpo" -c -o tora-topiechart.obj `if test -f 'topiechart.cpp'; then $(CYGPATH_W) 'topiechart.cpp'; else $(CYGPATH_W) '$(srcdir)/topiechart.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-topiechart.Tpo" "$(DEPDIR)/tora-topiechart.Po"; else rm -f "$(DEPDIR)/tora-topiechart.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='topiechart.cpp' object='tora-topiechart.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-topiechart.obj `if test -f 'topiechart.cpp'; then $(CYGPATH_W) 'topiechart.cpp'; else $(CYGPATH_W) '$(srcdir)/topiechart.cpp'; fi`
+
+tora-toresultbar.o: toresultbar.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultbar.o -MD -MP -MF "$(DEPDIR)/tora-toresultbar.Tpo" -c -o tora-toresultbar.o `test -f 'toresultbar.cpp' || echo '$(srcdir)/'`toresultbar.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultbar.Tpo" "$(DEPDIR)/tora-toresultbar.Po"; else rm -f "$(DEPDIR)/tora-toresultbar.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultbar.cpp' object='tora-toresultbar.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultbar.o `test -f 'toresultbar.cpp' || echo '$(srcdir)/'`toresultbar.cpp
+
+tora-toresultbar.obj: toresultbar.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultbar.obj -MD -MP -MF "$(DEPDIR)/tora-toresultbar.Tpo" -c -o tora-toresultbar.obj `if test -f 'toresultbar.cpp'; then $(CYGPATH_W) 'toresultbar.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultbar.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultbar.Tpo" "$(DEPDIR)/tora-toresultbar.Po"; else rm -f "$(DEPDIR)/tora-toresultbar.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultbar.cpp' object='tora-toresultbar.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultbar.obj `if test -f 'toresultbar.cpp'; then $(CYGPATH_W) 'toresultbar.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultbar.cpp'; fi`
+
+tora-toresultline.o: toresultline.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultline.o -MD -MP -MF "$(DEPDIR)/tora-toresultline.Tpo" -c -o tora-toresultline.o `test -f 'toresultline.cpp' || echo '$(srcdir)/'`toresultline.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultline.Tpo" "$(DEPDIR)/tora-toresultline.Po"; else rm -f "$(DEPDIR)/tora-toresultline.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultline.cpp' object='tora-toresultline.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultline.o `test -f 'toresultline.cpp' || echo '$(srcdir)/'`toresultline.cpp
+
+tora-toresultline.obj: toresultline.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultline.obj -MD -MP -MF "$(DEPDIR)/tora-toresultline.Tpo" -c -o tora-toresultline.obj `if test -f 'toresultline.cpp'; then $(CYGPATH_W) 'toresultline.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultline.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultline.Tpo" "$(DEPDIR)/tora-toresultline.Po"; else rm -f "$(DEPDIR)/tora-toresultline.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultline.cpp' object='tora-toresultline.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultline.obj `if test -f 'toresultline.cpp'; then $(CYGPATH_W) 'toresultline.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultline.cpp'; fi`
+
+tora-toresultpie.o: toresultpie.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultpie.o -MD -MP -MF "$(DEPDIR)/tora-toresultpie.Tpo" -c -o tora-toresultpie.o `test -f 'toresultpie.cpp' || echo '$(srcdir)/'`toresultpie.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultpie.Tpo" "$(DEPDIR)/tora-toresultpie.Po"; else rm -f "$(DEPDIR)/tora-toresultpie.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultpie.cpp' object='tora-toresultpie.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultpie.o `test -f 'toresultpie.cpp' || echo '$(srcdir)/'`toresultpie.cpp
+
+tora-toresultpie.obj: toresultpie.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultpie.obj -MD -MP -MF "$(DEPDIR)/tora-toresultpie.Tpo" -c -o tora-toresultpie.obj `if test -f 'toresultpie.cpp'; then $(CYGPATH_W) 'toresultpie.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultpie.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultpie.Tpo" "$(DEPDIR)/tora-toresultpie.Po"; else rm -f "$(DEPDIR)/tora-toresultpie.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultpie.cpp' object='tora-toresultpie.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultpie.obj `if test -f 'toresultpie.cpp'; then $(CYGPATH_W) 'toresultpie.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultpie.cpp'; fi`
+
+tora-todebugwatch.o: todebugwatch.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todebugwatch.o -MD -MP -MF "$(DEPDIR)/tora-todebugwatch.Tpo" -c -o tora-todebugwatch.o `test -f 'todebugwatch.cpp' || echo '$(srcdir)/'`todebugwatch.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todebugwatch.Tpo" "$(DEPDIR)/tora-todebugwatch.Po"; else rm -f "$(DEPDIR)/tora-todebugwatch.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todebugwatch.cpp' object='tora-todebugwatch.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todebugwatch.o `test -f 'todebugwatch.cpp' || echo '$(srcdir)/'`todebugwatch.cpp
+
+tora-todebugwatch.obj: todebugwatch.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todebugwatch.obj -MD -MP -MF "$(DEPDIR)/tora-todebugwatch.Tpo" -c -o tora-todebugwatch.obj `if test -f 'todebugwatch.cpp'; then $(CYGPATH_W) 'todebugwatch.cpp'; else $(CYGPATH_W) '$(srcdir)/todebugwatch.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todebugwatch.Tpo" "$(DEPDIR)/tora-todebugwatch.Po"; else rm -f "$(DEPDIR)/tora-todebugwatch.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todebugwatch.cpp' object='tora-todebugwatch.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todebugwatch.obj `if test -f 'todebugwatch.cpp'; then $(CYGPATH_W) 'todebugwatch.cpp'; else $(CYGPATH_W) '$(srcdir)/todebugwatch.cpp'; fi`
+
+tora-todebugtext.o: todebugtext.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todebugtext.o -MD -MP -MF "$(DEPDIR)/tora-todebugtext.Tpo" -c -o tora-todebugtext.o `test -f 'todebugtext.cpp' || echo '$(srcdir)/'`todebugtext.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todebugtext.Tpo" "$(DEPDIR)/tora-todebugtext.Po"; else rm -f "$(DEPDIR)/tora-todebugtext.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todebugtext.cpp' object='tora-todebugtext.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todebugtext.o `test -f 'todebugtext.cpp' || echo '$(srcdir)/'`todebugtext.cpp
+
+tora-todebugtext.obj: todebugtext.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todebugtext.obj -MD -MP -MF "$(DEPDIR)/tora-todebugtext.Tpo" -c -o tora-todebugtext.obj `if test -f 'todebugtext.cpp'; then $(CYGPATH_W) 'todebugtext.cpp'; else $(CYGPATH_W) '$(srcdir)/todebugtext.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todebugtext.Tpo" "$(DEPDIR)/tora-todebugtext.Po"; else rm -f "$(DEPDIR)/tora-todebugtext.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todebugtext.cpp' object='tora-todebugtext.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todebugtext.obj `if test -f 'todebugtext.cpp'; then $(CYGPATH_W) 'todebugtext.cpp'; else $(CYGPATH_W) '$(srcdir)/todebugtext.cpp'; fi`
+
+tora-todebugchangeui.o: todebugchangeui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todebugchangeui.o -MD -MP -MF "$(DEPDIR)/tora-todebugchangeui.Tpo" -c -o tora-todebugchangeui.o `test -f 'todebugchangeui.cpp' || echo '$(srcdir)/'`todebugchangeui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todebugchangeui.Tpo" "$(DEPDIR)/tora-todebugchangeui.Po"; else rm -f "$(DEPDIR)/tora-todebugchangeui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todebugchangeui.cpp' object='tora-todebugchangeui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todebugchangeui.o `test -f 'todebugchangeui.cpp' || echo '$(srcdir)/'`todebugchangeui.cpp
+
+tora-todebugchangeui.obj: todebugchangeui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-todebugchangeui.obj -MD -MP -MF "$(DEPDIR)/tora-todebugchangeui.Tpo" -c -o tora-todebugchangeui.obj `if test -f 'todebugchangeui.cpp'; then $(CYGPATH_W) 'todebugchangeui.cpp'; else $(CYGPATH_W) '$(srcdir)/todebugchangeui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-todebugchangeui.Tpo" "$(DEPDIR)/tora-todebugchangeui.Po"; else rm -f "$(DEPDIR)/tora-todebugchangeui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='todebugchangeui.cpp' object='tora-todebugchangeui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-todebugchangeui.obj `if test -f 'todebugchangeui.cpp'; then $(CYGPATH_W) 'todebugchangeui.cpp'; else $(CYGPATH_W) '$(srcdir)/todebugchangeui.cpp'; fi`
+
+tora-toeditextensiongotoui.o: toeditextensiongotoui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toeditextensiongotoui.o -MD -MP -MF "$(DEPDIR)/tora-toeditextensiongotoui.Tpo" -c -o tora-toeditextensiongotoui.o `test -f 'toeditextensiongotoui.cpp' || echo '$(srcdir)/'`toeditextensiongotoui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toeditextensiongotoui.Tpo" "$(DEPDIR)/tora-toeditextensiongotoui.Po"; else rm -f "$(DEPDIR)/tora-toeditextensiongotoui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toeditextensiongotoui.cpp' object='tora-toeditextensiongotoui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toeditextensiongotoui.o `test -f 'toeditextensiongotoui.cpp' || echo '$(srcdir)/'`toeditextensiongotoui.cpp
+
+tora-toeditextensiongotoui.obj: toeditextensiongotoui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toeditextensiongotoui.obj -MD -MP -MF "$(DEPDIR)/tora-toeditextensiongotoui.Tpo" -c -o tora-toeditextensiongotoui.obj `if test -f 'toeditextensiongotoui.cpp'; then $(CYGPATH_W) 'toeditextensiongotoui.cpp'; else $(CYGPATH_W) '$(srcdir)/toeditextensiongotoui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toeditextensiongotoui.Tpo" "$(DEPDIR)/tora-toeditextensiongotoui.Po"; else rm -f "$(DEPDIR)/tora-toeditextensiongotoui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toeditextensiongotoui.cpp' object='tora-toeditextensiongotoui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toeditextensiongotoui.obj `if test -f 'toeditextensiongotoui.cpp'; then $(CYGPATH_W) 'toeditextensiongotoui.cpp'; else $(CYGPATH_W) '$(srcdir)/toeditextensiongotoui.cpp'; fi`
+
+tora-toeditextensionsetupui.o: toeditextensionsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toeditextensionsetupui.o -MD -MP -MF "$(DEPDIR)/tora-toeditextensionsetupui.Tpo" -c -o tora-toeditextensionsetupui.o `test -f 'toeditextensionsetupui.cpp' || echo '$(srcdir)/'`toeditextensionsetupui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toeditextensionsetupui.Tpo" "$(DEPDIR)/tora-toeditextensionsetupui.Po"; else rm -f "$(DEPDIR)/tora-toeditextensionsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toeditextensionsetupui.cpp' object='tora-toeditextensionsetupui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toeditextensionsetupui.o `test -f 'toeditextensionsetupui.cpp' || echo '$(srcdir)/'`toeditextensionsetupui.cpp
+
+tora-toeditextensionsetupui.obj: toeditextensionsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toeditextensionsetupui.obj -MD -MP -MF "$(DEPDIR)/tora-toeditextensionsetupui.Tpo" -c -o tora-toeditextensionsetupui.obj `if test -f 'toeditextensionsetupui.cpp'; then $(CYGPATH_W) 'toeditextensionsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/toeditextensionsetupui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toeditextensionsetupui.Tpo" "$(DEPDIR)/tora-toeditextensionsetupui.Po"; else rm -f "$(DEPDIR)/tora-toeditextensionsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toeditextensionsetupui.cpp' object='tora-toeditextensionsetupui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toeditextensionsetupui.obj `if test -f 'toeditextensionsetupui.cpp'; then $(CYGPATH_W) 'toeditextensionsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/toeditextensionsetupui.cpp'; fi`
+
+tora-toextract.o: toextract.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toextract.o -MD -MP -MF "$(DEPDIR)/tora-toextract.Tpo" -c -o tora-toextract.o `test -f 'toextract.cpp' || echo '$(srcdir)/'`toextract.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toextract.Tpo" "$(DEPDIR)/tora-toextract.Po"; else rm -f "$(DEPDIR)/tora-toextract.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toextract.cpp' object='tora-toextract.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toextract.o `test -f 'toextract.cpp' || echo '$(srcdir)/'`toextract.cpp
+
+tora-toextract.obj: toextract.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toextract.obj -MD -MP -MF "$(DEPDIR)/tora-toextract.Tpo" -c -o tora-toextract.obj `if test -f 'toextract.cpp'; then $(CYGPATH_W) 'toextract.cpp'; else $(CYGPATH_W) '$(srcdir)/toextract.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toextract.Tpo" "$(DEPDIR)/tora-toextract.Po"; else rm -f "$(DEPDIR)/tora-toextract.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toextract.cpp' object='tora-toextract.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toextract.obj `if test -f 'toextract.cpp'; then $(CYGPATH_W) 'toextract.cpp'; else $(CYGPATH_W) '$(srcdir)/toextract.cpp'; fi`
+
+tora-toreport.o: toreport.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toreport.o -MD -MP -MF "$(DEPDIR)/tora-toreport.Tpo" -c -o tora-toreport.o `test -f 'toreport.cpp' || echo '$(srcdir)/'`toreport.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toreport.Tpo" "$(DEPDIR)/tora-toreport.Po"; else rm -f "$(DEPDIR)/tora-toreport.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toreport.cpp' object='tora-toreport.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toreport.o `test -f 'toreport.cpp' || echo '$(srcdir)/'`toreport.cpp
+
+tora-toreport.obj: toreport.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toreport.obj -MD -MP -MF "$(DEPDIR)/tora-toreport.Tpo" -c -o tora-toreport.obj `if test -f 'toreport.cpp'; then $(CYGPATH_W) 'toreport.cpp'; else $(CYGPATH_W) '$(srcdir)/toreport.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toreport.Tpo" "$(DEPDIR)/tora-toreport.Po"; else rm -f "$(DEPDIR)/tora-toreport.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toreport.cpp' object='tora-toreport.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toreport.obj `if test -f 'toreport.cpp'; then $(CYGPATH_W) 'toreport.cpp'; else $(CYGPATH_W) '$(srcdir)/toreport.cpp'; fi`
+
+tora-toresultconstraint.o: toresultconstraint.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultconstraint.o -MD -MP -MF "$(DEPDIR)/tora-toresultconstraint.Tpo" -c -o tora-toresultconstraint.o `test -f 'toresultconstraint.cpp' || echo '$(srcdir)/'`toresultconstraint.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultconstraint.Tpo" "$(DEPDIR)/tora-toresultconstraint.Po"; else rm -f "$(DEPDIR)/tora-toresultconstraint.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultconstraint.cpp' object='tora-toresultconstraint.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultconstraint.o `test -f 'toresultconstraint.cpp' || echo '$(srcdir)/'`toresultconstraint.cpp
+
+tora-toresultconstraint.obj: toresultconstraint.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultconstraint.obj -MD -MP -MF "$(DEPDIR)/tora-toresultconstraint.Tpo" -c -o tora-toresultconstraint.obj `if test -f 'toresultconstraint.cpp'; then $(CYGPATH_W) 'toresultconstraint.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultconstraint.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultconstraint.Tpo" "$(DEPDIR)/tora-toresultconstraint.Po"; else rm -f "$(DEPDIR)/tora-toresultconstraint.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultconstraint.cpp' object='tora-toresultconstraint.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultconstraint.obj `if test -f 'toresultconstraint.cpp'; then $(CYGPATH_W) 'toresultconstraint.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultconstraint.cpp'; fi`
+
+tora-toresultextract.o: toresultextract.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultextract.o -MD -MP -MF "$(DEPDIR)/tora-toresultextract.Tpo" -c -o tora-toresultextract.o `test -f 'toresultextract.cpp' || echo '$(srcdir)/'`toresultextract.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultextract.Tpo" "$(DEPDIR)/tora-toresultextract.Po"; else rm -f "$(DEPDIR)/tora-toresultextract.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultextract.cpp' object='tora-toresultextract.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultextract.o `test -f 'toresultextract.cpp' || echo '$(srcdir)/'`toresultextract.cpp
+
+tora-toresultextract.obj: toresultextract.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultextract.obj -MD -MP -MF "$(DEPDIR)/tora-toresultextract.Tpo" -c -o tora-toresultextract.obj `if test -f 'toresultextract.cpp'; then $(CYGPATH_W) 'toresultextract.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultextract.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultextract.Tpo" "$(DEPDIR)/tora-toresultextract.Po"; else rm -f "$(DEPDIR)/tora-toresultextract.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultextract.cpp' object='tora-toresultextract.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultextract.obj `if test -f 'toresultextract.cpp'; then $(CYGPATH_W) 'toresultextract.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultextract.cpp'; fi`
+
+tora-toresultcols.o: toresultcols.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultcols.o -MD -MP -MF "$(DEPDIR)/tora-toresultcols.Tpo" -c -o tora-toresultcols.o `test -f 'toresultcols.cpp' || echo '$(srcdir)/'`toresultcols.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultcols.Tpo" "$(DEPDIR)/tora-toresultcols.Po"; else rm -f "$(DEPDIR)/tora-toresultcols.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultcols.cpp' object='tora-toresultcols.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultcols.o `test -f 'toresultcols.cpp' || echo '$(srcdir)/'`toresultcols.cpp
+
+tora-toresultcols.obj: toresultcols.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultcols.obj -MD -MP -MF "$(DEPDIR)/tora-toresultcols.Tpo" -c -o tora-toresultcols.obj `if test -f 'toresultcols.cpp'; then $(CYGPATH_W) 'toresultcols.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultcols.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultcols.Tpo" "$(DEPDIR)/tora-toresultcols.Po"; else rm -f "$(DEPDIR)/tora-toresultcols.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultcols.cpp' object='tora-toresultcols.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultcols.obj `if test -f 'toresultcols.cpp'; then $(CYGPATH_W) 'toresultcols.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultcols.cpp'; fi`
+
+tora-toresultcolscomment.o: toresultcolscomment.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultcolscomment.o -MD -MP -MF "$(DEPDIR)/tora-toresultcolscomment.Tpo" -c -o tora-toresultcolscomment.o `test -f 'toresultcolscomment.cpp' || echo '$(srcdir)/'`toresultcolscomment.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultcolscomment.Tpo" "$(DEPDIR)/tora-toresultcolscomment.Po"; else rm -f "$(DEPDIR)/tora-toresultcolscomment.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultcolscomment.cpp' object='tora-toresultcolscomment.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultcolscomment.o `test -f 'toresultcolscomment.cpp' || echo '$(srcdir)/'`toresultcolscomment.cpp
+
+tora-toresultcolscomment.obj: toresultcolscomment.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultcolscomment.obj -MD -MP -MF "$(DEPDIR)/tora-toresultcolscomment.Tpo" -c -o tora-toresultcolscomment.obj `if test -f 'toresultcolscomment.cpp'; then $(CYGPATH_W) 'toresultcolscomment.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultcolscomment.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultcolscomment.Tpo" "$(DEPDIR)/tora-toresultcolscomment.Po"; else rm -f "$(DEPDIR)/tora-toresultcolscomment.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultcolscomment.cpp' object='tora-toresultcolscomment.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultcolscomment.obj `if test -f 'toresultcolscomment.cpp'; then $(CYGPATH_W) 'toresultcolscomment.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultcolscomment.cpp'; fi`
+
+tora-toresultcombo.o: toresultcombo.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultcombo.o -MD -MP -MF "$(DEPDIR)/tora-toresultcombo.Tpo" -c -o tora-toresultcombo.o `test -f 'toresultcombo.cpp' || echo '$(srcdir)/'`toresultcombo.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultcombo.Tpo" "$(DEPDIR)/tora-toresultcombo.Po"; else rm -f "$(DEPDIR)/tora-toresultcombo.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultcombo.cpp' object='tora-toresultcombo.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultcombo.o `test -f 'toresultcombo.cpp' || echo '$(srcdir)/'`toresultcombo.cpp
+
+tora-toresultcombo.obj: toresultcombo.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultcombo.obj -MD -MP -MF "$(DEPDIR)/tora-toresultcombo.Tpo" -c -o tora-toresultcombo.obj `if test -f 'toresultcombo.cpp'; then $(CYGPATH_W) 'toresultcombo.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultcombo.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultcombo.Tpo" "$(DEPDIR)/tora-toresultcombo.Po"; else rm -f "$(DEPDIR)/tora-toresultcombo.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultcombo.cpp' object='tora-toresultcombo.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultcombo.obj `if test -f 'toresultcombo.cpp'; then $(CYGPATH_W) 'toresultcombo.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultcombo.cpp'; fi`
+
+tora-toresultcontent.o: toresultcontent.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultcontent.o -MD -MP -MF "$(DEPDIR)/tora-toresultcontent.Tpo" -c -o tora-toresultcontent.o `test -f 'toresultcontent.cpp' || echo '$(srcdir)/'`toresultcontent.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultcontent.Tpo" "$(DEPDIR)/tora-toresultcontent.Po"; else rm -f "$(DEPDIR)/tora-toresultcontent.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultcontent.cpp' object='tora-toresultcontent.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultcontent.o `test -f 'toresultcontent.cpp' || echo '$(srcdir)/'`toresultcontent.cpp
+
+tora-toresultcontent.obj: toresultcontent.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultcontent.obj -MD -MP -MF "$(DEPDIR)/tora-toresultcontent.Tpo" -c -o tora-toresultcontent.obj `if test -f 'toresultcontent.cpp'; then $(CYGPATH_W) 'toresultcontent.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultcontent.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultcontent.Tpo" "$(DEPDIR)/tora-toresultcontent.Po"; else rm -f "$(DEPDIR)/tora-toresultcontent.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultcontent.cpp' object='tora-toresultcontent.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultcontent.obj `if test -f 'toresultcontent.cpp'; then $(CYGPATH_W) 'toresultcontent.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultcontent.cpp'; fi`
+
+tora-toresultcontentfilterui.o: toresultcontentfilterui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultcontentfilterui.o -MD -MP -MF "$(DEPDIR)/tora-toresultcontentfilterui.Tpo" -c -o tora-toresultcontentfilterui.o `test -f 'toresultcontentfilterui.cpp' || echo '$(srcdir)/'`toresultcontentfilterui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultcontentfilterui.Tpo" "$(DEPDIR)/tora-toresultcontentfilterui.Po"; else rm -f "$(DEPDIR)/tora-toresultcontentfilterui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultcontentfilterui.cpp' object='tora-toresultcontentfilterui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultcontentfilterui.o `test -f 'toresultcontentfilterui.cpp' || echo '$(srcdir)/'`toresultcontentfilterui.cpp
+
+tora-toresultcontentfilterui.obj: toresultcontentfilterui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultcontentfilterui.obj -MD -MP -MF "$(DEPDIR)/tora-toresultcontentfilterui.Tpo" -c -o tora-toresultcontentfilterui.obj `if test -f 'toresultcontentfilterui.cpp'; then $(CYGPATH_W) 'toresultcontentfilterui.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultcontentfilterui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultcontentfilterui.Tpo" "$(DEPDIR)/tora-toresultcontentfilterui.Po"; else rm -f "$(DEPDIR)/tora-toresultcontentfilterui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultcontentfilterui.cpp' object='tora-toresultcontentfilterui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultcontentfilterui.obj `if test -f 'toresultcontentfilterui.cpp'; then $(CYGPATH_W) 'toresultcontentfilterui.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultcontentfilterui.cpp'; fi`
+
+tora-toresultdepend.o: toresultdepend.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultdepend.o -MD -MP -MF "$(DEPDIR)/tora-toresultdepend.Tpo" -c -o tora-toresultdepend.o `test -f 'toresultdepend.cpp' || echo '$(srcdir)/'`toresultdepend.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultdepend.Tpo" "$(DEPDIR)/tora-toresultdepend.Po"; else rm -f "$(DEPDIR)/tora-toresultdepend.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultdepend.cpp' object='tora-toresultdepend.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultdepend.o `test -f 'toresultdepend.cpp' || echo '$(srcdir)/'`toresultdepend.cpp
+
+tora-toresultdepend.obj: toresultdepend.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultdepend.obj -MD -MP -MF "$(DEPDIR)/tora-toresultdepend.Tpo" -c -o tora-toresultdepend.obj `if test -f 'toresultdepend.cpp'; then $(CYGPATH_W) 'toresultdepend.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultdepend.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultdepend.Tpo" "$(DEPDIR)/tora-toresultdepend.Po"; else rm -f "$(DEPDIR)/tora-toresultdepend.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultdepend.cpp' object='tora-toresultdepend.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultdepend.obj `if test -f 'toresultdepend.cpp'; then $(CYGPATH_W) 'toresultdepend.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultdepend.cpp'; fi`
+
+tora-toresultindexes.o: toresultindexes.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultindexes.o -MD -MP -MF "$(DEPDIR)/tora-toresultindexes.Tpo" -c -o tora-toresultindexes.o `test -f 'toresultindexes.cpp' || echo '$(srcdir)/'`toresultindexes.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultindexes.Tpo" "$(DEPDIR)/tora-toresultindexes.Po"; else rm -f "$(DEPDIR)/tora-toresultindexes.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultindexes.cpp' object='tora-toresultindexes.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultindexes.o `test -f 'toresultindexes.cpp' || echo '$(srcdir)/'`toresultindexes.cpp
+
+tora-toresultindexes.obj: toresultindexes.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultindexes.obj -MD -MP -MF "$(DEPDIR)/tora-toresultindexes.Tpo" -c -o tora-toresultindexes.obj `if test -f 'toresultindexes.cpp'; then $(CYGPATH_W) 'toresultindexes.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultindexes.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultindexes.Tpo" "$(DEPDIR)/tora-toresultindexes.Po"; else rm -f "$(DEPDIR)/tora-toresultindexes.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultindexes.cpp' object='tora-toresultindexes.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultindexes.obj `if test -f 'toresultindexes.cpp'; then $(CYGPATH_W) 'toresultindexes.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultindexes.cpp'; fi`
+
+tora-toresultlabel.o: toresultlabel.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultlabel.o -MD -MP -MF "$(DEPDIR)/tora-toresultlabel.Tpo" -c -o tora-toresultlabel.o `test -f 'toresultlabel.cpp' || echo '$(srcdir)/'`toresultlabel.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultlabel.Tpo" "$(DEPDIR)/tora-toresultlabel.Po"; else rm -f "$(DEPDIR)/tora-toresultlabel.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultlabel.cpp' object='tora-toresultlabel.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultlabel.o `test -f 'toresultlabel.cpp' || echo '$(srcdir)/'`toresultlabel.cpp
+
+tora-toresultlabel.obj: toresultlabel.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultlabel.obj -MD -MP -MF "$(DEPDIR)/tora-toresultlabel.Tpo" -c -o tora-toresultlabel.obj `if test -f 'toresultlabel.cpp'; then $(CYGPATH_W) 'toresultlabel.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultlabel.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultlabel.Tpo" "$(DEPDIR)/tora-toresultlabel.Po"; else rm -f "$(DEPDIR)/tora-toresultlabel.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultlabel.cpp' object='tora-toresultlabel.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultlabel.obj `if test -f 'toresultlabel.cpp'; then $(CYGPATH_W) 'toresultlabel.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultlabel.cpp'; fi`
+
+tora-toresultlock.o: toresultlock.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultlock.o -MD -MP -MF "$(DEPDIR)/tora-toresultlock.Tpo" -c -o tora-toresultlock.o `test -f 'toresultlock.cpp' || echo '$(srcdir)/'`toresultlock.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultlock.Tpo" "$(DEPDIR)/tora-toresultlock.Po"; else rm -f "$(DEPDIR)/tora-toresultlock.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultlock.cpp' object='tora-toresultlock.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultlock.o `test -f 'toresultlock.cpp' || echo '$(srcdir)/'`toresultlock.cpp
+
+tora-toresultlock.obj: toresultlock.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultlock.obj -MD -MP -MF "$(DEPDIR)/tora-toresultlock.Tpo" -c -o tora-toresultlock.obj `if test -f 'toresultlock.cpp'; then $(CYGPATH_W) 'toresultlock.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultlock.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultlock.Tpo" "$(DEPDIR)/tora-toresultlock.Po"; else rm -f "$(DEPDIR)/tora-toresultlock.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultlock.cpp' object='tora-toresultlock.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultlock.obj `if test -f 'toresultlock.cpp'; then $(CYGPATH_W) 'toresultlock.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultlock.cpp'; fi`
+
+tora-toresultlong.o: toresultlong.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultlong.o -MD -MP -MF "$(DEPDIR)/tora-toresultlong.Tpo" -c -o tora-toresultlong.o `test -f 'toresultlong.cpp' || echo '$(srcdir)/'`toresultlong.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultlong.Tpo" "$(DEPDIR)/tora-toresultlong.Po"; else rm -f "$(DEPDIR)/tora-toresultlong.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultlong.cpp' object='tora-toresultlong.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultlong.o `test -f 'toresultlong.cpp' || echo '$(srcdir)/'`toresultlong.cpp
+
+tora-toresultlong.obj: toresultlong.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultlong.obj -MD -MP -MF "$(DEPDIR)/tora-toresultlong.Tpo" -c -o tora-toresultlong.obj `if test -f 'toresultlong.cpp'; then $(CYGPATH_W) 'toresultlong.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultlong.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultlong.Tpo" "$(DEPDIR)/tora-toresultlong.Po"; else rm -f "$(DEPDIR)/tora-toresultlong.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultlong.cpp' object='tora-toresultlong.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultlong.obj `if test -f 'toresultlong.cpp'; then $(CYGPATH_W) 'toresultlong.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultlong.cpp'; fi`
+
+tora-toresultplan.o: toresultplan.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultplan.o -MD -MP -MF "$(DEPDIR)/tora-toresultplan.Tpo" -c -o tora-toresultplan.o `test -f 'toresultplan.cpp' || echo '$(srcdir)/'`toresultplan.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultplan.Tpo" "$(DEPDIR)/tora-toresultplan.Po"; else rm -f "$(DEPDIR)/tora-toresultplan.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultplan.cpp' object='tora-toresultplan.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultplan.o `test -f 'toresultplan.cpp' || echo '$(srcdir)/'`toresultplan.cpp
+
+tora-toresultplan.obj: toresultplan.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultplan.obj -MD -MP -MF "$(DEPDIR)/tora-toresultplan.Tpo" -c -o tora-toresultplan.obj `if test -f 'toresultplan.cpp'; then $(CYGPATH_W) 'toresultplan.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultplan.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultplan.Tpo" "$(DEPDIR)/tora-toresultplan.Po"; else rm -f "$(DEPDIR)/tora-toresultplan.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultplan.cpp' object='tora-toresultplan.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultplan.obj `if test -f 'toresultplan.cpp'; then $(CYGPATH_W) 'toresultplan.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultplan.cpp'; fi`
+
+tora-toresultparam.o: toresultparam.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultparam.o -MD -MP -MF "$(DEPDIR)/tora-toresultparam.Tpo" -c -o tora-toresultparam.o `test -f 'toresultparam.cpp' || echo '$(srcdir)/'`toresultparam.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultparam.Tpo" "$(DEPDIR)/tora-toresultparam.Po"; else rm -f "$(DEPDIR)/tora-toresultparam.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultparam.cpp' object='tora-toresultparam.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultparam.o `test -f 'toresultparam.cpp' || echo '$(srcdir)/'`toresultparam.cpp
+
+tora-toresultparam.obj: toresultparam.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultparam.obj -MD -MP -MF "$(DEPDIR)/tora-toresultparam.Tpo" -c -o tora-toresultparam.obj `if test -f 'toresultparam.cpp'; then $(CYGPATH_W) 'toresultparam.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultparam.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultparam.Tpo" "$(DEPDIR)/tora-toresultparam.Po"; else rm -f "$(DEPDIR)/tora-toresultparam.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultparam.cpp' object='tora-toresultparam.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultparam.obj `if test -f 'toresultparam.cpp'; then $(CYGPATH_W) 'toresultparam.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultparam.cpp'; fi`
+
+tora-toresultreferences.o: toresultreferences.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultreferences.o -MD -MP -MF "$(DEPDIR)/tora-toresultreferences.Tpo" -c -o tora-toresultreferences.o `test -f 'toresultreferences.cpp' || echo '$(srcdir)/'`toresultreferences.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultreferences.Tpo" "$(DEPDIR)/tora-toresultreferences.Po"; else rm -f "$(DEPDIR)/tora-toresultreferences.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultreferences.cpp' object='tora-toresultreferences.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultreferences.o `test -f 'toresultreferences.cpp' || echo '$(srcdir)/'`toresultreferences.cpp
+
+tora-toresultreferences.obj: toresultreferences.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultreferences.obj -MD -MP -MF "$(DEPDIR)/tora-toresultreferences.Tpo" -c -o tora-toresultreferences.obj `if test -f 'toresultreferences.cpp'; then $(CYGPATH_W) 'toresultreferences.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultreferences.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultreferences.Tpo" "$(DEPDIR)/tora-toresultreferences.Po"; else rm -f "$(DEPDIR)/tora-toresultreferences.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultreferences.cpp' object='tora-toresultreferences.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultreferences.obj `if test -f 'toresultreferences.cpp'; then $(CYGPATH_W) 'toresultreferences.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultreferences.cpp'; fi`
+
+tora-toresultstorage.o: toresultstorage.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultstorage.o -MD -MP -MF "$(DEPDIR)/tora-toresultstorage.Tpo" -c -o tora-toresultstorage.o `test -f 'toresultstorage.cpp' || echo '$(srcdir)/'`toresultstorage.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultstorage.Tpo" "$(DEPDIR)/tora-toresultstorage.Po"; else rm -f "$(DEPDIR)/tora-toresultstorage.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultstorage.cpp' object='tora-toresultstorage.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultstorage.o `test -f 'toresultstorage.cpp' || echo '$(srcdir)/'`toresultstorage.cpp
+
+tora-toresultstorage.obj: toresultstorage.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toresultstorage.obj -MD -MP -MF "$(DEPDIR)/tora-toresultstorage.Tpo" -c -o tora-toresultstorage.obj `if test -f 'toresultstorage.cpp'; then $(CYGPATH_W) 'toresultstorage.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultstorage.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toresultstorage.Tpo" "$(DEPDIR)/tora-toresultstorage.Po"; else rm -f "$(DEPDIR)/tora-toresultstorage.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toresultstorage.cpp' object='tora-toresultstorage.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toresultstorage.obj `if test -f 'toresultstorage.cpp'; then $(CYGPATH_W) 'toresultstorage.cpp'; else $(CYGPATH_W) '$(srcdir)/toresultstorage.cpp'; fi`
+
+tora-torollbackdialogui.o: torollbackdialogui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-torollbackdialogui.o -MD -MP -MF "$(DEPDIR)/tora-torollbackdialogui.Tpo" -c -o tora-torollbackdialogui.o `test -f 'torollbackdialogui.cpp' || echo '$(srcdir)/'`torollbackdialogui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-torollbackdialogui.Tpo" "$(DEPDIR)/tora-torollbackdialogui.Po"; else rm -f "$(DEPDIR)/tora-torollbackdialogui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='torollbackdialogui.cpp' object='tora-torollbackdialogui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-torollbackdialogui.o `test -f 'torollbackdialogui.cpp' || echo '$(srcdir)/'`torollbackdialogui.cpp
+
+tora-torollbackdialogui.obj: torollbackdialogui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-torollbackdialogui.obj -MD -MP -MF "$(DEPDIR)/tora-torollbackdialogui.Tpo" -c -o tora-torollbackdialogui.obj `if test -f 'torollbackdialogui.cpp'; then $(CYGPATH_W) 'torollbackdialogui.cpp'; else $(CYGPATH_W) '$(srcdir)/torollbackdialogui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-torollbackdialogui.Tpo" "$(DEPDIR)/tora-torollbackdialogui.Po"; else rm -f "$(DEPDIR)/tora-torollbackdialogui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='torollbackdialogui.cpp' object='tora-torollbackdialogui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-torollbackdialogui.obj `if test -f 'torollbackdialogui.cpp'; then $(CYGPATH_W) 'torollbackdialogui.cpp'; else $(CYGPATH_W) '$(srcdir)/torollbackdialogui.cpp'; fi`
+
+tora-toscriptui.o: toscriptui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toscriptui.o -MD -MP -MF "$(DEPDIR)/tora-toscriptui.Tpo" -c -o tora-toscriptui.o `test -f 'toscriptui.cpp' || echo '$(srcdir)/'`toscriptui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toscriptui.Tpo" "$(DEPDIR)/tora-toscriptui.Po"; else rm -f "$(DEPDIR)/tora-toscriptui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toscriptui.cpp' object='tora-toscriptui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toscriptui.o `test -f 'toscriptui.cpp' || echo '$(srcdir)/'`toscriptui.cpp
+
+tora-toscriptui.obj: toscriptui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toscriptui.obj -MD -MP -MF "$(DEPDIR)/tora-toscriptui.Tpo" -c -o tora-toscriptui.obj `if test -f 'toscriptui.cpp'; then $(CYGPATH_W) 'toscriptui.cpp'; else $(CYGPATH_W) '$(srcdir)/toscriptui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toscriptui.Tpo" "$(DEPDIR)/tora-toscriptui.Po"; else rm -f "$(DEPDIR)/tora-toscriptui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toscriptui.cpp' object='tora-toscriptui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toscriptui.obj `if test -f 'toscriptui.cpp'; then $(CYGPATH_W) 'toscriptui.cpp'; else $(CYGPATH_W) '$(srcdir)/toscriptui.cpp'; fi`
+
+tora-tosecurityquotaui.o: tosecurityquotaui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosecurityquotaui.o -MD -MP -MF "$(DEPDIR)/tora-tosecurityquotaui.Tpo" -c -o tora-tosecurityquotaui.o `test -f 'tosecurityquotaui.cpp' || echo '$(srcdir)/'`tosecurityquotaui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosecurityquotaui.Tpo" "$(DEPDIR)/tora-tosecurityquotaui.Po"; else rm -f "$(DEPDIR)/tora-tosecurityquotaui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosecurityquotaui.cpp' object='tora-tosecurityquotaui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosecurityquotaui.o `test -f 'tosecurityquotaui.cpp' || echo '$(srcdir)/'`tosecurityquotaui.cpp
+
+tora-tosecurityquotaui.obj: tosecurityquotaui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosecurityquotaui.obj -MD -MP -MF "$(DEPDIR)/tora-tosecurityquotaui.Tpo" -c -o tora-tosecurityquotaui.obj `if test -f 'tosecurityquotaui.cpp'; then $(CYGPATH_W) 'tosecurityquotaui.cpp'; else $(CYGPATH_W) '$(srcdir)/tosecurityquotaui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosecurityquotaui.Tpo" "$(DEPDIR)/tora-tosecurityquotaui.Po"; else rm -f "$(DEPDIR)/tora-tosecurityquotaui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosecurityquotaui.cpp' object='tora-tosecurityquotaui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosecurityquotaui.obj `if test -f 'tosecurityquotaui.cpp'; then $(CYGPATH_W) 'tosecurityquotaui.cpp'; else $(CYGPATH_W) '$(srcdir)/tosecurityquotaui.cpp'; fi`
+
+tora-tosecurityroleui.o: tosecurityroleui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosecurityroleui.o -MD -MP -MF "$(DEPDIR)/tora-tosecurityroleui.Tpo" -c -o tora-tosecurityroleui.o `test -f 'tosecurityroleui.cpp' || echo '$(srcdir)/'`tosecurityroleui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosecurityroleui.Tpo" "$(DEPDIR)/tora-tosecurityroleui.Po"; else rm -f "$(DEPDIR)/tora-tosecurityroleui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosecurityroleui.cpp' object='tora-tosecurityroleui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosecurityroleui.o `test -f 'tosecurityroleui.cpp' || echo '$(srcdir)/'`tosecurityroleui.cpp
+
+tora-tosecurityroleui.obj: tosecurityroleui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosecurityroleui.obj -MD -MP -MF "$(DEPDIR)/tora-tosecurityroleui.Tpo" -c -o tora-tosecurityroleui.obj `if test -f 'tosecurityroleui.cpp'; then $(CYGPATH_W) 'tosecurityroleui.cpp'; else $(CYGPATH_W) '$(srcdir)/tosecurityroleui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosecurityroleui.Tpo" "$(DEPDIR)/tora-tosecurityroleui.Po"; else rm -f "$(DEPDIR)/tora-tosecurityroleui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosecurityroleui.cpp' object='tora-tosecurityroleui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosecurityroleui.obj `if test -f 'tosecurityroleui.cpp'; then $(CYGPATH_W) 'tosecurityroleui.cpp'; else $(CYGPATH_W) '$(srcdir)/tosecurityroleui.cpp'; fi`
+
+tora-tosecurityuserui.o: tosecurityuserui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosecurityuserui.o -MD -MP -MF "$(DEPDIR)/tora-tosecurityuserui.Tpo" -c -o tora-tosecurityuserui.o `test -f 'tosecurityuserui.cpp' || echo '$(srcdir)/'`tosecurityuserui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosecurityuserui.Tpo" "$(DEPDIR)/tora-tosecurityuserui.Po"; else rm -f "$(DEPDIR)/tora-tosecurityuserui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosecurityuserui.cpp' object='tora-tosecurityuserui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosecurityuserui.o `test -f 'tosecurityuserui.cpp' || echo '$(srcdir)/'`tosecurityuserui.cpp
+
+tora-tosecurityuserui.obj: tosecurityuserui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosecurityuserui.obj -MD -MP -MF "$(DEPDIR)/tora-tosecurityuserui.Tpo" -c -o tora-tosecurityuserui.obj `if test -f 'tosecurityuserui.cpp'; then $(CYGPATH_W) 'tosecurityuserui.cpp'; else $(CYGPATH_W) '$(srcdir)/tosecurityuserui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosecurityuserui.Tpo" "$(DEPDIR)/tora-tosecurityuserui.Po"; else rm -f "$(DEPDIR)/tora-tosecurityuserui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosecurityuserui.cpp' object='tora-tosecurityuserui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosecurityuserui.obj `if test -f 'tosecurityuserui.cpp'; then $(CYGPATH_W) 'tosecurityuserui.cpp'; else $(CYGPATH_W) '$(srcdir)/tosecurityuserui.cpp'; fi`
+
+tora-tostoragedatafileui.o: tostoragedatafileui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostoragedatafileui.o -MD -MP -MF "$(DEPDIR)/tora-tostoragedatafileui.Tpo" -c -o tora-tostoragedatafileui.o `test -f 'tostoragedatafileui.cpp' || echo '$(srcdir)/'`tostoragedatafileui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostoragedatafileui.Tpo" "$(DEPDIR)/tora-tostoragedatafileui.Po"; else rm -f "$(DEPDIR)/tora-tostoragedatafileui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostoragedatafileui.cpp' object='tora-tostoragedatafileui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostoragedatafileui.o `test -f 'tostoragedatafileui.cpp' || echo '$(srcdir)/'`tostoragedatafileui.cpp
+
+tora-tostoragedatafileui.obj: tostoragedatafileui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostoragedatafileui.obj -MD -MP -MF "$(DEPDIR)/tora-tostoragedatafileui.Tpo" -c -o tora-tostoragedatafileui.obj `if test -f 'tostoragedatafileui.cpp'; then $(CYGPATH_W) 'tostoragedatafileui.cpp'; else $(CYGPATH_W) '$(srcdir)/tostoragedatafileui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostoragedatafileui.Tpo" "$(DEPDIR)/tora-tostoragedatafileui.Po"; else rm -f "$(DEPDIR)/tora-tostoragedatafileui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostoragedatafileui.cpp' object='tora-tostoragedatafileui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostoragedatafileui.obj `if test -f 'tostoragedatafileui.cpp'; then $(CYGPATH_W) 'tostoragedatafileui.cpp'; else $(CYGPATH_W) '$(srcdir)/tostoragedatafileui.cpp'; fi`
+
+tora-tostoragedialogui.o: tostoragedialogui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostoragedialogui.o -MD -MP -MF "$(DEPDIR)/tora-tostoragedialogui.Tpo" -c -o tora-tostoragedialogui.o `test -f 'tostoragedialogui.cpp' || echo '$(srcdir)/'`tostoragedialogui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostoragedialogui.Tpo" "$(DEPDIR)/tora-tostoragedialogui.Po"; else rm -f "$(DEPDIR)/tora-tostoragedialogui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostoragedialogui.cpp' object='tora-tostoragedialogui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostoragedialogui.o `test -f 'tostoragedialogui.cpp' || echo '$(srcdir)/'`tostoragedialogui.cpp
+
+tora-tostoragedialogui.obj: tostoragedialogui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostoragedialogui.obj -MD -MP -MF "$(DEPDIR)/tora-tostoragedialogui.Tpo" -c -o tora-tostoragedialogui.obj `if test -f 'tostoragedialogui.cpp'; then $(CYGPATH_W) 'tostoragedialogui.cpp'; else $(CYGPATH_W) '$(srcdir)/tostoragedialogui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostoragedialogui.Tpo" "$(DEPDIR)/tora-tostoragedialogui.Po"; else rm -f "$(DEPDIR)/tora-tostoragedialogui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostoragedialogui.cpp' object='tora-tostoragedialogui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostoragedialogui.obj `if test -f 'tostoragedialogui.cpp'; then $(CYGPATH_W) 'tostoragedialogui.cpp'; else $(CYGPATH_W) '$(srcdir)/tostoragedialogui.cpp'; fi`
+
+tora-tostorageprefsui.o: tostorageprefsui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostorageprefsui.o -MD -MP -MF "$(DEPDIR)/tora-tostorageprefsui.Tpo" -c -o tora-tostorageprefsui.o `test -f 'tostorageprefsui.cpp' || echo '$(srcdir)/'`tostorageprefsui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostorageprefsui.Tpo" "$(DEPDIR)/tora-tostorageprefsui.Po"; else rm -f "$(DEPDIR)/tora-tostorageprefsui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostorageprefsui.cpp' object='tora-tostorageprefsui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostorageprefsui.o `test -f 'tostorageprefsui.cpp' || echo '$(srcdir)/'`tostorageprefsui.cpp
+
+tora-tostorageprefsui.obj: tostorageprefsui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostorageprefsui.obj -MD -MP -MF "$(DEPDIR)/tora-tostorageprefsui.Tpo" -c -o tora-tostorageprefsui.obj `if test -f 'tostorageprefsui.cpp'; then $(CYGPATH_W) 'tostorageprefsui.cpp'; else $(CYGPATH_W) '$(srcdir)/tostorageprefsui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostorageprefsui.Tpo" "$(DEPDIR)/tora-tostorageprefsui.Po"; else rm -f "$(DEPDIR)/tora-tostorageprefsui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostorageprefsui.cpp' object='tora-tostorageprefsui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostorageprefsui.obj `if test -f 'tostorageprefsui.cpp'; then $(CYGPATH_W) 'tostorageprefsui.cpp'; else $(CYGPATH_W) '$(srcdir)/tostorageprefsui.cpp'; fi`
+
+tora-tostoragetablespaceui.o: tostoragetablespaceui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostoragetablespaceui.o -MD -MP -MF "$(DEPDIR)/tora-tostoragetablespaceui.Tpo" -c -o tora-tostoragetablespaceui.o `test -f 'tostoragetablespaceui.cpp' || echo '$(srcdir)/'`tostoragetablespaceui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostoragetablespaceui.Tpo" "$(DEPDIR)/tora-tostoragetablespaceui.Po"; else rm -f "$(DEPDIR)/tora-tostoragetablespaceui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostoragetablespaceui.cpp' object='tora-tostoragetablespaceui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostoragetablespaceui.o `test -f 'tostoragetablespaceui.cpp' || echo '$(srcdir)/'`tostoragetablespaceui.cpp
+
+tora-tostoragetablespaceui.obj: tostoragetablespaceui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostoragetablespaceui.obj -MD -MP -MF "$(DEPDIR)/tora-tostoragetablespaceui.Tpo" -c -o tora-tostoragetablespaceui.obj `if test -f 'tostoragetablespaceui.cpp'; then $(CYGPATH_W) 'tostoragetablespaceui.cpp'; else $(CYGPATH_W) '$(srcdir)/tostoragetablespaceui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostoragetablespaceui.Tpo" "$(DEPDIR)/tora-tostoragetablespaceui.Po"; else rm -f "$(DEPDIR)/tora-tostoragetablespaceui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostoragetablespaceui.cpp' object='tora-tostoragetablespaceui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostoragetablespaceui.obj `if test -f 'tostoragetablespaceui.cpp'; then $(CYGPATH_W) 'tostoragetablespaceui.cpp'; else $(CYGPATH_W) '$(srcdir)/tostoragetablespaceui.cpp'; fi`
+
+tora-tostoragedefinitionui.o: tostoragedefinitionui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostoragedefinitionui.o -MD -MP -MF "$(DEPDIR)/tora-tostoragedefinitionui.Tpo" -c -o tora-tostoragedefinitionui.o `test -f 'tostoragedefinitionui.cpp' || echo '$(srcdir)/'`tostoragedefinitionui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostoragedefinitionui.Tpo" "$(DEPDIR)/tora-tostoragedefinitionui.Po"; else rm -f "$(DEPDIR)/tora-tostoragedefinitionui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostoragedefinitionui.cpp' object='tora-tostoragedefinitionui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostoragedefinitionui.o `test -f 'tostoragedefinitionui.cpp' || echo '$(srcdir)/'`tostoragedefinitionui.cpp
+
+tora-tostoragedefinitionui.obj: tostoragedefinitionui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tostoragedefinitionui.obj -MD -MP -MF "$(DEPDIR)/tora-tostoragedefinitionui.Tpo" -c -o tora-tostoragedefinitionui.obj `if test -f 'tostoragedefinitionui.cpp'; then $(CYGPATH_W) 'tostoragedefinitionui.cpp'; else $(CYGPATH_W) '$(srcdir)/tostoragedefinitionui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tostoragedefinitionui.Tpo" "$(DEPDIR)/tora-tostoragedefinitionui.Po"; else rm -f "$(DEPDIR)/tora-tostoragedefinitionui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tostoragedefinitionui.cpp' object='tora-tostoragedefinitionui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tostoragedefinitionui.obj `if test -f 'tostoragedefinitionui.cpp'; then $(CYGPATH_W) 'tostoragedefinitionui.cpp'; else $(CYGPATH_W) '$(srcdir)/tostoragedefinitionui.cpp'; fi`
+
+tora-totemplateaddfileui.o: totemplateaddfileui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemplateaddfileui.o -MD -MP -MF "$(DEPDIR)/tora-totemplateaddfileui.Tpo" -c -o tora-totemplateaddfileui.o `test -f 'totemplateaddfileui.cpp' || echo '$(srcdir)/'`totemplateaddfileui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemplateaddfileui.Tpo" "$(DEPDIR)/tora-totemplateaddfileui.Po"; else rm -f "$(DEPDIR)/tora-totemplateaddfileui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemplateaddfileui.cpp' object='tora-totemplateaddfileui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemplateaddfileui.o `test -f 'totemplateaddfileui.cpp' || echo '$(srcdir)/'`totemplateaddfileui.cpp
+
+tora-totemplateaddfileui.obj: totemplateaddfileui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemplateaddfileui.obj -MD -MP -MF "$(DEPDIR)/tora-totemplateaddfileui.Tpo" -c -o tora-totemplateaddfileui.obj `if test -f 'totemplateaddfileui.cpp'; then $(CYGPATH_W) 'totemplateaddfileui.cpp'; else $(CYGPATH_W) '$(srcdir)/totemplateaddfileui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemplateaddfileui.Tpo" "$(DEPDIR)/tora-totemplateaddfileui.Po"; else rm -f "$(DEPDIR)/tora-totemplateaddfileui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemplateaddfileui.cpp' object='tora-totemplateaddfileui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemplateaddfileui.obj `if test -f 'totemplateaddfileui.cpp'; then $(CYGPATH_W) 'totemplateaddfileui.cpp'; else $(CYGPATH_W) '$(srcdir)/totemplateaddfileui.cpp'; fi`
+
+tora-totemplateeditui.o: totemplateeditui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemplateeditui.o -MD -MP -MF "$(DEPDIR)/tora-totemplateeditui.Tpo" -c -o tora-totemplateeditui.o `test -f 'totemplateeditui.cpp' || echo '$(srcdir)/'`totemplateeditui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemplateeditui.Tpo" "$(DEPDIR)/tora-totemplateeditui.Po"; else rm -f "$(DEPDIR)/tora-totemplateeditui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemplateeditui.cpp' object='tora-totemplateeditui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemplateeditui.o `test -f 'totemplateeditui.cpp' || echo '$(srcdir)/'`totemplateeditui.cpp
+
+tora-totemplateeditui.obj: totemplateeditui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemplateeditui.obj -MD -MP -MF "$(DEPDIR)/tora-totemplateeditui.Tpo" -c -o tora-totemplateeditui.obj `if test -f 'totemplateeditui.cpp'; then $(CYGPATH_W) 'totemplateeditui.cpp'; else $(CYGPATH_W) '$(srcdir)/totemplateeditui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemplateeditui.Tpo" "$(DEPDIR)/tora-totemplateeditui.Po"; else rm -f "$(DEPDIR)/tora-totemplateeditui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemplateeditui.cpp' object='tora-totemplateeditui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemplateeditui.obj `if test -f 'totemplateeditui.cpp'; then $(CYGPATH_W) 'totemplateeditui.cpp'; else $(CYGPATH_W) '$(srcdir)/totemplateeditui.cpp'; fi`
+
+tora-totemplatesetupui.o: totemplatesetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemplatesetupui.o -MD -MP -MF "$(DEPDIR)/tora-totemplatesetupui.Tpo" -c -o tora-totemplatesetupui.o `test -f 'totemplatesetupui.cpp' || echo '$(srcdir)/'`totemplatesetupui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemplatesetupui.Tpo" "$(DEPDIR)/tora-totemplatesetupui.Po"; else rm -f "$(DEPDIR)/tora-totemplatesetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemplatesetupui.cpp' object='tora-totemplatesetupui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemplatesetupui.o `test -f 'totemplatesetupui.cpp' || echo '$(srcdir)/'`totemplatesetupui.cpp
+
+tora-totemplatesetupui.obj: totemplatesetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totemplatesetupui.obj -MD -MP -MF "$(DEPDIR)/tora-totemplatesetupui.Tpo" -c -o tora-totemplatesetupui.obj `if test -f 'totemplatesetupui.cpp'; then $(CYGPATH_W) 'totemplatesetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/totemplatesetupui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totemplatesetupui.Tpo" "$(DEPDIR)/tora-totemplatesetupui.Po"; else rm -f "$(DEPDIR)/tora-totemplatesetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totemplatesetupui.cpp' object='tora-totemplatesetupui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totemplatesetupui.obj `if test -f 'totemplatesetupui.cpp'; then $(CYGPATH_W) 'totemplatesetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/totemplatesetupui.cpp'; fi`
+
+tora-totuningoverviewui.o: totuningoverviewui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totuningoverviewui.o -MD -MP -MF "$(DEPDIR)/tora-totuningoverviewui.Tpo" -c -o tora-totuningoverviewui.o `test -f 'totuningoverviewui.cpp' || echo '$(srcdir)/'`totuningoverviewui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totuningoverviewui.Tpo" "$(DEPDIR)/tora-totuningoverviewui.Po"; else rm -f "$(DEPDIR)/tora-totuningoverviewui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totuningoverviewui.cpp' object='tora-totuningoverviewui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totuningoverviewui.o `test -f 'totuningoverviewui.cpp' || echo '$(srcdir)/'`totuningoverviewui.cpp
+
+tora-totuningoverviewui.obj: totuningoverviewui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totuningoverviewui.obj -MD -MP -MF "$(DEPDIR)/tora-totuningoverviewui.Tpo" -c -o tora-totuningoverviewui.obj `if test -f 'totuningoverviewui.cpp'; then $(CYGPATH_W) 'totuningoverviewui.cpp'; else $(CYGPATH_W) '$(srcdir)/totuningoverviewui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totuningoverviewui.Tpo" "$(DEPDIR)/tora-totuningoverviewui.Po"; else rm -f "$(DEPDIR)/tora-totuningoverviewui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totuningoverviewui.cpp' object='tora-totuningoverviewui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totuningoverviewui.obj `if test -f 'totuningoverviewui.cpp'; then $(CYGPATH_W) 'totuningoverviewui.cpp'; else $(CYGPATH_W) '$(srcdir)/totuningoverviewui.cpp'; fi`
+
+tora-totuningsettingui.o: totuningsettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totuningsettingui.o -MD -MP -MF "$(DEPDIR)/tora-totuningsettingui.Tpo" -c -o tora-totuningsettingui.o `test -f 'totuningsettingui.cpp' || echo '$(srcdir)/'`totuningsettingui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totuningsettingui.Tpo" "$(DEPDIR)/tora-totuningsettingui.Po"; else rm -f "$(DEPDIR)/tora-totuningsettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totuningsettingui.cpp' object='tora-totuningsettingui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totuningsettingui.o `test -f 'totuningsettingui.cpp' || echo '$(srcdir)/'`totuningsettingui.cpp
+
+tora-totuningsettingui.obj: totuningsettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totuningsettingui.obj -MD -MP -MF "$(DEPDIR)/tora-totuningsettingui.Tpo" -c -o tora-totuningsettingui.obj `if test -f 'totuningsettingui.cpp'; then $(CYGPATH_W) 'totuningsettingui.cpp'; else $(CYGPATH_W) '$(srcdir)/totuningsettingui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totuningsettingui.Tpo" "$(DEPDIR)/tora-totuningsettingui.Po"; else rm -f "$(DEPDIR)/tora-totuningsettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totuningsettingui.cpp' object='tora-totuningsettingui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totuningsettingui.obj `if test -f 'totuningsettingui.cpp'; then $(CYGPATH_W) 'totuningsettingui.cpp'; else $(CYGPATH_W) '$(srcdir)/totuningsettingui.cpp'; fi`
+
+tora-tofilesize.o: tofilesize.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tofilesize.o -MD -MP -MF "$(DEPDIR)/tora-tofilesize.Tpo" -c -o tora-tofilesize.o `test -f 'tofilesize.cpp' || echo '$(srcdir)/'`tofilesize.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tofilesize.Tpo" "$(DEPDIR)/tora-tofilesize.Po"; else rm -f "$(DEPDIR)/tora-tofilesize.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tofilesize.cpp' object='tora-tofilesize.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tofilesize.o `test -f 'tofilesize.cpp' || echo '$(srcdir)/'`tofilesize.cpp
+
+tora-tofilesize.obj: tofilesize.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tofilesize.obj -MD -MP -MF "$(DEPDIR)/tora-tofilesize.Tpo" -c -o tora-tofilesize.obj `if test -f 'tofilesize.cpp'; then $(CYGPATH_W) 'tofilesize.cpp'; else $(CYGPATH_W) '$(srcdir)/tofilesize.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tofilesize.Tpo" "$(DEPDIR)/tora-tofilesize.Po"; else rm -f "$(DEPDIR)/tora-tofilesize.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tofilesize.cpp' object='tora-tofilesize.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tofilesize.obj `if test -f 'tofilesize.cpp'; then $(CYGPATH_W) 'tofilesize.cpp'; else $(CYGPATH_W) '$(srcdir)/tofilesize.cpp'; fi`
+
+tora-tosgastatement.o: tosgastatement.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosgastatement.o -MD -MP -MF "$(DEPDIR)/tora-tosgastatement.Tpo" -c -o tora-tosgastatement.o `test -f 'tosgastatement.cpp' || echo '$(srcdir)/'`tosgastatement.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosgastatement.Tpo" "$(DEPDIR)/tora-tosgastatement.Po"; else rm -f "$(DEPDIR)/tora-tosgastatement.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosgastatement.cpp' object='tora-tosgastatement.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosgastatement.o `test -f 'tosgastatement.cpp' || echo '$(srcdir)/'`tosgastatement.cpp
+
+tora-tosgastatement.obj: tosgastatement.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tosgastatement.obj -MD -MP -MF "$(DEPDIR)/tora-tosgastatement.Tpo" -c -o tora-tosgastatement.obj `if test -f 'tosgastatement.cpp'; then $(CYGPATH_W) 'tosgastatement.cpp'; else $(CYGPATH_W) '$(srcdir)/tosgastatement.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tosgastatement.Tpo" "$(DEPDIR)/tora-tosgastatement.Po"; else rm -f "$(DEPDIR)/tora-tosgastatement.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tosgastatement.cpp' object='tora-tosgastatement.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tosgastatement.obj `if test -f 'tosgastatement.cpp'; then $(CYGPATH_W) 'tosgastatement.cpp'; else $(CYGPATH_W) '$(srcdir)/tosgastatement.cpp'; fi`
+
+tora-totableselect.o: totableselect.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totableselect.o -MD -MP -MF "$(DEPDIR)/tora-totableselect.Tpo" -c -o tora-totableselect.o `test -f 'totableselect.cpp' || echo '$(srcdir)/'`totableselect.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totableselect.Tpo" "$(DEPDIR)/tora-totableselect.Po"; else rm -f "$(DEPDIR)/tora-totableselect.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totableselect.cpp' object='tora-totableselect.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totableselect.o `test -f 'totableselect.cpp' || echo '$(srcdir)/'`totableselect.cpp
+
+tora-totableselect.obj: totableselect.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-totableselect.obj -MD -MP -MF "$(DEPDIR)/tora-totableselect.Tpo" -c -o tora-totableselect.obj `if test -f 'totableselect.cpp'; then $(CYGPATH_W) 'totableselect.cpp'; else $(CYGPATH_W) '$(srcdir)/totableselect.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-totableselect.Tpo" "$(DEPDIR)/tora-totableselect.Po"; else rm -f "$(DEPDIR)/tora-totableselect.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='totableselect.cpp' object='tora-totableselect.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-totableselect.obj `if test -f 'totableselect.cpp'; then $(CYGPATH_W) 'totableselect.cpp'; else $(CYGPATH_W) '$(srcdir)/totableselect.cpp'; fi`
+
+tora-tovisualize.o: tovisualize.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tovisualize.o -MD -MP -MF "$(DEPDIR)/tora-tovisualize.Tpo" -c -o tora-tovisualize.o `test -f 'tovisualize.cpp' || echo '$(srcdir)/'`tovisualize.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tovisualize.Tpo" "$(DEPDIR)/tora-tovisualize.Po"; else rm -f "$(DEPDIR)/tora-tovisualize.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tovisualize.cpp' object='tora-tovisualize.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tovisualize.o `test -f 'tovisualize.cpp' || echo '$(srcdir)/'`tovisualize.cpp
+
+tora-tovisualize.obj: tovisualize.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tovisualize.obj -MD -MP -MF "$(DEPDIR)/tora-tovisualize.Tpo" -c -o tora-tovisualize.obj `if test -f 'tovisualize.cpp'; then $(CYGPATH_W) 'tovisualize.cpp'; else $(CYGPATH_W) '$(srcdir)/tovisualize.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tovisualize.Tpo" "$(DEPDIR)/tora-tovisualize.Po"; else rm -f "$(DEPDIR)/tora-tovisualize.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tovisualize.cpp' object='tora-tovisualize.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tovisualize.obj `if test -f 'tovisualize.cpp'; then $(CYGPATH_W) 'tovisualize.cpp'; else $(CYGPATH_W) '$(srcdir)/tovisualize.cpp'; fi`
+
+tora-towaitevents.o: towaitevents.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-towaitevents.o -MD -MP -MF "$(DEPDIR)/tora-towaitevents.Tpo" -c -o tora-towaitevents.o `test -f 'towaitevents.cpp' || echo '$(srcdir)/'`towaitevents.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-towaitevents.Tpo" "$(DEPDIR)/tora-towaitevents.Po"; else rm -f "$(DEPDIR)/tora-towaitevents.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='towaitevents.cpp' object='tora-towaitevents.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-towaitevents.o `test -f 'towaitevents.cpp' || echo '$(srcdir)/'`towaitevents.cpp
+
+tora-towaitevents.obj: towaitevents.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-towaitevents.obj -MD -MP -MF "$(DEPDIR)/tora-towaitevents.Tpo" -c -o tora-towaitevents.obj `if test -f 'towaitevents.cpp'; then $(CYGPATH_W) 'towaitevents.cpp'; else $(CYGPATH_W) '$(srcdir)/towaitevents.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-towaitevents.Tpo" "$(DEPDIR)/tora-towaitevents.Po"; else rm -f "$(DEPDIR)/tora-towaitevents.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='towaitevents.cpp' object='tora-towaitevents.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-towaitevents.obj `if test -f 'towaitevents.cpp'; then $(CYGPATH_W) 'towaitevents.cpp'; else $(CYGPATH_W) '$(srcdir)/towaitevents.cpp'; fi`
+
+tora-toworksheetsetupui.o: toworksheetsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toworksheetsetupui.o -MD -MP -MF "$(DEPDIR)/tora-toworksheetsetupui.Tpo" -c -o tora-toworksheetsetupui.o `test -f 'toworksheetsetupui.cpp' || echo '$(srcdir)/'`toworksheetsetupui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toworksheetsetupui.Tpo" "$(DEPDIR)/tora-toworksheetsetupui.Po"; else rm -f "$(DEPDIR)/tora-toworksheetsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toworksheetsetupui.cpp' object='tora-toworksheetsetupui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toworksheetsetupui.o `test -f 'toworksheetsetupui.cpp' || echo '$(srcdir)/'`toworksheetsetupui.cpp
+
+tora-toworksheetsetupui.obj: toworksheetsetupui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-toworksheetsetupui.obj -MD -MP -MF "$(DEPDIR)/tora-toworksheetsetupui.Tpo" -c -o tora-toworksheetsetupui.obj `if test -f 'toworksheetsetupui.cpp'; then $(CYGPATH_W) 'toworksheetsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/toworksheetsetupui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-toworksheetsetupui.Tpo" "$(DEPDIR)/tora-toworksheetsetupui.Po"; else rm -f "$(DEPDIR)/tora-toworksheetsetupui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='toworksheetsetupui.cpp' object='tora-toworksheetsetupui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-toworksheetsetupui.obj `if test -f 'toworksheetsetupui.cpp'; then $(CYGPATH_W) 'toworksheetsetupui.cpp'; else $(CYGPATH_W) '$(srcdir)/toworksheetsetupui.cpp'; fi`
+
+tora-tooracleconnection.o: tooracleconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tooracleconnection.o -MD -MP -MF "$(DEPDIR)/tora-tooracleconnection.Tpo" -c -o tora-tooracleconnection.o `test -f 'tooracleconnection.cpp' || echo '$(srcdir)/'`tooracleconnection.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tooracleconnection.Tpo" "$(DEPDIR)/tora-tooracleconnection.Po"; else rm -f "$(DEPDIR)/tora-tooracleconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooracleconnection.cpp' object='tora-tooracleconnection.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tooracleconnection.o `test -f 'tooracleconnection.cpp' || echo '$(srcdir)/'`tooracleconnection.cpp
+
+tora-tooracleconnection.obj: tooracleconnection.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tooracleconnection.obj -MD -MP -MF "$(DEPDIR)/tora-tooracleconnection.Tpo" -c -o tora-tooracleconnection.obj `if test -f 'tooracleconnection.cpp'; then $(CYGPATH_W) 'tooracleconnection.cpp'; else $(CYGPATH_W) '$(srcdir)/tooracleconnection.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tooracleconnection.Tpo" "$(DEPDIR)/tora-tooracleconnection.Po"; else rm -f "$(DEPDIR)/tora-tooracleconnection.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooracleconnection.cpp' object='tora-tooracleconnection.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tooracleconnection.obj `if test -f 'tooracleconnection.cpp'; then $(CYGPATH_W) 'tooracleconnection.cpp'; else $(CYGPATH_W) '$(srcdir)/tooracleconnection.cpp'; fi`
+
+tora-tooracleextract.o: tooracleextract.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tooracleextract.o -MD -MP -MF "$(DEPDIR)/tora-tooracleextract.Tpo" -c -o tora-tooracleextract.o `test -f 'tooracleextract.cpp' || echo '$(srcdir)/'`tooracleextract.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tooracleextract.Tpo" "$(DEPDIR)/tora-tooracleextract.Po"; else rm -f "$(DEPDIR)/tora-tooracleextract.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooracleextract.cpp' object='tora-tooracleextract.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tooracleextract.o `test -f 'tooracleextract.cpp' || echo '$(srcdir)/'`tooracleextract.cpp
+
+tora-tooracleextract.obj: tooracleextract.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tooracleextract.obj -MD -MP -MF "$(DEPDIR)/tora-tooracleextract.Tpo" -c -o tora-tooracleextract.obj `if test -f 'tooracleextract.cpp'; then $(CYGPATH_W) 'tooracleextract.cpp'; else $(CYGPATH_W) '$(srcdir)/tooracleextract.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tooracleextract.Tpo" "$(DEPDIR)/tora-tooracleextract.Po"; else rm -f "$(DEPDIR)/tora-tooracleextract.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooracleextract.cpp' object='tora-tooracleextract.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tooracleextract.obj `if test -f 'tooracleextract.cpp'; then $(CYGPATH_W) 'tooracleextract.cpp'; else $(CYGPATH_W) '$(srcdir)/tooracleextract.cpp'; fi`
+
+tora-tooraclesettingui.o: tooraclesettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tooraclesettingui.o -MD -MP -MF "$(DEPDIR)/tora-tooraclesettingui.Tpo" -c -o tora-tooraclesettingui.o `test -f 'tooraclesettingui.cpp' || echo '$(srcdir)/'`tooraclesettingui.cpp; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tooraclesettingui.Tpo" "$(DEPDIR)/tora-tooraclesettingui.Po"; else rm -f "$(DEPDIR)/tora-tooraclesettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooraclesettingui.cpp' object='tora-tooraclesettingui.o' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tooraclesettingui.o `test -f 'tooraclesettingui.cpp' || echo '$(srcdir)/'`tooraclesettingui.cpp
+
+tora-tooraclesettingui.obj: tooraclesettingui.cpp
+ at am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -MT tora-tooraclesettingui.obj -MD -MP -MF "$(DEPDIR)/tora-tooraclesettingui.Tpo" -c -o tora-tooraclesettingui.obj `if test -f 'tooraclesettingui.cpp'; then $(CYGPATH_W) 'tooraclesettingui.cpp'; else $(CYGPATH_W) '$(srcdir)/tooraclesettingui.cpp'; fi`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/tora-tooraclesettingui.Tpo" "$(DEPDIR)/tora-tooraclesettingui.Po"; else rm -f "$(DEPDIR)/tora-tooraclesettingui.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='tooraclesettingui.cpp' object='tora-tooraclesettingui.obj' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(tora_CXXFLAGS) $(CXXFLAGS) -c -o tora-tooraclesettingui.obj `if test -f 'tooraclesettingui.cpp'; then $(CYGPATH_W) 'tooraclesettingui.cpp'; else $(CYGPATH_W) '$(srcdir)/tooraclesettingui.cpp'; fi`
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	$(mkdir_p) $(distdir)/i18n
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
+check-am: all-am
+check: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) check-am
+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS)
+install-binPROGRAMS: install-libLTLIBRARIES
+
+installdirs:
+	for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: $(BUILT_SOURCES)
+	$(MAKE) $(AM_MAKEFLAGS) install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
+	clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+	@$(NORMAL_INSTALL)
+	$(MAKE) $(AM_MAKEFLAGS) install-data-hook
+
+install-exec-am: install-binPROGRAMS install-libLTLIBRARIES
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am \
+	uninstall-libLTLIBRARIES
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic clean-libLTLIBRARIES clean-libtool clean-local \
+	ctags dist-hook distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-binPROGRAMS \
+	install-data install-data-am install-data-hook install-exec \
+	install-exec-am install-info install-info-am \
+	install-libLTLIBRARIES install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-binPROGRAMS \
+	uninstall-info-am uninstall-libLTLIBRARIES
+
+
+# this is a hack (but it *is* mentioned in the automake manual, of all
+# places). EXTRA_DIST includes all files, even things like CVS
+# folders. so we delete them here. but specifying all the files in
+# those subdirs would suck more because many of them are generated
+# (help api for one).
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+
+.ui.h:
+	$(UIC) -o $@ $<
+
+%.cpp: %.h %.ui
+	$(UIC) -o $@ -i $^
+
+.h.moc:
+	$(MOC) -o $@ $<
+
+.ts.qm:
+	@if ! test -d i18n; then mkdir i18n; echo "create i18n"; fi
+	$(LRELEASE) $< -qm $@ 
+
+clean-local:
+	rm -f *.moc
+	for file in `ls *.ui`; do \
+		rm -f `echo $$file | sed 's/\.ui/\.cpp/g'`; \
+		rm -f `echo $$file | sed 's/\.ui/\.h/g'`; \
+	done
+
+tora_toad.h: i18n/tora_toad.qm
+	$(top_builddir)/utils/chex/chex $< > $@
+
+tora.pro: Makefile.am
+	echo "# Not indended to be used for anything except lupdate" > tora.pro
+	echo 'SOURCES=	\ ' >> tora.pro
+	echo '	main.cpp \ ' >> tora.pro
+	echo '	toextratranslations.cpp \ ' >> tora.pro
+	echo "	$(tora_SOURCES)" >> tora.pro
+	echo 'TRANSLATIONS=$(TRANSLATIONS)' >> tora.pro
+
+lupdate: tora.pro
+	$(LUPDATE) tora.pro
+
+lrelease: tora.pro $(TRANSLATIONS)
+	$(LRELEASE) tora.pro
+
+install-data-hook:
+	cp -f $(top_builddir)/src/i18n/*.qm $(DESTDIR)$(libdir)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: kde-extras/tora/branches/upstream/current/src/i18n/tora_fr.ts
===================================================================
--- kde-extras/tora/branches/upstream/current/src/i18n/tora_fr.ts	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/i18n/tora_fr.ts	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,10347 @@
+<!DOCTYPE TS><TS>
+<context>
+    <name>main</name>
+    <message>
+        <source>Loaded plugin %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unhandled exception</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown type</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toAbout</name>
+    <message>
+        <source>Quotes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>GNU General Public License</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>End User License</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toAboutUI</name>
+    <message>
+        <source>toAboutUI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toAlert</name>
+    <message>
+        <source>Alert Messenger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Registered</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Register current</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove registered</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Message</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit message in memo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Send alert</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to start polling thread, try closing some other tools and restart Alert Messenger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Add name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Remove name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit &amp;name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit &amp;message</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Message in memo...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Send alert</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Alert</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Alert|Add Name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Backspace</source>
+        <comment>Alert|Remove name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+N</source>
+        <comment>Alert|Edit name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+M</source>
+        <comment>Alert|Message</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <comment>Alert|Message in memo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Alert|Send alert</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toAnalyze</name>
+    <message>
+        <source>Analyze</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statistics Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not analyzed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Analyzed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Indexes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Compute statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Estimate statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Validate references</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>for</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Indexed columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Local indexes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start analyzing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stop current run</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Explain plans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Worksheet statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Running %1 Pending %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Analyze table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Optimize table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Statistics|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toAttachDock</name>
+    <message>
+        <source>Unknown dock position</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Main widget not KDockMainWindow</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBackground</name>
+    <message>
+        <source>%1 queries running in background.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>One query running in background.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No background queries.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBackup</name>
+    <message>
+        <source>Backup Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Logswitches per day and hour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Redo Switches</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Archived Logs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Backup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Backup Progress</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Backup Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This appears to be a cold backup database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This appears to be a hot backup database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Backup|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:CurrentBackup</name>
+    <message>
+        <source>% Complete</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Context</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serial#</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>So Far</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Total</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:LastBackup</name>
+    <message>
+        <source>Bytes Written</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Checkpoint Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ckpt Change#</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Completion Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Level</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Logically Corrupt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Media Crpt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mrkd Crpt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:LogHistory</name>
+    <message>
+        <source>Controlfile Recid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Controlfile Stamp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Highest Scn</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Lowest  Scn</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sequence#</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Thread#</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time Of First Entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:LogSwitches</name>
+    <message>
+        <source>00</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>01</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>02</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>03</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>04</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>05</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>06</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>07</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>08</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>09</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>10</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>11</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>12</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>13</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>14</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>15</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>16</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>17</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>18</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>19</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>20</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>21</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>22</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>23</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Date</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBarChart</name>
+    <message>
+        <source>Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser</name>
+    <message>
+        <source>No schemas</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DB Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update from DB</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Define the object filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove any object filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>T&amp;ables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create new table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify table columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify constraints</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify indexes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Indexes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>C&amp;onstraints</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Grants</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Triggers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Data</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Views</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>De&amp;pendencies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Inde&amp;xes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Se&amp;quences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>S&amp;ynonyms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cod&amp;e</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Declaration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>B&amp;ody</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tri&amp;ggers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>C&amp;ode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Change Schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change &amp;Object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Define filter...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Clear filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Data</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Indexes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Constraints</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Grants</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dependencies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Views</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sequences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Code</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Synonyms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Define the object filter for database browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove any object filter for database browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable constraint or trigger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disable constraint or trigger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statistic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Partitions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Statistic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Browser|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>Browser|Change Schema</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+N</source>
+        <comment>Browser|Change object</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+G</source>
+        <comment>Browser|Define filter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <comment>Browser|Clear filter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:AnyGrants</name>
+    <message>
+        <source>Grantable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Grantee</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Grantor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Privilege</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:IndexCols</name>
+    <message>
+        <source>Column Length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Column Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Descend</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:IndexInformation</name>
+    <message>
+        <source>Avg Data Blocks Per Key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Avg Leaf Blocks Per Key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Blevel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Buffer Pool</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Clustering Factor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Compression</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Degree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Distinct Keys</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Domidx Opstatus</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Domidx Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Duration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Freelist Groups</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Freelists</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Funcidx Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Generated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Global Stats</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include Column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Index Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Index Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ini Trans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Initial Extent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Instances</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ityp Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ityp Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Join Index</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Analyzed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Leaf Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max Trans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Min Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next Extent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Num Rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parameters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Partitioned</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pct Direct Access</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pct Free</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pct Increase</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pct Threshold</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Prefix Length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Secondary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Uniqueness</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User Stats</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListCode</name>
+    <message>
+        <source>Object Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListIndex</name>
+    <message>
+        <source>Index Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListSequence</name>
+    <message>
+        <source>Sequence Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListSynonym</name>
+    <message>
+        <source>Synonym Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListTables</name>
+    <message>
+        <source>Table Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListTrigger</name>
+    <message>
+        <source>Trigger Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListView</name>
+    <message>
+        <source>View Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:SequenceInformation</name>
+    <message>
+        <source>Cache Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cycle Flag</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Increment By</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Min Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Order Flag</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sequence Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sequence Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:SynonymInformation</name>
+    <message>
+        <source>Db Link</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Synonym Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TableInformation</name>
+    <message>
+        <source>Avg Row Len</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Avg Space Freelist Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Avg Space</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Backed Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Buffer Pool</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chain Cnt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cluster Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cluster Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Degree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dependencies</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Duration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Empty Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Freelist Groups</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Freelists</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Global Stats</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ini Trans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Initial Extent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Instances</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Iot Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Iot Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Analyzed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max Trans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Min Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Monitoring</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Nested</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next Extent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Num Freelist Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Num Rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Partitioned</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pct Free</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pct Increase</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pct Used</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Row Movement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Secondary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Skip Corrupt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Lock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User Stats</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TableTrigger</name>
+    <message>
+        <source>Column Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trigger Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Triggering Event</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TriggerCols</name>
+    <message>
+        <source>Column Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>In Update</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Usage</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TriggerInfo</name>
+    <message>
+        <source>Action Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Base Object Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Column Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Referencing Names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trigger Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Trigger Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Triggering Event</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>When Clause</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserConstraintUI</name>
+    <message>
+        <source>Constraint info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display SQL to create this constraint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>C&amp;ondition</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>C&amp;heck</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Primary key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unique</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Primary key/Unique</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refers &amp;To</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>R&amp;efered columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Referential</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Apply</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserFilterUI</name>
+    <message>
+        <source>Filter setting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filter on name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;No filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Start with</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object name start with</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;End with</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object name ends in</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Contains</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object name contains</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;RegExp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object name matches RegExp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Comma list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Comma separated list of object names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filter on tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include &amp;All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Include</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Exclude</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Only display own schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ignore &amp;Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Invert selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserIndexUI</name>
+    <message>
+        <source>Index name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display SQL to create this constraint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Normal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Primary key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unique</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bitmap</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserTable</name>
+    <message>
+        <source>Performing table changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Executing table change script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancelled ongoing table modification, table might be corrupt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Datatype</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extra parameters</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserTableUI</name>
+    <message>
+        <source>Table columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display SQL to create this constraint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>C&amp;omment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Extra declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Parallel declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Storage declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Custom column declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChangeConnection</name>
+    <message>
+        <source>Change the connection of the tool.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find selected connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find parent connection. Internal error.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartAlarm</name>
+    <message>
+        <source>Email</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartAlarmUI</name>
+    <message>
+        <source>Chart alarm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Any</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sum</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Average</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Min</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statusmessage</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Email</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ignore</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>=</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>!=</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;=</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&gt;=</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Operation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Operation to perform on the selected columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Value to use in comparison.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Comparison</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>What comparison to do with the result from the above operation.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Action</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>What to do when alarm is triggered.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remember this alarm when restarting.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartHandler</name>
+    <message>
+        <source>ALARM:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TOra alert:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>A defined alert value was detected:
+
+%1
+
+At: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alarms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartManager</name>
+    <message>
+        <source>Chart Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open tracker file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Setup chart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tracking</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alarms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Chart Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Initial value didn&apos;t start with &quot; in CSV file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Missing closing &quot; in CSV file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chart format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select format of the chart to display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Barchart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Linechart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Chart Manager|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartSetup</name>
+    <message>
+        <source>Charts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartSetupUI</name>
+    <message>
+        <source>Chart manager setup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Track chart to file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable tracking</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alarms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Add</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remember to track this chart to this file always when starting.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartTool</name>
+    <message>
+        <source>Chart Manager...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chart Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toCheckLicense</name>
+    <message>
+        <source>Welcome to TOra</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>(Personal license, not for commerical use)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>(Commercial license one user)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>(Commerical site license)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>(Commercial license %1 users)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Welcome to TOra (Unregistered version, not for commercial use)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toConnection</name>
+    <message>
+        <source>All tool widgets need to have autodelete flag set</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not done caching objects, can not clear unread cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Waiting for object caching to be completed.
+Canceling this dialog will probably leave some list of
+database objects empty.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Waiting for object cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not done caching objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object %1 not available for %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parse only not implemented for this type of connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toConnectionProvider</name>
+    <message>
+        <source>Tried to fetch unknown provider %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toCurrent</name>
+    <message>
+        <source>Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Privilege</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Grantable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Privileges</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parameters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Resource Limits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Current session|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toCurrent:ResourceLimit</name>
+    <message>
+        <source>Current Utilization</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Initial Allocation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Limit Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max Utilization</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Resource Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toCurrent:Version</name>
+    <message>
+        <source>Version</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toCurrentTool</name>
+    <message>
+        <source>Couldn&apos;t find parent tool. Internal error.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDatabaseSetting</name>
+    <message>
+        <source>Invalid values</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Doesn&apos;t make sense to have max content less than initial
+fetch size. Will adjust value to be higher.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDatabaseSettingUI</name>
+    <message>
+        <source>toDatabaseSettingUI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Autocommit changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify if changes should be automatically commited.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>UI feedback settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Abort long running queries and reexecute in own connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reexecute a query taking more than 30 seconds in its own connection to prevent blocking other database access.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move to own connection after</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Let the background queries normally running on the main connection run in a separate connection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Don&apos;t reread data if parameters are exactly same</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Query settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Maximum size &amp;display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The largest default size of a column in query results.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Initial rows to fetch in query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The number of rows to always fetch when executing a query.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Initially read in content editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of rows to initially start reading in content editor, use unlimited on slow connections.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Indicate empty values as &apos;&apos; instead of NULL as {null}.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start read object cache when needed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Read object cache on connect</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Never read object cache until mandatory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Run UI blocking queries exclusively in main connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Keep alive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Make sure connections are kept alive by periodically (5 minutes) sending a query on all idle connections.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Never read object cache (Will leave parts of application nonfunctianal)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>If checked will not refresh a result if it is reexecuted exactly the same two times in a row.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dataformat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The way numbers should be presented.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Decimals</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of decimals for fixed decimal format.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Scientific</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Fixed decimal</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDatatype</name>
+    <message>
+        <source>&lt;B&gt;(&lt;/B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;B&gt;,&lt;/B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;B&gt;)&lt;/B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebug</name>
+    <message>
+        <source>Expected function or procedure, internal error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unexpected end of declaration.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Input</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find any function or procedure under cursor.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Returning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to get runtime info (Reason %1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[Count %1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>{Unavailable}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DEFERED</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No running target</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Debugger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update object list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Clean sheet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rescan source</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Compile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stop running</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Step into procedure or function</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Step over procedure or function</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Return from procedure or function</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show/hide debug info pane.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to next error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to previous error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Toggle breakpoint on current line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable/disable breakpoint on current line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add new variable watch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete variable watch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change value of watched variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Contents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Stack Trace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Data</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>W&amp;atch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Breakpoints</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Content</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Parameters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Debug &amp;Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Runtime Log</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to start target task thread, close some other tools and try again</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t start debugging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t connect to target session:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stop execution?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Do you want to abort the current execution?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Compile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Discard changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;New Sheet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>S&amp;can Source</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Stop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Step &amp;Into</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Next Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Return From</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Debug Pane</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next &amp;Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pre&amp;vious Error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Toggle Breakpoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>D&amp;isable Breakpoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Add Watch...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete &amp;Watch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chan&amp;ge Watch...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh Object List</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select Schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Erase Runtime &amp;Log</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Debug</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter new value to the watch %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unimplemented in PL/SQL debug interface</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Assignment failed (Reason %1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DISABLED</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ENABLED</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Can not enable breakpoint, not a valid line. Perhaps needs to recompile.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Can not enable breakpoint, not a valid object. Perhaps needs to compile.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>NOT SET</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to remove breakpoint (Reason %1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> body</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>{No debug info}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute or continue execution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 changed. Continuing will discard uncompiled or saved changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F9</source>
+        <comment>Debug|Scan source</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F9</source>
+        <comment>Debug|Compile</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>CloseAll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Execute or continue</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Debug|Execute</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F12</source>
+        <comment>Debug|Stop</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F7</source>
+        <comment>Debug|Step into</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F8</source>
+        <comment>Debug|Stop over</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F6</source>
+        <comment>Debug|Return from</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F11</source>
+        <comment>Debug|Debug pane</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+N</source>
+        <comment>Debug|Next error</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+P</source>
+        <comment>Debug|Previous error</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F5</source>
+        <comment>Debug|Toggle breakpoint</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F6</source>
+        <comment>Debug|Disable breakpoint</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Debug|Add watch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Delete</source>
+        <comment>Debug|Delete watch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F4</source>
+        <comment>Debug|Change watch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Debug|Refresh objectlist</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>Debug|Select schema</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebugChangeUI</name>
+    <message>
+        <source>Change value of watch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Index</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebugOutput</name>
+    <message>
+        <source>Couldn&apos;t enable/disable output for session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebugText</name>
+    <message>
+        <source>Invalid start of code</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebugWatch</name>
+    <message>
+        <source>Can&apos;t parse location</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebugWatchUI</name>
+    <message>
+        <source>Add variable watch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Variable name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Variable name to watch.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Scope</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Local</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Currently running scope.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The scope of the file in the body editor.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Global</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Global scope of variable.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Autodetect</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Package</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toEditExtensionGotoUI</name>
+    <message>
+        <source>Go to line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Line Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toEditExtensionSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Right align keywords in each statement.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insert a &amp;newline after each block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Place THEN, LOOP, AS and IS on new line at b&amp;eginning of new block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Place &amp;comma on new line before item instead of after on same line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Expand spaces to tabs when indenting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Transform spaces to tabs whenever posible when indenting.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Put spaces around operators</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Insert extra spaces between operators.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Transform keywords to &amp;uppercase</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Indentation level</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Same line comment column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Example</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Auto indent read only SQL text editors</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toEditExtensionTool</name>
+    <message>
+        <source>Forward</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Backward</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Incremental Search</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Obfuscate Selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Obfuscate Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Auto Indent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Indent Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>De-indent Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Indent block in editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>De-indent block in editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Upper</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Lower</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <comment>Edit|Incremental search forward</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+R</source>
+        <comment>Edit|Incremental search backward</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+I</source>
+        <comment>Edit|Indent selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+Shift+I</source>
+        <comment>Edit|Indent editor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+U</source>
+        <comment>Edit|Uppercase</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <comment>Edit|Lowercase</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Right</source>
+        <comment>Edit|Indent block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Left</source>
+        <comment>Edit|De-indent block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Goto Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toExtract</name>
+    <message>
+        <source>Failed to extract owner and name from (%1), internal error %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>CREATE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Creating create script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Creating script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Creating script was cancelled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, missing : in object description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Creating description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Describe was cancelled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to describe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Describe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DROP</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Creating drop script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Creating drop script was cancelled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to drop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drop script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid describe context (&lt;3 parts) &quot;%1&quot;)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object list not available in migration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>MIGRATE</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Creating migration script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to migrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Migration script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>REM This DDL was reverse engineered by
+REM TOra, Version %1
+REM
+REM at:   %2
+REM from: %3, an %4 %5 database
+REM
+REM on:   %6
+REM
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>REM Generating free space report for:
+REM</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>REM Generating %1 statement for:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Error in toExtract
+Operation:      %1
+Object:         %2
+Error:          %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Malformed resize string (Should contain multiple of 3 number of &apos;:&apos;)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>More than one definition for column %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Same kind of definition existing more than once for column %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toGetSessionType</name>
+    <message>
+        <source>Failed to find style match</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toGlobalSettingUI</name>
+    <message>
+        <source>toGlobalSettingUI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Paths</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Custom SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Plugin directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Help directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Save passwords</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remember the last password you used to connect.
+Will leave the password unencryptet in the config file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include DB in caption</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include database connection in window captions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change current connection with active window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change currently select connection to the connection of the new active window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Connect history</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of connections to save in history.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Message history</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of status messages to save in the message history.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Status &amp;message</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The time in seconds temporary messages will be displayed in the status bar. 0 menas keep.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display alerts in statusbar only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display alerts in messagebar instead of poping up a dialog with a warning.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tools toolbar on left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start using the tools toolbar on the left of the main window instead of at the top.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Maximize window on start</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore session on startup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Desktop aware</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Colors get really weird in KDE if you select this.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Antialiase fonts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Docks use toolbars</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check this if docks are to use toolbars instead of normal frames.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Style</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The style to use for the user interface.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Size Unit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tab delimited</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>CSV</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>HTML</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default list format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default refreshtime in tools.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chart samples</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of samples to keep in line and barcharts by default.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save unlimited number of samples. Can large amounts of consume memory.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display samples</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of samples to display in line and barcharts by default.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display all available samples</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check for upgrades on startup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check the TOra webpage for upgrades to the program. Does not send any information about the users computer or TOra installation.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Translation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Which translation locale to use for this program. Must restart to have effect.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Cache directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use Disk Caching</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use Disk Caching of ObjectLists and Synonyms</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Directory where to find plugins when starting.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Directory where to place cached dataaseinformation.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Directory where to find help files.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default session to use when saving a session.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use antialiase fonts if Qt supports this. You need to restart for this to take affect.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Define the unit sizes should be displayed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHelp</name>
+    <message>
+        <source>Help Navigation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Contents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All manuals</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Manual</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Backward one help page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Forward one help page</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TOra manual</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Missing parent, unbalanced dl in help file content</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Help window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <comment>Dialog|Help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHelpAddFileUI</name>
+    <message>
+        <source>Add help directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Canel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Table of contents file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Title</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHelpPrefs</name>
+    <message>
+        <source>File error</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHelpSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add manuals from an Oracle index page.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add manuals from an Oracle index page. This is the index page that links to the actual manuals. Not the master index page that links to different categories of manuals.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Add Manual</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Remove Manual</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Oracle Manuals</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHighlightedText</name>
+    <message>
+        <source>Ctrl+T</source>
+        <comment>Edit|Table lookup</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHtml</name>
+    <message>
+        <source>Invalidly went beyond end of file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reading HTML after eof</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Lone &lt; at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unended tag at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unended tag qualifier at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unended tag qualifier data at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unended quoted string at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unended qualifier data at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exceded qualifier max in toHtml</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tried to access string out of bounds in mid (start=%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tried to access string out of bounds in mid (size=%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tried to access string out of bounds in mid (total=%1+%2&gt;%3)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toImport</name>
+    <message>
+        <source>Import &amp; Export</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t load codec %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Supplied more than one parameter for field function</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Need parameter for column (%1) but none specified</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Inserted %1 rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tried to define same field twice</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not mapped</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Field %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid input, non space character between delimiter that is not separator</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toImportUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Operation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Export</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Fileformat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Fixed width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delimiter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>,</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Separator</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Variable width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Define filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include column names as first row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File codec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ignore lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Commit distance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Column mapping</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toInvalid</name>
+    <message>
+        <source>Invalid Objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Invalid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Recompiling all invalid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Recompile selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Invalid|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toInvalid:ListInvalid</name>
+    <message>
+        <source>Object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toKeyPath</name>
+    <message>
+        <source>Couldn&apos;t find \ in path</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toKeyValue</name>
+    <message>
+        <source>Couldn&apos;t find \ in path</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toLicense</name>
+    <message>
+        <source>Register</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Continue</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not a valid license key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Please check your name and registration key?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Really quit?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Are you sure you want to quit?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toLicenseUI</name>
+    <message>
+        <source>This version of TOra is unregistered.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Registration key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toLineChart</name>
+    <message>
+        <source>Zoom</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Print...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Open in new window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Chart Manager...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Properties...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Clear Chart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enabled charts</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toLineChartSetupUI</name>
+    <message>
+        <source>Chart setup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of samples to keep</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Y-axis</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Min value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Auto detect</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show last value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show axis legend</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show chart legend</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Maximum number of samples to display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Divide chart in grids?</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toListView</name>
+    <message>
+        <source>Page: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Printing page %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Done printing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display in editor...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Copy field</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy selection with header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy transposed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export to file...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit SQL...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alignment</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toLock</name>
+    <message>
+        <source>The mutex function &quot;%1&quot; failed</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toLogOutput</name>
+    <message>
+        <source>SQL Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Log4PL/SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMain</name>
+    <message>
+        <source>&amp;New Connection...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Close Connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Commit Connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Rollback Connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>C&amp;urrent Connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stop All Queries</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reread Object Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Open File...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save A&amp;s...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save Session...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restore Last Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Print...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Quit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Redo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cu&amp;t</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Copy</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Paste</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Search &amp;&amp; Replace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Search &amp;Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select &amp;All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Read All &amp;Items</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Options...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Application</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Load file into editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save file from editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Print</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cut to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Paste from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Search &amp; replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>C&amp;urrent Context...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Contents...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;License...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Quotes...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Register...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Connections</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Connect to database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disconnect current connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Commit connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rollback connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stop all running queries on connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Tools</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>C&amp;lose</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close &amp;All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Cascade</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Tile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check for upgrades?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Do you want TOra to automatically check
+http://tora.sourceforge.net for updates on startup?
+During this check no information about your computer
+including TOra version is transmitted to the site</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>First connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Can&apos;t find active connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Commit work in session to %1  before closing it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Commit work?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find specified connectionts (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Row:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Col:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid session file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The session file is not valid, can&apos;t read it.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Input password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter password for %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You can enable this through the Global Settings in the Options (Edit menu)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>A new version of TOra (%1) is available from
+
+http://tora.sourceforge.net</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Message flood, temporary disabling of message box error reporting from now on.
+Restart to reenable. You probably have a too high refreshrate in some tool.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <comment>File|New connection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <comment>File|File open</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <comment>File|File save</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+C</source>
+        <comment>File|Commit</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <comment>File|Stop all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+&lt;</source>
+        <comment>File|Rollback</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+U</source>
+        <comment>File|Current connection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Insert</source>
+        <comment>Edit|Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift+Delete</source>
+        <comment>Edit|Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift+Insert</source>
+        <comment>Edit|Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+A</source>
+        <comment>Edit|Select all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <comment>Edit|Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <comment>Edit|Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+X</source>
+        <comment>Edit|Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+C</source>
+        <comment>Edit|Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+V</source>
+        <comment>Edit|Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <comment>Edit|Search</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F3</source>
+        <comment>Edit|Search next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <comment>Help|Help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMarkedText</name>
+    <message>
+        <source>Printing page %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Done printing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Page: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File opened successfully</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save changes?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The editor has been changed, do you want to save them
+before opening a new file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Incremental search</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+A</source>
+        <comment>Edit|Select All</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMemoEditor</name>
+    <message>
+        <source>Memo Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cut to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy to clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Paste from clipboard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>First column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Previous column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Memo Editor|Save changes</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMessageUI</name>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display alerts in statusbar only.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display alerts in messagebar instead of poping up a dialog with a warning.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Warning message</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMySQLExtract</name>
+    <message>
+        <source>Expected block from show create table for %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, couldn&apos;t parse ALTER TABLE clause</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to describe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to drop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to migrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toNewConnection</name>
+    <message>
+        <source>Provider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Host</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Username</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No connection provider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No available connection provider, plugins probably missing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unable to connect to the database.
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unable to connect to the database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter password to use for connection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toNewConnectionUI</name>
+    <message>
+        <source>New connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Previous connections</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>A list of previous connections. Select to bring over to the right.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Username</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Username to connect with</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Password to connect with.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Connection provider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use &amp;SQL*Net</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wether or not connect using the listener or directly to a local database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Connection Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mode of the connection. If you don&apos;t understand select normal.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select the database ID to connect to.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Host</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toNoBlockQuery</name>
+    <message>
+        <source>Unknown exception</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reading past end of query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to start background query thread</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Restarting query in own connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toNow</name>
+    <message>
+        <source>Unexpected error</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toOracleConnection</name>
+    <message>
+        <source>Password expired</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter new password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter password again for confirmation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The two passwords doesn&apos;t match</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toOracleExtract</name>
+    <message>
+        <source>Couldn&apos;t find source for of %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Displaying source of wrong type for %1. Got %2 expected 0.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>-- Context indexes can be quite complicated depending upon the
+-- used parameters. The following is an attempt to recreate this
+-- context index. But, a close scrutiny of the following code is
+-- strongly recommended.
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find primary key of %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find materialised table %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find log %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find index partitions for %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find partition range %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, result should be 18 in segment attributes (Was %1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, result should be 18 in segment attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Constraint %1.%2 doesn&apos;t exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DBLink %1.%2 doesn&apos;t exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exchange index %1.%2 doesn&apos;t exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exchange table %1.%2 doesn&apos;t exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find index %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find profile %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find role %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find sequence %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find synonym %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find table %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find tablespace %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find trigger %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find user %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find view %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find constraint %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Missing ON description item on index</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find any COLUMN on index</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to describe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to drop</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toOracleSettingUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Default date format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The default dateformat to use when querying the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Checkpoint name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The name of the checkpoint used when needed to rollback work.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Max long and LOB data length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max length to read from LOB or LONG data fields. LONG:s can not be specified unlimited but will be defaulted to 33000 if unlimited.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create Table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Explain plan table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name of the table to put explain plan output in.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Keep plans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Keep records for the plan explanations in the plan table.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Maximum cursors to keep open</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toOutput</name>
+    <message>
+        <source>SQL Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Poll for output now</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable or disable getting SQL output.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Clear output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output enabled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t enable/disable output for session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Output|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Output|Enable</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Backspace</source>
+        <comment>Output|Clear output</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Output|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toOutputPrefs</name>
+    <message>
+        <source>SQL Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Polling timeout</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time between trying to poll for output.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default &amp;source</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Log4PL/SQL &amp;User</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toParamGet</name>
+    <message>
+        <source>Define binding variables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Missing field name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>NULL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Aborted execution</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toPasswordTool</name>
+    <message>
+        <source>Enter new password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter new password again for confirmation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Passwords doesn&apos;t match</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The two givens passwords doesn&apos;t match, please try again</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toPieChart</name>
+    <message>
+        <source>&amp;Print...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Open in new window</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All values are 0 in this chart</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toPreferences</name>
+    <message>
+        <source>Global Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Editor Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Database Settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toPreferencesUI</name>
+    <message>
+        <source>Preferences</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toProfiler</name>
+    <message>
+        <source>PL/SQL Profiler</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Repeat run</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Comment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Run profiling in background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute current profiling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Profiler tables doesn&apos;t exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Profiler tables doesn&apos;t exist. Should TOra
+try to create them in the current schema?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select run</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 runs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Something went wrong collecting statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toProject</name>
+    <message>
+        <source>SQL Project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add file to project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove file from project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add new subproject</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Generate SQL for this project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move up in project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move down in project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>untitled.tpr</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>
+
+-- Start of project %1
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>
+
+-- Start of file %1
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toQValue</name>
+    <message>
+        <source>Unknown type of query value</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toQuery</name>
+    <message>
+        <source>Query aborted</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toReadFile</name>
+    <message>
+        <source>Couldn&apos;t open file %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Encountered problems read configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t download file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRefreshCreate</name>
+    <message>
+        <source>None</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>2 seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>5 seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>10 seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>30 seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>1 min</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>5 min</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>10 min</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRefreshParse</name>
+    <message>
+        <source>Unknown timer value</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toReport</name>
+    <message>
+        <source>&lt;H4&gt;COLUMNS&lt;/H4&gt;
+&lt;TABLE WIDTH=100% BORDER=0&gt;&lt;TR&gt;&lt;TH ALIGN=left WIDTH=25%&gt;Name&lt;/TH&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;TH ALIGN=left WIDTH=25%&gt;Definition&lt;/TH&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;TH ALIGN=left WIDTH=50%&gt;Description&lt;/TH&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Report on database %7&lt;/TITLE&gt;&lt;/HEAD&gt;
+&lt;BODY&gt;&lt;H1&gt;Report on database %8&lt;/H1&gt;
+&lt;TABLE BORDER=0&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;Generated by:&lt;/TD&gt;&lt;TD VALIGN=top&gt;TOra, Version %1&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;At:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%2&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;From:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%3, an %4 %5 database&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;On:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%6&lt;/TD&gt;&lt;/TR&gt;
+&lt;/TABLE&gt;
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;H1&gt;Global Objects&lt;/H1&gt;
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;H1&gt;Public&lt;/H1&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;H1&gt;Schema %1&lt;/H1&gt;
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultBar</name>
+    <message>
+        <source>Edit SQL...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultCols</name>
+    <message>
+        <source>Default value: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Distinct values: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Low value: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>High value: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Density: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of nulls: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of histogram buckets: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last analyzed: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample size: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Average column size: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;/B&gt; synonym for &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>(Object cache not ready)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultCols::resultCols</name>
+    <message>
+        <source>Column Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Data Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Comments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description of %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to describe %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultConstraint</name>
+    <message>
+        <source>Constraint Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Condition</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete Rule</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Generated</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultContent</name>
+    <message>
+        <source>Content editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Define filter for editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove any filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add a new record</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Discard changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete current record from table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to first row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to previous row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to next row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Go to last row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Toggle between table or single record editing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove the filter for this table only or for all tables.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;This</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Duplicate an existing record</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultContentEditor</name>
+    <message>
+        <source>&amp;Display in editor...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Copy field</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Paste field</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy selection with header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy transposed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Delete record</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Export to file...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Read all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Can&apos;t use these on toResultContent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unsaved data in contents, select other row to store</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reading all values, moving cursor to end when done</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit cancelled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This table contains only LOB/LONG columns and can not be edited</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Saved row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Content of %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultContentFilterUI</name>
+    <message>
+        <source>Content editor filter settings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Selection &amp;criteria</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Selection criteria to use getting items to edit. Same as after where in a select clause.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sort &amp;order. Separate columns with comma.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The sort order to use when retreiving data from the database.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table &amp;columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Available column names in table.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use for all tables</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultContentSingle</name>
+    <message>
+        <source>Edit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, save different row than current in content editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultDepend</name>
+    <message>
+        <source>Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dependency</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultExtract</name>
+    <message>
+        <source>Object not found</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultIndexes</name>
+    <message>
+        <source>Index Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unique</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultLine</name>
+    <message>
+        <source>Edit SQL...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultListFormat</name>
+    <message>
+        <source>Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tab delimited</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>CSV</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>HTML</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultListFormatUI</name>
+    <message>
+        <source>Choose format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Choose format of exported file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Separator</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delimiter</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultLock</name>
+    <message>
+        <source>Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Osuser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Program</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Request</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Grabbed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Requested</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultLong</name>
+    <message>
+        <source>Will not reexecute same query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 rows processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Query executed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statement executed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Can only hide last column in query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultObject</name>
+    <message>
+        <source>Internal error, toResult is not a descendant of toResult</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultParam</name>
+    <message>
+        <source>Parameter editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display hidden parameters. This will only word if you are logged in as the sys user.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Generate pfile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Apply changes to system</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Apply changes to session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drop current changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source># Generated by TOra version %1
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultParam:ListParam</name>
+    <message>
+        <source>Changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parameter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultPlan</name>
+    <message>
+        <source>Operation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cost</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bytes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cardinality</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Plan table doesn&apos;t exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specified plan table %1 didn&apos;t exist.
+Should TOra try to create it?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultReferences</name>
+    <message>
+        <source>Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Constraint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Condition</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete Rule</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>foreign key (%1) references %2.%3(%4)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DEPENDENCY</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultResources:Information</name>
+    <message>
+        <source>Buffer Gets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disk Reads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Executions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>First Load Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalidations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Kept Versions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Loaded Versions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Loads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open Versions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Optimizer Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parsing Schema Id</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parsing User Id</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent Mem</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rows Processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Runtime Mem</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serializable Aborts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sharable Mem</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sorts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Users Executing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Users Opening</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultStats</name>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delta</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Can&apos;t change session on system statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultStorage</name>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Contents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Size (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Free (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Autoextend (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Used/Free/Autoextend</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Coalesced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max free (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Free fragments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>toResultStorage</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find tablespace parent %1 for datafile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No tablespace selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Weird, empty tablespace name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No file selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultView</name>
+    <message>
+        <source>Can only hide last column in query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reading all entries</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Read All</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRollback</name>
+    <message>
+        <source>Rollback analyzer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update segment list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Take segment online</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Take segment offline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create new rollback segment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drop segment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open Cursors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Transaction Users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Online</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Offline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create segment...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Rollback</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No segment selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drop rollback segment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Are you sure you want to drop the segment %1.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Drop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable snapshot too old detection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Rollback|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Rollback|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRollback:Information</name>
+    <message>
+        <source>Block</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Current (MB)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Current</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hitrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Initial (MB)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next (MB)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Optimal (MB)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>PCT Increase</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Segment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Transactions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Used (MB)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRollback:TransactionUsers</name>
+    <message>
+        <source>Oracle User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Os User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rollback Seg</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Session ID</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackDialog</name>
+    <message>
+        <source>Storage</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackDialogUI</name>
+    <message>
+        <source>Modify tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display the SQL used to generate the specified object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Public</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>If this should be a publicly available rollback segment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rollback Segment</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackOpen</name>
+    <message>
+        <source>Started</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Snapshot</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackPrefs</name>
+    <message>
+        <source>Rollback Tool</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Restart reexecuted statements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start statements again that have been reexecuted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Must read buffers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Don&apos;t display statements that have not read buffers.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Exclude first appearance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>A statement must be visible at least two consecutive polls to be displayed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Disregard start extent.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Always start from the left border when displaying extent usage.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Enable snapshot too old detection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable snapshot too old detection, will put load on large databases.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSGAStatement</name>
+    <message>
+        <source>Couldn&apos;t find SQL statement in SGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execution plan</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSGATrace</name>
+    <message>
+        <source>SGA trace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Fetch statements in SGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Any</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Long operations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unfinished</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top executions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top sorts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top diskreads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top buffergets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top sorts/exec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top diskreads/exec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top buffergets/exec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top rows/exec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top buffers/row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change &amp;schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change &amp;refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change t&amp;ype</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;SGA Trace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown type of trace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unfinished is only available for long operations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>1 execution, 1 parse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>SGA Trace|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>SGA Trace|Change schema</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>SGA Trace|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Y</source>
+        <comment>SGA Trace|Change type</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSGATracePrefs</name>
+    <message>
+        <source>SGA Trace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Auto update</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update automatically after change of schema.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSMTP</name>
+    <message>
+        <source>Connecting to %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Connected to %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Message sent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unexpected reply from SMTP server:
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSQL</name>
+    <message>
+        <source>Tried to get unknown SQL (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Malformed tag in config file. Missing = on row.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Malformed line in SQL dictionary file. Two &apos;[&apos; before &apos;=&apos;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown escape character in string (Only \\ and \n recognised)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL Dictionary</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSQLEdit</name>
+    <message>
+        <source>SQL editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Load SQL dictionary file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save modified SQL to dictionary file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save this entry in the dictionary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete this version from the SQL dictionary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start new SQL definition</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Text Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Database</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wrong format of version</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Should be database provider:version.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Should be database provider:version. Can&apos;t start with :.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Should be database provider:version. Can&apos;t end with the first :.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Missing description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No description filled in. This is necessary to save SQL. Adding undescribed as description.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Undescribed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modified SQL dictionary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save changes into the SQL dictionary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSQLEditTool</name>
+    <message>
+        <source>&amp;Edit SQL...</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSQLString</name>
+    <message>
+        <source>SQL Address not found in SGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSQLToAddress</name>
+    <message>
+        <source>SQL Query not found in SGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSQLparse</name>
+    <message>
+        <source>Unbalanced parenthesis (Too many &apos;)&apos;)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unbalanced parenthesis (Too many &apos;(&apos;)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error in toSQLParse, should never get here</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSaveFilename</name>
+    <message>
+        <source>File open password</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toScript</name>
+    <message>
+        <source>Extraction and Compare</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Perform defined extraction</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Search result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dropped</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Initial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Limit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No mode selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Destination shouldn&apos;t be enabled now, internal error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, lastLevel &lt; 0</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Replacing existing size with new</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Same</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No filename specified</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Error writing to file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>-- Script generated to file %1 successfully</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rem Master script for DDL reverse engineering by TOra
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>-- Scripts generate to directory %1 successfully</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toScriptUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Source</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Include objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Destination</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Compare</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Compare two databases or schemas</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extract</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extract script to recreate database objects.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include code specification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include storage specification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include content of tables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include parallel specification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include partition specification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Same</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Generated schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select the schema to generate in script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include indexes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Generate prompts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Generate prompts to display progress in SQLPlus</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include comments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Generate header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Generate header at the top of the script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include grants</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include constraints</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include DDL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Migrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create database scripts to convert schema or database from source to destination</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Report</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Search</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Contain any words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Contain all words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>RegExp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exact match</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Configuration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Script Resize</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Don&apos;t resize</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Auto resize</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Custom resize</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Limit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Initial</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Add</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Remove</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Resize</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Difference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output tab</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output dir</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Commit distance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The number of insertstatements to make between each commit (0 means whole table)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output to directory so that each object is placed in a different file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSearchReplace</name>
+    <message>
+        <source>No more matches found</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <comment>Search|Help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+R</source>
+        <comment>Edit|Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSearchReplaceUI</name>
+    <message>
+        <source>Search &amp; Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Search Top</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Search &amp;Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Replace &amp;All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exact</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Match text exactly as written</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Match Word</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Only match whole words</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ignore Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>RegExp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use RegExp semantics for matching (See Qt documentation)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurity</name>
+    <message>
+        <source>Security manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update user and role list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove user/role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add new user</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add new role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy current user or role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display SQL needed to make current changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Users/Roles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;General</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Roles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;System Privileges</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Object Privileges</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Quota</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Save changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Remove user/role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add &amp;user</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add &amp;role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Copy current</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display SQL...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Security</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save changes?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save the changes made to this user?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid security ID</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Roles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Are you sure?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The user still owns objects, add the cascade option?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Security|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Security|Save changes</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+U</source>
+        <comment>Security|Add user</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+R</source>
+        <comment>Security|Add role</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+O</source>
+        <comment>Security|Copy current</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Security|Display SQL</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityObject</name>
+    <message>
+        <source>Object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Admin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ON</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityQuota</name>
+    <message>
+        <source>None</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityQuotaUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Quota Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Used Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Unlimited</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;None</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Belongs to Resource group or has unlimited tablespace privilege</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityRole</name>
+    <message>
+        <source>Passwords don&apos;t match</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The two versions of the password doesn&apos;t match</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Don&apos;t save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityRoleGrant</name>
+    <message>
+        <source>Role name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Admin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ON</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>YES</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityRoleUI</name>
+    <message>
+        <source>Form2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Confirm Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Role authenticated by the operating system</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;External</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Role authenticated globally</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Global</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No password required for role</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecuritySystem</name>
+    <message>
+        <source>Privilege name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Admin</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ON</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>NO</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityUser</name>
+    <message>
+        <source>Passwords don&apos;t match</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The two versions of the password doesn&apos;t match</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Don&apos;t save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityUserUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>P&amp;rofile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Confirm Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Expire Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Password</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User authenticated by the operating system</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;External</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;X.500 External Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Global</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Temporary Tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Account Locked</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Default Tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSemaphore</name>
+    <message>
+        <source>The semaphore function &quot;%1&quot; failed</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSession</name>
+    <message>
+        <source>Session manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update sessionlist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No system</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable timed statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disable timed statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disconnect selected session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Session wait states</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Session I/O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wait events</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Connect Info</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pending Locks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Locked Objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Current Statement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Accessing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Previous Statement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open Cursors</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disconnect session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No access to timed statistics flags</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Let current transaction finish before disconnecting session?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Commit work?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Only active users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exclude selected sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select all sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deselect all sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Long ops</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Session|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Session|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSession:AccessedObjects</name>
+    <message>
+        <source>OBJECT</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>OWNER</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TYPE</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSession:ConnectInfo</name>
+    <message>
+        <source>Authentication Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Network Service Banner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Osuser</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSession:LockedObject</name>
+    <message>
+        <source>Locked Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSession:OpenCursor</name>
+    <message>
+        <source>SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSession:SessionIO</name>
+    <message>
+        <source>Block changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Block gets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Consistent changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Consistent gets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Physical reads</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSession:SessionWait</name>
+    <message>
+        <source>CPU</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Control File I/O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DB File Read</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DB File Write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DB Single File Read</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Direct I/O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Log file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Other</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel execution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL*Net</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Write Complete</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSessionMySQL</name>
+    <message>
+        <source>Session manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update sessionlist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Only active users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Kill selected session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exclude selected sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select all sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deselect all sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Session MySQL|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Kill session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Session MySQL|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSetSessionType</name>
+    <message>
+        <source>Failed to find style %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSplash</name>
+    <message>
+        <source>Loading plugins</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorage</name>
+    <message>
+        <source>Storage manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show extent view.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show tablespaces or just datafiles.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Take tablespace online</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Take tablespace offline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Set tablespace default to logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Set tablespace default to no logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Allow read write access to tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Set tablespace to read only</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create new tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add datafile to tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Coalesce tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move datafile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Partition</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace online</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace offline</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default not logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Read write access</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Read only access</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify tablespace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify datafile...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>New tablespace...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add datafile...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move datafile...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Storage</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select mode to take tablespace %1 offline.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Normal</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Storage|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDatafile</name>
+    <message>
+        <source>Create datafile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Maximum size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No name available</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDatafileUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Tablespace name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Filename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Auto extend</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Auto extend datafile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Unlimited max size</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDefinition</name>
+    <message>
+        <source>&amp;Initial size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Next size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDefinitionUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Optimal allocation of extents. Will free unused extents down to specified value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Maximum extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Maximum number of extents to allocate for an object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Initial size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of extents to initially allocate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Unlimited extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No limit to the number of extents to allocate if needed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Optimal size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;No optimal size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Default PCT increase</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default increase in size of next allocated extent. A size of 0 will prevent background coalesce of free space</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDialog</name>
+    <message>
+        <source>Invalid response from query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add datafile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Datafile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default Storage</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify datafile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid response from query (Wanted 4, got %1 entries) for %2.%3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDialogUI</name>
+    <message>
+        <source>Modify tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display the SQL used to generate the specified object</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tab 2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageExtent</name>
+    <message>
+        <source>Files: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extents: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Blocks: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Blocks/line: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStoragePrefsUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Display coalesced column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display object &amp;extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display object and extent list on startup.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display tablespaces or just datafiles.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display graph of autoextend information instead of just free space.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageTablespace</name>
+    <message>
+        <source>&amp;Minimum Extent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extent &amp;Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageTablespaceUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Should objects created in this tablespace be logging by default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Online</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Should tablespace be online at the time of creation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Permanent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Should objects in this tablespace be permanent after the end of the session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Default storage</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify default storage clause (In separate tab)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Extent allocation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Dictionary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Manage tablespace extents using dictionary tables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Local &amp;autoallocation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Specify how space is allocated in the tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Local &amp;uniform</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The tablespace is locally managed with fixed extent sizes of specified size</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSyntaxAnalyzer</name>
+    <message>
+        <source>Wrong format of color in setings</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown type</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSyntaxSetup</name>
+    <message>
+        <source>Unknown variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown color name %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSyntaxSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Keyword upper</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Convert all keywords to uppercase when displayingsyntaxhighlighted text.  Only available for monospaced fonts.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Code completion</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Activate code completion in SQL editors. Not recommended on slow connections.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Sort completion rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sort the available completion rows alphabetically or in the order the are.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>S&amp;yntax highlighting</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable syntax highlighting, or use simple text editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Indent same as previous line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Indent a new line in an editor to the same column as the previous line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Choose</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>List example</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Code example</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Text example</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filename extensions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sy&amp;ntax components</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Pick</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tab stop width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of character width of tabstops</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplate</name>
+    <message>
+        <source>Not a toTemplate parent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Template Toolbar</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Template</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Template result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, lastLevel &lt; 0</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateAddFileUI</name>
+    <message>
+        <source>Add template file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Canel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Root</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateEdit</name>
+    <message>
+        <source>Internal error, lastLevel &lt; 0</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateEditUI</name>
+    <message>
+        <source>Template editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Template</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Description</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Description text. Can be in HTML format.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Preview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name of the template.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove the current template</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add new template</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview of the description. Press the button to update</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplatePrefs</name>
+    <message>
+        <source>Couldn&apos;t open file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file. Start on new file?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t write file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Root</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Add File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Remove File</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Edit File</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateTool</name>
+    <message>
+        <source>Template</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTemporary</name>
+    <message>
+        <source>Temporary Objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Temporary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Temporary|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toThread</name>
+    <message>
+        <source>Thread function &quot;%1&quot; failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTool</name>
+    <message>
+        <source>Alert Messenger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Backup Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Current Session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DB Extraction/Compare/Search</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid Objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>PL/SQL Debugger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>PL/SQL Profiler</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Password Change</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rollback Segments</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SGA Trace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL Template</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL Worksheet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Schema Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Security Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Server Tuning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statistics Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Storage Manager</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Malformed tag in config file. Missing = on row. (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown escape character in string (Only \\ and \n recognised)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t save empty value at key %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t save %1 value at key %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toToolSettingUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tool</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Default tool</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select the default tool to pop up when opening a new connection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Enabled tools</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select which tools should show up in the menu and toolbar.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You must restart for any of these changes to have effect.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning</name>
+    <message>
+        <source>Enable all tuning statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Are you sure you want to enable all tuning features.
+This can put heavy strain on a database and unless you
+are the DBA you probably don&apos;t want this. Selecting
+no here will give you the option to enable or disable
+tabs individually as they are needed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Server Tuning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable and disable tuning tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Overview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> blocks/s</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wrong format of name on chart (%1).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wait events</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;File I/O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Indicator</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Indicators</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Parameters</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Blocking locks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Library C&amp;ache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Control Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Optio&amp;ns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Licenses</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Tuning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Tuning|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Tuning|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:Charts:4BAClients</name>
+    <message>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Inactive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:Charts:6LNExecution</name>
+    <message>
+        <source>Calls</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Commit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hard parse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rollbacks</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:ControlFileRecords</name>
+    <message>
+        <source>Allocated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Total Records</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Used Records</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Used</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:LibraryCache</name>
+    <message>
+        <source>Get Hits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Gets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Namespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pin Hits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pins</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ratio</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:License</name>
+    <message>
+        <source>Sessions Current</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sessions Highwater</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sessions Max</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sessions Warning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Users Max</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:Options</name>
+    <message>
+        <source>Enabled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parameter</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuningFileIO</name>
+    <message>
+        <source>File I/O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File timing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace I/O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace timing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Blocks Read</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Writes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Blocks Written</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Average</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Minimum</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Maximum Read</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Maximum Write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>blocks/s</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuningOverview</name>
+    <message>
+        <source>&lt; Archive write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>blocks/s</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hitrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt; Client input</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Client output &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Executes &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Log writer &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Buffer changed &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> blocks/s</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt; Buffer gets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parse &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt; Physical read</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Physical write &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Redo entries &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Timescale</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuningOverviewUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Buffer Cache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TextLabel3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Total</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Redo Buffer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shared Pool</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Archive logs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Files/Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Files</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Datafiles</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Used/Total</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespaces</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Redo Logs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Active/Total</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Active group</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Processes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Server</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shared</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dispatchers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parallel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dedicated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Clients</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Active</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>TextLabel5</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Send to client</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Send from client</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuningSettingUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Server tuning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Available tabs</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Enabled background views</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select which views collect data in the background that should be run.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toVisualize</name>
+    <message>
+        <source>Data visualization</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Bar chart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Line chart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pie chart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display legend</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display grid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display axis legend</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Title columns</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of columns to use as title</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update chart</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toWaitEvents</name>
+    <message>
+        <source>Server Tuning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Time</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Count</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wait type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delta (ms/s)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Total (ms)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delta (1/s)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Total</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System wait events</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>ms/s</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>System wait events count</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>waits/s</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, can&apos;t find (%1) in usedMap</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Absolute system wait events
+Total %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delta system wait events
+Total %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheet</name>
+    <message>
+        <source>SQL worksheet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute current statement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute all statements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Step through statements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reexecute Last Statement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Stop execution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>E&amp;xecution plan</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Visualize</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Information</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Worksheet Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save statistics for later analysis</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wait states</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>I/O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>blocks/s</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Timestamp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Duration</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Describe under cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Clear execution log</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Gather session statistic of execution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Run current saved SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save last SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Execute Current</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute &amp;All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute &amp;Next</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute &amp;Newline Separated</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Reexecute Last Statement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Describe Under Cursor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Explain current statement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Enable Statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Stop Execution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute Saved SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select Saved SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit Saved SQL...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Previous Log Entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next Log Entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Erase &amp;Log</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>W&amp;orksheet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save changes to worksheet for %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Wrong number of parameters for describe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ignoring SQL*Plus command</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Processing query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 rows processed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Query executed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Duration while query has been running
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>(Duration %1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Aborted</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No SQL to save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>You haven&apos;t executed any SQL yet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter title</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter the title in the menu of the saved SQL,
+submenues are separated by a &apos;:&apos; character.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Undescribed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No plan available to save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Previous log entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next log entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Executing all statements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter refreshrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh rate of query in seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Worksheet|Execute current</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F8</source>
+        <comment>Worksheet|Execute all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F9</source>
+        <comment>Worksheet|Execute next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift+F9</source>
+        <comment>Worksheet|Execute newline separated</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F7</source>
+        <comment>Worksheet|Execute saved SQL</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Worksheet|Describe under cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Up</source>
+        <comment>Worksheet|Previous log entry</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Down</source>
+        <comment>Worksheet|Next log entry</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Explain plan of current statement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Worksheet|Reexecute last statement</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check syntax of buffer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F3</source>
+        <comment>Worksheet|Explain plan</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+S</source>
+        <comment>Worksheet|Select saved SQL</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parsing all statements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F9</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheetSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Automatically save file when closing worksheet (Without asking any questions).</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL Worksheet</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Auto &amp;save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ask about saving &amp;changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ask about saving changes when closing worksheet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add &amp;log entries at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add newly executed queries at end of log instead of top. Changing this will mess up the log in the windows that are opened.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Multiple lines in log.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display multiple lines in the SQL column of the logging.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Enable statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable statistic collection per default.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable &amp;timed statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable timed statistics as well when collecting normal statistics.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Display number column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add a numbering column to the left of the result.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default &amp;file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File to automatically open in a new worksheet.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move &amp;cursor to error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move the cursor to an error if the error occurs.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save previous results</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Keep previous results in while worksheet is open. Will consume lot of memory.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute directory when selecting in log</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute a statement when it is
+<byte value="x9"/><byte value="x9"/><byte value="x9"/>selected in the log, if disabled simply selected
+<byte value="x9"/><byte value="x9"/><byte value="x9"/>the statement in the log.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheetStatistic</name>
+    <message>
+        <source>Server Tuning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Load statistics from file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save statistics to file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Remove statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display charts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display execution plans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Hide</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheetText</name>
+    <message>
+        <source>Save changes?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The editor has been changed. Do you want to save them,
+discard changes or open file in new worksheet?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Save</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Discard</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;New worksheet</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toWriteFile</name>
+    <message>
+        <source>File error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t write data to tempfile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t upload data to URL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File saved successfully</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file for writing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t write data to file</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+</TS>

Added: kde-extras/tora/branches/upstream/current/src/i18n/tora_it.ts
===================================================================
--- kde-extras/tora/branches/upstream/current/src/i18n/tora_it.ts	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/i18n/tora_it.ts	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,10491 @@
+<!DOCTYPE TS><TS>
+<context>
+    <name>main</name>
+    <message>
+        <source>Loaded plugin %1</source>
+        <translation>Caricato il plugin %1</translation>
+    </message>
+    <message>
+        <source>Unhandled exception</source>
+        <translation>Eccezione non gestita</translation>
+    </message>
+    <message>
+        <source>Exit</source>
+        <translation>Uscita</translation>
+    </message>
+    <message>
+        <source>Unknown type</source>
+        <translation>Tipo sconosciuto</translation>
+    </message>
+</context>
+<context>
+    <name>toAbout</name>
+    <message>
+        <source>Quotes</source>
+        <translation>Citazioni</translation>
+    </message>
+    <message>
+        <source>TOra for Windows License</source>
+        <translation type="obsolete">Licenza di TOra per Windows</translation>
+    </message>
+    <message>
+        <source>GNU General Public License</source>
+        <translation>GNU General Public LIcense</translation>
+    </message>
+    <message>
+        <source>End User License</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toAboutUI</name>
+    <message>
+        <source>toAboutUI</source>
+        <translation>toAboutUI</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+</context>
+<context>
+    <name>toAlert</name>
+    <message>
+        <source>Alert Messenger</source>
+        <translation>Avvisi</translation>
+    </message>
+    <message>
+        <source>Registered</source>
+        <translation>Registrato</translation>
+    </message>
+    <message>
+        <source>Register current</source>
+        <translation>Registra</translation>
+    </message>
+    <message>
+        <source>Remove registered</source>
+        <translation>Elimina</translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation>Nome</translation>
+    </message>
+    <message>
+        <source>Message</source>
+        <translation>Messaggio</translation>
+    </message>
+    <message>
+        <source>Edit message in memo</source>
+        <translation>Modifica messaggio nel memo</translation>
+    </message>
+    <message>
+        <source>Send alert</source>
+        <translation>Invia avviso</translation>
+    </message>
+    <message>
+        <source>Time</source>
+        <translation type="unfinished">Tempo</translation>
+    </message>
+    <message>
+        <source>Failed to start polling thread, try closing some other tools and restart Alert Messenger</source>
+        <translation>Impossibile avviare il monitor, prova a chiudere gli altri tool e a riavviare l&apos;Alert Messenger</translation>
+    </message>
+    <message>
+        <source>&amp;Add name</source>
+        <translation>&amp;Aggiungi nome</translation>
+    </message>
+    <message>
+        <source>&amp;Remove name</source>
+        <translation>&amp;Rimuovi nome</translation>
+    </message>
+    <message>
+        <source>Edit &amp;name</source>
+        <translation>Modifica &amp;nome</translation>
+    </message>
+    <message>
+        <source>Edit &amp;message</source>
+        <translation>Modifica &amp;messaggio</translation>
+    </message>
+    <message>
+        <source>&amp;Message in memo...</source>
+        <translation>&amp;Modifica messaggio nel memo ...</translation>
+    </message>
+    <message>
+        <source>&amp;Send alert</source>
+        <translation>&amp;Invia avviso</translation>
+    </message>
+    <message>
+        <source>&amp;Alert</source>
+        <translation>&amp;Avvisi</translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Alert|Add Name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Backspace</source>
+        <comment>Alert|Remove name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+N</source>
+        <comment>Alert|Edit name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+M</source>
+        <comment>Alert|Message</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <comment>Alert|Message in memo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Alert|Send alert</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toAnalyze</name>
+    <message>
+        <source>Analyze</source>
+        <translation>Analizza</translation>
+    </message>
+    <message>
+        <source>Statistics Manager</source>
+        <translation>Gestione statistiche</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Aggiorna</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Tutto</translation>
+    </message>
+    <message>
+        <source>Not analyzed</source>
+        <translation>Non analizzato</translation>
+    </message>
+    <message>
+        <source>Analyzed</source>
+        <translation>Analizzato</translation>
+    </message>
+    <message>
+        <source>Tables</source>
+        <translation>Tabelle</translation>
+    </message>
+    <message>
+        <source>Indexes</source>
+        <translation>Indici</translation>
+    </message>
+    <message>
+        <source>Compute statistics</source>
+        <translation>Calcola statistiche</translation>
+    </message>
+    <message>
+        <source>Estimate statistics</source>
+        <translation>Stima statistiche</translation>
+    </message>
+    <message>
+        <source>Delete statistics</source>
+        <translation>Cancella statistiche</translation>
+    </message>
+    <message>
+        <source>Validate references</source>
+        <translation>Valida riferimenti</translation>
+    </message>
+    <message>
+        <source>for</source>
+        <translation>per</translation>
+    </message>
+    <message>
+        <source>Table</source>
+        <translation>Tabella</translation>
+    </message>
+    <message>
+        <source>Indexed columns</source>
+        <translation>Colonne indicizzate</translation>
+    </message>
+    <message>
+        <source>Local indexes</source>
+        <translation>Indici locali</translation>
+    </message>
+    <message>
+        <source>Sample</source>
+        <translation>Esempio</translation>
+    </message>
+    <message>
+        <source>%</source>
+        <translation>%</translation>
+    </message>
+    <message>
+        <source>Parallel</source>
+        <translation>Parallelo</translation>
+    </message>
+    <message>
+        <source>Start analyzing</source>
+        <translation>Inizia l&apos;analisi</translation>
+    </message>
+    <message>
+        <source>Stop current run</source>
+        <translation>Interrompi esecuzione</translation>
+    </message>
+    <message>
+        <source>Explain plans</source>
+        <translation>Explain plans</translation>
+    </message>
+    <message>
+        <source>Worksheet statistics</source>
+        <translation>Statistiche per il foglio di lavoro</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>&amp;Statistics</source>
+        <translation>&amp;Statistiche</translation>
+    </message>
+    <message>
+        <source>Running %1 Pending %2</source>
+        <translation>Attive %1 In attesa %2</translation>
+    </message>
+    <message>
+        <source>Display SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Analyze table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Optimize table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Statistics|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toAttachDock</name>
+    <message>
+        <source>Unknown dock position</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Main widget not KDockMainWindow</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBackground</name>
+    <message>
+        <source>%1 queries running in background.</source>
+        <translation>%1 query attive in background.</translation>
+    </message>
+    <message>
+        <source>One query running in background.</source>
+        <translation>Una query in background.</translation>
+    </message>
+    <message>
+        <source>No background queries.</source>
+        <translation>Nessuna query in background.</translation>
+    </message>
+</context>
+<context>
+    <name>toBackup</name>
+    <message>
+        <source>Backup Manager</source>
+        <translation>Gestione backup</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Aggiorna</translation>
+    </message>
+    <message>
+        <source>Logswitches per day and hour</source>
+        <translation>Logswitches per giorno e ora</translation>
+    </message>
+    <message>
+        <source>Redo Switches</source>
+        <translation>Redo Switches</translation>
+    </message>
+    <message>
+        <source>Archived Logs</source>
+        <translation>Archived Logs</translation>
+    </message>
+    <message>
+        <source>Last Backup</source>
+        <translation>Ultimo Backup</translation>
+    </message>
+    <message>
+        <source>Backup Progress</source>
+        <translation>Progresso Backup</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>&amp;Backup Manager</source>
+        <translation>&amp;Gestione backup</translation>
+    </message>
+    <message>
+        <source>This appears to be a cold backup database</source>
+        <translation>Sembra essere un backup a freddo</translation>
+    </message>
+    <message>
+        <source>This appears to be a hot backup database</source>
+        <translation>Sembra essere un backup a caldo</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Backup|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:CurrentBackup</name>
+    <message>
+        <source>% Complete</source>
+        <translation>% completamento</translation>
+    </message>
+    <message>
+        <source>Context</source>
+        <translation>Contesto</translation>
+    </message>
+    <message>
+        <source>Serial#</source>
+        <translation>Numero di serie</translation>
+    </message>
+    <message>
+        <source>Sid</source>
+        <translation>Sid</translation>
+    </message>
+    <message>
+        <source>So Far</source>
+        <translation>Fino ad ora</translation>
+    </message>
+    <message>
+        <source>Total</source>
+        <translation>Totale</translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:LastBackup</name>
+    <message>
+        <source>Bytes Written</source>
+        <translation>Bytes scritti</translation>
+    </message>
+    <message>
+        <source>Checkpoint Time</source>
+        <translation>Intervallo di controllo</translation>
+    </message>
+    <message>
+        <source>Ckpt Change#</source>
+        <translation>Ckpt Canghe#</translation>
+    </message>
+    <message>
+        <source>Completion Time</source>
+        <translation>Tempo di completamento</translation>
+    </message>
+    <message>
+        <source>File Size</source>
+        <translation>Dimensione del file</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Nome file</translation>
+    </message>
+    <message>
+        <source>Level</source>
+        <translation>Livello</translation>
+    </message>
+    <message>
+        <source>Logically Corrupt</source>
+        <translation>Corrotto logicamente</translation>
+    </message>
+    <message>
+        <source>Media Crpt</source>
+        <translation>Media Crpt</translation>
+    </message>
+    <message>
+        <source>Mrkd Crpt</source>
+        <translation>Mrkd Crpt</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:LogHistory</name>
+    <message>
+        <source>Controlfile Recid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Controlfile Stamp</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Highest Scn</source>
+        <translation>Scn Massimo</translation>
+    </message>
+    <message>
+        <source>Lowest  Scn</source>
+        <translation>Scn Minimo</translation>
+    </message>
+    <message>
+        <source>Sequence#</source>
+        <translation>Sequence#</translation>
+    </message>
+    <message>
+        <source>Thread#</source>
+        <translation>Thread#</translation>
+    </message>
+    <message>
+        <source>Time Of First Entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:LogSwitches</name>
+    <message>
+        <source>00</source>
+        <translation>00</translation>
+    </message>
+    <message>
+        <source>01</source>
+        <translation>01</translation>
+    </message>
+    <message>
+        <source>02</source>
+        <translation>02</translation>
+    </message>
+    <message>
+        <source>03</source>
+        <translation>03</translation>
+    </message>
+    <message>
+        <source>04</source>
+        <translation>04</translation>
+    </message>
+    <message>
+        <source>05</source>
+        <translation>05</translation>
+    </message>
+    <message>
+        <source>06</source>
+        <translation>06</translation>
+    </message>
+    <message>
+        <source>07</source>
+        <translation>07</translation>
+    </message>
+    <message>
+        <source>08</source>
+        <translation>08</translation>
+    </message>
+    <message>
+        <source>09</source>
+        <translation>09</translation>
+    </message>
+    <message>
+        <source>10</source>
+        <translation>10</translation>
+    </message>
+    <message>
+        <source>11</source>
+        <translation>11</translation>
+    </message>
+    <message>
+        <source>12</source>
+        <translation>12</translation>
+    </message>
+    <message>
+        <source>13</source>
+        <translation>13</translation>
+    </message>
+    <message>
+        <source>14</source>
+        <translation>14</translation>
+    </message>
+    <message>
+        <source>15</source>
+        <translation>15</translation>
+    </message>
+    <message>
+        <source>16</source>
+        <translation>16</translation>
+    </message>
+    <message>
+        <source>17</source>
+        <translation>17</translation>
+    </message>
+    <message>
+        <source>18</source>
+        <translation>18</translation>
+    </message>
+    <message>
+        <source>19</source>
+        <translation>19</translation>
+    </message>
+    <message>
+        <source>20</source>
+        <translation>20</translation>
+    </message>
+    <message>
+        <source>21</source>
+        <translation>21</translation>
+    </message>
+    <message>
+        <source>22</source>
+        <translation>22</translation>
+    </message>
+    <message>
+        <source>23</source>
+        <translation>23</translation>
+    </message>
+    <message>
+        <source>Date</source>
+        <translation>Data</translation>
+    </message>
+</context>
+<context>
+    <name>toBarChart</name>
+    <message>
+        <source>Zoom</source>
+        <translation>Zoom</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser</name>
+    <message>
+        <source>No schemas</source>
+        <translation>Nessuno schema</translation>
+    </message>
+    <message>
+        <source>DB Browser</source>
+        <translation>DB Browser</translation>
+    </message>
+    <message>
+        <source>Update from DB</source>
+        <translation>Aggiorna dal DB</translation>
+    </message>
+    <message>
+        <source>Define the object filter</source>
+        <translation>Definire filtro su oggetti</translation>
+    </message>
+    <message>
+        <source>Remove any object filter</source>
+        <translation>Rimuovere ogni filtro su oggetti</translation>
+    </message>
+    <message>
+        <source>T&amp;ables</source>
+        <translation>T&amp;abelle</translation>
+    </message>
+    <message>
+        <source>Table browser</source>
+        <translation>Visualizzatore tabelle</translation>
+    </message>
+    <message>
+        <source>Create new table</source>
+        <translation>Crea nuova tabella</translation>
+    </message>
+    <message>
+        <source>Modify table columns</source>
+        <translation>Modifica colonne della tabella</translation>
+    </message>
+    <message>
+        <source>Modify constraints</source>
+        <translation>Modifica constraints</translation>
+    </message>
+    <message>
+        <source>Modify indexes</source>
+        <translation>Modifica indici</translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation>&amp;Colonne</translation>
+    </message>
+    <message>
+        <source>&amp;Indexes</source>
+        <translation>&amp;Indici</translation>
+    </message>
+    <message>
+        <source>C&amp;onstraints</source>
+        <translation>C&amp;onstraints</translation>
+    </message>
+    <message>
+        <source>&amp;References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Grants</source>
+        <translation>&amp;Grants</translation>
+    </message>
+    <message>
+        <source>Triggers</source>
+        <translation>Trigger</translation>
+    </message>
+    <message>
+        <source>&amp;Data</source>
+        <translation>&amp;Dati</translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation>Informazioni</translation>
+    </message>
+    <message>
+        <source>Script</source>
+        <translation>Script</translation>
+    </message>
+    <message>
+        <source>&amp;Views</source>
+        <translation>&amp;Viste</translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation>SQL</translation>
+    </message>
+    <message>
+        <source>De&amp;pendencies</source>
+        <translation>Di&amp;pendenze</translation>
+    </message>
+    <message>
+        <source>Inde&amp;xes</source>
+        <translation>Indi&amp;ci</translation>
+    </message>
+    <message>
+        <source>Info</source>
+        <translation>Info</translation>
+    </message>
+    <message>
+        <source>Se&amp;quences</source>
+        <translation>Se&amp;quenze</translation>
+    </message>
+    <message>
+        <source>S&amp;ynonyms</source>
+        <translation>S&amp;inonimi</translation>
+    </message>
+    <message>
+        <source>Cod&amp;e</source>
+        <translation>Codic&amp;e</translation>
+    </message>
+    <message>
+        <source>&amp;Declaration</source>
+        <translation>&amp;Dichiarazione</translation>
+    </message>
+    <message>
+        <source>B&amp;ody</source>
+        <translation>C&amp;orpo</translation>
+    </message>
+    <message>
+        <source>Tri&amp;ggers</source>
+        <translation>Tri&amp;ggers</translation>
+    </message>
+    <message>
+        <source>C&amp;ode</source>
+        <translation>C&amp;odice</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>&amp;Change Schema</source>
+        <translation>&amp;Cambia Schema</translation>
+    </message>
+    <message>
+        <source>Change &amp;Object</source>
+        <translation>Cambia &amp;Oggetto</translation>
+    </message>
+    <message>
+        <source>&amp;Define filter...</source>
+        <translation>&amp;Definisci un filtro ...</translation>
+    </message>
+    <message>
+        <source>&amp;Clear filter</source>
+        <translation>&amp;Elimina filtri</translation>
+    </message>
+    <message>
+        <source>&amp;Browser</source>
+        <translation>Schema &amp;Browser</translation>
+    </message>
+    <message>
+        <source>Data</source>
+        <translation>Dati</translation>
+    </message>
+    <message>
+        <source>Indexes</source>
+        <translation>Indici</translation>
+    </message>
+    <message>
+        <source>Constraints</source>
+        <translation>Constraints</translation>
+    </message>
+    <message>
+        <source>Tables</source>
+        <translation>Tabelle</translation>
+    </message>
+    <message>
+        <source>Columns</source>
+        <translation>Colonne</translation>
+    </message>
+    <message>
+        <source>References</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Grants</source>
+        <translation>Grants</translation>
+    </message>
+    <message>
+        <source>Dependencies</source>
+        <translation>Dipendenze</translation>
+    </message>
+    <message>
+        <source>Views</source>
+        <translation>Viste</translation>
+    </message>
+    <message>
+        <source>Sequences</source>
+        <translation>Sequenze</translation>
+    </message>
+    <message>
+        <source>Code</source>
+        <translation>Codice</translation>
+    </message>
+    <message>
+        <source>Synonyms</source>
+        <translation>Sinonimi</translation>
+    </message>
+    <message>
+        <source>Define the object filter for database browser</source>
+        <translation>Definisci filtro sugli oggetti per il database browser</translation>
+    </message>
+    <message>
+        <source>Remove any object filter for database browser</source>
+        <translation>Elimina ogni filtro sugli oggetti per il database browser</translation>
+    </message>
+    <message>
+        <source>Extents</source>
+        <translation type="unfinished">Extents</translation>
+    </message>
+    <message>
+        <source>Enable constraint or trigger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disable constraint or trigger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statistic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Partitions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Statistic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Browser|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>Browser|Change Schema</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+N</source>
+        <comment>Browser|Change object</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+G</source>
+        <comment>Browser|Define filter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <comment>Browser|Clear filter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:AnyGrants</name>
+    <message>
+        <source>Grantable</source>
+        <translation>Grant assegnabile</translation>
+    </message>
+    <message>
+        <source>Grantee</source>
+        <translation>Grant assegnata a</translation>
+    </message>
+    <message>
+        <source>Grantor</source>
+        <translation>Grant assegnata da</translation>
+    </message>
+    <message>
+        <source>Privilege</source>
+        <translation>Privilegio</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:IndexCols</name>
+    <message>
+        <source>Column Length</source>
+        <translation>Lunghezza colonna</translation>
+    </message>
+    <message>
+        <source>Column Name</source>
+        <translation>Nome colonna</translation>
+    </message>
+    <message>
+        <source>Descend</source>
+        <translation>Discendente</translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation>Nome tabella</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:IndexInformation</name>
+    <message>
+        <source>Avg Data Blocks Per Key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Avg Leaf Blocks Per Key</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Blevel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Buffer Pool</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Clustering Factor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Compression</source>
+        <translation>Compressione</translation>
+    </message>
+    <message>
+        <source>Degree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Distinct Keys</source>
+        <translation>Chiavi distinte</translation>
+    </message>
+    <message>
+        <source>Domidx Opstatus</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Domidx Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Duration</source>
+        <translation type="unfinished">Durata</translation>
+    </message>
+    <message>
+        <source>Freelist Groups</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Freelists</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Funcidx Status</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Generated</source>
+        <translation type="unfinished">Generato</translation>
+    </message>
+    <message>
+        <source>Global Stats</source>
+        <translation>Statistiche Globali</translation>
+    </message>
+    <message>
+        <source>Include Column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Index Name</source>
+        <translation>Nome indice</translation>
+    </message>
+    <message>
+        <source>Index Type</source>
+        <translation>Tipo Indice</translation>
+    </message>
+    <message>
+        <source>Ini Trans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Initial Extent</source>
+        <translation>Extent iniziale</translation>
+    </message>
+    <message>
+        <source>Instances</source>
+        <translation>Istanze</translation>
+    </message>
+    <message>
+        <source>Ityp Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ityp Owner</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Join Index</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Analyzed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Leaf Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max Trans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Min Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next Extent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Num Rows</source>
+        <translation type="unfinished">Numero di righe</translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation>Proprietario</translation>
+    </message>
+    <message>
+        <source>Parameters</source>
+        <translation>Parametri</translation>
+    </message>
+    <message>
+        <source>Partitioned</source>
+        <translation>Partizionato</translation>
+    </message>
+    <message>
+        <source>Pct Direct Access</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pct Free</source>
+        <translation>Percentuale libera</translation>
+    </message>
+    <message>
+        <source>Pct Increase</source>
+        <translation>Percentuale di incremento</translation>
+    </message>
+    <message>
+        <source>Pct Threshold</source>
+        <translation>Percentuale di soglia</translation>
+    </message>
+    <message>
+        <source>Prefix Length</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Secondary</source>
+        <translation type="unfinished">Secondario</translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation>Stato</translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation>Nome tabella</translation>
+    </message>
+    <message>
+        <source>Table Owner</source>
+        <translation>Proprietario della tabella</translation>
+    </message>
+    <message>
+        <source>Table Type</source>
+        <translation>Tipo Tabella</translation>
+    </message>
+    <message>
+        <source>Tablespace Name</source>
+        <translation>Nome tablespace</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation>Temporaneo</translation>
+    </message>
+    <message>
+        <source>Uniqueness</source>
+        <translation>Unicità</translation>
+    </message>
+    <message>
+        <source>User Stats</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListCode</name>
+    <message>
+        <source>Object Name</source>
+        <translation>Nome oggetto</translation>
+    </message>
+    <message>
+        <source>Object Type</source>
+        <translation>Tipo oggetto</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListIndex</name>
+    <message>
+        <source>Index Name</source>
+        <translation>Nome indice</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListSequence</name>
+    <message>
+        <source>Sequence Name</source>
+        <translation>Nome sequenza</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListSynonym</name>
+    <message>
+        <source>Synonym Name</source>
+        <translation>Nome sinonimo</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListTables</name>
+    <message>
+        <source>Table Name</source>
+        <translation>Nome tabella</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListTrigger</name>
+    <message>
+        <source>Trigger Name</source>
+        <translation>Nome trigger</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListView</name>
+    <message>
+        <source>View Name</source>
+        <translation>Nome vista</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:SequenceInformation</name>
+    <message>
+        <source>Cache Size</source>
+        <translation>Dimensione cache</translation>
+    </message>
+    <message>
+        <source>Cycle Flag</source>
+        <translation>Ciclica</translation>
+    </message>
+    <message>
+        <source>Increment By</source>
+        <translation>Incrementa di</translation>
+    </message>
+    <message>
+        <source>Last Number</source>
+        <translation>Ultimo numero</translation>
+    </message>
+    <message>
+        <source>Max Value</source>
+        <translation>Valore massimo</translation>
+    </message>
+    <message>
+        <source>Min Value</source>
+        <translation>Valore minimo</translation>
+    </message>
+    <message>
+        <source>Order Flag</source>
+        <translation>Ordinata</translation>
+    </message>
+    <message>
+        <source>Sequence Name</source>
+        <translation>Nome sequenza</translation>
+    </message>
+    <message>
+        <source>Sequence Owner</source>
+        <translation>Proprietario della sequenza</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:SynonymInformation</name>
+    <message>
+        <source>Db Link</source>
+        <translation>Db Link</translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation>Proprietario</translation>
+    </message>
+    <message>
+        <source>Synonym Name</source>
+        <translation>Nome sinonimo</translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation>Nome tabella</translation>
+    </message>
+    <message>
+        <source>Table Owner</source>
+        <translation>Proprietario della tabella</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TableInformation</name>
+    <message>
+        <source>Avg Row Len</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Avg Space Freelist Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Avg Space</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Backed Up</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Blocks</source>
+        <translation>Blocchi</translation>
+    </message>
+    <message>
+        <source>Buffer Pool</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>Cache</translation>
+    </message>
+    <message>
+        <source>Chain Cnt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cluster Name</source>
+        <translation>Nome del cluster</translation>
+    </message>
+    <message>
+        <source>Cluster Owner</source>
+        <translation>Proprietario del cluster</translation>
+    </message>
+    <message>
+        <source>Degree</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dependencies</source>
+        <translation>Dipendenze</translation>
+    </message>
+    <message>
+        <source>Duration</source>
+        <translation type="unfinished">Durata</translation>
+    </message>
+    <message>
+        <source>Empty Blocks</source>
+        <translation>Blocchi Vuoti</translation>
+    </message>
+    <message>
+        <source>Freelist Groups</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Freelists</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Global Stats</source>
+        <translation type="unfinished">Statistiche Globali</translation>
+    </message>
+    <message>
+        <source>Ini Trans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Initial Extent</source>
+        <translation>Extent iniziale</translation>
+    </message>
+    <message>
+        <source>Instances</source>
+        <translation>Istanze</translation>
+    </message>
+    <message>
+        <source>Iot Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Iot Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last Analyzed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max Trans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Min Extents</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Monitoring</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Nested</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next Extent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Num Freelist Blocks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Num Rows</source>
+        <translation>Numero di righe</translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation>Proprietario</translation>
+    </message>
+    <message>
+        <source>Partitioned</source>
+        <translation>Partizionato</translation>
+    </message>
+    <message>
+        <source>Pct Free</source>
+        <translation>Percentuale Libera</translation>
+    </message>
+    <message>
+        <source>Pct Increase</source>
+        <translation>Percentuale di Incremento</translation>
+    </message>
+    <message>
+        <source>Pct Used</source>
+        <translation>Percentuale Utilizzata</translation>
+    </message>
+    <message>
+        <source>Row Movement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample Size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Secondary</source>
+        <translation>Secondario</translation>
+    </message>
+    <message>
+        <source>Skip Corrupt</source>
+        <translation>Salta se Corrotto</translation>
+    </message>
+    <message>
+        <source>Table Lock</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation>Nome tabella</translation>
+    </message>
+    <message>
+        <source>Tablespace Name</source>
+        <translation>Nome tablespace</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation>Temporaneo</translation>
+    </message>
+    <message>
+        <source>User Stats</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TableTrigger</name>
+    <message>
+        <source>Column Name</source>
+        <translation>Nome colonna</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descrizione</translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation>Stato</translation>
+    </message>
+    <message>
+        <source>Trigger Name</source>
+        <translation>Nome trigger</translation>
+    </message>
+    <message>
+        <source>Triggering Event</source>
+        <translation>Evento scatenante</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TriggerCols</name>
+    <message>
+        <source>Column Name</source>
+        <translation>Nome colonna</translation>
+    </message>
+    <message>
+        <source>In Update</source>
+        <translation>In aggiornamento</translation>
+    </message>
+    <message>
+        <source>Usage</source>
+        <translation>Utilizzo</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TriggerInfo</name>
+    <message>
+        <source>Action Type</source>
+        <translation>Tipo di azione</translation>
+    </message>
+    <message>
+        <source>Base Object Type</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Column Name</source>
+        <translation>Nome colonna</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descrizione</translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation>Proprietario</translation>
+    </message>
+    <message>
+        <source>Referencing Names</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation>Stato</translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation>Nome tabella</translation>
+    </message>
+    <message>
+        <source>Table Owner</source>
+        <translation>Proprietario della tabella</translation>
+    </message>
+    <message>
+        <source>Trigger Name</source>
+        <translation>Nome trigger</translation>
+    </message>
+    <message>
+        <source>Trigger Type</source>
+        <translation>Tipo Trigger</translation>
+    </message>
+    <message>
+        <source>Triggering Event</source>
+        <translation>Evento scatenante</translation>
+    </message>
+    <message>
+        <source>When Clause</source>
+        <translation>Clausola WHEN</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserConstraintUI</name>
+    <message>
+        <source>Constraint info</source>
+        <translation>Informazioni sulla constraint</translation>
+    </message>
+    <message>
+        <source>Display SQL to create this constraint</source>
+        <translation>Mostra l&apos;SQL per creare questa constraint</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Nome</translation>
+    </message>
+    <message>
+        <source>C&amp;ondition</source>
+        <translation>C&amp;ondizione</translation>
+    </message>
+    <message>
+        <source>&amp;Column</source>
+        <translation>&amp;Colonna</translation>
+    </message>
+    <message>
+        <source>C&amp;heck</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation>&amp;Colonne</translation>
+    </message>
+    <message>
+        <source>&amp;Type</source>
+        <translation>&amp;Tipo</translation>
+    </message>
+    <message>
+        <source>Primary key</source>
+        <translation>Chiave primaria</translation>
+    </message>
+    <message>
+        <source>Unique</source>
+        <translation>Unico</translation>
+    </message>
+    <message>
+        <source>&amp;Primary key/Unique</source>
+        <translation>Chiave &amp;primaria/Unico</translation>
+    </message>
+    <message>
+        <source>Refers &amp;To</source>
+        <translation>Riferi&amp;to A</translation>
+    </message>
+    <message>
+        <source>R&amp;efered columns</source>
+        <translation>Colonne R&amp;eferenziate</translation>
+    </message>
+    <message>
+        <source>&amp;Referential</source>
+        <translation>&amp;Referenziale</translation>
+    </message>
+    <message>
+        <source>&amp;Apply</source>
+        <translation>&amp;Applica</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Chiudi</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserFilterUI</name>
+    <message>
+        <source>Filter setting</source>
+        <translation>Impostazioni del filtro</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Filter on name</source>
+        <translation>Filtro sui nomi</translation>
+    </message>
+    <message>
+        <source>&amp;No filter</source>
+        <translation>A&amp;nnulla filtro</translation>
+    </message>
+    <message>
+        <source>&amp;Start with</source>
+        <translation>&amp;Inizia con</translation>
+    </message>
+    <message>
+        <source>Object name start with</source>
+        <translation>Nome oggetto inizia con</translation>
+    </message>
+    <message>
+        <source>&amp;End with</source>
+        <translation>&amp;Finisce con</translation>
+    </message>
+    <message>
+        <source>Object name ends in</source>
+        <translation>Nome oggetto finisce con</translation>
+    </message>
+    <message>
+        <source>&amp;Contains</source>
+        <translation>&amp;Contiene</translation>
+    </message>
+    <message>
+        <source>Object name contains</source>
+        <translation>Nome oggetto contiene</translation>
+    </message>
+    <message>
+        <source>&amp;RegExp</source>
+        <translation>&amp;RegExp</translation>
+    </message>
+    <message>
+        <source>Object name matches RegExp</source>
+        <translation>Nome oggetto corrisponde alla RegExp</translation>
+    </message>
+    <message>
+        <source>&amp;Comma list</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Comma separated list of object names</source>
+        <translation>Lista di nomi oggetto separati da virgole</translation>
+    </message>
+    <message>
+        <source>Filter on tablespace</source>
+        <translation>Filtro su tablespace</translation>
+    </message>
+    <message>
+        <source>Include &amp;All</source>
+        <translation>Includi &amp;Tutti</translation>
+    </message>
+    <message>
+        <source>&amp;Include</source>
+        <translation>&amp;Includi</translation>
+    </message>
+    <message>
+        <source>&amp;Exclude</source>
+        <translation>&amp;Escludi</translation>
+    </message>
+    <message>
+        <source>Only display own schema</source>
+        <translation>Mostra solo il proprio schema</translation>
+    </message>
+    <message>
+        <source>Ignore &amp;Case</source>
+        <translation>Ignora &amp;Maiuscole/Minuscole</translation>
+    </message>
+    <message>
+        <source>&amp;Invert selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserIndexUI</name>
+    <message>
+        <source>Index name</source>
+        <translation>Nome indice</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Nome</translation>
+    </message>
+    <message>
+        <source>Display SQL to create this constraint</source>
+        <translation>Mostra l&apos;SQL per creare questa constraint</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation>&amp;Colonne</translation>
+    </message>
+    <message>
+        <source>&amp;Type</source>
+        <translation>&amp;Tipo</translation>
+    </message>
+    <message>
+        <source>Normal</source>
+        <translation>Normale</translation>
+    </message>
+    <message>
+        <source>Primary key</source>
+        <translation>Chiave  primaria</translation>
+    </message>
+    <message>
+        <source>Unique</source>
+        <translation>Unico</translation>
+    </message>
+    <message>
+        <source>Bitmap</source>
+        <translation>Bitmap</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserTable</name>
+    <message>
+        <source>Performing table changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Executing table change script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancelled ongoing table modification, table might be corrupt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished">Nome</translation>
+    </message>
+    <message>
+        <source>Datatype</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extra parameters</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserTableUI</name>
+    <message>
+        <source>Table columns</source>
+        <translation>Colonne tabella</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Display SQL to create this constraint</source>
+        <translation>Mostra l&apos;SQL per creare questa constraint</translation>
+    </message>
+    <message>
+        <source>&amp;Tablespace</source>
+        <translation>&amp;Tablespace</translation>
+    </message>
+    <message>
+        <source>C&amp;omment</source>
+        <translation>C&amp;ommento</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Nome</translation>
+    </message>
+    <message>
+        <source>&amp;General</source>
+        <translation>&amp;Generale</translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation>&amp;Colonne</translation>
+    </message>
+    <message>
+        <source>&amp;Extra declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Parallel declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Storage declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Custom column declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChangeConnection</name>
+    <message>
+        <source>Change the connection of the tool.</source>
+        <translation>Cambia la connessione.</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find selected connection</source>
+        <translation>Impossibile trovare la connessione selezionata</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find parent connection. Internal error.</source>
+        <translation>Impossibile trovare la connessione padre. Errore interno.</translation>
+    </message>
+</context>
+<context>
+    <name>toChartAlarm</name>
+    <message>
+        <source>Email</source>
+        <translation>Email</translation>
+    </message>
+</context>
+<context>
+    <name>toChartAlarmUI</name>
+    <message>
+        <source>Chart alarm</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Any</source>
+        <translation>Qualsiasi</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Tutto</translation>
+    </message>
+    <message>
+        <source>Sum</source>
+        <translation>Somma</translation>
+    </message>
+    <message>
+        <source>Average</source>
+        <translation>Media</translation>
+    </message>
+    <message>
+        <source>Max</source>
+        <translation>Max</translation>
+    </message>
+    <message>
+        <source>Min</source>
+        <translation>Min</translation>
+    </message>
+    <message>
+        <source>Statusmessage</source>
+        <translation>Messaggio di stato</translation>
+    </message>
+    <message>
+        <source>Email</source>
+        <translation>Email</translation>
+    </message>
+    <message>
+        <source>Ignore</source>
+        <translation>Ignora</translation>
+    </message>
+    <message>
+        <source>=</source>
+        <translation>=</translation>
+    </message>
+    <message>
+        <source>!=</source>
+        <translation>!=</translation>
+    </message>
+    <message>
+        <source>&lt;</source>
+        <translation>&lt;</translation>
+    </message>
+    <message>
+        <source>&gt;</source>
+        <translation>&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;=</source>
+        <translation>&lt;=</translation>
+    </message>
+    <message>
+        <source>&gt;=</source>
+        <translation>&gt;=</translation>
+    </message>
+    <message>
+        <source>Operation</source>
+        <translation>Operazione</translation>
+    </message>
+    <message>
+        <source>Operation to perform on the selected columns</source>
+        <translation>Operazione da eseguire sulle colonne selezionate</translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation>Valore</translation>
+    </message>
+    <message>
+        <source>Value to use in comparison.</source>
+        <translation>Valore da usare nella comparazione.</translation>
+    </message>
+    <message>
+        <source>Comparison</source>
+        <translation>Confronto</translation>
+    </message>
+    <message>
+        <source>What comparison to do with the result from the above operation.</source>
+        <translation>Quale operazione eseguire con il risultato dell&apos;operazione.</translation>
+    </message>
+    <message>
+        <source>Action</source>
+        <translation>Azione</translation>
+    </message>
+    <message>
+        <source>What to do when alarm is triggered.</source>
+        <translation>Cosa fare quando l&apos;allarme è attivato.</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation>Persistente</translation>
+    </message>
+    <message>
+        <source>Remember this alarm when restarting TOra.</source>
+        <translation type="obsolete">Ricorda questo allarme al riavvio di TOra.</translation>
+    </message>
+    <message>
+        <source>Remember this alarm when restarting.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartHandler</name>
+    <message>
+        <source>ALARM:</source>
+        <translation type="unfinished">ALARM:</translation>
+    </message>
+    <message>
+        <source>TOra alert:</source>
+        <translation type="unfinished">Avviso di TOra:</translation>
+    </message>
+    <message>
+        <source>A defined alert value was detected:
+
+%1
+
+At: %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alarms</source>
+        <translation type="unfinished">Avvisi</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="unfinished">Persistente</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation type="unfinished">Temporaneo</translation>
+    </message>
+</context>
+<context>
+    <name>toChartManager</name>
+    <message>
+        <source>Chart Manager</source>
+        <translation>Gestione grafici</translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation>Aggiorna lista</translation>
+    </message>
+    <message>
+        <source>Open tracker file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Setup chart</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Connection</source>
+        <translation>Connessione</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Titolo</translation>
+    </message>
+    <message>
+        <source>ID</source>
+        <translation>ID</translation>
+    </message>
+    <message>
+        <source>Tracking</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alarms</source>
+        <translation>Avvisi</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>&amp;Chart Manager</source>
+        <translation>&amp;Gestione grafici</translation>
+    </message>
+    <message>
+        <source>ALARM:</source>
+        <translation type="obsolete">ALARM:</translation>
+    </message>
+    <message>
+        <source>TOra alert:</source>
+        <translation type="obsolete">Avviso di TOra:</translation>
+    </message>
+    <message>
+        <source>Initial value didn&apos;t start with &quot; in CSV file</source>
+        <translation>Valore iniziale privo di &quot; nel file CSV</translation>
+    </message>
+    <message>
+        <source>Missing closing &quot; in CSV file</source>
+        <translation>&quot; di chiusura mancante nel file CSV</translation>
+    </message>
+    <message>
+        <source>Chart format</source>
+        <translation>Formato del grafico</translation>
+    </message>
+    <message>
+        <source>Select format of the chart to display</source>
+        <translation>Seleziona il formato del grafico</translation>
+    </message>
+    <message>
+        <source>Barchart</source>
+        <translation>Grafico a barre</translation>
+    </message>
+    <message>
+        <source>Linechart</source>
+        <translation>Grafico a linee</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="obsolete">Persistente</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation type="obsolete">Temporaneo</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Chart Manager|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartSetup</name>
+    <message>
+        <source>Charts</source>
+        <translation>Grafici</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation>Persistente</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation>Temporaneo</translation>
+    </message>
+</context>
+<context>
+    <name>toChartSetupUI</name>
+    <message>
+        <source>Chart manager setup</source>
+        <translation>Inizializzazione della gestione grafici</translation>
+    </message>
+    <message>
+        <source>Track chart to file</source>
+        <translation>Traccia il grafico su file</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Sfoglia</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation>Persistente</translation>
+    </message>
+    <message>
+        <source>Remember to track this chart to this file always when starting TOra.</source>
+        <translation type="obsolete">Ricorda di tracciare questo grafico sempre su questo file all&apos;avvio di TOra.</translation>
+    </message>
+    <message>
+        <source>Enable tracking</source>
+        <translation>Abilita la tracciatura</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Nome file</translation>
+    </message>
+    <message>
+        <source>Alarms</source>
+        <translation>Avvisi</translation>
+    </message>
+    <message>
+        <source>&amp;Add</source>
+        <translation>&amp;Aggiungi</translation>
+    </message>
+    <message>
+        <source>Remove</source>
+        <translation>Rimuovi</translation>
+    </message>
+    <message>
+        <source>Modify</source>
+        <translation>Modifica</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Remember to track this chart to this file always when starting.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartTool</name>
+    <message>
+        <source>Chart Manager...</source>
+        <translation>Gestione grafici ...</translation>
+    </message>
+    <message>
+        <source>Chart Manager</source>
+        <translation>Gestione grafici</translation>
+    </message>
+</context>
+<context>
+    <name>toCheckLicense</name>
+    <message>
+        <source>Welcome to TOra</source>
+        <translation>Benvenuti in TOra</translation>
+    </message>
+    <message>
+        <source>(Personal license, not for commerical use)</source>
+        <translation>(Licenza personale, per uso non commerciale)</translation>
+    </message>
+    <message>
+        <source>(Commercial license one user)</source>
+        <translation>(Licenza commerciale, un utente)</translation>
+    </message>
+    <message>
+        <source>(Commerical site license)</source>
+        <translation>(Licenza commerciale)</translation>
+    </message>
+    <message>
+        <source>(Commercial license %1 users)</source>
+        <translation>(Licenza commerciale %1 utenti)</translation>
+    </message>
+    <message>
+        <source>Welcome to TOra (Unregistered version, not for commercial use)</source>
+        <translation>Benvenuti in TOra (Versione non registrata, per uso non commerciale)</translation>
+    </message>
+</context>
+<context>
+    <name>toConnection</name>
+    <message>
+        <source>All tool widgets need to have autodelete flag set</source>
+        <translation>Tutti i componenti dello strumento devono avere il flag di autocancellazione settato</translation>
+    </message>
+    <message>
+        <source>Not done caching objects, can not clear unread cache</source>
+        <translation>Cache degli oggetti non completata, impossibile vuotare la cache non letta</translation>
+    </message>
+    <message>
+        <source>Waiting for object caching to be completed.
+Canceling this dialog will probably leave some list of
+database objects empty.</source>
+        <translation>In attesa di completare la cache degli oggetti.
+Chiudere questa finestra lascierà alcune liste
+di oggetti del database vuote.</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Waiting for object cache</source>
+        <translation>In attesa di completare la cache degli oggetti</translation>
+    </message>
+    <message>
+        <source>Not done caching objects</source>
+        <translation>Cache degli oggetti non completata</translation>
+    </message>
+    <message>
+        <source>Object %1 not available for %2</source>
+        <translation>L&apos;oggetto %1 non disponibile per %2</translation>
+    </message>
+    <message>
+        <source>Parse only not implemented for this type of connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toConnectionProvider</name>
+    <message>
+        <source>Tried to fetch unknown provider %1</source>
+        <translation>Tentativo di contattare una fonte sconosciuta %1</translation>
+    </message>
+</context>
+<context>
+    <name>toCurrent</name>
+    <message>
+        <source>Current Session</source>
+        <translation>Sessione corrente</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Aggiorna</translation>
+    </message>
+    <message>
+        <source>Privilege</source>
+        <translation>Privilegio</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+    <message>
+        <source>Grantable</source>
+        <translation>Grant assegnabile</translation>
+    </message>
+    <message>
+        <source>Privileges</source>
+        <translation>Privilegi</translation>
+    </message>
+    <message>
+        <source>Version</source>
+        <translation>Versione</translation>
+    </message>
+    <message>
+        <source>Parameters</source>
+        <translation>Parametri</translation>
+    </message>
+    <message>
+        <source>Statistics</source>
+        <translation>Statistiche</translation>
+    </message>
+    <message>
+        <source>Resource Limits</source>
+        <translation>Limitazioni sulle Risorse</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>&amp;Current Session</source>
+        <translation>&amp;Sessione Corrente</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <translation>Sistema</translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Oggetto</translation>
+    </message>
+    <message>
+        <source>Role</source>
+        <translation>Ruolo</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Current session|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toCurrent:ResourceLimit</name>
+    <message>
+        <source>Current Utilization</source>
+        <translation>Utilizzazione corrente</translation>
+    </message>
+    <message>
+        <source>Initial Allocation</source>
+        <translation>Allocazione iniziale</translation>
+    </message>
+    <message>
+        <source>Limit Value</source>
+        <translation>Valore limite</translation>
+    </message>
+    <message>
+        <source>Max Utilization</source>
+        <translation>Utilizzo massimo</translation>
+    </message>
+    <message>
+        <source>Resource Name</source>
+        <translation>Nome della risorsa</translation>
+    </message>
+</context>
+<context>
+    <name>toCurrent:Version</name>
+    <message>
+        <source>Version</source>
+        <translation>Versione</translation>
+    </message>
+</context>
+<context>
+    <name>toCurrentTool</name>
+    <message>
+        <source>Couldn&apos;t find parent tool. Internal error.</source>
+        <translation>Impossibile trovare il tool superiore. Errore interno.</translation>
+    </message>
+</context>
+<context>
+    <name>toDatabaseSetting</name>
+    <message>
+        <source>Invalid values</source>
+        <translation>Valori non validi</translation>
+    </message>
+    <message>
+        <source>Doesn&apos;t make sense to have max content less than initial
+fetch size. Will adjust value to be higher.</source>
+        <translation>Non è corretto avere una dimensione massima inferiore
+alla dimensione minima iniziale. Il valore verrà aumentato.
+</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+</context>
+<context>
+    <name>toDatabaseSettingUI</name>
+    <message>
+        <source>toDatabaseSettingUI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Autocommit changes</source>
+        <translation>Salva automaticamente i cambiamenti sul DB (&amp;Autocommit)</translation>
+    </message>
+    <message>
+        <source>Specify if changes should be automatically commited.</source>
+        <translation>Specificare se i cambiamenti devono essere committati automaticamente.</translation>
+    </message>
+    <message>
+        <source>UI feedback settings</source>
+        <translation>Impostazioni di risposta dell&apos;interfaccia</translation>
+    </message>
+    <message>
+        <source>Abort long running queries and reexecute in own connection</source>
+        <translation>Interrompi le query lente e rieseguile in una connessione separata</translation>
+    </message>
+    <message>
+        <source>Reexecute a query taking more than 30 seconds in its own connection to prevent blocking other database access.</source>
+        <translation>Riesegui una query che impiega più di 30 secondi in una connessione separata per evitare di bloccare gli altri accessi al db.</translation>
+    </message>
+    <message>
+        <source>Move to own connection after</source>
+        <translation>Sposta ad una connessione separata dopo</translation>
+    </message>
+    <message>
+        <source> seconds</source>
+        <translation>secondi</translation>
+    </message>
+    <message>
+        <source>Run UI blocking queries exclusively in main thread</source>
+        <translation type="obsolete">Esegui query che bloccano l&apos;interfaccia solo nel thread principale</translation>
+    </message>
+    <message>
+        <source>Let the background queries normally running on the main connection run in a separate connection.</source>
+        <translation>Esegui le query in background in una connessione separata invece che nella connessione principale.</translation>
+    </message>
+    <message>
+        <source>Don&apos;t reread data if parameters are exactly same</source>
+        <translation>Non rileggere i dati se i parametri sono gli stessi</translation>
+    </message>
+    <message>
+        <source>If checked TOra will not refresh a result if it is reexecuted exactly the same two times in a row.</source>
+        <translation type="obsolete">Se selezionato TOra non aggiornerà il risultato se viene eseguito due volte di seguito.</translation>
+    </message>
+    <message>
+        <source>Query settings</source>
+        <translation>Impostazioni delle query</translation>
+    </message>
+    <message>
+        <source>Maximum size &amp;display</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The largest default size of a column in query results.</source>
+        <translation>La larghezza massima di una colonna nei risultati della query.</translation>
+    </message>
+    <message>
+        <source>&amp;All</source>
+        <translation>&amp;Tutte</translation>
+    </message>
+    <message>
+        <source>&amp;Initial rows to fetch in query</source>
+        <translation>Numero iniziale di &amp;righe da recuperare nella query</translation>
+    </message>
+    <message>
+        <source>The number of rows to always fetch when executing a query.</source>
+        <translation>Numero di righe da recuperare sempre quando si esegue una query.</translation>
+    </message>
+    <message>
+        <source>Initially read in content editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of rows to initially start reading in content editor, use unlimited on slow connections.</source>
+        <translation>Numero di righe da leggere inizialmente nell&apos;editor, usare illimitato con connessioni lente. </translation>
+    </message>
+    <message>
+        <source>Indicate empty values as &apos;&apos; instead of NULL as {null}.</source>
+        <translation>Indica i valori vuoti come &quot; invece di NULL come {null}.</translation>
+    </message>
+    <message>
+        <source>Start read object cache when needed</source>
+        <translation>Iniziate a leggere la cache degli oggetti quando necessario</translation>
+    </message>
+    <message>
+        <source>Read object cache on connect</source>
+        <translation>Leggi la cache degli oggetti alla connessione</translation>
+    </message>
+    <message>
+        <source>Never read object cache until mandatory</source>
+        <translation>Non leggere mai la cache degli oggetti finchè non è obbligatorio</translation>
+    </message>
+    <message>
+        <source>Never read object cache (Will leave parts of application nonfunctianal)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Keep alive</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Make sure connections are kept alive by periodically (5 minutes) sending a query on all idle connections.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Run UI blocking queries exclusively in main connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>If checked will not refresh a result if it is reexecuted exactly the same two times in a row.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dataformat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number format</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The way numbers should be presented.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Decimals</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of decimals for fixed decimal format.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation type="unfinished">Standard</translation>
+    </message>
+    <message>
+        <source>Scientific</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Fixed decimal</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDatatype</name>
+    <message>
+        <source>&lt;B&gt;(&lt;/B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;B&gt;,&lt;/B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;B&gt;)&lt;/B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebug</name>
+    <message>
+        <source>Head</source>
+        <translation type="obsolete">Testata</translation>
+    </message>
+    <message>
+        <source>Body</source>
+        <translation type="obsolete">Corpo</translation>
+    </message>
+    <message>
+        <source>Misc</source>
+        <translation type="obsolete">Varie</translation>
+    </message>
+    <message>
+        <source>Expected function or procedure, internal error</source>
+        <translation>Funzione o procedura non attesa, errore interno</translation>
+    </message>
+    <message>
+        <source>Unexpected end of declaration.</source>
+        <translation>Fine inattesa della dichiarazione.</translation>
+    </message>
+    <message>
+        <source>Input</source>
+        <translation>Input</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find any function or procedure under cursor.</source>
+        <translation>Impossibile trovare una funzione o procedura sotto il cursore.</translation>
+    </message>
+    <message>
+        <source>Anonymous</source>
+        <translation type="obsolete">Anonimo</translation>
+    </message>
+    <message>
+        <source>Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Returning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to get runtime info (Reason %1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>[Count %1]</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>{Unavailable}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DEFERED</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No running target</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Debugger</source>
+        <translation>Debugger</translation>
+    </message>
+    <message>
+        <source>Update object list</source>
+        <translation>Aggiorna la lista degli oggetti</translation>
+    </message>
+    <message>
+        <source>Clean sheet</source>
+        <translation>Vuota il foglio</translation>
+    </message>
+    <message>
+        <source>Rescan source</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Compile</source>
+        <translation>Compila</translation>
+    </message>
+    <message>
+        <source>Run current block</source>
+        <translation type="obsolete">Esegui il blocco corrente</translation>
+    </message>
+    <message>
+        <source>Stop running</source>
+        <translation>Interrompi l&apos;esecuzione</translation>
+    </message>
+    <message>
+        <source>Step into procedure or function</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Step over procedure or function</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Return from procedure or function</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Show/hide debug info pane.</source>
+        <translation>Mostra/nascondi il pannello di informazioni per il debug.</translation>
+    </message>
+    <message>
+        <source>Go to next error</source>
+        <translation>Vai al prossimo errore</translation>
+    </message>
+    <message>
+        <source>Go to previous error</source>
+        <translation>Vai all&apos;errore precedente</translation>
+    </message>
+    <message>
+        <source>Toggle breakpoint on current line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable/disable breakpoint on current line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Add new variable watch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete variable watch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Change value of watched variable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Objects</source>
+        <translation>Oggetti</translation>
+    </message>
+    <message>
+        <source>Contents</source>
+        <translation>Contenuti</translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Oggetto</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation>Schema</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+    <message>
+        <source>&amp;Stack Trace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Variable</source>
+        <translation>Variabile</translation>
+    </message>
+    <message>
+        <source>Data</source>
+        <translation type="unfinished">Dati</translation>
+    </message>
+    <message>
+        <source>W&amp;atch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object Type</source>
+        <translation type="unfinished">Tipo oggetto</translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation>Abilitato</translation>
+    </message>
+    <message>
+        <source>&amp;Breakpoints</source>
+        <translation>&amp;Breakpoints</translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation>Nome</translation>
+    </message>
+    <message>
+        <source>Content</source>
+        <translation>Contenuto</translation>
+    </message>
+    <message>
+        <source>&amp;Parameters</source>
+        <translation>&amp;Parametri</translation>
+    </message>
+    <message>
+        <source>Debug &amp;Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Runtime Log</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Failed to start target task thread, close some other tools and try again</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t start debugging</source>
+        <translation>Impossibile avviare il debugging</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t connect to target session:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Stop execution?</source>
+        <translation>Interrompere l&apos;esecuzione?</translation>
+    </message>
+    <message>
+        <source>Do you want to abort the current execution?</source>
+        <translation>Vuoi interrompere l&apos;esecuzione corrente?</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Compile</source>
+        <translation>&amp;Compila</translation>
+    </message>
+    <message>
+        <source>&amp;Discard changes</source>
+        <translation>&amp;Scarta le modifiche</translation>
+    </message>
+    <message>
+        <source>&amp;New Sheet</source>
+        <translation>&amp;Nuovo foglio</translation>
+    </message>
+    <message>
+        <source>S&amp;can Source</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Execute</source>
+        <translation type="obsolete">&amp;Esegui</translation>
+    </message>
+    <message>
+        <source>&amp;Stop</source>
+        <translation>&amp;Stop</translation>
+    </message>
+    <message>
+        <source>Step &amp;Into</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Next Line</source>
+        <translation>Li&amp;nea Successiva</translation>
+    </message>
+    <message>
+        <source>&amp;Return From</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Debug Pane</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next &amp;Error</source>
+        <translation>&amp;Errore Successivo</translation>
+    </message>
+    <message>
+        <source>Pre&amp;vious Error</source>
+        <translation>Errore &amp;Precedente</translation>
+    </message>
+    <message>
+        <source>&amp;Toggle Breakpoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>D&amp;isable Breakpoint</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Add Watch...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete &amp;Watch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Chan&amp;ge Watch...</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh Object List</source>
+        <translation>Aggiorna la lista degli Oggetti</translation>
+    </message>
+    <message>
+        <source>Select Schema</source>
+        <translation>Seleziona lo Schema</translation>
+    </message>
+    <message>
+        <source>Erase Runtime &amp;Log</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Debug</source>
+        <translation>&amp;Debug</translation>
+    </message>
+    <message>
+        <source>Enter new value to the watch %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unimplemented in PL/SQL debug interface</source>
+        <translation>Non implementato nell&apos;interfaccia di debug del PL/SQL</translation>
+    </message>
+    <message>
+        <source>Assignment failed (Reason %1)</source>
+        <translation>Assegnazione fallita (Motivo %1)</translation>
+    </message>
+    <message>
+        <source>DISABLED</source>
+        <translation>DISABILITATO</translation>
+    </message>
+    <message>
+        <source>ENABLED</source>
+        <translation>ABILITATO</translation>
+    </message>
+    <message>
+        <source>Can not enable breakpoint, not a valid line. Perhaps needs to recompile.</source>
+        <translation>Impossibile abilitare il breakpoint, linea non valida. Forse è necessario ricompilare.</translation>
+    </message>
+    <message>
+        <source>Can not enable breakpoint, not a valid object. Perhaps needs to compile.</source>
+        <translation>Impossibile abilitare il breakpoint, oggetto non valido. Forse è necessario compilare.</translation>
+    </message>
+    <message>
+        <source>NOT SET</source>
+        <translation>NON IMPOSTATO</translation>
+    </message>
+    <message>
+        <source>Failed to remove breakpoint (Reason %1)</source>
+        <translation>Impossibile rimuovere il breakpoint (Motivo %1)</translation>
+    </message>
+    <message>
+        <source> body</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>{No debug info}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation type="unfinished">Sconosciuto</translation>
+    </message>
+    <message>
+        <source>Execute or continue execution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 changed. Continuing will discard uncompiled or saved changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F9</source>
+        <comment>Debug|Scan source</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F9</source>
+        <comment>Debug|Compile</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished">Chiudi</translation>
+    </message>
+    <message>
+        <source>CloseAll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Execute or continue</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Debug|Execute</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F12</source>
+        <comment>Debug|Stop</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F7</source>
+        <comment>Debug|Step into</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F8</source>
+        <comment>Debug|Stop over</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F6</source>
+        <comment>Debug|Return from</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F11</source>
+        <comment>Debug|Debug pane</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+N</source>
+        <comment>Debug|Next error</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+P</source>
+        <comment>Debug|Previous error</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F5</source>
+        <comment>Debug|Toggle breakpoint</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F6</source>
+        <comment>Debug|Disable breakpoint</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Debug|Add watch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Delete</source>
+        <comment>Debug|Delete watch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F4</source>
+        <comment>Debug|Change watch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Debug|Refresh objectlist</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>Debug|Select schema</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebugChangeUI</name>
+    <message>
+        <source>Change value of watch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>NULL</source>
+        <translation>NULL</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Index</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebugOutput</name>
+    <message>
+        <source>Couldn&apos;t enable/disable output for session</source>
+        <translation>Impossibile abilitare/disabilitare l&apos;output per la sessione</translation>
+    </message>
+</context>
+<context>
+    <name>toDebugText</name>
+    <message>
+        <source>Invalid start of code</source>
+        <translation>Inizio del codice non valido</translation>
+    </message>
+</context>
+<context>
+    <name>toDebugWatch</name>
+    <message>
+        <source>Can&apos;t parse location</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebugWatchUI</name>
+    <message>
+        <source>Add variable watch</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Variable name</source>
+        <translation>Nome &amp;Variabile</translation>
+    </message>
+    <message>
+        <source>Variable name to watch.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Scope</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Local</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Currently running scope.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The scope of the file in the body editor.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Global</source>
+        <translation type="unfinished">&amp;Globale</translation>
+    </message>
+    <message>
+        <source>Global scope of variable.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Autodetect</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Package</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toEditExtensionGotoUI</name>
+    <message>
+        <source>Go to line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished">&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Line Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toEditExtensionSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>&amp;Right align keywords in each statement.</source>
+        <translation>&amp;Allinea a destra le parole chiave in ogni costrutto.</translation>
+    </message>
+    <message>
+        <source>Insert a &amp;newline after each block</source>
+        <translation>Inserisci una &amp;nuova linea dopo ogni blocco</translation>
+    </message>
+    <message>
+        <source>Place THEN, LOOP, AS and IS on new line at b&amp;eginning of new block</source>
+        <translation>Scrivi THEN, LOOP, AS &amp;e IS su una nuova riga all&apos;inizio di un nuovo blocco</translation>
+    </message>
+    <message>
+        <source>Place &amp;comma on new line before item instead of after on same line</source>
+        <translation>Inseris&amp;ci una virgola in una nuova riga prima dell&apos;oggetto invece che dopo sulla stessa</translation>
+    </message>
+    <message>
+        <source>&amp;Expand spaces to tabs when indenting</source>
+        <translation>&amp;Espandi gli spazi alle tabulazioni durante l&apos;indentazione</translation>
+    </message>
+    <message>
+        <source>Transform spaces to tabs whenever posible when indenting.</source>
+        <translation>Trasforma gli spazi in tabulazioni, se possibile, durante l&apos;indentazione.</translation>
+    </message>
+    <message>
+        <source>Put spaces around operators</source>
+        <translation>Inserisci spazi intorno agli operatori</translation>
+    </message>
+    <message>
+        <source>Insert extra spaces between operators.</source>
+        <translation>Inserisci spazi aggiuntivi tra gli operatori.</translation>
+    </message>
+    <message>
+        <source>Transform keywords to &amp;uppercase</source>
+        <translation>Trasforma le parole chiave in &amp;maiuscolo</translation>
+    </message>
+    <message>
+        <source>&amp;Indentation level</source>
+        <translation>&amp;Livello di indentazione</translation>
+    </message>
+    <message>
+        <source>&amp;Same line comment column</source>
+        <translation>Inizia i commenti nella &amp;stessa riga alla colonna</translation>
+    </message>
+    <message>
+        <source>Example</source>
+        <translation>Esempio</translation>
+    </message>
+    <message>
+        <source>Auto indent read only SQL text editors</source>
+        <translation>Indenta automaticamente gli editor di testo SQL in sola lettura</translation>
+    </message>
+</context>
+<context>
+    <name>toEditExtensionTool</name>
+    <message>
+        <source>Forward</source>
+        <translation>Avanti</translation>
+    </message>
+    <message>
+        <source>Backward</source>
+        <translation>Indietro</translation>
+    </message>
+    <message>
+        <source>Incremental Search</source>
+        <translation>Ricerca incrementale</translation>
+    </message>
+    <message>
+        <source>Selection</source>
+        <translation>Selezione</translation>
+    </message>
+    <message>
+        <source>Editor</source>
+        <translation>Editor</translation>
+    </message>
+    <message>
+        <source>Obfuscate Selection</source>
+        <translation>Selezione tutta su una riga</translation>
+    </message>
+    <message>
+        <source>Obfuscate Editor</source>
+        <translation>Tutto su una riga</translation>
+    </message>
+    <message>
+        <source>Auto Indent</source>
+        <translation>Indentazione Automatica</translation>
+    </message>
+    <message>
+        <source>Indent Block</source>
+        <translation>Indenta il blocco</translation>
+    </message>
+    <message>
+        <source>De-indent Block</source>
+        <translation>Annulla indentazione del blocco</translation>
+    </message>
+    <message>
+        <source>Indent block in editor</source>
+        <translation>Indenta il blocco nell&apos;editor</translation>
+    </message>
+    <message>
+        <source>De-indent block in editor</source>
+        <translation>Annulla indentazione del blocco nell&apos;editor</translation>
+    </message>
+    <message>
+        <source>Upper</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Lower</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Modify Case</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <comment>Edit|Incremental search forward</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+R</source>
+        <comment>Edit|Incremental search backward</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+I</source>
+        <comment>Edit|Indent selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+Shift+I</source>
+        <comment>Edit|Indent editor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+U</source>
+        <comment>Edit|Uppercase</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <comment>Edit|Lowercase</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Right</source>
+        <comment>Edit|Indent block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Left</source>
+        <comment>Edit|De-indent block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Goto Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toExtract</name>
+    <message>
+        <source>Failed to extract owner and name from (%1), internal error %2</source>
+        <translation>Impossibile ricavare il proprietario e il nome  da (%1), errore interno %2</translation>
+    </message>
+    <message>
+        <source>CREATE</source>
+        <translation>CREATE</translation>
+    </message>
+    <message>
+        <source>Creating create script</source>
+        <translation>Costruzione dello script di creazione</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Creating script</source>
+        <translation>Creazione dello script</translation>
+    </message>
+    <message>
+        <source>Creating script was cancelled</source>
+        <translation>La creazione dello script è stata annullata</translation>
+    </message>
+    <message>
+        <source>Internal error, missing : in object description</source>
+        <translation>Errore interno, manca : nella descrizione dell&apos;oggetto</translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create</source>
+        <translation>Crea</translation>
+    </message>
+    <message>
+        <source>Creating description</source>
+        <translation>Creazione della descrizione</translation>
+    </message>
+    <message>
+        <source>Describe was cancelled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to describe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Describe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DROP</source>
+        <translation>DROP</translation>
+    </message>
+    <message>
+        <source>Creating drop script</source>
+        <translation>Creazione dello script di drop</translation>
+    </message>
+    <message>
+        <source>Creating drop script was cancelled</source>
+        <translation>La creazione dello script di drop è stata annullata</translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to drop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Drop script</source>
+        <translation>Dropt script</translation>
+    </message>
+    <message>
+        <source>Invalid describe context (&lt;3 parts) &quot;%1&quot;)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object list not available in migration</source>
+        <translation>Lista degli oggetti non disponibile nella migrazione</translation>
+    </message>
+    <message>
+        <source>MIGRATE</source>
+        <translation>MIGRATE</translation>
+    </message>
+    <message>
+        <source>Creating migration script</source>
+        <translation>Creazione dello script di migrazione</translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to migrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Migration script</source>
+        <translation>Script di migrazione</translation>
+    </message>
+    <message>
+        <source>REM This DDL was reverse engineered by
+REM TOra, Version %1
+REM
+REM at:   %2
+REM from: %3, an %4 %5 database
+REM
+REM on:   %6
+REM
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>REM Generating free space report for:
+REM</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>REM Generating %1 statement for:
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Error in toExtract
+Operation:      %1
+Object:         %2
+Error:          %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Malformed resize string (Should contain multiple of 3 number of &apos;:&apos;)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>More than one definition for column %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Same kind of definition existing more than once for column %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toGetSessionType</name>
+    <message>
+        <source>Failed to find style match</source>
+        <translation>Impossibile trovare uno stile corrispondente</translation>
+    </message>
+</context>
+<context>
+    <name>toGlobalSettingUI</name>
+    <message>
+        <source>toGlobalSettingUI</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Paths</source>
+        <translation>Percorsi</translation>
+    </message>
+    <message>
+        <source>&amp;Custom SQL</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Sfoglia</translation>
+    </message>
+    <message>
+        <source>&amp;Plugin directory</source>
+        <translation>Direcroty dei &amp;plugin</translation>
+    </message>
+    <message>
+        <source>Directory where to find plugins when starting tora.</source>
+        <translation type="obsolete">Cartella in cui cercare i plugin all&apos;avvio di TOra.</translation>
+    </message>
+    <message>
+        <source>&amp;Help directory</source>
+        <translation>Directory dell&apos;&amp;help</translation>
+    </message>
+    <message>
+        <source>Default session</source>
+        <translation>Sessione di default</translation>
+    </message>
+    <message>
+        <source>What session to use by TOra when saving session.</source>
+        <translation type="obsolete">File di sessione usato da TOra per salvare la sessione.</translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation>Opzioni</translation>
+    </message>
+    <message>
+        <source>&amp;Save passwords</source>
+        <translation>&amp;Salva password</translation>
+    </message>
+    <message>
+        <source>Remember the last password you used to connect.
+Will leave the password unencryptet in the config file.</source>
+        <translation>Salva l&apos;ultima password usata per connettersi.
+Lascia la password non criptata nel file di configurazione.</translation>
+    </message>
+    <message>
+        <source>Include DB in caption</source>
+        <translation>Inserisci il DB nelle informazioni</translation>
+    </message>
+    <message>
+        <source>Include database connection in window captions</source>
+        <translation>Includi la connessione al database nelle informazioni della finestra</translation>
+    </message>
+    <message>
+        <source>Change current connection with active window</source>
+        <translation>Cambia la connessione attuale con la finestra attiva</translation>
+    </message>
+    <message>
+        <source>Change currently select connection to the connection of the new active window</source>
+        <translation>Cambia la connessione selezionata con la connessione della nuova finestra attiva</translation>
+    </message>
+    <message>
+        <source>Connect history</source>
+        <translation>Connessioni archiviate</translation>
+    </message>
+    <message>
+        <source>Number of connections to save in history.</source>
+        <translation>Numero di connessioni da archiviare.</translation>
+    </message>
+    <message>
+        <source>Message history</source>
+        <translation>Archivio messaggi</translation>
+    </message>
+    <message>
+        <source>Number of status messages to save in the message history.</source>
+        <translation>Numero di avvisi di stato da salvare nell&apos;archivio messaggi.</translation>
+    </message>
+    <message>
+        <source> seconds</source>
+        <translation>secondi</translation>
+    </message>
+    <message>
+        <source>Status &amp;message</source>
+        <translation>&amp;Messaggio di stato</translation>
+    </message>
+    <message>
+        <source>The time in seconds temporary messages will be displayed in the status bar. 0 menas keep.</source>
+        <translation>Il tempo in secondi per cui saranno mostrati i messaggi nella barra di stato. 0 significa sempre.</translation>
+    </message>
+    <message>
+        <source>Display alerts in statusbar only</source>
+        <translation>Mostra gli avvisi solo nella barra di stato</translation>
+    </message>
+    <message>
+        <source>Display alerts in messagebar instead of poping up a dialog with a warning.</source>
+        <translation>Mostra gli avvisi nella barra dei messaggi invece di aprire una finestra con l&apos;avviso.</translation>
+    </message>
+    <message>
+        <source>Tools toolbar on left</source>
+        <translation>Barra degli strumenti sul lato sinistro</translation>
+    </message>
+    <message>
+        <source>Start using the tools toolbar on the left of the main window instead of at the top.</source>
+        <translation>Inizia con la barra degli strumenti sulla sinistra della finestra principale invece che sopra.</translation>
+    </message>
+    <message>
+        <source>Maximize window on start</source>
+        <translation>Massimizza la finestra all&apos;avvio</translation>
+    </message>
+    <message>
+        <source>Restore session on startup</source>
+        <translation>Ripristina la sessione all&apos;avvio</translation>
+    </message>
+    <message>
+        <source>&amp;Desktop aware</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Colors get really weird in KDE if you select this.</source>
+        <translation>I colori diventano davvero strani nel KDE se selezioni questo.</translation>
+    </message>
+    <message>
+        <source>&amp;Antialiase fonts</source>
+        <translation>Usa l&apos;&amp;Antialias per i caratteri</translation>
+    </message>
+    <message>
+        <source>Use antialiase fonts if Qt supports this. You need to restart tora for this to take affect.</source>
+        <translation type="obsolete">Usa i font con antialias se supportati da QT. E&apos; necessario riavviare TOra per questo.</translation>
+    </message>
+    <message>
+        <source>Docks use toolbars</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check this if docks are to use toolbars instead of normal frames.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Style</source>
+        <translation>&amp;Stile</translation>
+    </message>
+    <message>
+        <source>The style to use for the user interface.</source>
+        <translation>Lo stile da usare per l&apos;interfaccia.</translation>
+    </message>
+    <message>
+        <source>Size Unit</source>
+        <translation>Unità di dimensione</translation>
+    </message>
+    <message>
+        <source>Define the unit sizes should be displayed in tora.</source>
+        <translation type="obsolete">Definisci l&apos;unità di dimensione da usare in TOra.</translation>
+    </message>
+    <message>
+        <source>Bytes</source>
+        <translation>Bytes</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation>KB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>MB</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>Testo</translation>
+    </message>
+    <message>
+        <source>Tab delimited</source>
+        <translation>Delimitato da tabulazioni</translation>
+    </message>
+    <message>
+        <source>CSV</source>
+        <translation>CSV</translation>
+    </message>
+    <message>
+        <source>HTML</source>
+        <translation>HTML</translation>
+    </message>
+    <message>
+        <source>Default list format</source>
+        <translation>Formato standard delle liste</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Intervallo di aggiornamento</translation>
+    </message>
+    <message>
+        <source>Default refreshtime in tools.</source>
+        <translation>Tempo di refresh standard per gli strumenti.</translation>
+    </message>
+    <message>
+        <source>Chart samples</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of samples to keep in line and barcharts by default.</source>
+        <translation>Numero di campioni da conservare nei grafici.</translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation>Illimitati</translation>
+    </message>
+    <message>
+        <source>Save unlimited number of samples. Can large amounts of consume memory.</source>
+        <translation>Salva un numero illimitato di campioni. Può consumare molta memoria.</translation>
+    </message>
+    <message>
+        <source>Display samples</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of samples to display in line and barcharts by default.</source>
+        <translation>Numero di campioni da mostrare nei grafici.</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Tutto</translation>
+    </message>
+    <message>
+        <source>Display all available samples</source>
+        <translation>Mostra tutti i campioni disponibili</translation>
+    </message>
+    <message>
+        <source>Check for upgrades on startup</source>
+        <translation>Cerca aggiornamenti all&apos;avvio</translation>
+    </message>
+    <message>
+        <source>Check the TOra webpage for upgrades to the program. Does not send any information about the users computer or TOra installation.</source>
+        <translation>Controlla la pagina internet di TOra per nuove versioni. Non invia informazioni riguardo il computer o l&apos;installazione di TOra.</translation>
+    </message>
+    <message>
+        <source>Translation</source>
+        <translation>Traduzione</translation>
+    </message>
+    <message>
+        <source>Which translation locale to use for this program. Must restart to have effect.</source>
+        <translation>Quale lingua usare per questo programma. Dovete riavviare per renderla effettiva.</translation>
+    </message>
+    <message>
+        <source>Directory where to find plugins when starting.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Cache directory</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Directory where to place cached dataaseinformation.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Directory where to find help files.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Default session to use when saving a session.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use antialiase fonts if Qt supports this. You need to restart for this to take affect.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Define the unit sizes should be displayed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use Disk Caching</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use Disk Caching of ObjectLists and Synonyms</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHelp</name>
+    <message>
+        <source>Help Navigation</source>
+        <translation>Navigazione dell&apos;help</translation>
+    </message>
+    <message>
+        <source>Contents</source>
+        <translation>Contenuti</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Cerca</translation>
+    </message>
+    <message>
+        <source>All manuals</source>
+        <translation>Tutti i manuali</translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation>Risultato</translation>
+    </message>
+    <message>
+        <source>Manual</source>
+        <translation>Manuale</translation>
+    </message>
+    <message>
+        <source>TOra Help Browser</source>
+        <translation type="obsolete">TOra Help Browser</translation>
+    </message>
+    <message>
+        <source>Backward one help page</source>
+        <translation>Indietro di una pagina</translation>
+    </message>
+    <message>
+        <source>Forward one help page</source>
+        <translation>Avanti di una pagina</translation>
+    </message>
+    <message>
+        <source>TOra manual</source>
+        <translation>Manuale di TOra</translation>
+    </message>
+    <message>
+        <source>Missing parent, unbalanced dl in help file content</source>
+        <translation>Nodo mancante, dl non bilanciato nel contenuto del file di help</translation>
+    </message>
+    <message>
+        <source>Help window</source>
+        <translation>Finestra dell&apos;help</translation>
+    </message>
+    <message>
+        <source>Help Browser</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <comment>Dialog|Help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHelpAddFileUI</name>
+    <message>
+        <source>Add help directory</source>
+        <translation>Aggiungi cartella di help</translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation>&amp;Sfoglia</translation>
+    </message>
+    <message>
+        <source>Canel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Table of contents file</source>
+        <translation>&amp;File di indice</translation>
+    </message>
+    <message>
+        <source>&amp;Title</source>
+        <translation>&amp;Titolo</translation>
+    </message>
+</context>
+<context>
+    <name>toHelpPrefs</name>
+    <message>
+        <source>File error</source>
+        <translation>Errore nel file</translation>
+    </message>
+</context>
+<context>
+    <name>toHelpSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>Add manuals from an Oracle index page.</source>
+        <translation>Aggiungi manuali da una pagina Oracle.</translation>
+    </message>
+    <message>
+        <source>Add manuals from an Oracle index page. This is the index page that links to the actual manuals. Not the master index page that links to different categories of manuals.</source>
+        <translation>Aggiungi manuali da una pagina index Oracle. E&apos; la pagina indice che si collega ai manuali. Non la pagina principale che si collega alle varie categorie di manuali.</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Titolo</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Nome file</translation>
+    </message>
+    <message>
+        <source>&amp;Add Manual</source>
+        <translation>&amp;Aggiungi un Manuale</translation>
+    </message>
+    <message>
+        <source>&amp;Remove Manual</source>
+        <translation>&amp;Rimuovi un Manuale</translation>
+    </message>
+    <message>
+        <source>&amp;Oracle Manuals</source>
+        <translation>&amp;Manuali Oracle</translation>
+    </message>
+</context>
+<context>
+    <name>toHighlightedText</name>
+    <message>
+        <source>Ctrl+T</source>
+        <comment>Edit|Table lookup</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHtml</name>
+    <message>
+        <source>Invalidly went beyond end of file</source>
+        <translation>Errato superamento della fine del file</translation>
+    </message>
+    <message>
+        <source>Reading HTML after eof</source>
+        <translation>Lettura dell&apos;HTML oltre EOF</translation>
+    </message>
+    <message>
+        <source>Lone &lt; at end</source>
+        <translation>&lt; isolato alla fine</translation>
+    </message>
+    <message>
+        <source>Unended tag at end</source>
+        <translation>Tag non chiuso alla fine</translation>
+    </message>
+    <message>
+        <source>Unended tag qualifier at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unended tag qualifier data at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unended quoted string at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unended qualifier data at end</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exceded qualifier max in toHtml</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tried to access string out of bounds in mid (start=%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tried to access string out of bounds in mid (size=%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tried to access string out of bounds in mid (total=%1+%2&gt;%3)</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toImport</name>
+    <message>
+        <source>Import &amp; Export</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute</source>
+        <translation type="unfinished">Esegui</translation>
+    </message>
+    <message>
+        <source>Select schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file</source>
+        <translation type="unfinished">Impossibile aprire il file</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t load codec %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Supplied more than one parameter for field function</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Need parameter for column (%1) but none specified</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Inserted %1 rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tried to define same field twice</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not mapped</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Field %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid input, non space character between delimiter that is not separator</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toImportUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished">Form1</translation>
+    </message>
+    <message>
+        <source>Operation</source>
+        <translation type="unfinished">Operazione</translation>
+    </message>
+    <message>
+        <source>&amp;Import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Export</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation type="unfinished">&amp;Sfoglia</translation>
+    </message>
+    <message>
+        <source>Fileformat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Fixed width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delimiter</source>
+        <translation type="unfinished">Delimitatore</translation>
+    </message>
+    <message>
+        <source>,</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Separator</source>
+        <translation type="unfinished">Separatore</translation>
+    </message>
+    <message>
+        <source>Variable width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Database</source>
+        <translation type="unfinished">Database</translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation type="unfinished">Schema</translation>
+    </message>
+    <message>
+        <source>Table</source>
+        <translation type="unfinished">Tabella</translation>
+    </message>
+    <message>
+        <source>Define filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include column names as first row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File codec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ignore lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Commit distance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <translation type="unfinished">Anteprima</translation>
+    </message>
+    <message>
+        <source>Column mapping</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toInvalid</name>
+    <message>
+        <source>Invalid Objects</source>
+        <translation>Oggetti non validi</translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation>Aggiorna lista</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>&amp;Invalid</source>
+        <translation>Non val&amp;ido</translation>
+    </message>
+    <message>
+        <source>Recompile selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Recompiling all invalid</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Invalid|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toInvalid:ListInvalid</name>
+    <message>
+        <source>Object</source>
+        <translation>Oggetto</translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation>Proprietario</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+</context>
+<context>
+    <name>toKeyPath</name>
+    <message>
+        <source>Couldn&apos;t find \ in path</source>
+        <translation>Impossibile trovare \ nel path</translation>
+    </message>
+</context>
+<context>
+    <name>toKeyValue</name>
+    <message>
+        <source>Couldn&apos;t find \ in path</source>
+        <translation>Impossibile trovare \ nel path</translation>
+    </message>
+</context>
+<context>
+    <name>toLicense</name>
+    <message>
+        <source>Register</source>
+        <translation>Registra</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>Esci</translation>
+    </message>
+    <message>
+        <source>Continue</source>
+        <translation>Continua</translation>
+    </message>
+    <message>
+        <source>Not a valid license key</source>
+        <translation>Chiave della licenza non valida</translation>
+    </message>
+    <message>
+        <source>Please check your name and registration key?</source>
+        <translation>Si prega di controllare il nome e la chiave di registrazione?</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Really quit?</source>
+        <translation>Uscire?</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to quit?</source>
+        <translation>Sei sicuro di voler uscire?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Si</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>No</translation>
+    </message>
+</context>
+<context>
+    <name>toLicenseUI</name>
+    <message>
+        <source>This version of TOra is unregistered.</source>
+        <translation>Questa versione di Tora non è registrata.</translation>
+    </message>
+    <message>
+        <source>3</source>
+        <translation>3</translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+    <message>
+        <source>2</source>
+        <translation>2</translation>
+    </message>
+    <message>
+        <source>&amp;Registration key</source>
+        <translation>&amp;Chiave di registrazione</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Nome</translation>
+    </message>
+</context>
+<context>
+    <name>toLineChart</name>
+    <message>
+        <source>Zoom</source>
+        <translation>Zoom</translation>
+    </message>
+    <message>
+        <source>&amp;Print...</source>
+        <translation>&amp;Stampa ...</translation>
+    </message>
+    <message>
+        <source>&amp;Open in new window</source>
+        <translation>&amp;Apri in una nuova finestra</translation>
+    </message>
+    <message>
+        <source>&amp;Chart Manager...</source>
+        <translation>&amp;Gestione grafici ...</translation>
+    </message>
+    <message>
+        <source>&amp;Properties...</source>
+        <translation>&amp;Proprietà ...</translation>
+    </message>
+    <message>
+        <source>Clear Chart</source>
+        <translation>Vuota il grafico</translation>
+    </message>
+    <message>
+        <source>Enabled charts</source>
+        <translation>Grafici abilitati</translation>
+    </message>
+    <message>
+        <source>TOra</source>
+        <translation type="obsolete">TOra</translation>
+    </message>
+</context>
+<context>
+    <name>toLineChartSetupUI</name>
+    <message>
+        <source>Chart setup</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of samples to keep</source>
+        <translation>Numero di campioni da salvare</translation>
+    </message>
+    <message>
+        <source>Y-axis</source>
+        <translation>Asse Y</translation>
+    </message>
+    <message>
+        <source>Max value</source>
+        <translation>Valore massimo</translation>
+    </message>
+    <message>
+        <source>Min value</source>
+        <translation>Valore minimo</translation>
+    </message>
+    <message>
+        <source>Auto detect</source>
+        <translation>Rileva automaticamente</translation>
+    </message>
+    <message>
+        <source>Show last value</source>
+        <translation>Mostra ultimo valore</translation>
+    </message>
+    <message>
+        <source>Show axis legend</source>
+        <translation>Mostra scala degli assi</translation>
+    </message>
+    <message>
+        <source>Show chart legend</source>
+        <translation>Mostra legenda del grafico</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Tutto</translation>
+    </message>
+    <message>
+        <source>Maximum number of samples to display</source>
+        <translation>Massimo numero di campioni da mostrare</translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation>Illimitato</translation>
+    </message>
+    <message>
+        <source>Divide chart in grids?</source>
+        <translation>Dividere il grafico in griglie?</translation>
+    </message>
+</context>
+<context>
+    <name>toListView</name>
+    <message>
+        <source>Page: %1</source>
+        <translation>Pagina: %1</translation>
+    </message>
+    <message>
+        <source>TOra</source>
+        <translation type="obsolete">TOra</translation>
+    </message>
+    <message>
+        <source>Printing page %1</source>
+        <translation>Stampa della pagina %1</translation>
+    </message>
+    <message>
+        <source>Done printing</source>
+        <translation>Stampa effettuata</translation>
+    </message>
+    <message>
+        <source>Display in editor...</source>
+        <translation>Mostra nell&apos;editor ...</translation>
+    </message>
+    <message>
+        <source>&amp;Copy field</source>
+        <translation>&amp;Copia campo</translation>
+    </message>
+    <message>
+        <source>Copy selection</source>
+        <translation>Copia la selezione</translation>
+    </message>
+    <message>
+        <source>Copy selection with header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy transposed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select all</source>
+        <translation>Seleziona tutto</translation>
+    </message>
+    <message>
+        <source>Export to file...</source>
+        <translation>Esporta su file ...</translation>
+    </message>
+    <message>
+        <source>Edit SQL...</source>
+        <translation>Modifica SQL ...</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Center</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alignment</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toLock</name>
+    <message>
+        <source>The mutex function &quot;%1&quot; failed</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toLogOutput</name>
+    <message>
+        <source>SQL Output</source>
+        <translation>Output SQL</translation>
+    </message>
+    <message>
+        <source>Log4PL/SQL</source>
+        <translation>Log4PL/SQL</translation>
+    </message>
+</context>
+<context>
+    <name>toMain</name>
+    <message>
+        <source>&amp;New Connection...</source>
+        <translation>&amp;Nuova connessione ...</translation>
+    </message>
+    <message>
+        <source>&amp;Close Connection</source>
+        <translation>&amp;Chiudi la connessione</translation>
+    </message>
+    <message>
+        <source>&amp;Commit Connection</source>
+        <translation>&amp;Commit</translation>
+    </message>
+    <message>
+        <source>&amp;Rollback Connection</source>
+        <translation>&amp;Rollback</translation>
+    </message>
+    <message>
+        <source>C&amp;urrent Connection</source>
+        <translation>Connessione Att&amp;uale</translation>
+    </message>
+    <message>
+        <source>Stop All Queries</source>
+        <translation>Blocca tutte le query</translation>
+    </message>
+    <message>
+        <source>Reread Object Cache</source>
+        <translation>Rileggi la cache degli oggetti</translation>
+    </message>
+    <message>
+        <source>&amp;Open File...</source>
+        <translation>&amp;Apri file ...</translation>
+    </message>
+    <message>
+        <source>&amp;Save</source>
+        <translation>&amp;Salva</translation>
+    </message>
+    <message>
+        <source>Save A&amp;s...</source>
+        <translation>Sal&amp;va con nome ...</translation>
+    </message>
+    <message>
+        <source>Open Session...</source>
+        <translation>Apri la sessione ...</translation>
+    </message>
+    <message>
+        <source>Save Session...</source>
+        <translation>Salva la sessione ...</translation>
+    </message>
+    <message>
+        <source>Restore Last Session</source>
+        <translation>Ripristina l&apos;ultima sessione</translation>
+    </message>
+    <message>
+        <source>Close Session</source>
+        <translation>Chiudi sessione</translation>
+    </message>
+    <message>
+        <source>&amp;Print...</source>
+        <translation>&amp;Stampa ...</translation>
+    </message>
+    <message>
+        <source>&amp;Quit</source>
+        <translation>&amp;Esci</translation>
+    </message>
+    <message>
+        <source>&amp;File</source>
+        <translation>&amp;File</translation>
+    </message>
+    <message>
+        <source>&amp;Undo</source>
+        <translation>&amp;Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Redo</source>
+        <translation>&amp;Ripeti</translation>
+    </message>
+    <message>
+        <source>Cu&amp;t</source>
+        <translation>&amp;Taglia</translation>
+    </message>
+    <message>
+        <source>&amp;Copy</source>
+        <translation>&amp;Copia</translation>
+    </message>
+    <message>
+        <source>&amp;Paste</source>
+        <translation>&amp;Incolla</translation>
+    </message>
+    <message>
+        <source>&amp;Search &amp;&amp; Replace...</source>
+        <translation>&amp;Trova &amp;&amp; Sostituisci ...</translation>
+    </message>
+    <message>
+        <source>Search &amp;Next</source>
+        <translation>Trova succ&amp;essivo</translation>
+    </message>
+    <message>
+        <source>Select &amp;All</source>
+        <translation>Seleziona &amp;Tutto</translation>
+    </message>
+    <message>
+        <source>Read All &amp;Items</source>
+        <translation>Leggi tutti gli oggett&amp;i</translation>
+    </message>
+    <message>
+        <source>&amp;Options...</source>
+        <translation>&amp;Opzioni ...</translation>
+    </message>
+    <message>
+        <source>&amp;Edit</source>
+        <translation>&amp;Modifica</translation>
+    </message>
+    <message>
+        <source>Application</source>
+        <translation>Applicazione</translation>
+    </message>
+    <message>
+        <source>Load file into editor</source>
+        <translation>Apri file</translation>
+    </message>
+    <message>
+        <source>Save file from editor</source>
+        <translation>Salva file</translation>
+    </message>
+    <message>
+        <source>Print</source>
+        <translation>Stampa</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>Ripeti</translation>
+    </message>
+    <message>
+        <source>Cut to clipboard</source>
+        <translation>Taglia</translation>
+    </message>
+    <message>
+        <source>Copy to clipboard</source>
+        <translation>Copia</translation>
+    </message>
+    <message>
+        <source>Paste from clipboard</source>
+        <translation>Incolla</translation>
+    </message>
+    <message>
+        <source>Search &amp; replace</source>
+        <translation>Trova &amp; sostituisci</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Strumenti</translation>
+    </message>
+    <message>
+        <source>C&amp;urrent Context...</source>
+        <translation>Contesto Att&amp;uale ...</translation>
+    </message>
+    <message>
+        <source>&amp;Contents...</source>
+        <translation>&amp;Contenuti ...</translation>
+    </message>
+    <message>
+        <source>&amp;About TOra...</source>
+        <translation type="obsolete">&amp;Informazioni su TOra ...</translation>
+    </message>
+    <message>
+        <source>&amp;License...</source>
+        <translation>&amp;Licenza ...</translation>
+    </message>
+    <message>
+        <source>&amp;Quotes...</source>
+        <translation>&amp;Citazioni ...</translation>
+    </message>
+    <message>
+        <source>&amp;Register...</source>
+        <translation>&amp;Registra...</translation>
+    </message>
+    <message>
+        <source>Connections</source>
+        <translation>Connessioni</translation>
+    </message>
+    <message>
+        <source>Connect to database</source>
+        <translation>Connetti al database</translation>
+    </message>
+    <message>
+        <source>Disconnect current connection</source>
+        <translation>Interrompi la connessione corrente</translation>
+    </message>
+    <message>
+        <source>Commit connection</source>
+        <translation>Commit</translation>
+    </message>
+    <message>
+        <source>Rollback connection</source>
+        <translation>Rollback</translation>
+    </message>
+    <message>
+        <source>Stop all running queries on connection</source>
+        <translation>Interrompi tutte le query su questa connessione</translation>
+    </message>
+    <message>
+        <source>&amp;Tools</source>
+        <translation>&amp;Strumenti</translation>
+    </message>
+    <message>
+        <source>C&amp;lose</source>
+        <translation>C&amp;hiudi</translation>
+    </message>
+    <message>
+        <source>Close &amp;All</source>
+        <translation>Chiudi &amp;Tutto</translation>
+    </message>
+    <message>
+        <source>&amp;Cascade</source>
+        <translation>&amp;Sovrapponi</translation>
+    </message>
+    <message>
+        <source>&amp;Tile</source>
+        <translation>&amp;Affianca verticalmente</translation>
+    </message>
+    <message>
+        <source>&amp;Window</source>
+        <translation>Fi&amp;nestra</translation>
+    </message>
+    <message>
+        <source>&amp;Help</source>
+        <translation type="unfinished">&amp;?</translation>
+    </message>
+    <message>
+        <source>Check for upgrades?</source>
+        <translation>Cerca aggiornamenti?</translation>
+    </message>
+    <message>
+        <source>Do you want TOra to automatically check
+http://tora.sourceforge.net for updates on startup?
+During this check no information about your computer
+including TOra version is transmitted to the site</source>
+        <translation>Vuoi che TOra verifichi automaticamente all&apos;avvio
+http://tora.sourceforge.net per aggiornamenti?
+Durante la verifica non verranno inviate informazioni
+riguardanti il computer o la versione di TOra</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Si</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;No</translation>
+    </message>
+    <message>
+        <source>First connection</source>
+        <translation>Prima connessione</translation>
+    </message>
+    <message>
+        <source>Can&apos;t find active connection</source>
+        <translation>Impossibile trovare la connessione attiva</translation>
+    </message>
+    <message>
+        <source>Commit work in session to %1  before closing it?</source>
+        <translation>Eseguire un Commit delle modifiche  su %1 prima di chiudere?</translation>
+    </message>
+    <message>
+        <source>Commit work?</source>
+        <translation>Salvare il lavoro nel DB?</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find specified connectionts (%1)</source>
+        <translation>Impossibile trovare la connessione (%1)</translation>
+    </message>
+    <message>
+        <source>Row:</source>
+        <translation>Riga:</translation>
+    </message>
+    <message>
+        <source>Col:</source>
+        <translation>Colonna:</translation>
+    </message>
+    <message>
+        <source>Invalid session file</source>
+        <translation>File di sessione non valido</translation>
+    </message>
+    <message>
+        <source>The session file is not valid, can&apos;t read it.</source>
+        <translation>Il file di sessione non è valido, impossibile leggere.</translation>
+    </message>
+    <message>
+        <source>Input password</source>
+        <translation>Inserisci la password</translation>
+    </message>
+    <message>
+        <source>Enter password for %1</source>
+        <translation>Inserisci la password per %1</translation>
+    </message>
+    <message>
+        <source>Message flood, temporary disabling of message box error reporting from now on.
+Restart TOra to reenable. You probably have a too high refreshrate in some tool.</source>
+        <translation type="obsolete">Troppi messaggi, i messaggi di errore vengono temporaneamente disabilitati.
+Riavvia TORa per riattivarli. Probabilmente hai un intervallo di aggiornamento troppo breve su qualche strumento.</translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation>Informazioni</translation>
+    </message>
+    <message>
+        <source>You can enable this through the Global Settings in the Options (Edit menu)</source>
+        <translation>Puoi abilitarlo tramite i Global Settings nelle Opzioni (menù Edit)</translation>
+    </message>
+    <message>
+        <source>A new version of TOra (%1) is available from
+
+http://tora.sourceforge.net</source>
+        <translation>Una nuova versione di TOra (%1) è disponibile presso
+
+http://tora.sourceforge.net</translation>
+    </message>
+    <message>
+        <source>Message flood, temporary disabling of message box error reporting from now on.
+Restart to reenable. You probably have a too high refreshrate in some tool.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <comment>File|New connection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <comment>File|File open</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <comment>File|File save</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+C</source>
+        <comment>File|Commit</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <comment>File|Stop all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+&lt;</source>
+        <comment>File|Rollback</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+U</source>
+        <comment>File|Current connection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Insert</source>
+        <comment>Edit|Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift+Delete</source>
+        <comment>Edit|Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift+Insert</source>
+        <comment>Edit|Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+A</source>
+        <comment>Edit|Select all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <comment>Edit|Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <comment>Edit|Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+X</source>
+        <comment>Edit|Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+C</source>
+        <comment>Edit|Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+V</source>
+        <comment>Edit|Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <comment>Edit|Search</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F3</source>
+        <comment>Edit|Search next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <comment>Help|Help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMarkedText</name>
+    <message>
+        <source>TOra</source>
+        <translation type="obsolete">TOra</translation>
+    </message>
+    <message>
+        <source>Printing page %1</source>
+        <translation>Stampa della pagina %1</translation>
+    </message>
+    <message>
+        <source>Done printing</source>
+        <translation>Stampa effettuata</translation>
+    </message>
+    <message>
+        <source>Page: %1</source>
+        <translation>Pagina: %1</translation>
+    </message>
+    <message>
+        <source>File opened successfully</source>
+        <translation>File aperto correttamente</translation>
+    </message>
+    <message>
+        <source>Save changes?</source>
+        <translation>Salvare le modifiche?</translation>
+    </message>
+    <message>
+        <source>The editor has been changed, do you want to save them
+before opening a new file?</source>
+        <translation>L&apos;editor è stato cambiato, vuoi salvare le modifiche
+prima di aprire un nuovo file?</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Si</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;No</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Incremental search</source>
+        <translation>Ricerca incrementale</translation>
+    </message>
+    <message>
+        <source>Ctrl+A</source>
+        <comment>Edit|Select All</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMemoEditor</name>
+    <message>
+        <source>Memo Editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save changes</source>
+        <translation>Salva le modifiche</translation>
+    </message>
+    <message>
+        <source>Open file</source>
+        <translation>Apri file</translation>
+    </message>
+    <message>
+        <source>Save file</source>
+        <translation>Salva file</translation>
+    </message>
+    <message>
+        <source>Cut to clipboard</source>
+        <translation>Taglia</translation>
+    </message>
+    <message>
+        <source>Copy to clipboard</source>
+        <translation>Copia</translation>
+    </message>
+    <message>
+        <source>Paste from clipboard</source>
+        <translation>Incolla</translation>
+    </message>
+    <message>
+        <source>First column</source>
+        <translation>Prima colonna</translation>
+    </message>
+    <message>
+        <source>Previous column</source>
+        <translation>Colonna precedente</translation>
+    </message>
+    <message>
+        <source>Next column</source>
+        <translation>Colonna successiva</translation>
+    </message>
+    <message>
+        <source>Last column</source>
+        <translation>Ultima colonna</translation>
+    </message>
+    <message>
+        <source>NULL</source>
+        <translation>NULL</translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Memo Editor|Save changes</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMessageUI</name>
+    <message>
+        <source>TOra warning message</source>
+        <translation type="obsolete">Avviso di TOra</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Display alerts in statusbar only.</source>
+        <translation>Mostra gli avvisi solo nella barra di stato.</translation>
+    </message>
+    <message>
+        <source>Display alerts in messagebar instead of poping up a dialog with a warning.</source>
+        <translation>Mostra gli avvisi nella barra dei messaggi invece di aprire una finestra con l&apos;avviso.</translation>
+    </message>
+    <message>
+        <source>Warning message</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMySQLExtract</name>
+    <message>
+        <source>Expected block from show create table for %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, couldn&apos;t parse ALTER TABLE clause</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to describe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to drop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to migrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toNewConnection</name>
+    <message>
+        <source>Provider</source>
+        <translation>Tipo connessione</translation>
+    </message>
+    <message>
+        <source>Host</source>
+        <translation>Host</translation>
+    </message>
+    <message>
+        <source>Database</source>
+        <translation>Database</translation>
+    </message>
+    <message>
+        <source>Username</source>
+        <translation>Nome utente</translation>
+    </message>
+    <message>
+        <source>No connection provider</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No available connection provider, plugins probably missing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unable to connect to the database.
+</source>
+        <translation>Impossibile connettersi al database.</translation>
+    </message>
+    <message>
+        <source>Unable to connect to the database</source>
+        <translation>Impossibile connettersi al database</translation>
+    </message>
+    <message>
+        <source>Enter password</source>
+        <translation>Inserisci la password</translation>
+    </message>
+    <message>
+        <source>Enter password to use for connection.</source>
+        <translation>Inserire la password da usare per la connessione.</translation>
+    </message>
+</context>
+<context>
+    <name>toNewConnectionUI</name>
+    <message>
+        <source>New connection</source>
+        <translation>Nuova connessione</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Previous connections</source>
+        <translation>&amp;Archivio connessioni</translation>
+    </message>
+    <message>
+        <source>A list of previous connections. Select to bring over to the right.</source>
+        <translation>Lista di connessioni utilizzate di recente. Seleziona per attivare.</translation>
+    </message>
+    <message>
+        <source>&amp;Username</source>
+        <translation>&amp;Nome utente</translation>
+    </message>
+    <message>
+        <source>Username to connect with</source>
+        <translation>Username con cui connettersi</translation>
+    </message>
+    <message>
+        <source>&amp;Password</source>
+        <translation>&amp;Password</translation>
+    </message>
+    <message>
+        <source>Password to connect with.</source>
+        <translation>Password da usare per la connessione.</translation>
+    </message>
+    <message>
+        <source>Connection provider</source>
+        <translation>Fonte dati</translation>
+    </message>
+    <message>
+        <source>Use &amp;SQL*Net</source>
+        <translation>Usa &amp;SQL*Net</translation>
+    </message>
+    <message>
+        <source>Wether or not connect using the listener or directly to a local database.</source>
+        <translation>Connessione diretta a database locale o tramite listener.</translation>
+    </message>
+    <message>
+        <source>&amp;Connection Mode</source>
+        <translation>&amp;Tipo connessione</translation>
+    </message>
+    <message>
+        <source>Mode of the connection. If you don&apos;t understand select normal.</source>
+        <translation>Modo di connessione. Se non sapete cosa è, scegliete normale.</translation>
+    </message>
+    <message>
+        <source>&amp;Database</source>
+        <translation>&amp;Database</translation>
+    </message>
+    <message>
+        <source>Select the database ID to connect to.</source>
+        <translation>Seleziona il database ID a cui connettersi.</translation>
+    </message>
+    <message>
+        <source>&amp;Host</source>
+        <translation>&amp;Host</translation>
+    </message>
+</context>
+<context>
+    <name>toNoBlockQuery</name>
+    <message>
+        <source>Unknown exception</source>
+        <translation>Errore sconosciuto</translation>
+    </message>
+    <message>
+        <source>Reading past end of query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open query</source>
+        <translation>Impossibile aprire la query</translation>
+    </message>
+    <message>
+        <source>Failed to start background query thread</source>
+        <translation>Impossibile avviare la query in background</translation>
+    </message>
+    <message>
+        <source>Restarting query in own connection</source>
+        <translation>Riavvio della query in una connessione separata</translation>
+    </message>
+</context>
+<context>
+    <name>toNow</name>
+    <message>
+        <source>Unexpected error</source>
+        <translation>Errore inatteso</translation>
+    </message>
+</context>
+<context>
+    <name>toOracleConnection</name>
+    <message>
+        <source>Password expired</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter new password</source>
+        <translation type="unfinished">Inserisci la nuova password</translation>
+    </message>
+    <message>
+        <source>Enter password again for confirmation</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The two passwords doesn&apos;t match</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toOracleExtract</name>
+    <message>
+        <source>Couldn&apos;t find source for of %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Displaying source of wrong type for %1. Got %2 expected 0.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>-- Context indexes can be quite complicated depending upon the
+-- used parameters. The following is an attempt to recreate this
+-- context index. But, a close scrutiny of the following code is
+-- strongly recommended.
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find primary key of %1.%2</source>
+        <translation>Impossibile trovare la chiave primaria di %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find materialised table %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find log %1.%2</source>
+        <translation>Impossibile trovare il log %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find index partitions for %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find partition range %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, result should be 18 in segment attributes (Was %1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, result should be 18 in segment attributes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Constraint %1.%2 doesn&apos;t exist</source>
+        <translation>La Constraint %1.%2 non esiste</translation>
+    </message>
+    <message>
+        <source>DBLink %1.%2 doesn&apos;t exist</source>
+        <translation>Il DBLink %1.%2 non esiste</translation>
+    </message>
+    <message>
+        <source>Exchange index %1.%2 doesn&apos;t exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exchange table %1.%2 doesn&apos;t exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find index %1.%2</source>
+        <translation>Impossibile trovare l&apos;indice %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find profile %1</source>
+        <translation>Impossibile trovare il profilo %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find role %1</source>
+        <translation>Impossibile trovare il ruolo %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find sequence %1</source>
+        <translation>Impossibile trovare la sequenza %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find synonym %1.%2</source>
+        <translation>Impossibile trovare il sinonimo %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find table %1.%2</source>
+        <translation>Impossibile trovare la tabella %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find tablespace %1</source>
+        <translation>Impossibile trovare il tablespace %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find trigger %1.%2</source>
+        <translation>Impossibile trovare il trigger %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find user %1</source>
+        <translation>Impossibile trovare l&apos;utente %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find view %1.%2</source>
+        <translation>Impossibile trovare la vista %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find constraint %1.%2</source>
+        <translation>Impossibile trovare la constraint %1.%2</translation>
+    </message>
+    <message>
+        <source>Missing ON description item on index</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find any COLUMN on index</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to describe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to drop</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toOracleSettingUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>&amp;Default date format</source>
+        <translation>Formato &amp;data standard</translation>
+    </message>
+    <message>
+        <source>The default dateformat to use when querying the database.</source>
+        <translation>Il formato data standard da usare nelle query al database.</translation>
+    </message>
+    <message>
+        <source>&amp;Checkpoint name</source>
+        <translation>Nome del &amp;Checkpoint</translation>
+    </message>
+    <message>
+        <source>The name of the checkpoint used when needed to rollback work.</source>
+        <translation>Il nome del checkpoint usato per eseguire il rollback.</translation>
+    </message>
+    <message>
+        <source>&amp;Max long and LOB data length</source>
+        <translation>&amp;Massima lunghezza dei dati &quot;long&quot; e &quot;blob&quot;</translation>
+    </message>
+    <message>
+        <source>Max length to read from LOB or LONG data fields. LONG:s can not be specified unlimited but will be defaulted to 33000 if unlimited.</source>
+        <translation>Massima volume letto da campi LOB o LONG. I LONG non possono essere definiti come illimitati ma saranno limitati a 33000 se illimitati.</translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation>Illimitato</translation>
+    </message>
+    <message>
+        <source>Create Table</source>
+        <translation>Crea Tabella</translation>
+    </message>
+    <message>
+        <source>&amp;Explain plan table</source>
+        <translation>Tabella per &amp;Explain</translation>
+    </message>
+    <message>
+        <source>Name of the table to put explain plan output in.</source>
+        <translation>Nome della tabella in cui mettere l&apos;output dell&apos;explain plan.</translation>
+    </message>
+    <message>
+        <source>&amp;Keep plans</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Keep records for the plan explanations in the plan table.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Maximum cursors to keep open</source>
+        <translation>Numero massimo di cursori da mantenere aperti</translation>
+    </message>
+</context>
+<context>
+    <name>toOutput</name>
+    <message>
+        <source>SQL Output</source>
+        <translation>Output SQL</translation>
+    </message>
+    <message>
+        <source>Poll for output now</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable or disable getting SQL output.</source>
+        <translation>Abilita o disabilita il recupero dell&apos;SQL in output.</translation>
+    </message>
+    <message>
+        <source>Clear output</source>
+        <translation>Elimina output</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Aggiorna</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>Output enabled</source>
+        <translation>Output abilitato</translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation>&amp;Cambia intervallo di Aggiornamento</translation>
+    </message>
+    <message>
+        <source>&amp;Output</source>
+        <translation>&amp;Output</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t enable/disable output for session</source>
+        <translation>Impossibile abilitare/disabilitare l&apos;output per la sessione</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Output|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Output|Enable</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Backspace</source>
+        <comment>Output|Clear output</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Output|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toOutputPrefs</name>
+    <message>
+        <source>SQL Output</source>
+        <translation>Output SQL</translation>
+    </message>
+    <message>
+        <source>&amp;Polling timeout</source>
+        <translation>Intervall&amp;o di controllo</translation>
+    </message>
+    <message>
+        <source>Time between trying to poll for output.</source>
+        <translation>Intervallo di tempo tra due verifiche dell&apos;output.</translation>
+    </message>
+    <message>
+        <source>Default &amp;source</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Log4PL/SQL &amp;User</source>
+        <translation>&amp;Utente per Log4PL/SQL</translation>
+    </message>
+</context>
+<context>
+    <name>toParamGet</name>
+    <message>
+        <source>Define binding variables</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Missing field name</source>
+        <translation>Nome campo mancante</translation>
+    </message>
+    <message>
+        <source>NULL</source>
+        <translation type="unfinished">NULL</translation>
+    </message>
+    <message>
+        <source>Edit</source>
+        <translation>Modifica</translation>
+    </message>
+    <message>
+        <source>Aborted execution</source>
+        <translation>Esecuzione abbandonata</translation>
+    </message>
+</context>
+<context>
+    <name>toPasswordTool</name>
+    <message>
+        <source>Enter new password</source>
+        <translation>Inserisci la nuova password</translation>
+    </message>
+    <message>
+        <source>Enter new password again for confirmation</source>
+        <translation>Inserisci la nuova password per conferma</translation>
+    </message>
+    <message>
+        <source>Passwords doesn&apos;t match</source>
+        <translation>Le due password non corrispondono</translation>
+    </message>
+    <message>
+        <source>The two givens passwords doesn&apos;t match, please try again</source>
+        <translation>Le due password non corrispondono, riprova</translation>
+    </message>
+</context>
+<context>
+    <name>toPieChart</name>
+    <message>
+        <source>&amp;Print...</source>
+        <translation>&amp;Stampa ...</translation>
+    </message>
+    <message>
+        <source>&amp;Open in new window</source>
+        <translation>&amp;Apri in una nuova finestra</translation>
+    </message>
+    <message>
+        <source>All values are 0 in this chart</source>
+        <translation>Tutti i valori sono a 0 in questo grafico</translation>
+    </message>
+    <message>
+        <source>TOra</source>
+        <translation type="obsolete">TOra</translation>
+    </message>
+</context>
+<context>
+    <name>toPreferences</name>
+    <message>
+        <source>Global Settings</source>
+        <translation>Impostazioni generali</translation>
+    </message>
+    <message>
+        <source>Editor Settings</source>
+        <translation>Impostazioni dell&apos;editor</translation>
+    </message>
+    <message>
+        <source>Database Settings</source>
+        <translation>Impostazioni del database</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Strumenti</translation>
+    </message>
+</context>
+<context>
+    <name>toPreferencesUI</name>
+    <message>
+        <source>Preferences</source>
+        <translation>Impostazioni</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Help</source>
+        <translation>&amp;Aiuto</translation>
+    </message>
+</context>
+<context>
+    <name>toProfiler</name>
+    <message>
+        <source>PL/SQL Profiler</source>
+        <translation>PL/SQL Profiler</translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation>Aggiorna lista</translation>
+    </message>
+    <message>
+        <source>Repeat run</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Comment</source>
+        <translation>Commento</translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation>Sconosciuto</translation>
+    </message>
+    <message>
+        <source>Run profiling in background</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute current profiling</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Script</source>
+        <translation>Script</translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation>Risultato</translation>
+    </message>
+    <message>
+        <source>Profiler tables doesn&apos;t exist</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Profiler tables doesn&apos;t exist. Should TOra
+try to create them in the current schema?</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Si</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;No</translation>
+    </message>
+    <message>
+        <source>Select run</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 runs</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Something went wrong collecting statistics</source>
+        <translation>Errore durante la raccolta delle statistiche</translation>
+    </message>
+</context>
+<context>
+    <name>toProject</name>
+    <message>
+        <source>SQL Project</source>
+        <translation>Progetto SQL</translation>
+    </message>
+    <message>
+        <source>Add file to project</source>
+        <translation>Aggiungi file al progetto</translation>
+    </message>
+    <message>
+        <source>Remove file from project</source>
+        <translation>Rimuovi file dal progetto</translation>
+    </message>
+    <message>
+        <source>SQL project</source>
+        <translation>Progetto SQL</translation>
+    </message>
+    <message>
+        <source>Save project</source>
+        <translation>Salva il progetto</translation>
+    </message>
+    <message>
+        <source>Add new subproject</source>
+        <translation>Aggiungi un nuovo sottoprogetto</translation>
+    </message>
+    <message>
+        <source>Generate SQL for this project</source>
+        <translation>Genera l&apos;SQL per questo progetto</translation>
+    </message>
+    <message>
+        <source>Move up in project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move down in project</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File</source>
+        <translation>File</translation>
+    </message>
+    <message>
+        <source>Size</source>
+        <translation>Dimensione</translation>
+    </message>
+    <message>
+        <source>untitled.tpr</source>
+        <translation>untitled.tpr</translation>
+    </message>
+    <message>
+        <source>
+
+-- Start of project %1
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>
+
+-- Start of file %1
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toQValue</name>
+    <message>
+        <source>Unknown type of query value</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toQuery</name>
+    <message>
+        <source>Query aborted</source>
+        <translation>Query abbandonata</translation>
+    </message>
+</context>
+<context>
+    <name>toReadFile</name>
+    <message>
+        <source>Couldn&apos;t open file %1.</source>
+        <translation>Impossibile aprire il file %1.</translation>
+    </message>
+    <message>
+        <source>Encountered problems read configuration</source>
+        <translation>Problemi nella lettura della configurazione</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t download file</source>
+        <translation>Impossibile scaricare il file</translation>
+    </message>
+</context>
+<context>
+    <name>toRefreshCreate</name>
+    <message>
+        <source>None</source>
+        <translation>Nessuno</translation>
+    </message>
+    <message>
+        <source>2 seconds</source>
+        <translation>2 secondi</translation>
+    </message>
+    <message>
+        <source>5 seconds</source>
+        <translation>5 secondi</translation>
+    </message>
+    <message>
+        <source>10 seconds</source>
+        <translation>10 secondi</translation>
+    </message>
+    <message>
+        <source>30 seconds</source>
+        <translation>30 secondi</translation>
+    </message>
+    <message>
+        <source>1 min</source>
+        <translation>1 min</translation>
+    </message>
+    <message>
+        <source>5 min</source>
+        <translation>5 min</translation>
+    </message>
+    <message>
+        <source>10 min</source>
+        <translation>10 min</translation>
+    </message>
+</context>
+<context>
+    <name>toRefreshParse</name>
+    <message>
+        <source>Unknown timer value</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toReport</name>
+    <message>
+        <source>&lt;H4&gt;COLUMNS&lt;/H4&gt;
+&lt;TABLE WIDTH=100% BORDER=0&gt;&lt;TR&gt;&lt;TH ALIGN=left WIDTH=25%&gt;Name&lt;/TH&gt;</source>
+        <translation>&lt;H4&gt;COLONNE&lt;/H4&gt;
+&lt;TABLE WIDTH=100% BORDER=0&gt;&lt;TR&gt;&lt;TH ALIGN=left WIDTH=25%&gt;Nome&lt;/TH&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;TH ALIGN=left WIDTH=25%&gt;Definition&lt;/TH&gt;</source>
+        <translation>&lt;TH ALIGN=left WIDTH=25%&gt;Definizione&lt;/TH&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;TH ALIGN=left WIDTH=50%&gt;Description&lt;/TH&gt;</source>
+        <translation>&lt;TH ALIGN=left WIDTH=50%&gt;Descrizione&lt;/TH&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Report on database %7&lt;/TITLE&gt;&lt;/HEAD&gt;
+&lt;BODY&gt;&lt;H1&gt;Report on database %8&lt;/H1&gt;
+&lt;TABLE BORDER=0&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;Generated by:&lt;/TD&gt;&lt;TD VALIGN=top&gt;TOra, Version %1&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;At:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%2&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;From:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%3, an %4 %5 database&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;On:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%6&lt;/TD&gt;&lt;/TR&gt;
+&lt;/TABLE&gt;
+</source>
+        <translation>&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Report sul database %7&lt;/TITLE&gt;&lt;/HEAD&gt;
+&lt;BODY&gt;&lt;H1&gt;Report sul database %8&lt;/H1&gt;
+&lt;TABLE BORDER=0&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;Generato da:&lt;/TD&gt;&lt;TD VALIGN=top&gt;TOra, Versione %1&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;Su:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%2&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;Da:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%3, un database %4 %5&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;Il:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%6&lt;/TD&gt;&lt;/TR&gt;
+&lt;/TABLE&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;H1&gt;Global Objects&lt;/H1&gt;
+</source>
+        <translation>&lt;H1&gt;Oggetti Globali&lt;/H1&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;H1&gt;Public&lt;/H1&gt;</source>
+        <translation>&lt;H1&gt;Public&lt;/H1&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;H1&gt;Schema %1&lt;/H1&gt;
+</source>
+        <translation>&lt;H1&gt;Schema %1&lt;/H1&gt;
+</translation>
+    </message>
+</context>
+<context>
+    <name>toResultBar</name>
+    <message>
+        <source>Edit SQL...</source>
+        <translation>Modifica SQL ...</translation>
+    </message>
+</context>
+<context>
+    <name>toResultCols</name>
+    <message>
+        <source>Default value: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Distinct values: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Low value: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>High value: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Density: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of nulls: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of histogram buckets: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Last analyzed: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sample size: &lt;B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Average column size: &lt;B&gt;</source>
+        <translation>Dimensione media della colonna: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;/B&gt; synonym for &lt;B&gt;</source>
+        <translation>&lt;/B&gt; sinonimo per &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>(Object cache not ready)</source>
+        <translation>(La cache degli oggetti non è pronta)</translation>
+    </message>
+</context>
+<context>
+    <name>toResultCols::resultCols</name>
+    <message>
+        <source>Column Name</source>
+        <translation>Nome colonna</translation>
+    </message>
+    <message>
+        <source>Data Type</source>
+        <translation>Tipo dati</translation>
+    </message>
+    <message>
+        <source>Comments</source>
+        <translation>Commenti</translation>
+    </message>
+    <message>
+        <source>Description of %1</source>
+        <translation>Descrizione di %1</translation>
+    </message>
+    <message>
+        <source>Failed to describe %1</source>
+        <translation>Impossibile descrivere %1</translation>
+    </message>
+</context>
+<context>
+    <name>toResultConstraint</name>
+    <message>
+        <source>Constraint Name</source>
+        <translation>Nome della Constraint</translation>
+    </message>
+    <message>
+        <source>Condition</source>
+        <translation>Condizione</translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation>Abilitato</translation>
+    </message>
+    <message>
+        <source>Delete Rule</source>
+        <translation>Regola di Cancellazione</translation>
+    </message>
+    <message>
+        <source>Generated</source>
+        <translation>Generato</translation>
+    </message>
+</context>
+<context>
+    <name>toResultContent</name>
+    <message>
+        <source>Content editor</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Define filter for editor</source>
+        <translation>Definisci un filtro</translation>
+    </message>
+    <message>
+        <source>Remove any filter</source>
+        <translation>Rimuovi ogni filtro</translation>
+    </message>
+    <message>
+        <source>Add a new record</source>
+        <translation>Aggiungi un nuovo record</translation>
+    </message>
+    <message>
+        <source>Save changes</source>
+        <translation>Salva le modifiche</translation>
+    </message>
+    <message>
+        <source>Discard changes</source>
+        <translation>Scarta le modifiche</translation>
+    </message>
+    <message>
+        <source>Delete current record from table</source>
+        <translation>Cancella il record corrente dalla tabella</translation>
+    </message>
+    <message>
+        <source>Go to first row</source>
+        <translation>Vai alla prima riga</translation>
+    </message>
+    <message>
+        <source>Go to previous row</source>
+        <translation>Vai alla riga precedente</translation>
+    </message>
+    <message>
+        <source>Go to next row</source>
+        <translation>Vai alla prossima riga</translation>
+    </message>
+    <message>
+        <source>Go to last row</source>
+        <translation>Vai all&apos;ultima riga</translation>
+    </message>
+    <message>
+        <source>Toggle between table or single record editing</source>
+        <translation>Visualizzazione tabella o singolo record</translation>
+    </message>
+    <message>
+        <source>Remove filter</source>
+        <translation>Rimuovi il filtro</translation>
+    </message>
+    <message>
+        <source>Remove the filter for this table only or for all tables.</source>
+        <translation>Rimuovere il filtro solo per questa tabella o per tutte.</translation>
+    </message>
+    <message>
+        <source>&amp;All</source>
+        <translation type="unfinished">&amp;Tutte</translation>
+    </message>
+    <message>
+        <source>&amp;This</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Duplicate an existing record</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultContentEditor</name>
+    <message>
+        <source>&amp;Display in editor...</source>
+        <translation>&amp;Mostra nell&apos;editor ...</translation>
+    </message>
+    <message>
+        <source>&amp;Copy field</source>
+        <translation>&amp;Copia campo</translation>
+    </message>
+    <message>
+        <source>&amp;Paste field</source>
+        <translation>&amp;Incolla campo</translation>
+    </message>
+    <message>
+        <source>Copy selection</source>
+        <translation>Copia la selezione</translation>
+    </message>
+    <message>
+        <source>Copy selection with header</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Copy transposed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Delete record</source>
+        <translation>Cancella recor&amp;d</translation>
+    </message>
+    <message>
+        <source>Select all</source>
+        <translation>Seleziona tutto</translation>
+    </message>
+    <message>
+        <source>Export to file...</source>
+        <translation>Esporta su file ...</translation>
+    </message>
+    <message>
+        <source>Read all</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Can&apos;t use these on toResultContent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unsaved data in contents, select other row to store</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reading all values, moving cursor to end when done</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Edit cancelled</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>This table contains only LOB/LONG columns and can not be edited</source>
+        <translation>Questa tabella contiene sono colonne di tipo LOB/LONG e non può essere editata</translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation>Nessun cambiamento effettuato</translation>
+    </message>
+    <message>
+        <source>Saved row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Content of %1.%2</source>
+        <translation>Contenuto di %1.%2</translation>
+    </message>
+</context>
+<context>
+    <name>toResultContentFilterUI</name>
+    <message>
+        <source>Content editor filter settings</source>
+        <translation>Definizione filtri per l&apos;editor</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Selection &amp;criteria</source>
+        <translation>&amp;Criteri di selezione</translation>
+    </message>
+    <message>
+        <source>Selection criteria to use getting items to edit. Same as after where in a select clause.</source>
+        <translation>Criterio di selezione da usare per ottenere gli oggetti da editare.  Simile a ciò che segue la WHERE di una SELECT.</translation>
+    </message>
+    <message>
+        <source>Sort &amp;order. Separate columns with comma.</source>
+        <translation>&amp;Ordinamento dati. Separare le colonne con virgole.</translation>
+    </message>
+    <message>
+        <source>The sort order to use when retreiving data from the database.</source>
+        <translation>L&apos;ordinamento da usare per i dati estratti dal database.</translation>
+    </message>
+    <message>
+        <source>Table &amp;columns</source>
+        <translation>&amp;Colonne della tabella</translation>
+    </message>
+    <message>
+        <source>Available column names in table.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Use for all tables</source>
+        <translation>Usa per tutte le tabelle</translation>
+    </message>
+</context>
+<context>
+    <name>toResultContentSingle</name>
+    <message>
+        <source>Edit</source>
+        <translation>Modifica</translation>
+    </message>
+    <message>
+        <source>Internal error, save different row than current in content editor</source>
+        <translation>Errore interno, salvata una riga differente da quella presente nell&apos;editor</translation>
+    </message>
+</context>
+<context>
+    <name>toResultDepend</name>
+    <message>
+        <source>Owner</source>
+        <translation>Proprietario</translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation>Nome</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+    <message>
+        <source>Dependency</source>
+        <translation>Dipendenze</translation>
+    </message>
+</context>
+<context>
+    <name>toResultExtract</name>
+    <message>
+        <source>Object not found</source>
+        <translation>Oggetto non trovato</translation>
+    </message>
+</context>
+<context>
+    <name>toResultIndexes</name>
+    <message>
+        <source>Index Name</source>
+        <translation>Nome indice</translation>
+    </message>
+    <message>
+        <source>Columns</source>
+        <translation>Colonne</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+    <message>
+        <source>Unique</source>
+        <translation>Unico</translation>
+    </message>
+</context>
+<context>
+    <name>toResultLine</name>
+    <message>
+        <source>Edit SQL...</source>
+        <translation>Modifica SQL ...</translation>
+    </message>
+</context>
+<context>
+    <name>toResultListFormat</name>
+    <message>
+        <source>Text</source>
+        <translation>Testo</translation>
+    </message>
+    <message>
+        <source>Tab delimited</source>
+        <translation>Delimitato da tabulazioni</translation>
+    </message>
+    <message>
+        <source>CSV</source>
+        <translation>CSV</translation>
+    </message>
+    <message>
+        <source>HTML</source>
+        <translation>HTML</translation>
+    </message>
+</context>
+<context>
+    <name>toResultListFormatUI</name>
+    <message>
+        <source>Choose format</source>
+        <translation>Scegli il formato</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Choose format of exported file.</source>
+        <translation>&amp;Scegli il formato del file da esportare.</translation>
+    </message>
+    <message>
+        <source>Separator</source>
+        <translation>Separatore</translation>
+    </message>
+    <message>
+        <source>Delimiter</source>
+        <translation>Delimitatore</translation>
+    </message>
+</context>
+<context>
+    <name>toResultLock</name>
+    <message>
+        <source>Session</source>
+        <translation>Sessione</translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation>Schema</translation>
+    </message>
+    <message>
+        <source>Osuser</source>
+        <translation>Utente di sistema</translation>
+    </message>
+    <message>
+        <source>Program</source>
+        <translation>Programma</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Request</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Oggetto</translation>
+    </message>
+    <message>
+        <source>Grabbed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Requested</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultLong</name>
+    <message>
+        <source>Will not reexecute same query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 rows processed</source>
+        <translation>%1 righe processate</translation>
+    </message>
+    <message>
+        <source>Query executed</source>
+        <translation>Query eseguita</translation>
+    </message>
+    <message>
+        <source>Statement executed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Can only hide last column in query</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultObject</name>
+    <message>
+        <source>Internal error, toResult is not a descendant of toResult</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultParam</name>
+    <message>
+        <source>Parameter editor</source>
+        <translation>Editor dei parametri</translation>
+    </message>
+    <message>
+        <source>Display hidden parameters. This will only word if you are logged in as the sys user.</source>
+        <translation>Mostra i parametri nascosti. Funziona solo se connessi come utente SYS.</translation>
+    </message>
+    <message>
+        <source>Generate pfile</source>
+        <translation>Genera pfile</translation>
+    </message>
+    <message>
+        <source>Apply changes to system</source>
+        <translation>Applica le modifiche al sistema</translation>
+    </message>
+    <message>
+        <source>Apply changes to session</source>
+        <translation>Applica le modifiche solo alla sessione</translation>
+    </message>
+    <message>
+        <source>Drop current changes</source>
+        <translation>Annulla i cambiamenti</translation>
+    </message>
+    <message>
+        <source>Changed</source>
+        <translation>Cambiato</translation>
+    </message>
+    <message>
+        <source># Generated by TOra version %1
+
+</source>
+        <translation># Generato da TOra versione %1
+
+</translation>
+    </message>
+</context>
+<context>
+    <name>toResultParam:ListParam</name>
+    <message>
+        <source>Changed</source>
+        <translation>Cambiato</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descrizione</translation>
+    </message>
+    <message>
+        <source>Parameter</source>
+        <translation>Parametro</translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation>Valore</translation>
+    </message>
+</context>
+<context>
+    <name>toResultPlan</name>
+    <message>
+        <source>Operation</source>
+        <translation>Operazione</translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Object name</source>
+        <translation>Nome oggetto</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cost</source>
+        <translation>Costo</translation>
+    </message>
+    <message>
+        <source>Bytes</source>
+        <translation>Bytes</translation>
+    </message>
+    <message>
+        <source>Cardinality</source>
+        <translation>Cardinalità</translation>
+    </message>
+    <message>
+        <source>Plan table doesn&apos;t exist</source>
+        <translation>La tabella di explain non esiste</translation>
+    </message>
+    <message>
+        <source>Specified plan table %1 didn&apos;t exist.
+Should TOra try to create it?</source>
+        <translation>La tabella di explain %1 non esiste.
+Crearla adesso?</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Si</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;No</translation>
+    </message>
+</context>
+<context>
+    <name>toResultReferences</name>
+    <message>
+        <source>Owner</source>
+        <translation>Proprietario</translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Oggetto</translation>
+    </message>
+    <message>
+        <source>Constraint</source>
+        <translation>Constraint</translation>
+    </message>
+    <message>
+        <source>Condition</source>
+        <translation>Condizione</translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation>Abilitato</translation>
+    </message>
+    <message>
+        <source>Delete Rule</source>
+        <translation>Regola di Cancellazione</translation>
+    </message>
+    <message>
+        <source>foreign key (%1) references %2.%3(%4)</source>
+        <translation>la chiave esterna (%1) si riferisce a %2.%3(%4)</translation>
+    </message>
+    <message>
+        <source>DEPENDENCY</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultResources:Information</name>
+    <message>
+        <source>Buffer Gets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disk Reads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Executions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>First Load Time</source>
+        <translation>Data di primo caricamento</translation>
+    </message>
+    <message>
+        <source>Invalidations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Kept Versions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Loaded Versions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Loads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Open Versions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Optimizer Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parsing Schema Id</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parsing User Id</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Persistent Mem</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rows Processed</source>
+        <translation>Righe Processate</translation>
+    </message>
+    <message>
+        <source>Runtime Mem</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Serializable Aborts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sharable Mem</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sorts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Users Executing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Users Opening</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultStats</name>
+    <message>
+        <source>Name</source>
+        <translation>Nome</translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation>Valore</translation>
+    </message>
+    <message>
+        <source>Delta</source>
+        <translation>Delta</translation>
+    </message>
+    <message>
+        <source>Can&apos;t change session on system statistics</source>
+        <translation>Non è possibile cambiare sessione sulle statistiche di sistema</translation>
+    </message>
+</context>
+<context>
+    <name>toResultStorage</name>
+    <message>
+        <source>Name</source>
+        <translation>Nome</translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation>Stato</translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation>Informazioni</translation>
+    </message>
+    <message>
+        <source>Contents</source>
+        <translation>Contenuti</translation>
+    </message>
+    <message>
+        <source>Logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Size (%1)</source>
+        <translation>Dimensione (%1)</translation>
+    </message>
+    <message>
+        <source>Free (%1)</source>
+        <translation>Libero (%1)</translation>
+    </message>
+    <message>
+        <source>Autoextend (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Used/Free/Autoextend</source>
+        <translation>Utilizzato/Libero/Autoextend</translation>
+    </message>
+    <message>
+        <source>Available</source>
+        <translation>Disponibile</translation>
+    </message>
+    <message>
+        <source>Coalesced</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Max free (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Free fragments</source>
+        <translation>Frammenti liberi</translation>
+    </message>
+    <message>
+        <source>toResultStorage</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find tablespace parent %1 for datafile</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>No tablespace selected</source>
+        <translation>Nessun tablespace selezionato</translation>
+    </message>
+    <message>
+        <source>Weird, empty tablespace name</source>
+        <translation>Strano, nome del tablespace vuoto</translation>
+    </message>
+    <message>
+        <source>No file selected</source>
+        <translation>Nessun file selezionato</translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation>Tablespace</translation>
+    </message>
+</context>
+<context>
+    <name>toResultView</name>
+    <message>
+        <source>Can only hide last column in query</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reading all entries</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Read All</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRollback</name>
+    <message>
+        <source>Rollback analyzer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Update segment list</source>
+        <translation>Aggiorna la lista dei segmenti</translation>
+    </message>
+    <message>
+        <source>Take segment online</source>
+        <translation>Porta il segmento online</translation>
+    </message>
+    <message>
+        <source>Take segment offline</source>
+        <translation>Porta il segmento offline</translation>
+    </message>
+    <message>
+        <source>Create new rollback segment</source>
+        <translation>Crea un nuovo rollback segment</translation>
+    </message>
+    <message>
+        <source>Drop segment</source>
+        <translation>Elimina segmento</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Aggiorna</translation>
+    </message>
+    <message>
+        <source>Open Cursors</source>
+        <translation>Cursori Aperti</translation>
+    </message>
+    <message>
+        <source>Transaction Users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>Online</source>
+        <translation>Online</translation>
+    </message>
+    <message>
+        <source>Offline</source>
+        <translation>Offline</translation>
+    </message>
+    <message>
+        <source>Create segment...</source>
+        <translation>Crea segmento ...</translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation>&amp;Cambia intervallo di Aggiornamento</translation>
+    </message>
+    <message>
+        <source>&amp;Rollback</source>
+        <translation>&amp;Rollback</translation>
+    </message>
+    <message>
+        <source>No segment selected</source>
+        <translation>Nessun segmento selezionato</translation>
+    </message>
+    <message>
+        <source>Drop rollback segment</source>
+        <translation>Elimina il rollback segment</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to drop the segment %1.</source>
+        <translation>Sei sicuro di voler eliminare il segmento %1.</translation>
+    </message>
+    <message>
+        <source>&amp;Drop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Enable snapshot too old detection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Rollback|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Rollback|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRollback:Information</name>
+    <message>
+        <source>Block</source>
+        <translation>Blocco</translation>
+    </message>
+    <message>
+        <source>Blocks</source>
+        <translation>Blocchi</translation>
+    </message>
+    <message>
+        <source>Current (MB)</source>
+        <translation>Attuale (MB)</translation>
+    </message>
+    <message>
+        <source>Current</source>
+        <translation>Attuale</translation>
+    </message>
+    <message>
+        <source>Extents</source>
+        <translation>Extents</translation>
+    </message>
+    <message>
+        <source>Hitrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Initial (MB)</source>
+        <translation>Iniziale (MB)</translation>
+    </message>
+    <message>
+        <source>Next (MB)</source>
+        <translation>Prossimo (MB)</translation>
+    </message>
+    <message>
+        <source>Optimal (MB)</source>
+        <translation>Ottimale (MB)</translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation>Proprietario</translation>
+    </message>
+    <message>
+        <source>PCT Increase</source>
+        <translation>Incremento percentuale</translation>
+    </message>
+    <message>
+        <source>Reads</source>
+        <translation>Letture</translation>
+    </message>
+    <message>
+        <source>Segment</source>
+        <translation>Segmento</translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation>Stato</translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation>Tablespace</translation>
+    </message>
+    <message>
+        <source>Transactions</source>
+        <translation>Transazioni</translation>
+    </message>
+    <message>
+        <source>Used (MB)</source>
+        <translation>Usato (MB)</translation>
+    </message>
+</context>
+<context>
+    <name>toRollback:TransactionUsers</name>
+    <message>
+        <source>Oracle User</source>
+        <translation>Utente Oracle</translation>
+    </message>
+    <message>
+        <source>Os User</source>
+        <translation>Utente di sistema</translation>
+    </message>
+    <message>
+        <source>Rollback Seg</source>
+        <translation>Rollback Segment</translation>
+    </message>
+    <message>
+        <source>Session ID</source>
+        <translation>ID di sessione</translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackDialog</name>
+    <message>
+        <source>Storage</source>
+        <translation>Storage</translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation>Nessun cambiamento effettuato</translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackDialogUI</name>
+    <message>
+        <source>Modify tablespace</source>
+        <translation>Modifica il tablespace</translation>
+    </message>
+    <message>
+        <source>Display the SQL used to generate the specified object</source>
+        <translation>Mostra l&apos;SQL utilizzato per generare l&apos;oggetto specificato</translation>
+    </message>
+    <message>
+        <source>&amp;Public</source>
+        <translation>&amp;Pubblico</translation>
+    </message>
+    <message>
+        <source>If this should be a publicly available rollback segment</source>
+        <translation>Deve essere un rollback segment pubblico</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Nome</translation>
+    </message>
+    <message>
+        <source>&amp;Tablespace</source>
+        <translation>&amp;Tablespace</translation>
+    </message>
+    <message>
+        <source>Rollback Segment</source>
+        <translation>Rollback Segment</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackOpen</name>
+    <message>
+        <source>Started</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>User</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Snapshot</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation>SQL</translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackPrefs</name>
+    <message>
+        <source>Rollback Tool</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Restart reexecuted statements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start statements again that have been reexecuted.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Must read buffers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Don&apos;t display statements that have not read buffers.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Exclude first appearance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>A statement must be visible at least two consecutive polls to be displayed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Disregard start extent.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Always start from the left border when displaying extent usage.</source>
+        <translation>Inizia sempre dal bordo sinistro mostrando l&apos;utilizzo degli extent.</translation>
+    </message>
+    <message>
+        <source>&amp;Enable snapshot too old detection.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable snapshot too old detection, will put load on large databases.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSGAStatement</name>
+    <message>
+        <source>Couldn&apos;t find SQL statement in SGA</source>
+        <translation>Impossibile trovare l&apos;SQL nella SGA</translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation>SQL</translation>
+    </message>
+    <message>
+        <source>Execution plan</source>
+        <translation>Piano di esecuzione</translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation>Informazioni</translation>
+    </message>
+</context>
+<context>
+    <name>toSGATrace</name>
+    <message>
+        <source>SGA trace</source>
+        <translation>SGA Trace</translation>
+    </message>
+    <message>
+        <source>Fetch statements in SGA</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation>Schema</translation>
+    </message>
+    <message>
+        <source>Any</source>
+        <translation type="unfinished">Qualsiasi</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Aggiorna</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+    <message>
+        <source>SGA</source>
+        <translation>SGA</translation>
+    </message>
+    <message>
+        <source>Long operations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Selection</source>
+        <translation type="unfinished">Selezione</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Tutto</translation>
+    </message>
+    <message>
+        <source>Unfinished</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top executions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top sorts</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top diskreads</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top buffergets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top sorts/exec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top diskreads/exec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top buffergets/exec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top rows/exec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Top buffers/row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>Change &amp;schema</source>
+        <translation>Cambia &amp;schema</translation>
+    </message>
+    <message>
+        <source>Change &amp;refresh</source>
+        <translation>Cambia inte&amp;rvallo di aggiornamento</translation>
+    </message>
+    <message>
+        <source>Change t&amp;ype</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;SGA Trace</source>
+        <translation>&amp;SGA Trace</translation>
+    </message>
+    <message>
+        <source>Unknown type of trace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unfinished is only available for long operations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown selection</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>1 execution, 1 parse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>SGA Trace|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>SGA Trace|Change schema</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>SGA Trace|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Y</source>
+        <comment>SGA Trace|Change type</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSGATracePrefs</name>
+    <message>
+        <source>SGA Trace</source>
+        <translation>SGA Trace</translation>
+    </message>
+    <message>
+        <source>&amp;Auto update</source>
+        <translation>&amp;Aggiornamento automatico</translation>
+    </message>
+    <message>
+        <source>Update automatically after change of schema.</source>
+        <translation>Aggiorna automaticamente dopo un cambiamento dello schema.</translation>
+    </message>
+</context>
+<context>
+    <name>toSMTP</name>
+    <message>
+        <source>Connecting to %1</source>
+        <translation>Connessione a %1</translation>
+    </message>
+    <message>
+        <source>Connected to %1</source>
+        <translation>Connesso a %1</translation>
+    </message>
+    <message>
+        <source>Message sent</source>
+        <translation>Messaggio inviato</translation>
+    </message>
+    <message>
+        <source>Unexpected reply from SMTP server:
+
+</source>
+        <translation>Risposta inattesa dal server SMTP:
+
+</translation>
+    </message>
+</context>
+<context>
+    <name>toSQL</name>
+    <message>
+        <source>Tried to get unknown SQL (%1)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Malformed tag in config file. Missing = on row.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Malformed line in SQL dictionary file. Two &apos;[&apos; before &apos;=&apos;</source>
+        <translation>Errore nel file di dizionario. Due &apos;[&apos; prima di &apos;=&apos;</translation>
+    </message>
+    <message>
+        <source>Unknown escape character in string (Only \\ and \n recognised)</source>
+        <translation>Carattere di escape sconosciuto nella stringa (Solo \\ e \n sono accettati)</translation>
+    </message>
+    <message>
+        <source>SQL Dictionary</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSQLEdit</name>
+    <message>
+        <source>SQL editor</source>
+        <translation>Editor SQL</translation>
+    </message>
+    <message>
+        <source>Load SQL dictionary file</source>
+        <translation>Carica un file di dizionario SQL</translation>
+    </message>
+    <message>
+        <source>Save modified SQL to dictionary file</source>
+        <translation>Salva l&apos;SQL modificato in un file di dizionario</translation>
+    </message>
+    <message>
+        <source>Save this entry in the dictionary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delete this version from the SQL dictionary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Start new SQL definition</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Text Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation>Nome</translation>
+    </message>
+    <message>
+        <source>Database</source>
+        <translation>Database</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Descrizione</translation>
+    </message>
+    <message>
+        <source>Wrong format of version</source>
+        <translation>Formato o versione errati</translation>
+    </message>
+    <message>
+        <source>Should be database provider:version.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Should be database provider:version. Can&apos;t start with :.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Should be database provider:version. Can&apos;t end with the first :.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Missing description</source>
+        <translation>Descrizione mancante</translation>
+    </message>
+    <message>
+        <source>No description filled in. This is necessary to save SQL. Adding undescribed as description.</source>
+        <translation>Descrizione Mancante. E&apos; necessario per salvarel&apos;SQL. Definito &quot;non descritto&quot;.</translation>
+    </message>
+    <message>
+        <source>Undescribed</source>
+        <translation>Non descritto</translation>
+    </message>
+    <message>
+        <source>Modified SQL dictionary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Save changes into the SQL dictionary</source>
+        <translation>Salva i cambiamenti nel dizionario SQL</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Si</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;No</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+</context>
+<context>
+    <name>toSQLEditTool</name>
+    <message>
+        <source>&amp;Edit SQL...</source>
+        <translation>&amp;Modifica SQL ...</translation>
+    </message>
+</context>
+<context>
+    <name>toSQLString</name>
+    <message>
+        <source>SQL Address not found in SGA</source>
+        <translation>Indirizzo SQL non trovato nella SGA</translation>
+    </message>
+</context>
+<context>
+    <name>toSQLToAddress</name>
+    <message>
+        <source>SQL Query not found in SGA</source>
+        <translation>Query SQL non trovata nella SGA</translation>
+    </message>
+</context>
+<context>
+    <name>toSQLparse</name>
+    <message>
+        <source>Unbalanced parenthesis (Too many &apos;)&apos;)</source>
+        <translation>Parentesi non bilanciate (Troppe &apos;)&apos;)</translation>
+    </message>
+    <message>
+        <source>Unbalanced parenthesis (Too many &apos;(&apos;)</source>
+        <translation>Parentesi non bilanciate (Troppe &apos;(&apos;)</translation>
+    </message>
+    <message>
+        <source>Internal error in toSQLParse, should never get here</source>
+        <translation>Errore interno in toSQLParse, non dovresti mai essere qui</translation>
+    </message>
+</context>
+<context>
+    <name>toSaveFilename</name>
+    <message>
+        <source>File open password</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toScript</name>
+    <message>
+        <source>Extraction and Compare</source>
+        <translation>Estrazione e Confronto</translation>
+    </message>
+    <message>
+        <source>Perform defined extraction</source>
+        <translation>Esegui l&apos;estrazione definita</translation>
+    </message>
+    <message>
+        <source>Search result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Dropped</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Created</source>
+        <translation>Creato</translation>
+    </message>
+    <message>
+        <source>&amp;Initial</source>
+        <translation>&amp;Iniziale</translation>
+    </message>
+    <message>
+        <source>&amp;Limit</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Next</source>
+        <translation type="unfinished">&amp;Prossimo</translation>
+    </message>
+    <message>
+        <source>No mode selected</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Destination shouldn&apos;t be enabled now, internal error</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, lastLevel &lt; 0</source>
+        <translation type="unfinished">Errore Interno, lastLevel &lt; 0</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Tutto</translation>
+    </message>
+    <message>
+        <source>Replacing existing size with new</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Same</source>
+        <translation type="unfinished">Stesso</translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation type="unfinished">Nessuno</translation>
+    </message>
+    <message>
+        <source>No filename specified</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Error writing to file %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>-- Script generated to file %1 successfully</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>rem Master script for DDL reverse engineering by TOra
+
+</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>-- Scripts generate to directory %1 successfully</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toScriptUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>&amp;Source</source>
+        <translation>&amp;Origine</translation>
+    </message>
+    <message>
+        <source>Connection</source>
+        <translation>Connessione</translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation>Schema</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished">Tutto</translation>
+    </message>
+    <message>
+        <source>Objects</source>
+        <translation>Oggetti</translation>
+    </message>
+    <message>
+        <source>&amp;Include objects</source>
+        <translation>&amp;Includi oggetti</translation>
+    </message>
+    <message>
+        <source>&amp;Destination</source>
+        <translation>&amp;Destinazione</translation>
+    </message>
+    <message>
+        <source>&amp;Options</source>
+        <translation>&amp;Opzioni</translation>
+    </message>
+    <message>
+        <source>Compare</source>
+        <translation>Confronta</translation>
+    </message>
+    <message>
+        <source>Compare two databases or schemas</source>
+        <translation>Confronta due Database o Schemi</translation>
+    </message>
+    <message>
+        <source>Extract</source>
+        <translation>Estrai</translation>
+    </message>
+    <message>
+        <source>Extract script to recreate database objects.</source>
+        <translation>Estrai lo script per ricreare gli oggetti del database.</translation>
+    </message>
+    <message>
+        <source>Include code specification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include storage specification</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include content of tables</source>
+        <translation>Includi il contenuto delle tabelle</translation>
+    </message>
+    <message>
+        <source>Include parallel specification</source>
+        <translation>Includi dati sul parallelismo</translation>
+    </message>
+    <message>
+        <source>Include partition specification</source>
+        <translation>Includi dati sul partizionamento</translation>
+    </message>
+    <message>
+        <source>Same</source>
+        <translation>Stesso</translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation type="unfinished">Nessuno</translation>
+    </message>
+    <message>
+        <source>Generated schema</source>
+        <translation>Schema generato</translation>
+    </message>
+    <message>
+        <source>Select the schema to generate in script</source>
+        <translation>Seleziona lo schema da riprodurre nello script</translation>
+    </message>
+    <message>
+        <source>Include indexes</source>
+        <translation>Includi indici</translation>
+    </message>
+    <message>
+        <source>Generate prompts</source>
+        <translation>Genera avvisi</translation>
+    </message>
+    <message>
+        <source>Generate prompts to display progress in SQLPlus</source>
+        <translation>Genera avvisi per mostrare l&apos;avanzamento in SQLPlus</translation>
+    </message>
+    <message>
+        <source>Include comments</source>
+        <translation>Includi commenti</translation>
+    </message>
+    <message>
+        <source>Generate header</source>
+        <translation>Aggiungi intestazione</translation>
+    </message>
+    <message>
+        <source>Generate header at the top of the script</source>
+        <translation>Aggiungi intestazione all&apos;inizio dello script</translation>
+    </message>
+    <message>
+        <source>Include grants</source>
+        <translation>Includi grants</translation>
+    </message>
+    <message>
+        <source>Include constraints</source>
+        <translation>Includi constraints</translation>
+    </message>
+    <message>
+        <source>Include DDL</source>
+        <translation>Includi DDL</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Cerca</translation>
+    </message>
+    <message>
+        <source>Migrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Create database scripts to convert schema or database from source to destination</source>
+        <translation>Crea gli script per convertire lo schema o il database dall&apos;origine alla destinazione</translation>
+    </message>
+    <message>
+        <source>Report</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Search</source>
+        <translation>&amp;Cerca</translation>
+    </message>
+    <message>
+        <source>Contain any words</source>
+        <translation>Contiene almeno una parola</translation>
+    </message>
+    <message>
+        <source>Contain all words</source>
+        <translation>Contiene tutte le parole</translation>
+    </message>
+    <message>
+        <source>RegExp</source>
+        <translation>RegExp</translation>
+    </message>
+    <message>
+        <source>Exact match</source>
+        <translation>Corrispondenza esatta</translation>
+    </message>
+    <message>
+        <source>Configuration</source>
+        <translation>Configurazione</translation>
+    </message>
+    <message>
+        <source>Script Resize</source>
+        <translation>Ridimensionamento Script</translation>
+    </message>
+    <message>
+        <source>Don&apos;t resize</source>
+        <translation>Non ridimensionare</translation>
+    </message>
+    <message>
+        <source>Auto resize</source>
+        <translation>Ridimensionamento Automatico</translation>
+    </message>
+    <message>
+        <source>Custom resize</source>
+        <translation>Ridimensionamento manuale</translation>
+    </message>
+    <message>
+        <source>Limit</source>
+        <translation>Limite max</translation>
+    </message>
+    <message>
+        <source>Initial</source>
+        <translation>Iniziale</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation>Prossimo</translation>
+    </message>
+    <message>
+        <source>&amp;Add</source>
+        <translation>&amp;Aggiungi</translation>
+    </message>
+    <message>
+        <source>&amp;Remove</source>
+        <translation>&amp;Rimuovi</translation>
+    </message>
+    <message>
+        <source>Resize</source>
+        <translation>Ridimensiona</translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation>Risultato</translation>
+    </message>
+    <message>
+        <source>Difference</source>
+        <translation>Differenze</translation>
+    </message>
+    <message>
+        <source>Commit distance</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>The number of insertstatements to make between each commit (0 means whole table)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output tab</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output dir</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output to directory so that each object is placed in a different file.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Output file</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation type="unfinished">Sfoglia</translation>
+    </message>
+</context>
+<context>
+    <name>toSearchReplace</name>
+    <message>
+        <source>No more matches found</source>
+        <translation>Nessun altro elemento trovato</translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <comment>Search|Help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+R</source>
+        <comment>Edit|Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSearchReplaceUI</name>
+    <message>
+        <source>Search &amp; Replace</source>
+        <translation>T&amp;rova sostituisci</translation>
+    </message>
+    <message>
+        <source>&amp;Search Top</source>
+        <translation>Trova &amp;Primo</translation>
+    </message>
+    <message>
+        <source>Search &amp;Next</source>
+        <translation>Trova &amp;Successivo</translation>
+    </message>
+    <message>
+        <source>&amp;Replace</source>
+        <translation>&amp;Sostituisci</translation>
+    </message>
+    <message>
+        <source>Replace &amp;All</source>
+        <translation>Sostituisci &amp;Tutto</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Chiudi</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Cerca</translation>
+    </message>
+    <message>
+        <source>Exact</source>
+        <translation>Corrispondenza Esatta</translation>
+    </message>
+    <message>
+        <source>Match text exactly as written</source>
+        <translation>Corrispondenza esatta del testo</translation>
+    </message>
+    <message>
+        <source>Match Word</source>
+        <translation>Parola intera</translation>
+    </message>
+    <message>
+        <source>Only match whole words</source>
+        <translation>Solo parole intere</translation>
+    </message>
+    <message>
+        <source>Ignore Case</source>
+        <translation>Ignora Maiuscole/Minuscole</translation>
+    </message>
+    <message>
+        <source>RegExp</source>
+        <translation>RegExp</translation>
+    </message>
+    <message>
+        <source>Use RegExp semantics for matching (See Qt documentation)</source>
+        <translation>Usa una Regular Expression per la ricerca (Vedi documentazione QT)</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Sostituisci</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurity</name>
+    <message>
+        <source>Security manager</source>
+        <translation>Gestione della sicurezza</translation>
+    </message>
+    <message>
+        <source>Update user and role list</source>
+        <translation>Aggiorna la lista degli utenti e dei ruoli</translation>
+    </message>
+    <message>
+        <source>Save changes</source>
+        <translation>Salva le modifiche</translation>
+    </message>
+    <message>
+        <source>Remove user/role</source>
+        <translation>Elimina utente/ruolo</translation>
+    </message>
+    <message>
+        <source>Add new user</source>
+        <translation>Aggiungi nuovo utente</translation>
+    </message>
+    <message>
+        <source>Add new role</source>
+        <translation>Aggiungi nuovo ruolo</translation>
+    </message>
+    <message>
+        <source>Copy current user or role</source>
+        <translation>Copia l&apos;utente o il ruolo corrente</translation>
+    </message>
+    <message>
+        <source>Display SQL needed to make current changes</source>
+        <translation>Mostra l&apos;SQL da utilizzare</translation>
+    </message>
+    <message>
+        <source>Users/Roles</source>
+        <translation>Utenti/Ruoli</translation>
+    </message>
+    <message>
+        <source>&amp;General</source>
+        <translation>&amp;Generale</translation>
+    </message>
+    <message>
+        <source>&amp;Roles</source>
+        <translation>&amp;Ruoli</translation>
+    </message>
+    <message>
+        <source>&amp;System Privileges</source>
+        <translation>Privilegi di &amp;Sistema</translation>
+    </message>
+    <message>
+        <source>&amp;Object Privileges</source>
+        <translation>Privilegi su &amp;Oggetti</translation>
+    </message>
+    <message>
+        <source>&amp;Quota</source>
+        <translation>&amp;Quota di spazio</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>&amp;Save changes</source>
+        <translation>&amp;Salva le modifiche</translation>
+    </message>
+    <message>
+        <source>&amp;Remove user/role</source>
+        <translation>&amp;Elimina utente/ruolo</translation>
+    </message>
+    <message>
+        <source>Add &amp;user</source>
+        <translation>Aggiungi &amp;utente</translation>
+    </message>
+    <message>
+        <source>Add &amp;role</source>
+        <translation>Aggiungi &amp;ruolo</translation>
+    </message>
+    <message>
+        <source>&amp;Copy current</source>
+        <translation>&amp;Copia</translation>
+    </message>
+    <message>
+        <source>Display SQL...</source>
+        <translation>Mostra l&apos;SQL ...</translation>
+    </message>
+    <message>
+        <source>&amp;Security</source>
+        <translation>&amp;Sicurezza</translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation>Nessun cambiamento effettuato</translation>
+    </message>
+    <message>
+        <source>Save changes?</source>
+        <translation>Salvare i cambiamenti?</translation>
+    </message>
+    <message>
+        <source>Save the changes made to this user?</source>
+        <translation>Salvare i cambiamenti fatti da questo utente?</translation>
+    </message>
+    <message>
+        <source>Save</source>
+        <translation>Salva</translation>
+    </message>
+    <message>
+        <source>Discard</source>
+        <translation>Scarta</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Invalid security ID</source>
+        <translation>ID di sicurezza non valido</translation>
+    </message>
+    <message>
+        <source>Roles</source>
+        <translation>Ruoli</translation>
+    </message>
+    <message>
+        <source>Are you sure?</source>
+        <translation>Sei sicuro?</translation>
+    </message>
+    <message>
+        <source>The user still owns objects, add the cascade option?</source>
+        <translation>L&apos;utente possiede ancora degli oggetti, eliminarli in cascata?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Si</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>No</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Security|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Security|Save changes</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+U</source>
+        <comment>Security|Add user</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+R</source>
+        <comment>Security|Add role</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+O</source>
+        <comment>Security|Copy current</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Security|Display SQL</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityObject</name>
+    <message>
+        <source>Object</source>
+        <translation>Oggetto</translation>
+    </message>
+    <message>
+        <source>Admin</source>
+        <translation>Admin</translation>
+    </message>
+    <message>
+        <source>ON</source>
+        <translation>ON</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityQuota</name>
+    <message>
+        <source>None</source>
+        <translation>Nessuno</translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation>Illimitato</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityQuotaUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation>Tablespace</translation>
+    </message>
+    <message>
+        <source>Quota Size</source>
+        <translation>Dimensione della quota</translation>
+    </message>
+    <message>
+        <source>Used Size</source>
+        <translation>Dimensione Utilizzata</translation>
+    </message>
+    <message>
+        <source>&amp;Unlimited</source>
+        <translation>&amp;Illimitato</translation>
+    </message>
+    <message>
+        <source>&amp;None</source>
+        <translation>&amp;Nessuno</translation>
+    </message>
+    <message>
+        <source>&amp;Value</source>
+        <translation>&amp;Valore</translation>
+    </message>
+    <message>
+        <source>Belongs to Resource group or has unlimited tablespace privilege</source>
+        <translation>Appartiene al gruppo Resource o non ha limiti sul tablespace</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityRole</name>
+    <message>
+        <source>Passwords don&apos;t match</source>
+        <translation>Le due password non corrispondono</translation>
+    </message>
+    <message>
+        <source>The two versions of the password doesn&apos;t match</source>
+        <translation>Le due versioni della password non corrispondono</translation>
+    </message>
+    <message>
+        <source>Don&apos;t save</source>
+        <translation>Non salvare</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityRoleGrant</name>
+    <message>
+        <source>Role name</source>
+        <translation>Nome del ruolo</translation>
+    </message>
+    <message>
+        <source>Admin</source>
+        <translation>Admin</translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation>Standard</translation>
+    </message>
+    <message>
+        <source>ON</source>
+        <translation>ON</translation>
+    </message>
+    <message>
+        <source>YES</source>
+        <translation>Si</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityRoleUI</name>
+    <message>
+        <source>Form2</source>
+        <translation>Form2</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Nome</translation>
+    </message>
+    <message>
+        <source>Enter Password</source>
+        <translation>Inserisci una password</translation>
+    </message>
+    <message>
+        <source>Confirm Password</source>
+        <translation>Conferma la password</translation>
+    </message>
+    <message>
+        <source>&amp;Password</source>
+        <translation>&amp;Password</translation>
+    </message>
+    <message>
+        <source>Role authenticated by the operating system</source>
+        <translation>Ruolo autenticato dal sistema operativo</translation>
+    </message>
+    <message>
+        <source>&amp;External</source>
+        <translation>&amp;Esterno</translation>
+    </message>
+    <message>
+        <source>Role authenticated globally</source>
+        <translation>Ruolo autenticato globalmente</translation>
+    </message>
+    <message>
+        <source>&amp;Global</source>
+        <translation>&amp;Globale</translation>
+    </message>
+    <message>
+        <source>No password required for role</source>
+        <translation>Nessuna pasword richiesta per questo ruolo</translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation>Nessuno</translation>
+    </message>
+</context>
+<context>
+    <name>toSecuritySystem</name>
+    <message>
+        <source>Privilege name</source>
+        <translation>Nome del privilegio</translation>
+    </message>
+    <message>
+        <source>Admin</source>
+        <translation>Admin</translation>
+    </message>
+    <message>
+        <source>ON</source>
+        <translation>ON</translation>
+    </message>
+    <message>
+        <source>NO</source>
+        <translation>NO</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityUser</name>
+    <message>
+        <source>Passwords don&apos;t match</source>
+        <translation>Le due password non corrispondono</translation>
+    </message>
+    <message>
+        <source>The two versions of the password doesn&apos;t match</source>
+        <translation>Le due versioni della password non corrispondono</translation>
+    </message>
+    <message>
+        <source>Don&apos;t save</source>
+        <translation>Non salvare</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityUserUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Nome</translation>
+    </message>
+    <message>
+        <source>P&amp;rofile</source>
+        <translation>P&amp;rofilo</translation>
+    </message>
+    <message>
+        <source>Enter Password</source>
+        <translation>Inserisci una password</translation>
+    </message>
+    <message>
+        <source>Confirm Password</source>
+        <translation>Conferma la password</translation>
+    </message>
+    <message>
+        <source>Expire Password</source>
+        <translation>Cambia password al primo login</translation>
+    </message>
+    <message>
+        <source>&amp;Password</source>
+        <translation>&amp;Password</translation>
+    </message>
+    <message>
+        <source>User authenticated by the operating system</source>
+        <translation>Utente autenticato dal sistema operativo</translation>
+    </message>
+    <message>
+        <source>&amp;External</source>
+        <translation>&amp;Esterno</translation>
+    </message>
+    <message>
+        <source>&amp;X.500 External Name</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Global</source>
+        <translation type="unfinished">&amp;Globale</translation>
+    </message>
+    <message>
+        <source>&amp;Temporary Tablespace</source>
+        <translation>Tablespace &amp;Temporaneo</translation>
+    </message>
+    <message>
+        <source>&amp;Account Locked</source>
+        <translation>&amp;Account Bloccato</translation>
+    </message>
+    <message>
+        <source>&amp;Default Tablespace</source>
+        <translation>Tablespace di &amp;Default</translation>
+    </message>
+</context>
+<context>
+    <name>toSemaphore</name>
+    <message>
+        <source>The semaphore function &quot;%1&quot; failed</source>
+        <translation>La funzione semaforo &quot;%1&quot; è fallita</translation>
+    </message>
+</context>
+<context>
+    <name>toSession</name>
+    <message>
+        <source>Session manager</source>
+        <translation>Gestione sessioni</translation>
+    </message>
+    <message>
+        <source>Update sessionlist</source>
+        <translation>Aggiorna la lista delle sessioni</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Tutto</translation>
+    </message>
+    <message>
+        <source>No background</source>
+        <translation>Nascondi sessioni background</translation>
+    </message>
+    <message>
+        <source>No system</source>
+        <translation>Nascondi sessioni system</translation>
+    </message>
+    <message>
+        <source>Enable timed statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disable timed statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disconnect selected session</source>
+        <translation>Annulla la sessione selezionata</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Aggiorna</translation>
+    </message>
+    <message>
+        <source>Session wait states</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Session I/O</source>
+        <translation>I/O di sessione</translation>
+    </message>
+    <message>
+        <source>Statistics</source>
+        <translation>Statistiche</translation>
+    </message>
+    <message>
+        <source>Wait events</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Connect Info</source>
+        <translation>Informazioni sulla connessione</translation>
+    </message>
+    <message>
+        <source>Pending Locks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Locked Objects</source>
+        <translation>Oggetti Bloccati</translation>
+    </message>
+    <message>
+        <source>Current Statement</source>
+        <translation>SQL in esecuzione</translation>
+    </message>
+    <message>
+        <source>Accessing</source>
+        <translation>Oggetti interessati</translation>
+    </message>
+    <message>
+        <source>Previous Statement</source>
+        <translation>Query precedente</translation>
+    </message>
+    <message>
+        <source>Open Cursors</source>
+        <translation>Cursori Aperti</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>Disconnect session</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation>&amp;Cambia intervallo di Aggiornamento</translation>
+    </message>
+    <message>
+        <source>&amp;Session</source>
+        <translation>&amp;Sessione</translation>
+    </message>
+    <message>
+        <source>No access to timed statistics flags</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Let current transaction finish before disconnecting session?</source>
+        <translation>Attendere la fine della transazione corrente prima di chiudere la sessione?</translation>
+    </message>
+    <message>
+        <source>Commit work?</source>
+        <translation>Salvare il lavoro nel DB?</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Si</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;No</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Only active users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Exclude selected sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select all sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deselect all sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Long ops</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Session|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Session|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSession:AccessedObjects</name>
+    <message>
+        <source>OBJECT</source>
+        <translation>OGGETTO</translation>
+    </message>
+    <message>
+        <source>OWNER</source>
+        <translation>PROPRIETARIO</translation>
+    </message>
+    <message>
+        <source>TYPE</source>
+        <translation>TIPO</translation>
+    </message>
+</context>
+<context>
+    <name>toSession:ConnectInfo</name>
+    <message>
+        <source>Authentication Type</source>
+        <translation>Tipo di autenticazione</translation>
+    </message>
+    <message>
+        <source>Network Service Banner</source>
+        <translation>Messaggio del servizio di rete</translation>
+    </message>
+    <message>
+        <source>Osuser</source>
+        <translation>Nome Utente</translation>
+    </message>
+</context>
+<context>
+    <name>toSession:LockedObject</name>
+    <message>
+        <source>Locked Mode</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Object Name</source>
+        <translation>Nome oggetto</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+</context>
+<context>
+    <name>toSession:OpenCursor</name>
+    <message>
+        <source>SQL</source>
+        <translation>SQL</translation>
+    </message>
+</context>
+<context>
+    <name>toSession:SessionIO</name>
+    <message>
+        <source>Block changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Block gets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Consistent changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Consistent gets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Physical reads</source>
+        <translation>Letture su disco</translation>
+    </message>
+</context>
+<context>
+    <name>toSession:SessionWait</name>
+    <message>
+        <source>CPU</source>
+        <translation>CPU</translation>
+    </message>
+    <message>
+        <source>Control File I/O</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DB File Read</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DB File Write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>DB Single File Read</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Direct I/O</source>
+        <translation>I/O Diretto</translation>
+    </message>
+    <message>
+        <source>Log file</source>
+        <translation>Log file</translation>
+    </message>
+    <message>
+        <source>Other</source>
+        <translation>Altro</translation>
+    </message>
+    <message>
+        <source>Parallel execution</source>
+        <translation>Esecuzione parallela</translation>
+    </message>
+    <message>
+        <source>SQL*Net</source>
+        <translation>SQL*Net</translation>
+    </message>
+    <message>
+        <source>Write Complete</source>
+        <translation>Scrittura completata</translation>
+    </message>
+</context>
+<context>
+    <name>toSessionMySQL</name>
+    <message>
+        <source>Session manager</source>
+        <translation type="unfinished">Gestione sessioni</translation>
+    </message>
+    <message>
+        <source>Update sessionlist</source>
+        <translation type="unfinished">Aggiorna la lista delle sessioni</translation>
+    </message>
+    <message>
+        <source>Only active users</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished">Tutto</translation>
+    </message>
+    <message>
+        <source>Kill selected session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation type="unfinished">Aggiorna</translation>
+    </message>
+    <message>
+        <source>Exclude selected sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select all sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Deselect all sessions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Session MySQL|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Kill session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation type="unfinished">&amp;Cambia intervallo di Aggiornamento</translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Session MySQL|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Session</source>
+        <translation type="unfinished">&amp;Sessione</translation>
+    </message>
+</context>
+<context>
+    <name>toSetSessionType</name>
+    <message>
+        <source>Failed to find style %1</source>
+        <translation>Impossibile trovare lo stile %1</translation>
+    </message>
+</context>
+<context>
+    <name>toSplash</name>
+    <message>
+        <source>Loading plugins</source>
+        <translation>Caricamento plugins</translation>
+    </message>
+</context>
+<context>
+    <name>toStorage</name>
+    <message>
+        <source>Storage manager</source>
+        <translation>Gestione dello storage</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Aggiorna</translation>
+    </message>
+    <message>
+        <source>Show extent view.</source>
+        <translation>Mostra dettagli ed extent.</translation>
+    </message>
+    <message>
+        <source>Show tablespaces or just datafiles.</source>
+        <translation>Mostra i tablespaces o solo i datafiles.</translation>
+    </message>
+    <message>
+        <source>Take tablespace online</source>
+        <translation>Porta il tablespace online</translation>
+    </message>
+    <message>
+        <source>Take tablespace offline</source>
+        <translation>Porta il tablespace offline</translation>
+    </message>
+    <message>
+        <source>Set tablespace default to logging</source>
+        <translation>Attiva logging per il tablespace</translation>
+    </message>
+    <message>
+        <source>Set tablespace default to no logging</source>
+        <translation>Disattiva logging per il tablespace</translation>
+    </message>
+    <message>
+        <source>Allow read write access to tablespace</source>
+        <translation>Abilita l&apos;accesso in lettura e scrittura al tablespace</translation>
+    </message>
+    <message>
+        <source>Set tablespace to read only</source>
+        <translation>Imposta tablespace come sola lettura</translation>
+    </message>
+    <message>
+        <source>Modify tablespace</source>
+        <translation>Modifica tablespace</translation>
+    </message>
+    <message>
+        <source>Modify file</source>
+        <translation>Modifica il file</translation>
+    </message>
+    <message>
+        <source>Create new tablespace</source>
+        <translation>Crea un nuovo tablespace</translation>
+    </message>
+    <message>
+        <source>Add datafile to tablespace</source>
+        <translation>Aggiungi un datafile al tablespace</translation>
+    </message>
+    <message>
+        <source>Coalesce tablespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Move datafile</source>
+        <translation>Sposta datafile</translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation>Proprietario</translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Oggetto</translation>
+    </message>
+    <message>
+        <source>Partition</source>
+        <translation>Partizione</translation>
+    </message>
+    <message>
+        <source>Extents</source>
+        <translation>Extents</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Aggiorna</translation>
+    </message>
+    <message>
+        <source>Tablespace online</source>
+        <translation>Tablespace online</translation>
+    </message>
+    <message>
+        <source>Tablespace offline</source>
+        <translation>Tablespace offline</translation>
+    </message>
+    <message>
+        <source>Default logging</source>
+        <translation>Attiva Logging</translation>
+    </message>
+    <message>
+        <source>Default not logging</source>
+        <translation>Disattiva Logging</translation>
+    </message>
+    <message>
+        <source>Read write access</source>
+        <translation>Accesso in lettura e scrittura</translation>
+    </message>
+    <message>
+        <source>Read only access</source>
+        <translation>Accesso in sola lettura</translation>
+    </message>
+    <message>
+        <source>Modify tablespace...</source>
+        <translation>Modifica il tablespace ...</translation>
+    </message>
+    <message>
+        <source>Modify datafile...</source>
+        <translation>Modifica datafile ...</translation>
+    </message>
+    <message>
+        <source>New tablespace...</source>
+        <translation>Nuovo tablespace ...</translation>
+    </message>
+    <message>
+        <source>Add datafile...</source>
+        <translation>Aggiungi datafile ...</translation>
+    </message>
+    <message>
+        <source>Move datafile...</source>
+        <translation>Sposta datafile ...</translation>
+    </message>
+    <message>
+        <source>&amp;Storage</source>
+        <translation>&amp;Storage</translation>
+    </message>
+    <message>
+        <source>Select mode to take tablespace %1 offline.</source>
+        <translation>Seleziona il modo per portare il tablespace %1 offline.</translation>
+    </message>
+    <message>
+        <source>Normal</source>
+        <translation>Normale</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation>Temporaneo</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Blocks</source>
+        <translation type="unfinished">Blocchi</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Storage|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDatafile</name>
+    <message>
+        <source>Create datafile</source>
+        <translation>Crea datafile</translation>
+    </message>
+    <message>
+        <source>&amp;Size</source>
+        <translation>&amp;Dimensione</translation>
+    </message>
+    <message>
+        <source>&amp;Next</source>
+        <translation>&amp;Prossimo</translation>
+    </message>
+    <message>
+        <source>&amp;Maximum size</source>
+        <translation>&amp;Dimensione massima</translation>
+    </message>
+    <message>
+        <source>No name available</source>
+        <translation>Nessun nome disponibile</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDatafileUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>&amp;Tablespace name</source>
+        <translation>&amp;Nome tablespace</translation>
+    </message>
+    <message>
+        <source>&amp;Filename</source>
+        <translation>&amp;Nome file</translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation>&amp;Sfoglia</translation>
+    </message>
+    <message>
+        <source>Auto extend</source>
+        <translation>Auto estendi</translation>
+    </message>
+    <message>
+        <source>&amp;Auto extend datafile</source>
+        <translation>&amp;Auto estendi datafile</translation>
+    </message>
+    <message>
+        <source>&amp;Unlimited max size</source>
+        <translation>Dimensione massima &amp;ILLIMITATA</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDefinition</name>
+    <message>
+        <source>&amp;Initial size</source>
+        <translation>&amp;Dimensione iniziale</translation>
+    </message>
+    <message>
+        <source>&amp;Next size</source>
+        <translation>Prossima dime&amp;nsione</translation>
+    </message>
+    <message>
+        <source>&amp;Size</source>
+        <translation>&amp;Dimensione</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDefinitionUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>Optimal allocation of extents. Will free unused extents down to specified value</source>
+        <translation>Allocazione ottima degli extents. Libererà gli extents non utilizzati fino al valore specificato</translation>
+    </message>
+    <message>
+        <source>&amp;Extents</source>
+        <translation>&amp;Extents</translation>
+    </message>
+    <message>
+        <source>&amp;Maximum extents</source>
+        <translation>Numero &amp;massimo di extent</translation>
+    </message>
+    <message>
+        <source>Maximum number of extents to allocate for an object</source>
+        <translation>Massimo numero di extents da allocare per un oggetto</translation>
+    </message>
+    <message>
+        <source>&amp;Initial size</source>
+        <translation>&amp;Dimensione iniziale</translation>
+    </message>
+    <message>
+        <source>Number of extents to initially allocate</source>
+        <translation>Numero di extents da allocare inizialmente</translation>
+    </message>
+    <message>
+        <source>&amp;Unlimited extents</source>
+        <translation>Extents &amp;Illimitati</translation>
+    </message>
+    <message>
+        <source>No limit to the number of extents to allocate if needed</source>
+        <translation>Numero di extents da allocare illimitato, se necessario</translation>
+    </message>
+    <message>
+        <source>&amp;Optimal size</source>
+        <translation>Dimensione &amp;ottimale</translation>
+    </message>
+    <message>
+        <source>&amp;No optimal size</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Default PCT increase</source>
+        <translation>Incremento Percentuale di &amp;default</translation>
+    </message>
+    <message>
+        <source>Default increase in size of next allocated extent. A size of 0 will prevent background coalesce of free space</source>
+        <translation>Incremento dimensionale standard del prossimo extent allcato. Una dimensione 0 impedisce il coalesce in background dello spazio libero</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDialog</name>
+    <message>
+        <source>Invalid response from query</source>
+        <translation>Risposta non valida dalla query</translation>
+    </message>
+    <message>
+        <source>Add datafile</source>
+        <translation>Aggiungi datafile</translation>
+    </message>
+    <message>
+        <source>Datafile</source>
+        <translation>Datafile</translation>
+    </message>
+    <message>
+        <source>Add tablespace</source>
+        <translation>Aggiungi tablespace</translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation>Tablespace</translation>
+    </message>
+    <message>
+        <source>Default Storage</source>
+        <translation>Storage di default</translation>
+    </message>
+    <message>
+        <source>Modify datafile</source>
+        <translation>Modifica datafile</translation>
+    </message>
+    <message>
+        <source>Invalid response from query (Wanted 4, got %1 entries) for %2.%3</source>
+        <translation>Risposta non valida dalla query (Attesi 4 valori, ottenuti %1) per %2.%3</translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation>Nessun cambiamento effettuato</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDialogUI</name>
+    <message>
+        <source>Modify tablespace</source>
+        <translation>Modifica il tablespace</translation>
+    </message>
+    <message>
+        <source>Display the SQL used to generate the specified object</source>
+        <translation>Mostra l&apos;SQL utilizzato per generare l&apos;oggetto specificato</translation>
+    </message>
+    <message>
+        <source>Tab 2</source>
+        <translation>Tab 2</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageExtent</name>
+    <message>
+        <source>Files: %1</source>
+        <translation>Files: %1</translation>
+    </message>
+    <message>
+        <source>Extents: %1</source>
+        <translation>Extents: %1</translation>
+    </message>
+    <message>
+        <source>Blocks: %1</source>
+        <translation>Blocchi: %1</translation>
+    </message>
+    <message>
+        <source>Blocks/line: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStoragePrefsUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>Storage Manager</source>
+        <translation>Gestione dello storage</translation>
+    </message>
+    <message>
+        <source>&amp;Display coalesced column</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Display object &amp;extents</source>
+        <translation>Mostra gli &amp;extent dell&apos;oggetto</translation>
+    </message>
+    <message>
+        <source>Display object and extent list on startup.</source>
+        <translation>Mostra una lista degli Oggetti e delle Extent all&apos;avvio.</translation>
+    </message>
+    <message>
+        <source>Display tablespaces or just datafiles.</source>
+        <translation>Mostra i tablespaces o solo i datafiles.</translation>
+    </message>
+    <message>
+        <source>Display graph of autoextend information instead of just free space.</source>
+        <translation>Mostra un grafico di informazioni sull&apos;autoextend invece del solo spazio libero.</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageTablespace</name>
+    <message>
+        <source>&amp;Minimum Extent</source>
+        <translation>Extent &amp;minimo</translation>
+    </message>
+    <message>
+        <source>Extent &amp;Size</source>
+        <translation>Dimen&amp;sione dell&apos;extent</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageTablespaceUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>&amp;Options</source>
+        <translation>&amp;Opzioni</translation>
+    </message>
+    <message>
+        <source>&amp;Logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Should objects created in this tablespace be logging by default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Online</source>
+        <translation>&amp;Online</translation>
+    </message>
+    <message>
+        <source>Should tablespace be online at the time of creation</source>
+        <translation>Il tablespace deve essere online al momento della creazione</translation>
+    </message>
+    <message>
+        <source>&amp;Permanent</source>
+        <translation>&amp;Permanente</translation>
+    </message>
+    <message>
+        <source>Should objects in this tablespace be permanent after the end of the session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Default storage</source>
+        <translation>&amp;Storage di default</translation>
+    </message>
+    <message>
+        <source>Specify default storage clause (In separate tab)</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Extent allocation</source>
+        <translation>Gestione allocazione degli &amp;Extent</translation>
+    </message>
+    <message>
+        <source>&amp;Dictionary</source>
+        <translation>&amp;Dictionary</translation>
+    </message>
+    <message>
+        <source>Manage tablespace extents using dictionary tables</source>
+        <translation>Gestisce gli extent dei tablespace usando le tabelle del dizionario</translation>
+    </message>
+    <message>
+        <source>Local &amp;autoallocation</source>
+        <translation>Locale &amp;automatica</translation>
+    </message>
+    <message>
+        <source>Specify how space is allocated in the tablespace</source>
+        <translation>Specifica come lo spazio è allocato nel tablespace</translation>
+    </message>
+    <message>
+        <source>Local &amp;uniform</source>
+        <translation>Locale &amp;uniforme</translation>
+    </message>
+    <message>
+        <source>The tablespace is locally managed with fixed extent sizes of specified size</source>
+        <translation>Il tablespace è gestito localmente con extent di dimensione fissa e specificata</translation>
+    </message>
+</context>
+<context>
+    <name>toSyntaxAnalyzer</name>
+    <message>
+        <source>Wrong format of color in setings</source>
+        <translation>Formato errato nel settaggio colori</translation>
+    </message>
+    <message>
+        <source>Unknown type</source>
+        <translation>Tipo sconosciuto</translation>
+    </message>
+</context>
+<context>
+    <name>toSyntaxSetup</name>
+    <message>
+        <source>Unknown variable</source>
+        <translation>Variabile sconosciuta</translation>
+    </message>
+    <message>
+        <source>Unknown color name %1</source>
+        <translation>Nome colore sconosciuto %1</translation>
+    </message>
+</context>
+<context>
+    <name>toSyntaxSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation>Opzioni</translation>
+    </message>
+    <message>
+        <source>&amp;Keyword upper</source>
+        <translation>Parole chiave &amp;maiuscole</translation>
+    </message>
+    <message>
+        <source>Convert all keywords to uppercase when displayingsyntaxhighlighted text.  Only available for monospaced fonts.</source>
+        <translation>Converti tutte le parole chiave in maiuscolo usando il  testo con sintassi evidenziata. Disponibile solo per fonts monospaziati.</translation>
+    </message>
+    <message>
+        <source>&amp;Code completion</source>
+        <translation>&amp;Completamento del codice</translation>
+    </message>
+    <message>
+        <source>Activate code completion in SQL editors. Not recommended on slow connections.</source>
+        <translation>Attiva il completamento del codice nell&apos;editor SQL. Sconsigliato per connessioni lente.</translation>
+    </message>
+    <message>
+        <source>&amp;Sort completion rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sort the available completion rows alphabetically or in the order the are.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>S&amp;yntax highlighting</source>
+        <translation>Evidenzia la &amp;sintassi</translation>
+    </message>
+    <message>
+        <source>Enable syntax highlighting, or use simple text editor</source>
+        <translation>Abilita l&apos;evidenziazione della sintassi, o usa editor di testi semplice</translation>
+    </message>
+    <message>
+        <source>&amp;Indent same as previous line</source>
+        <translation>&amp;Indenta come la linea precedente</translation>
+    </message>
+    <message>
+        <source>Indent a new line in an editor to the same column as the previous line</source>
+        <translation>Indenta la nuva linea nell&apos;editor alla stessa colonna della linea precedente</translation>
+    </message>
+    <message>
+        <source>Choose</source>
+        <translation>Scegli</translation>
+    </message>
+    <message>
+        <source>List example</source>
+        <translation>Esempio di lista</translation>
+    </message>
+    <message>
+        <source>Code example</source>
+        <translation>Esempio di codice</translation>
+    </message>
+    <message>
+        <source>Text example</source>
+        <translation>Esempio di testo</translation>
+    </message>
+    <message>
+        <source>Filename extensions</source>
+        <translation>Estensioni dei file</translation>
+    </message>
+    <message>
+        <source>Sy&amp;ntax components</source>
+        <translation>Oggetti della si&amp;ntassi</translation>
+    </message>
+    <message>
+        <source>&amp;Pick</source>
+        <translation>&amp;Seleziona</translation>
+    </message>
+    <message>
+        <source>Tab stop width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of character width of tabstops</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplate</name>
+    <message>
+        <source>Not a toTemplate parent</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Template Toolbar</source>
+        <translation>Barra dei Modelli</translation>
+    </message>
+    <message>
+        <source>Template</source>
+        <translation>Modello</translation>
+    </message>
+    <message>
+        <source>Template result</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, lastLevel &lt; 0</source>
+        <translation type="unfinished">Errore Interno, lastLevel &lt; 0</translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateAddFileUI</name>
+    <message>
+        <source>Add template file</source>
+        <translation>Aggiungi modello (file)</translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation>&amp;Sfoglia</translation>
+    </message>
+    <message>
+        <source>Canel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;File</source>
+        <translation>&amp;File</translation>
+    </message>
+    <message>
+        <source>&amp;Root</source>
+        <translation>Ogge&amp;tto</translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateEdit</name>
+    <message>
+        <source>Internal error, lastLevel &lt; 0</source>
+        <translation>Errore Interno, lastLevel &lt; 0</translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateEditUI</name>
+    <message>
+        <source>Template editor</source>
+        <translation>Editor dei modelli</translation>
+    </message>
+    <message>
+        <source>Template</source>
+        <translation>Modello</translation>
+    </message>
+    <message>
+        <source>&amp;Description</source>
+        <translation>&amp;Descrizione</translation>
+    </message>
+    <message>
+        <source>Description text. Can be in HTML format.</source>
+        <translation>Descrizione. Può essere anche in formato HTML.</translation>
+    </message>
+    <message>
+        <source>&amp;Preview</source>
+        <translation>&amp;Anteprima</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Nome</translation>
+    </message>
+    <message>
+        <source>Name of the template.</source>
+        <translation>Nome del modello.</translation>
+    </message>
+    <message>
+        <source>Remove the current template</source>
+        <translation>Rimuovi il modello attuale</translation>
+    </message>
+    <message>
+        <source>Add new template</source>
+        <translation>Aggiungi un nuovo modello</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <translation>Anteprima</translation>
+    </message>
+    <message>
+        <source>Preview of the description. Press the button to update</source>
+        <translation>Anteprima della descrizione. Premere il bottone per aggiornare</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+</context>
+<context>
+    <name>toTemplatePrefs</name>
+    <message>
+        <source>Couldn&apos;t open file.</source>
+        <translation>Impossibile aprire il file.</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file. Start on new file?</source>
+        <translation>Impossibile aprire il file. Iniziare su un nuovo file?</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Annulla</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t write file</source>
+        <translation>Impossibile scrivere sul file</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file</source>
+        <translation>Impossibile aprire il file</translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>Root</source>
+        <translation>Oggetto</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Nome file</translation>
+    </message>
+    <message>
+        <source>&amp;Add File</source>
+        <translation>&amp;Aggiungi file</translation>
+    </message>
+    <message>
+        <source>&amp;Remove File</source>
+        <translation>&amp;Rimuovi file</translation>
+    </message>
+    <message>
+        <source>&amp;Edit File</source>
+        <translation>&amp;Modifica file</translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateTool</name>
+    <message>
+        <source>Template</source>
+        <translation>Modello</translation>
+    </message>
+</context>
+<context>
+    <name>toTemporary</name>
+    <message>
+        <source>Temporary Objects</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation type="unfinished">Aggiorna lista</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Temporary</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Temporary|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toThread</name>
+    <message>
+        <source>Thread function &quot;%1&quot; failed.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTool</name>
+    <message>
+        <source>Alert Messenger</source>
+        <translation type="unfinished">Avvisi</translation>
+    </message>
+    <message>
+        <source>Backup Manager</source>
+        <translation>Gestione backup</translation>
+    </message>
+    <message>
+        <source>Current Session</source>
+        <translation>Sessione corrente</translation>
+    </message>
+    <message>
+        <source>DB Extraction/Compare/Search</source>
+        <translation>Estrazione/Confronto/Ricerca nel DB</translation>
+    </message>
+    <message>
+        <source>Invalid Objects</source>
+        <translation>Oggetti non validi</translation>
+    </message>
+    <message>
+        <source>PL/SQL Debugger</source>
+        <translation>PL/SQL Debugger</translation>
+    </message>
+    <message>
+        <source>PL/SQL Profiler</source>
+        <translation>PL/SQL Profiler</translation>
+    </message>
+    <message>
+        <source>Password Change</source>
+        <translation>Cambio password</translation>
+    </message>
+    <message>
+        <source>Rollback Segments</source>
+        <translation>Rollback Segments</translation>
+    </message>
+    <message>
+        <source>SGA Trace</source>
+        <translation>SGA Trace</translation>
+    </message>
+    <message>
+        <source>SQL Output</source>
+        <translation>Output SQL</translation>
+    </message>
+    <message>
+        <source>SQL Template</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL Worksheet</source>
+        <translation>Foglio di lavoro SQL</translation>
+    </message>
+    <message>
+        <source>Schema Browser</source>
+        <translation>Schema Browser</translation>
+    </message>
+    <message>
+        <source>Security Manager</source>
+        <translation>Gestione della sicurezza</translation>
+    </message>
+    <message>
+        <source>Server Tuning</source>
+        <translation>Ottimizzazione del server</translation>
+    </message>
+    <message>
+        <source>Sessions</source>
+        <translation>Sessioni</translation>
+    </message>
+    <message>
+        <source>Statistics Manager</source>
+        <translation>Gestione delle statistiche</translation>
+    </message>
+    <message>
+        <source>Storage Manager</source>
+        <translation>Gestione dello storage</translation>
+    </message>
+    <message>
+        <source>Malformed tag in config file. Missing = on row. (%1)</source>
+        <translation>Tag errato  nel file di configurazione. Manca un = sulla riga. (%1)</translation>
+    </message>
+    <message>
+        <source>Unknown escape character in string (Only \\ and \n recognised)</source>
+        <translation>Carattere di escape sconosciuto nella stringa (Solo \\ e \n sono accettati)</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t save empty value at key %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t save %1 value at key %2</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toToolSettingUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>Tool</source>
+        <translation>Strumento</translation>
+    </message>
+    <message>
+        <source>&amp;Default tool</source>
+        <translation>&amp;Strumento standard</translation>
+    </message>
+    <message>
+        <source>Select the default tool to pop up when opening a new connection.</source>
+        <translation>Seleziona lo strumento da avviare all&apos;apertura di una nuova connessione.</translation>
+    </message>
+    <message>
+        <source>&amp;Enabled tools</source>
+        <translation>Strumenti &amp;abilitati</translation>
+    </message>
+    <message>
+        <source>Select which tools should show up in the menu and toolbar.</source>
+        <translation>Seleziona quali strumenti dovrebbero apparire nel menu e nella barra.</translation>
+    </message>
+    <message>
+        <source>You must restart TOra for any of these changes to have effect.</source>
+        <translation type="obsolete">Dovete riavviare TOra affinchè questi cambiamenti diventino effettivi.</translation>
+    </message>
+    <message>
+        <source>You must restart for any of these changes to have effect.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning</name>
+    <message>
+        <source>Enable all tuning statistics</source>
+        <translation>Attiva tutte le statistiche di ottimizzazione</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to enable all tuning features.
+This can put heavy strain on a database and unless you
+are the DBA you probably don&apos;t want this. Selecting
+no here will give you the option to enable or disable
+tabs individually as they are needed.</source>
+        <translation>Sei sicuro di voler abilitare tutte le capacità di ottimizzazione.
+Questo può sovraccaricare il database e, se non sei un
+Amministratore probabilmente non ti è utile. Scegliere no
+di consentirà comunque di abilitare o disabilitare le varie opzioni
+singolarmente quando necessario.</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Si</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;No</translation>
+    </message>
+    <message>
+        <source>Server Tuning</source>
+        <translation>Ottimizzazione del server</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Aggiorna</translation>
+    </message>
+    <message>
+        <source>Enable and disable tuning tabs</source>
+        <translation>Abilita e disabilita le opzioni di tuning</translation>
+    </message>
+    <message>
+        <source>&amp;Overview</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> blocks/s</source>
+        <translation>blocchi</translation>
+    </message>
+    <message>
+        <source>Wrong format of name on chart (%1).</source>
+        <translation>Formato errato del nome nel grafico (%1).</translation>
+    </message>
+    <message>
+        <source>Wait events</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;File I/O</source>
+        <translation>&amp;File I/O</translation>
+    </message>
+    <message>
+        <source>Indicator</source>
+        <translation>Indicatore</translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation>Valore</translation>
+    </message>
+    <message>
+        <source>Reference</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Indicators</source>
+        <translation>&amp;Indicatori</translation>
+    </message>
+    <message>
+        <source>&amp;Statistics</source>
+        <translation>&amp;Statistiche</translation>
+    </message>
+    <message>
+        <source>&amp;Parameters</source>
+        <translation>&amp;Parametri</translation>
+    </message>
+    <message>
+        <source>&amp;Blocking locks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Library C&amp;ache</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Control Files</source>
+        <translation>Control Files</translation>
+    </message>
+    <message>
+        <source>Optio&amp;ns</source>
+        <translation>Opzio&amp;ni</translation>
+    </message>
+    <message>
+        <source>&amp;Licenses</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Intervallo di aggiornamento</translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation>&amp;Cambia intervallo di Aggiornamento</translation>
+    </message>
+    <message>
+        <source>&amp;Tuning</source>
+        <translation>&amp;Ottimizzazione</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Tuning|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Tuning|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:Charts:4BAClients</name>
+    <message>
+        <source>Active</source>
+        <translation>Attivi</translation>
+    </message>
+    <message>
+        <source>Inactive</source>
+        <translation>Non attivi</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <translation>Sistema</translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:Charts:6LNExecution</name>
+    <message>
+        <source>Calls</source>
+        <translation>Chiamate</translation>
+    </message>
+    <message>
+        <source>Commit</source>
+        <translation>Commit</translation>
+    </message>
+    <message>
+        <source>Execute</source>
+        <translation>Esegui</translation>
+    </message>
+    <message>
+        <source>Hard parse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parse</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Rollbacks</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:ControlFileRecords</name>
+    <message>
+        <source>Allocated</source>
+        <translation>Allocati</translation>
+    </message>
+    <message>
+        <source>Size</source>
+        <translation>Dimensione</translation>
+    </message>
+    <message>
+        <source>Total Records</source>
+        <translation>Record totali</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Tipo</translation>
+    </message>
+    <message>
+        <source>Used Records</source>
+        <translation>Record usati</translation>
+    </message>
+    <message>
+        <source>Used</source>
+        <translation>Usati</translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:LibraryCache</name>
+    <message>
+        <source>Get Hits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Gets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Namespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pin Hits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Pins</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ratio</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:License</name>
+    <message>
+        <source>Sessions Current</source>
+        <translation>Sessioni aperte</translation>
+    </message>
+    <message>
+        <source>Sessions Highwater</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sessions Max</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Sessions Warning</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Users Max</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:Options</name>
+    <message>
+        <source>Enabled</source>
+        <translation>Abilitato</translation>
+    </message>
+    <message>
+        <source>Parameter</source>
+        <translation>Parametro</translation>
+    </message>
+</context>
+<context>
+    <name>toTuningFileIO</name>
+    <message>
+        <source>File I/O</source>
+        <translation>File I/O</translation>
+    </message>
+    <message>
+        <source>File timing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tablespace I/O</source>
+        <translation>Tablespace I/O</translation>
+    </message>
+    <message>
+        <source>Tablespace timing</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Reads</source>
+        <translation>Letture</translation>
+    </message>
+    <message>
+        <source>Blocks Read</source>
+        <translation>Blocchi letti</translation>
+    </message>
+    <message>
+        <source>Writes</source>
+        <translation>Scritture</translation>
+    </message>
+    <message>
+        <source>Blocks Written</source>
+        <translation>Blocchi scritti</translation>
+    </message>
+    <message>
+        <source>Average</source>
+        <translation>Media</translation>
+    </message>
+    <message>
+        <source>Minimum</source>
+        <translation>Minimo</translation>
+    </message>
+    <message>
+        <source>Maximum Read</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Maximum Write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>blocks/s</source>
+        <translation>blocchi</translation>
+    </message>
+</context>
+<context>
+    <name>toTuningOverview</name>
+    <message>
+        <source>&lt; Archive write</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>blocks/s</source>
+        <translation>blocchi</translation>
+    </message>
+    <message>
+        <source>Hitrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt; Client input</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Client output &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Executes &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Log writer &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Buffer changed &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> blocks/s</source>
+        <translation>blocchi</translation>
+    </message>
+    <message>
+        <source>&lt; Buffer gets</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parse &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt; Physical read</source>
+        <translation>&lt; Letture su disco</translation>
+    </message>
+    <message>
+        <source>Physical write &gt;</source>
+        <translation>Scritture su disco &gt;</translation>
+    </message>
+    <message>
+        <source>Redo entries &gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Timescale</source>
+        <translation>Scala temporale</translation>
+    </message>
+</context>
+<context>
+    <name>toTuningOverviewUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>SGA</source>
+        <translation>SGA</translation>
+    </message>
+    <message>
+        <source>Buffer Cache</source>
+        <translation>Buffer Cache</translation>
+    </message>
+    <message>
+        <source>TextLabel3</source>
+        <translation>TextLabel3</translation>
+    </message>
+    <message>
+        <source>Total</source>
+        <translation>Totale</translation>
+    </message>
+    <message>
+        <source>Redo Buffer</source>
+        <translation>Redo Buffer</translation>
+    </message>
+    <message>
+        <source>Shared Pool</source>
+        <translation>Shared Pool</translation>
+    </message>
+    <message>
+        <source>Archive logs</source>
+        <translation>Archive logs</translation>
+    </message>
+    <message>
+        <source>Files/Size</source>
+        <translation>Files/Dimensioni</translation>
+    </message>
+    <message>
+        <source>Files</source>
+        <translation>Files</translation>
+    </message>
+    <message>
+        <source>Datafiles</source>
+        <translation>Datafiles</translation>
+    </message>
+    <message>
+        <source>Used/Total</source>
+        <translation>Usato/Totale</translation>
+    </message>
+    <message>
+        <source>Tablespaces</source>
+        <translation>Tablespaces</translation>
+    </message>
+    <message>
+        <source>Redo Logs</source>
+        <translation>Redo Logs</translation>
+    </message>
+    <message>
+        <source>Active/Total</source>
+        <translation>Attivo/Totale</translation>
+    </message>
+    <message>
+        <source>Active group</source>
+        <translation>Gruppo attivo</translation>
+    </message>
+    <message>
+        <source>Processes</source>
+        <translation>Processi</translation>
+    </message>
+    <message>
+        <source>Server</source>
+        <translation>Server</translation>
+    </message>
+    <message>
+        <source>Shared</source>
+        <translation>Condiviso</translation>
+    </message>
+    <message>
+        <source>Dispatchers</source>
+        <translation>Dispatchers</translation>
+    </message>
+    <message>
+        <source>Parallel</source>
+        <translation>Parallelo</translation>
+    </message>
+    <message>
+        <source>Dedicated</source>
+        <translation>Dedicato</translation>
+    </message>
+    <message>
+        <source>Background</source>
+        <translation>Background</translation>
+    </message>
+    <message>
+        <source>Clients</source>
+        <translation>Clients</translation>
+    </message>
+    <message>
+        <source>Active</source>
+        <translation>Attivi</translation>
+    </message>
+    <message>
+        <source>TextLabel5</source>
+        <translation>TextLabel5</translation>
+    </message>
+    <message>
+        <source>Send to client</source>
+        <translation>Inviati al client</translation>
+    </message>
+    <message>
+        <source>Send from client</source>
+        <translation>Inviati dal client</translation>
+    </message>
+</context>
+<context>
+    <name>toTuningSettingUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>Server tuning</source>
+        <translation>Ottimizzazione del server</translation>
+    </message>
+    <message>
+        <source>Available tabs</source>
+        <translation>Tabs disponibili</translation>
+    </message>
+    <message>
+        <source>&amp;Enabled background views</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select which views collect data in the background that should be run.</source>
+        <translation>Seleziona quali viste che raccolgono dati in background devono essere utilizzate.</translation>
+    </message>
+</context>
+<context>
+    <name>toVisualize</name>
+    <message>
+        <source>Data visualization</source>
+        <translation>Visualizzazione dati</translation>
+    </message>
+    <message>
+        <source>Bar chart</source>
+        <translation>Grafico a barre</translation>
+    </message>
+    <message>
+        <source>Line chart</source>
+        <translation>Grafico a linee</translation>
+    </message>
+    <message>
+        <source>Pie chart</source>
+        <translation>Grafico a torta</translation>
+    </message>
+    <message>
+        <source>Display legend</source>
+        <translation>Mostra legenda</translation>
+    </message>
+    <message>
+        <source>Display grid</source>
+        <translation>Mostra griglia</translation>
+    </message>
+    <message>
+        <source>Display axis legend</source>
+        <translation>Mostra legenda assi</translation>
+    </message>
+    <message>
+        <source>Title columns</source>
+        <translation>Titoli colonne</translation>
+    </message>
+    <message>
+        <source>Number of columns to use as title</source>
+        <translation>Numero di colonne da usare come titolo</translation>
+    </message>
+    <message>
+        <source>Update chart</source>
+        <translation>Aggiorna grafico</translation>
+    </message>
+</context>
+<context>
+    <name>toWaitEvents</name>
+    <message>
+        <source>Server Tuning</source>
+        <translation>Ottimizzazione del server</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>Display</translation>
+    </message>
+    <message>
+        <source>Time</source>
+        <translation>Tempo</translation>
+    </message>
+    <message>
+        <source>Count</source>
+        <translation>Conta</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>Colore</translation>
+    </message>
+    <message>
+        <source>Wait type</source>
+        <translation>Tipo di wait</translation>
+    </message>
+    <message>
+        <source>Delta (ms/s)</source>
+        <translation>Delta (ms/s)</translation>
+    </message>
+    <message>
+        <source>Total (ms)</source>
+        <translation>Totale (ms)</translation>
+    </message>
+    <message>
+        <source>Delta (1/s)</source>
+        <translation>Delta (1/s)</translation>
+    </message>
+    <message>
+        <source>Total</source>
+        <translation>Totale</translation>
+    </message>
+    <message>
+        <source>System wait events</source>
+        <translation>Wait di sistema</translation>
+    </message>
+    <message>
+        <source>ms/s</source>
+        <translation>ms/s</translation>
+    </message>
+    <message>
+        <source>System wait events count</source>
+        <translation>Numero di wait di sistema</translation>
+    </message>
+    <message>
+        <source>waits/s</source>
+        <translation>waits/s</translation>
+    </message>
+    <message>
+        <source>Internal error, can&apos;t find (%1) in usedMap</source>
+        <translation>Errore interno, impossibile trovare (%1) nella usedMap</translation>
+    </message>
+    <message>
+        <source>Absolute system wait events
+Total %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delta system wait events
+Total %1%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheet</name>
+    <message>
+        <source>SQL worksheet</source>
+        <translation>Foglio di lavoro SQL</translation>
+    </message>
+    <message>
+        <source>Execute current statement</source>
+        <translation>Esegui la query corrente</translation>
+    </message>
+    <message>
+        <source>Execute all statements</source>
+        <translation>Esegui tutte le query</translation>
+    </message>
+    <message>
+        <source>Step through statements</source>
+        <translation>Esegui il successivo</translation>
+    </message>
+    <message>
+        <source>Reexecute Last Statement</source>
+        <translation>Riesegui l&apos;ultima query</translation>
+    </message>
+    <message>
+        <source>Stop execution</source>
+        <translation>Interrompi l&apos;esecuzione</translation>
+    </message>
+    <message>
+        <source>&amp;Result</source>
+        <translation>&amp;Risultato</translation>
+    </message>
+    <message>
+        <source>E&amp;xecution plan</source>
+        <translation>Piano di e&amp;secuzione</translation>
+    </message>
+    <message>
+        <source>&amp;Visualize</source>
+        <translation>&amp;Visualizza</translation>
+    </message>
+    <message>
+        <source>&amp;Information</source>
+        <translation>&amp;Informazioni</translation>
+    </message>
+    <message>
+        <source>Worksheet Statistics</source>
+        <translation>Statistiche per il foglio di lavoro</translation>
+    </message>
+    <message>
+        <source>Save statistics for later analysis</source>
+        <translation>Salva le statistiche per un analisi successiva</translation>
+    </message>
+    <message>
+        <source>Wait states</source>
+        <translation>Stati di wait</translation>
+    </message>
+    <message>
+        <source>I/O</source>
+        <translation>I/O</translation>
+    </message>
+    <message>
+        <source>blocks/s</source>
+        <translation>blocchi</translation>
+    </message>
+    <message>
+        <source>&amp;Statistics</source>
+        <translation>&amp;Statistiche</translation>
+    </message>
+    <message>
+        <source>&amp;Logging</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation>SQL</translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation>Risultato</translation>
+    </message>
+    <message>
+        <source>Timestamp</source>
+        <translation>Timestamp</translation>
+    </message>
+    <message>
+        <source>Duration</source>
+        <translation>Durata</translation>
+    </message>
+    <message>
+        <source>Describe under cursor</source>
+        <translation>Descrivi elemento sotto il cursore</translation>
+    </message>
+    <message>
+        <source>Clear execution log</source>
+        <translation>Vuota il log di esecuzione</translation>
+    </message>
+    <message>
+        <source>Gather session statistic of execution</source>
+        <translation>Raccogli statistiche di esecuzione per la sessione</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Aggiorna</translation>
+    </message>
+    <message>
+        <source>Run current saved SQL</source>
+        <translation>Esegui l&apos;SQL salvato</translation>
+    </message>
+    <message>
+        <source>Save last SQL</source>
+        <translation>Salva l&apos;ultimo SQL</translation>
+    </message>
+    <message>
+        <source>&amp;Execute Current</source>
+        <translation>&amp;Esegui</translation>
+    </message>
+    <message>
+        <source>Execute &amp;All</source>
+        <translation>Esegui &amp;Tutti</translation>
+    </message>
+    <message>
+        <source>Execute &amp;Next</source>
+        <translation>Esegui &amp;Successivo</translation>
+    </message>
+    <message>
+        <source>Execute &amp;Newline Separated</source>
+        <translation>Esegui l&apos;SQL fino alla prima riga &amp;vuota</translation>
+    </message>
+    <message>
+        <source>&amp;Reexecute Last Statement</source>
+        <translation>&amp;Ripeti l&apos;ultima query</translation>
+    </message>
+    <message>
+        <source>&amp;Describe Under Cursor</source>
+        <translation>&amp;Descrivi elemento sotto il cursore</translation>
+    </message>
+    <message>
+        <source>&amp;Explain current statement</source>
+        <translation>Costruisci l&apos;&amp;Explain per la query corrente</translation>
+    </message>
+    <message>
+        <source>&amp;Enable Statistics</source>
+        <translation>&amp;Abilita statistiche</translation>
+    </message>
+    <message>
+        <source>&amp;Stop Execution</source>
+        <translation>&amp;Interrompi l&apos;esecuzione</translation>
+    </message>
+    <message>
+        <source>Execute Saved SQL</source>
+        <translation>Esegui l&apos;SQL salvato</translation>
+    </message>
+    <message>
+        <source>Select Saved SQL</source>
+        <translation>Seleziona l&apos;SQL salvato</translation>
+    </message>
+    <message>
+        <source>Edit Saved SQL...</source>
+        <translation>Modifica l&apos;SQL salvato ...</translation>
+    </message>
+    <message>
+        <source>Previous Log Entry</source>
+        <translation>Riga di log precedente</translation>
+    </message>
+    <message>
+        <source>Next Log Entry</source>
+        <translation>Riga di log successiva</translation>
+    </message>
+    <message>
+        <source>Erase &amp;Log</source>
+        <translation>Cancella il &amp;Log</translation>
+    </message>
+    <message>
+        <source>W&amp;orksheet</source>
+        <translation>F&amp;oglio di lavoro</translation>
+    </message>
+    <message>
+        <source>Save changes to worksheet for %1</source>
+        <translation>Salva i cambiamenti al foglio di lavoro per %1</translation>
+    </message>
+    <message>
+        <source>Save file</source>
+        <translation>Salva file</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Si</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;No</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Cancella</translation>
+    </message>
+    <message>
+        <source>Wrong number of parameters for describe</source>
+        <translation>Numero di parametri errato per describe</translation>
+    </message>
+    <message>
+        <source>Ignoring SQL*Plus command</source>
+        <translation>Ignora comandi SQL*Plus</translation>
+    </message>
+    <message>
+        <source>Processing query</source>
+        <translation>Query in esecuzione</translation>
+    </message>
+    <message>
+        <source>%1 rows processed</source>
+        <translation>%1 righe processate</translation>
+    </message>
+    <message>
+        <source>Query executed</source>
+        <translation>Query eseguita</translation>
+    </message>
+    <message>
+        <source>Duration while query has been running
+
+</source>
+        <translation>Tempo di esecuzione query</translation>
+    </message>
+    <message>
+        <source>(Duration %1)</source>
+        <translation>(Durata %1)</translation>
+    </message>
+    <message>
+        <source>Aborted</source>
+        <translation>Abortito</translation>
+    </message>
+    <message>
+        <source>No SQL to save</source>
+        <translation>Nessun SQL da salvare</translation>
+    </message>
+    <message>
+        <source>You haven&apos;t executed any SQL yet</source>
+        <translation>Non hai ancora eseguito alcun SQL</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Enter title</source>
+        <translation>Inserisci un titolo</translation>
+    </message>
+    <message>
+        <source>Enter the title in the menu of the saved SQL,
+submenues are separated by a &apos;:&apos; character.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Undescribed</source>
+        <translation>Non descritto</translation>
+    </message>
+    <message>
+        <source>No plan available to save</source>
+        <translation>Nessun piano disponibile per il salvataggio</translation>
+    </message>
+    <message>
+        <source>Previous log entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Next log entry</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Executing all statements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enter refreshrate</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh rate of query in seconds</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Worksheet|Execute current</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F8</source>
+        <comment>Worksheet|Execute all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F9</source>
+        <comment>Worksheet|Execute next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift+F9</source>
+        <comment>Worksheet|Execute newline separated</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F7</source>
+        <comment>Worksheet|Execute saved SQL</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Worksheet|Describe under cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Up</source>
+        <comment>Worksheet|Previous log entry</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Down</source>
+        <comment>Worksheet|Next log entry</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Explain plan of current statement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Worksheet|Reexecute last statement</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check syntax of buffer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F3</source>
+        <comment>Worksheet|Explain plan</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+S</source>
+        <comment>Worksheet|Select saved SQL</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parsing all statements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F9</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheetSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation>Form1</translation>
+    </message>
+    <message>
+        <source>Automatically save file when closing worksheet (Without asking any questions).</source>
+        <translation>Salva automaticamente alla chiusura del foglio di lavoro (Senza chidere conferma).</translation>
+    </message>
+    <message>
+        <source>SQL Worksheet</source>
+        <translation>Foglio di lavoro SQL</translation>
+    </message>
+    <message>
+        <source>Auto &amp;save</source>
+        <translation>&amp;Salvataggio automatico</translation>
+    </message>
+    <message>
+        <source>Ask about saving &amp;changes</source>
+        <translation>Chiedi il salvataggio dei &amp;cambiamenti</translation>
+    </message>
+    <message>
+        <source>Ask about saving changes when closing worksheet.</source>
+        <translation>Chiedi per salvare i cambiamenti alla chiusura del foglio di lavoro.</translation>
+    </message>
+    <message>
+        <source>Add &amp;log entries at end</source>
+        <translation>Aggiungi i valori di &amp;log alla fine </translation>
+    </message>
+    <message>
+        <source>Add newly executed queries at end of log instead of top. Changing this will mess up the log in the windows that are opened.</source>
+        <translation>Aggiungi le query eseguite alla fine del log invece che all&apos;inizio. Cambiare questa opzione incasinerà i log nelle finestre già aperte.</translation>
+    </message>
+    <message>
+        <source>&amp;Multiple lines in log.</source>
+        <translation>Linee &amp;multiple nel log.</translation>
+    </message>
+    <message>
+        <source>Display multiple lines in the SQL column of the logging.</source>
+        <translation>Mostra linee multiple nella colonna SQL del logging.</translation>
+    </message>
+    <message>
+        <source>&amp;Enable statistics</source>
+        <translation>&amp;Abilita statistiche</translation>
+    </message>
+    <message>
+        <source>Enable statistic collection per default.</source>
+        <translation>Abilita la raccolta delle statistiche come default.</translation>
+    </message>
+    <message>
+        <source>Enable &amp;timed statistics</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Enable timed statistics as well when collecting normal statistics.</source>
+        <translation>Abilita anche le statistiche temporali con la raccolta delle statistiche normali.</translation>
+    </message>
+    <message>
+        <source>&amp;Display number column</source>
+        <translation>Numera i recor&amp;d di una query</translation>
+    </message>
+    <message>
+        <source>Add a numbering column to the left of the result.</source>
+        <translation>Aggiungi una colonna di numeri a sinistra dei risultati.</translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation>&amp;Sfoglia</translation>
+    </message>
+    <message>
+        <source>Default &amp;file</source>
+        <translation>&amp;File di default</translation>
+    </message>
+    <message>
+        <source>File to automatically open in a new worksheet.</source>
+        <translation>Apri il file automaticamente in un nuovo foglio di lavoro.</translation>
+    </message>
+    <message>
+        <source>Move &amp;cursor to error</source>
+        <translation>Porta il &amp;cursore all&apos;errore</translation>
+    </message>
+    <message>
+        <source>Move the cursor to an error if the error occurs.</source>
+        <translation>Sposta il cursore all&apos;errore, se esso si presenta.</translation>
+    </message>
+    <message>
+        <source>Save previous results</source>
+        <translation>Salva i risultati precedenti</translation>
+    </message>
+    <message>
+        <source>Keep previous results in while worksheet is open. Will consume lot of memory.</source>
+        <translation>Conserva i risultati precedenti finchè il foglio di lavoro è aperto. Richiede molta memoria.</translation>
+    </message>
+    <message>
+        <source>Execute directory when selecting in log</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute a statement when it is
+<byte value="x9"/><byte value="x9"/><byte value="x9"/>selected in the log, if disabled simply selected
+<byte value="x9"/><byte value="x9"/><byte value="x9"/>the statement in the log.</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheetStatistic</name>
+    <message>
+        <source>Server Tuning</source>
+        <translation>Ottimizzazione del server</translation>
+    </message>
+    <message>
+        <source>Load statistics from file</source>
+        <translation>Carica le statistiche da file</translation>
+    </message>
+    <message>
+        <source>Save statistics to file</source>
+        <translation>Salva le statistiche su file</translation>
+    </message>
+    <message>
+        <source>Remove statistics</source>
+        <translation>Elimina le statistiche</translation>
+    </message>
+    <message>
+        <source>Display charts</source>
+        <translation>Mostra il grafico</translation>
+    </message>
+    <message>
+        <source>Display execution plans</source>
+        <translation>Mostra i piani di esecuzione</translation>
+    </message>
+    <message>
+        <source>Hide</source>
+        <translation>Nascondi</translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheetText</name>
+    <message>
+        <source>Save changes?</source>
+        <translation>Salvare le modifiche?</translation>
+    </message>
+    <message>
+        <source>The editor has been changed. Do you want to save them,
+discard changes or open file in new worksheet?</source>
+        <translation>L&apos;editor è stato cambiato. Vuoi salvare, 
+annullare le modifiche o aprire il file in un nuovo foglio?</translation>
+    </message>
+    <message>
+        <source>&amp;Save</source>
+        <translation>&amp;Salva</translation>
+    </message>
+    <message>
+        <source>&amp;Discard</source>
+        <translation>&amp;Scarta</translation>
+    </message>
+    <message>
+        <source>&amp;New worksheet</source>
+        <translation>&amp;Nuovo foglio di lavoro</translation>
+    </message>
+</context>
+<context>
+    <name>toWriteFile</name>
+    <message>
+        <source>File error</source>
+        <translation>Errore di file</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t write data to tempfile</source>
+        <translation>Impossibile scrivere i dati nel file temporaneo</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t upload data to URL</source>
+        <translation>Impossibile caricare i dati verso l&apos;URL</translation>
+    </message>
+    <message>
+        <source>File saved successfully</source>
+        <translation>File salvato correttamente</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file for writing</source>
+        <translation>Impossibile aprire il file in scrittura</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t write data to file</source>
+        <translation>Impossibile scrivere i dati su file</translation>
+    </message>
+</context>
+</TS>

Added: kde-extras/tora/branches/upstream/current/src/i18n/tora_se.ts
===================================================================
--- kde-extras/tora/branches/upstream/current/src/i18n/tora_se.ts	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/i18n/tora_se.ts	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,10599 @@
+<!DOCTYPE TS><TS>
+<context>
+    <name>main</name>
+    <message>
+        <source>Loaded plugin %1</source>
+        <translation>Laddat modul %1</translation>
+    </message>
+    <message>
+        <source>Unhandled exception</source>
+        <translation>Ohanterat fel</translation>
+    </message>
+    <message>
+        <source>Exit</source>
+        <translation>Avsluta</translation>
+    </message>
+    <message>
+        <source>Unknown type</source>
+        <translation>Okänd typ</translation>
+    </message>
+</context>
+<context>
+    <name>toAbout</name>
+    <message>
+        <source>Quotes</source>
+        <translation>Citat</translation>
+    </message>
+    <message>
+        <source>TOra for Windows License</source>
+        <translation type="obsolete">TOra för Windows Licens</translation>
+    </message>
+    <message>
+        <source>GNU General Public License</source>
+        <translation>GNU GPL</translation>
+    </message>
+    <message>
+        <source>End User License</source>
+        <translation>Slutanvändar licens</translation>
+    </message>
+</context>
+<context>
+    <name>toAboutUI</name>
+    <message>
+        <source>toAboutUI</source>
+        <translation>toAboutUI</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>toAlert</name>
+    <message>
+        <source>Alert Messenger</source>
+        <translation>Alarm Meddelanden</translation>
+    </message>
+    <message>
+        <source>Registered</source>
+        <translation>Registrerade</translation>
+    </message>
+    <message>
+        <source>Register current</source>
+        <translation>Registrera nuvarande</translation>
+    </message>
+    <message>
+        <source>Remove registered</source>
+        <translation>Ta bort registrerad</translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation>Namn</translation>
+    </message>
+    <message>
+        <source>Message</source>
+        <translation>Meddelande</translation>
+    </message>
+    <message>
+        <source>Edit message in memo</source>
+        <translation>Editera meddelande i memo</translation>
+    </message>
+    <message>
+        <source>Send alert</source>
+        <translation>Skicka alarm</translation>
+    </message>
+    <message>
+        <source>Time</source>
+        <translation>Tid</translation>
+    </message>
+    <message>
+        <source>Failed to start polling thread, try closing some other tools and restart Alert Messenger</source>
+        <translation>Kunde inte starta pollande tråd, försök stänga några andra verktyg och starta om Alarm Meddelanden</translation>
+    </message>
+    <message>
+        <source>&amp;Add name</source>
+        <translation>&amp;Lägg till namn</translation>
+    </message>
+    <message>
+        <source>&amp;Remove name</source>
+        <translation>&amp;Ta bort namn</translation>
+    </message>
+    <message>
+        <source>Edit &amp;name</source>
+        <translation>Editera &amp;namn</translation>
+    </message>
+    <message>
+        <source>Edit &amp;message</source>
+        <translation>Editera &amp;meddelande</translation>
+    </message>
+    <message>
+        <source>&amp;Message in memo...</source>
+        <translation>&amp;Meddelande i memo...</translation>
+    </message>
+    <message>
+        <source>&amp;Send alert</source>
+        <translation>&amp;Skicka alarm</translation>
+    </message>
+    <message>
+        <source>&amp;Alert</source>
+        <translation>&amp;Alarm</translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Alert|Add Name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Backspace</source>
+        <comment>Alert|Remove name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+N</source>
+        <comment>Alert|Edit name</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+M</source>
+        <comment>Alert|Message</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <comment>Alert|Message in memo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Alert|Send alert</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toAnalyze</name>
+    <message>
+        <source>Analyze</source>
+        <translation>Analysera</translation>
+    </message>
+    <message>
+        <source>Statistics Manager</source>
+        <translation>Statestik Hanterare</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Alla</translation>
+    </message>
+    <message>
+        <source>Not analyzed</source>
+        <translation>Ej analyserad</translation>
+    </message>
+    <message>
+        <source>Analyzed</source>
+        <translation>Analyserad</translation>
+    </message>
+    <message>
+        <source>Tables</source>
+        <translation>Tabeller</translation>
+    </message>
+    <message>
+        <source>Indexes</source>
+        <translation>Index</translation>
+    </message>
+    <message>
+        <source>Compute statistics</source>
+        <translation>Beräkna statestik</translation>
+    </message>
+    <message>
+        <source>Estimate statistics</source>
+        <translation>Uppskatta statestik</translation>
+    </message>
+    <message>
+        <source>Delete statistics</source>
+        <translation>Radera statestik</translation>
+    </message>
+    <message>
+        <source>Validate references</source>
+        <translation>Kontrollera referenser</translation>
+    </message>
+    <message>
+        <source>for</source>
+        <translation>för</translation>
+    </message>
+    <message>
+        <source>Table</source>
+        <translation>Tabel</translation>
+    </message>
+    <message>
+        <source>Indexed columns</source>
+        <translation>Indexerad kolumner</translation>
+    </message>
+    <message>
+        <source>Local indexes</source>
+        <translation>Lokala index</translation>
+    </message>
+    <message>
+        <source>Sample</source>
+        <translation>Urval</translation>
+    </message>
+    <message>
+        <source>%</source>
+        <translation>%</translation>
+    </message>
+    <message>
+        <source>Parallel</source>
+        <translation>Parallell</translation>
+    </message>
+    <message>
+        <source>Start analyzing</source>
+        <translation>Börja analysera</translation>
+    </message>
+    <message>
+        <source>Stop current run</source>
+        <translation>Stoppa aktiv körning</translation>
+    </message>
+    <message>
+        <source>Explain plans</source>
+        <translation>Körplaner</translation>
+    </message>
+    <message>
+        <source>Worksheet statistics</source>
+        <translation>Arbetsblad statestik</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>&amp;Statistics</source>
+        <translation>&amp;Statestik</translation>
+    </message>
+    <message>
+        <source>Running %1 Pending %2</source>
+        <translation>Aktiva %1 Väntande %2</translation>
+    </message>
+    <message>
+        <source>Display SQL</source>
+        <translation>Visa SQL</translation>
+    </message>
+    <message>
+        <source>Analyze table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Optimize table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Statistics|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toAttachDock</name>
+    <message>
+        <source>Unknown dock position</source>
+        <translation>Okänd dockningsposition</translation>
+    </message>
+    <message>
+        <source>Main widget not KDockMainWindow</source>
+        <translation>Huvudfönster inte av KDockMainWindow klass</translation>
+    </message>
+</context>
+<context>
+    <name>toBackground</name>
+    <message>
+        <source>%1 queries running in background.</source>
+        <translation>%1 frågor aktiva i bakgrunden.</translation>
+    </message>
+    <message>
+        <source>One query running in background.</source>
+        <translation>En fråga aktiv i bakgrunden.</translation>
+    </message>
+    <message>
+        <source>No background queries.</source>
+        <translation>Inga frågor i bakgrunden.</translation>
+    </message>
+</context>
+<context>
+    <name>toBackup</name>
+    <message>
+        <source>Backup Manager</source>
+        <translation>Backup Hanterare</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>Logswitches per day and hour</source>
+        <translation>Logbyten per dag och timme</translation>
+    </message>
+    <message>
+        <source>Redo Switches</source>
+        <translation>Redo Byten</translation>
+    </message>
+    <message>
+        <source>Archived Logs</source>
+        <translation>Arkivloggar</translation>
+    </message>
+    <message>
+        <source>Last Backup</source>
+        <translation>Sinaste Backup</translation>
+    </message>
+    <message>
+        <source>Backup Progress</source>
+        <translation>Backup Bearbetning</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>&amp;Backup Manager</source>
+        <translation>&amp;Backup Hanterare</translation>
+    </message>
+    <message>
+        <source>This appears to be a cold backup database</source>
+        <translation>Ser ut att vara en kall backup</translation>
+    </message>
+    <message>
+        <source>This appears to be a hot backup database</source>
+        <translation>Ser ut att vara en hot backup</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Backup|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:CurrentBackup</name>
+    <message>
+        <source>Sid</source>
+        <translation>SID</translation>
+    </message>
+    <message>
+        <source>Serial#</source>
+        <translation>Serie#</translation>
+    </message>
+    <message>
+        <source>Context</source>
+        <translation>Kontext</translation>
+    </message>
+    <message>
+        <source>So Far</source>
+        <translation>Hittintills</translation>
+    </message>
+    <message>
+        <source>Total</source>
+        <translation>Totalt</translation>
+    </message>
+    <message>
+        <source>% Complete</source>
+        <translation>% Klart</translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:LastBackup</name>
+    <message>
+        <source>Filename</source>
+        <translation>Filnamn</translation>
+    </message>
+    <message>
+        <source>Completion Time</source>
+        <translation>Tidpunkt klar</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>File Size</source>
+        <translation>Filstorlek</translation>
+    </message>
+    <message>
+        <source>Bytes Written</source>
+        <translation>Bytes Skrivna</translation>
+    </message>
+    <message>
+        <source>Level</source>
+        <translation>Nivå</translation>
+    </message>
+    <message>
+        <source>Ckpt Change#</source>
+        <translation>Ckpt Byte#</translation>
+    </message>
+    <message>
+        <source>Checkpoint Time</source>
+        <translation>Checkpoint Tid</translation>
+    </message>
+    <message>
+        <source>Mrkd Crpt</source>
+        <translation>Mrkd Crpt</translation>
+    </message>
+    <message>
+        <source>Media Crpt</source>
+        <translation>Media Crpt</translation>
+    </message>
+    <message>
+        <source>Logically Corrupt</source>
+        <translation>Logiskt Fel</translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:LogHistory</name>
+    <message>
+        <source>Thread#</source>
+        <translation>Tråd#</translation>
+    </message>
+    <message>
+        <source>Sequence#</source>
+        <translation>Sekvens#</translation>
+    </message>
+    <message>
+        <source>Time Of First Entry</source>
+        <translation>Tidpunkt Första Post</translation>
+    </message>
+    <message>
+        <source>Lowest  Scn</source>
+        <translation>Lägsta Scn</translation>
+    </message>
+    <message>
+        <source>Highest Scn</source>
+        <translation>Högsta Scn</translation>
+    </message>
+    <message>
+        <source>Controlfile Recid</source>
+        <translation>Kontrolfil Recid</translation>
+    </message>
+    <message>
+        <source>Controlfile Stamp</source>
+        <translation>Kontrolfil Tid</translation>
+    </message>
+</context>
+<context>
+    <name>toBackup:LogSwitches</name>
+    <message>
+        <source>Date</source>
+        <translation>Datum</translation>
+    </message>
+    <message>
+        <source>00</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>01</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>02</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>03</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>04</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>05</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>06</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>07</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>08</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>09</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>10</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>11</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>12</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>13</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>14</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>15</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>16</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>17</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>18</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>19</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>20</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>21</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>22</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>23</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>toBarChart</name>
+    <message>
+        <source>Zoom</source>
+        <translation>Zoom</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser</name>
+    <message>
+        <source>No schemas</source>
+        <translation>Inga Scheman</translation>
+    </message>
+    <message>
+        <source>DB Browser</source>
+        <translation>DB Utforskare</translation>
+    </message>
+    <message>
+        <source>Update from DB</source>
+        <translation>Updatera från DB</translation>
+    </message>
+    <message>
+        <source>Define the object filter</source>
+        <translation>Definiera objektfilter</translation>
+    </message>
+    <message>
+        <source>Remove any object filter</source>
+        <translation>Ta bort alla objekt filter</translation>
+    </message>
+    <message>
+        <source>T&amp;ables</source>
+        <translation>T&amp;abeller</translation>
+    </message>
+    <message>
+        <source>Table browser</source>
+        <translation>Tabel utforskare</translation>
+    </message>
+    <message>
+        <source>Create new table</source>
+        <translation>Skapa ny tabell</translation>
+    </message>
+    <message>
+        <source>Modify table columns</source>
+        <translation>Ändra tabellkolumn</translation>
+    </message>
+    <message>
+        <source>Modify constraints</source>
+        <translation>Ändra constraints</translation>
+    </message>
+    <message>
+        <source>Modify indexes</source>
+        <translation>Ändra index</translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation>&amp;Kolumner</translation>
+    </message>
+    <message>
+        <source>&amp;Indexes</source>
+        <translation>&amp;Index</translation>
+    </message>
+    <message>
+        <source>C&amp;onstraints</source>
+        <translation>C&amp;onstraints</translation>
+    </message>
+    <message>
+        <source>&amp;References</source>
+        <translation>&amp;Referenser</translation>
+    </message>
+    <message>
+        <source>&amp;Grants</source>
+        <translation>Rätti&amp;gheter</translation>
+    </message>
+    <message>
+        <source>Triggers</source>
+        <translation>Triggers</translation>
+    </message>
+    <message>
+        <source>&amp;Data</source>
+        <translation>&amp;Data</translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation>Information</translation>
+    </message>
+    <message>
+        <source>Script</source>
+        <translation>Script</translation>
+    </message>
+    <message>
+        <source>&amp;Views</source>
+        <translation>&amp;Vyer</translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation>SQL</translation>
+    </message>
+    <message>
+        <source>De&amp;pendencies</source>
+        <translation>&amp;Beroenden</translation>
+    </message>
+    <message>
+        <source>Inde&amp;xes</source>
+        <translation>Inde&amp;x</translation>
+    </message>
+    <message>
+        <source>Info</source>
+        <translation>Info</translation>
+    </message>
+    <message>
+        <source>Se&amp;quences</source>
+        <translation>Sekvense&amp;r</translation>
+    </message>
+    <message>
+        <source>S&amp;ynonyms</source>
+        <translation>S&amp;ynonymer</translation>
+    </message>
+    <message>
+        <source>Cod&amp;e</source>
+        <translation>&amp;Kod</translation>
+    </message>
+    <message>
+        <source>&amp;Declaration</source>
+        <translation>&amp;Deklaration</translation>
+    </message>
+    <message>
+        <source>B&amp;ody</source>
+        <translation>Implementati&amp;on</translation>
+    </message>
+    <message>
+        <source>Tri&amp;ggers</source>
+        <translation>Tri&amp;ggers</translation>
+    </message>
+    <message>
+        <source>C&amp;ode</source>
+        <translation>K&amp;od</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>&amp;Change Schema</source>
+        <translation>&amp;Ändra Schema</translation>
+    </message>
+    <message>
+        <source>Change &amp;Object</source>
+        <translation>Ändra &amp;Objekt</translation>
+    </message>
+    <message>
+        <source>&amp;Define filter...</source>
+        <translation>&amp;Definiera filter...</translation>
+    </message>
+    <message>
+        <source>&amp;Clear filter</source>
+        <translation>&amp;Radera filter</translation>
+    </message>
+    <message>
+        <source>&amp;Browser</source>
+        <translation>&amp;Utforskare</translation>
+    </message>
+    <message>
+        <source>Data</source>
+        <translation>Data</translation>
+    </message>
+    <message>
+        <source>Indexes</source>
+        <translation>Index</translation>
+    </message>
+    <message>
+        <source>Constraints</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Tables</source>
+        <translation>Tabeller</translation>
+    </message>
+    <message>
+        <source>Columns</source>
+        <translation>Kolumner</translation>
+    </message>
+    <message>
+        <source>References</source>
+        <translation>Referenser</translation>
+    </message>
+    <message>
+        <source>Grants</source>
+        <translation>Rättigheter</translation>
+    </message>
+    <message>
+        <source>Dependencies</source>
+        <translation>Beroenden</translation>
+    </message>
+    <message>
+        <source>Views</source>
+        <translation>Vyer</translation>
+    </message>
+    <message>
+        <source>Sequences</source>
+        <translation>Sekvenser</translation>
+    </message>
+    <message>
+        <source>Code</source>
+        <translation>Kod</translation>
+    </message>
+    <message>
+        <source>Synonyms</source>
+        <translation>Synonymer</translation>
+    </message>
+    <message>
+        <source>Define the object filter for database browser</source>
+        <translation>Definiera objektfilter för databas utforskare</translation>
+    </message>
+    <message>
+        <source>Remove any object filter for database browser</source>
+        <translation>Radera objektfilter för databas utforskare</translation>
+    </message>
+    <message>
+        <source>Extents</source>
+        <translation>Antal Extent</translation>
+    </message>
+    <message>
+        <source>Enable constraint or trigger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Disable constraint or trigger</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Statistic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Partitions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Statistic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Browser|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>Browser|Change Schema</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+N</source>
+        <comment>Browser|Change object</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+G</source>
+        <comment>Browser|Define filter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <comment>Browser|Clear filter</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:AnyGrants</name>
+    <message>
+        <source>Privilege</source>
+        <translation>Rättighet</translation>
+    </message>
+    <message>
+        <source>Grantee</source>
+        <translation>Ägare</translation>
+    </message>
+    <message>
+        <source>Grantor</source>
+        <translation>Mottagare</translation>
+    </message>
+    <message>
+        <source>Grantable</source>
+        <translation>Vidare</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:IndexCols</name>
+    <message>
+        <source>Table Name</source>
+        <translation>Tabelnamn</translation>
+    </message>
+    <message>
+        <source>Column Name</source>
+        <translation>Kolumnnamn</translation>
+    </message>
+    <message>
+        <source>Column Length</source>
+        <translation>Kolumnlängd</translation>
+    </message>
+    <message>
+        <source>Descend</source>
+        <translation>Avtagande</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:IndexInformation</name>
+    <message>
+        <source>Owner</source>
+        <translation>Ägare</translation>
+    </message>
+    <message>
+        <source>Index Name</source>
+        <translation>Indexnamn</translation>
+    </message>
+    <message>
+        <source>Index Type</source>
+        <translation>Indextyp</translation>
+    </message>
+    <message>
+        <source>Table Owner</source>
+        <translation>Tabelägare</translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation>Tabelnamn</translation>
+    </message>
+    <message>
+        <source>Table Type</source>
+        <translation>Tabeltyp</translation>
+    </message>
+    <message>
+        <source>Uniqueness</source>
+        <translation>Unik</translation>
+    </message>
+    <message>
+        <source>Compression</source>
+        <translation>Komprimering</translation>
+    </message>
+    <message>
+        <source>Prefix Length</source>
+        <translation>Prefixlängd</translation>
+    </message>
+    <message>
+        <source>Tablespace Name</source>
+        <translation>Tabelspace Namn</translation>
+    </message>
+    <message>
+        <source>Ini Trans</source>
+        <translation>Ini Trans</translation>
+    </message>
+    <message>
+        <source>Max Trans</source>
+        <translation>Max Trans</translation>
+    </message>
+    <message>
+        <source>Initial Extent</source>
+        <translation>Ini Extent</translation>
+    </message>
+    <message>
+        <source>Next Extent</source>
+        <translation>Next Extent</translation>
+    </message>
+    <message>
+        <source>Min Extents</source>
+        <translation>Min Extents</translation>
+    </message>
+    <message>
+        <source>Max Extents</source>
+        <translation>Max Extents</translation>
+    </message>
+    <message>
+        <source>Pct Increase</source>
+        <translation>Pct Increase</translation>
+    </message>
+    <message>
+        <source>Pct Threshold</source>
+        <translation>Pct Threshold</translation>
+    </message>
+    <message>
+        <source>Include Column</source>
+        <translation>Inkludera Kolumn</translation>
+    </message>
+    <message>
+        <source>Freelists</source>
+        <translation>Frilista</translation>
+    </message>
+    <message>
+        <source>Freelist Groups</source>
+        <translation>Friliste Grupp</translation>
+    </message>
+    <message>
+        <source>Pct Free</source>
+        <translation>Pct Free</translation>
+    </message>
+    <message>
+        <source>Logging</source>
+        <translation>Loggning</translation>
+    </message>
+    <message>
+        <source>Blevel</source>
+        <translation>BLevel</translation>
+    </message>
+    <message>
+        <source>Leaf Blocks</source>
+        <translation>Löv Block</translation>
+    </message>
+    <message>
+        <source>Distinct Keys</source>
+        <translation>Distinkt Nyckel</translation>
+    </message>
+    <message>
+        <source>Avg Leaf Blocks Per Key</source>
+        <translation>Medel Löv Block Per Nyckel</translation>
+    </message>
+    <message>
+        <source>Avg Data Blocks Per Key</source>
+        <translation>Medel Data Block Per Nyckel</translation>
+    </message>
+    <message>
+        <source>Clustering Factor</source>
+        <translation>Klustringsfaktor</translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation>Status</translation>
+    </message>
+    <message>
+        <source>Num Rows</source>
+        <translation>Antal Rader</translation>
+    </message>
+    <message>
+        <source>Sample Size</source>
+        <translation>Urvalsstorlek</translation>
+    </message>
+    <message>
+        <source>Last Analyzed</source>
+        <translation>Sinaste Analys</translation>
+    </message>
+    <message>
+        <source>Degree</source>
+        <translation>Nivå</translation>
+    </message>
+    <message>
+        <source>Instances</source>
+        <translation>Instans</translation>
+    </message>
+    <message>
+        <source>Partitioned</source>
+        <translation>Partitionerad</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation>Tillfällig</translation>
+    </message>
+    <message>
+        <source>Generated</source>
+        <translation>Genererad</translation>
+    </message>
+    <message>
+        <source>Secondary</source>
+        <translation>Sekundär</translation>
+    </message>
+    <message>
+        <source>Buffer Pool</source>
+        <translation>Buffer Pool</translation>
+    </message>
+    <message>
+        <source>User Stats</source>
+        <translation>Andändar Stats</translation>
+    </message>
+    <message>
+        <source>Duration</source>
+        <translation>Längd</translation>
+    </message>
+    <message>
+        <source>Pct Direct Access</source>
+        <translation>PET Direkt Access</translation>
+    </message>
+    <message>
+        <source>Ityp Owner</source>
+        <translation>ITyp Ägare</translation>
+    </message>
+    <message>
+        <source>Ityp Name</source>
+        <translation>ITyp Namn</translation>
+    </message>
+    <message>
+        <source>Parameters</source>
+        <translation>Parametrar</translation>
+    </message>
+    <message>
+        <source>Global Stats</source>
+        <translation>Global Statestik</translation>
+    </message>
+    <message>
+        <source>Domidx Status</source>
+        <translation>DOMIDX Status</translation>
+    </message>
+    <message>
+        <source>Domidx Opstatus</source>
+        <translation>DOMIDX Opstatus</translation>
+    </message>
+    <message>
+        <source>Funcidx Status</source>
+        <translation>FunkIDX Status</translation>
+    </message>
+    <message>
+        <source>Join Index</source>
+        <translation>Join Index</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListCode</name>
+    <message>
+        <source>Object Name</source>
+        <translation>Objektnamn</translation>
+    </message>
+    <message>
+        <source>Object Type</source>
+        <translation>Objekttyp</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListIndex</name>
+    <message>
+        <source>Index Name</source>
+        <translation>Indexnamn</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListSequence</name>
+    <message>
+        <source>Sequence Name</source>
+        <translation>Sekvensnamn</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListSynonym</name>
+    <message>
+        <source>Synonym Name</source>
+        <translation>Synonymnamn</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListTables</name>
+    <message>
+        <source>Table Name</source>
+        <translation>Tabelnamn</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListTrigger</name>
+    <message>
+        <source>Trigger Name</source>
+        <translation>Triggernamn</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:ListView</name>
+    <message>
+        <source>View Name</source>
+        <translation>Vynamn</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:SequenceInformation</name>
+    <message>
+        <source>Sequence Owner</source>
+        <translation>Sekvensägare</translation>
+    </message>
+    <message>
+        <source>Sequence Name</source>
+        <translation>Sekvensnamn</translation>
+    </message>
+    <message>
+        <source>Min Value</source>
+        <translation>Min</translation>
+    </message>
+    <message>
+        <source>Max Value</source>
+        <translation>Max</translation>
+    </message>
+    <message>
+        <source>Increment By</source>
+        <translation>Öka med</translation>
+    </message>
+    <message>
+        <source>Cycle Flag</source>
+        <translation>Cykelflagga</translation>
+    </message>
+    <message>
+        <source>Order Flag</source>
+        <translation>Ordningsflagga</translation>
+    </message>
+    <message>
+        <source>Cache Size</source>
+        <translation>Cachestorlek</translation>
+    </message>
+    <message>
+        <source>Last Number</source>
+        <translation>Sista nummer</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:SynonymInformation</name>
+    <message>
+        <source>Owner</source>
+        <translation>Ägare</translation>
+    </message>
+    <message>
+        <source>Synonym Name</source>
+        <translation>Synonymnamn</translation>
+    </message>
+    <message>
+        <source>Table Owner</source>
+        <translation>Tabelä&apos;gare</translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation>Tabelnamn</translation>
+    </message>
+    <message>
+        <source>Db Link</source>
+        <translation>DB Länk</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TableInformation</name>
+    <message>
+        <source>Owner</source>
+        <translation>Ägare</translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation>Tabelnamn</translation>
+    </message>
+    <message>
+        <source>Tablespace Name</source>
+        <translation>Tablespace Namn</translation>
+    </message>
+    <message>
+        <source>Cluster Name</source>
+        <translation>Klusternamn</translation>
+    </message>
+    <message>
+        <source>Iot Name</source>
+        <translation>IOT Namn</translation>
+    </message>
+    <message>
+        <source>Pct Free</source>
+        <translation>PCT Free</translation>
+    </message>
+    <message>
+        <source>Pct Used</source>
+        <translation>PCT Used</translation>
+    </message>
+    <message>
+        <source>Ini Trans</source>
+        <translation>Ini Trans</translation>
+    </message>
+    <message>
+        <source>Max Trans</source>
+        <translation>Max Trans</translation>
+    </message>
+    <message>
+        <source>Initial Extent</source>
+        <translation>Initial Extent</translation>
+    </message>
+    <message>
+        <source>Next Extent</source>
+        <translation>Next Extent</translation>
+    </message>
+    <message>
+        <source>Min Extents</source>
+        <translation>Min extents</translation>
+    </message>
+    <message>
+        <source>Max Extents</source>
+        <translation>Max Extents</translation>
+    </message>
+    <message>
+        <source>Pct Increase</source>
+        <translation>PCT Increase</translation>
+    </message>
+    <message>
+        <source>Freelists</source>
+        <translation>Frilista</translation>
+    </message>
+    <message>
+        <source>Freelist Groups</source>
+        <translation>Frilistegrupp</translation>
+    </message>
+    <message>
+        <source>Logging</source>
+        <translation>Loggning</translation>
+    </message>
+    <message>
+        <source>Backed Up</source>
+        <translation>Backuppad</translation>
+    </message>
+    <message>
+        <source>Num Rows</source>
+        <translation>Antal Rader</translation>
+    </message>
+    <message>
+        <source>Blocks</source>
+        <translation>Block</translation>
+    </message>
+    <message>
+        <source>Empty Blocks</source>
+        <translation>Tomma Block</translation>
+    </message>
+    <message>
+        <source>Avg Space</source>
+        <translation>Medelstorlek</translation>
+    </message>
+    <message>
+        <source>Chain Cnt</source>
+        <translation>Länkningsantal</translation>
+    </message>
+    <message>
+        <source>Avg Row Len</source>
+        <translation>Medel Radlängd</translation>
+    </message>
+    <message>
+        <source>Avg Space Freelist Blocks</source>
+        <translation>Medel Utrymme Frilisteblock</translation>
+    </message>
+    <message>
+        <source>Num Freelist Blocks</source>
+        <translation>Antal Frilisteblock</translation>
+    </message>
+    <message>
+        <source>Degree</source>
+        <translation>Nivå</translation>
+    </message>
+    <message>
+        <source>Instances</source>
+        <translation>Instanser</translation>
+    </message>
+    <message>
+        <source>Cache</source>
+        <translation>Cache</translation>
+    </message>
+    <message>
+        <source>Table Lock</source>
+        <translation>Tabellås</translation>
+    </message>
+    <message>
+        <source>Sample Size</source>
+        <translation>Urvalsstorlek</translation>
+    </message>
+    <message>
+        <source>Last Analyzed</source>
+        <translation>Senast Analyserad</translation>
+    </message>
+    <message>
+        <source>Partitioned</source>
+        <translation>Partitionerad</translation>
+    </message>
+    <message>
+        <source>Iot Type</source>
+        <translation>IOT Type</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation>Tillfällig</translation>
+    </message>
+    <message>
+        <source>Secondary</source>
+        <translation>Sekundär</translation>
+    </message>
+    <message>
+        <source>Nested</source>
+        <translation>Nästlad</translation>
+    </message>
+    <message>
+        <source>Buffer Pool</source>
+        <translation>Buffer Pool</translation>
+    </message>
+    <message>
+        <source>Row Movement</source>
+        <translation>Radrörelse</translation>
+    </message>
+    <message>
+        <source>Global Stats</source>
+        <translation>Globala Stats</translation>
+    </message>
+    <message>
+        <source>User Stats</source>
+        <translation>Användar Stats</translation>
+    </message>
+    <message>
+        <source>Duration</source>
+        <translation>Längd</translation>
+    </message>
+    <message>
+        <source>Skip Corrupt</source>
+        <translation>Bortse Korrupt</translation>
+    </message>
+    <message>
+        <source>Monitoring</source>
+        <translation>Övervakning</translation>
+    </message>
+    <message>
+        <source>Cluster Owner</source>
+        <translation>Kluster Ägare</translation>
+    </message>
+    <message>
+        <source>Dependencies</source>
+        <translation>Beroenden</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TableTrigger</name>
+    <message>
+        <source>Trigger Name</source>
+        <translation>Triggernamn</translation>
+    </message>
+    <message>
+        <source>Triggering Event</source>
+        <translation>Händelse</translation>
+    </message>
+    <message>
+        <source>Column Name</source>
+        <translation>Kolumnnamn</translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation>Status</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Beskrivning</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TriggerCols</name>
+    <message>
+        <source>Column Name</source>
+        <translation>Kolumnnamn</translation>
+    </message>
+    <message>
+        <source>In Update</source>
+        <translation>Under Updatering</translation>
+    </message>
+    <message>
+        <source>Usage</source>
+        <translation>Användande</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser:TriggerInfo</name>
+    <message>
+        <source>Owner</source>
+        <translation>Ägare</translation>
+    </message>
+    <message>
+        <source>Trigger Name</source>
+        <translation>Triggernamn</translation>
+    </message>
+    <message>
+        <source>Trigger Type</source>
+        <translation>Triggertyp</translation>
+    </message>
+    <message>
+        <source>Triggering Event</source>
+        <translation>Händelse</translation>
+    </message>
+    <message>
+        <source>Table Owner</source>
+        <translation>Tabelägare</translation>
+    </message>
+    <message>
+        <source>Base Object Type</source>
+        <translation>Objekt Typ</translation>
+    </message>
+    <message>
+        <source>Table Name</source>
+        <translation>Tabelnamn</translation>
+    </message>
+    <message>
+        <source>Column Name</source>
+        <translation>Kolumnnamn</translation>
+    </message>
+    <message>
+        <source>Referencing Names</source>
+        <translation>Refererade Namn</translation>
+    </message>
+    <message>
+        <source>When Clause</source>
+        <translation>När Klausul</translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation>Status</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Beskrivning</translation>
+    </message>
+    <message>
+        <source>Action Type</source>
+        <translation>Körtyp</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserConstraintUI</name>
+    <message>
+        <source>Constraint info</source>
+        <translation>Constraintinfo</translation>
+    </message>
+    <message>
+        <source>Display SQL to create this constraint</source>
+        <translation>Visa SQL för att återskapa constraint</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Namn</translation>
+    </message>
+    <message>
+        <source>C&amp;ondition</source>
+        <translation>Vilk&amp;or</translation>
+    </message>
+    <message>
+        <source>&amp;Column</source>
+        <translation>&amp;Kolumn</translation>
+    </message>
+    <message>
+        <source>C&amp;heck</source>
+        <translation>K&amp;ontroll</translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation>&amp;Kolumn</translation>
+    </message>
+    <message>
+        <source>&amp;Type</source>
+        <translation>&amp;Typ</translation>
+    </message>
+    <message>
+        <source>Primary key</source>
+        <translation>Primär Nyckel</translation>
+    </message>
+    <message>
+        <source>Unique</source>
+        <translation>Unik</translation>
+    </message>
+    <message>
+        <source>&amp;Primary key/Unique</source>
+        <translation>&amp;Primär nyckel/Unik</translation>
+    </message>
+    <message>
+        <source>Refers &amp;To</source>
+        <translation>Re&amp;fererar</translation>
+    </message>
+    <message>
+        <source>R&amp;efered columns</source>
+        <translation>R&amp;efererad Kolumn</translation>
+    </message>
+    <message>
+        <source>&amp;Referential</source>
+        <translation>&amp;Refererande</translation>
+    </message>
+    <message>
+        <source>&amp;Apply</source>
+        <translation>&amp;Spara</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Stäng</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserFilterUI</name>
+    <message>
+        <source>Filter setting</source>
+        <translation>Filterinställningar</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Filter on name</source>
+        <translation>Filtrera på namn</translation>
+    </message>
+    <message>
+        <source>&amp;No filter</source>
+        <translation>I&amp;nget filter</translation>
+    </message>
+    <message>
+        <source>&amp;Start with</source>
+        <translation>&amp;Starta med</translation>
+    </message>
+    <message>
+        <source>Object name start with</source>
+        <translation>Objekt nammn startar med</translation>
+    </message>
+    <message>
+        <source>&amp;End with</source>
+        <translation>Slutar m&amp;ed</translation>
+    </message>
+    <message>
+        <source>Object name ends in</source>
+        <translation>Objekt namn slutar med</translation>
+    </message>
+    <message>
+        <source>&amp;Contains</source>
+        <translation>&amp;Innehåller</translation>
+    </message>
+    <message>
+        <source>Object name contains</source>
+        <translation>Objektnamn innehåller</translation>
+    </message>
+    <message>
+        <source>&amp;RegExp</source>
+        <translation>&amp;RegExp</translation>
+    </message>
+    <message>
+        <source>Object name matches RegExp</source>
+        <translation>Objektnamn matchar RegExp</translation>
+    </message>
+    <message>
+        <source>&amp;Comma list</source>
+        <translation>K&amp;omma lista</translation>
+    </message>
+    <message>
+        <source>Comma separated list of object names</source>
+        <translation>Kommaseparerad lista av objektnamn</translation>
+    </message>
+    <message>
+        <source>Filter on tablespace</source>
+        <translation>Filtrera på tablespace</translation>
+    </message>
+    <message>
+        <source>Include &amp;All</source>
+        <translation>Inkludera &amp;Alla</translation>
+    </message>
+    <message>
+        <source>&amp;Include</source>
+        <translation>&amp;Includera</translation>
+    </message>
+    <message>
+        <source>&amp;Exclude</source>
+        <translation>&amp;Exkludera</translation>
+    </message>
+    <message>
+        <source>Only display own schema</source>
+        <translation>Visa enbart egna scheman</translation>
+    </message>
+    <message>
+        <source>Ignore &amp;Case</source>
+        <translation>Ignorera &amp;Versaler</translation>
+    </message>
+    <message>
+        <source>&amp;Invert selection</source>
+        <translation>&amp;Invertera Val</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserIndexUI</name>
+    <message>
+        <source>Index name</source>
+        <translation>Indexnamn</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Namn</translation>
+    </message>
+    <message>
+        <source>Display SQL to create this constraint</source>
+        <translation>Visa SQL för att skapa detta constraint</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation>&amp;Columner</translation>
+    </message>
+    <message>
+        <source>&amp;Type</source>
+        <translation>&amp;Typ</translation>
+    </message>
+    <message>
+        <source>Normal</source>
+        <translation>Normal</translation>
+    </message>
+    <message>
+        <source>Primary key</source>
+        <translation>Primärnyckel</translation>
+    </message>
+    <message>
+        <source>Unique</source>
+        <translation>Unik</translation>
+    </message>
+    <message>
+        <source>Bitmap</source>
+        <translation>Bitmap</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserTable</name>
+    <message>
+        <source>Performing table changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Executing table change script</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Cancelled ongoing table modification, table might be corrupt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation type="unfinished">Namn</translation>
+    </message>
+    <message>
+        <source>Datatype</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Extra parameters</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toBrowserTableUI</name>
+    <message>
+        <source>Table columns</source>
+        <translation>Tabelkolumner</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Display SQL to create this constraint</source>
+        <translation>Visa SQL för att skapa constraint</translation>
+    </message>
+    <message>
+        <source>&amp;Tablespace</source>
+        <translation>&amp;Tablespace</translation>
+    </message>
+    <message>
+        <source>C&amp;omment</source>
+        <translation>K&amp;ommentar</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Namn</translation>
+    </message>
+    <message>
+        <source>&amp;General</source>
+        <translation>Allm&amp;änt</translation>
+    </message>
+    <message>
+        <source>&amp;Columns</source>
+        <translation>&amp;Kolumner</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Extra declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Parallel declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Storage declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Custom column declarations</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChangeConnection</name>
+    <message>
+        <source>Change the connection of the tool.</source>
+        <translation>Ändra anslutning för verktyget.</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find selected connection</source>
+        <translation>Kunde inte hitta valda anslutningen</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find parent connection. Internal error.</source>
+        <translation>Kunde inte hitta överliggande anslutning. Internt fel.</translation>
+    </message>
+</context>
+<context>
+    <name>toChartAlarm</name>
+    <message>
+        <source>Email</source>
+        <translation>Email</translation>
+    </message>
+</context>
+<context>
+    <name>toChartAlarmUI</name>
+    <message>
+        <source>Chart alarm</source>
+        <translation>Diagram alarm</translation>
+    </message>
+    <message>
+        <source>Any</source>
+        <translation>Valfri</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Alla</translation>
+    </message>
+    <message>
+        <source>Sum</source>
+        <translation>Summa</translation>
+    </message>
+    <message>
+        <source>Average</source>
+        <translation>Medel</translation>
+    </message>
+    <message>
+        <source>Max</source>
+        <translation>Max</translation>
+    </message>
+    <message>
+        <source>Min</source>
+        <translation>Min</translation>
+    </message>
+    <message>
+        <source>Statusmessage</source>
+        <translation>Statusmeddelande</translation>
+    </message>
+    <message>
+        <source>Email</source>
+        <translation>Email</translation>
+    </message>
+    <message>
+        <source>Ignore</source>
+        <translation>Ignorera</translation>
+    </message>
+    <message>
+        <source>=</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>!=</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&lt;</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&gt;</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&lt;=</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&gt;=</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Operation</source>
+        <translation>Operation</translation>
+    </message>
+    <message>
+        <source>Operation to perform on the selected columns</source>
+        <translation>Operation att utföra på valda kolumner</translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation>Värde</translation>
+    </message>
+    <message>
+        <source>Value to use in comparison.</source>
+        <translation>Värde att använda i jämförelse.</translation>
+    </message>
+    <message>
+        <source>Comparison</source>
+        <translation>Jämförelse</translation>
+    </message>
+    <message>
+        <source>What comparison to do with the result from the above operation.</source>
+        <translation>Vilken jämförelse att göra med resultatet från ovannämda operation.</translation>
+    </message>
+    <message>
+        <source>Action</source>
+        <translation>Genomförande</translation>
+    </message>
+    <message>
+        <source>What to do when alarm is triggered.</source>
+        <translation>Vad som skall göras när alarmet går av.</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation>Permanent</translation>
+    </message>
+    <message>
+        <source>Remember this alarm when restarting TOra.</source>
+        <translation type="obsolete">Kom ihåg detta alarm när TOra startar om.</translation>
+    </message>
+    <message>
+        <source>Remember this alarm when restarting.</source>
+        <translation>Kom ihåg detta alarm efter omstart.</translation>
+    </message>
+</context>
+<context>
+    <name>toChartHandler</name>
+    <message>
+        <source>ALARM:</source>
+        <translation>ALARM:</translation>
+    </message>
+    <message>
+        <source>TOra alert:</source>
+        <translation>TOra alarm:</translation>
+    </message>
+    <message>
+        <source>A defined alert value was detected:
+
+%1
+
+At: %2</source>
+        <translation>Ett definierat alarm värde har detekterats:
+
+%1
+
+Vid: %2</translation>
+    </message>
+    <message>
+        <source>Alarms</source>
+        <translation>Alarm</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation>Permanent</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation>Tillfällig</translation>
+    </message>
+</context>
+<context>
+    <name>toChartManager</name>
+    <message>
+        <source>Chart Manager</source>
+        <translation>Diagram Hanterare</translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation>Uppdatera lista</translation>
+    </message>
+    <message>
+        <source>Open tracker file</source>
+        <translation>Öppna spårningsfil</translation>
+    </message>
+    <message>
+        <source>Setup chart</source>
+        <translation>Diagraminställningar</translation>
+    </message>
+    <message>
+        <source>Connection</source>
+        <translation>Anslutning</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Titel</translation>
+    </message>
+    <message>
+        <source>ID</source>
+        <translation>ID</translation>
+    </message>
+    <message>
+        <source>Tracking</source>
+        <translation>Spårning</translation>
+    </message>
+    <message>
+        <source>Alarms</source>
+        <translation>Alarm</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>&amp;Chart Manager</source>
+        <translation>&amp;Diagram Hanterare</translation>
+    </message>
+    <message>
+        <source>ALARM:</source>
+        <translation type="obsolete">ALARM:</translation>
+    </message>
+    <message>
+        <source>TOra alert:</source>
+        <translation type="obsolete">TOra alarm:</translation>
+    </message>
+    <message>
+        <source>A defined alert value was detected:
+
+%1
+
+At: %2</source>
+        <translation type="obsolete">Ett definierat alarm värde har detekterats:
+
+%1
+
+Vid: %2</translation>
+    </message>
+    <message>
+        <source>Initial value didn&apos;t start with &quot; in CSV file</source>
+        <translation>Första värdet startade inte med &quot; i CSV fil</translation>
+    </message>
+    <message>
+        <source>Missing closing &quot; in CSV file</source>
+        <translation>Saknar avslutande &quot; i CSV fil</translation>
+    </message>
+    <message>
+        <source>Chart format</source>
+        <translation>Diagramformat</translation>
+    </message>
+    <message>
+        <source>Select format of the chart to display</source>
+        <translation>Välj format på diagrammet att visa</translation>
+    </message>
+    <message>
+        <source>Barchart</source>
+        <translation>Stapeldiagram</translation>
+    </message>
+    <message>
+        <source>Linechart</source>
+        <translation>Linjediagram</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation type="obsolete">Permanent</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation type="obsolete">Tillfällig</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Chart Manager|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toChartSetup</name>
+    <message>
+        <source>Charts</source>
+        <translation>Diagram</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation>Permanent</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation>Tillfällig</translation>
+    </message>
+</context>
+<context>
+    <name>toChartSetupUI</name>
+    <message>
+        <source>Chart manager setup</source>
+        <translation>Diagraminställningar</translation>
+    </message>
+    <message>
+        <source>Track chart to file</source>
+        <translation>Spara diagram till fil</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Leta</translation>
+    </message>
+    <message>
+        <source>Persistent</source>
+        <translation>Permanent</translation>
+    </message>
+    <message>
+        <source>Remember to track this chart to this file always when starting TOra.</source>
+        <translation type="obsolete">Kom ihåg att spara detta diagram till denna fil om TOra startas om.</translation>
+    </message>
+    <message>
+        <source>Enable tracking</source>
+        <translation>Spara till fil</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Filnamn</translation>
+    </message>
+    <message>
+        <source>Alarms</source>
+        <translation>Alarm</translation>
+    </message>
+    <message>
+        <source>&amp;Add</source>
+        <translation>&amp;Lägg till</translation>
+    </message>
+    <message>
+        <source>Remove</source>
+        <translation>Radera</translation>
+    </message>
+    <message>
+        <source>Modify</source>
+        <translation>Ändra</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Remember to track this chart to this file always when starting.</source>
+        <translation>Kom ihåg att spara detta diagram till fil efter omstart.</translation>
+    </message>
+</context>
+<context>
+    <name>toChartTool</name>
+    <message>
+        <source>Chart Manager...</source>
+        <translation>Diagram Hanterare...</translation>
+    </message>
+    <message>
+        <source>Chart Manager</source>
+        <translation>Diagram Hanterare</translation>
+    </message>
+</context>
+<context>
+    <name>toCheckLicense</name>
+    <message>
+        <source>Welcome to TOra</source>
+        <translation>Välkommen till TOra</translation>
+    </message>
+    <message>
+        <source>(Personal license, not for commerical use)</source>
+        <translation>(Personlig licens, ej för kommersiell användande)</translation>
+    </message>
+    <message>
+        <source>(Commercial license one user)</source>
+        <translation>(Kommersiell licens en användare)</translation>
+    </message>
+    <message>
+        <source>(Commerical site license)</source>
+        <translation>(Kommersiell plats licens)</translation>
+    </message>
+    <message>
+        <source>(Commercial license %1 users)</source>
+        <translation>(Kommersiell licens %1 användare)</translation>
+    </message>
+    <message>
+        <source>Welcome to TOra (Unregistered version, not for commercial use)</source>
+        <translation>Välkommen till TOra (Oregistrerad version, ej för kommsiellt bruk)</translation>
+    </message>
+</context>
+<context>
+    <name>toConnection</name>
+    <message>
+        <source>All tool widgets need to have autodelete flag set</source>
+        <translation>Alla verktygsfönster måste ha autodelete flaggan satt</translation>
+    </message>
+    <message>
+        <source>Not done caching objects, can not clear unread cache</source>
+        <translation>Inte klar med att cacha objekt, kan inte radera oläst cache</translation>
+    </message>
+    <message>
+        <source>Waiting for object caching to be completed.
+Canceling this dialog will probably leave some list of
+database objects empty.</source>
+        <translation>Väntar på att objekt cachet skall bli klart.
+Avbryt denna dialogruta kommer troligtvis lämna någon lista med
+databasobjekt tom.</translation>
+    </message>
+    <message>
+        <source>Waiting for object cache</source>
+        <translation>Väntar på objekt cachning</translation>
+    </message>
+    <message>
+        <source>Not done caching objects</source>
+        <translation>Inte klar med att objektcachning</translation>
+    </message>
+    <message>
+        <source>Object %1 not available for %2</source>
+        <translation>%2 har inte tillgång till objekt %1</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Parse only not implemented for this type of connection</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toConnectionProvider</name>
+    <message>
+        <source>Tried to fetch unknown provider %1</source>
+        <translation>Försökte hämta okänt databastyp %1</translation>
+    </message>
+</context>
+<context>
+    <name>toCurrent</name>
+    <message>
+        <source>Current Session</source>
+        <translation>Nuvarande Session</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>Privilege</source>
+        <translation>Rättighet</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>Grantable</source>
+        <translation>Vidare</translation>
+    </message>
+    <message>
+        <source>Privileges</source>
+        <translation>Rättigheter</translation>
+    </message>
+    <message>
+        <source>Version</source>
+        <translation>Version</translation>
+    </message>
+    <message>
+        <source>Parameters</source>
+        <translation>Parametrar</translation>
+    </message>
+    <message>
+        <source>Statistics</source>
+        <translation>Statestik</translation>
+    </message>
+    <message>
+        <source>Resource Limits</source>
+        <translation>Resursbegränsningar</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>&amp;Current Session</source>
+        <translation>&amp;Nuvarande Session</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <translation>System</translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Objekt</translation>
+    </message>
+    <message>
+        <source>Role</source>
+        <translation>Roll</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Current session|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toCurrent:ResourceLimit</name>
+    <message>
+        <source>Resource Name</source>
+        <translation>Resursnamn</translation>
+    </message>
+    <message>
+        <source>Current Utilization</source>
+        <translation>Nuvarande Användning</translation>
+    </message>
+    <message>
+        <source>Max Utilization</source>
+        <translation>Max Användning</translation>
+    </message>
+    <message>
+        <source>Initial Allocation</source>
+        <translation>Initial Allokering</translation>
+    </message>
+    <message>
+        <source>Limit Value</source>
+        <translation>Begränsande Värde</translation>
+    </message>
+</context>
+<context>
+    <name>toCurrent:Version</name>
+    <message>
+        <source>Version</source>
+        <translation>Version</translation>
+    </message>
+</context>
+<context>
+    <name>toCurrentTool</name>
+    <message>
+        <source>Couldn&apos;t find parent tool. Internal error.</source>
+        <translation>Kunde inte hitta överliggare verktyg. Internt fel.</translation>
+    </message>
+</context>
+<context>
+    <name>toDatabaseSetting</name>
+    <message>
+        <source>Invalid values</source>
+        <translation>Felaktiga värden</translation>
+    </message>
+    <message>
+        <source>Doesn&apos;t make sense to have max content less than initial
+fetch size. Will adjust value to be higher.</source>
+        <translation>Inte vettigt att ha max innehåll mindre än initial hämtningsstorlek.
+Ändrar storligt till störra.</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+</context>
+<context>
+    <name>toDatabaseSettingUI</name>
+    <message>
+        <source>toDatabaseSettingUI</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&amp;Autocommit changes</source>
+        <translation>&amp;Autocommit på alla ändringar</translation>
+    </message>
+    <message>
+        <source>Specify if changes should be automatically commited.</source>
+        <translation>Anger att alla databasändringar automatiskt skall sparas i databasen direkt.</translation>
+    </message>
+    <message>
+        <source>UI feedback settings</source>
+        <translation>Användarinterface responsinställningar</translation>
+    </message>
+    <message>
+        <source>Abort long running queries and reexecute in own connection</source>
+        <translation>Avbryt långa frågor och kör om i egen anslutning</translation>
+    </message>
+    <message>
+        <source>Reexecute a query taking more than 30 seconds in its own connection to prevent blocking other database access.</source>
+        <translation>Starta om frågor som tar mer än 30 sekunder i sin egen databasanslutning för att förhindra att blockera annan databasaccess.</translation>
+    </message>
+    <message>
+        <source>Move to own connection after</source>
+        <translation>Flytta till egen anslutening efter</translation>
+    </message>
+    <message>
+        <source> seconds</source>
+        <translation> sekunder</translation>
+    </message>
+    <message>
+        <source>Run UI blocking queries exclusively in main thread</source>
+        <translation type="obsolete">Kör enbart UI blockerande frågor i huvud anslutningen</translation>
+    </message>
+    <message>
+        <source>Let the background queries normally running on the main connection run in a separate connection.</source>
+        <translation>Låt bakgrundsfrågor som normalt kör på huvudanslutningen köra i en separat anslutning.</translation>
+    </message>
+    <message>
+        <source>Don&apos;t reread data if parameters are exactly same</source>
+        <translation>Läs inte om data om parametrarna är exakt samma</translation>
+    </message>
+    <message>
+        <source>If checked TOra will not refresh a result if it is reexecuted exactly the same two times in a row.</source>
+        <translation type="obsolete">Om checkad TOra kommer inte läsa om data om omkörda frågan är exakt lika två gånger i rad.</translation>
+    </message>
+    <message>
+        <source>Query settings</source>
+        <translation>Frågeinställningar</translation>
+    </message>
+    <message>
+        <source>Maximum size &amp;display</source>
+        <translation>Maximal &amp;kolumnstorlek</translation>
+    </message>
+    <message>
+        <source>The largest default size of a column in query results.</source>
+        <translation>Den största storleken en kolumn får växa till automatiskt i ett resultat från en fråga.</translation>
+    </message>
+    <message>
+        <source>&amp;All</source>
+        <translation>&amp;Alla</translation>
+    </message>
+    <message>
+        <source>&amp;Initial rows to fetch in query</source>
+        <translation>&amp;Initialt antal rader att hämta</translation>
+    </message>
+    <message>
+        <source>The number of rows to always fetch when executing a query.</source>
+        <translation>Antalet rader som alltid skall hämtas från en fråga om möjligt.</translation>
+    </message>
+    <message>
+        <source>Initially read in content editor</source>
+        <translation>Initialt antal som läses in i innehållseditorn</translation>
+    </message>
+    <message>
+        <source>Number of rows to initially start reading in content editor, use unlimited on slow connections.</source>
+        <translation>Antal rader att initialt fråga efter vid inläsning i innehållseditorn, använd obegränsat för långsamma anslutningar.</translation>
+    </message>
+    <message>
+        <source>Indicate empty values as &apos;&apos; instead of NULL as {null}.</source>
+        <translation>Indikera tomma värden som &apos;&apos; istället för NUll som {null}.</translation>
+    </message>
+    <message>
+        <source>Start read object cache when needed</source>
+        <translation>Börja läsa objekt cache när det behövs</translation>
+    </message>
+    <message>
+        <source>Read object cache on connect</source>
+        <translation>Läs objekt cache direkt vid anslutning</translation>
+    </message>
+    <message>
+        <source>Never read object cache until mandatory</source>
+        <translation>Läs aldrig cache om det inte är obligatoriskt</translation>
+    </message>
+    <message>
+        <source>Run UI blocking queries exclusively in main connection</source>
+        <translation>Kör blockerande databasfrågor exklusivt på huvudanslutning</translation>
+    </message>
+    <message>
+        <source>Never read object cache (Will leave parts of TOra nonfunctianal)</source>
+        <translation type="obsolete">Läs aldrig objekt cache (Lämnar delar av TOra icke fungerande)</translation>
+    </message>
+    <message>
+        <source>Keep alive</source>
+        <translation>HÃ¥ll vid liv</translation>
+    </message>
+    <message>
+        <source>Make sure connections are kept alive by periodically (5 minutes) sending a query on all idle connections.</source>
+        <translation>Se till att anslutningar hålls vid liv genom att periodiskt (Var 5 minut) sända en fråga på alla inaktiva anslutningar.</translation>
+    </message>
+    <message>
+        <source>Never read object cache (Will leave parts of application nonfunctianal)</source>
+        <translation>Läs aldrig om cache (Kommer lämna delar av applikationen icke fungerande)</translation>
+    </message>
+    <message>
+        <source>If checked will not refresh a result if it is reexecuted exactly the same two times in a row.</source>
+        <translation>Updatera inte resultat om det exekveras exakt lika dann två gånger i rad.</translation>
+    </message>
+    <message>
+        <source>Dataformat</source>
+        <translation>Dataformat</translation>
+    </message>
+    <message>
+        <source>Number format</source>
+        <translation>Nummerformat</translation>
+    </message>
+    <message>
+        <source>The way numbers should be presented.</source>
+        <translation>Sättet sifror skall visas.</translation>
+    </message>
+    <message>
+        <source>Decimals</source>
+        <translation>Decimaler</translation>
+    </message>
+    <message>
+        <source>Number of decimals for fixed decimal format.</source>
+        <translation>Antal decimaler för fast decimalformat.</translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation>Standard</translation>
+    </message>
+    <message>
+        <source>Scientific</source>
+        <translation>Vetenskaplig</translation>
+    </message>
+    <message>
+        <source>Fixed decimal</source>
+        <translation>Fasta decimaler</translation>
+    </message>
+</context>
+<context>
+    <name>toDatatype</name>
+    <message>
+        <source>&lt;B&gt;(&lt;/B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;B&gt;,&lt;/B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&lt;B&gt;)&lt;/B&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebug</name>
+    <message>
+        <source>Head</source>
+        <translation type="obsolete">Deklarationer</translation>
+    </message>
+    <message>
+        <source>Body</source>
+        <translation type="obsolete">Implementation</translation>
+    </message>
+    <message>
+        <source>Misc</source>
+        <translation type="obsolete">Allmänt</translation>
+    </message>
+    <message>
+        <source>Expected function or procedure, internal error</source>
+        <translation>Förväntade funktion eller procedur, internt fel</translation>
+    </message>
+    <message>
+        <source>Unexpected end of declaration.</source>
+        <translation>Oväntat slut på deklaration.</translation>
+    </message>
+    <message>
+        <source>Input</source>
+        <translation>Inparametrar</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find any function or procedure under cursor.</source>
+        <translation>Kunde inte hitta funktion eller procedur under markören.</translation>
+    </message>
+    <message>
+        <source>Anonymous</source>
+        <translation type="obsolete">Anonymt</translation>
+    </message>
+    <message>
+        <source>Output</source>
+        <translation>Utparametrar</translation>
+    </message>
+    <message>
+        <source>Returning</source>
+        <translation>Returnerade</translation>
+    </message>
+    <message>
+        <source>Failed to get runtime info (Reason %1)</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>[Count %1]</source>
+        <translation>[Antal %1]</translation>
+    </message>
+    <message>
+        <source>{Unavailable}</source>
+        <translation>{Ej tillgängligt}</translation>
+    </message>
+    <message>
+        <source>DEFERED</source>
+        <translation>SENARE</translation>
+    </message>
+    <message>
+        <source>No running target</source>
+        <translation>Ingen körande måltråd</translation>
+    </message>
+    <message>
+        <source>Debugger</source>
+        <translation>Debugger</translation>
+    </message>
+    <message>
+        <source>Update object list</source>
+        <translation>Updatera objektlista</translation>
+    </message>
+    <message>
+        <source>Clean sheet</source>
+        <translation>Rensa editor</translation>
+    </message>
+    <message>
+        <source>Rescan source</source>
+        <translation>Tolka om källkod</translation>
+    </message>
+    <message>
+        <source>Compile</source>
+        <translation>Kompilera</translation>
+    </message>
+    <message>
+        <source>Run current block</source>
+        <translation type="obsolete">Kör nuvarande block</translation>
+    </message>
+    <message>
+        <source>Stop running</source>
+        <translation>Stanna körning</translation>
+    </message>
+    <message>
+        <source>Step into procedure or function</source>
+        <translation>GÃ¥ in i procedur eller funktion</translation>
+    </message>
+    <message>
+        <source>Step over procedure or function</source>
+        <translation>Gå över procedur eller funktion</translation>
+    </message>
+    <message>
+        <source>Return from procedure or function</source>
+        <translation>Returnera från procedur eller funktion</translation>
+    </message>
+    <message>
+        <source>Show head or body of packages and procedures.</source>
+        <translation type="obsolete">Visa deklaration eller implementation av packet eller procedurer.</translation>
+    </message>
+    <message>
+        <source>Show/hide debug info pane.</source>
+        <translation>Visa/dölj debug informationspanel.</translation>
+    </message>
+    <message>
+        <source>Go to next error</source>
+        <translation>Nästa fel</translation>
+    </message>
+    <message>
+        <source>Go to previous error</source>
+        <translation>Föregående fel</translation>
+    </message>
+    <message>
+        <source>Toggle breakpoint on current line</source>
+        <translation>Lägg till ta bort breakpoint på nuvarande rad</translation>
+    </message>
+    <message>
+        <source>Enable/disable breakpoint on current line</source>
+        <translation>Slå av eller på breakpoint på nuvarande rad</translation>
+    </message>
+    <message>
+        <source>Add new variable watch</source>
+        <translation>Lägg till en ny variabel att visa</translation>
+    </message>
+    <message>
+        <source>Delete variable watch</source>
+        <translation>Ta bort variable att visa</translation>
+    </message>
+    <message>
+        <source>Change value of watched variable</source>
+        <translation>Ändra värde av betraktad variable</translation>
+    </message>
+    <message>
+        <source>Objects</source>
+        <translation>Objekt</translation>
+    </message>
+    <message>
+        <source>Contents</source>
+        <translation>Innehåll</translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Objekt</translation>
+    </message>
+    <message>
+        <source>Line</source>
+        <translation>Rad</translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation>Schema</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>&amp;Stack Trace</source>
+        <translation>&amp;Stack</translation>
+    </message>
+    <message>
+        <source>Variable</source>
+        <translation>Variabel</translation>
+    </message>
+    <message>
+        <source>Data</source>
+        <translation>Data</translation>
+    </message>
+    <message>
+        <source>W&amp;atch</source>
+        <translation>V&amp;ariabler</translation>
+    </message>
+    <message>
+        <source>Object Type</source>
+        <translation>Objekttyp</translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation>Aktiv</translation>
+    </message>
+    <message>
+        <source>&amp;Breakpoints</source>
+        <translation>&amp;Breakpoint</translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation>Namn</translation>
+    </message>
+    <message>
+        <source>Content</source>
+        <translation>Innehåll</translation>
+    </message>
+    <message>
+        <source>&amp;Parameters</source>
+        <translation>&amp;Parametrar</translation>
+    </message>
+    <message>
+        <source>Debug &amp;Output</source>
+        <translation>Debug &amp;Utdata</translation>
+    </message>
+    <message>
+        <source>&amp;Runtime Log</source>
+        <translation>&amp;Log</translation>
+    </message>
+    <message>
+        <source>Failed to start target task thread, close some other tools and try again</source>
+        <translation>Kunde inte starta måltråd, stäng andra verktyg och försök igen</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t start debugging</source>
+        <translation>Kunde inte starta debugga</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t connect to target session:
+</source>
+        <translation>Kunde inte ansluta till målsessionen:
+</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Stop execution?</source>
+        <translation>Avsluta körning?</translation>
+    </message>
+    <message>
+        <source>Do you want to abort the current execution?</source>
+        <translation>Vill du avsluta den nuvarande körningen?</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Header changed</source>
+        <translation type="obsolete">Deklaration ändrad</translation>
+    </message>
+    <message>
+        <source>Header changed. Continuing will discard uncompiled or saved changes</source>
+        <translation type="obsolete">Deklaration ändrad. Om du fortsätter kommer ändringar som inte kompilerats eller sparats att förloras</translation>
+    </message>
+    <message>
+        <source>&amp;Compile</source>
+        <translation>&amp;Kompilera</translation>
+    </message>
+    <message>
+        <source>&amp;Discard changes</source>
+        <translation>Sl&amp;äng ändringar</translation>
+    </message>
+    <message>
+        <source>Body changed</source>
+        <translation type="obsolete">Implementation ändrad</translation>
+    </message>
+    <message>
+        <source>Body changed. Continuing will discard uncompiled or saved changes</source>
+        <translation type="obsolete">Implementation ändrad. Om du fortsätter kommer ändringar som inte kompilerats eller sparats att förloras</translation>
+    </message>
+    <message>
+        <source>&amp;New Sheet</source>
+        <translation>&amp;Rensa Editor</translation>
+    </message>
+    <message>
+        <source>S&amp;can Source</source>
+        <translation>&amp;Tolka om källkod</translation>
+    </message>
+    <message>
+        <source>&amp;Execute</source>
+        <translation type="obsolete">&amp;Exekvera</translation>
+    </message>
+    <message>
+        <source>&amp;Stop</source>
+        <translation>Av&amp;sluta</translation>
+    </message>
+    <message>
+        <source>Step &amp;Into</source>
+        <translation>GÃ¥ in &amp;i</translation>
+    </message>
+    <message>
+        <source>&amp;Next Line</source>
+        <translation>&amp;Nästa rad</translation>
+    </message>
+    <message>
+        <source>&amp;Return From</source>
+        <translation>&amp;Returnera Från</translation>
+    </message>
+    <message>
+        <source>&amp;Head Editor</source>
+        <translation type="obsolete">&amp;Deklaration/Implementation</translation>
+    </message>
+    <message>
+        <source>&amp;Debug Pane</source>
+        <translation>&amp;Debug Panel</translation>
+    </message>
+    <message>
+        <source>Next &amp;Error</source>
+        <translation>Nästa f&amp;el</translation>
+    </message>
+    <message>
+        <source>Pre&amp;vious Error</source>
+        <translation>F&amp;öregående Fel</translation>
+    </message>
+    <message>
+        <source>&amp;Toggle Breakpoint</source>
+        <translation>&amp;Lägg till/radera Breakpoint</translation>
+    </message>
+    <message>
+        <source>D&amp;isable Breakpoint</source>
+        <translation>Avakt&amp;ivera Breakpoint</translation>
+    </message>
+    <message>
+        <source>&amp;Add Watch...</source>
+        <translation>Lägg Till V&amp;ariabel...</translation>
+    </message>
+    <message>
+        <source>Delete &amp;Watch</source>
+        <translation>Ta Bort &amp;Variabel</translation>
+    </message>
+    <message>
+        <source>Chan&amp;ge Watch...</source>
+        <translation>&amp;Ändra Variabel...</translation>
+    </message>
+    <message>
+        <source>Refresh Object List</source>
+        <translation>Uppdatera Objektlista</translation>
+    </message>
+    <message>
+        <source>Select Schema</source>
+        <translation>Ändra Schema</translation>
+    </message>
+    <message>
+        <source>Erase Runtime &amp;Log</source>
+        <translation>Radera kör&amp;log</translation>
+    </message>
+    <message>
+        <source>&amp;Debug</source>
+        <translation>&amp;Debug</translation>
+    </message>
+    <message>
+        <source>Enter new value to the watch %1</source>
+        <translation>Ange nytt värde för variabeln %1</translation>
+    </message>
+    <message>
+        <source>Unimplemented in PL/SQL debug interface</source>
+        <translation>Ej implementera i PL/SQL debug grånssnitt</translation>
+    </message>
+    <message>
+        <source>Assignment failed (Reason %1)</source>
+        <translation>Tilldelning gick fel (Anledning %1)</translation>
+    </message>
+    <message>
+        <source>DISABLED</source>
+        <translation>EJ AKTIVERAD</translation>
+    </message>
+    <message>
+        <source>ENABLED</source>
+        <translation>AKTIVERAD</translation>
+    </message>
+    <message>
+        <source>Can not enable breakpoint, not a valid line. Perhaps needs to recompile.</source>
+        <translation>Kan inte slå på breakpoint, rad ej godkänd. Du måste kanske kompilera om.</translation>
+    </message>
+    <message>
+        <source>Can not enable breakpoint, not a valid object. Perhaps needs to compile.</source>
+        <translation>Kan inte aktivera breakpoint, inte ett gilltigt objekt. MÃ¥ste kanske kompilera om.</translation>
+    </message>
+    <message>
+        <source>NOT SET</source>
+        <translation>EJ SATT</translation>
+    </message>
+    <message>
+        <source>Failed to remove breakpoint (Reason %1)</source>
+        <translation>Kunde inte ta bort breakpoint (Anledning %1)</translation>
+    </message>
+    <message>
+        <source> body</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>{No debug info}</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation type="unfinished">Okänd</translation>
+    </message>
+    <message>
+        <source>Execute or continue execution</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 changed</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>%1 changed. Continuing will discard uncompiled or saved changes</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F9</source>
+        <comment>Debug|Scan source</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F9</source>
+        <comment>Debug|Compile</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation type="unfinished">Stäng</translation>
+    </message>
+    <message>
+        <source>CloseAll</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Execute or continue</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Debug|Execute</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F12</source>
+        <comment>Debug|Stop</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F7</source>
+        <comment>Debug|Step into</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F8</source>
+        <comment>Debug|Stop over</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F6</source>
+        <comment>Debug|Return from</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F11</source>
+        <comment>Debug|Debug pane</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+N</source>
+        <comment>Debug|Next error</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+P</source>
+        <comment>Debug|Previous error</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F5</source>
+        <comment>Debug|Toggle breakpoint</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F6</source>
+        <comment>Debug|Disable breakpoint</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Debug|Add watch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Delete</source>
+        <comment>Debug|Delete watch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F4</source>
+        <comment>Debug|Change watch</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Debug|Refresh objectlist</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>Debug|Select schema</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toDebugChangeUI</name>
+    <message>
+        <source>Change value of watch</source>
+        <translation>Ändra värde på variabel</translation>
+    </message>
+    <message>
+        <source>NULL</source>
+        <translation>NULL</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Index</source>
+        <translation>&amp;Index</translation>
+    </message>
+</context>
+<context>
+    <name>toDebugOutput</name>
+    <message>
+        <source>Couldn&apos;t enable/disable output for session</source>
+        <translation>Kunde inte aktivera/avaktivera utdata för sessionen</translation>
+    </message>
+</context>
+<context>
+    <name>toDebugText</name>
+    <message>
+        <source>Invalid start of code</source>
+        <translation>Ej gilltig början av kod</translation>
+    </message>
+</context>
+<context>
+    <name>toDebugWatch</name>
+    <message>
+        <source>Can&apos;t parse location</source>
+        <translation>Kan inte få fram position</translation>
+    </message>
+</context>
+<context>
+    <name>toDebugWatchUI</name>
+    <message>
+        <source>Add variable watch</source>
+        <translation>Lägg till variabel</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Variable name</source>
+        <translation>&amp;Variabel namn</translation>
+    </message>
+    <message>
+        <source>Variable name to watch.</source>
+        <translation>Variabel namn.</translation>
+    </message>
+    <message>
+        <source>&amp;Scope</source>
+        <translation>&amp;Scope</translation>
+    </message>
+    <message>
+        <source>&amp;Local</source>
+        <translation>&amp;Lokal</translation>
+    </message>
+    <message>
+        <source>Currently running scope.</source>
+        <translation>Nuvarande scope.</translation>
+    </message>
+    <message>
+        <source>&amp;Body Scope</source>
+        <translation type="obsolete">&amp;Implementation Scope</translation>
+    </message>
+    <message>
+        <source>The scope of the file in the body editor.</source>
+        <translation>Samma scope som filen in implementationseditorn.</translation>
+    </message>
+    <message>
+        <source>&amp;Head Scope</source>
+        <translation type="obsolete">&amp;Deklarations Scope</translation>
+    </message>
+    <message>
+        <source>Currently package or type scope.</source>
+        <translation type="obsolete">Nuvarande packet eller typ scope.</translation>
+    </message>
+    <message>
+        <source>&amp;Global</source>
+        <translation>&amp;Global</translation>
+    </message>
+    <message>
+        <source>Global scope of variable.</source>
+        <translation>Globalt scope för variabler.</translation>
+    </message>
+    <message>
+        <source>&amp;Autodetect</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Package</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toEditExtensionGotoUI</name>
+    <message>
+        <source>Go to line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation type="unfinished">&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Cancel</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Line Number</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toEditExtensionSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&amp;Right align keywords in each statement.</source>
+        <translation>Juste&amp;ra nyckelord till höger i varje statement.</translation>
+    </message>
+    <message>
+        <source>Insert a &amp;newline after each block</source>
+        <translation>Lägg till &amp;nyrad efter varje block</translation>
+    </message>
+    <message>
+        <source>Place THEN, LOOP, AS and IS on new line at b&amp;eginning of new block</source>
+        <translation>Plac&amp;era THEN, LOOP, AS och IS på ny rad vid början av nya block</translation>
+    </message>
+    <message>
+        <source>Place &amp;comma on new line before item instead of after on same line</source>
+        <translation>Pla&amp;cera komma på ny rad före nästa del i stället för efter på samma rad som föregående</translation>
+    </message>
+    <message>
+        <source>&amp;Expand spaces to tabs when indenting</source>
+        <translation>&amp;Expandera mellanslag till tabbar vid indentering</translation>
+    </message>
+    <message>
+        <source>Transform spaces to tabs whenever posible when indenting.</source>
+        <translation>Transformera mellanslag till tabbar om möjligt vid indentering.</translation>
+    </message>
+    <message>
+        <source>Put spaces around operators</source>
+        <translation>Lägg till mellanslag runt operatorer</translation>
+    </message>
+    <message>
+        <source>Insert extra spaces between operators.</source>
+        <translation>Lägg till extra mellanslag mellan operatorer.</translation>
+    </message>
+    <message>
+        <source>Transform keywords to &amp;uppercase</source>
+        <translation>Transformera nyc&amp;kelord till versaler</translation>
+    </message>
+    <message>
+        <source>&amp;Indentation level</source>
+        <translation>&amp;Indenterings nivå</translation>
+    </message>
+    <message>
+        <source>&amp;Same line comment column</source>
+        <translation>Kolumn för kommentarer på &amp;samma rad</translation>
+    </message>
+    <message>
+        <source>Example</source>
+        <translation>Expempel</translation>
+    </message>
+    <message>
+        <source>Auto indent read only SQL text editors</source>
+        <translation>Auto indenterad ej redigerbar SQL</translation>
+    </message>
+</context>
+<context>
+    <name>toEditExtensionTool</name>
+    <message>
+        <source>Forward</source>
+        <translation>Framåt</translation>
+    </message>
+    <message>
+        <source>Backward</source>
+        <translation>Bakåt</translation>
+    </message>
+    <message>
+        <source>Incremental Search</source>
+        <translation>Inkrementel Sökning</translation>
+    </message>
+    <message>
+        <source>Selection</source>
+        <translation>Urval</translation>
+    </message>
+    <message>
+        <source>Editor</source>
+        <translation>Editor</translation>
+    </message>
+    <message>
+        <source>Obfuscate Selection</source>
+        <translation>Obfuscera Urval</translation>
+    </message>
+    <message>
+        <source>Obfuscate Editor</source>
+        <translation>Obfuscera Editor</translation>
+    </message>
+    <message>
+        <source>Auto Indent</source>
+        <translation>Auto Indentering</translation>
+    </message>
+    <message>
+        <source>Indent Block</source>
+        <translation>Indentera Block</translation>
+    </message>
+    <message>
+        <source>De-indent Block</source>
+        <translation>Avindentera Block</translation>
+    </message>
+    <message>
+        <source>Indent block in editor</source>
+        <translation>Indentera block i editor</translation>
+    </message>
+    <message>
+        <source>De-indent block in editor</source>
+        <translation>Avindentera block i editor</translation>
+    </message>
+    <message>
+        <source>Upper</source>
+        <translation>Versaler</translation>
+    </message>
+    <message>
+        <source>Lower</source>
+        <translation>Gemener</translation>
+    </message>
+    <message>
+        <source>Modify Case</source>
+        <translation>Ändra versaler</translation>
+    </message>
+    <message>
+        <source>Ctrl+S</source>
+        <comment>Edit|Incremental search forward</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+R</source>
+        <comment>Edit|Incremental search backward</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+I</source>
+        <comment>Edit|Indent selection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+Shift+I</source>
+        <comment>Edit|Indent editor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+U</source>
+        <comment>Edit|Uppercase</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <comment>Edit|Lowercase</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Right</source>
+        <comment>Edit|Indent block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Left</source>
+        <comment>Edit|De-indent block</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Goto Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toExtract</name>
+    <message>
+        <source>Failed to extract owner and name from (%1), internal error %2</source>
+        <translation>Kunde inte få fram ägare och namn från (%1), internt fel %2</translation>
+    </message>
+    <message>
+        <source>CREATE</source>
+        <translation>Ã…TERSKAPA</translation>
+    </message>
+    <message>
+        <source>Creating create script</source>
+        <translation>Genererar återskapnings skript</translation>
+    </message>
+    <message>
+        <source>Creating script</source>
+        <translation>Genererar script</translation>
+    </message>
+    <message>
+        <source>Creating script was cancelled</source>
+        <translation>Skriptgenerering avbruten</translation>
+    </message>
+    <message>
+        <source>Internal error, missing : in object description</source>
+        <translation>Internt fel, saknar : i objektbeskrivning</translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to create</source>
+        <translation>Felaktig typ %1 för återskapning</translation>
+    </message>
+    <message>
+        <source>Create</source>
+        <translation>Ã…terskapa</translation>
+    </message>
+    <message>
+        <source>Creating description</source>
+        <translation>Genererar beskrivning</translation>
+    </message>
+    <message>
+        <source>Describe was cancelled</source>
+        <translation>Beskrivning avbruten</translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to describe</source>
+        <translation>Felaktig typ %1 att beskriva</translation>
+    </message>
+    <message>
+        <source>Describe</source>
+        <translation>Beskriv</translation>
+    </message>
+    <message>
+        <source>DROP</source>
+        <translation>RADERA</translation>
+    </message>
+    <message>
+        <source>Creating drop script</source>
+        <translation>Genererar raderings skript</translation>
+    </message>
+    <message>
+        <source>Creating drop script was cancelled</source>
+        <translation>Generering av raderings skript avbruten</translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to drop</source>
+        <translation>Felaktig typ %1 att radera</translation>
+    </message>
+    <message>
+        <source>Drop script</source>
+        <translation>Raderingsskript</translation>
+    </message>
+    <message>
+        <source>Invalid describe context (&lt;3 parts) &quot;%1&quot;)</source>
+        <translation>Felaktig kontext (&lt;3 delar &quot;%1)</translation>
+    </message>
+    <message>
+        <source>Object list not available in migration</source>
+        <translation>Objektlista ej tillgänglig för migrering</translation>
+    </message>
+    <message>
+        <source>MIGRATE</source>
+        <translation>MIGRERING</translation>
+    </message>
+    <message>
+        <source>Creating migration script</source>
+        <translation>Skapa migreringsskript</translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to migrate</source>
+        <translation>Felaktig typ %1 för migrering</translation>
+    </message>
+    <message>
+        <source>Migration script</source>
+        <translation>Migrationsskript</translation>
+    </message>
+    <message>
+        <source>REM This DDL was reverse engineered by
+REM TOra, Version %1
+REM
+REM at:   %2
+REM from: %3, an %4 %5 database
+REM
+REM on:   %6
+REM
+</source>
+        <translation>REM Denna DDL var återskapad av
+REM TOra, Version %1
+REM
+REM tid:  %2
+REM från: %3, en %4 %5 databas
+REM
+REM på:   %6
+REM
+</translation>
+    </message>
+    <message>
+        <source>REM Generating free space report for:
+REM</source>
+        <translation>REM Genererar rapport över fritt utrymme
+REM</translation>
+    </message>
+    <message>
+        <source>REM Generating %1 statement for:
+</source>
+        <translation>REM Genererar %1 statement för:</translation>
+    </message>
+    <message>
+        <source>Error in toExtract
+Operation:      %1
+Object:         %2
+Error:          %3</source>
+        <translation>Fel i toExtract:
+Operation:      %1
+Objekt:         %2
+Fel:            %3</translation>
+    </message>
+    <message>
+        <source>Malformed resize string (Should contain multiple of 3 number of &apos;:&apos;)</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>More than one definition for column %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Same kind of definition existing more than once for column %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toGetSessionType</name>
+    <message>
+        <source>Failed to find style match</source>
+        <translation>Kunde inte hitta stil</translation>
+    </message>
+</context>
+<context>
+    <name>toGlobalSettingUI</name>
+    <message>
+        <source>toGlobalSettingUI</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Paths</source>
+        <translation>Bibliotek</translation>
+    </message>
+    <message>
+        <source>&amp;Custom SQL</source>
+        <translation>Egen S&amp;QL</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Leta</translation>
+    </message>
+    <message>
+        <source>&amp;Plugin directory</source>
+        <translation>&amp;Plugin bibliotek</translation>
+    </message>
+    <message>
+        <source>Directory where to find plugins when starting tora.</source>
+        <translation type="obsolete">Bibliotek där plugin ligger när TOra startar.</translation>
+    </message>
+    <message>
+        <source>&amp;Help directory</source>
+        <translation>&amp;Hjälp bibliotek</translation>
+    </message>
+    <message>
+        <source>Default session</source>
+        <translation>Standardsession</translation>
+    </message>
+    <message>
+        <source>What session to use by TOra when saving session.</source>
+        <translation type="obsolete">Vilken fil som default skall användas när TOra sparar sessionen.</translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation>Val</translation>
+    </message>
+    <message>
+        <source>&amp;Save passwords</source>
+        <translation>&amp;Spara lösenord</translation>
+    </message>
+    <message>
+        <source>Remember the last password you used to connect.
+Will leave the password unencryptet in the config file.</source>
+        <translation>Kom ihåg lösenorden du använder när du ansluter.
+Kommer lämna lösenorden okrypterade i programmets konfigurationsfil.</translation>
+    </message>
+    <message>
+        <source>Include DB in caption</source>
+        <translation>Inkludera databas i titel</translation>
+    </message>
+    <message>
+        <source>Include database connection in window captions</source>
+        <translation>Inkludera databas anslutnigen i fönstrets titel</translation>
+    </message>
+    <message>
+        <source>Change current connection with active window</source>
+        <translation>Ändra nuvarande anslutning med aktivt fönster</translation>
+    </message>
+    <message>
+        <source>Change currently select connection to the connection of the new active window</source>
+        <translation>Ändra nuvarande vald anslutning till den anslutning som är det aktiva fönstret har</translation>
+    </message>
+    <message>
+        <source>Connect history</source>
+        <translation>Anslutningshistorik</translation>
+    </message>
+    <message>
+        <source>Number of connections to save in history.</source>
+        <translation>Antal olika anslutningar som skall sparas historiskt.</translation>
+    </message>
+    <message>
+        <source>Message history</source>
+        <translation>Meddelandehistorik</translation>
+    </message>
+    <message>
+        <source>Number of status messages to save in the message history.</source>
+        <translation>Antal statusmeddelanden som skall sparas i meddelandehistoriken.</translation>
+    </message>
+    <message>
+        <source> seconds</source>
+        <translation> sekunder</translation>
+    </message>
+    <message>
+        <source>Status &amp;message</source>
+        <translation>Status&amp;meddelande</translation>
+    </message>
+    <message>
+        <source>The time in seconds temporary messages will be displayed in the status bar. 0 menas keep.</source>
+        <translation>Hur länge tillfälliga meddelanden visas i statusraden. Om du väljer 0 betyder det att de skall behållas tills nästa.</translation>
+    </message>
+    <message>
+        <source>Display alerts in statusbar only</source>
+        <translation>Visa meddelande enbart i statusrad</translation>
+    </message>
+    <message>
+        <source>Display alerts in messagebar instead of poping up a dialog with a warning.</source>
+        <translation>Visa meddelanden enbart i statusraden i stället för att poppa upp en dialogruta för att visa den.</translation>
+    </message>
+    <message>
+        <source>Tools toolbar on left</source>
+        <translation>Verktygsrad till vänster</translation>
+    </message>
+    <message>
+        <source>Start using the tools toolbar on the left of the main window instead of at the top.</source>
+        <translation>Placera verktygsraden tll vänster av fönstret istället för överst.</translation>
+    </message>
+    <message>
+        <source>Maximize window on start</source>
+        <translation>Maximera fönstret vid uppstart</translation>
+    </message>
+    <message>
+        <source>Restore session on startup</source>
+        <translation>Återställ session vid start</translation>
+    </message>
+    <message>
+        <source>&amp;Desktop aware</source>
+        <translation>&amp;Skrivbordsmedveten</translation>
+    </message>
+    <message>
+        <source>Colors get really weird in KDE if you select this.</source>
+        <translation>Färger kan bli riktigt fel i KDE om du väljer detta.</translation>
+    </message>
+    <message>
+        <source>&amp;Antialiase fonts</source>
+        <translation>&amp;Avrunda typsnitt</translation>
+    </message>
+    <message>
+        <source>Use antialiase fonts if Qt supports this. You need to restart tora for this to take affect.</source>
+        <translation type="obsolete">Använd &quot;antialiase&quot; typsnitt om Qt stödjer detta. Du måste starta om för att detta skall verka.</translation>
+    </message>
+    <message>
+        <source>Docks use toolbars</source>
+        <translation>Docks använder verktygsrad</translation>
+    </message>
+    <message>
+        <source>Check this if docks are to use toolbars instead of normal frames.</source>
+        <translation>Välj denna om dockade fönster skall använda verkygsrader i stället för vanliga fönster.</translation>
+    </message>
+    <message>
+        <source>&amp;Style</source>
+        <translation>&amp;Stil</translation>
+    </message>
+    <message>
+        <source>The style to use for the user interface.</source>
+        <translation>Vilken stil som skall användas på användarinterfacet.</translation>
+    </message>
+    <message>
+        <source>Size Unit</source>
+        <translation>Storleksenhet</translation>
+    </message>
+    <message>
+        <source>Define the unit sizes should be displayed in tora.</source>
+        <translation type="obsolete">Definierar vilken storleksenhet som skall visas i TOra.</translation>
+    </message>
+    <message>
+        <source>Bytes</source>
+        <translation>Bytes</translation>
+    </message>
+    <message>
+        <source>KB</source>
+        <translation>KB</translation>
+    </message>
+    <message>
+        <source>MB</source>
+        <translation>MB</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>Text</translation>
+    </message>
+    <message>
+        <source>Tab delimited</source>
+        <translation>Tabbar</translation>
+    </message>
+    <message>
+        <source>CSV</source>
+        <translation>CSV</translation>
+    </message>
+    <message>
+        <source>HTML</source>
+        <translation>HTML</translation>
+    </message>
+    <message>
+        <source>Default list format</source>
+        <translation>Standard listformat</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>Default refreshtime in tools.</source>
+        <translation>Standard uppdateringstid i verktyg.</translation>
+    </message>
+    <message>
+        <source>Chart samples</source>
+        <translation>Diagram mätpunkter</translation>
+    </message>
+    <message>
+        <source>Number of samples to keep in line and barcharts by default.</source>
+        <translation>Antal mätpunkter som skall sparas i diagram som standard.</translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation>Obegränsat</translation>
+    </message>
+    <message>
+        <source>Save unlimited number of samples. Can large amounts of consume memory.</source>
+        <translation>Spara obegränsat antal mätpunkter. Kan ta upp stora mängder interminne.</translation>
+    </message>
+    <message>
+        <source>Display samples</source>
+        <translation>Visa mätpunkter</translation>
+    </message>
+    <message>
+        <source>Number of samples to display in line and barcharts by default.</source>
+        <translation>Antal mätpunkter som skall visas i linje och stapeldiagram som standard.</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Alla</translation>
+    </message>
+    <message>
+        <source>Display all available samples</source>
+        <translation>Visa alla tillgängliga mätpunkter</translation>
+    </message>
+    <message>
+        <source>Check for upgrades on startup</source>
+        <translation>Titta efter uppgraderingar vid uppstart</translation>
+    </message>
+    <message>
+        <source>Check the TOra webpage for upgrades to the program. Does not send any information about the users computer or TOra installation.</source>
+        <translation>Kontakta TOra hemsida om uppgraderingar kommit till programmet. Sänder ingen information angående användarens dator eller TOra installationen.</translation>
+    </message>
+    <message>
+        <source>Translation</source>
+        <translation>Översättning</translation>
+    </message>
+    <message>
+        <source>Which translation locale to use for this program. Must restart to have effect.</source>
+        <translation>Vilken översättnings locale som skall användas för programmet. Måste starta om för innan det får effekt.</translation>
+    </message>
+    <message>
+        <source>&amp;Cache directory</source>
+        <translation>&amp;Cache bibliotek</translation>
+    </message>
+    <message>
+        <source>Use Disk Caching</source>
+        <translation>Använd disk cache</translation>
+    </message>
+    <message>
+        <source>Use Disk Caching of ObjectLists and Synonyms</source>
+        <translation>Använd disk cachning av objektlista och synonymer</translation>
+    </message>
+    <message>
+        <source>Directory where to find plugins when starting.</source>
+        <translation>Bibliotek som plugins finns när du startar.</translation>
+    </message>
+    <message>
+        <source>Directory where to place cached dataaseinformation.</source>
+        <translation>Bibliotek att spara databas cache.</translation>
+    </message>
+    <message>
+        <source>Directory where to find help files.</source>
+        <translation>Bibliotek där hjälpfiler finns.</translation>
+    </message>
+    <message>
+        <source>Default session to use when saving a session.</source>
+        <translation>Standard filnamn att spara session.</translation>
+    </message>
+    <message>
+        <source>Use antialiase fonts if Qt supports this. You need to restart for this to take affect.</source>
+        <translation>Använd antialias typsnitt om Qt stöder det. Du måste starta om för att ändringar skall få effekt.</translation>
+    </message>
+    <message>
+        <source>Define the unit sizes should be displayed.</source>
+        <translation>Definiera enheted som storlekar skall visas med.</translation>
+    </message>
+</context>
+<context>
+    <name>toHelp</name>
+    <message>
+        <source>Help Navigation</source>
+        <translation>Hjälp Navigering</translation>
+    </message>
+    <message>
+        <source>Contents</source>
+        <translation>Innehåll</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Sök</translation>
+    </message>
+    <message>
+        <source>All manuals</source>
+        <translation>Alla manualer</translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation>Resultat</translation>
+    </message>
+    <message>
+        <source>Manual</source>
+        <translation>Manual</translation>
+    </message>
+    <message>
+        <source>TOra Help Browser</source>
+        <translation type="obsolete">TOra Hjälpläsare</translation>
+    </message>
+    <message>
+        <source>Backward one help page</source>
+        <translation>Tillbaka en sida</translation>
+    </message>
+    <message>
+        <source>Forward one help page</source>
+        <translation>Framåt en sida</translation>
+    </message>
+    <message>
+        <source>TOra manual</source>
+        <translation>TOra manual</translation>
+    </message>
+    <message>
+        <source>Missing parent, unbalanced dl in help file content</source>
+        <translation>Saknar parent, obalanserade &lt;dl&gt; i hjälpfilens innehåll</translation>
+    </message>
+    <message>
+        <source>Help window</source>
+        <translation>Hjälpfönster</translation>
+    </message>
+    <message>
+        <source>Help Browser</source>
+        <translation>Hjälpnavigerare</translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <comment>Dialog|Help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHelpAddFileUI</name>
+    <message>
+        <source>Add help directory</source>
+        <translation>Lägg till bibliotek</translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation>&amp;Leta</translation>
+    </message>
+    <message>
+        <source>Canel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Table of contents file</source>
+        <translation>&amp;Innehållsfil</translation>
+    </message>
+    <message>
+        <source>&amp;Title</source>
+        <translation>&amp;Titel</translation>
+    </message>
+</context>
+<context>
+    <name>toHelpPrefs</name>
+    <message>
+        <source>File error</source>
+        <translation>Filfel</translation>
+    </message>
+</context>
+<context>
+    <name>toHelpSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Add manuals from an Oracle index page.</source>
+        <translation>Lägg till manualer från Oracle indexsida.</translation>
+    </message>
+    <message>
+        <source>Add manuals from an Oracle index page. This is the index page that links to the actual manuals. Not the master index page that links to different categories of manuals.</source>
+        <translation>Lägg till manualer från Oracle index sida. Detta är den sidan som har länkarna till själva manualerna. Inte förstasidan som länkar till de olika kategorierna av manualer.</translation>
+    </message>
+    <message>
+        <source>Title</source>
+        <translation>Titel</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Filnamn</translation>
+    </message>
+    <message>
+        <source>&amp;Add Manual</source>
+        <translation>&amp;Lägg Till Manual</translation>
+    </message>
+    <message>
+        <source>&amp;Remove Manual</source>
+        <translation>&amp;Ta Bort Manual</translation>
+    </message>
+    <message>
+        <source>&amp;Oracle Manuals</source>
+        <translation>&amp;Oracle Manualer</translation>
+    </message>
+</context>
+<context>
+    <name>toHighlightedText</name>
+    <message>
+        <source>Ctrl+T</source>
+        <comment>Edit|Table lookup</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toHtml</name>
+    <message>
+        <source>Invalidly went beyond end of file</source>
+        <translation>Fortsatte felaktigt bortom slut på fil</translation>
+    </message>
+    <message>
+        <source>Reading HTML after eof</source>
+        <translation>Läser HTML fil efter slut på filen</translation>
+    </message>
+    <message>
+        <source>Lone &lt; at end</source>
+        <translation>Ensamt &lt; på slutet</translation>
+    </message>
+    <message>
+        <source>Unended tag at end</source>
+        <translation>Oavslutad tag på slutet</translation>
+    </message>
+    <message>
+        <source>Unended tag qualifier at end</source>
+        <translation>Oavslutat tag attribut på slutet</translation>
+    </message>
+    <message>
+        <source>Unended tag qualifier data at end</source>
+        <translation>Oavslutat tag attributdata på slutet</translation>
+    </message>
+    <message>
+        <source>Unended quoted string at end</source>
+        <translation>Oavslutat sträng på slutet</translation>
+    </message>
+    <message>
+        <source>Unended qualifier data at end</source>
+        <translation>Oavslutat attribut på slutet</translation>
+    </message>
+    <message>
+        <source>Exceded qualifier max in toHtml</source>
+        <translation>Attribut överskred max i toHtml</translation>
+    </message>
+    <message>
+        <source>Tried to access string out of bounds in mid (start=%1)</source>
+        <translation>Försökte komma åt sträng utanför dess gränser i mid (start=%1)</translation>
+    </message>
+    <message>
+        <source>Tried to access string out of bounds in mid (size=%1)</source>
+        <translation>Försökte komma åt sträng utanför dess gränser (storlek=%1)</translation>
+    </message>
+    <message>
+        <source>Tried to access string out of bounds in mid (total=%1+%2&gt;%3)</source>
+        <translation>Försökte komma åt sträng utanför dess gränser (total=%1+%2&gt;%3)</translation>
+    </message>
+</context>
+<context>
+    <name>toImport</name>
+    <message>
+        <source>Import &amp; Export</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Execute</source>
+        <translation type="unfinished">Exekvera</translation>
+    </message>
+    <message>
+        <source>Select schema</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Select table</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file</source>
+        <translation type="unfinished">Kunde inte öppna fil</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t load codec %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Supplied more than one parameter for field function</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Need parameter for column (%1) but none specified</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Inserted %1 rows</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Tried to define same field twice</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Not mapped</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Field %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid input, non space character between delimiter that is not separator</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toImportUI</name>
+    <message>
+        <source>Form1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Operation</source>
+        <translation type="unfinished">Operation</translation>
+    </message>
+    <message>
+        <source>&amp;Import</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Export</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation type="unfinished">&amp;Leta</translation>
+    </message>
+    <message>
+        <source>Fileformat</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Fixed width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Delimiter</source>
+        <translation type="unfinished">Avskiljare</translation>
+    </message>
+    <message>
+        <source>,</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&quot;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Separator</source>
+        <translation type="unfinished">Separator</translation>
+    </message>
+    <message>
+        <source>Variable width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Database</source>
+        <translation type="unfinished">Databas</translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation type="unfinished">Schema</translation>
+    </message>
+    <message>
+        <source>Table</source>
+        <translation type="unfinished">Tabel</translation>
+    </message>
+    <message>
+        <source>Define filter</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Include column names as first row</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>File codec</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ignore lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Commit distance</source>
+        <translation type="unfinished">Commit avstånd</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <translation type="unfinished">Förhandsgranskning</translation>
+    </message>
+    <message>
+        <source>Column mapping</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toInvalid</name>
+    <message>
+        <source>Invalid Objects</source>
+        <translation>Ogiltiga Objekt</translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation>Uppdatera lista</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>&amp;Invalid</source>
+        <translation>&amp;Ogiltig</translation>
+    </message>
+    <message>
+        <source>Recompile all</source>
+        <translation type="obsolete">Kompilera om allt</translation>
+    </message>
+    <message>
+        <source>Recompiling all invalid</source>
+        <translation>Kompilera om alla felaktiga paket</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Recompile selected</source>
+        <translation>Kompilera om urval</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Invalid|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toInvalid:ListInvalid</name>
+    <message>
+        <source>Owner</source>
+        <translation>Ägare</translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Objekt</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+</context>
+<context>
+    <name>toKeyPath</name>
+    <message>
+        <source>Couldn&apos;t find \ in path</source>
+        <translation>Kunde inte hitta \ i sökväg</translation>
+    </message>
+</context>
+<context>
+    <name>toKeyValue</name>
+    <message>
+        <source>Couldn&apos;t find \ in path</source>
+        <translation>Kunde inte hitta \ i sökväg</translation>
+    </message>
+</context>
+<context>
+    <name>toLicense</name>
+    <message>
+        <source>Register</source>
+        <translation>Registrera</translation>
+    </message>
+    <message>
+        <source>Quit</source>
+        <translation>Avsluta</translation>
+    </message>
+    <message>
+        <source>Continue</source>
+        <translation>Fortsätt</translation>
+    </message>
+    <message>
+        <source>Not a valid license key</source>
+        <translation>Ingen giltig licensnyckel</translation>
+    </message>
+    <message>
+        <source>Please check your name and registration key?</source>
+        <translation>Kontrollera ditt namn och din registreringsnyckel?</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Really quit?</source>
+        <translation>Vill du verkligen avsluta?</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to quit?</source>
+        <translation>Är du säker på att du verkligen vill avsluta?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Ja</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Nej</translation>
+    </message>
+</context>
+<context>
+    <name>toLicenseUI</name>
+    <message>
+        <source>This version of TOra is unregistered.</source>
+        <translation>Denna version av TOra är ej registrerad.</translation>
+    </message>
+    <message>
+        <source>3</source>
+        <translation>3</translation>
+    </message>
+    <message>
+        <source>1</source>
+        <translation>1</translation>
+    </message>
+    <message>
+        <source>2</source>
+        <translation>2</translation>
+    </message>
+    <message>
+        <source>&amp;Registration key</source>
+        <translation>&amp;Registrera nyckel</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Namn</translation>
+    </message>
+</context>
+<context>
+    <name>toLineChart</name>
+    <message>
+        <source>Zoom</source>
+        <translation>Zoom</translation>
+    </message>
+    <message>
+        <source>&amp;Print...</source>
+        <translation>&amp;Skriv ut...</translation>
+    </message>
+    <message>
+        <source>&amp;Open in new window</source>
+        <translation>&amp;Öppna i nytt fönster</translation>
+    </message>
+    <message>
+        <source>&amp;Chart Manager...</source>
+        <translation>&amp;Diagramhanterare...</translation>
+    </message>
+    <message>
+        <source>&amp;Properties...</source>
+        <translation>&amp;Egenskaper...</translation>
+    </message>
+    <message>
+        <source>Clear Chart</source>
+        <translation>Rensa diagram</translation>
+    </message>
+    <message>
+        <source>Enabled charts</source>
+        <translation>Slå på diagram</translation>
+    </message>
+    <message>
+        <source>TOra</source>
+        <translation type="obsolete">TOra</translation>
+    </message>
+</context>
+<context>
+    <name>toLineChartSetupUI</name>
+    <message>
+        <source>Chart setup</source>
+        <translation>Diagram inställningar</translation>
+    </message>
+    <message>
+        <source>Number of samples to keep</source>
+        <translation>Antal mätvärden som skall behållas</translation>
+    </message>
+    <message>
+        <source>Y-axis</source>
+        <translation>Y-axel</translation>
+    </message>
+    <message>
+        <source>Max value</source>
+        <translation>Maxvärde</translation>
+    </message>
+    <message>
+        <source>Min value</source>
+        <translation>Minvärde</translation>
+    </message>
+    <message>
+        <source>Auto detect</source>
+        <translation>Autodetektera</translation>
+    </message>
+    <message>
+        <source>Show last value</source>
+        <translation>Visa sista värde</translation>
+    </message>
+    <message>
+        <source>Show axis legend</source>
+        <translation>Visa axlars titlar</translation>
+    </message>
+    <message>
+        <source>Show chart legend</source>
+        <translation>Visa mätvärdestitlar</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>Maximum number of samples to display</source>
+        <translation>Maximalt antal mätvärden som visas</translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation>Obegränsat</translation>
+    </message>
+    <message>
+        <source>Divide chart in grids?</source>
+        <translation>Dela in diagram i rutnät?</translation>
+    </message>
+</context>
+<context>
+    <name>toListView</name>
+    <message>
+        <source>Page: %1</source>
+        <translation>Sida: %1</translation>
+    </message>
+    <message>
+        <source>Printing page %1</source>
+        <translation>Skriver ut sida %1</translation>
+    </message>
+    <message>
+        <source>Done printing</source>
+        <translation>Utskrift klar</translation>
+    </message>
+    <message>
+        <source>Display in editor...</source>
+        <translation>Visa i editor...</translation>
+    </message>
+    <message>
+        <source>&amp;Copy field</source>
+        <translation>&amp;Koperira fält</translation>
+    </message>
+    <message>
+        <source>Copy selection</source>
+        <translation>Kopier urval</translation>
+    </message>
+    <message>
+        <source>Copy selection with header</source>
+        <translation>Kopiera urval med huvud</translation>
+    </message>
+    <message>
+        <source>Copy transposed</source>
+        <translation>Copier transposerad</translation>
+    </message>
+    <message>
+        <source>Select all</source>
+        <translation>Välj alla</translation>
+    </message>
+    <message>
+        <source>Export to file...</source>
+        <translation>Exportera till fil...</translation>
+    </message>
+    <message>
+        <source>Edit SQL...</source>
+        <translation>Editera SQL...</translation>
+    </message>
+    <message>
+        <source>Left</source>
+        <translation>Vänster</translation>
+    </message>
+    <message>
+        <source>Center</source>
+        <translation>Mitten</translation>
+    </message>
+    <message>
+        <source>Right</source>
+        <translation>Höger</translation>
+    </message>
+    <message>
+        <source>Alignment</source>
+        <translation>Justering</translation>
+    </message>
+</context>
+<context>
+    <name>toLock</name>
+    <message>
+        <source>The mutex function &quot;%1&quot; failed</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>toLogOutput</name>
+    <message>
+        <source>SQL Output</source>
+        <translation>SQL Utdata</translation>
+    </message>
+    <message>
+        <source>Log4PL/SQL</source>
+        <translation>Log4PL/SQL</translation>
+    </message>
+</context>
+<context>
+    <name>toMain</name>
+    <message>
+        <source>&amp;New Connection...</source>
+        <translation>&amp;Ny anslutning...</translation>
+    </message>
+    <message>
+        <source>&amp;Close Connection</source>
+        <translation>St&amp;äng Anslutning</translation>
+    </message>
+    <message>
+        <source>&amp;Commit Connection</source>
+        <translation>Anslutning &amp;Commit</translation>
+    </message>
+    <message>
+        <source>&amp;Rollback Connection</source>
+        <translation>Anslutning &amp;Rollback</translation>
+    </message>
+    <message>
+        <source>C&amp;urrent Connection</source>
+        <translation>N&amp;uvarande Anslutning</translation>
+    </message>
+    <message>
+        <source>Stop All Queries</source>
+        <translation>Stanna Alla Frågor</translation>
+    </message>
+    <message>
+        <source>Reread Object Cache</source>
+        <translation>Läs Om Objekt Cache</translation>
+    </message>
+    <message>
+        <source>&amp;Open File...</source>
+        <translation>&amp;Öppna Fil...</translation>
+    </message>
+    <message>
+        <source>&amp;Save</source>
+        <translation>&amp;Spara</translation>
+    </message>
+    <message>
+        <source>Save A&amp;s...</source>
+        <translation>Spara &amp;Som...</translation>
+    </message>
+    <message>
+        <source>Open Session...</source>
+        <translation>Öppna Session...</translation>
+    </message>
+    <message>
+        <source>Save Session...</source>
+        <translation>Spara Session...</translation>
+    </message>
+    <message>
+        <source>Restore Last Session</source>
+        <translation>Återställ Senaste Session</translation>
+    </message>
+    <message>
+        <source>Close Session</source>
+        <translation>Stäng Session</translation>
+    </message>
+    <message>
+        <source>&amp;Print...</source>
+        <translation>Skriv &amp;Ut...</translation>
+    </message>
+    <message>
+        <source>&amp;Quit</source>
+        <translation>&amp;Avsluta</translation>
+    </message>
+    <message>
+        <source>&amp;File</source>
+        <translation>&amp;Fil</translation>
+    </message>
+    <message>
+        <source>&amp;Undo</source>
+        <translation>&amp;Ã…ngra</translation>
+    </message>
+    <message>
+        <source>&amp;Redo</source>
+        <translation>G&amp;ör Om</translation>
+    </message>
+    <message>
+        <source>Cu&amp;t</source>
+        <translation>Klipp U&amp;t</translation>
+    </message>
+    <message>
+        <source>&amp;Copy</source>
+        <translation>&amp;Kopiera</translation>
+    </message>
+    <message>
+        <source>&amp;Paste</source>
+        <translation>K&amp;listra In</translation>
+    </message>
+    <message>
+        <source>&amp;Search &amp;&amp; Replace...</source>
+        <translation>&amp;Sök &amp;&amp; Ersätt...</translation>
+    </message>
+    <message>
+        <source>Search &amp;Next</source>
+        <translation>Sök &amp;Nästa</translation>
+    </message>
+    <message>
+        <source>Select &amp;All</source>
+        <translation>Markera &amp;Allt</translation>
+    </message>
+    <message>
+        <source>Read All &amp;Items</source>
+        <translation>L&amp;äs Alla Poster</translation>
+    </message>
+    <message>
+        <source>&amp;Options...</source>
+        <translation>&amp;Inställningar...</translation>
+    </message>
+    <message>
+        <source>&amp;Edit</source>
+        <translation>&amp;Redigera</translation>
+    </message>
+    <message>
+        <source>Application</source>
+        <translation>Applikation</translation>
+    </message>
+    <message>
+        <source>Load file into editor</source>
+        <translation>Läs in fil i editor</translation>
+    </message>
+    <message>
+        <source>Save file from editor</source>
+        <translation>Spara fil till editor</translation>
+    </message>
+    <message>
+        <source>Print</source>
+        <translation>Skrit ut</translation>
+    </message>
+    <message>
+        <source>Undo</source>
+        <translation>Ã…ngra</translation>
+    </message>
+    <message>
+        <source>Redo</source>
+        <translation>Gör Om</translation>
+    </message>
+    <message>
+        <source>Cut to clipboard</source>
+        <translation>Klipp Ut</translation>
+    </message>
+    <message>
+        <source>Copy to clipboard</source>
+        <translation>Kopiera</translation>
+    </message>
+    <message>
+        <source>Paste from clipboard</source>
+        <translation>Klistra In</translation>
+    </message>
+    <message>
+        <source>Search &amp; replace</source>
+        <translation>Sök &amp; Ersätt</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Verktyg</translation>
+    </message>
+    <message>
+        <source>C&amp;urrent Context...</source>
+        <translation>N&amp;uvarande Kontext...</translation>
+    </message>
+    <message>
+        <source>&amp;Contents...</source>
+        <translation>&amp;Innehåll...</translation>
+    </message>
+    <message>
+        <source>&amp;About TOra...</source>
+        <translation type="obsolete">&amp;Om TOra...</translation>
+    </message>
+    <message>
+        <source>&amp;License...</source>
+        <translation>&amp;Licens...</translation>
+    </message>
+    <message>
+        <source>&amp;Quotes...</source>
+        <translation>&amp;Citat...</translation>
+    </message>
+    <message>
+        <source>&amp;Register...</source>
+        <translation>&amp;Registrera...</translation>
+    </message>
+    <message>
+        <source>Connections</source>
+        <translation>Anslutningar</translation>
+    </message>
+    <message>
+        <source>Connect to database</source>
+        <translation>Anslut Till Databas</translation>
+    </message>
+    <message>
+        <source>Disconnect current connection</source>
+        <translation>Stäng Nuvarande Anslutning</translation>
+    </message>
+    <message>
+        <source>Commit connection</source>
+        <translation>Anslutning Commit</translation>
+    </message>
+    <message>
+        <source>Rollback connection</source>
+        <translation>Anslutning Rollback</translation>
+    </message>
+    <message>
+        <source>Stop all running queries on connection</source>
+        <translation>Stanna alla aktiva frågor på anslutning</translation>
+    </message>
+    <message>
+        <source>&amp;Tools</source>
+        <translation>&amp;Verktyg</translation>
+    </message>
+    <message>
+        <source>C&amp;lose</source>
+        <translation>St&amp;äng</translation>
+    </message>
+    <message>
+        <source>Close &amp;All</source>
+        <translation>Stäng &amp;Alla</translation>
+    </message>
+    <message>
+        <source>&amp;Cascade</source>
+        <translation>&amp;Kaskad</translation>
+    </message>
+    <message>
+        <source>&amp;Tile</source>
+        <translation>S&amp;tapla</translation>
+    </message>
+    <message>
+        <source>&amp;Window</source>
+        <translation>F&amp;önster</translation>
+    </message>
+    <message>
+        <source>&amp;Help</source>
+        <translation>&amp;Hjälp</translation>
+    </message>
+    <message>
+        <source>Check for upgrades?</source>
+        <translation>Titta efter uppdateringar?</translation>
+    </message>
+    <message>
+        <source>Do you want TOra to automatically check
+http://tora.sourceforge.net for updates on startup?
+During this check no information about your computer
+including TOra version is transmitted to the site</source>
+        <translation>Vill du att TOra automatiskt skall kontrollera
+http://tora.sourceforge.net för uppdateringar vid start
+av programmet. Under denna kontroll skickas ingen information
+om din dator inklusive version eller platform av TOra till
+Quest Software, Inc</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Ja</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;Nej</translation>
+    </message>
+    <message>
+        <source>First connection</source>
+        <translation>Första anslutning</translation>
+    </message>
+    <message>
+        <source>Can&apos;t find active connection</source>
+        <translation>Kan inte hitta aktiv anslutning</translation>
+    </message>
+    <message>
+        <source>Commit work in session to %1  before closing it?</source>
+        <translation>Spara ändringar på session %1 innan den stängs?</translation>
+    </message>
+    <message>
+        <source>Commit work?</source>
+        <translation>Spara arbete?</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find specified connectionts (%1)</source>
+        <translation>Kunde inte hitta angiven anslutning (%1)</translation>
+    </message>
+    <message>
+        <source>Row:</source>
+        <translation>Rad:</translation>
+    </message>
+    <message>
+        <source>Col:</source>
+        <translation>Kolumn:</translation>
+    </message>
+    <message>
+        <source>Invalid session file</source>
+        <translation>Felaktig sessionsfil</translation>
+    </message>
+    <message>
+        <source>The session file is not valid, can&apos;t read it.</source>
+        <translation>Sessionsfilen är inte giltig. Kan inte läsa den.</translation>
+    </message>
+    <message>
+        <source>Input password</source>
+        <translation>Ange lösenord</translation>
+    </message>
+    <message>
+        <source>Enter password for %1</source>
+        <translation>Ange lösenord för %1</translation>
+    </message>
+    <message>
+        <source>Message flood, temporary disabling of message box error reporting from now on.
+Restart TOra to reenable. You probably have a too high refreshrate in some tool.</source>
+        <translation type="obsolete">Meddelande överbelastning. Stänger tillfälligt av meddelanden i dialogruta från och med nu.
+Starta om TOra för att börja visa igen. Du har troligtvis en för hög uppdateringshastighet i något verktyg.</translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation>Information</translation>
+    </message>
+    <message>
+        <source>You can enable this through the Global Settings in the Options (Edit menu)</source>
+        <translation>Du kan sätta på detta genom Globala Inställningar i Inställningar (Redigeringsmenyn)</translation>
+    </message>
+    <message>
+        <source>A new version of TOra (%1) is available from
+
+http://tora.sourceforge.net</source>
+        <translation>A ny version av TOra (%1) finns att hämta från
+
+http://tora.sourceforge.net</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Message flood, temporary disabling of message box error reporting from now on.
+Restart to reenable. You probably have a too high refreshrate in some tool.</source>
+        <translation>Meddelande överbelastning, temporärt stängt av meddelandebox felrapportering från och med nu.
+Starta om för att slå på igen. Du har troligtvis för hög updateringsfrekvens i något verktyg.</translation>
+    </message>
+    <message>
+        <source>Ctrl+G</source>
+        <comment>File|New connection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <comment>File|File open</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <comment>File|File save</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+C</source>
+        <comment>File|Commit</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <comment>File|Stop all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+&lt;</source>
+        <comment>File|Rollback</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+U</source>
+        <comment>File|Current connection</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Insert</source>
+        <comment>Edit|Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift+Delete</source>
+        <comment>Edit|Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift+Insert</source>
+        <comment>Edit|Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+A</source>
+        <comment>Edit|Select all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <comment>Edit|Undo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <comment>Edit|Redo</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+X</source>
+        <comment>Edit|Cut</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+C</source>
+        <comment>Edit|Copy</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+V</source>
+        <comment>Edit|Paste</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <comment>Edit|Search</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F3</source>
+        <comment>Edit|Search next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <comment>Help|Help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMarkedText</name>
+    <message>
+        <source>TOra</source>
+        <translation type="obsolete">TOra</translation>
+    </message>
+    <message>
+        <source>Printing page %1</source>
+        <translation>Skriver ut sida %1</translation>
+    </message>
+    <message>
+        <source>Done printing</source>
+        <translation>Utskrift klar</translation>
+    </message>
+    <message>
+        <source>Page: %1</source>
+        <translation>Sida: %1</translation>
+    </message>
+    <message>
+        <source>File opened successfully</source>
+        <translation>Filen öppnad</translation>
+    </message>
+    <message>
+        <source>Save changes?</source>
+        <translation>Spara ändringar?</translation>
+    </message>
+    <message>
+        <source>The editor has been changed, do you want to save them
+before opening a new file?</source>
+        <translation>Editorn har ändrats, vill du spara dem innan du öppnar en ny fil?</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Ja</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;Nej</translation>
+    </message>
+    <message>
+        <source>Incremental search</source>
+        <translation>Inkrementell sökning</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Ctrl+A</source>
+        <comment>Edit|Select All</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMemoEditor</name>
+    <message>
+        <source>Memo Editor</source>
+        <translation>Memo Editor</translation>
+    </message>
+    <message>
+        <source>Save changes</source>
+        <translation>Spara ändringar</translation>
+    </message>
+    <message>
+        <source>Open file</source>
+        <translation>Öppna fil</translation>
+    </message>
+    <message>
+        <source>Save file</source>
+        <translation>Spara fil</translation>
+    </message>
+    <message>
+        <source>Cut to clipboard</source>
+        <translation>Klipp ut</translation>
+    </message>
+    <message>
+        <source>Copy to clipboard</source>
+        <translation>Kopiera</translation>
+    </message>
+    <message>
+        <source>Paste from clipboard</source>
+        <translation>Spara</translation>
+    </message>
+    <message>
+        <source>First column</source>
+        <translation>Första kolumnen</translation>
+    </message>
+    <message>
+        <source>Previous column</source>
+        <translation>Föregående kolumn</translation>
+    </message>
+    <message>
+        <source>Next column</source>
+        <translation>Nästa kolumn</translation>
+    </message>
+    <message>
+        <source>Last column</source>
+        <translation>Sista kolumnen</translation>
+    </message>
+    <message>
+        <source>NULL</source>
+        <translation>NULL</translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Memo Editor|Save changes</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toMessageUI</name>
+    <message>
+        <source>TOra warning message</source>
+        <translation type="obsolete">TOra varningsmeddelande</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Display alerts in statusbar only.</source>
+        <translation>Visa meddelanden endast i statusraden.</translation>
+    </message>
+    <message>
+        <source>Display alerts in messagebar instead of poping up a dialog with a warning.</source>
+        <translation>Visa meddelanden endast i meddelanderaden i stället för att öppna en dialogruta med varningen.</translation>
+    </message>
+    <message>
+        <source>Message</source>
+        <translation type="obsolete">Meddelande</translation>
+    </message>
+    <message>
+        <source>Warning message</source>
+        <translation>Varningsmeddelande</translation>
+    </message>
+</context>
+<context>
+    <name>toMySQLExtract</name>
+    <message>
+        <source>Expected block from show create table for %1.%2</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Internal error, couldn&apos;t parse ALTER TABLE clause</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to create</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to describe</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to drop</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to migrate</source>
+        <translation type="unfinished">Felaktig typ %1 för migrering</translation>
+    </message>
+</context>
+<context>
+    <name>toNewConnection</name>
+    <message>
+        <source>Provider</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>Host</source>
+        <translation>Värddator</translation>
+    </message>
+    <message>
+        <source>Database</source>
+        <translation>Databas</translation>
+    </message>
+    <message>
+        <source>Username</source>
+        <translation>Användarnamn</translation>
+    </message>
+    <message>
+        <source>No connection provider</source>
+        <translation>Ingen databastyp</translation>
+    </message>
+    <message>
+        <source>No available connection provider, plugins probably missing</source>
+        <translation>Ingen tillgänglig databastyp, troligtvis saknas plugin</translation>
+    </message>
+    <message>
+        <source>Unable to connect to the database.
+</source>
+        <translation>Kan inte ansluta till databas.
+</translation>
+    </message>
+    <message>
+        <source>Unable to connect to the database</source>
+        <translation>Kan inte ansluta till databasen</translation>
+    </message>
+    <message>
+        <source>Enter password</source>
+        <translation>Ange lösenord</translation>
+    </message>
+    <message>
+        <source>Enter password to use for connection.</source>
+        <translation>Ange lösenord för anslutningen.</translation>
+    </message>
+</context>
+<context>
+    <name>toNewConnectionUI</name>
+    <message>
+        <source>New connection</source>
+        <translation>Ny anslutning</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Previous connections</source>
+        <translation>F&amp;öregående anslutningar</translation>
+    </message>
+    <message>
+        <source>&amp;Username</source>
+        <translation>&amp;Användarnamn</translation>
+    </message>
+    <message>
+        <source>Username to connect with</source>
+        <translation>Användar namn att ansluta med</translation>
+    </message>
+    <message>
+        <source>&amp;Password</source>
+        <translation>L&amp;ösenord</translation>
+    </message>
+    <message>
+        <source>Password to connect with.</source>
+        <translation>Lösenord att ansluta med.</translation>
+    </message>
+    <message>
+        <source>Connection provider</source>
+        <translation>Databastyp</translation>
+    </message>
+    <message>
+        <source>Use &amp;SQL*Net</source>
+        <translation>Använd &amp;SQL*Net</translation>
+    </message>
+    <message>
+        <source>Wether or not connect using the listener or directly to a local database.</source>
+        <translation>Om man skall ansluta via lyssnaren eller direkt till en lokal databas.</translation>
+    </message>
+    <message>
+        <source>&amp;Connection Mode</source>
+        <translation>&amp;Anslutningsmod</translation>
+    </message>
+    <message>
+        <source>Mode of the connection. If you don&apos;t understand select normal.</source>
+        <translation>Anslutningsmod. Om du inte förstår det, välj normal.</translation>
+    </message>
+    <message>
+        <source>&amp;Database</source>
+        <translation>&amp;Databas</translation>
+    </message>
+    <message>
+        <source>Select the database ID to connect to.</source>
+        <translation>Välj eller ange det databas ID som du vill ansluta till.</translation>
+    </message>
+    <message>
+        <source>&amp;Host</source>
+        <translation>&amp;Värddator</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>A list of previous connections. Select to bring over to the right.</source>
+        <translation>En lista över föregående anslutningar. Välj en post för över information till höger.</translation>
+    </message>
+</context>
+<context>
+    <name>toNoBlockQuery</name>
+    <message>
+        <source>Unknown exception</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Reading past end of query</source>
+        <translation>Läste efter slutet på frågan</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open query</source>
+        <translation>Kunde inte öppna frågan</translation>
+    </message>
+    <message>
+        <source>Failed to start background query thread</source>
+        <translation>Kunde inte start backgrundsfrågans tråd</translation>
+    </message>
+    <message>
+        <source>Restarting query in own connection</source>
+        <translation>Återstartar fråga i egen anslutning</translation>
+    </message>
+</context>
+<context>
+    <name>toNow</name>
+    <message>
+        <source>Unexpected error</source>
+        <translation>Oväntat fel</translation>
+    </message>
+</context>
+<context>
+    <name>toOracleConnection</name>
+    <message>
+        <source>Password expired</source>
+        <translation>Lösenord utgånget</translation>
+    </message>
+    <message>
+        <source>Enter new password</source>
+        <translation>Ange nytt lösenord</translation>
+    </message>
+    <message>
+        <source>Enter password again for confirmation</source>
+        <translation>Ange nytt lösenord igen</translation>
+    </message>
+    <message>
+        <source>The two passwords doesn&apos;t match</source>
+        <translation>De två lösenorden stämmer inte</translation>
+    </message>
+</context>
+<context>
+    <name>toOracleExtract</name>
+    <message>
+        <source>Couldn&apos;t find source for of %1.%2</source>
+        <translation>Kunde inte hitta källa för %1.%2</translation>
+    </message>
+    <message>
+        <source>Displaying source of wrong type for %1. Got %2 expected 0.</source>
+        <translation>Visar källkod av fel typ för %1. Fick %2, förväntade 0.</translation>
+    </message>
+    <message>
+        <source>-- Context indexes can be quite complicated depending upon the
+-- used parameters. The following is an attempt to recreate this
+-- context index. But, a close scrutiny of the following code is
+-- strongly recommended.
+
+</source>
+        <translation>-- Kontext index kan vara ganska komplexa beroende på om de
+-- använda parametrarna. Följande är ett försök att återskapa detta
+-- kontext index. Men nogram kontroll är starkt rekommenderad.
+
+</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find primary key of %1.%2</source>
+        <translation>Kunde inte hitta primär nyckel %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find materialised table %1.%2</source>
+        <translation>Kunde inte hitta materialiserad tabell %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find log %1.%2</source>
+        <translation>Kunde inte hitta logg %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find index partitions for %1.%2</source>
+        <translation>Kunde inte hitta index partitioner för %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find partition range %1.%2</source>
+        <translation>Kunde inte hitta partitions del %1.%2</translation>
+    </message>
+    <message>
+        <source>Internal error, result should be 18 in segment attributes (Was %1)</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Internal error, result should be 18 in segment attributes</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Constraint %1.%2 doesn&apos;t exist</source>
+        <translation>Constraint %1.%2 finns ej</translation>
+    </message>
+    <message>
+        <source>DBLink %1.%2 doesn&apos;t exist</source>
+        <translation>DBLink %1.%2 finns inte</translation>
+    </message>
+    <message>
+        <source>Exchange index %1.%2 doesn&apos;t exist</source>
+        <translation>Utbytesindex %1.%2 finns ej</translation>
+    </message>
+    <message>
+        <source>Exchange table %1.%2 doesn&apos;t exist</source>
+        <translation>Utbytesindex %1.%2 finns ej</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find index %1.%2</source>
+        <translation>Kunde inte hitta index %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find profile %1</source>
+        <translation>Kunde inte hitta profil %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find role %1</source>
+        <translation>Kunde inte hitta rollen %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find sequence %1</source>
+        <translation>Kunde inte hitta sekvensen %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find synonym %1.%2</source>
+        <translation>Kunde inte hitta synonymen %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find table %1.%2</source>
+        <translation>Kunde inte hitta tabellen %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find tablespace %1</source>
+        <translation>Kunde inte tablespace %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find trigger %1.%2</source>
+        <translation>Kunde inte hitta trigger %1.%2</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find user %1</source>
+        <translation>Kunde inte hitta användare %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find constraint %1.%2</source>
+        <translation>Kunde inte hitta constraint %1.%2</translation>
+    </message>
+    <message>
+        <source>Missing ON description item on index</source>
+        <translation>Saknar ON beskrivnings post i index</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find any COLUMN on index</source>
+        <translation>Kunde inte hitta någon COLUMN på index</translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to create</source>
+        <translation>Felaktig typ %1 för återskapande</translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to describe</source>
+        <translation>Felaktig typ %1 för beskrivning</translation>
+    </message>
+    <message>
+        <source>Invalid type %1 to drop</source>
+        <translation>Felaktig typ %1 för borttagning</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find view %1.%2</source>
+        <translation>Kunde inte hitta vy %1.%2</translation>
+    </message>
+</context>
+<context>
+    <name>toOracleSettingUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&amp;Default date format</source>
+        <translation>Standard &amp;datum format</translation>
+    </message>
+    <message>
+        <source>The default dateformat to use when querying the database.</source>
+        <translation>Standard format för datom som används när data läses till eller från databasen.</translation>
+    </message>
+    <message>
+        <source>&amp;Checkpoint name</source>
+        <translation>&amp;Checkpoint namn</translation>
+    </message>
+    <message>
+        <source>The name of the checkpoint used when needed to rollback work.</source>
+        <translation>Namnet på en checkpoint som kan användas när TOra behöver göra rollback på ändringar.</translation>
+    </message>
+    <message>
+        <source>&amp;Max long and LOB data length</source>
+        <translation>&amp;Max long och LOB data storlek</translation>
+    </message>
+    <message>
+        <source>Max length to read from LOB or LONG data fields. LONG:s can not be specified unlimited but will be defaulted to 33000 if unlimited.</source>
+        <translation>Max längd som läses från LOB eller LONG data fält. LONG kan inte anges som obegränsad utan kommer bli 33000 om obegränsad är vald.</translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation>Obegränsad</translation>
+    </message>
+    <message>
+        <source>Create Table</source>
+        <translation>Skapa Tabell</translation>
+    </message>
+    <message>
+        <source>&amp;Explain plan table</source>
+        <translation>F&amp;örklara plan tabell</translation>
+    </message>
+    <message>
+        <source>Name of the table to put explain plan output in.</source>
+        <translation>Namn på tabellen som planförklaringar skall läggas i.</translation>
+    </message>
+    <message>
+        <source>&amp;Keep plans</source>
+        <translation>S&amp;para planer</translation>
+    </message>
+    <message>
+        <source>Keep records for the plan explanations in the plan table.</source>
+        <translation>Spara förklarade planer i plan tabellen.</translation>
+    </message>
+    <message>
+        <source>Maximum cursors to keep open</source>
+        <translation>Maximala andel öppna frågor som kan hållas öppna</translation>
+    </message>
+</context>
+<context>
+    <name>toOutput</name>
+    <message>
+        <source>SQL Output</source>
+        <translation>SQL Utdata</translation>
+    </message>
+    <message>
+        <source>Poll for output now</source>
+        <translation>Kontrollera om ny data finns nu</translation>
+    </message>
+    <message>
+        <source>Enable or disable getting SQL output.</source>
+        <translation>Slå av eller på SQL utdata kontroller.</translation>
+    </message>
+    <message>
+        <source>Clear output</source>
+        <translation>Rensa utdata</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>Output enabled</source>
+        <translation>Utdata påslagen</translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation>&amp;Ändra Uppdatering</translation>
+    </message>
+    <message>
+        <source>&amp;Output</source>
+        <translation>&amp;Utdata</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t enable/disable output for session</source>
+        <translation>Kunde inte slå av eller på utdata för sessionen</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Output|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Output|Enable</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Backspace</source>
+        <comment>Output|Clear output</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Output|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toOutputPrefs</name>
+    <message>
+        <source>SQL Output</source>
+        <translation>SQL Utdata</translation>
+    </message>
+    <message>
+        <source>&amp;Polling timeout</source>
+        <translation>&amp;Updatera</translation>
+    </message>
+    <message>
+        <source>Time between trying to poll for output.</source>
+        <translation>Tid mellan varje kontrol om ny data finns tillgänglig.</translation>
+    </message>
+    <message>
+        <source>Default &amp;source</source>
+        <translation>&amp;Standard källa</translation>
+    </message>
+    <message>
+        <source>Log4PL/SQL &amp;User</source>
+        <translation>Log4PL/SQL &amp;Användare</translation>
+    </message>
+</context>
+<context>
+    <name>toParamGet</name>
+    <message>
+        <source>Define binding variables</source>
+        <translation>Definiera bundna variabler</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Missing field name</source>
+        <translation>Saknar fältnamn</translation>
+    </message>
+    <message>
+        <source>NULL</source>
+        <translation>NULL</translation>
+    </message>
+    <message>
+        <source>Edit</source>
+        <translation>Editera</translation>
+    </message>
+    <message>
+        <source>Aborted execution</source>
+        <translation>Avbruten exekvering</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+</context>
+<context>
+    <name>toPasswordTool</name>
+    <message>
+        <source>Enter new password</source>
+        <translation>Ange nytt lösenord</translation>
+    </message>
+    <message>
+        <source>Enter new password again for confirmation</source>
+        <translation>Ange nytt lösenord igen för konfirmation</translation>
+    </message>
+    <message>
+        <source>Passwords doesn&apos;t match</source>
+        <translation>Lösenord stämmer inte överens</translation>
+    </message>
+    <message>
+        <source>The two givens passwords doesn&apos;t match, please try again</source>
+        <translation>De två angivna lösenorden stämmer ej överens, försök igen</translation>
+    </message>
+</context>
+<context>
+    <name>toPieChart</name>
+    <message>
+        <source>&amp;Print...</source>
+        <translation>&amp;Skriv ut...</translation>
+    </message>
+    <message>
+        <source>&amp;Open in new window</source>
+        <translation>&amp;Öppna i nytt fönster</translation>
+    </message>
+    <message>
+        <source>All values are 0 in this chart</source>
+        <translation>Alla värden är 0 i detta diagram</translation>
+    </message>
+    <message>
+        <source>TOra</source>
+        <translation type="obsolete">TOra</translation>
+    </message>
+</context>
+<context>
+    <name>toPreferences</name>
+    <message>
+        <source>Global Settings</source>
+        <translation>Globala Inställningarna</translation>
+    </message>
+    <message>
+        <source>Editor Settings</source>
+        <translation>Editor Inställningar</translation>
+    </message>
+    <message>
+        <source>Database Settings</source>
+        <translation>Databas Inställningar</translation>
+    </message>
+    <message>
+        <source>Tools</source>
+        <translation>Verktyg</translation>
+    </message>
+</context>
+<context>
+    <name>toPreferencesUI</name>
+    <message>
+        <source>Preferences</source>
+        <translation>Inställlningar</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&amp;Help</source>
+        <translation>&amp;Hjälp</translation>
+    </message>
+</context>
+<context>
+    <name>toProfiler</name>
+    <message>
+        <source>Refresh list</source>
+        <translation>Uppdatera lista</translation>
+    </message>
+    <message>
+        <source>Repeat run</source>
+        <translation>Kör om</translation>
+    </message>
+    <message>
+        <source>Comment</source>
+        <translation>Kommentar</translation>
+    </message>
+    <message>
+        <source>Unknown</source>
+        <translation>Okänd</translation>
+    </message>
+    <message>
+        <source>Run profiling in background</source>
+        <translation>Kör profiling i backgrunden</translation>
+    </message>
+    <message>
+        <source>Execute current profiling</source>
+        <translation>Kör nuvarande profiling</translation>
+    </message>
+    <message>
+        <source>Script</source>
+        <translation>Skript</translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation>Resultat</translation>
+    </message>
+    <message>
+        <source>Profiler tables doesn&apos;t exist</source>
+        <translation>Profiltabeller saknas</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Ja</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;Nej</translation>
+    </message>
+    <message>
+        <source>Select run</source>
+        <translation>Välj körning</translation>
+    </message>
+    <message>
+        <source>%1 runs</source>
+        <translation>%1 körningar</translation>
+    </message>
+    <message>
+        <source>Something went wrong collecting statistics</source>
+        <translation>Någonting gick fel när statestik hämtades</translation>
+    </message>
+    <message>
+        <source>PL/SQL Profiler</source>
+        <translation>PL/SQL Profiler</translation>
+    </message>
+    <message>
+        <source>Profiler tables doesn&apos;t exist. Should TOra
+try to create them in the current schema?</source>
+        <translation>Profiltabellerna finns inte. Skall TOra
+försöka skapa om dem i nuvarande schema?</translation>
+    </message>
+</context>
+<context>
+    <name>toProject</name>
+    <message>
+        <source>SQL Project</source>
+        <translation>SQL Projekt</translation>
+    </message>
+    <message>
+        <source>Add file to project</source>
+        <translation>Lägg till fil till projekt</translation>
+    </message>
+    <message>
+        <source>Remove file from project</source>
+        <translation>Ta bort fil från projekt</translation>
+    </message>
+    <message>
+        <source>SQL project</source>
+        <translation>SQL projekt</translation>
+    </message>
+    <message>
+        <source>Save project</source>
+        <translation>Spara projekt</translation>
+    </message>
+    <message>
+        <source>Add new subproject</source>
+        <translation>Lägg till nytt underprojekt</translation>
+    </message>
+    <message>
+        <source>Generate SQL for this project</source>
+        <translation>Generera SQL för detta projekt</translation>
+    </message>
+    <message>
+        <source>Move up in project</source>
+        <translation>Flytta upp i projekt</translation>
+    </message>
+    <message>
+        <source>Move down in project</source>
+        <translation>Flytta ner i projekt</translation>
+    </message>
+    <message>
+        <source>File</source>
+        <translation>Fil</translation>
+    </message>
+    <message>
+        <source>Size</source>
+        <translation>Storlek</translation>
+    </message>
+    <message>
+        <source>untitled.tpr</source>
+        <translation>okänd.tpr</translation>
+    </message>
+    <message>
+        <source>
+
+-- Start of project %1
+
+</source>
+        <translation>
+
+-- Start av projekt %1
+
+</translation>
+    </message>
+    <message>
+        <source>
+
+-- Start of file %1
+
+</source>
+        <translation>
+
+-- Start av fil %1
+
+</translation>
+    </message>
+</context>
+<context>
+    <name>toQValue</name>
+    <message>
+        <source>Unknown type of query value</source>
+        <translation>Okänd typ av frågeresultat</translation>
+    </message>
+</context>
+<context>
+    <name>toQuery</name>
+    <message>
+        <source>Query aborted</source>
+        <translation>Frågan avbruten</translation>
+    </message>
+</context>
+<context>
+    <name>toReadFile</name>
+    <message>
+        <source>Couldn&apos;t open file %1.</source>
+        <translation>Kunde inte öppna fil %1.</translation>
+    </message>
+    <message>
+        <source>Encountered problems read configuration</source>
+        <translation>Uppstod problem med att läsa konfigurationsfil</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t download file</source>
+        <translation>Kunde inte ladda ner fil</translation>
+    </message>
+</context>
+<context>
+    <name>toRefreshCreate</name>
+    <message>
+        <source>None</source>
+        <translation>Ingen</translation>
+    </message>
+    <message>
+        <source>2 seconds</source>
+        <translation>2 sekunder</translation>
+    </message>
+    <message>
+        <source>5 seconds</source>
+        <translation>5 sekunder</translation>
+    </message>
+    <message>
+        <source>10 seconds</source>
+        <translation>10 sekunder</translation>
+    </message>
+    <message>
+        <source>30 seconds</source>
+        <translation>30 sekunder</translation>
+    </message>
+    <message>
+        <source>1 min</source>
+        <translation>1 min</translation>
+    </message>
+    <message>
+        <source>5 min</source>
+        <translation>5 min</translation>
+    </message>
+    <message>
+        <source>10 min</source>
+        <translation>10 min</translation>
+    </message>
+</context>
+<context>
+    <name>toRefreshParse</name>
+    <message>
+        <source>Unknown timer value</source>
+        <translation>Okänt tidtagarvärde</translation>
+    </message>
+</context>
+<context>
+    <name>toReport</name>
+    <message>
+        <source>&lt;H4&gt;COLUMNS&lt;/H4&gt;
+&lt;TABLE WIDTH=100% BORDER=0&gt;&lt;TR&gt;&lt;TH ALIGN=left WIDTH=25%&gt;Name&lt;/TH&gt;</source>
+        <translation>&lt;H4&gt;COLUMNER&lt;/H4&gt;
+&lt;TABLE WIDTH=100% BORDER=0&gt;&lt;TR&gt;&lt;TH ALIGN=left WIDTH=25%&gt;Namn&lt;/TH&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;TH ALIGN=left WIDTH=25%&gt;Definition&lt;/TH&gt;</source>
+        <translation>&lt;TH ALIGN=left WIDTH=25%&gt;Definition&lt;/TH&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;TH ALIGN=left WIDTH=50%&gt;Description&lt;/TH&gt;</source>
+        <translation>&lt;TH ALIGN=left WIDTH=50%&gt;Beskrivning&lt;/TH&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Report on database %7&lt;/TITLE&gt;&lt;/HEAD&gt;
+&lt;BODY&gt;&lt;H1&gt;Report on database %8&lt;/H1&gt;
+&lt;TABLE BORDER=0&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;Generated by:&lt;/TD&gt;&lt;TD VALIGN=top&gt;TOra, Version %1&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;At:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%2&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;From:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%3, an %4 %5 database&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;On:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%6&lt;/TD&gt;&lt;/TR&gt;
+&lt;/TABLE&gt;
+</source>
+        <translation>&lt;HTML&gt;&lt;HEAD&gt;&lt;TITLE&gt;Rapport på databas %7&lt;/TITLE&gt;&lt;/HEAD&gt;
+&lt;BODY&gt;&lt;H1&gt;Rapport på databas %8&lt;/H1&gt;
+&lt;TABLE BORDER=0&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;Genererad av:&lt;/TD&gt;&lt;TD VALIGN=top&gt;TOra, Version %1&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;Tid:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%2&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;Från:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%3, en %4 %5 databas&lt;/TD&gt;&lt;/TR&gt;
+&lt;TR&gt;&lt;TD VALIGN=top&gt;PÃ¥:&lt;/TD&gt;&lt;TD VALIGN=top&gt;%6&lt;/TD&gt;&lt;/TR&gt;
+&lt;/TABLE&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;H1&gt;Global Objects&lt;/H1&gt;
+</source>
+        <translation>&lt;H1&gt;Globala Objekt&lt;/H1&gt;
+</translation>
+    </message>
+    <message>
+        <source>&lt;H1&gt;Public&lt;/H1&gt;</source>
+        <translation>&lt;H1&gt;Publika&lt;/H1&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;H1&gt;Schema %1&lt;/H1&gt;
+</source>
+        <translation>&lt;H1&gt;Schema %1&lt;/H1&gt;
+</translation>
+    </message>
+</context>
+<context>
+    <name>toResultBar</name>
+    <message>
+        <source>Edit SQL...</source>
+        <translation>Editera SQL...</translation>
+    </message>
+</context>
+<context>
+    <name>toResultCols</name>
+    <message>
+        <source>Default value: &lt;B&gt;</source>
+        <translation>Standard värde: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>Distinct values: &lt;B&gt;</source>
+        <translation>Distinkta värden: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>Low value: &lt;B&gt;</source>
+        <translation>Lägsta värde: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>High value: &lt;B&gt;</source>
+        <translation>Högsta värde: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>Density: &lt;B&gt;</source>
+        <translation>Täthet: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>Number of nulls: &lt;B&gt;</source>
+        <translation>Antal nullvärden: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>Number of histogram buckets: &lt;B&gt;</source>
+        <translation>Antal histogram hinkar: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>Last analyzed: &lt;B&gt;</source>
+        <translation>Senast analyserad: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>Sample size: &lt;B&gt;</source>
+        <translation>Urvalsstorlek: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>Average column size: &lt;B&gt;</source>
+        <translation>Medelkolumnstorlek: &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>&lt;/B&gt; synonym for &lt;B&gt;</source>
+        <translation>&lt;/B&gt; synonym för &lt;B&gt;</translation>
+    </message>
+    <message>
+        <source>(Object cache not ready)</source>
+        <translation>(Objekt cache ej redo)</translation>
+    </message>
+</context>
+<context>
+    <name>toResultCols::resultCols</name>
+    <message>
+        <source>Column Name</source>
+        <translation>Kolumnnamn</translation>
+    </message>
+    <message>
+        <source>Data Type</source>
+        <translation>Datatyp</translation>
+    </message>
+    <message>
+        <source>Comments</source>
+        <translation>Kommentar</translation>
+    </message>
+    <message>
+        <source>Description of %1</source>
+        <translation>Beskrivning av %1</translation>
+    </message>
+    <message>
+        <source>Failed to describe %1</source>
+        <translation>Kunde inte beskriva %1</translation>
+    </message>
+    <message>
+        <source>Description of %1.%2</source>
+        <translation type="obsolete">Beskrivning av %1.%2</translation>
+    </message>
+</context>
+<context>
+    <name>toResultConstraint</name>
+    <message>
+        <source>Constraint Name</source>
+        <translation>Constraint Namn</translation>
+    </message>
+    <message>
+        <source>Condition</source>
+        <translation>Vilkor</translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation>PÃ¥slaget</translation>
+    </message>
+    <message>
+        <source>Delete Rule</source>
+        <translation>Borttagningsregel</translation>
+    </message>
+    <message>
+        <source>Generated</source>
+        <translation>Genererad</translation>
+    </message>
+</context>
+<context>
+    <name>toResultContent</name>
+    <message>
+        <source>Content editor</source>
+        <translation>Innehållseditor</translation>
+    </message>
+    <message>
+        <source>Define filter for editor</source>
+        <translation>Definiera filter för editor</translation>
+    </message>
+    <message>
+        <source>Remove any filter</source>
+        <translation>Ta bort alla filter</translation>
+    </message>
+    <message>
+        <source>Add a new record</source>
+        <translation>Lägg till ny post</translation>
+    </message>
+    <message>
+        <source>Save changes</source>
+        <translation>Spara ändringar</translation>
+    </message>
+    <message>
+        <source>Discard changes</source>
+        <translation>Ta bort ändringar</translation>
+    </message>
+    <message>
+        <source>Delete current record from table</source>
+        <translation>Ta bort nuvarande post från tabellen</translation>
+    </message>
+    <message>
+        <source>Go to first row</source>
+        <translation>Gå till första raden</translation>
+    </message>
+    <message>
+        <source>Go to previous row</source>
+        <translation>Gå till föregående rad</translation>
+    </message>
+    <message>
+        <source>Go to next row</source>
+        <translation>Gå till nästa rad</translation>
+    </message>
+    <message>
+        <source>Go to last row</source>
+        <translation>GÃ¥ till sista rad</translation>
+    </message>
+    <message>
+        <source>Toggle between table or single record editing</source>
+        <translation>Växla mellan tabell eller enkel post editering</translation>
+    </message>
+    <message>
+        <source>Remove filter</source>
+        <translation>Ta bort filter</translation>
+    </message>
+    <message>
+        <source>Remove the filter for this table only or for all tables.</source>
+        <translation>Ta bort filter för denna tabell enbart eller alla tabeller.</translation>
+    </message>
+    <message>
+        <source>&amp;All</source>
+        <translation>&amp;Alla</translation>
+    </message>
+    <message>
+        <source>&amp;This</source>
+        <translation>&amp;Denna</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Duplicate an existing record</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultContentEditor</name>
+    <message>
+        <source>&amp;Display in editor...</source>
+        <translation>&amp;Visa i editor...</translation>
+    </message>
+    <message>
+        <source>&amp;Copy field</source>
+        <translation>&amp;Kopiera fält</translation>
+    </message>
+    <message>
+        <source>&amp;Paste field</source>
+        <translation>K&amp;listra in fält</translation>
+    </message>
+    <message>
+        <source>Copy selection</source>
+        <translation>Kopiera urval</translation>
+    </message>
+    <message>
+        <source>Copy selection with header</source>
+        <translation>Kopiera urval med huvud</translation>
+    </message>
+    <message>
+        <source>Copy transposed</source>
+        <translation>Kopiera transposerad</translation>
+    </message>
+    <message>
+        <source>&amp;Delete record</source>
+        <translation>&amp;Ta bort post</translation>
+    </message>
+    <message>
+        <source>Select all</source>
+        <translation>Välj alla</translation>
+    </message>
+    <message>
+        <source>Export to file...</source>
+        <translation>Exportera till fil...</translation>
+    </message>
+    <message>
+        <source>Read all</source>
+        <translation>Läs alla</translation>
+    </message>
+    <message>
+        <source>Can&apos;t use these on toResultContent</source>
+        <translation>Kan inte använda dessa på toResultContent</translation>
+    </message>
+    <message>
+        <source>Unsaved data in contents, select other row to store</source>
+        <translation>Ej sparad data finns, välj annan rad för att spara</translation>
+    </message>
+    <message>
+        <source>Reading all values, moving cursor to end when done</source>
+        <translation>Läser alla värden, flyttar markör till slutet när inläsning är klar</translation>
+    </message>
+    <message>
+        <source>Edit cancelled</source>
+        <translation>Editering avbruten</translation>
+    </message>
+    <message>
+        <source>This table contains only LOB/LONG columns and can not be edited</source>
+        <translation>Denna tabell innehåller enbart LOG/LONG kolumner och kan inte bli editerad</translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation>Inga ändringar gjorda</translation>
+    </message>
+    <message>
+        <source>Saved row</source>
+        <translation>Sparade rad</translation>
+    </message>
+    <message>
+        <source>Content of %1.%2</source>
+        <translation>Innehåll av %1.%2</translation>
+    </message>
+</context>
+<context>
+    <name>toResultContentFilterUI</name>
+    <message>
+        <source>Content editor filter settings</source>
+        <translation>Filterinställningar för innehållseditor</translation>
+    </message>
+    <message>
+        <source>Ok</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Selection &amp;criteria</source>
+        <translation>Urvals &amp;kriterium</translation>
+    </message>
+    <message>
+        <source>Selection criteria to use getting items to edit. Same as after where in a select clause.</source>
+        <translation>Val av kriterium att använda för att ange vilka poster som skall editeras. Samma format som efter &quot;where&quot; i en &quot;select&quot;-sats.</translation>
+    </message>
+    <message>
+        <source>Sort &amp;order. Separate columns with comma.</source>
+        <translation>Sorterings &amp;ordning. Separera kolumner med komma.</translation>
+    </message>
+    <message>
+        <source>The sort order to use when retreiving data from the database.</source>
+        <translation>Sorteringsordning att använda när poster läses från databasen.</translation>
+    </message>
+    <message>
+        <source>Table &amp;columns</source>
+        <translation>Tabell &amp;kolumner</translation>
+    </message>
+    <message>
+        <source>Available column names in table.</source>
+        <translation>Tillgängliga kolumner i tabellen.</translation>
+    </message>
+    <message>
+        <source>Use for all tables</source>
+        <translation>Använd för samtliga tabeller</translation>
+    </message>
+</context>
+<context>
+    <name>toResultContentSingle</name>
+    <message>
+        <source>Edit</source>
+        <translation>Editera</translation>
+    </message>
+    <message>
+        <source>Internal error, save different row than current in content editor</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>toResultDepend</name>
+    <message>
+        <source>Owner</source>
+        <translation>Ägare</translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation>Namn</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>Dependency</source>
+        <translation>Beroende</translation>
+    </message>
+</context>
+<context>
+    <name>toResultExtract</name>
+    <message>
+        <source>Object not found</source>
+        <translation>Objektet finns ej</translation>
+    </message>
+</context>
+<context>
+    <name>toResultIndexes</name>
+    <message>
+        <source>Index Name</source>
+        <translation>Indexnamn</translation>
+    </message>
+    <message>
+        <source>Columns</source>
+        <translation>Kolumner</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>Unique</source>
+        <translation>Unik</translation>
+    </message>
+</context>
+<context>
+    <name>toResultLine</name>
+    <message>
+        <source>Edit SQL...</source>
+        <translation>Editera SQL...</translation>
+    </message>
+</context>
+<context>
+    <name>toResultListFormat</name>
+    <message>
+        <source>Text</source>
+        <translation>Text</translation>
+    </message>
+    <message>
+        <source>Tab delimited</source>
+        <translation>Tabseparerad</translation>
+    </message>
+    <message>
+        <source>CSV</source>
+        <translation>CSV</translation>
+    </message>
+    <message>
+        <source>HTML</source>
+        <translation>HTML</translation>
+    </message>
+</context>
+<context>
+    <name>toResultListFormatUI</name>
+    <message>
+        <source>Choose format</source>
+        <translation>Välj format</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;Choose format of exported file.</source>
+        <translation>&amp;Välj format för exporterad fil.</translation>
+    </message>
+    <message>
+        <source>Separator</source>
+        <translation>Separator</translation>
+    </message>
+    <message>
+        <source>Delimiter</source>
+        <translation>Avskiljare</translation>
+    </message>
+</context>
+<context>
+    <name>toResultLock</name>
+    <message>
+        <source>Session</source>
+        <translation>Session</translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation>Schema</translation>
+    </message>
+    <message>
+        <source>Osuser</source>
+        <translation>OS användare</translation>
+    </message>
+    <message>
+        <source>Program</source>
+        <translation>Program</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>Mod</translation>
+    </message>
+    <message>
+        <source>Request</source>
+        <translation>Förfrågan</translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Objekt</translation>
+    </message>
+    <message>
+        <source>Grabbed</source>
+        <translation>Tagen</translation>
+    </message>
+    <message>
+        <source>Requested</source>
+        <translation>Efterfrågad</translation>
+    </message>
+</context>
+<context>
+    <name>toResultLong</name>
+    <message>
+        <source>Will not reexecute same query</source>
+        <translation>Kör inte om samma fråga</translation>
+    </message>
+    <message>
+        <source>%1 rows processed</source>
+        <translation>%1 rader bearbetade</translation>
+    </message>
+    <message>
+        <source>Query executed</source>
+        <translation>Fråga exekverad</translation>
+    </message>
+    <message>
+        <source>Statement executed</source>
+        <translation>Sats exekverad</translation>
+    </message>
+    <message>
+        <source>Can only hide last column in query</source>
+        <translation>Kan bara gömma sista kolumnen i frågan</translation>
+    </message>
+</context>
+<context>
+    <name>toResultObject</name>
+    <message>
+        <source>Internal error, toResult is not a descendant of toResult</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>toResultParam</name>
+    <message>
+        <source>Parameter editor</source>
+        <translation>Parameter editor</translation>
+    </message>
+    <message>
+        <source>Display hidden parameters. This will only word if you are logged in as the sys user.</source>
+        <translation>Visa gömda parametrar. Detta kommer endast fungera om du är inloggad som användaren sys.</translation>
+    </message>
+    <message>
+        <source>Generate pfile</source>
+        <translation>Generera pfil</translation>
+    </message>
+    <message>
+        <source>Apply changes to system</source>
+        <translation>Spara ändringar till systemet</translation>
+    </message>
+    <message>
+        <source>Apply changes to session</source>
+        <translation>Spara ändringarna till sessionen</translation>
+    </message>
+    <message>
+        <source>Drop current changes</source>
+        <translation>Radera nuvarande ändringar</translation>
+    </message>
+    <message>
+        <source>Changed</source>
+        <translation>Ändrad</translation>
+    </message>
+    <message>
+        <source># Generated by TOra version %1
+
+</source>
+        <translation># Genererad av TOra version %1
+
+</translation>
+    </message>
+</context>
+<context>
+    <name>toResultParam:ListParam</name>
+    <message>
+        <source>Parameter</source>
+        <translation>Parameter</translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation>Värde</translation>
+    </message>
+    <message>
+        <source>Changed</source>
+        <translation>Ändrad</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Beskrivning</translation>
+    </message>
+</context>
+<context>
+    <name>toResultPlan</name>
+    <message>
+        <source>Operation</source>
+        <translation>Operation</translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation>Inställningar</translation>
+    </message>
+    <message>
+        <source>Object name</source>
+        <translation>Objektnamn</translation>
+    </message>
+    <message>
+        <source>Mode</source>
+        <translation>Mod</translation>
+    </message>
+    <message>
+        <source>Cost</source>
+        <translation>Kostnad</translation>
+    </message>
+    <message>
+        <source>Bytes</source>
+        <translation>Bytes</translation>
+    </message>
+    <message>
+        <source>Cardinality</source>
+        <translation>Kardinalitet</translation>
+    </message>
+    <message>
+        <source>Plan table doesn&apos;t exist</source>
+        <translation>Plan tabellen finns inte</translation>
+    </message>
+    <message>
+        <source>Specified plan table %1 didn&apos;t exist.
+Should TOra try to create it?</source>
+        <translation>Angivna plan tabellen %1 fanns ine
+Skall TOra försöka skapa den?</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Ja</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;Nej</translation>
+    </message>
+</context>
+<context>
+    <name>toResultReferences</name>
+    <message>
+        <source>Owner</source>
+        <translation>Ägare</translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Objekt</translation>
+    </message>
+    <message>
+        <source>Constraint</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Condition</source>
+        <translation>Vilkor</translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation>PÃ¥slaget</translation>
+    </message>
+    <message>
+        <source>Delete Rule</source>
+        <translation>Raderingsregel</translation>
+    </message>
+    <message>
+        <source>foreign key (%1) references %2.%3(%4)</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>DEPENDENCY</source>
+        <translation>Beroende</translation>
+    </message>
+</context>
+<context>
+    <name>toResultResources:Information</name>
+    <message>
+        <source>Sorts</source>
+        <translation>Sorteringar</translation>
+    </message>
+    <message>
+        <source>Parse</source>
+        <translation>Parse</translation>
+    </message>
+    <message>
+        <source>Disk Reads</source>
+        <translation>Disk läsningar</translation>
+    </message>
+    <message>
+        <source>Buffer Gets</source>
+        <translation>Bugger Hämtningar</translation>
+    </message>
+    <message>
+        <source>Rows Processed</source>
+        <translation>Rader Bearbetade</translation>
+    </message>
+    <message>
+        <source>Executions</source>
+        <translation>Exekveringar</translation>
+    </message>
+    <message>
+        <source>Loads</source>
+        <translation>Laddningar</translation>
+    </message>
+    <message>
+        <source>First Load Time</source>
+        <translation>Första Inläsningstid</translation>
+    </message>
+    <message>
+        <source>Parsing User Id</source>
+        <translation>Bearbetande Användar ID</translation>
+    </message>
+    <message>
+        <source>Parsing Schema Id</source>
+        <translation>Bearbetande Schema ID</translation>
+    </message>
+    <message>
+        <source>Users Executing</source>
+        <translation>Användare Som Kört</translation>
+    </message>
+    <message>
+        <source>Users Opening</source>
+        <translation>Användare Som Öppnat</translation>
+    </message>
+    <message>
+        <source>Open Versions</source>
+        <translation>Öppna Versioner</translation>
+    </message>
+    <message>
+        <source>Sharable Mem</source>
+        <translation>Delat Minne</translation>
+    </message>
+    <message>
+        <source>Kept Versions</source>
+        <translation>Sparade Versioner</translation>
+    </message>
+    <message>
+        <source>Persistent Mem</source>
+        <translation>Behållt Minne</translation>
+    </message>
+    <message>
+        <source>Optimizer Mode</source>
+        <translation>Optimeringsmod</translation>
+    </message>
+    <message>
+        <source>Loaded Versions</source>
+        <translation>Laddade Versioner</translation>
+    </message>
+    <message>
+        <source>Runtime Mem</source>
+        <translation>Körnings Minne</translation>
+    </message>
+    <message>
+        <source>Serializable Aborts</source>
+        <translation>Serielagda Avbrott</translation>
+    </message>
+    <message>
+        <source>Invalidations</source>
+        <translation>Invalideringar</translation>
+    </message>
+    <message>
+        <source></source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source> </source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toResultStats</name>
+    <message>
+        <source>Name</source>
+        <translation>Namn</translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation>Värde</translation>
+    </message>
+    <message>
+        <source>Delta</source>
+        <translation>Delta</translation>
+    </message>
+    <message>
+        <source>Can&apos;t change session on system statistics</source>
+        <translation>Kan inte ändra session på systemstatestik</translation>
+    </message>
+</context>
+<context>
+    <name>toResultStorage</name>
+    <message>
+        <source>Name</source>
+        <translation>Namn</translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation>Status</translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation>Information</translation>
+    </message>
+    <message>
+        <source>Contents</source>
+        <translation>Innehåll</translation>
+    </message>
+    <message>
+        <source>Logging</source>
+        <translation>Loggning</translation>
+    </message>
+    <message>
+        <source>Size (%1)</source>
+        <translation>Storlek (%1)</translation>
+    </message>
+    <message>
+        <source>Free (%1)</source>
+        <translation>Fritt (%1)</translation>
+    </message>
+    <message>
+        <source>Autoextend (%1)</source>
+        <translation>Autoutökning (%1)</translation>
+    </message>
+    <message>
+        <source>Used/Free/Autoextend</source>
+        <translation>Använt/Fritt/Autoutökning</translation>
+    </message>
+    <message>
+        <source>Available</source>
+        <translation>Tillgängligt</translation>
+    </message>
+    <message>
+        <source>Coalesced</source>
+        <translation>Sammanslaget</translation>
+    </message>
+    <message>
+        <source>Max free (%1)</source>
+        <translation>Max fritt (%1)</translation>
+    </message>
+    <message>
+        <source>Free fragments</source>
+        <translation>Fria Fragment</translation>
+    </message>
+    <message>
+        <source>toResultStorage</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t find tablespace parent %1 for datafile</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>No tablespace selected</source>
+        <translation>Inget tablespace valt</translation>
+    </message>
+    <message>
+        <source>Weird, empty tablespace name</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>No file selected</source>
+        <translation>Ingen fil vald</translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>toResultView</name>
+    <message>
+        <source>Can only hide last column in query</source>
+        <translation>Kan bara gömma sista kolumnen i fråga</translation>
+    </message>
+    <message>
+        <source>Reading all entries</source>
+        <translation>Läser alla poster</translation>
+    </message>
+    <message>
+        <source>Read All</source>
+        <translation>Läs Alla</translation>
+    </message>
+</context>
+<context>
+    <name>toRollback</name>
+    <message>
+        <source>Rollback analyzer</source>
+        <translation>Rollback Hanterare</translation>
+    </message>
+    <message>
+        <source>Update segment list</source>
+        <translation>Updatera Segmentlista</translation>
+    </message>
+    <message>
+        <source>Take segment online</source>
+        <translation>Slå på segment</translation>
+    </message>
+    <message>
+        <source>Take segment offline</source>
+        <translation>Slå av segment</translation>
+    </message>
+    <message>
+        <source>Create new rollback segment</source>
+        <translation>Skapa nytt rollback segment</translation>
+    </message>
+    <message>
+        <source>Drop segment</source>
+        <translation>Ta bort segment</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>Open Cursors</source>
+        <translation>Öppna Frågor</translation>
+    </message>
+    <message>
+        <source>Transaction Users</source>
+        <translation>Transkationsanvändare</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>Online</source>
+        <translation>PÃ¥slagen</translation>
+    </message>
+    <message>
+        <source>Offline</source>
+        <translation>Avslagen</translation>
+    </message>
+    <message>
+        <source>Create segment...</source>
+        <translation>Skapa segment...</translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation>&amp;Ändra uppdatering</translation>
+    </message>
+    <message>
+        <source>&amp;Rollback</source>
+        <translation>&amp;Rollback</translation>
+    </message>
+    <message>
+        <source>No segment selected</source>
+        <translation>Inget segment valt</translation>
+    </message>
+    <message>
+        <source>Drop rollback segment</source>
+        <translation>Ta bort rollback segment</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to drop the segment %1.</source>
+        <translation>Är du säker på att du vill ta bort segmentet %1.</translation>
+    </message>
+    <message>
+        <source>&amp;Drop</source>
+        <translation>&amp;Ta bort</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Enable snapshot too old detection.</source>
+        <translation>Slå på snapshot too old detektering.</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Rollback|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Rollback|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toRollback:Information</name>
+    <message>
+        <source>Segment</source>
+        <translation>Segment</translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation>Ägare</translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Status</source>
+        <translation>Status</translation>
+    </message>
+    <message>
+        <source>Transactions</source>
+        <translation>Transaktioner</translation>
+    </message>
+    <message>
+        <source>Initial (MB)</source>
+        <translation>Initial (MB)</translation>
+    </message>
+    <message>
+        <source>Next (MB)</source>
+        <translation>Nästa (MB)</translation>
+    </message>
+    <message>
+        <source>PCT Increase</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Current (MB)</source>
+        <translation>Nuvarande (MB)</translation>
+    </message>
+    <message>
+        <source>Optimal (MB)</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Used (MB)</source>
+        <translation>Använd (MB)</translation>
+    </message>
+    <message>
+        <source>Extents</source>
+        <translation>Antal Extent</translation>
+    </message>
+    <message>
+        <source>Current</source>
+        <translation>Nuvarande</translation>
+    </message>
+    <message>
+        <source>Block</source>
+        <translation>Block</translation>
+    </message>
+    <message>
+        <source>Blocks</source>
+        <translation>Block</translation>
+    </message>
+    <message>
+        <source>Reads</source>
+        <translation>Läsningar</translation>
+    </message>
+    <message>
+        <source>Hitrate</source>
+        <translation>Träffratio</translation>
+    </message>
+</context>
+<context>
+    <name>toRollback:TransactionUsers</name>
+    <message>
+        <source>Rollback Seg</source>
+        <translation>Rollback Seg</translation>
+    </message>
+    <message>
+        <source>Session ID</source>
+        <translation>Sessions ID</translation>
+    </message>
+    <message>
+        <source>Os User</source>
+        <translation>OS Användare</translation>
+    </message>
+    <message>
+        <source>Oracle User</source>
+        <translation>Oracle Användare</translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackDialog</name>
+    <message>
+        <source>Storage</source>
+        <translation>Lagring</translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation>Inga ändringar gjorda</translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackDialogUI</name>
+    <message>
+        <source>Modify tablespace</source>
+        <translation>Andra tablespace</translation>
+    </message>
+    <message>
+        <source>Display the SQL used to generate the specified object</source>
+        <translation>Visa SQL för att generera det angivna objektet</translation>
+    </message>
+    <message>
+        <source>&amp;Public</source>
+        <translation>&amp;Publik</translation>
+    </message>
+    <message>
+        <source>If this should be a publicly available rollback segment</source>
+        <translation>Om denna skall vara ett publikt rollback segment</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Namn</translation>
+    </message>
+    <message>
+        <source>&amp;Tablespace</source>
+        <translation>&amp;Tablespace</translation>
+    </message>
+    <message>
+        <source>Rollback Segment</source>
+        <translation>Rollback Segment</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackOpen</name>
+    <message>
+        <source>Started</source>
+        <translation>Startad</translation>
+    </message>
+    <message>
+        <source>User</source>
+        <translation>Användare</translation>
+    </message>
+    <message>
+        <source>Snapshot</source>
+        <translation>Snapshot</translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation>SQL</translation>
+    </message>
+</context>
+<context>
+    <name>toRollbackPrefs</name>
+    <message>
+        <source>Rollback Tool</source>
+        <translation>Rollback Verktyg</translation>
+    </message>
+    <message>
+        <source>&amp;Restart reexecuted statements</source>
+        <translation>Sta&amp;rta om omexekverade satser</translation>
+    </message>
+    <message>
+        <source>Start statements again that have been reexecuted.</source>
+        <translation>Starta om satser som blivit exekverade igen.</translation>
+    </message>
+    <message>
+        <source>&amp;Must read buffers</source>
+        <translation>&amp;Måste lästa buffrar</translation>
+    </message>
+    <message>
+        <source>Don&apos;t display statements that have not read buffers.</source>
+        <translation>Visa inte satser som inte läser buffrar.</translation>
+    </message>
+    <message>
+        <source>&amp;Exclude first appearance</source>
+        <translation>&amp;Exkludera första visningen</translation>
+    </message>
+    <message>
+        <source>A statement must be visible at least two consecutive polls to be displayed.</source>
+        <translation>En sats måste synas åtminstånde två konsekutiva uppdateringar innan det visas.</translation>
+    </message>
+    <message>
+        <source>&amp;Disregard start extent.</source>
+        <translation>&amp;Bortse från start extent.</translation>
+    </message>
+    <message>
+        <source>Always start from the left border when displaying extent usage.</source>
+        <translation>Visa alltid från början av vänstra kanten när användandet av extent visas.</translation>
+    </message>
+    <message>
+        <source>&amp;Enable snapshot too old detection.</source>
+        <translation>Slå på snapshot too old d&amp;etektering.</translation>
+    </message>
+    <message>
+        <source>Enable snapshot too old detection, will put load on large databases.</source>
+        <translation>Slå på snapshot too old detektering, belastar stora databaser.</translation>
+    </message>
+</context>
+<context>
+    <name>toSGAStatement</name>
+    <message>
+        <source>Couldn&apos;t find SQL statement in SGA</source>
+        <translation>Kunde inte hitta SQL sats i SGA</translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation>SQL</translation>
+    </message>
+    <message>
+        <source>Execution plan</source>
+        <translation>Exekverings plan</translation>
+    </message>
+    <message>
+        <source>Information</source>
+        <translation>Information</translation>
+    </message>
+</context>
+<context>
+    <name>toSGATrace</name>
+    <message>
+        <source>SGA trace</source>
+        <translation>SGA spårning</translation>
+    </message>
+    <message>
+        <source>Fetch statements in SGA</source>
+        <translation>Hämta satser från SGA</translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation>Schema</translation>
+    </message>
+    <message>
+        <source>Any</source>
+        <translation>Valfri</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>SGA</source>
+        <translation>SGA</translation>
+    </message>
+    <message>
+        <source>Long operations</source>
+        <translation>LÃ¥nga operationer</translation>
+    </message>
+    <message>
+        <source>Selection</source>
+        <translation>Urval</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Alla</translation>
+    </message>
+    <message>
+        <source>Unfinished</source>
+        <translation>Oavklarade</translation>
+    </message>
+    <message>
+        <source>Top executions</source>
+        <translation>Top exekveringar</translation>
+    </message>
+    <message>
+        <source>Top sorts</source>
+        <translation>Top sorteringar</translation>
+    </message>
+    <message>
+        <source>Top diskreads</source>
+        <translation>Top diskläsningar</translation>
+    </message>
+    <message>
+        <source>Top buffergets</source>
+        <translation>Top bufferhämtningar</translation>
+    </message>
+    <message>
+        <source>Top rows</source>
+        <translation>Top rader</translation>
+    </message>
+    <message>
+        <source>Top sorts/exec</source>
+        <translation>Top sortering/exekvering</translation>
+    </message>
+    <message>
+        <source>Top diskreads/exec</source>
+        <translation>Top diskläsning/exekvering</translation>
+    </message>
+    <message>
+        <source>Top buffergets/exec</source>
+        <translation>Top bufferhämtning/exekvering</translation>
+    </message>
+    <message>
+        <source>Top rows/exec</source>
+        <translation>Top rad/exekvering</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>Change &amp;schema</source>
+        <translation>Ändra &amp;schema</translation>
+    </message>
+    <message>
+        <source>Change &amp;refresh</source>
+        <translation>Ändra &amp;uppdatering</translation>
+    </message>
+    <message>
+        <source>Change t&amp;ype</source>
+        <translation>Ändra t&amp;yp</translation>
+    </message>
+    <message>
+        <source>&amp;SGA Trace</source>
+        <translation>&amp;SGA Spårning</translation>
+    </message>
+    <message>
+        <source>Unknown type of trace</source>
+        <translation>Okänd typ av spårning</translation>
+    </message>
+    <message>
+        <source>Unfinished is only available for long operations</source>
+        <translation>Oavklarade är endast tillgänglig för långa operationer</translation>
+    </message>
+    <message>
+        <source>Unknown selection</source>
+        <translation>Okänt urval</translation>
+    </message>
+    <message>
+        <source>Top buffers/row</source>
+        <translation>Top bufferhämtning/rad</translation>
+    </message>
+    <message>
+        <source>1 execution, 1 parse</source>
+        <translation>1 exekvering och 1 parsning</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>SGA Trace|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>SGA Trace|Change schema</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>SGA Trace|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Y</source>
+        <comment>SGA Trace|Change type</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSGATracePrefs</name>
+    <message>
+        <source>SGA Trace</source>
+        <translation>SGA Spårning</translation>
+    </message>
+    <message>
+        <source>&amp;Auto update</source>
+        <translation>&amp;Auto updatera</translation>
+    </message>
+    <message>
+        <source>Update automatically after change of schema.</source>
+        <translation>Updatera automatiskt efter ändring av schema.</translation>
+    </message>
+</context>
+<context>
+    <name>toSMTP</name>
+    <message>
+        <source>Connecting to %1</source>
+        <translation>Ansluter till %1</translation>
+    </message>
+    <message>
+        <source>Connected to %1</source>
+        <translation>Ansluten till %1</translation>
+    </message>
+    <message>
+        <source>Message sent</source>
+        <translation>Meddelande sänt</translation>
+    </message>
+    <message>
+        <source>Unexpected reply from SMTP server:
+
+</source>
+        <translation>Oväntat svar från SMTP server:
+
+</translation>
+    </message>
+</context>
+<context>
+    <name>toSQL</name>
+    <message>
+        <source>Tried to get unknown SQL (%1)</source>
+        <translation>Försökte hämta okänt SQL (%1)</translation>
+    </message>
+    <message>
+        <source>Malformed tag in config file. Missing = on row.</source>
+        <translation>Felaktigt formaterad tag i konfigurationsfil. Saknar = på rad.</translation>
+    </message>
+    <message>
+        <source>Malformed line in SQL dictionary file. Two &apos;[&apos; before &apos;=&apos;</source>
+        <translation>Felaktig rad i SQL ordboksfil. Två &apos;[&apos; innan &apos;=&apos;</translation>
+    </message>
+    <message>
+        <source>Unknown escape character in string (Only \\ and \n recognised)</source>
+        <translation>Okänt tecken efter \. Endast \\ och \n tillåtna</translation>
+    </message>
+    <message>
+        <source>SQL Dictionary</source>
+        <translation>SQL Ordbok</translation>
+    </message>
+</context>
+<context>
+    <name>toSQLEdit</name>
+    <message>
+        <source>SQL editor</source>
+        <translation>SQL editor</translation>
+    </message>
+    <message>
+        <source>Load SQL dictionary file</source>
+        <translation>Ladda SQL ordboks fil</translation>
+    </message>
+    <message>
+        <source>Save modified SQL to dictionary file</source>
+        <translation>Spara modifierad SQL tillbaka till ordboksfil</translation>
+    </message>
+    <message>
+        <source>Save this entry in the dictionary</source>
+        <translation>Spara denna post i ordboken</translation>
+    </message>
+    <message>
+        <source>Delete this version from the SQL dictionary</source>
+        <translation>Ta bort denna version från SQL ordboken</translation>
+    </message>
+    <message>
+        <source>Start new SQL definition</source>
+        <translation>Starta en ny SQL definition</translation>
+    </message>
+    <message>
+        <source>Text Name</source>
+        <translation>Text Namn</translation>
+    </message>
+    <message>
+        <source>Name</source>
+        <translation>Namn</translation>
+    </message>
+    <message>
+        <source>Database</source>
+        <translation>Databas</translation>
+    </message>
+    <message>
+        <source>Description</source>
+        <translation>Beskrivning</translation>
+    </message>
+    <message>
+        <source>Wrong format of version</source>
+        <translation>Fel format för version</translation>
+    </message>
+    <message>
+        <source>Should be database provider:version.</source>
+        <translation>Skulle vara databastyp:version.</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Should be database provider:version. Can&apos;t start with :.</source>
+        <translation>Skulle vara databastyp:version. Kan inte börja med :.</translation>
+    </message>
+    <message>
+        <source>Should be database provider:version. Can&apos;t end with the first :.</source>
+        <translation>Skulle vara databastyp:version. Kan inte sluta med det första :.</translation>
+    </message>
+    <message>
+        <source>Missing description</source>
+        <translation>Saknar beskrivning</translation>
+    </message>
+    <message>
+        <source>No description filled in. This is necessary to save SQL. Adding undescribed as description.</source>
+        <translation>Ingen beskrivning ifylld. Detta är nödvändigt för att spara SQL. Lägger till obeskrivd som beskrivning.</translation>
+    </message>
+    <message>
+        <source>Undescribed</source>
+        <translation>Obeskrivd</translation>
+    </message>
+    <message>
+        <source>Modified SQL dictionary</source>
+        <translation>Ändrade SQL ordboken</translation>
+    </message>
+    <message>
+        <source>Save changes into the SQL dictionary</source>
+        <translation>Spara ändringar i SQL ordboken</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Ja</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;Nej</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>toSQLEditTool</name>
+    <message>
+        <source>&amp;Edit SQL...</source>
+        <translation>&amp;Editera SQL...</translation>
+    </message>
+</context>
+<context>
+    <name>toSQLString</name>
+    <message>
+        <source>SQL Address not found in SGA</source>
+        <translation>SQL adress ej funnen i SGA</translation>
+    </message>
+</context>
+<context>
+    <name>toSQLToAddress</name>
+    <message>
+        <source>SQL Query not found in SGA</source>
+        <translation>SQL fråga ej funnen i SGA</translation>
+    </message>
+</context>
+<context>
+    <name>toSQLparse</name>
+    <message>
+        <source>Unbalanced parenthesis (Too many &apos;)&apos;)</source>
+        <translation>Obalanserade paranteser (För många &apos;)&apos;)</translation>
+    </message>
+    <message>
+        <source>Unbalanced parenthesis (Too many &apos;(&apos;)</source>
+        <translation>Obalanserade paranteser (För många &apos;)&apos;)</translation>
+    </message>
+    <message>
+        <source>Internal error in toSQLParse, should never get here</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>toSaveFilename</name>
+    <message>
+        <source>File open password</source>
+        <translation>Lösenord för att öppna fil</translation>
+    </message>
+</context>
+<context>
+    <name>toScript</name>
+    <message>
+        <source>Extraction and Compare</source>
+        <translation>Extrahering och Jämförelse</translation>
+    </message>
+    <message>
+        <source>Perform defined extraction</source>
+        <translation>Genomför definierad extrahering</translation>
+    </message>
+    <message>
+        <source>Search result</source>
+        <translation>Sökresultat</translation>
+    </message>
+    <message>
+        <source>Dropped</source>
+        <translation>Borttagen</translation>
+    </message>
+    <message>
+        <source>Created</source>
+        <translation>Skapad</translation>
+    </message>
+    <message>
+        <source>&amp;Initial</source>
+        <translation>&amp;Initial</translation>
+    </message>
+    <message>
+        <source>&amp;Limit</source>
+        <translation>&amp;begränsning</translation>
+    </message>
+    <message>
+        <source>&amp;Next</source>
+        <translation>&amp;Nästa</translation>
+    </message>
+    <message>
+        <source>No mode selected</source>
+        <translation>Ingen mod vald</translation>
+    </message>
+    <message>
+        <source>Destination shouldn&apos;t be enabled now, internal error</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Internal error, lastLevel &lt; 0</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Alla</translation>
+    </message>
+    <message>
+        <source>Replacing existing size with new</source>
+        <translation>Ersätt existerande storlek med ny</translation>
+    </message>
+    <message>
+        <source>Same</source>
+        <translation>Samma</translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation>Ingen</translation>
+    </message>
+    <message>
+        <source>No filename specified</source>
+        <translation>Inget filnamn angivet</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file %1</source>
+        <translation>Kunde inte öppna fil %1</translation>
+    </message>
+    <message>
+        <source>Error writing to file %1</source>
+        <translation>Fel vid skrivning till fil %1</translation>
+    </message>
+    <message>
+        <source>-- Script generated to file %1 successfully</source>
+        <translation>-- Skript genererat till fil %1 gick bra</translation>
+    </message>
+    <message>
+        <source>rem Master script for DDL reverse engineering by TOra
+
+</source>
+        <translation>rem Huvudskript för DDL generering av TOra
+
+</translation>
+    </message>
+    <message>
+        <source>-- Scripts generate to directory %1 successfully</source>
+        <translation>-- Generering av skript till bibliotek %1 gick bra</translation>
+    </message>
+</context>
+<context>
+    <name>toScriptUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&amp;Source</source>
+        <translation>K&amp;älla</translation>
+    </message>
+    <message>
+        <source>Connection</source>
+        <translation>Anslutning</translation>
+    </message>
+    <message>
+        <source>Schema</source>
+        <translation>Schema</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Alla</translation>
+    </message>
+    <message>
+        <source>Objects</source>
+        <translation>Objekt</translation>
+    </message>
+    <message>
+        <source>&amp;Include objects</source>
+        <translation>&amp;Inkludera objekt</translation>
+    </message>
+    <message>
+        <source>&amp;Destination</source>
+        <translation>&amp;Destination</translation>
+    </message>
+    <message>
+        <source>&amp;Options</source>
+        <translation>&amp;Inställningar</translation>
+    </message>
+    <message>
+        <source>Compare</source>
+        <translation>Jäämför</translation>
+    </message>
+    <message>
+        <source>Compare two databases or schemas</source>
+        <translation>Jämför två databaser eller scheman</translation>
+    </message>
+    <message>
+        <source>Extract</source>
+        <translation>Extrahera</translation>
+    </message>
+    <message>
+        <source>Extract script to recreate database objects.</source>
+        <translation>Extrahera skript för att återskapa databasobjekt.</translation>
+    </message>
+    <message>
+        <source>Include code specification</source>
+        <translation>Includera kodspecifikation</translation>
+    </message>
+    <message>
+        <source>Include storage specification</source>
+        <translation>Includera lagringsspecifikation</translation>
+    </message>
+    <message>
+        <source>Include content of tables</source>
+        <translation>Includera innehållet i tabeller</translation>
+    </message>
+    <message>
+        <source>Include parallel specification</source>
+        <translation>Includera parallell specifikation</translation>
+    </message>
+    <message>
+        <source>Include partition specification</source>
+        <translation>Includera partitionspecifikation</translation>
+    </message>
+    <message>
+        <source>Same</source>
+        <translation>Samma</translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation>Ingen</translation>
+    </message>
+    <message>
+        <source>Generated schema</source>
+        <translation>Generera schema</translation>
+    </message>
+    <message>
+        <source>Select the schema to generate in script</source>
+        <translation>Välj vilket schema som skall genereras i skript</translation>
+    </message>
+    <message>
+        <source>Include indexes</source>
+        <translation>Includera index</translation>
+    </message>
+    <message>
+        <source>Generate prompts</source>
+        <translation>Generera prompter</translation>
+    </message>
+    <message>
+        <source>Generate prompts to display progress in SQLPlus</source>
+        <translation>Generera prompter som visar körningen i SQLPlus</translation>
+    </message>
+    <message>
+        <source>Include comments</source>
+        <translation>Includera kommentarer</translation>
+    </message>
+    <message>
+        <source>Generate header</source>
+        <translation>Generera huvud</translation>
+    </message>
+    <message>
+        <source>Generate header at the top of the script</source>
+        <translation>Generera huvud i toppen av skriptet</translation>
+    </message>
+    <message>
+        <source>Include grants</source>
+        <translation>Includera rättigheter</translation>
+    </message>
+    <message>
+        <source>Include constraints</source>
+        <translation>Includera constraints</translation>
+    </message>
+    <message>
+        <source>Include DDL</source>
+        <translation>Includera DDL</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Sök</translation>
+    </message>
+    <message>
+        <source>Migrate</source>
+        <translation>Migrera</translation>
+    </message>
+    <message>
+        <source>Create database scripts to convert schema or database from source to destination</source>
+        <translation>Skapa databasskript som konverterar schema eller databas från källa till destination</translation>
+    </message>
+    <message>
+        <source>Report</source>
+        <translation>Rapport</translation>
+    </message>
+    <message>
+        <source>&amp;Search</source>
+        <translation>&amp;Sök</translation>
+    </message>
+    <message>
+        <source>Contain any words</source>
+        <translation>Innehåller valfritt ord</translation>
+    </message>
+    <message>
+        <source>Contain all words</source>
+        <translation>Innehåller alla ord</translation>
+    </message>
+    <message>
+        <source>RegExp</source>
+        <translation>RegExp</translation>
+    </message>
+    <message>
+        <source>Exact match</source>
+        <translation>Exakt träff</translation>
+    </message>
+    <message>
+        <source>Configuration</source>
+        <translation>Konfiguration</translation>
+    </message>
+    <message>
+        <source>Script Resize</source>
+        <translation>Ändra storlek</translation>
+    </message>
+    <message>
+        <source>Don&apos;t resize</source>
+        <translation>Ändra inte storlek</translation>
+    </message>
+    <message>
+        <source>Auto resize</source>
+        <translation>Automatisk storlek</translation>
+    </message>
+    <message>
+        <source>Custom resize</source>
+        <translation>Egen storlek</translation>
+    </message>
+    <message>
+        <source>Limit</source>
+        <translation>Begränsning</translation>
+    </message>
+    <message>
+        <source>Initial</source>
+        <translation>Initial</translation>
+    </message>
+    <message>
+        <source>Next</source>
+        <translation>Nästa</translation>
+    </message>
+    <message>
+        <source>&amp;Add</source>
+        <translation>&amp;Lägg till</translation>
+    </message>
+    <message>
+        <source>&amp;Remove</source>
+        <translation>&amp;Radera</translation>
+    </message>
+    <message>
+        <source>Resize</source>
+        <translation>Ändra storlek</translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation>Resultat</translation>
+    </message>
+    <message>
+        <source>Difference</source>
+        <translation>Skillnad</translation>
+    </message>
+    <message>
+        <source>Output</source>
+        <translation>Utdata</translation>
+    </message>
+    <message>
+        <source>Output tab</source>
+        <translation>Utdata flik</translation>
+    </message>
+    <message>
+        <source>Output dir</source>
+        <translation>Till bibliotek</translation>
+    </message>
+    <message>
+        <source>Output to directory so that each object is placed in a different file with the objects file.</source>
+        <translation type="obsolete">Skriv till bibliotek så att varje objekt är placerat i enskilda filer.</translation>
+    </message>
+    <message>
+        <source>Output file</source>
+        <translation>Till fil</translation>
+    </message>
+    <message>
+        <source>Browse</source>
+        <translation>Leta</translation>
+    </message>
+    <message>
+        <source>Commit distance</source>
+        <translation>Commit avstånd</translation>
+    </message>
+    <message>
+        <source>The number of insertstatements to make between each commit (0 means whole table)b</source>
+        <translation type="obsolete">Antalet poster som skall skrivas in i databasen mellan varje commit (0 betyder hela tabellen)</translation>
+    </message>
+    <message>
+        <source>The number of insertstatements to make between each commit (0 means whole table)</source>
+        <translation>Antalet poster som skall skrivas in i databasen mellan varje commit (0 betyder hela tabellen)</translation>
+    </message>
+    <message>
+        <source>Output to directory so that each object is placed in a different file.</source>
+        <translation>Skriv till bibliotek så att varje objekt är placerat i enskilda filer.</translation>
+    </message>
+</context>
+<context>
+    <name>toSearchReplace</name>
+    <message>
+        <source>No more matches found</source>
+        <translation>Inga mer träffar funna</translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <comment>Search|Help</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+R</source>
+        <comment>Edit|Replace</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSearchReplaceUI</name>
+    <message>
+        <source>Search &amp; Replace</source>
+        <translation>Sök &amp; Ersätt</translation>
+    </message>
+    <message>
+        <source>&amp;Search Top</source>
+        <translation>S&amp;ök Från Början</translation>
+    </message>
+    <message>
+        <source>Search &amp;Next</source>
+        <translation>Sök &amp;Nästa</translation>
+    </message>
+    <message>
+        <source>&amp;Replace</source>
+        <translation>&amp;Ersätt</translation>
+    </message>
+    <message>
+        <source>Replace &amp;All</source>
+        <translation>Ersätt &amp;Alla</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Stäng</translation>
+    </message>
+    <message>
+        <source>Search</source>
+        <translation>Sök</translation>
+    </message>
+    <message>
+        <source>Exact</source>
+        <translation>Exakt</translation>
+    </message>
+    <message>
+        <source>Match text exactly as written</source>
+        <translation>Sök text exakt som skriven</translation>
+    </message>
+    <message>
+        <source>Match Word</source>
+        <translation>Enbart Hela Ord</translation>
+    </message>
+    <message>
+        <source>Only match whole words</source>
+        <translation>Hitta bara hela ord</translation>
+    </message>
+    <message>
+        <source>Ignore Case</source>
+        <translation>Ignorera Versaler</translation>
+    </message>
+    <message>
+        <source>RegExp</source>
+        <translation>RegExp</translation>
+    </message>
+    <message>
+        <source>Use RegExp semantics for matching (See Qt documentation)</source>
+        <translation>Använd RegExp semantik för träffar (Se Qt dokumentation)</translation>
+    </message>
+    <message>
+        <source>Replace</source>
+        <translation>Ersätt</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurity</name>
+    <message>
+        <source>Security manager</source>
+        <translation>Säkerhetshanterare</translation>
+    </message>
+    <message>
+        <source>Update user and role list</source>
+        <translation>Updatera användar och roll lista</translation>
+    </message>
+    <message>
+        <source>Save changes</source>
+        <translation>Spara ändringar</translation>
+    </message>
+    <message>
+        <source>Remove user/role</source>
+        <translation>Radera användare/roll</translation>
+    </message>
+    <message>
+        <source>Add new user</source>
+        <translation>Lägg till ny användare</translation>
+    </message>
+    <message>
+        <source>Add new role</source>
+        <translation>Lägg till ny roll</translation>
+    </message>
+    <message>
+        <source>Copy current user or role</source>
+        <translation>Kopiera nuvarande användare eller roll</translation>
+    </message>
+    <message>
+        <source>Display SQL needed to make current changes</source>
+        <translation>Visa SQL som krävs för att genomföra ändringar</translation>
+    </message>
+    <message>
+        <source>Users/Roles</source>
+        <translation>Användare/Roller</translation>
+    </message>
+    <message>
+        <source>&amp;General</source>
+        <translation>Allm&amp;änt</translation>
+    </message>
+    <message>
+        <source>&amp;Roles</source>
+        <translation>&amp;Roller</translation>
+    </message>
+    <message>
+        <source>&amp;System Privileges</source>
+        <translation>&amp;System Privilegier</translation>
+    </message>
+    <message>
+        <source>&amp;Object Privileges</source>
+        <translation>&amp;Objekt Privilegier</translation>
+    </message>
+    <message>
+        <source>&amp;Quota</source>
+        <translation>Utr&amp;ymme</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>&amp;Save changes</source>
+        <translation>&amp;Spara ändringar</translation>
+    </message>
+    <message>
+        <source>&amp;Remove user/role</source>
+        <translation>&amp;Radera användare/roll</translation>
+    </message>
+    <message>
+        <source>Add &amp;user</source>
+        <translation>Lägg till anv&amp;ändare</translation>
+    </message>
+    <message>
+        <source>Add &amp;role</source>
+        <translation>Lägg till &amp;roll</translation>
+    </message>
+    <message>
+        <source>&amp;Copy current</source>
+        <translation>&amp;Kopiera nuvarande</translation>
+    </message>
+    <message>
+        <source>Display SQL...</source>
+        <translation>Visa SQL...</translation>
+    </message>
+    <message>
+        <source>&amp;Security</source>
+        <translation>&amp;Säkerhet</translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation>Inga ändringar gjorda</translation>
+    </message>
+    <message>
+        <source>Save changes?</source>
+        <translation>Spara ändringar?</translation>
+    </message>
+    <message>
+        <source>Save the changes made to this user?</source>
+        <translation>Spara ändringarna gjorda på denna användare?</translation>
+    </message>
+    <message>
+        <source>Save</source>
+        <translation>Spara</translation>
+    </message>
+    <message>
+        <source>Discard</source>
+        <translation>Släng</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Invalid security ID</source>
+        <translation>Felaktig säkerhets ID</translation>
+    </message>
+    <message>
+        <source>Roles</source>
+        <translation>Roller</translation>
+    </message>
+    <message>
+        <source>Are you sure?</source>
+        <translation>Är du säker?</translation>
+    </message>
+    <message>
+        <source>The user still owns objects, add the cascade option?</source>
+        <translation>Användare äger fortfarande objekt, lägg till kaskad valet?</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Ja</translation>
+    </message>
+    <message>
+        <source>No</source>
+        <translation>Nej</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Security|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Security|Save changes</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+U</source>
+        <comment>Security|Add user</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+R</source>
+        <comment>Security|Add role</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+O</source>
+        <comment>Security|Copy current</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Security|Display SQL</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityObject</name>
+    <message>
+        <source>Object</source>
+        <translation>Objekt</translation>
+    </message>
+    <message>
+        <source>Admin</source>
+        <translation>Administratör</translation>
+    </message>
+    <message>
+        <source>ON</source>
+        <translation>PÃ…</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityQuota</name>
+    <message>
+        <source>None</source>
+        <translation>Ingen</translation>
+    </message>
+    <message>
+        <source>Unlimited</source>
+        <translation>Obegränsat</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityQuotaUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Quota Size</source>
+        <translation>Kvota Storlek</translation>
+    </message>
+    <message>
+        <source>Used Size</source>
+        <translation>Använt Utrymme</translation>
+    </message>
+    <message>
+        <source>&amp;Unlimited</source>
+        <translation>&amp;Obegränsat</translation>
+    </message>
+    <message>
+        <source>&amp;None</source>
+        <translation>&amp;Inget</translation>
+    </message>
+    <message>
+        <source>&amp;Value</source>
+        <translation>&amp;Värde</translation>
+    </message>
+    <message>
+        <source>Belongs to Resource group or has unlimited tablespace privilege</source>
+        <translation>Tillhör till resultgrupp eller har obegränsat tablespace rättigheter</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityRole</name>
+    <message>
+        <source>Passwords don&apos;t match</source>
+        <translation>Lösenord stämmer inte</translation>
+    </message>
+    <message>
+        <source>The two versions of the password doesn&apos;t match</source>
+        <translation>De två versionerna av lösenorden stämmer inte</translation>
+    </message>
+    <message>
+        <source>Don&apos;t save</source>
+        <translation>Spara inte</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityRoleGrant</name>
+    <message>
+        <source>Role name</source>
+        <translation>Rollnamn</translation>
+    </message>
+    <message>
+        <source>Admin</source>
+        <translation>Administratör</translation>
+    </message>
+    <message>
+        <source>Default</source>
+        <translation>Standard</translation>
+    </message>
+    <message>
+        <source>ON</source>
+        <translation>PÃ…</translation>
+    </message>
+    <message>
+        <source>YES</source>
+        <translation>JA</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityRoleUI</name>
+    <message>
+        <source>Form2</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Namn</translation>
+    </message>
+    <message>
+        <source>Enter Password</source>
+        <translation>Ange lösenord</translation>
+    </message>
+    <message>
+        <source>Confirm Password</source>
+        <translation>Godkänn lösenord</translation>
+    </message>
+    <message>
+        <source>&amp;Password</source>
+        <translation>L&amp;ösenord</translation>
+    </message>
+    <message>
+        <source>Role authenticated by the operating system</source>
+        <translation>Roll autentiserad av operativsystemet</translation>
+    </message>
+    <message>
+        <source>&amp;External</source>
+        <translation>&amp;Extern</translation>
+    </message>
+    <message>
+        <source>Role authenticated globally</source>
+        <translation>Roll autentiseras globalt</translation>
+    </message>
+    <message>
+        <source>&amp;Global</source>
+        <translation>&amp;Global</translation>
+    </message>
+    <message>
+        <source>No password required for role</source>
+        <translation>Inget lösenord krävs för roll</translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation>Ingen</translation>
+    </message>
+</context>
+<context>
+    <name>toSecuritySystem</name>
+    <message>
+        <source>Privilege name</source>
+        <translation>Rättighetsnamn</translation>
+    </message>
+    <message>
+        <source>Admin</source>
+        <translation>Administratör</translation>
+    </message>
+    <message>
+        <source>ON</source>
+        <translation>PÃ…</translation>
+    </message>
+    <message>
+        <source>NO</source>
+        <translation>NEJ</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityUser</name>
+    <message>
+        <source>Passwords don&apos;t match</source>
+        <translation>Lösenord stämmer ej</translation>
+    </message>
+    <message>
+        <source>The two versions of the password doesn&apos;t match</source>
+        <translation>De två lösenorden stämmer ej överens</translation>
+    </message>
+    <message>
+        <source>Don&apos;t save</source>
+        <translation>Spara inte</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurityUserUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Namn</translation>
+    </message>
+    <message>
+        <source>P&amp;rofile</source>
+        <translation>P&amp;rofil</translation>
+    </message>
+    <message>
+        <source>Enter Password</source>
+        <translation>Ange Lösenord</translation>
+    </message>
+    <message>
+        <source>Confirm Password</source>
+        <translation>Konfirmera Lösenord</translation>
+    </message>
+    <message>
+        <source>Expire Password</source>
+        <translation>Nytt Lösenord</translation>
+    </message>
+    <message>
+        <source>&amp;Password</source>
+        <translation>L&amp;ösenord</translation>
+    </message>
+    <message>
+        <source>User authenticated by the operating system</source>
+        <translation>Användare authentiserad av operativsystem</translation>
+    </message>
+    <message>
+        <source>&amp;External</source>
+        <translation>&amp;Externt</translation>
+    </message>
+    <message>
+        <source>&amp;X.500 External Name</source>
+        <translation>&amp;X.500 Externt Namn</translation>
+    </message>
+    <message>
+        <source>&amp;Global</source>
+        <translation>&amp;Global</translation>
+    </message>
+    <message>
+        <source>&amp;Temporary Tablespace</source>
+        <translation>&amp;Temporärt Tablespace</translation>
+    </message>
+    <message>
+        <source>&amp;Account Locked</source>
+        <translation>&amp;Konto LÃ¥st</translation>
+    </message>
+    <message>
+        <source>&amp;Default Tablespace</source>
+        <translation>Standar&amp;d Tablespace</translation>
+    </message>
+</context>
+<context>
+    <name>toSemaphore</name>
+    <message>
+        <source>The semaphore function &quot;%1&quot; failed</source>
+        <translation>Semaphorfunktionen &quot;%1&quot; har fallerat</translation>
+    </message>
+</context>
+<context>
+    <name>toSession</name>
+    <message>
+        <source>Session manager</source>
+        <translation>Sessionshanterare</translation>
+    </message>
+    <message>
+        <source>Update sessionlist</source>
+        <translation>Uppdatera sessionslista</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation>Alla</translation>
+    </message>
+    <message>
+        <source>No background</source>
+        <translation>Inga bakgrunds</translation>
+    </message>
+    <message>
+        <source>No system</source>
+        <translation>Inga system</translation>
+    </message>
+    <message>
+        <source>Enable timed statistics</source>
+        <translation>Slå på tidsstatestik</translation>
+    </message>
+    <message>
+        <source>Disable timed statistics</source>
+        <translation>Slå av tidsstatestik</translation>
+    </message>
+    <message>
+        <source>Disconnect selected session</source>
+        <translation>Bryt vald session</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>Session wait states</source>
+        <translation>Sessions väntelägen</translation>
+    </message>
+    <message>
+        <source>Session I/O</source>
+        <translation>Sessions I/O</translation>
+    </message>
+    <message>
+        <source>Statistics</source>
+        <translation>Statestik</translation>
+    </message>
+    <message>
+        <source>Wait events</source>
+        <translation>Väntelägen</translation>
+    </message>
+    <message>
+        <source>Connect Info</source>
+        <translation>Anslutningsinfo</translation>
+    </message>
+    <message>
+        <source>Pending Locks</source>
+        <translation>Väntande Lås</translation>
+    </message>
+    <message>
+        <source>Locked Objects</source>
+        <translation>LÃ¥sta Objekt</translation>
+    </message>
+    <message>
+        <source>Current Statement</source>
+        <translation>Nuvarande Sats</translation>
+    </message>
+    <message>
+        <source>Accessing</source>
+        <translation>Öppna objekt</translation>
+    </message>
+    <message>
+        <source>Previous Statement</source>
+        <translation>Föregående Sats</translation>
+    </message>
+    <message>
+        <source>Open Cursors</source>
+        <translation>Öppna Frågor</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>Disconnect session</source>
+        <translation>Bryt session</translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation>&amp;Ändra Uppdatering</translation>
+    </message>
+    <message>
+        <source>&amp;Session</source>
+        <translation>&amp;Session</translation>
+    </message>
+    <message>
+        <source>No access to timed statistics flags</source>
+        <translation>Inga rättigheter till tidsstatestikflaggan</translation>
+    </message>
+    <message>
+        <source>Let current transaction finish before disconnecting session?</source>
+        <translation>Låt nuvarande transaktion slutföras innan session bortkopplas?</translation>
+    </message>
+    <message>
+        <source>Commit work?</source>
+        <translation>Spara arbete?</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Ja</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;Nej</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Only active users</source>
+        <translation>Endast aktiva användare</translation>
+    </message>
+    <message>
+        <source>Exclude selected sessions</source>
+        <translation>Exkludera valda sessioner</translation>
+    </message>
+    <message>
+        <source>Select all sessions</source>
+        <translation>Välj alla sessioner</translation>
+    </message>
+    <message>
+        <source>Deselect all sessions</source>
+        <translation>Avmarkera alla sessioner</translation>
+    </message>
+    <message>
+        <source>Long ops</source>
+        <translation>LÃ¥nga operationer</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Session|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Session|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toSession:AccessedObjects</name>
+    <message>
+        <source>OWNER</source>
+        <translation>ÄGARE</translation>
+    </message>
+    <message>
+        <source>OBJECT</source>
+        <translation>OBJEKT</translation>
+    </message>
+    <message>
+        <source>TYPE</source>
+        <translation>TYP</translation>
+    </message>
+</context>
+<context>
+    <name>toSession:ConnectInfo</name>
+    <message>
+        <source>Authentication Type</source>
+        <translation>Autentiseringstyp</translation>
+    </message>
+    <message>
+        <source>Osuser</source>
+        <translation>OS användare</translation>
+    </message>
+    <message>
+        <source>Network Service Banner</source>
+        <translation>Nätverks Service Text</translation>
+    </message>
+</context>
+<context>
+    <name>toSession:LockedObject</name>
+    <message>
+        <source>Object Name</source>
+        <translation>Objektnamn</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>Locked Mode</source>
+        <translation>LÃ¥styp</translation>
+    </message>
+</context>
+<context>
+    <name>toSession:OpenCursor</name>
+    <message>
+        <source>SQL</source>
+        <translation>SQL</translation>
+    </message>
+</context>
+<context>
+    <name>toSession:SessionIO</name>
+    <message>
+        <source>Block gets</source>
+        <translation>Block hämtningar</translation>
+    </message>
+    <message>
+        <source>Consistent gets</source>
+        <translation>Konsistenta läsningar</translation>
+    </message>
+    <message>
+        <source>Physical reads</source>
+        <translation>Fysiska läsningar</translation>
+    </message>
+    <message>
+        <source>Block changes</source>
+        <translation>Blockändringar</translation>
+    </message>
+    <message>
+        <source>Consistent changes</source>
+        <translation>Konsistenta ändringar</translation>
+    </message>
+</context>
+<context>
+    <name>toSession:SessionWait</name>
+    <message>
+        <source>CPU</source>
+        <translation>CPU</translation>
+    </message>
+    <message>
+        <source>Parallel execution</source>
+        <translation>Parallell exekvering</translation>
+    </message>
+    <message>
+        <source>DB File Write</source>
+        <translation>DB Fil Skrivning</translation>
+    </message>
+    <message>
+        <source>Write Complete</source>
+        <translation>Skrivning Klar</translation>
+    </message>
+    <message>
+        <source>DB File Read</source>
+        <translation>Db Filläsning</translation>
+    </message>
+    <message>
+        <source>DB Single File Read</source>
+        <translation>DB Enkel Filläsning</translation>
+    </message>
+    <message>
+        <source>Control File I/O</source>
+        <translation>Kontrolfil I/O</translation>
+    </message>
+    <message>
+        <source>Direct I/O</source>
+        <translation>Direkt I/O</translation>
+    </message>
+    <message>
+        <source>Log file</source>
+        <translation>Logfil</translation>
+    </message>
+    <message>
+        <source>SQL*Net</source>
+        <translation>SQL*Net</translation>
+    </message>
+    <message>
+        <source>Other</source>
+        <translation>Annan</translation>
+    </message>
+</context>
+<context>
+    <name>toSessionMySQL</name>
+    <message>
+        <source>Session manager</source>
+        <translation type="unfinished">Sessionshanterare</translation>
+    </message>
+    <message>
+        <source>Update sessionlist</source>
+        <translation type="unfinished">Uppdatera sessionslista</translation>
+    </message>
+    <message>
+        <source>Only active users</source>
+        <translation type="unfinished">Endast aktiva användare</translation>
+    </message>
+    <message>
+        <source>All</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Kill selected session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation type="unfinished">Uppdatera</translation>
+    </message>
+    <message>
+        <source>Exclude selected sessions</source>
+        <translation type="unfinished">Exkludera valda sessioner</translation>
+    </message>
+    <message>
+        <source>Select all sessions</source>
+        <translation type="unfinished">Välj alla sessioner</translation>
+    </message>
+    <message>
+        <source>Deselect all sessions</source>
+        <translation type="unfinished">Avmarkera alla sessioner</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation type="unfinished">&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Session MySQL|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Kill session</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Session MySQL|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>&amp;Session</source>
+        <translation type="unfinished">&amp;Session</translation>
+    </message>
+</context>
+<context>
+    <name>toSetSessionType</name>
+    <message>
+        <source>Failed to find style %1</source>
+        <translation>Kunde inte hitta stil %1</translation>
+    </message>
+</context>
+<context>
+    <name>toSplash</name>
+    <message>
+        <source>Loading plugins</source>
+        <translation>Laddar plugins</translation>
+    </message>
+</context>
+<context>
+    <name>toStorage</name>
+    <message>
+        <source>Storage manager</source>
+        <translation>Lagringshanterare</translation>
+    </message>
+    <message>
+        <source>Update</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>Show extent view.</source>
+        <translation>Visa extentvy.</translation>
+    </message>
+    <message>
+        <source>Show tablespaces or just datafiles.</source>
+        <translation>Visa tablespaces eller bara datafiler.</translation>
+    </message>
+    <message>
+        <source>Take tablespace online</source>
+        <translation>Slå på tablespace</translation>
+    </message>
+    <message>
+        <source>Take tablespace offline</source>
+        <translation>Slå av tablespace</translation>
+    </message>
+    <message>
+        <source>Set tablespace default to logging</source>
+        <translation>Slå på loggning som standard för tablespace</translation>
+    </message>
+    <message>
+        <source>Set tablespace default to no logging</source>
+        <translation>Slå av loggning som standard för tablespace</translation>
+    </message>
+    <message>
+        <source>Allow read write access to tablespace</source>
+        <translation>Tillåt läs och skrivning till tablespace</translation>
+    </message>
+    <message>
+        <source>Set tablespace to read only</source>
+        <translation>Tillåt endast läsning för tablespace</translation>
+    </message>
+    <message>
+        <source>Modify tablespace</source>
+        <translation>Andra tablespace</translation>
+    </message>
+    <message>
+        <source>Modify file</source>
+        <translation>Ändra fil</translation>
+    </message>
+    <message>
+        <source>Create new tablespace</source>
+        <translation>Skapa nytt tablespace</translation>
+    </message>
+    <message>
+        <source>Add datafile to tablespace</source>
+        <translation>Lägg till datafil till tablespace</translation>
+    </message>
+    <message>
+        <source>Coalesce tablespace</source>
+        <translation>Slå samma ledigt utrymme</translation>
+    </message>
+    <message>
+        <source>Move datafile</source>
+        <translation>Flytta datafil</translation>
+    </message>
+    <message>
+        <source>Owner</source>
+        <translation>Ägare</translation>
+    </message>
+    <message>
+        <source>Object</source>
+        <translation>Objekt</translation>
+    </message>
+    <message>
+        <source>Partition</source>
+        <translation>Partition</translation>
+    </message>
+    <message>
+        <source>Extents</source>
+        <translation>Antal Extent</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>Tablespace online</source>
+        <translation>Tablespace påslaget</translation>
+    </message>
+    <message>
+        <source>Tablespace offline</source>
+        <translation>Tablespace avslaget</translation>
+    </message>
+    <message>
+        <source>Default logging</source>
+        <translation>Standard loggning</translation>
+    </message>
+    <message>
+        <source>Default not logging</source>
+        <translation>Standard ej loggande</translation>
+    </message>
+    <message>
+        <source>Read write access</source>
+        <translation>Skriv &amp;&amp; Läs</translation>
+    </message>
+    <message>
+        <source>Read only access</source>
+        <translation>Endast läsning</translation>
+    </message>
+    <message>
+        <source>Modify tablespace...</source>
+        <translation>Ändra tablespace...</translation>
+    </message>
+    <message>
+        <source>Modify datafile...</source>
+        <translation>Ändra datafil...</translation>
+    </message>
+    <message>
+        <source>New tablespace...</source>
+        <translation>Nytt tablespace...</translation>
+    </message>
+    <message>
+        <source>Add datafile...</source>
+        <translation>Lägg till datafil...</translation>
+    </message>
+    <message>
+        <source>Move datafile...</source>
+        <translation>Flytta datafil...</translation>
+    </message>
+    <message>
+        <source>&amp;Storage</source>
+        <translation>&amp;Lagring</translation>
+    </message>
+    <message>
+        <source>Select mode to take tablespace %1 offline.</source>
+        <translation>Välj sätt att slå av tablespace %1.</translation>
+    </message>
+    <message>
+        <source>Normal</source>
+        <translation>Normal</translation>
+    </message>
+    <message>
+        <source>Temporary</source>
+        <translation>Tillfällig</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Blocks</source>
+        <translation>Block</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Storage|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDatafile</name>
+    <message>
+        <source>Create datafile</source>
+        <translation>Skapa datafil</translation>
+    </message>
+    <message>
+        <source>&amp;Size</source>
+        <translation>&amp;Storlek</translation>
+    </message>
+    <message>
+        <source>&amp;Next</source>
+        <translation>&amp;Nästa</translation>
+    </message>
+    <message>
+        <source>&amp;Maximum size</source>
+        <translation>&amp;Maximal storlek</translation>
+    </message>
+    <message>
+        <source>No name available</source>
+        <translation>Inget namn tillgängligt</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDatafileUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&amp;Tablespace name</source>
+        <translation>&amp;Tablespacenamn</translation>
+    </message>
+    <message>
+        <source>&amp;Filename</source>
+        <translation>&amp;Filnamn</translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation>&amp;Leta</translation>
+    </message>
+    <message>
+        <source>Auto extend</source>
+        <translation>Autoutöka</translation>
+    </message>
+    <message>
+        <source>&amp;Auto extend datafile</source>
+        <translation>&amp;Autoallokera datafil</translation>
+    </message>
+    <message>
+        <source>&amp;Unlimited max size</source>
+        <translation>&amp;Obegränsad maxstorlek</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDefinition</name>
+    <message>
+        <source>&amp;Initial size</source>
+        <translation>&amp;Initial storlek</translation>
+    </message>
+    <message>
+        <source>&amp;Next size</source>
+        <translation>&amp;Nästa storlek</translation>
+    </message>
+    <message>
+        <source>&amp;Size</source>
+        <translation>&amp;Storlek</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDefinitionUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Optimal allocation of extents. Will free unused extents down to specified value</source>
+        <translation>Optimal allokering av extent. Kommer frigöra oanvända extent new till angiver värde</translation>
+    </message>
+    <message>
+        <source>&amp;Extents</source>
+        <translation>&amp;Extent</translation>
+    </message>
+    <message>
+        <source>&amp;Maximum extents</source>
+        <translation>&amp;Max antal extent</translation>
+    </message>
+    <message>
+        <source>Maximum number of extents to allocate for an object</source>
+        <translation>Maximalt antal extent som allokeras för ett objekt</translation>
+    </message>
+    <message>
+        <source>&amp;Initial size</source>
+        <translation>&amp;Initial storlek</translation>
+    </message>
+    <message>
+        <source>Number of extents to initially allocate</source>
+        <translation>Antal extent som skall allokeras från början</translation>
+    </message>
+    <message>
+        <source>&amp;Unlimited extents</source>
+        <translation>&amp;Obegränsade extent</translation>
+    </message>
+    <message>
+        <source>No limit to the number of extents to allocate if needed</source>
+        <translation>Ingen övre gräns på antal extent</translation>
+    </message>
+    <message>
+        <source>&amp;Optimal size</source>
+        <translation>&amp;Optimal storlek</translation>
+    </message>
+    <message>
+        <source>&amp;No optimal size</source>
+        <translation>I&amp;ngen optimal storlek</translation>
+    </message>
+    <message>
+        <source>&amp;Default PCT increase</source>
+        <translation>Stan&amp;dard PCT increase</translation>
+    </message>
+    <message>
+        <source>Default increase in size of next allocated extent. A size of 0 will prevent background coalesce of free space</source>
+        <translation>Stanrdard storlek att utöka storleken på varje nytt ett extent som allokeras. En storlek av 0 kommer stoppa bakgrundssammanslagning av tomt utrymme</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDialog</name>
+    <message>
+        <source>Invalid response from query</source>
+        <translation>Felaktigt svar på fråga</translation>
+    </message>
+    <message>
+        <source>Add datafile</source>
+        <translation>Lägg till datafil</translation>
+    </message>
+    <message>
+        <source>Datafile</source>
+        <translation>Datafil</translation>
+    </message>
+    <message>
+        <source>Add tablespace</source>
+        <translation>Lägg till tablespace</translation>
+    </message>
+    <message>
+        <source>Tablespace</source>
+        <translation>Tablespace</translation>
+    </message>
+    <message>
+        <source>Default Storage</source>
+        <translation>Standardlagring</translation>
+    </message>
+    <message>
+        <source>Modify datafile</source>
+        <translation>Ändra datafil</translation>
+    </message>
+    <message>
+        <source>Invalid response from query (Wanted 4, got %1 entries) for %2.%3</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>No changes made</source>
+        <translation>Inga ändringar gjorda</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageDialogUI</name>
+    <message>
+        <source>Modify tablespace</source>
+        <translation>Andra tablespace</translation>
+    </message>
+    <message>
+        <source>Display the SQL used to generate the specified object</source>
+        <translation>Visa SQL för att generera det angivna objektet</translation>
+    </message>
+    <message>
+        <source>Tab 2</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageExtent</name>
+    <message>
+        <source>Files: %1</source>
+        <translation>Filer: %1</translation>
+    </message>
+    <message>
+        <source>Extents: %1</source>
+        <translation>Extent: %1</translation>
+    </message>
+    <message>
+        <source>Blocks: %1</source>
+        <translation>Block: %1</translation>
+    </message>
+    <message>
+        <source>Blocks/line: %1</source>
+        <translation>Block/Rad: %1</translation>
+    </message>
+    <message>
+        <source>Tablespace: %1</source>
+        <translation>Tablespace: %1</translation>
+    </message>
+</context>
+<context>
+    <name>toStoragePrefsUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Storage Manager</source>
+        <translation>Lagringshanterare</translation>
+    </message>
+    <message>
+        <source>&amp;Display coalesced column</source>
+        <translation>&amp;Visa fragmenteringskolumn</translation>
+    </message>
+    <message>
+        <source>Display object &amp;extents</source>
+        <translation>Visa objekt &amp;extent</translation>
+    </message>
+    <message>
+        <source>Display object and extent list on startup.</source>
+        <translation>Visa objekt och extentlista vid start.</translation>
+    </message>
+    <message>
+        <source>Display tablespaces or just datafiles.</source>
+        <translation>Visa tablespace eller bara datafiler.</translation>
+    </message>
+    <message>
+        <source>Display graph of autoextend information instead of just free space.</source>
+        <translation>Visa graf över autoallokering information istället för bara fritt utrymme.</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageTablespace</name>
+    <message>
+        <source>&amp;Minimum Extent</source>
+        <translation>&amp;Minsta Extent</translation>
+    </message>
+    <message>
+        <source>Extent &amp;Size</source>
+        <translation>Extent &amp;Storlek</translation>
+    </message>
+</context>
+<context>
+    <name>toStorageTablespaceUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>&amp;Options</source>
+        <translation>&amp;Inställningar</translation>
+    </message>
+    <message>
+        <source>&amp;Logging</source>
+        <translation>&amp;Loggning</translation>
+    </message>
+    <message>
+        <source>Should objects created in this tablespace be logging by default</source>
+        <translation>Skall objekt som skapas i detta tablespace loggas som standard</translation>
+    </message>
+    <message>
+        <source>&amp;Online</source>
+        <translation>P&amp;Ã¥slaget</translation>
+    </message>
+    <message>
+        <source>Should tablespace be online at the time of creation</source>
+        <translation>Skall tablespacet vara påslaget när det skapas</translation>
+    </message>
+    <message>
+        <source>&amp;Permanent</source>
+        <translation>&amp;Permanent</translation>
+    </message>
+    <message>
+        <source>Should objects in this tablespace be permanent after the end of the session</source>
+        <translation>Skall objekt i detta tablespace vara kvar efter slutet av sessionen</translation>
+    </message>
+    <message>
+        <source>&amp;Default storage</source>
+        <translation>Stan&amp;dardlagring</translation>
+    </message>
+    <message>
+        <source>Specify default storage clause (In separate tab)</source>
+        <translation>Ange standard lagrings (I separat flik)</translation>
+    </message>
+    <message>
+        <source>&amp;Extent allocation</source>
+        <translation>&amp;Extent allokering</translation>
+    </message>
+    <message>
+        <source>&amp;Dictionary</source>
+        <translation>&amp;Uppslagstabeller</translation>
+    </message>
+    <message>
+        <source>Manage tablespace extents using dictionary tables</source>
+        <translation>Hantera tablespace extents med hjälp av uppslagstabeller</translation>
+    </message>
+    <message>
+        <source>Local &amp;autoallocation</source>
+        <translation>Lokal &amp;autoallokering</translation>
+    </message>
+    <message>
+        <source>Specify how space is allocated in the tablespace</source>
+        <translation>Ange hur utrymme allokeras i tablespacet</translation>
+    </message>
+    <message>
+        <source>Local &amp;uniform</source>
+        <translation>Lokal &amp;uniform</translation>
+    </message>
+    <message>
+        <source>The tablespace is locally managed with fixed extent sizes of specified size</source>
+        <translation>Tablespacet hanteras lokalt med en fast extentstorlek</translation>
+    </message>
+</context>
+<context>
+    <name>toSyntaxAnalyzer</name>
+    <message>
+        <source>Wrong format of color in setings</source>
+        <translation>Fel format på fär i inställningar</translation>
+    </message>
+    <message>
+        <source>Unknown type</source>
+        <translation>Okänd typ</translation>
+    </message>
+</context>
+<context>
+    <name>toSyntaxSetup</name>
+    <message>
+        <source>Unknown variable</source>
+        <translation>Okänd variabel</translation>
+    </message>
+    <message>
+        <source>Unknown color name %1</source>
+        <translation>Okänt färgnamn %1</translation>
+    </message>
+</context>
+<context>
+    <name>toSyntaxSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Options</source>
+        <translation>Inställningar</translation>
+    </message>
+    <message>
+        <source>&amp;Keyword upper</source>
+        <translation>Nyc&amp;kelord Versaler</translation>
+    </message>
+    <message>
+        <source>Convert all keywords to uppercase when displayingsyntaxhighlighted text.  Only available for monospaced fonts.</source>
+        <translation>Konvertera alla nyckelord till versaler när syntaxformatterad text visas. Bara tillgängligt för typsnitt med fast bredd.</translation>
+    </message>
+    <message>
+        <source>&amp;Code completion</source>
+        <translation>&amp;Kod komplettering</translation>
+    </message>
+    <message>
+        <source>Activate code completion in SQL editors. Not recommended on slow connections.</source>
+        <translation>Aktivera kod komplettering i SQL editorer. Inte rekommenderat på långsamma anslutningar.</translation>
+    </message>
+    <message>
+        <source>&amp;Sort completion rows</source>
+        <translation>&amp;Sortera kompletteringsrader</translation>
+    </message>
+    <message>
+        <source>Sort the available completion rows alphabetically or in the order the are.</source>
+        <translation>Sortera tillgängliga kompletteringsrader i alfabetisk ordning i stället för den ursprunglig ordningen de lästes från databasen.</translation>
+    </message>
+    <message>
+        <source>S&amp;yntax highlighting</source>
+        <translation>S&amp;yntax formattering</translation>
+    </message>
+    <message>
+        <source>Enable syntax highlighting, or use simple text editor</source>
+        <translation>Slå på syntaxformattering, eller använd en normal text editor</translation>
+    </message>
+    <message>
+        <source>&amp;Indent same as previous line</source>
+        <translation>&amp;Indentera samma som föregående</translation>
+    </message>
+    <message>
+        <source>Indent a new line in an editor to the same column as the previous line</source>
+        <translation>Indentera en ny rad i en editor till samma kolumn som den föregående raden</translation>
+    </message>
+    <message>
+        <source>Choose</source>
+        <translation>Välj</translation>
+    </message>
+    <message>
+        <source>List example</source>
+        <translation>Exempellista</translation>
+    </message>
+    <message>
+        <source>Code example</source>
+        <translation>Exempelkod</translation>
+    </message>
+    <message>
+        <source>Text example</source>
+        <translation>Exempeltext</translation>
+    </message>
+    <message>
+        <source>Filename extensions</source>
+        <translation>Filnamns ändelser</translation>
+    </message>
+    <message>
+        <source>Sy&amp;ntax components</source>
+        <translation>Syn&amp;tax komponenter</translation>
+    </message>
+    <message>
+        <source>&amp;Pick</source>
+        <translation>V&amp;älj</translation>
+    </message>
+    <message>
+        <source>Tab stop width</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Number of character width of tabstops</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplate</name>
+    <message>
+        <source>Not a toTemplate parent</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Template Toolbar</source>
+        <translation>Mall Toolbar</translation>
+    </message>
+    <message>
+        <source>Template</source>
+        <translation>Mall</translation>
+    </message>
+    <message>
+        <source>Template result</source>
+        <translation>Mallresultat</translation>
+    </message>
+    <message>
+        <source>Internal error, lastLevel &lt; 0</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateAddFileUI</name>
+    <message>
+        <source>Add template file</source>
+        <translation>Lägg till mallfil</translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation>&amp;Leta</translation>
+    </message>
+    <message>
+        <source>Canel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>&amp;File</source>
+        <translation>&amp;Fil</translation>
+    </message>
+    <message>
+        <source>&amp;Root</source>
+        <translation>&amp;Rot</translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateEdit</name>
+    <message>
+        <source>Internal error, lastLevel &lt; 0</source>
+        <translation></translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateEditUI</name>
+    <message>
+        <source>Template editor</source>
+        <translation>Malleditor</translation>
+    </message>
+    <message>
+        <source>Template</source>
+        <translation>Mall</translation>
+    </message>
+    <message>
+        <source>&amp;Description</source>
+        <translation>&amp;Beskrivning</translation>
+    </message>
+    <message>
+        <source>Description text. Can be in HTML format.</source>
+        <translation>Beskrivande text. Kan vara i HTML format.</translation>
+    </message>
+    <message>
+        <source>&amp;Preview</source>
+        <translation>&amp;Förhandsvisning</translation>
+    </message>
+    <message>
+        <source>&amp;Name</source>
+        <translation>&amp;Namn</translation>
+    </message>
+    <message>
+        <source>Name of the template.</source>
+        <translation>Namn på mallen.</translation>
+    </message>
+    <message>
+        <source>Remove the current template</source>
+        <translation>Ta bort aktuell mall</translation>
+    </message>
+    <message>
+        <source>Add new template</source>
+        <translation>Lägg till ny mall</translation>
+    </message>
+    <message>
+        <source>Preview</source>
+        <translation>Förhandsgranskning</translation>
+    </message>
+    <message>
+        <source>Preview of the description. Press the button to update</source>
+        <translation>Förhandsgranskning av beskrivning. Tryck på knappen för att uppdatera</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+</context>
+<context>
+    <name>toTemplatePrefs</name>
+    <message>
+        <source>Couldn&apos;t open file.</source>
+        <translation>Kunde inte öppna fil.</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file. Start on new file?</source>
+        <translation>Kunde inte öppna fil. Starta på ny fil?</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t write file</source>
+        <translation>Kunde inte skriva fil</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file</source>
+        <translation>Kunde inte öppna fil</translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Root</source>
+        <translation>Rot</translation>
+    </message>
+    <message>
+        <source>Filename</source>
+        <translation>Filnamn</translation>
+    </message>
+    <message>
+        <source>&amp;Add File</source>
+        <translation>&amp;Lägg till fil</translation>
+    </message>
+    <message>
+        <source>&amp;Remove File</source>
+        <translation>&amp;Radera Fil</translation>
+    </message>
+    <message>
+        <source>&amp;Edit File</source>
+        <translation>&amp;Editera Fil</translation>
+    </message>
+</context>
+<context>
+    <name>toTemplateTool</name>
+    <message>
+        <source>Template</source>
+        <translation>Mallar</translation>
+    </message>
+</context>
+<context>
+    <name>toTemporary</name>
+    <message>
+        <source>Temporary Objects</source>
+        <translation>Temporära Objekt</translation>
+    </message>
+    <message>
+        <source>Refresh list</source>
+        <translation>Uppdatera lista</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>&amp;Temporary</source>
+        <translation>&amp;Temporär</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Temporary|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toThread</name>
+    <message>
+        <source>Thread function &quot;%1&quot; failed.</source>
+        <translation>Thread function &quot;%1&quot; failer.</translation>
+    </message>
+</context>
+<context>
+    <name>toTool</name>
+    <message>
+        <source>Malformed tag in config file. Missing = on row. (%1)</source>
+        <translation>Felaktig tag i konfigurationsfil. Saknar = på rad. (%1)</translation>
+    </message>
+    <message>
+        <source>Unknown escape character in string (Only \\ and \n recognised)</source>
+        <translation>Okänt tecken efter \. Endast \\ och \n tillåtna</translation>
+    </message>
+    <message>
+        <source>Alert Messenger</source>
+        <translation>Alarm Meddelnden</translation>
+    </message>
+    <message>
+        <source>Backup Manager</source>
+        <translation>Backup Hanterare</translation>
+    </message>
+    <message>
+        <source>Current Session</source>
+        <translation>Nuvarande Session</translation>
+    </message>
+    <message>
+        <source>DB Extraction/Compare/Search</source>
+        <translation>DB Extrahering/Jämförelse/Sökning</translation>
+    </message>
+    <message>
+        <source>Invalid Objects</source>
+        <translation>Ogiltiga Objekt</translation>
+    </message>
+    <message>
+        <source>PL/SQL Debugger</source>
+        <translation>PL/SQL Debugger</translation>
+    </message>
+    <message>
+        <source>PL/SQL Profiler</source>
+        <translation>PL/SQL Profiler</translation>
+    </message>
+    <message>
+        <source>Password Change</source>
+        <translation>Lösenordsändring</translation>
+    </message>
+    <message>
+        <source>Rollback Segments</source>
+        <translation>Rollback Segment</translation>
+    </message>
+    <message>
+        <source>SGA Trace</source>
+        <translation>SGA Spårning</translation>
+    </message>
+    <message>
+        <source>SQL Output</source>
+        <translation>SQL Utdata</translation>
+    </message>
+    <message>
+        <source>SQL Template</source>
+        <translation>SQL Mallar</translation>
+    </message>
+    <message>
+        <source>SQL Worksheet</source>
+        <translation>SQL Arbetsblad</translation>
+    </message>
+    <message>
+        <source>Schema Browser</source>
+        <translation>Schema Utforskare</translation>
+    </message>
+    <message>
+        <source>Security Manager</source>
+        <translation>Säkerhets Hanterare</translation>
+    </message>
+    <message>
+        <source>Server Tuning</source>
+        <translation>Server Trimning</translation>
+    </message>
+    <message>
+        <source>Sessions</source>
+        <translation>Sessioner</translation>
+    </message>
+    <message>
+        <source>Statistics Manager</source>
+        <translation>Statestik Hanterare</translation>
+    </message>
+    <message>
+        <source>Storage Manager</source>
+        <translation>Lagrings Hanterare</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t save empty value at key %1</source>
+        <translation>Kunde inte spara tomt värde på nyckel %1</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t save %1 value at key %2</source>
+        <translation>Kunde inte spara värdet %1 på nyckel %2</translation>
+    </message>
+</context>
+<context>
+    <name>toToolSettingUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Tool</source>
+        <translation>Verktyg</translation>
+    </message>
+    <message>
+        <source>&amp;Default tool</source>
+        <translation>&amp;Standardverktyg</translation>
+    </message>
+    <message>
+        <source>Select the default tool to pop up when opening a new connection.</source>
+        <translation>Välj standardverktyg att visa när ny anslutning startas.</translation>
+    </message>
+    <message>
+        <source>&amp;Enabled tools</source>
+        <translation>&amp;PÃ¥slagna verktyg</translation>
+    </message>
+    <message>
+        <source>Select which tools should show up in the menu and toolbar.</source>
+        <translation>Välj vilka verktyg som skall visas i meny och verktygsrad.</translation>
+    </message>
+    <message>
+        <source>You must restart TOra for any of these changes to have effect.</source>
+        <translation type="obsolete">Du måste starta om TOra för att dessa ändringar skall ha effekt.</translation>
+    </message>
+    <message>
+        <source>You must restart for any of these changes to have effect.</source>
+        <translation>Du måste starta om TOra för att dessa ändringar skall ha effekt.</translation>
+    </message>
+</context>
+<context>
+    <name>toTuning</name>
+    <message>
+        <source>Enable all tuning statistics</source>
+        <translation>Så på all trimnings statestik</translation>
+    </message>
+    <message>
+        <source>Are you sure you want to enable all tuning features.
+This can put heavy strain on a database and unless you
+are the DBA you probably don&apos;t want this. Selecting
+no here will give you the option to enable or disable
+tabs individually as they are needed.</source>
+        <translation>Är du säker att du vill slå på alla trimnings funktioner.
+Detta kan lägga hård last på en databas och om du
+inte är DBA vill du troligtvis inte göra detta. Om
+du väljer nej här kan du välja att slå av eller på flikarna
+individuellt i den mån de behövs.</translation>
+    </message>
+    <message>
+        <source>Yes</source>
+        <translation>Ja</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;Nej</translation>
+    </message>
+    <message>
+        <source>Server Tuning</source>
+        <translation>Server Trimning</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>Enable and disable tuning tabs</source>
+        <translation>Slå av eller på trimnings flikar</translation>
+    </message>
+    <message>
+        <source>&amp;Overview</source>
+        <translation>&amp;Översikt</translation>
+    </message>
+    <message>
+        <source>Wrong format of name on chart (%1).</source>
+        <translation>Fel format på namn av diagram (%1).</translation>
+    </message>
+    <message>
+        <source>Wait events</source>
+        <translation>Väntelägen</translation>
+    </message>
+    <message>
+        <source>&amp;File I/O</source>
+        <translation>&amp;Fil I/O</translation>
+    </message>
+    <message>
+        <source>Indicator</source>
+        <translation>Indikatorer</translation>
+    </message>
+    <message>
+        <source>Value</source>
+        <translation>Värde</translation>
+    </message>
+    <message>
+        <source>Reference</source>
+        <translation>Referens</translation>
+    </message>
+    <message>
+        <source>&amp;Indicators</source>
+        <translation>&amp;Indikatorer</translation>
+    </message>
+    <message>
+        <source>&amp;Statistics</source>
+        <translation>&amp;Statestik</translation>
+    </message>
+    <message>
+        <source>&amp;Parameters</source>
+        <translation>&amp;Parametrar</translation>
+    </message>
+    <message>
+        <source>&amp;Blocking locks</source>
+        <translation>&amp;Blockerande lås</translation>
+    </message>
+    <message>
+        <source>Library C&amp;ache</source>
+        <translation>Library C&amp;ache</translation>
+    </message>
+    <message>
+        <source>Control Files</source>
+        <translation>Kontrolfiler</translation>
+    </message>
+    <message>
+        <source>Optio&amp;ns</source>
+        <translation>&amp;Val</translation>
+    </message>
+    <message>
+        <source>&amp;Licenses</source>
+        <translation>&amp;Licenser</translation>
+    </message>
+    <message>
+        <source>&amp;Refresh</source>
+        <translation>&amp;Uppdatera</translation>
+    </message>
+    <message>
+        <source>&amp;Change Refresh</source>
+        <translation>&amp;Ändra Uppdatering</translation>
+    </message>
+    <message>
+        <source>&amp;Tuning</source>
+        <translation>&amp;Trimning</translation>
+    </message>
+    <message>
+        <source> blocks/s</source>
+        <translation>block/s</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Tuning|Refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Tuning|Change refresh</comment>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:Charts:4BAClients</name>
+    <message>
+        <source>Active</source>
+        <translation>Aktiva</translation>
+    </message>
+    <message>
+        <source>Inactive</source>
+        <translation>Inaktiva</translation>
+    </message>
+    <message>
+        <source>System</source>
+        <translation>System</translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:Charts:6LNExecution</name>
+    <message>
+        <source>Execute</source>
+        <translation>Exekvera</translation>
+    </message>
+    <message>
+        <source>Hard parse</source>
+        <translation>HÃ¥rd parsning</translation>
+    </message>
+    <message>
+        <source>Parse</source>
+        <translation>Parse</translation>
+    </message>
+    <message>
+        <source>Calls</source>
+        <translation>Anrop</translation>
+    </message>
+    <message>
+        <source>Commit</source>
+        <translation>Commit</translation>
+    </message>
+    <message>
+        <source>Rollbacks</source>
+        <translation>Rollbacks</translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:ControlFileRecords</name>
+    <message>
+        <source>Type</source>
+        <translation>Typ</translation>
+    </message>
+    <message>
+        <source>Size</source>
+        <translation>Storlek</translation>
+    </message>
+    <message>
+        <source>Total Records</source>
+        <translation>Totala Poster</translation>
+    </message>
+    <message>
+        <source>Used Records</source>
+        <translation>Använda Poster</translation>
+    </message>
+    <message>
+        <source>Allocated</source>
+        <translation>Allokerade</translation>
+    </message>
+    <message>
+        <source>Used</source>
+        <translation>Använda</translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:LibraryCache</name>
+    <message>
+        <source>Namespace</source>
+        <translation>Namespace</translation>
+    </message>
+    <message>
+        <source>Gets</source>
+        <translation>Läsningar</translation>
+    </message>
+    <message>
+        <source>Get Hits</source>
+        <translation>Lästräffar</translation>
+    </message>
+    <message>
+        <source>Ratio</source>
+        <translation>Ratio</translation>
+    </message>
+    <message>
+        <source>Pins</source>
+        <translation>Pins</translation>
+    </message>
+    <message>
+        <source>Pin Hits</source>
+        <translation>Pinträffar</translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:License</name>
+    <message>
+        <source>Sessions Max</source>
+        <translation>Session Max</translation>
+    </message>
+    <message>
+        <source>Sessions Warning</source>
+        <translation>Session Varning</translation>
+    </message>
+    <message>
+        <source>Sessions Current</source>
+        <translation>Session Nuvarande</translation>
+    </message>
+    <message>
+        <source>Sessions Highwater</source>
+        <translation>Flesta Sessioner</translation>
+    </message>
+    <message>
+        <source>Users Max</source>
+        <translation>Max Användare</translation>
+    </message>
+</context>
+<context>
+    <name>toTuning:Options</name>
+    <message>
+        <source>Parameter</source>
+        <translation>Parameter</translation>
+    </message>
+    <message>
+        <source>Enabled</source>
+        <translation>PÃ¥slagen</translation>
+    </message>
+</context>
+<context>
+    <name>toTuningFileIO</name>
+    <message>
+        <source>File I/O</source>
+        <translation>Fil I/O</translation>
+    </message>
+    <message>
+        <source>File timing</source>
+        <translation>Filtider</translation>
+    </message>
+    <message>
+        <source>Tablespace I/O</source>
+        <translation>Tablespace I/O</translation>
+    </message>
+    <message>
+        <source>Tablespace timing</source>
+        <translation>Tablespacetider</translation>
+    </message>
+    <message>
+        <source>Reads</source>
+        <translation>Läsningar</translation>
+    </message>
+    <message>
+        <source>Blocks Read</source>
+        <translation>Block Lästa</translation>
+    </message>
+    <message>
+        <source>Writes</source>
+        <translation>Skrivningar</translation>
+    </message>
+    <message>
+        <source>Blocks Written</source>
+        <translation>Block Skrivna</translation>
+    </message>
+    <message>
+        <source>Average</source>
+        <translation>Medel</translation>
+    </message>
+    <message>
+        <source>Minimum</source>
+        <translation>Minimum</translation>
+    </message>
+    <message>
+        <source>Maximum Read</source>
+        <translation>Maximum Läsning</translation>
+    </message>
+    <message>
+        <source>Maximum Write</source>
+        <translation>Maximum Skrivning</translation>
+    </message>
+    <message>
+        <source>blocks/s</source>
+        <translation>block/s</translation>
+    </message>
+</context>
+<context>
+    <name>toTuningOverview</name>
+    <message>
+        <source>&lt; Archive write</source>
+        <translation>&lt; Arkivskrivning</translation>
+    </message>
+    <message>
+        <source>blocks/s</source>
+        <translation>block/s</translation>
+    </message>
+    <message>
+        <source>Hitrate</source>
+        <translation>Träffratio</translation>
+    </message>
+    <message>
+        <source>&lt; Client input</source>
+        <translation>&lt; Klient in</translation>
+    </message>
+    <message>
+        <source>Client output &gt;</source>
+        <translation>Klient ut &gt;</translation>
+    </message>
+    <message>
+        <source>Executes &gt;</source>
+        <translation>Exekveringar &gt;</translation>
+    </message>
+    <message>
+        <source>Log writer &gt;</source>
+        <translation>Logg skrivare &gt;</translation>
+    </message>
+    <message>
+        <source>Buffer changed &gt;</source>
+        <translation>Ändrade buffrar &gt;</translation>
+    </message>
+    <message>
+        <source>&lt; Buffer gets</source>
+        <translation>&lt; Hämtade buffrar</translation>
+    </message>
+    <message>
+        <source>Parse &gt;</source>
+        <translation>Tolkningar &gt;</translation>
+    </message>
+    <message>
+        <source>&lt; Physical read</source>
+        <translation>&lt; Fysiska läsningar</translation>
+    </message>
+    <message>
+        <source>Physical write &gt;</source>
+        <translation>Fysiska skrivningar &gt;</translation>
+    </message>
+    <message>
+        <source>Redo entries &gt;</source>
+        <translation>Redo poster &gt;</translation>
+    </message>
+    <message>
+        <source>Timescale</source>
+        <translation>Tidskala</translation>
+    </message>
+    <message>
+        <source> blocks/s</source>
+        <translation>block/s</translation>
+    </message>
+</context>
+<context>
+    <name>toTuningOverviewUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>SGA</source>
+        <translation>SGA</translation>
+    </message>
+    <message>
+        <source>Buffer Cache</source>
+        <translation>Buffer Cache</translation>
+    </message>
+    <message>
+        <source>TextLabel3</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Total</source>
+        <translation>Totalt</translation>
+    </message>
+    <message>
+        <source>Redo Buffer</source>
+        <translation>Redo Buffer</translation>
+    </message>
+    <message>
+        <source>Shared Pool</source>
+        <translation>Gemensam Pool</translation>
+    </message>
+    <message>
+        <source>Archive logs</source>
+        <translation>Arkivloggar</translation>
+    </message>
+    <message>
+        <source>Files/Size</source>
+        <translation>Filer/Storlek</translation>
+    </message>
+    <message>
+        <source>Files</source>
+        <translation>Filer</translation>
+    </message>
+    <message>
+        <source>Datafiles</source>
+        <translation>Datafiler</translation>
+    </message>
+    <message>
+        <source>Used/Total</source>
+        <translation>Använt/Totalt</translation>
+    </message>
+    <message>
+        <source>Tablespaces</source>
+        <translation>Tablespace</translation>
+    </message>
+    <message>
+        <source>Redo Logs</source>
+        <translation>Redologgar</translation>
+    </message>
+    <message>
+        <source>Active/Total</source>
+        <translation>Aktiva/Totala</translation>
+    </message>
+    <message>
+        <source>Active group</source>
+        <translation>Aktiv grupp</translation>
+    </message>
+    <message>
+        <source>Processes</source>
+        <translation>Processer</translation>
+    </message>
+    <message>
+        <source>Server</source>
+        <translation>Server</translation>
+    </message>
+    <message>
+        <source>Shared</source>
+        <translation>Gemensam</translation>
+    </message>
+    <message>
+        <source>Dispatchers</source>
+        <translation>Dispatcher</translation>
+    </message>
+    <message>
+        <source>Parallel</source>
+        <translation>Parallell</translation>
+    </message>
+    <message>
+        <source>Dedicated</source>
+        <translation>Tillägnad</translation>
+    </message>
+    <message>
+        <source>Background</source>
+        <translation>Bakgrund</translation>
+    </message>
+    <message>
+        <source>Clients</source>
+        <translation>Klienter</translation>
+    </message>
+    <message>
+        <source>Active</source>
+        <translation>Aktiva</translation>
+    </message>
+    <message>
+        <source>TextLabel5</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Send to client</source>
+        <translation>Sänd till klient</translation>
+    </message>
+    <message>
+        <source>Send from client</source>
+        <translation>Sänd från klient</translation>
+    </message>
+</context>
+<context>
+    <name>toTuningSettingUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Server tuning</source>
+        <translation>Server trimning</translation>
+    </message>
+    <message>
+        <source>Available tabs</source>
+        <translation>Tillgängliga flikar</translation>
+    </message>
+    <message>
+        <source>&amp;Enabled background views</source>
+        <translation>&amp;PÃ¥slagna bakgrundsvyer</translation>
+    </message>
+    <message>
+        <source>Select which views collect data in the background that should be run.</source>
+        <translation>Välj vilka vyer som hämtar data i bakgrunden som skall köra.</translation>
+    </message>
+</context>
+<context>
+    <name>toVisualize</name>
+    <message>
+        <source>Data visualization</source>
+        <translation>Data visualisering</translation>
+    </message>
+    <message>
+        <source>Bar chart</source>
+        <translation>Stapeldiagram</translation>
+    </message>
+    <message>
+        <source>Line chart</source>
+        <translation>Linjediagram</translation>
+    </message>
+    <message>
+        <source>Pie chart</source>
+        <translation>Pajdiagram</translation>
+    </message>
+    <message>
+        <source>Display legend</source>
+        <translation>Visa titlar</translation>
+    </message>
+    <message>
+        <source>Display grid</source>
+        <translation>Visa rutnät</translation>
+    </message>
+    <message>
+        <source>Display axis legend</source>
+        <translation>Visa axeltitlar</translation>
+    </message>
+    <message>
+        <source>Title columns</source>
+        <translation>Titelkolumner</translation>
+    </message>
+    <message>
+        <source>Number of columns to use as title</source>
+        <translation>Antal kolumner att använda som titel</translation>
+    </message>
+    <message>
+        <source>Update chart</source>
+        <translation>Uppdatera diagram</translation>
+    </message>
+</context>
+<context>
+    <name>toWaitEvents</name>
+    <message>
+        <source>Server Tuning</source>
+        <translation>Server Trimning</translation>
+    </message>
+    <message>
+        <source>Display</source>
+        <translation>Visa</translation>
+    </message>
+    <message>
+        <source>Time</source>
+        <translation>Tid</translation>
+    </message>
+    <message>
+        <source>Count</source>
+        <translation>Antal</translation>
+    </message>
+    <message>
+        <source>Color</source>
+        <translation>Färg</translation>
+    </message>
+    <message>
+        <source>Wait type</source>
+        <translation>Väntetyp</translation>
+    </message>
+    <message>
+        <source>Delta (ms/s)</source>
+        <translation>Delta (ms/s)</translation>
+    </message>
+    <message>
+        <source>Total (ms)</source>
+        <translation>Totalt (ms)</translation>
+    </message>
+    <message>
+        <source>Delta (1/s)</source>
+        <translation>Delta (1/s)</translation>
+    </message>
+    <message>
+        <source>Total</source>
+        <translation>Totalt</translation>
+    </message>
+    <message>
+        <source>System wait events</source>
+        <translation>System väntehändelser</translation>
+    </message>
+    <message>
+        <source>ms/s</source>
+        <translation>ms/s</translation>
+    </message>
+    <message>
+        <source>System wait events count</source>
+        <translation>System väntehändelseantal</translation>
+    </message>
+    <message>
+        <source>waits/s</source>
+        <translation>antal/s</translation>
+    </message>
+    <message>
+        <source>Internal error, can&apos;t find (%1) in usedMap</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Absolute system wait events
+Total %1%2</source>
+        <translation>Abslut systemväntehändelser
+Totalt %1%2</translation>
+    </message>
+    <message>
+        <source>Delta system wait events
+Total %1%2</source>
+        <translation>Delta systemväntehändelser
+Totalt %1%2</translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheet</name>
+    <message>
+        <source>SQL worksheet</source>
+        <translation>SQL Arbetsblad</translation>
+    </message>
+    <message>
+        <source>Execute current statement</source>
+        <translation>Exekvera nuvarand sats</translation>
+    </message>
+    <message>
+        <source>Execute all statements</source>
+        <translation>Exekvera alla satser</translation>
+    </message>
+    <message>
+        <source>Step through statements</source>
+        <translation>Stega genom satser</translation>
+    </message>
+    <message>
+        <source>Reexecute Last Statement</source>
+        <translation>Kör Om Senaste Sats</translation>
+    </message>
+    <message>
+        <source>Stop execution</source>
+        <translation>Stanna exekvering</translation>
+    </message>
+    <message>
+        <source>&amp;Result</source>
+        <translation>&amp;Resultat</translation>
+    </message>
+    <message>
+        <source>E&amp;xecution plan</source>
+        <translation>E&amp;xekveringsplan</translation>
+    </message>
+    <message>
+        <source>&amp;Visualize</source>
+        <translation>&amp;Visualisera</translation>
+    </message>
+    <message>
+        <source>&amp;Information</source>
+        <translation>&amp;Information</translation>
+    </message>
+    <message>
+        <source>Worksheet Statistics</source>
+        <translation>Arbetsblad Statistik</translation>
+    </message>
+    <message>
+        <source>Save statistics for later analysis</source>
+        <translation>Spara statestik för senare analys</translation>
+    </message>
+    <message>
+        <source>Wait states</source>
+        <translation>Väntelägen</translation>
+    </message>
+    <message>
+        <source>I/O</source>
+        <translation>I/O</translation>
+    </message>
+    <message>
+        <source>blocks/s</source>
+        <translation>block/s</translation>
+    </message>
+    <message>
+        <source>&amp;Statistics</source>
+        <translation>&amp;Statestik</translation>
+    </message>
+    <message>
+        <source>&amp;Logging</source>
+        <translation>&amp;Logg</translation>
+    </message>
+    <message>
+        <source>SQL</source>
+        <translation>SQL</translation>
+    </message>
+    <message>
+        <source>Result</source>
+        <translation>Resultat</translation>
+    </message>
+    <message>
+        <source>Timestamp</source>
+        <translation>Tid</translation>
+    </message>
+    <message>
+        <source>Duration</source>
+        <translation>Längd</translation>
+    </message>
+    <message>
+        <source>Describe under cursor</source>
+        <translation>Beskriv under markör</translation>
+    </message>
+    <message>
+        <source>Clear execution log</source>
+        <translation>Rensa exekveringslogg</translation>
+    </message>
+    <message>
+        <source>Gather session statistic of execution</source>
+        <translation>Hämta sessionsstatestik under exekvering</translation>
+    </message>
+    <message>
+        <source>Refresh</source>
+        <translation>Uppdatera</translation>
+    </message>
+    <message>
+        <source>Run current saved SQL</source>
+        <translation>Kör aktuellt sparad SQL</translation>
+    </message>
+    <message>
+        <source>Save last SQL</source>
+        <translation>Spara senaste SQL</translation>
+    </message>
+    <message>
+        <source>&amp;Execute Current</source>
+        <translation>&amp;Exekvera Aktuell</translation>
+    </message>
+    <message>
+        <source>Execute &amp;All</source>
+        <translation>Exekvera &amp;Alla</translation>
+    </message>
+    <message>
+        <source>Execute &amp;Next</source>
+        <translation>Exekvera &amp;Nästa</translation>
+    </message>
+    <message>
+        <source>Execute &amp;Newline Separated</source>
+        <translation>Exekvera &amp;Nyrad Separerad</translation>
+    </message>
+    <message>
+        <source>&amp;Reexecute Last Statement</source>
+        <translation>Kö&amp;r Senaste Sats</translation>
+    </message>
+    <message>
+        <source>&amp;Describe Under Cursor</source>
+        <translation>Beskriv Un&amp;der Markör</translation>
+    </message>
+    <message>
+        <source>&amp;Explain current statement</source>
+        <translation>Via &amp;Exekveringsplan</translation>
+    </message>
+    <message>
+        <source>&amp;Enable Statistics</source>
+        <translation>Slå På Stat&amp;estik</translation>
+    </message>
+    <message>
+        <source>&amp;Stop Execution</source>
+        <translation>&amp;Stoppa Exekvering</translation>
+    </message>
+    <message>
+        <source>Execute Saved SQL</source>
+        <translation>Exekvera Sparad SQL</translation>
+    </message>
+    <message>
+        <source>Select Saved SQL</source>
+        <translation>Välj Sparad SQL</translation>
+    </message>
+    <message>
+        <source>Edit Saved SQL...</source>
+        <translation>Editera Sparad SQL...</translation>
+    </message>
+    <message>
+        <source>Previous Log Entry</source>
+        <translation>Föregående Loggpost</translation>
+    </message>
+    <message>
+        <source>Next Log Entry</source>
+        <translation>Nästa Loggpost</translation>
+    </message>
+    <message>
+        <source>Erase &amp;Log</source>
+        <translation>Radera &amp;Logg</translation>
+    </message>
+    <message>
+        <source>W&amp;orksheet</source>
+        <translation>&amp;Arbetsblad</translation>
+    </message>
+    <message>
+        <source>Save changes to worksheet for %1</source>
+        <translation>Spara ändringar på arbetsblad för %1</translation>
+    </message>
+    <message>
+        <source>Save file</source>
+        <translation>Spara fil</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Ja</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;Nej</translation>
+    </message>
+    <message>
+        <source>Wrong number of parameters for describe</source>
+        <translation>Fel antal parametrar för beskrivning</translation>
+    </message>
+    <message>
+        <source>Ignoring SQL*Plus command</source>
+        <translation>Ignorerar SQL*Plus kommando</translation>
+    </message>
+    <message>
+        <source>Processing query</source>
+        <translation>Bearbetar fråga</translation>
+    </message>
+    <message>
+        <source>%1 rows processed</source>
+        <translation>%1 rader bearbetade</translation>
+    </message>
+    <message>
+        <source>Query executed</source>
+        <translation>Fråga exekverad</translation>
+    </message>
+    <message>
+        <source>Duration while query has been running
+
+</source>
+        <translation>Tid som frågan har kört
+
+</translation>
+    </message>
+    <message>
+        <source>(Duration %1)</source>
+        <translation>(Tid %1)</translation>
+    </message>
+    <message>
+        <source>Aborted</source>
+        <translation>Avbruten</translation>
+    </message>
+    <message>
+        <source>No SQL to save</source>
+        <translation>Ingen SQL att spara</translation>
+    </message>
+    <message>
+        <source>You haven&apos;t executed any SQL yet</source>
+        <translation>Du har inte exekverat någon SQL än</translation>
+    </message>
+    <message>
+        <source>&amp;Ok</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>Enter title</source>
+        <translation>Ange titel</translation>
+    </message>
+    <message>
+        <source>Enter the title in the menu of the saved SQL,
+submenues are separated by a &apos;:&apos; character.</source>
+        <translation>Ange titeln i menyn för sparad SQL, undermenyer
+separeras med ett &apos;:&apos; tecken.</translation>
+    </message>
+    <message>
+        <source>Undescribed</source>
+        <translation>Obeskrivd</translation>
+    </message>
+    <message>
+        <source>No plan available to save</source>
+        <translation>Ingen plan tillgänglig att spara</translation>
+    </message>
+    <message>
+        <source>Cancel</source>
+        <translation>Avbryt</translation>
+    </message>
+    <message>
+        <source>Previous log entry</source>
+        <translation>Föregående i logg</translation>
+    </message>
+    <message>
+        <source>Next log entry</source>
+        <translation>Nästa i logg</translation>
+    </message>
+    <message>
+        <source>Executing all statements</source>
+        <translation>Exekvera alla satser</translation>
+    </message>
+    <message>
+        <source>Enter refreshrate</source>
+        <translation>Ange updateringsfrekvens</translation>
+    </message>
+    <message>
+        <source>Refresh rate of query in seconds</source>
+        <translation>Updateringsfrekvens i sekunder</translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Worksheet|Execute current</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F8</source>
+        <comment>Worksheet|Execute all</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F9</source>
+        <comment>Worksheet|Execute next</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Shift+F9</source>
+        <comment>Worksheet|Execute newline separated</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F7</source>
+        <comment>Worksheet|Execute saved SQL</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Worksheet|Describe under cursor</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Up</source>
+        <comment>Worksheet|Previous log entry</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Alt+Down</source>
+        <comment>Worksheet|Next log entry</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Explain plan of current statement</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Worksheet|Reexecute last statement</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Check syntax of buffer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>F3</source>
+        <comment>Worksheet|Explain plan</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+S</source>
+        <comment>Worksheet|Select saved SQL</comment>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Parsing all statements</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <source>Ctrl+F9</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheetSetupUI</name>
+    <message>
+        <source>Form1</source>
+        <translation></translation>
+    </message>
+    <message>
+        <source>Automatically save file when closing worksheet (Without asking any questions).</source>
+        <translation>Spara fil automatiskt när arbetsblad stängs (Utan att ställa frågor om det).</translation>
+    </message>
+    <message>
+        <source>SQL Worksheet</source>
+        <translation>SQL Arbetsblad</translation>
+    </message>
+    <message>
+        <source>Auto &amp;save</source>
+        <translation>Automati&amp;sk lagring</translation>
+    </message>
+    <message>
+        <source>Ask about saving &amp;changes</source>
+        <translation>Fr&amp;åga om ändringar skall sparas</translation>
+    </message>
+    <message>
+        <source>Ask about saving changes when closing worksheet.</source>
+        <translation>Fråga om ändringar i arbetsbladet skall sparas när arbetsbladet stängs.</translation>
+    </message>
+    <message>
+        <source>Add &amp;log entries at end</source>
+        <translation>Lägg till &amp;loggposter i slutet</translation>
+    </message>
+    <message>
+        <source>Add newly executed queries at end of log instead of top. Changing this will mess up the log in the windows that are opened.</source>
+        <translation>Lägg till nyligen exekverade frågor i slutet av loggen istället för i början. Ändring av detta kommer ge felaktig ordning i de fönster om är öppna.</translation>
+    </message>
+    <message>
+        <source>&amp;Multiple lines in log.</source>
+        <translation>&amp;Multipla rader i logg.</translation>
+    </message>
+    <message>
+        <source>Display multiple lines in the SQL column of the logging.</source>
+        <translation>Visa flera rader i SQL kolumnen av loggen.</translation>
+    </message>
+    <message>
+        <source>&amp;Enable statistics</source>
+        <translation>Slå på stat&amp;estik</translation>
+    </message>
+    <message>
+        <source>Enable statistic collection per default.</source>
+        <translation>Slå på statestik hämtning som standard.</translation>
+    </message>
+    <message>
+        <source>Enable &amp;timed statistics</source>
+        <translation>Slå på &amp;tidstatestik</translation>
+    </message>
+    <message>
+        <source>Enable timed statistics as well when collecting normal statistics.</source>
+        <translation>Slå på tidsbaserad statestik i sessionen när statestik hämtas in i arbetsbladet.</translation>
+    </message>
+    <message>
+        <source>&amp;Display number column</source>
+        <translation>Visa nummer&amp;kolumn</translation>
+    </message>
+    <message>
+        <source>Add a numbering column to the left of the result.</source>
+        <translation>Visa numreringskolumn till vänster om resultatet.</translation>
+    </message>
+    <message>
+        <source>&amp;Browse</source>
+        <translation>&amp;Leta</translation>
+    </message>
+    <message>
+        <source>Default &amp;file</source>
+        <translation>Standard&amp;fil</translation>
+    </message>
+    <message>
+        <source>File to automatically open in a new worksheet.</source>
+        <translation>Fil som automatiskt öppnas i nya arbetsblad.</translation>
+    </message>
+    <message>
+        <source>Move &amp;cursor to error</source>
+        <translation>Flytta mark&amp;ör till fel</translation>
+    </message>
+    <message>
+        <source>Move the cursor to an error if the error occurs.</source>
+        <translation>Flytta markören till ett felets plats om fel upptäcks i tolkningen.</translation>
+    </message>
+    <message>
+        <source>Save previous results</source>
+        <translation>Spara föregående resultat</translation>
+    </message>
+    <message>
+        <source>Keep previous results in while worksheet is open. Will consume lot of memory.</source>
+        <translation>Spara föregående resultat medan arbetsbladet är öppet. Kommer att ta upp mycket minne.</translation>
+    </message>
+    <message>
+        <source>Execute directory when selecting in log</source>
+        <translation>Exekvera fråga när det välja i log</translation>
+    </message>
+    <message>
+        <source>Execute a statement when it is
+<byte value="x9"/><byte value="x9"/><byte value="x9"/>selected in the log, if disabled simply selected
+<byte value="x9"/><byte value="x9"/><byte value="x9"/>the statement in the log.</source>
+        <translation>Exekvera sats när den valdes i loggen. Om avslagen så väljs satsen bara i loggen.
+</translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheetStatistic</name>
+    <message>
+        <source>Server Tuning</source>
+        <translation>Server Tuning</translation>
+    </message>
+    <message>
+        <source>Load statistics from file</source>
+        <translation>Ladda statestik från fil</translation>
+    </message>
+    <message>
+        <source>Save statistics to file</source>
+        <translation>Spara statestik till fil</translation>
+    </message>
+    <message>
+        <source>Remove statistics</source>
+        <translation>Radera statestik</translation>
+    </message>
+    <message>
+        <source>Display charts</source>
+        <translation>Visa diagram</translation>
+    </message>
+    <message>
+        <source>Display execution plans</source>
+        <translation>Visa körplan</translation>
+    </message>
+    <message>
+        <source>Hide</source>
+        <translation>Göm</translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheetText</name>
+    <message>
+        <source>Save changes?</source>
+        <translation>Spara ändringar?</translation>
+    </message>
+    <message>
+        <source>The editor has been changed. Do you want to save them,
+discard changes or open file in new worksheet?</source>
+        <translation>Editorn har ändrats. Vill du spara, kasta bort änringarna eller
+öppna fil i nytt arbetsblad?</translation>
+    </message>
+    <message>
+        <source>&amp;Save</source>
+        <translation>&amp;Spara</translation>
+    </message>
+    <message>
+        <source>&amp;Discard</source>
+        <translation>&amp;Kasta</translation>
+    </message>
+    <message>
+        <source>&amp;New worksheet</source>
+        <translation>&amp;Nytt arbetsblad</translation>
+    </message>
+</context>
+<context>
+    <name>toWriteFile</name>
+    <message>
+        <source>File error</source>
+        <translation>Fil fel</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t write data to tempfile</source>
+        <translation>Kunde inte skriva data till temporärfil</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t upload data to URL</source>
+        <translation>Kunde in ladda upp data till URL</translation>
+    </message>
+    <message>
+        <source>File saved successfully</source>
+        <translation>Filen sparad</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t open file for writing</source>
+        <translation>Kunde inte öppna filen för skrivning</translation>
+    </message>
+    <message>
+        <source>Couldn&apos;t write data to file</source>
+        <translation>Kunde inte skriva data till fil</translation>
+    </message>
+</context>
+</TS>

Added: kde-extras/tora/branches/upstream/current/src/i18n/tora_toad.ts
===================================================================
--- kde-extras/tora/branches/upstream/current/src/i18n/tora_toad.ts	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/i18n/tora_toad.ts	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,592 @@
+<!DOCTYPE TS><TS>
+<context>
+    <name>toAlert</name>
+    <message>
+        <source>Alt+R</source>
+        <comment>Alert|Add Name</comment>
+        <translation>Alt+R</translation>
+    </message>
+    <message>
+        <source>Ctrl+Backspace</source>
+        <comment>Alert|Remove name</comment>
+        <translation>Ctrl+Backspace</translation>
+    </message>
+    <message>
+        <source>Alt+N</source>
+        <comment>Alert|Edit name</comment>
+        <translation>Alt+N</translation>
+    </message>
+    <message>
+        <source>Alt+M</source>
+        <comment>Alert|Message</comment>
+        <translation>Alt+M</translation>
+    </message>
+    <message>
+        <source>Ctrl+M</source>
+        <comment>Alert|Message in memo</comment>
+        <translation>Ctrl+M</translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Alert|Send alert</comment>
+        <translation>Ctrl+Return</translation>
+    </message>
+</context>
+<context>
+    <name>toAnalyze</name>
+    <message>
+        <source>F5</source>
+        <comment>Statistics|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+</context>
+<context>
+    <name>toBackup</name>
+    <message>
+        <source>F5</source>
+        <comment>Backup|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+</context>
+<context>
+    <name>toBrowser</name>
+    <message>
+        <source>F5</source>
+        <comment>Browser|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>Browser|Change Schema</comment>
+        <translation>Alt+S</translation>
+    </message>
+    <message>
+        <source>Alt+N</source>
+        <comment>Browser|Change object</comment>
+        <translation>Alt+N</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+G</source>
+        <comment>Browser|Define filter</comment>
+        <translation>Ctrl+Shift+G</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+H</source>
+        <comment>Browser|Clear filter</comment>
+        <translation>Ctrl+Shift+H</translation>
+    </message>
+</context>
+<context>
+    <name>toChartManager</name>
+    <message>
+        <source>F5</source>
+        <comment>Chart Manager|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+</context>
+<context>
+    <name>toCurrent</name>
+    <message>
+        <source>F5</source>
+        <comment>Current session|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+</context>
+<context>
+    <name>toDebug</name>
+    <message>
+        <source>Ctrl+F9</source>
+        <comment>Debug|Scan source</comment>
+        <translation>Ctrl+F9</translation>
+    </message>
+    <message>
+        <source>F9</source>
+        <comment>Debug|Compile</comment>
+        <translation>F9</translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Debug|Execute</comment>
+        <translation>F11</translation>
+    </message>
+    <message>
+        <source>F12</source>
+        <comment>Debug|Stop</comment>
+        <translation>F12</translation>
+    </message>
+    <message>
+        <source>F7</source>
+        <comment>Debug|Step into</comment>
+        <translation>F7</translation>
+    </message>
+    <message>
+        <source>F8</source>
+        <comment>Debug|Stop over</comment>
+        <translation>F8</translation>
+    </message>
+    <message>
+        <source>F6</source>
+        <comment>Debug|Return from</comment>
+        <translation>Shift+F8</translation>
+    </message>
+    <message>
+        <source>F11</source>
+        <comment>Debug|Debug pane</comment>
+        <translation>F6</translation>
+    </message>
+    <message>
+        <source>Ctrl+N</source>
+        <comment>Debug|Next error</comment>
+        <translation>Ctrl+N</translation>
+    </message>
+    <message>
+        <source>Ctrl+P</source>
+        <comment>Debug|Previous error</comment>
+        <translation>Ctrl+P</translation>
+    </message>
+    <message>
+        <source>Ctrl+F5</source>
+        <comment>Debug|Toggle breakpoint</comment>
+        <translation>Ctrl+F5</translation>
+    </message>
+    <message>
+        <source>Ctrl+F6</source>
+        <comment>Debug|Disable breakpoint</comment>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Debug|Add watch</comment>
+        <translation>Ctrl+F5</translation>
+    </message>
+    <message>
+        <source>Ctrl+Delete</source>
+        <comment>Debug|Delete watch</comment>
+        <translation>Ctrl+Delete</translation>
+    </message>
+    <message>
+        <source>Ctrl+F4</source>
+        <comment>Debug|Change watch</comment>
+        <translation>Ctrl+Alt+E</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Debug|Refresh objectlist</comment>
+        <translation>Shift+F5</translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>Debug|Select schema</comment>
+        <translation>Alt+S</translation>
+    </message>
+</context>
+<context>
+    <name>toEditExtensionTool</name>
+    <message>
+        <source>Ctrl+S</source>
+        <comment>Edit|Incremental search forward</comment>
+        <translation>Ctrl+Shift+S</translation>
+    </message>
+    <message>
+        <source>Ctrl+R</source>
+        <comment>Edit|Incremental search backward</comment>
+        <translation>Ctrl+Shift+R</translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+I</source>
+        <comment>Edit|Indent selection</comment>
+        <translation>Ctrl+Alt+I</translation>
+    </message>
+    <message>
+        <source>Ctrl+Alt+Shift+I</source>
+        <comment>Edit|Indent editor</comment>
+        <translation>Ctrl+Alt+Shift+I</translation>
+    </message>
+    <message>
+        <source>Ctrl+U</source>
+        <comment>Edit|Uppercase</comment>
+        <translation>Ctrl+U</translation>
+    </message>
+    <message>
+        <source>Ctrl+L</source>
+        <comment>Edit|Lowercase</comment>
+        <translation>Ctrl+U</translation>
+    </message>
+    <message>
+        <source>Alt+Right</source>
+        <comment>Edit|Indent block</comment>
+        <translation>Alt+Right</translation>
+    </message>
+    <message>
+        <source>Alt+Left</source>
+        <comment>Edit|De-indent block</comment>
+        <translation>Alt+Left</translation>
+    </message>
+</context>
+<context>
+    <name>toHelp</name>
+    <message>
+        <source>F1</source>
+        <comment>Dialog|Help</comment>
+        <translation>F1</translation>
+    </message>
+</context>
+<context>
+    <name>toHighlightedText</name>
+    <message>
+        <source>Ctrl+T</source>
+        <comment>Edit|Table lookup</comment>
+        <translation>Ctrl+.</translation>
+    </message>
+</context>
+<context>
+    <name>toInvalid</name>
+    <message>
+        <source>F5</source>
+        <comment>Invalid|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+</context>
+<context>
+    <name>toMain</name>
+    <message>
+        <source>Ctrl+G</source>
+        <comment>File|New connection</comment>
+        <translation>Ctrl+G</translation>
+    </message>
+    <message>
+        <source>Ctrl+O</source>
+        <comment>File|File open</comment>
+        <translation>Ctrl+O</translation>
+    </message>
+    <message>
+        <source>Ctrl+W</source>
+        <comment>File|File save</comment>
+        <translation>Ctrl+S</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+W</source>
+        <comment>File|File save as</comment>
+        <translation>Ctrl+Shift+S</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+C</source>
+        <comment>File|Commit</comment>
+        <translation>Ctrl+Shift+C</translation>
+    </message>
+    <message>
+        <source>Ctrl+J</source>
+        <comment>File|Stop all</comment>
+        <translation>Ctrl+J</translation>
+    </message>
+    <message>
+        <source>Ctrl+&lt;</source>
+        <comment>File|Rollback</comment>
+        <translation>Ctrl+&lt;</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+U</source>
+        <comment>File|Current connection</comment>
+        <translation>Ctrl+Shift+U</translation>
+    </message>
+    <message>
+        <source>Ctrl+Insert</source>
+        <comment>Edit|Copy</comment>
+        <translation>Ctrl+Insert</translation>
+    </message>
+    <message>
+        <source>Shift+Delete</source>
+        <comment>Edit|Cut</comment>
+        <translation>Shift+Delete</translation>
+    </message>
+    <message>
+        <source>Shift+Insert</source>
+        <comment>Edit|Paste</comment>
+        <translation>Shift+Insert</translation>
+    </message>
+    <message>
+        <source>Ctrl+A</source>
+        <comment>Edit|Select all</comment>
+        <translation>Ctrl+A</translation>
+    </message>
+    <message>
+        <source>Ctrl+Z</source>
+        <comment>Edit|Undo</comment>
+        <translation>Ctrl+Z</translation>
+    </message>
+    <message>
+        <source>Ctrl+Y</source>
+        <comment>Edit|Redo</comment>
+        <translation>Ctrl+Shift+Z</translation>
+    </message>
+    <message>
+        <source>Ctrl+X</source>
+        <comment>Edit|Cut</comment>
+        <translation>Ctrl+X</translation>
+    </message>
+    <message>
+        <source>Ctrl+C</source>
+        <comment>Edit|Copy</comment>
+        <translation>Ctrl+C</translation>
+    </message>
+    <message>
+        <source>Ctrl+V</source>
+        <comment>Edit|Paste</comment>
+        <translation>Ctrl+V</translation>
+    </message>
+    <message>
+        <source>Ctrl+F</source>
+        <comment>Edit|Search</comment>
+        <translation>Ctrl+F</translation>
+    </message>
+    <message>
+        <source>F3</source>
+        <comment>Edit|Search next</comment>
+        <translation>F3</translation>
+    </message>
+    <message>
+        <source>F1</source>
+        <comment>Help|Help</comment>
+        <translation>F1</translation>
+    </message>
+</context>
+<context>
+    <name>toMarkedText</name>
+    <message>
+        <source>Ctrl+A</source>
+        <comment>Edit|Select All</comment>
+        <translation>Ctrl+A</translation>
+    </message>
+</context>
+<context>
+    <name>toMemoEditor</name>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Memo Editor|Save changes</comment>
+        <translation>Ctrl+Return</translation>
+    </message>
+</context>
+<context>
+    <name>toOutput</name>
+    <message>
+        <source>F5</source>
+        <comment>Output|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Output|Enable</comment>
+        <translation>F4</translation>
+    </message>
+    <message>
+        <source>Ctrl+Backspace</source>
+        <comment>Output|Clear output</comment>
+        <translation>Ctrl+Backspace</translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Output|Change refresh</comment>
+        <translation>Alt+R</translation>
+    </message>
+</context>
+<context>
+    <name>toRollback</name>
+    <message>
+        <source>F5</source>
+        <comment>Rollback|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Rollback|Change refresh</comment>
+        <translation>Alt+R</translation>
+    </message>
+</context>
+<context>
+    <name>toSGATrace</name>
+    <message>
+        <source>F5</source>
+        <comment>SGA Trace|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <source>Alt+S</source>
+        <comment>SGA Trace|Change schema</comment>
+        <translation>Alt+S</translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>SGA Trace|Change refresh</comment>
+        <translation>Alt+R</translation>
+    </message>
+    <message>
+        <source>Alt+Y</source>
+        <comment>SGA Trace|Change type</comment>
+        <translation>Alt+Y</translation>
+    </message>
+</context>
+<context>
+    <name>toSearchReplace</name>
+    <message>
+        <source>F1</source>
+        <comment>Search|Help</comment>
+        <translation>F1</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+R</source>
+        <comment>Edit|Replace</comment>
+        <translation>Ctrl+R</translation>
+    </message>
+</context>
+<context>
+    <name>toSecurity</name>
+    <message>
+        <source>F5</source>
+        <comment>Security|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Security|Save changes</comment>
+        <translation>Ctrl+Return</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+U</source>
+        <comment>Security|Add user</comment>
+        <translation>Ctrl+Shift+U</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+R</source>
+        <comment>Security|Add role</comment>
+        <translation>Ctrl+Shift+R</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+O</source>
+        <comment>Security|Copy current</comment>
+        <translation>Ctrl+Shift+O</translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Security|Display SQL</comment>
+        <translation>F4</translation>
+    </message>
+</context>
+<context>
+    <name>toSession</name>
+    <message>
+        <source>F5</source>
+        <comment>Session|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Session|Change refresh</comment>
+        <translation>Alt+R</translation>
+    </message>
+</context>
+<context>
+    <name>toSessionMySQL</name>
+    <message>
+        <source>F5</source>
+        <comment>Session MySQL|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Session MySQL|Change refresh</comment>
+        <translation>Alt+R</translation>
+    </message>
+</context>
+<context>
+    <name>toStorage</name>
+    <message>
+        <source>F5</source>
+        <comment>Storage|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+</context>
+<context>
+    <name>toTemporary</name>
+    <message>
+        <source>F5</source>
+        <comment>Temporary|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+</context>
+<context>
+    <name>toTuning</name>
+    <message>
+        <source>F5</source>
+        <comment>Tuning|Refresh</comment>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <source>Alt+R</source>
+        <comment>Tuning|Change refresh</comment>
+        <translation>Alt+R</translation>
+    </message>
+</context>
+<context>
+    <name>toWorksheet</name>
+    <message>
+        <source>Ctrl+Return</source>
+        <comment>Worksheet|Execute current</comment>
+        <translation>Ctrl+Return</translation>
+    </message>
+    <message>
+        <source>F8</source>
+        <comment>Worksheet|Execute all</comment>
+        <translation>F8</translation>
+    </message>
+    <message>
+        <source>F9</source>
+        <comment>Worksheet|Execute next</comment>
+        <translation>F9</translation>
+    </message>
+    <message>
+        <source>Shift+F9</source>
+        <comment>Worksheet|Execute newline separated</comment>
+        <translation>Shift+F9</translation>
+    </message>
+    <message>
+        <source>F7</source>
+        <comment>Worksheet|Execute saved SQL</comment>
+        <translation>F7</translation>
+    </message>
+    <message>
+        <source>F4</source>
+        <comment>Worksheet|Describe under cursor</comment>
+        <translation>F4</translation>
+    </message>
+    <message>
+        <source>Alt+Up</source>
+        <comment>Worksheet|Previous log entry</comment>
+        <translation>Alt+Up</translation>
+    </message>
+    <message>
+        <source>Alt+Down</source>
+        <comment>Worksheet|Next log entry</comment>
+        <translation>Alt+Down</translation>
+    </message>
+    <message>
+        <source>F5</source>
+        <comment>Worksheet|Reexecute last statement</comment>
+        <translation>F5</translation>
+    </message>
+    <message>
+        <source>F3</source>
+        <comment>Worksheet|Explain plan</comment>
+        <translation>CTRL+E</translation>
+    </message>
+    <message>
+        <source>Ctrl+Shift+S</source>
+        <comment>Worksheet|Select saved SQL</comment>
+        <translation>Ctrl+N</translation>
+    </message>
+    <message>
+        <source>Ctrl+F9</source>
+        <comment>Worksheet|Check syntax of buffer</comment>
+        <translation>Ctrl+F9</translation>
+    </message>
+</context>
+</TS>

Added: kde-extras/tora/branches/upstream/current/src/icons/add.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/add.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/add.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const add_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"          ...   ",
+"          .+.   ",
+"          .+.   ",
+"       ....+....",
+"       .+++++++.",
+"       ....+....",
+"          .+.   ",
+"          .+.   ",
+"          ...   ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/addfile.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/addfile.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/addfile.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const addfile_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #7F7F7F",
+"#	c #FFFFFF",
+"          ...   ",
+"          .+.   ",
+"          .+.   ",
+"     ......+....",
+"    .@@.+++++++.",
+"   .@@@....+....",
+"   ..@@@@@.+.   ",
+"   .#......+.   ",
+"   .######...   ",
+"   ..######..   ",
+"   .#......#.   ",
+"   .########.   ",
+"    .######.    ",
+"     ......     ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/addindex.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/addindex.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/addindex.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const addindex_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"          ...   ",
+"          .+.   ",
+"          .+.   ",
+"       ....+....",
+"       .+++++++.",
+"       ....+....",
+"          .+.   ",
+"          .+.   ",
+"          ...   ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/addproject.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/addproject.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/addproject.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const addproject_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #00FF00",
+"     ........   ",
+"    ..++++. at .   ",
+"   .+.++++. at .   ",
+"  .++.+.... at ....",
+" .....+.@@@@@@@.",
+" .+++++.... at ....",
+" .++++++++. at .   ",
+" .++++++++. at .   ",
+" .++++++++...   ",
+" .++++++++.     ",
+" .++++++++.     ",
+" .++++++++.     ",
+" .++++++++.     ",
+" .++++++++.     ",
+" .++++++++.     ",
+" ..........     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/addrecord.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/addrecord.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/addrecord.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const addrecord_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #FFFFFF",
+"          ...   ",
+"          .+.   ",
+"          .+.   ",
+"...........+....",
+"@@@@@@@.+++++++.",
+".. at .@. at ....+....",
+"@@@@@@@@@@.+.   ",
+". at ...@.. at ..+.   ",
+"@@@@@@@@@@...   ",
+"@. at ..@. at .@.     ",
+"@@@@@@@@@@.     ",
+"... at .@.. at ..     ",
+"@@@@@@@@@@.     ",
+"... at .@@.. at .     ",
+"@@@@@@@@@@.     ",
+"@... at .@....     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/addrole.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/addrole.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/addrole.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const addrole_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #0000FF",
+"#	c #FFFFFF",
+" ..   ... ...   ",
+".  ...   ..+.   ",
+"..       ..+.   ",
+". at .........+....",
+".@@@@@@.+++++++.",
+". at .@@@@....+....",
+". at ..@@@.. at .+.   ",
+".@@.@@@.@@.+.   ",
+".@@@@@@@@@....  ",
+". at .@@@@@. at .   . ",
+". at .......@.   . ",
+". at .#####. at .. .  ",
+". at .#####. at . .   ",
+".@@.....@@.     ",
+" .@@@@@@@.      ",
+"  .......       "};

Added: kde-extras/tora/branches/upstream/current/src/icons/addrollback.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/addrollback.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/addrollback.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const addrollback_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #FFFFFF",
+"          ...   ",
+"      .   .+.   ",
+"    .. at . ..+.   ",
+"   .@@@....+....",
+"  .@@. at .+++++++.",
+"  . at . .....+....",
+"  ...     .+. at . ",
+"   .      .+..  ",
+"  . at .     ...   ",
+" .@@@.     ...  ",
+"  . at .    . . at .  ",
+"  .@@.. . at .@@.  ",
+"   .@@@.@@@@.   ",
+"    ... . at ..    ",
+"         .      ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/addtable.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/addtable.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/addtable.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const addtable_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #FFFFFF",
+"          ...   ",
+"          .+.   ",
+"          .+.   ",
+"...........+....",
+".@@@.@@.+++++++.",
+"...........+....",
+".@@@.@@@. at .+.   ",
+".@@@.@@@. at .+.   ",
+".............   ",
+".@@@.@@@.@@@.   ",
+".@@@.@@@.@@@.   ",
+".............   ",
+".@@@.@@@.@@@.   ",
+".@@@.@@@.@@@.   ",
+".............   ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/addtablespace.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/addtablespace.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/addtablespace.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const addtablespace_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #7F7F7F",
+"@	c #00FF00",
+"#	c #FFFFFF",
+"     ........   ",
+"    .+++++. at .   ",
+"   .++++++. at .   ",
+"   ..++.... at ....",
+"   .#...@@@@@@@.",
+"  ......... at ....",
+" .+++++..+. at .+..",
+".+++++++... at ..#.",
+"..+++++......##.",
+".#......#.####..",
+".########.....#.",
+"..######..#####.",
+".#......#.####. ",
+".########.....  ",
+" .######.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/addtemplate.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/addtemplate.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/addtemplate.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const addtemplate_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #FFFFFF",
+"          ....  ",
+"      .....+. at . ",
+"      .@@@.+.@@.",
+"      .....+....",
+"........+++++++.",
+"@@@@@@.....+....",
+"@....@@@@@.+.   ",
+"@@@@@@@@@@.+.   ",
+"@... at ...@@...   ",
+"@@@@@@@@@@.     ",
+"@......@@@.     ",
+"@@@@@@@@@@.     ",
+"@.....@@@@.     ",
+"@@@@@@@@@@.     ",
+"@.. at .....@.     ",
+"@@@@@@@@@@.     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/adduser.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/adduser.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/adduser.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const adduser_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #545454",
+"@	c #00FF00",
+"   ...    ...   ",
+"  .+++.   . at .   ",
+"  .+++.   . at .   ",
+"  .+++..... at ....",
+"   .+. .@@@@@@@.",
+" ..+++..... at ....",
+".+++++++. . at .   ",
+".+++++++. . at .   ",
+".+++++++. ...   ",
+".+++++++.       ",
+" .++.++.        ",
+" .++.++.        ",
+" .++.++.        ",
+" .++.++.        ",
+" .++.++.        ",
+"  .. ..         "};

Added: kde-extras/tora/branches/upstream/current/src/icons/addwatch.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/addwatch.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/addwatch.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,101 @@
+/* XPM */
+static const char* const addwatch_xpm[] = {
+"16 16 82 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #262626",
+"#	c #828282",
+"$	c #D2D2D2",
+"%	c #D7D7D7",
+"&	c #A2A2A2",
+"*	c #393939",
+"=	c #8C8C8C",
+"-	c #FAFAFA",
+";	c #FFFFFF",
+">	c #FCFCFC",
+",	c #BABABA",
+"'	c #E8E8E8",
+")	c #FDFDFD",
+"!	c #FBFBFB",
+"~	c #F9F9F9",
+"{	c #F1F1F1",
+"]	c #333333",
+"^	c #ABABAB",
+"/	c #F3F3F3",
+"(	c #EBEBEB",
+"_	c #646464",
+":	c #3B3939",
+"<	c #EFEFEF",
+"[	c #F6F6F6",
+"}	c #F4F4F4",
+"|	c #F0F0F0",
+"1	c #363636",
+"2	c #B0B0B0",
+"3	c #E5E5E5",
+"4	c #676767",
+"5	c #424040",
+"6	c #E6E6E6",
+"7	c #848484",
+"8	c #696969",
+"9	c #E4E4E4",
+"0	c #EAEAEA",
+"a	c #343434",
+"b	c #A9A9A9",
+"c	c #A7A7A7",
+"d	c #DEDEDE",
+"e	c #C2C2C2",
+"f	c #252525",
+"g	c #101010",
+"h	c #CCCCCC",
+"i	c #E3E3E3",
+"j	c #D3D3D3",
+"k	c #282828",
+"l	c #565656",
+"m	c #070707",
+"n	c #9B9B9B",
+"o	c #D9D9D9",
+"p	c #D4D4D4",
+"q	c #4F4F4F",
+"r	c #494646",
+"s	c #535353",
+"t	c #B1B1B1",
+"u	c #DDDDDD",
+"v	c #D0D0D0",
+"w	c #818181",
+"x	c #100F0F",
+"y	c #2E2E2E",
+"z	c #ADADAD",
+"A	c #9A9A9A",
+"B	c #CECECE",
+"C	c #A4A4A4",
+"D	c #0E0E0E",
+"E	c #232323",
+"F	c #4D4D4D",
+"G	c #201F1F",
+"H	c #4A4A4A",
+"I	c #494949",
+"J	c #434343",
+"K	c #141313",
+"L	c #5C5A5A",
+"M	c #464444",
+"N	c #494747",
+"O	c #525050",
+"P	c #3D3B3B",
+"Q	c #4C4949",
+"          ...   ",
+"          .+.   ",
+"          .+.   ",
+"  .... ....+....",
+" @#$%&*.+++++++.",
+".=-;;>,....+....",
+".')!-~{]^/.+.(_:",
+".<[}/{|12(.+.345",
+".67890'abc...d_5",
+".efghijk=lmnopqr",
+" sbtuvwxyzAjBCD ",
+" .EFF*G  gHIJKL ",
+"   MNO    PNQ   ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/axis.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/axis.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/axis.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const axis_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"                ",
+" . .+++++++++++ ",
+" . .+++++++++++ ",
+"   .+++++++++++ ",
+"   .+++++++++++ ",
+"   .+++++++++++ ",
+"   .+++++++++++ ",
+"   .+++++++++++ ",
+"   .+++++++++++ ",
+"   .+++++++++++ ",
+"   .+++++++++++ ",
+" . .+++++++++++ ",
+" . ............ ",
+"                ",
+"   ..        .. ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/background.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/background.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/background.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const background_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #666666",
+"@	c #A0A0A0",
+"#	c #0FFE14",
+"                ",
+" ............   ",
+" .++++++++++.   ",
+" ............   ",
+" .@@@@@@@@@@.   ",
+" .@@@@@@@@@@.   ",
+" .@@@@@@@@@@.   ",
+" .@@@@@@@@@@.   ",
+" .@@@@@@@@@@..  ",
+" .@@@@@@@@@@.#. ",
+" .@@@@@@@@@@.##.",
+" ............##.",
+"           .##. ",
+"           .#.  ",
+"           ..   ",
+"           .    "};

Added: kde-extras/tora/branches/upstream/current/src/icons/breakpoint.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/breakpoint.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/breakpoint.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,15 @@
+/* XPM */
+static const char* const breakpoint_xpm[] = {
+"8 8 4 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #FF0000",
+"  ....  ",
+" .++++. ",
+".++@@++.",
+".+@@@@+.",
+".+@@@@+.",
+".++@@++.",
+" .++++. ",
+"  ....  "};

Added: kde-extras/tora/branches/upstream/current/src/icons/canceledit.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/canceledit.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/canceledit.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const canceledit_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #00FF00",
+"                ",
+"                ",
+"                ",
+"...........     ",
+"+++++.++++. .   ",
+"..++. at .++...@.  ",
+"++++.@@.++.@@.  ",
+".+..+.@@..@@.   ",
+"++++++.@@@@.    ",
+"+.+..++.@@.     ",
+"++++++.@@@@.    ",
+"...++.@@..@@.   ",
+"++++.@@.++.@@.  ",
+"...+. at .+.+..@.  ",
+"+++++.++++. .   ",
+"+...+.+....     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/changeconnect.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/changeconnect.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/changeconnect.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const changeconnect_xpm[] = {
+"16 14 6 1",
+" 	c None",
+".	c #000000",
+"+	c #7F7F7F",
+"@	c #FF0000",
+"#	c #FFFF00",
+"$	c #FFFFFF",
+"         .      ",
+"      + .+      ",
+"     +@@+  .    ",
+"    +@@@@ .+    ",
+"   +@@@@@@+     ",
+"   +@@@@@@+     ",
+"   +@@@@@+.     ",
+"   +@@@@+.      ",
+"  +#++++....... ",
+" +#++...$$$$$$$.",
+"+#++    .$$$$$. ",
+" ++      .$$$.  ",
+" +        .$.   ",
+"           .    "};

Added: kde-extras/tora/branches/upstream/current/src/icons/changewatch.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/changewatch.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/changewatch.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,93 @@
+/* XPM */
+static const char* const changewatch_xpm[] = {
+"16 16 74 1",
+" 	c None",
+".	c #000000",
+"+	c #8E8E8E",
+"@	c #FFFFFF",
+"#	c #262626",
+"$	c #828282",
+"%	c #D2D2D2",
+"&	c #D7D7D7",
+"*	c #A2A2A2",
+"=	c #393939",
+"-	c #8C8C8C",
+";	c #FAFAFA",
+">	c #FCFCFC",
+",	c #BABABA",
+"'	c #EBEBEB",
+")	c #646464",
+"!	c #E8E8E8",
+"~	c #FDFDFD",
+"{	c #FBFBFB",
+"]	c #F9F9F9",
+"^	c #F1F1F1",
+"/	c #EEEEEE",
+"(	c #3B3939",
+"_	c #EFEFEF",
+":	c #F6F6F6",
+"<	c #F4F4F4",
+"[	c #F3F3F3",
+"}	c #E7E7E7",
+"|	c #E5E5E5",
+"1	c #676767",
+"2	c #424040",
+"3	c #E6E6E6",
+"4	c #848484",
+"5	c #696969",
+"6	c #E4E4E4",
+"7	c #EAEAEA",
+"8	c #4D4D4D",
+"9	c #CECECE",
+"0	c #E0E0E0",
+"a	c #DEDEDE",
+"b	c #C2C2C2",
+"c	c #252525",
+"d	c #101010",
+"e	c #CCCCCC",
+"f	c #565656",
+"g	c #070707",
+"h	c #9B9B9B",
+"i	c #D9D9D9",
+"j	c #D4D4D4",
+"k	c #4F4F4F",
+"l	c #494646",
+"m	c #535353",
+"n	c #A9A9A9",
+"o	c #B1B1B1",
+"p	c #DDDDDD",
+"q	c #100F0F",
+"r	c #2E2E2E",
+"s	c #ADADAD",
+"t	c #9A9A9A",
+"u	c #D3D3D3",
+"v	c #A4A4A4",
+"w	c #0E0E0E",
+"x	c #232323",
+"y	c #201F1F",
+"z	c #4A4A4A",
+"A	c #494949",
+"B	c #434343",
+"C	c #141313",
+"D	c #5C5A5A",
+"E	c #464444",
+"F	c #494747",
+"G	c #525050",
+"H	c #3D3B3B",
+"I	c #4C4949",
+"             .. ",
+"            .++.",
+"           . at .+.",
+"  ....   ..@@@. ",
+" #$%&*= #.@@@.= ",
+".-;@@>,..@@@.').",
+".!~{;]^.@@@./')(",
+"._:<[^.@@@.!}|12",
+".34567.. at .890a)2",
+".bcde....fghijkl",
+" mnop..qrstu9vw ",
+" .x88=y  dzABCD ",
+"   EFG    HFI   ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/chart.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/chart.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/chart.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const chart_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"                ",
+"                ",
+" .+.+.+.+.+.+.  ",
+" .++++++++++++  ",
+" .+++.+++.+++.  ",
+" .++++++++++++  ",
+" .+.+.+.+.+.+.  ",
+" .++++++++++++  ",
+" .+++.+++.+++.  ",
+" .++++++++++++  ",
+" .+.+.+.+.+.+.  ",
+" .++++++++++++  ",
+" .+++.+++.+++.  ",
+" .++++++++++++  ",
+" .............  ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/clock.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/clock.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/clock.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,164 @@
+/* XPM */
+static const char* const clock_xpm[] = {
+"16 16 145 2",
+"  	c None",
+". 	c #848584",
+"+ 	c #545454",
+"@ 	c #5D5D5D",
+"# 	c #555555",
+"$ 	c #A1A1A1",
+"% 	c #8B8C8B",
+"& 	c #A3A2A3",
+"* 	c #EBECEB",
+"= 	c #DDDCDD",
+"- 	c #EFF1EF",
+"; 	c #6D6E6D",
+"> 	c #CECFCE",
+", 	c #ADADAD",
+"' 	c #6B6D6B",
+") 	c #303130",
+"! 	c #0D0C0D",
+"~ 	c #5A5B5A",
+"{ 	c #565656",
+"] 	c #E2E1E2",
+"^ 	c #B7B7B7",
+"/ 	c #383838",
+"( 	c #080808",
+"_ 	c #4C4D4C",
+": 	c #CACBCA",
+"< 	c #E8E8E8",
+"[ 	c #777777",
+"} 	c #1B1B1B",
+"| 	c #141414",
+"1 	c #191819",
+"2 	c #151415",
+"3 	c #151515",
+"4 	c #686868",
+"5 	c #DDDEDD",
+"6 	c #D4D3D4",
+"7 	c #343534",
+"8 	c #3A393A",
+"9 	c #949494",
+"0 	c #AFAFAF",
+"a 	c #989898",
+"b 	c #DBDADB",
+"c 	c #9F9F9F",
+"d 	c #454545",
+"e 	c #2A2B2A",
+"f 	c #C6C6C6",
+"g 	c #3E3E3E",
+"h 	c #656565",
+"i 	c #CDCCCD",
+"j 	c #7B7A7B",
+"k 	c #CFCFCF",
+"l 	c #C9CAC9",
+"m 	c #F6F6F6",
+"n 	c #F1F2F1",
+"o 	c #797879",
+"p 	c #313131",
+"q 	c #E8E7E8",
+"r 	c #9A9A9A",
+"s 	c #242524",
+"t 	c #C2C1C2",
+"u 	c #E5E4E5",
+"v 	c #F0F0F0",
+"w 	c #F9F9F9",
+"x 	c #FBFAFB",
+"y 	c #FAFAFA",
+"z 	c #DFDFDF",
+"A 	c #727272",
+"B 	c #A9A9A9",
+"C 	c #323232",
+"D 	c #868586",
+"E 	c #383938",
+"F 	c #797979",
+"G 	c #B5B5B5",
+"H 	c #C7C9C7",
+"I 	c #838383",
+"J 	c #C8C7C8",
+"K 	c #F8F7F8",
+"L 	c #CFCECF",
+"M 	c #D2D2D2",
+"N 	c #DFE1DF",
+"O 	c #868886",
+"P 	c #0E0E0E",
+"Q 	c #A5A4A5",
+"R 	c #808080",
+"S 	c #ECEBEC",
+"T 	c #E2E2E2",
+"U 	c #909090",
+"V 	c #707070",
+"W 	c #F7F7F7",
+"X 	c #8D8C8D",
+"Y 	c #9E9C9E",
+"Z 	c #111111",
+"` 	c #161716",
+" .	c #A0A0A0",
+"..	c #AAAAAA",
+"+.	c #EEEDEE",
+"@.	c #F4F4F4",
+"#.	c #C0C1C0",
+"$.	c #E7E6E7",
+"%.	c #F8FAF8",
+"&.	c #C5C6C5",
+"*.	c #181818",
+"=.	c #4F514F",
+"-.	c #5C5C5C",
+";.	c #A6A6A6",
+">.	c #A9A8A9",
+",.	c #F7F8F7",
+"'.	c #B0B1B0",
+").	c #DEDEDE",
+"!.	c #BBBBBB",
+"~.	c #E1E1E1",
+"{.	c #BCBDBC",
+"].	c #B2B3B2",
+"^.	c #716F71",
+"/.	c #BCBBBC",
+"(.	c #B7B8B7",
+"_.	c #B0B2B0",
+":.	c #969696",
+"<.	c #B7B9B7",
+"[.	c #D4D6D4",
+"}.	c #8E8F8E",
+"|.	c #CFCDCF",
+"1.	c #BEBEBE",
+"2.	c #212021",
+"3.	c #A4A3A4",
+"4.	c #676867",
+"5.	c #363736",
+"6.	c #B3B3B3",
+"7.	c #8C8C8C",
+"8.	c #C9C8C9",
+"9.	c #808180",
+"0.	c #999999",
+"a.	c #C1C0C1",
+"b.	c #6B6B6B",
+"c.	c #1A1A1A",
+"d.	c #595759",
+"e.	c #959795",
+"f.	c #616061",
+"g.	c #1C1D1C",
+"h.	c #585958",
+"i.	c #EAEAEA",
+"j.	c #5A5C5A",
+"k.	c #232223",
+"l.	c #1F201F",
+"m.	c #535353",
+"n.	c #B3B1B3",
+"            . + @ # $           ",
+"          % & * = - ; >         ",
+"          , ' ) ! ~ { ]         ",
+"            ^ / ( _ :           ",
+"        < [ } | 1 2 3 4 5       ",
+"      6 7 8 9 0 a b c d e f     ",
+"      g h i j k l m 0 n o p q   ",
+"    r s t u v w x y z A B C D   ",
+"    E F G H I J K L F M N O p   ",
+"    P Q R S T U V 9 W w X Y Z   ",
+"    `  ...+.w @.#.$.%.x &.r *.  ",
+"    =.-.;.>.,.'.).!.~.{.].^.d   ",
+"    /.} (._.:.<.[.).}.|.1.2.3.  ",
+"      4.5.6.7. .8.9.0.a.d {     ",
+"        b.c.d.0.0.e.f.g.h.i.    ",
+"          1.j.k.P l.m.n.        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/close.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/close.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/close.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,169 @@
+/* XPM */
+static const char* const close_xpm[] = {
+"16 16 150 2",
+"  	c None",
+". 	c #B4908D",
+"+ 	c #C5AEAA",
+"@ 	c #AB8C89",
+"# 	c #581212",
+"$ 	c #997875",
+"% 	c #C3ABA7",
+"& 	c #812222",
+"* 	c #872827",
+"= 	c #C2A39F",
+"- 	c #B28F8C",
+"; 	c #671616",
+"> 	c #5D0F0F",
+", 	c #885A58",
+"' 	c #9C4847",
+") 	c #942C2C",
+"! 	c #973130",
+"~ 	c #C7A4A0",
+"{ 	c #BA928F",
+"] 	c #7C2121",
+"^ 	c #731A1A",
+"/ 	c #824241",
+"( 	c #A7A395",
+"_ 	c #CECAB9",
+": 	c #CCC7B8",
+"< 	c #C7B9A9",
+"[ 	c #A84C48",
+"} 	c #A63535",
+"| 	c #A63838",
+"1 	c #C39C93",
+"2 	c #BC8E87",
+"3 	c #922C2C",
+"4 	c #882626",
+"5 	c #8E4640",
+"6 	c #C8BEAF",
+"7 	c #CCC7B6",
+"8 	c #9D9A8E",
+"9 	c #938D79",
+"0 	c #E0D9BF",
+"a 	c #D9D2B8",
+"b 	c #D6C6AF",
+"c 	c #BC5955",
+"d 	c #B43D3D",
+"e 	c #B03D3C",
+"f 	c #A83737",
+"g 	c #9D3131",
+"h 	c #A5554F",
+"i 	c #D5CAB2",
+"j 	c #D9D1B8",
+"k 	c #D5CDB5",
+"l 	c #787465",
+"m 	c #989480",
+"n 	c #F2EBD0",
+"o 	c #EBE3CA",
+"p 	c #E7D6C0",
+"q 	c #C75754",
+"r 	c #BC4141",
+"s 	c #B23C3C",
+"t 	c #B35551",
+"u 	c #E7DBC3",
+"v 	c #E1DAC2",
+"w 	c #7C7769",
+"x 	c #979482",
+"y 	c #F7F0D7",
+"z 	c #EEE7CF",
+"A 	c #E3A799",
+"B 	c #D14D4D",
+"C 	c #C84747",
+"D 	c #BB4040",
+"E 	c #AE3C3C",
+"F 	c #D4AB9B",
+"G 	c #E3DCC6",
+"H 	c #7D796B",
+"I 	c #949083",
+"J 	c #FAF5DD",
+"K 	c #F0E9D3",
+"L 	c #E4A79A",
+"M 	c #DE5353",
+"N 	c #DC5252",
+"O 	c #D8746E",
+"P 	c #C8635E",
+"Q 	c #B03B3B",
+"R 	c #A33636",
+"S 	c #D1A99A",
+"T 	c #EFE9D3",
+"U 	c #E4DEC9",
+"V 	c #7E7B6E",
+"W 	c #8F8C80",
+"X 	c #FDF9E5",
+"Y 	c #F2ECD7",
+"Z 	c #DDA397",
+"` 	c #CE4B4B",
+" .	c #D95151",
+"..	c #E07A74",
+"+.	c #F1E6D1",
+"@.	c #EEE0CC",
+"#.	c #BC5D59",
+"$.	c #A13333",
+"%.	c #932E2D",
+"&.	c #D0AE9F",
+"*.	c #F1EBD6",
+"=.	c #E4DECB",
+"-.	c #807D72",
+";.	c #9E9A91",
+">.	c #E8E7D7",
+",.	c #E6C9B9",
+"'.	c #BA4040",
+").	c #C54646",
+"!.	c #D77671",
+"~.	c #F3E8D5",
+"{.	c #F4EEDB",
+"].	c #EFE1CF",
+"^.	c #AE5753",
+"/.	c #8E2929",
+"(.	c #AF736B",
+"_.	c #F2ECD9",
+":.	c #D7D2C0",
+"<.	c #8C8981",
+"[.	c #C5C2BB",
+"}.	c #B3B1A6",
+"|.	c #EEDCCD",
+"1.	c #BA5351",
+"2.	c #CC7771",
+"3.	c #F4EAD9",
+"4.	c #F6F1DF",
+"5.	c #F0E5D4",
+"6.	c #CDA398",
+"7.	c #EDE0D0",
+"8.	c #F2EDDC",
+"9.	c #A9A596",
+"0.	c #B6B3AE",
+"a.	c #8D8A7F",
+"b.	c #F5F4ED",
+"c.	c #F9F4E4",
+"d.	c #F8F3E3",
+"e.	c #EFEADB",
+"f.	c #7D7A6E",
+"g.	c #8F8B80",
+"h.	c #FEFDF4",
+"i.	c #FEFBEF",
+"j.	c #FDFBEF",
+"k.	c #FEFCEF",
+"l.	c #F2EFE1",
+"m.	c #8C877A",
+"n.	c #969389",
+"o.	c #9C998F",
+"p.	c #9C998E",
+"q.	c #9B988F",
+"r.	c #959288",
+"s.	c #8E8A81",
+"      . +             @ # $     ",
+"    % & * =         - ; > ,     ",
+"      ' ) ! ~     { ] ^ /       ",
+"( _ : < [ } | 1 2 3 4 5 6 7 7 8 ",
+"9 0 a a b c d e f g h i j j k l ",
+"m n o o o p q r s t u o o o v w ",
+"x y z z z A B C D E F z z z G H ",
+"I J K K L M N O P Q R S K T U V ",
+"W X Y Z `  ...+. at .#.$.%.&.*.=.-.",
+";.>.,.'.).!.~.{.{.].^./.(._.:.<.",
+"[.}.|.1.2.3.4.4.4.4.5.6.7.8.9.0.",
+"  a.b.c.d.d.d.d.d.d.d.d.d.e.f.  ",
+"    g.h.i.j.j.j.j.j.j.k.l.m.    ",
+"      n.o.o.o.o.o.p.q.r.s.      ",
+"                                ",
+"                                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/coalesce.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/coalesce.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/coalesce.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const coalesce_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"  .             ",
+" ...       ...  ",
+"  .       ..... ",
+".....     ..... ",
+"  .        ...  ",
+" . .        .   ",
+".   .  . .......",
+"       ..   .   ",
+"  .  ...+.  .   ",
+" ... .++++. .   ",
+"  .  ...+.  .   ",
+".....  ..  . .  ",
+"  .    .  .   . ",
+" . .     .     .",
+".   .           ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/commit.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/commit.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/commit.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,29 @@
+/* XPM */
+static const char* const commit_xpm[] = {
+"16 16 10 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #7F7F7F",
+"#	c #DFDFDF",
+"$	c #1F1F1F",
+"%	c #3F3F3F",
+"&	c #5F5F5F",
+"*	c #9F9F9F",
+"=	c #BFBFBF",
+"    ......      ",
+"    .++++.      ",
+"    ...++.      ",
+"   ....++....   ",
+"    ..++++..    ",
+"     ..++..     ",
+"    . at ....@.    ",
+"   .@@@..@@@.   ",
+"   ..@@@@@@..   ",
+"   ........#.   ",
+"   ..$%&@*=#.   ",
+"   ..$%&@*=#.   ",
+"   ..$%&@*=#.   ",
+"   ..$%&@*=#.   ",
+"    .$%&@*=.    ",
+"     ......     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/compile.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/compile.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/compile.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,85 @@
+/* XPM */
+static const char* const compile_xpm[] = {
+"16 16 66 1",
+" 	c None",
+".	c #929253",
+"+	c #767611",
+"@	c #B7B79F",
+"#	c #FDFDAA",
+"$	c #EFEF12",
+"%	c #888800",
+"&	c #B5B59D",
+"*	c #FDFDDB",
+"=	c #F7F758",
+"-	c #969600",
+";	c #B3B39A",
+">	c #FCFCDB",
+",	c #F7F763",
+"'	c #989804",
+")	c #B0B096",
+"!	c #FDFDDD",
+"~	c #F8F865",
+"{	c #909004",
+"]	c #ADAD7F",
+"^	c #FDFDB7",
+"/	c #FFFF32",
+"(	c #F9F904",
+"_	c #D8D800",
+":	c #D5D500",
+"<	c #CFCF00",
+"[	c #D2D264",
+"}	c #D5D51C",
+"|	c #E6E617",
+"1	c #FFFF2C",
+"2	c #FFFF1B",
+"3	c #FAFA00",
+"4	c #ADAD00",
+"5	c #56561D",
+"6	c #D4D4C0",
+"7	c #FFFFC7",
+"8	c #FBFB37",
+"9	c #B2B200",
+"0	c #D7D7C5",
+"a	c #FFFFDF",
+"b	c #FFFF83",
+"c	c #ABAB09",
+"d	c #D6D6C1",
+"e	c #FFFFDE",
+"f	c #FFFF87",
+"g	c #FFFF08",
+"h	c #C2C200",
+"i	c #B6B600",
+"j	c #696901",
+"k	c #C7C793",
+"l	c #F1F187",
+"m	c #F1F14E",
+"n	c #F7F70D",
+"o	c #FFFF02",
+"p	c #FDFD00",
+"q	c #BBBB00",
+"r	c #949463",
+"s	c #FEFE4C",
+"t	c #BCBC00",
+"u	c #7D7D51",
+"v	c #F7F7A2",
+"w	c #BDBD0A",
+"x	c #D1D19E",
+"y	c #BEBE14",
+"z	c #979775",
+"A	c #BFBF4B",
+"                ",
+"         .+     ",
+"        @#$%    ",
+"       &*=-     ",
+"      ;>,'      ",
+"     )!~{       ",
+"    ]^/(_::<    ",
+"    [}:|1234    ",
+"      56789     ",
+"      0abc      ",
+"     defghij    ",
+"    klmnopq     ",
+"       rst      ",
+"      uvw       ",
+"      xy        ",
+"     zA         "};

Added: kde-extras/tora/branches/upstream/current/src/icons/connect.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/connect.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/connect.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,27 @@
+/* XPM */
+static const char* const connect_xpm[] = {
+"16 14 10 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFC5",
+"@	c #313031",
+"#	c #FFFF00",
+"$	c #312C31",
+"%	c #C5C200",
+"&	c #7F7F7F",
+"*	c #FFFFFF",
+"=	c #FF0000",
+"          .+    ",
+"       .+ @#$.+ ",
+"        .#%#%#  ",
+"      & .%+++%$ ",
+"     &.+##+*+##+",
+"    &===.%+++%. ",
+"   &====.#%#%#  ",
+"   &===.+=.#..+ ",
+"   &=====&.+    ",
+"   &====&.      ",
+"  &#&&&&.       ",
+" &#&&...        ",
+"&#&&            ",
+" &&             "};

Added: kde-extras/tora/branches/upstream/current/src/icons/copy.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/copy.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/copy.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+/* XPM */
+static const char* const copy_xpm[] = {
+"16 16 6 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #000082",
+"#	c #3C3CFD",
+"$	c #8B8BFD",
+"......          ",
+".++++..         ",
+".+..+.+.        ",
+".++++.++.       ",
+".+..+.@@@@@     ",
+".++++. at +++@@    ",
+".+...+ at +.+@#@   ",
+".+++++ at +++@$#@  ",
+".+...+ at +.+@+$#@ ",
+".+++++ at +++@@@@@@",
+".+...+ at +..+++++@",
+"...... at ++++++++@",
+"      @+......+@",
+"      @++++++++@",
+"      @+......+@",
+"      @@@@@@@@@@"};

Added: kde-extras/tora/branches/upstream/current/src/icons/copyuser.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/copyuser.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/copyuser.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const copyuser_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #545454",
+"@	c #00FF00",
+"   ...    ...   ",
+"  .+++.  .+++.  ",
+"  .+++.  .+++.  ",
+"  .+++.  .+++.  ",
+"   ..........   ",
+" ..+.@@@@@@@... ",
+".+++.........++.",
+".++++++.+++++++.",
+".+++.........++.",
+".+++.@@@@@@@.++.",
+" .++.........+. ",
+" .++.++..++.++. ",
+" .++.++..++.++. ",
+" .++.++..++.++. ",
+" .++.++..++.++. ",
+"  .. ..  .. ..  "};

Added: kde-extras/tora/branches/upstream/current/src/icons/cut.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/cut.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/cut.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const cut_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #000055",
+"@	c #000082",
+"       .    .   ",
+"       .    .   ",
+"       .    .   ",
+"       ..  .    ",
+"        .  .    ",
+"        ....    ",
+"         ..     ",
+"         ..     ",
+"         ++     ",
+"       @@@@@@   ",
+"      @  @@  @  ",
+"     @   @@   @ ",
+"     @   @@   @ ",
+"     @   @ @  @ ",
+"     @  @   @@  ",
+"      @@        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/database.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/database.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/database.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,28 @@
+/* XPM */
+static const char* const database_xpm[] = {
+"16 16 9 1",
+" 	c None",
+".	c #000000",
+"+	c #7F7F7F",
+"@	c #DFDFDF",
+"#	c #1F1F1F",
+"$	c #3F3F3F",
+"%	c #5F5F5F",
+"&	c #9F9F9F",
+"*	c #BFBFBF",
+"                ",
+"                ",
+"                ",
+"     ......     ",
+"    .++++++.    ",
+"   .++++++++.   ",
+"   ..++++++..   ",
+"   ........ at .   ",
+"   ..#$%+&*@.   ",
+"   ..#$%+&*@.   ",
+"   ..#$%+&*@.   ",
+"   ..#$%+&*@.   ",
+"    .#$%+&*.    ",
+"     ......     ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/deindent.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/deindent.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/deindent.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const deindent_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000000",
+"@	c #00FF00",
+"                ",
+" .++++++++++++. ",
+" .............. ",
+" .......+++.... ",
+" .............. ",
+" ..++...++++++. ",
+" .+ at +++........ ",
+" +@@@@+.++++... ",
+" .+ at +++........ ",
+" ..++...+++.... ",
+" .............. ",
+" .......+++++++ ",
+" .............. ",
+" .+++++++...... ",
+" .............. ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/delwatch.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/delwatch.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/delwatch.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,104 @@
+/* XPM */
+static const char* const delwatch_xpm[] = {
+"16 16 85 1",
+" 	c None",
+".	c #000000",
+"+	c #262626",
+"@	c #828282",
+"#	c #D2D2D2",
+"$	c #D7D7D7",
+"%	c #A2A2A2",
+"&	c #393939",
+"*	c #00FF00",
+"=	c #8C8C8C",
+"-	c #FAFAFA",
+";	c #FFFFFF",
+">	c #FCFCFC",
+",	c #BABABA",
+"'	c #E8E8E8",
+")	c #FDFDFD",
+"!	c #FBFBFB",
+"~	c #F9F9F9",
+"{	c #F1F1F1",
+"]	c #333333",
+"^	c #ABABAB",
+"/	c #F3F3F3",
+"(	c #EFEFEF",
+"_	c #EEEEEE",
+":	c #EBEBEB",
+"<	c #646464",
+"[	c #3B3939",
+"}	c #F6F6F6",
+"|	c #F4F4F4",
+"1	c #F0F0F0",
+"2	c #363636",
+"3	c #B0B0B0",
+"4	c #EAEAEA",
+"5	c #E7E7E7",
+"6	c #E5E5E5",
+"7	c #676767",
+"8	c #424040",
+"9	c #E6E6E6",
+"0	c #848484",
+"a	c #696969",
+"b	c #E4E4E4",
+"c	c #343434",
+"d	c #A9A9A9",
+"e	c #A7A7A7",
+"f	c #4D4D4D",
+"g	c #CECECE",
+"h	c #E0E0E0",
+"i	c #DEDEDE",
+"j	c #C2C2C2",
+"k	c #252525",
+"l	c #101010",
+"m	c #CCCCCC",
+"n	c #E3E3E3",
+"o	c #D3D3D3",
+"p	c #282828",
+"q	c #565656",
+"r	c #070707",
+"s	c #9B9B9B",
+"t	c #D9D9D9",
+"u	c #D4D4D4",
+"v	c #4F4F4F",
+"w	c #494646",
+"x	c #535353",
+"y	c #B1B1B1",
+"z	c #DDDDDD",
+"A	c #D0D0D0",
+"B	c #818181",
+"C	c #100F0F",
+"D	c #2E2E2E",
+"E	c #ADADAD",
+"F	c #9A9A9A",
+"G	c #A4A4A4",
+"H	c #0E0E0E",
+"I	c #232323",
+"J	c #201F1F",
+"K	c #4A4A4A",
+"L	c #494949",
+"M	c #434343",
+"N	c #141313",
+"O	c #5C5A5A",
+"P	c #464444",
+"Q	c #494747",
+"R	c #525050",
+"S	c #3D3B3B",
+"T	c #4C4949",
+"                ",
+"                ",
+"                ",
+"  .... .........",
+" +@#$%&.*******.",
+".=-;;>,.........",
+".')!-~{]^/{(_:<[",
+".(}|/{123:4'5678",
+".90ab4'cdefghi<8",
+".jklmnop=qrstuvw",
+" xdyzABCDEFogGH ",
+" .Iff&J  lKLMNO ",
+"   PQR    SQT   ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/describe.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/describe.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/describe.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const describe_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #5F5FFF",
+"#	c #000093",
+"                ",
+"        ...     ",
+"    +++.@@@.    ",
+"    +..@@@@@.   ",
+"    ++.@@@@@.   ",
+"     +.#@@@@.   ",
+"      +.#@@.    ",
+"      +......   ",
+"      +.+  ...  ",
+"      +.+   ... ",
+"      +.+    .. ",
+"     ++.++      ",
+"    ++...++     ",
+"    +..+..+     ",
+"    +++ +++     ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/disbreakpoint.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/disbreakpoint.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/disbreakpoint.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,15 @@
+/* XPM */
+static const char* const disbreakpoint_xpm[] = {
+"8 8 4 1",
+" 	c None",
+".	c #000000",
+"+	c #BEBEBE",
+"@	c #BE0000",
+"  ....  ",
+" .++++. ",
+".++@@++.",
+".+@@@@+.",
+".+@@@@+.",
+".++@@++.",
+" .++++. ",
+"  ....  "};

Added: kde-extras/tora/branches/upstream/current/src/icons/disconnect.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/disconnect.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/disconnect.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,26 @@
+/* XPM */
+static const char* const disconnect_xpm[] = {
+"16 16 7 1",
+" 	c None",
+".	c #000000",
+"+	c #7F7F7F",
+"@	c #FF0000",
+"#	c #FFFF00",
+"$	c #000055",
+"%	c #000082",
+"        .++++++ ",
+"  .    ..@@@@@+ ",
+"+++++++..@@@@@..",
+"#######..@@@@@+ ",
+"+++++++.@@@@@@..",
+"   .. ..+@@@@@+ ",
+"    .... ++++++ ",
+"     ..         ",
+"     $$         ",
+"   %%%%%%       ",
+"  %  %%  %      ",
+" %   %%   %     ",
+" %   %%   %     ",
+" %   % %  %     ",
+" %  %   %%      ",
+"  %%            "};

Added: kde-extras/tora/branches/upstream/current/src/icons/down.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/down.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/down.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,30 @@
+/* XPM */
+static const char* const down_xpm[] = {
+"16 16 11 1",
+" 	c None",
+".	c #383838",
+"+	c #000000",
+"@	c #404040",
+"#	c #777777",
+"$	c #6F6F6F",
+"%	c #A6A6A6",
+"&	c #F7F7F7",
+"*	c #DEDEDE",
+"=	c #BFBFBF",
+"-	c #E6E6E6",
+"                ",
+"                ",
+"  .++++++++++.  ",
+"  .@#$$$$$$.+.  ",
+"  %@&******.+%  ",
+"   .=-****%+.   ",
+"   %@&****.+%   ",
+"    .=-**%+.    ",
+"    %@&**.+%    ",
+"     .=-%+.     ",
+"     %@&.+%     ",
+"      .=+.      ",
+"      %@+%      ",
+"       ..       ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/droptablespace.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/droptablespace.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/droptablespace.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,27 @@
+/* XPM */
+static const char* const droptablespace_xpm[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 5 1",
+"  c black",
+". c gray50",
+"X c red",
+"o c gray100",
+"O c None",
+/* pixels */
+"OOOOO     XX  XX",
+"OOOO .... XXXXXX",
+"OOO ...... XXXX ",
+"OOO  ...   XXXX ",
+"OOO o   . XXXXXX",
+"OO      . XX  XX",
+"O ......    ..  ",
+" ........     o ",
+"  ......  ooooo ",
+" o      o oooo  ",
+" oooooooo     o ",
+"  oooooo  ooooo ",
+" o      o oooo O",
+" oooooooo     OO",
+"O oooooo OOOOOOO",
+"OO      OOOOOOOO"
+};

Added: kde-extras/tora/branches/upstream/current/src/icons/duplicaterecord.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/duplicaterecord.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/duplicaterecord.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const duplicaterecord_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #FFFFFF",
+"       .........",
+"       .+++++++.",
+"       .........",
+"...........     ",
+"@@@@@@@@@@.     ",
+".. at .@. at .........",
+"@@@@@@@.+++++++.",
+". at ...@..........",
+"@@@@@@@@@@.     ",
+"@. at ..@. at .@.     ",
+"@@@@@@@@@@.     ",
+"... at .@.. at ..     ",
+"@@@@@@@@@@.     ",
+"... at .@@.. at .     ",
+"@@@@@@@@@@.     ",
+"@... at .@....     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/enablebreak.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/enablebreak.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/enablebreak.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,34 @@
+/* XPM */
+static const char* const enablebreak_xpm[] = {
+"16 16 15 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #00FF00",
+"#	c #FF0000",
+"$	c #FF0303",
+"%	c #FF8484",
+"&	c #FF0707",
+"*	c #FFC9C9",
+"=	c #FF1111",
+"-	c #FF1F1F",
+";	c #FF2828",
+">	c #FF0F0F",
+",	c #FF1313",
+"'	c #FF9999",
+"    .........   ",
+"   .+++++++. at .  ",
+"  .++#####.@@@. ",
+" .++#####.@@@@@.",
+".++######... at ...",
+".+#########. at .+.",
+".+$+++++%+%. at .+.",
+".+&*#=+-+;+...+.",
+".+>#*=+-+;+...+.",
+".+#++,+='+%. at .+.",
+".+#########. at .+.",
+".++######... at ...",
+" .++#####.@@@@@.",
+"  .++#####.@@@. ",
+"   .+++++++. at .  ",
+"    .........   "};

Added: kde-extras/tora/branches/upstream/current/src/icons/eraselog.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/eraselog.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/eraselog.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const eraselog_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #8E8E8E",
+"              ..",
+"            ....",
+"           .+.. ",
+"...........+++. ",
+".++++++++.+++.  ",
+".+....++.+++.   ",
+".++++++.+++.    ",
+".+..++.+++.     ",
+".++++. at .+.      ",
+".+..+.@@..      ",
+".+++++..+.      ",
+".+...++++.      ",
+".++++++++.      ",
+".+.....++.      ",
+".++++++++.      ",
+"..........      "};

Added: kde-extras/tora/branches/upstream/current/src/icons/execute.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/execute.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/execute.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const execute_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #0FFE14",
+"                ",
+"                ",
+"                ",
+"     .          ",
+"     ..         ",
+"     .+.        ",
+"     .++.       ",
+"     .+++.      ",
+"     .+++.      ",
+"     .++.       ",
+"     .+.        ",
+"     ..         ",
+"     .          ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/executeall.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/executeall.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/executeall.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const executeall_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #0FFE14",
+"     .          ",
+"     ..         ",
+"     .+.        ",
+"     .++.       ",
+"     .+++.      ",
+"     .+++.      ",
+"     .++.       ",
+"     .+.        ",
+"     ..         ",
+"     .+.        ",
+"     .++.       ",
+"     .+++.      ",
+"     .+++.      ",
+"     .++.       ",
+"     .+.        ",
+"     ..         "};

Added: kde-extras/tora/branches/upstream/current/src/icons/executestep.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/executestep.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/executestep.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const executestep_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #0FFE14",
+"                ",
+"                ",
+"                ",
+"  .             ",
+"  ..            ",
+"  .+.           ",
+"  .++.          ",
+"  .+++.         ",
+"  .+++.         ",
+"  .++.          ",
+"  .+.           ",
+"  ..  ..  ..  ..",
+"  .   ..  ..  ..",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/explainplan.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/explainplan.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/explainplan.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,26 @@
+/* XPM */
+static const char* const explainplan_xpm[] = {
+"16 16 7 1",
+" 	c None",
+".	c #000000",
+"+	c #5F5FFF",
+"@	c #0000FF",
+"#	c #87CEEB",
+"$	c #000093",
+"%	c #00008B",
+"         ...    ",
+"        .+++.   ",
+"    @@@.+++++.  ",
+"    @##.+++++.  ",
+"    @#@.$++++.  ",
+"    @#@@.$++.   ",
+"    @%%%%.....  ",
+"       .    ... ",
+"       .     ...",
+"   .........  ..",
+"   .       .    ",
+"@@@@@@@ @@@@@@@ ",
+"@#####% @#####% ",
+"@#@@@@% @#@@@@% ",
+"@#@@@@% @#@@@@% ",
+"@%%%%%% @%%%%%% "};

Added: kde-extras/tora/branches/upstream/current/src/icons/fileopen.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/fileopen.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/fileopen.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,21 @@
+/* XPM */
+static const char* const fileopen_xpm[] = {
+"16 13 5 1",
+" 	c None",
+".	c #040404",
+"+	c #F3F704",
+"@	c #F3F7F3",
+"#	c #808304",
+"         ...    ",
+"        .   . . ",
+"             .. ",
+" ...        ... ",
+".+ at +.......     ",
+". at +@+ at +@+ at .     ",
+".+ at +@+ at +@+.     ",
+". at +@+...........",
+".+ at +.#########. ",
+". at +.#########.  ",
+".+.#########.   ",
+"..#########.    ",
+"...........     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/filesave.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/filesave.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/filesave.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,21 @@
+/* XPM */
+static const char* const filesave_xpm[] = {
+"14 14 4 1",
+" 	c None",
+".	c #040404",
+"+	c #808304",
+"@	c #BFC2BF",
+"..............",
+".+.@@@@@@@@. at .",
+".+.@@@@@@@@...",
+".+.@@@@@@@@.+.",
+".+.@@@@@@@@.+.",
+".+.@@@@@@@@.+.",
+".+.@@@@@@@@.+.",
+".++........++.",
+".++++++++++++.",
+".++.........+.",
+".++......@@.+.",
+".++......@@.+.",
+".++......@@.+.",
+" ............."};

Added: kde-extras/tora/branches/upstream/current/src/icons/filter.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/filter.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/filter.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const filter_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #7F7F7F",
+"          .     ",
+"         ..     ",
+"        .+.     ",
+"........++.     ",
+" @@@@@.++ at .     ",
+" @@@@.++ at +.     ",
+" @@@@.+ at ........",
+" @@@@. at +@@@@@@@ ",
+" @@@@.++@@@@@@@ ",
+" @@@@.+ at ........",
+" @@@@. at ++@.     ",
+" @@@@.++ at .      ",
+"......+ at .       ",
+"     . at .        ",
+"     ..         ",
+"     .          "};

Added: kde-extras/tora/branches/upstream/current/src/icons/forward.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/forward.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/forward.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,33 @@
+/* XPM */
+static const char* const forward_xpm[] = {
+"16 16 14 1",
+" 	c None",
+".	c #383838",
+"+	c #A6A6A6",
+"@	c #000000",
+"#	c #BFBFBF",
+"$	c #404040",
+"%	c #FFFFFF",
+"&	c #808080",
+"*	c #F7F7F7",
+"=	c #EEEEEE",
+"-	c #6F6F6F",
+";	c #DEDEDE",
+">	c #E6E6E6",
+",	c #777777",
+"                ",
+"                ",
+" ..+      +@@@. ",
+" @#$.+    @%%&@ ",
+" @%*#$.+  @%=-@ ",
+" @%;>*#$.+@%=-@ ",
+" @%;;;>*#$@%=-@ ",
+" @%;;;;;>*@%=-@ ",
+" @%;;;;;+.@%=-@ ",
+" @%;;;+.@@@%=-@ ",
+" @%;+.@@.+@%=-@ ",
+" @#.@@.+  @%=-@ ",
+" @@@.+    @&,.@ ",
+" ..+      +@@@. ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/function.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/function.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/function.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,21 @@
+/* XPM */
+static const char* const function_xpm[] = {
+"16 16 2 1",
+" 	c white",
+".	c black",
+"                ",
+"                ",
+"                ",
+"   ..  .   .    ",
+"  .   .     .   ",
+"  .   .     .   ",
+"  ..  . . . .   ",
+" ..  .   .   .  ",
+"  .  .   .   .  ",
+"  .   . . . .   ",
+"  .   .     .   ",
+"  .   .     .   ",
+" .     .   .    ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/grid.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/grid.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/grid.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const grid_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"                ",
+"                ",
+" .+.+.+.+.+.+.  ",
+" .++++++++++++  ",
+" .+++.+++.+++.  ",
+" .++++++++++++  ",
+" .+.+.+.+.+.+.  ",
+" .++++++++++++  ",
+" .+++.+++.+++.  ",
+" .++++++++++++  ",
+" .+.+.+.+.+.+.  ",
+" .++++++++++++  ",
+" .+++.+++.+++.  ",
+" .++++++++++++  ",
+" .............  ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/indent.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/indent.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/indent.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const indent_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000000",
+"@	c #00FF00",
+"                ",
+" .++++++++++++. ",
+" .............. ",
+" .......+++.... ",
+" .............. ",
+" ..++...++++++. ",
+" +++ at +......... ",
+" +@@@@+.++++... ",
+" +++ at +......... ",
+" ..++...+++.... ",
+" .............. ",
+" .......+++++++ ",
+" .............. ",
+" .+++++++...... ",
+" .............. ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/index.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/index.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/index.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,21 @@
+/* XPM */
+static const char* const index_xpm[] = {
+"16 16 2 1",
+" 	c white",
+".	c black",
+"                ",
+"                ",
+"     .........  ",
+"     .   .   .  ",
+"     .........  ",
+"  .  .   .   .  ",
+"  .. .   .   .  ",
+"  ............  ",
+"  .. .   .   .  ",
+"  .  .   .   .  ",
+"     .........  ",
+"     .   .   .  ",
+"     .   .   .  ",
+"     .........  ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/insertsaved.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/insertsaved.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/insertsaved.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,29 @@
+/* XPM */
+static const char* const insertsaved_xpm[] = {
+"16 16 10 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #005500",
+"#	c #000D00",
+"$	c #002800",
+"%	c #008F00",
+"&	c #00EE00",
+"*	c #007F00",
+"=	c #004C00",
+"                ",
+"                ",
+" ......         ",
+" .++++.         ",
+" .++++. .       ",
+" .++++. ...     ",
+" .++++.  ...    ",
+" ......   ..    ",
+"           .    ",
+"          ...   ",
+"        ..@#$.. ",
+"         .%&*.  ",
+"          .=.   ",
+"           .    ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/kill.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/kill.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/kill.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,26 @@
+/* XPM */
+static const char* const kill_xpm[] = {
+"16 16 7 1",
+" 	c None",
+".	c #000000",
+"+	c #7F7F7F",
+"@	c #FF0000",
+"#	c #FFFF00",
+"$	c #000055",
+"%	c #000082",
+"        .++++++ ",
+"  .    ..@@@@@+ ",
+"+++++++..@@@@@..",
+"#######..@@@@@+ ",
+"+++++++.@@@@@@..",
+"   .. ..+@@@@@+ ",
+"    .... ++++++ ",
+"     ..         ",
+"     $$         ",
+"   %%%%%%       ",
+"  %  %%  %      ",
+" %   %%   %     ",
+" %   %%   %     ",
+" %   % %  %     ",
+" %  %   %%      ",
+"  %%            "};

Added: kde-extras/tora/branches/upstream/current/src/icons/largelogo.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/largelogo.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/largelogo.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,272 @@
+/* XPM */
+static const char* const largelogo_xpm[] = {
+"341 204 65 1",
+" 	c None",
+".	c #0058A1",
+"+	c #E3B836",
+"@	c #768A69",
+"#	c #A9A051",
+"$	c #D5B23D",
+"%	c #346C88",
+"&	c #0E5D9B",
+"*	c #456E80",
+"=	c #92955D",
+"-	c #B9A54B",
+";	c #1D6594",
+">	c #608074",
+",	c #C7AB43",
+"'	c #1F6BAC",
+")	c #4484BA",
+"!	c #72A1CA",
+"~	c #A7BCDA",
+"{	c #C0D5E8",
+"]	c #F2F5FA",
+"^	c #FFFFFF",
+"/	c #D2DAEB",
+"(	c #81ACD0",
+"_	c #6A92C3",
+":	c #3071AF",
+"<	c #1265A9",
+"[	c #5787BD",
+"}	c #91B5D6",
+"|	c #B9CAE2",
+"1	c #3575B2",
+"2	c #E3EAF3",
+"3	c #015CA3",
+"4	c #0161A7",
+"5	c #296FAE",
+"6	c #3D76B1",
+"7	c #3D7BB6",
+"8	c #4B7DB7",
+"9	c #618ABE",
+"0	c #678EC1",
+"a	c #7998C6",
+"b	c #809ECA",
+"c	c #87A1CC",
+"d	c #92AAD0",
+"e	c #9EB2D4",
+"f	c #B4C2DD",
+"g	c #2D6B8C",
+"h	c #C2CDE4",
+"i	c #C8D1E6",
+"j	c #DAE2EF",
+"k	c #EDEFF7",
+"l	c #F7F8FB",
+"m	c #3D7284",
+"n	c #FBFBFC",
+"o	c #C7D4E4",
+"p	c #E8C867",
+"q	c #F7EBC8",
+"r	c #F4DE97",
+"s	c #68846F",
+"t	c #1465A8",
+"u	c #035AA2",
+"v	c #0158A1",
+"w	c #5E8074",
+"x	c #176196",
+"y	c #738B7B",
+"z	c #4D85AA",
+".......................................................................................................................................++ at ...........................................................................................................................................................................................................",
+".......................................................................................................................................++ at ...........................................................................................................................................................................................................",
+".......................................................................................................................................++ at ..@#####################################################################################################################################################################################################@..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$#@@%%&..........%%*@=#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-@*;........................%>=,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$=>&..........'))))))))))...........%>-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=*........)!~{]^^^^^^^^^^^^^^/{(_:.......;>,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,>&.....<[}/^^^^^^^^^^^^^^^^^^^^^^^^^]|!1......%=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#*.....<_|^^^^^^^^^^^^^2{{{{{{^^^^^^^^^^^^^2}).....&@$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#%.....[|^^^^^^^^]{(_)'............))(~/^^^^^^^^2}'....&@$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++++++++++++++++++++++,%....<(2^^^^^^2~_'........................)({^^^^^^^{)....&@++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++++++++++++++++++++$>....<(]^^^^^2(1.........3333333333333.........<_|^^^^^^2_....;#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++++=;...<(]^^^^]}1......3334444444444444444444433......<_{^^^^^2)....*$++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++++$*....!]^^^^2_<.....34444444444<<<<<<<<<<44444444433.....1~^^^^^{1...&=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++++++++++++++++#;...)/^^^^2_.....3444444<<<''''''''''''''''''<<44444433....'~^^^^^}<...*$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++++ at ...<}^^^^2_....344444<<''''''''5555555555'5''''''''<444443....'~^^^^2)...;-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++++++++++++++$*...1/^^^](....34444<<'''''55::1111111111111111::5''''''<444433...1{^^^^}...&=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++++++++++++,%...!^^^^|'...34444<'''''5:11111116667777776661111111:5''''<<44443...!]^^^/1...>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++++++++++++-&..<~^^^][...34444<''''5111116778888888888888888887611111:5''''<4443...<{^^^][...>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++++++++++-&..</^^^/'..34444<'''5:11167788888888888[[[[88888888888761111:''''<4443...!^^^^!...%$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++++++++++=&..1]^^^}...3444<'''5111168888888[[[[[[[[[[[[[[[[[[[[88888876111:5'''<444...12^^^~...%$++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++++++++-...:]^^]_..3444<'''51116788888[[[[[[[[99999999[8[[[[[[[[[8888886111:''''4443..</^^^~...%$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++++++++-&..1]^^]:..3444<''5:11688888[[[[[[9000_________07:800099[[[[[888886111:'''<444...~^^^/<..%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++++++-&..:]^^21..344<''':11678888[[[[990________________[6:80__009[[[[[888861115'''444...}^^^/<..>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++++++$&..1]^^/<..444<''511178888[[[990______aaaaaaaaaaaaaaa97:80____09[[[[8888611:'''<443.._^^^~...>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++++$%..:]^^/<..444'''51168888[[[90_____aaaaaaaaabbbbbbbaaaa_761[_____09[[[[8887111'''<443.._^^^~...=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++++>..</^^2<..444''':117888[[[90____aaaaaabbccccccccccccccb_[_071[a____09[[[[8886115''<443..(^^^(...-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++++=.../^^]1..444'''1168888[[99[90_aaaaabccccccccccccccccccb[_cbb071[aa___09[[[888611:'''443..~^^^_..&$++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++-...}^^]:..444''5116888[[[90857[0aabccccccddddddddddddddda[bccccb_70aaa___0[[[888711:''<443..|^^]:..*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++%.._^^^_..444''5117888[[90_0109889abccddddddddddddddddddd9addddccccbaaaaa___9[[[88811:'''443.</^^2<.. at +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++>..']^^}..444''51178889[90__88aab0[[0bddddddeeeeeeeeeeeeeb0ddddddddccccaaaa___0[[[88811:''<443.']^^~..&,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++-...{^^/..444''511788[[[9_0[_7_bcccc_[9_bdeeeeeeeeeeeeeeed0beeeeddddddcccbaaaa__09[[88811:''<443.[^^^[..%++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++%..!^^]'.344''511788[[90__6:67bcccdddda90adeee~~~~~~~~~~~c_eeeeeeeedddddcccbaaa__09[[88811:''<44..}^^]<..=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++ at ..']^^_.344<''11788[[90__05'518addddeeee!9_bd~~~~~~~~~~~e_d~~~~eeeeeedddddcccaaa__09[[88811:''<44.<2^^|..&$++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++$&..{^^|..44<''11688[[90__a75555:[ddeeeee~~~b__ce~ffffffffd!~f~~~~~~eeeeeddddcccaaaa_09[[888115''443.)^^^)..>++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++>..[^^]'.444'':16888[90__a_55555:8deeee~~~~~f~(_a(effffff~!dffffff~~~~eeeeedddcccbaa__09[[887115''443.}^^2...,+++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$#@>g++++$#@>g+++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++,...2^^(.344''5168889[0__aa75555:1aeee~~~~fffffff(a!d~||||d!f||ffffff~~~~eeeeddddccbaaa_09[[88611''<44.<]^^(..>+++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ....++++>....+++++++++++++=%%;.+++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++>.._^^2..44<''11888[[0__aa_5555:5[dee~~~fffff|||||fd!!d~hf!eh|h|||fffff~~~~eeeddddccbaa__09[[8861:''443._^^]<..,++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ...%++++ at ...%+++++++++++++ at ....+++++++++++++++++++++++++++++++++@..#++++++++++++++++++++++++++++++,..<]^^[.444'':1788[[9__aaaa7::::1ae~~~fffff||h|hhhih|}!b(!b|hhh|h|h||ffff~~~eeeedddccbaa__0[[[88115''44..2^^(..>++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ...%++++ at ...%+++++++++++++ at ....+++++++++++++++++++++++++++++++++@..#++++++++++++++++++++++++++++++>..!^^{.344''51688[[9__aaaccca811[d~~~ffff||h|hhiiiiiii|}bdfiiiiiih||h||fff~~~~eeedddccbaa__0[[88711''<44.)^^]<..,+++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++++++,=++++++++++++++++++++++++++++++++++++++++++++++++ at ...%++++ at ...%+++++++++++++ at ....+++++++,=$+++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++$&..2^^).44<''11888[90__aacccdddb[b~~~fff||h|hiiiiiii/////i///iiiiiiih||h|ffff~~~eeedddccaaa__9[[8861:''443.{^^(..>+++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++,>;..++++++++++++++++++++++++++++++++++++++++++++++++ at ...%++++ at ...%+++++++++++++#=###+++++>%..#+++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++ at .._^^/.344'':1788[[0__aaba[bddeee~~ffff|h|hiiiii/////i/////i/////iiiiih|h||fff~~~eeedddccaaa_09[[88115'<44._^^2..&$++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++#....++++++++++++++++++++++++++++++++++++++++++++++++#...%++++#...%+++++++++++++++++++++++....#+++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++;../^^_.44<'51188[[9__aabc8:7_dee~~ffff||hiiiii///i////j////j////////iiiih|h|fff~~~eeedddccaa__0[[8861:''443.2^^_..=++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++#....++++++++++++++++++++++++++++++++++++++++++++++++#...%++++#...%+++++++++++++++++++++++....-+++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++-..1^^2.344'':1788[90__aaca5::7)_~~fff|h|hiiii//////j/j/j/jjj/j/j///////iiiih||fff~~~eedddccbaa__9[[88115'<44.!^^{..%++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++#...%++++++++++++++++++++++++++++++++++++++++++++++++#...%++++#...%+++++++++++++++++++++++....++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++>..~^^(.44<''1688[[9__aacc8:::::7dfff|||hiii//////jj/jjjjjjjjjjjj/j//////iiiih|hfff~~~eedddccaaa_0[[88711''44.<]^^'..,+++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++#...%++++++++++++$####$+++++++++++++++$####$+++++++++#...%++++#...%+++++++++++++++++++++++....++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++&..]^^'344'':1788[9__aabca5::::1[eff|h|iiii/////jjjjjjjjjjjjjjjjjjjjhj/////iiih||fff~~eeedddccaa__9[[88115'<43.~^^}.. at +++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++>%%...&%%&.++++++=;......%=+++++++++++=;......%=+++++++#...%++++#...%+++++@%...,++=@%;.++>%%....%%;.#+++++++++++++++++++ at ..#++++++++++$=>=+++++++++++++=..[^^{.34<''1188[[9__aacc7::::17cff||hiiii////jjjjjj222222222222jjj|9}h/////iiih|hfff~~eeeddccbaa__[[8861:''44.)^^2..%+++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++&..........++++-%..........%$+++++++-%..........*$+++++#...%++++#...%++++=....=+++>....++%..........#+++++++++++++++++++ at ..#+++++++,@%... at +++++++++++++>..~^^_.44<'51788[9__aabca5::::19~ffh|iii/////jjjjj2222222222222222j!))_}h~f//iiih||ff~~~eedddccaa__9[[8811''<43.2^^1..,++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++...........+++-&....;%%&....%++++++-&....;%%&....%+++++#...%++++#...%+++,&... at ++++@....++%..........#+++++++++++++++++++ at ..#+++++++ at .....@+++++++++++++;..]^^<344''1188[[9__aaccc8:::17(ff||hii////jjjjj2222222k2kkkk2k222|))))[[9[(f/iii|h|ff~~~eeddccbaa__[[88615'<43.}^^}.. at ++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++@@@...%####+++%...&#+++$@.... at +++++%...&#+++$>.... at ++++#...%++++#...%++$%...>+++++ at ...&++=@#....####$+++++++++++++++++++ at ..#+++++++ at .....@++++++++++++,..)^^{.34<'51688[[0_aabccdb911)9~fh|hiiii/j/jjjj222222kkkkkkkkkkk22!)))))))))[(fiiih|fff~~eedddccaa__9[[8711''44.[^^/..*++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++#...%++++++=....-++++++>...&++++=....-++++++>...&++++#...%++++#...%++>...%++++++=...%+++++....++++++++++++++++++++++++ at ..#+++++++ at .....@++++++++++++=..(^^!.44<':1788[9__aaccdda[[bd~ff||iii////jjj22222kkkkkkkkkkkkkkk|)))))))))7))[(~ih|hff~~~eeddccaaa_0[[8811''<43.^^^<.&++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++#...%++++++*...>+++++++$....=+++*...>+++++++$....#+++#...%++++#...%+ at ...%$++++++#...%+++++....++++++++++++++++++++++++ at ..#+++++++ at .....=++++++++++++>..{^^1344''1188[[0__abccdb)be~~ffh|iii///jjjjj2222kkkkkkkk]k]kkkkk!))))))))))7)7)[b~|||ff~~eedddcbaa__9[88615'<43.|^^[..-+++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++#...%++++++....=++++++++%... at +++....#++++++++%... at +++#...%++++#...%=...&,+++++++#...%+++++....++++++++++++++++++++++++ at ..#+++++++ at .....#++++++++++++;..^^].34<'51688[[__aabcdd00e~~ff||hii////jjj2222kkkkkk]]]]]]]]]]]|[)))))))))))))77)[b~|ff~~~eeddccaa__9[[8711''44.!^^}.. at +++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++#...%+++++-....$++++++++ at ...*++-....$++++++++>...*+++#...%++++#...;&...-++++++++#...%+++++....++++++++++++++++++++++++ at ..#+++++++ at .....#+++++++++++$..)^^{.44<'51788[9__aaccdd_[d~fffh|iii///jjjj222kkkkkk]]]]]]]]]]]]()))))))))))))7)777)[e|ff~~eedddcbaa_0[[8811''44.)^^/..>+++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++#...%+++++#....+++++++++ at ...%++#....+++++++++ at ...%+++#...%++++#........ at ++++++++#...%+++++....++++++++++++++++++++++++ at ..#+++$###>.....#++###-+++++#..!^^(.44'':188[[0__abccddd0_b~f||hii///j/jj222kkkk]]]]]]lllllll]]{~_)[(!))))))))7)7777[~ff~~eedddcbaa_0[[88615'<43.^^^..%++++++++$=>=++,>%..>+++++++++-@>%%...%m@$++++++++#..",
+"+++++++++++++++++++#...%+++++#....+++++++++ at ...%++#....+++++++++ at ...%+++#...%++++#...%%....-+++++++#...%+++++....++++++++++++++++++++++++ at ..#+++ at ...............&+++++ at ..~^^)344''1188[[0_aabcdddedb_dfh|iii///jjj222kkkkk]]]]llllllllllll2/}(jj|_)))))))777777)eff~~eeddccaa__9[88615'<43./^^1..+++++=>%... at +=&....>+++++$=>&............>$++++++#..",
+"+++++++++++++++++++#...%+++++#....+++++++++ at ...%++#....+++++++++ at ...%+++#...%++++#...%,&...%+++++++#...%+++++....++++++++++++++++++++++++ at ..#+++ at ...............%+++++>..{^^'344''1688[9__aaccddeee~d0bf|hi///jjj222kkkkk]]]llllllnnnnlllll]kk]k2}))))))))777777[~f~~eedddcaaa_9[[871:''44.~^^_..-++++%.....@=......=+++++ at ................%$+++++#..",
+"+++++++++++++++++++#...%+++++#....+++++++++ at ...%++#....+++++++++ at ...%+++#...%++++#...%+=....>++++++#...%+++++....++++++++++++++++++++++++ at ..#+++ at ...............%+++++%..^^^.34<'51788[9__aaccddee~~fe!!b~e|/j/jj2222kkk]]]llllnnnnnnnnnnlll]]]]k}))))))7)7)77717[f~~eedddcbaa_0[[8811''44.(^^(..#++++>.....#&......#+++++ at .................%+++++#..",
+"+++++++++++++++++++#...%++++++....#++++++++>...>+++....#++++++++*... at +++#...%++++#...%++*....#+++++#...%+++++....++++++++++++++++++++++++ at ..#+++ at ...............%+++++;..^^/.44<'51788[9__abccddee~~ff~e(b(c}hjjj22kkkk]]]lllnnnnnnnnnnnnnlll]]]k~)))))))))7777717bf~~eeddccaa_0[[8811''44.[^^|.. at ++++@.....*.......++++++ at ....;%@@@@%.......=++++#..",
+"+++++++++++++++++++#...%++++++%...>++++++++&...=+++%...>++++++++&...=+++#...%++++#...%++$&...;$++++#...%+++++....++++++++++++++++++++++++ at ..#+++,###>.....@#####-+++++..)^^{.44<':188[[0_aabcdddee~~ff||ihf}d(~/222kkkk]]]llnnnnnnnnnnnnnnnlll]]]})))))))7)7)77717)e~~eeddccaa__[[88615'<43)^^{.. at ++++@............%++++++>.;@,+++++++-%.....*++++#..",
+"+++++++++++++++++++#...;++++++ at ...&,++++++ at ...&$+++ at ...&$++++++ at ...&$+++#...%++++#...%+++=....*++++#...%+++++....,+++++++++++++++++++++++ at ..#+++++++ at .....#+++++++++++..)^^}.44'':188[[0_aaccddeee~fff|hii//|~d(~/2kkk]]]llnnnnn^n^^^^n^nnnnlll]2[))))))))7)7777717_~~eeddccaa__9[88615'<43<^^2..*++++ at .......;=++-=++++++=#+++++++++++,......++++#..",
+"+++++++++++++++++++#....=++-++$&...%,++++=&... at ++++$&...%,++++=.... at ++++#...%++++#...%++++*.... at +++#...;+++++....>++-++++++++++++++++++++ at ..#+++++++ at .....#++++++++++-..!^^(.44''1188[[_0aaccddee~~ffh|hii////h~}}|jkk]]lllnnnnn^^^^^^^^^nnnnll]~)[))))))))!}0777171d~eeddccaa__9[[8615'<43.^^^..%++++#......%$+++++++++++++++++++++++++%.....++++#..",
+"+++++++++++++++++++$.....&.;+++=.....%@@%....%$+++++=.....%@@%....%+++++=...&++++#...;++++$&...&-++ at ....+++++%....&..$+++++++++++++++++++ at ..#+++++++ at .....#++++++++++#..(^^(344''1188[[__aaccddee~~ff||hii//jjjji~}}|j]]llnnnn^^^^^^^^^^^nnnnll2[)))))))))_ii|(91717_~eedddcaaa_9[[8715'<43.^^^..%++++#......#++++++++++++++++++++++++++ at .....#+++#..",
+"++++++++++++++++++++>......%++++=...........;$+++++++=...........;$+++++ at ....++++#....+++++=....%$+ at ....+++++=.......++++++++++++++++++++ at ..#+++++++ at .....#++++++++++#..(^^_344''1688[[__aaccddee~~ffh|iii///jj222/f}}|kllnnnn^^^^^^^^^^^^nnnll})[)))))))[}///h|!171)eeedddcba__9[[871:'<43.^^^..%++++#.....&+++++++++++++++++++++++++++ at .....#+++#..",
+"+++++++++++++++++++++>.....%+++++-*.......&@$+++++++++-*.......&@$++++++ at ....++++@....++++++%.... at +@....++++++=&.....++++++++++++++++++++ at ..#+++++++ at .....#++++++++++#..(^^)344''1688[9__aaccddee~~ff||iii//jjj222k2/|}{llnnn^^^^^^^^^^^^^nnnn2[[)))))))[_oj//ii~)711b~edddcbaa_9[[871:''44.{^^'.%++++#.....%+++++++++++++++++++++$#@>g;......#+++#..",
+"++++++++++++++++++++++$####++++++++$=@@@@#++++++++++++++$=@@@@#+++++++++$##,+++++$###-++++++$#,++++,##++++++++++####$++++++++++++++++++++ at ..#+++++++ at .....#++++++++++#..(^^)344'51688[9__aaccddee~~ffh|ii////jj222kkkkh!/lnnn^^^^^^^^^^^^^^nnl~[))[))))[}|j///iihd771[~eeddcba__0[[871:'<44.{^^)..++++#.....>+++++++++++++++++$=>;............#+++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++ at .....#++++++++++#..(^^).4<''1688[9__aaccddee~~ff||iii//jjj222kkk]]{(jlnn^^^^^^^^^^^^^n^nk[)[))))))!jjjj//iih|!711deeddcbaa_9[[871:'<44.{^^)..++++#..... at +++++++++++++++#>................#+++#..",
+"++++++++++++++++++++++pp+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++ at .....#++++++++++#..(^^)344'51688[9__aaccddee~~ffh|ii////jj2222kk]]]!{nnn^^^^^^^^^^^^^^nn~[[)[))))[fjjj///iih|fd070edddcba__0[[871:''44.{^^'..++++#..... at +++++++++++++$>..................#+++#..",
+"++++++++++++++++++++q^^r+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++ at .....#++++++++++#..(^^).44''1688[9__aaccddee~~ff||iii//jjj22j|{k]]/(knnnn^^^^^^^^^^^^nn2[))[))[))!jjjj///iih|ffec!edddcbaa_9[[871:'<44.{^^..%++++#..... at ++++++++++++-%.........;m@=>.....#+++#..",
+"+++++++++++++++++++q^^qp+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++ at .....#++++++++++#..(^^!344''1688[[__aaccddee~~ffh|iii///jjj2|__}/]({lnn^n^^^^^^^^^^^n^n}[)[)[)))[f2jjj///iih|fff~eedddcba__0[[871:'<43.^^^..%++++#..... at +++++++++++$%......&>=$++++ at .....#+++#..",
+"+++++++++++++++++++q^r+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++ at .....#++++++++++#..(^^(344''1188[[__aaccddee~~ff||hii//jjj2j())[!(!klnnnnn^^^^^^^^^n^n2[[))[)))[(j2jjj///ii||ff~~eedddcaaa_9[[8715'<43.^^^..%++++#..... at +++++++++++>......@$+++++++ at .....#+++#..",
+"+++++++++++++++++++q^r+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++ at .....#++++++++++,..[^^(.44''1188[[0_aaccddee~~ffh|hii///jjjf[))))[_~/lnnn^n^^^^^^^n^nn}[)[[))))[f22jj///iiih|ff~~eeddccaa__9[[8615'<43.^^^..%++++#..... at ++++++++++,......=+++++++++ at .....#+++#..",
+"++++++++++++++++++rn^qrp++rqqqr++++rrpqr+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++ at .....#+++++++++++..)^^}.44'':188[[0_aabcddeee~fff|hii//j/jj~)))))))[!~/lnnnnn^^^nn^nn2[)[)))[)[!j2jjjj///ih||ff~~eeddccaa__9[88615'<43'^^{..>++++#..... at ++++++++++=..... at ++++++++++@.....#+++#..",
+"++++++++++++++++++^^^^^p+q^^^^^n++p^^n^q+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++s..#+++++++ at .....#+++++++++++..1^^{.44<':188[[0__abcdddee~~ff||iii//jjj|[)))))[))[(knnnn^nnnn^nnn})[))[))))~22jjj///iihh|ff~~eeddccaa__[[88115'443)^^{.. at ++++#..... at ++++++++++>.....-++++++++++ at .....#+++#..",
+"++++++++++++++++++pq^qp+r^np+pn^q++^^nrp+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++ at .....#+++++++++++%..^^/.44<'51788[0__abccddee~~ff|hiii///jj}[)))))))[[~klnnnnnnnnnnn2[[)[))))[_/22jjj///ii||fff~~eeddcbaa_0[[8811''<4.[^^}.. at ++++#..... at ++++++++++%.....+++++++++++ at .....#+++#..",
+"+++++++++++++++++++q^r++n^r+++r^n++^^p++++++++++++++++++++++++++++++++++++++++++++++++++++$#@>%++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++ at .....#+++++++++++%..2^^.34<'51788[9__aaccddee~~ff||hii//j|}[)))))[)))_jlllnnnnnnnnnl~[)[)[)[))~22jjj////iih|ff~~eedddcbaa_0[[8811''44.(^^(..#++++#..... at ++++++++++%.....+++++++++++ at .....#+++#..",
+"+++++++++++++++++++q^r++^^r+++p^^++^^p++++++++++++++++++++++++++++++++++++++++++++++++++++ at ....++++++++++++++++++++++++++++++++++++++++++@..#+++++++ at .....=+++++++++++ at ..{^^1344''1688[9__aaccddeee~fff|hii//i!)))))))))[)|k]lllllnnnlll2[)[))))))_/22jjjj//iih||ff~~eeddccaa__9[[871:''44.|^^)..,++++#..... at ++++++++++*.....#++++++++++ at .....#+++#..",
+"+++++++++++++++++++q^r++^^p+++p^^++^^+++++++++++++++++++++++++++++++++++++++++++++++++++++=....++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++ at .....>+++++++++++=..(^^[344''1188[[0_aabcdddee~~ff||iii/e[7))))))))!{2]]]llllllllll}[))[))))[~22jjj////iih|fff~~eeddccaa__9[88615'<43./^^'..+++++#..... at ++++++++++@.....>++++++++++>.....#+++#..",
+"+++++++++++++++++++q^r++^^p+++r^^++^^+++++++++++++++++++++++++++++++++++++++++++++++++++++#....++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++#.....;$++++++++++#.._^^(.44'':188[[0__abccddee~~fff|hiih!)))))))))){kk]]]]]]llllll2))[)))[))!/2jjjj///iih||ff~~eedddcbaa__[[88615'<43.^^]..%+++++#..... at ++++++++++-......=+++++++$>......#+++#..",
+"+++++++++++++++++++q^r++q^q+++q^q++^^p++++++++++++++++++++++++++++++++++++++++++++++++++++#....++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++-......&>@@%*++++++..'^^{.44<'51788[9__aaccddeee~~ff||iie[7)7)))))))~k]kk]]]]]]]]]]}[)))))))[}22jjj////ii|h|ff~~eedddcbaa_0[[8811''44.)^^|..>+++++#.....%+++++++++++;......>#+++#>&.......#+++#..",
+"+++++++++++++++++++q^r++p^^qrn^^p++^^p++++++++++++++++++++++++++++++++++++++++++++++++++++#....++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++;..........>++++++%..]^^.34<''1688[[__aabcdddee~~ff|hh|_)77))))))))~2kkkkk]]]]]]]j[)))[))))_/2jjj////iih|hff~~~eeddccaa__9[[871:''44.(^^(..=+++++#.....%+++++++++++=.....................=+++#..",
+"+++++++++++++++++++q^r+++rn^^^nr+++^^p++++++++++++++++++++++++++++++++++++++++++++++++++++#....++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++#.......... at ++++++>..|^^)344''1188[[0__aaccddee~~fff||})7777)7))))_/2kkkk]kkkkkkk()))))))))~2jjj/j//iiih||ff~~eedddcbaa__[[88615'<43.{^^)..,+++++#.....%++++++++++++ at ..............&..... at +++#..",
+"+++++++++++++++++++ppp+++++ppp+++++pp+++++++++++++++++++++++++++++++++++++++++++++++++++++#....++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++=&........ at ++++++=.._^^(.44<':1788[9__aaccdddee~~ffff_77777))))))(j22kkkkkkkkkkj[))))))))0{jjjjj///iih||ff~~~eeddccaaa_0[[8811''<43.^^]..;++++++#.....%+++++++++++++ at ...........&@@..... at +++#..",
+"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#...&++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++,@%....g>-++++++$..'^^/.34<'51688[[0_aabccddee~~~ffd)7777777)7))!j22222kkkkkkk()))))))))(/jjj////iih|hfff~~eedddccaa__9[[8711''44.[^^|..>++++++#.;%%g>++++++++++++++-*.......;@$+ at ..%%%=+++#..",
+"++++++++++++++++++++++++,####++++++++++++++++++-##++++++++,####$+++++++++++++++,###,++++++#...%+++++++++++$###-++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++%../^^'344'':188[[9__aaccdddee~~ffc)1777777))))(j22222222k2k/[))))))))[|jj/j///iii||hff~~~eeddccaaa_0[[88615'<43.~^^_..=+++++++++++++++++++++++++++++$#@@@=-++++++++++++++#..",
+"+++++++++++++++++++++$@;......>-++++++++=>%.>-%...++++$=*&......*-++++++++++$@;.....&>,+++$...%+++++++++=%.....&@$+++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++ at ..}^^!.44<'51688[90_aabccddeee~~f~d_7777)77)7[|jjjj22222222()))))))))(/j/j///iii|h|ff~~~eedddccaa__9[[8811''<43.]^^<..$++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++++=&.......... at +++++++%...>;...%++++ at ..........&-++++++++-;.........m++++...%+++++++$*.........&-++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++,..1^^/.34<''1188[[0__aaccdddee~~~ff~[71777777}//jjjjjj2222i)))))))))[|/////iiii||hfff~~eeeddccaaa_0[[8861:''44.[^^|..*+++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++=.....%%%..... at ++++++%...&....>++++ at ....%%&....;+++++++-&.......... at ++++...%+++++++%....m@>&...&,+++++++++++++++++++++ at ..#++++++++++++++++++++++++++++%../^^'.44'':1788[90_aaaccdddee~~fff0717777)0|/j/jjjjjjjjjb)))))))))b/j////iiihh|fff~~~eedddcbaa__9[[88115'<43.~^^_..=+++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++,&...%,+++,%....-+++++ at ........=++++@;@-++++ at ....#+++++$&....>-++,@&@++++...%++++++ at ...%,+++$%...>+++++++++++++++++++++ at ..#++++++++++++++++++++++++++++ at ..!^^}.44<''1188[[9__aabccddeee~~~fd))79_[!~////j/jjjjjji))))))7)7[|////iiii|||fff~~~eedddccaaa_0[[8861:''44.<^^]<..$+++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++>...;$+++++$%...>+++++ at ....%-+$+++++$++++++++%...=+++++ at ....=++++++,,++++...%+++++,...&$+++++$&...,++++++++++++++++++++ at ..#++++++++++++++++++++++++++++,..<^^].344'':1788[[0__aaccdddeee~~~fdc(ff~|ii////////j/j!)7)7)7)))bi//iiiih|h|fff~~~eedddccbaa__9[[88115'<43.(^^~..>++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++&...=+++++++=....+++++ at ....,+++++++++++++++++*... at +++++&...>+++++++++++++...%+++++ at ...@+++++++>...=++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++*..~^^_.44<''1188[[9__aabccdddee~~~ffff|||iiiii////////|)))7)7777)f/iiiiih||hfff~~~eedddccbaa__0[[8861:''443.2^^1..#++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++#....+++++++++....#++++ at ...%+++++++++++++$=@m%&... at ++++#....,+++++++++++++...%+++++%...-+++++++=...>++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++#..1^^2.344'':1688[[0__aabccdddeee~~ffffh||hiiiiii/////!777777)77(hiiiih||h|fff~~~eeedddccaaa_0[[[88115'<44._^^{..;+++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++ at ...%+++++++++%... at ++++@...%++++++++++$@%......... at ++++@...%++++++++++++++...%+++++....%%%%%%%%;...%++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++;..{^^_.44<''11888[[0__aacccdddeee~~~fff|h||hiiiiiiiif)777)7777)eiiih||h|ffff~~~eeedddccaaa__9[[8811:''44..2^^)..=+++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++ at ...%+++++++++%... at ++++@...%+++++++++=&........... at ++++>...>++++++++++++++...%+++++................%++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++=..)^^2.344''51188[[9___aacccdddeee~~~ffff|h||hhiiiii!777777777_|hh||h|ffff~~~~eeedddccaaa__9[[88711''<43._^^{..&$+++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++ at ...%+++++++++%... at ++++@...%++++++++=.....;>=#@... at ++++%... at ++++++++++++++...;+++++................%++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++;..{^^_.344'':1788[[9__aaacccdddeee~~~~ffff|h||||hh~7777777777}|||h|fffff~~~eeeddddccbaa__0[[[88115'<44..2^^).. at ++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++ at ...%+++++++++%... at ++++@...%+++++++$&...%#++++ at ...@++++%... at ++++++++++++++....+++++....############,++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++=..)^^2<.44<''11888[[0__aaacccdddeeee~~~ffffffh|h||_717171717_f|h|fffff~~~~eeeddddccbaa__09[[8861:''443.(^^{..&$++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++ at ...%+++++++++%... at ++++@...%+++++++ at ...;$+++++ at ...@++++>...%+++++++++++++#....+++++....,++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++;..|^^(.344''511888[[0__aaacccdddeeee~~~~fffffff|~6717171717dfffffff~~~~eeeeddddccbaa___9[[88611''<44.<]^^).. at +++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++=...&+++++++++&...#++++ at ...%+++++++>... at ++++++@... at ++++@...&+++++++++++++#....+++++;...=++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++=..']^^'.444'':16888[[0_0aaacccddddeeee~~~~~fffff07171717170~ffff~~~~~~eeeddddcccaaa__09[[887115'<44..|^^~..;$+++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++$....=+++++++-....$++++ at ...%+++++++%... at ++++++@... at ++++,....=++++++++++++#....+++++>...%++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++%..(^^{..44<'':1688[[[0__aaabcccddddeeee~~~~~~~e1171717177d~f~~~~~~~eeeeddddcccaaa___9[[887115''443.)^^]'..=++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++%...%+++++++*...%+++++ at ...%+++++++>...%++++++ at ...@+++++%...&-+++++++ at +++#....+++++#....=++++++++$>+++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++#.../^^!.344<''11688[[[0_0aaabcccddddeeeeee~~~~[1111111119e~~~~~~eeeeeddddcccbaaa__09[[88811:''443.<2^^!..%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++#....>$++++>....#+++++ at ...%+++++++=....=+++$@.... at +++++#....&=++++=%.+++#....++++++%....@$+++++=;.+++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++>..1^^^1.344'''116888[[0___aaaccccdddddeeeeeed1111111117(~~~eeeeeeedddddcccbaaa__09[[88811:''<44..|^^{...-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++>....&m@@;....>++++++ at ...%+++++++$&....;%%&..... at ++++++>......%%&..;+++#....++++++,&....&%@>%...%+++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++$&..(^^/<.444'''11688[[[9___aaabccccddddddeee[:::::::::[deeeeeeeddddddcccbaaaa__09[[88811:''<44.._^^]'.. at ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"++++++++++++++++++++>...........>+++++++ at ...%++++++++=............. at +++++++>..........%+++#....+++++++-;...........%+++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++=.../^^~..444''5116888[[90___aaabccccddddddb1::::::::1_eeeeddddddddcccbaaaa__09[[[88811:''<443.1]^^_..%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++=%.......;=++++++++ at ...;+++++++++#;......>>...%++++++++#%.......%#+++#....-+++++++$@&........>-+++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++>..']^^!..444'''116888[[90___aaaabcccccddd8:::::::::7bdddddddddccccbaaaa___09[[[88711:''<443.<2^^~...-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++,=@@@=-++++++++++,###-+++++++++++=@@@=$+,##$+++++++++++,=@@@=,+++++$##,++++++++++++-@@@@@#$+++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++$%..[^^^[..444'''116888[[[9____aaaabbcccca5555:::::10ddddddccccccbaaaaa___9[[[888711:''<443.</^^/<.. at ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++++>&...!^^]1..444''':118888[[[00___aaaaabbc75555555557acccccccccbaaaaaa___09[[[8886115''<443..~^^]'..*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++++=......~^^]:..444''':117888[[[99_____aaaa0555555555:[cccccbbaaaaaaa___009[[[88881115''<443..~^^]1..%$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++++-........|^^]1..444<''51168888[[[[00____aa7''''5'5556_aaaaaaaaaaa_____09[[[[888711:'''<443..~^^^_..&-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++$&........</^^]:..444<''':1178888[[[[90___['''55'5''5[aaaaaaaa______099[[[[88871115'''4443..~^^^_...-+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++++%......35:.</^^]1..3444'''511178888[[[[9901'''''''''19___________099[[[[[8888611:5''<444...~^^^_...=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++++>......58[[[3</^^][..3444<''':11678888[[[[8'''''''''580______0099[[[[[[8888861115'''<443..<{^^^_...=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++++=.....36[9bdda'<|^^^!...4444'''5:111788888[:'<'<'<'<'5899999[[[[[[[[[8888876111:'''<4443..'/^^^_...=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++#.....37[add~~ff:.~^^^|<..3444<'''5:111678888:'<'<'''':[[[[[[[[[[[888888861111:''''4444...[]^^])...=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++$&....37[cde|hhhhh).!^^^21...4444<'''5:1111678881'<<<<'68888888888888876611115''''<4443...}^^^/1...=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++=.....:[adfhijj2j/hb.)]^^^(...34444<''''5:11111678:'<<58888888888876611111:5''''<4443...1/^^^|<..&=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++*....<[_d~h/222222/hd&'/^^^/1...34444<'''''5:11111115':666666661111111:55''''<44443....(^^^^(...;-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++m....6[deh/22]nn]22iha'.(^^^^}<...344444<''''''55::11:11111111111::55'''''<<44443....)2^^^21...%$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++=...<[ad|i22nnnnn]2/hed<.1/^^^](<...3344444<<''''''''5'5555'5'5''''''''<<444443....){^^^^}<...>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++%..:[ceh/2ln^^^n]2/hec[<..(]^^^2_<....33444444<<<''''''''''''''''<<<4444443.....){^^^^{1...&#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++++$>.79d~h22nn^^^n]2/hdb['...'~^^^^]('.....3344444444<44<<<<<4<44444444443......[{^^^^2_....*$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++++-%-@[0dfh2knn^^nnk2i|d_[&.....'~^^^^^|[.......33444444444444444444433.......'(2^^^^](<...;#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++$&.1--adfh22lnnnnl2jh~d[7........'~^^^^^]~[..........33333333333..........'!/^^^^^2(<...&@$++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++++%.'[0f+dfhj2]nnn]22h|da['..........'(]^^^^^^{().......................'_~2^^^^^^{_.....>,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++++>.3619af+ehi222k222ihed[8......#=;.....[|^^^^^^^^/|(_)1.........<))(}{]^^^^^^^2}'.....>,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++++=.38[ad}|oprfi2222/i|~d_[<..... at +++=%.....<_~]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^/}1.....&>,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++++-&.7[_d}f|h/pphhhhhh|ed_[5.....>++++++->&......1!|2^^^^^^^^^^^^^^^^^^^^^^{}[<......%=$++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++$;.'670[!!!((|r$|h|f~dd_[:.....%$+++++++++=>&.......<)_(|{{]^^^^^^2{{}([1........;>,+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++++%.<[[bd~||{{{{of$eddda[[:.....&,+++++++++++++=>%..............................*@,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++++>.<8[c}}||{{{{{~~h+e0[[8<......#+++++++++++++++++$=@%&....................%>@#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++++=..:6)0_!!(((((!!_[a,=853......=++++++++++++++++++++++++##@@>%%%%%%%*@@=#,+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++++-&.6[0d}~|h{{{{|~~c!_6e=&......>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++$;.5[0(d~||{{{{|~~(a_76;%#&....=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++++%.<66[0_!((((((!!0)[:5'..>$@%@,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++++>.&8[bd}||{{{{{~~}!a[713.%$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++++=.38[ad}||{{{{{f~eba976&.&-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#+++++++++++++++++-&.'67[0!!(((((!!![[755<..=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++$;.5[[d}~||{{{{{~~daa77'.. at ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ at ..#++++++++++++++++*.<[[cd~||{{{{{~~d!a87:..*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++++ at .316)0_!!(((((!!_[87553.%$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++++++++++++=.37[_d}||{{{{{|~~ba976<.&-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++++-&.7[0d}f||{{{{|~~ba_77<..=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++++++++++$%.5[9(d~||{{{{|~~(a_77'..>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++++++++++*.&66[0_!!(((((!!0)[:5'..%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++++ at .38[ad}||{{{{{f~e!a[713.;$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++++++++=..56800!!(((((!!_[[755&.&-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++++-&.<67_[!(!(((((!![[)55<..=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++++++$%.'[[dd~||{{{{{~~daa775..>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++++++*.<[[(d~||{{{{{~~d!a87:..%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++++ at .366[00!!(((((!!_[8655..;$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++++=.37[_d}||h{{{{|~~ba976<.&-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++++-&.'6700!!((((((!![)855<..=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++$%.<610[!!!(((((_![[[55'..>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++++>.<[[cde||{{{{{~~}aa87:..%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+++ at .&8[b}}||{{{{{f~ea![713.;$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#++#..:6)00!!(((((!!!)[7553..-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#+,&.:[9d(f||{{{{|~~ca_77'..=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#$%.5[[dd~||{{{{|~~d!a77'..>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..#>.366[__!!(((((!!_)[:5'..%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..*.38[!d}||{{{{{f~e!a[763.&$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ....8[_d}||{{{{{|~~ba977&..-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ...'6700!!(((((!!_[[)55<..=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..'[[(d~||{{{{{~~daa875..>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..7[dd~||{{{{{~~d!a87:..%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..5[[_!!(((((!!_)[655..&$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..[d}||{{{{{|~~bb077<..-++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at .._df||{{{{|~~ca_77<..=+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"....................................................................................................................................t..++ at ..)!!!(((((!![)[:5<..>++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..!||{{{{{~~}aa871..%+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+"..........................................................uv...........................................................................++ at ..(|{{{{{f~}ba[763.&$+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..[(((((!_![[7553..#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..}{{{{|~~ca_87'.. at +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#..",
+".......................................................................................................................................++ at ..)____[[)77''<..;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>>>@@@@@@@@@@@@@@@@@@@########################################################################################@..",
+".......................................................................................................................................++ at ...........................................................................................................................................................................................................",
+".......................................................................................................................................++wx..........................................................................................................................................................................................................",
+".......................................................................................................................................++yz)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))'''))))6%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"};

Added: kde-extras/tora/branches/upstream/current/src/icons/legend.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/legend.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/legend.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const legend_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"                ",
+"       ........ ",
+"       .++++++. ",
+"       .+..+++. ",
+"       .++++++. ",
+"       .+...++. ",
+"       .++++++. ",
+"       .+.++++. ",
+"       .++++++. ",
+"       .+....+. ",
+"       .++++++. ",
+"       ........ ",
+"                ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/logging.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/logging.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/logging.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const logging_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #8E8E8E",
+"@	c #FFFFFF",
+"             .. ",
+"            .++.",
+"           . at .+.",
+"...........@@@. ",
+".@@@@@@@@.@@@.  ",
+". at .......@@@.   ",
+".@@@@@@.@@@.    ",
+". at .....@@@.     ",
+".@@@@@.. at .      ",
+". at ........      ",
+".@@@@..@@.      ",
+". at ...@@@@.      ",
+".@@@@@@@@.      ",
+".@@@@@@@@.      ",
+".@@@@@@@@.      ",
+"..........      "};

Added: kde-extras/tora/branches/upstream/current/src/icons/minus.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/minus.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/minus.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const minus_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FF0000",
+"                ",
+"                ",
+"                ",
+"       .........",
+"       .+++++++.",
+"       .........",
+"                ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/modconstraint.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/modconstraint.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/modconstraint.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+/* XPM */
+static const char* const modconstraint_xpm[] = {
+"16 16 6 1",
+" 	c None",
+".	c #000000",
+"+	c #3F3F3F",
+"@	c #7F7F7F",
+"#	c #A5A5A5",
+"$	c #4C4C4C",
+"  .+@#.     ..  ",
+"   .+@#.   .$$. ",
+".   .+@#. .$$.$.",
+"#. .##+@#..$.$$.",
+"@#.#@@#@+.$$$$. ",
+"+@#+@@@..$$$..  ",
+".+@#+ at .$$$$..   ",
+" .+@@.$..$.##.  ",
+"  .++.$..$.@@#. ",
+"   ....$$.@#+@#.",
+"      ...@@@#+@#",
+"      .+ at +@@+.+@",
+"      .+@#++. .+",
+"       .+@#.   .",
+"        .+@#.   ",
+"         .+@#.  "};

Added: kde-extras/tora/branches/upstream/current/src/icons/modfile.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/modfile.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/modfile.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const modfile_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #4C4C4C",
+"@	c #7F7F7F",
+"#	c #FFFFFF",
+"            ..  ",
+"           .++. ",
+"          .++.+.",
+"     ......+.++.",
+"    .@@@@.++++. ",
+"   .@@@..+++..  ",
+"   .. at .++++..   ",
+"   .#.+..+.#.   ",
+"   .#.+..+.#.   ",
+"   ..#.++.#..   ",
+"   .#......#.   ",
+"   .########.   ",
+"    .######.    ",
+"     ......     ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/modindex.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/modindex.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/modindex.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+/* XPM */
+static const char* const modindex_xpm[] = {
+"16 16 6 1",
+" 	c None",
+".	c #000000",
+"+	c #4C4C4C",
+"@	c #00FF00",
+"#	c #FFFFFF",
+"$	c #7F7F7F",
+"            ..  ",
+"           .++. ",
+"   ....   .++.+.",
+" ..........+.++.",
+" ..    .. at .+++. ",
+"       .@@.+..  ",
+"      ......    ",
+"......+..+.     ",
+"####..+..+......",
+"$$$$. .++..###.#",
+"####. ...#.###.#",
+"$$$$. ..........",
+"..... .###.###.#",
+"      .###.###.#",
+"      ..........",
+"      .###.###.#"};

Added: kde-extras/tora/branches/upstream/current/src/icons/modtable.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/modtable.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/modtable.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const modtable_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #4C4C4C",
+"@	c #FFFFFF",
+"            ..  ",
+"           .++. ",
+"          .++.+.",
+"...........+.++.",
+".@@@.@@@..++++. ",
+".........+++..  ",
+".@@@. at .++++..   ",
+".@@@..+..+. at .   ",
+"......+..+...   ",
+".@@@. at .++.@@.   ",
+".@@@.@@..@@@.   ",
+".............   ",
+".@@@.@@@.@@@.   ",
+".@@@.@@@.@@@.   ",
+".............   ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/modtablespace.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/modtablespace.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/modtablespace.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const modtablespace_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #7F7F7F",
+"@	c #4C4C4C",
+"#	c #FFFFFF",
+"     ...... ..  ",
+"    .++++++.@@. ",
+"   .++++++.@@. at .",
+"   ..+++... at .@@.",
+"   .#...+.@@@@. ",
+"  .......@@@..+.",
+" .++++.@@@@.++..",
+".++++. at ..@....#.",
+"..+++. at ..@.####.",
+".#.....@@.####..",
+".######.......#.",
+"..######..#####.",
+".#......#.####. ",
+".########.....  ",
+" .######.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/movefile.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/movefile.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/movefile.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const movefile_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #7F7F7F",
+"   ..........   ",
+"   .++++++++.   ",
+"   .+.....+++.  ",
+"   .+.  ...+..  ",
+"   .+. .@@@.@@. ",
+"  ..+...@@@@@@@.",
+" . at ...@@.@@@@@..",
+".@@@@@@@@.....+.",
+"..@@@@@@..+++++.",
+".+......+.++++..",
+".++++++++.....+.",
+"..++++++..+++++.",
+".+......+.++++. ",
+".++++++++.....  ",
+" .++++++.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/new.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/new.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/new.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+/* XPM */
+static const char* const new_xpm[] = {
+"16 14 8 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFC5",
+"@	c #313031",
+"#	c #FFFF00",
+"$	c #312C31",
+"%	c #C5C200",
+"&	c #FFFFFF",
+"                ",
+"                ",
+"       .+       ",
+"    .+ @#$.+    ",
+"     .#%#%#     ",
+"     .%+++%$    ",
+"   .+##+&+##+   ",
+"     .%+++%.    ",
+"     .#%#%#     ",
+"    .+ .#..+    ",
+"       .+       ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/next.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/next.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/next.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,29 @@
+/* XPM */
+static const char* const next_xpm[] = {
+"16 16 10 1",
+" 	c None",
+".	c #383838",
+"+	c #A6A6A6",
+"@	c #000000",
+"#	c #BFBFBF",
+"$	c #404040",
+"%	c #FFFFFF",
+"&	c #F7F7F7",
+"*	c #DEDEDE",
+"=	c #E6E6E6",
+"                ",
+"                ",
+"  ..+           ",
+"  @#$.+         ",
+"  @%&#$.+       ",
+"  @%*=&#$.+     ",
+"  @%***=&#$.+   ",
+"  @%*****=&#$.  ",
+"  @%*****+.@@.  ",
+"  @%***+.@@.+   ",
+"  @%*+.@@.+     ",
+"  @#.@@.+       ",
+"  @@@.+         ",
+"  ..+           ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/nextbug.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/nextbug.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/nextbug.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+/* XPM */
+static const char* const nextbug_xpm[] = {
+"16 16 6 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #474747",
+"#	c #AA2323",
+"$	c #777777",
+"          ...   ",
+"          .+.   ",
+"          .+.   ",
+" .  @. ....+....",
+" .  .@ .+++++++.",
+" @.  ......+....",
+"  @..#@@#..+.   ",
+"    .@$$@..+.   ",
+"    .@$$@....   ",
+"....@@$$@@....  ",
+"   .@$$$$@.     ",
+"  ..@@$$@@..    ",
+" . at .@@@@@@. at .   ",
+".@  ......  @.  ",
+".            .  ",
+".            .  "};

Added: kde-extras/tora/branches/upstream/current/src/icons/noclock.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/noclock.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/noclock.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,105 @@
+/* XPM */
+static const char* const noclock_xpm[] = {
+"16 16 86 1",
+" 	c None",
+".	c #848584",
+"+	c #545454",
+"@	c #5D5D5D",
+"#	c #555555",
+"$	c #A1A1A1",
+"%	c #8B8C8B",
+"&	c #A3A2A3",
+"*	c #EBECEB",
+"=	c #DDDCDD",
+"-	c #EFF1EF",
+";	c #6D6E6D",
+">	c #CECFCE",
+",	c #ADADAD",
+"'	c #6B6D6B",
+")	c #303130",
+"!	c #0D0C0D",
+"~	c #5A5B5A",
+"{	c #565656",
+"]	c #E2E1E2",
+"^	c #FF9494",
+"/	c #FF0000",
+"(	c #141414",
+"_	c #191819",
+":	c #DDDEDD",
+"<	c #989898",
+"[	c #DBDADB",
+"}	c #C6C6C6",
+"|	c #F6F6F6",
+"1	c #AFAFAF",
+"2	c #313131",
+"3	c #E8E7E8",
+"4	c #9A9A9A",
+"5	c #C2C1C2",
+"6	c #DFDFDF",
+"7	c #727272",
+"8	c #323232",
+"9	c #868586",
+"0	c #383938",
+"a	c #B5B5B5",
+"b	c #C7C9C7",
+"c	c #D2D2D2",
+"d	c #868886",
+"e	c #0E0E0E",
+"f	c #ECEBEC",
+"g	c #E2E2E2",
+"h	c #9E9C9E",
+"i	c #111111",
+"j	c #161716",
+"k	c #F9F9F9",
+"l	c #F4F4F4",
+"m	c #181818",
+"n	c #4F514F",
+"o	c #5C5C5C",
+"p	c #B0B1B0",
+"q	c #DEDEDE",
+"r	c #716F71",
+"s	c #454545",
+"t	c #BCBBBC",
+"u	c #1B1B1B",
+"v	c #929292",
+"w	c #212021",
+"x	c #A4A3A4",
+"y	c #676867",
+"z	c #363736",
+"A	c #B3B3B3",
+"B	c #8C8C8C",
+"C	c #A6A6A6",
+"D	c #CCCBCC",
+"E	c #808180",
+"F	c #999999",
+"G	c #C1C0C1",
+"H	c #6B6B6B",
+"I	c #1A1A1A",
+"J	c #595759",
+"K	c #959795",
+"L	c #616061",
+"M	c #1C1D1C",
+"N	c #585958",
+"O	c #EAEAEA",
+"P	c #BEBEBE",
+"Q	c #5A5C5A",
+"R	c #232223",
+"S	c #1F201F",
+"T	c #535353",
+"U	c #B3B1B3",
+"      .+@#$     ",
+"     %&*=-;>    ",
+"     ,')!~{]    ",
+"   ^/^////^     ",
+"   ///^(_^/^:   ",
+"   ^///^<[^/^}  ",
+"   /^///^|1^/23 ",
+"  4/5^///^67/89 ",
+"  0/ab^///^c/d2 ",
+"  e/^fg^///^/hi ",
+"  j^/^kl^///^4m ",
+"  no^/^pq^///rs ",
+"  tuv^////^/^wx ",
+"   yzABCDEFGs{  ",
+"    HIJFFKLMNO  ",
+"     PQReSTU    "};

Added: kde-extras/tora/branches/upstream/current/src/icons/nofilter.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/nofilter.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/nofilter.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const nofilter_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #FF0000",
+"#	c #7F7F7F",
+"          .     ",
+"         ..     ",
+"        .+. @@  ",
+"........++.@@@  ",
+" #####.++#@@@   ",
+" ####.++#@@@    ",
+" ####.+#@@@.....",
+" ####.#@@@##### ",
+" ####.@@@###### ",
+" ####@@@........",
+" ###@@@++#.     ",
+" ##@@@++#.      ",
+"..@@@.+#.       ",
+"  @@ .#.        ",
+"     ..         ",
+"     .          "};

Added: kde-extras/tora/branches/upstream/current/src/icons/offline.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/offline.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/offline.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const offline_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #828282",
+"                ",
+"                ",
+"                ",
+"      ....      ",
+"     .++++.     ",
+"    .++.+++.    ",
+"    .+++.++.    ",
+"    .++.+++.    ",
+"     .++++.     ",
+"      ....      ",
+"      .++.      ",
+"      ....      ",
+"      .++.      ",
+"       ..       ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/online.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/online.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/online.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const online_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #FFFF00",
+"+	c #000000",
+"@	c #828282",
+"                ",
+"      .  .      ",
+"                ",
+"    . ++++ .    ",
+"     +....+     ",
+"  . +......+ .  ",
+"    +......+    ",
+"  . +......+ .  ",
+"     +....+     ",
+"   .  ++++  .   ",
+"      +@@+      ",
+"      ++++      ",
+"      +@@+      ",
+"       ++       ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/paste.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/paste.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/paste.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,27 @@
+/* XPM */
+static const char* const paste_xpm[] = {
+"16 16 8 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFF00",
+"@	c #848284",
+"#	c #C6C3C6",
+"$	c #848200",
+"%	c #000084",
+"&	c #FFFFFF",
+"     .....      ",
+"   ..+++++..    ",
+"  ...+...+...   ",
+"  . at .#####. at .   ",
+"  .$.#####.$.   ",
+"  . at .......@.   ",
+"  .$@$@$@$@$.   ",
+"  .@$@%%%%%%%   ",
+"  .$@$%&&&&%&%  ",
+"  .@$@%&%%&%&&% ",
+"  .$@$%&&&&%%%% ",
+"  .@$@%&%%&&&&% ",
+"  .$@$%&&&&&&&% ",
+"   ...%&%%%%%&% ",
+"      %&&&&&&&% ",
+"      %%%%%%%%% "};

Added: kde-extras/tora/branches/upstream/current/src/icons/prevbug.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/prevbug.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/prevbug.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+/* XPM */
+static const char* const prevbug_xpm[] = {
+"16 16 6 1",
+" 	c None",
+".	c #000000",
+"+	c #474747",
+"@	c #00FF00",
+"#	c #AA2323",
+"$	c #777777",
+"                ",
+"                ",
+"                ",
+" .  +.  .+  .   ",
+" .  .+ .........",
+" +.  ...@@@@@@@.",
+"  +..#+.........",
+"    .+$$+.      ",
+"    .+$$+.      ",
+"....++$$++....  ",
+"   .+$$$$+.     ",
+"  ..++$$++..    ",
+" .+.++++++.+.   ",
+".+  ......  +.  ",
+".            .  ",
+".            .  "};

Added: kde-extras/tora/branches/upstream/current/src/icons/previous.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/previous.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/previous.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,30 @@
+/* XPM */
+static const char* const previous_xpm[] = {
+"16 16 11 1",
+" 	c None",
+".	c #A6A6A6",
+"+	c #383838",
+"@	c #404040",
+"#	c #000000",
+"$	c #BFBFBF",
+"%	c #F7F7F7",
+"&	c #777777",
+"*	c #E6E6E6",
+"=	c #DEDEDE",
+"-	c #6F6F6F",
+"                ",
+"                ",
+"           .++  ",
+"         .+@@#  ",
+"       .+@$%&#  ",
+"     .+@$%*=-#  ",
+"   .+@$%*===-#  ",
+"  +@$%*=====-#  ",
+"  +##+.=====-#  ",
+"   .+##+.===-#  ",
+"     .+##+.=-#  ",
+"       .+##++#  ",
+"         .+###  ",
+"           .++  ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/print.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/print.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/print.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,26 @@
+/* XPM */
+static const char* const print_xpm[] = {
+"16 16 7 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #808080",
+"#	c #808000",
+"$	c #C0C0C0",
+"%	c #800000",
+"                ",
+"     .........  ",
+"    .++++++++.  ",
+"    .+.....+.   ",
+"   .++++++++.   ",
+"   .+.....+.... ",
+"  .++++++++. at .@.",
+" .......... at .@..",
+".#$#$#$#$#$. at .@.",
+".............@@.",
+".#$#$#$@%%$#. at ..",
+".$#$#$#$#$#$....",
+"............... ",
+" .............  ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/readtablespace.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/readtablespace.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/readtablespace.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+/* XPM */
+static const char* const readtablespace_xpm[] = {
+"16 16 6 1",
+" 	c None",
+".	c #000000",
+"+	c #7F7F7F",
+"@	c #5F5FFF",
+"#	c #FFFFFF",
+"$	c #000093",
+"     .......    ",
+"    .+++.@@@.   ",
+"   .+++.@@@@@.  ",
+"   ..++.@@@@@.  ",
+"   .#...$@@@@.. ",
+"  .......$@@.++.",
+" .++++++........",
+".++++++++.......",
+"..++++++..###...",
+".#......#.####..",
+".########.....#.",
+"..######..#####.",
+".#......#.####. ",
+".########.....  ",
+" .######.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/recall.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/recall.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/recall.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,85 @@
+/* XPM */
+static const char* const recall_xpm[] = {
+"16 16 66 1",
+" 	c None",
+".	c #929253",
+"+	c #767611",
+"@	c #B7B79F",
+"#	c #FDFDAA",
+"$	c #EFEF12",
+"%	c #888800",
+"&	c #B5B59D",
+"*	c #FDFDDB",
+"=	c #F7F758",
+"-	c #969600",
+";	c #B3B39A",
+">	c #FCFCDB",
+",	c #F7F763",
+"'	c #989804",
+")	c #B0B096",
+"!	c #FDFDDD",
+"~	c #F8F865",
+"{	c #909004",
+"]	c #ADAD7F",
+"^	c #FDFDB7",
+"/	c #FFFF32",
+"(	c #F9F904",
+"_	c #D8D800",
+":	c #D5D500",
+"<	c #CFCF00",
+"[	c #D2D264",
+"}	c #D5D51C",
+"|	c #E6E617",
+"1	c #FFFF2C",
+"2	c #FFFF1B",
+"3	c #FAFA00",
+"4	c #ADAD00",
+"5	c #56561D",
+"6	c #D4D4C0",
+"7	c #FFFFC7",
+"8	c #FBFB37",
+"9	c #B2B200",
+"0	c #D7D7C5",
+"a	c #FFFFDF",
+"b	c #FFFF83",
+"c	c #ABAB09",
+"d	c #D6D6C1",
+"e	c #FFFFDE",
+"f	c #FFFF87",
+"g	c #FFFF08",
+"h	c #C2C200",
+"i	c #B6B600",
+"j	c #696901",
+"k	c #C7C793",
+"l	c #F1F187",
+"m	c #F1F14E",
+"n	c #F7F70D",
+"o	c #FFFF02",
+"p	c #FDFD00",
+"q	c #BBBB00",
+"r	c #949463",
+"s	c #FEFE4C",
+"t	c #BCBC00",
+"u	c #7D7D51",
+"v	c #F7F7A2",
+"w	c #BDBD0A",
+"x	c #D1D19E",
+"y	c #BEBE14",
+"z	c #979775",
+"A	c #BFBF4B",
+"                ",
+"         .+     ",
+"        @#$%    ",
+"       &*=-     ",
+"      ;>,'      ",
+"     )!~{       ",
+"    ]^/(_::<    ",
+"    [}:|1234    ",
+"      56789     ",
+"      0abc      ",
+"     defghij    ",
+"    klmnopq     ",
+"       rst      ",
+"      uvw       ",
+"      xy        ",
+"     zA         "};

Added: kde-extras/tora/branches/upstream/current/src/icons/redo.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/redo.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/redo.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,28 @@
+/* XPM */
+static const char* const redo_xpm[] = {
+"16 16 9 1",
+" 	c None",
+".	c #5D5C84",
+"+	c #151584",
+"@	c #000084",
+"#	c #323184",
+"$	c #201F84",
+"%	c #302F84",
+"&	c #1E1E84",
+"*	c #848284",
+"                ",
+"                ",
+"                ",
+"                ",
+"  .+@@@@        ",
+" #@@@@@@@@    @ ",
+" $@      @@@ @@ ",
+" @        @@@@@ ",
+" @         @@@@ ",
+" @        @@@@@ ",
+" %@      @@@@@@ ",
+" &@@*           ",
+"   @@           ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/refresh.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/refresh.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/refresh.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,20 @@
+/* XPM */
+static const char* const refresh_xpm[] = {
+"16 14 3 1",
+" 	c None",
+".	c #7F7F7F",
+"+	c #000000",
+"     ..+++.     ",
+"    .+++++++    ",
+"   .++.    .+   ",
+"   ++.          ",
+"  +++       +   ",
+"+++++++    +++  ",
+" +++++    +++++ ",
+"  +++    +++++++",
+"   +       +++  ",
+"          .++   ",
+"   +.    .++.   ",
+"    +++++++.    ",
+"     .+++..     ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/return.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/return.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/return.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const return_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"                ",
+"                ",
+"                ",
+"                ",
+"          ....  ",
+"     ..   .++.  ",
+"    .+.   .++.  ",
+"   .++.....++.  ",
+"  .++++++++++.  ",
+"  .++++++++++.  ",
+"   .++........  ",
+"    .+.         ",
+"     ..         ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/returnfrom.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/returnfrom.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/returnfrom.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,29 @@
+/* XPM */
+static const char* const returnfrom_xpm[] = {
+"16 16 10 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #005500",
+"#	c #000D00",
+"$	c #002800",
+"%	c #008F00",
+"&	c #00EE00",
+"*	c #007F00",
+"=	c #004C00",
+"                ",
+"                ",
+" ......         ",
+" .++++.         ",
+" .++++. .       ",
+" .++++. ...     ",
+" .++++.  ...    ",
+" ......   ..    ",
+"           .    ",
+"          ...   ",
+"        ..@#$.. ",
+"         .%&*.  ",
+"          .=.   ",
+"           .    ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/rewind.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/rewind.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/rewind.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,32 @@
+/* XPM */
+static const char* const rewind_xpm[] = {
+"16 16 13 1",
+" 	c None",
+".	c #383838",
+"+	c #000000",
+"@	c #A6A6A6",
+"#	c #FFFFFF",
+"$	c #F7F7F7",
+"%	c #808080",
+"&	c #EEEEEE",
+"*	c #404040",
+"=	c #BFBFBF",
+"-	c #E6E6E6",
+";	c #DEDEDE",
+">	c #777777",
+"                ",
+"                ",
+" .++@       @.. ",
+" +#$+     @.+%+ ",
+" +#&+   @.*=$*+ ",
+" +#&+ @.*=$-;++ ",
+" +#&++*=$-;;;++ ",
+" +#&+%$-;;;;;++ ",
+" +#&++.@;;;;;++ ",
+" +#&+.++.@;;;++ ",
+" +#&+ @.++.@;++ ",
+" +#&+   @.++.++ ",
+" +%>+     @.+++ ",
+" .++@       @.. ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/rollback.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/rollback.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/rollback.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,34 @@
+/* XPM */
+static const char* const rollback_xpm[] = {
+"16 16 15 1",
+" 	c None",
+".	c #000000",
+"+	c #F1F1F1",
+"@	c #DADADA",
+"#	c #D6D6D6",
+"$	c #C7C7C7",
+"%	c #7F7F7F",
+"&	c #D5D5D5",
+"*	c #C5C5C5",
+"=	c #1F1F1F",
+"-	c #3F3F3F",
+";	c #5F5F5F",
+">	c #9F9F9F",
+",	c #BFBFBF",
+"'	c #DFDFDF",
+"        .....   ",
+"      ..++++ at .. ",
+" .. ..++++++++#.",
+" .+.++++.....+$.",
+" .++++..     .+.",
+" .+++......  .+.",
+" .++++.%%%%. .+.",
+" ......%%%%%.+&.",
+"   ..%%%%%%.++*.",
+"   ........ at ++. ",
+"   ..=-;%>,...  ",
+"   ..=-;%>,'.   ",
+"   ..=-;%>,'.   ",
+"   ..=-;%>,'.   ",
+"    .=-;%>,.    ",
+"     ......     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/saverecord.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/saverecord.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/saverecord.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const saverecord_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #FFFFFF",
+"              ..",
+"             .+.",
+"            .++.",
+"............++. ",
+"@@@@.+.@@@.++.  ",
+".. at ..++.@.++.   ",
+"@@@@@.++.++.    ",
+". at ...@.+++.     ",
+"@@@@@@@.+..     ",
+"@. at ..@. at .@.     ",
+"@@@@@@@@@@.     ",
+"... at .@.. at ..     ",
+"@@@@@@@@@@.     ",
+"... at .@@.. at .     ",
+"@@@@@@@@@@.     ",
+"@... at .@....     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/scansource.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/scansource.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/scansource.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const scansource_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #5F5FFF",
+"#	c #000093",
+"       ......   ",
+"      ..++++.   ",
+"     .+.++++.   ",
+"    .++.++++.   ",
+"   .......++.   ",
+"   .++.@@@.+.   ",
+"   .+.@@@@@..   ",
+"   .+.@@@@@..   ",
+"   .+.#@@@@..   ",
+"   .++.#@@.+.   ",
+"   .+++......   ",
+"   .++++++...   ",
+"   .+++++++...  ",
+"   .++++++++..  ",
+"   .++++++++.   ",
+"   ..........   "};

Added: kde-extras/tora/branches/upstream/current/src/icons/schema.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/schema.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/schema.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const schema_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #0000FF",
+"+	c #87CEEB",
+"@	c #00008B",
+"#	c #000000",
+"                ",
+"     .......    ",
+"     .+++++@    ",
+"     .+....@    ",
+"     .+....@    ",
+"     .@@@@@@    ",
+"        #       ",
+"        #       ",
+"    #########   ",
+"    #       #   ",
+" ....... .......",
+" .+++++@ .+++++@",
+" .+....@ .+....@",
+" .+....@ .+....@",
+" .@@@@@@ .@@@@@@",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/search.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/search.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/search.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,88 @@
+/* XPM */
+static const char* const search_xpm[] = {
+"16 16 69 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #272727",
+"@	c #3F3F3F",
+"#	c #0E0E0E",
+"$	c #3F3F40",
+"%	c #020202",
+"&	c #CED8D9",
+"*	c #D7E5E8",
+"=	c #C1D4D6",
+"-	c #000000",
+";	c #7F8281",
+">	c #E3F3F4",
+",	c #DCF2F3",
+"'	c #C5E9EE",
+")	c #A8DEE5",
+"!	c #ADE4E8",
+"~	c #010101",
+"{	c #E3F4F3",
+"]	c #EAFBFA",
+"^	c #DEF5F7",
+"/	c #BEEDF1",
+"(	c #90D9DF",
+"_	c #6DC4CC",
+":	c #BAECEF",
+"<	c #101010",
+"[	c #B6D9DD",
+"}	c #D5F2F4",
+"|	c #D0F1F5",
+"1	c #AFE9F0",
+"2	c #8FDFE8",
+"3	c #71C6CE",
+"4	c #79CAD4",
+"5	c #B9DBE0",
+"6	c #0B0B0B",
+"7	c #D7E5E6",
+"8	c #C3EAEC",
+"9	c #B0EAEF",
+"0	c #95E1EA",
+"a	c #76D7E3",
+"b	c #60C1CD",
+"c	c #85CCD2",
+"d	c #CDECF0",
+"e	c #090909",
+"f	c #A8D1D5",
+"g	c #ADDDE2",
+"h	c #8BD7E0",
+"i	c #8ADBE5",
+"j	c #78D8E3",
+"k	c #53C9D4",
+"l	c #43B2BC",
+"m	c #7CC9CD",
+"n	c #AED6DB",
+"o	c #76CBD5",
+"p	c #6FC4CE",
+"q	c #68C6D1",
+"r	c #3EAAB3",
+"s	c #90D5DB",
+"t	c #7AC4CB",
+"u	c #89C8D0",
+"v	c #00FFFF",
+"w	c #B9DADE",
+"x	c #CAEAED",
+"y	c #ADD6DA",
+"z	c #404041",
+"A	c #070707",
+"B	c #00C0C0",
+"C	c #707071",
+"D	c #C3C3C3",
+"    +@#         ",
+"  $%&*=-$       ",
+" $;>,')!;$      ",
+" ~{]^/(_:-      ",
+"<[}^|123456     ",
+"+78/90abcde     ",
+"6fghijklmn-     ",
+" -/opqlr/-      ",
+" $;/stu/;-v     ",
+"  $-wxy-zv--    ",
+"    ~A~ B-CD-   ",
+"         -zCD-  ",
+"          -zCD- ",
+"           -zCD-",
+"            -zC-",
+"             -- "};

Added: kde-extras/tora/branches/upstream/current/src/icons/sequence.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/sequence.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/sequence.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const sequence_xpm[] = {
+"16 16 3 1",
+" 	c white",
+".	c black",
+"X	c blue",
+"                ",
+"  .             ",
+" ..  XXXXXXXX   ",
+"  .         X   ",
+"  .       X X X ",
+" ...  ..   XXX  ",
+"     .  .   X   ",
+"        .       ",
+"       .   ..   ",
+"      .   .  .  ",
+"     ....    .  ",
+"           ..   ",
+"             .  ",
+"          .  .  ",
+"           ..   ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/shrink.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/shrink.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/shrink.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,34 @@
+/* XPM */
+static const char* const shrink_xpm[] = {
+"16 16 15 1",
+" 	c None",
+".	c #000000",
+"+	c #A7A7A7",
+"@	c #D3D3D3",
+"#	c #AFAFAF",
+"$	c #B6B6B6",
+"%	c #BDBDBD",
+"&	c #C5C5C5",
+"*	c #CCCCCC",
+"=	c #DADADA",
+"-	c #E1E1E1",
+";	c #E9E9E9",
+">	c #F0F0F0",
+",	c #F7F7F7",
+"'	c #00FF00",
+"      .+ at .      ",
+"      .+ at .      ",
+"      .+ at .      ",
+"  ............  ",
+" .+#$%&*@=-;>,. ",
+" .............. ",
+"   .''''''''.   ",
+"  .''''''''''.  ",
+"  .''''''''''.  ",
+"   .''''''''.   ",
+" .............. ",
+" .+#$%&*@=-;>,. ",
+"  ............  ",
+"      .+ at .      ",
+"      .+ at .      ",
+"      .+ at .      "};

Added: kde-extras/tora/branches/upstream/current/src/icons/single.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/single.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/single.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,21 @@
+/* XPM */
+static const char* const single_xpm[] = {
+"16 16 2 1",
+" 	c None",
+".	c #000000",
+"                ",
+"                ",
+"       ...      ",
+"      ....      ",
+"     .....      ",
+"     .....      ",
+"      ....      ",
+"      ....      ",
+"      ....      ",
+"      ....      ",
+"      ....      ",
+"      ....      ",
+"     ......     ",
+"     ......     ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/sql.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/sql.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/sql.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,36 @@
+/* XPM */
+static const char* const sql_xpm[] = {
+"16 16 17 1",
+" 	c None",
+".	c #000000",
+"+	c #5D5DFB",
+"@	c #5F5FFF",
+"#	c #3F3FAB",
+"$	c #2B2B74",
+"%	c #4242B2",
+"&	c #5E5EFE",
+"*	c #21215B",
+"=	c #4C4CCE",
+"-	c #5C5CF7",
+";	c #313185",
+">	c #1A1A47",
+",	c #303081",
+"'	c #5959F0",
+")	c #242463",
+"!	c #2D2D7B",
+"                ",
+" ...  ...  ..   ",
+".  . .  .  .    ",
+"..   .   . .    ",
+"  .  ..... .    ",
+"   . .+@#. .    ",
+".  ..$%&*=..  . ",
+" .. .-;>, at ..... ",
+"    .@@')!.     ",
+"     .@@@.      ",
+"      .....     ",
+"         ...    ",
+"          ...   ",
+"           ..   ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/stepinto.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/stepinto.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/stepinto.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const stepinto_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #FFFFFF",
+"                ",
+"                ",
+"                ",
+"    ....   .    ",
+"  ..........    ",
+" ...    ..+.    ",
+"..      .++.    ",
+".      .....    ",
+"                ",
+"         ...... ",
+"         .@@@@. ",
+"         .@@@@. ",
+"         .@@@@. ",
+"         .@@@@. ",
+"         ...... ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/stepover.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/stepover.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/stepover.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const stepover_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #00FF00",
+"@	c #FFFFFF",
+"                ",
+"                ",
+"                ",
+"      ....   .  ",
+"    ..........  ",
+"   ...    ..+.  ",
+"  ..      .++.  ",
+"  .      .....  ",
+"                ",
+"     ......     ",
+"     .@@@@.     ",
+"     .@@@@.     ",
+"     .@@@@.     ",
+"     .@@@@.     ",
+"     ......     ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/stop.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/stop.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/stop.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,37 @@
+/* XPM */
+static const char* const stop_xpm[] = {
+"16 16 18 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #FF0000",
+"#	c #FF0303",
+"$	c #FF8484",
+"%	c #FFC9C9",
+"&	c #FF1C1C",
+"*	c #FF0707",
+"=	c #FF1111",
+"-	c #FF1F1F",
+";	c #FF2828",
+">	c #FF4A4A",
+",	c #FF0F0F",
+"'	c #FF3838",
+")	c #FF0202",
+"!	c #FF1313",
+"~	c #FF9999",
+"    ........    ",
+"   .++++++++.   ",
+"  .++@@@@@@++.  ",
+" .++@@@@@@@@++. ",
+".++@@@@@@@@@@++.",
+".+@@@@@@@@@@@@+.",
+".+#+++++$+$+%&+.",
+".+*%@=+-+;++%>+.",
+".+,@%=+-+;++')+.",
+".+ at ++!+=~+$+'@+.",
+".+@@@@@@@@@@@@+.",
+".++@@@@@@@@@@++.",
+" .++@@@@@@@@++. ",
+"  .++@@@@@@++.  ",
+"   .++++++++.   ",
+"    ........    "};

Added: kde-extras/tora/branches/upstream/current/src/icons/storageextents.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/storageextents.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/storageextents.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+/* XPM */
+static const char* const storageextents_xpm[] = {
+"16 16 6 1",
+" 	c None",
+".	c #000000",
+"+	c #5F5FFF",
+"@	c #000093",
+"#	c #7F7F7F",
+"$	c #FFFFFF",
+"                ",
+"        ...     ",
+"       .+++.    ",
+"      .+++++.   ",
+"      .+++++.   ",
+"  ..... at ++++.   ",
+" .#####. at ++.    ",
+".#######.....   ",
+"..######.. ...  ",
+".$......$.  ... ",
+".$$$$$$$$.   .. ",
+"..$$$$$$..      ",
+".$......$.      ",
+".$$$$$$$$.      ",
+" .$$$$$$.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/synonym.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/synonym.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/synonym.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,46 @@
+/* XPM */
+static const char* const synonym_xpm[] = {
+"16 11 32 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #E57A7A",
+"@	c #D42121",
+"#	c #FBE9E9",
+"$	c #CE0000",
+"%	c #F0B1B1",
+"&	c #F4C8C8",
+"*	c #F6D3D3",
+"=	c #E16464",
+"-	c #D21616",
+";	c #E88585",
+">	c #D93737",
+",	c #F2BCBC",
+"'	c #EEA6A6",
+")	c #120000",
+"!	c #000000",
+"~	c #980000",
+"{	c #480000",
+"]	c #630000",
+"^	c #9A0B0B",
+"/	c #C3B122",
+"(	c #5A0000",
+"_	c #D00B0B",
+":	c #BAB122",
+"<	c #E8851A",
+"[	c #472C09",
+"}	c #DF5959",
+"|	c #DB430D",
+"1	c #6F6F15",
+"2	c #240000",
+"3	c #D72C2C",
+"................",
+"...+ at ........#$%",
+"..&$*........#=.",
+"..-;.........>=.",
+".=$$$$,'$$$$$-..",
+"%$)!!!~${!!!]&..",
+".=)!!!^'{!!!]&..",
+".=/!!(_'$:!!]&..",
+".=$<[$,.}|12+...",
+"..&$@...._$3....",
+"................"};

Added: kde-extras/tora/branches/upstream/current/src/icons/table.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/table.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/table.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const table_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"                ",
+"                ",
+" .............  ",
+" .+++.+++.+++.  ",
+" .............  ",
+" .+++.+++.+++.  ",
+" .+++.+++.+++.  ",
+" .............  ",
+" .+++.+++.+++.  ",
+" .+++.+++.+++.  ",
+" .............  ",
+" .+++.+++.+++.  ",
+" .+++.+++.+++.  ",
+" .............  ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/toalert.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/toalert.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/toalert.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,29 @@
+/* XPM */
+static const char* const toalert_xpm[] = {
+"16 16 10 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFF00",
+"@	c #7F7F7F",
+"#	c #DFDFDF",
+"$	c #1F1F1F",
+"%	c #3F3F3F",
+"&	c #5F5F5F",
+"*	c #9F9F9F",
+"=	c #BFBFBF",
+"                ",
+"      ....      ",
+"     .++++.     ",
+"     .++++.     ",
+"     .++++.     ",
+"     .++++.     ",
+"    . at .++...    ",
+"   .@@.++. at ..   ",
+"   .. at .++.@..   ",
+"   ........#.   ",
+"   ..$%&@*=#.   ",
+"   ..$%..*=#.   ",
+"   ..$.++.=#.   ",
+"   ..$.++.=#.   ",
+"    .$%..*=.    ",
+"     ......     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/toanalyze.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/toanalyze.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/toanalyze.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,28 @@
+/* XPM */
+static const char* const toanalyze_xpm[] = {
+"16 16 9 1",
+" 	c None",
+".	c #000000",
+"+	c #BFBFBF",
+"@	c #3F3F3F",
+"#	c #7F7F7F",
+"$	c #1F1F1F",
+"%	c #5F5F5F",
+"&	c #9F9F9F",
+"*	c #DFDFDF",
+"        ....... ",
+"       .+++++++.",
+"       .+@@@@@+.",
+"       .+@@@@@+.",
+"       .+++++++.",
+"  ......+ at +@+ at +.",
+" .#####.+++++++.",
+".######.+ at +@+ at +.",
+"..#####.+++++++.",
+"........+ at +@+ at +.",
+"..$@%#&.+++++++.",
+"..$@%#&+....... ",
+"..$@%#&+*.      ",
+"..$@%#&+*.      ",
+" .$@%#&+.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tobackup.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tobackup.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tobackup.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,130 @@
+/* XPM */
+static const char* const tobackup_xpm[] = {
+"16 16 111 2",
+"  	c None",
+". 	c #565656",
+"+ 	c #4C4C4C",
+"@ 	c #AC0000",
+"# 	c #9A0303",
+"$ 	c #891A1A",
+"% 	c #FCFCFC",
+"& 	c #C55454",
+"* 	c #E5AAAA",
+"= 	c #DB9A9A",
+"- 	c #840F0F",
+"; 	c #820B0B",
+"> 	c #FFFFFF",
+", 	c #FDFDFD",
+"' 	c #E8E8E8",
+") 	c #EFEFEF",
+"! 	c #9E0000",
+"~ 	c #A90000",
+"{ 	c #C14A4A",
+"] 	c #CE6F6F",
+"^ 	c #7B0808",
+"/ 	c #AB0E0E",
+"( 	c #BF4242",
+"_ 	c #F8F8F8",
+": 	c #D8D5D5",
+"< 	c #8D8D8D",
+"[ 	c #353535",
+"} 	c #470000",
+"| 	c #620101",
+"1 	c #7F0000",
+"2 	c #9C0000",
+"3 	c #9F9F9F",
+"4 	c #373636",
+"5 	c #D98C8C",
+"6 	c #A70C0C",
+"7 	c #847373",
+"8 	c #343434",
+"9 	c #600101",
+"0 	c #927575",
+"a 	c #F8F7F7",
+"b 	c #E4E4E4",
+"c 	c #313030",
+"d 	c #A42929",
+"e 	c #EDC4C4",
+"f 	c #C05959",
+"g 	c #6F0000",
+"h 	c #430000",
+"i 	c #555454",
+"j 	c #DEDEDE",
+"k 	c #BABABA",
+"l 	c #960000",
+"m 	c #DB9090",
+"n 	c #960B0B",
+"o 	c #585858",
+"p 	c #FEFEFE",
+"q 	c #D7D7D7",
+"r 	c #363535",
+"s 	c #840000",
+"t 	c #BD4242",
+"u 	c #6E0000",
+"v 	c #330000",
+"w 	c #6E0505",
+"x 	c #CF7272",
+"y 	c #A90202",
+"z 	c #4F0000",
+"A 	c #3D3D3D",
+"B 	c #D6D6D6",
+"C 	c #393939",
+"D 	c #DCA3A3",
+"E 	c #890000",
+"F 	c #3D0000",
+"G 	c #A2A2A2",
+"H 	c #423B3B",
+"I 	c #820707",
+"J 	c #BC5353",
+"K 	c #6A0000",
+"L 	c #390000",
+"M 	c #3F3F3F",
+"N 	c #FBFBFB",
+"O 	c #E5E5E5",
+"P 	c #967777",
+"Q 	c #6E0707",
+"R 	c #525151",
+"S 	c #967979",
+"T 	c #C35C5C",
+"U 	c #991414",
+"V 	c #4E0000",
+"W 	c #404040",
+"X 	c #C34E4E",
+"Y 	c #E29797",
+"Z 	c #800A0A",
+"` 	c #7D1212",
+" .	c #545454",
+"..	c #BCBCBC",
+"+.	c #F7F6F6",
+"@.	c #630000",
+"#.	c #280000",
+"$.	c #590606",
+"%.	c #7B0000",
+"&.	c #A71212",
+"*.	c #C76262",
+"=.	c #ECC0C0",
+"-.	c #C76666",
+";.	c #F2F2F2",
+">.	c #E7E7E7",
+",.	c #111111",
+"'.	c #5A0000",
+").	c #8B0C0C",
+"!.	c #9B2C2C",
+"~.	c #9A9A9A",
+"{.	c #C5C5C5",
+"                                ",
+"            . + @ # $           ",
+"        . . % % & * = - ;       ",
+"      ; > , ' ) ! ~ { ] @ ^     ",
+"    / ( _ : < [ } | 1 2 , 3 4   ",
+"    & 5 6 7 8       9 0 a b c   ",
+"  d e f g h           i j _ k 4 ",
+"  l m n h               o p q r ",
+"  s t u v               w x y z ",
+"  A , B C               ^ D E F ",
+"  A p , G H           I e J K L ",
+"    M N O P Q       R S T U V   ",
+"    W , > X Y Z `  ...+.) @.#.  ",
+"      $.%.&.*.=.-.% ;.>.3 ,.    ",
+"        z '.K ).!.~.{.,.,.      ",
+"            z #.#.,.,.          "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tobrowser.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tobrowser.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tobrowser.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,30 @@
+/* XPM */
+static const char* const tobrowser_xpm[] = {
+"16 16 11 1",
+" 	c None",
+".	c #000000",
+"+	c #5F5FFF",
+"@	c #000093",
+"#	c #7F7F7F",
+"$	c #DFDFDF",
+"%	c #1F1F1F",
+"&	c #3F3F3F",
+"*	c #5F5F5F",
+"=	c #9F9F9F",
+"-	c #BFBFBF",
+"                ",
+"        ...     ",
+"       .+++.    ",
+"      .+++++.   ",
+"      .+++++.   ",
+"  ..... at ++++.   ",
+" .#####. at ++.    ",
+".#######.....   ",
+"..######.. ...  ",
+"........$.  ... ",
+"..%&*#=-$.   .. ",
+"..%&*#=-$.      ",
+"..%&*#=-$.      ",
+"..%&*#=-$.      ",
+" .%&*#=-.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tocurrent.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tocurrent.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tocurrent.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const tocurrent_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #545454",
+"@	c #FFFFFF",
+"      ...       ",
+"    ..+++..     ",
+"   . at .+++.@.    ",
+"  .@@.+++.@@.   ",
+" .@@@@.+.@@@@.  ",
+" .@@..+++..@@.  ",
+".@@.+++++++.@@. ",
+".@@.+++++++.@@. ",
+".@@.+++++++.@@. ",
+".@@.+++++++.@@. ",
+".@@@.++.++.@@@. ",
+" .@@.++.++.@@.  ",
+" .@@.++.++.@@.  ",
+"  . at .++.++.@.   ",
+"   ..++.++..    ",
+"     .....      "};

Added: kde-extras/tora/branches/upstream/current/src/icons/todebug.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/todebug.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/todebug.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const todebug_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #474747",
+"@	c #AA2323",
+"#	c #777777",
+"                ",
+"                ",
+"  .  +.  .+  .  ",
+"  .  .+  +.  .  ",
+"  +.  ....  .+  ",
+"   +.. at ++@..+   ",
+"     .+##+.     ",
+"     .+##+.     ",
+" ....++##++.... ",
+"    .+####+.    ",
+"   ..++##++..   ",
+"  .+.++++++.+.  ",
+" .+  ......  +. ",
+" .            . ",
+" .            . ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/togglebreak.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/togglebreak.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/togglebreak.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,38 @@
+/* XPM */
+static const char* const togglebreak_xpm[] = {
+"16 16 19 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #00FF00",
+"#	c #FF0000",
+"$	c #FF0303",
+"%	c #FF8484",
+"&	c #FF1C1C",
+"*	c #FF0707",
+"=	c #FFC9C9",
+"-	c #FF1111",
+";	c #FF1F1F",
+">	c #FF2828",
+",	c #FF4A4A",
+"'	c #FF0F0F",
+")	c #FF0202",
+"!	c #FF1313",
+"~	c #FF9999",
+"{	c #FF3838",
+"    .........   ",
+"   .++++++. at .   ",
+"  .++#####. at ..  ",
+" .++###.... at ....",
+".++####.@@@@@@@.",
+".+#####.... at ....",
+".+$+++++%+. at .&+.",
+".+*=#-+;+>. at .,+.",
+".+'#=-+;+>...)+.",
+".+#++!+-~+%+{#+.",
+".........#####+.",
+".@@@@@@@.####++.",
+".........###++. ",
+"  .++######++.  ",
+"   .++++++++.   ",
+"    ........    "};

Added: kde-extras/tora/branches/upstream/current/src/icons/toinvalid.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/toinvalid.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/toinvalid.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,93 @@
+/* XPM */
+static const char* const toinvalid_xpm[] = {
+"16 16 74 1",
+" 	c None",
+".	c #929253",
+"+	c #767611",
+"@	c #B7B79F",
+"#	c #FDFDAA",
+"$	c #EFEF12",
+"%	c #888800",
+"&	c #B5B59D",
+"*	c #FDFDDB",
+"=	c #F7F758",
+"-	c #969600",
+";	c #B3B39A",
+">	c #FCFCDB",
+",	c #F7F763",
+"'	c #989804",
+")	c #B0B096",
+"!	c #FDFDDD",
+"~	c #F8F865",
+"{	c #909004",
+"]	c #000000",
+"^	c #ADAD7F",
+"/	c #FDFDB7",
+"(	c #FFFF32",
+"_	c #F9F904",
+":	c #D8D800",
+"<	c #D5D500",
+"[	c #CFCF00",
+"}	c #7F7F7F",
+"|	c #D2D264",
+"1	c #D5D51C",
+"2	c #E6E617",
+"3	c #FFFF2C",
+"4	c #FFFF1B",
+"5	c #FAFA00",
+"6	c #ADAD00",
+"7	c #56561D",
+"8	c #D4D4C0",
+"9	c #FFFFC7",
+"0	c #FBFB37",
+"a	c #B2B200",
+"b	c #D7D7C5",
+"c	c #FFFFDF",
+"d	c #FFFF83",
+"e	c #ABAB09",
+"f	c #D6D6C1",
+"g	c #FFFFDE",
+"h	c #FFFF87",
+"i	c #FFFF08",
+"j	c #C2C200",
+"k	c #B6B600",
+"l	c #696901",
+"m	c #1F1F1F",
+"n	c #3F3F3F",
+"o	c #5F5F5F",
+"p	c #C7C793",
+"q	c #F1F187",
+"r	c #F1F14E",
+"s	c #F7F70D",
+"t	c #FFFF02",
+"u	c #FDFD00",
+"v	c #BBBB00",
+"w	c #9F9F9F",
+"x	c #BFBFBF",
+"y	c #DFDFDF",
+"z	c #949463",
+"A	c #FEFE4C",
+"B	c #BCBC00",
+"C	c #7D7D51",
+"D	c #F7F7A2",
+"E	c #BDBD0A",
+"F	c #D1D19E",
+"G	c #BEBE14",
+"H	c #979775",
+"I	c #BFBF4B",
+"           .+   ",
+"          @#$%  ",
+"         &*=-   ",
+"        ;>,'    ",
+"       )!~{     ",
+"  ]]]]^/(_:<<[  ",
+" ]}}}}|1<23456  ",
+"]}}}}}}}7890a   ",
+"]]}}}}}}bcde    ",
+"]]]]]]]fghijkl  ",
+"]]mno}pqrstuv   ",
+"]]mno}wxyzAB    ",
+"]]mno}wxCDE     ",
+"]]mno}wxFG      ",
+" ]mno}wHI       ",
+"  ]]]]]]        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tolongops.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tolongops.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tolongops.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,21 @@
+/* XPM */
+static const char* const tolongops_xpm[] = {
+"16 16 2 1",
+" 	c None",
+".	c #000000",
+"          ......",
+"          ......",
+"              ..",
+"             .. ",
+"            ..  ",
+"      .... ..   ",
+"         ...    ",
+"        . ......",
+"       .  ......",
+"      .         ",
+"      ....      ",
+"   ...          ",
+"     .          ",
+"    .           ",
+"   .            ",
+"   ...          "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tooutput.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tooutput.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tooutput.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,29 @@
+/* XPM */
+static const char* const tooutput_xpm[] = {
+"16 16 10 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #7F7F7F",
+"#	c #DFDFDF",
+"$	c #1F1F1F",
+"%	c #3F3F3F",
+"&	c #5F5F5F",
+"*	c #9F9F9F",
+"=	c #BFBFBF",
+"      ..  ....  ",
+"    ...+. .++.. ",
+"    .++++..++...",
+"    .+.+. .++++.",
+"    .+..  .+..+.",
+"  ...+..  .++++.",
+" .@@... at . ......",
+".@@@@@@@@.      ",
+"..@@@@@@..      ",
+"........#.      ",
+"..$%&@*=#.      ",
+"..$%&@*=#.      ",
+"..$%&@*=#.      ",
+"..$%&@*=#.      ",
+" .$%&@*=.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tora.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tora.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tora.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,56 @@
+/* XPM */
+static const char* const tora_xpm[] = {
+"32 32 21 1",
+" 	c None",
+".	c #75A5D1",
+"+	c #4C89C3",
+"@	c #226EB5",
+"#	c #5992C8",
+"$	c #3E80BE",
+"%	c #3077BA",
+"&	c #91B7DA",
+"*	c #75A4D1",
+"=	c #4B89C3",
+"-	c #ACC9E3",
+";	c #FFFFFF",
+">	c #E3EDF6",
+",	c #C8DBED",
+"'	c #D6E4F1",
+")	c #F1F6FA",
+"!	c #679BCC",
+"~	c #BAD2E8",
+"{	c #83ADD5",
+"]	c #83AED6",
+"^	c #9EC0DF",
+"                                ",
+"                                ",
+"            .+@@@#              ",
+"          $@%#&&*=@@            ",
+"         @$-;;;;;;>*@%          ",
+"       +@*;;;;;;,-;;'%@         ",
+"       @&;;,->;;,>';;)$%        ",
+"      @!;;-%;'->~;;;;;'@        ",
+"     #%);;-&;;;'>;;;;;;&@       ",
+"     @{;;'@';;;;;-,;;;;)@       ",
+"     @';;~-;;;;;>@@$~;;;!%      ",
+"    ]@;;;)~~;;;;;>#@@~;;&@      ",
+"    ##;;;;;)-,;;;)%$~=;;,@      ",
+"    ##;;;;;;'&;;;&@,;>;;,@      ",
+"    !$;;;;;;{@~;)%$;;;;;-@      ",
+"     @);;;;'@$;;^@-;;;;;{@      ",
+"     @-;;;;-@!;;$$;;;;;;$#      ",
+"     $=;;;;;,);-@^;;;;;~@       ",
+"      @^;;;;;;;$%);;;;)$%       ",
+"      +%';;;;;-@&;;;;;*@        ",
+"       %%';;;;$@>;;;;*@         ",
+"        %@&;;>#*;;;'#@          ",
+"       ;>#@%{~'),-#@%           ",
+"      +);;]#@@@@@@%             ",
+"     @@$~~                      ",
+"    @@@%                        ",
+"   @@@@                         ",
+"  @@@@                          ",
+" %@@@                           ",
+"@@@@                            ",
+"@@@$                            ",
+"@@@                             "};

Added: kde-extras/tora/branches/upstream/current/src/icons/toramini.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/toramini.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/toramini.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,70 @@
+/* XPM */
+static const char* const toramini_xpm[] = {
+"16 16 51 1",
+" 	c None",
+".	c #3077BA",
+"+	c #528EC6",
+"@	c #5A92C8",
+"#	c #4F8BC4",
+"$	c #226EB5",
+"%	c #3E80BE",
+"&	c #BAD2E8",
+"*	c #FFFFFF",
+"=	c #DCE8F4",
+"-	c #D6E4F1",
+";	c #5690C6",
+">	c #397DBD",
+",	c #E4EDF6",
+"'	c #A9C6E2",
+")	c #D9E6F2",
+"!	c #E3EDF6",
+"~	c #F5F8FC",
+"{	c #FCFDFE",
+"]	c #8DB4D9",
+"^	c #F1F6FA",
+"/	c #E0EBF4",
+"(	c #4283C0",
+"_	c #EAF2F8",
+":	c #C8DBEC",
+"<	c #377CBC",
+"[	c #A5C4E1",
+"}	c #528EC5",
+"|	c #5992C8",
+"1	c #B7D0E7",
+"2	c #75A4D1",
+"3	c #4182BF",
+"4	c #EEF4F9",
+"5	c #78A7D2",
+"6	c #5D94C8",
+"7	c #BDD4E9",
+"8	c #90B6DA",
+"9	c #4F8CC4",
+"0	c #83AED5",
+"a	c #ACC9E3",
+"b	c #72A2D0",
+"c	c #F8FAFD",
+"d	c #4C89C3",
+"e	c #7CA9D3",
+"f	c #BFD5E9",
+"g	c #CEDFEF",
+"h	c #6097CA",
+"i	c #6EA0CE",
+"j	c #2C75B8",
+"k	c #2771B7",
+"l	c #2B74B8",
+"                ",
+"     .+@#$      ",
+"    %&**=-;     ",
+"   >,')!)~{@    ",
+"  %'~]*~!^*/$   ",
+"  (~_:**&<[*}   ",
+"  |**{1*/;&*2   ",
+"  ({*~345&**6   ",
+"  .7*_8_9**4%   ",
+"   9~**0a**b    ",
+"    ;,cdc~e     ",
+"   fgdh0i>      ",
+"  $j&           ",
+" $$             ",
+"k$              ",
+"$l              "};

Added: kde-extras/tora/branches/upstream/current/src/icons/torollback.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/torollback.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/torollback.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const torollback_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"                ",
+"      .         ",
+"    ..+. ...    ",
+"   .++++..++.   ",
+"  .++.+. ..++.  ",
+"  .+. .    .+.  ",
+"  ...     .+++. ",
+"   .       .+.  ",
+"  .+.       .   ",
+" .+++.     ...  ",
+"  .+.    . .+.  ",
+"  .++.. .+.++.  ",
+"   .+++.++++.   ",
+"    ... .+..    ",
+"         .      ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/toscript.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/toscript.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/toscript.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,29 @@
+/* XPM */
+static const char* const toscript_xpm[] = {
+"16 16 10 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #7F7F7F",
+"#	c #DFDFDF",
+"$	c #9F9F9F",
+"%	c #BFBFBF",
+"&	c #1F1F1F",
+"*	c #3F3F3F",
+"=	c #5F5F5F",
+"      .....     ",
+"     .+++++.    ",
+"    .++...+.    ",
+"     .. ..+...  ",
+"       .+++.@@. ",
+"  ......+..@@@@.",
+" .@@@@@.+.@@@@..",
+".@@@@.........#.",
+"..@@@.+++++.$%#.",
+"............$%#.",
+"..&*=@$.+.=@$%#.",
+"..&*=.......$%#.",
+"..&*=.+++++.$%. ",
+"..&*=.........  ",
+" .&*=@$%.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tosecurity.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tosecurity.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tosecurity.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,25 @@
+/* XPM */
+static const char* const tosecurity_xpm[] = {
+"16 16 6 1",
+" 	c None",
+".	c #000000",
+"+	c #999999",
+"@	c #4C4C4C",
+"#	c #BCBCBC",
+"$	c #707070",
+"                ",
+"      ....      ",
+"     .++++.     ",
+"    .++..++.    ",
+"    .+.  .+.    ",
+"   ..+....+..   ",
+"  . at .+.@@.+. at .  ",
+"  ............  ",
+"  .##$$$$$$@@.  ",
+"  .##$$$$$$@@.  ",
+"  .##$$$$$$@@.  ",
+"  .##$$$$$$@@.  ",
+"  .##$$$$$$@@.  ",
+"  .##$$$$$$@@.  ",
+"  .##$$$$$$@@.  ",
+"   ..........   "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tosession.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tosession.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tosession.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,29 @@
+/* XPM */
+static const char* const tosession_xpm[] = {
+"16 16 10 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"@	c #7F7F7F",
+"#	c #DFDFDF",
+"$	c #1F1F1F",
+"%	c #3F3F3F",
+"&	c #5F5F5F",
+"*	c #9F9F9F",
+"=	c #BFBFBF",
+"      ....      ",
+"      .++.      ",
+"     ..++..     ",
+" .. ..++++.. .. ",
+".++.+..++..+.++.",
+" .+++......+++. ",
+"  .++.@@@@.++.  ",
+" .+++.@@@@.+++. ",
+" .....@@@@....  ",
+"   ........#.   ",
+"   ..$%&@*=#.   ",
+"   ..$%&@*=#.   ",
+"   ..$%&@*=#.   ",
+"   ..$%&@*=#.   ",
+"    .$%&@*=.    ",
+"     ......     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tosgatrace.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tosgatrace.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tosgatrace.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const tosgatrace_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #5E5E5E",
+"                ",
+"                ",
+"                ",
+"   ..           ",
+"  .++..    ..   ",
+"  .+.++.  .++.. ",
+" .++++..  .+.++.",
+" .+++.   .++++..",
+"  ...    .+++.  ",
+"          ...   ",
+"    ..          ",
+"   .++..        ",
+"   .+.++.       ",
+"  .++++..       ",
+"  .+++.         ",
+"   ...          "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tosqledit.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tosqledit.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tosqledit.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,30 @@
+/* XPM */
+static const char* const tosqledit_xpm[] = {
+"16 16 11 1",
+" 	c None",
+".	c #000000",
+"+	c #8E8E8E",
+"@	c #FFFFFF",
+"#	c #7F7F7F",
+"$	c #1F1F1F",
+"%	c #3F3F3F",
+"&	c #5F5F5F",
+"*	c #BFBFBF",
+"=	c #DFDFDF",
+"-	c #9F9F9F",
+"             .. ",
+"            .++.",
+"           . at .+.",
+"          .@@@. ",
+"         .@@@.  ",
+"  .......@@@.   ",
+" .#####.@@@.    ",
+".#####.@@@.     ",
+"..####.. at .      ",
+"..........      ",
+"..$%&..*=.      ",
+"..$%&#-*=.      ",
+"..$%&#-*=.      ",
+"..$%&#-*=.      ",
+" .$%&#-*.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tostorage.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tostorage.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tostorage.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const tostorage_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #7F7F7F",
+"@	c #FFFFFF",
+"     ......     ",
+"    .++++++.    ",
+"   .++++++++.   ",
+"   ..+++......  ",
+"   . at ...++++++. ",
+"  ......+++++++.",
+" .++++++.+++++..",
+".++++++++..... at .",
+"..++++++..@@@@@.",
+". at ......@.@@@@..",
+".@@@@@@@@..... at .",
+"..@@@@@@..@@@@@.",
+". at ......@.@@@@. ",
+".@@@@@@@@.....  ",
+" .@@@@@@.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/totemplate.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/totemplate.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/totemplate.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const totemplate_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"            ..  ",
+"      .......+. ",
+"      .++++++++.",
+"      .+.....+. ",
+".......+... ..  ",
+"++++++...+.     ",
+"+....+++++.     ",
+"++++++++++.     ",
+"+...+...++.     ",
+"++++++++++.     ",
+"+......+++.     ",
+"++++++++++.     ",
+"+.....++++.     ",
+"++++++++++.     ",
+"+..+.....+.     ",
+"++++++++++.     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/totemporary.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/totemporary.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/totemporary.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,214 @@
+/* XPM */
+static const char* const totemporary_xpm[] = {
+"16 16 195 2",
+"  	c None",
+". 	c #C4C4CE",
+"+ 	c #D1D1DB",
+"@ 	c #D8D8E0",
+"# 	c #C8C8D3",
+"$ 	c #B9B9C7",
+"% 	c #C8C8D6",
+"& 	c #E9E9EE",
+"* 	c #F2F1F3",
+"= 	c #C3CBE0",
+"- 	c #95AAD9",
+"; 	c #93A8D8",
+"> 	c #B0BAD7",
+", 	c #E2E1E6",
+"' 	c #DCDCE3",
+") 	c #A3A3B6",
+"! 	c #CACAD5",
+"~ 	c #F6F6F7",
+"{ 	c #B9C5E2",
+"] 	c #8BA7E0",
+"^ 	c #BCCCF1",
+"/ 	c #CCCCEC",
+"( 	c #BCC1E8",
+"_ 	c #C9DEF8",
+": 	c #8AABE2",
+"< 	c #94A4CE",
+"[ 	c #DCDCE4",
+"} 	c #9F9FB3",
+"| 	c #C3C3D0",
+"1 	c #F4F4F6",
+"2 	c #AABADF",
+"3 	c #99B8EB",
+"4 	c #CDE0F6",
+"5 	c #E6F5FD",
+"6 	c #E9F4FC",
+"7 	c #E1EFFA",
+"8 	c #E0F6FF",
+"9 	c #D7F4FF",
+"0 	c #B2DAF8",
+"a 	c #7E98CB",
+"b 	c #D4D3DB",
+"c 	c #9292A9",
+"d 	c #E1E1E8",
+"e 	c #C5CFE6",
+"f 	c #82AAE9",
+"g 	c #C0E0F8",
+"h 	c #D8F4FF",
+"i 	c #DEF5FF",
+"j 	c #E0F5FF",
+"k 	c #D7F3FF",
+"l 	c #CEF0FF",
+"m 	c #C0E7FD",
+"n 	c #99C9F8",
+"o 	c #899BC4",
+"p 	c #B6B6C5",
+"q 	c #C6C6D3",
+"r 	c #7A9BDA",
+"s 	c #A1C6F1",
+"t 	c #C4EAFE",
+"u 	c #D3F2FF",
+"v 	c #D5F2FF",
+"w 	c #CDF0FF",
+"x 	c #C4E9FE",
+"y 	c #B6DFFC",
+"z 	c #A8D5FA",
+"A 	c #6291D7",
+"B 	c #BCBCCA",
+"C 	c #81819B",
+"D 	c #CDCDD8",
+"E 	c #E6E7EE",
+"F 	c #6492E3",
+"G 	c #A5D0F8",
+"H 	c #B5DEFB",
+"I 	c #BEE5FD",
+"J 	c #C5EBFE",
+"K 	c #B8D9E3",
+"L 	c #B3D4DF",
+"M 	c #BEE6FD",
+"N 	c #B4DEFC",
+"O 	c #A9D6FA",
+"P 	c #5597F2",
+"Q 	c #9B9EB6",
+"R 	c #9191A7",
+"S 	c #D6D6E1",
+"T 	c #D7D9E3",
+"U 	c #5585E2",
+"V 	c #8FBAF1",
+"W 	c #A7D4FA",
+"X 	c #A1CFF9",
+"Y 	c #A2D3FB",
+"Z 	c #3B4145",
+"` 	c #4A4E51",
+" .	c #A2CDEF",
+"..	c #9DCCF9",
+"+.	c #85BAF6",
+"@.	c #5E9BEF",
+"#.	c #3875E4",
+"$.	c #8490B5",
+"%.	c #8A8AA2",
+"&.	c #D3D3DF",
+"*.	c #D6D8E1",
+"=.	c #5486E3",
+"-.	c #77A9EF",
+";.	c #80B6F5",
+">.	c #8ABEF6",
+",.	c #98CAFA",
+"'.	c #415059",
+").	c #1F2122",
+"!.	c #6182A4",
+"~.	c #8CC0F8",
+"{.	c #7DB4F5",
+"].	c #6AA5F1",
+"^.	c #4C85E8",
+"/.	c #828EB1",
+"(.	c #84849D",
+"_.	c #C4C4D2",
+":.	c #E4E5EB",
+"<.	c #6393E3",
+"[.	c #7DB5F5",
+"}.	c #91C3F7",
+"|.	c #A0CFFA",
+"1.	c #ACD8FA",
+"2.	c #54676A",
+"3.	c #5A6F7C",
+"4.	c #1C2328",
+"5.	c #7497B5",
+"6.	c #92C5F8",
+"7.	c #7EB4F5",
+"8.	c #68A6F4",
+"9.	c #8C8FA9",
+"0.	c #82829C",
+"a.	c #B5B5C6",
+"b.	c #EFEFF2",
+"c.	c #88A4D7",
+"d.	c #8CBFF7",
+"e.	c #A3D1FA",
+"f.	c #B6E0FC",
+"g.	c #5F696A",
+"h.	c #7C919A",
+"i.	c #ADCED5",
+"j.	c #1F2529",
+"k.	c #7698B6",
+"l.	c #8FC2F8",
+"m.	c #739CD4",
+"n.	c #9A99AE",
+"o.	c #6C6C8A",
+"p.	c #D3D3DC",
+"q.	c #C8CCDC",
+"r.	c #92BEF0",
+"s.	c #B1DCFB",
+"t.	c #C6EBFE",
+"u.	c #B9CBCF",
+"v.	c #B7CBD3",
+"w.	c #D6F4FF",
+"x.	c #A8C6CE",
+"y.	c #4D606E",
+"z.	c #95C4F0",
+"A.	c #828DAE",
+"B.	c #A5A5B9",
+"C.	c #E6E6EB",
+"D.	c #B3BDD3",
+"E.	c #B8DEF7",
+"F.	c #D1F2FF",
+"G.	c #E9F5FD",
+"H.	c #E6F2FB",
+"I.	c #D2F2FF",
+"J.	c #BAE2F7",
+"K.	c #8899B7",
+"L.	c #9696AB",
+"M.	c #70708D",
+"N.	c #AAAABC",
+"O.	c #DEDEE5",
+"P.	c #BBC1D0",
+"Q.	c #BFD5E2",
+"R.	c #E9FAFF",
+"S.	c #DBDFF4",
+"T.	c #CACCED",
+"U.	c #BDD2DF",
+"V.	c #9099B1",
+"W.	c #9898AD",
+"X.	c #6E6E8C",
+"Y.	c #9B9BB2",
+"Z.	c #C4C4D0",
+"`.	c #CBCBD6",
+" +	c #AFB0C0",
+".+	c #B0B3C3",
+"++	c #AEB1C1",
+"@+	c #9798AE",
+"#+	c #9D9DB1",
+"$+	c #9393A9",
+"%+	c #9494AC",
+"&+	c #9B9BAF",
+"*+	c #9999AE",
+"=+	c #8787A0",
+"-+	c #797995",
+"          . + @ @ # $           ",
+"      % & * = - ; > , ' )       ",
+"    ! ~ { ] ^ / ( _ : < [ }     ",
+"  | 1 2 3 4 5 6 7 8 9 0 a b c   ",
+"  d e f g h i j i k l m n o p   ",
+"q 1 r s t l u v u w x y z A B C ",
+"D E F G H I J K L M N O n P Q R ",
+"S T U V W X Y Z `  ...+. at .#.$.%.",
+"&.*.=.-.;.>.,.'.).!.~.{.].^./.(.",
+"_.:.<.[.}.|.1.2.3.4.5.6.7.8.9.0.",
+"a.b.c.d.e.f.t g.h.i.j.k.l.m.n.o.",
+"  p.q.r.s.t.v u.v.w.x.y.z.A.%.  ",
+"  B.C.D.E.F.8 G.H.8 I.J.K.L.M.  ",
+"    N.O.P.Q.R.S.T.R.U.V.W.X.    ",
+"      Y.Z.`. +.+++ at +#+$+M.      ",
+"          %+&+} *+=+-+          "};

Added: kde-extras/tora/branches/upstream/current/src/icons/totuning.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/totuning.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/totuning.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,31 @@
+/* XPM */
+static const char* const totuning_xpm[] = {
+"16 16 12 1",
+" 	c None",
+".	c #000000",
+"+	c #FFBF00",
+"@	c #CCCCCC",
+"#	c #7F7F7F",
+"$	c #FFFFFF",
+"%	c #1F1F1F",
+"&	c #3F3F3F",
+"*	c #5F5F5F",
+"=	c #9F9F9F",
+"-	c #DFDFDF",
+";	c #BFBFBF",
+"             .. ",
+"            .++.",
+"           .+++.",
+"          .+++. ",
+"          .++.  ",
+"  ...... . at ..   ",
+" .######. at .     ",
+".#####.. at .      ",
+"..###.$$..      ",
+".......$..      ",
+"..%&*#=.-.      ",
+"..%&*#=;-.      ",
+"..%&*#=;-.      ",
+"..%&*#=;-.      ",
+" .%&*#=;.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/icons/toworksheet.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/toworksheet.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/toworksheet.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,22 @@
+/* XPM */
+static const char* const toworksheet_xpm[] = {
+"16 16 3 1",
+" 	c None",
+".	c #000000",
+"+	c #FFFFFF",
+"       ......   ",
+"      ..++++.   ",
+"     .+.++++.   ",
+"    .++.++++.   ",
+"   .....++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   .++++++++.   ",
+"   ..........   "};

Added: kde-extras/tora/branches/upstream/current/src/icons/trash.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/trash.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/trash.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const trash_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #000000",
+"+	c #D6D6D6",
+"@	c #7F7F7F",
+"                ",
+"                ",
+"     ......     ",
+"   ..++++++..   ",
+"  .++++..++++.  ",
+"  .++++..++++.  ",
+"   ..++++++..   ",
+"   . at ......@.   ",
+"   . at .@@. at .@.   ",
+"   . at .@@. at .@.   ",
+"   . at .@@. at .@.   ",
+"   . at .@@. at .@.   ",
+"   . at .@@. at .@.   ",
+"   . at .@@. at .@.   ",
+"    ..@@.@@.    ",
+"     ......     "};

Added: kde-extras/tora/branches/upstream/current/src/icons/tree.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/tree.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/tree.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,23 @@
+/* XPM */
+static const char* const tree_xpm[] = {
+"16 16 4 1",
+" 	c None",
+".	c #E69500",
+"+	c #AC7100",
+"@	c #000000",
+" ....+          ",
+" ....+          ",
+" ....+          ",
+" ....+          ",
+" +++++          ",
+"   @    ....+   ",
+"   @@@@@....+   ",
+"   @    ....+   ",
+"   @    ....+   ",
+"   @    +++++   ",
+"   @      @     ",
+"   @....+ @....+",
+"   @....+ @....+",
+"    ....+  ....+",
+"    ....+  ....+",
+"    +++++  +++++"};

Added: kde-extras/tora/branches/upstream/current/src/icons/twirl.mng
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/src/icons/twirl.mng
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/src/icons/undo.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/undo.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/undo.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,26 @@
+/* XPM */
+static const char* const undo_xpm[] = {
+"16 16 7 1",
+" 	c None",
+".	c #000084",
+"+	c #1A1A84",
+"@	c #1E1E84",
+"#	c #302F84",
+"$	c #201F84",
+"%	c #323184",
+"                ",
+"                ",
+"                ",
+"        ....+   ",
+" .    ........@ ",
+" .. ....     .# ",
+" .....        . ",
+" ....         . ",
+" .....        . ",
+" ......      .$ ",
+"            ..% ",
+"           +..  ",
+"                ",
+"                ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/up.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/up.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/up.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,30 @@
+/* XPM */
+static const char* const up_xpm[] = {
+"16 16 11 1",
+" 	c None",
+".	c #383838",
+"+	c #A6A6A6",
+"@	c #404040",
+"#	c #000000",
+"$	c #BFBFBF",
+"%	c #F7F7F7",
+"&	c #E6E6E6",
+"*	c #DEDEDE",
+"=	c #777777",
+"-	c #6F6F6F",
+"                ",
+"                ",
+"       ..       ",
+"      +@#+      ",
+"      .$#.      ",
+"     +@%.#+     ",
+"     .$&+#.     ",
+"    +@%**.#+    ",
+"    .$&**+#.    ",
+"   +@%****.#+   ",
+"   .$&****+#.   ",
+"  +@%******.#+  ",
+"  .@=------.#.  ",
+"  .##########.  ",
+"                ",
+"                "};

Added: kde-extras/tora/branches/upstream/current/src/icons/view.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/view.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/view.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const view_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #FFFFFF",
+"+	c #000000",
+"@	c #5F5FFF",
+"#	c #000093",
+"................",
+"................",
+".+++++++++++++..",
+".+...+...+...+..",
+".+++++++++++++..",
+".+...+@@@+...+..",
+".+..+@@@@@+..+..",
+".++++@@@@@++++..",
+".+..+#@@@@+..+..",
+".+...+#@@+...+..",
+".+++++++++++++..",
+".+...+...+++.+..",
+".+...+...+++++..",
+".+++++++++++++..",
+"................",
+"................"};

Added: kde-extras/tora/branches/upstream/current/src/icons/writetablespace.xpm
===================================================================
--- kde-extras/tora/branches/upstream/current/src/icons/writetablespace.xpm	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/icons/writetablespace.xpm	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,24 @@
+/* XPM */
+static const char* const writetablespace_xpm[] = {
+"16 16 5 1",
+" 	c None",
+".	c #000000",
+"+	c #7F7F7F",
+"@	c #8E8E8E",
+"#	c #FFFFFF",
+"     ......  .. ",
+"    .++++++..@@.",
+"   .+++++++.#. at .",
+"   ..+++...###. ",
+"   .#...+.###.. ",
+"  .......###.++.",
+" .+++++.###.++..",
+".+++++.###....#.",
+"..++++..#.#####.",
+".#........####..",
+".####..##.....#.",
+"..######..#####.",
+".#......#.####. ",
+".########.....  ",
+" .######.       ",
+"  ......        "};

Added: kde-extras/tora/branches/upstream/current/src/main.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/main.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/main.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,307 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+
+#include "utils.h"
+
+#include "toabout.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include "tora_toad.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include <memory>
+
+#ifdef TO_KDE
+#include <kcmdlineargs.h>
+#include <kapplication.h>
+#endif
+
+#include <qapplication.h>
+#include <qmessagebox.h>
+#include <qtextcodec.h>
+
+#ifndef TOMONOLITHIC
+#include <dlfcn.h>
+
+#include <tosplash.h>
+#include <qdir.h>
+#include <qfileinfo.h>
+#include <qlabel.h>
+#include <qprogressbar.h>
+#endif
+
+bool toMonolithic(void)
+{
+#ifdef TOMONOLITHIC
+    return true;
+#else
+
+    return false;
+#endif
+}
+
+void toUpdateIndicateEmpty(void);
+
+int main(int argc, char **argv)
+{
+#ifdef ENABLE_QT_XFT
+    toSetEnv("QT_XFT", toConfigurationSingle::Instance().globalConfig(CONF_QT_XFT, DEFAULT_QT_XFT).latin1());
+#endif
+
+#ifdef TO_KDE
+
+    KCmdLineArgs::init(argc, argv, "tora", "tora", "Toolkit for Oracle", TOVERSION);
+    new KApplication;
+#else
+#  ifndef WIN32
+
+    if (toConfigurationSingle::Instance().globalConfig(CONF_DESKTOP_AWARE, "Yes").isEmpty())
+        QApplication::setDesktopSettingsAware(false);
+#  endif
+
+    new QApplication(argc, argv);
+#endif
+
+    try
+    {
+
+        if (getenv("LANG"))
+            qApp->setDefaultCodec(QTextCodec::codecForName(getenv("LANG")));
+
+        QTranslator torats(0);
+        torats.load(toPluginPath() + "/" + QString("tora_") + toConfigurationSingle::Instance().globalConfig(CONF_LOCALE, QTextCodec::locale()), ".");
+        qApp->installTranslator(&torats);
+        QTranslator toadbindings(0);
+        if (!toConfigurationSingle::Instance().globalConfig(CONF_TOAD_BINDINGS, DEFAULT_TOAD_BINDINGS).isEmpty())
+        {
+            if (!toadbindings.load(tora_toad, sizeof(tora_toad)))
+                printf("Internal error, couldn't load TOAD bindings");
+            qApp->installTranslator(&toadbindings);
+        }
+
+#ifdef ENABLE_STYLE
+        QString style = toConfigurationSingle::Instance().globalConfig(CONF_STYLE, "");
+        if (!style.isEmpty())
+            toSetSessionType(style);
+#endif
+
+#ifndef TOMONOLITHIC
+
+        {
+            toSplash splash(NULL, "About " TOAPPNAME, false);
+            splash.show();
+            std::list<QString> failed;
+            QString dirPath = toPluginPath();
+            QDir d(dirPath, QString::fromLatin1("*.tso"), QDir::Name, QDir::Files);
+            if (!d.exists())
+            {
+                fprintf(stderr,
+                        "Couldn't find PluginDir, falling back to default: %s\n",
+                        DEFAULT_PLUGIN_DIR);
+                dirPath = DEFAULT_PLUGIN_DIR;
+                d.cd(dirPath);
+                if (d.exists())
+                    toConfigurationSingle::Instance().globalSetConfig(CONF_PLUGIN_DIR, dirPath);
+                else
+                    fprintf(stderr, "Invalid PluginDir.\n");
+            }
+
+            for (unsigned int i = 0;i < d.count();i++)
+            {
+                failed.insert(failed.end(), d.filePath(d[i]));
+            }
+            QProgressBar *progress = splash.progress();
+            QLabel *label = splash.label();
+            progress->setTotalSteps(failed.size());
+            progress->setProgress(1);
+            qApp->processEvents();
+            bool success;
+            do
+            {
+                success = false;
+                std::list<QString> current = failed;
+                failed.clear();
+                for (std::list<QString>::iterator i = current.begin();i != current.end();i++)
+                {
+                    if (!dlopen(*i, RTLD_NOW | RTLD_GLOBAL))
+                    {
+                        failed.insert(failed.end(), *i);
+                    }
+                    else
+                    {
+                        success = true;
+                        progress->setProgress(progress->progress() + 1);
+                        QFileInfo file(*i);
+                        label->setText(qApp->translate("main", "Loaded plugin %1").arg(file.fileName()));
+                        qApp->processEvents();
+                    }
+                }
+            }
+            while (failed.begin() != failed.end() && success);
+
+            for (std::list<QString>::iterator i = failed.begin();i != failed.end();i++)
+                if (!dlopen(*i, RTLD_NOW | RTLD_GLOBAL))
+                    fprintf(stderr, "Failed to load %s\n  %s\n",
+                            (const char *)(*i), dlerror());
+        }
+#endif
+
+        try
+        {
+            toSQL::loadSQL(toConfigurationSingle::Instance().globalConfig(CONF_SQL_FILE, DEFAULT_SQL_FILE));
+        }
+        catch (...)
+        {}
+        toConnectionProvider::initializeAll();
+
+        {
+            QCString nls = getenv("NLS_LANG");
+            if (nls.isEmpty())
+                nls = "american_america.UTF8";
+            else
+            {
+                int pos = nls.findRev('.');
+                if (pos > 0)
+                    nls = nls.left(pos);
+                nls += ".UTF8";
+            }
+            toSetEnv("NLS_LANG", nls);
+        }
+
+        if (toConfigurationSingle::Instance().globalConfig("LastVersion", "") != TOVERSION)
+        {
+            std::auto_ptr<toAbout> about ( new toAbout(0, NULL, "About " TOAPPNAME, true));
+            if (!about->exec())
+            {
+                exit (2);
+            }
+            toConfigurationSingle::Instance().globalSetConfig("LastVersion", TOVERSION);
+        }
+
+
+        if (toConfigurationSingle::Instance().globalConfig("FirstInstall", "").isEmpty())
+        {
+            time_t t;
+            time(&t);
+            toConfigurationSingle::Instance().globalSetConfig("FirstInstall", ctime(&t));
+        }
+
+        toQValue::setNumberFormat(
+            toConfigurationSingle::Instance().globalConfig(CONF_NUMBER_FORMAT, DEFAULT_NUMBER_FORMAT).toInt(),
+            toConfigurationSingle::Instance().globalConfig(CONF_NUMBER_DECIMALS, DEFAULT_NUMBER_DECIMALS).toInt());
+
+        if (qApp->argc() > 2 || (qApp->argc() == 2 && qApp->argv()[1][0] == '-'))
+        {
+            printf("Usage:\n\n  tora [{X options}] [connectstring]\n\n");
+            exit(2);
+        }
+        else if (qApp->argc() == 2)
+        {
+            QString connect = QString::fromLatin1(qApp->argv()[1]);
+            QString user;
+            int pos = connect.find(QString::fromLatin1("@"));
+            if (pos > -1)
+            {
+                user = connect.left(pos);
+                connect = connect.right(connect.length() - pos - 1);
+            }
+            else
+            {
+                user = connect;
+                if (getenv("ORACLE_SID"))
+                    connect = QString::fromLatin1(getenv("ORACLE_SID"));
+            }
+            if (!connect.isEmpty())
+                toConfigurationSingle::Instance().globalSetConfig(CONF_DATABASE, connect);
+            pos = user.find(QString::fromLatin1("/"));
+            if (pos > -1)
+            {
+                toConfigurationSingle::Instance().globalSetConfig(CONF_PASSWORD, user.right(user.length() - pos - 1));
+                user = user.left(pos);
+            }
+            if (!user.isEmpty())
+                toConfigurationSingle::Instance().globalSetConfig(CONF_USER, user);
+        }
+
+        toMarkedText::setDefaultTabWidth(
+            toConfigurationSingle::Instance().globalConfig(CONF_TAB_STOP, DEFAULT_TAB_STOP).toInt());
+
+        toUpdateIndicateEmpty();
+
+
+
+        new toMain;
+
+        int ret = qApp->exec();
+        return ret;
+    }
+    catch (const QString &str)
+    {
+        fprintf(stderr, "Unhandled exception:\n\n%s\n",
+                (const char *)str);
+        TOMessageBox::critical(NULL,
+                               qApp->translate("main", "Unhandled exception"),
+                               str,
+                               qApp->translate("main", "Exit"));
+#if 0
+
+    }
+    catch (...)
+    {
+        fprintf(stderr, "Unhandled exception of unknown type.\n\n");
+        TOMessageBox::critical(NULL,
+                               qApp->translate("main", "Unhandled exception"),
+                               qApp->translate("main", "Unknown type"),
+                               qApp->translate("main", "Exit"));
+#endif
+
+    }
+    return 1;
+}

Added: kde-extras/tora/branches/upstream/current/src/templates/hints.tpl
===================================================================
--- kde-extras/tora/branches/upstream/current/src/templates/hints.tpl	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/templates/hints.tpl	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,50 @@
+Access Methods:=
+Access Methods:/*+ AND_EQUAL(table index index[ index]) */=Specify an explicit access path for joining one or more tables where the source table is specified by <I>table</I> and the other indexes specifies an index to use for joining adjacent tables. Any number of indexes can be specified.
+Access Methods:/*+ CLUSTER(table) */=Instruct Oracle to use a cluster scan to access the table named <I>table</I>. Only applies to clustered tables. The tablename can also indicate an alias in the query.
+Access Methods:/*+ FULL(table) */=Instruct Oracle to use a full tablescan when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query.
+Access Methods:/*+ HASH(table) */=Instruct Oracle to use a hash scan to access the table named <I>table</I>. Only applies to clustered tables. The tablename can also indicate an alias in the query.
+Access Methods:/*+ INDEX(table[ index]) */=Instruct Oracle to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use.
+Access Methods:/*+ INDEX_ASC(table[ index]) */=Instruct Oracle to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The items found by the index will then be accessed in ascending order in a range scan. Since this is the default behaviour of Oracle this hint normally doesn't specify anything more than the <B>INDEX</B> hint. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use.
+Access Methods:/*+ INDEX_COMBINE(table[ index]) */=Instruct Oracle to use a bitmap index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use.
+Access Methods:/*+ INDEX_DESC(table[ index]) */=Instruct Oracle to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The items found by the index will then be accessed in descending order in a range scan. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use.
+Access Methods:/*+ INDEX_FFS(table[ index]) */=Instruct Oracle to use a fast full indexscan when accessing the table named <I>table</I> insteaf of doing a full tablespace. The tablename can also indicate an alias in the query.
+Access Methods:/*+ INDEX_JOIN(table[ index]) */=Instruct Oracle to use an index join as an access path in a join. Indexes used are optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use.
+Access Methods:/*+ NOREWRITE */=Specify the optimizer to never use a materialized.
+Access Methods:/*+ NO_EXPAND */=Never transform queries using the <B>OR</B> operator to a <B>UNION ALL</B> statement.
+Access Methods:/*+ NO_INDEX(table[ index]) */=Instruct Oracle not to use an index optionally specified by <I>index</I> when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query. You can also specify several indexes in which case the optimizer tries to find the best on to use. Any index specified tells the optimizer not to use that index, if no index is specified no indexes at all are considered for access to the table.
+Access Methods:/*+ REWRITE(view) */=Specify the optimizer to always use a materialized view speicified by <I>view</I>. Several views can be specified.
+Access Methods:/*+ ROWID(table) */=Instruct Oracle to use a rowid when accessing the table named <I>table</I>. The tablename can also indicate an alias in the query.
+Access Methods:/*+ USE_CONCAT */=Instruct the optimizer to always transform queries using the <B>OR</B> operator to a <B>UNION ALL</B> statement.
+Additional Hints:/*+ CACHE(table) */=Specify that the table specified by <I>table</I> should be placed at the most recent end of the LRU.
+Additional Hints:/*+ MERGE(view) */=Perform merging of a view specified by <I>view</I> containing a <B>GROUP BY</B> statement. This is only done explicitly since otherwise the optimizer will use another approach to perform the query.
+Additional Hints:/*+ NOCACHE(table) */=Specify that the table specified by <I>table</I> should be placed at the oldest end of the LRU meaning that it will be flushed from memory first after additional disc accesses.
+Additional Hints:/*+ NO_MERGE(view) */=Don't perform merging of a view specified by <I>view</I> containing a <B>GROUP BY</B> statement.
+Additional Hints:/*+ NO_PUSH_PRED(view) */=Don't push a join predicate into the view specified by <I>view</I>.
+Additional Hints:/*+ NO_UNNEST */=Don't unnest nested subqueries into the main body of the query.
+Additional Hints:/*+ ORDERED_PREDICATES */=The <B>ORDERED_PREDICATES</B> hint forces the optimizer to preserve the order of predicate evaluation, except for predicates used as index keys.\n
+Additional Hints:/*+ PUSH_PRED(view) */=Use the PUSH_PRED hint to force pushing of a join predicate into the view specified by <I>view</I>.
+Additional Hints:/*+ PUSH_SUBQ */=Force unnested subqueries to be performed first in the execution of the query,
+Additional Hints:/*+ STAR_TRANSFORMATION */=The <B>STAR_TRANSFORMATION</B> hint makes the optimizer use the best plan in which star transformation has been used.\n
+Additional Hints:/*+ UNNEST */=If specified nested subqueries are unnested into the main body of the query.
+Join Operators:/*+ DRIVING_SITE(table) */=This hint can be used to force the optimizer to choose a specific driving site to perform the query in a distributed server specified by <I>table</I>.
+Join Operators:/*+ HASH_AJ */=Use a anti hash join to perform an anti join. Should be specified in the subquery getting the resultset that should not be matched by the <B>IN</B> operator.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE table_name NOT IN \n       (SELECT /*+ HASH_AJ */ table_name\n          FROM user_indexes b\n         WHERE a.table_name = b.table_name);\n</PRE>
+Join Operators:/*+ HASH_SJ */=Use a hash semi join. Should be specified in the subquery getting the resultset for the semi join.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE EXISTS \n       (SELECT /*+ HASH_SJ */ 'X'\n          FROM user_indexes b\n         WHERE a.table_name = b.table_name);\n</PRE>
+Join Operators:/*+ LEADING(table) */=This hint can be used to force the optimizer to choose a specific leading table in a joined statement specified by <I>table</I> as a basis to perform the rest of the optimizations.
+Join Operators:/*+ MERGE_AJ */=Use a anti merge join to perform an anti join. Should be specified in the subquery getting the resultset that should not be matched by the <B>IN</B> operator.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE table_name NOT IN \n       (SELECT /*+ MERGE_AJ */ table_name\n          FROM user_indexes b\n         WHERE a.table_name = b.table_name);\n</PRE>
+Join Operators:/*+ MERGE_SJ */=Use a merge semi join. Should be specified in the subquery getting the resultset for the semi join.<P>\n<PRE>\nSELECT COUNT(1) FROM user_tables a\n WHERE EXISTS \n       (SELECT /*+ MERGE_SJ */ 'X'\n          FROM user_indexes b\n         WHERE a.table_name = b.table_name);\n</PRE>
+Join Operators:/*+ USE_HASH(table[ table]) */=Specify to the optimizer to join the tables using a row source with a hash join from the first <I>table</I> to the next <I>table</I>. Any number of tables can be specified.
+Join Operators:/*+ USE_MERGE(table[ table]) */=Specify to the optimizer to join the tables using a row source with a sort-merge join from the first <I>table</I> to the next <I>table</I>. Any number of tables can be specified.
+Join Operators:/*+ USE_NL(table[ table]) */=Specify to the optimizer to join the tables using a nested loop join from the first <I>table</I> to the next <I>table</I>. Any number of tables can be specified.
+Join Order:/*+ ORDERED */=Indicate to the optimizer that the join order should be the same as the tables are specified in the <B>FROM</B> clause of the select.
+Join Order:/*+ STAR */=Indicate to the optimizer to use a star join to perform the query. This means that the query should start with the largest table, then move to the second largest etc...
+Optimizer Goals:/*+ ALL_ROWS */=Instruct optimizer to optimize for resource consumption. This means that it should try to finish the entire query as soon as posible instead of trying to get a part of the result as soon as posible.
+Optimizer Goals:/*+ CHOOSE */=Instruct the optimizer to use a <B>CHOOSE</B> approach which means to use <B>COST</B> if analyzed statistics is available and otherwise use <B>RULE</B>.
+Optimizer Goals:/*+ FIRST_ROWS */=Instruct the optimizer to optimize for response time of first row in result.
+Optimizer Goals:/*+ RULE */=Use a rulebased approach to optimization.
+Parallel Execution:/*+ APPEND */=When inserting data into a table always add data to the end of the table instead of checking for free space in the table. This is default when using parallel queries but can be overridden using the <B>NOAPPEND</B> hint.
+Parallel Execution:/*+ NOAPPEND */=Override append mode and start looking for free allocated space already in the table.
+Parallel Execution:/*+ NOPARALLEL(table) */=Don't use parallel queries to read the table specified by <I>table</I>.
+Parallel Execution:/*+ NOPARALLEL_INDEX(table index) */=Don't use parallel execution when accessing the index specified by <I>table</I> and <I>index</I>. You can specify several indexes by separating them with <B>,</B>.
+Parallel Execution:/*+ PARALLEL(table[,degree[,split]]) */=Specify how to split a query over parallel queries for a table specified by <I>table</I>. The <I>degree</I> specifies the degree of parallelism on the table and the <I>split</I> specifies how the query should be split among available instances.
+Parallel Execution:/*+ PARALLEL_INDEX(table index degree split) */=Specify how to split an access to an index over parallel queries for a table specified by <I>table</I> and <I>index</I>. The <I>degree</I> specifies the degree of parallelism on the table and the <I>split</I> specifies how the query should be split among available instances. Several indexes, degrees and split can specified by separating them by <B>,</B>.
+Parallel Execution:/*+ PQ_DISTRIBUTE(table,outer,inner) */=See <B>using optimizer hints</B> in <B>Designing and Tuning for Performance</B> available from Oracle for more information about this hint.

Added: kde-extras/tora/branches/upstream/current/src/templates/log4plsql.tpl
===================================================================
--- kde-extras/tora/branches/upstream/current/src/templates/log4plsql.tpl	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/templates/log4plsql.tpl	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,34 @@
+1-loggin:=                                                                                                          <b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net    </a> 
+1-loggin:1.1-initialisation:=<b>Description:                                                                        </b> It is possible to initialize a log context with 1, 2 or 3 parameters. <br><br>1.	The first section (use it for log a code name)<br>2.	A specific log level for this context (use it when you want debug a specific part of you application )<br>3.	A Boolean: TRUE for use a "Log out transactional" features FALSE if not.<br><br>If context is not initialized:<br>·	Section: dynamic pl/plsql call stack<br>·	Level: ERROR<br>·	Log in a transaction <b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.1-initialisation:plog.init ;=<b>Description:                                                             </b> A standard<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ; \n<BR><BR>  <B>prototype</B>:\nfunction init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN) RETURN LOG_CTX;\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.1-initialisation:plog.init(pSECTION);=<b>Description:                                                    </b> Without default parameter<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ('firstSection'); \n<BR><BR><B>prototype</B>:function init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN)RETURN LOG_CTX;\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.1-initialisation:plog.init(pSECTION, pLEVEL);=<b>Description:                                            </b> For debug mode<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ('firstSection', PLOG.LDEBUG); \n<BR><BR><B>prototype</B>:function init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN)RETURN LOG_CTX;\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.1-initialisation:plog.init(pSECTION, pLEVEL, TRUE|FALSE);=<b>Description:                                </b> for "Log out transactional" features<BR><b>Exemple: </b>pCTX PLOG.LOG_CTX := PLOG.init ('firstSection', PLOG.LDEBUG, FALSE);\n<BR><BR><B>prototype</B>:function init( pSECTION IN TLOG.LSECTION%type, pLEVEL IN TLOG.LLEVEL%type, pUSE_PIPE IN BOOLEAN)RETURN LOG_CTX;\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.2-use:=<b>Description:                                                                                   </b> <b>LOG4PLSQL log level</b><br><br><br>plog.error('Text');&nbsp;&nbsp;LERROR&nbsp;&nbsp;The ERROR level designates error events that might still allow the application to continue running.<br>plog.warn ('Text');&nbsp;&nbsp;LWARN&nbsp;&nbsp;The WARN level designates potentially harmful situations<br>plog.info ('Text');&nbsp;&nbsp;LINFO&nbsp;&nbsp;The INFO level designates informational messages that highlight the progress of the application at coarse-grained level.<br>plog.debug('Text');&nbsp;&nbsp;LDEBUG&nbsp;&nbsp;The DEBUG Level designates fine-grained informational events that are most useful to debug an application.<br>Note: error>warn>info>debug<br><br><br><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.2-use:plog.error('Log Text');=<b>Description:                                                            </b> The ERROR level designates error events that might still allow the application to continue running.\n<BR><b>Exemple:plog.error('Text');</b> \n<BR><B>prototype</B>:procedure error( pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.2-use:plog.error(pCTX, 'Log Text');=<b>Description:                                                      </b> The ERROR level designates error events that might still allow the application to continue running.\n<BR><b>Exemple:plog.error(pCTX, 'Text');</b> \n<BR><B>prototype</B>:procedure error( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.2-use:plog.warn('Log Text');=<b>Description:                                                             </b> The WARN level designates potentially harmful situations\n<BR><b>Exemple:</b> plog.warn('Text');\n<BR><B>prototype</B>:procedure warn( pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.2-use:plog.warn(pCTX, 'Log Text');=<b>Description:                                                       </b> The WARN level designates potentially harmful situations\n<BR><b>Exemple:</b> plog.warn(pCTX, 'Text');\n<BR><B>prototype</B>:procedure warn( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.2-use:plog.info('Log Text');=<b>Description:                                                             </b> The INFO level designates informational messages that highlight the progress of the application at coarse-grained level.\n<BR><b>Exemple:</b> plog.info('Text');\n<BR><B>prototype</B>:procedure info( pTEXTE IN TLOG.LTEXTE%type);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.2-use:plog.info(pCTX, 'Log Text');=<b>Description:                                                       </b> The INFO level designates informational messages that highlight the progress of the application at coarse-grained level.\n<BR><b>Exemple:</b> plog.info(pCTX, 'Text');\n<BR><B>prototype</B>:procedure info( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.2-use:plog.debug('Log Text');=<b>Description:                                                            </b> The DEBUG Level designates fine-grained informational events that are most useful to debug an application.\n<BR><b>Exemple:</b> plog.debug('Text');\n<BR><B>prototype</B>:procedure debug( pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.2-use:plog.debug(pCTX, 'Log Text');=<b>Description:                                                      </b> The DEBUG Level designates fine-grained informational events that are most useful to debug an application.\n<BR><b>Exemple:</b> plog.debug(pCTX, 'Text');\n<BR><B>prototype</B>:procedure debug( pCTX IN OUT NOCOPY LOG_CTX, pTEXTE IN TLOG.LTEXTE%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:=<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:Level Management:=It is possible to dynamically increase with setLevel the level of log. A call to setLevel without parameter repositions the levels has that specified in the package.<br><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:Level Management:plog.getLevel(pCTX);=<b>Description:                              </b> return a level.\n<BR><b>Exemple:</b> PLOG.getLevel(pCTX);\n<BR><B>prototype</B>:function getLevel( pCTX IN OUT NOCOPY LOG_CTX);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:Level Management:plog.setLevel(pCTX, PLOG.LLEVEL);=<b>Description:                 </b> increase a current level, it nice for debug a code part.\n<BR><b>Exemple:</b> PLOG.setLevel (pCTX, PLOG.LDEBUG);\n<BR><B>prototype</B>:procedure setLevel( pCTX IN OUT NOCOPY LOG_CTX, pLEVEL IN TLOG.LLEVEL%type);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:Section Management:=By default a section is a PL/SQL call stack. By is possible to specify a hierarchical log node.<br><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:Section Management:plog.getSection(pCTX);=<b>Description:                          </b>  Retrun a section string.\n<BR><b>Exemple:</b> PLOG.getSection(pCTX);\n<BR><B>prototype</B>:function getSection( pCTX IN OUT NOCOPY LOG_CTX);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:Section Management:plog.setBeginSection(pCTX, 'NewSubSectionName');=<b>Description:</b> for create a new node in hierarchy.\n<BR><b>Exemple:</b>  PLOG.SetBeginSection (pCTX, 'Test1');\n<BR><B>prototype</B>:procedure setBeginSection( pCTX IN OUT NOCOPY LOG_CTX, pSECTION IN TLOG.LSECTION%type);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:Section Management:plog.setEndSection(pCTX, 'EndEDSubSectionName')=<b>Description: </b> for close a node in hierarchy.\n<BR><b>Exemple:</b> PLOG.SetEndSection (pCTX, 'Test1');\n<BR><B>prototype</B>:procedure setEndSection( pCTX IN OUT NOCOPY LOG_CTX, pSECTION IN TLOG.LSECTION%type);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:Transaction Management:=Log in transaction have some problems:<BR>-	If you rollback a transaction you log message is rollback in same time<BR>-	If you code is very long operation isn't possible to view a progression.<BR><BR>LOG4PLSQL have features that bypass a transactional problem. This features use a DBMS_PIPE oracle package for logging a message.<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:Transaction Management:plog.getTransactionMode(pCTX);=<b>Description:              </b> return a Boolean TRUE if your use "Log out transactional" features FALSE if not. \n<BR><b>Exemple:</b> PLOG.getTransactionMode(pCTX);\n<BR><B>prototype</B>:function getTransactionMode( pCTX IN OUT NOCOPY LOG_CTX);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+1-loggin:1.3-Dynamique Parameter:Transaction Management:plog.setTransactionMode(pCTX, TRUE|FALSE);=<b>Description:  </b> For set transactional mode (TRUE: Log out transactional, FALSE: Log in transaction).\n<BR><b>Exemple:</b> PLOG.setTransactionMode(pCTX,FALSE);\n<BR><B>prototype</B>:procedure setTransactionMode( pCTX IN OUT NOCOPY LOG_CTX, inTransaction IN boolean);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+2-administration:=<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+2-administration:background process:=<b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+2-administration:background process:plog.background_Log;=<b>Description:                                            </b> Start a pl/sql background_Log.\n<BR><b>Exemple:</b> exec plog.background_Log;\n<BR><B>prototype</B>:procedure background_Log( timeout IN INTEGER);\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+2-administration:background process:plog.background_Log_stop;=<b>Description:                                       </b> Stop a pl/sql backgroud_Log.\n<BR><b>Exemple:</b> exec PLOG.background_Log_stop;\n<BR><B>prototype</B>:procedure background_Log_stop;\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+2-administration:purge:=Clean database log table<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+2-administration:purge:plog.purge=<b>Description:                                                                   </b> \n<BR><b>Exemple:</b> PLOG.purge ;\n<BR><B>prototype</B>:procedure purge\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+2-administration:purge:plog.purge(pCTX );=<b>Description:                                                           </b> \n<BR><b>Exemple:</b> PLOG.purge (pCTX);\n<BR><B>prototype</B>:procedure purge( pCTX IN OUT NOCOPY LOG_CTX);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 
+2-administration:purge:plog.purge(pCTX, TheDate );=<b>Description:                                                  </b> delete a last week log \n<BR><b>Exemple:</b> PLOG.purge (pCTX, sysdate - 7 );\n<BR><B>prototype</B>:procedure purge( pCTX IN OUT NOCOPY LOG_CTX, theDate DATE);\n\n\n<BR><b>See:</b><a href="http://log4plsql.sourceforge.net/">LOG4PLSQL : http://log4plsql.sourceforge.net </a> 


Property changes on: kde-extras/tora/branches/upstream/current/src/templates/log4plsql.tpl
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/src/templates/sqlfunctions.tpl
===================================================================
--- kde-extras/tora/branches/upstream/current/src/templates/sqlfunctions.tpl	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/templates/sqlfunctions.tpl	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,148 @@
+Aggregate Functions:COVAR_POP ( expr1 , expr2 )=Get the population covariance of a set of pairs.<P>\n\nPairs where either <I>expr1</I> or <I>expr2</I> are eliminated first. Then the following\ncalculation is performed:\n\n<PRE>\n(SUM(expr1 * expr2) - SUM(expr2) * SUM(expr1) / n) / n\n</PRE>\n\nThe function returns a number, if applied to an empty set NULL is returned.<P>\n<B>Example:</B>\n<PRE>\nSELECT itemid,COVAR_POP(amount,profit) FROM saleitems GROUP BY itemid;\n\n    ITEMID COVAR_POP(AMOUNT,PROFIT)\n---------- ------------------------\n         1                    84000\n         2                   5062.5\n         3                   325000\n         4               4111.11111\n</PRE>
+Aggregate Functions:COVAR_SAMP ( expr1 , expr2 )=Get the sample covariance of a set of pairs.<P>\n\nPairs where either <I>expr1</I> or <I>expr2</I> are eliminated first. Then the following\ncalculation is performed:\n\n<PRE>\n(SUM(expr1 * expr2) - SUM(expr2) * SUM(expr1) / n) / (n - 1)\n</PRE>\n\nThe function returns a number, if applied to an empty set NULL is returned.<P>\n<B>Example:</B>\n<PRE>\nSELECT itemid,COVAR_SAMP(amount,profit) FROM saleitems GROUP BY itemid;\n\n    ITEMID COVAR_POP(AMOUNT,PROFIT)\n---------- ------------------------\n         1                    84000\n         2                   5062.5\n         3                   325000\n         4               4111.11111\n</PRE>
+Aggregate Functions:GROUPING ( expr )=This function is only usefull in select statements with a group by extension such as <CODE>ROLLUP</CODE>\nor <CODE>CUBE</CODE>. These function generate extra rows with nulls which is the group by aggregate.\nThis function can be use to distinguish these rows from rows that are actually null.<P>\nThe <I>expr</I> must match a group by expression. If the <I>expr</I> is a null that represent an\naggregate row this function returns 1, otherwise it returns 0.<P>\n<B>Example:</B>\n<PRE>\nSELECT DECODE(GROUPING(itemid),1,'Total',itemid) item,\n       SUM(amount) amount,\n       SUM(profit) profit\n  FROM saleitems\n GROUP BY ROLLUP (itemid);\n\nITEM  AMOUNT PROFIT\n----- ------ ------\n1      12000   2200\n2       2760    195\n3      10000   2200\n4       1300    170\nTotal  26060   4765\n</PRE>
+Aggregate Functions:MAX( expr )=Get the largest value of <I>expr</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT MAX(amount) FROM saleitems;\n\nMAX(AMOUNT)\n-----------\n       4000\n</PRE>
+Aggregate Functions:MIN ( expr )=Get the smallest value of <I>expr</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT MIN(amount) FROM saleitems;\n\nMIN(AMOUNT)\n-----------\n        240\n</PRE>
+Aggregate Functions:REGR_AVGX ( expr1 , expr2 )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nAVG ( expr2 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n       REGR_AVGX ( SYSDATE - saledate , amount )\n  FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n      WEEK REGR_AVGX(SYSDATE-SALEDATE,AMOUNT)\n---------- ----------------------------------\n         0                               1280\n         8                                500\n        10                                300\n        13                         3333.33333\n        15                               1360\n        73                               1000\n        74                               1400\n</PRE>
+Aggregate Functions:REGR_AVGY ( expr1 , expr2 )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nAVG ( expr2 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n       REGR_AVGY ( SYSDATE - saledate , amount )\n  FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n      WEEK REGR_AVGY(SYSDATE-SALEDATE,AMOUNT)\n---------- ----------------------------------\n         0                          1.0277662\n         8                         60.0277662\n        10                         71.0277662\n        13                         93.3610995\n        15                         107.027766\n        73                         514.027766\n        74                         518.027766\n</PRE>
+Aggregate Functions:REGR_COUNT ( expr1 , expr2 )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. This function then returns the number of valid pairs left.<P>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n       REGR_COUNT ( SYSDATE - saledate , amount )\n  FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n      WEEK REGR_COUNT(SYSDATE-SALEDATE,AMOUNT)\n---------- -----------------------------------\n         0                                   3\n         8                                   2\n        10                                   1\n        13                                   3\n        15                                   2\n        73                                   1\n        74                                   3\n</PRE>
+Aggregate Functions:REGR_INTERCEPT ( expr1 , expr2 )=Calculates the y-intercept of the regression line. Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nAVG ( expr1 ) - REGR_SLOPE ( expr1 , expr2 ) * AVG ( expr2 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n       REGR_INTERCEPT ( SYSDATE - saledate , amount )\n  FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n      WEEK REGR_INTERCEPT(SYSDATE-SALEDATE,AMOUNT)\n---------- ---------------------------------------\n         0                              1.02846065\n         8                              60.0284606\n        10\n        13                              100.028461\n        15                              107.028461\n        73\n        74                              518.028461\n</PRE>
+Aggregate Functions:REGR_R2 ( expr1 , expr2 )=Represent the determination or goodness of fit for the regression. Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. The value of the functions <CODE>VAR_POP ( expr1 )</CODE> and <CODE>VAR_POP ( expr2 )</CODE> is evaluated after null pairs are removed. The returned value is then one of the following:\n<UL>\n<LI>null if <CODE>VAR_POP ( expr2 )</CODE> = 0.\n<LI>1 if <CODE>VAR_POP ( expr1 )</CODE> = 0 and <CODE>VAR_POP ( expr2 )</CODE> != 0.\n<LI><CODE>POWER ( CORR ( expr1 , expr2 ) , 2 )</CODE> if <CODE>VAR_POP ( expr1 )</CODE> > 0 and <CODE>VAR_POP ( expr2 )</CODE> != 0.\n</UL>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n       REGR_R2 ( SYSDATE - saledate , amount )\n  FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n      WEEK REGR_R2(SYSDATE-SALEDATE,AMOUNT)\n---------- --------------------------------\n         0                       1.4215E-39\n         8                       2.8571E-38\n        10\n        13                              .25\n        15                                1\n        73\n        74                                0\n</PRE>
+Aggregate Functions:REGR_SLOPE ( expr1 , expr2 )=This function returns the slope of the line. Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nCOVAR_POP ( expr1 , expr2 ) / VAR_POP ( expr2 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n       REGR_SLOPE ( SYSDATE - saledate , amount )\n  FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n      WEEK REGR_SLOPE(SYSDATE-SALEDATE,AMOUNT)\n---------- -----------------------------------\n         0                          -3.554E-42\n         8                                   0\n        10\n        13                               -.002\n        15                                   0\n        73\n        74                                   0\n</PRE>
+Aggregate Functions:REGR_SXX ( expr1 , expr2 )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nREGR_COUNT ( expr1 , expr2 ) / VAR_POP ( expr2 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n       REGR_SXX ( SYSDATE - saledate , amount )\n  FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n      WEEK REGR_SXX(SYSDATE-SALEDATE,AMOUNT)\n---------- ---------------------------------\n         0                           4502400\n         8                             20000\n        10                                 0\n        13                        666666.667\n        15                            819200\n        73                                 0\n        74                            560000\n</PRE>
+Aggregate Functions:REGR_SXY ( expr1 , expr2 )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nREGR_COUNT ( expr1 , expr2 ) / VAR_POP ( expr1 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n       REGR_SXY ( SYSDATE - saledate , amount )\n  FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n      WEEK REGR_SXY(SYSDATE-SALEDATE,AMOUNT)\n---------- ---------------------------------\n         0                        1.3000E-35\n         8                        1.0000E-34\n        10                                 0\n        13                        -1333.3333\n        15                                 0\n        73                                 0\n        74                                 0\n</PRE>
+Aggregate Functions:REGR_SYY ( expr1 , expr2 )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nREGR_COUNT ( expr1 , expr2 ) / COVAR_POP ( expr1 )\n</PRE>\n<B>Example:</B><P>\n<PRE>\nSELECT TRUNC((SYSDATE - saledate) / 7) WEEK,\n       REGR_SXY ( SYSDATE - saledate , amount )\n  FROM sales , saleitems\n WHERE sales.saleid = saleitems.saleid\n GROUP BY TRUNC((SYSDATE - saledate) / 7);\n\n      WEEK REGR_SXY(SYSDATE-SALEDATE,AMOUNT)\n---------- ---------------------------------\n         0                        -4.000E-36\n         8                                 0\n        10                                 0\n        13                        -1333.3333\n        15                                 0\n        73                                 0\n        74                                 0\n</PRE>
+Aggregate Functions:STDDEV ( DISTINCT|ALL expr )=Get the standard deviation of <I>expr</I>. This function differs from <CODE>STDDEV_SAMP</CODE> in what it returns when there is only one input row. This function returns 0 and <CODE>STDDEV_SAMP</CODE> returns null. The standard deviation is the square root of the variance defined for the <CODE>VARIANCE</CODE> function.<P>\n<B>Example:</B>\n<PRE>\nSELECT AVG(amount),STDDEV(amount) FROM saleitems;\n\nAVG(AMOUNT) STDDEV(AMOUNT)\n----------- --------------\n    1628.75     1225.85412\n</PRE>
+Aggregate Functions:STDDEV_POP ( expr )=Get the square root of the population variance. This is the same as the square root of the <CODE>VAR_POP</CODE> function.<P>\n<B>Example:</B>\n<PRE>\nSELECT STDDEV_POP(profit) FROM saleitems;\n\nSTDDEV_POP(PROFIT)\n------------------\n        277.077205\n</PRE>
+Aggregate Functions:STDDEV_SAMP ( DISTINCT|ALL expr )=Get the standard deviation of <I>expr</I>. This function differs from <CODE>STDDEV</CODE> in what it returns when there is only one input row. This function returns null and <CODE>STDDEV</CODE> returns 0. The standard deviation is the square root of the variance defined for the <CODE>VARIANCE</CODE> function.<P>\n<B>Example:</B>\n<PRE>\nSELECT AVG(amount),STDDEV_SAMP(amount) FROM saleitems;\n\nAVG(AMOUNT) STDDEV_SAMP(AMOUNT)\n----------- -------------------\n    1628.75          1225.85412\n</PRE>
+Aggregate Functions:SUM ( DISTINCT|ALL expr )=Get the sum of all <I>expr</I> values. If <CODE>DISTINCT</CODE> is specified only distinct values are calculated.<P>\n<B>Example:</B>\n<PRE>\nSELECT SUM(profit) FROM saleitems;\n\nSUM(PROFIT)\n-----------\n       4765\n</PRE>
+Aggregate Functions:VARIANCE ( DISTINCT|ALL expr )=Get the sample variance of the values in <I>expr</I>, if no values are available null is returned. The following calculation is used.\n<PRE>\n( SUM ( expr * expr ) - SUM ( expr ) * SUM ( expr ) / COUNT ( expr ) ) / \n	( COUNT ( expr ) - 1 )\n</PRE>\nIf applied to an empty set 0 is returned.\n<B>Example:</B>\n<PRE>\nSELECT VARIANCE(profit) FROM saleitems;\n\nVARIANCE(PROFIT)\n----------------\n      81889.8958\n</PRE>
+Aggregate Functions:VAR_POP ( expr )=Get the population variance of the values of <I>expr</I>. This is defined by the following formula.<P>\n<PRE>\n( SUM ( expr * expr ) - SUM ( expr ) * SUM ( expr ) / COUNT ( expr ) ) / \n	COUNT ( expr )\n</PRE>\n<B>Example:</B>\n<PRE>\nSELECT VAR_POP(profit) FROM saleitems;\n\nVAR_POP(PROFIT)\n---------------\n     76771.7773\n</PRE>
+Aggregate Functions:VAR_SAMP ( DISTINCT|ALL expr )=Get the sample variance of the values in <I>expr</I>, if no values are available null is returned. The following calculation is used.\n<PRE>\n( SUM ( expr * expr ) - SUM ( expr ) * SUM ( expr ) / COUNT ( expr ) ) / \n	( COUNT ( expr ) - 1 )\n</PRE>\nIf applied to an empty set null is returned.\n<B>Example:</B>\n<PRE>\nSELECT VAR_SAMP(profit) FROM saleitems;\n\nVAR_SAMP(PROFIT)\n----------------\n      81889.8958\n</PRE>
+Analytic Functions:AVG ( DISTINCT|ALL expr ) OVER ( analytic_clause )=Calculates the avarage value of <I>expr</I>.<P>\nIf <CODE>DISTINCT</CODE> is specified duplicates of the same number is only counted as one\nnumber, if <CODE>ALL</CODE> or nothing is specified all numbers are counted equally. If <CODE>DISTINCT</CODE> is specified you can't use order by and windowing specifications in the <I>analytic_clause</I>.
+Analytic Functions:CORR ( expr1 , expr2 ) OVER ( analytic_clause )=Calculate the coefficient of correlation of a set of number pairs.<P>\n\nPairs where either <I>expr1</I> or <I>expr2</I> are eliminated first. Then the following\ncalculation is performed:\n\n<PRE>\nCOVAR_POP(expr1, expr2) / (STDDEV_POP(expr1) * STDDEV_POP(expr2))\n</PRE>\n\nThe function returns a number, if applied to an empty set NULL is returned.
+Analytic Functions:COUNT ( *|DISTINCT|ALL expr ) OVER ( analytic_clause )=Return the number of rows in the resultset. <CODE>DISTINCT</CODE> specifies that only\ndistinct values are to be counted. If <I>expr</I> is NULL it is not counted. <CODE>*</CODE>\n and <CODE>ALL</CODE> indicates that all rows should be counted. If <CODE>DISTINCT</CODE> is specified you can't use order by and windowing specifications in the <I>analytic_clause</I>.
+Analytic Functions:COVAR_POP ( expr1 , expr2 ) OVER ( analytic_clause )=Get the population covariance of a set of pairs.<P>\n\nPairs where either <I>expr1</I> or <I>expr2</I> are eliminated first. Then the following\ncalculation is performed:\n\n<PRE>\n(SUM(expr1 * expr2) - SUM(expr2) * SUM(expr1) / n) / n\n</PRE>\n\nThe function returns a number, if applied to an empty set NULL is returned.<P>\n
+Analytic Functions:COVAR_SAMP ( expr1 , expr2 ) OVER ( analytic_clause )=Get the sample covariance of a set of pairs.<P>\n\nPairs where either <I>expr1</I> or <I>expr2</I> are eliminated first. Then the following\ncalculation is performed:\n\n<PRE>\n(SUM(expr1 * expr2) - SUM(expr2) * SUM(expr1) / n) / (n - 1)\n</PRE>\n\nThe function returns a number, if applied to an empty set NULL is returned.<P>\n
+Analytic Functions:CUME_DIST ( ) OVER ( analytic_clause )=This computes the relative position of a specified value in a group of values. For a given row the <CODE>CUME_DIST</CODE> of this row is the number of rows with lower than or equal to the value of the specified row divided by the total number of rows being evaluated. The values returned are greated than 0 and less than or equal to 1.
+Analytic Functions:DENSE_RANK () OVER ( analytic_clause )=This function computes the rank of each row returned from a query in comparison to the other rows in the query based on the expression in the <CODE>ORDER BY</CODE> of the <I>analytic_clause</I>. Equal values receive the same rank. The next rank is then added with 1 in comparison to the <CODE>RANK</CODE> who adds the number of tied rows.
+Analytic Functions:FIRST_VALUE ( expr ) OVER ( analytic_clause )=Returns the first value of <I>expr</I> in an ordered set of values.
+Analytic Functions:LAG ( value_expr , offset , default ) OVER ( analytic_clause )=This function gives access to the previous values returned in the query. If <I>offset</I> is specified it indicates the number of rows before the current row to look, the default is 1. The <I>default</I> parameter can be used to specify the values if outside the specified window, the default is null.
+Analytic Functions:LAST_VALUE ( expr ) OVER ( analytic_clause )=Returns the last value of <I>expr</I> in an ordered set of values.
+Analytic Functions:LEAD ( expr , offset , default ) OVER ( analytic_clause )=This function gives access to future values returned in the query. If <I>offset</I> is specified it indicates the number of rows after the current row to look, the default is 1. The <I>default</I> parameter can be used to specify the values if outside the specified window, the default is null.
+Analytic Functions:MAX ( expr ) OVER ( analytic_clause )=Get the largest value of <I>expr</I>.<P>
+Analytic Functions:MIN ( expr ) OVER ( analytic_clause )=Get the smallest value of <I>expr</I>.<P>
+Analytic Functions:NTILE ( expr ) OVER ( analytic_clause )=This is function divides a dataset into a number of buckets specified by <I>expr</I> and return the number of the bucket for the current row. The number of rows in each bucket can differ at most 1. If <I>expr</U> is larger than the number of rows only rows number of buckets will be filled with 1. Buckets are numbered from 1 to <I>expr</I>.
+Analytic Functions:PERCENT_RANK () OVER ( analytic_clause )=This computes the relative position of a specified value in a group of values similar to the <CODE>CUME_DIST</CODE> function. The difference is that instead of counting the number of rows before or equal divided by the total number of rows in the set you first deduct one from both the number of rows before and the total number of rows.
+Analytic Functions:RANK ( ) OVER ( analytic_clause )=This function computes the rank of each row returned from a query in comparison to the other rows in the query based on the expression in the <CODE>ORDER BY</CODE> of the <I>analytic_clause</I>. Equal values receive the same rank. The next rank is then added with the number of rows with this rank value.
+Analytic Functions:RATIO_TO_REPORT ( expr ) OVER ( analytic_clause )=This function returns the ratio of <I>expr</I> in comparison to the sum of all <I>expr</I> over the entire set. If <I>expr</I> is null, null is also returned.
+Analytic Functions:REGR_AVGX ( expr1 , expr2 ) OVER ( analytic_clause )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nAVG ( expr2 )\n</PRE>\n
+Analytic Functions:REGR_AVGY ( expr1 , expr2 ) OVER ( analytic_clause )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nAVG ( expr2 )\n</PRE>\n
+Analytic Functions:REGR_COUNT ( expr1 , expr2 ) OVER ( analytic_clause )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. This function then returns the number of valid pairs left.<P>\n
+Analytic Functions:REGR_INTERCEPT ( expr1 , expr2 ) OVER ( analytic_clause )=Calculates the y-intercept of the regression line. Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nAVG ( expr1 ) - REGR_SLOPE ( expr1 , expr2 ) * AVG ( expr2 )\n</PRE>\n
+Analytic Functions:REGR_R2 ( expr1 , expr2 ) OVER ( analytic_clause )=Represent the determination or goodness of fit for the regression. Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. The value of the functions <CODE>VAR_POP ( expr1 )</CODE> and <CODE>VAR_POP ( expr2 )</CODE> is evaluated after null pairs are removed. The returned value is then one of the following:\n<UL>\n<LI>null if <CODE>VAR_POP ( expr2 )</CODE> = 0.\n<LI>1 if <CODE>VAR_POP ( expr1 )</CODE> = 0 and <CODE>VAR_POP ( expr2 )</CODE> != 0.\n<LI><CODE>POWER ( CORR ( expr1 , expr2 ) , 2 )</CODE> if <CODE>VAR_POP ( expr1 )</CODE> > 0 and <CODE>VAR_POP ( expr2 )</CODE> != 0.\n</UL>\n
+Analytic Functions:REGR_SLOPE ( expr1 , expr2 ) OVER ( analytic_clause )=This function returns the slope of the line. Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nCOVAR_POP ( expr1 , expr2 ) / VAR_POP ( expr2 )\n</PRE>\n
+Analytic Functions:REGR_SXX ( expr1 , expr2 ) OVER ( analytic_clause )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nREGR_COUNT ( expr1 , expr2 ) / VAR_POP ( expr2 )\n</PRE>\n
+Analytic Functions:REGR_SXY ( expr1 , expr2 ) OVER ( analytic_clause )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nREGR_COUNT ( expr1 , expr2 ) / VAR_POP ( expr1 )\n</PRE>\n
+Analytic Functions:REGR_SYY ( expr1 , expr2 ) OVER ( analytic_clause )=Pairs where either <I>expr1</I> or <I>expr2</I> are eliminated to begin with. Then the following function is calculated:\n<PRE>\nREGR_COUNT ( expr1 , expr2 ) / COVAR_POP ( expr1 )\n</PRE>\n
+Analytic Functions:ROW_NUMBER ( ) OVER ( analytic_clause )=This function will return a unique value to each row that is returned in the order specify by the <CODE>ORDER BY</CODE> clause of the <I>analytic_clause</I>. The first row returned is 1.
+Analytic Functions:STDDEV ( DISTINCT|ALL expr ) OVER ( analytic_clause )=Get the standard deviation of <I>expr</I>. This function differs from <CODE>STDDEV_SAMP</CODE> in what it returns when there is only one input row. This function returns 0 and <CODE>STDDEV_SAMP</CODE> returns null. The standard deviation is the square root of the variance defined for the <CODE>VARIANCE</CODE> function. If <CODE>DISTINCT</CODE> is specified you can't use order by and windowing specifications in the <I>analytic_clause</I>.\n
+Analytic Functions:STDDEV_POP ( expr ) OVER ( analytic_clause )=Get the square root of the population variance. This is the same as the square root of the <CODE>VAR_POP</CODE> function.
+Analytic Functions:STDDEV_SAMP ( DISTINCT|ALL expr ) OVER ( analytic_clause )=Get the standard deviation of <I>expr</I>. This function differs from <CODE>STDDEV</CODE> in what it returns when there is only one input row. This function returns null and <CODE>STDDEV</CODE> returns 0. The standard deviation is the square root of the variance defined for the <CODE>VARIANCE</CODE> function. If <CODE>DISTINCT</CODE> is specified you can't use order by and windowing specifications in the <I>analytic_clause</I>.\n
+Analytic Functions:SUM ( DISTINCT|ALL expr ) OVER ( analytic_clause )=Get the sum of all <I>expr</I> values. If <CODE>DISTINCT</CODE> is specified only distinct values are calculated. If <CODE>DISTINCT</CODE> is specified you can't use order by and windowing specifications in the <I>analytic_clause</I>.
+Analytic Functions:VARIANCE ( DISTINCT|ALL expr ) OVER ( analytic_clause )=Get the sample variance of the values in <I>expr</I>, if no values are available null is returned. The following calculation is used.\n<PRE>\n( SUM ( expr * expr ) - SUM ( expr ) * SUM ( expr ) / COUNT ( expr ) ) / \n	( COUNT ( expr ) - 1 )\n</PRE>\nIf applied to an empty set 0 is returned. If <CODE>DISTINCT</CODE> is specified you can't use order by and windowing specifications in the <I>analytic_clause</I>.
+Analytic Functions:VAR_POP ( expr ) OVER ( analytic_clause )=Get the population variance of the values of <I>expr</I>. This is defined by the following formula.<P>\n<PRE>\n( SUM ( expr * expr ) - SUM ( expr ) * SUM ( expr ) / COUNT ( expr ) ) / \n	COUNT ( expr )\n</PRE>\n
+Analytic Functions:VAR_SAMP ( DISTINCT|ALL expr ) OVER ( analytic_clause )=Get the sample variance of the values in <I>expr</I>, if no values are available null is returned. The following calculation is used.\n<PRE>\n( SUM ( expr * expr ) - SUM ( expr ) * SUM ( expr ) / COUNT ( expr ) ) / \n	( COUNT ( expr ) - 1 )\n</PRE>\nIf applied to an empty set null is returned. If <CODE>DISTINCT</CODE> is specified you can't use order by and windowing specifications in the <I>analytic_clause</I>.
+Char to Char Functions:CHR ( n USING NCHAR_CS )=Get the character specified by the binary equivalent of <I>n</I> in the national character set. If <CODE>USING NCHAR_CS</CODE> is used, this function returns the equivalent of the national <CODE>NVARCHAR2</CODE>. Otherwise the <CODE>VARCHAR2</CODE> character set is user.<P>\n<B>Examples:</B>\n<PRE>\nSELECT CHR ( 65 ) || CHR ( 66 ) || CHR ( 67 ) abc FROM DUAL;\n\nABC\n---\nABC\n</PRE>
+Char to Char Functions:CONCAT ( char1 , char2 )=This function concatenates the <I>char1</I> string with <I>char2</I>. Which means it will perform the same task as the operator <CODE>||</CODE>.<P>\n<B>Examples:</B>\n<PRE>\nSELECT CONCAT ( 'Foo' , 'bar' ) FROM DUAL;\n\nCONCAT\n------\nFoobar\n</PRE>
+Char to Char Functions:INITCAP ( char )=Return the string of <I>char</I> with the first character in uppercase and all the rest in lowercase.<P>\n<B>Examples:</B>\n<PRE>\nSELECT INITCAP ( 'MaUrItZ' ) FROM DUAL;\n\nINITCAP\n-------\nMauritz\n</PRE>
+Char to Char Functions:LOWER ( char )=Returns the string <I>char</I> with all letters in lowercase.<P>\n<B>Examples:</B>\n<PRE>\nSELECT LOWER ( 'FoPPa' ) FROM DUAL;\n\nLOWER\n-----\nfoppa\n</PRE>
+Char to Char Functions:LPAD ( char1 , n , char2 )=This function returns <I>char1</I> padded from the left to <I>n</I> number of characters. If <I>char2</I> is specified this is used for padding instead of space which is the default.<P>\n<B>Examples:</B>\n<PRE>\nSELECT LPAD ( '>Padding' , 12 , '-=' ) FROM DUAL;\n\nLPAD('>PADDI\n------------\n-=-=>Padding\n</PRE>
+Char to Char Functions:LTRIM ( char1 , char2 )=Removes all characters from the <I>char1</I> available in the set defined by the characters available in the string <I>char2</I> from the left until a character not in the set is encountered.<P>\n<B>Examples:</B>\n<PRE>\nSELECT LTRIM ( '-=-=-=->Text' , '-=>' ) FROM DUAL;\n\nLTRI\n----\nText\n</PRE>
+Char to Char Functions:NLSSORT ( char , nlsparam )=This function returns a string used for sorting the <I>char</I>. The value of <I>nlsparam</I> has the form <CODE>'NLS_<I>param</I> = <I>value</I>'</CODE> usually <CODE>'NLS_SORT = <I>sort</I>'</CODE> where sort can either be <CODE>BINARY</CODE> or any other sort specifier.<P>\n<B>Examples:</B>\n<PRE>\nSELECT NLSSORT ( 'ABCÅÄÖ' , 'NLS_SORT = Swedish' ) FROM DUAL;\n\nNLSSORT('ABCÅÄÖ','NLS_SORT=SWEDISH')\n----------------------------------------------------\n14191E898A8B0001010101010100\n</PRE>
+Char to Char Functions:NLS_INITCAP ( char , nlsparam )=This function returns the string <I>char</I> with the first character is made uppercase and all the other lowercase. The value of <I>nlsparam</I> has the form <CODE>'NLS_<I>param</I> = <I>value</I>'</CODE> usually <CODE>'NLS_SORT = <I>sort</I>'</CODE> where sort can either be <CODE>BINARY</CODE> or any other sort specifier.<P>\n<B>Examples:</B>\n<PRE>\nSELECT NLS_INITCAP ( 'ABCÅÄÖ' , 'NLS_SORT = Swedish' ) FROM DUAL;\n\nNLS_IN\n------\nAbcåäö\n</PRE>
+Char to Char Functions:NLS_LOWER ( char , nlsparam )=This function returns the string <I>char</I> with all letters converted to lowercase. The value of <I>nlsparam</I> has the form <CODE>'NLS_<I>param</I> = <I>value</I>'</CODE> usually <CODE>'NLS_SORT = <I>sort</I>'</CODE> where sort can either be <CODE>BINARY</CODE> or any other sort specifier.<P>\n<B>Examples:</B>\n<PRE>\nSELECT NLS_LOWER ( 'ABCÅÄÖ' , 'NLS_SORT = Swedish' ) FROM DUAL;\n\nNLS_LO\n------\nabcåäö\n</PRE>
+Char to Char Functions:NLS_UPPER ( char , nlsparam )=This function returns the string <I>char</I> with all letters converted to uppercase. The value of <I>nlsparam</I> has the form <CODE>'NLS_<I>param</I> = <I>value</I>'</CODE> usually <CODE>'NLS_SORT = <I>sort</I>'</CODE> where sort can either be <CODE>BINARY</CODE> or any other sort specifier.<P>\n<B>Examples:</B>\n<PRE>\nSELECT NLS_UPPER ( 'ABCÅÄÖ' , 'NLS_SORT = Swedish' ) FROM DUAL;\n\nNLS_UP\n------\nABCÅÄÖ\n</PRE>
+Char to Char Functions:REPLACE ( char , search , replace )=This function will return a string where every occurance in <I>char</I> of the string <I>search</I> is replaced with the <I>replace</I> string.<P>\n<B>Example:</B>\n<PRE>\nSELECT REPLACE ('Gnu','Gnu','Gnu Is Not Unix') FROM DUAL;\n\nREPLACE('GNU','\n---------------\nGnu Is Not Unix\n</PRE>
+Char to Char Functions:RPAD ( char1 , n , char2 )=This function returns <I>char1</I> padded from the right to <I>n</I> number of characters. If <I>char2</I> is specified this is used for padding instead of space which is the default.<P>\n<B>Examples:</B>\n<PRE>\nSELECT RPAD ( 'Padding&lt;' , 12 , '=-' ) FROM DUAL;\n\nRPAD('PADDIN\n------------\nPadding&lt;=-=-\n</PRE>
+Char to Char Functions:RTRIM ( char1 , char2 )=Removes all characters from the <I>char1</I> available in the set defined by the characters available in the string <I>char2</I> from the right until a character not in the set is encountered.<P>\n<B>Examples:</B>\n<PRE>\nSELECT RTRIM ( 'Text&lt;=-=-=-' , '&lt;-=' ) FROM DUAL;\n\nRTRI\n----\nText\n</PRE>
+Char to Char Functions:SOUNDEX ( char )=Returns a string that contains a phonetic representation of <I>char</I>. This is usefull for comparing strings that sound similarly, but are spelled different. The algorithm used is available in <I>The Art of Computer Programming, Volume 3: Sorting and Searching, by Donald E. Knuth</I>.<P>\n<B>Examples:</B>\n<PRE>\nSELECT 'Johnson sounds like Jonsson'\n  FROM DUAL WHERE SOUNDEX ( 'Johnson' ) = SOUNDEX ( 'Jonsson' );\n\n'JOHNSONSOUNDSLIKEJONSSON'\n---------------------------\nJohnson sounds like Jonsson\n</PRE>
+Char to Char Functions:SUBSTR ( char , m , n )=This function returns a substring of of the <I>char</I> string. If <I>m</I> is 0 it is treated as 1 which means the beginning of the string, 2 meaning the second character etc. If <I>m</I> is negative it will count from the end of the string with -1 meaning the last character of the string. If <I>n</I> is not specified the rest of the string is returned.<P>\n<B>Examples:</B>\n<PRE>\nSELECT SUBSTR('Henrik P Johnson',8,3) FROM DUAL;\n\nSUB\n---\nP J\n</PRE>
+Char to Char Functions:SUBSTRB ( char , m , n )=This function returns a substring of of the <I>char</I> string. The difference from <CODE>SUBSTR</CODE> is that this function counts bytes instead of characters which differs if you use multichar charactersets.<P>\n<B>Examples:</B><P>\nIf run on a UNICODE characterset database.\n<PRE>\nSELECT SUBSTRB('Henrik P Johnson',7,4) FROM DUAL;\n\nSU\n--\nri\n</PRE>
+Char to Char Functions:TRANSLATE ( char , from , to )=This function will return a string where every occurance of a character in <I>char</I> is replaced from the character in <I>from</I> with the corresponding character in <I>to</I>. If the character is not available in <I>to</I> it is removed from the result.<P>\n<B>Example:</B>\n<PRE>\nSELECT TRANSLATE ( 'Mauritz' , 'Mauritz' , 'Henrik' ) FROM DUAL;\n\nTRANSL\n------\nHenrik\n</PRE>
+Char to Char Functions:TRIM ( LEADING|TRAILING|BOTH trim FROM source )=This function can trim characters from both beginning (If <CODE>LEADING</CODE> or <CODE>BOTH</CODE> is specified) and end (If <CODE>TRAILING</CODE> or <CODE>BOTH</CODE>) with <CODE>BOTH</CODE> being the default. If <I>trim</I> isn't specified any whitespace is the default. Any characyers in the <I>trim</I> set will be removed from the specified ends of <I>source</I>.<P>\n<B>Examples:</B>\n<PRE>\nSELECT TRIM ( '-=-=-=&gt;Text&lt;=-=-=-' , '&lt;-=&gt;' ) FROM DUAL;\n\nTRIM\n----\nText\n</PRE>
+Char to Char Functions:UPPER ( char )=Returns the string <I>char</I> with all letters in uppercase.<P>\n<B>Examples:</B>\n<PRE>\nSELECT UPPER ( 'FoPPa' ) FROM DUAL;\n\nUPPER\n-----\nFOPPA\n</PRE>
+Char to Number Functions:ASCII ( char )=Get the number representation of the first character in <I>char</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT ASCII('Aloha') FROM DUAL;\n\nASCII('ALOHA')\n--------------\n            65\n</PRE>
+Char to Number Functions:INSTR ( string , substring , pos , occurance )=Search for <I>substring</I> in <I>string</I>. If <I>pos</I> is specified it indicates the character in <I>string</I> to start searching, if negative Oracle will search backwards in the string. If <I>occurance</I> is specified it indicates how many hits to discard before returning (1 meaning the first match). The function returns the position of the charater where the match begins in <I>string</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT INSTR('excellence','e',3,2) FROM DUAL;\n\nINSTR('EXCELLENCE','E',3,2)\n---------------------------\n                          7\n</PRE>
+Char to Number Functions:INSTRB ( str , substring , pos , occurance )=This function is the same as <CODE>INSTR</CODE> except that <I>pos</I> and the returned number is in bytes instead of characters.
+Char to Number Functions:LENGTH ( char )=Get the length of <I>char</I> in characters.<P>\n<B>Example:</B>\n<PRE>\nSELECT LENGTH('GlobeCom') FROM DUAL;\n\nLENGTH('GLOBECOM')\n------------------\n                 8\n</PRE>
+Char to Number Functions:LENGTHB ( char )=Get the length of <I>char</I> in bytes.<P>\n<B>Example:</B><P>\nIf performed on a UNICODE database.\n<PRE>\nSELECT LENGTHB('GlobeCom') FROM DUAL;\n\nLENGTHB('GLOBECOM')\n-------------------\n                 16\n</PRE>
+Conversion Functions:CHARTOROWID ( char )=Convert a <I>char</I> str string value to a <CODE>ROWID</CODE>. This is the reverse of the <CODE>ROWIDTOCHAR</CODE> function.
+Conversion Functions:CONVERT ( char , dest_char_set , source_char_set )=Convert the <I>char</I> string from the <I>source_char_set</I> or the database character set to the <I>dest_char_set</I>. Observe that TOra always communicate with the database in the UTF-8 character set.<P>\n<B>Example:</B>\nAssumes a Latin-1 character set database.\n<PRE>\nSELECT CONVERT ( 'ÅÄÖåäö' , 'UTF8' ) FROM DUAL;\n\nCONVERT('ÅÄÖ\n------------\nÃ\nÃ\n Ãåäö\n</PRE>
+Conversion Functions:HEXTORAW ( char )=Convert a string <I>char</I> containing a hexadecimal dump of <CODE>RAW</CODE> data. This is the reverse of the <CODE>RAWTOHEX</CODE> function.
+Conversion Functions:NUMTODSINTERVAL ( n , interval )=Converts <I>n</I> to an <CODE>INTERVAL DAY TO SECOND</CODE> literal. The string <I>interval</I> specifies the unit of the value <I>n</I> and can be one of the following <CODE>'DAY'</CODE>, <CODE>'HOUR'</CODE>, <CODE>'MINUTE'</CODE> and <CODE>'SECOND'</CODE>.
+Conversion Functions:NUMTOYMINTERVAL ( n , interval )=Converts <I>n</I> to an <CODE>INTERVAL YEAR TO MONTH</CODE> literal. The string <I>interval</I> specifies the unit of the value <I>n</I> and can be one of the following <CODE>'YEAR'</CODE> and <CODE>'MONTH'</CODE>.
+Conversion Functions:RAWTOHEX ( char )=This function converts the <CODE>RAW</CODE> value <I>char</I> to a hexadecimal representation of it that can be treated like a string. This is the reverse of the <CODE>HEXTORAW</CODE> function.<P>\n<B>Example:</B>\n<PRE>\nSELECT RAWTOHEX ( 'GlobeCom' ) FROM DUAL;\n\nRAWTOHEX('GLOBEC\n----------------\n476C6F6265436F6D\n</PRE>
+Conversion Functions:ROWIDTOCHAR ( rowid )=This function returns a string representation of a <CODE>ROWID</CODE>. Use the <CODE>CHARTOROWID</CODE> to convert the string back to a <CODE>ROWID</CODE>.
+Conversion Functions:TO_CHAR( val , fmt , nlsparam )=Convert the <I>val</I> to a string the format specified by the optional <I>fmt</I> parameter and any NLS parameters can be modified by <I>nlsparam</I>. <I>val</I> can be either of date or number. For more information about date and number conversion specifiers refere to the <I>Oracle SQL Reference</I> manual.<P>\n<B>Example:</B>\n<PRE>\nSELECT TO_CHAR ( 123 , '99999.000' ) FROM DUAL;\n\nTO_CHAR(12\n----------\n   123.000\n</PRE>
+Conversion Functions:TO_DATE ( char , fmt , nlsparam )=Convert the string <I>char</I> to a date using the format specified by the optional <I>fmt</I> parameter and any NLS parameters can be modified by <I>nlsparam</I>. For more information about date conversion format specifiers refer to the <I>Oracle SQL Reference</I> manual.<P>\n<B>Example:</B>\n<PRE>\nSELECT TO_DATE ( '2000-01-01' , 'YYYY-MM-DD' ) FROM DUAL;\n\nTO_DATE('\n---------\n01-JAN-00\n</PRE>
+Conversion Functions:TO_LOB ( long )=This function converts a <I>long</I> value of <CODE>LONG</CODE> or <CODE>LONG RAW</CODE> format to a <CODE>LOB</CODE> object. This can only be used in a <CODE>SELECT</CODE> list of a subquery or in an <CODE>INSERT</CODE> statement.
+Conversion Functions:TO_MULTI_BYTE ( char )=This function converts a singlebyte string <I>char</I> to its corresponding multibyte string. If no equivalent multibyte character is available the singlestring character will appear in the returned instead.
+Conversion Functions:TO_NUMBER ( char , fmt , nlsparam )=Convert the string <I>char</I> to a number using the format specified by the optional <I>fmt</I> parameter and any NLS parameters can be modified by <I>nlsparam</I>. For more information about number conversion format specifiers refer to the <I>Oracle SQL Reference</I> manual.<P>
+Conversion Functions:TO_SINGLE_BYTE ( char )=This function converts a multibyte character string <I>char</I> to its corresponding singlebyte characters. If no equivalent singlebyte character is available the multibyte character will appear in the returned instead.<P>\n
+Conversion Functions:TRANSLATE ( text USING CHAR_CS )=Converts <I>text</I> to the character set specified for conversion between the database characterset and the national character set. Specifying <CODE>CHAR_CS</CODE> will return a <CODE>VARCHAR2</CODE> string, <CODE>NCHAR_CS</CODE> will return a <CODE>NVARCHAR2</CODE> string.
+Date Functions:ADD_MONTHS ( d , n )=Add <I>n</I> months to the date <I>d</I>. If next resulting month has less days than the day of the month in <I>d</I> the last of that month will be returned, otherwise the result will have the same day of month as <I>d</I>.\n
+Date Functions:LAST_DAY ( d )=Get the last of the month of the date <I>d</I>.<P>\n<B>Example:</B><P>\nWill return number of days left in month.\n<PRE>\nSELECT TRUNC ( LAST_DAY ( SYSDATE ) - SYSDATE ) FROM DUAL;\n\nTRUNC(SYSDATE-LAST_DAY(SYSDATE))\n--------------------------------\n                              27\n</PRE>
+Date Functions:MONTHS_BETWEEN ( d1 , d2 )=Will calculate the number of months between the date <I>d1</I> and <I>d2</I>. If <I>d1</I> is later than <I>d2</I> the result will be positive, otherwise it will be negative. The fraction is calculated based on a 31-day month.<P>\n<B>Example:</B>\n<PRE>\nSELECT MONTHS_BETWEEN(SYSDATE,TO_DATE('1973-12-21','YYYY-MM-DD')) FROM DUAL;\n\nMONTHS_BETWEEN(SYSDATE,TO_DATE('1973-12-21','YYYY-MM-DD'))\n----------------------------------------------------------\n                                                329.437957\n</PRE>
+Date Functions:NEW_TIME ( d , z1 , z2 )=This function converts the date <I>d</I> specified in timezone <I>z1</I> to what the time is in the timezone <I>z2</I>. The timezones can be one of the following <CODE>AST</CODE>, <CODE>ADT</CODE>, <CODE>BST</CODE>,\n<CODE>BDT</CODE>, <CODE>CST</CODE>, <CODE>CDT</CODE>, <CODE>EST</CODE>, <CODE>EDT</CODE>, <CODE>GMT</CODE>, <CODE>HST</CODE>, <CODE>HDT</CODE>, <CODE>MST</CODE>, <CODE>MDT</CODE>, <CODE>NST</CODE>, <CODE>PST</CODE>, <CODE>PDT</CODE>, <CODE>YST</CODE> and <CODE>YDT</CODE>. For more information refer to the <I>Oracle SQL Reference</I> manual.<P>\n<B>Example:</B>\n<PRE>\nSELECT TO_CHAR ( NEW_TIME ( SYSDATE , 'CDT' , 'GMT' ) , \n                 'YYYY-MM-DD HH24:MI:SS' )\n  FROM DUAL;\n\nTO_CHAR(NEW_TIME(SY\n-------------------\n2001-06-03 18:59:03\n</PRE>
+Date Functions:NEXT_DAY ( d , char )=Get the date of the first weekday named by <I>char</I> after the specified date <I>d</I>. <I>char</I> must be in the language of your session and can be either the full name or it's abbreviation.<P>\n<B>Example:</B>\n<PRE>\nSELECT NEXT_DAY ( SYSDATE , 'MONDAY' ) FROM DUAL;\n\nNEXT_DAY(\n---------\n04-JUN-01\n</PRE>
+Date Functions:ROUND ( d , fmt )=Round off the date <I>d</I> to the unit specified by the <I>fmt</I> format model. For more information about date formats refer to the <I>Oracle SQL Reference</I> manual. If <I>fmt</I> is not specified the result is rounded to days.<P>\n<B>Example:</B>\n<PRE>\nSELECT ROUND ( SYSDATE , 'MONTH' ) FROM DUAL;\n\nROUND(SYS\n---------\n01-JUN-01\n</PRE>
+Date Functions:SYSDATE=Get the current date and time of the database.
+Date Functions:TRUNC ( d , char )=Truncate the date <I>d</I> to the unit specified by the <I>fmt</I> format model. For more information about date formats refer to the <I>Oracle SQL Reference</I> manual. If <I>fmt</I> is not specified the result is rounded to days.<P>\n<B>Example:</B>\n<PRE>\nSELECT TRUNC ( SYSDATE , 'MONTH' ) FROM DUAL;\n\nTRUNC(SYS\n---------\n01-JUN-01\n</PRE>
+Example Tables=The following SQL script will create the example tables used in these template descriptions.<P>\n<PRE>\n<HR>\nPROMPT CREATE TABLE saleitems\n\nCREATE TABLE saleitems\n(\n    saleid                          NUMBER                          NOT NULL\n  , itemid                          NUMBER                          NOT NULL\n  , quantity                        NUMBER                          \n  , amount                          NUMBER                          \n  , profit                          NUMBER                          \n);\n\nPROMPT ALTER TABLE saleitems ADD CONSTRAINT saleitems_pk PRIMARY KEY\n\nALTER TABLE saleitems ADD CONSTRAINT saleitems_pk PRIMARY KEY\n(\n    saleid,\n    itemid\n);\n\nPROMPT CREATE TABLE sales\n\nCREATE TABLE sales\n(\n    saleid                          NUMBER                          NOT NULL\n  , customerid                      NUMBER                          \n  , saledate                        DATE                            \n  , deliverydate                    DATE                            \n  , sellerid                        NUMBER                          \n)\n;\n\nPROMPT ALTER TABLE sales ADD CONSTRAINT sales_pk PRIMARY KEY\n\nALTER TABLE sales ADD CONSTRAINT sales_pk PRIMARY KEY\n(\n    saleid\n);\n\nPROMPT CONTENTS OF saleitems\n\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('1','1','1','1000','200');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('1','2','10','1200','60');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('1','3','2','2000','400');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('2','2','2','240','5');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('2','3','3','3000','600');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('2','4','6','600','100');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('3','3','1','1000','200');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('4','2','6','720','30');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('4','1','2','2000','500');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('5','3','4','4000','1000');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('5','1','3','3000','600');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('6','2','5','600','100');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('6','4','4','400','50');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('7','4','3','300','20');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('8','1','3','3000','400');\nINSERT INTO saleitems (saleid,itemid,quantity,amount,profit) VALUES ('9','1','3','3000','500');\nCOMMIT;\n\nPROMPT CONTENTS OF sales\n\nINSERT INTO sales (saleid,customerid,saledate,deliverydate,sellerid) VALUES ('1','1',TO_DATE('2000-01-01 00:00:00','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2000-01-05 00:00:00','YYYY-MM-DD HH24:MI:SS'),'1');\nINSERT INTO sales (saleid,customerid,saledate,deliverydate,sellerid) VALUES ('2','1',TO_DATE('2001-06-01 00:00:00','YYYY-MM-DD HH24:MI:SS'),NULL,'2');\nINSERT INTO sales (saleid,customerid,saledate,deliverydate,sellerid) VALUES ('3','2',TO_DATE('2000-01-05 00:00:00','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2000-01-20 00:00:00','YYYY-MM-DD HH24:MI:SS'),'3');\nINSERT INTO sales (saleid,customerid,saledate,deliverydate,sellerid) VALUES ('4','2',TO_DATE('2001-02-15 00:00:00','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2001-02-24 00:00:00','YYYY-MM-DD HH24:MI:SS'),'2');\nINSERT INTO sales (saleid,customerid,saledate,deliverydate,sellerid) VALUES ('5','3',TO_DATE('2001-03-02 00:00:00','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2001-03-19 00:00:00','YYYY-MM-DD HH24:MI:SS'),'2');\nINSERT INTO sales (saleid,customerid,saledate,deliverydate,sellerid) VALUES ('6','3',TO_DATE('2001-04-03 00:00:00','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2001-04-13 00:00:00','YYYY-MM-DD HH24:MI:SS'),'3');\nINSERT INTO sales (saleid,customerid,saledate,deliverydate,sellerid) VALUES ('7','2',TO_DATE('2001-03-23 00:00:00','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2001-04-04 00:00:00','YYYY-MM-DD HH24:MI:SS'),'3');\nINSERT INTO sales (saleid,customerid,saledate,deliverydate,sellerid) VALUES ('8','1',TO_DATE('2001-02-26 00:00:00','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2001-03-02 00:00:00','YYYY-MM-DD HH24:MI:SS'),'1');\nCOMMIT;\n\n</PRE>
+Misc Single-Row Functions:BFILENAME ( ' directory ' , ' filename ' )=
+Misc Single-Row Functions:DUMP ( expr , return_fmt , start , length )=Get a <CODE>VARCHAR2</CODE> containing the internal database representation of <I>expr</I>. Data is always always in the database character set. <I>return_fmt</I> can be used to specify the format of the returned data and specifies the radix (Octal, decimal and hexadecimal available) or 17 which specifies single characters. If 1000 is added to the <I>return_fmt</I> will also return the character set information of the data. <I>start</I> and <I>length</I> can be used to extract different portions of the internal data.<P>\n<B>Example:</B>\n<PRE>\nSELECT DUMP ( 'GlobeCom' ) FROM DUAL;\n\nDUMP('GLOBECOM')\n------------------------------------------\nTyp=96 Len=8: 71,108,111,98,101,67,111,109\n\nSELECT DUMP ( 'Mauritz' , 1017 ) FROM DUAL;\n\nDUMP('MAURITZ',1017)\n-----------------------------------------------------\nTyp=96 Len=7 CharacterSet=WE8ISO8859P1: M,a,u,r,i,t,z\n</PRE>
+Misc Single-Row Functions:EMPTY_BLOB ( )=Return an empty but initialised BLOB object.<P>
+Misc Single-Row Functions:EMPTY_CLOB ( )=Return an empty but initialised BLOB object.<P>
+Misc Single-Row Functions:GREATEST ( expr1 , expr2 )=Returns the greatest of the specified expressions.<P>\n<B>Example:</B>\n<PRE>\nSELECT GREATEST ( 1 , 5 , 3 , 8 , -5 ) FROM DUAL;\n\nGREATEST(1,5,3,8,-5)\n--------------------\n                   8\n</PRE>
+Misc Single-Row Functions:LEAST ( expr1 , expr2 )=Returns the smallest of the specified expressions.<P>\n<B>Example:</B>\n<PRE>\nSELECT LEAST ( 1 , 5 , 3 , 8 , -5 ) FROM DUAL;\n\nLEAST(1,5,3,8,-5)\n-----------------\n               -5\n</PRE>
+Misc Single-Row Functions:NLS_CHARSET_DECL_LEN ( bytes , csid )=Get the declaration width of an <CODE>NCHAR</CODE> in number of characters. The <I>bytes</I> specifies the width of the column in bytes. The <I>csid</I> indicates the character set ID.<P>\n<B>Example:</B>\n<PRE>\nSELECT NLS_CHARSET_DECL_LEN ( 200 ,\n                              NLS_CHARSET_ID ( 'ZHT16BIG5FIXED' ) )\n  FROM DUAL;\n\nNLS_CHARSET_DECL_LEN(200,NLS_CHARSET_ID('ZHT16BIG5FIXED'))\n----------------------------------------------------------\n                                                       100\n</PRE>
+Misc Single-Row Functions:NLS_CHARSET_ID ( charset )=Get the character set ID from an NLS character set name <I>charset</I>. If <CODE>'NCHAR_CS'</CODE> is specified the multibyte character set of the server and <CODE>'CHAR_CS'</CODE> the singlebyte character set of the server.<P>\n<B>Example:</B>\n<PRE>\nSELECT NLS_CHARSET_ID ( 'ZHT16BIG5FIXED' ) FROM DUAL;\n\nNLS_CHARSET_ID('ZHT16BIG5FIXED')\n--------------------------------\n                            1865\n</PRE>
+Misc Single-Row Functions:NLS_CHARSET_NAME ( n )=Get the character set name from a character set ID.<P>\n<B>Example:</B>\n<PRE>\nSELECT NLS_CHARSET_NAME ( 1865 ) FROM DUAL;\n\nNLS_CHARSET_NA\n--------------\nZHT16BIG5FIXED\n</PRE>
+Misc Single-Row Functions:NVL ( expr1 , expr2 )=This function returns <I>expr1</I> if it isn't null, in that case <I>expr2</I> is returned.<P>\n<B>Example:</B>\n<PRE>\nSELECT NVL ( NULL , 'GlobeCom' ) , NVL ( 'Rules' , 'Sucks' ) FROM DUAL;\n\nNVL(NULL NVL('\n-------- -----\nGlobeCom Rules\n</PRE>
+Misc Single-Row Functions:NVL2 ( expr1 , expr2 , expr3 )=This function returns <I>expr2</I> if <I>expr1</I> is not null, and <I>expr3</I> if it is null.<P>\n<B>Example:</B>\n<PRE>\nSELECT NVL2 ( 1 , 'Mauritz' , 'Henrik' ) FROM DUAL;\n\nNVL2(1,\n-------\nMauritz\n</PRE>
+Misc Single-Row Functions:SYS_CONTEXT ( namespace , attribute , length )=This function returns the value of <I>attribute</I> associated with the context <I>namespace</I>. The maximum size is by default 256 bytes which can be overridden by specifying the <I>length</I> parameter. For more information see the Oracle documentation.<P>\n<B>Example:</B>\n<PRE>\nSELECT SYS_CONTEXT ('USERENV', 'SESSION_USER') \n  FROM DUAL;\n\nSYS_CONTEXT('USERENV','SESSION_USER')\n--------------------------------------------------------------------------------\nSYSTEM\n</PRE>
+Misc Single-Row Functions:SYS_GUID ( )=This function returns a generated globally unique number of format <CODE>RAW</CODE> consisting of 16 bytes.<P>\n<B>Example:</B>\n<PRE>\nSELECT SYS_GUID ( ) FROM DUAL;\n\nSYS_GUID()\n--------------------------------\n85DB35952D9A27E7E030007F010040E7\n</PRE>
+Misc Single-Row Functions:UID=This function returns an integer that identifies the session user.<P>\n<B>Example:</B>\n<PRE>\nSELECT UID FROM DUAL;\n\n       UID\n----------\n         5\n</PRE>
+Misc Single-Row Functions:USER=Return the name of the session user.<P>\n<B>Example:</B>\n<PRE>\nSELECT USER FROM DUAL;\n\nUSER\n------------------------------\nSYSTEM\n</PRE>
+Misc Single-Row Functions:USERENV ( option )=This function returns information about the current session. For more information about values of <I>option</I> refer to the Oracle documentation.<P>\n<B>Example:</B>\n<PRE>\nSELECT USERENV ( 'SESSIONID' ) FROM DUAL;\n\nUSERENV('SESSIONID')\n--------------------\n               13809\n</PRE>
+Misc Single-Row Functions:VSIZE ( expr )=Get the number of bytes needed to store the value of <I>expr</I> in the internal database representation.<P>\n<B>Example:</B>\n<PRE>\nSELECT VSIZE ( 'Mauritz' ) FROM DUAL;\n\nVSIZE('MAURITZ')\n----------------\n               7\n</PRE>
+Number functions:ABS ( n )=ABS returns the absolute value of <I>n</I>.<P>\n<B>Example:</B><P>\n<PRE>\nSELECT ABS(-32) FROM DUAL;\n\nABS(-32)\n--------\n      32\n</PRE>
+Number functions:ACOS ( n )=Get the arc cosine of <I>n</I>. The angle unit is radeans.<P>\n<B>Example:</B>\n<PRE>\nSELECT ACOS ( 0.5 ) FROM DUAL;\n\n ACOS(0.5)\n----------\n1.04719755\n</PRE>
+Number functions:ADD_MONTHS ( d , n )=Add <I>n</I> months to the date <I>d</I>. If next resulting month has less days than the day of the month in <I>d</I> the last of that month will be returned, otherwise the result will have the same day of month as <I>d</I>.\n
+Number functions:ASIN ( n )=Get the arc sine of <I>n</I>. The angle unit is radeans.<P>\n<B>Example:</B>\n<PRE>\nSELECT ASIN ( 0.5 ) FROM DUAL;\n\n ASIN(0.5)\n----------\n.523598776\n</PRE>
+Number functions:ATAN ( n )=Get the arc tangentent of <I>n</I>. The angle unit is radeans.<P>\n<B>Example:</B>\n<PRE>\nSELECT ATAN ( 0.5 ) FROM DUAL;\n\n ATAN(0.5)\n----------\n.463647609\n</PRE>
+Number functions:ATAN2 ( n , m )=Get the arc tangentent of <I>n</I> / <I>m</I>. The angle unit is radeans.<P>\n<B>Example:</B>\n<PRE>\nSELECT ATAN2 ( 1 , 2 ) FROM DUAL;\n\nATAN2(1,2)\n----------\n.463647609\n</PRE>
+Number functions:BITAND ( argument1 , argument2 )=Calculate the bitwise and of <I>argument1</I> and <I>argument2</I> which must both be positive integers.
+Number functions:CEIL ( n )=Return the smallest integer greater than or equal to <I>n</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT CEIL ( 1.3 ) FROM DUAL;\n\n CEIL(1.3)\n----------\n         2\n</PRE>
+Number functions:COS ( n )=Return the cosine of <I>n</I>. The angle unit is radeans.<P>\n<B>Example:</B>\n<PRE>\nSELECT COS ( ACOS ( 0.5 ) ) FROM DUAL;\n\nCOS(ACOS(0.5))\n--------------\n            .5\n</PRE>
+Number functions:COSH ( n )=Return the hyperbolic cosine of <I>n</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT COSH ( 1 ) FROM DUAL;\n\n   COSH(1)\n----------\n1.54308063\n</PRE>
+Number functions:EXP ( n )=Calculate e raised to the <I>n</I>:th power.<P>\n<B>Example:</B>\n<PRE>\nSELECT EXP( 1 ) FROM DUAL;\n\n    EXP(1)\n----------\n2.71828183\n</PRE>
+Number functions:FLOOR ( n )=Return the largest integer smaller than or equal to <I>n</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT FLOOR ( 1.3 ) FROM DUAL;\n\nFLOOR(1.3)\n----------\n         1\n</PRE>
+Number functions:LN ( n )=Calculate the natural logaritm of <I>n</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT LN ( EXP ( 1 ) ) FROM DUAL;\n\nLN(EXP(1))\n----------\n         1\n</PRE>
+Number functions:LOG ( m , n )=Calculate the logarithm with base <I>m</I> of <I>n</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT LOG ( 10 , 100 ) FROM DUAL;\n\nLOG(10,100)\n-----------\n          2\n</PRE>
+Number functions:MOD ( m , n )=Calculate the remainder of <I>m</I> divided by <I>n</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT MOD ( 15 , 4 ) , MOD ( -14 , 4 ) FROM DUAL;\n\n MOD(15,4) MOD(-14,4)\n---------- ----------\n         3         -2\n</PRE>
+Number functions:POWER ( m , n )=Calculate <I>m</I> raised to the power of <I>n</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT POWER(4,0.5) FROM DUAL;\n\nPOWER(4,0.5)\n------------\n           2\n</PRE>
+Number functions:ROUND ( n , m )=Rounds the number <I>n</I> off to <I>m</I> places right of the decimal. If <I>m</I> is not specified <I>n</I> is rounded to an integer.<P>\n<B>Example:</B>\n<PRE>\nSELECT ROUND ( 123 , -1 ) FROM DUAL;\n\nROUND(123,-1)\n-------------\n          120\n</PRE>
+Number functions:SIGN ( n )=Return the sign of <I>n</I>. This means -1 is returned if <I>n</I> is below 0, 0 if it is equal to 0 and 1 if above.<P>\n<B>Example:</B>\n<PRE>\nSELECT SIGN(12) FROM DUAL;\n\n  SIGN(12)\n----------\n         1\n</PRE>
+Number functions:SIN ( n )=Return the sine of <I>n</I>. The angle unit is radeans.<P>\n<B>Example:</B>\n<PRE>\nSELECT SIN ( ASIN ( 0.5 ) ) FROM DUAL;\n\nSIN(ASIN(0.5))\n--------------\n            .5\n</PRE>
+Number functions:SINH ( n )=Return the hyperbolic sine of <I>n</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT SINH ( 1 ) FROM DUAL;\n\n   SINH(1)\n----------\n1.17520119\n</PRE>
+Number functions:SQRT ( n )=Calculate the square root of <I>n</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT SQRT(100) FROM DUAL;\n\n SQRT(100)\n----------\n        10\n</PRE>
+Number functions:TAN ( n )=Return the tangent of <I>n</I>. The angle unit is radeans.<P>\n<B>Example:</B>\n<PRE>\nSELECT TAN ( ATAN ( 0.5 ) ) FROM DUAL;\n\nTAN(ATAN(0.5))\n--------------\n            .5\n</PRE>
+Number functions:TANH ( n )=Return the hyperbolic tangent of <I>n</I>.<P>\n<B>Example:</B>\n<PRE>\nSELECT TANH ( 1 ) FROM DUAL;\n\n   TANH(1)\n----------\n.761594156\n</PRE>
+Number functions:TRUNC ( n , m )=Rounds the number <I>n</I> off to <I>m</I> places right of the decimal downwards. If <I>m</I> is not specified <I>n</I> is rounded to an integer.<P>\n<B>Example:</B>\n<PRE>\nSELECT TRUNC ( 123 , -1 ) FROM DUAL;\n\nTRUNC(123,-1)\n-------------\n          120
+Object Functions:DEREF ( expr )=Returns an object reference to the object of <I>expr</I>.
+Object Functions:MAKE_REF ( table|view , key )=Create a referens to a row of view or table.
+Object Functions:REF ( correlation )=See <I>Oracle SQL Reference</I> for more information about this function.
+Object Functions:REFTOHEX ( expr )=Convert a reference <I>expr</I> to a hexadecimal value.
+Object Functions:VALUE ( correlation )=See <I>Oracle SQL Reference</I> for more information about this function.

Added: kde-extras/tora/branches/upstream/current/src/toabout.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toabout.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toabout.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,170 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "toabout.h"
+
+#include <qtextview.h>
+#include <qmime.h>
+#include <qpushbutton.h>
+
+#include "config.h"
+
+#include "toconf.h"
+#include "LICENSE.h"
+#include "icons/largelogo.xpm"
+
+#include "toabout.moc"
+#include "toaboutui.moc"
+
+static const char *AboutText = "<IMG SRC=largelogo.xpm><BR>\n"
+                               "Version %1 (<A HREF=http://tora.sourceforge.net>http://tora.sourceforge.net</A>)\n"
+                               "<P>\n"
+                               "&copy; 2003-2005 Quest Software, Inc. "
+                               "(<A HREF=http://www.quest.com>http://www.quest.com/</a>).<P>\n"
+                               "Portions &copy; 2005 other contributors<P>\n"
+                               "Written by Henrik Johnson with contributions by the Open Source community.<P>\n"
+                               "SourceForge project administered by Nathan Neulinger <A HREF=\"mailto:nneul at umr.edu\">nneul at umr.edu</A><P>\n"
+                               "This program is available\n"
+                               "under the GNU General Public License.\n"
+                               "Uses the Qt library by TrollTech\n"
+                               "(<A HREF=http://www.trolltech.com>http://www.trolltech.com/</A>).<P>\n"
+                               "\n"
+                               "<HR BREAK=ALL>\n"
+                               "This program is distributed in the hope that it will be useful,\n"
+                               "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+                               "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
+                               "GNU General Public License for more details."
+                               "<HR BREAK=ALL>\n"
+                               "Development team (in alphabetical order):<P>\n"
+                               "<UL>\n"
+                               "<LI><B>Alexey Danilchenko</B>\n"
+                               "<LI><B>Henrik Johnson</B>\n"
+                               "<LI><B>Ivan Brezina</B>\n"
+                               "<LI><B>Mike Johnson</B>\n"
+                               "<LI><B>Nathan Neulinger</B>\n"
+                               "<LI><B>Oliver Jehle</B>\n"
+                               "<LI><B>Raj Thukral</B>\n"
+                               "<LI><B>Thomas Porschberg</B>\n"
+                               "<LI><B>Volker Götz</B>\n"
+                               "</UL>\n"
+                               "Contributors (In alphabetical order):<P>\n"
+                               "<UL>\n"
+                               "<LI><B>Alexander (Leo) Bergolth</B> - Access to Oracle 7 database.\n"
+                               "<LI><B>Volker Götz</B> - Improved PostgreSQL support.\n"
+                               "<LI><B>Oliver Jehle</B> - Object caching to disc, SAP and much more.\n"
+                               "<LI><B>Sergei Kuchin</B> - Oracle Template Library.\n"
+                               "<LI><B>Michael Meskes</B> - Debian maintainer (<A HREF=http://www.debian.org>http://www.debian.org/</A>).\n"
+                               "<LI><B>Selcuk Ozturk</B> - Improved content editor.\n"
+                               "<LI><B>Andreas Piesk</B> - Significant oracle related patches and bug fixes.\n"
+                               "<LI><B>Jeff Price</B> - Endless feature requests and more.\n"
+                               "<LI><B>Stefan Rindeskär</B> - Improved PostgreSQL support.\n"
+                               "<LI><B>Adam vonNieda</B> - Improvements to RMAN monitoring from OracleTool (<A HREF=http://www.oracletool.com>http://www.oracletool.com</A>)\n"
+                               "<LI><B>Guillaume Moulard</B> - Log4PL/SQL documentation.\n"
+                               "</UL>\n"
+                               "Other contributors:<P>\n"
+                               "<B>Nuno Araujo</B>,\n"
+                               "<B>Ivan Brezina</B>,\n"
+                               "<B>Nathan Bryant</B>,\n"
+                               "<B>Robert Cheramy</B>,\n"
+                               "<B>Francesco Dandrea</B>,\n"
+                               "<B>Ferdinand Gassauer</B>,\n"
+                               "<B>Robert Ham</B>,\n"
+                               "<B>Rick Hall</B>,\n"
+                               "<B>Rico Hendriks</B>,\n"
+                               "<B>Frits Hoogland</B>,\n"
+                               "<B>Mihai Ibanescu</B>,\n"
+                               "<B>Bo Johansson</B>,\n"
+                               "<B>Olof Jönsson</B>,\n"
+                               "<B>Michael Kaes</B>,\n"
+                               "<B>Norbert Kiesel</B>,\n"
+                               "<B>Pawe=B3 Kucharczyk</B>,\n"
+                               "<B>Jacob Lauemølle</B>,\n"
+                               "<B>Laramie Leavitt</B>,\n"
+                               "<B>Paolo Magnoli</B>,\n"
+                               "<B>Vladimir Naprstek</B>,\n"
+                               "<B>Peter Nyborg</B>,\n"
+                               "<B>Frank Pavageau</B>,\n"
+                               "<B>Gerard H. Pille</B>,\n"
+                               "<B>Thomas Porschberg</B>,\n"
+                               "<B>Jan Pruner</B>,\n"
+                               "<B>Jonas Rathert</B>,\n"
+                               "<B>Christopher R. Redinger</B>,\n"
+                               "<B>Erik Selberg</B>,\n"
+                               "<B>Dennis Selsky</B>,\n"
+                               "<B>Theo Schlossnagle</B>,\n"
+                               "<B>Roman Stepanov</B>,\n"
+                               "<B>Petr Vanek</B>,\n"
+                               "<B>Daniel Vérité</B>,\n"
+                               "<B>Matthias Wolle</B>,\n"
+                               "<B>Joachim Zetzsche</B>,\n"
+                               "<B>Massimiliano Ziccardi</B>,\n"
+                               "<B>Raj Thukral</B>...\n";
+
+#define ABOUT_CAPTION TOAPPNAME " %1"
+
+
+toAbout::toAbout(int page, QWidget* parent, const char* name, bool modal, WFlags fl)
+        : toAboutUI(parent, name, modal, fl)
+{
+    QMimeSourceFactory::defaultFactory()->setPixmap(QString::fromLatin1("largelogo.xpm"),
+						    QPixmap(const_cast<const char**>(largelogo_xpm)));
+
+    switch (page)
+    {
+    case 1:
+        setCaption(tr("GNU General Public License"));
+        TextView->setText(tr(LicenseText));
+        TextView->setPaper(QColor(255, 255, 255));
+        TextView->setTextFormat(PlainText);
+        if (parent)
+            CancelButton->hide();
+        break;
+    default:
+        setCaption(tr(ABOUT_CAPTION).arg(QString::fromLatin1(TOVERSION)));
+        QString buffer = tr(AboutText).arg(QString::fromLatin1(TOVERSION));
+        TextView->setText(buffer);
+        TextView->setPaper(QColor(227, 184, 54));
+        TextView->setTextFormat(RichText);
+        CancelButton->hide();
+        break;
+    }
+}
+
+toAbout::~toAbout()
+{
+    QMimeSourceFactory::defaultFactory()->setPixmap(QString::fromLatin1("largelogo.xpm"),0);
+}

Added: kde-extras/tora/branches/upstream/current/src/toabout.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toabout.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toabout.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,53 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOABOUT_H
+#define TOABOUT_H
+
+#include "toaboutui.h"
+
+class toAbout : public toAboutUI
+{
+    Q_OBJECT
+
+public:
+    toAbout(int page, QWidget* parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0);
+    ~toAbout();
+
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toaboutui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toaboutui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toaboutui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,79 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'toaboutui.ui'
+**
+** Created: Tue Sep 18 08:21:27 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "toaboutui.h"
+
+#include <qvariant.h>
+#include <qtextview.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toAboutUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toAboutUI::toAboutUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toAboutUI" );
+    toAboutUILayout = new QGridLayout( this, 1, 1, 11, 6, "toAboutUILayout"); 
+
+    TextView = new QTextView( this, "TextView" );
+    TextView->setTextFormat( QTextView::RichText );
+
+    toAboutUILayout->addMultiCellWidget( TextView, 0, 0, 0, 3 );
+
+    OkButton = new QPushButton( this, "OkButton" );
+    OkButton->setDefault( TRUE );
+
+    toAboutUILayout->addWidget( OkButton, 1, 2 );
+
+    CancelButton = new QPushButton( this, "CancelButton" );
+
+    toAboutUILayout->addWidget( CancelButton, 1, 3 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toAboutUILayout->addItem( Spacer1, 1, 1 );
+    languageChange();
+    resize( QSize(475, 400).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( OkButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( CancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
+
+    // tab order
+    setTabOrder( TextView, OkButton );
+    setTabOrder( OkButton, CancelButton );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toAboutUI::~toAboutUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toAboutUI::languageChange()
+{
+    setCaption( tr( "toAboutUI" ) );
+    OkButton->setText( tr( "&Ok" ) );
+    CancelButton->setText( tr( "Cancel" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/toaboutui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toaboutui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toaboutui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'toaboutui.ui'
+**
+** Created: Tue Sep 18 08:21:27 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOABOUTUI_H
+#define TOABOUTUI_H
+
+#include <qvariant.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QTextView;
+class QPushButton;
+
+class toAboutUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toAboutUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toAboutUI();
+
+    QTextView* TextView;
+    QPushButton* OkButton;
+    QPushButton* CancelButton;
+
+protected:
+    QGridLayout* toAboutUILayout;
+    QSpacerItem* Spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOABOUTUI_H

Added: kde-extras/tora/branches/upstream/current/src/toaboutui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toaboutui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toaboutui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,110 @@
+<!DOCTYPE UI><UI>
+<class>toAboutUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toAboutUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>475</width>
+            <height>400</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>toAboutUI</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0"  rowspan="1"  colspan="4" >
+            <class>QTextView</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextView</cstring>
+            </property>
+            <property stdset="1">
+                <name>textFormat</name>
+                <enum>RichText</enum>
+            </property>
+        </widget>
+        <widget row="1"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>OkButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="1"  column="3" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>CancelButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <spacer row="1"  column="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>OkButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toAboutUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>CancelButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toAboutUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>TextView</tabstop>
+    <tabstop>OkButton</tabstop>
+    <tabstop>CancelButton</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/toalert.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toalert.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toalert.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,505 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "toalert.h"
+
+#include "utils.h"
+#include "toconf.h"
+#include "tomain.h"
+#include "tomemoeditor.h"
+#include "toresultview.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#else
+#include <windows.h>
+#endif
+
+#include <algorithm>
+#include <stdio.h>
+
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qmenubar.h>
+#include <qpopupmenu.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qworkspace.h>
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include "toalert.moc"
+
+#include "icons/commit.xpm"
+#include "icons/return.xpm"
+#include "icons/toalert.xpm"
+#include "icons/toworksheet.xpm"
+#include "icons/trash.xpm"
+
+class toAlertTool : public toTool
+{
+protected:
+    std::map<toConnection *, QWidget *> Windows;
+
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(toalert_xpm);
+    }
+public:
+    toAlertTool()
+            : toTool(330, "Alert Messenger")
+    { }
+    virtual const char *menuItem()
+    {
+        return "Alert Messenger";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection);
+        if (i != Windows.end())
+        {
+            (*i).second->setFocus();
+            return NULL;
+        }
+        else
+        {
+            QWidget *window = new toAlert(parent, connection);
+            Windows[&connection] = window;
+            return window;
+        }
+    }
+    void closeWindow(toConnection &connection)
+    {
+        std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection);
+        if (i != Windows.end())
+            Windows.erase(i);
+    }
+};
+
+static toAlertTool AlertTool;
+
+#define TIMEOUT 1
+
+static toSQL SQLHost("toAlert:Hostname",
+                     "SELECT machine\n"
+                     "  FROM v$session\n"
+                     " WHERE sid=(SELECT MIN(sid)\n"
+                     "       FROM v$mystat)",
+                     "Get hostname of current connection");
+
+toAlert::toAlert(QWidget *main, toConnection &connection)
+        : toToolWidget(AlertTool, "alert.html", main, connection), Connection(connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Alert Messenger"));
+
+    QString def;
+    try
+    {
+        toQList lst = toQuery::readQuery(connection, SQLHost);
+        def += toShift(lst);
+        if (!def.isEmpty())
+            def += QString::fromLatin1(":");
+    }
+    catch (...)
+    {}
+    def += connection.user();
+
+    new QLabel(tr("Registered") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Registered = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Registered->insertItem(def);
+    Registered->setEditable(true);
+    Registered->setDuplicatesEnabled(false);
+    Registered->setCurrentItem(0);
+    connect(Registered, SIGNAL(activated(int)), this, SLOT(add
+            ()));
+
+    AddNames.insert(AddNames.end(), def);
+
+    new QToolButton(QPixmap(const_cast<const char**>(commit_xpm)),
+                    tr("Register current"),
+                    tr("Register current"),
+                    this, SLOT(add
+                               ()),
+                    toolbar);
+
+    new QToolButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                    tr("Remove registered"),
+                    tr("Remove registered"),
+                    this, SLOT(remove
+                               ()),
+                    toolbar);
+
+    toolbar->addSeparator();
+
+    new QLabel(tr("Name") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Name = new QLineEdit(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Name->setText(def);
+    connect(Name, SIGNAL(returnPressed()), this, SLOT(send()));
+    new QLabel(tr("Message") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Message = new QLineEdit(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    connect(Message, SIGNAL(returnPressed()), this, SLOT(send()));
+    new QToolButton(QPixmap(const_cast<const char**>(toworksheet_xpm)),
+                    tr("Edit message in memo"),
+                    tr("Edit message in memo"),
+                    this, SLOT(memo()),
+                    toolbar);
+    toolbar->setStretchableWidget(Message);
+    new QToolButton(QPixmap(const_cast<const char**>(return_xpm)),
+                    tr("Send alert"),
+                    tr("Send alert"),
+                    this, SLOT(send()),
+                    toolbar);
+
+    connect(&Timer, SIGNAL(timeout()), this, SLOT(poll()));
+    Timer.start(TIMEOUT*1000);
+
+    Alerts = new toListView(this);
+    Alerts->addColumn(tr("Time"));
+    Alerts->addColumn(tr("Name"));
+    Alerts->addColumn(tr("Message"));
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    State = Started;
+    try
+    {
+        toThread *thread = new toThread(new pollTask(*this));
+        thread->start();
+    }
+    catch (...)
+    {
+        toStatusMessage(tr("Failed to start polling thread, try closing some other tools and restart Alert Messenger"));
+    }
+
+    setFocusProxy(Message);
+}
+
+void toAlert::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(tr("&Add name"), Registered, SLOT(setFocus()), toKeySequence(tr("Alt+R", "Alert|Add Name")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(trash_xpm)), tr("&Remove name"),
+                                 this, SLOT(remove
+                                            (void)), toKeySequence(tr("Ctrl+Backspace", "Alert|Remove name")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(tr("Edit &name"), Name, SLOT(setFocus()), toKeySequence(tr("Alt+N", "Alert|Edit name")));
+            ToolMenu->insertItem(tr("Edit &message"), Message, SLOT(setFocus()), toKeySequence(tr("Alt+M", "Alert|Message")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(toworksheet_xpm)), tr("&Message in memo..."),
+                                 this, SLOT(memo(void)), toKeySequence(tr("Ctrl+M", "Alert|Message in memo")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(return_xpm)), tr("&Send alert"),
+                                 this, SLOT(send(void)), toKeySequence(tr("Ctrl+Return", "Alert|Send alert")));
+
+            toMainWidget()->menuBar()->insertItem(tr("&Alert"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+toAlert::~toAlert()
+{
+    try
+    {
+        Lock.lock();
+        State = Quit;
+        while (State != Done)
+        {
+            Lock.unlock();
+            Semaphore.down();
+            Lock.lock();
+        }
+        Lock.unlock();
+        AlertTool.closeWindow(connection());
+    }
+    TOCATCH
+}
+
+static toSQL SQLRegister("toAlert:Register",
+                         "BEGIN SYS.DBMS_ALERT.REGISTER(:name<char[4000]>); END;",
+                         "Register an alert name, must have same binds");
+static toSQL SQLRemove("toAlert:Remove",
+                       "BEGIN SYS.DBMS_ALERT.REMOVE(:name<char[4000]>); END;",
+                       "Remove a registered an alert name, must have same binds");
+static toSQL SQLRemoveAll("toAlert:RemoveAll",
+                          "BEGIN SYS.DBMS_ALERT.REMOVEALL; END;",
+                          "Remove all registered alerts");
+static toSQL SQLPoll("toAlert:PollAlert",
+                     "BEGIN\n"
+                     "  SYS.DBMS_ALERT.WAITANY(:name<char[4000],out>,:msg<char[4000],out>,\n"
+                     "                         :stat<in,out>,:tim<char[10],in>);\n"
+                     "END;",
+                     "Poll for alert, must have same binds");
+static toSQL SQLSignal("toAlert:Signal",
+                       "BEGIN\n"
+                       "  SYS.DBMS_ALERT.SIGNAL(:name<char[4000],in>,:msg<char[4000],in>);\n"
+                       "END;",
+                       "Signal alert, must have same binds");
+
+void toAlert::pollTask::run(void)
+{
+    Parent.Lock.lock();
+    bool fatal = false;
+    while (Parent.State != Quit && !fatal)
+    {
+        Parent.Lock.unlock();
+        try
+        {
+            {
+                toLocker lock (Parent.Lock)
+                    ;
+                fatal = true;
+                {
+                    for (std::list<QString>::iterator i = Parent.AddNames.begin();
+                            i != Parent.AddNames.end();
+                            i++)
+                    {
+                        Parent.Names.insert(Parent.Names.end(), *i);
+                        Parent.Connection.execute(SQLRegister, *i);
+                    }
+                }
+                Parent.AddNames.clear();
+                for (std::list<QString>::iterator i = Parent.DelNames.begin();
+                        i != Parent.DelNames.end();
+                        i++)
+                {
+                    std::list<QString>::iterator j = std::find(Parent.Names.begin(),
+                                                     Parent.Names.end(),
+                                                     *i);
+                    if (j != Parent.Names.end())
+                    {
+                        Parent.Names.erase(j);
+                        Parent.Connection.execute(SQLRemove, *i);
+                    }
+                }
+                Parent.DelNames.clear();
+                fatal = false;
+            }
+
+            {
+                toLocker lock (Parent.Lock)
+                    ;
+                std::list<QString>::iterator i = Parent.SendAlerts.begin();
+                std::list<QString>::iterator j = Parent.SendMessages.begin();
+                while (i != Parent.SendAlerts.end() && j != Parent.SendMessages.end())
+                {
+                    Parent.Connection.execute(SQLSignal, *i, *j);
+                    i++;
+                    j++;
+                }
+                Parent.SendAlerts.clear();
+                Parent.SendMessages.clear();
+                Parent.Connection.commit();
+            }
+
+            Parent.Lock.lock();
+            if (Parent.Names.size())
+            {
+                Parent.Lock.unlock();
+                toQuery query(Parent.Connection, SQLPoll, QString::number(TIMEOUT));
+                QString name = query.readValue();
+                QString msg = query.readValue();
+                if (query.readValue().toInt() == 0)
+                {
+                    toLocker lock (Parent.Lock)
+                        ;
+                    Parent.NewAlerts.insert(Parent.NewAlerts.end(), name);
+                    Parent.NewMessages.insert(Parent.NewMessages.end(), msg);
+                }
+            }
+            else
+            {
+                Parent.Lock.unlock();
+#ifndef WIN32
+
+                sleep(TIMEOUT);
+#else
+
+                Sleep(TIMEOUT*1000);
+#endif
+
+            }
+        }
+        catch (const QString &str)
+        {
+            Parent.Lock.lock();
+            Parent.Error.sprintf("Exception in alert polling:\n%s", (const char *)str.latin1());
+            fprintf(stderr, "%s\n", (const char *)Parent.Error);
+            Parent.Lock.unlock();
+        }
+        catch (...)
+        {
+            Parent.Lock.lock();
+            Parent.Error.sprintf("Unexpected exception in alert in polling.");
+            fprintf(stderr, "%s\n", (const char *)Parent.Error);
+            Parent.Lock.unlock();
+        }
+
+        Parent.Lock.lock();
+    }
+    if (Parent.Names.size() > 0)
+        try
+        {
+            Parent.Connection.execute(SQLRemoveAll);
+        }
+        catch (...)
+        {}
+    Parent.State = Done;
+    Parent.Semaphore.up();
+    Parent.Lock.unlock();
+}
+
+void toAlert::poll(void)
+{
+    try
+    {
+        toLocker lock (Lock)
+            ;
+        if (Error)
+        {
+            toStatusMessage(Error);
+            Error = QString::null;
+        }
+        std::list<QString>::iterator i = NewAlerts.begin();
+        std::list<QString>::iterator j = NewMessages.begin();
+        while (i != NewAlerts.end() && j != NewMessages.end())
+        {
+            QListViewItem *item = new toResultViewMLine(Alerts, NULL, toNow(connection()));
+            item->setText(1, *i);
+            item->setText(2, *j);
+            i++;
+            j++;
+        }
+        NewAlerts.clear();
+        NewMessages.clear();
+    }
+    TOCATCH
+}
+
+void toAlert::send(void)
+{
+    if (!Name->text().isEmpty() && !Message->text().isEmpty())
+    {
+        toLocker lock (Lock)
+            ;
+        SendAlerts.insert(SendAlerts.end(), Name->text());
+        SendMessages.insert(SendMessages.end(), Message->text());
+        Message->clear();
+    }
+}
+
+void toAlert::memo(void)
+{
+    toMemoEditor *memo = new toMemoEditor(this, Message->text(), 0, 0);
+    connect(memo, SIGNAL(changeData(int, int, const QString &)),
+            this, SLOT(changeMessage(int, int, const QString &)));
+}
+
+void toAlert::changeMessage(int, int, const QString &str)
+{
+    Message->setText(str);
+}
+
+void toAlert::remove
+    (void)
+{
+    toLocker lock (Lock)
+        ;
+    QString name = Registered->currentText();
+    if (!name.isEmpty())
+    {
+        std::list<QString>::iterator i = std::find(AddNames.begin(), AddNames.end(), name);
+        if (i != AddNames.end())
+            AddNames.erase(i);
+        i = std::find(Names.begin(), Names.end(), name);
+        if (i != Names.end())
+        {
+            if (std::find(DelNames.begin(), DelNames.end(), name) == DelNames.end())
+                DelNames.insert(DelNames.end(), name);
+        }
+    }
+
+    if (Registered->count() > 0)
+        Registered->removeItem(Registered->currentItem());
+    if (Registered->count() > 0)
+        Registered->setCurrentItem(0);
+}
+
+void toAlert::add
+    (void)
+{
+    Registered->lineEdit()->selectAll();
+    QString name = Registered->currentText();
+    if (!name.isEmpty())
+    {
+        std::list<QString>::iterator i = std::find(DelNames.begin(), DelNames.end(), name);
+        if (i == DelNames.end())
+        {
+            i = std::find(Names.begin(), Names.end(), name);
+            if (i == Names.end())
+            {
+                i = std::find(AddNames.begin(), AddNames.end(), name);
+                if (i == AddNames.end())
+                {
+                    AddNames.insert(AddNames.end(), name);
+                }
+            }
+        }
+        else
+        {
+            DelNames.erase(i);
+        }
+    }
+
+    for (int i = 0;i < Registered->count();i++)
+        if (Registered->text(i) == name)
+            return ;
+
+    Registered->insertItem(name);
+    Name->setText(name);
+}

Added: kde-extras/tora/branches/upstream/current/src/toalert.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toalert.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toalert.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,111 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOALERT_H
+#define TOALERT_H
+
+#include <list>
+
+#include <qtimer.h>
+
+#include "toconnection.h"
+#include "totool.h"
+
+class QComboBox;
+class QLineEdit;
+class QPopupMenu;
+class toListView;
+
+class toAlert : public toToolWidget
+{
+    Q_OBJECT
+
+class pollTask : public toTask
+    {
+        toAlert &Parent;
+    public:
+        pollTask(toAlert &parent)
+                : Parent(parent)
+        { }
+        virtual void run(void);
+    };
+
+    toListView *Alerts;
+    QComboBox *Registered;
+    QLineEdit *Name;
+    QLineEdit *Message;
+    QTimer Timer;
+    toConnection Connection;
+    toConnection *SendConnection;
+    QPopupMenu *ToolMenu;
+
+    toLock Lock;
+    toSemaphore Semaphore;
+    std::list<QString> AddNames;
+    std::list<QString> DelNames;
+    std::list<QString> Names;
+    QString Error;
+
+    std::list<QString> NewAlerts;
+    std::list<QString> NewMessages;
+
+    std::list<QString> SendAlerts;
+    std::list<QString> SendMessages;
+
+    enum {
+        Started,
+        Quit,
+        Done
+    } State;
+public:
+    toAlert(QWidget *parent, toConnection &connection);
+    virtual ~toAlert();
+
+    friend class pollTask;
+public slots:
+    virtual void poll(void);
+    virtual void send(void);
+    virtual void memo(void);
+    virtual void changeMessage(int, int, const QString &str);
+    virtual void add
+        (void);
+    virtual void remove
+        (void);
+    virtual void windowActivated(QWidget *widget);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toanalyze.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toanalyze.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toanalyze.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,624 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toanalyze.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "tomemoeditor.h"
+#include "toresultcombo.h"
+#include "toresultlong.h"
+#include "toresultplan.h"
+#include "toresultview.h"
+#include "tosql.h"
+#include "totool.h"
+#include "toworksheetstatistic.h"
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qmenubar.h>
+#include <qpopupmenu.h>
+#include <qspinbox.h>
+#include <qsplitter.h>
+#include <qtabwidget.h>
+#include <qtimer.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qworkspace.h>
+
+#include "toanalyze.moc"
+
+#include "icons/execute.xpm"
+#include "icons/refresh.xpm"
+#include "icons/sql.xpm"
+#include "icons/stop.xpm"
+#include "icons/toanalyze.xpm"
+
+class toAnalyzeTool : public toTool
+{
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(toanalyze_xpm);
+    }
+public:
+    toAnalyzeTool()
+            : toTool(320, "Statistics Manager")
+    { }
+
+    virtual void closeWindow(toConnection &connection){};
+
+    virtual const char *menuItem()
+    {
+        return "Statistics Manager";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        return new toAnalyze(parent, connection);
+    }
+    virtual bool canHandle(toConnection &conn)
+    {
+        return toIsOracle(conn) || toIsMySQL(conn);
+    }
+};
+
+static toAnalyzeTool AnalyzeTool;
+
+static toSQL SQLListTablesMySQL("toAnalyze:ListTables",
+                                "toad 0,* show table status",
+                                "Get table statistics, first three columns and binds must be same",
+                                "4.1",
+                                "MySQL");
+static toSQL SQLListTables("toAnalyze:ListTables",
+                           "select 'TABLE' \"Type\",\n"
+                           "       owner,\n"
+                           "       table_name,\n"
+                           "       num_rows,\n"
+                           "       blocks,\n"
+                           "       empty_blocks,\n"
+                           "       avg_space \"Free space/block\",\n"
+                           "       chain_cnt \"Chained rows\",\n"
+                           "       avg_row_len \"Average row length\",\n"
+                           "       sample_size,\n"
+                           "       last_analyzed\n"
+                           "  from sys.all_all_tables\n"
+                           " where iot_name is null\n"
+                           "   and temporary != 'Y' and secondary = 'N'",
+                           "",
+                           "0800");
+static toSQL SQLListTables7("toAnalyze:ListTables",
+                            "select 'TABLE' \"Type\",\n"
+                            "       owner,\n"
+                            "       table_name,\n"
+                            "       num_rows,\n"
+                            "       blocks,\n"
+                            "       empty_blocks,\n"
+                            "       avg_space \"Free space/block\",\n"
+                            "       chain_cnt \"Chained rows\",\n"
+                            "       avg_row_len \"Average row length\",\n"
+                            "       sample_size,\n"
+                            "       last_analyzed\n"
+                            "  from sys.all_tables\n"
+                            " where temporary != 'Y' and secondary = 'N'",
+                            "",
+                            "0703");
+
+static toSQL SQLListIndex("toAnalyze:ListIndex",
+                          "SELECT 'INDEX' \"Type\",\n"
+                          "       Owner,\n"
+                          "       Index_Name,\n"
+                          "       Num_rows,\n"
+                          "       Distinct_Keys,\n"
+                          "       Leaf_Blocks,\n"
+                          "       Avg_Leaf_Blocks_Per_Key,\n"
+                          "       Avg_Data_Blocks_Per_Key,\n"
+                          "       Clustering_Factor,\n"
+                          "       Sample_Size,\n"
+                          "       Last_Analyzed\n"
+                          "  FROM SYS.ALL_INDEXES\n"
+                          " WHERE 1 = 1",
+                          "List the available indexes, first three column and binds must be same");
+
+static toSQL SQLListPlans("toAnalyze:ListPlans",
+                          "SELECT DISTINCT\n"
+                          "       statement_id \"Statement\",\n"
+                          "       MAX(timestamp) \"Timestamp\",\n"
+                          "       MAX(remarks) \"Remarks\" FROM %1\n"
+                          " GROUP BY statement_id",
+                          "Display available saved statements. Must have same first "
+                          "column and %1");
+
+toAnalyze::toAnalyze(QWidget *main, toConnection &connection)
+        : toToolWidget(AnalyzeTool, "analyze.html", main, connection)
+{
+    Tabs = new QTabWidget(this);
+    QVBox *box = new QVBox(Tabs);
+    Tabs->addTab(box, tr("Analyze"));
+
+    QToolBar *toolbar = toAllocBar(box, tr("Statistics Manager"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Refresh"),
+                    tr("Refresh"),
+                    this, SLOT(refresh()),
+                    toolbar);
+
+    toolbar->addSeparator();
+    if (toIsOracle(connection))
+    {
+        Analyzed = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+        Analyzed->insertItem(tr("All"));
+        Analyzed->insertItem(tr("Not analyzed"));
+        Analyzed->insertItem(tr("Analyzed"));
+    }
+    else
+        Analyzed = NULL;
+
+    Schema = new toResultCombo(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Schema->setSelected(tr("All"));
+    Schema->additionalItem(tr("All"));
+    try
+    {
+        Schema->query(toSQL::sql(toSQL::TOSQL_USERLIST));
+    }
+    TOCATCH
+
+
+    if (toIsOracle(connection))
+    {
+        Type = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+        Type->insertItem(tr("Tables"));
+        Type->insertItem(tr("Indexes"));
+
+        toolbar->addSeparator();
+
+        Operation = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+        Operation->insertItem(tr("Compute statistics"));
+        Operation->insertItem(tr("Estimate statistics"));
+        Operation->insertItem(tr("Delete statistics"));
+        Operation->insertItem(tr("Validate references"));
+        connect(Operation, SIGNAL(activated(int)),
+                this, SLOT(changeOperation(int)));
+
+        new QLabel(" " + tr("for") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+        For = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+        For->insertItem(tr("All"));
+        For->insertItem(tr("Table"));
+        For->insertItem(tr("Indexed columns"));
+        For->insertItem(tr("Local indexes"));
+        toolbar->addSeparator();
+        new QLabel(tr("Sample") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+        Sample = new QSpinBox(1, 100, 1, toolbar, TO_KDE_TOOLBAR_WIDGET);
+        Sample->setValue(100);
+        Sample->setSuffix(" " + tr("%"));
+        Sample->setEnabled(false);
+    }
+    else
+    {
+        Operation = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+        Operation->insertItem(tr("Analyze table"));
+        Operation->insertItem(tr("Optimize table"));
+        connect(Operation, SIGNAL(activated(int)),
+                this, SLOT(changeOperation(int)));
+
+        Type = NULL;
+        Sample = NULL;
+        For = NULL;
+    }
+
+    toolbar->addSeparator();
+    new QLabel(tr("Parallel") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Parallel = new QSpinBox(1, 100, 1, toolbar, TO_KDE_TOOLBAR_WIDGET);
+    toolbar->addSeparator();
+
+    new QToolButton(QPixmap(const_cast<const char**>(execute_xpm)),
+                    tr("Start analyzing"),
+                    tr("Start analyzing"),
+                    this, SLOT(execute()),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(sql_xpm)),
+                    tr("Display SQL"),
+                    tr("Display SQL"),
+                    this, SLOT(displaySQL()),
+                    toolbar);
+
+    Current = new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Current->setAlignment(AlignRight | AlignVCenter | ExpandTabs);
+    toolbar->setStretchableWidget(Current);
+
+    Stop = new QToolButton(QPixmap(const_cast<const char**>(stop_xpm)),
+                           tr("Stop current run"),
+                           tr("Stop current run"),
+                           this, SLOT(stop()),
+                           toolbar);
+    Stop->setEnabled(false);
+
+    Statistics = new toResultLong(true, false, toQuery::Background, box);
+    Statistics->setSelectionMode(QListView::Extended);
+    Statistics->setReadAll(true);
+    connect(Statistics, SIGNAL(done()), this, SLOT(fillOwner()));
+    connect(Statistics, SIGNAL(displayMenu(QPopupMenu *)), this, SLOT(displayMenu(QPopupMenu *)));
+
+    if (Analyzed)
+        connect(Analyzed, SIGNAL(activated(int)), this, SLOT(refresh()));
+    connect(Schema, SIGNAL(activated(int)), this, SLOT(refresh()));
+    if (Type)
+        connect(Type, SIGNAL(activated(int)), this, SLOT(refresh()));
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+
+    if (toIsOracle(connection))
+    {
+        box = new QVBox(Tabs);
+        toolbar = toAllocBar(box, tr("Explain plans"));
+
+        Tabs->addTab(box, tr("Explain plans"));
+        QSplitter *splitter = new QSplitter(Horizontal, box);
+        Plans = new toResultLong(false, false, toQuery::Background, splitter);
+        Plans->setSelectionMode(QListView::Single);
+        try
+        {
+            Plans->query(toSQL::string(SQLListPlans,
+                                       connection).arg(toConfigurationSingle::Instance().globalConfig(CONF_PLAN_TABLE,
+                                                                            DEFAULT_PLAN_TABLE)));
+        }
+        TOCATCH
+
+        connect(Plans, SIGNAL(selectionChanged()),
+                this, SLOT(selectPlan()));
+        new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                        tr("Refresh"),
+                        tr("Refresh"),
+                        Plans, SLOT(refresh()),
+                        toolbar);
+        toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+        CurrentPlan = new toResultPlan(splitter);
+
+        Worksheet = new toWorksheetStatistic(Tabs);
+        Tabs->addTab(Worksheet, tr("Worksheet statistics"));
+    }
+    else
+    {
+        Plans = NULL;
+        CurrentPlan = NULL;
+        Worksheet = NULL;
+    }
+
+    refresh();
+    setFocusProxy(Tabs);
+}
+
+void toAnalyze::fillOwner(void)
+{
+    for (QListViewItem *item = Statistics->firstChild();item;item = item->nextSibling())
+    {
+        if (toUnnull(item->text(0)).isNull())
+            item->setText(0, Schema->selected());
+    }
+}
+
+void toAnalyze::selectPlan(void)
+{
+    QListViewItem *item = Plans->selectedItem();
+    if (item)
+        CurrentPlan->query("SAVED:" + item->text(0));
+}
+
+void toAnalyze::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)), toKeySequence(tr("F5", "Statistics|Refresh")));
+
+            toMainWidget()->menuBar()->insertItem(tr("&Statistics"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+toWorksheetStatistic *toAnalyze::worksheet(void)
+{
+    Tabs->showPage(Worksheet);
+    return Worksheet;
+}
+
+void toAnalyze::changeOperation(int op)
+{
+    if (Sample)
+        Sample->setEnabled(op == 1);
+    if (For)
+        For->setEnabled(op == 0 || op == 1);
+}
+
+void toAnalyze::refresh(void)
+{
+    try
+    {
+        Statistics->setSQL(QString::null);
+        toQList par;
+        QString sql;
+        if (!Type || Type->currentItem() == 0)
+            sql = toSQL::string(SQLListTables, connection());
+        else
+            sql = toSQL::string(SQLListIndex, connection());
+        if (Schema->selected() != tr("All"))
+        {
+            par.insert(par.end(), Schema->selected());
+            if (toIsOracle(connection()))
+                sql += "\n   AND owner = :own<char[100]>";
+            else
+                sql += " FROM :f1<noquote>";
+        }
+        else if (toIsMySQL(connection()))
+            sql += " FROM :f1<alldatabases>";
+        if (Analyzed)
+        {
+            switch (Analyzed->currentItem())
+            {
+            default:
+                break;
+            case 1:
+                sql += QString::fromLatin1("\n  AND Last_Analyzed IS NULL");
+                break;
+            case 2:
+                sql += QString::fromLatin1("\n  AND Last_Analyzed IS NOT NULL");
+                break;
+            }
+        }
+
+        Statistics->query(sql, (const toQList &)par);
+    }
+    TOCATCH
+}
+
+void toAnalyze::poll(void)
+{
+    try
+    {
+        int running = 0;
+        for (std::list<toNoBlockQuery *>::iterator i = Running.begin();i != Running.end();i++)
+        {
+            bool eof = false;
+
+            try
+            {
+                if ((*i)->poll())
+                {
+                    int cols = (*i)->describe().size();
+                    for (int j = 0;j < cols;j++)
+                        (*i)->readValueNull();  // Eat the output if any.
+                }
+
+                try
+                {
+                    eof = (*i)->eof();
+                }
+                catch (const QString &)
+                {
+                    eof = true;
+                }
+            }
+            catch (const QString &err)
+            {
+                toStatusMessage(err);
+                eof = true;
+            }
+            if (eof)
+            {
+                QString sql = toShift(Pending);
+                if (!sql.isEmpty())
+                {
+                    delete (*i);
+                    toQList par;
+                    (*i) = new toNoBlockQuery(connection(), sql, par);
+                    running++;
+                }
+            }
+            else
+                running++;
+        }
+        if (!running)
+        {
+            Poll.stop();
+            refresh();
+            stop();
+        }
+        else
+            Current->setText(tr("Running %1 Pending %2").arg(running).arg(Pending.size()));
+    }
+    TOCATCH
+}
+
+std::list<QString> toAnalyze::getSQL(void)
+{
+    std::list<QString> ret;
+    for (QListViewItem *item = Statistics->firstChild();item;item = item->nextSibling())
+    {
+        if (item->isSelected())
+        {
+            if (toIsOracle(connection()))
+            {
+                QString sql = QString::fromLatin1("ANALYZE %3 %1.%2 ");
+                QString forc;
+                if (item->text(0) == QString::fromLatin1("TABLE"))
+                {
+                    switch (For->currentItem())
+                    {
+                    case 0:
+                        forc = QString::null;
+                        break;
+                    case 1:
+                        forc = QString::fromLatin1(" FOR TABLE");
+                        break;
+                    case 2:
+                        forc = QString::fromLatin1(" FOR ALL INDEXED COLUMNS");
+                        break;
+                    case 3:
+                        forc = QString::fromLatin1(" FOR ALL LOCAL INDEXES");
+                        break;
+                    }
+                }
+
+                switch (Operation->currentItem())
+                {
+                case 0:
+                    sql += QString::fromLatin1("COMPUTE STATISTICS");
+                    sql += forc;
+                    break;
+                case 1:
+                    sql += QString::fromLatin1("ESTIMATE STATISTICS");
+                    sql += forc;
+                    sql += QString::fromLatin1(" SAMPLE %1 PERCENT").arg(Sample->value());
+                    break;
+                case 2:
+                    sql += QString::fromLatin1("DELETE STATISTICS");
+                    break;
+                case 3:
+                    sql += QString::fromLatin1("VALIDATE REF UPDATE");
+                    break;
+                }
+                toPush(ret, sql.arg(item->text(1)).arg(item->text(2)).arg(item->text(0)));
+
+            }
+            else
+            {
+                QString sql;
+                switch (Operation->currentItem())
+                {
+                case 0:
+                    sql = QString::fromLatin1("ANALYZE TABLE %1.%2 ");
+                    break;
+                case 1:
+                    sql = QString::fromLatin1("OPTIMIZE TABLE %1.%2 ");
+                    break;
+                }
+                QString owner = item->text(0);
+                if (toUnnull(owner).isNull())
+                    owner = Schema->selected();
+                toPush(ret, sql.arg(owner).arg(item->text(1)));
+            }
+        }
+    }
+    return ret;
+}
+
+void toAnalyze::displaySQL(void)
+{
+    QString txt;
+    std::list<QString> sql = getSQL();
+    for (std::list<QString>::iterator i = sql.begin();i != sql.end();i++)
+        txt += (*i) + ";\n";
+    new toMemoEditor(this, txt, -1, -1, true);
+}
+
+void toAnalyze::execute(void)
+{
+    stop();
+
+    std::list<QString> sql = getSQL();
+    for (std::list<QString>::iterator i = sql.begin();i != sql.end();i++)
+        toPush(Pending, *i);
+
+    try
+    {
+        toQList par;
+        for (int i = 0;i < Parallel->value();i++)
+        {
+            QString sql = toShift(Pending);
+            if (!sql.isEmpty())
+                toPush(Running, new toNoBlockQuery(connection(), sql, par));
+        }
+        Poll.start(100);
+        Stop->setEnabled(true);
+        poll();
+    }
+    TOCATCH
+}
+
+void toAnalyze::stop(void)
+{
+    try
+    {
+        for_each(Running.begin(), Running.end(), DeleteObject());
+        Running.clear();
+        Pending.clear();
+        Stop->setEnabled(false);
+        Current->setText(QString::null);
+        if (!connection().needCommit())
+        {
+            try
+            {
+                connection().rollback();
+            }
+            catch (...)
+            { }
+        }
+    }
+    TOCATCH
+}
+
+void toAnalyze::createTool(void)
+{
+    AnalyzeTool.createWindow();
+}
+
+void toAnalyze::displayMenu(QPopupMenu *menu)
+{
+    menu->insertSeparator(0);
+    menu->insertItem(QPixmap(const_cast<const char**>(sql_xpm)), tr("Display SQL"), this, SLOT(displaySQL()), 0, 0, 0);
+    menu->insertItem(QPixmap(const_cast<const char**>(execute_xpm)), tr("Execute"), this, SLOT(execute()), 0, 0, 0);
+    menu->insertSeparator(0);
+    menu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("Refresh"), this, SLOT(refresh()), 0, 0, 0);
+}

Added: kde-extras/tora/branches/upstream/current/src/toanalyze.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toanalyze.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toanalyze.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,104 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOANALYZE_H
+#define TOANALYZE_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "tonoblockquery.h"
+#include "totool.h"
+
+#include <list>
+
+class QComboBox;
+class QPopupMenu;
+class QSpinBox;
+class QTabWidget;
+class QTimer;
+class QLabel;
+class toResultCombo;
+class toResultPlan;
+class toResultView;
+class toWorksheetStatistic;
+
+class toAnalyze : public toToolWidget
+{
+    Q_OBJECT
+
+    QTabWidget *Tabs;
+    toResultView *Statistics;
+    QComboBox *Analyzed;
+    toResultCombo *Schema;
+    QComboBox *Type;
+    QComboBox *Operation;
+    QComboBox *For;
+    QSpinBox *Sample;
+    QSpinBox *Parallel;
+    QLabel *Current;
+    QToolButton *Stop;
+    toBackground Poll;
+    toResultView *Plans;
+    toResultPlan *CurrentPlan;
+    toWorksheetStatistic *Worksheet;
+
+    std::list<toNoBlockQuery *> Running;
+    std::list<QString> Pending;
+
+    QPopupMenu *ToolMenu;
+    std::list<QString> getSQL(void);
+public:
+    toAnalyze(QWidget *parent, toConnection &connection);
+
+    toWorksheetStatistic *worksheet(void);
+
+    static void createTool(void);
+    
+public slots:
+    virtual void displaySQL(void);
+    virtual void changeOperation(int);
+    virtual void execute(void);
+    virtual void poll(void);
+    virtual void stop(void);
+    virtual void refresh(void);
+    virtual void windowActivated(QWidget *widget);
+    virtual void selectPlan(void);
+    virtual void fillOwner(void);
+    virtual void displayMenu(QPopupMenu *);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tobackground.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobackground.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobackground.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,94 @@
+//
+// C++ Implementation: toBackground
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+
+#include "utils.h"
+
+#include "tobackground.h"
+#include "toconnection.h"
+
+
+#ifdef TO_KDE
+#include <kstatusbar.h>
+#endif
+
+#include <qlabel.h>
+#include <qstatusbar.h>
+#include <qtooltip.h>
+
+#include "tobackgroundlabel.h"
+#include "tomain.h"
+
+int toBackground::Running = 0;
+
+toBackground::toBackground(QObject* parent, const char* name)
+        : toTimer(parent, name)
+{                                  //createToBackgroundLabel()
+    main = toMainWidget();
+}
+
+void toBackground::start(int msec)
+{
+    main = toMainWidget();
+
+    if (!isActive())
+    {
+        Running++;
+        main->getBackgroundLabel()->unpause();
+    }
+    main->getBackgroundLabel()->setSpeed(std::min(Running, 1)*100);
+    //Animation->setSpeed(std::min(Running, 1)*100);
+    if (Running > 1){
+       main->getBackgroundLabel()->setTip(tr("%1 queries running in background.").arg(Running));
+        //QToolTip::add(Label, tr("%1 queries running in background.").arg(Running));
+	}
+    else{
+      main->getBackgroundLabel()->setTip(tr("One query running in background."));
+     //   QToolTip::add(Label, tr("One query running in background."));
+     }
+    toTimer::start(msec);
+}
+
+void toBackground::stop(void)
+{
+    main = toMainWidget();
+ 
+    /*if (!Animation)
+        init(); */
+    if (isActive())
+    {
+        Running--;
+            if (Running == 0 )
+		main->getBackgroundLabel()->pause();                
+            else
+		main->getBackgroundLabel()->setSpeed(Running*100);                                
+            if (Running > 1)
+		main->getBackgroundLabel()->setTip(tr("%1 queries running in background.").arg(Running));                
+            else if (Running == 1)
+		main->getBackgroundLabel()->setTip("One query running in background.");
+            else
+                main->getBackgroundLabel()->setTip(tr("No background queries."));
+                
+    }
+    toTimer::stop();
+}
+
+/*void toBackground::init(void)
+{
+    toMain *main = toMainWidget();
+    if (!main || Label)
+        return ;
+
+    Label = theToBackgroundLabel(main->statusBar());
+    Label->show();
+    main->statusBar()->addWidget(Label, 0, true);
+    QToolTip::add
+        (Label, tr("No background queries."));
+}*/
+
+toBackground::~toBackground()
+{
+    stop();
+}

Added: kde-extras/tora/branches/upstream/current/src/tobackground.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobackground.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobackground.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,45 @@
+//
+// C++ Interface: toBackground
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+
+#ifndef TOBACKGROUND_H
+#define TOBACKGROUND_H
+
+#include "config.h"
+#include "totimer.h"
+
+class toMain;
+
+
+/**
+ * A descendant of timer which will indicate in the statusbar of the
+ * main window when any timer is running. Can not do singleshots, only
+ * periodic intervals.
+ */
+class toBackground : public toTimer
+{
+public:
+    /**
+     * Create a background timer widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toBackground(QObject* parent = 0, const char* name = 0);
+    ~toBackground();
+    /** Start repeating timer with msec interval.
+     * @param msec Millsecond repeat interval.
+     */
+    void start(int msec);
+    /** Stop timer
+     */
+    void stop(void);
+
+    static void init(void);
+private:
+     static int Running;     
+     toMain* main;
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tobackgroundlabel.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobackgroundlabel.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobackgroundlabel.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,320 @@
+//
+// C++ Implementation: toBackgroundLabel
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+#include "tobackgroundlabel.h"
+
+#include "utils.h"
+
+#ifdef TO_KDE 
+#include <kstatusbar.h>
+#endif
+
+#include <qtooltip.h>
+
+#include "tomain.h"
+#include "toconnection.h"
+
+const char toBackgroundLabel::data[] = "\x47\x49\x46\x38\x39\x61\x17\x00\x17\x00\xe7\x00\x00\x02\x66\x9a\x92\xbe\xd2\x66\xa2\xc2\x46\x8e\xb6\xca\xde\xea\x2a\x7e\xaa\xaa\xca\xde\x0e\x6e\x9e\x82\xb2\xce"
+    "\xb6\xd2\xe2\x16\x72\xa2\x52\x96\xba\x3e\x8a\xb2\x6e\xa6\xc6\xe2\xee\xf2\x9a\xc2\xd6\x22\x7a\xa6\xba\xd6\xe2\x36\x86\xae\x7a\xae\xca\xd6\xe6\xee\x5e\x9e\xbe\x86"
+    "\xb6\xce\x0a\x6e\x9e\xbe\xd6\xe6\xa2\xc6\xda\x76\xae\xc6\x16\x76\xa2\x2a\x82\xaa\x5a\x9e\xbe\x8a\xba\xce\x4e\x96\xb6\xd2\xe6\xee\xaa\xce\xde\xbe\xda\xe6\x02\x6a"
+    "\x9a\xde\xee\xf2\x12\x72\x9e\xc2\xda\xe6\x56\x9a\xba\x26\x7e\xa6\xae\xce\xde\x36\x8a\xae\x1a\x76\xa2\x6e\xaa\xc6\x1e\x7a\xa6\x2e\x82\xaa\xa2\xca\xda\x7a\xb2\xca"
+    "\x66\xa6\xc2\x32\x86\xae\xc2\xde\xe6\x3e\x8e\xb2\xae\xd2\xde\x96\xc2\xd6\x0a\x6a\x9e\x9a\xc6\xd6\x62\xa2\xbe\xde\xea\xf2\x4a\x92\xb6\x8e\xba\xd2\x82\xb6\xce\x72"
+    "\xaa\xc6\xd2\xe2\xee\xca\xe2\xea\x46\x92\xb6\xd6\xea\xee\x8e\xbe\xd2\x1e\x76\xa6\xb6\xd6\xe2\xe6\xee\xf6\x52\x9a\xba\x32\x82\xae\x96\xbe\xd6\x5a\x9a\xbe\x06\x6a"
+    "\x9a\x12\x6e\x9e\x6a\xa6\xc2\x7e\xb2\xca\x42\x8e\xb2\x3a\x86\xae\xa6\xca\xda\xe6\xf2\xf6\x26\x7a\xa6\xce\xe2\xea\x1a\x76\xa6\x2e\x82\xae\x8a\xb6\xce\x06\x6a\x9e"
+    "\x4e\x92\xb6\x6a\xa6\xc6\x7e\xb2\xce\x92\xbe\xd6\x56\x9a\xbe\x42\x8e\xb6\xa6\xca\xde\x62\x9e\xbe\xb2\xce\xde\x76\xaa\xc6\xb2\xd2\xe2\xea\xf2\xf6\x9e\xc2\xd6\xc6"
+    "\xde\xea\xba\xd6\xe6\x8a\xba\xd2\x3a\x8a\xae\x4e\x96\xba\x9e\xc6\xda\x12\x72\xa2\x26\x7e\xaa\x62\xa2\xc2\xda\xea\xf2\x76\xae\xca\xc6\xda\xe6\xce\xe2\xee\x12\x6e"
+    "\xa2\x3a\x8a\xb2\xc6\xde\xe6\xb2\xd2\xde\x9e\xc6\xd6\xda\xea\xee\x8a\xb6\xd2\x26\x7a\xaa\xb2\xce\xe2\x4e\x92\xba\x62\x9e\xc2\x9e\xc2\xda\x0e\x6e\xa2\xe2\xee\xf6"
+    "\x36\x86\xb2\x3a\x86\xb2\x76\xaa\xca\x36\x8a\xb2\xc6\xda\xea\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+    "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+    "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+    "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+    "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+    "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+    "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+    "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+    "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"
+    "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x21\xff\x0b\x4e\x45\x54\x53\x43\x41\x50\x45\x32\x2e\x30\x03\x01\x00\x00\x00"
+    "\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\xfc\x67\x06\xcd\x02\x08\x08\x25\x2c\x48\x30\xb0\xa1\x43\x12\x09\xae"
+    "\x7c\x60\x73\xe1\x02\x80\x8b\x6c\x1a\x80\x70\xf8\x90\x84\xc0\x38\x57\xd6\xac\xf1\xf0\x61\x04\x00\x08\x66\x1a\x92\xd8\xc8\xb1\x01\x1b\x08\x2a\xb4\x64\xc8\xf0\x01"
+    "\xc0\x07\x32\x03\xc9\x64\x70\x08\x42\x0d\x00\x8b\x17\x01\x2c\x98\xd1\xe0\x82\x99\x0c\x2c\xd1\xa4\x14\x48\xe6\x8a\x87\x04\x71\xee\x34\x01\x1a\x28\xce\x02\x3b\x1e"
+    "\x16\xe0\xfc\x70\xa5\x61\xa1\x19\x1e\x05\x16\xf9\x00\xc1\x26\x85\x1f\x71\x46\x34\xf8\x01\xa1\x81\x40\x10\x07\x17\x14\x0a\x2b\x50\x87\xc1\x1f\xff\x66\xcc\x29\x91"
+    "\x81\x8d\x8a\x7f\x3a\x24\x00\x68\x52\x67\x81\x5b\x81\x2c\xee\x34\x2c\x32\x82\xcd\x1a\x08\x12\xfe\xb1\x30\x2b\x98\xc5\x3f\xb8\x00\xd8\x2c\xfd\xd7\x00\x80\x84\x0c"
+    "\x37\x08\x25\xa8\x68\xc2\xe7\x8d\x3a\x71\xca\x5e\x8c\xfc\x2f\xce\x1c\x9b\x1e\x84\x36\x01\xd0\x20\xc1\xea\x7f\x0b\x82\x5e\x5c\xf0\xcf\x27\x80\x3c\xb3\x3d\x08\xce"
+    "\x30\x79\x04\x43\x10\x82\x2f\x8e\x40\x03\xa2\x04\x00\x15\x09\x98\x00\x30\x03\xe1\x42\x11\xc1\xbc\x05\xda\xb9\x71\x72\x67\xec\x12\x09\xb4\xa2\x78\xfe\x07\x81\x49"
+    "\x86\xb2\x3b\x07\xde\xf9\x80\xb7\xb7\x84\x04\xb1\xd9\x30\x84\xc0\xc6\xc2\x8d\x1b\x33\x2e\x37\xc8\xa0\xa3\x61\x1d\x33\x4d\xb0\xa1\x46\x1c\x02\x1d\x54\x47\x4d\x66"
+    "\xe8\x00\x42\x4d\x19\x6d\x06\x02\x52\x0d\x65\xf5\x0f\x19\x12\xdc\x51\x44\x13\xd4\x5d\xc4\x44\x6d\x24\x50\x70\x87\x07\x38\x09\x54\x07\x1a\x02\x15\x72\x85\x19\x73"
+    "\x78\x10\x87\x0a\x58\x04\x05\xc1\x1c\x12\x6c\x26\x50\x02\x21\x92\xa0\x83\x0a\x00\xb0\x60\x82\x05\x64\x29\x70\x43\x1a\x2c\xa9\x14\xa2\x40\x63\x48\x07\x41\x62\x77"
+    "\x64\x60\x41\x21\x03\xd1\xc5\x11\x41\xbe\x01\xa0\x00\x42\x10\x2c\x80\x46\x06\xed\x3d\x39\x90\x1d\x2c\xc8\xa0\x42\x20\x12\x34\x71\x45\x7e\x03\x05\x04\x00\x21\xf9"
+    "\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\xd4\x31\xa6\x8c\x16\x09\x2b\x88\xb4\x90\x70\x22\x81\xc0\x87\x10\x1f\xea\xa0"
+    "\xf2\xaf\x4b\x17\x19\x05\xd8\x00\x58\x82\x64\x02\x88\x88\x20\x1f\x06\x68\x62\x21\xc0\x16\x06\x58\x20\x34\x09\x19\xd1\xc0\x00\x24\x6c\x5a\xd0\x80\xf3\x00\x8e\x8b"
+    "\x02\x49\x20\xbe\x91\x03\xd1\x44\x00\x30\x3b\xa0\x10\xb9\x31\xa2\x00\x8c\x3c\x69\x62\x50\x14\x48\x25\x0a\x44\x11\x21\x12\xd4\xb1\x63\x61\xc0\x05\x00\x05\x7a\x88"
+    "\xf1\x11\xe2\x81\xc3\x7f\x6b\x1e\x5a\x50\x32\xa1\x08\x05\x81\x09\x26\x48\x28\xc1\x20\xc0\x98\x04\x02\x7a\x50\xe9\xd0\xe0\x1f\x09\x18\x32\x68\x4c\xe0\x91\x02\x22"
+    "\x90\x00\x5d\x32\xfc\xa8\xf3\x41\xc2\x83\x1c\x1f\xfe\x4d\x98\xe2\x82\x47\x0f\x2f\x15\x1e\x36\xc9\xf9\x50\x04\x83\x39\x1a\x18\x14\x48\xc0\xe1\x06\x0f\x0b\x05\x96"
+    "\xc0\xf9\x37\xa6\xc2\x9c\x2a\x4e\x05\x26\x69\xa1\xc0\x02\x1d\x19\x2c\x96\x9c\xb0\x13\xba\x85\x1d\x03\x05\x46\x00\x00\x30\x40\xa0\x99\x20\x37\xe8\xf0\x20\x82\x24"
+    "\xd0\x12\x1b\x4e\x76\xd7\xf5\x71\x63\x37\x80\x0b\x6a\xfe\x59\xb8\x5a\x01\xc1\x08\x35\x2d\x88\x64\x60\xb0\x44\x82\x43\x13\x41\x9c\xd9\x1f\x40\x60\x22\xf7\x0a\x2e"
+    "\x47\x3c\xb7\x40\xe2\xa1\xc5\x0a\x18\x0f\x6d\x94\xe0\xd8\xe3\x9f\x87\x1b\x2b\x58\x78\x38\x40\xa4\x0e\x11\x15\x5a\x1c\x20\x48\x18\x10\x0d\xc1\x82\x08\x02\x2d\x80"
+    "\x44\x03\x3c\x30\x50\x42\x10\xff\xa4\xd1\x41\x1e\x28\xa8\x01\x04\x1e\x21\x34\xf0\xc0\x52\x02\xd9\xe0\x81\x13\x41\xb4\xd1\xd0\x3f\x0d\x28\x51\x07\x0b\x39\x60\x70"
+    "\x46\x12\x34\xdc\x20\x01\x17\x66\x08\x04\x44\x0a\x30\x28\x81\xc0\x43\x77\x08\xf4\xc5\x10\x06\x38\x61\x81\x13\x44\x00\x70\xc0\x0e\x01\x10\x20\x44\x02\x51\x98\x00"
+    "\xd1\x18\x1f\xfd\x83\x01\x01\x39\x3c\x11\x00\x1c\x10\x00\x90\xd2\x0e\x60\x34\xc1\x83\x92\x0f\xe1\x61\x84\x44\x08\x40\x90\x86\x0d\x49\x54\x50\x40\x09\x7f\x40\xd0"
+    "\xc0\x0b\x2c\x41\xa4\x04\x11\x0a\x74\x90\x04\x17\x08\x34\xd1\x83\x1d\x6d\xf6\x54\x01\x11\x23\x2c\x31\x05\x1d\x0c\x54\xa0\x84\x40\x6f\xe4\x89\x96\x0f\x32\xc8\x80"
+    "\x84\x0c\x6a\x34\xb1\x46\x06\x1c\x06\x04\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\xfc\xf7\x26\x01\x02\x35"
+    "\x6d\x14\xac\x68\x41\xe7\x44\x82\x81\x10\x23\xea\x20\x21\x70\xc2\x07\x41\x0a\x00\x54\x39\x12\xb1\x63\x44\x37\x1d\x9c\x78\x68\x52\x40\x81\x12\x03\x1e\x21\x12\x98"
+    "\x90\xf0\x00\x04\x3e\x79\x7a\x04\xd9\x10\x43\x44\xca\x7f\x64\x70\x58\xe0\xe1\x64\x47\x8b\x11\x37\x4e\xf0\x78\x22\xa1\xc8\x40\x07\x20\x22\x86\x89\x23\xe4\x5f\x06"
+    "\x16\x44\x00\xcc\x69\xc2\x43\x8f\x01\x03\x40\x70\xa2\xfc\x57\xc4\x47\x20\x09\x0d\xa8\x0c\x0c\x31\x60\x05\x84\x07\x3e\x8a\xe4\x99\x40\xe6\x1f\x02\x81\x15\x20\x04"
+    "\x19\x62\x03\xce\x1d\x88\x5c\x3e\xb0\x00\x41\xe5\x81\x8c\x14\xff\x3e\x24\xe0\xb3\x61\x41\x12\x1f\x10\xbc\x0c\x14\xe0\x01\xa5\x05\x81\x08\xaa\x68\x19\x22\x81\xc5"
+    "\x0a\x09\x77\x2a\xb0\xb9\xe1\x64\xcc\x03\x01\x55\x20\x3c\x16\x98\x40\xc9\x81\x0a\x4a\xf4\xd0\x01\x60\xc1\xc6\x01\x00\x05\xfe\x79\x28\xb0\x04\x00\x80\x05\x03\x59"
+    "\x40\x20\x02\x23\x88\x8b\x16\x10\xd6\xec\x00\xa0\x20\xca\x3f\x1e\x25\x6c\x03\x60\xb3\xe3\x5f\x82\x29\x23\x68\x5c\x21\x22\x83\x08\x83\x1e\x10\x56\xe0\xfe\x57\xe3"
+    "\x83\x72\x05\x3e\xfe\xcb\x79\x01\xb0\xc4\x87\x06\x00\x27\xb4\x9f\x60\xa2\x66\xcd\xc0\x09\x1b\x2e\x30\x68\xf2\x80\xc7\x85\x03\x3b\x78\xd0\x69\x81\xc6\x05\x82\x2e"
+    "\x07\xbc\xf5\x8f\x0d\xff\xa4\x00\xc3\x10\x21\x08\xb4\x03\x1b\x0b\x78\x70\xc2\x01\x03\x98\x81\xdb\x1d\x6d\xe0\xf0\x06\x05\x13\x28\x91\x04\x44\x08\x54\xd0\x83\x0d"
+    "\x6a\x54\x41\x07\x64\x02\xb9\xf1\x40\x02\xad\xad\x70\x80\x12\x11\x0c\x44\x00\x02\x12\x40\x01\x46\x00\x02\x19\xf5\x0f\x06\x0f\xa4\x20\x43\x66\x07\x8c\xa0\x07\x0b"
+    "\x0f\xfd\x90\xc1\x43\x10\xe9\xd0\xd6\x3f\x24\x18\x50\xc0\x02\x5c\xec\x70\x01\x00\x28\x74\x60\x43\x08\x38\xac\x71\xa4\x47\x29\x9c\x50\x45\x05\x87\x41\xc1\xc6\x01"
+    "\x2b\x14\x20\x00\x06\x37\x09\xf4\xc0\x0e\x1b\x5c\xc7\x83\x06\x0b\x7c\xe0\x41\x52\x65\x0e\x54\xd6\x08\x6d\x0c\xa0\xc4\x68\x71\x0e\x34\x86\x0f\x50\xc8\xe0\x42\x01"
+    "\x12\x2c\x80\x40\x19\x3f\x40\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x14\xa8\x83\xc0\x84\x20\x1b"
+    "\xe6\xac\x80\x40\xe7\xc4\xc0\x87\x10\x1f\x62\x08\xa0\x24\xcd\x8d\x0b\x12\x7a\x44\xdc\x08\xe2\x1f\x18\x1a\x27\x26\x0c\x59\xb0\x01\xc9\x9a\x8d\x0f\x75\xbc\xc8\x71"
+    "\xe3\x00\x9b\x29\x02\xf2\x9c\x50\x40\xe4\x24\xca\x7f\x26\x0c\x7c\x89\xc0\x63\xc7\x86\x11\x12\x9c\x08\x18\xe1\x03\x65\x0a\x38\x3b\x10\x98\x11\x68\x21\xcb\x92\x1b"
+    "\x1f\xca\x7c\x50\x43\x61\xa0\x03\x81\x51\x38\x2c\x59\xe0\x24\xc3\x1b\x81\x63\x04\xb4\x58\x01\x63\xc2\x84\x14\x29\x3a\x2e\x75\x82\x64\x45\x8c\x17\x13\x06\x68\x78"
+    "\xc8\x45\x50\x10\x03\x67\xbe\x80\x29\xf2\x0f\x8e\x0f\x41\x44\x1a\xf0\x20\xe9\xa2\xc1\xc0\x09\x09\x7a\x28\xe9\x58\xe7\x00\x02\x20\x3b\xe8\x1c\x88\x71\x87\xc1\x8d"
+    "\x12\x30\x44\x78\x10\x80\x02\x42\xd1\x81\x36\x98\x30\xc8\xd0\x06\x42\x89\x0c\x43\x01\x74\xf9\x27\x40\xcf\x12\x00\x23\x1c\x0a\x0c\xb0\xe0\xc2\x82\x06\x10\x88\x0c"
+    "\xb0\xa0\xa7\x04\x9d\x04\xff\xa2\x54\x01\x40\xbc\x8a\x40\x33\x0b\x14\xb4\x81\x31\xc0\xca\x06\x30\x47\x4a\x0c\x98\x20\x30\x84\x1a\xe2\x00\x14\x54\xf8\xd7\xe4\x02"
+    "\x80\x0f\x3c\x14\xc6\xc8\x40\xc1\x05\xc9\x85\x00\x0f\x9b\x28\x38\xf0\xa4\x42\x94\x3c\x2b\xb0\x14\x70\x52\xa1\xc4\x89\x1d\x11\x62\xdc\x30\xf1\x0f\x04\x9c\x07\x45"
+    "\x08\x10\xc5\x03\xff\x20\x20\xc1\x0d\x74\x6c\x21\xd6\x00\x68\x50\x17\xc2\x09\x63\xc4\x91\x42\x10\x0c\x78\xf0\x50\x07\x32\x08\x60\x83\x06\x2d\x28\x80\xc0\x3f\x54"
+    "\xfc\x13\xc7\x1a\x06\xf4\xc0\x83\x18\x07\x40\xe0\xc4\x52\x22\x66\x60\x01\x18\x23\x30\x31\xd7\x3f\x52\x08\x04\xc2\x0f\x3b\xb8\xf1\x82\x17\x58\xdc\xb0\x00\x7a\xff"
+    "\x14\xb1\xc5\x00\x3e\xd8\x80\x52\x07\x00\x4c\xd0\x03\x12\x00\x6c\x70\x42\x14\x14\x84\x11\x42\x88\x37\xf1\xc0\x84\x67\x4e\xec\xa0\xc0\x0d\x63\x9d\x70\xc7\x57\x37"
+    "\xfd\x83\x46\x67\x02\x3c\x30\x81\x1a\x05\x74\x91\x41\x21\x61\x0e\x04\x43\x1a\x07\x6c\x30\x40\x13\x49\xf0\xd5\xe6\x43\x2c\xd0\x81\x84\x0b\x6d\xa0\xb0\x03\x75\x3a"
+    "\x40\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\xe8\x40\xc7\xbf\x05\x4c\xd8\xac\x40\x41\x68\xa0"
+    "\xc3\x87\x0f\x43\xd8\x00\x63\x05\x00\x11\x25\x09\x20\x6a\x14\xb1\x63\x01\x04\x25\x1e\x26\xc8\x28\xb1\x40\xe3\xc3\x04\x57\x04\x40\xb8\xa0\x20\x90\x06\x16\x0a\x36"
+    "\x20\x30\xf9\x4f\xce\xbf\x14\x45\x4c\x98\xe8\xa1\x02\xc0\x14\x16\x08\x38\x48\x30\xa1\x91\xc7\x13\x09\x12\x10\x50\x10\xd8\x60\x05\x80\x02\x2f\x04\x20\xc9\x70\x52"
+    "\xcd\x0a\x0e\x31\x32\x78\x08\x41\x42\xa0\x0d\x0e\x07\x06\xdc\x41\x91\x22\xe3\x3f\x23\xff\x62\x1c\x68\xf1\x20\x45\x90\x36\x39\x1c\x4e\x90\xc0\x81\xc7\x96\x1a\x01"
+    "\x44\xfc\x93\x92\x06\x02\x83\x3c\x5b\x0a\xdc\xd0\xd3\xe3\x1f\x95\x7f\x0d\x12\x3c\xe8\x10\xe5\x87\x89\x26\x1e\x04\x42\xb8\xc1\xc3\x49\x1b\x00\x2b\x72\x44\xb0\x90"
+    "\x03\x49\x0b\x16\x02\x41\xfc\x33\x53\x60\xc1\x99\x2e\x2b\xd2\xd8\x80\x32\x82\x0d\x97\x7f\x1d\x88\x2c\x01\x00\x60\x01\x51\x81\x3c\xfe\xa0\x08\xd1\x62\x05\x98\x0e"
+    "\x6c\x5c\x94\xfc\x97\x00\x02\x6d\x00\x10\x06\xfa\x60\x70\x60\x41\x03\x08\x2d\x92\x10\xb9\x61\x61\xa0\x9d\x1d\xc7\x15\x94\xcc\xd0\x62\x89\x84\x2b\x50\x5c\xbf\x1c"
+    "\x49\xd1\xb7\xce\x3f\xd1\x69\x37\x94\xa0\x71\x22\x8a\x0f\x0e\x00\xaa\xe4\x80\x71\x81\x8e\x40\x0d\x5a\x08\xe0\x49\xc1\xa2\x6c\x07\x3b\x6b\xfc\x63\x83\x15\x58\xb4"
+    "\x20\xc0\x20\x0c\x14\x70\x84\x40\x7b\xf0\x60\x07\x0f\x43\x14\x60\xc5\x04\x0e\x2d\x40\x04\x0a\x3c\xd8\x80\xc2\x12\x14\x92\x21\x50\x02\x63\x20\x61\x80\x04\x37\xa4"
+    "\x11\x82\x40\x66\x3c\xb0\xc5\x0b\x3e\x04\x72\x00\x07\x66\x38\x44\x02\x0f\x05\x68\xf0\x40\x0b\x16\xf9\x20\x10\x15\x57\x20\x21\x81\x0b\x02\x68\x34\x46\x01\x12\xac"
+    "\xa1\x05\x04\x23\xd0\x61\xc3\x1b\x04\x44\x51\xc4\x3f\xb7\x69\xc4\x42\x09\x12\x4c\x90\x83\x1e\x07\x28\x00\x05\x0b\x3c\x98\x45\xd3\x3f\x50\x5c\xf0\x84\x07\x16\x2c"
+    "\xb0\x82\x0b\x3e\xa4\xf0\xe5\x40\x45\x08\x40\xc4\x01\x0c\x34\x61\x03\x55\x6b\x3e\x44\xc7\x8f\x05\x40\x70\x02\x4d\x01\x01\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c"
+    "\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\x50\x89\x02\x05\x44\x20\x10\x5c\xc8\x70\x60\x94\x21\x0b\x4a\xb0\x41\xc2\xa2\xe1\x42\x32\x18\xb8"
+    "\xa4\x61\x50\xa0\xc1\x1d\x35\x07\x24\xc0\xb0\x48\xf0\x85\x87\x06\x28\x2e\xb4\x58\x00\x63\xc0\x01\x25\x54\x1a\xbe\x41\xc3\x62\x47\x12\x02\x04\x44\x08\xa8\xc2\xa4"
+    "\xc3\x83\x27\x0a\x26\x30\x9c\x50\x61\xc5\x8d\x05\x39\x6a\x50\x10\xf8\xe1\xc6\x0d\x37\x08\x2e\x34\x59\xd8\xc3\x05\x93\x1d\x1e\x92\x70\x81\x73\x46\xa0\x9d\x1d\x37"
+    "\x24\xf0\x08\x72\x42\x0a\x41\x28\x25\x3a\x60\x10\xa0\xe2\x6a\x83\x81\x1d\x24\x94\x08\xd0\x27\x4f\x8a\xae\xff\x50\xcc\xe9\xe0\x21\xc6\x8d\x25\x44\xee\xfc\x03\xf1"
+    "\xaf\x41\x88\x22\x0b\x34\x14\xc1\xc0\x23\x89\x40\x22\x2d\x12\x74\x99\xb3\x84\xce\x93\x28\x68\x4e\x48\x58\x51\xb1\x82\x01\x10\x40\x34\x54\x20\xf3\x4f\xc1\x89\x26"
+    "\x10\xd8\x08\x2a\xf2\xcf\x89\x82\x25\x00\x00\xec\x30\x31\xd0\x84\x0b\x06\x76\xdc\x40\xe0\x31\x65\x89\x80\x81\x06\xda\xc4\x06\xd0\x86\x20\x9c\x0b\x05\x32\x40\xc8"
+    "\xb1\xc6\x4a\x01\xda\x02\x13\xd0\x18\xae\x60\xc1\x3f\x33\x0b\x56\x54\x11\x00\x46\x21\x99\x1d\x1a\xe4\xbc\x50\x18\x03\xe7\x5f\x93\x12\x1b\x90\x74\xb0\xd1\x01\xec"
+    "\x9f\x1d\x6b\x5a\xc8\x10\x88\xe0\x8e\x09\x11\xa2\x4d\xbc\x70\xf2\x42\x70\x18\x3d\x17\x2c\xb1\x83\x0f\xd9\xd1\x21\x50\x11\x19\x04\x20\x06\x0f\x07\xe8\xf1\x96\x40"
+    "\x15\xa8\xb1\x04\x04\x0b\xbc\xd0\x41\x09\x7c\x0c\xe4\xc0\x1b\x6a\x54\xc0\x05\x07\x07\x9c\x60\x86\x40\x6b\xe4\xe0\x84\x05\x3c\xa8\x71\x01\x12\x0f\x2c\x74\xc2\x1f"
+    "\x01\x2c\x70\xc3\x05\xd6\xfd\x43\xc0\x1e\x3e\x54\x70\x00\x13\x14\x31\xd4\x04\x13\x27\x84\x90\xc5\x01\x2b\xc0\x81\x07\x08\x29\x0c\x11\x44\x0c\x4d\xa4\xd0\x90\x09"
+    "\x41\x28\x50\xc1\x04\x0c\xb0\xc1\x04\x03\x3d\xac\x61\x00\x49\x03\xb1\xe0\x02\x1b\x15\x64\xe0\x06\x11\x53\x64\x61\x41\x11\xa4\x71\xf9\x0f\x02\x69\xac\x30\x45\x0e"
+    "\x01\xd8\x40\x98\x9a\x0b\xa9\x80\x44\x01\x6f\x72\x19\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48"
+    "\xf0\x5f\x0e\x36\x0a\x20\x14\x5c\xc8\xf0\xdf\x97\x09\x0c\x6e\x10\xa1\xd1\xb0\xa0\x94\x28\x1a\x0a\x48\xa0\xe3\x81\x05\x11\x05\x13\x2a\x92\x20\x00\x23\x8c\x01\x1b"
+    "\x4d\x14\x1c\x28\xc0\x82\x05\x04\x08\x3e\x18\x8a\x61\x61\x45\x86\x15\x1e\x14\xcc\x84\xa0\xb1\x84\xc1\x83\x05\x58\x04\x80\x28\x88\xa0\xca\x12\x09\x02\x3c\xe4\xf9"
+    "\x21\x50\x0c\x91\x25\x34\x7a\x48\x80\x10\x81\x60\x90\x16\x2e\x04\x04\xc8\xe0\x46\x0d\x8f\x81\x4d\x0e\x28\xc0\x91\xc3\xca\x1a\x82\x2d\x20\x58\x48\x31\xa0\xca\x01"
+    "\x0e\x4d\x08\x06\xda\xd0\xc7\x82\x02\x02\x03\x21\x30\xe9\x31\xe1\x09\x00\x89\x29\x52\x0c\xfd\x17\x20\x4e\x1a\xaf\x6b\xed\x08\x9c\x98\xc7\xc5\x08\x05\x31\xfe\x21"
+    "\x40\x30\x80\x4e\x0b\x1f\x51\x1a\x4c\x00\x01\xc4\x8f\x8f\x19\xff\x88\x38\x91\x70\x40\x85\x12\x81\x2f\x56\x2c\x01\x00\x20\x90\x99\x81\x75\x06\x0d\xc0\xf3\x4f\xc0"
+    "\x9d\x36\x0a\x0c\x0c\xbc\x53\x80\x35\x00\x14\x04\xc7\xb4\x90\x90\x22\xee\x0f\x09\x3e\x80\x0c\x4c\xd0\x9b\xb5\x82\x81\x1a\x06\xdc\x60\xc0\xa3\xc5\xbf\x22\x31\x42"
+    "\xfc\xa0\x80\xc6\x43\x88\x26\x2b\x36\xb3\x4c\xe9\x00\xe3\x1f\x1c\x08\x23\x38\xf4\xd8\x01\xfc\x5f\x86\x14\x01\x92\xec\xa0\x61\xc2\x49\x06\x2e\x19\x92\x44\x40\x72"
+    "\x00\x80\x8b\x18\x3e\x28\x20\x81\x40\x78\xd4\x01\x81\x0d\x4a\xdc\x90\x06\x41\x3e\xd0\x71\x03\x1b\x12\x58\x30\x41\x0b\x48\x10\x84\xc6\x14\x3e\xd8\xc0\x06\x1b\xe5"
+    "\x09\xe4\x83\x0a\x03\x58\x80\x46\x1f\x05\xa0\xe0\x06\x41\x5f\x6c\x10\x44\x00\x12\x00\x00\x01\x1c\x02\x99\x81\x06\x0f\x2c\x0c\xb0\xc4\x01\x5f\x11\x64\xc2\x09\x07"
+    "\x34\x60\x01\x12\x00\x0c\x20\x02\x05\x04\x78\x00\x81\x0c\x1b\xec\xc0\x00\x43\x4a\x30\x21\x83\x05\x02\x10\x71\x81\x0b\x6b\x85\x20\x82\x18\x09\x14\x51\x91\x13\x69"
+    "\x69\xf0\x23\x11\x48\x65\x20\x45\x45\x56\xa1\xd0\xc2\x0e\x08\xd8\x20\x42\x18\x64\x32\x24\x81\x0b\x10\x08\xd0\x66\x40\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00"
+    "\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\x50\x60\x97\x15\x44\x20\x14\x5c\x58\x10\x84\xc0\x14\x7d\x36\xb0\x29\xc0\x90\x61\x9c\x24\x1d\x0a\xb8"
+    "\x50\x12\x40\xc6\x01\x06\x68\x2a\x86\x18\x82\x40\xcd\x97\x10\x19\x4e\x5c\x50\xb0\xc0\x03\x83\x25\x2c\x16\xda\x68\xc0\xa0\x04\x93\x27\x0c\x52\xe0\x29\xa4\xe1\x00"
+    "\x04\x18\x5a\x6e\x30\x78\x51\x30\x0b\x80\x12\x1d\x3c\x04\x88\x12\x85\x82\xc0\x13\x00\x20\x78\x58\x70\x00\x01\xc1\x02\x07\xf8\x58\xc8\xd0\xe4\x89\x84\x0a\x06\x04"
+    "\xf2\x50\x70\x20\x46\x8f\x0b\x70\x06\x42\xd8\xf0\xe4\x01\x82\x36\x7f\x46\xb4\x69\x40\x70\x07\x13\x06\x3c\xa0\x34\x20\x23\x90\x48\x8b\x07\x27\x20\x00\x50\x80\x04"
+    "\x47\x04\x11\x29\x04\x16\x51\x21\x21\x8a\x8c\x28\x66\x04\x42\x10\x70\x62\xc3\x81\x34\x16\x04\xfa\x28\xf0\xa4\x8d\x96\x14\x08\x16\xec\xc9\x60\x20\x83\xc3\x0a\x5f"
+    "\x20\x60\x49\x2b\xb0\x50\x81\x11\x00\x00\x10\x49\x6c\x03\x04\x88\x14\x4a\x22\x08\xc4\x50\xa0\x42\x9c\x81\x38\x64\xc4\x06\x20\xe3\xce\x40\x13\x15\x18\x10\x78\xb8"
+    "\xa3\xc8\x1b\x0a\x19\xfe\xdd\x29\x31\xbc\x0a\xc1\x1e\x07\x5c\x24\xc8\xf1\xcf\x4c\x80\x10\x29\x6a\xbf\x54\x78\x90\x00\x0c\x04\x08\x07\x4e\x08\xb4\x71\x82\x49\x89"
+    "\x0a\x1a\xda\xb4\x36\x30\x20\x84\x0c\x24\x63\xfe\xd5\x41\xc3\x23\x43\x88\x01\x44\x60\x41\x84\x1a\x5c\x68\x24\x90\x03\x1d\xb4\x85\xc4\x05\x15\x5c\x87\xc4\x0d\x17"
+    "\xac\x50\x81\x05\x69\x4c\x11\xc8\x40\x02\x1c\x30\xc4\x02\x37\x40\x60\x83\x40\x68\x3c\x51\x00\x04\x0b\xa0\xa1\xc1\x00\x6c\x30\x40\x10\x0b\x07\x34\x11\x40\x0b\x58"
+    "\x2c\x20\x10\x01\x19\xdc\xc1\x83\x07\x39\x28\x00\x80\x00\x05\xf1\x50\xc0\x14\x62\xe4\xb0\x02\x1b\x16\xe8\x00\x42\x06\x03\x04\xf1\xc7\x05\x2d\x34\x11\xc2\x42\x31"
+    "\x00\xa0\x06\x0f\x03\x1c\xb0\x42\x03\x18\xbc\x60\x07\x1f\x3e\x68\x01\x43\x45\x36\x64\x31\x07\x0d\x49\x2c\xb0\x82\x0b\x7c\x24\x51\x47\x45\x0b\xa9\x50\x00\x07\x4d"
+    "\xdc\x11\x42\x14\x33\xb0\xc9\x90\x04\x32\xf4\x66\xa7\x40\x01\x01\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09"
+    "\x1c\x48\x70\xe0\x8e\x29\x10\x0a\x2a\x2c\x68\x04\x84\xc0\x33\x5e\x98\xb4\x58\x48\x90\x44\x02\x11\xff\xc2\xf0\xd8\x01\x85\xc6\x16\x25\x4b\xda\x04\x59\x98\x40\x40"
+    "\x03\x19\x4f\x76\xa4\x08\xf1\x40\xc6\x01\x0e\x08\x2a\x00\x60\x90\xa0\xe0\x91\x0f\x37\x6e\x20\x79\xd2\x41\x09\x01\x02\x67\xa0\x1c\x50\x33\x21\xcd\x81\x26\x05\xdb"
+    "\x00\xf8\x30\x61\x88\x09\x2e\x3d\x80\x08\x74\xd2\x42\x41\x0f\x37\x17\x04\x38\x14\x48\xe4\x40\x03\x0f\x01\xe8\x14\x58\x41\xa7\xc7\x40\x24\x00\xa0\x38\xb1\x42\xe4"
+    "\x8b\x40\x08\x2b\xdc\xf0\x50\xa3\x00\xc0\x01\x08\x3e\x08\x36\x51\x50\x20\xc1\x13\x1a\x11\x04\x16\x18\xe0\xc4\xc5\x01\xbe\x5d\x10\xd4\x09\x41\x40\xa0\x0d\x19\x44"
+    "\x02\x2c\xd8\x61\x44\xe0\x82\x08\x32\x6e\x08\x42\x2a\x50\xc9\x94\x27\x48\x04\x60\xe0\x41\x07\xcd\x89\x28\x45\x06\x26\x70\x21\x23\xb0\x40\x02\x32\x46\x00\x00\xa0"
+    "\x20\xc0\xbf\x26\x04\x0a\x45\xb1\xb1\x35\x05\xa1\x28\x5b\xff\x85\x40\x3b\x5b\x82\xeb\x7f\x54\x32\xec\xc0\x20\x30\x4e\x80\x14\x54\xa8\x6c\xf9\xe7\x81\xc9\x6c\x00"
+    "\x09\x07\x9a\x90\xc0\xc0\x84\xc0\x37\x63\xbe\xc6\xb0\x40\xf3\xa4\x0c\x86\x05\x28\x50\x5c\xf8\x30\xd0\x82\x97\x39\x34\xcc\x1c\x11\x88\x67\x80\x80\x00\x6c\xda\x08"
+    "\xac\x63\x03\x4e\x88\x21\x3e\xd0\x01\xc1\x5d\x57\x2c\x20\x81\x40\x5f\xb8\xf0\x41\x11\x2d\xac\x60\x01\x41\x1e\x14\xc0\x86\x5d\x34\x38\xe1\x06\x04\x81\x38\x36\x07"
+    "\x03\x01\x28\x45\xc7\x40\x02\x20\x71\xc3\x0a\x6d\xb0\xe0\x43\x05\x07\xc8\x30\x50\x21\x47\x28\x30\x01\x0b\x6c\x40\xf0\xe0\x3f\x18\x4c\xd0\x43\x14\x1e\x34\xa0\xc6"
+    "\x08\x82\x14\x74\xc2\x12\x59\xc0\x00\xc5\x0d\x4f\x80\x80\x87\x08\x0d\x08\xb0\xc3\x13\x07\x00\x50\x41\x5e\x04\x8d\xa1\xc6\x12\x4d\xc0\xd1\x02\x1b\x03\x8c\x11\x45"
+    "\x08\x4f\x30\xc0\x84\x17\x0b\x98\xb1\xd0\x02\x05\x6c\x00\xc6\x04\x2e\x14\x90\x46\x00\x63\xfc\x33\xc6\x03\x35\x51\x24\x10\x12\x6d\x2c\x90\x40\x06\x51\x98\x50\x99"
+    "\x9c\x0a\x49\x90\xc6\x02\x7c\x0e\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\x90\x20\x03\x09"
+    "\x2e\x0a\x2a\x2c\x08\x02\x84\xc0\x0c\x55\x14\x40\x58\x48\xf0\x0c\x97\x00\xff\x32\x58\x90\xb0\xa0\x02\x8c\x15\x0a\x12\x2a\x6c\x20\xc0\x45\x8b\x16\x56\x76\x60\x08"
+    "\xa1\xe1\x82\x82\x3e\x5b\x0e\xb4\x59\x50\xd0\x05\x87\x03\x10\x16\x08\xd0\xc0\x82\x87\x0e\x13\x1a\x46\x14\xd0\x50\x61\x89\x1b\x82\x10\x36\xb0\xf1\x11\x40\x23\x9c"
+    "\x2b\x3c\x28\xfc\xb3\xb1\x63\x89\xc7\x15\x48\x06\xba\x20\x42\x24\x89\x93\x1c\x4c\x14\x94\x28\xe1\x26\x84\xc0\x05\x58\x0e\x58\x78\x52\xc5\x8e\x40\x3a\x10\xbe\xa2"
+    "\xc0\x32\xa2\x04\x91\x09\x0d\x06\xda\x00\xd9\x23\x87\x02\x04\x02\x83\x64\x38\x31\x67\x49\xa0\x01\x43\xfe\xd9\x49\xe1\x50\xa0\x04\x05\x2c\x7c\xb8\xb0\x31\xb0\x08"
+    "\x83\x1b\x4c\x07\x7a\x29\xc0\x80\x4e\x87\x04\x5c\x0e\xe4\x69\xc2\x40\xaa\x40\x11\x2e\x9c\x10\xa8\x2c\x01\x80\xeb\x15\x3c\x7a\x1c\xb1\x81\x26\x41\x8a\x81\x85\x2c"
+    "\x24\x20\x41\xe1\xc5\xbf\x04\x2e\x5c\x03\x90\x50\xe7\x5f\x92\x1f\x14\x0c\xf0\x68\x4c\x25\x43\x02\x1c\x49\x9a\x3c\xe0\xb1\x41\x78\x01\x82\x66\xb6\x30\x58\xfd\x4f"
+    "\xc7\x0f\x06\x13\xae\xc2\xcc\xb1\x91\xe2\x49\x01\x08\x25\x9e\x0c\x34\xe0\xa4\xc4\x09\x13\x03\x2d\xb4\x41\x13\xe3\x80\x0c\x81\x76\xd6\xc0\xc9\x90\xb1\xc3\x0e\x00"
+    "\x7f\x34\x91\x42\x10\x02\xf9\xc0\x84\x06\x62\x1c\xa0\x87\x59\x02\x21\x80\x06\x07\x44\x2c\xb1\x44\x01\x15\xc8\x97\xc5\x43\x6c\x74\xc0\xc5\x05\x37\x28\x21\x10\x0f"
+    "\x1f\x1c\x70\xc1\x01\x37\x7c\x10\x43\x0f\x05\x70\xa0\x9e\x40\x44\xa4\xf6\xc1\x08\x1f\x18\xf0\x4f\x1d\x16\x0c\x72\x42\x03\x68\x4c\x20\x80\x02\x05\x48\x40\x50\x05"
+    "\x37\x0c\xd2\x80\x02\x23\x58\xf0\x06\x08\x01\x0c\xe2\x01\x0b\x47\xb4\x71\x43\x1a\x04\x12\xc4\x02\x07\x1b\x58\xd0\x01\x13\x2d\xf0\xb0\x47\x79\x48\x94\x10\x16\x0b"
+    "\x79\x2c\x24\x41\x01\x05\x38\xb1\x80\x0b\x32\x78\x10\xc5\x3f\x79\xc0\x81\x11\x45\x8e\x21\x61\x45\x14\x06\xd8\x61\xc2\x0f\x70\x2e\xf4\x04\x1f\x2b\xe6\x29\x50\x40"
+    "\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xa0\x9a\x2e\x05\x13\x26\x24\x00\x42\x60\x83\x15\x10"
+    "\x14\x0a\x44\xe3\xa1\x09\x0b\x1f\x4d\xfe\x25\x71\x42\x87\x05\x1a\x06\x0a\x22\x26\x94\xc0\x00\x0b\x1b\x05\x6c\x02\x09\x10\x91\x01\x24\x92\x35\x05\x14\x48\x28\x08"
+    "\x61\x83\x82\x13\x0d\x78\x3c\xe0\xd1\x20\x02\x08\x11\x31\x4f\x78\x60\x63\x05\xc6\x40\x08\x2b\xa0\x3c\xb8\x12\xe0\x44\x85\x0e\x3e\x30\x08\x9c\x70\x83\xc1\x84\x27"
+    "\x07\x78\x08\xec\x02\xe1\xc9\x9d\x0a\x0c\x6e\x2c\x19\xbb\xc3\x82\xc0\x26\x2b\xb0\xf4\x58\xc0\x24\xe3\xbf\x05\x3e\xf2\x58\xd9\x30\xa2\x84\x8b\x02\x08\x7a\x0c\xb4"
+    "\x23\x63\xc9\x02\x27\x1b\xdc\x10\x54\x72\xa0\x00\x8b\x05\x09\xfe\x3d\xc0\x60\x66\xa0\x17\x2c\x15\x78\x1c\x10\x30\xd0\xc1\x8e\x27\x22\x06\x82\xa8\x80\x02\x4a\x10"
+    "\x25\x2f\x1e\x1c\x50\xc2\xc3\x85\x5e\x81\x75\x06\x25\xa0\x30\x30\x44\xa0\x11\x00\x46\x10\x79\xf0\xe0\x03\x9c\x06\x27\xf0\x0c\x34\x61\x63\x8c\x08\x13\x7a\xa3\x14"
+    "\x00\x40\xdc\x45\x91\x7f\x5a\x44\x14\xd9\x93\xa1\xf2\x8f\x1c\x3d\x7c\x28\x31\x60\x43\x01\xf1\x11\x48\x08\x52\x49\xb1\xa5\xa1\x40\x16\x48\xee\xbc\x2c\xb8\x90\x24"
+    "\x09\x67\x22\x0a\x9e\x10\x14\xe1\xa5\x82\x91\x81\x5d\xe6\xd4\x5e\x72\xe2\x1f\x88\x3b\x49\xb6\x68\x35\xd3\xc0\x82\x8b\x15\x3e\x10\x74\x42\x0b\x38\x78\xb1\x04\x1d"
+    "\x8d\x09\x94\xc4\x10\x4f\x48\xd0\xc2\x0d\x73\x58\xf1\xc0\x04\x0b\x08\x94\x85\x02\x0d\xb0\xb0\x04\x11\x0d\x9c\x35\x00\x16\x4b\xc4\x26\xc3\x09\x77\x7c\xd0\x46\x87"
+    "\xff\x58\x00\x80\x12\x70\x14\x70\xc3\x69\x76\x80\xb5\x03\x0d\x3e\xf4\x27\x41\x1b\x33\x09\xc4\x43\x1a\x0a\x24\xb1\xc3\x01\x12\xe0\x41\x81\x1d\x08\x94\x17\x40\x0e"
+    "\x27\xb0\x31\x85\x0a\x05\xa9\x00\x41\x1a\x38\x70\xb0\xc2\x02\x11\x44\x91\x03\x1d\x25\xb4\x70\xc0\x08\x59\x54\x38\x52\x01\x59\xe4\x41\xc3\x0e\x83\x3c\xf0\x8f\x1b"
+    "\x15\xec\x20\xc3\x10\xcd\x49\x24\x81\x0b\x01\xca\x61\x06\x01\x12\xd5\xa9\x85\x97\x75\x12\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00"
+    "\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xe0\x04\x16\x3e\x0a\x2a\xfc\x97\xe1\x07\x88\x7f\x64\x08\x3c\xfc\x27\x08\x49\x81\x85\xff\xd4\xc4\x50\x41\x43\x42\x87"
+    "\x05\x22\x3c\xf8\xd8\x91\xa4\xc7\x01\x08\x0b\x21\x10\x01\x30\x05\x82\x8c\x29\x32\xae\xa4\xb0\x30\x02\x85\x80\x23\x27\x09\x16\x80\xa0\x00\xc9\x16\x0b\x18\x86\x44"
+    "\xb1\xd1\x80\x42\x9c\x26\x07\x90\xd8\x28\xd0\xe2\x89\x40\x1f\x2a\x4a\x9c\x88\xe2\xa3\x89\x0c\x24\x32\x2a\xe4\xa1\xf0\xcf\x00\x0a\x22\x4d\x9a\x00\xe8\x22\xb0\xc1"
+    "\x80\x1e\x4d\x24\xac\x1c\x71\xe3\x06\x0a\x2d\x67\x04\x7e\x00\xe0\x86\x05\x11\x06\x02\x27\xfc\xbb\xa2\xc0\xad\x84\x2c\x3b\xb4\xac\x21\xb8\x60\x04\x92\x32\x1b\x68"
+    "\x3c\x18\xe8\x64\x84\x16\x03\x04\xcf\x40\x16\x08\xe6\x82\x0c\x04\x12\x0a\xd4\x11\x68\xc6\x4d\x00\x2a\x04\xe1\x40\xe0\x70\xe2\xc4\xbf\x1e\x3d\xef\x40\x58\x60\x42"
+    "\x20\x06\x1e\x21\x28\x50\x18\xf3\x2f\x05\x03\x00\x00\xb0\xb4\x28\x93\xc0\x45\x85\x24\x28\x7a\x0c\x74\x40\xe0\x8a\x07\x91\xff\x3c\xac\xc0\x0d\x00\x82\x8d\x7f\x27"
+    "\xd0\x68\xd8\x42\x80\x20\x8b\x02\x6b\x94\x48\xc0\xf0\x60\x39\x6e\xbc\x5d\x41\xd0\x50\xf9\x72\x67\x60\x02\x2f\x48\xbe\xa0\x38\xe0\xe4\x9f\x86\x02\x25\x56\xd0\x21"
+    "\x68\x86\x87\x8f\x89\x09\x56\x0c\xf0\xd0\xe6\x00\x0c\x81\x0f\xc0\x61\x01\x41\x09\xf8\x70\x81\x07\x03\x59\x80\x84\x0b\x7b\xb4\x81\x05\x18\x04\xa5\x30\x81\x1b\x15"
+    "\xa8\xe1\xc2\x05\x7a\xf8\xf1\x8f\x5e\xff\x14\x50\xc0\x04\x73\xa9\x21\x50\x06\x27\xb8\x70\xc0\x05\xb8\x11\x51\x80\x0f\x01\x3c\xd1\x80\x40\x62\x39\x51\x01\x1b\x05"
+    "\x88\xf0\x8f\x19\x70\xa8\xa1\x00\x04\x28\x7c\x90\x83\x0d\x39\x28\xb0\x43\x7b\xff\x7c\xd0\x82\x0c\xc0\x31\xd1\x03\x05\x66\x20\x60\xc3\x03\x16\x7c\x01\x47\x03\x3b"
+    "\xc9\x40\x03\x41\x12\x40\x50\x81\x00\x1b\x28\xf0\xc0\x1a\x1e\x20\x61\xc5\x00\x10\x4c\x01\x80\x15\x84\x2c\x24\x81\x1e\x08\x4c\xe0\x83\x00\x3c\x10\xf0\x81\x1a\x2b"
+    "\x1c\x39\x81\x00\x18\xd1\xb0\xc3\x00\x02\xc5\x61\x02\x19\xff\x98\x60\x40\x42\x18\x31\xc6\x02\x87\x85\x12\x14\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00"
+    "\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xa0\x0e\x34\x36\x0a\x2a\xbc\x03\xe7\x41\x08\x10\xff\xc8\x50\x19\x38\x40\x89\x42\x81\x1c\x02\x4d\x39"
+    "\x40\x64\xca\x82\x0e\x09\x92\xc0\xf9\x97\x20\x08\x04\x08\x05\x4f\x2a\x38\xb0\xe3\x49\x87\x20\x0c\xa6\x8c\xc1\x71\x02\x49\x05\x1f\x17\x50\x0e\x54\xa2\x47\xc1\x82"
+    "\x17\x68\xc2\xf0\xa8\xc1\xc5\xc2\x9a\x1f\x21\x4a\x28\x98\xb0\xe3\x00\x07\x81\x36\x3e\x7c\xf0\xc1\x94\x41\x0b\x05\x10\x24\x08\xc0\xf0\x2f\x82\x92\x0b\x03\x78\x5c"
+    "\x40\x22\x30\x0f\xc9\x05\x2b\x6f\x8c\x38\xc0\xf1\x44\xc2\x7f\x4e\x4a\xd0\x98\x90\xa6\x45\x92\x81\x22\x50\x1c\xe8\xd0\xa4\x02\x02\x35\x45\x08\x0a\x58\x42\xe4\x8e"
+    "\x15\x26\x30\x06\x0a\x38\x61\x27\x02\xc1\x35\x0f\x20\xfe\x43\xa3\x94\xe9\x8a\xb7\x26\x6c\x84\xa0\x40\x90\x87\x82\x2a\x60\x04\x0a\x20\x02\x21\x8a\x97\x15\x0f\x04"
+    "\xea\xc0\x90\x22\x84\x89\x00\xff\xc6\xec\x58\x02\xe0\x02\x91\x24\x20\xda\x48\x18\x22\xe8\x83\x99\x81\x3d\x14\x24\x69\x12\x03\xee\x0d\x00\xc8\x0f\xf4\xf8\x77\x22"
+    "\x86\x85\x12\x3c\x06\x26\x60\x10\x84\x4b\x81\x36\x20\x3c\xb0\x19\x01\x60\xc9\x8e\xdf\x08\x4c\xd3\xf8\x71\x3d\x90\x47\x89\x13\x19\xaa\xac\xf0\xf1\xef\x0a\x14\x00"
+    "\x0a\x0a\x52\x79\xf0\x62\xe0\x16\x05\x02\x10\x30\x51\x90\x41\xe0\x9d\x26\x13\x10\x24\xc2\x1e\x4a\x6c\x31\x50\x03\x37\x7c\x70\xc5\x06\x07\xb0\x37\x90\x19\x6e\xd8"
+    "\xe0\x83\x05\x02\xac\x20\x01\x01\x11\xfd\x73\x07\x04\x41\x4c\xc0\xc1\x01\x16\x08\x04\xc3\x11\x10\x28\x30\xc7\x05\x25\x5c\x30\x47\x0e\x75\x4c\x26\x50\x20\x07\x3c"
+    "\x20\xc8\x05\x31\x40\xb4\xc7\x02\x44\xb0\xa1\x14\x12\x03\x68\x60\xc1\x02\x6a\xdc\xf5\x0f\x21\x10\x9c\x30\xc8\x1c\x53\xd4\x01\xc2\x1d\x3c\xf0\x90\xc4\x04\x1e\xf8"
+    "\xc0\xc3\x02\x55\x20\xe1\xa0\x40\x32\x40\xa0\x41\x10\x6d\x54\x90\xc1\x17\x2b\xec\x70\x42\x07\x5e\x3c\xf1\x47\x56\x12\x14\x24\x81\x04\x0b\xa4\x90\x42\x13\x49\x88"
+    "\xd0\xc1\x0e\x25\x30\x81\x45\x01\x2d\x5d\xf4\x0f\x0b\x1f\x0c\x54\x87\x14\xff\x98\x61\x41\x0c\x4d\xd8\xa1\xe7\x40\x36\xa0\x71\xe8\x45\x01\x01\x00\x21\xf9\x04\x09"
+    "\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x48\xb0\xe0\x3f\x0a\x6b\xcc\x18\x24\x58\x41\xc3\x89\x21\x36\x40\xfc\x23\x33\xb0"
+    "\x81\x18\x38\x0b\x21\x10\x99\x73\xe0\x00\x00\x08\x47\xfe\xa5\x30\xc0\xe3\x9f\x85\x02\x41\x08\xc2\x09\x42\x44\x81\x8b\x18\x13\xc4\x68\x58\xe0\xe5\xc4\x99\x1e\x2e"
+    "\xdc\xbc\x90\xa0\x60\x60\x9c\x41\x32\xe8\xb0\xb8\x03\xa3\xc7\x04\x1f\x29\xbe\x08\x30\x21\x62\x81\x82\x27\x2c\x98\x40\x10\xb8\x86\x85\x85\x3b\x5e\x34\x7a\x2c\x41"
+    "\xe4\x83\x05\x89\x77\x96\xe8\x09\xd0\x86\x88\x40\x1d\x13\x2b\xcc\x59\x52\x00\x42\x95\x15\x73\x24\x34\xa0\xf0\xef\x81\x0b\x22\x0d\x3a\x94\x48\x29\xd0\x06\x91\x13"
+    "\x6b\xb8\xfc\x4b\xf0\x2f\x42\x00\x82\x2e\x0e\xc0\xa8\x70\xa1\xc1\xc0\x17\x49\x08\x14\x74\xb2\x46\xe2\x60\x08\x00\x1a\x28\x39\xd0\x45\x20\x09\x3b\x63\x44\x50\x00"
+    "\x22\xf0\xc1\x06\x05\x02\x06\xa2\x28\xd1\x44\x0b\x00\x0f\x03\xa3\x2c\x70\x92\x47\xcb\xbf\x22\x0b\x6e\x00\x38\x40\xc4\x02\x85\x29\x2d\x32\x7c\x50\x60\x41\x60\x02"
+    "\x06\x3b\x52\x7c\xf8\x10\x66\xc2\x12\x00\xd0\x2f\x6c\x79\xe1\x65\x41\x14\x06\x0b\x14\xfe\x83\x73\xa0\xc2\x9a\x39\x1b\x28\xda\xf8\xd8\x30\x02\xc0\x85\x13\x85\xfe"
+    "\x1d\xb9\x22\x20\x48\x98\x81\x1a\x00\x58\x00\x73\x00\x89\xc0\x00\x0c\x00\xf4\x14\x48\x00\x44\x91\x04\x45\x0c\xf4\x04\x1b\x3e\xe4\x80\x45\x01\xda\xdd\x21\x80\x6d"
+    "\x04\xc5\x61\xc1\x18\x03\x71\x07\x83\x1b\x37\xc8\x40\xd0\x1d\x92\x29\x14\x42\x14\x5d\x58\x11\xc5\x40\x6a\x09\x10\x43\x09\x32\x84\xf0\x0f\x06\x6a\xd0\xb0\xc1\x14"
+    "\x6d\x20\x81\xc4\x05\x2b\x88\x41\x11\x5d\xff\x70\x20\x01\x0f\x0a\x1c\x40\x98\x19\x1a\x30\x70\xc3\x05\xe6\xb5\xa0\x00\x1f\x35\x0c\xc1\xc2\x03\x02\x49\x80\x82\x0f"
+    "\x0c\xac\x20\x00\x08\x61\x38\x11\xc5\x10\x1d\x54\x90\x43\x0c\x43\x4c\xc0\x00\x14\x70\xd4\x31\x90\x15\x03\x94\x31\x40\x01\x49\xd4\xb0\xc0\x0e\x4a\x20\xd0\xc4\x20"
+    "\x4a\x14\xa0\x87\x0b\x15\x6c\xc1\x90\x04\x1e\x80\x10\x40\x06\x10\x2e\xe0\xd1\x05\x4c\x10\xe1\x42\x20\x0b\xf5\x00\x87\x63\x02\x51\x54\x87\x06\x15\x30\xd0\x83\x06"
+    "\x0b\x0d\x34\x83\x0d\x8d\x46\x1a\x10\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x28\xd0\x0e\x41\x82\x20"
+    "\xc6\x1c\x24\x08\x01\xc9\x00\x2f\x03\xb6\x24\x01\x71\xd0\x43\x8a\x85\x12\x20\x6c\x38\xb0\x82\xc3\x81\x12\x10\x2a\xfc\x1b\x63\x46\xe0\x11\x37\x04\x53\xb8\x29\x40"
+    "\x64\x01\x8f\x07\x3c\xee\x68\xc8\x42\x07\x4d\x06\x0d\x41\x78\xe4\x21\x22\x41\xe0\x98\x2b\x47\x86\x04\x68\x72\xe2\x48\x07\x35\x3d\x02\x78\x70\x62\x26\xc9\x85\x20"
+    "\x01\x14\xb4\x10\x88\x47\x60\x06\x24\x25\x0e\x00\x00\x80\x65\x49\x01\x1f\x18\x74\x98\x90\xc0\xa4\xc1\x0e\x05\x10\x08\xb2\xc0\x12\xa8\x82\x1a\x28\x56\xd8\x14\x38"
+    "\x71\xf1\x5f\x8e\x03\x0b\x26\x60\x41\x32\x10\x83\x8f\x0c\x75\x0e\x1a\x20\x28\x00\xc0\x11\x0b\x0a\x54\x0c\x1c\x13\xa5\x90\x0e\x82\x15\x0c\x50\x19\x48\x03\xc0\x09"
+    "\x0d\x10\x9e\xd4\x10\x08\xc2\x82\x07\x20\x83\xff\x05\x40\x51\x42\xc0\xc0\x34\x37\x76\x20\xc0\xb2\x43\x60\x82\x20\x12\x92\xf8\x30\x9d\x82\xcf\x05\x00\x07\xa6\xf8"
+    "\xf8\x57\x60\x89\x93\x26\x6c\x26\x08\x14\xc3\xa4\xcb\x90\x16\x2a\x4c\x58\x58\xb2\x15\xc0\x05\x34\x11\x54\x14\x40\x73\xb6\x87\xc0\x18\x0a\x10\x34\x00\xa0\xe7\x5f"
+    "\x07\x22\xcc\x2f\xd3\x2c\x10\xf1\x6f\x81\x0f\x1e\x2e\xc0\x94\xfc\x87\x64\x45\x86\x27\x4b\x3e\x08\xf4\xc0\x00\x80\x82\x81\x6b\x08\x88\xd9\xf2\x46\x60\x18\x1a\x2e"
+    "\xc0\x30\xc0\x12\x41\x0c\xf4\x80\x0f\x5d\x20\x84\x41\x14\x75\xfd\x33\xc0\x0a\x49\xd0\x01\x80\x69\x8b\x1d\x64\xc6\x1d\x70\x4c\x26\x90\x04\x6c\x20\xf0\xc4\x01\x0d"
+    "\x08\x94\xc4\x0e\x19\xd1\x10\x44\x13\x0d\x30\x70\xc0\x16\x04\x05\x32\x97\x00\x07\x7c\xf0\xc6\x0f\x11\x54\xc0\x46\x73\xce\xb1\x11\x84\x41\xff\xfc\x20\x90\x0c\x56"
+    "\x70\x81\xc2\x0a\x29\x14\xd1\x03\x0f\x3d\x34\xf1\xc4\x13\x03\x64\xd1\x40\x06\x0f\x9c\xe0\x41\x14\x02\x7d\x80\x04\x0f\x3c\xc4\xa0\xc1\x17\x79\xa4\x71\xc2\x16\x5c"
+    "\x4c\x80\x00\x0c\x27\xe8\xe1\x82\x00\x21\x10\x14\x43\x82\xff\x44\x60\x50\x05\x25\x64\xc5\x81\x02\x4c\xa0\x80\x84\x1a\x0b\xa5\x60\xc1\x41\x26\xc0\xa1\x04\x0a\x3b"
+    "\x74\x10\x04\x21\x0b\x0d\x94\x01\x79\x85\x9a\x50\xe8\x3f\x01\x01\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09"
+    "\x1c\x28\xb0\x49\x0a\x82\x03\x49\xbc\x41\x38\xb0\x00\x84\x87\x0e\x9f\x6c\xc9\x80\x90\x8a\x01\x84\x6b\x3a\x14\x50\x30\x47\xc6\x0e\x28\x07\x88\xa8\x88\xf1\x8f\x00"
+    "\x08\x81\x1a\xd6\x0c\x34\x20\xe6\x83\x1b\x16\x19\x6c\xa0\xc9\x10\xa1\x81\x20\x17\x22\x78\xa0\x11\x38\x40\x89\x40\x1d\x27\xff\x0d\x41\x52\xa0\x8d\x04\x19\x03\x1e"
+    "\x24\xa9\x90\x21\xca\x02\x2f\x0f\x2a\x40\x28\xf0\x4f\x8a\x40\x2a\x41\x0e\x2c\x29\x71\x60\xc4\x88\x0d\x4a\x78\xfc\xa0\x32\x41\x81\x84\x26\x25\x20\x0c\x34\x33\x61"
+    "\x81\x93\x35\x5b\x76\x28\x99\x32\x25\x0d\x0c\x1d\xff\xee\x2c\x29\xb0\x06\x8b\x5a\x81\x26\x02\xa4\xf8\x81\xd0\x44\x83\x81\x68\x14\x14\xb0\xe0\x70\x20\x1e\x11\x2f"
+    "\x84\x04\xfd\xa7\xe5\xc1\x41\x81\x4a\x4a\x48\x98\x90\xa6\x85\x1a\x81\x0d\xaa\x34\x08\xe0\x44\xa0\x07\x2b\x25\x2a\x58\x10\x98\x63\x89\x0b\x34\x05\xa6\x1c\x44\x80"
+    "\x62\xc0\x9d\x05\x3b\x32\x04\xd8\x71\x01\xc0\x01\x2b\x87\x05\x01\x18\x90\xe4\x46\x10\x81\x02\x88\x4c\x40\xc3\x86\x03\x88\x2d\x00\xa2\x03\xb8\x60\x01\x84\x84\x15"
+    "\x01\x9a\x28\x80\x23\xd0\x45\x0b\x0c\x48\x00\xe3\xec\xf8\xd7\xa4\xc0\x08\x00\x4b\xb2\x3c\xf0\x40\x43\x49\x00\x42\x48\x78\xfc\x0b\xb3\x82\x81\x05\x14\x00\x7c\x08"
+    "\x44\x90\x66\x44\x0b\xfd\xff\xb0\xc0\x83\x12\x2b\xac\xf6\x4f\x0c\x05\x04\x31\x41\x01\x1b\xb8\x31\x90\x13\x0d\x2c\x30\x10\x08\x20\x3c\x20\x82\x03\x0d\xc9\xd0\x03"
+    "\x11\x0a\xd8\x30\x90\x07\x75\x54\x94\x41\x19\x04\xc9\x40\x44\x19\x2b\x1c\x60\xc7\x3f\x66\x08\xc0\x00\x07\x67\xb9\x61\x83\x01\x4e\x28\x81\xc6\x64\x12\xb4\xd1\x00"
+    "\x12\x44\x0c\x01\x02\x01\x08\x0c\xd0\xdb\x12\x0a\x6c\x70\xc3\x06\x1d\x50\x20\x10\x09\xff\xd0\x00\x85\x00\x16\x30\xa0\x44\x0a\x43\xb0\x10\xc0\x04\x56\x4c\x55\x40"
+    "\x7d\x14\xfd\x03\x04\x61\xe4\x7d\xf0\x8f\x08\x13\x24\x41\x40\x0b\x3b\xc0\x90\x42\x0f\x2c\xf4\xb0\xc6\x04\x4d\x64\x31\x48\x97\xff\xac\x31\x08\x60\x21\x0a\xe0\x02"
+    "\x11\x6c\x40\xf1\x84\x15\x0a\x40\x20\x41\x0c\x19\x10\x40\x90\x4a\x08\x21\xa0\x44\x0b\x2d\x48\xe0\x68\x20\x34\x30\x24\x10\x08\x4c\x32\x84\x81\x81\x0c\x05\x04\x00"
+    "\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x1c\x28\x50\x42\x13\x3b\x04\x09\x92\x48\x68\x26\x80\x92\x02\x44\x56"
+    "\xb0\x61\x73\x23\x08\x8f\x31\x0a\x7f\x24\xfc\xe2\x43\x06\x0a\x09\x27\x04\xc4\x40\xb2\x01\x42\x85\x84\x45\xbe\x98\xf9\xe7\x80\x42\x84\x7f\x29\xd6\xf8\xf0\xa1\xe1"
+    "\x4a\x82\x24\x27\x64\x74\x49\x90\x41\x84\x40\x1f\x3c\x04\x92\x11\x98\x40\xd0\x1f\x05\x2d\x92\x82\xc9\x60\xe1\x44\x04\x04\x03\x60\xba\x50\x42\x70\xcc\x93\x0b\x32"
+    "\x18\x14\x00\x00\x60\x04\x87\x00\x36\xde\x24\xb8\x90\xe5\x4e\x15\x14\x03\x75\x3c\x08\x10\x67\x46\x86\x7f\x08\x18\x10\x21\xb2\x00\xc3\x3f\x13\x32\xe6\x88\x41\xb2"
+    "\x62\x20\x89\x33\x63\x28\x24\x34\x31\x84\x85\xc0\x28\x74\x56\xb0\xd8\xa1\x60\xa0\x0d\x25\x15\x42\xf8\x14\xc8\xc3\x82\x01\x82\x82\x88\x34\x51\xc2\x46\xc2\xbf\x24"
+    "\x03\xd2\x70\x71\xe8\xe4\x5f\x00\x19\x17\x3e\xbc\xfd\x67\x61\x49\x0b\x18\x47\x0e\xa8\xf9\xe7\x43\x41\x8e\x24\x44\x0a\x8c\xc9\x93\xe6\x06\x80\x0b\x9e\xff\x1d\x01"
+    "\x00\xe1\x01\x04\x26\x29\xfe\xc9\x28\xfe\x61\x84\x0b\x0a\x1a\xb8\x72\xc5\xd2\x03\x8f\x04\x00\x15\x9c\xb0\x09\xf2\x2f\x0c\x00\x2f\x7e\x56\xdb\x00\x68\xf2\x8f\x47"
+    "\x81\x11\x00\x96\x30\xe0\x91\x81\x03\x87\x07\x0b\x56\xf4\xf8\x17\xa3\x84\x80\xda\x17\x92\x08\x74\xe2\x02\x00\x8a\x00\xff\x08\x90\x05\x0f\x5b\x48\xb0\xc0\x5b\x81"
+    "\x6c\xe0\x46\x0e\x73\xa8\x40\x90\x06\x5a\x10\x24\x42\x06\x3b\x54\x70\x99\x40\x28\x84\x54\xc2\x00\x2f\xfd\xe3\x86\x1f\x04\x24\x44\x85\x1d\x26\x10\xe4\xc2\x13\x3e"
+    "\x6c\xa8\x03\x4c\x34\xa0\xd0\xc6\x09\x5c\xfc\x53\x84\x09\x85\xf4\x80\xd0\x40\x5a\xf9\x51\x40\x0b\x20\x10\x90\x81\x76\x5c\x1d\x40\xc7\x00\x74\x94\xd0\xc5\x64\x3f"
+    "\x49\x60\x40\x06\x4f\x0c\x11\x42\x05\x79\x78\x10\x84\x02\x0a\xac\x50\xc2\x1c\x3b\x94\xc8\x92\x40\x5c\xf8\x20\x50\x0a\x65\x60\x70\x02\x03\x60\x24\x61\x43\x03\x6e"
+    "\x68\x01\xc3\x18\x09\xfc\x93\x00\x01\x82\xb9\x95\xd0\x3f\x6a\x54\xa9\x02\x18\x4a\x2c\xa0\x95\x04\x2c\x44\x31\x58\x42\x0f\xc4\x00\x01\x00\x1b\xb4\x30\x05\x12\x74"
+    "\xf8\x10\xc0\x4a\x04\x09\x36\xe7\x5d\x16\xcc\xf6\x68\x40\x00\x21\xf9\x04\x09\x0a\x00\xff\x00\x2c\x00\x00\x00\x00\x17\x00\x17\x00\x00\x08\xfe\x00\xff\x09\x14\xb8"
+    "\x00\x82\x41\x09\x4d\x42\x0c\x5c\xc8\x50\xe0\x18\x38\x34\x88\xac\x60\x73\x63\xc9\x85\x23\x29\x18\x92\x20\x31\xd0\x41\x9d\x24\x1d\x7c\xe4\x68\xe0\x61\x88\x8f\x29"
+    "\x4c\xda\xf0\x58\xa8\xa3\xd0\x40\x32\x64\x04\x26\x59\xe0\x65\x87\x80\x35\x67\x26\xc8\x80\x02\x03\x43\x1d\x81\x0f\xc6\x30\x8c\xf2\xa1\xc4\x8d\x03\x07\x2e\x20\x19"
+    "\x12\xe0\x48\x9e\x17\x79\x04\x2a\x11\xb3\xf0\x4c\x0f\x01\x1a\xe0\x74\x80\x30\x02\xc0\x0a\x92\x19\x8a\xb8\x61\x60\x43\x8b\x84\x05\x03\x31\x64\x10\xf1\x43\x20\x0f"
+    "\x31\x53\x14\xc8\x40\x43\x81\x80\x8f\x0d\x4a\x2a\x6c\x40\x21\x30\x42\x06\x0b\x21\x28\x0c\x6d\x10\x40\xe0\x84\x03\x41\x1a\x30\x81\x20\xd0\x07\x07\x25\x36\x78\x0c"
+    "\x11\x68\x87\x45\x82\x85\x02\x2e\xec\x70\x82\x85\x31\x97\x39\x69\xca\xc4\x90\xb0\x72\x8d\x84\x25\x74\xce\x08\x0c\xe0\xe2\x80\x1b\x18\x58\x24\xfc\xa3\xa3\x00\x8d"
+    "\x13\x26\x44\xcc\x70\x99\x82\x05\xc0\x92\x27\x02\x11\x2c\xb9\xc1\x43\xc9\x12\x35\x29\x46\x48\x48\xc1\x35\xc8\x3f\x37\x00\xa2\x03\x18\x31\xe1\x1f\x83\x11\x48\x1e"
+    "\x28\x60\x13\xa2\x09\x00\x1f\x13\x6e\xe3\xdc\x28\x6c\xa7\x40\xf4\x25\x05\x02\x88\x40\xb1\xc2\x83\x8f\x03\x68\x55\xdc\xf0\xa0\xe6\x86\x84\x35\x02\x3d\xac\x00\x60"
+    "\x25\xe3\x20\x24\x0d\xf0\x80\xc4\x0a\x19\xfc\x23\xc1\x0a\x5b\x30\xb0\x44\x03\x0b\x6d\x51\xc1\x40\x30\x78\xc0\x43\x10\x32\xf4\x20\x10\x21\x05\x68\x40\xc7\x01\x68"
+    "\x08\x04\x87\x18\x97\x2d\x04\x42\x06\x08\x44\x61\x86\x40\x50\x70\x20\xc0\x07\xed\xd5\x35\x41\x1b\x2d\x48\x80\x06\x7e\xff\x00\x91\x40\x14\x18\x0c\xd4\xc0\x0e\x3e"
+    "\xf0\x30\x00\x0b\x45\xdc\xe1\xc1\x09\x17\x00\x60\x5f\x03\x08\x68\x20\x40\x00\x3f\x0d\x04\x87\x12\xff\xdc\x61\xc1\x5f\x4a\x70\x01\x47\x0b\xc3\x5d\x70\x40\x0b\x15"
+    "\xd4\xc0\x50\x0d\x2b\xfd\x23\x82\x09\x4e\x40\x01\x85\x05\x51\x68\xb0\x40\x10\x0c\xe4\x60\x80\x40\x52\x70\x24\x90\x42\x0d\xb2\xc1\x44\x01\x2c\xc0\x80\xc0\x04\x0d"
+    "\x4c\xd0\x41\x12\x09\x08\x26\x10\x05\x72\x0e\xd4\x83\x79\xc3\x29\x80\x02\x0a\x3b\xc0\x21\x54\x43\x90\x46\x70\xc5\x07\x2a\x04\x22\x01\x83\x0b\x05\x04\x00\x3b\x00";
+
+QMovie* toBackgroundLabel::Animation = 0;
+
+toBackgroundLabel::toBackgroundLabel(QWidget *parent) : QLabel(parent)
+{
+        QByteArray arr;
+        arr.assign(data, sizeof(data));
+        Animation = new QMovie(arr);
+        setMovie(*Animation);
+        Animation->unpause();
+}
+
+void toBackgroundLabel::unpause()
+{
+	Animation->unpause();
+}
+
+void toBackgroundLabel::pause()
+{
+	Animation->pause();
+}
+
+void toBackgroundLabel::setTip(QString tip)
+{
+	QToolTip::add(this, tip);	
+}
+
+void toBackgroundLabel::setSpeed(int Running)
+{
+	Animation->setSpeed(std::min(Running, 1)*100);	
+}
+
+void toBackgroundLabel::mouseReleaseEvent(QMouseEvent *e)
+    {
+        try
+        {
+            if (e->button() == LeftButton)
+            {
+                QString str = "Currently running SQL:\n\n";
+                std::list<QString> conns = toMainWidget()->connections();
+                for (std::list<QString>::iterator i = conns.begin();i != conns.end();i++)
+                {
+                    toConnection &conn = toMainWidget()->connection(*i);
+                    std::list<QString> running = conn.running();
+                    if (running.begin() != running.end())
+                    {
+                        str += "On connection " + conn.description(false) + ":\n\n";
+                    }
+                    int num = 1;
+                    for (std::list<QString>::iterator j = running.begin();j != running.end();j++)
+                    {
+                        str += QString::number(num) + ". " + (*j) + "\n\n";
+                        num++;
+                    }
+                }
+                toMainWidget()->displayMessage(str);
+#if QT_VERSION >= 0x030000
+
+                e->accept();
+#endif
+
+            }
+            else
+                QLabel::mouseReleaseEvent(e);
+        }
+        TOCATCH
+    }

Added: kde-extras/tora/branches/upstream/current/src/tobackgroundlabel.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobackgroundlabel.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobackgroundlabel.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,29 @@
+//
+// C++ Interface: toBackgroundLabel
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+#ifndef TOBACKGROUNDLABEL_H
+#define TOBACKGROUNDLABEL_H
+
+#include <qmovie.h>
+#include <qwidget.h>
+#include <qlabel.h>
+
+class toBackgroundLabel : public QLabel{
+public:
+        //static toBackgroundLabel createToBackgroundLabel();
+	virtual void mouseReleaseEvent(QMouseEvent* e);
+	virtual void unpause();
+        virtual void pause();
+	virtual void setTip(QString tip);
+        virtual void setSpeed(int Running);        
+	toBackgroundLabel(QWidget *parent);
+private:
+	static QMovie* Animation;    
+        static const char data[];	
+    
+};
+
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tobackup.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobackup.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobackup.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,411 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tobackup.h"
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "tomain.h"
+#include "toresultlong.h"
+#include "tosql.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qlabel.h>
+#include <qmenubar.h>
+#include <qpopupmenu.h>
+#include <qtabwidget.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qworkspace.h>
+
+#include <loki/Singleton.h>
+
+#include "tobackup.moc"
+
+#include "icons/refresh.xpm"
+
+
+//static toBackupTool BackupTool;
+
+static toSQL SQLLogSwitches("toBackup:LogSwitches",
+                            "SELECT trunc(first_time)\"Date\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               0,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-00\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               1,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-01\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               2,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-02\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               3,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-03\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               4,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-04\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               5,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-05\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               6,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-06\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               7,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-07\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               8,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-08\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               9,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-09\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               10,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-10\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               11,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-11\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               12,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-12\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               13,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-13\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               14,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-14\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               15,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-15\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               16,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-16\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               17,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-17\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               18,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-18\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               19,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-19\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               20,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-20\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               21,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-21\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               22,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-22\",\n"
+                            "       nvl(to_char(SUM (decode(to_number(to_char(first_time,\n"
+                            "                                                 'HH24')),\n"
+                            "                               23,\n"
+                            "                               1))),\n"
+                            "           ' ')\"-23\"\n"
+                            "  FROM v$log_history\n"
+                            " GROUP BY trunc(first_time)\n"
+                            " ORDER BY trunc(first_time)DESC",
+                            "Log switch history");
+
+static toSQL SQLLogHistory("toBackup:LogHistory",
+                           "SELECT\n"
+                           "   THREAD# \"Thread#\",\n"
+                           "   SEQUENCE# \"Sequence#\",\n"
+                           "   FIRST_TIME \"Time of first entry\",\n"
+                           "   FIRST_CHANGE# \"Lowest  SCN\",\n"
+                           "   NEXT_CHANGE# \"Highest SCN\",\n"
+                           "   RECID \"Controlfile RecID\",\n"
+                           "   STAMP \"Controlfile stamp\"\n"
+                           "FROM V$LOG_HISTORY\n"
+                           "ORDER BY SEQUENCE# DESC",
+                           "Redo Log History",
+                           "0800");
+
+static toSQL SQLLogHistory7("toBackup:LogHistory",
+                            "SELECT \n"
+                            "   THREAD# \"Thread#\",\n"
+                            "   SEQUENCE# \"Sequence#\",\n"
+                            "   TIME \"Time of first entry\",\n"
+                            "   LOW_CHANGE# \"Lowest  SCN\",\n"
+                            "   (HIGH_CHANGE#-1) \"Highest SCN\",\n"
+                            "   ARCHIVE_NAME \"Archived log name\"\n"
+                            "FROM V$LOG_HISTORY\n"
+                            "ORDER BY SEQUENCE# DESC",
+                            "",
+                            "0703");
+
+static toSQL SQLOnlineBackup("toBackup:OnlineBackup",
+                             "SELECT MIN(VBD.CHECKPOINT_CHANGE#)-MAX(VBD.CHECKPOINT_CHANGE#)\n"
+                             "  FROM V$BACKUP_DATAFILE VBD, V$DATAFILE VDF,\n"
+                             "       (SELECT CREATION_CHANGE#,\n"
+                             "               MAX(COMPLETION_TIME) COMPLETION_TIME\n"
+                             "          FROM V$BACKUP_DATAFILE \n"
+                             "         WHERE CREATION_CHANGE# IN (SELECT CREATION_CHANGE# FROM V$DATAFILE)\n"
+                             "         GROUP BY CREATION_CHANGE#) QUERY1\n"
+                             " WHERE VBD.CREATION_CHANGE# = VDF.CREATION_CHANGE#\n"
+                             "   AND VBD.CREATION_CHANGE# = QUERY1.CREATION_CHANGE#\n"
+                             "   AND VBD.COMPLETION_TIME = QUERY1.COMPLETION_TIME",
+                             "Check if online backup or not. Should return 0 if cold backup",
+                             "0800");
+
+static toSQL SQLOnlineBackup7("toBackup:OnlineBackup",
+                              "SELECT 0 FROM DUAL",
+                              "",
+                              "0703");
+
+static toSQL SQLLastBackup("toBackup:LastBackup",
+                           "SELECT VDF.NAME \"Filename\",\n"
+                           "       VBD.COMPLETION_TIME \"Completion time\",\n"
+                           "       CASE WHEN VBD.COMPLETION_TIME > VDF.unrecoverable_time THEN 'Unrecoverable change' ELSE 'Backed up' END \"Type\",\n"
+                           "       VBD.DATAFILE_BLOCKS*VBD.BLOCK_SIZE \"File size\",\n"
+                           "       VBD.BLOCKS*VBD.BLOCK_SIZE \"Bytes written\",\n"
+                           "       VBD.INCREMENTAL_LEVEL \"Level\",\n"
+                           "       VBD.CHECKPOINT_CHANGE# \"Ckpt change#\",\n"
+                           "       VBD.CHECKPOINT_TIME \"Checkpoint time\",\n"
+                           "       VBD.MARKED_CORRUPT \"Mrkd crpt\",\n"
+                           "       VBD.MEDIA_CORRUPT \"Media crpt\",\n"
+                           "       VBD.LOGICALLY_CORRUPT \"Logically corrupt\"\n"
+                           "  FROM V$BACKUP_DATAFILE VBD, V$DATAFILE VDF,\n"
+                           "       (SELECT CREATION_CHANGE#,\n"
+                           "               MAX(COMPLETION_TIME) COMPLETION_TIME\n"
+                           "          FROM V$BACKUP_DATAFILE\n"
+                           "         WHERE CREATION_CHANGE# IN (SELECT CREATION_CHANGE# FROM V$DATAFILE)\n"
+                           "         GROUP BY CREATION_CHANGE#) QUERY1\n"
+                           " WHERE VBD.CREATION_CHANGE# = VDF.CREATION_CHANGE#\n"
+                           "   AND VBD.CREATION_CHANGE# = QUERY1.CREATION_CHANGE#\n"
+                           "   AND VBD.COMPLETION_TIME = QUERY1.COMPLETION_TIME\n"
+                           "UNION\n"
+                           "SELECT NAME,\n"
+                           "       CREATION_TIME,\n"
+                           "       'Added since last backup',\n"
+                           "       Bytes,\n"
+                           "       0,\n"
+                           "       0,\n"
+                           "       TO_NUMBER(NULL),\n"
+                           "       TO_DATE(NULL),\n"
+                           "       0,\n"
+                           "       0,\n"
+                           "       0\n"
+                           "  FROM V$DATAFILE\n"
+                           " WHERE CREATION_CHANGE# NOT IN (SELECT DISTINCT CREATION_CHANGE# FROM V$BACKUP_DATAFILE)\n"
+                           " ORDER BY 2 DESC, 5 DESC, 6 DESC",
+                           "Get datafiles in most recent backup",
+                           "0800");
+
+static toSQL SQLLastBackup7("toBackup:LastBackup",
+                            "SELECT 'Backup information not available in Oracle 7' \"Unsupported\" FROM DUAL",
+                            "",
+                            "0703");
+
+static toSQL SQLCurrentBackup("toBackup:CurrentBackup",
+                              "SELECT SID \"Sid\",\n"
+                              "       SERIAL# \"Serial#\",\n"
+                              "       CONTEXT \"Context\",\n"
+                              "       SOFAR \"So far\",\n"
+                              "       TOTALWORK \"Total\",\n"
+                              "       ROUND(SOFAR/TOTALWORK*100,2) \"% Complete\"\n"
+                              "  FROM V$SESSION_LONGOPS\n"
+                              " WHERE OPNAME LIKE 'RMAN%'\n"
+                              "   AND OPNAME NOT LIKE '%aggregate%'\n"
+                              "   AND TOTALWORK != 0\n"
+                              "   AND SOFAR <> TOTALWORK",
+                              "Display current RMAN progress",
+                              "0801");
+
+static toSQL SQLCurrentBackup8("toBackup:CurrentBackup",
+                               "SELECT SID \"Sid\",\n"
+                               "       SERIAL# \"Serial#\",\n"
+                               "       CONTEXT \"Context\",\n"
+                               "       SOFAR \"So far\",\n"
+                               "       TOTALWORK \"Total\",\n"
+                               "       ROUND(SOFAR/TOTALWORK*100,2)   \"% Complete\"\n"
+                               "  FROM GV$SESSION_LONGOPS\n"
+                               " WHERE COMPNAM = 'dbms_backup_restore'\n"
+                               "   AND ROUND(SOFAR/TOTALWORK*100,2) < 100\n"
+                               " ORDER BY 1 DESC",
+                               "",
+                               "0800");
+
+static toSQL SQLCurrentBackup7("toBackup:CurrentBackup",
+                               "SELECT * FROM DUAL WHERE NULL = NULL",
+                               "",
+                               "0703");
+
+toBackup::toBackup(toTool* tool, QWidget *main, toConnection &connection)
+        : toToolWidget(*tool, "backup.html", main, connection) , tool_(tool)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Backup Manager"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Update"),
+                    tr("Update"),
+                    this, SLOT(refresh(void)),
+                    toolbar);
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    Tabs = new QTabWidget(this);
+
+    QVBox *box = new QVBox(Tabs, "history");
+    new QLabel(tr("Logswitches per day and hour"), box);
+    LogSwitches = new toResultLong(true, false, toQuery::Background, box);
+    LogSwitches->setSQL(SQLLogSwitches);
+    Tabs->addTab(box, tr("Redo Switches"));
+
+    LogHistory = new toResultLong(true, false, toQuery::Background, Tabs);
+    LogHistory->setSQL(SQLLogHistory);
+    Tabs->addTab(LogHistory, tr("Archived Logs"));
+
+    box = new QVBox(Tabs);
+    LastLabel = new QLabel(box);
+    LastBackup = new toResultLong(true, false, toQuery::Background, box);
+    LastBackup->setSQL(SQLLastBackup);
+    Tabs->addTab(box, tr("Last Backup"));
+
+    CurrentBackup = new toResultLong(true, false, toQuery::Background, Tabs);
+    CurrentBackup->setSQL(SQLCurrentBackup);
+    Tabs->addTab(CurrentBackup, tr("Backup Progress"));
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    refresh();
+
+    setFocusProxy(Tabs);
+}
+
+void toBackup::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)), toKeySequence(tr("F5", "Backup|Refresh")));
+            toMainWidget()->menuBar()->insertItem(tr("&Backup Manager"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+toBackup::~toBackup()
+{
+    try
+    {
+        tool_->closeWindow(connection());
+    }
+    TOCATCH
+}
+
+void toBackup::refresh()
+{
+    LogSwitches->refresh();
+    LogHistory->refresh();
+    int val = 0;
+    try
+    {
+        toQuery query(connection(), SQLOnlineBackup);
+        val = query.readValue().toInt();
+    }
+    catch (...)
+    {}
+    if (val == 0)
+        LastLabel->setText(tr("This appears to be a cold backup database"));
+    else
+        LastLabel->setText(tr("This appears to be a hot backup database"));
+    LastBackup->refresh();
+    CurrentBackup->refresh();
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tobackup.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobackup.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobackup.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,69 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOBACKUP_H
+#define TOBACKUP_H
+
+#include "config.h"
+#include "totool.h"
+
+class QLabel;
+class QPopupMenu;
+class QTabWidget;
+class toResultLong;
+
+class toBackup : public toToolWidget
+{
+    Q_OBJECT
+
+    QTabWidget *Tabs;
+    toResultLong *LogSwitches;
+    toResultLong *LogHistory;
+    QLabel *LastLabel;
+    toResultLong *LastBackup;
+    toResultLong *CurrentBackup;
+    QPopupMenu *ToolMenu;
+    toTool* tool_;
+public:
+    toBackup(toTool* tool, QWidget *parent, toConnection &connection);
+    virtual ~toBackup();
+public slots:
+    void refresh(void);
+    void windowActivated(QWidget *widget);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tobackuptool.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobackuptool.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobackuptool.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,42 @@
+#include "tobackuptool.h"
+
+#include "icons/tobackup.xpm"
+#include "tobackup.h"
+
+const char** toBackupTool::pictureXPM(void)
+    {
+        return const_cast<const char**>(tobackup_xpm);
+    }
+
+toBackupTool::toBackupTool() : toTool(240, "Backup Manager")
+{ }
+    
+const char* toBackupTool::menuItem()
+    {
+        return "Backup Manager";
+    }
+    
+QWidget* toBackupTool::toolWindow(QWidget *parent, toConnection &connection)
+    {
+        std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection);
+        if (i != Windows.end())
+        {
+            (*i).second->setFocus();
+            return NULL;
+        }
+        else
+        {
+            QWidget *window = new toBackup(this, parent, connection);
+            Windows[&connection] = window;
+            return window;
+        }
+    }
+
+    void toBackupTool::closeWindow(toConnection &connection)
+    {
+        std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection);
+        if (i != Windows.end())
+            Windows.erase(i);
+    }
+
+

Added: kde-extras/tora/branches/upstream/current/src/tobackuptool.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobackuptool.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobackuptool.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,35 @@
+#ifndef TOBACKUPTOOL_H
+#define TOBACKUPTOOL_H
+
+#include <map>
+
+#include "totool.h"
+
+class QWidget;
+class toConnection;
+
+//
+// C++ Interface: tobackuptool
+//
+// Description: 
+//
+//
+// Author: Thomas Porschberg, core <pberg at porschberg>, (C) 2006
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+
+class toBackupTool : public toTool
+{
+protected:
+    std::map<toConnection *, QWidget *> Windows;
+    virtual const char **pictureXPM(void);
+public:
+    toBackupTool();
+    virtual const char *menuItem();
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection);
+    void closeWindow(toConnection &connection);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tobarchart.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobarchart.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobarchart.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,281 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include <qpainter.h>
+#include <qworkspace.h>
+
+#include "tobarchart.h"
+#include "tomain.h"
+#include "utils.h"
+
+#include "tobarchart.moc"
+
+toBarChart::toBarChart(QWidget *parent, const char *name, WFlags f)
+        : toLineChart(parent, name, f)
+{
+    setMinValue(0);
+}
+
+#define FONT_ALIGN AlignLeft|AlignTop|ExpandTabs
+
+void toBarChart::paintChart(QPainter *p, QRect &rect)
+{
+    QFontMetrics fm = p->fontMetrics();
+
+    if (!Zooming)
+    {
+        if (MinAuto)
+        {
+            bool first = true;
+            std::list<std::list<double> >::reverse_iterator i = Values.rbegin();
+            if (i != Values.rend())
+            {
+                for (std::list<double>::iterator j = (*i).begin();j != (*i).end();j++)
+                {
+                    if (first)
+                    {
+                        first = false;
+                        zMinValue = *j;
+                    }
+                    else if (zMinValue > *j)
+                        zMinValue = *j;
+                }
+            }
+        }
+        if (MaxAuto)
+        {
+            bool first = true;
+            std::list<double> total;
+            std::list<bool>::iterator e = Enabled.begin();
+            {
+                for (std::list<std::list<double> >::iterator i = Values.begin();i != Values.end();i++)
+                {
+                    std::list<double>::iterator k = total.begin();
+                    if (e == Enabled.end() || *e)
+                    {
+                        for (std::list<double>::iterator j = (*i).begin();j != (*i).end();j++)
+                        {
+                            if (k == total.end())
+                            {
+                                total.insert(total.end(), *j);
+                                k = total.end();
+                            }
+                            else
+                            {
+                                *k += *j;
+                                k++;
+                            }
+                        }
+                    }
+                    if (e != Enabled.end())
+                        e++;
+                }
+            }
+            for (std::list<double>::iterator i = total.begin();i != total.end();i++)
+            {
+                if (first)
+                {
+                    first = false;
+                    zMaxValue = *i;
+                }
+                else if (zMaxValue < *i)
+                    zMaxValue = *i;
+            }
+        }
+        if (!MinAuto)
+            zMinValue = MinValue;
+        else
+        {
+            zMinValue = round(zMinValue, false);
+            MinValue = zMinValue;
+        }
+        if (!MaxAuto)
+            zMaxValue = MaxValue;
+        else
+        {
+            zMaxValue = round(zMaxValue, true);
+            MaxValue = zMaxValue;
+        }
+    }
+
+    paintTitle(p, rect);
+    paintLegend(p, rect);
+    paintAxis(p, rect);
+
+    std::list<QPointArray> Points;
+    int cp = 0;
+    int samples = countSamples();
+    int zeroy = int(rect.height() - 2 - ( -zMinValue / (zMaxValue - zMinValue) * (rect.height() - 4)));
+    if (samples > 1)
+    {
+        const QWMatrix &mtx = p->worldMatrix();
+        p->setClipRect(int(mtx.dx() + 2), int(mtx.dy() + 2), rect.width() - 3, rect.height() - 3);
+        if (Zooming)
+            p->drawText(2, 2, rect.width() - 4, rect.height() - 4,
+                        AlignLeft | AlignTop, tr("Zoom"));
+        std::list<bool>::reverse_iterator e = Enabled.rbegin();
+        for (std::list<std::list<double> >::reverse_iterator i = Values.rbegin();i != Values.rend();i++)
+        {
+            if (e == Enabled.rend() || *e)
+            {
+                std::list<double> &val = *i;
+                int count = 0;
+                int skip = SkipSamples;
+                QPointArray a(samples + 10);
+                int x = rect.width() - 2;
+                for (std::list<double>::reverse_iterator j = val.rbegin();j != val.rend() && x >=
+                        2;
+                        j++)
+                {
+                    if (skip > 0)
+                        skip--;
+                    else
+                    {
+                        int val = int(rect.height() - 2 - ((*j - zMinValue) / (zMaxValue - zMinValue) * (rect.height() - 4)));
+                        x = rect.width() - 2 - count * (rect.width() - 4) / (samples - 1);
+                        a.setPoint(count, x, val);
+                        count++;
+                        if (count >= samples)
+                            break;
+                    }
+                }
+                a.resize(count*2);
+                Points.insert(Points.end(), a);
+            }
+            cp++;
+            if (e != Enabled.rend())
+                e++;
+        }
+    }
+
+    std::map<int, int> Bottom;
+    std::list<bool>::reverse_iterator e = Enabled.rbegin();
+    for (std::list<QPointArray>::iterator i = Points.begin();i != Points.end();)
+    {
+        while (e != Enabled.rend() && !*e)
+        {
+            cp--;
+            e++;
+        }
+        if (e != Enabled.rend())
+            e++;
+        cp--;
+
+        QPointArray a = *i;
+        int lx = 0;
+        int lb = 0;
+        for (unsigned int j = 0;j < a.size() / 2;j++)
+        {
+            int x, y;
+            a.point(j, &x, &y);
+            if (Bottom.find(x) == Bottom.end())
+                Bottom[x] = 0;
+            if (lx != x)
+                lb = Bottom[x];
+            a.setPoint(a.size() - 1 - j, x, zeroy - lb);
+            y -= lb;
+            a.setPoint(j, x, y);
+            Bottom[x] = zeroy - y;
+            lx = x;
+        }
+
+        p->save();
+        QBrush brush(toChartBrush(cp));
+        p->setBrush(brush.color());
+        p->drawPolygon(a);
+        if (brush.style() != QBrush::SolidPattern)
+        {
+            p->setBrush(QBrush(Qt::white, brush.style()));
+            p->drawPolygon(a);
+        }
+        p->restore();
+        i++;
+    }
+}
+
+toBarChart::toBarChart (toBarChart *chart, QWidget *parent, const char *name, WFlags f)
+        : toLineChart(chart, parent, name, f)
+{}
+
+toLineChart *toBarChart::openCopy(QWidget *parent)
+{
+    toBarChart *newWin = new toBarChart(this,
+                                        parent ? parent : toMainWidget()->workspace(),
+                                        NULL, parent ? 0 : WDestructiveClose);
+    if (!parent)
+    {
+        newWin->show();
+        newWin->raise();
+        newWin->setFocus();
+
+        toMainWidget()->windowsMenu();
+
+#if QT_VERSION < 0x030100
+        // This is a really ugly workaround for a Qt layout bug
+        QWidget *tmp = NULL;
+        QWidget *tmp2 = NULL;
+
+#if QT_VERSION < 0x030200
+
+        for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList().count();i++)
+        {
+            QWidget *widget = toMainWidget()->workspace()->windowList().at(i);
+#else
+
+        for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).count();i++)
+        {
+            QWidget *widget = toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).at(i);
+#endif
+
+            if (newWin != widget)
+                tmp2 = widget;
+            else
+                tmp = newWin;
+            if (tmp2 && tmp)
+                break;
+        }
+        if (tmp2 && tmp)
+        {
+            tmp2->setFocus();
+            tmp->setFocus();
+        }
+#endif
+
+    }
+    return newWin;
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tobarchart.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobarchart.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobarchart.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOBARCHART_H
+#define TOBARCHART_H
+
+#include "config.h"
+#include "tolinechart.h"
+
+/** A widget that displays a barchart. Each line is added onto the next one.
+ */
+
+class toBarChart : public toLineChart
+{
+    Q_OBJECT
+
+protected:
+    virtual void paintChart(QPainter *p, QRect &rect);
+public:
+    /** Create a new barchart.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toBarChart(QWidget *parent = NULL, const char *name = NULL, WFlags f = 0);
+
+    /** Create a new barchart by copying all the data from another barchart.
+     * @param chart Chart to copy data from.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toBarChart(toBarChart *chart, QWidget *parent = NULL, const char *name = NULL, WFlags f = 0);
+
+    /** Open chart in new window.
+     */
+    virtual toLineChart *openCopy(QWidget *parent);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tobrowser.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowser.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowser.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,3064 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tobrowser.h"
+#include "tobrowsertable.h"
+#include "tobrowserconstraint.h"
+#include "tobrowserfilterui.h"
+#include "tobrowserindex.h"
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "toextract.h"
+#include "tohelp.h"
+#include "tomain.h"
+#include "toresultcols.h"
+#include "toresultcombo.h"
+#include "toresultconstraint.h"
+#include "toresultcontent.h"
+#include "toresultdepend.h"
+#include "toresultextract.h"
+#include "toresultfield.h"
+#include "toresultindexes.h"
+#include "toresultitem.h"
+#include "toresultlong.h"
+#include "toresultreferences.h"
+#include "toresultstorage.h"
+#include "toresultview.h"
+#include "tosql.h"
+#include "totabwidget.h"
+#include "totool.h"
+
+#ifdef TOEXTENDED_MYSQL
+#  include "tomysqluser.h"
+#endif
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qbuttongroup.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qheader.h>
+#include <qinputdialog.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qpopupmenu.h>
+#include <qprogressdialog.h>
+#include <qregexp.h>
+#include <qsplitter.h>
+#include <qtabwidget.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qvaluelist.h>
+#include <qworkspace.h>
+
+#include "tobrowser.moc"
+#include "tobrowserfilterui.moc"
+
+#include "icons/addindex.xpm"
+#include "icons/addtable.xpm"
+#include "icons/filter.xpm"
+#include "icons/function.xpm"
+#include "icons/index.xpm"
+#include "icons/modconstraint.xpm"
+#include "icons/modindex.xpm"
+#include "icons/modtable.xpm"
+#include "icons/nofilter.xpm"
+#include "icons/refresh.xpm"
+#include "icons/schema.xpm"
+#include "icons/sequence.xpm"
+#include "icons/synonym.xpm"
+#include "icons/table.xpm"
+#include "icons/tobrowser.xpm"
+#include "icons/view.xpm"
+#include "icons/trash.xpm"
+#ifndef TO_NO_ORACLE
+#include "icons/offline.xpm"
+#include "icons/online.xpm"
+#endif
+#ifdef TOEXTENDED_MYSQL
+#include "icons/new.xpm"
+#endif
+
+// shutup compiler
+#ifdef TO_DEBUGOUT
+#  undef TO_DEBUGOUT
+#endif
+#define TO_DEBUGOUT(x) fprintf(stderr,(const char *)x);
+
+#define CONF_FILTER_IGNORE_CASE "FilterIgnoreCase"
+#define CONF_FILTER_INVERT   "FilterInvert"
+#define CONF_FILTER_TYPE   "FilterType"
+#define CONF_FILTER_TABLESPACE_TYPE   "FilterTablespaceType"
+#define CONF_FILTER_TEXT   "FilterText"
+
+
+const char **toBrowserTool::pictureXPM(void)
+{
+    return const_cast<const char**>(tobrowser_xpm);
+}
+
+toBrowserTool::toBrowserTool()
+        : toTool(20, "Schema Browser")
+{ }
+
+const char *toBrowserTool::menuItem()
+{
+    return "Schema Browser";
+}
+
+QWidget *toBrowserTool::toolWindow(QWidget *parent, toConnection &connection)
+{
+    return new toBrowser(parent, connection);
+}
+
+bool toBrowserTool::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn) || toIsMySQL(conn) || toIsPostgreSQL(conn) || toIsSapDB(conn);
+}
+
+void toBrowserTool::customSetup(int)
+{
+    QPopupMenu *createMenu = new QPopupMenu(toMainWidget());
+    createMenu->insertItem(QPixmap(const_cast<const char**>(modtable_xpm)), tr("&Table"),
+                           this, SLOT(addTable()));
+    createMenu->insertItem(QPixmap(const_cast<const char**>(modindex_xpm)), tr("&Index"),
+                           this, SLOT(addIndex()));
+    createMenu->insertItem(QPixmap(const_cast<const char**>(modconstraint_xpm)), tr("&Constraint"),
+                           this, SLOT(addConstraint()));
+    toMainWidget()->menuBar()->insertItem(tr("&Create"), createMenu, -1, toToolMenuIndex());
+}
+
+void toBrowserTool::addTable(void)
+{
+    try
+    {
+        toConnection &conn = toMainWidget()->currentConnection();
+        toBrowserTable::newTable(conn,
+                                 toIsMySQL(conn) ? conn.database() : conn.user(),
+                                 toMainWidget());
+    }
+    TOCATCH
+}
+
+void toBrowserTool::addIndex(void)
+{
+    try
+    {
+        toConnection &conn = toMainWidget()->currentConnection();
+        toBrowserIndex::modifyIndex(conn,
+                                    toIsMySQL(conn) ? conn.database() : conn.user(),
+                                    QString::null,
+                                    toMainWidget());
+    }
+    TOCATCH
+}
+
+void toBrowserTool::addConstraint(void)
+{
+    try
+    {
+        toConnection &conn = toMainWidget()->currentConnection();
+        toBrowserConstraint::modifyConstraint(conn,
+                                              toIsMySQL(conn) ? conn.database() : conn.user(),
+                                              QString::null,
+                                              toMainWidget());
+    }
+    TOCATCH
+}
+
+static toBrowserTool BrowserTool;
+
+static toSQL SQLListTablespaces("toBrowser:ListTablespaces",
+                                "SELECT Tablespace_Name FROM sys.DBA_TABLESPACES\n"
+                                " ORDER BY Tablespace_Name",
+                                "List the available tablespaces in a database.");
+
+class toBrowserFilter : public toResultFilter
+{
+    int Type;
+    bool IgnoreCase;
+    bool Invert;
+    QString Text;
+    int TablespaceType;
+    std::list<QString> Tablespaces;
+    QRegExp Match;
+    bool OnlyOwnSchema;
+
+    std::map<QString, bool> RemoveDuplicates;
+public:
+    toBrowserFilter(int type, bool cas, bool invert,
+                    const QString &str, int tablespace,
+                    const std::list<QString> &tablespaces,
+                    bool onlyOwnSchema = false)
+            : Type(type), IgnoreCase(cas), Invert(invert), Text(cas ? str.upper() : str),
+            TablespaceType(tablespace), Tablespaces(tablespaces), OnlyOwnSchema(onlyOwnSchema)
+    {
+        if (!str.isEmpty())
+        {
+            Match.setPattern(str);
+            Match.setCaseSensitive(cas);
+        }
+        storeFilterSettings();
+    }
+
+    toBrowserFilter(bool empty = true)
+    : Type(0), IgnoreCase(true), Invert(false), TablespaceType(0)
+    {
+        if (!empty)
+            readFilterSettings();
+        else
+            BrowserTool.setConfig(CONF_FILTER_TYPE, "0");  // No filter type
+    }
+
+    virtual void storeFilterSettings(void)
+    {
+        BrowserTool.setConfig(CONF_FILTER_IGNORE_CASE, IgnoreCase ? "Yes" : "No");
+        BrowserTool.setConfig(CONF_FILTER_INVERT, Invert ? "Yes" : "No");
+        BrowserTool.setConfig(CONF_FILTER_TYPE, QString("%1").arg(Type));
+        BrowserTool.setConfig(CONF_FILTER_TABLESPACE_TYPE, QString("%1").arg(TablespaceType));
+        BrowserTool.setConfig(CONF_FILTER_TEXT, Text);
+        toConfigurationSingle::Instance().saveConfig();
+    }
+
+    virtual void readFilterSettings(void)
+    {
+        QString t;
+        Text = BrowserTool.config(CONF_FILTER_TEXT, "");
+
+        if (BrowserTool.config(CONF_FILTER_IGNORE_CASE, "No") == "Yes")
+            IgnoreCase = true;
+        else
+            IgnoreCase = false;
+
+        if (BrowserTool.config(CONF_FILTER_INVERT, "No") == "Yes")
+            Invert = true;
+        else
+            Invert = false;
+        OnlyOwnSchema = false;
+        Type = QString(BrowserTool.config(CONF_FILTER_TYPE, "0")).toInt();
+        TablespaceType = QString(BrowserTool.config(CONF_FILTER_TABLESPACE_TYPE, "0")).toInt();
+    }
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix)
+    {
+        data[prefix + ":Type"] = QString::number(Type);
+        if (IgnoreCase)
+            data[prefix + ":Ignore"] = "Yes";
+        if (Invert)
+            data[prefix + ":Invert"] = "Yes";
+        data[prefix + ":SpaceType"] = QString::number(TablespaceType);
+        data[prefix + ":Text"] = Text;
+        int id = 1;
+        for (std::list<QString>::iterator i = Tablespaces.begin();i != Tablespaces.end();i++, id++)
+            data[prefix + ":Space:" + QString::number(id).latin1()] = *i;
+        if (OnlyOwnSchema)
+            data[prefix + ":OwnlyOwnSchema"] = "Yes";
+    }
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix)
+    {
+        Type = data[prefix + ":Type"].toInt();
+        OnlyOwnSchema = !data[prefix + ":OnlyOwnSchema"].isEmpty();
+        TablespaceType = data[prefix + ":SpaceType"].toInt();
+        IgnoreCase = !data[prefix + ":Ignore"].isEmpty();
+        Invert = !data[prefix + ":Invert"].isEmpty();
+        Text = data[prefix + ":Text"];
+        if (!Text.isEmpty())
+        {
+            Match.setPattern(Text);
+            Match.setCaseSensitive(IgnoreCase);
+        }
+        int id = 1;
+        std::map<QCString, QString>::iterator i;
+        Tablespaces.clear();
+        while ((i = data.find(prefix + ":Space:" + QString::number(id).latin1())) != data.end())
+        {
+            Tablespaces.insert(Tablespaces.end(), (*i).second);
+            i++;
+            id++;
+        }
+    }
+    bool onlyOwnSchema(void)
+    {
+        return OnlyOwnSchema;
+    }
+    virtual QString wildCard(void)
+    {
+        switch (Type)
+        {
+        default:
+            return QString::fromLatin1("%");
+        case 1:
+            return Text.upper() + QString::fromLatin1("%");
+        case 2:
+            return QString::fromLatin1("%") + Text.upper();
+        case 3:
+            return QString::fromLatin1("%") + Text.upper() + QString::fromLatin1("%");
+        }
+    }
+    virtual void startingQuery()
+    {
+        RemoveDuplicates.clear();
+    }
+    virtual bool check(const QListViewItem *item)
+    {
+        QString key = item->text(0) + "." + item->text(1);
+        if (RemoveDuplicates.find(key) != RemoveDuplicates.end())
+            return false;
+        else
+            RemoveDuplicates[key] = true;
+
+        QString str = item->text(0);
+        QString tablespace = item->text(3);
+        if (!tablespace.isEmpty())
+        {
+            switch (TablespaceType)
+            {
+            default:
+                break;
+            case 1:
+                {
+                    bool ok = false;
+                    for (std::list<QString>::iterator i = Tablespaces.begin();i != Tablespaces.end();i++)
+                    {
+                        if (*i == tablespace)
+                        {
+                            ok = true;
+                            break;
+                        }
+                    }
+                    if (!ok)
+                        return false;
+                }
+                break;
+            case 2:
+                for (std::list<QString>::iterator i = Tablespaces.begin();i != Tablespaces.end();i++)
+                    if (*i == tablespace)
+                        return false;
+                break;
+            }
+        }
+        switch (Type)
+        {
+        default:
+            return true;
+        case 1:
+            if (IgnoreCase)
+            {
+                if (str.upper().startsWith(Text))
+                    return !Invert;
+            }
+            else if (str.startsWith(Text))
+                return !Invert;
+            break;
+        case 2:
+            if (IgnoreCase)
+            {
+                if (str.right(Text.length()).upper() == Text)
+                    return !Invert;
+            }
+            else if (str.right(Text.length()) == Text)
+                return !Invert;
+            break;
+        case 3:
+            if (str.contains(Text, !IgnoreCase))
+                return !Invert;
+            break;
+        case 4:
+            {
+                QStringList lst = QStringList::split(QRegExp(QString::fromLatin1("\\s*,\\s*")), Text);
+                for (unsigned int i = 0;i < lst.count();i++)
+                    if (IgnoreCase)
+                    {
+                        if (str.upper() == lst[i])
+                            return !Invert;
+                    }
+                    else if (str == lst[i])
+                        return !Invert;
+            }
+            break;
+        case 5:
+            if (Match.match(str) >= 0)
+                return !Invert;
+            break;
+        }
+        return Invert;
+    }
+    virtual toResultFilter *clone(void)
+    {
+        return new toBrowserFilter(*this);
+    }
+    friend class toBrowserFilterSetup;
+};
+
+class toBrowserFilterSetup : public toBrowserFilterUI
+{
+public:
+    void setup(bool temp)
+    {
+        toHelp::connectDialog(this);
+        if (!temp)
+        {
+            OnlyOwnSchema->hide();
+            Tablespaces->setNumberColumn(false);
+            Tablespaces->setReadableColumns(true);
+            try
+            {
+                toConnection &conn = toCurrentConnection(this);
+                toQuery query(conn, toSQL::string(SQLListTablespaces, conn));
+                Tablespaces->query(SQLListTablespaces);
+            }
+            catch (...)
+            {}
+            Tablespaces->setSelectionMode(QListView::Multi);
+        }
+        else
+        {
+            TablespaceType->hide();
+        }
+    }
+    toBrowserFilterSetup(bool temp, QWidget *parent)
+            : toBrowserFilterUI(parent, "Filter Setting", true)
+    {
+        setup(temp);
+    }
+    toBrowserFilterSetup(bool temp, toBrowserFilter &cur, QWidget *parent)
+            : toBrowserFilterUI(parent, "Filter Setting", true)
+    {
+        setup(temp);
+
+        Buttons->setButton(cur.Type);
+        if (!TablespaceType->isHidden())
+        {
+            TablespaceType->setButton(cur.TablespaceType);
+            for (std::list<QString>::iterator i = cur.Tablespaces.begin();i != cur.Tablespaces.end();i++)
+            {
+                for (QListViewItem *item = Tablespaces->firstChild();item;item = item->nextSibling())
+                    if (item->text(0) == *i)
+                    {
+                        item->setSelected(true);
+                        break;
+                    }
+            }
+        }
+        String->setText(cur.Text);
+        Invert->setChecked(cur.Invert);
+        IgnoreCase->setChecked(cur.IgnoreCase);
+        OnlyOwnSchema->setChecked(cur.OnlyOwnSchema);
+    }
+    toBrowserFilter *getSetting(void)
+    {
+        std::list<QString> tablespaces;
+        for (QListViewItem *item = Tablespaces->firstChild();item;item = item->nextSibling())
+            if (item->isSelected())
+                tablespaces.insert(tablespaces.end(), item->text(0));
+        return new toBrowserFilter(Buttons->id(Buttons->selected()),
+                                   IgnoreCase->isChecked(),
+                                   Invert->isChecked(),
+                                   String->text(),
+                                   TablespaceType->id(TablespaceType->selected()),
+                                   tablespaces,
+                                   OnlyOwnSchema->isChecked());
+    }
+};
+
+toBrowseButton::toBrowseButton(const QIconSet &iconSet,
+                               const QString &textLabel,
+                               const QString & grouptext,
+                               QObject * receiver,
+                               const char * slot,
+                               QToolBar * parent,
+                               const char * name)
+        : QToolButton(iconSet, textLabel, grouptext, receiver, slot, parent, name)
+{
+    try
+    {
+        connect(toCurrentTool(this), SIGNAL(connectionChange()), this, SLOT(connectionChanged()));
+    }
+    TOCATCH
+    connectionChanged();
+}
+
+void toBrowseButton::connectionChanged()
+{
+    try
+    {
+        setEnabled(toExtract::canHandle(toCurrentConnection(this)));
+    }
+    TOCATCH
+}
+
+#define FIRST_WIDTH 180
+
+#define TAB_TABLES  "Tables"
+#define TAB_TABLE_COLUMNS "TablesColumns"
+#define TAB_TABLE_CONS  "TablesConstraint"
+#define TAB_TABLE_DEPEND "TablesDepend"
+#define TAB_TABLE_INDEXES "TablesIndexes"
+#define TAB_TABLE_DATA  "TablesData"
+#define TAB_TABLE_GRANTS "TablesGrants"
+#define TAB_TABLE_TRIGGERS "TablesTriggers"
+#define TAB_TABLE_INFO  "TablesInfo"
+#define TAB_TABLE_PARTITION "TablesPartition"
+#define TAB_TABLE_STATISTIC "TablesStatistic"
+#define TAB_TABLE_EXTENT "TablesExtent"
+#define TAB_TABLE_EXTRACT "TablesExtract"
+
+#define TAB_VIEWS  "Views"
+#define TAB_VIEW_COLUMNS "ViewColumns"
+#define TAB_VIEW_SQL  "ViewSQL"
+#define TAB_VIEW_DATA  "ViewData"
+#define TAB_VIEW_GRANTS  "ViewGrants"
+#define TAB_VIEW_DEPEND  "ViewDepend"
+#define TAB_VIEW_EXTRACT "ViewExtract"
+
+#define TAB_SEQUENCES  "Sequences"
+#define TAB_SEQUENCES_GRANTS "SequencesGrants"
+#define TAB_SEQUENCES_INFO "SequencesInfo"
+#define TAB_SEQUENCES_EXTRACT "SequencesExtract"
+
+#define TAB_INDEX  "Index"
+#define TAB_INDEX_COLS  "IndexCols"
+#define TAB_INDEX_INFO  "IndexInfo"
+#define TAB_INDEX_EXTENT "IndexesExtent"
+#define TAB_INDEX_EXTRACT "IndexExtract"
+#define TAB_INDEX_STATISTIC "IndexStatistic"
+
+#define TAB_SYNONYM  "Synonym"
+#define TAB_SYNONYM_GRANTS "SynonymGrants"
+#define TAB_SYNONYM_INFO "SynonymInfo"
+#define TAB_SYNONYM_EXTRACT "SynonymExtract"
+
+#define TAB_PLSQL  "PLSQL"
+#define TAB_PLSQL_SOURCE "PLSQLSource"
+#define TAB_PLSQL_BODY  "PLSQLBody"
+#define TAB_PLSQL_GRANTS "PLSQLGrants"
+#define TAB_PLSQL_DEPEND "PLSQLDepend"
+#define TAB_PLSQL_EXTRACT "PLSQLExtract"
+
+#define TAB_TRIGGER  "Trigger"
+#define TAB_TRIGGER_INFO "TriggerInfo"
+#define TAB_TRIGGER_SOURCE "TriggerSource"
+#define TAB_TRIGGER_GRANTS "TriggerGrants"
+#define TAB_TRIGGER_COLS "TriggerCols"
+#define TAB_TRIGGER_DEPEND "TriggerDepend"
+#define TAB_TRIGGER_EXTRACT "TriggerExtract"
+
+#define TAB_DBLINK  "DBLink"
+#define TAB_DBLINK_INFO  "DBLinkInfo"
+#define TAB_DBLINK_SYNONYMS "DBLinkSynonyms"
+
+#define TAB_ACCESS  "Access"
+#define TAB_ACCESS_CONTENT "AccessContent"
+#define TAB_ACCESS_USER  "AccessUser"
+#define TAB_ACCESS_OBJECTS "AccessObjects"
+
+static toSQL SQLListTablesMysql("toBrowser:ListTables",
+                                "SHOW TABLES FROM :f1<noquote>",
+                                "List the available tables in a schema.",
+                                "3.0",
+                                "MySQL");
+static toSQL SQLListTables("toBrowser:ListTables",
+                           "SELECT Table_Name,NULL \" Ignore\",NULL \" Ignore2\",Tablespace_name \" Ignore2\"\n"
+                           "  FROM SYS.ALL_ALL_TABLES WHERE OWNER = :f1<char[101]> AND IOT_Name IS NULL\n"
+                           "   AND UPPER(TABLE_NAME) LIKE :f2<char[101]>\n"
+                           " ORDER BY Table_Name",
+                           "",
+                           "0800");
+// petr vanek 03/01/07 bug #1180847 Error when creating referential constraint
+static toSQL SQLListTableNames("toBrowser:ListTableNames",
+                           "SELECT Table_Name\n"
+                           "  FROM SYS.ALL_ALL_TABLES WHERE OWNER = :f1<char[101]> AND IOT_Name IS NULL\n"
+                           " ORDER BY Table_Name",
+                           "simplified version of the toBrowser:ListTables",
+                           "0800");
+static toSQL SQLListTables7("toBrowser:ListTables",
+                            "SELECT Table_Name,NULL \" Ignore\",NULL \" Ignore2\",Tablespace_name \" Ignore2\"\n"
+                            "  FROM SYS.ALL_TABLES WHERE OWNER = :f1<char[101]>\n"
+                            "   AND UPPER(TABLE_NAME) LIKE :f2<char[101]>\n"
+                            " ORDER BY Table_Name",
+                            "",
+                            "0703");
+static toSQL SQLListTablesPgSQL("toBrowser:ListTables",
+                                "SELECT c.relname AS \"Table Name\"\n"
+                                "  FROM pg_class c LEFT OUTER JOIN pg_namespace n ON c.relnamespace=n.oid\n"
+                                " WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                                "   AND c.relkind = 'r'"
+                                " ORDER BY \"Table Name\"",
+                                "",
+                                "7.1",
+                                "PostgreSQL");
+static toSQL SQLListTablesSapDB("toBrowser:ListTables",
+                                "SELECT tablename \"Table Name\"\n"
+                                " FROM tables \n"
+                                " WHERE tabletype = 'TABLE' and owner = upper(:f1<char[101]>) \n"
+                                " ORDER by tablename",
+                                "",
+                                "",
+                                "SapDB");
+static toSQL SQLAnyGrantsSapDB("toBrowser:AnyGrants",
+                               "SELECT privilege,grantee,grantor,is_grantable\n"
+                               " FROM tableprivileges \n"
+                               " WHERE owner = upper(:f1<char[101]>) and tablename = :f2<char[101]>\n"
+                               " ORDER by privilege,grantee ",
+                               "Display the grants on an object",
+                               "",
+                               "SapDB");
+static toSQL SQLAnyGrants("toBrowser:AnyGrants",
+                          "SELECT Privilege,Grantee,Grantor,Grantable FROM SYS.ALL_TAB_PRIVS\n"
+                          " WHERE Table_Schema = :f1<char[101]> AND Table_Name = :f2<char[101]>\n"
+                          " ORDER BY Privilege,Grantee",
+                          "");
+static toSQL SQLTableTriggerSapDB("toBrowser:TableTrigger",
+                                  "SELECT TriggerName,'UPDATE' \"Event\",''\"Column\",'ENABLED' \"Status\",''\"Description\"\n"
+                                  " FROM triggers \n"
+                                  " WHERE owner = upper(:f1<char[101]>) and tablename = :f2<char[101]>\n"
+                                  "  and update='YES'\n"
+                                  "UNION\n"
+                                  "SELECT TriggerName,'INSERT','','ENABLED',''\n"
+                                  " FROM triggers \n"
+                                  " WHERE owner = upper(:f1<char[101]>) and  tablename = :f2<char[101]>\n"
+                                  "  and insert='YES'\n"
+                                  "UNION\n"
+                                  "SELECT TriggerName,'DELETE','','ENABLED',''\n"
+                                  " FROM triggers \n"
+                                  " WHERE owner = upper(:f1<char[101]>) and  tablename = :f2<char[101]>\n"
+                                  "  and delete='YES'\n"
+                                  " ORDER by 1 ",
+                                  "Display the triggers operating on a table",
+                                  "",
+                                  "SapDB");
+static toSQL SQLTableTrigger("toBrowser:TableTrigger",
+                             "SELECT Trigger_Name,Triggering_Event,Column_Name,Status,Description \n"
+                             "  FROM SYS.ALL_TRIGGERS\n"
+                             " WHERE Table_Owner = :f1<char[101]> AND Table_Name = :f2<char[101]>",
+                             "",
+                             "0801");
+static toSQL SQLTableTrigger8("toBrowser:TableTrigger",
+                              "SELECT Trigger_Name,Triggering_Event,Status,Description \n"
+                              "  FROM SYS.ALL_TRIGGERS\n"
+                              " WHERE Table_Owner = :f1<char[101]> AND Table_Name = :f2<char[101]>");
+static toSQL SQLTableTriggerPG("toBrowser:TableTrigger",
+                               " SELECT t.tgname AS \"Trigger Name\",\n"
+                               "        pg_catalog.pg_get_triggerdef ( t.OID ) AS \"Condition\"\n"
+                               "   FROM pg_catalog.pg_trigger t,\n"
+                               "        pg_class c,\n"
+                               "        pg_tables tab\n"
+                               "  WHERE lower ( tab.schemaname ) = lower ( :f1<char[101]> )\n"
+                               "    AND c.relname = tab.tablename\n"
+                               "    AND lower ( c.relname ) = lower ( :f2<char[101]> )\n"
+                               "    AND c.OID = t.tgrelid\n"
+                               "    AND ( NOT tgisconstraint OR NOT EXISTS ( SELECT 1\n"
+                               "                                               FROM pg_catalog.pg_depend d\n"
+                               "                                               JOIN pg_catalog.pg_constraint c\n"
+                               "                                                 ON ( d.refclassid = c.tableoid AND d.refobjid = c.OID )\n"
+                               "                                              WHERE d.classid = t.tableoid\n"
+                               "                                                AND d.objid = t.OID\n"
+                               "                                                AND d.deptype = 'i'\n"
+                               "                                                AND c.contype = 'f' ) )\n"
+                               "  ORDER BY 1\n",
+                               "",
+                               "",
+                               "PostgreSQL");
+static toSQL SQLTableInfoMysql("toBrowser:TableInformation",
+                               "show table status from :own<noquote> like :tab",
+                               "Display information about a table",
+                               "3.0",
+                               "MySQL");
+static toSQL SQLTableInfo("toBrowser:TableInformation",
+                          "SELECT *\n"
+                          "  FROM SYS.ALL_TABLES\n"
+                          " WHERE OWNER = :f1<char[101]> AND Table_Name = :f2<char[101]>",
+                          "");
+static toSQL SQLTableInfoPgSQL("toBrowser:TableInformation",
+                               "SELECT c.*\n"
+                               "  FROM pg_class c LEFT OUTER JOIN pg_namespace n ON c.relnamespace=n.oid\n"
+                               " WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                               "   AND c.relkind = 'r'\n"
+                               "   AND c.relname = :f2",
+                               "",
+                               "7.1",
+                               "PostgreSQL");
+static toSQL SQLTableInfoSapDB("toBrowser:TableInformation",
+                               "SELECT TABLENAME,PRIVILEGES,CREATEDATE,CREATETIME,UPDSTATDATE,UPDSTATTIME,ALTERDATE,ALTERTIME,TABLEID \n"
+                               " FROM tables \n"
+                               " WHERE tabletype = 'TABLE' and owner = upper(:f1<char[101]>) and tablename = :f2<char[101]>",
+                               "",
+                               "",
+                               "SapDB");
+static toSQL SQLTableStatistic("toBrowser:TableStatstics",
+                               "SELECT description \"Description\", value(char_value,numeric_value) \"Value\" \n"
+                               " FROM tablestatistics \n"
+                               " WHERE owner = upper(:f1<char[101]>) and tablename = :f2<char[101]>",
+                               "Table Statistics",
+                               "",
+                               "SapDB");
+static toSQL SQLTablePartition("toBrowser:TablePartitions",
+                               "select    p.partition_name \"Partition\"\n"
+                               " , p.composite \"Composite\"\n"
+                               " , p.num_rows \"Partition rows\"\n"
+                               " , p.high_value \"High value\"\n"
+                               " , p.subpartition_count \"Subpartitions\"\n"
+                               " , p.partition_position \"Position\"\n"
+                               " , s.subpartition_name \"Subpartition\"\n"
+                               " , s.num_rows \"Subpartition rows\"\n"
+                               " , s.subpartition_position \"Subpartition position\"\n"
+                               "  from all_tab_partitions p,\n"
+                               "       all_tab_subpartitions s\n"
+                               " where p.table_owner = s.table_owner(+)\n"
+                               "   and p.table_name = s.table_name(+)\n"
+                               "   and p.partition_name = s.partition_name(+)\n"
+                               "   and p.table_owner like upper(:table_owner<char[101]>)\n"
+                               "   and p.table_name like upper(:table_name<char[101]>)\n"
+                               " order by p.partition_name\n"
+                               " , s.subpartition_name\n",
+                               "Table partitions",
+                               "0801");
+
+static toSQL SQLListViewPgSQL("toBrowser:ListView",
+                              "SELECT c.relname as View_Name\n"
+                              "  FROM pg_class c LEFT OUTER JOIN pg_namespace n ON c.relnamespace=n.oid\n"
+                              " WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                              "   AND c.relkind = 'v'"
+                              " ORDER BY View_Name",
+                              "List the available views in a schema",
+                              "7.1",
+                              "PostgreSQL");
+static toSQL SQLListView("toBrowser:ListView",
+                         "SELECT View_Name FROM SYS.ALL_VIEWS WHERE OWNER = :f1<char[101]>\n"
+                         "   AND UPPER(VIEW_NAME) LIKE :f2<char[101]>\n"
+                         " ORDER BY View_Name",
+                         "");
+static toSQL SQLListViewSapDb("toBrowser:ListView",
+                              "SELECT tablename \"View_Name\"\n"
+                              " FROM tables \n"
+                              " WHERE tabletype = 'VIEW' and owner = upper(:f1<char[101]>)\n"
+                              " ORDER by tablename",
+                              "",
+                              "",
+                              "SapDB");
+static toSQL SQLViewSQLPgSQL("toBrowser:ViewSQL",
+                             "SELECT pg_get_viewdef(c.relname)\n"
+                             "  FROM pg_class c LEFT OUTER JOIN pg_namespace n ON c.relnamespace=n.oid\n"
+                             " WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                             "   AND c.relkind = 'v' AND c.relname = :f2",
+                             "Display SQL of a specified view",
+                             "7.1",
+                             "PostgreSQL");
+static toSQL SQLViewSQL("toBrowser:ViewSQL",
+                        "SELECT Text SQL\n"
+                        "  FROM SYS.ALL_Views\n"
+                        " WHERE Owner = :f1<char[101]> AND View_Name = :f2<char[101]>",
+                        "");
+static toSQL SQLViewSQLSapDb("toBrowser:ViewSQL",
+                             "SELECT definition \"SQL\"\n"
+                             " FROM viewdefs \n"
+                             " WHERE  viewname = :f2<char[101]> and owner = upper(:f1<char[101]>)\n",
+                             "",
+                             "",
+                             "SapDB");
+
+static toSQL SQLListIndexMySQL("toBrowser:ListIndex",
+                               "TOAD 1,3 SHOW INDEX FROM :f1<database>",
+                               "List the available indexes in a schema",
+                               "3.23",
+                               "MySQL");
+static toSQL SQLListIndex("toBrowser:ListIndex",
+                          "SELECT Index_Name,NULL \" Ignore\",NULL \" Ignore2\",Tablespace_name \" Ignore2\"\n"
+                          "  FROM SYS.ALL_INDEXES\n"
+                          " WHERE OWNER = :f1<char[101]>\n"
+                          "   AND UPPER(INDEX_NAME) LIKE :f2<char[101]>\n"
+                          " ORDER BY Index_Name\n",
+                          "");
+static toSQL SQLListIndexPgSQL("toBrowser:ListIndex",
+                               "SELECT c.relname AS \"Index Name\"\n"
+                               "FROM pg_class c LEFT OUTER JOIN pg_namespace n ON c.relnamespace=n.oid\n"
+                               "WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                               "  AND c.relkind = 'i'\n"
+                               "ORDER BY \"Index Name\"",
+                               "",
+                               "7.1",
+                               "PostgreSQL");
+static toSQL SQLListIndexSapDb("toBrowser:ListIndex",
+                               "SELECT IndexName \"Index Name\"\n"
+                               " FROM indexes \n"
+                               " WHERE  owner = upper(:f1<char[101]>)",
+                               "",
+                               "",
+                               "SapDB");
+
+static toSQL SQLIndexColsMySQL("toBrowser:IndexCols",
+                               "SHOW INDEX FROM :f1<noquote>.:f2<noquote>",
+                               "Display columns on which an index is built",
+                               "3.23",
+                               "MySQL");
+static toSQL SQLIndexCols("toBrowser:IndexCols",
+                          "SELECT a.Table_Name,a.Column_Name,a.Column_Length,a.Descend,b.Column_Expression \" \"\n"
+                          "  FROM sys.All_Ind_Columns a,sys.All_Ind_Expressions b\n"
+                          " WHERE a.Index_Owner = :f1<char[101]> AND a.Index_Name = :f2<char[101]>\n"
+                          "   AND a.Index_Owner = b.Index_Owner(+) AND a.Index_Name = b.Index_Name(+)\n"
+                          "   AND a.column_Position = b.Column_Position(+)\n"
+                          " ORDER BY a.Column_Position",
+                          "",
+                          "0801");
+static toSQL SQLIndexCols8("toBrowser:IndexCols",
+                           "SELECT Table_Name,Column_Name,Column_Length,Descend\n"
+                           "  FROM SYS.ALL_IND_COLUMNS\n"
+                           " WHERE Index_Owner = :f1<char[101]> AND Index_Name = :f2<char[101]>\n"
+                           " ORDER BY Column_Position",
+                           "",
+                           "0800");
+static toSQL SQLIndexCols7("toBrowser:IndexCols",
+                           "SELECT Table_Name,Column_Name,Column_Length\n"
+                           "  FROM SYS.ALL_IND_COLUMNS\n"
+                           " WHERE Index_Owner = :f1<char[101]> AND Index_Name = :f2<char[101]>\n"
+                           " ORDER BY Column_Position",
+                           "",
+                           "0703");
+static toSQL SQLIndexColsPgSQL("toBrowser:IndexCols",
+                               "SELECT a.attname,\n"
+                               "       format_type(a.atttypid, a.atttypmod) as FORMAT,\n"
+                               "       a.attnotnull,\n"
+                               "       a.atthasdef\n"
+                               "  FROM pg_class c LEFT OUTER JOIN pg_namespace n ON c.relnamespace=n.oid,\n"
+                               "       pg_attribute a\n"
+                               " WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                               "   AND a.attrelid = c.oid AND c.relname = :f2\n"
+                               "   AND a.attnum > 0\n"
+                               " ORDER BY a.attnum\n",
+                               "",
+                               "7.1",
+                               "PostgreSQL");
+static toSQL SQLIndexColsSapDb("toBrowser:IndexCols",
+                               "SELECT tablename,columnname,len \"Length\",DataType,Sort \n"
+                               " FROM indexcolumns \n"
+                               " WHERE  owner = upper(:f1<char[101]>) and indexname = upper(:f2<char[101]>)\n"
+                               " ORDER BY indexname,columnno",
+                               "",
+                               "",
+                               "SapDB");
+
+static toSQL SQLIndexInfoSapDb("toBrowser:IndexInformation",
+                               "SELECT  INDEXNAME,TABLENAME, TYPE, CREATEDATE,CREATETIME,INDEX_USED, DISABLED \n"
+                               " FROM indexes\n"
+                               " WHERE  owner = upper(:f1<char[101]>) and indexname = :f2<char[101]>\n",
+                               "Display information about an index",
+                               "",
+                               "SapDB");
+static toSQL SQLIndexInfo("toBrowser:IndexInformation",
+                          "SELECT * FROM SYS.ALL_INDEXES\n"
+                          " WHERE Owner = :f1<char[101]> AND Index_Name = :f2<char[101]>",
+                          "");
+static toSQL SQLIndexStatistic("toBrowser:IndexStatstics",
+                               "SELECT description \"Description\", value(char_value,numeric_value) \"Value\" \n"
+                               " FROM indexstatistics \n"
+                               " WHERE owner = upper(:f1<char[101]>) and indexname = :f2<char[101]>",
+                               "Index Statistics",
+                               "",
+                               "SapDB");
+
+static toSQL SQLListSequencePgSQL("toBrowser:ListSequence",
+                                  "SELECT c.relname AS \"Sequence Name\"\n"
+                                  "  FROM pg_class c LEFT OUTER JOIN pg_namespace n ON c.relnamespace=n.oid\n"
+                                  " WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                                  "   AND c.relkind = 'S'\n"
+                                  " ORDER BY \"Sequence Name\"",
+                                  "List the available sequences in a schema",
+                                  "7.1",
+                                  "PostgreSQL");
+static toSQL SQLListSequence("toBrowser:ListSequence",
+                             "SELECT Sequence_Name FROM SYS.ALL_SEQUENCES\n"
+                             " WHERE SEQUENCE_OWNER = :f1<char[101]>\n"
+                             "   AND UPPER(SEQUENCE_NAME) LIKE :f2<char[101]>\n"
+                             " ORDER BY Sequence_Name",
+                             "");
+static toSQL SQLSequenceInfoPgSQL("toBrowser:SequenceInformation",
+                                  "SELECT *, substr(:f1,1) as \"Owner\" FROM :f2<noquote>",
+                                  "Display information about a sequence",
+                                  "7.1",
+                                  "PostgreSQL");
+static toSQL SQLSequenceInfo("toBrowser:SequenceInformation",
+                             "SELECT * FROM SYS.ALL_SEQUENCES\n"
+                             " WHERE Sequence_Owner = :f1<char[101]>\n"
+                             "   AND Sequence_Name = :f2<char[101]>",
+                             "");
+
+static toSQL SQLListSynonym("toBrowser:ListSynonym",
+                            "SELECT DECODE(Owner,'PUBLIC','',Owner||'.')||Synonym_Name \"Synonym Name\"\n"
+                            "  FROM Sys.All_Synonyms\n"
+                            " WHERE Table_Owner = :f1<char[101]>\n"
+                            "    OR Owner = :f1<char[101]>\n"
+                            "   AND UPPER(Synonym_Name) LIKE :f2<char[101]>\n"
+                            " ORDER BY Synonym_Name",
+                            "List the available synonyms in a schema");
+static toSQL SQLSynonymInfo("toBrowser:SynonymInformation",
+                            "SELECT * FROM Sys.All_Synonyms a\n"
+                            " WHERE Owner = :f1<char[101]>\n"
+                            "   AND Synonym_Name = :f2<char[101]>",
+                            "Display information about a synonym");
+
+static toSQL SQLListSQLPgSQL("toBrowser:ListCode",
+                             "SELECT p.proname AS Object_Name,\n"
+                             "  CASE WHEN p.prorettype = 0 THEN 'PROCEDURE'\n"
+                             "       ELSE 'FUNCTION'\n"
+                             "   END AS Object_Type\n"
+                             "FROM pg_proc p LEFT OUTER JOIN pg_namespace n ON p.pronamespace=n.oid\n"
+                             "WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                             "ORDER BY Object_Name",
+                             "List the available Code objects in a schema",
+                             "7.1",
+                             "PostgreSQL");
+static toSQL SQLListSQL("toBrowser:ListCode",
+                        "SELECT Object_Name,Object_Type,Status Type FROM SYS.ALL_OBJECTS\n"
+                        " WHERE OWNER = :f1<char[101]>\n"
+                        "   AND Object_Type IN ('FUNCTION','PACKAGE',\n"
+                        "                       'PROCEDURE','TYPE')\n"
+                        "   AND UPPER(OBJECT_NAME) LIKE :f2<char[101]>\n"
+                        " ORDER BY Object_Name",
+                        "");
+static toSQL SQLListSQLShortPgSQL("toBrowser:ListCodeShort",
+                                  "SELECT p.proname AS Object_Name\n"
+                                  "FROM pg_proc p LEFT OUTER JOIN pg_namespace n ON p.pronamespace=n.oid\n"
+                                  "WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                                  "ORDER BY Object_Name",
+                                  "List the available Code objects in a schema, one column version",
+                                  "7.1",
+                                  "PostgreSQL");
+static toSQL SQLListSQLShort("toBrowser:ListCodeShort",
+                             "SELECT Object_Name Type FROM SYS.ALL_OBJECTS\n"
+                             " WHERE OWNER = :f1<char[101]>\n"
+                             "   AND Object_Type IN ('FUNCTION','PACKAGE',\n"
+                             "                       'PROCEDURE','TYPE')\n"
+                             "   AND UPPER(OBJECT_NAME) LIKE :f2<char[101]>\n"
+                             " ORDER BY Object_Name",
+                             "");
+
+
+static toSQL SQLSQLTemplate("toBrowser:CodeTemplate",
+                            "SELECT Text FROM SYS.ALL_SOURCE\n"
+                            " WHERE Owner = :f1<char[101]> AND Name = :f2<char[101]>\n"
+                            "   AND Type IN ('PACKAGE','PROCEDURE','FUNCTION','PACKAGE','TYPE')",
+                            "Declaration of object displayed in template window");
+// PostgreSQL does not distinguish between Head and Body for Stored SQL
+// package code will be returnd for both Head and Body
+static toSQL SQLSQLHeadPgSQL("toBrowser:CodeHead",
+                             "SELECT p.prosrc\n"
+                             "FROM pg_proc p LEFT OUTER JOIN pg_namespace n ON p.pronamespace=n.oid\n"
+                             "WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                             "  AND p.proname = :f2\n",
+                             "Declaration of object",
+                             "7.1",
+                             "PostgreSQL");
+static toSQL SQLSQLHead("toBrowser:CodeHead",
+                        "SELECT Text FROM SYS.ALL_SOURCE\n"
+                        " WHERE Owner = :f1<char[101]> AND Name = :f2<char[101]>\n"
+                        "   AND Type IN ('PACKAGE','TYPE')",
+                        "");
+
+static toSQL SQLSQLBodyPgSQL("toBrowser:CodeBody",
+                             "SELECT p.prosrc\n"
+                             "FROM pg_proc p LEFT OUTER JOIN pg_namespace n ON p.pronamespace=n.oid\n"
+                             "WHERE (n.nspname = :f1 OR n.oid IS NULL)\n"
+                             "  AND p.proname = :f2\n",
+                             "Implementation of object",
+                             "7.1",
+                             "PostgreSQL");
+static toSQL SQLSQLBody("toBrowser:CodeBody",
+                        "SELECT Text FROM SYS.ALL_SOURCE\n"
+                        " WHERE Owner = :f1<char[101]> AND Name = :f2<char[101]>\n"
+                        "   AND Type IN ('PROCEDURE','FUNCTION','PACKAGE BODY','TYPE BODY')",
+                        "");
+
+
+static toSQL SQLListTrigger("toBrowser:ListTrigger",
+                            "SELECT Trigger_Name FROM SYS.ALL_TRIGGERS\n"
+                            " WHERE OWNER = :f1<char[101]>\n"
+                            "   AND UPPER(TRIGGER_NAME) LIKE :f2<char[101]>\n"
+                            " ORDER BY Trigger_Name",
+                            "List the available triggers in a schema");
+static toSQL SQLTriggerInfo("toBrowser:TriggerInfo",
+                            "SELECT Owner,Trigger_Name,\n"
+                            "       Trigger_Type,Triggering_Event,\n"
+                            "       Table_Owner,Base_Object_Type,Table_Name,Column_Name,\n"
+                            "       Referencing_Names,When_Clause,Status,\n"
+                            "       Description,Action_Type\n"
+                            "  FROM SYS.ALL_TRIGGERS\n"
+                            "WHERE Owner = :f1<char[101]> AND Trigger_Name = :f2<char[101]>",
+                            "Display information about a trigger",
+                            "0801");
+static toSQL SQLTriggerInfo8("toBrowser:TriggerInfo",
+                             "SELECT Owner,Trigger_Name,\n"
+                             "       Trigger_Type,Triggering_Event,\n"
+                             "       Table_Owner,Table_Name,\n"
+                             "       Referencing_Names,When_Clause,Status,\n"
+                             "       Description\n"
+                             "  FROM SYS.ALL_TRIGGERS\n"
+                             "WHERE Owner = :f1<char[101]> AND Trigger_Name = :f2<char[101]>",
+                             "",
+                             "0800");
+static toSQL SQLTriggerBody("toBrowser:TriggerBody",
+                            "SELECT Trigger_Body FROM SYS.ALL_TRIGGERS\n"
+                            " WHERE Owner = :f1<char[101]> AND Trigger_Name = :f2<char[101]>",
+                            "Implementation of trigger");
+static toSQL SQLTriggerCols("toBrowser:TriggerCols",
+                            "SELECT Column_Name,Column_List \"In Update\",Column_Usage Usage\n"
+                            "  FROM SYS.ALL_TRIGGER_COLS\n"
+                            " WHERE Trigger_Owner = :f1<char[101]> AND Trigger_Name = :f2<char[101]>",
+                            "Columns used by trigger");
+#if DBLINK
+static toSQL SQLListDBLink("toBrowser:ListDBLink",
+                           "SELECT Db_Link, Owner FROM SYS.ALL_DB_LINKS\n"
+                           " WHERE (Owner = :f1<char[101]> or Owner='PUBLIC') and\n"
+                           " UPPER(DB_Link) like :f2<char[101]>",
+                           "List database links");
+static toSQL SQLListDBLinkDBA("toBrowser:ListDBLinkDBA",
+                              "SELECT Owner, Db_Link, Username, Host, Created\n"
+                              " FROM SYS.DBA_DB_LINK\n",
+                              "List database links as DBA");
+static toSQL SQLDBLinkInfo("toBrowser:DBLinkInformation",
+                           "SELECT * FROM Sys.all_db_links a\n"
+                           " WHERE Owner = :f1<char[101]>\n"
+                           "   AND DB_LINK = :f2<char[101]>",
+                           "Display information about database link");
+static toSQL SQLDBLinkSynonyms("toBrowser:DBLinkSynonyms",
+                               "SELECT * FROM Sys.all_synonyms a\n"
+                               " WHERE Owner = :f1<char[101]>\n"
+                               "   AND DB_LINK = :f2<char[101]>",
+                               "Display foreign synonyms");
+#endif
+
+static toSQL SQLMySQLAccess("toBrowser:MySQLAcess",
+                            "SHOW TABLES FROM mysql",
+                            "Show access tables for MySQL databases",
+                            "3.23",
+                            "MySQL");
+
+static toSQL SQLMySQLUsers("toBrowser:MySQLUsers",
+                           "SELECT concat(user,'@',host) Users FROM mysql.user",
+                           "Show users for MySQL databases",
+                           "3.23",
+                           "MySQL");
+
+static toSQL SQLTruncateTable("toBrowser:TruncateTable",
+                              "TRUNCATE TABLE %1.%2",
+                              "Truncate a table",
+                              "",
+                              "Any");
+
+QString toBrowser::schema(void)
+{
+    try
+    {
+        QString ret = Schema->selected();
+        if (ret == tr("No schemas"))
+            return connection().database();
+        return ret;
+    }
+    catch (...)
+    {
+        return QString::null;
+    }
+}
+
+void toBrowser::setNewFilter(toBrowserFilter *filter)
+{
+    if (Filter)
+    {
+        delete Filter;
+        Filter = NULL;
+    }
+    if (filter)
+        Filter = filter;
+    else
+        Filter = new toBrowserFilter();
+    disconnect(FilterButton, SIGNAL(toggled(bool)), this, SLOT(defineFilter()));
+    FilterButton->setOn(filter);
+    connect(FilterButton, SIGNAL(toggled(bool)), this, SLOT(defineFilter()));
+    for (std::map<QCString, toResultView *>::iterator i = Map.begin();i != Map.end();i++)
+        (*i).second->setFilter(Filter->clone());
+    refresh();
+}
+
+toBrowser::toBrowser(QWidget *parent, toConnection &connection)
+        : toToolWidget(BrowserTool, "browser.html", parent, connection)
+{
+    Filter = new toBrowserFilter(false);
+
+    QToolBar *toolbar = toAllocBar(this, tr("DB Browser"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Update from DB"),
+                    tr("Update from DB"),
+                    this, SLOT(refresh(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    FilterButton = new QToolButton(toolbar);
+    FilterButton->setToggleButton(true);
+    FilterButton->setIconSet(QIconSet(QPixmap(const_cast<const char**>(filter_xpm))));
+    QToolTip::add
+        (FilterButton, tr("Define the object filter"));
+    connect(FilterButton, SIGNAL(toggled(bool)), this, SLOT(defineFilter()));
+
+    new QToolButton(QPixmap(const_cast<const char**>(nofilter_xpm)),
+                    tr("Remove any object filter"),
+                    tr("Remove any object filter"),
+                    this, SLOT(clearFilter(void)),
+                    toolbar);
+    Schema = new toResultCombo(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    connect(Schema, SIGNAL(activated(int)),
+            this, SLOT(changeSchema(int)));
+    Schema->setSQL(toSQL::sql(toSQL::TOSQL_USERLIST));
+    if (toIsMySQL(connection))
+        Schema->setSelected(connection.database());
+    else if (toIsOracle(connection) || toIsSapDB(connection))
+        Schema->setSelected(connection.user().upper());
+    else
+        Schema->setSelected(connection.user());
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    TopTab = new toTabWidget(this);
+    QSplitter *splitter = new QSplitter(Horizontal, TopTab, TAB_TABLES);
+    TopTab->addTab(splitter, tr("T&ables"));
+    CurrentTop = splitter;
+
+    QVBox *box = new QVBox(splitter);
+
+    toolbar = toAllocBar(box, tr("Database browser"));
+    new toBrowseButton(QPixmap(const_cast<const char**>(addtable_xpm)),
+                       tr("Create new table"),
+                       tr("Create new table"),
+                       this, SLOT(addTable()),
+                       toolbar);
+    toolbar->addSeparator();
+    new toBrowseButton(QPixmap(const_cast<const char**>(modtable_xpm)),
+                       tr("Modify table columns"),
+                       tr("Modify table columns"),
+                       this, SLOT(modifyTable()),
+                       toolbar);
+    new toBrowseButton(QPixmap(const_cast<const char**>(modconstraint_xpm)),
+                       tr("Modify constraints"),
+                       tr("Modify constraints"),
+                       this, SLOT(modifyConstraint()),
+                       toolbar);
+    new toBrowseButton(QPixmap(const_cast<const char**>(modindex_xpm)),
+                       tr("Modify indexes"),
+                       tr("Modify indexes"),
+                       this, SLOT(modifyIndex()),
+                       toolbar);
+    toolbar->addSeparator();
+    new toBrowseButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                       tr("Drop table"),
+                       tr("Drop table"),
+                       this, SLOT(dropTable()),
+                       toolbar);
+#ifndef TO_NO_ORACLE
+
+    toolbar->addSeparator();
+    new toBrowseButton(QPixmap(const_cast<const char**>(online_xpm)),
+                       tr("Enable constraint or trigger"),
+                       tr("Enable constraint or trigger"),
+                       this, SLOT(enableConstraints()),
+                       toolbar);
+    new toBrowseButton(QPixmap(const_cast<const char**>(offline_xpm)),
+                       tr("Disable constraint or trigger"),
+                       tr("Disable constraint or trigger"),
+                       this, SLOT(disableConstraints()),
+                       toolbar);
+#endif
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    toResultView *resultView = new toResultLong(true, false, toQuery::Background, box);
+    resultView->setReadAll(true);
+    resultView->setSQL(SQLListTables);
+    resultView->setResizeMode(QListView::AllColumns);
+    setFocusProxy(resultView);
+    box->resize(FIRST_WIDTH, resultView->height());
+    splitter->setResizeMode(box, QSplitter::KeepSize);
+    connect(resultView, SIGNAL(done()), this, SLOT(firstDone()));
+    FirstTab = resultView;
+    Map[TAB_TABLES] = resultView;
+    resultView->setTabWidget(TopTab);
+    connect(resultView, SIGNAL(selectionChanged()),
+            this, SLOT(changeItem()));
+    connect(resultView, SIGNAL(displayMenu(QPopupMenu *)), this, SLOT(displayTableMenu(QPopupMenu *)));
+
+
+    QTabWidget *curr = new toTabWidget(splitter);
+    splitter->setResizeMode(curr, QSplitter::Stretch);
+
+    toResultCols *resultCols = new toResultCols(curr, TAB_TABLE_COLUMNS);
+    curr->addTab(resultCols, tr("&Columns"));
+    SecondTab = resultCols;
+    SecondMap[TAB_TABLES] = resultCols;
+    SecondMap[TAB_TABLE_COLUMNS] = resultCols;
+
+    resultView = new toResultIndexes(curr, TAB_TABLE_INDEXES);
+    curr->addTab(resultView, tr("&Indexes"));
+    SecondMap[TAB_TABLE_INDEXES] = resultView;
+
+    toResultConstraint *resultConstraint = new toResultConstraint(curr, TAB_TABLE_CONS);
+    curr->addTab(resultConstraint, tr("C&onstraints"));
+    SecondMap[TAB_TABLE_CONS] = resultConstraint;
+
+    toResultReferences *resultReferences = new toResultReferences(curr, TAB_TABLE_DEPEND);
+    curr->addTab(resultReferences, tr("&References"));
+    SecondMap[TAB_TABLE_DEPEND] = resultReferences;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_TABLE_GRANTS);
+    resultView->setSQL(SQLAnyGrants);
+    resultView->setReadAll(true);
+    curr->addTab(resultView, tr("&Grants"));
+    SecondMap[TAB_TABLE_GRANTS] = resultView;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_TABLE_TRIGGERS);
+    resultView->setSQL(SQLTableTrigger);
+    resultView->setReadAll(true);
+    curr->addTab(resultView, tr("Triggers"));
+    SecondMap[TAB_TABLE_TRIGGERS] = resultView;
+
+    TableContent = new toResultContent(curr, TAB_TABLE_DATA);
+    curr->addTab(TableContent, tr("&Data"));
+    SecondMap[TAB_TABLE_DATA] = TableContent;
+
+    toResultItem *resultInfo = new toResultItem(2, true, curr, TAB_TABLE_INFO);
+    resultInfo->setSQL(SQLTableInfo);
+    curr->addTab(resultInfo, tr("Information"));
+    SecondMap[TAB_TABLE_INFO] = resultInfo;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_TABLE_STATISTIC);
+    resultView->setSQL(SQLTableStatistic);
+    resultView->setResizeMode(QListView::AllColumns);
+    resultView->setReadAll(true);
+    curr->addTab(resultView, tr("Statistic"));
+    SecondMap[TAB_TABLE_STATISTIC] = resultView;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_TABLE_PARTITION);
+    resultView->setSQL(SQLTablePartition);
+    resultView->setReadAll(true);
+    curr->addTab(resultView, tr("Partitions"));
+    SecondMap[TAB_TABLE_PARTITION] = resultView;
+
+    toResultExtent *resultExtent = new toResultExtent(curr, TAB_TABLE_EXTENT);
+    curr->addTab(resultExtent, tr("Extents"));
+    SecondMap[TAB_TABLE_EXTENT] = resultExtent;
+    toResultExtract *resultExtract = new toResultExtract(true, this, TAB_TABLE_EXTRACT);
+    curr->addTab(resultExtract, tr("Script"));
+    SecondMap[TAB_TABLE_EXTRACT] = resultExtract;
+
+    connect(curr, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeSecondTab(QWidget *)));
+
+    splitter = new QSplitter(Horizontal, TopTab, TAB_VIEWS);
+    TopTab->addTab(splitter, tr("&Views"));
+    resultView = new toResultLong(true, false, toQuery::Background, splitter);
+    resultView->setReadAll(true);
+    connect(resultView, SIGNAL(done()), this, SLOT(firstDone()));
+    Map[TAB_VIEWS] = resultView;
+    resultView->setTabWidget(TopTab);
+    resultView->setSQL(SQLListView);
+    resultView->resize(FIRST_WIDTH, resultView->height());
+    resultView->setResizeMode(QListView::AllColumns);
+    connect(resultView, SIGNAL(selectionChanged()),
+            this, SLOT(changeItem()));
+    splitter->setResizeMode(resultView, QSplitter::KeepSize);
+    curr = new toTabWidget(splitter);
+    splitter->setResizeMode(curr, QSplitter::Stretch);
+    resultCols = new toResultCols(curr, TAB_VIEW_COLUMNS);
+    curr->addTab(resultCols, tr("&Columns"));
+    SecondMap[TAB_VIEWS] = resultCols;
+    SecondMap[TAB_VIEW_COLUMNS] = resultCols;
+
+    toResultField *resultField = new toResultField(curr, TAB_VIEW_SQL);
+    resultField->setSQL(SQLViewSQL);
+    curr->addTab(resultField, tr("SQL"));
+    SecondMap[TAB_VIEW_SQL] = resultField;
+
+    ViewContent = new toResultContent(curr, TAB_VIEW_DATA);
+    ViewContent->useNoReturning(true);
+    curr->addTab(ViewContent, tr("&Data"));
+    SecondMap[TAB_VIEW_DATA] = ViewContent;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_VIEW_GRANTS);
+    resultView->setSQL(SQLAnyGrants);
+    resultView->setReadAll(true);
+    curr->addTab(resultView, tr("&Grants"));
+    SecondMap[TAB_VIEW_GRANTS] = resultView;
+
+    toResultDepend *resultDepend = new toResultDepend(curr, TAB_VIEW_DEPEND);
+    curr->addTab(resultDepend, tr("De&pendencies"));
+    SecondMap[TAB_VIEW_DEPEND] = resultDepend;
+
+    resultExtract = new toResultExtract(true, this, TAB_VIEW_EXTRACT);
+    curr->addTab(resultExtract, tr("Script"));
+    SecondMap[TAB_VIEW_EXTRACT] = resultExtract;
+    connect(curr, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeSecondTab(QWidget *)));
+
+    splitter = new QSplitter(Horizontal, TopTab, TAB_INDEX);
+
+    TopTab->addTab(splitter, tr("Inde&xes"));
+
+    box = new QVBox(splitter);
+    toolbar = toAllocBar(box, tr("Database browser"));
+    new toBrowseButton(QPixmap(const_cast<const char**>(addindex_xpm)),
+                       tr("Add indexes"),
+                       tr("Add indexes"),
+                       this, SLOT(addIndex()),
+                       toolbar);
+    toolbar->addSeparator();
+    new toBrowseButton(QPixmap(const_cast<const char**>(modindex_xpm)),
+                       tr("Modify indexes"),
+                       tr("Modify indexes"),
+                       this, SLOT(modifyIndex()),
+                       toolbar);
+    toolbar->addSeparator();
+    new toBrowseButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                       tr("Drop index"),
+                       tr("Drop index"),
+                       this, SLOT(dropIndex()),
+                       toolbar);
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    resultView = new toResultLong(true, false, toQuery::Background, box);
+    resultView->setReadAll(true);
+    connect(resultView, SIGNAL(done()), this, SLOT(firstDone()));
+    Map[TAB_INDEX] = resultView;
+    resultView->setTabWidget(TopTab);
+    resultView->setSQL(SQLListIndex);
+    resultView->setResizeMode(QListView::AllColumns);
+    connect(resultView, SIGNAL(selectionChanged()),
+            this, SLOT(changeItem()));
+    connect(resultView, SIGNAL(displayMenu(QPopupMenu *)), this, SLOT(displayIndexMenu(QPopupMenu *)));
+
+    box->resize(FIRST_WIDTH, resultView->height());
+    splitter->setResizeMode(box, QSplitter::KeepSize);
+    curr = new toTabWidget(splitter);
+    splitter->setResizeMode(curr, QSplitter::Stretch);
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_INDEX_COLS);
+    resultView->setSQL(SQLIndexCols);
+    connect(resultView, SIGNAL(done()), this, SLOT(fixIndexCols()));
+    curr->addTab(resultView, tr("&Columns"));
+    SecondMap[TAB_INDEX] = resultView;
+    SecondMap[TAB_INDEX_COLS] = resultView;
+
+    toResultItem *resultIdxInfo = new toResultItem(2, true, curr, TAB_INDEX_INFO);
+    resultIdxInfo->setSQL(SQLIndexInfo);
+    curr->addTab(resultIdxInfo, tr("Info"));
+    SecondMap[TAB_INDEX_INFO] = resultIdxInfo;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_INDEX_STATISTIC);
+    resultView->setSQL(SQLIndexStatistic);
+    resultView->setResizeMode(QListView::AllColumns);
+    resultView->setReadAll(true);
+    curr->addTab(resultView, tr("&Statistic"));
+    SecondMap[TAB_INDEX_STATISTIC] = resultView;
+
+    resultExtent = new toResultExtent(curr, TAB_INDEX_EXTENT);
+    curr->addTab(resultExtent, tr("Extents"));
+    SecondMap[TAB_INDEX_EXTENT] = resultExtent;
+
+    resultExtract = new toResultExtract(true, this, TAB_INDEX_EXTRACT);
+    curr->addTab(resultExtract, tr("Script"));
+    SecondMap[TAB_INDEX_EXTRACT] = resultExtract;
+    connect(curr, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeSecondTab(QWidget *)));
+
+    splitter = new QSplitter(Horizontal, TopTab, TAB_SEQUENCES);
+    TopTab->addTab(splitter, tr("Se&quences"));
+    resultView = new toResultLong(true, false, toQuery::Background, splitter);
+    resultView->setReadAll(true);
+    resultView->setSQL(SQLListSequence);
+    connect(resultView, SIGNAL(done()), this, SLOT(firstDone()));
+    Map[TAB_SEQUENCES] = resultView;
+    resultView->setTabWidget(TopTab);
+    resultView->setSQL(SQLListSequence);
+    resultView->resize(FIRST_WIDTH, resultView->height());
+    resultView->setResizeMode(QListView::AllColumns);
+    connect(resultView, SIGNAL(selectionChanged()),
+            this, SLOT(changeItem()));
+    splitter->setResizeMode(resultView, QSplitter::KeepSize);
+    curr = new toTabWidget(splitter);
+    splitter->setResizeMode(curr, QSplitter::Stretch);
+
+    toResultItem *resultSequences = new toResultItem(2, true, curr, TAB_SEQUENCES_INFO);
+    resultSequences->setSQL(SQLSequenceInfo);
+    curr->addTab(resultSequences, tr("Info"));
+    SecondMap[TAB_SEQUENCES] = resultSequences;
+    SecondMap[TAB_SEQUENCES_INFO] = resultSequences;
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_SEQUENCES_GRANTS);
+    resultView->setSQL(SQLAnyGrants);
+    resultView->setReadAll(true);
+    curr->addTab(resultView, tr("&Grants"));
+    SecondMap[TAB_SEQUENCES_GRANTS] = resultView;
+
+    resultExtract = new toResultExtract(true, this, TAB_SEQUENCES_EXTRACT);
+    curr->addTab(resultExtract, tr("Script"));
+    SecondMap[TAB_SEQUENCES_EXTRACT] = resultExtract;
+
+    connect(curr, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeSecondTab(QWidget *)));
+
+    splitter = new QSplitter(Horizontal, TopTab, TAB_SYNONYM);
+    TopTab->addTab(splitter, tr("S&ynonyms"));
+    resultView = new toResultLong(true, false, toQuery::Background, splitter);
+    resultView->setReadAll(true);
+    connect(resultView, SIGNAL(done()), this, SLOT(firstDone()));
+    Map[TAB_SYNONYM] = resultView;
+    resultView->setTabWidget(TopTab);
+    resultView->setSQL(SQLListSynonym);
+    resultView->resize(FIRST_WIDTH, resultView->height());
+    resultView->setResizeMode(QListView::AllColumns);
+    connect(resultView, SIGNAL(selectionChanged()),
+            this, SLOT(changeItem()));
+    splitter->setResizeMode(resultView, QSplitter::KeepSize);
+    curr = new toTabWidget(splitter);
+    splitter->setResizeMode(curr, QSplitter::Stretch);
+
+    toResultItem *resultSynonym = new toResultItem(2, true, curr, TAB_SYNONYM_INFO);
+    resultSynonym->setSQL(SQLSynonymInfo);
+    curr->addTab(resultSynonym, tr("Info"));
+    SecondMap[TAB_SYNONYM] = resultSynonym;
+    SecondMap[TAB_SYNONYM_INFO] = resultSynonym;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_SYNONYM_GRANTS);
+    resultView->setSQL(SQLAnyGrants);
+    resultView->setReadAll(true);
+    curr->addTab(resultView, tr("&Grants"));
+    SecondMap[TAB_SYNONYM_GRANTS] = resultView;
+
+    resultExtract = new toResultExtract(true, this, TAB_SYNONYM_EXTRACT);
+    curr->addTab(resultExtract, tr("Script"));
+    SecondMap[TAB_SYNONYM_EXTRACT] = resultExtract;
+
+    connect(curr, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeSecondTab(QWidget *)));
+
+    splitter = new QSplitter(Horizontal, TopTab, TAB_PLSQL);
+    TopTab->addTab(splitter, tr("Cod&e"));
+    resultView = new toResultLong(true, false, toQuery::Background, splitter);
+    resultView->setReadAll(true);
+    connect(resultView, SIGNAL(done()), this, SLOT(firstDone()));
+    Map[TAB_PLSQL] = resultView;
+    resultView->setTabWidget(TopTab);
+    resultView->setSQL(SQLListSQL);
+    resultView->resize(FIRST_WIDTH*2, resultView->height());
+    resultView->setResizeMode(QListView::AllColumns);
+    connect(resultView, SIGNAL(selectionChanged()),
+            this, SLOT(changeItem()));
+    splitter->setResizeMode(resultView, QSplitter::KeepSize);
+    curr = new toTabWidget(splitter);
+    splitter->setResizeMode(curr, QSplitter::Stretch);
+
+    resultField = new toResultField(curr, TAB_PLSQL_SOURCE);
+    resultField->setSQL(SQLSQLHead);
+    curr->addTab(resultField, tr("&Declaration"));
+    SecondMap[TAB_PLSQL] = resultField;
+    SecondMap[TAB_PLSQL_SOURCE] = resultField;
+
+    resultField = new toResultField(curr, TAB_PLSQL_BODY);
+    resultField->setSQL(SQLSQLBody);
+    curr->addTab(resultField, tr("B&ody"));
+    SecondMap[TAB_PLSQL_BODY] = resultField;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_PLSQL_GRANTS);
+    resultView->setReadAll(true);
+    resultView->setSQL(SQLAnyGrants);
+    curr->addTab(resultView, tr("&Grants"));
+    SecondMap[TAB_PLSQL_GRANTS] = resultView;
+    resultDepend = new toResultDepend(curr, TAB_PLSQL_DEPEND);
+    curr->addTab(resultDepend, tr("De&pendencies"));
+    SecondMap[TAB_PLSQL_DEPEND] = resultDepend;
+
+    resultExtract = new toResultExtract(true, this, TAB_PLSQL_EXTRACT);
+    curr->addTab(resultExtract, tr("Script"));
+    SecondMap[TAB_PLSQL_EXTRACT] = resultExtract;
+    connect(curr, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeSecondTab(QWidget *)));
+
+    splitter = new QSplitter(Horizontal, TopTab, TAB_TRIGGER);
+    TopTab->addTab(splitter, tr("Tri&ggers"));
+    resultView = new toResultLong(true, false, toQuery::Background, splitter);
+    resultView->setReadAll(true);
+    connect(resultView, SIGNAL(done()), this, SLOT(firstDone()));
+    Map[TAB_TRIGGER] = resultView;
+    resultView->setTabWidget(TopTab);
+    resultView->setSQL(SQLListTrigger);
+    resultView->resize(FIRST_WIDTH, resultView->height());
+    resultView->setResizeMode(QListView::AllColumns);
+    connect(resultView, SIGNAL(selectionChanged()),
+            this, SLOT(changeItem()));
+    splitter->setResizeMode(resultView, QSplitter::KeepSize);
+    curr = new toTabWidget(splitter);
+    splitter->setResizeMode(curr, QSplitter::Stretch);
+
+    toResultItem *resultTrigger = new toResultItem(2, true, curr, TAB_TRIGGER_INFO);
+    resultTrigger->setSQL(SQLTriggerInfo);
+    curr->addTab(resultTrigger, tr("Info"));
+    SecondMap[TAB_TRIGGER] = resultTrigger;
+    SecondMap[TAB_TRIGGER_INFO] = resultTrigger;
+
+    resultField = new toResultField(curr, TAB_TRIGGER_SOURCE);
+    resultField->setSQL(SQLTriggerBody);
+    curr->addTab(resultField, tr("C&ode"));
+    SecondMap[TAB_TRIGGER_SOURCE] = resultField;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_TRIGGER_COLS);
+    resultView->setSQL(SQLTriggerCols);
+    curr->addTab(resultView, tr("&Columns"));
+    SecondMap[TAB_TRIGGER_COLS] = resultView;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_TRIGGER_GRANTS);
+    resultView->setSQL(SQLAnyGrants);
+    resultView->setReadAll(true);
+    curr->addTab(resultView, tr("&Grants"));
+    SecondMap[TAB_TRIGGER_GRANTS] = resultView;
+
+    resultDepend = new toResultDepend(curr, TAB_TRIGGER_DEPEND);
+    curr->addTab(resultDepend, tr("De&pendencies"));
+    SecondMap[TAB_TRIGGER_DEPEND] = resultDepend;
+
+    resultExtract = new toResultExtract(true, this, TAB_TRIGGER_EXTRACT);
+    curr->addTab(resultExtract, tr("Script"));
+    SecondMap[TAB_TRIGGER_EXTRACT] = resultExtract;
+
+    connect(curr, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeSecondTab(QWidget *)));
+
+#ifdef DBLINK
+
+    splitter = new QSplitter(Horizontal, TopTab, TAB_DBLINK);
+    TopTab->addTab(splitter, tr("DBLinks"));
+    box = new QVBox(splitter);
+    toolbar = toAllocBar(box, tr("Database browser"));
+    new toBrowseButton(QPixmap(const_cast<const char**>(modconstraint_xpm)),
+                       tr("Test DBLink"),
+                       tr("Test DBLink"),
+                       this, SLOT(testDBLink()),
+                       toolbar);
+    toolbar->addSeparator();
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    resultView = new toResultLong(true, false, toQuery::Background, box);
+    resultView->setReadAll(true);
+    connect(resultView, SIGNAL(done()), this, SLOT(firstDone()));
+    Map[TAB_DBLINK] = resultView;
+    resultView->setTabWidget(TopTab);
+    resultView->setSQL(SQLListDBLink);
+    resultView->resize(FIRST_WIDTH, resultView->height());
+    resultView->setResizeMode(QListView::AllColumns);
+    connect(resultView, SIGNAL(selectionChanged()),
+            this, SLOT(changeItem()));
+    connect(resultView, SIGNAL(displayMenu(QPopupMenu *)), this, SLOT(displayIndexMenu(QPopupMenu *)));
+    box->resize(FIRST_WIDTH, resultView->height());
+    splitter->setResizeMode(box, QSplitter::KeepSize);
+    curr = new toTabWidget(splitter);
+    splitter->setResizeMode(curr, QSplitter::Stretch);
+
+    toResultItem *resultDBLink = new toResultItem(2, true, curr, TAB_DBLINK_INFO);
+    resultDBLink->setSQL(SQLDBLinkInfo);
+    curr->addTab(resultDBLink, tr("Info"));
+    SecondMap[TAB_DBLINK] = resultDBLink;
+    SecondMap[TAB_DBLINK_INFO] = resultDBLink;
+
+    resultView = new toResultLong(true, false, toQuery::Background, curr, TAB_DBLINK_SYNONYMS);
+    resultView->setSQL(SQLDBLinkSynonyms);
+    curr->addTab(resultView, tr("&Synonyms"));
+    SecondMap[TAB_DBLINK_SYNONYMS] = resultView;
+
+    connect(curr, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeSecondTab(QWidget *)));
+#endif
+
+    splitter = new QSplitter(Horizontal, TopTab, TAB_ACCESS);
+    TopTab->addTab(splitter, tr("Access"));
+#ifdef TOEXTENDED_MYSQL
+
+    box = new QVBox(splitter);
+    toolbar = toAllocBar(box, tr("Database browser"));
+    new toBrowseButton(QPixmap(const_cast<const char**>(new_xpm)),
+                       tr("Add user"),
+                       tr("Add user"),
+                       this, SLOT(addUser()),
+                       toolbar);
+    new toBrowseButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                       tr("Drop user"),
+                       tr("Drop user"),
+                       this, SLOT(dropUser()),
+                       toolbar);
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    resultView = new toResultLong(true, false, toQuery::Background, box);
+#else
+
+    resultView = new toResultLong(true, false, toQuery::Background, splitter);
+#endif
+
+    resultView->setReadAll(true);
+    connect(resultView, SIGNAL(done()), this, SLOT(firstDone()));
+    Map[TAB_ACCESS] = resultView;
+    resultView->setTabWidget(TopTab);
+    resultView->setResizeMode(QListView::AllColumns);
+    resultView->resize(FIRST_WIDTH, resultView->height());
+    connect(resultView, SIGNAL(selectionChanged()),
+            this, SLOT(changeItem()));
+    curr = new toTabWidget(splitter);
+    splitter->setResizeMode(curr, QSplitter::Stretch);
+
+#ifdef TOEXTENDED_MYSQL
+
+    splitter->setResizeMode(box, QSplitter::KeepSize);
+    resultView->setSQL(SQLMySQLUsers);
+
+    AccessContent = NULL;
+
+    UserPanel = new toMySQLUser(curr, TAB_ACCESS_USER);
+    curr->addTab(UserPanel, tr("&User"));
+    SecondMap[TAB_ACCESS] = UserPanel;
+    SecondMap[TAB_ACCESS_USER] = UserPanel;
+
+    AccessPanel = new toMySQLUserAccess(curr, TAB_ACCESS_OBJECTS);
+    curr->addTab(AccessPanel, tr("&Objects"));
+    SecondMap[TAB_ACCESS_OBJECTS] = UserPanel; // Yes, it should be this one, it will signal the TAB_ACCESS_OBJECTS to update.
+    connect(AccessPanel, SIGNAL(hasChanged()), UserPanel, SLOT(hasChanged()));
+    connect(UserPanel, SIGNAL(saveChanges(const QString &, const QString &)), AccessPanel, SLOT(saveChanges(const QString &, const QString &)));
+    connect(UserPanel, SIGNAL(changeUser(const QString &)), AccessPanel, SLOT(changeUser(const QString &)));
+
+    AccessContent = new toResultContent(curr, TAB_ACCESS_CONTENT);
+    curr->addTab(AccessContent, tr("&Hosts"));
+    SecondMap[TAB_ACCESS_CONTENT] = AccessContent;
+#else
+
+    splitter->setResizeMode(resultView, QSplitter::KeepSize);
+    resultView->setSQL(SQLMySQLAccess);
+
+    AccessContent = new toResultContent(curr, TAB_ACCESS_CONTENT);
+    curr->addTab(AccessContent, tr("&Data"));
+    SecondMap[TAB_ACCESS] = AccessContent;
+    SecondMap[TAB_ACCESS_CONTENT] = AccessContent;
+#endif
+
+    connect(AccessContent, SIGNAL(changesSaved()), this, SLOT(flushPrivs()));
+
+    connect(curr, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeSecondTab(QWidget *)));
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    refresh();
+
+    connect(TopTab, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeTab(QWidget *)));
+    connect(this, SIGNAL(connectionChange()), this, SLOT(changeConnection()));
+    Schema->setFocus();
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(changeSecond()));
+
+    setNewFilter(NULL);
+}
+
+void toBrowser::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"), this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Browser|Refresh")));
+            ToolMenu->insertItem(tr("&Change Schema"), Schema, SLOT(setFocus(void)),
+                                 toKeySequence(tr("Alt+S", "Browser|Change Schema")));
+            ToolMenu->insertItem(tr("Change &Object"), this, SLOT(focusObject(void)),
+                                 toKeySequence(tr("Alt+N", "Browser|Change object")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(filter_xpm)), tr("&Define filter..."),
+                                 this, SLOT(defineFilter(void)),
+                                 toKeySequence(tr("Ctrl+Shift+G", "Browser|Define filter")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(nofilter_xpm)), tr("&Clear filter"), this, SLOT(clearFilter(void)),
+                                 toKeySequence(tr("Ctrl+Shift+H", "Browser|Clear filter")));
+            toMainWidget()->menuBar()->insertItem(tr("&Browser"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+static toSQL SQLDropUser("toBrowser:DropUser",
+                         "DELETE FROM mysql.user WHERE concat(user,'@',host) = :f1<char[255]>",
+                         "Drop MYSQL user",
+                         "3.23",
+                         "MySQL");
+
+void toBrowser::addUser()
+{
+#ifdef TOEXTENDED_MYSQL
+    UserPanel->changeParams(QString::null, QString::null);
+#endif
+}
+
+void toBrowser::dropUser()
+{
+#ifdef TOEXTENDED_MYSQL
+    try
+    {
+        AccessPanel->dropCurrentAccess();
+        connection().execute(SQLDropUser, selectedItem()->text(0));
+        flushPrivs();
+        refresh();
+    }
+    TOCATCH
+#endif
+}
+
+void toBrowser::changeSchema(int)
+{
+    SecondText = QString::fromLatin1("");
+    updateTabs();
+}
+
+toBrowser::~toBrowser()
+{
+    delete Filter;
+}
+
+void toBrowser::refresh(void)
+{
+    try
+    {
+        Schema->refresh();
+        if (FirstTab)
+        {
+            toQList pars = FirstTab->params();
+            if ( pars.empty() )
+            {
+                updateTabs();
+                return ;
+            }
+            FirstTab->refresh();
+        }
+        if (SecondTab)
+        {
+            toQList pars = SecondTab->params();
+            if ( pars.empty() )
+            {
+                updateTabs();
+                return ;
+            }
+            SecondTab->refresh();
+        }
+    }
+    TOCATCH
+}
+
+void toBrowser::focusObject(void)
+{
+    if (FirstTab)
+        FirstTab->setFocus();
+}
+
+void toBrowser::changeConnection(void)
+{
+    FirstTab->clear();
+    Schema->refresh();
+    SecondText = QString::null;
+    updateTabs();
+}
+
+void toBrowser::updateTabs(void)
+{
+    try
+    {
+        if (!Schema->selected().isEmpty() && FirstTab)
+            FirstTab->changeParams(schema(), Filter ? Filter->wildCard() : QString::fromLatin1("%"));
+        firstDone(); // In case it is ignored cause it is already done.
+        if (SecondTab && !SecondText.isEmpty())
+            changeSecond();
+    }
+    TOCATCH
+}
+
+void toBrowser::firstDone(void)
+{
+    if (!SecondText.isEmpty() && FirstTab)
+    {
+        for (QListViewItem *item = FirstTab->firstChild();item;item = item->nextSibling())
+        {
+            if (item->text(0) == SecondText)
+            {
+                FirstTab->setSelected(item, true);
+                FirstTab->setCurrentItem(item);
+                FirstTab->ensureItemVisible(item);
+                break;
+            }
+        }
+    }
+    else
+    {
+        QListViewItem *item = selectedItem();
+        if (item)
+            SecondText = item->text(0);
+    }
+}
+
+void toBrowser::changeItem()
+{
+    QListViewItem *item = selectedItem();
+    if (item)
+    {
+        SecondText = item->text(0);
+        if (SecondTab && !SecondText.isEmpty())
+            Poll.start(250, true);
+    }
+}
+
+void toBrowser::changeSecond(void)
+{
+    QWidget *tab = TopTab->currentPage();
+    QWidget *tab2 = dynamic_cast<QWidget *>(SecondTab);
+    if (tab && !strcmp(tab->name(), TAB_SYNONYM))
+    {
+        QString owner;
+        QString name;
+        int pos = SecondText.find(QString::fromLatin1("."));
+        if (pos >= 0)
+        {
+            owner = SecondText.mid(0, pos);
+            name = SecondText.mid(pos + 1);
+        }
+        else
+        {
+            owner = QString::fromLatin1("PUBLIC");
+            name = SecondText;
+        }
+        SecondTab->changeParams(owner, name);
+#ifdef TOEXTENDED_MYSQL
+
+    }
+    else if (tab && !strcmp(tab->name(), TAB_ACCESS) && !strcmp(tab2->name(), TAB_ACCESS_CONTENT))
+    {
+        SecondTab->changeParams("mysql",
+                                "host");
+#else
+
+    }
+    else if (tab && !strcmp(tab->name(), TAB_ACCESS))
+    {
+        SecondTab->changeParams("mysql",
+                                SecondText);
+#endif
+
+    }
+    else if (tab && !strcmp(tab->name(), TAB_INDEX) && !strcmp(tab2->name(), TAB_INDEX_EXTRACT))
+    {
+        QListViewItem *item = selectedItem();
+        if (item)
+            SecondTab->changeParams(schema(), item->text(0)); //+"."+item->text(1));
+    }
+    else
+        SecondTab->changeParams(schema(),
+                                SecondText);
+}
+
+void toBrowser::changeSecondTab(QWidget *tab)
+{
+    for (QWidget *t = tab->parentWidget();t != TopTab->currentPage();t = t->parentWidget())
+        if (!t)
+            return ;
+
+    if (tab)
+    {
+        toResult *newtab = SecondMap[tab->name()];
+        if (newtab == SecondTab)
+            return ;
+
+        // The change second tab can get called for other tabs than the current one. Ignore those
+        // calls.
+        QWidget *t = dynamic_cast<QWidget *>(newtab);
+        while (t && t != CurrentTop)
+            t = t->parentWidget();
+        if (!t)
+            return ;
+
+        SecondTab = newtab;
+        SecondMap[TopTab->currentPage()->name()] = SecondTab;
+        if (SecondTab && !SecondText.isEmpty())
+            changeSecond();
+    }
+}
+
+void toBrowser::changeTab(QWidget *tab)
+{
+    if (tab && this == toMainWidget()->workspace()->activeWindow())
+    {
+        toResultView *newtab = Map[tab->name()];
+        if (newtab == FirstTab)
+            return ;
+        CurrentTop = tab;
+        setFocusProxy(newtab);
+        FirstTab = newtab;
+        SecondTab = SecondMap[tab->name()];
+        SecondText = "";
+
+        if (FirstTab && SecondTab)
+            updateTabs();
+    }
+}
+
+void toBrowser::clearFilter(void)
+{
+    setNewFilter(NULL);
+}
+
+void toBrowser::defineFilter(void)
+{
+    if (Filter)
+    {
+        toBrowserFilterSetup filt(false, *Filter, this);
+        if (filt.exec())
+            setNewFilter(filt.getSetting());
+    }
+    else
+    {
+        toBrowserFilterSetup filt(false, this);
+        if (filt.exec())
+            setNewFilter(filt.getSetting());
+    }
+}
+
+bool toBrowser::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn) ||
+        toIsMySQL(conn) ||
+        toIsSapDB(conn);
+}
+
+void toBrowser::modifyTable(void)
+{
+    toBrowserTable::editTable(connection(),
+                              Schema->selected(),
+                              SecondText,
+                              this);
+    refresh();
+}
+
+void toBrowser::addTable(void)
+{
+    toBrowserTable::newTable(connection(),
+                             Schema->selected(),
+                             this);
+    refresh();
+}
+
+void toBrowser::modifyConstraint(void)
+{
+    toBrowserConstraint::modifyConstraint(connection(),
+                                          Schema->selected(),
+                                          SecondText,
+                                          this);
+    refresh();
+}
+
+void toBrowser::modifyIndex(void)
+{
+    QString index;
+    QListViewItem *item = selectedItem();
+    if (FirstTab->columns() > 1 && item)
+        index = item->text(1);
+
+    if (item)
+    {
+        toBrowserIndex::modifyIndex(connection(),
+                                    Schema->selected(),
+                                    item->text(0),
+                                    this,
+                                    index);
+    }
+    refresh();
+}
+
+void toBrowser::addIndex(void)
+{
+    toBrowserIndex::addIndex(connection(),
+                             Schema->selected(),
+                             SecondText,
+                             this);
+    refresh();
+}
+
+void toBrowser::displayTableMenu(QPopupMenu *menu)
+{
+    menu->insertSeparator(0);
+    menu->insertItem(QPixmap(const_cast<const char**>(trash_xpm)), tr("Drop table"), this, SLOT(dropTable()), 0, 0, 0);
+    menu->insertItem(tr("Truncate table"), this, SLOT(truncateTable()), 0, 0, 0);
+    menu->insertSeparator(0);
+    if (toIsMySQL(connection()))
+    {
+        menu->insertItem(tr("Check table"), this, SLOT(checkTable()), 0, 0, 0);
+        menu->insertItem(tr("Optimize table"), this, SLOT(optimizeTable()), 0, 0, 0);
+        menu->insertItem(tr("Analyze table"), this, SLOT(analyzeTable()), 0, 0, 0);
+        menu->insertItem(tr("Change type"), this, SLOT(changeType()), 0, 0, 0);
+        menu->insertSeparator(0);
+    }
+    menu->insertItem(QPixmap(const_cast<const char**>(modconstraint_xpm)), tr("Modify constraints"), this, SLOT(modifyConstraint()), 0, 0, 0);
+    menu->insertItem(QPixmap(const_cast<const char**>(modindex_xpm)), tr("Modify indexes"), this, SLOT(modifyIndex()), 0, 0, 0);
+    menu->insertItem(QPixmap(const_cast<const char**>(addtable_xpm)), tr("Create table"), this, SLOT(addTable()), 0, 0, 0);
+    menu->insertSeparator(0);
+    menu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("Refresh"), this, SLOT(refresh()), 0, 0, 0);
+}
+
+void toBrowser::displayIndexMenu(QPopupMenu *menu)
+{
+    menu->insertSeparator(0);
+    menu->insertItem(QPixmap(const_cast<const char**>(trash_xpm)), tr("Drop index"), this, SLOT(dropIndex()), 0, 0, 0);
+    menu->insertItem(QPixmap(const_cast<const char**>(modindex_xpm)), tr("Modify index"), this, SLOT(modifyIndex()), 0, 0, 0);
+    menu->insertItem(QPixmap(const_cast<const char**>(addindex_xpm)), tr("Create index"), this, SLOT(addIndex()), 0, 0, 0);
+    menu->insertSeparator(0);
+    menu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("Refresh"), this, SLOT(refresh()), 0, 0, 0);
+}
+
+void toBrowser::dropSomething(const QString &type, const QString &what)
+{
+    if (what.isEmpty())
+        return ;
+    if (TOMessageBox::warning(this, tr("Dropping %1?").arg(tr(type)),
+                              tr("Are you sure you want to drop the %1 %2.%3,\n"
+                                 "this action can not be undone?").arg(tr(type)).arg(Schema->selected()).arg(what),
+                              tr("&Yes"), tr("&Cancel"), QString::null, 0) == 0)
+    {
+        std::list<QString> ctx;
+        toPush(ctx, Schema->selected());
+        toPush(ctx, QString(type.upper()));
+        QStringList parts = QStringList::split(".", what);
+        if (parts.count() > 1)
+        {
+            toPush(ctx, parts[1]);
+            toPush(ctx, QString("ON"));
+            toPush(ctx, parts[0]);
+        }
+        else
+        {
+            toPush(ctx, what);
+        }
+
+        std::list<QString> drop;
+        toExtract::addDescription(drop, ctx);
+
+        std::list<QString> empty;
+
+        try
+        {
+            toExtract extractor(connection(), NULL);
+            extractor.setIndexes(false);
+            extractor.setConstraints(false);
+            extractor.setPrompt(false);
+            extractor.setHeading(false);
+            QString sql = extractor.migrate(drop, empty);
+
+            std::list<toSQLParse::statement> statements = toSQLParse::parse(sql, connection());
+            QProgressDialog prog(tr("Performing %1 changes").arg(tr(type)),
+                                 tr("Executing %1 change script").arg(tr(type)),
+                                 statements.size(),
+                                 this, "progress", true);
+            prog.setCaption(tr("Performing %1 changes").arg(tr(type)));
+            for (std::list<toSQLParse::statement>::iterator j = statements.begin();j != statements.end();j++)
+            {
+                QString sql = toSQLParse::indentStatement(*j, connection());
+                int i = sql.length() - 1;
+                while (i >= 0 && (sql.at(i) == ';' || sql.at(i).isSpace()))
+                    i--;
+                if (i >= 0)
+                    connection().execute(sql.mid(0, i + 1));
+                qApp->processEvents();
+                if (prog.wasCancelled())
+                    throw tr("Cancelled ongoing %1 modification, %2 might be corrupt").arg(tr(type)).arg(tr(type));
+            }
+        }
+        TOCATCH
+    }
+    refresh();
+}
+
+void toBrowser::dropTable(void)
+{
+    dropSomething("table", SecondText);
+}
+
+void toBrowser::truncateTable(void)
+{
+    bool force = false;
+    for (QListViewItem *item = FirstTab->firstChild();item;item = item->nextSibling())
+    {
+        if (item->isSelected())
+        {
+            switch (force ? 0 : TOMessageBox::warning(this, tr("Truncate table?"),
+                    tr("Are you sure you want to truncate the table %2.%3,\n"
+                       "this action can not be undone?").arg(Schema->selected()).arg(item->text(0)),
+                    tr("&Yes"), tr("Yes to &all"), tr("&Cancel"), 0))
+            {
+            case 1 :
+                force = true;
+                // Intentionally no break here.
+            case 0:
+                connection().execute(toSQL::string(SQLTruncateTable, connection()).
+                                     arg(connection().quote(Schema->selected())).
+                                     arg(connection().quote(item->text(0))));
+                break;
+            case 2:
+                return ;
+            }
+        }
+    }
+}
+
+void toBrowser::flushPrivs(void)
+{
+    try
+    {
+        connection().execute("FLUSH PRIVILEGES");
+    }
+    TOCATCH
+}
+
+void toBrowser::checkTable(void)
+{
+    QString sql;
+
+    for (QListViewItem *item = FirstTab->firstChild();item;item = item->nextSibling())
+    {
+        if (item->isSelected())
+        {
+            if (sql.isEmpty())
+                sql = "CHECK TABLE ";
+            else
+                sql += ", ";
+            sql += connection().quote(Schema->selected()) + "." + connection().quote(item->text(0));
+        }
+    }
+
+    if (!sql.isEmpty())
+    {
+        toResultLong *result = new toResultLong(this, "Check result", WType_TopLevel | WDestructiveClose);
+        result->query(sql);
+        result->show();
+    }
+
+}
+
+void toBrowser::optimizeTable(void)
+{
+    QString sql;
+
+    for (QListViewItem *item = FirstTab->firstChild();item;item = item->nextSibling())
+    {
+        if (item->isSelected())
+        {
+            if (sql.isEmpty())
+                sql = "OPTIMIZE TABLE ";
+            else
+                sql += ", ";
+            sql += connection().quote(Schema->selected()) + "." + connection().quote(item->text(0));
+        }
+    }
+
+    if (!sql.isEmpty())
+    {
+        toResultLong *result = new toResultLong(this, "Check result", WType_TopLevel | WDestructiveClose);
+        result->query(sql);
+        result->show();
+    }
+}
+
+void toBrowser::changeType(void)
+{
+    bool ok;
+    QString text = QInputDialog::getText("Change table type", "Enter new table type", QLineEdit::Normal,
+                                         "MyISAM", &ok, this);
+    if (ok && !text.isEmpty())
+    {
+        for (QListViewItem *item = FirstTab->firstChild();item;item = item->nextSibling())
+        {
+            if (item->isSelected())
+            {
+                QString sql = "ALTER TABLE ";
+                sql += connection().quote(Schema->selected()) + "." + connection().quote(item->text(0));
+                sql += " TYPE = " + text;
+                try
+                {
+                    connection().execute(sql);
+                }
+                TOCATCH
+            }
+        }
+    }
+}
+
+void toBrowser::analyzeTable(void)
+{
+    QString sql;
+
+    for (QListViewItem *item = FirstTab->firstChild();item;item = item->nextSibling())
+    {
+        if (item->isSelected())
+        {
+            if (sql.isEmpty())
+                sql = "ANALYZE TABLE ";
+            else
+                sql += ", ";
+            sql += connection().quote(Schema->selected()) + "." + connection().quote(item->text(0));
+        }
+    }
+
+    if (!sql.isEmpty())
+    {
+        toResultLong *result = new toResultLong(this, "Check result", WType_TopLevel | WDestructiveClose);
+        result->query(sql);
+        result->show();
+    }
+}
+
+QListViewItem *toBrowser::selectedItem()
+{
+    QListViewItem *selected = NULL;
+    for (QListViewItem *item = FirstTab->firstChild();item;item = item->nextSibling())
+    {
+        if (item->isSelected())
+        {
+            if (item == FirstTab->currentItem())
+                return item;
+            else if (!selected)
+                selected = item;
+        }
+    }
+    return selected;
+}
+
+void toBrowser::dropIndex(void)
+{
+    for (QListViewItem *item = FirstTab->firstChild();item;item = item->nextSibling())
+    {
+        if (item->isSelected())
+        {
+            QString index = item->text(1);
+            if (index != "PRIMARY" && !item->text(0).isEmpty())
+                dropSomething("index", item->text(0) + "." + index);
+            else
+                dropSomething("index", item->text(0));
+        }
+    }
+}
+
+bool toBrowser::close(bool del)
+{
+#ifdef TOEXTENDED_MYSQL
+    UserPanel->saveChanges();
+#endif
+
+    return toToolWidget::close(del);
+}
+
+void toBrowser::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    data[prefix + ":Schema"] = Schema->selected();
+    data[prefix + ":FirstTab"] = TopTab->currentPage()->name();
+    data[prefix + ":SecondText"] = SecondText;
+    for (std::map<QCString, toResult *>::iterator i = SecondMap.begin();i != SecondMap.end();i++)
+    {
+        if ((*i).second == SecondTab && Map.find((*i).first) == Map.end())
+        {
+            data[prefix + ":SecondTab"] = (*i).first;
+            break;
+        }
+    }
+    ViewContent->exportData(data, prefix + ":View");
+    TableContent->exportData(data, prefix + ":Table");
+    if (AccessContent)
+        AccessContent->exportData(data, prefix + ":Hosts");
+    toToolWidget::exportData(data, prefix);
+    if (Filter)
+        Filter->exportData(data, prefix + ":Filter");
+}
+
+void toBrowser::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    disconnect(Schema, SIGNAL(activated(int)),
+               this, SLOT(changeSchema(int)));
+    disconnect(TopTab, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeTab(QWidget *)));
+
+    ViewContent->importData(data, prefix + ":View");
+    TableContent->importData(data, prefix + ":Table");
+    if (AccessContent)
+        AccessContent->importData(data, prefix + ":Hosts");
+
+    if (data.find(prefix + ":Filter:Type") != data.end())
+    {
+        toBrowserFilter *filter = new toBrowserFilter;
+        filter->importData(data, prefix + ":Filter");
+        setNewFilter(filter);
+    }
+    else
+        setNewFilter(NULL);
+
+    toToolWidget::importData(data, prefix);
+    QString str = data[prefix + ":Schema"];
+    Schema->setSelected(str);
+    for (int i = 0;i < Schema->count();i++)
+        if (Schema->text(i) == str)
+            Schema->setCurrentItem(i);
+
+    str = data[prefix + ":FirstTab"];
+    QWidget *chld = (QWidget *)child(str);
+    if (chld && str.length())
+    {
+        SecondText = QString::null;
+        TopTab->showPage(chld);
+
+        toResultView *newtab = Map[chld->name()];
+        if (newtab != FirstTab && newtab)
+        {
+            CurrentTop = chld;
+            setFocusProxy(newtab);
+            FirstTab = newtab;
+        }
+
+        str = data[prefix + ":SecondTab"];
+        chld = (QWidget *)child(str);
+        if (chld && str.length())
+        {
+            QWidget *par = chld->parentWidget();
+            while (par && !par->inherits("QTabWidget"))
+                par = par->parentWidget();
+            if (par)
+                ((QTabWidget *)par)->showPage(chld);
+            changeSecondTab(chld);
+        }
+        SecondText = data[prefix + ":SecondText"];
+    }
+
+    connect(Schema, SIGNAL(activated(int)),
+            this, SLOT(changeSchema(int)));
+    connect(TopTab, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeTab(QWidget *)));
+    refresh();
+}
+
+void toBrowser::fixIndexCols(void)
+{
+    if (toIsOracle(connection()))
+    {
+        toResultLong *tmp = dynamic_cast<toResultLong *>(SecondMap[TAB_INDEX_COLS]);
+        if (tmp)
+            for (QListViewItem *item = tmp->firstChild();item;item = item->nextSibling())
+            {
+                if (!toUnnull(item->text(4)).isNull())
+                {
+                    toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item);
+                    if (resItem)
+                        resItem->setText(1, resItem->allText(4));
+                }
+            }
+    }
+    else if (toIsMySQL(connection()))
+    {
+        toResultLong *second = dynamic_cast<toResultLong *>(SecondMap[TAB_INDEX_COLS]);
+        if (FirstTab && second)
+        {
+            QListViewItem *item = selectedItem();
+            if (item)
+            {
+                QString index = item->text(1);
+                for (QListViewItem *item = second->firstChild();item;)
+                {
+                    QListViewItem *t = item->nextSibling();
+                    if (item->text(2) != index)
+                    {
+                        delete item;
+                        second->clearParams(); // Make sure it is reexecuted even if same table.
+                    }
+                    item = t;
+                }
+            }
+        }
+    }
+}
+
+static toBrowseTemplate BrowseTemplate;
+
+void toBrowseTemplate::removeDatabase(const QString &name)
+{
+    for (std::list<toTemplateItem *>::iterator i = Parents.begin();i != Parents.end();i++)
+    {
+        for (QListViewItem *item = (*i)->firstChild();item;item = item->nextSibling())
+            if (item->text(0) == name)
+            {
+                delete item;
+                break;
+            }
+    }
+}
+
+void toBrowseTemplate::defineFilter(void)
+{
+    if (Filter)
+    {
+        toBrowserFilterSetup filt(true, *Filter, toMainWidget());
+        if (filt.exec())
+        {
+            delete Filter;
+            Filter = filt.getSetting();
+        }
+    }
+    else
+    {
+        toBrowserFilterSetup filt(true, toMainWidget());
+        if (filt.exec())
+            Filter = filt.getSetting();
+    }
+    if (Filter)
+    {
+        disconnect(FilterButton, SIGNAL(toggled(bool)), this, SLOT(defineFilter()));
+        FilterButton->setOn(true);
+        connect(FilterButton, SIGNAL(toggled(bool)), this, SLOT(defineFilter()));
+    }
+}
+
+void toBrowseTemplate::clearFilter(void)
+{
+    delete Filter;
+    Filter = new toBrowserFilter;
+    disconnect(FilterButton, SIGNAL(toggled(bool)), this, SLOT(defineFilter()));
+    FilterButton->setOn(false);
+    connect(FilterButton, SIGNAL(toggled(bool)), this, SLOT(defineFilter()));
+}
+
+void toBrowseTemplate::removeItem(QListViewItem *item)
+{
+    for (std::list<toTemplateItem *>::iterator i = Parents.begin();i != Parents.end();i++)
+        if ((*i) == item)
+        {
+            Parents.erase(i);
+            break;
+        }
+}
+
+class toTemplateTableItem : public toTemplateItem
+{
+    toConnection &Connection;
+public:
+    toTemplateTableItem(toConnection &conn, toTemplateItem *parent,
+                        const QString &name)
+            : toTemplateItem(parent, name), Connection(conn)
+    {}
+    virtual QWidget *selectedWidget(QWidget *par)
+    {
+        QString ptyp = parent()->parent()->text(0);
+        QString object = parent()->text(0);
+        QString typ = text(0);
+        QString schema = parent()->parent()->parent()->text(0);
+        if (ptyp == "Synonyms")
+        {
+            int pos = object.find(QString::fromLatin1("."));
+            if (pos >= 0)
+            {
+                schema = object.mid(0, pos);
+                object = object.mid(pos + 1);
+            }
+            else
+            {
+                schema = QString::fromLatin1("PUBLIC");
+            }
+        }
+
+        if (schema == qApp->translate("toBrowser", "No schemas"))
+            schema = Connection.database();
+
+        toResultView *res;
+
+        toToolWidget *tool = new toToolWidget(BrowserTool,
+                                              "",
+                                              par,
+                                              Connection);
+        if (typ == qApp->translate("toBrowser", "Data"))
+        {
+            toResultContent *cnt = new toResultContent(tool);
+            cnt->changeParams(schema, object);
+            return tool;
+        }
+        else if (typ == qApp->translate("toBrowser", "Indexes"))
+        {
+            res = new toResultIndexes(tool);
+        }
+        else if (typ == qApp->translate("toBrowser", "Extents"))
+        {
+            new toResultExtent(tool);
+            return tool;
+        }
+        else if (typ == qApp->translate("toBrowser", "Constraints"))
+        {
+            res = new toResultConstraint(tool);
+        }
+        else if (typ == qApp->translate("toBrowser", "Triggers"))
+        {
+            res = new toResultLong(true, false, toQuery::Background, tool);
+            res->setReadAll(true);
+            res->setSQL(SQLTableTrigger);
+        }
+        else if (typ == qApp->translate("toBrowser", "SQL"))
+        {
+            toResultField *sql = new toResultField(tool);
+            sql->setSQL(SQLViewSQL);
+            sql->changeParams(schema, object);
+            return tool;
+        }
+        else if (typ == qApp->translate("toBrowser", "Script"))
+        {
+            toResultExtract *ext = new toResultExtract(true, tool);
+            ext->changeParams(schema, object);
+            return tool;
+        }
+        else if (typ == qApp->translate("toBrowser", "Information"))
+        {
+            toResultItem *inf = new toResultItem(2, true, tool);
+            if (ptyp == qApp->translate("toBrowser", "Tables"))
+            {
+                inf->setSQL(SQLTableInfo);
+            }
+            else if (ptyp == qApp->translate("toBrowser", "Triggers"))
+            {
+                inf->setSQL(SQLTriggerInfo);
+            }
+            else if (ptyp == qApp->translate("toBrowser", "Indexes"))
+            {
+                inf->setSQL(SQLIndexInfo);
+            }
+            inf->changeParams(schema, object);
+            return tool;
+        }
+        else if (typ == qApp->translate("toBrowser", "Columns"))
+        {
+            res = new toResultLong(true, false, toQuery::Background, tool);
+            res->setSQL(SQLTriggerCols);
+        }
+        else if (typ == qApp->translate("toBrowser", "References"))
+        {
+            res = new toResultReferences(tool);
+        }
+        else if (typ == qApp->translate("toBrowser", "Grants"))
+        {
+            res = new toResultLong(true, false, toQuery::Background, tool);
+            res->setSQL(SQLAnyGrants);
+        }
+        else if (typ == qApp->translate("toBrowser", "Dependencies"))
+        {
+            res = new toResultDepend(tool);
+        }
+        else
+        {
+            delete tool;
+            return NULL;
+        }
+        res->changeParams(schema, object);
+        return tool;
+    }
+};
+
+class toTemplateSchemaItem : public toTemplateItem
+{
+    toConnection &Connection;
+public:
+    toTemplateSchemaItem(toConnection &conn, toTemplateItem *parent,
+                         const QString &name)
+            : toTemplateItem(parent, name), Connection(conn)
+    {
+        QString typ = parent->text(0);
+        if (typ == qApp->translate("toBrowser", "Tables"))
+        {
+            QPixmap image(const_cast<const char**>(table_xpm));
+            setPixmap(0, image);
+            new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Indexes"));
+            if (toIsOracle(conn))
+            {
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Constraints"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "References"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Grants"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Triggers"));
+            }
+            new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Data"));
+            new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Information"));
+            if (toIsOracle(conn))
+            {
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Extents"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Script"));
+            }
+        }
+        else if (typ == qApp->translate("toBrowser", "Views"))
+        {
+            QPixmap image(const_cast<const char**>(view_xpm));
+            setPixmap(0, image);
+            if (toIsOracle(conn))
+            {
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "SQL"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Grants"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Data"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Dependencies"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Script"));
+            }
+        }
+        else if (typ == qApp->translate("toBrowser", "Sequences"))
+        {
+            QPixmap image(const_cast<const char**>(sequence_xpm));
+            setPixmap(0, image);
+            if (toIsOracle(conn))
+            {
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Grants"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Script"));
+            }
+        }
+        else if (typ == qApp->translate("toBrowser", "Code"))
+        {
+            QPixmap image(const_cast<const char**>(function_xpm));
+            setPixmap(0, image);
+            if (toIsOracle(conn))
+            {
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Grants"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Dependencies"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Script"));
+            }
+        }
+        else if (typ == qApp->translate("toBrowser", "Triggers"))
+        {
+            QPixmap image(const_cast<const char**>(function_xpm));
+            setPixmap(0, image);
+            if (toIsOracle(conn))
+            {
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Information"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Columns"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Grants"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Dependencies"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Script"));
+            }
+        }
+        else if (typ == qApp->translate("toBrowser", "Indexes"))
+        {
+            QPixmap image(const_cast<const char**>(index_xpm));
+            setPixmap(0, image);
+            if (toIsOracle(conn) || toIsSapDB(conn))
+            {
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Information"));
+            }
+            if (toIsOracle(conn))
+            {
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Information"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Extents"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Script"));
+            }
+        }
+        else if (typ == qApp->translate("toBrowser", "Synonyms"))
+        {
+            QPixmap image(const_cast<const char**>(synonym_xpm));
+            setPixmap(0, image);
+            if (toIsOracle(conn))
+            {
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Grants"));
+                new toTemplateTableItem(conn, this, qApp->translate("toBrowser", "Script"));
+            }
+        }
+    }
+
+    virtual QString allText(int col) const
+    {
+        QString txt = parent()->parent()->text(0);
+        txt += QString::fromLatin1(".");
+        txt += text(col);
+        return txt;
+    }
+
+    virtual QWidget *selectedWidget(QWidget *par)
+    {
+        QString object = text(0);
+        QString typ = parent()->text(0);
+        QString schema = parent()->parent()->text(0);
+        if (schema == qApp->translate("toBrowser", "No schemas"))
+            schema = Connection.database();
+
+        toToolWidget *tool = new toToolWidget(BrowserTool,
+                                              "",
+                                              par,
+                                              Connection);
+        if (typ == qApp->translate("toBrowser", "Code") || typ == qApp->translate("toBrowser", "Triggers"))
+        {
+            toResultField *fld = new toResultField(tool);
+            if (typ == qApp->translate("toBrowser", "Code"))
+                fld->setSQL(SQLSQLTemplate);
+            else
+                fld->setSQL(SQLTriggerBody);
+            fld->changeParams(schema, object);
+            return tool;
+        }
+        else if (typ == qApp->translate("toBrowser", "Tables") || typ == qApp->translate("toBrowser", "Views"))
+        {
+            toResultCols *cols = new toResultCols(tool);
+            cols->changeParams(schema, object);
+            return tool;
+        }
+        else if (typ == qApp->translate("toBrowser", "Indexes"))
+        {
+            toResultView *resultView = new toResultLong(true, false, toQuery::Background, tool);
+            resultView->setSQL(SQLIndexCols);
+            resultView->changeParams(schema, object);
+            return tool;
+        }
+        else if (typ == qApp->translate("toBrowser", "Synonyms") || typ == qApp->translate("toBrowser", "Sequences"))
+        {
+            toResultItem *resultItem = new toResultItem(2, true, tool);
+            if (typ == qApp->translate("toBrowser", "Synonyms"))
+            {
+                resultItem->setSQL(SQLSynonymInfo);
+                int pos = object.find(QString::fromLatin1("."));
+                if (pos >= 0)
+                {
+                    schema = object.mid(0, pos);
+                    object = object.mid(pos + 1);
+                }
+                else
+                {
+                    schema = QString::fromLatin1("PUBLIC");
+                }
+            }
+            else
+                resultItem->setSQL(SQLSequenceInfo);
+            resultItem->changeParams(schema, object);
+            return tool;
+        }
+        else
+        {
+            delete tool;
+            return NULL;
+        }
+    }
+};
+
+class toTemplateSchemaList : public toTemplateSQL
+{
+public:
+    toTemplateSchemaList(toConnection &conn, toTemplateItem *parent,
+                         const QString &name, const QString &sql)
+            : toTemplateSQL(conn, parent, name, sql)
+    { }
+    virtual toTemplateItem *createChild(const QString &name)
+    {
+        try
+        {
+            toBrowserFilter *filter = BrowseTemplate.filter();
+            toTemplateItem *item = new toTemplateSchemaItem(connection(), this, name);
+            if (filter && !filter->check(item))
+            {
+                delete item;
+                return NULL;
+            }
+            return item;
+        }
+        catch (...)
+        {
+            return NULL;
+        }
+    }
+    virtual toQList parameters(void)
+    {
+        toQList ret;
+        ret.insert(ret.end(), parent()->text(0));
+        toBrowserFilter *filter = BrowseTemplate.filter();
+        if (filter)
+            ret.insert(ret.end(), filter->wildCard());
+        else
+            ret.insert(ret.end(), toQValue(QString::fromLatin1("%")));
+        return ret;
+    }
+};
+
+class toTemplateDBItem : public toTemplateSQL
+{
+public:
+    toTemplateDBItem(toConnection &conn, toTemplateItem *parent,
+                     const QString &name)
+            : toTemplateSQL(conn, parent, name, toSQL::string(toSQL::TOSQL_USERLIST, conn))
+    {}
+    virtual ~toTemplateDBItem()
+    {
+        toBrowseTemplate *prov = dynamic_cast<toBrowseTemplate *>(&provider());
+        if (prov)
+            prov->removeItem(this);
+    }
+    virtual toTemplateItem *createChild(const QString &name)
+    {
+        try
+        {
+            toTemplateItem *item = new toTemplateItem(this, name);
+            QPixmap image(const_cast<const char**>(schema_xpm));
+            item->setPixmap(0, image);
+            QPixmap table(const_cast<const char**>(table_xpm));
+            QPixmap view(const_cast<const char**>(view_xpm));
+            QPixmap sequence(const_cast<const char**>(sequence_xpm));
+            QPixmap function(const_cast<const char**>(function_xpm));
+            QPixmap index(const_cast<const char**>(index_xpm));
+            QPixmap synonym(const_cast<const char**>(synonym_xpm));
+
+            toBrowserFilter *filter = BrowseTemplate.filter();
+            if (filter && filter->onlyOwnSchema() &&
+                    name.upper() != connection().user().upper())
+            {
+                delete item;
+                return NULL;
+            }
+
+            (new toTemplateSchemaList(connection(),
+                                      item,
+                                      qApp->translate("toBrowser", "Tables"),
+                                      toSQL::string(SQLListTables, connection())))->setPixmap(0, table);
+
+            if (toIsOracle(connection()) || toIsSapDB(connection()))
+            {
+                (new toTemplateSchemaList(connection(),
+                                          item,
+                                          qApp->translate("toBrowser", "Views"),
+                                          toSQL::string(SQLListView, connection())))->setPixmap(0, view);
+                (new toTemplateSchemaList(connection(),
+                                          item,
+                                          qApp->translate("toBrowser", "Indexes"),
+                                          toSQL::string(SQLListIndex, connection())))->setPixmap(0, index);
+            }
+
+            if (toIsOracle(connection()))
+            {
+                (new toTemplateSchemaList(connection(),
+                                          item,
+                                          qApp->translate("toBrowser", "Sequences"),
+                                          toSQL::string(SQLListSequence, connection())))->setPixmap(0, sequence);
+                (new toTemplateSchemaList(connection(),
+                                          item,
+                                          qApp->translate("toBrowser", "Synonyms"),
+                                          toSQL::string(SQLListSynonym, connection())))->setPixmap(0, synonym);
+                (new toTemplateSchemaList(connection(),
+                                          item,
+                                          qApp->translate("toBrowser", "Code"),
+                                          toSQL::string(SQLListSQLShort, connection())))->setPixmap(0, function);
+                (new toTemplateSchemaList(connection(),
+                                          item,
+                                          qApp->translate("toBrowser", "Triggers"),
+                                          toSQL::string(SQLListTrigger, connection())))->setPixmap(0, function);
+            }
+            return item;
+        }
+        catch (...)
+        {
+            return NULL;
+        }
+    }
+};
+
+class toBrowseTemplateItem : public toTemplateItem
+{
+public:
+    toBrowseTemplateItem(toTemplateProvider &prov, QListView *parent, const QString &name)
+            : toTemplateItem(prov, parent, name)
+    { }
+    virtual ~toBrowseTemplateItem()
+    {
+        dynamic_cast<toBrowseTemplate &>(provider()).removeItem(this);
+    }
+};
+
+void toBrowseTemplate::insertItems(QListView *parent, QToolBar *toolbar)
+{
+    if (!Registered)
+    {
+        connect(toMainWidget(), SIGNAL(addedConnection(const QString &)),
+                this, SLOT(addDatabase(const QString &)));
+        connect(toMainWidget(), SIGNAL(removedConnection(const QString &)),
+                this, SLOT(removeDatabase(const QString &)));
+    }
+    toTemplateItem *dbitem = new toBrowseTemplateItem(*this, parent, qApp->translate("toBrowser", "DB Browser"));
+    std::list<QString> conn = toMainWidget()->connections();
+    for (std::list<QString>::iterator i = conn.begin();i != conn.end();i++)
+    {
+        toConnection &conn = toMainWidget()->connection(*i);
+        new toTemplateDBItem(conn, dbitem, *i);
+    }
+    Parents.insert(Parents.end(), dbitem);
+
+    FilterButton = new QToolButton(toolbar);
+    FilterButton->setToggleButton(true);
+    FilterButton->setIconSet(QIconSet(QPixmap(const_cast<const char**>(filter_xpm))));
+    QToolTip::add
+        (FilterButton, tr("Define the object filter for database browser"));
+    connect(FilterButton, SIGNAL(toggled(bool)), this, SLOT(defineFilter()));
+
+    new QToolButton(QPixmap(const_cast<const char**>(nofilter_xpm)),
+                    qApp->translate("toBrowser", "Remove any object filter for database browser"),
+                    qApp->translate("toBrowser", "Remove any object filter for database browser"),
+                    this, SLOT(clearFilter(void)),
+                    toolbar);
+}
+
+void toBrowseTemplate::addDatabase(const QString &name)
+{
+    try
+    {
+        for (std::list<toTemplateItem *>::iterator i = Parents.begin();i != Parents.end();i++)
+            new toTemplateDBItem(toMainWidget()->connection(name), *i, name);
+    }
+    TOCATCH
+}
+
+void toBrowseTemplate::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    if (data.find(prefix + ":Filter:Type") != data.end())
+    {
+        Filter = new toBrowserFilter;
+        Filter->importData(data, prefix + ":Filter");
+    }
+}
+
+void toBrowseTemplate::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    if (Filter)
+        Filter->exportData(data, prefix + ":Filter");
+}
+
+void toBrowser::enableDisableConstraints(const QString &what)
+{
+    try
+    {
+        if (SecondTab)
+        {
+            toResultView *lst = dynamic_cast<toResultConstraint *>(SecondTab);
+            toConnection &conn = connection();
+            std::list<QString> migrate;
+            if (lst)
+            {
+                for (QListViewItem *item = lst->firstChild();item;item = item->nextSibling())
+                {
+                    if (item->isSelected())
+                    {
+                        toResultViewItem * res = dynamic_cast<toResultViewItem *>(item);
+                        if (res)
+                        {
+                            toPush(migrate,
+                                   conn.quote(schema()) + ":" +
+                                   "TABLE:" +
+                                   conn.quote(SecondText) + ":" +
+                                   "CONSTRAINT:" +
+                                   conn.quote(res->allText(0)) + ":" +
+                                   "DEFINITION:" +
+                                   what);
+                        }
+                    }
+                }
+            }
+            else
+            {
+                lst = dynamic_cast<toResultReferences *>(SecondTab);
+                if (lst)
+                {
+                    for (QListViewItem *item = lst->firstChild();item;item = item->nextSibling())
+                    {
+                        if (item->isSelected())
+                        {
+                            toResultViewItem * res = dynamic_cast<toResultViewItem *>(item);
+                            if (res)
+                            {
+                                toPush(migrate,
+                                       conn.quote(res->allText(0)) + ":" +
+                                       "TABLE:" +
+                                       conn.quote(res->allText(1)) + ":" +
+                                       "CONSTRAINT:" +
+                                       conn.quote(res->allText(2)) + ":" +
+                                       "DEFINITION:" +
+                                       what);
+                            }
+                        }
+                    }
+                }
+                else
+                {
+                    lst = dynamic_cast<toResultView *>(SecondTab);
+                    if (lst && lst->sqlName() == "toBrowser:TableTrigger")
+                    {
+                        // Need work
+                    }
+                }
+            }
+            if (migrate.begin() != migrate.end())
+            {
+                std::list<QString> drop;
+                toExtract extract(conn, this);
+                extract.setPrompt(false);
+                extract.setHeading(false);
+                QString sql = extract.migrate(drop, migrate);
+                conn.execute("BEGIN\n" + sql + "\nEND;");
+            }
+        }
+    }
+    TOCATCH
+}
+
+void toBrowser::enableConstraints(void)
+{
+    enableDisableConstraints("ENABLE");
+}
+
+void toBrowser::disableConstraints(void)
+{
+    enableDisableConstraints("DISABLE");
+}
+
+void toBrowser::testDBLink(void)
+{
+    if (SecondText.isEmpty())
+        return ;
+    toQList resultset;
+    try
+    {
+        resultset = toQuery::readQueryNull(toCurrentConnection(this),
+                                           "SELECT * FROM dual@" + SecondText);
+    }
+    TOCATCH;
+    //   } catch (...) {
+    //     TOMessageBox::information(this, "Database link", SecondText);
+    //   }
+    if (!resultset.empty())
+        TOMessageBox::information(this, "Database link", SecondText);
+}

Added: kde-extras/tora/branches/upstream/current/src/tobrowser.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowser.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowser.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,216 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOBROWSER_H
+#define TOBROWSER_H
+
+#include "config.h"
+#include "totemplate.h"
+#include "totool.h"
+
+#include <map>
+
+class QComboBox;
+class QListViewItem;
+class QPopupMenu;
+class QTabWidget;
+class QToolBar;
+class toBrowserFilter;
+class toResult;
+class toResultCombo;
+class toResultContent;
+class toResultFilter;
+class toResultView;
+class toMySQLUser;
+class toMySQLUserAccess;
+
+class toBrowser : public toToolWidget
+{
+    Q_OBJECT
+
+    toResultCombo *Schema;
+    QTabWidget *TopTab;
+    QPopupMenu *ToolMenu;
+
+    QString SecondText;
+    toResultView *FirstTab;
+    toResult *SecondTab;
+    toBrowserFilter *Filter;
+    QWidget *CurrentTop;
+
+    QToolButton *FilterButton;
+
+    toResultContent *ViewContent;
+    toResultContent *TableContent;
+    toResultContent *AccessContent;
+
+    std::map<QCString, toResultView *> Map;
+    std::map<QCString, toResult *> SecondMap;
+    void setNewFilter(toBrowserFilter *filter);
+    QTimer Poll;
+
+    QString schema(void);
+    void enableDisableConstraints(const QString &);
+    void dropSomething(const QString &, const QString &);
+
+    QListViewItem *selectedItem();
+#ifdef TOEXTENDED_MYSQL
+
+    toMySQLUser *UserPanel;
+    toMySQLUserAccess *AccessPanel;
+#endif
+public:
+    toBrowser(QWidget *parent, toConnection &connection);
+    virtual ~toBrowser();
+
+    virtual bool canHandle(toConnection &conn);
+
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+
+    virtual bool close(bool del);
+public slots:
+    void refresh(void);
+    void updateTabs(void);
+    void changeSchema(int);
+    void changeTab(QWidget *tab);
+    void changeSecond(void);
+    void changeSecondTab(QWidget *tab);
+    void changeItem();
+    void clearFilter(void);
+    void defineFilter(void);
+    void windowActivated(QWidget *widget);
+    void firstDone(void);
+    void focusObject(void);
+
+    void modifyTable(void);
+    void addTable(void);
+    void addIndex(void);
+    void modifyConstraint(void);
+    void modifyIndex(void);
+
+    void changeType(void);
+    void dropTable(void);
+    void truncateTable(void);
+
+    void checkTable(void);
+    void optimizeTable(void);
+    void analyzeTable(void);
+    void flushPrivs(void);
+
+    void dropIndex(void);
+    void fixIndexCols(void);
+
+    void changeConnection(void);
+    void enableConstraints(void);
+    void disableConstraints(void);
+
+    void testDBLink(void);
+
+    void displayIndexMenu(QPopupMenu *menu);
+    void displayTableMenu(QPopupMenu *menu);
+
+    void addUser(void);
+    void dropUser(void);
+};
+
+class toBrowseTemplate : public QObject, public toTemplateProvider
+{
+    Q_OBJECT
+
+    QToolButton *FilterButton;
+    toBrowserFilter *Filter;
+    std::list<toTemplateItem *> Parents;
+    bool Registered;
+public:
+    toBrowseTemplate(void)
+            : QObject(NULL, "browsertemplate"), toTemplateProvider("Browser")
+    {
+        Registered = false;
+        Filter = NULL;
+    }
+    virtual void insertItems(QListView *parent, QToolBar *toolbar);
+    virtual void removeItem(QListViewItem *item);
+    toBrowserFilter *filter(void)
+    {
+        return Filter;
+    }
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+public slots:
+    void addDatabase(const QString &);
+    void removeDatabase(const QString &);
+    void defineFilter(void);
+    void clearFilter(void);
+};
+
+class toBrowseButton : public QToolButton
+{
+    Q_OBJECT
+public:
+    toBrowseButton(const QIconSet &iconSet,
+                   const QString &textLabel,
+                   const QString & grouptext,
+                   QObject * receiver,
+                   const char * slot,
+                   QToolBar * parent,
+                   const char * name = 0);
+private slots:
+    void connectionChanged(void);
+};
+
+class toBrowserTool : public toTool
+{
+    Q_OBJECT
+
+protected:
+    virtual const char **pictureXPM(void);
+public:
+    toBrowserTool();
+    virtual const char *menuItem();
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection);
+    virtual bool canHandle(toConnection &conn);
+    virtual void customSetup(int id);
+    virtual void closeWindow(toConnection &connection){};    
+public slots:
+    void addTable(void);
+    void addConstraint(void);
+    void addIndex(void);
+};
+
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tobrowserconstraint.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserconstraint.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserconstraint.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,432 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tobrowserconstraint.h"
+#include "toconnection.h"
+#include "toresultcols.h"
+#include "toextract.h"
+#include "tomemoeditor.h"
+#include "tosql.h"
+#include "totableselect.h"
+
+#include <qapplication.h>
+#include <qbuttongroup.h>
+#include <qcombobox.h>
+#include <qinputdialog.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qprogressdialog.h>
+#include <qradiobutton.h>
+#include <qtimer.h>
+#include <qwidgetstack.h>
+
+#include "tobrowserconstraint.moc"
+#include "tobrowserconstraintui.moc"
+
+void toBrowserConstraint::modifyConstraint(toConnection &conn, const QString &owner, const QString &table, QWidget *parent)
+{
+    toBrowserConstraint dialog(conn, owner, table, parent);
+    if (dialog.exec())
+    {
+        dialog.changeConstraint();
+        std::list<toSQLParse::statement> statements = toSQLParse::parse(dialog.sql(), conn);
+        try
+        {
+            QProgressDialog prog(tr("Performing constraint changes"),
+                                 tr("Executing constraint change script"),
+                                 statements.size(),
+                                 &dialog, "progress", true);
+            prog.setCaption(tr("Performing constraint changes"));
+            for (std::list<toSQLParse::statement>::iterator j = statements.begin();j != statements.end();j++)
+            {
+                QString sql = toSQLParse::indentStatement(*j, conn);
+                int i = sql.length() - 1;
+                while (i >= 0 && (sql.at(i) == ';' || sql.at(i).isSpace()))
+                    i--;
+                if (i >= 0)
+                    conn.execute(sql.mid(0, i + 1));
+                qApp->processEvents();
+                if (prog.wasCancelled())
+                    throw tr("Cancelled ongoing constraint modification, constraints might be corrupt");
+            }
+        }
+        TOCATCH
+    }
+}
+
+toBrowserConstraint::toBrowserConstraint(toConnection &conn, const QString &owner, const QString &table, QWidget *parent, const char *name)
+        : toBrowserConstraintUI(parent, name, true), toConnectionWidget(conn, this), Extractor(conn, NULL)
+{
+    Extractor.setIndexes(false);
+    Extractor.setConstraints(true);
+    Extractor.setPrompt(false);
+    Extractor.setHeading(false);
+
+    if (toIsMySQL(connection()))
+        UniqueType->hide();
+
+    SourceColList->displayHeader(false);
+    UniqueColList->displayHeader(false);
+    CheckColumn->displayHeader(false);
+    ReferColList->displayHeader(false);
+
+    if (!owner.isEmpty() && !table.isEmpty())
+    {
+        QString fulltable = conn.quote(owner) + "." + conn.quote(table);
+        TableSelect->setTable(fulltable);
+        describeTable(fulltable);
+    }
+    else if (!owner.isEmpty())
+        TableSelect->setTable(conn.quote(owner));
+
+    connect(TableSelect, SIGNAL(selectTable(const QString &)), this, SLOT(changeTable(const QString &)));
+}
+
+void toBrowserConstraint::describeTable(const QString &table)
+{
+    try
+    {
+        QStringList parts = QStringList::split(".", table);
+        if (parts.size() > 1)
+        {
+            Owner = connection().unQuote(parts[0]);
+            Table = connection().unQuote(parts[1]);
+        }
+        else
+        {
+            Table = connection().unQuote(table);
+            if (toIsOracle(connection()))
+                Owner = connection().user();
+            else
+                Owner = connection().database();
+        }
+
+        Constraints.clear();
+        Current = QString::null;
+
+        if (!Table.isEmpty())
+        {
+            if ( OriginalDescription[table].empty() )
+            {
+                std::list<QString> Objects;
+                Objects.insert(Objects.end(), "TABLE:" + Owner + "." + Table);
+                Objects.insert(Objects.end(), "TABLE REFERENCES:" + Owner + "." + Table);
+
+                NewDescription[table] = Extractor.describe(Objects);
+            }
+            std::list<QString> &origDescription = NewDescription[table];
+
+            for (std::list<QString>::iterator i = origDescription.begin();i != origDescription.end();)
+            {
+                std::list<QString> ctx = toExtract::splitDescribe(*i);
+                toShift(ctx);
+                toShift(ctx);
+                toShift(ctx);
+                if (toShift(ctx) == "CONSTRAINT")
+                {
+                    QString name = toShift(ctx);
+                    if (toShift(ctx) == "DEFINITION")
+                        Constraints[name] = toShift(ctx);
+                    i++;
+                }
+                else
+                    i = origDescription.erase(i);  // Remove everything that isn't constraints
+            }
+            if ( OriginalDescription[table].empty() )
+                OriginalDescription[table] = NewDescription[table];
+        }
+        Name->clear();
+        for (std::map<QString, QString>::iterator i = Constraints.begin();i != Constraints.end();i++)
+            Name->insertItem((*i).first);
+
+        SourceColList->changeParams(Owner, Table);
+        UniqueColList->changeParams(Owner, Table);
+        CheckColumn->changeParams(Owner, Table);
+
+        ReferTable->clear();
+        std::list<toConnection::objectName> objects = connection().objects(false);
+        {
+            for (std::list<toConnection::objectName>::iterator i = objects.begin();i != objects.end();i++)
+            {
+                if ((*i).Type == "TABLE" && (*i).Owner == Owner)
+                    ReferTable->insertItem((*i).Name);
+            }
+        }
+
+        changeConstraint();
+    }
+    catch (const QString &exc)
+    {
+        toStatusMessage(exc);
+        reject();
+    }
+}
+
+QString toBrowserConstraint::sql()
+{
+    saveChanges();
+
+    std::list<QString> origTable;
+    std::list<QString> migrateTable;
+
+    {
+        for (std::map<QString, std::list<QString> >::iterator i = OriginalDescription.begin();i != OriginalDescription.end();i++)
+        {
+            std::list<QString> &cur = (*i).second;
+            for (std::list<QString>::iterator j = cur.begin();j != cur.end();j++)
+                toPush(origTable, *j);
+        }
+    }
+    {
+        for (std::map<QString, std::list<QString> >::iterator i = NewDescription.begin();i != NewDescription.end();i++)
+        {
+            std::list<QString> &cur = (*i).second;
+            for (std::list<QString>::iterator j = cur.begin();j != cur.end();j++)
+                toPush(migrateTable, *j);
+        }
+    }
+
+    origTable.sort();
+    migrateTable.sort();
+
+    return Extractor.migrate(origTable, migrateTable);
+}
+
+QString toBrowserConstraint::table(void)
+{
+    if (Owner.isEmpty() && Table.isEmpty())
+        return QString::null;
+    return connection().quote(Owner) + "." + connection().quote(Table);
+}
+
+void toBrowserConstraint::saveChanges(void)
+{
+    if (table().isEmpty())
+        return ;
+
+    changeConstraint();
+    std::list<QString> migrateTable;
+
+    std::list<QString> ctx;
+    toPush(ctx, Owner);
+    toPush(ctx, QString("TABLE"));
+    toPush(ctx, Table);
+    toPush(ctx, QString("CONSTRAINT"));
+
+    for (std::map<QString, QString>::iterator i = Constraints.begin();i != Constraints.end();i++)
+        toExtract::addDescription(migrateTable, ctx, (*i).first, "DEFINITION", (*i).second);
+
+    migrateTable.sort();
+    NewDescription[table()] = migrateTable;
+}
+
+void toBrowserConstraint::displaySQL()
+{
+    toMemoEditor memo(this, sql(), -1, -1, true, true);
+    memo.exec();
+}
+
+void toBrowserConstraint::addConstraint()
+{
+    if (Table.isEmpty())
+        return ;
+    bool ok = false;
+    QString name = QInputDialog::getText(tr("Enter new constraint name"),
+                                         tr("Enter name of new constraint."),
+                                         QLineEdit::Normal, QString::null, &ok, this);
+    if (ok)
+    {
+        Name->insertItem(name);
+        Name->setCurrentItem(Name->count() - 1);
+        changeConstraint();
+    }
+}
+
+void toBrowserConstraint::delConstraint()
+{
+    if (Name->count() > 0)
+    {
+        Constraints.erase(Current);
+        Current = QString::null;
+        Name->removeItem(Name->currentItem());
+        changeConstraint();
+    }
+}
+
+void toBrowserConstraint::parseConstraint(const QString &definition)
+{
+    if (definition.isEmpty())
+    {
+        Type->setEnabled(true);
+        SourceColumns->clear();
+        ReferedColumns->clear();
+        UniqueCols->clear();
+        CheckCondition->clear();
+        return ;
+    }
+
+    toSQLParse::statement statement = toSQLParse::parseStatement(definition, connection());
+    std::list<toSQLParse::statement>::iterator i = statement.subTokens().begin();
+    if (i == statement.subTokens().end())
+        return ;
+    Type->setEnabled(false);
+
+    QString type = (*i).String.upper();
+    i++;
+    if (type == "FOREIGN")
+    {
+        WidgetStack->raiseWidget(ReferentialPage);
+        Type->setCurrentItem(0);
+        if (i == statement.subTokens().end())
+            return ;
+
+        while (i != statement.subTokens().end() && (*i).Type != toSQLParse::statement::List)
+            i++;
+        if (i != statement.subTokens().end())
+            SourceColumns->setText(toSQLParse::indentStatement(*i, connection()));
+        else
+            return ;
+
+        i++;  // Ending )
+        if (i == statement.subTokens().end())
+            return ;
+        i++;  // REFERENCES
+        if (i == statement.subTokens().end())
+            return ;
+        i++;  // Refered table finally
+        if (i == statement.subTokens().end())
+            return ;
+        ReferTable->setCurrentText((*i).String);
+        changeRefered();
+        while (i != statement.subTokens().end() && (*i).Type != toSQLParse::statement::List)
+            i++;
+        if (i != statement.subTokens().end())
+            ReferedColumns->setText(toSQLParse::indentStatement(*i, connection()));
+    }
+    else if (type == "PRIMARY" || type == "UNIQUE")
+    {
+        WidgetStack->raiseWidget(PrimaryPage);
+        Type->setCurrentItem(2);
+        Primary->setChecked(type == "PRIMARY");
+        Unique->setChecked(type == "UNIQUE");
+        while (i != statement.subTokens().end() && (*i).Type != toSQLParse::statement::List)
+            i++;
+        if (i != statement.subTokens().end())
+            UniqueCols->setText(toSQLParse::indentStatement(*i, connection()));
+    }
+    else if (type == "CHECK")
+    {
+        WidgetStack->raiseWidget(CheckPage);
+        Type->setCurrentItem(1);
+        while (i != statement.subTokens().end() && (*i).Type != toSQLParse::statement::List)
+            i++;
+        if (i != statement.subTokens().end())
+            CheckCondition->setText(toSQLParse::indentStatement(*i, connection()));
+    }
+}
+
+void toBrowserConstraint::changeConstraint()
+{
+    if (!Current.isEmpty())
+    {
+        QString newDefinition;
+        if (WidgetStack->visibleWidget() == ReferentialPage)
+        {
+            QString table = ReferTable->currentText();
+            QString sourceCols = SourceColumns->text();
+            QString destinCols = ReferedColumns->text();
+            if (!table.isEmpty() && !sourceCols.isEmpty() && !destinCols.isEmpty())
+                newDefinition = "FOREIGN KEY (" + sourceCols + ") REFERENCES " + table + " (" + destinCols + ")";
+        }
+        else if (WidgetStack->visibleWidget() == PrimaryPage)
+        {
+            QString columns = UniqueCols->text();
+            if (!columns.isEmpty())
+                newDefinition = (Primary->isChecked() ? "PRIMARY KEY (" : "UNIQUE (") + columns + ")";
+        }
+        else if (WidgetStack->visibleWidget() == CheckPage)
+        {
+            QString checkCondition = CheckCondition->text();
+            if (!checkCondition.isEmpty())
+                newDefinition = "CHECK (" + checkCondition + ")";
+        }
+        if (!newDefinition.isEmpty() && !Current.isEmpty())
+            Constraints[Current] = newDefinition;
+    }
+    Current = Name->currentText();
+    if (Current.isEmpty())
+    {
+        parseConstraint(QString::null);
+        Type->setEnabled(!Current.isEmpty());
+    }
+    else
+        parseConstraint(Constraints[Current]);
+    WidgetStack->setEnabled(!Current.isEmpty());
+}
+
+void toBrowserConstraint::changeRefered(void)
+{
+    QStringList parts = QStringList::split(".", ReferTable->currentText());
+    if (parts.size() > 1)
+        ReferColList->changeParams(parts[0], parts[1]);
+    else
+        ReferColList->changeParams(ReferTable->currentText());
+}
+
+void toBrowserConstraint::changeType(int type)
+{
+    switch (type)
+    {
+    case 0:
+        WidgetStack->raiseWidget(ReferentialPage);
+        break;
+    case 1:
+        WidgetStack->raiseWidget(CheckPage);
+        break;
+    case 2:
+        WidgetStack->raiseWidget(PrimaryPage);
+        break;
+    }
+}
+
+void toBrowserConstraint::changeTable(const QString &table)
+{
+    saveChanges();
+    describeTable(table);
+}

Added: kde-extras/tora/branches/upstream/current/src/tobrowserconstraint.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserconstraint.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserconstraint.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,88 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOBROWSERCONSTRAINT_H
+#define TOBROWSERCONSTRAINT_H
+
+#include "config.h"
+#include "tobrowserconstraintui.h"
+#include "toextract.h"
+#include "totool.h"
+
+#include <map>
+#include <list>
+
+class toBrowserConstraint : public toBrowserConstraintUI, public toConnectionWidget
+{
+private:
+    Q_OBJECT
+
+    QString Owner;
+    QString Table;
+
+    toExtract Extractor;
+
+    std::map<QString, std::list<QString> > OriginalDescription;
+    std::map<QString, std::list<QString> > NewDescription;
+
+    QString Current;
+    QString BeforeUnquote;  // Hack for not incurring differences with weird MySQL quoting
+    QString AfterUnquote;
+    std::map<QString, QString> Constraints;
+
+    toBrowserConstraint(toConnection &conn, const QString &owner, const QString &table, QWidget *parent, const char *name = NULL);
+
+    QString table();
+    void parseConstraint(const QString &definition);
+
+    void saveChanges();
+    void describeTable(const QString &table);
+
+    QString sql(void);
+public:
+    static void modifyConstraint(toConnection &conn, const QString &owner, const QString &table, QWidget *parent);
+public slots:
+    virtual void displaySQL();
+    virtual void addConstraint();
+    virtual void delConstraint();
+    virtual void changeConstraint();
+    virtual void changeRefered();
+    virtual void changeType(int type);
+    virtual void changeTable(const QString &table);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,398 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tobrowserconstraintui.ui'
+**
+** Created: Tue Sep 18 08:21:20 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tobrowserconstraintui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qtoolbutton.h>
+#include <qwidgetstack.h>
+#include <qwidget.h>
+#include <qlineedit.h>
+#include <qframe.h>
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+#include "toresultcols.h"
+#include "totableselect.h"
+static const char* const image0_data[] = { 
+"16 16 3 1",
+". c None",
+"# c #000000",
+"a c #00ff00",
+"..........###...",
+"..........#a#...",
+"..........#a#...",
+".......####a####",
+".......#aaaaaaa#",
+".......####a####",
+"..........#a#...",
+"..........#a#...",
+"..........###...",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................"};
+
+static const char* const image1_data[] = { 
+"16 16 3 1",
+". c None",
+"# c #000000",
+"a c #ff0000",
+"................",
+"................",
+"................",
+".......#########",
+".......#aaaaaaa#",
+".......#########",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................"};
+
+static const char* const image2_data[] = { 
+"16 16 14 1",
+". c None",
+"# c #000000",
+"i c #181841",
+"e c #20205a",
+"k c #202462",
+"c c #292873",
+"l c #292c7b",
+"h c #313083",
+"b c #393cac",
+"d c #4140b4",
+"f c #4a4ccd",
+"j c #5a59f6",
+"g c #5a5df6",
+"a c #5a5dff",
+"................",
+".###..###..##...",
+"#..#.#..#..#....",
+"##...#...#.#....",
+"..#..#####.#....",
+"...#.#aab#.#....",
+"#..##cdaef##..#.",
+".##.#ghiha#####.",
+"....#aajkl#.....",
+".....#aaa#......",
+"......#####.....",
+".........###....",
+"..........###...",
+"...........##...",
+"................",
+"................"};
+
+
+/*
+ *  Constructs a toBrowserConstraintUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toBrowserConstraintUI::toBrowserConstraintUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl ),
+      image0( (const char **) image0_data ),
+      image1( (const char **) image1_data ),
+      image2( (const char **) image2_data )
+{
+    if ( !name )
+	setName( "toBrowserConstraintUI" );
+    toBrowserConstraintUILayout = new QGridLayout( this, 1, 1, 11, 6, "toBrowserConstraintUILayout"); 
+
+    layout2 = new QHBoxLayout( 0, 0, 6, "layout2"); 
+
+    Name = new QComboBox( FALSE, this, "Name" );
+    Name->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 3, 0, Name->sizePolicy().hasHeightForWidth() ) );
+    layout2->addWidget( Name );
+
+    Type = new QComboBox( FALSE, this, "Type" );
+    Type->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 1, 0, Type->sizePolicy().hasHeightForWidth() ) );
+    layout2->addWidget( Type );
+
+    toBrowserConstraintUILayout->addMultiCellLayout( layout2, 2, 2, 0, 3 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toBrowserConstraintUILayout->addItem( Spacer1, 4, 1 );
+
+    layout1 = new QHBoxLayout( 0, 0, 6, "layout1"); 
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+    TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)5, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
+    layout1->addWidget( TextLabel1 );
+
+    AddButton = new QToolButton( this, "AddButton" );
+    AddButton->setPixmap( image0 );
+    layout1->addWidget( AddButton );
+
+    DeleteButton = new QToolButton( this, "DeleteButton" );
+    DeleteButton->setPixmap( image1 );
+    layout1->addWidget( DeleteButton );
+
+    toBrowserConstraintUILayout->addMultiCellLayout( layout1, 1, 1, 0, 3 );
+
+    PushButton2 = new QPushButton( this, "PushButton2" );
+
+    toBrowserConstraintUILayout->addWidget( PushButton2, 4, 3 );
+
+    WidgetStack = new QWidgetStack( this, "WidgetStack" );
+    WidgetStack->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, WidgetStack->sizePolicy().hasHeightForWidth() ) );
+
+    ReferentialPage = new QWidget( WidgetStack, "ReferentialPage" );
+    ReferentialPageLayout = new QGridLayout( ReferentialPage, 1, 1, 11, 6, "ReferentialPageLayout"); 
+
+    TextLabel3 = new QLabel( ReferentialPage, "TextLabel3" );
+    TextLabel3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, TextLabel3->sizePolicy().hasHeightForWidth() ) );
+
+    ReferentialPageLayout->addMultiCellWidget( TextLabel3, 1, 2, 0, 0 );
+
+    SourceColumns = new QLineEdit( ReferentialPage, "SourceColumns" );
+
+    ReferentialPageLayout->addWidget( SourceColumns, 3, 0 );
+
+    SourceColList = new toResultCols( ReferentialPage, "SourceColList" );
+    SourceColList->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)2, (QSizePolicy::SizeType)7, 0, 0, SourceColList->sizePolicy().hasHeightForWidth() ) );
+    SourceColList->setFocusPolicy( toResultCols::StrongFocus );
+
+    ReferentialPageLayout->addWidget( SourceColList, 4, 0 );
+
+    TextLabel5 = new QLabel( ReferentialPage, "TextLabel5" );
+    TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) );
+
+    ReferentialPageLayout->addMultiCellWidget( TextLabel5, 2, 2, 2, 3 );
+
+    ReferedColumns = new QLineEdit( ReferentialPage, "ReferedColumns" );
+
+    ReferentialPageLayout->addMultiCellWidget( ReferedColumns, 3, 3, 2, 3 );
+
+    ReferColList = new toResultCols( ReferentialPage, "ReferColList" );
+    ReferColList->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)2, (QSizePolicy::SizeType)7, 0, 0, ReferColList->sizePolicy().hasHeightForWidth() ) );
+    ReferColList->setFocusPolicy( toResultCols::StrongFocus );
+
+    ReferentialPageLayout->addMultiCellWidget( ReferColList, 4, 4, 2, 3 );
+
+    Line3 = new QFrame( ReferentialPage, "Line3" );
+    Line3->setFrameShape( QFrame::HLine );
+    Line3->setFrameShadow( QFrame::Sunken );
+    Line3->setFrameShape( QFrame::HLine );
+
+    ReferentialPageLayout->addMultiCellWidget( Line3, 1, 1, 2, 3 );
+
+    Line1 = new QFrame( ReferentialPage, "Line1" );
+    Line1->setFrameShape( QFrame::VLine );
+    Line1->setFrameShadow( QFrame::Sunken );
+    Line1->setFrameShape( QFrame::VLine );
+
+    ReferentialPageLayout->addMultiCellWidget( Line1, 0, 4, 1, 1 );
+
+    ReferTable = new QComboBox( FALSE, ReferentialPage, "ReferTable" );
+    ReferTable->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, ReferTable->sizePolicy().hasHeightForWidth() ) );
+    ReferTable->setEditable( TRUE );
+
+    ReferentialPageLayout->addWidget( ReferTable, 0, 3 );
+
+    TextLabel4 = new QLabel( ReferentialPage, "TextLabel4" );
+    TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)1, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) );
+
+    ReferentialPageLayout->addWidget( TextLabel4, 0, 2 );
+    WidgetStack->addWidget( ReferentialPage, 0 );
+
+    PrimaryPage = new QWidget( WidgetStack, "PrimaryPage" );
+    PrimaryPageLayout = new QVBoxLayout( PrimaryPage, 11, 6, "PrimaryPageLayout"); 
+
+    UniqueType = new QButtonGroup( PrimaryPage, "UniqueType" );
+    UniqueType->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)4, 0, 0, UniqueType->sizePolicy().hasHeightForWidth() ) );
+    UniqueType->setColumnLayout(0, Qt::Vertical );
+    UniqueType->layout()->setSpacing( 6 );
+    UniqueType->layout()->setMargin( 11 );
+    UniqueTypeLayout = new QGridLayout( UniqueType->layout() );
+    UniqueTypeLayout->setAlignment( Qt::AlignTop );
+
+    Primary = new QRadioButton( UniqueType, "Primary" );
+    Primary->setChecked( TRUE );
+
+    UniqueTypeLayout->addWidget( Primary, 0, 0 );
+
+    Unique = new QRadioButton( UniqueType, "Unique" );
+
+    UniqueTypeLayout->addWidget( Unique, 0, 1 );
+    PrimaryPageLayout->addWidget( UniqueType );
+
+    TextLabel2 = new QLabel( PrimaryPage, "TextLabel2" );
+    PrimaryPageLayout->addWidget( TextLabel2 );
+
+    UniqueCols = new QLineEdit( PrimaryPage, "UniqueCols" );
+    PrimaryPageLayout->addWidget( UniqueCols );
+
+    UniqueColList = new toResultCols( PrimaryPage, "UniqueColList" );
+    UniqueColList->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, UniqueColList->sizePolicy().hasHeightForWidth() ) );
+    UniqueColList->setFocusPolicy( toResultCols::StrongFocus );
+    PrimaryPageLayout->addWidget( UniqueColList );
+    WidgetStack->addWidget( PrimaryPage, 1 );
+
+    CheckPage = new QWidget( WidgetStack, "CheckPage" );
+    CheckPageLayout = new QGridLayout( CheckPage, 1, 1, 11, 6, "CheckPageLayout"); 
+
+    TextLabel2_2 = new QLabel( CheckPage, "TextLabel2_2" );
+
+    CheckPageLayout->addWidget( TextLabel2_2, 2, 0 );
+
+    TextLabel6 = new QLabel( CheckPage, "TextLabel6" );
+
+    CheckPageLayout->addWidget( TextLabel6, 0, 0 );
+
+    CheckCondition = new QLineEdit( CheckPage, "CheckCondition" );
+
+    CheckPageLayout->addWidget( CheckCondition, 3, 0 );
+
+    CheckColumn = new toResultCols( CheckPage, "CheckColumn" );
+    CheckColumn->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, CheckColumn->sizePolicy().hasHeightForWidth() ) );
+    CheckColumn->setFocusPolicy( toResultCols::StrongFocus );
+
+    CheckPageLayout->addWidget( CheckColumn, 1, 0 );
+    WidgetStack->addWidget( CheckPage, 2 );
+
+    toBrowserConstraintUILayout->addMultiCellWidget( WidgetStack, 3, 3, 0, 3 );
+
+    ApplyButton = new QPushButton( this, "ApplyButton" );
+    ApplyButton->setDefault( TRUE );
+
+    toBrowserConstraintUILayout->addWidget( ApplyButton, 4, 2 );
+
+    ToolButton1 = new QToolButton( this, "ToolButton1" );
+    ToolButton1->setFocusPolicy( QToolButton::StrongFocus );
+    ToolButton1->setPixmap( image2 );
+
+    toBrowserConstraintUILayout->addWidget( ToolButton1, 4, 0 );
+
+    TableSelect = new toTableSelect( this, "TableSelect" );
+
+    toBrowserConstraintUILayout->addMultiCellWidget( TableSelect, 0, 0, 0, 3 );
+    languageChange();
+    resize( QSize(640, 669).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( ToolButton1, SIGNAL( clicked() ), this, SLOT( displaySQL() ) );
+    connect( PushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( ApplyButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( Name, SIGNAL( activated(int) ), this, SLOT( changeConstraint() ) );
+    connect( AddButton, SIGNAL( clicked() ), this, SLOT( addConstraint() ) );
+    connect( DeleteButton, SIGNAL( clicked() ), this, SLOT( delConstraint() ) );
+    connect( ReferTable, SIGNAL( activated(const QString&) ), this, SLOT( changeRefered() ) );
+    connect( Type, SIGNAL( activated(int) ), this, SLOT( changeType(int) ) );
+
+    // tab order
+    setTabOrder( Name, ReferTable );
+    setTabOrder( ReferTable, SourceColumns );
+    setTabOrder( SourceColumns, ReferedColumns );
+    setTabOrder( ReferedColumns, SourceColList );
+    setTabOrder( SourceColList, ReferColList );
+    setTabOrder( ReferColList, Primary );
+    setTabOrder( Primary, UniqueCols );
+    setTabOrder( UniqueCols, UniqueColList );
+    setTabOrder( UniqueColList, CheckColumn );
+    setTabOrder( CheckColumn, CheckCondition );
+    setTabOrder( CheckCondition, ToolButton1 );
+    setTabOrder( ToolButton1, ApplyButton );
+    setTabOrder( ApplyButton, PushButton2 );
+
+    // buddies
+    TextLabel1->setBuddy( Name );
+    TextLabel3->setBuddy( SourceColumns );
+    TextLabel5->setBuddy( ReferedColumns );
+    TextLabel4->setBuddy( ReferTable );
+    TextLabel2->setBuddy( UniqueCols );
+    TextLabel2_2->setBuddy( CheckCondition );
+    TextLabel6->setBuddy( CheckColumn );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toBrowserConstraintUI::~toBrowserConstraintUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toBrowserConstraintUI::languageChange()
+{
+    setCaption( tr( "Constraint info" ) );
+    Type->clear();
+    Type->insertItem( tr( "Foreign Key" ) );
+    Type->insertItem( tr( "Check" ) );
+    Type->insertItem( tr( "Unique Primary Key" ) );
+    TextLabel1->setText( tr( "&Name" ) );
+    AddButton->setText( QString::null );
+    DeleteButton->setText( QString::null );
+    PushButton2->setText( tr( "Cancel" ) );
+    TextLabel3->setText( tr( "&Columns" ) );
+    TextLabel5->setText( tr( "R&efered columns" ) );
+    TextLabel4->setText( tr( "Refers &To" ) );
+    UniqueType->setTitle( tr( "&Type" ) );
+    Primary->setText( tr( "Primary key" ) );
+    Unique->setText( tr( "Unique" ) );
+    TextLabel2->setText( tr( "&Columns" ) );
+    TextLabel2_2->setText( tr( "C&ondition" ) );
+    TextLabel6->setText( tr( "&Column" ) );
+    ApplyButton->setText( tr( "&Ok" ) );
+    ToolButton1->setText( QString::null );
+    QToolTip::add( ToolButton1, tr( "Display SQL to create this constraint" ) );
+}
+
+void toBrowserConstraintUI::addConstraint()
+{
+    qWarning( "toBrowserConstraintUI::addConstraint(): Not implemented yet" );
+}
+
+void toBrowserConstraintUI::displaySQL()
+{
+    qWarning( "toBrowserConstraintUI::displaySQL(): Not implemented yet" );
+}
+
+void toBrowserConstraintUI::delConstraint()
+{
+    qWarning( "toBrowserConstraintUI::delConstraint(): Not implemented yet" );
+}
+
+void toBrowserConstraintUI::changeConstraint()
+{
+    qWarning( "toBrowserConstraintUI::changeConstraint(): Not implemented yet" );
+}
+
+void toBrowserConstraintUI::changeRefered()
+{
+    qWarning( "toBrowserConstraintUI::changeRefered(): Not implemented yet" );
+}
+
+void toBrowserConstraintUI::changeType(int)
+{
+    qWarning( "toBrowserConstraintUI::changeType(int): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,106 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tobrowserconstraintui.ui'
+**
+** Created: Tue Sep 18 08:21:20 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOBROWSERCONSTRAINTUI_H
+#define TOBROWSERCONSTRAINTUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toResultCols;
+class toTableSelect;
+class QComboBox;
+class QLabel;
+class QToolButton;
+class QPushButton;
+class QWidgetStack;
+class QWidget;
+class QLineEdit;
+class QFrame;
+class QButtonGroup;
+class QRadioButton;
+
+class toBrowserConstraintUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toBrowserConstraintUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toBrowserConstraintUI();
+
+    QComboBox* Name;
+    QComboBox* Type;
+    QLabel* TextLabel1;
+    QToolButton* AddButton;
+    QToolButton* DeleteButton;
+    QPushButton* PushButton2;
+    QWidgetStack* WidgetStack;
+    QWidget* ReferentialPage;
+    QLabel* TextLabel3;
+    QLineEdit* SourceColumns;
+    toResultCols* SourceColList;
+    QLabel* TextLabel5;
+    QLineEdit* ReferedColumns;
+    toResultCols* ReferColList;
+    QFrame* Line3;
+    QFrame* Line1;
+    QComboBox* ReferTable;
+    QLabel* TextLabel4;
+    QWidget* PrimaryPage;
+    QButtonGroup* UniqueType;
+    QRadioButton* Primary;
+    QRadioButton* Unique;
+    QLabel* TextLabel2;
+    QLineEdit* UniqueCols;
+    toResultCols* UniqueColList;
+    QWidget* CheckPage;
+    QLabel* TextLabel2_2;
+    QLabel* TextLabel6;
+    QLineEdit* CheckCondition;
+    toResultCols* CheckColumn;
+    QPushButton* ApplyButton;
+    QToolButton* ToolButton1;
+    toTableSelect* TableSelect;
+
+public slots:
+    virtual void addConstraint();
+    virtual void displaySQL();
+    virtual void delConstraint();
+    virtual void changeConstraint();
+    virtual void changeRefered();
+    virtual void changeType(int);
+
+protected:
+    QGridLayout* toBrowserConstraintUILayout;
+    QSpacerItem* Spacer1;
+    QHBoxLayout* layout2;
+    QHBoxLayout* layout1;
+    QGridLayout* ReferentialPageLayout;
+    QVBoxLayout* PrimaryPageLayout;
+    QGridLayout* UniqueTypeLayout;
+    QGridLayout* CheckPageLayout;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+    QPixmap image1;
+    QPixmap image2;
+    QPixmap image3;
+    QPixmap image4;
+
+};
+
+#endif // TOBROWSERCONSTRAINTUI_H

Added: kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserconstraintui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,639 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>toBrowserConstraintUI</class>
+<widget class="QDialog">
+    <property name="name">
+        <cstring>toBrowserConstraintUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>640</width>
+            <height>669</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>Constraint info</string>
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>11</number>
+        </property>
+        <property name="spacing">
+            <number>6</number>
+        </property>
+        <widget class="QLayoutWidget" row="2" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>layout2</cstring>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="QComboBox">
+                    <property name="name">
+                        <cstring>Name</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>3</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                </widget>
+                <widget class="QComboBox">
+                    <item>
+                        <property name="text">
+                            <string>Foreign Key</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Check</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Unique Primary Key</string>
+                        </property>
+                    </item>
+                    <property name="name">
+                        <cstring>Type</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>1</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <spacer row="4" column="1">
+            <property name="name">
+                <cstring>Spacer1</cstring>
+            </property>
+            <property name="orientation">
+                <enum>Horizontal</enum>
+            </property>
+            <property name="sizeType">
+                <enum>Expanding</enum>
+            </property>
+            <property name="sizeHint">
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>layout1</cstring>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>TextLabel1</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>5</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Name</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>Name</cstring>
+                    </property>
+                </widget>
+                <widget class="QToolButton">
+                    <property name="name">
+                        <cstring>AddButton</cstring>
+                    </property>
+                    <property name="text">
+                        <string></string>
+                    </property>
+                    <property name="pixmap">
+                        <pixmap>image0</pixmap>
+                    </property>
+                </widget>
+                <widget class="QToolButton">
+                    <property name="name">
+                        <cstring>DeleteButton</cstring>
+                    </property>
+                    <property name="text">
+                        <string></string>
+                    </property>
+                    <property name="pixmap">
+                        <pixmap>image1</pixmap>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <widget class="QPushButton" row="4" column="3">
+            <property name="name">
+                <cstring>PushButton2</cstring>
+            </property>
+            <property name="text">
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <widget class="QWidgetStack" row="3" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>WidgetStack</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>7</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>ReferentialPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>0</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QLabel" row="1" column="0" rowspan="2" colspan="1">
+                        <property name="name">
+                            <cstring>TextLabel3</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>7</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="text">
+                            <string>&amp;Columns</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>SourceColumns</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLineEdit" row="3" column="0">
+                        <property name="name">
+                            <cstring>SourceColumns</cstring>
+                        </property>
+                    </widget>
+                    <widget class="toResultCols" row="4" column="0">
+                        <property name="name">
+                            <cstring>SourceColList</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>2</hsizetype>
+                                <vsizetype>7</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="focusPolicy">
+                            <enum>StrongFocus</enum>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="2" column="2" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>TextLabel5</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>7</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="text">
+                            <string>R&amp;efered columns</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>ReferedColumns</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLineEdit" row="3" column="2" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>ReferedColumns</cstring>
+                        </property>
+                    </widget>
+                    <widget class="toResultCols" row="4" column="2" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>ReferColList</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>2</hsizetype>
+                                <vsizetype>7</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="focusPolicy">
+                            <enum>StrongFocus</enum>
+                        </property>
+                    </widget>
+                    <widget class="Line" row="1" column="2" rowspan="1" colspan="2">
+                        <property name="name">
+                            <cstring>Line3</cstring>
+                        </property>
+                        <property name="frameShape">
+                            <enum>HLine</enum>
+                        </property>
+                        <property name="frameShadow">
+                            <enum>Sunken</enum>
+                        </property>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
+                        </property>
+                    </widget>
+                    <widget class="Line" row="0" column="1" rowspan="5" colspan="1">
+                        <property name="name">
+                            <cstring>Line1</cstring>
+                        </property>
+                        <property name="frameShape">
+                            <enum>VLine</enum>
+                        </property>
+                        <property name="frameShadow">
+                            <enum>Sunken</enum>
+                        </property>
+                        <property name="orientation">
+                            <enum>Vertical</enum>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox" row="0" column="3">
+                        <property name="name">
+                            <cstring>ReferTable</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>7</hsizetype>
+                                <vsizetype>0</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="editable">
+                            <bool>true</bool>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="0" column="2">
+                        <property name="name">
+                            <cstring>TextLabel4</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>5</hsizetype>
+                                <vsizetype>1</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="text">
+                            <string>Refers &amp;To</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>ReferTable</cstring>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>PrimaryPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>1</number>
+                </attribute>
+                <vbox>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QButtonGroup">
+                        <property name="name">
+                            <cstring>UniqueType</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>5</hsizetype>
+                                <vsizetype>4</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="title">
+                            <string>&amp;Type</string>
+                        </property>
+                        <grid>
+                            <property name="name">
+                                <cstring>unnamed</cstring>
+                            </property>
+                            <property name="margin">
+                                <number>11</number>
+                            </property>
+                            <property name="spacing">
+                                <number>6</number>
+                            </property>
+                            <widget class="QRadioButton" row="0" column="0">
+                                <property name="name">
+                                    <cstring>Primary</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Primary key</string>
+                                </property>
+                                <property name="checked">
+                                    <bool>true</bool>
+                                </property>
+                            </widget>
+                            <widget class="QRadioButton" row="0" column="1">
+                                <property name="name">
+                                    <cstring>Unique</cstring>
+                                </property>
+                                <property name="text">
+                                    <string>Unique</string>
+                                </property>
+                            </widget>
+                        </grid>
+                    </widget>
+                    <widget class="QLabel">
+                        <property name="name">
+                            <cstring>TextLabel2</cstring>
+                        </property>
+                        <property name="text">
+                            <string>&amp;Columns</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>UniqueCols</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLineEdit">
+                        <property name="name">
+                            <cstring>UniqueCols</cstring>
+                        </property>
+                    </widget>
+                    <widget class="toResultCols">
+                        <property name="name">
+                            <cstring>UniqueColList</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>5</hsizetype>
+                                <vsizetype>7</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="focusPolicy">
+                            <enum>StrongFocus</enum>
+                        </property>
+                    </widget>
+                </vbox>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>CheckPage</cstring>
+                </property>
+                <attribute name="id">
+                    <number>2</number>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QLabel" row="2" column="0">
+                        <property name="name">
+                            <cstring>TextLabel2_2</cstring>
+                        </property>
+                        <property name="text">
+                            <string>C&amp;ondition</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>CheckCondition</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLabel" row="0" column="0">
+                        <property name="name">
+                            <cstring>TextLabel6</cstring>
+                        </property>
+                        <property name="text">
+                            <string>&amp;Column</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>CheckColumn</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLineEdit" row="3" column="0">
+                        <property name="name">
+                            <cstring>CheckCondition</cstring>
+                        </property>
+                    </widget>
+                    <widget class="toResultCols" row="1" column="0">
+                        <property name="name">
+                            <cstring>CheckColumn</cstring>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>5</hsizetype>
+                                <vsizetype>7</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="focusPolicy">
+                            <enum>StrongFocus</enum>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+        </widget>
+        <widget class="QPushButton" row="4" column="2">
+            <property name="name">
+                <cstring>ApplyButton</cstring>
+            </property>
+            <property name="text">
+                <string>&amp;Ok</string>
+            </property>
+            <property name="default">
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget class="QToolButton" row="4" column="0">
+            <property name="name">
+                <cstring>ToolButton1</cstring>
+            </property>
+            <property name="focusPolicy">
+                <enum>StrongFocus</enum>
+            </property>
+            <property name="text">
+                <string></string>
+            </property>
+            <property name="pixmap">
+                <pixmap>image2</pixmap>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>Display SQL to create this constraint</string>
+            </property>
+        </widget>
+        <widget class="toTableSelect" row="0" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>TableSelect</cstring>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toResultCols</class>
+        <header location="local">toresultcols.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+        <pixmap>image3</pixmap>
+    </customwidget>
+    <customwidget>
+        <class>toTableSelect</class>
+        <header location="local">totableselect.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>7</verdata>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+        <pixmap>image4</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image name="image0">
+        <data format="XPM.GZ" length="409">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022630543251d2e253d856405bffcbc54105b19c856360003103711c24d4b8370f5e04059591948a28925122106d40814030264b144085026a08e583b70b80f02064cacd69a0b00f9604c22</data>
+    </image>
+    <image name="image1">
+        <data format="XPM.GZ" length="409">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022630543251d2e253d856405bffcbc54105b19c856360003103711c44d4b8371f5d0001962ca30802c960801ca04d45162efc08bd55a7301005e924b74</data>
+    </image>
+    <image name="image2">
+        <data format="XPM.GZ" length="575">789c6d90cf6e83300c87ef3c45446e684a13081434f51136ed3869dac11828f4cf2a6ddd619af6eeebcf848ab25921f2f7c5d88455a29e9f1e54b28a3ece741e58714fef2a693e8fc7af97d7cd7714bb426179e5e2bb28368ad5e3e9ad45ae2fb9b612c001e84a577aa96c81a94d6d4ec07d405fa44016acd2729d010f01795d037b60e6325bca692d58654c0c6c80de795b7b6027489eb901ee8039e5555700b7019b11e98a9d5c6711e2b4d666da82436e64c30a0ed9f85cdd5881983b5410d5332755dc50dbc99869aed1db7ee8696c307ddfe5d5ddfea0cdac9f48d2e6d685c1b7ce84ab2c5c908b7ff09ffbdb6f723ff7d12f66576feb</data>
+    </image>
+    <image name="image3">
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+    <image name="image4">
+        <data format="XPM.GZ" length="4462">789c9d97c76e24490e86effd1442f3d65870d2451a0ce6206f5adeb4cc620f8c34f2553225b5a4c1befb46927fe6a1d4c0ccac4287fa8a0c26834193f5dbb785b3fd9d856fbf7d799ec9ecba5ea8afe469e15bf3727ffffeeffffcf1e797af49b2d0ffc7d142f2f55f5fbe1ecc16ea85dde9a4ed81290045faa77ca49cf4ab67ba1e3953969173651ab9d4fdf1c8a27c3872ad7c3c72d3b32c2a67c3f3444636fbef23eb7e590267e68fcc4656395d8dacf6d938ef97eaef289781cddebdb2846fccff44b989ba58e3411f3dc75158e6df1d3889539517ca49bf54fe43398d1dec4f46567f685fd9c539f43fc025f80c1c3ce8d93f28e77185f8bf0c6cfae4c0b5f9c3c6e5c0542a4b5876fe13708df39d2bd7716372aa8c93c4e4723bb2f977aadc26ceec4bdb7310e6b0bfab9c2445ecd49f1370694cebca65d260ffa6711a41aef14d24e94cee6be3348e0ae5e9c8765f07ca3e8db17f0f9c825794eb3489351fe9bb7217e4969f29388bd51ee9fda5715a19730696b852fea95c6471647ca95cf64bcf43e0cef4657b647bfe6acf213d6bb32f9a9f5992b5a64f9a8f990b6cf9ecc15d6cf9acf6b2da55a8a75cb973dee4b2d1b38b5c05de02434e87e01aacfb351df5bebddea74b5c67f9c795711ea15e357e2ecde358fb87efc0a867df8cac728a074e62e527706afb59f3cf6583be5c28bb3c35f693812d1fbdc6dbe57966fec932d899ffa4f7e38adca17e34beaeca4b9c271a18f1d5fc739257b0d70d9c68be7bed7fcee7827ab91cd8e4740cf6b19d4ffb87ab07b9bf516e72d4a3ac821b9cef6e60d84f47367ded2fae1d9f7704f6163f79000ffde27660f387ed3c5dbf54dfeebb0bf6acbe6b706bfa5ef32f8f8b18f5bf0f463f20edb77956a4e68fbc80b3c4facd163847be6bfde72ec86dbeac82715fbc0286be683cf3bc081d44f7df80d344fb0b6b7de64581fb916765297263d6fccd9b7ee97e566e8b06cfdb1f59cf2bda2f8bbc2c11df0c5c41aefdb328ca22b1feb0012eedbce24736f91b18fb796d64eb87cb60817dcdafb07d906bfd14d22f659d8785ef97b2f6d7b2df6ef1d6fb2babaac6f92e8c25b27ecc1f239b7f3a5fca5a8678ea7c2d9bc0e6ef1238b3fca2c7814d5f4cbf9334b5f833384bed3c7a5f5514f4adbe2ec07962e7590457f06f6f649b977afe2a16f42f5e070bfc591e18f7a5f1a812a9e0df39d827da4fbd8c6ccfd7785569bf945f953371a9d5a3de67950bfa2d75c63eb2fb15bdcfaaf011e6c7263846bf8f4636f91618f3c7d3c0f047fb69550efab2074e12bd6fd27957553ec33c5b043bcc7f9d0795f818fdb501a3df8ae673e507ff69021eea37063bc45ffb73550736ff36c0a84f3e0317a86f8b5f139e6ffe1f821de6d9127898ff3be00a7c3ab2cd03e3d697560ff40016e47b3bb2e96bbd559d8f32bbff4b7065f193042c98873acf240af6adbf3c83c5f2954bb0c7bcd77c107d81d2fdebc63e33ff640aaecc9e1c8151df5c803dfaadc64b52dfa03ed64636ffb4ff4b2867f453ede7227586fcd3f9264ded91fffafe236d5da37fe83c91ceb7b9e5b7f6731ff92ed7f747d6fbf7e185cf58347e3e6932e47b3430fa893edf87d795c2fc3f003b67f5f902cec17abfde0dfa3c053b3c5ffb832fc2eb8fddcf233887fc195c801f46b6f3cdc02558fba72f7d2d1a7f7e321ee58fe0cad86bbff24dd3e2fe74fef836b0c6eb60d62fa6bf5e07b3419f853dd7dc70fb8bd5f1255fd90ed30f9f3c5ff30ddff21ddff384a7fcc08ffcc4cf61cdf8855ff9e79c7e1db4dff89d3f7891977899577895d7789d377893b7f83b6fcfe937bc13b477798ff7f9800ff928ac633ee11f7cca6761d7f99c7e1b3cb908da11c7413be1943376e153cc39175c72f549ff9e17c31744429e6a6aa8a58e2ee98aaee9866e7f617fc24b7417a4f734a1293dd0233dd133cd8285177aa5f9f3b63ca5377aa78f607b919668995682e62aadd17ab0b1419b9ff41f682b48bed336edd02eed05ed7d5ea3033a0cdf1ed1f127fd273ae123fa41a774a6b685cee982228a837e42e927fd47caf8985c38651eb40b2ac38e4a5842658a97fab33fd248cb87d2c9a55cc9b5dcc82d1fc99ddccb44a6f230af2f8ff224cf417f262ff22a3fe54ddee543166549966545567f617f4dd66523dc6b2c9bb225df655b7682f692ecca9eeccfe97772c09b722847722c27c1f3eb70f66bf9116c9fca999ccbc59cfe25bf4a143a5ef8992561324a78bd92522acf9ebc78efe7cf7b153276db37bef59dbff457fedadff85b7f27abfede4ffcd4cf9ff76faeff4fffefeff8c7f5fedfdfbffc0fa355c495</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>ToolButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserConstraintUI</receiver>
+        <slot>displaySQL()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserConstraintUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>ApplyButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserConstraintUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>Name</sender>
+        <signal>activated(int)</signal>
+        <receiver>toBrowserConstraintUI</receiver>
+        <slot>changeConstraint()</slot>
+    </connection>
+    <connection>
+        <sender>AddButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserConstraintUI</receiver>
+        <slot>addConstraint()</slot>
+    </connection>
+    <connection>
+        <sender>DeleteButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserConstraintUI</receiver>
+        <slot>delConstraint()</slot>
+    </connection>
+    <connection>
+        <sender>ReferTable</sender>
+        <signal>activated(const QString&amp;)</signal>
+        <receiver>toBrowserConstraintUI</receiver>
+        <slot>changeRefered()</slot>
+    </connection>
+    <connection>
+        <sender>Type</sender>
+        <signal>activated(int)</signal>
+        <receiver>toBrowserConstraintUI</receiver>
+        <slot>changeType(int)</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>Name</tabstop>
+    <tabstop>ReferTable</tabstop>
+    <tabstop>SourceColumns</tabstop>
+    <tabstop>ReferedColumns</tabstop>
+    <tabstop>SourceColList</tabstop>
+    <tabstop>ReferColList</tabstop>
+    <tabstop>Primary</tabstop>
+    <tabstop>UniqueCols</tabstop>
+    <tabstop>UniqueColList</tabstop>
+    <tabstop>CheckColumn</tabstop>
+    <tabstop>CheckCondition</tabstop>
+    <tabstop>ToolButton1</tabstop>
+    <tabstop>ApplyButton</tabstop>
+    <tabstop>PushButton2</tabstop>
+</tabstops>
+<slots>
+    <slot>addConstraint()</slot>
+    <slot>displaySQL()</slot>
+    <slot>delConstraint()</slot>
+    <slot>changeConstraint()</slot>
+    <slot>changeRefered()</slot>
+    <slot>changeType(int)</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+    <includehint>toresultcols.h</includehint>
+    <includehint>toresultcols.h</includehint>
+    <includehint>toresultcols.h</includehint>
+    <includehint>toresultcols.h</includehint>
+    <includehint>totableselect.h</includehint>
+</includehints>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,209 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tobrowserfilterui.ui'
+**
+** Created: Tue Sep 18 08:21:20 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tobrowserfilterui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qbuttongroup.h>
+#include <qlineedit.h>
+#include <qradiobutton.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "toresultview.h"
+
+/*
+ *  Constructs a toBrowserFilterUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toBrowserFilterUI::toBrowserFilterUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toBrowserFilterUI" );
+    toBrowserFilterUILayout = new QGridLayout( this, 1, 1, 11, 6, "toBrowserFilterUILayout"); 
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toBrowserFilterUILayout->addItem( Spacer1, 4, 0 );
+
+    OkButton = new QPushButton( this, "OkButton" );
+    OkButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, OkButton->sizePolicy().hasHeightForWidth() ) );
+    OkButton->setDefault( TRUE );
+
+    toBrowserFilterUILayout->addWidget( OkButton, 4, 1 );
+
+    Cancel = new QPushButton( this, "Cancel" );
+    Cancel->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, Cancel->sizePolicy().hasHeightForWidth() ) );
+
+    toBrowserFilterUILayout->addWidget( Cancel, 4, 2 );
+
+    Buttons = new QButtonGroup( this, "Buttons" );
+    Buttons->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)4, 0, 0, Buttons->sizePolicy().hasHeightForWidth() ) );
+    Buttons->setColumnLayout(0, Qt::Vertical );
+    Buttons->layout()->setSpacing( 6 );
+    Buttons->layout()->setMargin( 11 );
+    ButtonsLayout = new QGridLayout( Buttons->layout() );
+    ButtonsLayout->setAlignment( Qt::AlignTop );
+
+    String = new QLineEdit( Buttons, "String" );
+    String->setEnabled( FALSE );
+
+    ButtonsLayout->addMultiCellWidget( String, 1, 1, 0, 5 );
+
+    None = new QRadioButton( Buttons, "None" );
+    None->setChecked( TRUE );
+    Buttons->insert( None, 0 );
+
+    ButtonsLayout->addWidget( None, 0, 0 );
+
+    StartWith = new QRadioButton( Buttons, "StartWith" );
+    Buttons->insert( StartWith, 1 );
+
+    ButtonsLayout->addWidget( StartWith, 0, 1 );
+
+    EndWith = new QRadioButton( Buttons, "EndWith" );
+    Buttons->insert( EndWith, 2 );
+
+    ButtonsLayout->addWidget( EndWith, 0, 2 );
+
+    Contains = new QRadioButton( Buttons, "Contains" );
+    Buttons->insert( Contains, 3 );
+
+    ButtonsLayout->addWidget( Contains, 0, 3 );
+
+    RegExp = new QRadioButton( Buttons, "RegExp" );
+    Buttons->insert( RegExp, 5 );
+
+    ButtonsLayout->addWidget( RegExp, 0, 5 );
+
+    CommaSeparate = new QRadioButton( Buttons, "CommaSeparate" );
+    Buttons->insert( CommaSeparate, 4 );
+
+    ButtonsLayout->addWidget( CommaSeparate, 0, 4 );
+
+    toBrowserFilterUILayout->addMultiCellWidget( Buttons, 1, 1, 0, 2 );
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toBrowserFilterUILayout->addItem( Spacer2, 3, 0 );
+
+    TablespaceType = new QButtonGroup( this, "TablespaceType" );
+    TablespaceType->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, TablespaceType->sizePolicy().hasHeightForWidth() ) );
+    TablespaceType->setColumnLayout(0, Qt::Vertical );
+    TablespaceType->layout()->setSpacing( 6 );
+    TablespaceType->layout()->setMargin( 11 );
+    TablespaceTypeLayout = new QGridLayout( TablespaceType->layout() );
+    TablespaceTypeLayout->setAlignment( Qt::AlignTop );
+
+    IncludeAll = new QRadioButton( TablespaceType, "IncludeAll" );
+    IncludeAll->setChecked( TRUE );
+
+    TablespaceTypeLayout->addWidget( IncludeAll, 0, 0 );
+
+    Include = new QRadioButton( TablespaceType, "Include" );
+
+    TablespaceTypeLayout->addWidget( Include, 0, 1 );
+
+    Exclude = new QRadioButton( TablespaceType, "Exclude" );
+
+    TablespaceTypeLayout->addWidget( Exclude, 0, 2 );
+
+    Tablespaces = new toResultView( TablespaceType, "Tablespaces" );
+    Tablespaces->setEnabled( FALSE );
+    Tablespaces->setFocusPolicy( toResultView::StrongFocus );
+
+    TablespaceTypeLayout->addMultiCellWidget( Tablespaces, 1, 1, 0, 2 );
+
+    toBrowserFilterUILayout->addMultiCellWidget( TablespaceType, 2, 2, 0, 2 );
+
+    Layout1 = new QHBoxLayout( 0, 0, 6, "Layout1"); 
+
+    OnlyOwnSchema = new QCheckBox( this, "OnlyOwnSchema" );
+    Layout1->addWidget( OnlyOwnSchema );
+
+    IgnoreCase = new QCheckBox( this, "IgnoreCase" );
+    IgnoreCase->setEnabled( FALSE );
+    IgnoreCase->setChecked( TRUE );
+    Layout1->addWidget( IgnoreCase );
+
+    Invert = new QCheckBox( this, "Invert" );
+    Invert->setEnabled( FALSE );
+    Layout1->addWidget( Invert );
+
+    toBrowserFilterUILayout->addMultiCellLayout( Layout1, 0, 0, 0, 2 );
+    languageChange();
+    resize( QSize(464, 378).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( None, SIGNAL( toggled(bool) ), String, SLOT( setDisabled(bool) ) );
+    connect( None, SIGNAL( toggled(bool) ), IgnoreCase, SLOT( setDisabled(bool) ) );
+    connect( None, SIGNAL( toggled(bool) ), Invert, SLOT( setDisabled(bool) ) );
+    connect( Cancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( OkButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( IncludeAll, SIGNAL( toggled(bool) ), Tablespaces, SLOT( setDisabled(bool) ) );
+
+    // tab order
+    setTabOrder( OnlyOwnSchema, IgnoreCase );
+    setTabOrder( IgnoreCase, Invert );
+    setTabOrder( Invert, None );
+    setTabOrder( None, String );
+    setTabOrder( String, IncludeAll );
+    setTabOrder( IncludeAll, Include );
+    setTabOrder( Include, Exclude );
+    setTabOrder( Exclude, Tablespaces );
+    setTabOrder( Tablespaces, OkButton );
+    setTabOrder( OkButton, Cancel );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toBrowserFilterUI::~toBrowserFilterUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toBrowserFilterUI::languageChange()
+{
+    setCaption( tr( "Filter setting" ) );
+    OkButton->setText( tr( "&Ok" ) );
+    Cancel->setText( tr( "Cancel" ) );
+    Buttons->setTitle( tr( "Filter on name" ) );
+    None->setText( tr( "&No filter" ) );
+    StartWith->setText( tr( "&Start with" ) );
+    QToolTip::add( StartWith, tr( "Object name start with" ) );
+    EndWith->setText( tr( "&End with" ) );
+    QToolTip::add( EndWith, tr( "Object name ends in" ) );
+    Contains->setText( tr( "&Contains" ) );
+    QToolTip::add( Contains, tr( "Object name contains" ) );
+    RegExp->setText( tr( "&RegExp" ) );
+    QToolTip::add( RegExp, tr( "Object name matches RegExp" ) );
+    CommaSeparate->setText( tr( "&Comma list" ) );
+    QToolTip::add( CommaSeparate, tr( "Comma separated list of object names" ) );
+    TablespaceType->setTitle( tr( "Filter on tablespace" ) );
+    IncludeAll->setText( tr( "Include &All" ) );
+    Include->setText( tr( "&Include" ) );
+    Exclude->setText( tr( "&Exclude" ) );
+    OnlyOwnSchema->setText( tr( "Only display own schema" ) );
+    IgnoreCase->setText( tr( "Ignore &Case" ) );
+    Invert->setText( tr( "&Invert selection" ) );
+}
+
+void toBrowserFilterUI::displayHelp()
+{
+    qWarning( "toBrowserFilterUI::displayHelp(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tobrowserfilterui.ui'
+**
+** Created: Tue Sep 18 08:21:20 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOBROWSERFILTERUI_H
+#define TOBROWSERFILTERUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toResultView;
+class QPushButton;
+class QButtonGroup;
+class QLineEdit;
+class QRadioButton;
+class QCheckBox;
+
+class toBrowserFilterUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toBrowserFilterUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toBrowserFilterUI();
+
+    QPushButton* OkButton;
+    QPushButton* Cancel;
+    QButtonGroup* Buttons;
+    QLineEdit* String;
+    QRadioButton* None;
+    QRadioButton* StartWith;
+    QRadioButton* EndWith;
+    QRadioButton* Contains;
+    QRadioButton* RegExp;
+    QRadioButton* CommaSeparate;
+    QButtonGroup* TablespaceType;
+    QRadioButton* IncludeAll;
+    QRadioButton* Include;
+    QRadioButton* Exclude;
+    toResultView* Tablespaces;
+    QCheckBox* OnlyOwnSchema;
+    QCheckBox* IgnoreCase;
+    QCheckBox* Invert;
+
+public slots:
+    virtual void displayHelp();
+
+protected:
+    QGridLayout* toBrowserFilterUILayout;
+    QSpacerItem* Spacer1;
+    QSpacerItem* Spacer2;
+    QGridLayout* ButtonsLayout;
+    QGridLayout* TablespaceTypeLayout;
+    QHBoxLayout* Layout1;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOBROWSERFILTERUI_H

Added: kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserfilterui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,484 @@
+<!DOCTYPE UI><UI>
+<class>toBrowserFilterUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toBrowserFilterUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>464</width>
+            <height>378</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Filter setting</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <spacer row="4"  column="0" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="4"  column="1" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>OkButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="4"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Cancel</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+            <class>QButtonGroup</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Buttons</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>4</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Filter on name</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="1"  column="0"  rowspan="1"  colspan="6" >
+                    <class>QLineEdit</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>String</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>false</bool>
+                    </property>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>None</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;No filter</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                    <property stdset="1">
+                        <name>buttonGroupId</name>
+                        <number>0</number>
+                    </property>
+                </widget>
+                <widget row="0"  column="1" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>StartWith</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Start with</string>
+                    </property>
+                    <property stdset="1">
+                        <name>buttonGroupId</name>
+                        <number>1</number>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Object name start with</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="2" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>EndWith</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;End with</string>
+                    </property>
+                    <property stdset="1">
+                        <name>buttonGroupId</name>
+                        <number>2</number>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Object name ends in</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="3" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Contains</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Contains</string>
+                    </property>
+                    <property stdset="1">
+                        <name>buttonGroupId</name>
+                        <number>3</number>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Object name contains</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="5" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>RegExp</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;RegExp</string>
+                    </property>
+                    <property stdset="1">
+                        <name>buttonGroupId</name>
+                        <number>5</number>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Object name matches RegExp</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="4" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>CommaSeparate</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Comma list</string>
+                    </property>
+                    <property stdset="1">
+                        <name>buttonGroupId</name>
+                        <number>4</number>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Comma separated list of object names</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <spacer row="3"  column="0" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="2"  column="0"  rowspan="1"  colspan="3" >
+            <class>QButtonGroup</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TablespaceType</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>7</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Filter on tablespace</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="0" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>IncludeAll</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Include &amp;All</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget row="0"  column="1" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Include</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Include</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="2" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Exclude</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Exclude</string>
+                    </property>
+                </widget>
+                <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+                    <class>toResultView</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Tablespaces</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>false</bool>
+                    </property>
+                    <property stdset="1">
+                        <name>focusPolicy</name>
+                        <enum>StrongFocus</enum>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget row="0"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLayoutWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Layout1</cstring>
+            </property>
+            <hbox>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>0</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget>
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>OnlyOwnSchema</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Only display own schema</string>
+                    </property>
+                </widget>
+                <widget>
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>IgnoreCase</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>false</bool>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Ignore &amp;Case</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget>
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Invert</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>false</bool>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Invert selection</string>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toResultView</class>
+        <header location="local">toresultview.h</header>
+        <sizehint>
+            <width>50</width>
+            <height>50</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>None</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>String</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>None</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>IgnoreCase</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>None</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Invert</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>Cancel</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserFilterUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>OkButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserFilterUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>IncludeAll</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Tablespaces</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <slot access="public">displayHelp()</slot>
+</connections>
+<tabstops>
+    <tabstop>OnlyOwnSchema</tabstop>
+    <tabstop>IgnoreCase</tabstop>
+    <tabstop>Invert</tabstop>
+    <tabstop>None</tabstop>
+    <tabstop>String</tabstop>
+    <tabstop>IncludeAll</tabstop>
+    <tabstop>Include</tabstop>
+    <tabstop>Exclude</tabstop>
+    <tabstop>Tablespaces</tabstop>
+    <tabstop>OkButton</tabstop>
+    <tabstop>Cancel</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tobrowserindex.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserindex.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserindex.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,390 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tobrowserindex.h"
+#include "toconnection.h"
+#include "toresultcols.h"
+#include "toextract.h"
+#include "tomemoeditor.h"
+#include "tosql.h"
+#include "totableselect.h"
+
+#include <qapplication.h>
+#include <qbuttongroup.h>
+#include <qcombobox.h>
+#include <qinputdialog.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qprogressdialog.h>
+#include <qradiobutton.h>
+#include <qtimer.h>
+#include <qwidgetstack.h>
+
+#include "tobrowserindex.moc"
+#include "tobrowserindexui.moc"
+
+void toBrowserIndex::modifyIndex(toConnection &conn, const QString &owner, const QString &table, QWidget *parent, const QString &index)
+{
+    toBrowserIndex dialog(conn, owner, table, index, parent);
+    if (dialog.exec())
+    {
+        dialog.changeIndex();
+        dialog.execute();
+    }
+}
+
+void toBrowserIndex::addIndex(toConnection &conn, const QString &owner, const QString &table, QWidget *parent)
+{
+    toBrowserIndex dialog(conn, owner, table, QString::null, parent);
+    dialog.addIndex();
+    if (dialog.exec())
+    {
+        dialog.changeIndex();
+        dialog.execute();
+    }
+}
+
+void toBrowserIndex::execute()
+{
+    std::list<toSQLParse::statement> statements = toSQLParse::parse(sql(), connection());
+    try
+    {
+        QProgressDialog prog(tr("Performing index changes"),
+                             tr("Executing index change script"),
+                             statements.size(),
+                             this, "progress", true);
+        prog.setCaption(tr("Performing index changes"));
+        for (std::list<toSQLParse::statement>::iterator i = statements.begin();i != statements.end();i++)
+        {
+            QString sql = toSQLParse::indentStatement(*i, connection());
+            int i = sql.length() - 1;
+            while (i >= 0 && (sql.at(i) == ';' || sql.at(i).isSpace()))
+                i--;
+            if (i >= 0)
+                connection().execute(sql.mid(0, i + 1));
+            qApp->processEvents();
+            if (prog.wasCancelled())
+                throw tr("Cancelled ongoing index modification, indexes might be corrupt");
+        }
+    }
+    TOCATCH
+}
+
+void toBrowserIndex::registerIndex(const QString &type, const QString &name, std::list<QString>::iterator beg, std::list<QString>::iterator end)
+{
+    std::list<toExtract::columnInfo> columns = toExtract::parseColumnDescription(beg, end);
+    QString val;
+    for (std::list<toExtract::columnInfo>::iterator i = columns.begin();i != columns.end();i++)
+    {
+        if (i != columns.begin())
+            val += ",";
+        val += (*i).Name;
+    }
+    IndexType[name] = type;
+    IndexCols[name] = val;
+}
+
+toBrowserIndex::toBrowserIndex(toConnection &conn, const QString &owner, const QString &table, const QString &index, QWidget *parent, const char *name)
+        : toBrowserIndexUI(parent, name, true), toConnectionWidget(conn, this), Extractor(conn, NULL)
+{
+    Extractor.setIndexes(true);
+    Extractor.setConstraints(false);
+    Extractor.setPrompt(false);
+    Extractor.setHeading(false);
+
+    if (toIsMySQL(connection()))
+        Type->insertItem("Fulltext Index");
+
+    if (!owner.isEmpty() && !table.isEmpty())
+    {
+        QString fulltable = conn.quote(owner) + "." + conn.quote(table);
+        TableSelect->setTable(fulltable);
+        describeTable(fulltable);
+    }
+    else if (!owner.isEmpty())
+        TableSelect->setTable(conn.quote(owner));
+
+    connect(TableSelect, SIGNAL(selectTable(const QString &)), this, SLOT(changeTable(const QString &)));
+
+    for (int i = 0;i < Name->count();i++)
+        if (connection().unQuote(Name->text(i)) == index)
+        {
+            Name->setCurrentItem(Name->count() - 1);
+            break;
+        }
+}
+
+QString toBrowserIndex::table(void)
+{
+    if (Owner.isEmpty() && Table.isEmpty())
+        return QString::null;
+    return connection().quote(Owner) + "." + connection().quote(Table);
+}
+
+void toBrowserIndex::describeTable(const QString &table)
+{
+    try
+    {
+        QStringList parts = QStringList::split(".", table);
+        if (parts.size() > 1)
+        {
+            Owner = connection().unQuote(parts[0]);
+            Table = connection().unQuote(parts[1]);
+        }
+        else
+        {
+            Table = connection().unQuote(table);
+            if (toIsOracle(connection()))
+                Owner = connection().user();
+            else
+                Owner = connection().database();
+        }
+
+        Current = QString::null;
+        if (!table.isEmpty())
+        {
+            if ( OriginalDescription[table].empty() )
+            {
+                std::list<QString> Objects;
+                Objects.insert(Objects.end(), "TABLE:" + table);
+
+                NewDescription[table] = Extractor.describe(Objects);
+            }
+            std::list<QString> &origDescription = NewDescription[table];
+            std::list<QString>::iterator beg = origDescription.end();
+            QString lname;
+            QString ltype;
+            QString realtype;
+
+            IndexType.clear();
+            IndexCols.clear();
+
+            for (std::list<QString>::iterator i = origDescription.begin();i != origDescription.end();)
+            {
+                std::list<QString> ctx = toExtract::splitDescribe(*i);
+                toShift(ctx);
+                QString type = toShift(ctx);
+                if (type == "INDEX")
+                {
+                    QString name = toShift(ctx);
+                    if (name != lname)
+                    {
+                        if (beg != origDescription.end())
+                            registerIndex(realtype, lname, beg, i);
+                        beg = i;
+                        ltype = type;
+                        lname = name;
+                    }
+                    if (toShift(ctx) == "TYPE")
+                        realtype = toShift(ctx);
+                    i++;
+                }
+                else
+                {
+                    if (beg != origDescription.end())
+                    {
+                        registerIndex(realtype, lname, beg, i);
+                        beg = origDescription.end();
+                    }
+                    i = origDescription.erase(i);  // Remove everything that isn't indexes
+                }
+            }
+            if (beg != origDescription.end())
+                registerIndex(realtype, lname, beg, origDescription.end());
+        }
+        if ( OriginalDescription[table].empty() )
+            OriginalDescription[table] = NewDescription[table];
+
+        Name->clear();
+        for (std::map<QString, QString>::iterator i = IndexType.begin();i != IndexType.end();i++)
+            Name->insertItem((*i).first);
+
+        ColList->displayHeader(false);
+        ColList->changeParams(Owner, Table);
+
+        show();
+        changeIndex();
+    }
+    catch (const QString &exc)
+    {
+        toStatusMessage(exc);
+        reject();
+    }
+}
+
+void toBrowserIndex::saveChanges(void)
+{
+    if (table().isEmpty())
+        return ;
+
+    changeIndex();
+
+    std::list<QString> migrateTable;
+
+    for (std::map<QString, QString>::iterator i = IndexType.begin();i != IndexType.end();i++)
+    {
+        std::list<QString> ctx;
+        toPush(ctx, Owner);
+        toPush(ctx, QString("INDEX"));
+        toPush(ctx, (*i).first);
+
+        QStringList lst = QStringList::split(",", IndexCols[(*i).first]);
+        for (unsigned int j = 0;j < lst.count();j++)
+        {
+            toExtract::addDescription(migrateTable, ctx, "COLUMN", lst[j]);
+            toExtract::addDescription(migrateTable, ctx, "COLUMN", lst[j], "ORDER", QString::number(j + 1));
+        }
+        toExtract::addDescription(migrateTable, ctx);
+        toExtract::addDescription(migrateTable, ctx, "ON", Table);
+        toExtract::addDescription(migrateTable, ctx, "TYPE", (*i).second);
+    }
+    NewDescription[table()] = migrateTable;
+}
+
+QString toBrowserIndex::sql()
+{
+    saveChanges();
+
+    std::list<QString> origTable;
+    std::list<QString> migrateTable;
+
+    {
+        for (std::map<QString, std::list<QString> >::iterator i = OriginalDescription.begin();i != OriginalDescription.end();i++)
+        {
+            std::list<QString> &cur = (*i).second;
+            for (std::list<QString>::iterator j = cur.begin();j != cur.end();j++)
+                toPush(origTable, *j);
+        }
+    }
+    {
+        for (std::map<QString, std::list<QString> >::iterator i = NewDescription.begin();i != NewDescription.end();i++)
+        {
+            std::list<QString> &cur = (*i).second;
+            for (std::list<QString>::iterator j = cur.begin();j != cur.end();j++)
+                toPush(migrateTable, *j);
+        }
+    }
+
+    origTable.sort();
+    migrateTable.sort();
+
+    return Extractor.migrate(origTable, migrateTable);
+}
+
+void toBrowserIndex::displaySQL()
+{
+    toMemoEditor memo(this, sql(), -1, -1, true, true);
+    memo.exec();
+}
+
+void toBrowserIndex::addIndex()
+{
+    if (Table.isEmpty())
+        return ;
+    bool ok = false;
+    QString name = QInputDialog::getText(tr("Enter new index name"),
+                                         tr("Enter name of new index."),
+                                         QLineEdit::Normal, QString::null, &ok, this);
+    if (ok)
+    {
+        Name->insertItem(name);
+        Name->setCurrentItem(Name->count() - 1);
+        IndexType[name] = "Normal Index";
+        changeIndex();
+    }
+}
+
+void toBrowserIndex::delIndex()
+{
+    if (Name->count() > 0)
+    {
+        IndexType.erase(Current);
+        IndexCols.erase(Current);
+        Current = QString::null;
+        Name->removeItem(Name->currentItem());
+        changeIndex();
+    }
+}
+
+void toBrowserIndex::changeIndex()
+{
+    if (!Current.isEmpty())
+    {
+        QString type = Type->currentText().upper();
+        if (type == "NORMAL INDEX")
+            type = "INDEX";
+        IndexType[Current] = type;
+        IndexCols[Current] = Cols->text();
+    }
+    Current = Name->currentText();
+    if (Current.isEmpty())
+    {
+        Cols->setEnabled(false);
+        Type->setEnabled(false);
+    }
+    else
+    {
+        Cols->setEnabled(true);
+        Type->setEnabled(true);
+        Cols->setText(IndexCols[Current]);
+        int i;
+        QString type = IndexType[Current];
+        if (type == "INDEX")
+            type = "NORMAL INDEX";
+        for (i = 0;i < Type->count();i++)
+        {
+            if (Type->text(i).upper() == type)
+            {
+                Type->setCurrentItem(i);
+                break;
+            }
+        }
+        if (i == Type->count())
+        {
+            Type->insertItem(IndexType[Current]);
+            Type->setCurrentItem(Type->count() - 1);
+        }
+    }
+}
+
+void toBrowserIndex::changeTable(const QString &table)
+{
+    saveChanges();
+    describeTable(table);
+}

Added: kde-extras/tora/branches/upstream/current/src/tobrowserindex.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserindex.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserindex.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,90 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOBROWSERINDEX_H
+#define TOBROWSERINDEX_H
+
+#include "config.h"
+#include "tobrowserindexui.h"
+#include "toextract.h"
+#include "totool.h"
+
+#include <map>
+#include <list>
+
+class toConnection;
+
+class toBrowserIndex : public toBrowserIndexUI, public toConnectionWidget
+{
+private:
+    Q_OBJECT
+
+    toExtract Extractor;
+
+    std::map<QString, std::list<QString> > OriginalDescription;
+    std::map<QString, std::list<QString> > NewDescription;
+
+    QString Owner;
+    QString Table;
+    QString Current;
+    std::map<QString, QString> IndexType;
+    std::map<QString, QString> IndexCols;
+
+    QString table(void);
+
+    toBrowserIndex(toConnection &conn, const QString &owner, const QString &table, const QString &index, QWidget *parent, const char *name = NULL);
+
+    void registerIndex(const QString &type, const QString &ltype, std::list<QString>::iterator beg, std::list<QString>::iterator end);
+
+    void describeTable(const QString &table);
+    void saveChanges();
+
+    QString sql(void);
+private:
+    void execute();
+public:
+    static void modifyIndex(toConnection &conn, const QString &owner, const QString &table, QWidget *parent, const QString &index = QString::null);
+    static void addIndex(toConnection &conn, const QString &owner, const QString &table, QWidget *parent);
+public slots:
+    virtual void displaySQL();
+    virtual void addIndex();
+    virtual void delIndex();
+    virtual void changeIndex();
+    virtual void changeTable(const QString &table);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tobrowserindexui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserindexui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserindexui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,256 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tobrowserindexui.ui'
+**
+** Created: Tue Sep 18 08:21:21 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tobrowserindexui.h"
+
+#include <qvariant.h>
+#include <qlabel.h>
+#include <qtoolbutton.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+#include "toresultcols.h"
+#include "totableselect.h"
+static const char* const image0_data[] = { 
+"16 16 3 1",
+". c None",
+"# c #000000",
+"a c #00ff00",
+"..........###...",
+"..........#a#...",
+"..........#a#...",
+".......####a####",
+".......#aaaaaaa#",
+".......####a####",
+"..........#a#...",
+"..........#a#...",
+"..........###...",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................"};
+
+static const char* const image1_data[] = { 
+"16 16 3 1",
+". c None",
+"# c #000000",
+"a c #ff0000",
+"................",
+"................",
+"................",
+".......#########",
+".......#aaaaaaa#",
+".......#########",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................"};
+
+static const char* const image2_data[] = { 
+"16 16 14 1",
+". c None",
+"# c #000000",
+"i c #181841",
+"e c #20205a",
+"k c #202462",
+"c c #292873",
+"l c #292c7b",
+"h c #313083",
+"b c #393cac",
+"d c #4140b4",
+"f c #4a4ccd",
+"j c #5a59f6",
+"g c #5a5df6",
+"a c #5a5dff",
+"................",
+".###..###..##...",
+"#..#.#..#..#....",
+"##...#...#.#....",
+"..#..#####.#....",
+"...#.#aab#.#....",
+"#..##cdaef##..#.",
+".##.#ghiha#####.",
+"....#aajkl#.....",
+".....#aaa#......",
+"......#####.....",
+".........###....",
+"..........###...",
+"...........##...",
+"................",
+"................"};
+
+
+/*
+ *  Constructs a toBrowserIndexUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toBrowserIndexUI::toBrowserIndexUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl ),
+      image0( (const char **) image0_data ),
+      image1( (const char **) image1_data ),
+      image2( (const char **) image2_data )
+{
+    if ( !name )
+	setName( "toBrowserIndexUI" );
+    toBrowserIndexUILayout = new QGridLayout( this, 1, 1, 11, 6, "toBrowserIndexUILayout"); 
+
+    layout1 = new QHBoxLayout( 0, 0, 6, "layout1"); 
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+    TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)5, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
+    layout1->addWidget( TextLabel1 );
+
+    toolButton2 = new QToolButton( this, "toolButton2" );
+    toolButton2->setPixmap( image0 );
+    layout1->addWidget( toolButton2 );
+
+    toolButton3 = new QToolButton( this, "toolButton3" );
+    toolButton3->setPixmap( image1 );
+    layout1->addWidget( toolButton3 );
+
+    toBrowserIndexUILayout->addMultiCellLayout( layout1, 1, 1, 0, 3 );
+
+    Cols = new QLineEdit( this, "Cols" );
+
+    toBrowserIndexUILayout->addMultiCellWidget( Cols, 6, 6, 0, 3 );
+
+    ToolButton1 = new QToolButton( this, "ToolButton1" );
+    ToolButton1->setFocusPolicy( QToolButton::StrongFocus );
+    ToolButton1->setPixmap( image2 );
+
+    toBrowserIndexUILayout->addWidget( ToolButton1, 8, 0 );
+
+    Name = new QComboBox( FALSE, this, "Name" );
+
+    toBrowserIndexUILayout->addMultiCellWidget( Name, 2, 2, 0, 3 );
+
+    Type = new QComboBox( FALSE, this, "Type" );
+
+    toBrowserIndexUILayout->addMultiCellWidget( Type, 4, 4, 0, 3 );
+
+    TextLabel2 = new QLabel( this, "TextLabel2" );
+
+    toBrowserIndexUILayout->addMultiCellWidget( TextLabel2, 5, 5, 0, 3 );
+
+    textLabel1 = new QLabel( this, "textLabel1" );
+
+    toBrowserIndexUILayout->addMultiCellWidget( textLabel1, 3, 3, 0, 3 );
+
+    ColList = new toResultCols( this, "ColList" );
+    ColList->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, ColList->sizePolicy().hasHeightForWidth() ) );
+    ColList->setFocusPolicy( toResultCols::StrongFocus );
+
+    toBrowserIndexUILayout->addMultiCellWidget( ColList, 7, 7, 0, 3 );
+
+    PushButton2 = new QPushButton( this, "PushButton2" );
+
+    toBrowserIndexUILayout->addWidget( PushButton2, 8, 3 );
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toBrowserIndexUILayout->addItem( Spacer2, 8, 1 );
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+    PushButton1->setDefault( TRUE );
+
+    toBrowserIndexUILayout->addWidget( PushButton1, 8, 2 );
+
+    TableSelect = new toTableSelect( this, "TableSelect" );
+
+    toBrowserIndexUILayout->addMultiCellWidget( TableSelect, 0, 0, 0, 3 );
+    languageChange();
+    resize( QSize(588, 628).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( ToolButton1, SIGNAL( clicked() ), this, SLOT( displaySQL() ) );
+    connect( toolButton2, SIGNAL( clicked() ), this, SLOT( addIndex() ) );
+    connect( toolButton3, SIGNAL( clicked() ), this, SLOT( delIndex() ) );
+    connect( Name, SIGNAL( activated(int) ), this, SLOT( changeIndex() ) );
+
+    // tab order
+    setTabOrder( Name, Type );
+    setTabOrder( Type, Cols );
+    setTabOrder( Cols, ColList );
+    setTabOrder( ColList, ToolButton1 );
+    setTabOrder( ToolButton1, PushButton1 );
+    setTabOrder( PushButton1, PushButton2 );
+
+    // buddies
+    TextLabel1->setBuddy( Name );
+    TextLabel2->setBuddy( Cols );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toBrowserIndexUI::~toBrowserIndexUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toBrowserIndexUI::languageChange()
+{
+    setCaption( tr( "Index name" ) );
+    TextLabel1->setText( tr( "&Name" ) );
+    toolButton2->setText( QString::null );
+    toolButton3->setText( QString::null );
+    ToolButton1->setText( QString::null );
+    QToolTip::add( ToolButton1, tr( "Display SQL to create this constraint" ) );
+    Type->clear();
+    Type->insertItem( tr( "Normal Index" ) );
+    Type->insertItem( tr( "Unique Index" ) );
+    TextLabel2->setText( tr( "&Columns" ) );
+    textLabel1->setText( tr( "Type" ) );
+    PushButton2->setText( tr( "Cancel" ) );
+    PushButton1->setText( tr( "&Ok" ) );
+}
+
+void toBrowserIndexUI::displaySQL()
+{
+    qWarning( "toBrowserIndexUI::displaySQL(): Not implemented yet" );
+}
+
+void toBrowserIndexUI::addIndex()
+{
+    qWarning( "toBrowserIndexUI::addIndex(): Not implemented yet" );
+}
+
+void toBrowserIndexUI::delIndex()
+{
+    qWarning( "toBrowserIndexUI::delIndex(): Not implemented yet" );
+}
+
+void toBrowserIndexUI::changeIndex()
+{
+    qWarning( "toBrowserIndexUI::changeIndex(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tobrowserindexui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserindexui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserindexui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tobrowserindexui.ui'
+**
+** Created: Tue Sep 18 08:21:21 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOBROWSERINDEXUI_H
+#define TOBROWSERINDEXUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toResultCols;
+class toTableSelect;
+class QLabel;
+class QToolButton;
+class QLineEdit;
+class QComboBox;
+class QPushButton;
+
+class toBrowserIndexUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toBrowserIndexUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toBrowserIndexUI();
+
+    QLabel* TextLabel1;
+    QToolButton* toolButton2;
+    QToolButton* toolButton3;
+    QLineEdit* Cols;
+    QToolButton* ToolButton1;
+    QComboBox* Name;
+    QComboBox* Type;
+    QLabel* TextLabel2;
+    QLabel* textLabel1;
+    toResultCols* ColList;
+    QPushButton* PushButton2;
+    QPushButton* PushButton1;
+    toTableSelect* TableSelect;
+
+public slots:
+    virtual void displaySQL();
+    virtual void addIndex();
+    virtual void delIndex();
+    virtual void changeIndex();
+
+protected:
+    QGridLayout* toBrowserIndexUILayout;
+    QSpacerItem* Spacer2;
+    QHBoxLayout* layout1;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+    QPixmap image1;
+    QPixmap image2;
+    QPixmap image3;
+    QPixmap image4;
+
+};
+
+#endif // TOBROWSERINDEXUI_H

Added: kde-extras/tora/branches/upstream/current/src/tobrowserindexui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowserindexui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowserindexui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,308 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>toBrowserIndexUI</class>
+<widget class="QDialog">
+    <property name="name">
+        <cstring>toBrowserIndexUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>588</width>
+            <height>628</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>Index name</string>
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>11</number>
+        </property>
+        <property name="spacing">
+            <number>6</number>
+        </property>
+        <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>layout1</cstring>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="QLabel">
+                    <property name="name">
+                        <cstring>TextLabel1</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>5</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Name</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>Name</cstring>
+                    </property>
+                </widget>
+                <widget class="QToolButton">
+                    <property name="name">
+                        <cstring>toolButton2</cstring>
+                    </property>
+                    <property name="text">
+                        <string></string>
+                    </property>
+                    <property name="pixmap">
+                        <pixmap>image0</pixmap>
+                    </property>
+                </widget>
+                <widget class="QToolButton">
+                    <property name="name">
+                        <cstring>toolButton3</cstring>
+                    </property>
+                    <property name="text">
+                        <string></string>
+                    </property>
+                    <property name="pixmap">
+                        <pixmap>image1</pixmap>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <widget class="QLineEdit" row="6" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>Cols</cstring>
+            </property>
+        </widget>
+        <widget class="QToolButton" row="8" column="0">
+            <property name="name">
+                <cstring>ToolButton1</cstring>
+            </property>
+            <property name="focusPolicy">
+                <enum>StrongFocus</enum>
+            </property>
+            <property name="text">
+                <string></string>
+            </property>
+            <property name="pixmap">
+                <pixmap>image2</pixmap>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>Display SQL to create this constraint</string>
+            </property>
+        </widget>
+        <widget class="QComboBox" row="2" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>Name</cstring>
+            </property>
+        </widget>
+        <widget class="QComboBox" row="4" column="0" rowspan="1" colspan="4">
+            <item>
+                <property name="text">
+                    <string>Normal Index</string>
+                </property>
+            </item>
+            <item>
+                <property name="text">
+                    <string>Unique Index</string>
+                </property>
+            </item>
+            <property name="name">
+                <cstring>Type</cstring>
+            </property>
+        </widget>
+        <widget class="QLabel" row="5" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>TextLabel2</cstring>
+            </property>
+            <property name="text">
+                <string>&amp;Columns</string>
+            </property>
+            <property name="buddy" stdset="0">
+                <cstring>Cols</cstring>
+            </property>
+        </widget>
+        <widget class="QLabel" row="3" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>textLabel1</cstring>
+            </property>
+            <property name="text">
+                <string>Type</string>
+            </property>
+        </widget>
+        <widget class="toResultCols" row="7" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>ColList</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>7</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="focusPolicy">
+                <enum>StrongFocus</enum>
+            </property>
+        </widget>
+        <widget class="QPushButton" row="8" column="3">
+            <property name="name">
+                <cstring>PushButton2</cstring>
+            </property>
+            <property name="text">
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <spacer row="8" column="1">
+            <property name="name">
+                <cstring>Spacer2</cstring>
+            </property>
+            <property name="orientation">
+                <enum>Horizontal</enum>
+            </property>
+            <property name="sizeType">
+                <enum>Expanding</enum>
+            </property>
+            <property name="sizeHint">
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget class="QPushButton" row="8" column="2">
+            <property name="name">
+                <cstring>PushButton1</cstring>
+            </property>
+            <property name="text">
+                <string>&amp;Ok</string>
+            </property>
+            <property name="default">
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget class="toTableSelect" row="0" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>TableSelect</cstring>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toResultCols</class>
+        <header location="local">toresultcols.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+        <pixmap>image3</pixmap>
+    </customwidget>
+    <customwidget>
+        <class>toTableSelect</class>
+        <header location="local">totableselect.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>7</verdata>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+        <pixmap>image4</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image name="image0">
+        <data format="XPM.GZ" length="409">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022630543251d2e253d856405bffcbc54105b19c856360003103711c24d4b8370f5e04059591948a28925122106d40814030264b144085026a08e583b70b80f02064cacd69a0b00f9604c22</data>
+    </image>
+    <image name="image1">
+        <data format="XPM.GZ" length="409">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022630543251d2e253d856405bffcbc54105b19c856360003103711c44d4b8371f5d0001962ca30802c960801ca04d45162efc08bd55a7301005e924b74</data>
+    </image>
+    <image name="image2">
+        <data format="XPM.GZ" length="575">789c6d90cf6e83300c87ef3c45446e684a13081434f51136ed3869dac11828f4cf2a6ddd619af6eeebcf848ab25921f2f7c5d88455a29e9f1e54b28a3ece741e58714fef2a693e8fc7af97d7cd7714bb426179e5e2bb28368ad5e3e9ad45ae2fb9b612c001e84a577aa96c81a94d6d4ec07d405fa44016acd2729d010f01795d037b60e6325bca692d58654c0c6c80de795b7b6027489eb901ee8039e5555700b7019b11e98a9d5c6711e2b4d666da82436e64c30a0ed9f85cdd5881983b5410d5332755dc50dbc99869aed1db7ee8696c307ddfe5d5ddfea0cdac9f48d2e6d685c1b7ce84ab2c5c908b7ff09ffbdb6f723ff7d12f66576feb</data>
+    </image>
+    <image name="image3">
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+    <image name="image4">
+        <data format="XPM.GZ" length="4830">789c9597c972e3480e40eff5158ec2ada203cd3549c6c41cbcc9b6bccabbddd1078014bdcb9b6449ee987f9f240072caac9e4357d6c1cf5812890490f4ef3f562e8ff6577efcfeed7d4ad3bb72a5bca5b7951fd5ece969f9c79ffffeebdbf7285a69fec7f14af4fdb76fdf47d39572e5e079326e00c10304f24ff8b9c7d463ee71d9e3aac7e31ed70d67dc2ce1cb9e7cd0e3c957863eaff778d4b3bfe8c97be781a71eaff5f8e82bf37ecfff4dc314364b58fdb966096ff6ecf77af6b70d1771b3841f1b8ef366099ff7ec17bdf8faf7970847cd12f9b2e344f8b563890f5e3a96fda0ea98c45fdc71299c765c354c67c249bb1fcd3a56ff271d8b3d9d1b271a0f1d742c725874acfe9d70eef3a9f65bc2e47fa3f16a7d55411d6a3e4e1b0e03bf349e8171144a7e49ceeb295239cb79c3384ccdff76c7b23f14c269e8ccdfa9716ef6b5b18f407857d88585e57bbf65b39f18971a0fc8fd7b6fc624f723e524f9e3d2b8d4f391d49ba74ae5bed585a3c8e49b1d6b7c929f701ca5e65feac10b9dd967c2519485a9dcaf33ce952110cea3caec23e53830f9863045b5ca79ae1c8741263cec58eb59ed390ecd3e378e8d651e44651c85527f20f51cd55eae5c1b27a1f823b9bf388c0b65b831a6b090fd24be384bc24098a6d65fb5ca29ed58fd5f35eccbaf34ff320f922819ab3e487e93d4b3d6eb9b711d4abda0f44352a685d5f39d709db2ca296c380dd2c238366ee5605c1acb3c96f2d3feff148ed25aeb0d1e955d60fd22f94a63178632df79d5d8fa95971d8b9cee5b8e647ec1d038567b40e1a4d567a9d73475b1f14ecb5a7f2cf94a9d4b343eba304e357e3814ce5c6afd22f33b2d5c6ee7295bb6fc4abda4e40af3f7d972a4f52df79bb223ebff79cb2a2736e650ce470fc2652b67b9cfb4726dff5d195776bead96adbf1e3bd67a9779928ebbfdc898357f34346ee7c3a0658d07359eba5922d7fbaebd3fdd6f6e3c567d96f9e4c22cb4780a63eb7f90f7c525596cf11c1a2791ce9bd8d869bd93e4dba55eaeefc781b1dd17ee1b9b3e4b3e9dcbfcc4107f9fc671a4ef9dcc139765763fa4f6943965947a7355b3c45eceebc65965fb851deb79655e662ecfcddf93716172999759966791f67f689ceb79e9a363951f1b9b3d1e76acf36fcf98544e529fdebc954b3f67d42ce1eb86f3465df3fb2e5c14a5d53b2b53a0f316773ad6f922f32c2fa9cd9fdc6f5e79d6f8768d13ebc79d96559fe47dcd6b8a63cdcfbb71126bfcd21f45e0f5f57dbb357691c63f342e2cbea063d597f7b808c9e6151e1993c573d1b2de0fc8fd1711151a1fdf187324f393671debfe92df22a134d67e93fb2a1cd93c05630ef4fe48f25d641c683de2b171a8f399ef3a56f989b1bd273c6dd9f697f7bcc85b7dca8da348be4f41fabf2838b1f7e9cc38d5f715e4fd2888439b9f53639ba72cf55a701b3f0c8cad3ff9de38b57c4bfd15a5678d6f646cfd87857166ef95f46b51f9fdf57c609cda7b756edcbee7ceb850a671c7faf7809e7fccb9d63b6c1b93d5f7ac63d5d7fcd41c245a8fabc685e68f1f8c49ef93e5bda4c0fbd7f9b16b4c5a9ff060ccf63e4b3d52c889c6433bc685da33195bbfc2bd31dbfc947aa5982bf37fddb1c623f39c7cbbda7c94f889cac4ea4df24f55c9367fe43da47159da3c907ea39ac74ebfdfe5fe39e0dac9f71f4abed87fb02993d42b475562effb5dcb36ff243fec3f3f327d4fd1384db5ffd68c9db1bc579cb6faf8619cdafe321f39f39f33721fb46bec4cfe699c19cf3bd6f3ad1ae7c6f2de71ce2549fe71a9dcc917c685324b7eb8aac6767ff27dc763cf92afd1b4590848c8586285e3deaafc6fd94b61346df5b1c61bbcc53bbcff9bf5808ff884136ff5acfadef70dbee02bbee13b4e71861f38c7052ef1d3af555cc375dcc04d1c6069fae47dbfe2166ee30e0e7117f7701f0ff0108f7084c77882a77886e7788197a6cf3e922baf7d8d018618618c895f293acc30c702478000403831fdd247f90e8c019450610c63a8e1066efd4f15dcc13d3cc0a3d77f8256bff2fa531cc233bcc02bbcc13b4c61061f3087052ce11356c5ff1aac9bfed8ebcf701736bc741306b005dbb00343d8853def611f0ee0d0eb1fc1e827fd0f38861338f5becfe01c2ee0d26b5ec13504de4708d12ffa7388bd2481141c64907bed020f0909604944fc8bfe924a4ca8a231d5e2fb956ee896eee8deeb3fd0e32ffa0b7ac29426f041fed4f442afdee28dde694a33faa0f9aff1d0829618d327add21aadd3066dfafd06b445dbb443c3be3eedd21eed7bfd033aa4231ad1319dd0299dd1395dd0255dfd8dff6b0a28c4042af27fcc907fafc879ed73ff199053f145bfc207463c666062e6d2dfd9d2db2db9a20b1e73cd377cfbe5be4a5fb1eb7cc7f7fcc08ffcc4137ee6177ee5377ee729cff883e7bcf8a91ed8d7f7069ef1923f7995d7789d37789307bc4557bccd3b3ce45ddefba9defc4fbebecfe1fffce305eff1fe4ff50c3ea2015e00f93dd7fcb9beae35ff5bf2da5dbf788b676f71891398c03a8c7a6b1d267effcbfff5e33fe8f7fffcebdb7f01520e2ea3</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserIndexUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserIndexUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>ToolButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserIndexUI</receiver>
+        <slot>displaySQL()</slot>
+    </connection>
+    <connection>
+        <sender>toolButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserIndexUI</receiver>
+        <slot>addIndex()</slot>
+    </connection>
+    <connection>
+        <sender>toolButton3</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserIndexUI</receiver>
+        <slot>delIndex()</slot>
+    </connection>
+    <connection>
+        <sender>Name</sender>
+        <signal>activated(int)</signal>
+        <receiver>toBrowserIndexUI</receiver>
+        <slot>changeIndex()</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>Name</tabstop>
+    <tabstop>Type</tabstop>
+    <tabstop>Cols</tabstop>
+    <tabstop>ColList</tabstop>
+    <tabstop>ToolButton1</tabstop>
+    <tabstop>PushButton1</tabstop>
+    <tabstop>PushButton2</tabstop>
+</tabstops>
+<slots>
+    <slot>displaySQL()</slot>
+    <slot>addIndex()</slot>
+    <slot>delIndex()</slot>
+    <slot>changeIndex()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+    <includehint>toresultcols.h</includehint>
+    <includehint>totableselect.h</includehint>
+</includehints>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tobrowsertable.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowsertable.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowsertable.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,382 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tobrowsertable.h"
+#include "toconnection.h"
+#include "todatatype.h"
+#include "toextract.h"
+#include "tohighlightedtext.h"
+#include "tomemoeditor.h"
+#include "toresultcombo.h"
+#include "tosql.h"
+
+#include <qapplication.h>
+#include <qcombobox.h>
+#include <qgrid.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qprogressdialog.h>
+#include <qscrollview.h>
+#include <qtimer.h>
+
+#include "tobrowsertable.moc"
+#include "tobrowsertableui.moc"
+
+static toSQL SQLListTablespaces("toBrowserTable:ListTablespaces",
+                                "SELECT Tablespace_Name FROM sys.DBA_TABLESPACES\n"
+                                " ORDER BY Tablespace_Name",
+                                "List the available tablespaces in a database.");
+
+void toBrowserTable::editTable(toConnection &conn, const QString &owner, const QString &table, QWidget *parent)
+{
+    toBrowserTable dialog(conn, owner, table, parent);
+    if (dialog.exec())
+    {
+        std::list<toSQLParse::statement> statements = toSQLParse::parse(dialog.sql(), conn);
+        try
+        {
+            QProgressDialog prog(tr("Performing table changes"),
+                                 tr("Executing table change script"),
+                                 statements.size(),
+                                 &dialog, "progress", true);
+            prog.setCaption(tr("Performing table changes"));
+            for (std::list<toSQLParse::statement>::iterator i = statements.begin();i != statements.end();i++)
+            {
+                QString sql = toSQLParse::indentStatement(*i, conn);
+                int i = sql.length() - 1;
+                while (i >= 0 && (sql.at(i) == ';' || sql.at(i).isSpace()))
+                    i--;
+                if (i >= 0)
+                    conn.execute(sql.mid(0, i + 1));
+                qApp->processEvents();
+                if (prog.wasCancelled())
+                    throw tr("Cancelled ongoing table modification, table might be corrupt");
+            }
+        }
+        TOCATCH
+    }
+}
+
+toBrowserTable::toBrowserTable(toConnection &conn, const QString &owner, const QString &table, QWidget *parent, const char *name)
+        : toBrowserTableUI(parent, name, true), toConnectionWidget(conn, this), Extractor(conn, NULL)
+{
+    ColumnNumber = 0;
+    ColumnGrid = new QGrid(3, ColumnList->viewport());
+    ColumnList->addChild(ColumnGrid);
+    ColumnList->viewport()->setBackgroundColor(qApp->palette().active().background());
+
+    new QLabel(tr("Name"), ColumnGrid);
+    new QLabel(tr("Datatype"), ColumnGrid);
+    new QLabel(tr("Extra parameters"), ColumnGrid);
+
+    Extractor.setIndexes(false);
+    Extractor.setConstraints(false);
+    Extractor.setPrompt(false);
+    Extractor.setHeading(false);
+
+    UglyFlag = false; // Indicates wether the correct size has been retreived at least once.
+
+    try
+    {
+        Owner = owner;
+        Table = table;
+
+        QString tablespace;
+        Schema->query(toSQL::sql(toSQL::TOSQL_USERLIST));
+        Schema->setSelected(Owner);
+
+        if (!Table.isEmpty())
+        {
+            std::list<QString> Objects;
+            Objects.insert(Objects.end(), "TABLE:" + Owner + "." + Table);
+
+            OriginalDescription = Extractor.describe(Objects);
+            Schema->setEnabled(false);
+
+            bool invalid = false;
+
+            Name->setText(table);
+
+            QString declarations;
+            QString storage;
+            QString parallel;
+
+            for (std::list<QString>::iterator i = OriginalDescription.begin();i != OriginalDescription.end();i++)
+            {
+                std::list<QString> row = toExtract::splitDescribe(*i);
+                if (toShift(row) != connection().quote(owner))
+                {
+                    invalid = true;
+                    break;
+                }
+                if (toShift(row) != "TABLE")
+                    continue;
+                if (toShift(row) != connection().quote(table))
+                {
+                    invalid = true;
+                    break;
+                }
+                QString type = toShift(row);
+                if (type == "COLUMN")
+                {
+                    // Nop, handled by the parseColumnDescription call below
+                }
+                else if (type == "COMMENT")
+                    Comment->setText(toShift(row));
+                else if (type == "STORAGE")
+                    storage += toShift(row) + " ";
+                else if (type == "PARALLEL")
+                    parallel += toShift(row) + " ";
+                else if (type == "PARAMETERS")
+                {
+                    QString t = toShift(row);
+                    if (t.startsWith("TABLESPACE"))
+                    {
+                        tablespace = connection().unQuote(t.mid(10).stripWhiteSpace());
+                    }
+                    else
+                        declarations += t + " ";
+                }
+                else if (!type.isEmpty())
+                    invalid = true;
+            }
+
+            Columns = toExtract::parseColumnDescription(OriginalDescription);
+
+            ExtraDeclarations->setText(declarations.stripWhiteSpace());
+            StorageDeclarations->setText(storage.stripWhiteSpace());
+            ParallelDeclarations->setText(parallel.stripWhiteSpace());
+            {
+                for (unsigned int i = 0;i < Columns.size();i++)
+                    addColumn();
+            }
+            std::list<QLineEdit *>::iterator name = ColumnNames.begin();
+            std::list<toDatatype *>::iterator datatype = Datatypes.begin();
+            std::list<QLineEdit *>::iterator extra = Extra.begin();
+            for (std::list<toExtract::columnInfo>::iterator column = Columns.begin();
+                    name != ColumnNames.end() && datatype != Datatypes.end() && extra != Extra.end() && column != Columns.end();
+                    name++, datatype++, extra++, column++)
+            {
+                if ((*column).Order == 0)
+                    invalid = true;
+                (*name)->setText((*column).Name);
+                (*datatype)->setType((*column).Definition);
+                (*extra)->setText((*column).Data["EXTRA"]);
+            }
+            if (invalid)
+            {
+                reject();
+                toStatusMessage("Invalid output from extraction layer prevent this dialog to be properl filled in");
+                return ;
+            }
+        }
+        else
+            addColumn();
+        if (toIsMySQL(connection()))
+        {
+            ParallelLabel->hide();
+            ParallelDeclarations->hide();
+            SchemaLabel->setText(tr("&Database"));
+        }
+        try
+        {
+            toQuery query(connection(), SQLListTablespaces);
+            while (!query.eof())
+            {
+                QString t = query.readValueNull();
+                Tablespace->insertItem(t);
+                if (t == tablespace)
+                    Tablespace->setCurrentItem(Tablespace->count() - 1);
+            }
+        }
+        catch (...)
+        {
+            TablespaceLabel->hide();
+            Tablespace->hide();
+        }
+    }
+    catch (const QString &exc)
+    {
+        toStatusMessage(exc);
+        reject();
+    }
+    uglyWorkaround();
+}
+
+void toBrowserTable::addParameters(std::list<QString> &migrateTable,
+                                   const std::list<QString> &ctx,
+                                   const QString &type,
+                                   const QString &data)
+{
+    toSQLParse::statement statement = toSQLParse::parseStatement(data, connection());
+    std::list<toSQLParse::statement>::iterator beg = statement.subTokens().begin();
+    std::list<toSQLParse::statement>::iterator end = beg;
+    while (end != statement.subTokens().end())
+    {
+        if (beg != end)
+        {
+            if ((*end).String != "=")
+            {
+                if ((*end).String == "(")
+                {
+                    do
+                    {
+                        end++;
+                    }
+                    while (end != statement.subTokens().end() && (*end).String != ")");
+                }
+                end++;
+                toExtract::addDescription(migrateTable, ctx, type, Extractor.createFromParse(beg, end));
+                beg = end;
+            }
+            else
+                end++;
+        }
+        else
+            end++;
+    }
+    if (beg != end)
+        toExtract::addDescription(migrateTable, ctx, type, Extractor.createFromParse(beg, end).stripWhiteSpace());
+}
+
+QString toBrowserTable::sql()
+{
+    std::list<QString> migrateTable;
+
+    std::list<QString> ctx;
+    toPush(ctx, Owner);
+    toPush(ctx, QString("TABLE"));
+    if (Table.isEmpty())
+        toPush(ctx, Name->text());
+    else
+        toPush(ctx, Table);
+    toExtract::addDescription(migrateTable, ctx);
+    if (Name->text() != Table && !Table.isEmpty())
+        toExtract::addDescription(migrateTable, ctx, "RENAME", Name->text());
+
+    std::list<toExtract::columnInfo>::const_iterator column = Columns.begin();
+    std::list<QLineEdit *>::const_iterator name = ColumnNames.begin();
+    std::list<toDatatype *>::const_iterator datatype = Datatypes.begin();
+    std::list<QLineEdit *>::const_iterator extra = Extra.begin();
+    int num = 1;
+    while (name != ColumnNames.end() && datatype != Datatypes.end() && extra != Extra.end())
+    {
+        QString cname;
+        if (column != Columns.end())
+        {
+            cname = (*column).Name;
+            if ((*name)->text() != (*column).Name)
+                toExtract::addDescription(migrateTable, ctx, "COLUMN", cname, "RENAME", (*name)->text());
+            column++;
+        }
+        else
+            cname = (*name)->text();
+
+        toExtract::addDescription(migrateTable, ctx, "COLUMN", cname);
+        toExtract::addDescription(migrateTable, ctx, "COLUMN", cname, (*datatype)->type());
+        if (!(*extra)->text().isEmpty())
+            toExtract::addDescription(migrateTable, ctx, "COLUMN", cname, "EXTRA", (*extra)->text());
+        toExtract::addDescription(migrateTable, ctx, "COLUMN", cname, "ORDER", QString::number(num++));
+        name++;
+        datatype++;
+        extra++;
+    }
+
+    if (!Comment->text().isEmpty())
+        toExtract::addDescription(migrateTable, ctx, "COMMENT", Comment->text());
+    addParameters(migrateTable, ctx, "STORAGE", StorageDeclarations->text());
+    addParameters(migrateTable, ctx, "PARALLEL", ParallelDeclarations->text());
+    addParameters(migrateTable, ctx, "PARAMETERS", ExtraDeclarations->text());
+
+    migrateTable.sort();
+
+    return Extractor.migrate(OriginalDescription, migrateTable);
+}
+
+void toBrowserTable::displaySQL()
+{
+    toMemoEditor memo(this, sql(), -1, -1, true, true);
+    memo.exec();
+}
+
+void toBrowserTable::addColumn()
+{
+    ColumnNumber++;
+    QLineEdit *tl;
+    toDatatype *td;
+    tl = new QLineEdit(ColumnGrid, QString::number(ColumnNumber));
+    tl->show();
+    ColumnNames.insert(ColumnNames.end(), tl);
+    td = new toDatatype(connection(), ColumnGrid);
+    td->show();
+    Datatypes.insert(Datatypes.end(), td);
+    tl = new QLineEdit(ColumnGrid);
+    tl->show();
+    Extra.insert(Extra.end(), tl);
+}
+
+void toBrowserTable::removeColumn()
+{
+    // Not implemented yet
+}
+
+void toBrowserTable::toggleCustom(bool val)
+{
+    for (std::list<toDatatype *>::iterator i = Datatypes.begin();i != Datatypes.end();i++)
+        (*i)->setCustom(val);
+}
+
+void toBrowserTable::uglyWorkaround()
+{
+    // Somehome the size doesn't get updated until way later so just keep calling until it gets set.
+    if (ColumnList->width() > 220 || UglyFlag)
+    {
+        ColumnGrid->setFixedWidth(ColumnList->width() - 30);
+        UglyFlag = true;
+    }
+    else
+        QTimer::singleShot(100, this, SLOT(uglyWorkaround()));
+}
+
+void toBrowserTable::resizeEvent(QResizeEvent *e)
+{
+    toBrowserTableUI::resizeEvent(e);
+    uglyWorkaround();
+}

Added: kde-extras/tora/branches/upstream/current/src/tobrowsertable.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowsertable.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowsertable.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,101 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOBROWSERTABLE_H
+#define TOBROWSERTABLE_H
+
+#include "config.h"
+#include "tobrowsertableui.h"
+#include "toextract.h"
+#include "totool.h"
+
+#include <list>
+
+class toConnection;
+class toDatatype;
+
+class QGrid;
+class QLineEdit;
+
+class toBrowserTable : public toBrowserTableUI, public toConnectionWidget
+{
+private:
+    Q_OBJECT
+
+    QString Owner;
+    QString Table;
+
+    toExtract Extractor;
+    std::list<toExtract::columnInfo> Columns;
+
+    std::list<QString> OriginalDescription;
+
+    QGrid *ColumnGrid;
+
+    int ColumnNumber;
+
+    std::list<QLineEdit *> ColumnNames;
+    std::list<toDatatype *> Datatypes;
+    std::list<QLineEdit *> Extra;
+
+    toBrowserTable(toConnection &conn, const QString &owner, const QString &table, QWidget *parent, const char *name = NULL);
+
+    void addParameters(std::list<QString> &migrateTable,
+                       const std::list<QString> &ctx,
+                       const QString &type,
+                       const QString &data);
+    QString sql(void);
+protected:
+    virtual void resizeEvent(QResizeEvent *e);
+public:
+    static void editTable(toConnection &conn, const QString &owner, const QString &table, QWidget *parent);
+    static void newTable(toConnection &conn, const QString &owner, QWidget *parent)
+    {
+        editTable(conn, owner, QString::null, parent);
+    }
+public slots:
+    virtual void displaySQL();
+    virtual void addColumn();
+    virtual void removeColumn();
+    virtual void toggleCustom(bool);
+private:
+    bool UglyFlag;
+private slots:
+    virtual void uglyWorkaround();
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tobrowsertableui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowsertableui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowsertableui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,308 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tobrowsertableui.ui'
+**
+** Created: Tue Sep 18 08:21:21 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tobrowsertableui.h"
+
+#include <qvariant.h>
+#include <qscrollview.h>
+#include <qpushbutton.h>
+#include <qtoolbutton.h>
+#include <qtabwidget.h>
+#include <qwidget.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+#include "toresultcombo.h"
+#include "tohighlightedtext.h"
+#include "qscrollview.h"
+static const char* const image0_data[] = { 
+"16 16 14 1",
+". c None",
+"# c #000000",
+"i c #181841",
+"e c #20205a",
+"k c #202462",
+"c c #292873",
+"l c #292c7b",
+"h c #313083",
+"b c #393cac",
+"d c #4140b4",
+"f c #4a4ccd",
+"j c #5a59f6",
+"g c #5a5df6",
+"a c #5a5dff",
+"................",
+".###..###..##...",
+"#..#.#..#..#....",
+"##...#...#.#....",
+"..#..#####.#....",
+"...#.#aab#.#....",
+"#..##cdaef##..#.",
+".##.#ghiha#####.",
+"....#aajkl#.....",
+".....#aaa#......",
+"......#####.....",
+".........###....",
+"..........###...",
+"...........##...",
+"................",
+"................"};
+
+static const char* const image1_data[] = { 
+"16 16 3 1",
+". c None",
+"# c #000000",
+"a c #00ff00",
+"..........###...",
+"..........#a#...",
+"..........#a#...",
+".......####a####",
+".......#aaaaaaa#",
+".......####a####",
+"..........#a#...",
+"..........#a#...",
+"..........###...",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................"};
+
+static const char* const image2_data[] = { 
+"16 16 3 1",
+". c None",
+"# c #000000",
+"a c #ff0000",
+"................",
+"................",
+"................",
+".......#########",
+".......#aaaaaaa#",
+".......#########",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................",
+"................"};
+
+
+/*
+ *  Constructs a toBrowserTableUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toBrowserTableUI::toBrowserTableUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl ),
+      image0( (const char **) image0_data ),
+      image1( (const char **) image1_data ),
+      image2( (const char **) image2_data )
+{
+    if ( !name )
+	setName( "toBrowserTableUI" );
+    toBrowserTableUILayout = new QGridLayout( this, 1, 1, 11, 6, "toBrowserTableUILayout"); 
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+    PushButton1->setDefault( TRUE );
+
+    toBrowserTableUILayout->addWidget( PushButton1, 1, 2 );
+
+    PushButton2 = new QPushButton( this, "PushButton2" );
+
+    toBrowserTableUILayout->addWidget( PushButton2, 1, 3 );
+
+    ToolButton1 = new QToolButton( this, "ToolButton1" );
+    ToolButton1->setFocusPolicy( QToolButton::StrongFocus );
+    ToolButton1->setPixmap( image0 );
+
+    toBrowserTableUILayout->addWidget( ToolButton1, 1, 0 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toBrowserTableUILayout->addItem( Spacer1, 1, 1 );
+
+    Tabs = new QTabWidget( this, "Tabs" );
+
+    tab = new QWidget( Tabs, "tab" );
+    tabLayout = new QVBoxLayout( tab, 11, 6, "tabLayout"); 
+
+    SchemaLabel = new QLabel( tab, "SchemaLabel" );
+    tabLayout->addWidget( SchemaLabel );
+
+    Schema = new toResultCombo( tab, "Schema" );
+    tabLayout->addWidget( Schema );
+
+    TextLabel1 = new QLabel( tab, "TextLabel1" );
+    tabLayout->addWidget( TextLabel1 );
+
+    Name = new QLineEdit( tab, "Name" );
+    tabLayout->addWidget( Name );
+
+    TextLabel1_3 = new QLabel( tab, "TextLabel1_3" );
+    tabLayout->addWidget( TextLabel1_3 );
+
+    Comment = new QLineEdit( tab, "Comment" );
+    tabLayout->addWidget( Comment );
+
+    TablespaceLabel = new QLabel( tab, "TablespaceLabel" );
+    tabLayout->addWidget( TablespaceLabel );
+
+    Tablespace = new QComboBox( FALSE, tab, "Tablespace" );
+    tabLayout->addWidget( Tablespace );
+
+    TextLabel1_3_2 = new QLabel( tab, "TextLabel1_3_2" );
+    tabLayout->addWidget( TextLabel1_3_2 );
+
+    ExtraDeclarations = new toHighlightedText( tab, "ExtraDeclarations" );
+    ExtraDeclarations->setFocusPolicy( toHighlightedText::WheelFocus );
+    tabLayout->addWidget( ExtraDeclarations );
+
+    TextLabel1_3_2_2 = new QLabel( tab, "TextLabel1_3_2_2" );
+    tabLayout->addWidget( TextLabel1_3_2_2 );
+
+    StorageDeclarations = new toHighlightedText( tab, "StorageDeclarations" );
+    StorageDeclarations->setFocusPolicy( toHighlightedText::WheelFocus );
+    tabLayout->addWidget( StorageDeclarations );
+
+    ParallelLabel = new QLabel( tab, "ParallelLabel" );
+    tabLayout->addWidget( ParallelLabel );
+
+    ParallelDeclarations = new toHighlightedText( tab, "ParallelDeclarations" );
+    ParallelDeclarations->setFocusPolicy( toHighlightedText::WheelFocus );
+    tabLayout->addWidget( ParallelDeclarations );
+    Tabs->insertTab( tab, QString::fromLatin1("") );
+
+    ColumnTab = new QWidget( Tabs, "ColumnTab" );
+    ColumnTabLayout = new QGridLayout( ColumnTab, 1, 1, 11, 6, "ColumnTabLayout"); 
+
+    ColumnList = new QScrollView( ColumnTab, "ColumnList" );
+    ColumnList->setFocusPolicy( QScrollView::StrongFocus );
+
+    ColumnTabLayout->addMultiCellWidget( ColumnList, 1, 1, 0, 3 );
+
+    AddColumn = new QToolButton( ColumnTab, "AddColumn" );
+    AddColumn->setFocusPolicy( QToolButton::TabFocus );
+    AddColumn->setPixmap( image1 );
+
+    ColumnTabLayout->addWidget( AddColumn, 0, 2 );
+
+    RemoveColumn = new QToolButton( ColumnTab, "RemoveColumn" );
+    RemoveColumn->setFocusPolicy( QToolButton::TabFocus );
+    RemoveColumn->setPixmap( image2 );
+
+    ColumnTabLayout->addWidget( RemoveColumn, 0, 3 );
+    spacer3 = new QSpacerItem( 340, 21, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    ColumnTabLayout->addItem( spacer3, 0, 1 );
+
+    CustomDeclarations = new QCheckBox( ColumnTab, "CustomDeclarations" );
+
+    ColumnTabLayout->addWidget( CustomDeclarations, 0, 0 );
+    Tabs->insertTab( ColumnTab, QString::fromLatin1("") );
+
+    toBrowserTableUILayout->addMultiCellWidget( Tabs, 0, 0, 0, 3 );
+    languageChange();
+    resize( QSize(651, 561).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( ToolButton1, SIGNAL( clicked() ), this, SLOT( displaySQL() ) );
+    connect( AddColumn, SIGNAL( clicked() ), this, SLOT( addColumn() ) );
+    connect( RemoveColumn, SIGNAL( clicked() ), this, SLOT( removeColumn() ) );
+    connect( CustomDeclarations, SIGNAL( toggled(bool) ), this, SLOT( toggleCustom(bool) ) );
+
+    // tab order
+    setTabOrder( Tabs, Name );
+    setTabOrder( Name, Comment );
+    setTabOrder( Comment, Tablespace );
+    setTabOrder( Tablespace, ExtraDeclarations );
+    setTabOrder( ExtraDeclarations, ToolButton1 );
+    setTabOrder( ToolButton1, PushButton1 );
+    setTabOrder( PushButton1, PushButton2 );
+    setTabOrder( PushButton2, AddColumn );
+    setTabOrder( AddColumn, RemoveColumn );
+    setTabOrder( RemoveColumn, ColumnList );
+
+    // buddies
+    SchemaLabel->setBuddy( Name );
+    TextLabel1->setBuddy( Name );
+    TextLabel1_3->setBuddy( Comment );
+    TablespaceLabel->setBuddy( Tablespace );
+    TextLabel1_3_2->setBuddy( ExtraDeclarations );
+    TextLabel1_3_2_2->setBuddy( StorageDeclarations );
+    ParallelLabel->setBuddy( ParallelDeclarations );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toBrowserTableUI::~toBrowserTableUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toBrowserTableUI::languageChange()
+{
+    setCaption( tr( "Table columns" ) );
+    PushButton1->setText( tr( "&Ok" ) );
+    PushButton2->setText( tr( "Cancel" ) );
+    ToolButton1->setText( QString::null );
+    QToolTip::add( ToolButton1, tr( "Display SQL to create this constraint" ) );
+    SchemaLabel->setText( tr( "&Schema" ) );
+    TextLabel1->setText( tr( "&Name" ) );
+    TextLabel1_3->setText( tr( "C&omment" ) );
+    TablespaceLabel->setText( tr( "&Tablespace" ) );
+    TextLabel1_3_2->setText( tr( "&Extra declarations" ) );
+    TextLabel1_3_2_2->setText( tr( "&Storage declarations" ) );
+    ParallelLabel->setText( tr( "&Parallel declarations" ) );
+    Tabs->changeTab( tab, tr( "&General" ) );
+    AddColumn->setText( QString::null );
+    RemoveColumn->setText( QString::null );
+    CustomDeclarations->setText( tr( "Custom column declarations" ) );
+    Tabs->changeTab( ColumnTab, tr( "&Columns" ) );
+}
+
+void toBrowserTableUI::displaySQL()
+{
+    qWarning( "toBrowserTableUI::displaySQL(): Not implemented yet" );
+}
+
+void toBrowserTableUI::addColumn()
+{
+    qWarning( "toBrowserTableUI::addColumn(): Not implemented yet" );
+}
+
+void toBrowserTableUI::removeColumn()
+{
+    qWarning( "toBrowserTableUI::removeColumn(): Not implemented yet" );
+}
+
+void toBrowserTableUI::toggleCustom(bool)
+{
+    qWarning( "toBrowserTableUI::toggleCustom(bool): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tobrowsertableui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowsertableui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowsertableui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,91 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tobrowsertableui.ui'
+**
+** Created: Tue Sep 18 08:21:21 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOBROWSERTABLEUI_H
+#define TOBROWSERTABLEUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toResultCombo;
+class QScrollView;
+class toHighlightedText;
+class QPushButton;
+class QToolButton;
+class QTabWidget;
+class QWidget;
+class QLabel;
+class QLineEdit;
+class QComboBox;
+class QCheckBox;
+
+class toBrowserTableUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toBrowserTableUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toBrowserTableUI();
+
+    QPushButton* PushButton1;
+    QPushButton* PushButton2;
+    QToolButton* ToolButton1;
+    QTabWidget* Tabs;
+    QWidget* tab;
+    QLabel* SchemaLabel;
+    toResultCombo* Schema;
+    QLabel* TextLabel1;
+    QLineEdit* Name;
+    QLabel* TextLabel1_3;
+    QLineEdit* Comment;
+    QLabel* TablespaceLabel;
+    QComboBox* Tablespace;
+    QLabel* TextLabel1_3_2;
+    toHighlightedText* ExtraDeclarations;
+    QLabel* TextLabel1_3_2_2;
+    toHighlightedText* StorageDeclarations;
+    QLabel* ParallelLabel;
+    toHighlightedText* ParallelDeclarations;
+    QWidget* ColumnTab;
+    QScrollView* ColumnList;
+    QToolButton* AddColumn;
+    QToolButton* RemoveColumn;
+    QCheckBox* CustomDeclarations;
+
+public slots:
+    virtual void displaySQL();
+    virtual void addColumn();
+    virtual void removeColumn();
+    virtual void toggleCustom(bool);
+
+protected:
+    QGridLayout* toBrowserTableUILayout;
+    QSpacerItem* Spacer1;
+    QVBoxLayout* tabLayout;
+    QGridLayout* ColumnTabLayout;
+    QSpacerItem* spacer3;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+    QPixmap image1;
+    QPixmap image2;
+    QPixmap image3;
+    QPixmap image4;
+
+};
+
+#endif // TOBROWSERTABLEUI_H

Added: kde-extras/tora/branches/upstream/current/src/tobrowsertableui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tobrowsertableui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tobrowsertableui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,428 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>toBrowserTableUI</class>
+<widget class="QDialog">
+    <property name="name">
+        <cstring>toBrowserTableUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>651</width>
+            <height>561</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>Table columns</string>
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>11</number>
+        </property>
+        <property name="spacing">
+            <number>6</number>
+        </property>
+        <widget class="QPushButton" row="1" column="2">
+            <property name="name">
+                <cstring>PushButton1</cstring>
+            </property>
+            <property name="text">
+                <string>&amp;Ok</string>
+            </property>
+            <property name="default">
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget class="QPushButton" row="1" column="3">
+            <property name="name">
+                <cstring>PushButton2</cstring>
+            </property>
+            <property name="text">
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <widget class="QToolButton" row="1" column="0">
+            <property name="name">
+                <cstring>ToolButton1</cstring>
+            </property>
+            <property name="focusPolicy">
+                <enum>StrongFocus</enum>
+            </property>
+            <property name="text">
+                <string></string>
+            </property>
+            <property name="pixmap">
+                <pixmap>image0</pixmap>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>Display SQL to create this constraint</string>
+            </property>
+        </widget>
+        <spacer row="1" column="1">
+            <property name="name">
+                <cstring>Spacer1</cstring>
+            </property>
+            <property name="orientation">
+                <enum>Horizontal</enum>
+            </property>
+            <property name="sizeType">
+                <enum>Expanding</enum>
+            </property>
+            <property name="sizeHint">
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget class="QTabWidget" row="0" column="0" rowspan="1" colspan="4">
+            <property name="name">
+                <cstring>Tabs</cstring>
+            </property>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>tab</cstring>
+                </property>
+                <attribute name="title">
+                    <string>&amp;General</string>
+                </attribute>
+                <vbox>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QLabel">
+                        <property name="name">
+                            <cstring>SchemaLabel</cstring>
+                        </property>
+                        <property name="text">
+                            <string>&amp;Schema</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>Name</cstring>
+                        </property>
+                    </widget>
+                    <widget class="toResultCombo">
+                        <property name="name">
+                            <cstring>Schema</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLabel">
+                        <property name="name">
+                            <cstring>TextLabel1</cstring>
+                        </property>
+                        <property name="text">
+                            <string>&amp;Name</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>Name</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLineEdit">
+                        <property name="name">
+                            <cstring>Name</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLabel">
+                        <property name="name">
+                            <cstring>TextLabel1_3</cstring>
+                        </property>
+                        <property name="text">
+                            <string>C&amp;omment</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>Comment</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLineEdit">
+                        <property name="name">
+                            <cstring>Comment</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLabel">
+                        <property name="name">
+                            <cstring>TablespaceLabel</cstring>
+                        </property>
+                        <property name="text">
+                            <string>&amp;Tablespace</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>Tablespace</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QComboBox">
+                        <property name="name">
+                            <cstring>Tablespace</cstring>
+                        </property>
+                    </widget>
+                    <widget class="QLabel">
+                        <property name="name">
+                            <cstring>TextLabel1_3_2</cstring>
+                        </property>
+                        <property name="text">
+                            <string>&amp;Extra declarations</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>ExtraDeclarations</cstring>
+                        </property>
+                    </widget>
+                    <widget class="toHighlightedText">
+                        <property name="name">
+                            <cstring>ExtraDeclarations</cstring>
+                        </property>
+                        <property name="focusPolicy">
+                            <enum>WheelFocus</enum>
+                        </property>
+                    </widget>
+                    <widget class="QLabel">
+                        <property name="name">
+                            <cstring>TextLabel1_3_2_2</cstring>
+                        </property>
+                        <property name="text">
+                            <string>&amp;Storage declarations</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>StorageDeclarations</cstring>
+                        </property>
+                    </widget>
+                    <widget class="toHighlightedText">
+                        <property name="name">
+                            <cstring>StorageDeclarations</cstring>
+                        </property>
+                        <property name="focusPolicy">
+                            <enum>WheelFocus</enum>
+                        </property>
+                    </widget>
+                    <widget class="QLabel">
+                        <property name="name">
+                            <cstring>ParallelLabel</cstring>
+                        </property>
+                        <property name="text">
+                            <string>&amp;Parallel declarations</string>
+                        </property>
+                        <property name="buddy" stdset="0">
+                            <cstring>ParallelDeclarations</cstring>
+                        </property>
+                    </widget>
+                    <widget class="toHighlightedText">
+                        <property name="name">
+                            <cstring>ParallelDeclarations</cstring>
+                        </property>
+                        <property name="focusPolicy">
+                            <enum>WheelFocus</enum>
+                        </property>
+                    </widget>
+                </vbox>
+            </widget>
+            <widget class="QWidget">
+                <property name="name">
+                    <cstring>ColumnTab</cstring>
+                </property>
+                <attribute name="title">
+                    <string>&amp;Columns</string>
+                </attribute>
+                <grid>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="QScrollView" row="1" column="0" rowspan="1" colspan="4">
+                        <property name="name">
+                            <cstring>ColumnList</cstring>
+                        </property>
+                        <property name="focusPolicy">
+                            <enum>StrongFocus</enum>
+                        </property>
+                    </widget>
+                    <widget class="QToolButton" row="0" column="2">
+                        <property name="name">
+                            <cstring>AddColumn</cstring>
+                        </property>
+                        <property name="focusPolicy">
+                            <enum>TabFocus</enum>
+                        </property>
+                        <property name="text">
+                            <string></string>
+                        </property>
+                        <property name="pixmap">
+                            <pixmap>image1</pixmap>
+                        </property>
+                    </widget>
+                    <widget class="QToolButton" row="0" column="3">
+                        <property name="name">
+                            <cstring>RemoveColumn</cstring>
+                        </property>
+                        <property name="focusPolicy">
+                            <enum>TabFocus</enum>
+                        </property>
+                        <property name="text">
+                            <string></string>
+                        </property>
+                        <property name="pixmap">
+                            <pixmap>image2</pixmap>
+                        </property>
+                    </widget>
+                    <spacer row="0" column="1">
+                        <property name="name">
+                            <cstring>spacer3</cstring>
+                        </property>
+                        <property name="orientation">
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property name="sizeType">
+                            <enum>Expanding</enum>
+                        </property>
+                        <property name="sizeHint">
+                            <size>
+                                <width>340</width>
+                                <height>21</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget class="QCheckBox" row="0" column="0">
+                        <property name="name">
+                            <cstring>CustomDeclarations</cstring>
+                        </property>
+                        <property name="text">
+                            <string>Custom column declarations</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toResultCombo</class>
+        <header location="local">toresultcombo.h</header>
+        <sizehint>
+            <width>50</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>1</hordata>
+            <verdata>5</verdata>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+        <pixmap>image3</pixmap>
+    </customwidget>
+    <customwidget>
+        <class>QScrollView</class>
+        <header location="global">qscrollview.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>7</hordata>
+            <verdata>7</verdata>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+        <pixmap>image4</pixmap>
+    </customwidget>
+    <customwidget>
+        <class>toHighlightedText</class>
+        <header location="local">tohighlightedtext.h</header>
+        <sizehint>
+            <width>100</width>
+            <height>100</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>7</hordata>
+            <verdata>7</verdata>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+        <pixmap>image3</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image name="image0">
+        <data format="XPM.GZ" length="575">789c6d90cf6e83300c87ef3c45446e684a13081434f51136ed3869dac11828f4cf2a6ddd619af6eeebcf848ab25921f2f7c5d88455a29e9f1e54b28a3ece741e58714fef2a693e8fc7af97d7cd7714bb426179e5e2bb28368ad5e3e9ad45ae2fb9b612c001e84a577aa96c81a94d6d4ec07d405fa44016acd2729d010f01795d037b60e6325bca692d58654c0c6c80de795b7b6027489eb901ee8039e5555700b7019b11e98a9d5c6711e2b4d666da82436e64c30a0ed9f85cdd5881983b5410d5332755dc50dbc99869aed1db7ee8696c307ddfe5d5ddfea0cdac9f48d2e6d685c1b7ce84ab2c5c908b7ff09ffbdb6f723ff7d12f66576feb</data>
+    </image>
+    <image name="image1">
+        <data format="XPM.GZ" length="409">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022630543251d2e253d856405bffcbc54105b19c856360003103711c24d4b8370f5e04059591948a28925122106d40814030264b144085026a08e583b70b80f02064cacd69a0b00f9604c22</data>
+    </image>
+    <image name="image2">
+        <data format="XPM.GZ" length="409">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022630543251d2e253d856405bffcbc54105b19c856360003103711c44d4b8371f5d0001962ca30802c960801ca04d45162efc08bd55a7301005e924b74</data>
+    </image>
+    <image name="image3">
+        <data format="XPM.GZ" length="4462">789c9d97c76e24490e86effd1442f3d65870d2451a0ce6206f5adeb4cc620f8c34f2553225b5a4c1befb46927fe6a1d4c0ccac4287fa8a0c26834193f5dbb785b3fd9d856fbf7d799ec9ecba5ea8afe469e15bf3727ffffeeffffcf1e797af49b2d0ffc7d142f2f55f5fbe1ecc16ea85dde9a4ed81290045faa77ca49cf4ab67ba1e3953969173651ab9d4fdf1c8a27c3872ad7c3c72d3b32c2a67c3f3444636fbef23eb7e590267e68fcc4656395d8dacf6d938ef97eaef289781cddebdb2846fccff44b989ba58e3411f3dc75158e6df1d3889539517ca49bf54fe43398d1dec4f46567f685fd9c539f43fc025f80c1c3ce8d93f28e77185f8bf0c6cfae4c0b5f9c3c6e5c0542a4b5876fe13708df39d2bd7716372aa8c93c4e4723bb2f977aadc26ceec4bdb7310e6b0bfab9c2445ecd49f1370694cebca65d260ffa6711a41aef14d24e94cee6be3348e0ae5e9c8765f07ca3e8db17f0f9c825794eb3489351fe9bb7217e4969f29388bd51ee9fda5715a19730696b852fea95c6471647ca95cf64bcf43e0cef4657b647bfe6acf213d6bb32f9a9f5992b5a64f9a8f990b6cf9ecc15d6cf9acf6b2da55a8a75cb973dee4b2d1b38b5c05de02434e87e01aacfb351df5bebddea74b5c67f9c795711ea15e357e2ecde358fb87efc0a867df8cac728a074e62e527706afb59f3cf6583be5c28bb3c35f693812d1fbdc6dbe57966fec932d899ffa4f7e38adca17e34beaeca4b9c271a18f1d5fc739257b0d70d9c68be7bed7fcee7827ab91cd8e4740cf6b19d4ffb87ab07b9bf516e72d4a3ac821b9cef6e60d84f47367ded2fae1d9f7704f6163f79000ffde27660f387ed3c5dbf54dfeebb0bf6acbe6b706bfa5ef32f8f8b18f5bf0f463f20edb77956a4e68fbc80b3c4facd163847be6bfde72ec86dbeac82715fbc0286be683cf3bc081d44f7df80d344fb0b6b7de64581fb916765297263d6fccd9b7ee97e566e8b06cfdb1f59cf2bda2f8bbc2c11df0c5c41aefdb328ca22b1feb0012eedbce24736f91b18fb796d64eb87cb60817dcdafb07d906bfd14d22f659d8785ef97b2f6d7b2df6ef1d6fb2babaac6f92e8c25b27ecc1f239b7f3a5fca5a8678ea7c2d9bc0e6ef1238b3fca2c7814d5f4cbf9334b5f833384bed3c7a5f5514f4adbe2ec07962e7590457f06f6f649b977afe2a16f42f5e070bfc591e18f7a5f1a812a9e0df39d827da4fbd8c6ccfd7785569bf945f953371a9d5a3de67950bfa2d75c63eb2fb15bdcfaaf011e6c7263846bf8f4636f91618f3c7d3c0f047fb69550efab2074e12bd6fd27957553ec33c5b043bcc7f9d0795f818fdb501a3df8ae673e507ff69021eea37063bc45ffb73550736ff36c0a84f3e0317a86f8b5f139e6ffe1f821de6d9127898ff3be00a7c3ab2cd03e3d697560ff40016e47b3bb2e96bbd559d8f32bbff4b7065f193042c98873acf240af6adbf3c83c5f2954bb0c7bcd77c107d81d2fdebc63e33ff640aaecc9e1c8151df5c803dfaadc64b52dfa03ed64636ffb4ff4b2867f453ede7227586fcd3f9264ded91fffafe236d5da37fe83c91ceb7b9e5b7f6731ff92ed7f747d6fbf7e185cf58347e3e6932e47b3430fa893edf87d795c2fc3f003b67f5f902cec17abfde0dfa3c053b3c5ffb832fc2eb8fddcf233887fc195c801f46b6f3cdc02558fba72f7d2d1a7f7e321ee58fe0cad86bbff24dd3e2fe74fef836b0c6eb60d62fa6bf5e07b3419f853dd7dc70fb8bd5f1255fd90ed30f9f3c5ff30ddff21ddff384a7fcc08ffcc4cf61cdf8855ff9e79c7e1db4dff89d3f7891977899577895d7789d377893b7f83b6fcfe937bc13b477798ff7f9800ff928ac633ee11f7cca6761d7f99c7e1b3cb908da11c7413be1943376e153cc39175c72f549ff9e17c31744429e6a6aa8a58e2ee98aaee9866e7f617fc24b7417a4f734a1293dd0233dd133cd8285177aa5f9f3b63ca5377aa78f607b919668995682e62aadd17ab0b1419b9ff41f682b48bed336edd02eed05ed7d5ea3033a0cdf1ed1f127fd273ae123fa41a774a6b685cee982228a837e42e927fd47caf8985c38651eb40b2ac38e4a5842658a97fab33fd248cb87d2c9a55cc9b5dcc82d1fc99ddccb44a6f230af2f8ff224cf417f262ff22a3fe54ddee543166549966545567f617f4dd66523dc6b2c9bb225df655b7682f692ecca9eeccfe97772c09b722847722c27c1f3eb70f66bf9116c9fca999ccbc59cfe25bf4a143a5ef8992561324a78bd92522acf9ebc78efe7cf7b153276db37bef59dbff457fedadff85b7f27abfede4ffcd4cf9ff76faeff4fffefeff8c7f5fedfdfbffc0fa355c495</data>
+    </image>
+    <image name="image4">
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserTableUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserTableUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>ToolButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserTableUI</receiver>
+        <slot>displaySQL()</slot>
+    </connection>
+    <connection>
+        <sender>AddColumn</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserTableUI</receiver>
+        <slot>addColumn()</slot>
+    </connection>
+    <connection>
+        <sender>RemoveColumn</sender>
+        <signal>clicked()</signal>
+        <receiver>toBrowserTableUI</receiver>
+        <slot>removeColumn()</slot>
+    </connection>
+    <connection>
+        <sender>CustomDeclarations</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toBrowserTableUI</receiver>
+        <slot>toggleCustom(bool)</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>Tabs</tabstop>
+    <tabstop>Name</tabstop>
+    <tabstop>Comment</tabstop>
+    <tabstop>Tablespace</tabstop>
+    <tabstop>ExtraDeclarations</tabstop>
+    <tabstop>ToolButton1</tabstop>
+    <tabstop>PushButton1</tabstop>
+    <tabstop>PushButton2</tabstop>
+    <tabstop>AddColumn</tabstop>
+    <tabstop>RemoveColumn</tabstop>
+    <tabstop>ColumnList</tabstop>
+</tabstops>
+<slots>
+    <slot>displaySQL()</slot>
+    <slot>addColumn()</slot>
+    <slot>removeColumn()</slot>
+    <slot>toggleCustom(bool)</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+    <includehint>toresultcombo.h</includehint>
+    <includehint>tohighlightedtext.h</includehint>
+    <includehint>tohighlightedtext.h</includehint>
+    <includehint>tohighlightedtext.h</includehint>
+    <includehint>qscrollview.h</includehint>
+</includehints>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tochangeconnection.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tochangeconnection.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tochangeconnection.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,113 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "tochangeconnection.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "totool.h"
+
+#include <qpopupmenu.h>
+#include <qtooltip.h>
+
+#include "tochangeconnection.moc"
+
+#include "icons/changeconnect.xpm"
+
+toChangeConnection::toChangeConnection(QToolBar *parent, const char *name)
+        : toPopupButton(QPixmap(const_cast<const char**>(changeconnect_xpm)),
+                        tr("Change the connection of the tool."),
+                        tr("Change the connection of the tool."),
+                        parent, name)
+{
+    setPopup(new QPopupMenu(this));
+    connect(popup(), SIGNAL(aboutToShow()), this, SLOT(popupMenu()));
+    connect(popup(), SIGNAL(activated(int)), this, SLOT(changeConnection(int)));
+}
+
+void toChangeConnection::popupMenu(void)
+{
+    try
+    {
+        popup()->clear();
+        toConnection &conn = toCurrentConnection(this);
+        std::list<QString> cons = toMainWidget()->connections();
+        int idx = 0;
+        for (std::list<QString>::iterator i = cons.begin();i != cons.end();i++, idx++)
+        {
+            if (toCurrentTool(this)->canHandle(toMainWidget()->connection(*i)))
+            {
+                popup()->insertItem(*i, idx);
+                if (conn.description() == *i)
+                    popup()->setItemChecked(idx, true);
+            }
+        }
+    }
+    TOCATCH
+}
+
+void toChangeConnection::changeConnection(int val)
+{
+    if (popup()->isItemChecked(val))
+        return ;
+    std::list<QString> cons = toMainWidget()->connections();
+    std::list<QString>::iterator i = cons.begin();
+    while (i != cons.end() && val > 0)
+    {
+        i++;
+        val--;
+    }
+    try
+    {
+        if (i == cons.end())
+            throw tr("Couldn't find selected connection");
+        QWidget *cur = parentWidget();
+        while (cur)
+        {
+            toToolWidget *tool = dynamic_cast<toToolWidget *>(cur);
+            if (tool)
+            {
+                tool->setConnection(toMainWidget()->connection(*i));
+                toMainWidget()->windowActivated(tool);
+                toMainWidget()->changeConnection();
+                return ;
+            }
+            cur = cur->parentWidget();
+        }
+        throw tr("Couldn't find parent connection. Internal error.");
+    }
+    TOCATCH
+}

Added: kde-extras/tora/branches/upstream/current/src/tochangeconnection.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tochangeconnection.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tochangeconnection.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,63 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOCHANGECONNECTION_H
+#define TOCHANGECONNECTION_H
+
+#include "config.h"
+#include "utils.h"
+
+/**
+ * This button will allow you to change the connection for the nearest toToolWidget
+ * parent.
+ */
+
+class toChangeConnection : public toPopupButton
+{
+    Q_OBJECT
+private slots:
+    void changeConnection(int id);
+    void popupMenu(void);
+public:
+    /** Create the button, only the toolbar parent is needed.
+     * @param parent Toolbar to put connection in.
+     * @param name Name of widget.
+     */
+    toChangeConnection(QToolBar *parent, const char *name = 0);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tochartalarmui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tochartalarmui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tochartalarmui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,173 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tochartalarmui.ui'
+**
+** Created: Tue Sep 18 08:21:21 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tochartalarmui.h"
+
+#include <qvariant.h>
+#include <qcombobox.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "toresultview.h"
+
+/*
+ *  Constructs a toChartAlarmUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toChartAlarmUI::toChartAlarmUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toChartAlarmUI" );
+    toChartAlarmUILayout = new QGridLayout( this, 1, 1, 11, 6, "toChartAlarmUILayout"); 
+
+    Operation = new QComboBox( FALSE, this, "Operation" );
+
+    toChartAlarmUILayout->addWidget( Operation, 0, 2 );
+
+    Action = new QComboBox( FALSE, this, "Action" );
+
+    toChartAlarmUILayout->addWidget( Action, 3, 2 );
+
+    Comparison = new QComboBox( FALSE, this, "Comparison" );
+
+    toChartAlarmUILayout->addWidget( Comparison, 1, 2 );
+
+    Value = new QLineEdit( this, "Value" );
+
+    toChartAlarmUILayout->addWidget( Value, 2, 2 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+
+    toChartAlarmUILayout->addWidget( TextLabel1, 0, 1 );
+
+    TextLabel2 = new QLabel( this, "TextLabel2" );
+
+    toChartAlarmUILayout->addWidget( TextLabel2, 2, 1 );
+
+    TextLabel1_2 = new QLabel( this, "TextLabel1_2" );
+
+    toChartAlarmUILayout->addWidget( TextLabel1_2, 1, 1 );
+
+    TextLabel3 = new QLabel( this, "TextLabel3" );
+
+    toChartAlarmUILayout->addWidget( TextLabel3, 3, 1 );
+
+    Layout2 = new QHBoxLayout( 0, 0, 6, "Layout2"); 
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    Layout2->addItem( Spacer1 );
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+    PushButton1->setDefault( TRUE );
+    Layout2->addWidget( PushButton1 );
+
+    PushButton2 = new QPushButton( this, "PushButton2" );
+    Layout2->addWidget( PushButton2 );
+
+    toChartAlarmUILayout->addMultiCellLayout( Layout2, 7, 7, 0, 2 );
+
+    Charts = new toListView( this, "Charts" );
+    Charts->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, Charts->sizePolicy().hasHeightForWidth() ) );
+    Charts->setFocusPolicy( toListView::StrongFocus );
+
+    toChartAlarmUILayout->addMultiCellWidget( Charts, 0, 6, 0, 0 );
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toChartAlarmUILayout->addItem( Spacer2, 6, 2 );
+
+    Persistent = new QCheckBox( this, "Persistent" );
+
+    toChartAlarmUILayout->addMultiCellWidget( Persistent, 5, 5, 1, 2 );
+
+    ExtraLabel = new QLabel( this, "ExtraLabel" );
+
+    toChartAlarmUILayout->addWidget( ExtraLabel, 4, 1 );
+
+    Extra = new QLineEdit( this, "Extra" );
+
+    toChartAlarmUILayout->addWidget( Extra, 4, 2 );
+    languageChange();
+    resize( QSize(388, 509).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( Action, SIGNAL( activated(int) ), this, SLOT( changeValue(int) ) );
+
+    // tab order
+    setTabOrder( Charts, Operation );
+    setTabOrder( Operation, Comparison );
+    setTabOrder( Comparison, Value );
+    setTabOrder( Value, Action );
+    setTabOrder( Action, Extra );
+    setTabOrder( Extra, Persistent );
+    setTabOrder( Persistent, PushButton1 );
+    setTabOrder( PushButton1, PushButton2 );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toChartAlarmUI::~toChartAlarmUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toChartAlarmUI::languageChange()
+{
+    setCaption( tr( "Chart alarm" ) );
+    Operation->clear();
+    Operation->insertItem( tr( "Any" ) );
+    Operation->insertItem( tr( "All" ) );
+    Operation->insertItem( tr( "Sum" ) );
+    Operation->insertItem( tr( "Average" ) );
+    Operation->insertItem( tr( "Max" ) );
+    Operation->insertItem( tr( "Min" ) );
+    Action->clear();
+    Action->insertItem( tr( "Statusmessage" ) );
+    Action->insertItem( tr( "Email" ) );
+    Action->insertItem( tr( "Ignore" ) );
+    Comparison->clear();
+    Comparison->insertItem( tr( "=" ) );
+    Comparison->insertItem( tr( "!=" ) );
+    Comparison->insertItem( tr( "<" ) );
+    Comparison->insertItem( tr( ">" ) );
+    Comparison->insertItem( tr( "<=" ) );
+    Comparison->insertItem( tr( ">=" ) );
+    TextLabel1->setText( tr( "Operation" ) );
+    QToolTip::add( TextLabel1, tr( "Operation to perform on the selected columns" ) );
+    TextLabel2->setText( tr( "Value" ) );
+    QToolTip::add( TextLabel2, tr( "Value to use in comparison." ) );
+    TextLabel1_2->setText( tr( "Comparison" ) );
+    QToolTip::add( TextLabel1_2, tr( "What comparison to do with the result from the above operation." ) );
+    TextLabel3->setText( tr( "Action" ) );
+    QToolTip::add( TextLabel3, tr( "What to do when alarm is triggered." ) );
+    PushButton1->setText( tr( "&Ok" ) );
+    PushButton2->setText( tr( "Cancel" ) );
+    Persistent->setText( tr( "Persistent" ) );
+    QToolTip::add( Persistent, tr( "Remember this alarm when restarting." ) );
+    ExtraLabel->setText( QString::null );
+}
+
+void toChartAlarmUI::changeValue(int)
+{
+    qWarning( "toChartAlarmUI::changeValue(int): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tochartalarmui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tochartalarmui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tochartalarmui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tochartalarmui.ui'
+**
+** Created: Tue Sep 18 08:21:21 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOCHARTALARMUI_H
+#define TOCHARTALARMUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toListView;
+class QComboBox;
+class QLineEdit;
+class QLabel;
+class QPushButton;
+class QCheckBox;
+
+class toChartAlarmUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toChartAlarmUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toChartAlarmUI();
+
+    QComboBox* Operation;
+    QComboBox* Action;
+    QComboBox* Comparison;
+    QLineEdit* Value;
+    QLabel* TextLabel1;
+    QLabel* TextLabel2;
+    QLabel* TextLabel1_2;
+    QLabel* TextLabel3;
+    QPushButton* PushButton1;
+    QPushButton* PushButton2;
+    toListView* Charts;
+    QCheckBox* Persistent;
+    QLabel* ExtraLabel;
+    QLineEdit* Extra;
+
+public slots:
+    virtual void changeValue(int);
+
+protected:
+    QGridLayout* toChartAlarmUILayout;
+    QSpacerItem* Spacer2;
+    QHBoxLayout* Layout2;
+    QSpacerItem* Spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOCHARTALARMUI_H

Added: kde-extras/tora/branches/upstream/current/src/tochartalarmui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tochartalarmui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tochartalarmui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,401 @@
+<!DOCTYPE UI><UI>
+<class>toChartAlarmUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toChartAlarmUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>388</width>
+            <height>509</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Chart alarm</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="2" >
+            <class>QComboBox</class>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>Any</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>All</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>Sum</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>Average</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>Max</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>Min</string>
+                </property>
+            </item>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Operation</cstring>
+            </property>
+        </widget>
+        <widget row="3"  column="2" >
+            <class>QComboBox</class>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>Statusmessage</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>Email</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>Ignore</string>
+                </property>
+            </item>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Action</cstring>
+            </property>
+        </widget>
+        <widget row="1"  column="2" >
+            <class>QComboBox</class>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>=</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>!=</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>&lt;</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>&gt;</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>&lt;=</string>
+                </property>
+            </item>
+            <item>
+                <property>
+                    <name>text</name>
+                    <string>&gt;=</string>
+                </property>
+            </item>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Comparison</cstring>
+            </property>
+        </widget>
+        <widget row="2"  column="2" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Value</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="1" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Operation</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Operation to perform on the selected columns</string>
+            </property>
+        </widget>
+        <widget row="2"  column="1" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Value</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Value to use in comparison.</string>
+            </property>
+        </widget>
+        <widget row="1"  column="1" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Comparison</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>What comparison to do with the result from the above operation.</string>
+            </property>
+        </widget>
+        <widget row="3"  column="1" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel3</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Action</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>What to do when alarm is triggered.</string>
+            </property>
+        </widget>
+        <widget row="7"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLayoutWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Layout2</cstring>
+            </property>
+            <hbox>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>0</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <spacer>
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Horizontal</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget>
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>PushButton1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Ok</string>
+                    </property>
+                    <property stdset="1">
+                        <name>default</name>
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget>
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>PushButton2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Cancel</string>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <widget row="0"  column="0"  rowspan="7"  colspan="1" >
+            <class>toListView</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Charts</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>7</hsizetype>
+                    <vsizetype>7</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>focusPolicy</name>
+                <enum>StrongFocus</enum>
+            </property>
+        </widget>
+        <spacer row="6"  column="2" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="5"  column="1"  rowspan="1"  colspan="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Persistent</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Persistent</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Remember this alarm when restarting.</string>
+            </property>
+        </widget>
+        <widget row="4"  column="1" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ExtraLabel</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string></string>
+            </property>
+        </widget>
+        <widget row="4"  column="2" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Extra</cstring>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toListView</class>
+        <header location="local">toresultview.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toChartAlarmUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>toChartAlarmUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>Action</sender>
+        <signal>activated(int)</signal>
+        <receiver>toChartAlarmUI</receiver>
+        <slot>changeValue(int)</slot>
+    </connection>
+    <slot access="public">changeValue(int)</slot>
+</connections>
+<tabstops>
+    <tabstop>Charts</tabstop>
+    <tabstop>Operation</tabstop>
+    <tabstop>Comparison</tabstop>
+    <tabstop>Value</tabstop>
+    <tabstop>Action</tabstop>
+    <tabstop>Extra</tabstop>
+    <tabstop>Persistent</tabstop>
+    <tabstop>PushButton1</tabstop>
+    <tabstop>PushButton2</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tochartmanager.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tochartmanager.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tochartmanager.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1086 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tobarchart.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tolinechart.h"
+#include "tomain.h"
+#include "toresultview.h"
+#include "tosmtp.h"
+#include "totool.h"
+
+#include <ctype.h>
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qpopupmenu.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qvalidator.h>
+#include <qworkspace.h>
+
+#include "tochartalarmui.moc"
+#include "tochartmanager.moc"
+#include "tochartsetupui.moc"
+
+#include "icons/chart.xpm"
+#include "icons/fileopen.xpm"
+#include "icons/refresh.xpm"
+
+class toChartTool : public toTool
+{
+protected:
+    toChartHandler *Handler;
+    toChartManager *Window;
+public:
+    toChartTool()
+            : toTool(930, "Chart Manager")
+    {
+        Window = NULL;
+    }
+    virtual QWidget *toolWindow(QWidget *, toConnection &)
+    {
+        if (!Handler)
+            return NULL;
+        if (!Window)
+        {
+            Window = new toChartManager(toMainWidget()->workspace());
+            Window->setCaption(qApp->translate("toChartTool", "Chart Manager"));
+            Window->setIcon(QPixmap(const_cast<const char**>(chart_xpm)));
+        }
+        Window->refresh();
+        Window->show();
+        Window->raise();
+        Window->setFocus();
+        return Window;
+    }
+    virtual void customSetup(int toolid)
+    {
+        toMainWidget()->editMenu()->insertItem(QPixmap(const_cast<const char**>(chart_xpm)),
+                                               qApp->translate("toChartTool", "Chart Manager..."), toolid);
+
+        Handler = new toChartHandler();
+    }
+    void closeWindow(void)
+    {
+        Window = NULL;
+    }
+    void closeHandler(void)
+    {
+        Handler = NULL;
+    }
+
+    toChartHandler *handler()
+    {
+        return Handler;
+    }
+    toChartManager *manager()
+    {
+        return Window;
+    }
+
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toChartTool ChartTool;
+
+class toChartAlarm : public toChartAlarmUI
+{
+public:
+    toChartAlarm(QWidget *parent = 0, const char *name = 0, bool modal = FALSE, WFlags fl = 0)
+            : toChartAlarmUI(parent, name, modal, fl)
+    { }
+    virtual void changeValue(int val)
+    {
+        if (val == 1)
+            ExtraLabel->setText(qApp->translate("toChartAlarm", "Email"));
+        else
+            ExtraLabel->setText(QString::null);
+
+        Extra->setEnabled(val == 1);
+    }
+};
+
+class toChartSetup : public toChartSetupUI
+{
+    toLineChart *Chart;
+public:
+    toChartSetup(toLineChart *chart, QWidget* parent, const char* name, bool modal)
+            : toChartSetupUI(parent, name, modal)
+    {
+        Chart = chart;
+    }
+
+    virtual void browseFile()
+    {
+        QString str = toOpenFilename(Filename->text(), QString::fromLatin1("*.csv"), this);
+        if (!str.isEmpty())
+            Filename->setText(str);
+    }
+    virtual QString modifyAlarm(const QString &str, bool &persistent)
+    {
+        toChartManager::chartAlarm alarm(str, persistent);
+        toChartAlarm diag(this, NULL, true);
+        diag.Operation->setCurrentItem((int)alarm.Operation);
+        diag.Comparison->setCurrentItem((int)alarm.Comparison);
+        diag.Action->setCurrentItem((int)alarm.Action);
+        diag.Value->setText(QString::number(alarm.Value));
+        diag.changeValue((int)alarm.Action);
+        diag.Value->setValidator(new QDoubleValidator(diag.Value));
+        diag.Extra->setText(alarm.Extra);
+        std::list<int>::iterator sel = alarm.Columns.begin();
+        diag.Charts->addColumn(qApp->translate("toChartSetup", "Charts"));
+        diag.Charts->setSelectionMode(QListView::Multi);
+        QListViewItem *item = NULL;
+        std::list<QString>::iterator lab = Chart->labels().begin();
+        for (int i = 0;lab != Chart->labels().end();i++, lab++)
+        {
+            item = new QListViewItem(diag.Charts, item, *lab);
+            if (sel != alarm.Columns.end() && *sel == i)
+            {
+                item->setSelected(true);
+                sel++;
+            }
+        }
+        diag.Persistent->setChecked(persistent);
+        if (diag.exec())
+        {
+            persistent = diag.Persistent->isChecked();
+            int i = 0;
+            alarm.Columns.clear();
+            for (QListViewItem *item = diag.Charts->firstChild();item;item = item->nextSibling())
+            {
+                if (item->isSelected())
+                    alarm.Columns.insert(alarm.Columns.end(), i);
+                i++;
+            }
+            alarm.Action = (toChartManager::action)diag.Action->currentItem();
+            alarm.Operation = (toChartManager::chartAlarm::operation)diag.Operation->currentItem();
+            alarm.Comparison = (toChartManager::chartAlarm::comparison)diag.Comparison->currentItem();
+            alarm.Value = diag.Value->text().toDouble();
+            alarm.Extra = diag.Extra->text();
+            return alarm.toString();
+        }
+        return QString::null;
+    }
+    virtual void addAlarm()
+    {
+        toChartManager::chartAlarm alarm;
+        QString str = modifyAlarm(alarm.toString(), alarm.Persistent);
+        if (!str.isEmpty())
+            new QListViewItem(Alarms, str, alarm.Persistent ? qApp->translate("toChartSetup", "Persistent") : qApp->translate("toChartSetup", "Temporary"));
+    }
+    virtual void modifyAlarm()
+    {
+        QListViewItem *item = Alarms->selectedItem();
+        if (item)
+        {
+            bool pers = item->text(1) == qApp->translate("toChartSetup", "Persistent");
+            QString str = modifyAlarm(item->text(0), pers);
+            if (!str.isEmpty())
+            {
+                item->setText(0, str);
+                item->setText(1, pers ? qApp->translate("toChartSetup", "Persistent") : qApp->translate("toChartSetup", "Temporary"));
+            }
+        }
+    }
+    virtual void removeAlarm()
+    {
+        delete Alarms->selectedItem();
+    }
+};
+
+toChartReceiver::toChartReceiver(toChartHandler *parent, toLineChart *chart)
+        : QObject(parent)
+{
+    Parent = parent;
+    Chart = chart;
+    Result = NULL;
+    connect(Chart, SIGNAL(valueAdded(std::list<double> &, const QString &)),
+            this, SLOT(valueAdded(std::list<double> &, const QString &)));
+}
+
+toResult *toChartReceiver::result(void)
+{
+    if (!Result)
+        Result = dynamic_cast<toResult *>(Chart);
+    return Result;
+}
+
+QString toChartReceiver::name(void)
+{
+    if (!Result || Result->sqlName().isEmpty())
+        return QString::null;
+    try
+    {
+        LastName = Result->connection().description(false) + QString::fromLatin1(":") + QString::fromLatin1(Result->sqlName());
+    }
+    catch (...)
+    {}
+    return LastName;
+}
+
+void toChartReceiver::valueAdded(std::list<double> &value, const QString &xValues)
+{
+    Parent->valueAdded(Chart, name(), value, xValues);
+}
+
+toChartManager::toChartManager(QWidget *main)
+        : QVBox(main), toHelpContext(QString::fromLatin1("chartmanager.html"))
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Chart Manager"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Refresh list"),
+                    tr("Refresh list"),
+                    this, SLOT(refresh()),
+                    toolbar);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(fileopen_xpm)),
+                    tr("Open tracker file"),
+                    tr("Open tracker file"),
+                    this, SLOT(openChart()),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(chart_xpm)),
+                    tr("Setup chart"),
+                    tr("Setup chart"),
+                    this, SLOT(setupChart()),
+                    toolbar);
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    List = new toListView(this);
+    List->addColumn(tr("Connection"));
+    List->addColumn(tr("Title"));
+    List->addColumn(tr("ID"));
+    List->addColumn(tr("Tracking"));
+    List->addColumn(tr("Alarms"));
+    List->setSorting(2);
+    List->setSelectionMode(QListView::Single);
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+    connect(&Refresh, SIGNAL(timeout()), this, SLOT(refresh()));
+
+    setFocusProxy(List);
+}
+
+void toChartManager::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Chart Manager|Refresh")));
+
+            toMainWidget()->menuBar()->insertItem(tr("&Chart Manager"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+toChartManager::~toChartManager()
+{
+    ChartTool.closeWindow();
+}
+
+void toChartHandler::addChart(toLineChart *chart)
+{
+    Charts.insert(Charts.end(), new toChartReceiver(this, chart));
+    toChartManager *manager = ChartTool.manager();
+    if (manager)
+        manager->Refresh.start(1, true);
+}
+
+void toChartHandler::removeChart(toLineChart *chart)
+{
+    for (std::list<toChartReceiver *>::iterator i = Charts.begin();i != Charts.end();i++)
+    {
+        if ((*i)->chart() == chart)
+        {
+            QString name = (*i)->name();
+            if (!name.isNull())
+            {
+                std::map<QString, std::list<toChartManager::chartAlarm> >::iterator fnda = Alarms.find(name);
+                if (fnda != Alarms.end())
+                {
+                    bool any = false;
+                    for (std::list<toChartManager::chartAlarm>::iterator j = (*fnda).second.begin();j != (*fnda).second.end();)
+                    {
+                        if (!(*j).Persistent)
+                        {
+                            (*fnda).second.erase(j);
+                            j = (*fnda).second.begin();
+                        }
+                        else
+                        {
+                            j++;
+                            any = true;
+                        }
+                    }
+                    if (!any)
+                        Alarms.erase(fnda);
+                }
+
+                std::map<QString, toChartManager::chartTrack>::iterator fndt = Files.find(name);
+                if (fndt != Files.end())
+                {
+                    if (!(*fndt).second.Persistent)
+                        Files.erase(fndt);
+                }
+            }
+
+            delete *i;
+            Charts.erase(i);
+            toChartManager *manager = ChartTool.manager();
+            if (manager)
+                manager->Refresh.start(1, true);
+            return ;
+        }
+    }
+}
+
+toChartManager::alarmSignal::alarmSignal(void)
+{
+    Action = Ignore;
+}
+
+toChartManager::chartAlarm::chartAlarm(const QString &inp, bool pers)
+{
+    char oper[100];
+    char cols[10000];
+    char comp[100];
+    char act[100];
+    char extra[10000];
+    Signal = false;
+    Persistent = pers;
+
+    // The \01 is just one character unlikely to be in an email address
+    int ret = sscanf(inp.utf8(), "%s %s %s %lf %s %[^\01]", oper, cols, comp, &Value, act, extra);
+    if (ret != 5 && ret != 6)
+    {
+        Operation = Any;
+        Value = 0;
+        Comparison = Equal;
+        Action = Ignore;
+        return ;
+    }
+
+    QString t = QString::fromLatin1(oper);
+    if (t == QString::fromLatin1("min"))
+        Operation = Min;
+    else if (t == QString::fromLatin1("all"))
+        Operation = All;
+    else if (t == QString::fromLatin1("sum"))
+        Operation = Sum;
+    else if (t == QString::fromLatin1("average"))
+        Operation = Average;
+    else if (t == QString::fromLatin1("max"))
+        Operation = Max;
+    else
+        Operation = Any;
+
+    t = QString::fromUtf8(cols);
+    if (t.length() > 2)
+    {
+        QStringList lst = QStringList::split(QString::fromLatin1(","), t.mid(1, t.length() - 2));
+        for (unsigned int i = 0;i < lst.count();i++)
+            Columns.insert(Columns.end(), lst[i].toInt());
+        Columns.sort();
+    }
+
+    t = QString::fromLatin1(comp);
+    if (t == QString::fromLatin1("="))
+    {
+        Comparison = Equal;
+    }
+    else if (t == QString::fromLatin1("!="))
+    {
+        Comparison = NotEqual;
+    }
+    else if (t == QString::fromLatin1("<"))
+    {
+        Comparison = Less;
+    }
+    else if (t == QString::fromLatin1(">"))
+    {
+        Comparison = Greater;
+    }
+    else if (t == QString::fromLatin1("<="))
+    {
+        Comparison = LessEqual;
+    }
+    else if (t == QString::fromLatin1(">="))
+    {
+        Comparison = GreaterEqual;
+    }
+    else
+    {
+        Comparison = Equal;
+    }
+
+    t = QString::fromLatin1(act);
+    if (t == QString::fromLatin1("StatusMessage"))
+        Action = StatusMessage;
+    else if (t == QString::fromLatin1("Email"))
+        Action = Email;
+    else
+        Action = Ignore;
+    if (ret == 6)
+        Extra = QString::fromUtf8(extra);
+}
+
+toChartManager::chartAlarm::chartAlarm()
+{
+    Signal = false;
+    Operation = Any;
+    Comparison = Equal;
+    Action = StatusMessage;
+    Value = 0;
+    Persistent = true;
+}
+
+toChartManager::chartAlarm::chartAlarm(operation oper, comparison comp, action act,
+                                       double value, std::list<int> &cols, const QString &extra,
+                                       bool persistent)
+{
+    Signal = false;
+    Operation = oper;
+    Comparison = comp;
+    Action = act;
+    Value = value;
+    Columns = cols;
+    Persistent = persistent;
+    Extra = extra;
+}
+
+QString toChartManager::chartAlarm::toString(void)
+{
+    QString t;
+    switch (Operation)
+    {
+    case Any:
+        t = QString::fromLatin1("any");
+        break;
+    case All:
+        t = QString::fromLatin1("all");
+        break;
+    case Sum:
+        t = QString::fromLatin1("sum");
+        break;
+    case Average:
+        t = QString::fromLatin1("average");
+        break;
+    case Max:
+        t = QString::fromLatin1("max");
+        break;
+    case Min:
+        t = QString::fromLatin1("min");
+        break;
+    }
+    t += QString::fromLatin1(" (");
+    bool first = true;
+    for (std::list<int>::iterator i = Columns.begin();i != Columns.end();i++)
+    {
+        if (first)
+            first = false;
+        else
+            t += QString::fromLatin1(",");
+        t += QString::number(*i);
+    }
+    t += QString::fromLatin1(")");
+    switch (Comparison)
+    {
+    case Equal:
+        t += QString::fromLatin1(" = ");
+        break;
+    case NotEqual:
+        t += QString::fromLatin1(" != ");
+        break;
+    case Less:
+        t += QString::fromLatin1(" < ");
+        break;
+    case Greater:
+        t += QString::fromLatin1(" > ");
+        break;
+    case LessEqual:
+        t += QString::fromLatin1(" <= ");
+        break;
+    case GreaterEqual:
+        t += QString::fromLatin1(" >= ");
+        break;
+    }
+    t += QString::number(Value);
+    switch (Action)
+    {
+    case StatusMessage:
+        t += QString::fromLatin1(" StatusMessage");
+        break;
+    case Email:
+        t += QString::fromLatin1(" Email");
+        break;
+    case Ignore:
+        t += QString::fromLatin1(" Ignore");
+        break;
+    }
+    if (!Extra.isEmpty())
+    {
+        t += QString::fromLatin1(" ");
+        t += Extra;
+    }
+    return t;
+}
+
+bool toChartManager::chartAlarm::checkValue(double val)
+{
+    switch (Comparison)
+    {
+    case Equal:
+        return val == Value;
+    case NotEqual:
+        return val != Value;
+    case Less:
+        return Value < val;
+    case Greater:
+        return Value > val;
+    case LessEqual:
+        return Value <= val;
+    case GreaterEqual:
+        return Value >= val;
+    }
+    return false;
+}
+
+void toChartManager::chartAlarm::valueAdded(toChartHandler *handler,
+        const QString &str,
+        std::list<double> &value,
+        const QString &xValue)
+{
+    std::list<double> vals;
+    std::list<double>::iterator i = value.begin();
+    std::list<int>::iterator j = Columns.begin();
+    for (int id = 0;j != Columns.end() && i != value.end();i++, id++)
+    {
+        if (id == *j)
+        {
+            vals.insert(vals.end(), *i);
+            j++;
+        }
+    }
+    bool sig = false;
+    switch (Operation)
+    {
+    case Any:
+        {
+            for (std::list<double>::iterator i = vals.begin();i != vals.end();i++)
+                if (checkValue(*i))
+                {
+                    sig = true;
+                    break;
+                }
+        }
+        break;
+    case All:
+        sig = true;
+        {
+            for (std::list<double>::iterator i = vals.begin();i != vals.end();i++)
+                if (!checkValue(*i))
+                {
+                    sig = false;
+                    break;
+                }
+        }
+        break;
+    case Sum:
+        {
+            double val = 0;
+            for (std::list<double>::iterator i = vals.begin();i != vals.end();i++)
+                val += *i;
+            sig = checkValue(val);
+        }
+        break;
+    case Average:
+        {
+            double val = 0;
+            for (std::list<double>::iterator i = vals.begin();i != vals.end();i++)
+                val += *i;
+            sig = checkValue(val / vals.size());
+        }
+        break;
+    case Max:
+        {
+            bool first = true;
+            double val = 0;
+            for (std::list<double>::iterator i = vals.begin();i != vals.end();i++)
+            {
+                if (first)
+                {
+                    first = false;
+                    val = *i;
+                }
+                else
+                    val = std::max(*i, val);
+            }
+            sig = checkValue(val);
+        }
+        break;
+    case Min:
+        {
+            bool first = true;
+            double val = 0;
+            for (std::list<double>::iterator i = vals.begin();i != vals.end();i++)
+            {
+                if (first)
+                {
+                    first = false;
+                    val = *i;
+                }
+                else
+                    val = std::min(*i, val);
+            }
+            sig = checkValue(val);
+        }
+        break;
+    }
+    if (sig)
+    {
+        if (Signal)
+            return ;
+        handler->SignalAlarms.insert(handler->SignalAlarms.end(),
+                                     alarmSignal(Action, xValue, str, toString(), Extra));
+        handler->Timer.start(1, true);
+        Signal = true;
+    }
+    else
+        Signal = false;
+}
+
+void toChartHandler::saveSettings(void)
+{
+    {
+        int num = 0;
+        for (std::map<QString, toChartManager::chartTrack>::iterator i = Files.begin();i != Files.end();i++)
+        {
+            if ((*i).second.Persistent)
+            {
+                num++;
+                QCString name = QCString("Files:") + QString::number(num).latin1();
+                ChartTool.setConfig(name + ":Name", (*i).first);
+                ChartTool.setConfig(name + ":Spec", (*i).second.File.name());
+            }
+        }
+        ChartTool.setConfig("FilesCount", QString::number(num));
+    }
+    {
+        int num = 0;
+        for (std::map<QString, std::list<toChartManager::chartAlarm> >::iterator i = Alarms.begin();
+                i != Alarms.end();i++)
+        {
+            for (std::list<toChartManager::chartAlarm>::iterator j = (*i).second.begin();j != (*i).second.end();j++)
+            {
+                if ((*j).Persistent)
+                {
+                    num++;
+                    QCString name = QCString("Alarms:") + QString::number(num).latin1();
+                    ChartTool.setConfig(name + ":Name", (*i).first);
+                    ChartTool.setConfig(name + ":Spec", (*j).toString());
+                }
+            }
+        }
+        ChartTool.setConfig("AlarmCount", QString::number(num));
+    }
+    toConfigurationSingle::Instance().saveConfig();
+}
+
+void toChartHandler::loadSettings(void)
+{
+    {
+        for (int num = ChartTool.config("FilesCount", "0").toInt();num > 0;num--)
+        {
+            QCString name = QCString("Files:") + QString::number(num).latin1();
+            QString t = ChartTool.config(name + ":Name", "");
+            QString s = ChartTool.config(name + ":Spec", "");
+            if (!t.isEmpty() && !s.isEmpty())
+                Files[t] = toChartManager::chartTrack(s, true);
+        }
+    }
+    {
+        for (int num = ChartTool.config("AlarmCount", "0").toInt();num > 0;num--)
+        {
+            QCString name = QCString("Alarms:") + QString::number(num).latin1();
+            QString t = ChartTool.config(name + ":Name", "");
+            QString s = ChartTool.config(name + ":Spec", "");
+            if (!t.isEmpty() && !s.isEmpty())
+                Alarms[t].insert(Alarms[t].end(), toChartManager::chartAlarm(s, true));
+        }
+    }
+}
+
+void toChartHandler::alarm(void)
+{
+    while (!SignalAlarms.empty())
+    {
+        toChartManager::alarmSignal signal = toShift(SignalAlarms);
+        if (signal.Action == toChartManager::StatusMessage)
+            toStatusMessage(tr("ALARM:") + signal.Chart + QString::fromLatin1(": ") + signal.Alarm + QString::fromLatin1(": ") + signal.xValue);
+        else if (signal.Action == toChartManager::Email)
+            new toSMTP(QString::fromLatin1(TOAPPNAME " <noreply at localhost>"),
+                       signal.Extra,
+                       tr("TOra alert:") + " " + signal.Chart,
+                       tr("A defined alert value was detected:\n\n%1\n\nAt: %2").arg(signal.Alarm).arg(signal.xValue));
+    }
+}
+
+void toChartHandler::valueAdded(toLineChart *chart,
+                                const QString &chartName,
+                                std::list<double> &value,
+                                const QString &xValue)
+{
+    std::map<QString, std::list<toChartManager::chartAlarm> >::iterator fnda = Alarms.find(chartName);
+    if (fnda != Alarms.end())
+    {
+        std::list<toChartManager::chartAlarm> &alarms = (*fnda).second;
+        for (std::list<toChartManager::chartAlarm>::iterator i = alarms.begin();i != alarms.end();i++)
+            (*i).valueAdded(this, chartName, value, xValue);
+    }
+
+    std::map<QString, toChartManager::chartTrack>::iterator fndt = Files.find(chartName);
+    if (fndt != Files.end())
+    {
+        QFile &file = (*fndt).second.File;
+        bool header = false;
+        if (!file.isOpen())
+        {
+            if (!file.exists())
+                header = true;
+            file.open(IO_Raw | IO_WriteOnly | IO_Append);
+        }
+        if (file.isOpen())
+        {
+            static QRegExp quote(QString::fromLatin1("\""));
+            QCString out = "\"";
+            if (header)
+            {
+                QString t = chart->title();
+                t.replace(quote, QString::fromLatin1("\"\""));
+                out += t.utf8();
+                std::list<QString> labels = chart->labels();
+                for (std::list<QString>::iterator i = labels.begin();i != labels.end();i++)
+                {
+                    out += "\";\"";
+                    QString t = (*i);
+                    t.replace(quote, QString::fromLatin1("\"\""));
+                    out += t.utf8();
+                }
+                out += "\"\n\"";
+            }
+            QString t = xValue;
+            t.replace(quote, QString::fromLatin1("\"\""));
+            out += t.utf8();
+            for (std::list<double>::iterator i = value.begin();i != value.end();i++)
+            {
+                out += "\";\"";
+                out += QString::number(*i);
+            }
+            out += "\"\n";
+            file.writeBlock(out, out.length());
+        }
+    }
+}
+
+static QString ReadCSV(const QCString &data, unsigned int &pos, bool &nl)
+{
+    QCString ret;
+    if (data.at(pos) != '\"')
+        throw qApp->translate("toChartManager", "Initial value didn't start with \" in CSV file");
+    pos++;
+    while (pos < data.length() &&
+            (data.at(pos) != '\"' || (pos + 1 < data.length() &&
+                                      data.at(pos + 1) == '\"')))
+    {
+        ret += data.at(pos);
+        if (data.at(pos) == '\"')
+            pos++;
+        pos++;
+    }
+    if (pos >= data.length())
+        throw qApp->translate("toChartManager", "Missing closing \" in CSV file");
+    pos++;
+    nl = false;
+    while (pos < data.length() && (isspace(data.at(pos)) || data.at(pos) == ',' || data.at(pos) == ';'))
+    {
+        if (data.at(pos) == '\n')
+            nl = true;
+        pos++;
+    }
+    return QString::fromUtf8(ret);
+}
+
+void toChartManager::openChart(void)
+{
+    QString name = toOpenFilename(QString::null, QString::fromLatin1("*.csv"), this);
+    if (!name.isEmpty())
+    {
+        try
+        {
+            QCString data = toReadFile(name);
+            unsigned int pos = 0;
+
+            toLineChart *chart;
+            switch (TOMessageBox::information(toMainWidget(),
+                                              tr("Chart format"),
+                                              tr("Select format of the chart to display"),
+                                              tr("Barchart"),
+                                              tr("Linechart"),
+                                              tr("Cancel")))
+            {
+            case 0:
+                chart = new toBarChart(toMainWidget()->workspace(), NULL,
+                                       WDestructiveClose);
+                break;
+            case 1:
+                chart = new toLineChart(toMainWidget()->workspace(), NULL,
+                                        WDestructiveClose);
+                break;
+            default:
+                return ;
+            }
+            chart->show();
+            chart->setSamples( -1);
+            bool eol;
+            chart->setTitle(ReadCSV(data, pos, eol));
+            std::list<QString> lab;
+            while (!eol && pos < data.length())
+                lab.insert(lab.end(), ReadCSV(data, pos, eol));
+            chart->setLabels(lab);
+            while (pos < data.length())
+            {
+                QString t = ReadCSV(data, pos, eol);
+                std::list<double> val;
+                while (!eol && pos < data.length())
+                    val.insert(val.end(), ReadCSV(data, pos, eol).toDouble());
+                chart->addValues(val, t);
+            }
+        }
+        TOCATCH
+    }
+}
+
+void toChartManager::setupChart(void)
+{
+    toChartReceiver *chart = selectedChart();
+    if (chart && ChartTool.handler())
+        ChartTool.handler()->setupChart(chart->chart());
+}
+
+toChartReceiver *toChartManager::selectedChart(void)
+{
+    try
+    {
+        QListViewItem *item = List->selectedItem();
+        if (item && ChartTool.handler())
+        {
+            for (std::list<toChartReceiver *>::iterator i = ChartTool.handler()->Charts.begin();i != ChartTool.handler()->Charts.end();i++)
+            {
+                toResult *result = (*i)->result();
+                if (result)
+                {
+                    if (item->text(0) == result->connection().description(false) &&
+                            item->text(2) == result->sqlName())
+                        return *i;
+                }
+            }
+        }
+    }
+    TOCATCH
+    return NULL;
+}
+
+void toChartHandler::setupChart(toLineChart *chart)
+{
+    for (std::list<toChartReceiver *>::iterator i = Charts.begin();i != Charts.end();i++)
+    {
+        if ((*i)->chart() == chart)
+        {
+            QString name = (*i)->name();
+            if (!name.isNull())
+            {
+                std::list<toChartManager::chartAlarm> alarm;
+                std::map<QString, std::list<toChartManager::chartAlarm> >::iterator fnda = Alarms.find(name);
+                if (fnda != Alarms.end())
+                    alarm = (*fnda).second;
+
+                toChartManager::chartTrack file;
+                std::map<QString, toChartManager::chartTrack>::iterator fndt = Files.find(name);
+                if (fndt != Files.end())
+                    file = (*fndt).second;
+
+                toChartSetup setup(chart, toMainWidget(), NULL, true);
+                setup.Alarms->addColumn(tr("Alarms"));
+                setup.Alarms->addColumn(tr("Persistent"));
+                setup.Alarms->setSorting(0);
+                setup.Alarms->setSelectionMode(QListView::Single);
+                setup.Persistent->setChecked(file.Persistent);
+                setup.Filename->setText(file.File.name());
+                if (!setup.Filename->text().isEmpty())
+                    setup.Enabled->setChecked(true);
+                setup.ChartFrame->setSizePolicy(QSizePolicy(QSizePolicy::Expanding,
+                                                QSizePolicy::Preferred));
+
+                toLineChart *t = chart->openCopy(setup.ChartFrame);
+                t->setSizePolicy(QSizePolicy(QSizePolicy::Expanding,
+                                             QSizePolicy::Preferred));
+                t->showLegend(false);
+                t->showAxisLegend(false);
+                for (std::list<toChartManager::chartAlarm>::iterator j = alarm.begin();j != alarm.end();j++)
+                    new QListViewItem(setup.Alarms,
+                                      (*j).toString(),
+                                      (*j).Persistent ? tr("Persistent") : tr("Temporary"));
+
+                if (setup.exec())
+                {
+                    if (setup.Filename->text().isEmpty() || !setup.Enabled->isChecked())
+                    {
+                        if (fndt != Files.end())
+                            Files.erase(fndt);
+                    }
+                    else
+                    {
+                        Files[name] = toChartManager::chartTrack(setup.Filename->text(),
+                                      setup.Persistent->isChecked());
+                    }
+                    if (fnda != Alarms.end())
+                        Alarms.erase(fnda);
+                    alarm.clear();
+                    for (QListViewItem *item = setup.Alarms->firstChild();
+                            item;item = item->nextSibling())
+                    {
+                        alarm.insert(alarm.end(), toChartManager::chartAlarm(item->text(0),
+                                     item->text(1) == tr("Persistent")));
+                    }
+                    if (!alarm.empty())
+                        Alarms[name] = alarm;
+                    saveSettings();
+                }
+            }
+            break;
+        }
+    }
+}
+
+void toChartManager::refresh(void)
+{
+    if (!ChartTool.handler())
+        return ;
+    try
+    {
+        List->clear();
+        for (std::list<toChartReceiver *>::iterator i = ChartTool.handler()->Charts.begin();i != ChartTool.handler()->Charts.end();i++)
+        {
+            toResult *result = (*i)->result();
+            if (result)
+            {
+                toResultViewItem *item = new toResultViewMLine(List,
+                                         NULL,
+                                         result->connection().description(false));
+                item->setText(1, (*i)->chart()->title());
+                item->setText(2, result->sqlName());
+                QString name = (*i)->name();
+                if (!name.isNull())
+                {
+                    std::map<QString, std::list<chartAlarm> >::iterator fnda = ChartTool.handler()->Alarms.find(name);
+                    if (fnda != ChartTool.handler()->Alarms.end())
+                    {
+                        QString t;
+                        for (std::list<chartAlarm>::iterator j = (*fnda).second.begin();j != (*fnda).second.end();j++)
+                        {
+                            t += (*j).toString();
+                            t += QString::fromLatin1("\n");
+                        }
+                        if (t.length() > 0)
+                            item->setText(4, t.mid(0, t.length() - 1));
+                    }
+
+                    std::map<QString, chartTrack>::iterator fndt = ChartTool.handler()->Files.find(name);
+                    if (fndt != ChartTool.handler()->Files.end())
+                        item->setText(3, (*fndt).second.File.name());
+                }
+            }
+        }
+    }
+    TOCATCH
+}
+
+toChartHandler::toChartHandler()
+{
+    connect(toMainWidget(), SIGNAL(chartAdded(toLineChart *)),
+            this, SLOT(addChart(toLineChart *)));
+    connect(toMainWidget(), SIGNAL(chartRemoved(toLineChart *)),
+            this, SLOT(removeChart(toLineChart *)));
+    connect(toMainWidget(), SIGNAL(chartSetup(toLineChart *)),
+            this, SLOT(setupChart(toLineChart *)));
+    connect(&Timer, SIGNAL(timeout()), this, SLOT(alarm()));
+}
+
+toChartHandler::~toChartHandler()
+{
+    ChartTool.closeHandler();
+}

Added: kde-extras/tora/branches/upstream/current/src/tochartmanager.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tochartmanager.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tochartmanager.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,232 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOCHARTMANAGER_H
+#define TOCHARTMANAGER_H
+
+#include "config.h"
+#include "tohelp.h"
+
+#include <qvbox.h>
+#include <qfile.h>
+
+#include <list>
+#include <map>
+#include <algorithm>
+
+class toChartManager;
+class toLineChart;
+class toListView;
+class toResult;
+class toChartSetup;
+class toChartAlarm;
+class toChartHandler;
+
+class toChartReceiver : public QObject
+{
+    Q_OBJECT
+
+    QString LastName;
+    toChartHandler *Parent;
+    toLineChart *Chart;
+    toResult *Result;
+public:
+    toChartReceiver(toChartHandler *parent, toLineChart *chart);
+
+    toLineChart *chart(void)
+    {
+        return Chart;
+    }
+    toResult *result(void);
+    QString name(void);
+public slots:
+    void valueAdded(std::list<double> &value, const QString &xValues);
+};
+
+class toChartManager : public QVBox, public toHelpContext
+{
+    Q_OBJECT
+
+    struct alarmSignal;
+    struct chartAlarm;
+    friend struct chartAlarm;
+    friend struct alarmSignal;
+
+    enum action {
+        StatusMessage = 0,
+        Email = 1,
+        Ignore = 2
+    };
+
+    struct alarmSignal
+    {
+        action Action;
+        QString xValue;
+        QString Chart;
+        QString Alarm;
+        QString Extra;
+        alarmSignal();
+        alarmSignal(action act, const QString &xvalue, const QString &chart, const QString &alarm,
+                    const QString &extra)
+                : Action(act), xValue(xvalue), Chart(chart), Alarm(alarm), Extra(extra)
+        { }
+    }
+    ;
+
+    struct chartTrack
+    {
+        QFile File;
+        bool Persistent;
+
+        chartTrack()
+        {
+            Persistent = true;
+        }
+        chartTrack(const QString &file, bool pers)
+                : File(file)
+        {
+            Persistent = pers;
+        }
+        chartTrack(const chartTrack &fil)
+                : File(fil.File.name())
+        {
+            Persistent = fil.Persistent;
+        }
+        const chartTrack &operator =(const chartTrack &fil)
+        {
+            if (fil.File.name() != File.name())
+            {
+                File.close();
+                File.setName(fil.File.name());
+            }
+            Persistent = fil.Persistent;
+            return *this;
+        }
+    };
+
+    struct chartAlarm
+    {
+        enum operation {
+            Any,
+            All,
+            Sum,
+            Average,
+            Max,
+            Min
+        };
+        enum comparison {
+            Equal,
+            NotEqual,
+            Less,
+            Greater,
+            LessEqual,
+            GreaterEqual
+        };
+
+        operation Operation;
+        comparison Comparison;
+        action Action;
+        double Value;
+        std::list<int> Columns;
+        bool Persistent;
+        bool Signal;
+        QString Extra;
+
+        chartAlarm();
+        chartAlarm(const QString &, bool persistent);
+        chartAlarm(operation oper, comparison comp, action act,
+                   double value, std::list<int> &cols, const QString &extra,
+                   bool persistent);
+        QString toString(void);
+
+        bool checkValue(double value);
+
+        void valueAdded(toChartHandler *handler, const QString &str,
+                        std::list<double> &value, const QString &xValue);
+    };
+
+    QTimer Refresh;
+    toListView *List;
+    QPopupMenu *ToolMenu;
+
+
+    toChartReceiver *selectedChart(void);
+public:
+    toChartManager(QWidget *parent);
+    ~toChartManager();
+
+    friend class toChartSetup;
+    friend class toChartAlarm;
+    friend class toChartHandler;
+public slots:
+    void refresh(void);
+    void windowActivated(QWidget *widget);
+    void setupChart(void);
+    void openChart(void);
+};
+
+class toChartHandler : public QObject
+{
+    Q_OBJECT
+
+    QTimer Timer;
+    std::map<QString, std::list<toChartManager::chartAlarm> > Alarms;
+    std::map<QString, toChartManager::chartTrack> Files;
+
+    std::list<toChartReceiver *> Charts;
+    std::list<toChartManager::alarmSignal> SignalAlarms;
+
+    void loadSettings(void);
+    void saveSettings(void);
+public:
+    toChartHandler();
+    ~toChartHandler();
+
+    void valueAdded(toLineChart *chart, const QString &chartName,
+                    std::list<double> &vale, const QString &xValue);
+
+    friend class toChartManager;
+    friend struct toChartManager::alarmSignal;
+    friend struct toChartManager::chartAlarm;
+public slots:
+    void alarm(void);
+    void addChart(toLineChart *chart);
+    void setupChart(toLineChart *chart);
+    void removeChart(toLineChart *chart);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tochartsetupui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tochartsetupui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tochartsetupui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,191 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tochartsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:21 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tochartsetupui.h"
+
+#include <qvariant.h>
+#include <qvbox.h>
+#include <qpushbutton.h>
+#include <qgroupbox.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "toresultview.h"
+
+/*
+ *  Constructs a toChartSetupUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toChartSetupUI::toChartSetupUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toChartSetupUI" );
+    toChartSetupUILayout = new QGridLayout( this, 1, 1, 11, 6, "toChartSetupUILayout"); 
+
+    Layout1 = new QHBoxLayout( 0, 0, 6, "Layout1"); 
+
+    GroupBox1 = new QGroupBox( this, "GroupBox1" );
+    GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)4, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) );
+    GroupBox1->setColumnLayout(0, Qt::Vertical );
+    GroupBox1->layout()->setSpacing( 6 );
+    GroupBox1->layout()->setMargin( 11 );
+    GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
+    GroupBox1Layout->setAlignment( Qt::AlignTop );
+
+    Filename = new QLineEdit( GroupBox1, "Filename" );
+    Filename->setEnabled( FALSE );
+
+    GroupBox1Layout->addWidget( Filename, 2, 0 );
+
+    PushButton1 = new QPushButton( GroupBox1, "PushButton1" );
+    PushButton1->setEnabled( FALSE );
+
+    GroupBox1Layout->addWidget( PushButton1, 2, 1 );
+
+    Persistent = new QCheckBox( GroupBox1, "Persistent" );
+    Persistent->setEnabled( FALSE );
+
+    GroupBox1Layout->addMultiCellWidget( Persistent, 3, 3, 0, 1 );
+
+    Enabled = new QCheckBox( GroupBox1, "Enabled" );
+
+    GroupBox1Layout->addMultiCellWidget( Enabled, 0, 0, 0, 1 );
+
+    TextLabel2 = new QLabel( GroupBox1, "TextLabel2" );
+
+    GroupBox1Layout->addMultiCellWidget( TextLabel2, 1, 1, 0, 1 );
+    Layout1->addWidget( GroupBox1 );
+
+    ChartFrame = new QVBox( this, "ChartFrame" );
+    ChartFrame->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)4, 0, 0, ChartFrame->sizePolicy().hasHeightForWidth() ) );
+    Layout1->addWidget( ChartFrame );
+
+    toChartSetupUILayout->addMultiCellLayout( Layout1, 0, 0, 0, 2 );
+
+    AlarmGroup = new QGroupBox( this, "AlarmGroup" );
+    AlarmGroup->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, AlarmGroup->sizePolicy().hasHeightForWidth() ) );
+    AlarmGroup->setColumnLayout(0, Qt::Vertical );
+    AlarmGroup->layout()->setSpacing( 6 );
+    AlarmGroup->layout()->setMargin( 11 );
+    AlarmGroupLayout = new QGridLayout( AlarmGroup->layout() );
+    AlarmGroupLayout->setAlignment( Qt::AlignTop );
+
+    AddButton = new QPushButton( AlarmGroup, "AddButton" );
+
+    AlarmGroupLayout->addWidget( AddButton, 0, 1 );
+
+    Alarms = new toListView( AlarmGroup, "Alarms" );
+    Alarms->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, Alarms->sizePolicy().hasHeightForWidth() ) );
+    Alarms->setFocusPolicy( toListView::StrongFocus );
+
+    AlarmGroupLayout->addMultiCellWidget( Alarms, 0, 3, 0, 0 );
+    Spacer3 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    AlarmGroupLayout->addItem( Spacer3, 3, 1 );
+
+    PushButton3 = new QPushButton( AlarmGroup, "PushButton3" );
+
+    AlarmGroupLayout->addWidget( PushButton3, 2, 1 );
+
+    PushButton3_3 = new QPushButton( AlarmGroup, "PushButton3_3" );
+
+    AlarmGroupLayout->addWidget( PushButton3_3, 1, 1 );
+
+    toChartSetupUILayout->addMultiCellWidget( AlarmGroup, 1, 1, 0, 2 );
+
+    PushButton3_2 = new QPushButton( this, "PushButton3_2" );
+
+    toChartSetupUILayout->addWidget( PushButton3_2, 2, 2 );
+
+    OkButton = new QPushButton( this, "OkButton" );
+    OkButton->setDefault( TRUE );
+
+    toChartSetupUILayout->addWidget( OkButton, 2, 1 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toChartSetupUILayout->addItem( Spacer1, 2, 0 );
+    languageChange();
+    resize( QSize(588, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( browseFile() ) );
+    connect( AddButton, SIGNAL( clicked() ), this, SLOT( addAlarm() ) );
+    connect( PushButton3, SIGNAL( clicked() ), this, SLOT( removeAlarm() ) );
+    connect( OkButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton3_2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( PushButton3_3, SIGNAL( clicked() ), this, SLOT( modifyAlarm() ) );
+    connect( Enabled, SIGNAL( toggled(bool) ), Filename, SLOT( setEnabled(bool) ) );
+    connect( Enabled, SIGNAL( toggled(bool) ), PushButton1, SLOT( setEnabled(bool) ) );
+    connect( Enabled, SIGNAL( toggled(bool) ), Persistent, SLOT( setEnabled(bool) ) );
+
+    // tab order
+    setTabOrder( Filename, PushButton1 );
+    setTabOrder( PushButton1, Persistent );
+    setTabOrder( Persistent, Alarms );
+    setTabOrder( Alarms, AddButton );
+    setTabOrder( AddButton, PushButton3 );
+    setTabOrder( PushButton3, OkButton );
+    setTabOrder( OkButton, PushButton3_2 );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toChartSetupUI::~toChartSetupUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toChartSetupUI::languageChange()
+{
+    setCaption( tr( "Chart manager setup" ) );
+    GroupBox1->setTitle( tr( "Track chart to file" ) );
+    PushButton1->setText( tr( "Browse" ) );
+    Persistent->setText( tr( "Persistent" ) );
+    QToolTip::add( Persistent, tr( "Remember to track this chart to this file always when starting." ) );
+    Enabled->setText( tr( "Enable tracking" ) );
+    TextLabel2->setText( tr( "Filename" ) );
+    AlarmGroup->setTitle( tr( "Alarms" ) );
+    AddButton->setText( tr( "&Add" ) );
+    PushButton3->setText( tr( "Remove" ) );
+    PushButton3_3->setText( tr( "Modify" ) );
+    PushButton3_2->setText( tr( "Cancel" ) );
+    OkButton->setText( tr( "&Ok" ) );
+}
+
+void toChartSetupUI::addAlarm()
+{
+    qWarning( "toChartSetupUI::addAlarm(): Not implemented yet" );
+}
+
+void toChartSetupUI::browseFile()
+{
+    qWarning( "toChartSetupUI::browseFile(): Not implemented yet" );
+}
+
+void toChartSetupUI::modifyAlarm()
+{
+    qWarning( "toChartSetupUI::modifyAlarm(): Not implemented yet" );
+}
+
+void toChartSetupUI::removeAlarm()
+{
+    qWarning( "toChartSetupUI::removeAlarm(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tochartsetupui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tochartsetupui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tochartsetupui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tochartsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:21 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOCHARTSETUPUI_H
+#define TOCHARTSETUPUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toListView;
+class QVBox;
+class QGroupBox;
+class QLineEdit;
+class QPushButton;
+class QCheckBox;
+class QLabel;
+
+class toChartSetupUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toChartSetupUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toChartSetupUI();
+
+    QGroupBox* GroupBox1;
+    QLineEdit* Filename;
+    QPushButton* PushButton1;
+    QCheckBox* Persistent;
+    QCheckBox* Enabled;
+    QLabel* TextLabel2;
+    QVBox* ChartFrame;
+    QGroupBox* AlarmGroup;
+    QPushButton* AddButton;
+    toListView* Alarms;
+    QPushButton* PushButton3;
+    QPushButton* PushButton3_3;
+    QPushButton* PushButton3_2;
+    QPushButton* OkButton;
+
+public slots:
+    virtual void addAlarm();
+    virtual void browseFile();
+    virtual void modifyAlarm();
+    virtual void removeAlarm();
+
+protected:
+    QGridLayout* toChartSetupUILayout;
+    QSpacerItem* Spacer1;
+    QHBoxLayout* Layout1;
+    QGridLayout* GroupBox1Layout;
+    QGridLayout* AlarmGroupLayout;
+    QSpacerItem* Spacer3;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOCHARTSETUPUI_H

Added: kde-extras/tora/branches/upstream/current/src/tochartsetupui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tochartsetupui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tochartsetupui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,412 @@
+<!DOCTYPE UI><UI>
+<class>toChartSetupUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toChartSetupUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>588</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Chart manager setup</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLayoutWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Layout1</cstring>
+            </property>
+            <hbox>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>0</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget>
+                    <class>QGroupBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>GroupBox1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>4</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>title</name>
+                        <string>Track chart to file</string>
+                    </property>
+                    <grid>
+                        <property stdset="1">
+                            <name>margin</name>
+                            <number>11</number>
+                        </property>
+                        <property stdset="1">
+                            <name>spacing</name>
+                            <number>6</number>
+                        </property>
+                        <widget row="2"  column="0" >
+                            <class>QLineEdit</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>Filename</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>enabled</name>
+                                <bool>false</bool>
+                            </property>
+                        </widget>
+                        <widget row="2"  column="1" >
+                            <class>QPushButton</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>PushButton1</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>enabled</name>
+                                <bool>false</bool>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Browse</string>
+                            </property>
+                        </widget>
+                        <widget row="3"  column="0"  rowspan="1"  colspan="2" >
+                            <class>QCheckBox</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>Persistent</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>enabled</name>
+                                <bool>false</bool>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Persistent</string>
+                            </property>
+                            <property>
+                                <name>toolTip</name>
+                                <string>Remember to track this chart to this file always when starting.</string>
+                            </property>
+                        </widget>
+                        <widget row="0"  column="0"  rowspan="1"  colspan="2" >
+                            <class>QCheckBox</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>Enabled</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Enable tracking</string>
+                            </property>
+                        </widget>
+                        <widget row="1"  column="0"  rowspan="1"  colspan="2" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Filename</string>
+                            </property>
+                        </widget>
+                    </grid>
+                </widget>
+                <widget>
+                    <class>QVBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>ChartFrame</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>4</vsizetype>
+                        </sizepolicy>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>AlarmGroup</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>7</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Alarms</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="1" >
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>AddButton</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Add</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="0"  rowspan="4"  colspan="1" >
+                    <class>toListView</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Alarms</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>7</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>focusPolicy</name>
+                        <enum>StrongFocus</enum>
+                    </property>
+                </widget>
+                <spacer row="3"  column="1" >
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer3</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget row="2"  column="1" >
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>PushButton3</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Remove</string>
+                    </property>
+                </widget>
+                <widget row="1"  column="1" >
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>PushButton3_3</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Modify</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget row="2"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton3_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <widget row="2"  column="1" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>OkButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <spacer row="2"  column="0" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toListView</class>
+        <header location="local">toresultview.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+    <customwidget>
+        <class>QVBox</class>
+        <header location="global">qvbox.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toChartSetupUI</receiver>
+        <slot>browseFile()</slot>
+    </connection>
+    <connection>
+        <sender>AddButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toChartSetupUI</receiver>
+        <slot>addAlarm()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton3</sender>
+        <signal>clicked()</signal>
+        <receiver>toChartSetupUI</receiver>
+        <slot>removeAlarm()</slot>
+    </connection>
+    <connection>
+        <sender>OkButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toChartSetupUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton3_2</sender>
+        <signal>clicked()</signal>
+        <receiver>toChartSetupUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton3_3</sender>
+        <signal>clicked()</signal>
+        <receiver>toChartSetupUI</receiver>
+        <slot>modifyAlarm()</slot>
+    </connection>
+    <connection>
+        <sender>Enabled</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Filename</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>Enabled</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>PushButton1</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>Enabled</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Persistent</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <slot access="public">addAlarm()</slot>
+    <slot access="public">browseFile()</slot>
+    <slot access="public">modifyAlarm()</slot>
+    <slot access="public">removeAlarm()</slot>
+</connections>
+<tabstops>
+    <tabstop>Filename</tabstop>
+    <tabstop>PushButton1</tabstop>
+    <tabstop>Persistent</tabstop>
+    <tabstop>Alarms</tabstop>
+    <tabstop>AddButton</tabstop>
+    <tabstop>PushButton3</tabstop>
+    <tabstop>OkButton</tabstop>
+    <tabstop>PushButton3_2</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/toconf.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toconf.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toconf.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,185 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOCONF_H
+#define TOCONF_H
+
+#define CONF_PROVIDER  "Provider"
+#define DEFAULT_PROVIDER "Oracle"
+#define CONF_SAVE_PWD  "SavePassword"
+#define DEFAULT_SAVE_PWD ""
+#define CONF_PASSWORD  "DefaultPassword"
+#define DEFAULT_PASSWORD ""
+#define CONF_DATABASE  "DefaultDatabase"
+#define DEFAULT_DATABASE ""
+#define CONF_USER  "DefaultUser"
+#define DEFAULT_USER  "system"
+#define CONF_HOST  "Host"
+#define DEFAULT_HOST  "localhost"
+#define CONF_OPTIONS  "Options"
+#define DEFAULT_OPTIONS  ""
+#define CONF_MAX_NUMBER  "MaxNumber"
+#define DEFAULT_MAX_NUMBER "50"
+#define CONF_MAX_COL_SIZE "MaxColSize"
+#define DEFAULT_MAX_COL_SIZE "30000"
+#define CONF_MAX_COL_DISP "MaxColDisp"
+#define DEFAULT_MAX_COL_DISP "300"
+#define CONF_PLAN_TABLE  "PlanTable"
+#define DEFAULT_PLAN_TABLE "PLAN_TABLE"
+#define CONF_PLAN_CHECKPOINT "PlanCheckpoint"
+#define DEFAULT_PLAN_CHECKPOINT "TORA_CHECKPOINT"
+#define CONF_TEXT  "ConfText"
+#define CONF_CODE  "ConfCode"
+#define CONF_LIST  "ListText"
+#define CONF_DATE_FORMAT "ConfDateFormat"
+#define DEFAULT_DATE_FORMAT "YYYY-MM-DD HH24:MI:SS"
+#define CONF_REFRESH  "Refresh"
+#define DEFAULT_REFRESH  "None"
+#define CONF_HIGHLIGHT  "SyntaxHighlight"
+#define CONF_KEYWORD_UPPER "KeywordUpper"
+#define DEFAULT_KEYWORD_UPPER ""
+#define CONF_COLOR  "KeywordColor"
+#define CONF_PLUGIN_DIR  "PluginDir"
+#define CONF_CACHE_DIR  "CacheDir"
+#define CONF_CACHE_DISK  "CacheDiskUse"
+#define DEFAULT_CACHE_DISK "Yes"
+#define CONF_SQL_FILE  "SQLDictionary"
+#define DEFAULT_SQL_FILE "$HOME/.torasql"
+#define CONF_DESKTOP_AWARE "DesktopAware"
+#define CONF_STATUS_MESSAGE     "StatusMessage"
+#define DEFAULT_STATUS_MESSAGE  "5"
+#define CONF_QT_XFT             "Xft"
+#define DEFAULT_QT_XFT          "false"
+#define CONF_DOCK_TOOLBAR "DockToolbar"
+#define CONF_DB_TITLE  "DBTitle"
+#define CONF_SIZE_UNIT  "SizeUnit"
+#define DEFAULT_SIZE_UNIT "MB"
+#define CONF_HELP_PATH  "HelpPath"
+#define CONF_STATUS_SAVE "StatusSave"
+#define DEFAULT_STATUS_SAVE "10"
+#define CONF_AUTO_COMMIT "AutoCommit"
+#define CONF_CHANGE_CONNECTION "ChangeConnection"
+#define CONF_CONNECT_HISTORY "ConnectHistory"
+#define CONF_CONNECT_SIZE "ConnectSize"
+#define CONF_CONNECT_CURRENT "ConnectCurrent"
+#define DEFAULT_CONNECT_SIZE "20"
+#define CONF_DEFAULT_TOOL "DefaultTool"
+#define CONF_TOOL_ENABLE "Enabled"
+#define CONF_CHART_SAMPLES "ChartSamples"
+#define DEFAULT_CHART_SAMPLES "100"
+#define CONF_DISPLAY_SAMPLES "DisplaySamples"
+#define DEFAULT_DISPLAY_SAMPLES "-1"
+#define CONF_CODE_COMPLETION "CodeComplete"
+#define CONF_COMPLETION_SORT "CompleteSort"
+#define CONF_MAXIMIZE_MAIN "MaximizeMain"
+#define CONF_AUTO_INDENT "AutoIndent"
+#define CONF_DONT_REREAD "DontReread"
+#define CONF_AUTO_LONG  "AutoLong"
+#define CONF_MESSAGE_STATUSBAR "MessageStatusbar"
+#define CONF_OBJECT_CACHE "ObjectCache"
+#define DEFAULT_OBJECT_CACHE "1"
+#define CONF_BKGND_CONNECT "BackgroundConnect"
+#define CONF_MAX_CONTENT "MaxContent"
+#define DEFAULT_MAX_CONTENT "100"
+#define CONF_KEEP_PLANS  "KeepPlans"
+#define CONF_RESTORE_SESSION "RestoreSession"
+#define CONF_DEFAULT_SESSION "DefaultSession"
+#define DEFAULT_SESSION  "$HOME/.tora.tse"
+#define CONF_TOOLS_LEFT  "ToolsLeft"
+#define CONF_DEFAULT_FORMAT "DefaultFormat"
+#define CONF_CSV_SEPARATOR "CSVSeparator"
+#define DEFAULT_CSV_SEPARATOR ";"
+#define CONF_CSV_DELIMITER "CSVDelimiter"
+#define DEFAULT_CSV_DELIMITER "\""
+#define CONF_AUTO_INDENT_RO "AutoIndent"
+#define CONF_INDICATE_EMPTY "IndicateEmpty"
+#define CONF_INDICATE_EMPTY_COLOR "IndicateEmptyColor"
+#define CONF_EXTENSIONS   "Extensions"
+#define CONF_RECENT_FILES "RecentFiles"
+#define CONF_RECENT_MAX  "RecentMax"
+#define DEFAULT_RECENT_MAX "5"
+#define CONF_LAST_DIR  "LastDir"
+#define CONF_LOCALE  "Locale"
+#define CONF_KEEP_ALIVE  "KeepAlive"
+#define DEFAULT_KEEP_ALIVE "300"
+#define CONF_NUMBER_FORMAT "NumberFormat"
+#define DEFAULT_NUMBER_FORMAT "0"
+#define CONF_NUMBER_DECIMALS "NumberDecimals"
+#define DEFAULT_NUMBER_DECIMALS "2"
+#define CONF_CACHE_TIMEOUT "CacheTimeout"
+#define DEFAULT_CACHE_TIMEOUT "7"
+#define CONF_TAB_STOP  "TabStop"
+#define DEFAULT_TAB_STOP "8"
+#define CONF_TOAD_BINDINGS "ToadBindings"
+#define DEFAULT_TOAD_BINDINGS ""
+#define CONF_DISPLAY_GRIDLINES "Gridlines"
+#define DEFAULT_DISPLAY_GRIDLINES "Yes"
+
+#ifdef TO_KDE
+#define DEFAULT_EXTENSIONS "*.sql *.pkg *.pkb|SQL files\n*.txt|Text files\n*|All files"
+#else
+#define DEFAULT_EXTENSIONS "SQL (*.sql *.pkg *.pkb), Text (*.txt), All (*)"
+#endif
+
+#ifndef TO_KDE
+#  ifndef WIN32 
+// Undefining this will leave out the style selection option stuff from the program
+#    define ENABLE_STYLE 
+// Undefining this will enable choosing Qt_Xft support
+#    define ENABLE_QT_XFT
+#  endif
+#endif
+#define CONF_STYLE  "Style"
+#define DEFAULT_STYLE  "Windows"
+#ifdef WIN32 
+// Wether to build monolithic TOra or not (Without plugin support
+#  define TOMONOLITHIC
+#  define DEFAULT_PLUGIN_DIR ""
+#endif 
+// Version of TOra, must also change rpm files
+#ifndef TOAPPNAME
+#  define TOAPPNAME  "TOra"
+#endif
+
+#define TOHOMEPAGE  "http://tora.sourceforge.net"
+
+// Stable or development version of TOra
+#define TOTYPE   "DEVELOP"
+
+#define TO_KDE_TOOLBAR_WIDGET "kde toolbar widget"
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toconfiguration.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toconfiguration.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toconfiguration.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,352 @@
+#include "toconfiguration.h"
+
+#include <qapplication.h>
+#include <qregexp.h>
+
+#include "utils.h"
+#ifdef WIN32
+#include "windows/cregistry.h"
+#endif
+
+#ifdef WIN32
+#  ifdef TOAD
+#  define APPLICATION_NAME "SOFTWARE\\Quest Software\\Toad for MySQL\\"
+#  else
+#  define APPLICATION_NAME "SOFTWARE\\Quest Software\\tora\\"
+#  define FALLBACK_NAME    "SOFTWARE\\Underscore\\tora\\"
+#  endif
+
+static char *toKeyPath(const QString &str, CRegistry &registry)
+{
+    static char *buf = NULL;
+    int pos = str.length() - 1;
+    while (pos >= 0 && str.at(pos) != '\\')
+        pos--;
+    if (pos < 0)
+        throw QT_TRANSLATE_NOOP("toKeyPath", "Couldn't find \\ in path");
+    QString ret = str.mid(0, pos);
+    if (buf)
+        free(buf);
+    buf = strdup(ret);
+    registry.CreateKey(HKEY_CURRENT_USER, buf);
+    return buf;
+}
+
+static char *toKeyValue(const QString &str)
+{
+    static char *buf = NULL;
+    int pos = str.length() - 1;
+    while (pos >= 0 && str.at(pos) != '\\')
+        pos--;
+    if (pos < 0)
+        throw QT_TRANSLATE_NOOP("toKeyValue", "Couldn't find \\ in path");
+    if (buf)
+        free(buf);
+    buf = strdup(str.mid(pos + 1));
+    return buf;
+}
+
+#endif
+
+toConfiguration::toConfiguration()
+{
+
+}
+
+toConfiguration::~toConfiguration()
+{
+}
+
+void toConfiguration::loadConfig()
+{
+   Configuration.clear();
+
+#ifndef WIN32
+
+    QString conf;
+    if (getenv("HOME"))
+    {
+        conf = QString::fromLatin1(getenv("HOME"));
+    }
+    conf.append(QString::fromLatin1(CONFIG_FILE));
+    try
+    {
+        loadMap(conf, Configuration);
+    }
+    catch (...)
+    {
+        try
+        {
+            loadMap(QString::fromLatin1(DEF_CONFIG_FILE), Configuration);
+        }
+        catch (...)
+        {}
+    }
+#endif
+}
+
+void toConfiguration::loadMap(const QString &filename, std::map<QCString, QString> &pairs)
+{
+    QCString data = toReadFile(filename);
+
+    int pos = 0;
+    int bol = 0;
+    int endtag = -1;
+    int wpos = 0;
+    int size = data.length();
+    while (pos < size)
+    {
+        switch (data[pos])
+        {
+        case '\n':
+            data[wpos] = 0;
+            if (endtag == -1)
+                throw QT_TRANSLATE_NOOP("toTool", "Malformed tag in config file. Missing = on row. (%1)").arg(data.mid(bol, wpos - bol));
+            {
+                QCString tag = ((const char *)data) + bol;
+                QCString val = ((const char *)data) + endtag + 1;
+                pairs[tag] = QString::fromUtf8(val);
+            }
+            bol = pos + 1;
+            endtag = -1;
+            wpos = pos;
+            break;
+        case '=':
+            if (endtag == -1)
+            {
+                endtag = pos;
+                data[wpos] = 0;
+                wpos = pos;
+            }
+            else
+                data[wpos] = data[pos];
+            break;
+        case '\\':
+            pos++;
+            switch (data[pos])
+            {
+            case 'n':
+                data[wpos] = '\n';
+                break;
+            case '\\':
+                if (endtag >= 0)
+                    data[wpos] = '\\';
+                else
+                    data[wpos] = ':';
+                break;
+            default:
+                throw QT_TRANSLATE_NOOP("toTool", "Unknown escape character in string (Only \\\\ and \\n recognised)");
+            }
+            break;
+        default:
+            data[wpos] = data[pos];
+        }
+        wpos++;
+        pos++;
+    }
+    return ;
+}
+
+void toConfiguration::saveConfig()
+{
+        try
+    {
+#ifdef WIN32
+        CRegistry registry;
+        QRegExp re(":");
+        for (std::map<QCString, QString>::iterator i = Configuration.begin();i != Configuration.end();i++)
+        {
+            QCString path = (*i).first;
+            QString value = (*i).second;
+            path.prepend(APPLICATION_NAME);
+            path.replace(re, "\\");
+            if (value.isEmpty())
+            {
+                if (!registry.SetStringValue(HKEY_CURRENT_USER,
+                                             toKeyPath(path, registry),
+                                             toKeyValue(path),
+                                             ""))
+                    toStatusMessage(QT_TRANSLATE_NOOP("toTool", "Couldn't save empty value at key %1").arg(path));
+            }
+            else
+            {
+                char *t = strdup(value.utf8());
+                if (!registry.SetStringValue(HKEY_CURRENT_USER,
+                                             toKeyPath(path, registry),
+                                             toKeyValue(path),
+                                             t))
+                    toStatusMessage(QT_TRANSLATE_NOOP("toTool", "Couldn't save %1 value at key %2").arg(value).arg(path));
+                free(t);
+            }
+        }
+#else
+        if ( Configuration.empty() )
+           return ;
+        QCString conf;
+        if (getenv("HOME"))
+        {
+            conf = getenv("HOME");
+        }
+        conf.append(CONFIG_FILE);
+        saveMap(conf, Configuration);
+#endif
+
+    }
+    TOCATCH
+
+}
+
+bool toConfiguration::saveMap(const QString &file, std::map<QCString, QString> &pairs)
+{
+    QCString data;
+
+    {
+        QRegExp newline(QString::fromLatin1("\n"));
+        QRegExp backslash(QString::fromLatin1("\\"));
+        for (std::map<QCString, QString>::iterator i = pairs.begin();i != pairs.end();i++)
+        {
+            QCString str = (*i).first;
+            str.append(QString::fromLatin1("="));
+            str.replace(backslash, QString::fromLatin1("\\\\"));
+            str.replace(newline, QString::fromLatin1("\\n"));
+            QString line = (*i).second;
+            line.replace(backslash, QString::fromLatin1("\\\\"));
+            line.replace(newline, QString::fromLatin1("\\n"));
+            str += line.utf8();
+            str += QString::fromLatin1("\n");
+            data += str;
+        }
+    }
+    return toWriteFile(file, data);
+}
+
+const QString &toConfiguration::globalConfig(const QCString &tag, const QCString &def)
+{
+    if ( Configuration.empty() )
+       loadConfig();
+
+    std::map<QCString, QString>::iterator i = Configuration.find(tag);
+    if (i == Configuration.end())
+    {
+#if defined(WIN32)
+        CRegistry registry;
+        QRegExp re(QString::fromLatin1(":"));
+        QCString path = tag;
+        path.prepend(APPLICATION_NAME);
+        path.replace(re, "\\");
+        DWORD siz = 1024;
+        char buffer[1024];
+        try
+        {
+            if (registry.GetStringValue(HKEY_CURRENT_USER,
+                                        toKeyPath(path, registry),
+                                        toKeyValue(path),
+                                        buffer, siz))
+            {
+                if (siz > 0)
+                {
+                    QString ret = QString::fromUtf8(buffer);
+                    (Configuration)[tag] = ret;
+                }
+                else
+                {
+                    (Configuration)[tag] = "";
+                }
+                return (Configuration)[tag];
+            }
+        }
+        catch (...)
+        {
+#ifdef FALLBACK_NAME
+            try
+            {
+                path = tag;
+                path.prepend(FALLBACK_NAME);
+                path.replace(re, "\\");
+                if (registry.GetStringValue(HKEY_CURRENT_USER,
+                                            toKeyPath(path, registry),
+                                            toKeyValue(path),
+                                            buffer, siz))
+                {
+                    if (siz > 0)
+                    {
+                        QString ret = QString::fromUtf8(buffer);
+                        (Configuration)[tag] = ret;
+                    }
+                    else
+                    {
+                        (Configuration)[tag] = "";
+                    }
+                    return (Configuration)[tag];
+                }
+            }
+            catch (...)
+            {}
+#endif
+
+        }
+#endif
+
+        (Configuration)[tag] = QString::fromLatin1(def);
+        return (Configuration)[tag];
+    }
+    return (*i).second;
+}
+
+
+
+const QString& toConfiguration::config(const QCString &tag, const QCString &def, const QCString &name)
+{
+    QCString str = name;
+    str.append(":");
+    str.append(tag);
+    return globalConfig(str, def);
+}
+
+void toConfiguration::eraseConfig(const QCString &tag, const QCString &name)
+{
+    QCString str = name;
+    str.append(":");
+    str.append(tag);
+    globalEraseConfig(str);
+}
+
+void toConfiguration::setConfig(const QCString &tag, const QString &def, const QCString name)
+{
+    QCString str = name;
+    str.append(":");
+    str.append(tag);
+    globalSetConfig(str, def);
+}
+
+
+void toConfiguration::globalEraseConfig(const QCString &tag)
+{
+    if ( Configuration.empty() )
+       loadConfig();
+    std::map<QCString, QString>::iterator i = Configuration.find(tag);
+    if (i != Configuration.end())
+    {
+        Configuration.erase(i);
+#if defined(WIN32)
+
+        CRegistry registry;
+        QRegExp re(QString::fromLatin1(":"));
+        QCString path = tag;
+        path.prepend(APPLICATION_NAME);
+        path.replace(re, "\\");
+        registry.DeleteKey(HKEY_CURRENT_USER, path); // Don't really care if it works.
+#endif
+
+    }
+}
+
+void toConfiguration::globalSetConfig(const QCString &tag, const QString &value)
+{
+    if ( Configuration.empty() )
+       loadConfig();
+
+    (Configuration)[tag] = value;
+}
+
+

Added: kde-extras/tora/branches/upstream/current/src/toconfiguration.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toconfiguration.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toconfiguration.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,124 @@
+#ifndef TOCONFIGURATION_H
+#define TOCONFIGURATION_H
+
+#ifdef TOAD
+#define CONFIG_FILE "/.toadrc"
+#define DEF_CONFIG_FILE "/etc/toadrc"
+#else
+#define CONFIG_FILE "/.torarc"
+#define DEF_CONFIG_FILE "/etc/torarc"
+#endif
+
+#include <map>
+
+#include <loki/Singleton.h>
+#include <qstring.h>
+
+#include <qapplication.h>
+//
+
+// A little magic to get lrefresh to work and get a check on qApp
+
+#undef QT_TRANSLATE_NOOP
+#define QT_TRANSLATE_NOOP(x,y) QTRANS(x,y)
+
+class toConfiguration
+{
+public :
+    toConfiguration();
+    virtual ~toConfiguration();
+
+    /**
+     * Load configuration from file.
+     */
+    void loadConfig(void);
+
+    /**
+     * Save configuration to file.
+     */
+    void saveConfig(void);
+
+   /**
+     * Get value of a setting.
+     *
+     * Setting names are hierachical separated by ':' instead of '/' usually used
+     * in filenames. As an example all settings for the tool 'Example' would be
+     * under the 'Example:{settingname}' name.
+     *
+     * @param tag The name of the configuration setting.
+     * @param def Default value of the setting, if it is not available.
+     */
+    const QString &globalConfig(const QCString &tag, const QCString &def);
+
+    /**
+     * Load a string to string map from file saved by the @ref saveMap function.
+     * @param filename Filename to load
+     * @param map Reference to the map to fill with the new values.
+     */
+    void loadMap(const QString &filename, std::map<QCString, QString> &map);
+
+    /**
+         * A map containing the available configuration settings. By convention the
+         * character ':' is used to separate parts of the path.
+         *
+         * @see globalConfig
+         * @see globalSetConfig
+         * @see config
+         * @see setConfig
+         */
+    bool saveMap(const QString &file, std::map<QCString, QString> &pairs);
+
+    /**
+     * Change a setting. Depending on the implementation this can change the
+     * contents on disk or not.
+     *
+     * Setting names are hierachical separated by ':' instead of '/' usually used
+     * in filenames. As an example all settings for the tool 'Example' would be
+     * under the 'Example:{settingname}' name.
+     *
+     * @param tag The name of the configuration setting.
+     * @param def Contents of this setting.
+     */
+    void globalSetConfig(const QCString &tag, const QString &value);
+    /**
+     * Remove a setting. Can be usefull for removing sensetive information.
+     * @param tag The name of the configuration setting to remove.
+     */
+    void globalEraseConfig(const QCString &tag);
+
+    /**
+     * Get tool specific settings.
+     *
+     * Setting names are hierachical separated by ':' instead of '/' usually used
+     * in filenames. As an example all settings for the tool 'Example' would be
+     * under the 'Example:{settingname}' name.
+     *
+     * @param tag The name of the configuration setting.
+     * @param def Contents of this setting.
+     */
+    const QString &config(const QCString &tag, const QCString &def, const QCString &name);
+    /**
+     * Change toolspecific setting. Depending on the implementation this can change the
+     * contents on disk or not.
+     *
+     * Setting names are hierachical separated by ':' instead of '/' usually used
+     * in filenames. As an example all settings for the tool 'Example' would be
+     * under the 'Example:{settingname}' name.
+     *
+     * @param tag The name of the configuration setting.
+     * @param def Default value of the setting, if it is not available.
+     */
+    void setConfig(const QCString &tag, const QString &value, const QCString name = "");
+    /**
+     * Remove a toolspecific setting. Can be usefull for removing sensetive information.
+     * @param tag The name of the configuration setting to remove.
+     */
+    void eraseConfig(const QCString &tag, const QCString& name);
+
+private :
+    std::map<QCString, QString> Configuration;
+};
+
+typedef Loki::SingletonHolder<toConfiguration> toConfigurationSingle;
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toconnection.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toconnection.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toconnection.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,2145 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <string>
+#include <time.h>
+
+#include <qapplication.h>
+#include <qdir.h>
+#include <qprogressdialog.h>
+#include <qtextstream.h>
+#include <qwidget.h>
+
+// A little magic to get lrefresh to work and get a check on qApp
+
+#undef QT_TRANSLATE_NOOP
+#define QT_TRANSLATE_NOOP(x,y) QTRANS(x,y)
+
+// also defined in utils.h
+#ifdef TO_DEBUGOUT
+#  undef TO_DEBUGOUT
+#endif
+
+#define TO_DEBUGOUT(x) fprintf(stderr,(const char *)x);
+
+// Connection provider implementation
+
+std::map<QCString, toConnectionProvider *> *toConnectionProvider::Providers;
+std::map<QCString, toConnectionProvider *> *toConnectionProvider::Types;
+
+static int NumberFormat;
+static int NumberDecimals;
+
+void toConnectionProvider::checkAlloc(void)
+{
+    if (!Providers)
+        Providers = new std::map<QCString, toConnectionProvider *>;
+}
+
+void toConnectionProvider::addProvider(const QCString &provider)
+{
+    checkAlloc();
+    Provider = provider;
+    (*Providers)[Provider] = this;
+}
+
+toConnectionProvider::toConnectionProvider(const QCString &provider, bool add
+                                              )
+{
+    Provider = provider;
+    if (add
+       )
+        addProvider(provider);
+    if (!Types)
+        Types = new std::map<QCString, toConnectionProvider *>;
+    (*Types)[provider] = this;
+}
+
+std::list<QString> toConnectionProvider::providedOptions(const QCString &)
+{
+    std::list<QString> ret;
+    return ret;
+}
+
+void toConnectionProvider::removeProvider(const QCString &provider)
+{
+    std::map<QCString, toConnectionProvider *>::iterator i = Providers->find(provider);
+    if (i != Providers->end())
+        Providers->erase(i);
+}
+
+toConnectionProvider::~toConnectionProvider()
+{
+    try
+    {
+        if (!Provider.isEmpty())
+            removeProvider(Provider);
+        std::map<QCString, toConnectionProvider *>::iterator i = Types->find(Provider);
+        if (i != Types->end())
+            Types->erase(i);
+    }
+    catch (...)
+    {}
+}
+
+std::list<QString> toConnectionProvider::providedHosts(const QCString &)
+{
+    std::list<QString> ret;
+    return ret;
+}
+
+std::list<QCString> toConnectionProvider::providers()
+{
+    std::list<QCString> ret;
+    if (!Providers)
+        return ret;
+    for (std::map<QCString, toConnectionProvider *>::iterator i = Providers->begin();i != Providers->end();i++)
+        ret.insert(ret.end(), (*i).first);
+    return ret;
+}
+
+void toConnectionProvider::initializeAll(void)
+{
+    if (Types)
+        for (std::map<QCString, toConnectionProvider *>::iterator i = Types->begin();
+                i != Types->end();i++)
+            (*i).second->initialize();
+}
+
+toConnectionProvider &toConnectionProvider::fetchProvider(const QCString &provider)
+{
+    checkAlloc();
+    std::map<QCString, toConnectionProvider *>::iterator i = Providers->find(provider);
+    if (i == Providers->end())
+        throw QT_TRANSLATE_NOOP("toConnectionProvider", "Tried to fetch unknown provider %1").arg(provider);
+    return *((*i).second);
+}
+
+std::list<QString> toConnectionProvider::options(const QCString &provider)
+{
+    return fetchProvider(provider).providedOptions(provider);
+}
+
+QWidget *toConnectionProvider::configurationTab(const QCString &provider, QWidget *parent)
+{
+    return fetchProvider(provider).providerConfigurationTab(provider, parent);
+}
+
+toConnection::connectionImpl *toConnectionProvider::connection(const QCString &provider,
+        toConnection *conn)
+{
+    return fetchProvider(provider).provideConnection(provider, conn);
+}
+
+std::list<QString> toConnectionProvider::hosts(const QCString &provider)
+{
+    return fetchProvider(provider).providedHosts(provider);
+}
+
+std::list<QString> toConnectionProvider::databases(const QCString &provider, const QString &host,
+        const QString &user, const QString &pwd)
+{
+    return fetchProvider(provider).providedDatabases(provider, host, user, pwd);
+}
+
+const QString &toConnectionProvider::config(const QCString &tag, const QCString &def)
+{
+    QCString str = Provider;
+    str.append(":");
+    str.append(tag);
+    return toConfigurationSingle::Instance().globalConfig(str, def);
+}
+
+void toConnectionProvider::setConfig(const QCString &tag, const QCString &def)
+{
+    QCString str = Provider;
+    str.append(":");
+    str.append(tag);
+    toConfigurationSingle::Instance().globalSetConfig(str, def);
+}
+
+QWidget *toConnectionProvider::providerConfigurationTab(const QCString &, QWidget *)
+{
+    return NULL;
+}
+
+// Query value implementation
+
+toQValue::toQValue(int i)
+{
+    Type = intType;
+    Value.Int = i;
+}
+
+toQValue::toQValue(double i)
+{
+    Type = doubleType;
+    Value.Double = i;
+}
+
+toQValue::toQValue(const toQValue &copy)
+{
+    Type = copy.Type;
+    switch (Type)
+    {
+    case intType:
+        Value.Int = copy.Value.Int;
+        break;
+    case doubleType:
+        Value.Double = copy.Value.Double;
+        break;
+    case stringType:
+        Value.String = new QString(*copy.Value.String);
+        break;
+    case binaryType:
+        Value.Array = new QByteArray(*copy.Value.Array);
+        break;
+    case nullType:
+        break;
+    }
+}
+
+const toQValue &toQValue::operator = (const toQValue &copy)
+{
+    if (Type == stringType)
+        delete Value.String;
+    else if (Type == binaryType)
+        delete Value.Array;
+
+    Type = copy.Type;
+    switch (Type)
+    {
+    case intType:
+        Value.Int = copy.Value.Int;
+        break;
+    case doubleType:
+        Value.Double = copy.Value.Double;
+        break;
+    case stringType:
+        Value.String = new QString(*copy.Value.String);
+        break;
+    case binaryType:
+        Value.Array = new QByteArray(*copy.Value.Array);
+        break;
+    case nullType:
+        break;
+    }
+    return *this;
+}
+
+bool toQValue::operator == (const toQValue &val) const
+{
+    if (isNull() && val.isNull())
+        return true;
+    if (val.Type != Type)
+        return false;
+    switch (Type)
+    {
+    case intType:
+        return (val.Value.Int == Value.Int);
+    case doubleType:
+        return (val.Value.Double == Value.Double);
+    case stringType:
+        return (*val.Value.String) == (*Value.String);
+    case binaryType:
+        return (*val.Value.Array) == (*Value.Array);
+    case nullType:
+        break;
+    }
+    return false;  // Should never get here
+}
+
+toQValue::toQValue(const QString &str)
+{
+    Type = stringType;
+    Value.String = new QString(str);
+}
+
+toQValue::toQValue(void)
+{
+    Type = nullType;
+}
+
+toQValue::~toQValue()
+{
+    if (Type == stringType)
+        delete Value.String;
+    else if (Type == binaryType)
+        delete Value.Array;
+}
+
+bool toQValue::isInt(void) const
+{
+    return Type == intType;
+}
+
+bool toQValue::isDouble(void) const
+{
+    return Type == doubleType;
+}
+
+bool toQValue::isString(void) const
+{
+    return Type == stringType;
+}
+
+bool toQValue::isBinary(void) const
+{
+    return Type == binaryType;
+}
+
+bool toQValue::isNull(void) const
+{
+    if (Type == nullType)
+        return true;
+    if (Type == stringType && Value.String->isNull())
+        return true;
+    return false;
+}
+
+const QByteArray &toQValue::toByteArray() const
+{
+    if (Type != binaryType)
+        throw qApp->translate("toQValue", "Tried to convert non binary value to binary");
+    return *Value.Array;
+}
+
+static char HexString[] = "0123456789ABCDEF";
+
+QCString toQValue::utf8(void) const
+{
+    switch (Type)
+    {
+    case nullType:
+        {
+            QCString ret;
+            return ret;
+        }
+    case intType:
+        {
+            QCString ret;
+            ret.setNum(Value.Int);
+            return ret;
+        }
+    case doubleType:
+        {
+            QCString ret;
+            if (Value.Double != int(Value.Double))
+            {
+                ret.setNum(Value.Double);
+                return ret;
+            }
+            char buf[100];
+            switch (NumberFormat)
+            {
+            default:
+                ret.setNum(Value.Double);
+                break;
+            case 1:
+                sprintf(buf, "%E", Value.Double);
+                ret = buf;
+                break;
+            case 2:
+                sprintf(buf, "%0.*f", NumberDecimals, Value.Double);
+                ret = buf;
+                break;
+            }
+            return ret;
+        }
+    case stringType:
+        return Value.String->utf8();
+    case binaryType:
+        {
+            QCString ret(Value.Array->size()*2 + 1);
+            for (unsigned int i = 0;i < Value.Array->size();i++)
+            {
+                unsigned char c = (unsigned char)Value.Array->at(i);
+                ret.at(i*2) = HexString[(c / 16) % 16];
+                ret.at(i*2 + 1) = HexString[c % 16];
+            }
+            ret.at(Value.Array->size()*2) = 0;
+            return ret;
+        }
+    }
+    throw qApp->translate("toQValue", "Unknown type of query value");
+}
+
+int toQValue::toInt(void) const
+{
+    switch (Type)
+    {
+    case nullType:
+        return 0;
+    case intType:
+        return Value.Int;
+    case doubleType:
+        return int(Value.Double);
+    case stringType:
+        return Value.String->toInt();
+    case binaryType:
+        throw qApp->translate("toQValue", "Can't transform binary value to int");
+    }
+    throw qApp->translate("toQValue", "Unknown type of query value");
+}
+
+double toQValue::toDouble(void) const
+{
+    switch (Type)
+    {
+    case nullType:
+        return 0;
+    case intType:
+        return double(Value.Int);
+    case doubleType:
+        return Value.Double;
+    case stringType:
+        return Value.String->toDouble();
+    case binaryType:
+        throw qApp->translate("toQValue", "Can't transform binary value to double");
+    }
+    throw qApp->translate("toQValue", "Unknown type of query value");
+}
+
+void toQValue::setNumberFormat(int format, int decimals)
+{
+    NumberFormat = format;
+    NumberDecimals = decimals;
+}
+
+QString toQValue::formatNumber(double number)
+{
+    if (number == int(number))
+        return QString::number(number);
+    switch (NumberFormat)
+    {
+    case 1:
+        {
+            char buf[100];
+            sprintf(buf, "%E", number);
+            return buf;
+        }
+    case 2:
+        {
+            char buf[100];
+            sprintf(buf, "%0.*f", NumberDecimals, number);
+            return buf;
+        }
+    default:
+        return QString::number(number);
+    }
+}
+
+int toQValue::numberFormat(void)
+{
+    return NumberFormat;
+}
+
+int toQValue::numberDecimals(void)
+{
+    return NumberDecimals;
+}
+
+toQValue toQValue::createBinary(const QByteArray &arr)
+{
+    toQValue ret;
+    ret.Type = binaryType;
+    ret.Value.Array = new QByteArray(arr);
+    return ret;
+}
+
+toQValue toQValue::createFromHex(const QCString &hex)
+{
+    QByteArray arr((hex.length() + 1) / 2);
+    for (unsigned int i = 0;i < hex.length();i += 2)
+    {
+        int num;
+        char c = hex.at(i);
+        if (c >= 'a')
+            num = c - 'a';
+        else if (c >= 'A')
+            num = c - 'A';
+        else
+            num = c - '0';
+        num <<= 4;
+        c = hex.at(i + 1);
+        if (c >= 'a')
+            num += c - 'a';
+        else if (c >= 'A')
+            num += c - 'A';
+        else
+            num += c - '0';
+        arr.at(i / 2) = num;
+    }
+    return createBinary(arr);
+}
+
+toQValue toQValue::createFromHex(const QString &hex)
+{
+    QByteArray arr((hex.length() + 1) / 2);
+    for (unsigned int i = 0;i < hex.length();i += 2)
+    {
+        int num;
+        char c = hex.at(i);
+        if (c >= 'a')
+            num = c - 'a';
+        else if (c >= 'A')
+            num = c - 'A';
+        else
+            num = c - '0';
+        num <<= 4;
+        c = hex.at(i + 1);
+        if (c >= 'a')
+            num += c - 'a';
+        else if (c >= 'A')
+            num += c - 'A';
+        else
+            num += c - '0';
+        arr.at(i / 2) = num;
+    }
+    return createBinary(arr);
+}
+
+toQValue::operator QString() const
+{
+    switch (Type)
+    {
+    case nullType:
+        return QString::null;
+    case doubleType:
+        return formatNumber(Value.Double);
+    case intType:
+        return QString::number(Value.Int);
+    case stringType:
+        return *Value.String;
+    case binaryType:
+        {
+            QString ret;
+            for (unsigned int i = 0;i < Value.Array->size();i++)
+            {
+                unsigned char c = (unsigned char)Value.Array->at(i);
+                ret += HexString[(c / 16) % 16];
+                ret += HexString[c % 16];
+            }
+            return ret;
+        }
+    }
+    throw qApp->translate("toQValue", "Unknown type of query value");
+}
+
+// toQuery implementation
+
+toQuery::toQuery(toConnection &conn, const toSQL &sql,
+                 const QString &arg1, const QString &arg2,
+                 const QString &arg3, const QString &arg4,
+                 const QString &arg5, const QString &arg6,
+                 const QString &arg7, const QString &arg8,
+                 const QString &arg9)
+        : Connection(conn), ConnectionSub(conn.mainConnection()), SQL(sql(Connection))
+{
+    Mode = Normal;
+    int numArgs;
+    if (!arg9.isNull())
+        numArgs = 9;
+    else if (!arg8.isNull())
+        numArgs = 8;
+    else if (!arg7.isNull())
+        numArgs = 7;
+    else if (!arg6.isNull())
+        numArgs = 6;
+    else if (!arg5.isNull())
+        numArgs = 5;
+    else if (!arg4.isNull())
+        numArgs = 4;
+    else if (!arg3.isNull())
+        numArgs = 3;
+    else if (!arg2.isNull())
+        numArgs = 2;
+    else if (!arg1.isNull())
+        numArgs = 1;
+    else
+        numArgs = 0;
+
+    if (numArgs > 0)
+        Params.insert(Params.end(), arg1);
+    if (numArgs > 1)
+        Params.insert(Params.end(), arg2);
+    if (numArgs > 2)
+        Params.insert(Params.end(), arg3);
+    if (numArgs > 3)
+        Params.insert(Params.end(), arg4);
+    if (numArgs > 4)
+        Params.insert(Params.end(), arg5);
+    if (numArgs > 5)
+        Params.insert(Params.end(), arg6);
+    if (numArgs > 6)
+        Params.insert(Params.end(), arg7);
+    if (numArgs > 7)
+        Params.insert(Params.end(), arg8);
+    if (numArgs > 8)
+        Params.insert(Params.end(), arg9);
+
+    toBusy busy;
+    try
+    {
+        Query = NULL;
+        Query = conn.Connection->createQuery(this, ConnectionSub);
+        Query->execute();
+    }
+    catch (...)
+    {
+        delete Query;
+        Query = NULL;
+        Connection.freeConnection(ConnectionSub);
+        throw;
+    }
+    ConnectionSub->setQuery(this);
+}
+
+toQuery::toQuery(toConnection &conn, const QString &sql,
+                 const QString &arg1, const QString &arg2,
+                 const QString &arg3, const QString &arg4,
+                 const QString &arg5, const QString &arg6,
+                 const QString &arg7, const QString &arg8,
+                 const QString &arg9)
+        : Connection(conn), ConnectionSub(conn.mainConnection()), SQL(sql.utf8())
+{
+    Mode = Normal;
+    int numArgs;
+    if (!arg9.isNull())
+        numArgs = 9;
+    else if (!arg8.isNull())
+        numArgs = 8;
+    else if (!arg7.isNull())
+        numArgs = 7;
+    else if (!arg6.isNull())
+        numArgs = 6;
+    else if (!arg5.isNull())
+        numArgs = 5;
+    else if (!arg4.isNull())
+        numArgs = 4;
+    else if (!arg3.isNull())
+        numArgs = 3;
+    else if (!arg2.isNull())
+        numArgs = 2;
+    else if (!arg1.isNull())
+        numArgs = 1;
+    else
+        numArgs = 0;
+
+    if (numArgs > 0)
+        Params.insert(Params.end(), arg1);
+    if (numArgs > 1)
+        Params.insert(Params.end(), arg2);
+    if (numArgs > 2)
+        Params.insert(Params.end(), arg3);
+    if (numArgs > 3)
+        Params.insert(Params.end(), arg4);
+    if (numArgs > 4)
+        Params.insert(Params.end(), arg5);
+    if (numArgs > 5)
+        Params.insert(Params.end(), arg6);
+    if (numArgs > 6)
+        Params.insert(Params.end(), arg7);
+    if (numArgs > 7)
+        Params.insert(Params.end(), arg8);
+    if (numArgs > 8)
+        Params.insert(Params.end(), arg9);
+
+    toBusy busy;
+    try
+    {
+        Query = NULL;
+        Query = conn.Connection->createQuery(this, ConnectionSub);
+        Query->execute();
+    }
+    catch (...)
+    {
+        delete Query;
+        Query = NULL;
+        Connection.freeConnection(ConnectionSub);
+        throw;
+    }
+    ConnectionSub->setQuery(this);
+}
+
+toQuery::toQuery(toConnection &conn, const toSQL &sql, const toQList &params)
+        : Connection(conn), ConnectionSub(conn.mainConnection()), Params(params), SQL(sql(conn))
+{
+    Mode = Normal;
+    toBusy busy;
+    try
+    {
+        Query = NULL;
+        Query = conn.Connection->createQuery(this, ConnectionSub);
+        Query->execute();
+    }
+    catch (...)
+    {
+        delete Query;
+        Query = NULL;
+        Connection.freeConnection(ConnectionSub);
+        throw;
+    }
+    ConnectionSub->setQuery(this);
+}
+
+toQuery::toQuery(toConnection &conn, const QString &sql, const toQList &params)
+        : Connection(conn), ConnectionSub(conn.mainConnection()), Params(params), SQL(sql.utf8())
+{
+    Mode = Normal;
+    toBusy busy;
+    try
+    {
+        Query = NULL;
+        Query = conn.Connection->createQuery(this, ConnectionSub);
+        Query->execute();
+    }
+    catch (...)
+    {
+        delete Query;
+        Query = NULL;
+        Connection.freeConnection(ConnectionSub);
+        throw;
+    }
+    ConnectionSub->setQuery(this);
+}
+
+toQuery::toQuery(toConnection &conn, queryMode mode, const toSQL &sql, const toQList &params)
+        : Connection(conn),
+        Params(params),
+        SQL(sql(conn))
+{
+    Mode = mode;
+
+    switch (Mode)
+    {
+    case Normal:
+    case All:
+        ConnectionSub = conn.mainConnection();
+        break;
+    case Background:
+        ConnectionSub = conn.backgroundConnection();
+        break;
+    case Long:
+        ConnectionSub = conn.longConnection();
+        break;
+    }
+
+    toBusy busy;
+    try
+    {
+        Query = NULL;
+        Query = conn.Connection->createQuery(this, ConnectionSub);
+        Query->execute();
+    }
+    catch (...)
+    {
+        delete Query;
+        Query = NULL;
+        Connection.freeConnection(ConnectionSub);
+        throw;
+    }
+    ConnectionSub->setQuery(this);
+}
+
+toQuery::toQuery(toConnection &conn, queryMode mode, const QString &sql, const toQList &params)
+        : Connection(conn),
+        Params(params),
+        SQL(sql.utf8())
+{
+    Mode = mode;
+
+    switch (Mode)
+    {
+    case Normal:
+    case All:
+        ConnectionSub = conn.mainConnection();
+        break;
+    case Background:
+        ConnectionSub = conn.backgroundConnection();
+        break;
+    case Long:
+        ConnectionSub = conn.longConnection();
+        break;
+    }
+
+    toBusy busy;
+    try
+    {
+        Query = NULL;
+        Query = conn.Connection->createQuery(this, ConnectionSub);
+        Query->execute();
+    }
+    catch (...)
+    {
+        delete Query;
+        Query = NULL;
+        Connection.freeConnection(ConnectionSub);
+        throw;
+    }
+    ConnectionSub->setQuery(this);
+}
+
+toQuery::toQuery(toConnection &conn, queryMode mode)
+        : Connection(conn)
+{
+    Mode = mode;
+
+    switch (Mode)
+    {
+    case Normal:
+    case All:
+        ConnectionSub = conn.mainConnection();
+        break;
+    case Background:
+        ConnectionSub = conn.backgroundConnection();
+        break;
+    case Long:
+        ConnectionSub = conn.longConnection();
+        break;
+    }
+
+    toBusy busy;
+    try
+    {
+        Query = NULL;
+        Query = conn.Connection->createQuery(this, ConnectionSub);
+    }
+    catch (...)
+    {
+        delete Query;
+        Query = NULL;
+        throw;
+    }
+    ConnectionSub->setQuery(this);
+}
+
+void toQuery::execute(const toSQL &sql, const toQList &params)
+{
+    toBusy busy;
+    SQL = sql(Connection);
+    Params = params;
+    Query->execute();
+}
+
+void toQuery::execute(const QString &sql, const toQList &params)
+{
+    toBusy busy;
+    SQL = sql.utf8();
+    Params = params;
+    Query->execute();
+}
+
+toQuery::~toQuery()
+{
+    toBusy busy;
+    delete Query;
+    try
+    {
+        if (ConnectionSub->query() == this)
+            ConnectionSub->setQuery(NULL);
+        Connection.freeConnection(ConnectionSub);
+    }
+    catch (...)
+    {}
+}
+
+bool toQuery::eof(void)
+{
+    if (Mode == All)
+    {
+        if (Query->eof())
+        {
+            Connection.Lock.lock();
+            bool found = false;
+            try
+            {
+                std::list<toConnectionSub *> &cons = Connection.connections();
+                for (std::list<toConnectionSub *>::iterator i = cons.begin();i != cons.end();i++)
+                {
+                    if (*i == ConnectionSub)
+                    {
+                        i++;
+                        if (i != cons.end())
+                        {
+                            ConnectionSub = *i;
+                            Connection.Lock.unlock();
+                            found = true;
+                            delete Query;
+                            Query = NULL;
+                            Query = connection().Connection->createQuery(this, ConnectionSub);
+                            Query->execute();
+                            Connection.Lock.lock();
+                        }
+                        break;
+                    }
+                }
+                Connection.Lock.unlock();
+            }
+            catch (...)
+            {}
+        }
+    }
+    return Query->eof();
+}
+
+toQList toQuery::readQuery(toConnection &conn, const toSQL &sql, toQList &params)
+{
+    toBusy busy;
+    toQuery query(conn, sql, params);
+    toQList ret;
+    while (!query.eof())
+        ret.insert(ret.end(), query.readValue());
+    return ret;
+}
+
+toQList toQuery::readQuery(toConnection &conn, const QString &sql, toQList &params)
+{
+    toBusy busy;
+    toQuery query(conn, sql, params);
+    toQList ret;
+    while (!query.eof())
+        ret.insert(ret.end(), query.readValue());
+    return ret;
+}
+
+toQList toQuery::readQuery(toConnection &conn, const toSQL &sql,
+                           const QString &arg1, const QString &arg2,
+                           const QString &arg3, const QString &arg4,
+                           const QString &arg5, const QString &arg6,
+                           const QString &arg7, const QString &arg8,
+                           const QString &arg9)
+{
+    toBusy busy;
+    toQuery query(conn, sql, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
+    toQList ret;
+    while (!query.eof())
+        ret.insert(ret.end(), query.readValue());
+    return ret;
+}
+
+toQList toQuery::readQuery(toConnection &conn, const QString &sql,
+                           const QString &arg1, const QString &arg2,
+                           const QString &arg3, const QString &arg4,
+                           const QString &arg5, const QString &arg6,
+                           const QString &arg7, const QString &arg8,
+                           const QString &arg9)
+{
+    toBusy busy;
+    toQuery query(conn, sql, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
+    toQList ret;
+    while (!query.eof())
+        ret.insert(ret.end(), query.readValue());
+    return ret;
+}
+
+toQList toQuery::readQueryNull(toConnection &conn, const toSQL &sql, toQList &params)
+{
+    toBusy busy;
+    toQuery query(conn, sql, params);
+    toQList ret;
+    while (!query.eof())
+        ret.insert(ret.end(), query.readValueNull());
+    return ret;
+}
+
+toQList toQuery::readQueryNull(toConnection &conn, const QString &sql, toQList &params)
+{
+    toBusy busy;
+    toQuery query(conn, sql, params);
+    toQList ret;
+    while (!query.eof())
+        ret.insert(ret.end(), query.readValueNull());
+    return ret;
+}
+
+toQList toQuery::readQueryNull(toConnection &conn, const toSQL &sql,
+                               const QString &arg1, const QString &arg2,
+                               const QString &arg3, const QString &arg4,
+                               const QString &arg5, const QString &arg6,
+                               const QString &arg7, const QString &arg8,
+                               const QString &arg9)
+{
+    toBusy busy;
+    toQuery query(conn, sql, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
+    toQList ret;
+    while (!query.eof())
+        ret.insert(ret.end(), query.readValueNull());
+    return ret;
+}
+
+toQList toQuery::readQueryNull(toConnection &conn, const QString &sql,
+                               const QString &arg1, const QString &arg2,
+                               const QString &arg3, const QString &arg4,
+                               const QString &arg5, const QString &arg6,
+                               const QString &arg7, const QString &arg8,
+                               const QString &arg9)
+{
+    toBusy busy;
+    toQuery query(conn, sql, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
+    toQList ret;
+    while (!query.eof())
+        ret.insert(ret.end(), query.readValueNull());
+    return ret;
+}
+
+toQValue toQuery::readValue(void)
+{
+    toBusy busy;
+    if (Connection.Abort)
+        throw qApp->translate("toQuery", "Query aborted");
+    if (Mode == All)
+        eof();
+    return toNull(Query->readValue());
+}
+
+toQValue toQuery::readValueNull(void)
+{
+    toBusy busy;
+    if (Connection.Abort)
+        throw qApp->translate("toQuery", "Query aborted");
+    if (Mode == All)
+        eof();
+    return Query->readValue();
+}
+
+void toQuery::cancel(void)
+{
+    Query->cancel();
+}
+
+// toConnection implementation
+
+void toConnection::addConnection(void)
+{
+    toBusy busy;
+    toConnectionSub *sub = Connection->createConnection();
+    toLocker lock (Lock)
+        ;
+    Connections.insert(Connections.end(), sub);
+    toQList params;
+    for (std::list<QString>::iterator i = InitStrings.begin();i != InitStrings.end();i++)
+    {
+        try
+        {
+            Connection->execute(sub, (*i).utf8(), params);
+        }
+        TOCATCH
+    }
+}
+
+toConnection::toConnection(const QCString &provider,
+                           const QString &user, const QString &password,
+                           const QString &host, const QString &database,
+                           const std::set
+                               <QString> &options, bool cache)
+            : Provider(provider), User(user), Password(password), Host(host), Database(database), Options(options)
+{
+    BackgroundConnection = NULL;
+    BackgroundCount = 0;
+    Connection = toConnectionProvider::connection(Provider, this);
+    addConnection();
+    Version = Connection->version(mainConnection());
+    NeedCommit = Abort = false;
+    ReadingCache = false;
+    if (cache)
+    {
+        if (toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 1)
+            readObjects();
+    }
+    else
+    {
+        ReadingValues.up();
+        ReadingValues.up();
+    }
+}
+
+toConnection::toConnection(const toConnection &conn)
+        : Provider(conn.Provider),
+        User(conn.User),
+        Password(conn.Password),
+        Host(conn.Host),
+        Database(conn.Database),
+        Options(conn.Options)
+{
+    BackgroundConnection = NULL;
+    BackgroundCount = 0;
+    Connection = toConnectionProvider::connection(Provider, this);
+    addConnection();
+    Version = Connection->version(mainConnection());
+    ReadingValues.up();
+    ReadingValues.up();
+    ReadingCache = false;
+    NeedCommit = Abort = false;
+}
+
+std::list<QString> toConnection::running(void)
+{
+    toBusy busy;
+    toLocker lock (Lock)
+        ;
+    std::list<QString> ret;
+    toConnectionSub *sub = (*(Connections.begin()));
+    if (sub && sub->query())
+        ret.insert(ret.end(), sub->query()->sql());
+    if (BackgroundConnection && BackgroundConnection->query())
+        ret.insert(ret.end(), BackgroundConnection->query()->sql());
+    for (std::list<toConnectionSub *>::const_iterator i = Running.begin();i != Running.end();i++)
+    {
+        sub = *i;
+        if (sub && sub->query())
+            ret.insert(ret.end(), sub->query()->sql());
+    }
+    return ret;
+}
+
+void toConnection::cancelAll(void)
+{
+    toBusy busy;
+    toLocker lock (Lock)
+        ;
+    for (std::list<toConnectionSub *>::iterator i = Running.begin();i != Running.end();i++)
+        (*i)->cancel();
+}
+
+toConnection::~toConnection()
+{
+    toBusy busy;
+
+    {
+        toLocker lock (Lock)
+            ;
+        for_each(Widgets.begin(), Widgets.end(), DeleteObject());
+        {
+            for (std::list<toConnectionSub *>::iterator i = Running.begin();i != Running.end();i++)
+                try
+                {
+                    (*i)->cancel();
+                }
+                catch (...)
+                {}
+        }
+    }
+    Abort = true;
+    if (ReadingCache)
+    {
+        ReadingValues.down();
+        ReadingValues.down();
+    }
+    for (std::list<toConnectionSub *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        try
+        {
+            Connection->closeConnection(*i);
+        }
+        catch (...)
+        {}
+    }
+    delete Connection;
+}
+
+toConnectionSub *toConnection::mainConnection()
+{
+    if (Connection->handleMultipleQueries())
+    {
+        toLocker lock (Lock)
+            ;
+        return (*(Connections.begin()));
+    }
+    else
+    {
+        return longConnection();
+    }
+}
+
+toConnectionSub *toConnection::backgroundConnection()
+{
+    if (!Connection->handleMultipleQueries())
+        return longConnection();
+    if (toConfigurationSingle::Instance().globalConfig(CONF_BKGND_CONNECT, "").isEmpty())
+        return mainConnection();
+    Lock.lock();
+    if (!BackgroundConnection)
+    {
+        Lock.unlock();
+        toConnectionSub *tmp = longConnection();
+        Lock.lock();
+
+        BackgroundConnection = tmp;
+        BackgroundCount = 0;
+    }
+    BackgroundCount++;
+    Lock.unlock();
+    return BackgroundConnection;
+}
+
+toConnectionSub *toConnection::longConnection()
+{
+    Lock.lock();
+    bool multiple = Connection->handleMultipleQueries();
+    if ((multiple && Connections.size() == 1) ||
+            (!multiple && Connections.empty()))
+    {
+        Lock.unlock();
+        addConnection();
+    }
+    else
+        Lock.unlock();
+    toLocker lock (Lock)
+        ;
+    std::list<toConnectionSub *>::iterator i = Connections.begin();
+    if (multiple)
+        i++;
+    toConnectionSub *ret = (*i);
+    Connections.erase(i);
+    Running.insert(Running.end(), ret);
+    return ret;
+}
+
+void toConnection::freeConnection(toConnectionSub *sub)
+{
+    toLocker lock (Lock)
+        ;
+    if (sub == BackgroundConnection)
+    {
+        BackgroundCount--;
+        if (BackgroundCount > 0)
+            return ;
+        BackgroundConnection = NULL;
+    }
+    {
+        for (std::list<toConnectionSub *>::iterator i = Running.begin();i != Running.end();i++)
+        {
+            if (*i == sub)
+            {
+                Running.erase(i);
+                break;
+            }
+        }
+    }
+    {
+        for (std::list<toConnectionSub *>::iterator i = Connections.begin();i != Connections.end();i++)
+        {
+            if (*i == sub)
+                return ;
+        }
+    }
+    Connections.insert(Connections.end(), sub);
+}
+
+void toConnection::commit(void)
+{
+    toBusy busy;
+    toLocker lock (Lock)
+        ;
+    for (std::list<toConnectionSub *>::iterator i = Connections.begin();i != Connections.end();i++)
+        Connection->commit(*i);
+    while (Connections.size() > 2)
+    {
+        std::list<toConnectionSub *>::iterator i = Connections.begin();
+        i++;
+        delete (*i);
+        Connections.erase(i);
+    }
+    setNeedCommit(false);
+}
+
+void toConnection::rollback(void)
+{
+    toBusy busy;
+    toLocker lock (Lock)
+        ;
+    for (std::list<toConnectionSub *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        Connection->rollback(*i);
+    }
+    while (Connections.size() > 2)
+    {
+        std::list<toConnectionSub *>::iterator i = Connections.begin();
+        i++;
+        delete (*i);
+        Connections.erase(i);
+    }
+    setNeedCommit(false);
+}
+
+void toConnection::delWidget(QObject *widget)
+{
+    for (std::list<QObject *>::iterator i = Widgets.begin();i != Widgets.end();i++)
+    {
+        if ((*i) == widget)
+        {
+            Widgets.erase(i);
+            break;
+        }
+    }
+}
+
+bool toConnection::closeWidgets(void)
+{
+    for (std::list<QObject *>::iterator i = Widgets.begin();i != Widgets.end();i = Widgets.begin())
+    {
+        if ((*i)->inherits("QWidget"))
+        {
+            QWidget * widget = static_cast<QWidget *>(*i);
+            if (!widget->close(true))
+                return false;
+        }
+        else
+            delete *i;
+        std::list<QObject *>::iterator nextI = Widgets.begin();
+        if (i == nextI)
+            throw qApp->translate("toConnection", "All tool widgets need to have autodelete flag set");
+    }
+    return true;
+}
+
+QString toConnection::description(bool version) const
+{
+    QString ret(User);
+    ret += QString::fromLatin1("@");
+    ret += Database;
+    if (!Host.isEmpty() && Host != "SQL*Net")
+    {
+        ret += QString::fromLatin1(".");
+        ret += Host;
+    }
+
+    if (version)
+    {
+        if (!Version.isEmpty())
+        {
+            ret += QString::fromLatin1(" [");
+            ret += QString::fromLatin1(Version);
+            ret += QString::fromLatin1("]");
+        }
+    }
+    return ret;
+}
+
+void toConnection::addInit(const QString &sql)
+{
+    delInit(sql);
+    InitStrings.insert(InitStrings.end(), sql);
+}
+
+void toConnection::delInit(const QString &sql)
+{
+    std::list<QString>::iterator i = InitStrings.begin();
+    while (i != InitStrings.end())
+    {
+        if ((*i) == sql)
+            i = InitStrings.erase(i);
+        else
+            i++;
+    }
+}
+
+const std::list<QString> toConnection::initStrings() const
+{
+    return InitStrings;
+}
+
+void toConnection::parse(const QString &sql)
+{
+    toBusy busy;
+    Connection->parse(mainConnection(), sql.utf8());
+}
+
+void toConnection::parse(const toSQL &sql)
+{
+    toBusy busy;
+    Connection->parse(mainConnection(), toSQL::sql(sql, *this));
+}
+
+void toConnection::execute(const toSQL &sql, toQList &params)
+{
+    toBusy busy;
+    Connection->execute(mainConnection(), toSQL::sql(sql, *this), params);
+}
+
+void toConnection::execute(const QString &sql, toQList &params)
+{
+    toBusy busy;
+    Connection->execute(mainConnection(), sql.utf8(), params);
+}
+
+void toConnection::execute(const toSQL &sql,
+                           const QString &arg1, const QString &arg2,
+                           const QString &arg3, const QString &arg4,
+                           const QString &arg5, const QString &arg6,
+                           const QString &arg7, const QString &arg8,
+                           const QString &arg9)
+{
+    int numArgs;
+    if (!arg9.isNull())
+        numArgs = 9;
+    else if (!arg8.isNull())
+        numArgs = 8;
+    else if (!arg7.isNull())
+        numArgs = 7;
+    else if (!arg6.isNull())
+        numArgs = 6;
+    else if (!arg5.isNull())
+        numArgs = 5;
+    else if (!arg4.isNull())
+        numArgs = 4;
+    else if (!arg3.isNull())
+        numArgs = 3;
+    else if (!arg2.isNull())
+        numArgs = 2;
+    else if (!arg1.isNull())
+        numArgs = 1;
+    else
+        numArgs = 0;
+
+    toQList args;
+    if (numArgs > 0)
+        args.insert(args.end(), arg1);
+    if (numArgs > 1)
+        args.insert(args.end(), arg2);
+    if (numArgs > 2)
+        args.insert(args.end(), arg3);
+    if (numArgs > 3)
+        args.insert(args.end(), arg4);
+    if (numArgs > 4)
+        args.insert(args.end(), arg5);
+    if (numArgs > 5)
+        args.insert(args.end(), arg6);
+    if (numArgs > 6)
+        args.insert(args.end(), arg7);
+    if (numArgs > 7)
+        args.insert(args.end(), arg8);
+    if (numArgs > 8)
+        args.insert(args.end(), arg9);
+
+    toBusy busy;
+    Connection->execute(mainConnection(), toSQL::sql(sql, *this), args);
+}
+
+void toConnection::execute(const QString &sql,
+                           const QString &arg1, const QString &arg2,
+                           const QString &arg3, const QString &arg4,
+                           const QString &arg5, const QString &arg6,
+                           const QString &arg7, const QString &arg8,
+                           const QString &arg9)
+{
+    int numArgs;
+    if (!arg9.isNull())
+        numArgs = 9;
+    else if (!arg8.isNull())
+        numArgs = 8;
+    else if (!arg7.isNull())
+        numArgs = 7;
+    else if (!arg6.isNull())
+        numArgs = 6;
+    else if (!arg5.isNull())
+        numArgs = 5;
+    else if (!arg4.isNull())
+        numArgs = 4;
+    else if (!arg3.isNull())
+        numArgs = 3;
+    else if (!arg2.isNull())
+        numArgs = 2;
+    else if (!arg1.isNull())
+        numArgs = 1;
+    else
+        numArgs = 0;
+
+    toQList args;
+    if (numArgs > 0)
+        args.insert(args.end(), arg1);
+    if (numArgs > 1)
+        args.insert(args.end(), arg2);
+    if (numArgs > 2)
+        args.insert(args.end(), arg3);
+    if (numArgs > 3)
+        args.insert(args.end(), arg4);
+    if (numArgs > 4)
+        args.insert(args.end(), arg5);
+    if (numArgs > 5)
+        args.insert(args.end(), arg6);
+    if (numArgs > 6)
+        args.insert(args.end(), arg7);
+    if (numArgs > 7)
+        args.insert(args.end(), arg8);
+    if (numArgs > 8)
+        args.insert(args.end(), arg9);
+
+    toBusy busy;
+    Connection->execute(mainConnection(), sql.utf8(), args);
+}
+
+void toConnection::allExecute(const toSQL &sql, toQList &params)
+{
+    toBusy busy;
+    toLocker lock (Lock)
+        ;
+    for (std::list<toConnectionSub *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        try
+        {
+            Connection->execute(*i, toSQL::sql(sql, *this), params);
+        }
+        TOCATCH
+    }
+}
+
+void toConnection::allExecute(const QString &sql, toQList &params)
+{
+    toBusy busy;
+    toLocker lock (Lock)
+        ;
+    for (std::list<toConnectionSub *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        try
+        {
+            Connection->execute(*i, sql.utf8(), params);
+        }
+        TOCATCH
+    }
+}
+
+void toConnection::allExecute(const toSQL &sql,
+                              const QString &arg1, const QString &arg2,
+                              const QString &arg3, const QString &arg4,
+                              const QString &arg5, const QString &arg6,
+                              const QString &arg7, const QString &arg8,
+                              const QString &arg9)
+{
+    int numArgs;
+    if (!arg9.isNull())
+        numArgs = 9;
+    else if (!arg8.isNull())
+        numArgs = 8;
+    else if (!arg7.isNull())
+        numArgs = 7;
+    else if (!arg6.isNull())
+        numArgs = 6;
+    else if (!arg5.isNull())
+        numArgs = 5;
+    else if (!arg4.isNull())
+        numArgs = 4;
+    else if (!arg3.isNull())
+        numArgs = 3;
+    else if (!arg2.isNull())
+        numArgs = 2;
+    else if (!arg1.isNull())
+        numArgs = 1;
+    else
+        numArgs = 0;
+
+    toQList args;
+    if (numArgs > 0)
+        args.insert(args.end(), arg1);
+    if (numArgs > 1)
+        args.insert(args.end(), arg2);
+    if (numArgs > 2)
+        args.insert(args.end(), arg3);
+    if (numArgs > 3)
+        args.insert(args.end(), arg4);
+    if (numArgs > 4)
+        args.insert(args.end(), arg5);
+    if (numArgs > 5)
+        args.insert(args.end(), arg6);
+    if (numArgs > 6)
+        args.insert(args.end(), arg7);
+    if (numArgs > 7)
+        args.insert(args.end(), arg8);
+    if (numArgs > 8)
+        args.insert(args.end(), arg9);
+
+    toBusy busy;
+    toLocker lock (Lock)
+        ;
+    for (std::list<toConnectionSub *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        try
+        {
+            Connection->execute(*i, toSQL::sql(sql, *this), args);
+        }
+        TOCATCH
+    }
+}
+
+void toConnection::allExecute(const QString &sql,
+                              const QString &arg1, const QString &arg2,
+                              const QString &arg3, const QString &arg4,
+                              const QString &arg5, const QString &arg6,
+                              const QString &arg7, const QString &arg8,
+                              const QString &arg9)
+{
+    int numArgs;
+    if (!arg9.isNull())
+        numArgs = 9;
+    else if (!arg8.isNull())
+        numArgs = 8;
+    else if (!arg7.isNull())
+        numArgs = 7;
+    else if (!arg6.isNull())
+        numArgs = 6;
+    else if (!arg5.isNull())
+        numArgs = 5;
+    else if (!arg4.isNull())
+        numArgs = 4;
+    else if (!arg3.isNull())
+        numArgs = 3;
+    else if (!arg2.isNull())
+        numArgs = 2;
+    else if (!arg1.isNull())
+        numArgs = 1;
+    else
+        numArgs = 0;
+
+    toQList args;
+    if (numArgs > 0)
+        args.insert(args.end(), arg1);
+    if (numArgs > 1)
+        args.insert(args.end(), arg2);
+    if (numArgs > 2)
+        args.insert(args.end(), arg3);
+    if (numArgs > 3)
+        args.insert(args.end(), arg4);
+    if (numArgs > 4)
+        args.insert(args.end(), arg5);
+    if (numArgs > 5)
+        args.insert(args.end(), arg6);
+    if (numArgs > 6)
+        args.insert(args.end(), arg7);
+    if (numArgs > 7)
+        args.insert(args.end(), arg8);
+    if (numArgs > 8)
+        args.insert(args.end(), arg9);
+
+    toBusy busy;
+    toLocker lock (Lock)
+        ;
+    for (std::list<toConnectionSub *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        try
+        {
+            Connection->execute(*i, sql.utf8(), args);
+        }
+        TOCATCH
+    }
+}
+
+const QCString &toConnection::provider(void) const
+{
+    return Provider;
+}
+
+QString toConnection::cacheDir()
+{
+    QString home = QDir::homeDirPath();
+    QString dirname = toConfigurationSingle::Instance().globalConfig(CONF_CACHE_DIR, "");
+
+    if (dirname.isEmpty())
+    {
+#ifdef WIN32
+        if (getenv("TEMP"))
+            dirname = QString(getenv("TEMP"));
+        else
+#endif
+            dirname = QString(home);
+        dirname += "/.tora_cache";
+    }
+    return dirname;
+}
+
+QString toConnection::cacheFile()
+{
+    QString dbname (description(false).stripWhiteSpace());
+
+    return (cacheDir() + "/" + dbname).simplifyWhiteSpace();
+}
+
+bool toConnection::loadDiskCache()
+{
+    if (toConfigurationSingle::Instance().globalConfig(CONF_CACHE_DISK, DEFAULT_CACHE_DISK).isEmpty())
+        return false;
+
+    toConnection::objectName *cur = 0;
+    int objCounter = 0;
+    int synCounter = 0;
+
+    QString filename = cacheFile();
+
+    QFile file(filename);
+
+    if (!QFile::exists(filename))
+        return false;
+
+    QFileInfo fi(file);
+    QDateTime today;
+    if (fi.lastModified().addDays(toConfigurationSingle::Instance().globalConfig(CONF_CACHE_TIMEOUT, DEFAULT_CACHE_TIMEOUT).toInt()) < today)
+        return false;
+
+    /** read in all data
+     */
+
+    if (!file.open(IO_ReadOnly))
+        return false;
+
+    QString data = file.readAll();
+
+    /** build cache lists
+     */
+
+    QStringList records = QStringList::split("\x1D", data, true);
+    for ( QStringList::Iterator i = records.begin(); i != records.end(); i++)
+    {
+        objCounter++;
+        QStringList record = QStringList::split("\x1E", (*i), true);
+        QStringList::Iterator rec = record.begin();
+        cur = new objectName;
+        (*cur).Owner = (*rec);
+        rec++;
+        (*cur).Name = (*rec);
+        rec++;
+        (*cur).Type = (*rec);
+        rec++;
+        (*cur).Comment = (*rec);
+        rec++;
+        QStringList slist = QStringList::split("\x1F", (*rec), false);
+        for (QStringList::Iterator s = slist.begin(); s != slist.end(); s++)
+        {
+            SynonymMap[(*s)] = (*cur);
+            (*cur).Synonyms.insert((*cur).Synonyms.end(), (*s));
+            synCounter++;
+        }
+        ObjectNames.insert(ObjectNames.end(), (*cur));
+        delete cur;
+        cur = 0;
+    }
+    return true;
+}
+
+void toConnection::writeDiskCache()
+{
+    QString text;
+    long objCounter = 0;
+    long synCounter = 0;
+
+    if (toConfigurationSingle::Instance().globalConfig(CONF_CACHE_DISK, DEFAULT_CACHE_DISK).isEmpty())
+        return ;
+
+
+    QString filename(cacheFile());
+
+    /** check pathnames and create
+     */
+
+    QString dirname(cacheDir());
+    QDir dir;
+    dir.setPath(dirname);
+
+    if (!dir.exists(dirname))
+        dir.mkdir(dirname);
+
+
+    /** build record to write out
+     */
+
+    QStringList record;
+    QStringList records;
+    QStringList recordSynonym;
+    for (std::list<objectName>::iterator i = ObjectNames.begin();i != ObjectNames.end();i++)
+    {
+        record.clear();
+        record.append((*i).Owner);
+        record.append((*i).Name);
+        record.append((*i).Type);
+        record.append((*i).Comment);
+        for (std::list<QString>::iterator s = (*i).Synonyms.begin();s != (*i).Synonyms.end();s++)
+        {
+            recordSynonym.append((*s));
+            synCounter++;
+        }
+        record.append(recordSynonym.join("\x1F"));
+        recordSynonym.clear();
+        objCounter++;
+        records.append(record.join("\x1E"));
+    }
+    /** open file
+     */
+    QFile file(filename);
+    file.open( IO_ReadWrite | IO_Truncate );
+    QTextStream t (&file);
+    t << records.join("\x1D");
+    file.flush();
+    file.close();
+}
+
+void toConnection::cacheObjects::run()
+{
+    bool diskloaded = false;
+    try
+    {
+        diskloaded = Connection.loadDiskCache();
+        if (!diskloaded)
+        {
+            Connection.ObjectNames = Connection.Connection->objectNames();
+        }
+        Connection.ObjectNames.sort();
+        Connection.ReadingValues.up();
+        if (!diskloaded)
+        {
+            Connection.SynonymMap = Connection.Connection->synonymMap(Connection.ObjectNames);
+            Connection.writeDiskCache();
+        }
+    }
+    catch (...)
+    {
+        if (Connection.ReadingValues.getValue() == 0)
+            Connection.ReadingValues.up();
+    }
+    Connection.ReadingValues.up();
+}
+
+
+void toConnection::readObjects(void)
+{
+    if (toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 3)
+    {
+        ReadingCache = false;
+        return ;
+    }
+
+    if (!ReadingCache)
+    {
+        ReadingCache = true;
+        try
+        {
+            (new toThread(new cacheObjects(*this)))->start();
+        }
+        catch (...)
+        {
+            ReadingCache = false;
+        }
+    }
+}
+
+void toConnection::rereadCache(void)
+{
+
+    if (toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 3)
+    {
+        ColumnCache.clear();
+        return ;
+    }
+
+    if (ReadingValues.getValue() < 2 && ReadingCache)
+    {
+        toStatusMessage(qApp->translate("toConnection",
+                                        "Not done caching objects, can not clear unread cache"));
+        return ;
+    }
+
+
+    ReadingCache = false;
+    while (ReadingValues.getValue() > 0)
+        ReadingValues.down();
+
+    ObjectNames.clear();
+    ColumnCache.clear();
+    SynonymMap.clear();
+
+    /** delete cache file to force reload
+     */
+
+    QString filename(cacheFile());
+
+    if (QFile::exists(filename))
+        QFile::remove
+            (filename);
+
+    readObjects();
+}
+
+QString toConnection::quote(const QString &name)
+{
+    return Connection->quote(name);
+}
+
+QString toConnection::unQuote(const QString &name)
+{
+    return Connection->unQuote(name);
+}
+
+bool toConnection::cacheAvailable(bool synonyms, bool block, bool need)
+{
+    if (toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 3)
+        return true;
+
+    if (!ReadingCache)
+    {
+        if (!need)
+            return true;
+        if (toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt() == 2 && !block)
+            return true;
+        readObjects();
+        toMainWidget()->checkCaching();
+    }
+    if (ReadingValues.getValue() == 0 || (ReadingValues.getValue() == 1 && synonyms == true))
+    {
+        if (block)
+        {
+            toBusy busy;
+            if (toThread::mainThread())
+            {
+                QProgressDialog waiting(qApp->translate("toConnection",
+                                                        "Waiting for object caching to be completed.\n"
+                                                        "Canceling this dialog will probably leave some list of\n"
+                                                        "database objects empty."),
+                                        qApp->translate("toConnection", "Cancel"),
+                                        10,
+                                        toMainWidget(),
+                                        "progress",
+                                        true);
+                waiting.setCaption(qApp->translate("toConnection", "Waiting for object cache"));
+                int num = 1;
+
+                int waitVal = (synonyms ? 2 : 1);
+                do
+                {
+                    qApp->processEvents();
+                    toThread::msleep(100);
+                    waiting.setProgress((++num) % 10);
+                    if (waiting.wasCancelled())
+                        return false;
+                }
+                while (ReadingValues.getValue() < waitVal);
+            }
+
+            ReadingValues.down();
+            if (synonyms)
+            {
+                ReadingValues.down();
+                ReadingValues.up();
+            }
+            ReadingValues.up();
+        }
+        else
+            return false;
+    }
+    return true;
+}
+
+std::list<toConnection::objectName> &toConnection::objects(bool block)
+{
+    if (!cacheAvailable(false, block))
+    {
+        toStatusMessage(qApp->translate("toConnection", "Not done caching objects"), false, false);
+        static std::list<objectName> ret;
+        return ret;
+    }
+
+    return ObjectNames;
+}
+
+void toConnection::addIfNotExists(toConnection::objectName &obj)
+{
+    if (!cacheAvailable(true, false))
+    {
+        toStatusMessage(qApp->translate("toConnection", "Not done caching objects"), false, false);
+        return ;
+    }
+    std::list<toConnection::objectName>::iterator i = ObjectNames.begin();
+    while (i != ObjectNames.end() && (*i) < obj)
+        i++;
+    if (i != ObjectNames.end() && *i == obj) // Already exists, don't add
+        return ;
+    ObjectNames.insert(i, obj);
+}
+
+std::map<QString, toConnection::objectName> &toConnection::synonyms(bool block)
+{
+    if (!cacheAvailable(true, block))
+    {
+        toStatusMessage(qApp->translate("toConnection", "Not done caching objects"), false, false);
+        static std::map<QString, objectName> ret;
+        return ret;
+    }
+
+    return SynonymMap;
+}
+
+const toConnection::objectName &toConnection::realName(const QString &object,
+        QString &synonym,
+        bool block)
+{
+    if (!cacheAvailable(true, block))
+        throw qApp->translate("toConnection", "Not done caching objects");
+
+    QString name;
+    QString owner;
+
+    QString q = QString::fromLatin1("\"");
+    QString c = QString::fromLatin1(".");
+
+    bool quote = false;
+    for (unsigned int pos = 0;pos < object.length();pos++)
+    {
+        if (object.at(pos) == q)
+        {
+            quote = !quote;
+        }
+        else
+        {
+            if (!quote && object.at(pos) == c)
+            {
+                owner = name;
+                name = QString::null;
+            }
+            else
+                name += object.at(pos);
+        }
+    }
+
+    QString uo = owner.upper();
+    QString un = name.upper();
+
+    synonym = QString::null;
+    for (std::list<objectName>::iterator i = ObjectNames.begin();i != ObjectNames.end();i++)
+    {
+        if (owner.isEmpty())
+        {
+            if (((*i).Name == un || (*i).Name == name) &&
+                    ((*i).Owner == user().upper() || (*i).Owner == database()))
+                return *i;
+        }
+        else if (((*i).Name == un || (*i).Name == name) &&
+                 ((*i).Owner == uo || (*i).Owner == owner))
+            return *i;
+    }
+    if (owner.isEmpty())
+    {
+        std::map<QString, objectName>::iterator i = SynonymMap.find(name);
+        if (i == SynonymMap.end() && un != name)
+        {
+            i = SynonymMap.find(un);
+            synonym = un;
+        }
+        else
+            synonym = name;
+        if (i != SynonymMap.end())
+        {
+            return (*i).second;
+        }
+    }
+    throw qApp->translate("toConnection", "Object %1 not available for %2").arg(object).arg(user());
+}
+
+const toConnection::objectName &toConnection::realName(const QString &object, bool block)
+{
+    QString dummy;
+    return realName(object, dummy, block);
+}
+
+toQDescList &toConnection::columns(const objectName &object, bool nocache)
+{
+    std::map<objectName, toQDescList>::iterator i = ColumnCache.find(object);
+    if (i == ColumnCache.end() || nocache)
+    {
+        ColumnCache[object] = Connection->columnDesc(object);
+    }
+
+    return ColumnCache[object];
+}
+
+bool toConnection::objectName::operator < (const objectName &nam) const
+{
+    if (Owner < nam.Owner || (Owner.isNull() && !nam.Owner.isNull()))
+        return true;
+    if (Owner > nam.Owner || (!Owner.isNull() && nam.Owner.isNull()))
+        return false;
+    if (Name < nam.Name || (Name.isNull() && !nam.Name.isNull()))
+        return true;
+    if (Name > nam.Name || (!Name.isNull() && nam.Name.isNull()))
+        return false;
+    if (Type < nam.Type)
+        return true;
+    return false;
+}
+
+bool toConnection::objectName::operator == (const objectName &nam) const
+{
+    return Owner == nam.Owner && Name == nam.Name && Type == nam.Type;
+}
+
+toSyntaxAnalyzer &toConnection::connectionImpl::analyzer()
+{
+    return toSyntaxAnalyzer::defaultAnalyzer();
+}
+
+toSyntaxAnalyzer &toConnection::analyzer()
+{
+    return Connection->analyzer();
+}
+
+std::list<toConnection::objectName> toConnection::connectionImpl::objectNames(void)
+{
+    std::list<toConnection::objectName> ret;
+    return ret;
+}
+
+std::map<QString, toConnection::objectName> toConnection::connectionImpl::synonymMap(std::list<toConnection::objectName> &)
+{
+    std::map<QString, toConnection::objectName> ret;
+    return ret;
+}
+
+toQDescList toConnection::connectionImpl::columnDesc(const objectName &)
+{
+    toQDescList ret;
+    return ret;
+}
+
+void toConnection::connectionImpl::parse(toConnectionSub *, const QCString &)
+{
+    throw qApp->translate("toConnection", "Parse only not implemented for this type of connection");
+}

Added: kde-extras/tora/branches/upstream/current/src/toconnection.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toconnection.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toconnection.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1125 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOCONNECTION_H
+#define TOCONNECTION_H
+
+#include "config.h"
+#include "toqvalue.h"
+#include "tothread.h"
+
+#include <list>
+#include <map>
+#include <set>
+
+#include <qstring.h>
+
+class QWidget;
+class toConnection;
+class toConnectionProvider;
+class toSQL;
+class toQuery;
+class toSyntaxAnalyzer;
+
+/** This class is an abstract definition of an actual connection to a database.
+ * Each @ref toConnection object can have one or more actual connections to the
+ * database depending on long running queries. Normally you will never need to
+ * bother with this class if you aren't creating a new database provider
+ * (@ref toConnectionProvider).
+ */
+
+class toConnectionSub
+{
+    toQuery *Query;
+public:
+    /** Create connection to database.
+     */
+    toConnectionSub()
+    {
+        Query = NULL;
+    }
+    /** Close connection.
+     */
+    virtual ~toConnectionSub()
+    { }
+    /** Query current running on connection or NULL.
+     */
+    toQuery *query()
+    {
+        return Query;
+    }
+    /** Set query currently running on connection. NULL means none.
+     */
+    void setQuery(toQuery *query)
+    {
+        Query = query;
+    }
+    /** Cancel anything running on this sub.
+     */
+    virtual void cancel(void)
+    { }
+}
+;
+
+/** This class is used to perform a query on a database connection.
+ */
+
+class toQuery
+{
+public:
+    /** Represent different modes to run a query in.
+     */
+    enum queryMode {
+        /** Run the query normally on the main connection of the @ref toConnection object.
+         */
+        Normal,
+        /** Run the query normally on the main backgrround connection of the
+         * @ref toConnection object. This can be the same as the main connection depending
+         * on settings.
+         */
+        Background,
+        /** Run the query in a separate connection for long running queries.
+         */
+        Long,
+        /** Run the query on all non occupied connections of the @ref toConnection object.
+         */
+        All
+    };
+
+    /** This structure is used to describe the resultset of a query.
+     */
+
+    struct queryDescribe
+    {
+        /** Column name
+         */
+        QString Name;
+        /** Datatype of string.
+         */
+        QString Datatype;
+        /** If column can contain null values.
+         */
+        bool Null;
+        /** Preferred alignment of this kind of value.
+         */
+        bool AlignRight;
+        /** Comment on column (Only filled out in column cache.
+         */
+        QString Comment;
+    };
+    /** Abstract parent of implementations of a query for a database provider
+     * (See @ref toConnection::connectionImpl and @ref toConnectionProvider)
+     */
+    class queryImpl
+    {
+        toQuery *Parent;
+    public:
+        /** Get the parent query object. All the parameters of the query must be read from here.
+         * nothing is passed to the functions.
+         */
+        toQuery *query()
+        {
+            return Parent;
+        }
+
+        /** Create a query implementation. The constructor must not perform any actions with the
+         * database that could block for a noticable time (Like execute or parse a query). The
+         * data for the query may not be available when this object created.
+         * @param query Parent query object.
+         */
+        queryImpl(toQuery *query)
+                : Parent(query)
+        { }
+        /** Destroy query implementation.
+         */
+        virtual ~queryImpl()
+        { }
+        /** Execute a query. Parameters can be gotten from the @ref toQuery object.
+         */
+        virtual void execute(void) = 0;
+        /** Read the next value from the stream.
+         * @return The value read from the query.
+         */
+        virtual toQValue readValue(void) = 0;
+        /** Check if the end of the query has been reached.
+         * @return True if all values have been read.
+         */
+        virtual bool eof(void) = 0;
+        /** Get the number of rows processed in the last executed query.
+         */
+        virtual int rowsProcessed(void) = 0;
+        /** Describe the currently running query.
+         * @return A list of column descriptions of the query.
+         */
+        virtual std::list<queryDescribe> describe(void) = 0;
+        /** Get number of columns in the resultset.
+         * @return Column number.
+         */
+        virtual int columns(void) = 0;
+        /** Cancel the current execution of a query. This will usually be called from another
+         * thread than is executing the query.
+         */
+        virtual void cancel(void) = 0;
+    };
+
+private:
+    toConnection &Connection;
+    toConnectionSub *ConnectionSub;
+    std::list<toQValue> Params;
+    QCString SQL;
+    queryMode Mode;
+
+    queryImpl *Query;
+    toQuery(const toQuery &);
+public:
+    /** Create a normal query.
+     * @param conn Connection to create query on.
+     * @param sql SQL to run.
+     * @param params Parameters to pass to query.
+     */
+    toQuery(toConnection &conn, const toSQL &sql, const std::list<toQValue> &params);
+    /** Create a normal query.
+     * @param conn Connection to create query on.
+     * @param sql SQL to run.
+     * @param params Parameters to pass to query.
+     */
+    toQuery(toConnection &conn, const QString &sql, const std::list<toQValue> &params);
+    /** Create a normal query.
+     * @param conn Connection to create query on.
+     * @param sql SQL to run.
+     * @param arg1 Arguments to pass to query.
+     */
+    toQuery(toConnection &conn, const toSQL &sql,
+            const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+            const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+            const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+            const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+            const QString &arg9 = QString::null);
+    /** Create a normal query.
+     * @param conn Connection to create query on.
+     * @param sql SQL to run.
+     * @param arg1 Arguments to pass to query.
+     */
+    toQuery(toConnection &conn, const QString &sql,
+            const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+            const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+            const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+            const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+            const QString &arg9 = QString::null);
+
+    /** Create a query.
+     * @param conn Connection to create query on.
+     * @param mode Mode to run query in.
+     * @param sql SQL to run.
+     * @param params Arguments to pass to query.
+     */
+    toQuery(toConnection &conn, queryMode mode, const toSQL &sql, const std::list<toQValue> &params);
+    /** Create a query.
+     * @param conn Connection to create query on.
+     * @param mode Mode to run query in.
+     * @param sql SQL to run.
+     * @param params Arguments to pass to query.
+     */
+    toQuery(toConnection &conn, queryMode mode, const QString &sql, const std::list<toQValue> &params);
+    /** Create a query. Don't runn any SQL using it yet. Observe though that the @ref
+     * toConnectionSub object is assigned here so you know that all queries run using this
+     * query object will run on the same actual connection to the database (Unless mode is All off
+     * course).
+     * @param conn Connection to create query for.
+     * @param mode Mode to execute queries in.
+     */
+    toQuery(toConnection &conn, queryMode mode = Normal);
+    /** Destroy query.
+     */
+    virtual ~toQuery();
+
+    /** Execute an SQL statement using this query.
+     * @param sql SQL to run.
+     * @param params Parameters to pass to query.
+     */
+    void execute(const toSQL &sql, const std::list<toQValue> &params);
+    /** Execute an SQL statement using this query.
+     * @param sql SQL to run.
+     * @param params Parameters to pass to query.
+     */
+    void execute(const QString &sql, const std::list<toQValue> &params);
+
+    /** Connection object of this object.
+     */
+    toConnection &connection(void)
+    {
+        return Connection;
+    }
+    /** Actual database connection that this query is currently using.
+     */
+    toConnectionSub *connectionSub(void)
+    {
+        return ConnectionSub;
+    }
+    /** Parameters of the current query.
+     */
+    std::list<toQValue> &params(void)
+    {
+        return Params;
+    }
+    /** SQL to run. Observe that this string is in UTF8 format.
+     */
+    QCString sql(void)
+    {
+        return SQL;
+    }
+    /** Get the mode this query is executed in.
+     */
+    toQuery::queryMode mode(void) const
+    {
+        return Mode;
+    }
+
+    /** Read a value from the query. Convert the value NULL to the string {null}.
+     * @return Value read.
+     */
+    toQValue readValue(void);
+    /** Read a value from the query. Nulls are returned as empty @ref toQValue.
+     * @return Value read.
+     */
+    toQValue readValueNull(void);
+    /** Check if end of query is reached.
+     * @return True if end of query is reached.
+     */
+    bool eof(void);
+
+    /** Get the number of rows processed by the query.
+     */
+    int rowsProcessed(void)
+    {
+        return Query->rowsProcessed();
+    }
+    /** Get a list of descriptions for the columns. This function is relatively slow.
+     */
+    std::list<queryDescribe> describe(void)
+    {
+        return Query->describe();
+    }
+    /** Get the number of columns in the resultset of the query.
+     */
+    int columns(void)
+    {
+        return Query->columns();
+    }
+
+    /** Execute a query and return all the values returned by it.
+     * @param conn Connection to run query on.
+     * @param sql SQL to run.
+     * @param params Parameters to pass to query.
+     * @return A list of @ref toQValues:s read from the query.
+     */
+    static std::list<toQValue> readQuery(toConnection &conn,
+                                         const toSQL &sql,
+                                         std::list<toQValue> &params);
+    /** Execute a query and return all the values returned by it.
+     * @param conn Connection to run query on.
+     * @param sql SQL to run.
+     * @param params Parameters to pass to query.
+     * @return A list of @ref toQValues:s read from the query.
+     */
+    static std::list<toQValue> readQuery(toConnection &conn,
+                                         const QString &sql,
+                                         std::list<toQValue> &params);
+    /** Execute a query and return all the values returned by it.
+     * @param conn Connection to run query on.
+     * @param sql SQL to run.
+     * @param arg1 Parameters to pass to query.
+     * @return A list of @ref toQValues:s read from the query.
+     */
+    static std::list<toQValue> readQuery(toConnection &conn, const toSQL &sql,
+                                         const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+                                         const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+                                         const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+                                         const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+                                         const QString &arg9 = QString::null);
+    /** Execute a query and return all the values returned by it.
+     * @param conn Connection to run query on.
+     * @param sql SQL to run.
+     * @param arg1 Parameters to pass to query.
+     * @return A list of @ref toQValues:s read from the query.
+     */
+    static std::list<toQValue> readQuery(toConnection &conn, const QString &sql,
+                                         const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+                                         const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+                                         const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+                                         const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+                                         const QString &arg9 = QString::null);
+    /** Execute a query and return all the values returned by it.
+     * @param conn Connection to run query on.
+     * @param sql SQL to run.
+     * @param params Parameters to pass to query.
+     * @return A list of @ref toQValues:s read from the query.
+     */
+    static std::list<toQValue> readQueryNull(toConnection &conn,
+            const toSQL &sql,
+            std::list<toQValue> &params);
+    /** Execute a query and return all the values returned by it.
+     * @param conn Connection to run query on.
+     * @param sql SQL to run.
+     * @param params Parameters to pass to query.
+     * @return A list of @ref toQValues:s read from the query.
+     */
+    static std::list<toQValue> readQueryNull(toConnection &conn,
+            const QString &sql,
+            std::list<toQValue> &params);
+    /** Execute a query and return all the values returned by it.
+     * @param conn Connection to run query on.
+     * @param sql SQL to run.
+     * @param arg1 Parameters to pass to query.
+     * @return A list of @ref toQValues:s read from the query.
+     */
+    static std::list<toQValue> readQueryNull(toConnection &conn, const toSQL &sql,
+            const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+            const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+            const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+            const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+            const QString &arg9 = QString::null);
+    /** Execute a query and return all the values returned by it.
+     * @param conn Connection to run query on.
+     * @param sql SQL to run.
+     * @param arg1 Parameters to pass to query.
+     * @return A list of @ref toQValues:s read from the query.
+     */
+    static std::list<toQValue> readQueryNull(toConnection &conn, const QString &sql,
+            const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+            const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+            const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+            const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+            const QString &arg9 = QString::null);
+    /** Cancel the current execution of a query.
+     */
+    void cancel(void);
+};
+
+/** A short representation of a @ref toQuery::queryDescribe
+ */
+typedef toQuery::queryDescribe toQDescribe;
+/** A short representation of list<toQuery::queryDescribe>
+ */
+typedef std::list<toQDescribe> toQDescList;
+
+/** Represent a database connection in TOra. Observe that this can mean several actual
+ * connections to the database as queries that ae expected to run a long time are sometimes
+ * executed in their own connection to make sure the interface doesn't lock up for a long time.
+ */
+class toConnection
+{
+    QCString Provider;
+    QString User;
+    QString Password;
+    QString Host;
+    QString Database;
+    QCString Version;
+    std::list<QObject *> Widgets;
+    std::list<QString> InitStrings;
+    std::set
+        <QString> Options;
+    toLock Lock;
+    std::list<toConnectionSub *> Connections;
+    std::list<toConnectionSub *> Running;
+    int BackgroundCount;
+    toConnectionSub *BackgroundConnection;
+    bool NeedCommit;
+
+public:
+
+    /** Class that could be used to throw exceptions in connection errors. Must use if you
+     * want to indicate error offset.
+     */
+
+class exception : public QString
+    {
+        int Offset;
+    public:
+        /** Create an exception with a string description.
+         */
+        exception(const QString &str, int offset = -1)
+                : QString(str)
+        {
+            Offset = offset;
+        }
+        /** Get the offset of the error of the current statement.
+         */
+        int offset(void) const
+        {
+            return Offset;
+        }
+        /** Set the offset of the error of the error.
+         */
+        void setOffset(int offset)
+        {
+            Offset = offset;
+        }
+    };
+
+    /** Contain information about a tablename.
+     */
+    struct objectName
+    {
+        /** The object name
+         */
+        QString Name;
+        /** The schema that owns it
+         */
+        QString Owner;
+        /** Object type
+         */
+        QString Type;
+        /** Comment about this object
+         */
+        QString Comment;
+        /** synonyms (used for faster disk caching...)
+        */
+        std::list <QString> Synonyms;
+
+        /** Create an object name with filled in values.
+         */
+        objectName(const QString &owner, const QString &name, const QString &type = QString("TABLE"), const QString &comment = QString::null)
+                : Name(name), Owner(owner), Type(type), Comment(comment)
+        { }
+
+        /** Create an empty object name.
+         */
+        objectName()
+        { }
+        bool operator < (const objectName &) const;
+        bool operator == (const objectName &) const;
+    };
+
+    /** This class is an abstract baseclass to actually implement the comunication with the
+     * database. 
+     * (See also @ref toQuery::queryImpl and @ref toConnectionProvider)
+     */
+    class connectionImpl
+    {
+        toConnection *Connection;
+    public:
+        /** Get the parent connection object of this connection.
+         */
+        toConnection &connection(void)
+        {
+            return *Connection;
+        }
+        /** Create a new connection implementation for a connection.
+         * @param conn Connection to implement.
+         */
+        connectionImpl(toConnection *conn)
+        {
+            Connection = conn;
+        };
+        /** Destructor.
+         */
+        virtual ~connectionImpl()
+        { }
+
+        /** Commit the supplied actual database connection.
+         */
+        virtual void commit(toConnectionSub *) = 0;
+        /** Rollback the supplied actual database connection.
+         */
+        virtual void rollback(toConnectionSub *) = 0;
+
+        /** If not true can never run more than one query per connection sub and TOra will
+         * work around this limitation by opening more connections if needed.
+         */
+        virtual bool handleMultipleQueries()
+        {
+            return true;
+        }
+
+        /** Create a new connection to the database.
+         */
+        virtual toConnectionSub *createConnection(void) = 0;
+        /** Close a connection to the database.
+         */
+        virtual void closeConnection(toConnectionSub *) = 0;
+
+        /** Get the version of the database connected to.
+         */
+        virtual QCString version(toConnectionSub *) = 0;
+
+        /** Return a string representation to address an object.
+         * @param name The name to be quoted.
+         * @return String addressing table.
+         */
+        virtual QString quote(const QString &name)
+        {
+            return name;
+        }
+        /** Perform the opposite of @ref quote.
+         * @param name The name to be un-quoted.
+         * @return String addressing table.
+         */
+        virtual QString unQuote(const QString &name)
+        {
+            return name;
+        }
+
+        /**
+         * Get syntax analyzer for connection
+         * @return A reference to the syntax analyzer to use for the connection.
+         */
+        virtual toSyntaxAnalyzer &analyzer();
+
+        /** Extract available objects to query for connection. Any access to the
+         * database should always be run using a long running query. If something
+         * goes wrong should throw exception.
+         * @return List of available objects.
+         */
+        virtual std::list<objectName> objectNames(void);
+        /** Get synonyms available for connection. Any access to the
+         * database should always be run using a long running query. If something
+         * goes wrong should throw exception.
+         * @param objects Available objects for the connection. Objects
+         *                are sorted in owner and name order. Don't modify
+         *                this list.
+         * @return Map of synonyms to objectnames.
+         */
+        virtual std::map<QString, objectName> synonymMap(std::list<objectName> &objects);
+        /* Extract available columns to query for a table.
+         * @param table Table to get column for.
+         * @return List of columns for table or view.
+         */
+        virtual toQDescList columnDesc(const objectName &table);
+
+        /** Create a new query implementation for this connection.
+         * @return A query implementation, allocated with new.
+         */
+        virtual toQuery::queryImpl *createQuery(toQuery *query, toConnectionSub *conn) = 0;
+        /** Execute a query on an actual connection without caring about the result.
+         * @param conn Connection to execute on.
+         * @param sql SQL to execute.
+         * @param params Parameters to pass to query.
+         */
+        virtual void execute(toConnectionSub *conn, const QCString &sql, toQList &params) = 0;
+        /** Parse a query on an actual connection and report any syntax problems encountered.
+         * Defaults to not implemented.
+         * @param conn Connection to execute on.
+         * @param sql SQL to parse
+         */
+        virtual void parse(toConnectionSub *conn, const QCString &sql);
+    };
+
+private:
+
+    void addConnection(void);
+    std::list<toConnectionSub *> &connections(void)
+    {
+        return Connections;
+    }
+
+    connectionImpl *Connection;
+
+class cacheObjects : public toTask
+    {
+        toConnection &Connection;
+    public:
+        cacheObjects(toConnection &conn)
+                : Connection(conn)
+        { }
+        virtual void run(void);
+    };
+    friend class cacheObjects;
+
+    bool ReadingCache;
+    toSemaphore ReadingValues;
+    bool Abort;
+    std::map<objectName, toQDescList> ColumnCache;
+    std::list<objectName> ObjectNames;
+    std::map<QString, objectName> SynonymMap;
+
+    toConnectionSub *mainConnection(void);
+    toConnectionSub *longConnection(void);
+    toConnectionSub *backgroundConnection(void);
+    void freeConnection(toConnectionSub *);
+    void readObjects(void);
+
+    QString cacheFile();
+public:
+    /** Create a new connection.
+     * @param provider Which database provider to use for this connection.
+     * (See @ref to toDatabaseConnection)
+     * @param user User to connect to the database with.
+     * @param password Password to connect with.
+     * @param host Host to connect to the database with.
+     * @param database Database to connect to.
+     * @param options Options used to connect to the database with.
+     * @param cache Enable object cache for this connection.
+     */
+    toConnection(const QCString &provider, const QString &user, const QString &password,
+                 const QString &host, const QString &database, const std::set
+                     <QString> &options,
+                     bool cache = true);
+    /** Create a copy of a connection. Will not cache objects, so objects will never be available
+     *  in a subconnection.
+     * @param conn Connection to copy.
+     */
+    toConnection(const toConnection &conn);
+    /** Destroy connection.
+     */
+    virtual ~toConnection();
+
+    //* Get the options for the connection.
+    const std::set
+        <QString> &options() const
+        {
+            return Options;
+        }
+    /** Try to close all the widgets associated with this connection.
+     * @return True if all widgets agreed to close.
+     */
+    bool closeWidgets(void);
+    /** Get username of connection.
+     */
+    const QString &user() const
+    {
+        return User;
+    }
+    /** Get password of connection.
+     */
+    const QString &password() const
+    {
+        return Password;
+    }
+    /** Change password of connection.
+     */
+    void setPassword(const QString &pwd)
+    {
+        Password = pwd;
+    }
+    /** Get host of connection.
+     */
+    const QString &host() const
+    {
+        return Host;
+    }
+    /** Get database of connection.
+     */
+    const QString &database() const
+    {
+        return Database;
+    }
+    /** Get version of connection.
+     */
+    const QCString &version() const
+    {
+        return Version;
+    }
+    /** Get provider of connection.
+     */
+    const QCString &provider() const;
+
+    /** Change the current database. Observe that this only changes the record of what is the current database. You will still need
+     * to change the database oppinion on what database is the current one.
+     */
+    void setDatabase(const QString &database)
+    {
+        Database = database;
+    }
+
+    /** Get a description of this connection.
+     * @version Include version in returned string.
+     */
+    virtual QString description(bool version = true) const;
+
+    /** Set if this connection needs to be commited.
+     */
+    void setNeedCommit(bool needCommit = true)
+    {
+        NeedCommit = needCommit;
+    }
+    /**
+     * Get information about if the connection has uncommited data.
+     *
+     * @return Whether uncommited data is available.
+     */
+    bool needCommit(void) const
+    {
+        return NeedCommit;
+    }
+    /**
+     * Commit connection. This will also close all extra connections except one.
+     */
+    virtual void commit(void);
+    /**
+     * Rollback connection. This will also close all extra connections except one.
+     */
+    virtual void rollback(void);
+
+    /** Parse a query on an actual connection and report any syntax problems encountered.
+     * Defaults to not implemented.
+     * @param conn Connection to execute on.
+     * @param sql SQL to parse
+     */
+    void parse(const QString &sql);
+    /** Parse a query on an actual connection and report any syntax problems encountered.
+     * Defaults to not implemented.
+     * @param conn Connection to execute on.
+     * @param sql SQL to parse
+     */
+    void parse(const toSQL &sql);
+
+    /** Execute a statement without caring about the result.
+     * @param sql SQL to execute
+     * @param params Parameters to pass to query.
+     */
+    void execute(const toSQL &sql,
+                 toQList &params);
+    /** Execute a statement without caring about the result.
+     * @param sql SQL to execute
+     * @param params Parameters to pass to query.
+     */
+    void execute(const QString &sql,
+                 toQList &params);
+    /** Execute a statement without caring about the result.
+     * @param sql SQL to execute
+     * @param arg1 Parameters to pass to query.
+     */
+    void execute(const toSQL &sql,
+                 const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+                 const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+                 const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+                 const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+                 const QString &arg9 = QString::null);
+    /** Execute a statement without caring about the result.
+     * @param sql SQL to execute
+     * @param arg1 Parameters to pass to query.
+     */
+    void execute(const QString &sql,
+                 const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+                 const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+                 const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+                 const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+                 const QString &arg9 = QString::null);
+
+    /** Execute a statement without caring about the result on all open database connections.
+     * @param sql SQL to execute
+     * @param params Parameters to pass to query.
+     */
+    void allExecute(const toSQL &sql,
+                    toQList &params);
+    /** Execute a statement without caring about the result on all open database connections.
+     * @param sql SQL to execute
+     * @param params Parameters to pass to query.
+     */
+    void allExecute(const QString &sql,
+                    toQList &params);
+    /** Execute a statement without caring about the result on all open database connections.
+     * @param sql SQL to execute
+     * @param arg1 Parameters to pass to query.
+     */
+    void allExecute(const toSQL &sql,
+                    const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+                    const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+                    const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+                    const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+                    const QString &arg9 = QString::null);
+    /** Execute a statement without caring about the result on all open database connections.
+     * @param sql SQL to execute
+     * @param arg1 Parameters to pass to query.
+     */
+    void allExecute(const QString &sql,
+                    const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+                    const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+                    const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+                    const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+                    const QString &arg9 = QString::null);
+
+    /**
+     * Add a object that uses this connection. This is needed to ensure that all widgets
+     * that make use of a connection are destroyed when the connection is closed. Usually
+     * tool windows need to call this function.
+     *
+     * @param widget The widget to add to the connection.
+     */
+    void addWidget(QObject *widget)
+    {
+        Widgets.insert(Widgets.end(), widget);
+    }
+    /**
+     * Remove a widget from this connection. Should be called by the destructor of the
+     * widget that has called addWidget.
+     *
+     * @see addWidget
+     * @param widget Widget to remove from the widget list.
+     */
+    void delWidget(QObject *widget);
+
+    /**
+     * Add a statement to be run uppon making new connections.
+     * @param sql Statement to run.
+     */
+    void addInit(const QString &sql);
+    /**
+     * Remove a statement that was added using @ref addInit.
+     */
+    void delInit(const QString &sql);
+    /**
+     * Get a list of the current init strings.
+     */
+    const std::list<QString> initStrings() const;
+
+    /** Return a string representation to address an object.
+     * @param name The name to be quoted.
+     * @return String addressing table.
+     */
+    QString quote(const QString &name);
+    /** Perform the opposite of @ref quote.
+     * @param name The name to be un-quoted.
+     * @return String addressing table.
+     */
+    QString unQuote(const QString &name);
+
+    /**
+     * Get the objects available for the current user. Do not modify the returned list.
+     * @param block Indicate wether or not to block until cached objects are available.
+     * @return A list of object available for the current user. The list is sorted in
+     *         owner and name order.
+     */
+    std::list<objectName> &objects(bool block);
+
+    /** Add a new object to the objectlist if it doesn't exist already.
+     * @param object The object to add
+     */
+    void addIfNotExists(objectName &object);
+
+    /**
+     * Get syntax analyzer for connection
+     * @return A reference to the syntax analyzer to use for the connection.
+     */
+    virtual toSyntaxAnalyzer &analyzer();
+
+    /**
+     * Get the synonyms available for objects. Do not modify the returned list.
+     * @param block Indicate wether or not to block until cached objects are available.
+     * @return A list of synonyms to objects available for the current user.
+     */
+    std::map<QString, objectName> &synonyms(bool block);
+    /**
+     * Get a list of the available columns for a table. This function caches the responses
+     * and should be fairly fast after the first call. Do not modify the returned list.
+     * @param table The table to describe.
+     * @param nocache Don't use cached values even if they are available.
+     * @return A list of the columns for a table.
+     */
+    toQDescList &columns(const objectName &table, bool nocache = false);
+    /**
+     * Reread the object and column cache.
+     */
+    void rereadCache(void);
+    /**
+     * Get the real object name of an object.
+     * @param object Object name
+     * @param block Block if not done caching object.
+     */
+    const objectName &realName(const QString &object, bool block);
+    /**
+     * Get the real object name of a synonym.
+     * @param object Object name
+     * @param synonym Filled with the synonym used to access the object returned or empty.
+     * @param block Block if not done caching object.
+     */
+    const objectName &realName(const QString &object, QString &synonym, bool block);
+    /** Check if cache is available or not.
+     * @param synonyms If synonyms are needed or not.
+     * @param block Block until cache is done.
+     * @param true True if you need the cache, or just checking.
+     * @return True if cache is available.
+     */
+    bool cacheAvailable(bool synonyms, bool block = false, bool need = true);
+
+    /** Try to stop all running queries.
+     */
+    void cancelAll(void);
+
+    /** load disk cache
+     */
+
+    bool loadDiskCache(void);
+
+    /** write disk cache
+     */
+
+    void writeDiskCache(void);
+
+    /** Get a list of currently running SQL.
+     */
+    std::list<QString> running(void);
+
+    static QString cacheDir();
+
+    friend class toQuery;
+};
+
+/** This class is used to implement new database providers.
+ */
+
+class toConnectionProvider
+{
+    static std::map<QCString, toConnectionProvider *> *Providers;
+    static std::map<QCString, toConnectionProvider *> *Types;
+    QCString Provider;
+    static void checkAlloc(void);
+
+    /** Get the provider object for a given provider name.
+     * @param provider Name of provider.
+     * @return Reference to provider object.
+     */
+    static toConnectionProvider &fetchProvider(const QCString &provider);
+protected:
+    /** Add a provider to the list that this provider can handle.
+     */
+    void addProvider(const QCString &provider);
+    /** Remove a provider from the list that this provider can handle.
+     */
+    void removeProvider(const QCString &provider);
+public:
+    /** Create a new provider with the specified name.
+     * @param provider Name of the provider.
+     */
+    toConnectionProvider(const QCString &provider, bool add
+                             = true);
+    /** Destructor.
+     */
+    virtual ~toConnectionProvider();
+
+    /** Create an implementation of a connection to this database.
+     * @param provider Provider to use for connection.
+     * @param conn The connection object to use the created connection.
+     * @return A connection implementation created with new.
+     */
+    virtual toConnection::connectionImpl *provideConnection(const QCString &provider,
+            toConnection *conn) = 0;
+    /** List the available hosts this database provider knows about.
+     * @return A list of hosts.
+     */
+    virtual std::list<QString> providedHosts(const QCString &provider);
+    /** List the available databases this provider knows about for a given host.
+     * @param host Host to return connections for.
+     * @param user That might be needed.
+     * @param password That might be needed.
+     * @return A list of databases available for a given host.
+     */
+    virtual std::list<QString> providedDatabases(const QCString &provider,
+            const QString &host,
+            const QString &user,
+            const QString &pwd) = 0;
+    /** Will be called after program has been started and before connections have been opened.
+     *  Use for initialization.
+     */
+    virtual void initialize(void)
+{ }
+
+    /** Get a list of options available for the connection. An option with the name
+     * "-" indicates a break should be made to separate the rest of the options from the previous
+     * options. An option preceeded by "*" means selected by default. The * shoul be stripped before
+     * before passing it to the connection call.
+     */
+    virtual std::list<QString> providedOptions(const QCString &provider);
+
+    /**
+     * Create and return configuration tab for this connectiontype. The returned widget should also
+     * be a childclass of @ref toSettingTab.
+     *
+     * @return A pointer to the widget containing the setup tab for this tool or NULL of
+     * no settings are available.
+     */
+    virtual QWidget *providerConfigurationTab(const QCString &provider, QWidget *parent);
+
+    /** Get a list of names for providers.
+     */
+    static QWidget *configurationTab(const QCString &provider, QWidget *parent);
+    /** Get a list of names for providers.
+     */
+    static std::list<QCString> providers();
+    /** Get a list of options for a given provider.
+     */
+    static std::list<QString> options(const QCString &provider);
+    /** Implement a connection for a given provider.
+     * @param provider Provider to implement.
+     * @param conn Connection to create implementation for.
+     */
+    static toConnection::connectionImpl *connection(const QCString &provider, toConnection *conn);
+    /** Get a list of hosts this provider knows about.
+     */
+    static std::list<QString> hosts(const QCString &provider);
+    /** Get a list of databases for a given provider and host.
+     * @param provider Provider to fetch databases for.
+     * @param host Host to fetch databases for.
+     * @param user That might be needed.
+     * @param password That might be needed.
+     * @return List of known databases.
+     */
+    static std::list<QString> databases(const QCString &provider, const QString &host,
+                                        const QString &user, const QString &pwd);
+    /**
+     * Get connection specific settings.
+     *
+     * Setting names are hierachical separated by ':' instead of '/' usually used
+     * in filenames. As an example all settings for the tool 'Example' would be
+     * under the 'Example:{settingname}' name. Observe that the settings are stored
+     * under the main provider name as passed to the toConnectionProvider constructor.
+     *
+     * @param tag The name of the configuration setting.
+     * @param def Contents of this setting.
+     */
+    const QString &config(const QCString &tag, const QCString &def);
+    /**
+     * Change connectionspecific setting. Depending on the implementation this can change the
+     * contents on disk or not.
+     *
+     * Setting names are hierachical separated by ':' instead of '/' usually used
+     * in filenames. As an example all settings for the tool 'Example' would be
+     * under the 'Example:{settingname}' name. Observe that the settings are stored
+     * under the main provider name as passed to the toConnectionProvider constructor.
+     *
+     * @param tag The name of the configuration setting.
+     * @param def Default value of the setting, if it is not available.
+     */
+    void setConfig(const QCString &tag, const QCString &value);
+
+    /** Call all initializers
+     */
+    static void initializeAll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tocurrent.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tocurrent.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tocurrent.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,310 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tochangeconnection.h"
+#include "toconnection.h"
+#include "toconf.h"
+#include "tocurrent.h"
+#include "tomain.h"
+#include "tonoblockquery.h"
+#include "toresultlong.h"
+#include "toresultparam.h"
+#include "toresultstats.h"
+#include "toresultview.h"
+#include "tosql.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qlabel.h>
+#include <qmenubar.h>
+#include <qpopupmenu.h>
+#include <qtabwidget.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qworkspace.h>
+
+#include "tocurrent.moc"
+
+#include "icons/refresh.xpm"
+#include "icons/tocurrent.xpm"
+
+class toCurrentInfoTool : public toTool
+{
+protected:
+    std::map<toConnection *, QWidget *> Windows;
+
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(tocurrent_xpm);
+    }
+public:
+    toCurrentInfoTool()
+            : toTool(240, "Current Session")
+    { }
+    virtual const char *menuItem()
+    {
+        return "Current Session";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection);
+        if (i != Windows.end())
+        {
+            (*i).second->raise();
+            (*i).second->setFocus();
+            return NULL;
+        }
+        else
+        {
+            QWidget *window = new toCurrent(parent, connection);
+            Windows[&connection] = window;
+            return window;
+        }
+    }
+    void closeWindow(toConnection &connection)
+    {
+        std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection);
+        if (i != Windows.end())
+            Windows.erase(i);
+    }
+};
+
+static toCurrentInfoTool CurrentTool;
+
+static toSQL SQLVersion("toCurrent:Version",
+                        "select banner \"Version\" from v$version",
+                        "Display version of Oracle");
+
+static toSQL SQLResourceLimit("toCurrent:ResourceLimit",
+                              "SELECT * FROM v$resource_limit ORDER BY resource_name",
+                              "List resource limits");
+
+toCurrent::toCurrent(QWidget *main, toConnection &connection)
+        : toToolWidget(CurrentTool, "current.html", main, connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Current Session"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Update"),
+                    tr("Update"),
+                    this, SLOT(refresh(void)),
+                    toolbar);
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    Tabs = new QTabWidget(this);
+
+    Grants = new toListView(Tabs);
+    Grants->setSorting(0);
+    Grants->addColumn(tr("Privilege"));
+    Grants->addColumn(tr("Type"));
+    Grants->addColumn(tr("Grantable"));
+    Grants->setRootIsDecorated(true);
+    Tabs->addTab(Grants, tr("Privileges"));
+
+    Version = new toResultLong(true, false, toQuery::Background, Tabs);
+    Version->setSQL(SQLVersion);
+    Tabs->addTab(Version, tr("Version"));
+
+    Parameters = new toResultParam(Tabs);
+    Tabs->addTab(Parameters, tr("Parameters"));
+
+    Statistics = new toResultStats(false, Tabs);
+    Tabs->addTab(Statistics, tr("Statistics"));
+
+    ResourceLimit = new toResultLong(true, false, toQuery::Background, Tabs, "resource");
+    ResourceLimit->setSQL(SQLResourceLimit);
+    Tabs->addTab(ResourceLimit, tr("Resource Limits"));
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+
+    Query = NULL;
+    refresh();
+
+    setFocusProxy(Tabs);
+}
+
+void toCurrent::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Current session|Refresh")));
+            toMainWidget()->menuBar()->insertItem(tr("&Current Session"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+toCurrent::~toCurrent()
+{
+    try
+    {
+        CurrentTool.closeWindow(connection());
+    }
+    TOCATCH
+}
+
+static toSQL SQLRoleTabPrivs("toCurrent:RoleTabPrivs",
+                             "select privilege||' on '||owner||'.'||table_name,grantable from role_tab_privs where role = :role<char[100]>",
+                             "Get information about privileges granted on objects to a role, must have same binds and columns");
+
+static toSQL SQLRoleSysPrivs("toCurrent:RoleSysPrivs",
+                             "select privilege,admin_option from role_sys_privs where role = :role<char[100]>",
+                             "Get information about system privileges granted to role, must have same binds and columns");
+
+static toSQL SQLRoleRolePrivs("toCurrent:RoleRolePrivs",
+                              "select granted_role,admin_option from role_role_privs where role = :role<char[100]>",
+                              "Get information about roles granted to a role, must have same binds and columns");
+
+static toSQL SQLUserTabPrivs("toCurrent:UserTabPrivs",
+                             "select privilege || ' on ' || owner||'.'||table_name,grantable from user_tab_privs",
+                             "Get information about privileges granted on objects to a user, must have same columns");
+
+static toSQL SQLUserSysPrivs("toCurrent:UserSysPrivs",
+                             "select privilege,admin_option from user_sys_privs",
+                             "Get information about system privileges granted to user, must have same columns");
+
+static toSQL SQLUserRolePrivs("toCurrent:UserRolePrivs",
+                              "select granted_role,admin_option from user_role_privs",
+                              "Get information about roles granted to a user, must have same columns");
+
+void toCurrent::addList(bool isrole, QListViewItem *parent, const QString &type, const toSQL &sql, const QString &role)
+{
+    Updates.insert(Updates.end(), update(isrole, parent, type, sql(connection()), role));
+}
+
+void toCurrent::poll()
+{
+    try
+    {
+        if (Query)
+        {
+            while (Query && Query->poll())
+            {
+                if (Query->eof())
+                {
+                    delete Query;
+                    Query = NULL;
+                }
+                else
+                {
+                    QListViewItem *item;
+                    if (CurrentUpdate.Parent)
+                        item = new toResultViewItem(CurrentUpdate.Parent, NULL);
+                    else
+                        item = new toResultViewItem(Grants, NULL);
+                    item->setText(0, Query->readValue());
+                    item->setText(1, CurrentUpdate.Type);
+                    item->setText(2, Query->readValue());
+                    if (CurrentUpdate.IsRole)
+                    {
+                        addList(false, item, tr("System"), SQLRoleSysPrivs, item->text(0));
+                        addList(false, item, tr("Object"), SQLRoleTabPrivs, item->text(0));
+                        addList(true, item, tr("Role"), SQLRoleRolePrivs, item->text(0));
+                    }
+                }
+            }
+        }
+
+        if (!Query)
+        {
+            if ( Updates.empty() )
+            {
+                Poll.stop();
+                return ;
+            }
+
+            CurrentUpdate = toShift(Updates);
+
+            toQList param;
+            if (!CurrentUpdate.Role.isEmpty())
+                toPush(param, toQValue(CurrentUpdate.Role));
+            Query = new toNoBlockQuery(connection(),
+                                       toQuery::Background,
+                                       CurrentUpdate.SQL,
+                                       param);
+        }
+    }
+    catch (const QString &exc)
+    {
+        toStatusMessage(exc);
+        delete Query;
+        Query = NULL;
+    }
+}
+
+void toCurrent::refresh()
+{
+    try
+    {
+        Parameters->refresh();
+        Version->refresh();
+        Statistics->refreshStats();
+        Grants->clear();
+        ResourceLimit->refresh();
+
+        Updates.clear();
+        delete Query;
+        Query = NULL;
+
+        addList(false, NULL, tr("System"), SQLUserSysPrivs);
+        addList(false, NULL, tr("Object"), SQLUserTabPrivs);
+        addList(true, NULL, tr("Role"), SQLUserRolePrivs);
+
+        poll();
+        Poll.start(100);
+    }
+    TOCATCH
+}

Added: kde-extras/tora/branches/upstream/current/src/tocurrent.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tocurrent.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tocurrent.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,102 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOCURRENT_H
+#define TOCURRENT_H
+
+#include "config.h"
+#include "totool.h"
+#include "tosql.h"
+#include "tobackground.h"
+
+class QPopupMenu;
+class QTabWidget;
+class toNoBlockQuery;
+class toResultParam;
+class toResultStats;
+class toResultView;
+class toResultLong;
+
+class toCurrent : public toToolWidget
+{
+    Q_OBJECT
+
+    struct update
+    {
+        bool IsRole;
+
+        QListViewItem *Parent;
+        QString Type;
+        QString SQL;
+        QString Role;
+
+        update()
+        {
+            IsRole = false;
+            Parent = NULL;
+        }
+        update(bool isrole, QListViewItem *parent, const QString &type, const QString &sql, const QString &role)
+                : IsRole(isrole), Parent(parent), Type(type), SQL(sql), Role(role)
+        { }
+    }
+    ;
+
+    std::list<update> Updates;
+
+    QTabWidget *Tabs;
+    toResultView *Version;
+    toListView *Grants;
+    toResultLong *ResourceLimit;
+    toResultParam *Parameters;
+    toResultStats *Statistics;
+    QPopupMenu *ToolMenu;
+    toBackground Poll;
+
+    update CurrentUpdate;
+    toNoBlockQuery *Query;
+
+    virtual void addList(bool isrole, QListViewItem *parent, const QString &typ, const toSQL &sql, const QString &role = QString::null);
+public:
+    toCurrent(QWidget *parent, toConnection &connection);
+    virtual ~toCurrent();
+public slots:
+    void refresh(void);
+    void poll(void);
+    void windowActivated(QWidget *widget);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/todatabasesettingui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todatabasesettingui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todatabasesettingui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,266 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'todatabasesettingui.ui'
+**
+** Created: Tue Sep 18 08:21:28 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "todatabasesettingui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qspinbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toDatabaseSettingUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toDatabaseSettingUI::toDatabaseSettingUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toDatabaseSettingUI" );
+    toDatabaseSettingUILayout = new QGridLayout( this, 1, 1, 11, 6, "toDatabaseSettingUILayout"); 
+
+    AutoCommit = new QCheckBox( this, "AutoCommit" );
+
+    toDatabaseSettingUILayout->addWidget( AutoCommit, 0, 0 );
+
+    ObjectCache = new QComboBox( FALSE, this, "ObjectCache" );
+
+    toDatabaseSettingUILayout->addWidget( ObjectCache, 1, 0 );
+
+    QueryGroup = new QGroupBox( this, "QueryGroup" );
+    QueryGroup->setFrameShape( QGroupBox::Box );
+    QueryGroup->setFrameShadow( QGroupBox::Sunken );
+    QueryGroup->setColumnLayout(0, Qt::Vertical );
+    QueryGroup->layout()->setSpacing( 6 );
+    QueryGroup->layout()->setMargin( 11 );
+    QueryGroupLayout = new QGridLayout( QueryGroup->layout() );
+    QueryGroupLayout->setAlignment( Qt::AlignTop );
+
+    TextLabel6_2_2 = new QLabel( QueryGroup, "TextLabel6_2_2" );
+
+    QueryGroupLayout->addWidget( TextLabel6_2_2, 2, 0 );
+
+    MaxColDisp = new QLineEdit( QueryGroup, "MaxColDisp" );
+    MaxColDisp->setFrameShape( QLineEdit::LineEditPanel );
+    MaxColDisp->setFrameShadow( QLineEdit::Sunken );
+
+    QueryGroupLayout->addMultiCellWidget( MaxColDisp, 2, 2, 1, 2 );
+
+    InitialFetch = new QLineEdit( QueryGroup, "InitialFetch" );
+    InitialFetch->setEnabled( TRUE );
+
+    QueryGroupLayout->addWidget( InitialFetch, 0, 1 );
+
+    ReadAll = new QCheckBox( QueryGroup, "ReadAll" );
+
+    QueryGroupLayout->addWidget( ReadAll, 0, 2 );
+
+    TextLabel6 = new QLabel( QueryGroup, "TextLabel6" );
+
+    QueryGroupLayout->addWidget( TextLabel6, 0, 0 );
+
+    TextLabel6_2 = new QLabel( QueryGroup, "TextLabel6_2" );
+
+    QueryGroupLayout->addWidget( TextLabel6_2, 1, 0 );
+
+    MaxContent = new QLineEdit( QueryGroup, "MaxContent" );
+    MaxContent->setEnabled( TRUE );
+
+    QueryGroupLayout->addWidget( MaxContent, 1, 1 );
+
+    UnlimitedContent = new QCheckBox( QueryGroup, "UnlimitedContent" );
+
+    QueryGroupLayout->addWidget( UnlimitedContent, 1, 2 );
+
+    toDatabaseSettingUILayout->addWidget( QueryGroup, 2, 0 );
+
+    KeepAlive = new QCheckBox( this, "KeepAlive" );
+
+    toDatabaseSettingUILayout->addWidget( KeepAlive, 5, 0 );
+
+    GroupBox2 = new QGroupBox( this, "GroupBox2" );
+    GroupBox2->setColumnLayout(0, Qt::Vertical );
+    GroupBox2->layout()->setSpacing( 6 );
+    GroupBox2->layout()->setMargin( 11 );
+    GroupBox2Layout = new QGridLayout( GroupBox2->layout() );
+    GroupBox2Layout->setAlignment( Qt::AlignTop );
+
+    AutoLong = new QCheckBox( GroupBox2, "AutoLong" );
+
+    GroupBox2Layout->addMultiCellWidget( AutoLong, 2, 2, 0, 1 );
+
+    TextLabel1 = new QLabel( GroupBox2, "TextLabel1" );
+
+    GroupBox2Layout->addWidget( TextLabel1, 3, 0 );
+
+    MoveAfter = new QSpinBox( GroupBox2, "MoveAfter" );
+    MoveAfter->setEnabled( FALSE );
+    MoveAfter->setMinValue( 5 );
+
+    GroupBox2Layout->addWidget( MoveAfter, 3, 1 );
+
+    BkgndConnect = new QCheckBox( GroupBox2, "BkgndConnect" );
+
+    GroupBox2Layout->addMultiCellWidget( BkgndConnect, 0, 0, 0, 1 );
+
+    DontReread = new QCheckBox( GroupBox2, "DontReread" );
+
+    GroupBox2Layout->addMultiCellWidget( DontReread, 1, 1, 0, 1 );
+
+    toDatabaseSettingUILayout->addWidget( GroupBox2, 4, 0 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toDatabaseSettingUILayout->addItem( Spacer1, 6, 0 );
+
+    GroupBox3 = new QGroupBox( this, "GroupBox3" );
+    GroupBox3->setColumnLayout(0, Qt::Vertical );
+    GroupBox3->layout()->setSpacing( 6 );
+    GroupBox3->layout()->setMargin( 11 );
+    GroupBox3Layout = new QGridLayout( GroupBox3->layout() );
+    GroupBox3Layout->setAlignment( Qt::AlignTop );
+
+    TextLabel1_2 = new QLabel( GroupBox3, "TextLabel1_2" );
+
+    GroupBox3Layout->addWidget( TextLabel1_2, 1, 0 );
+
+    Decimals = new QSpinBox( GroupBox3, "Decimals" );
+    Decimals->setEnabled( FALSE );
+    Decimals->setMaxValue( 20 );
+    Decimals->setValue( 2 );
+
+    GroupBox3Layout->addWidget( Decimals, 1, 3 );
+
+    IndicateEmpty = new QCheckBox( GroupBox3, "IndicateEmpty" );
+
+    GroupBox3Layout->addMultiCellWidget( IndicateEmpty, 0, 0, 0, 1 );
+
+    NumberFormat = new QComboBox( FALSE, GroupBox3, "NumberFormat" );
+
+    GroupBox3Layout->addWidget( NumberFormat, 1, 1 );
+
+    IndicateEmptyColor = new QPushButton( GroupBox3, "IndicateEmptyColor" );
+
+    GroupBox3Layout->addMultiCellWidget( IndicateEmptyColor, 0, 0, 2, 3 );
+
+    TextLabel3 = new QLabel( GroupBox3, "TextLabel3" );
+
+    GroupBox3Layout->addWidget( TextLabel3, 1, 2 );
+
+    toDatabaseSettingUILayout->addWidget( GroupBox3, 3, 0 );
+    languageChange();
+    resize( QSize(792, 515).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( ReadAll, SIGNAL( toggled(bool) ), InitialFetch, SLOT( setDisabled(bool) ) );
+    connect( AutoLong, SIGNAL( toggled(bool) ), MoveAfter, SLOT( setEnabled(bool) ) );
+    connect( UnlimitedContent, SIGNAL( toggled(bool) ), MaxContent, SLOT( setDisabled(bool) ) );
+    connect( NumberFormat, SIGNAL( activated(const QString&) ), this, SLOT( numberFormatChange() ) );
+    connect( IndicateEmptyColor, SIGNAL( clicked() ), this, SLOT( IndicateEmptyColor_clicked() ) );
+
+    // tab order
+    setTabOrder( AutoCommit, ObjectCache );
+    setTabOrder( ObjectCache, InitialFetch );
+    setTabOrder( InitialFetch, ReadAll );
+    setTabOrder( ReadAll, MaxContent );
+    setTabOrder( MaxContent, UnlimitedContent );
+    setTabOrder( UnlimitedContent, MaxColDisp );
+    setTabOrder( MaxColDisp, IndicateEmpty );
+    setTabOrder( IndicateEmpty, NumberFormat );
+    setTabOrder( NumberFormat, Decimals );
+    setTabOrder( Decimals, BkgndConnect );
+    setTabOrder( BkgndConnect, DontReread );
+    setTabOrder( DontReread, AutoLong );
+    setTabOrder( AutoLong, MoveAfter );
+    setTabOrder( MoveAfter, KeepAlive );
+
+    // buddies
+    TextLabel6_2_2->setBuddy( MaxColDisp );
+    TextLabel6->setBuddy( InitialFetch );
+    TextLabel6_2->setBuddy( InitialFetch );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toDatabaseSettingUI::~toDatabaseSettingUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toDatabaseSettingUI::languageChange()
+{
+    setCaption( tr( "toDatabaseSettingUI" ) );
+    AutoCommit->setText( tr( "&Autocommit changes" ) );
+    AutoCommit->setAccel( QKeySequence( tr( "Alt+A" ) ) );
+    QToolTip::add( AutoCommit, tr( "Specify if changes should be automatically commited." ) );
+    ObjectCache->clear();
+    ObjectCache->insertItem( tr( "Start read object cache when needed" ) );
+    ObjectCache->insertItem( tr( "Read object cache on connect" ) );
+    ObjectCache->insertItem( tr( "Never read object cache until mandatory" ) );
+    ObjectCache->insertItem( tr( "Never read object cache (Will leave parts of application nonfunctianal)" ) );
+    QueryGroup->setTitle( tr( "Query settings" ) );
+    TextLabel6_2_2->setText( tr( "Maximum size &display" ) );
+    QToolTip::add( TextLabel6_2_2, tr( "The largest default size of a column in query results." ) );
+    ReadAll->setText( tr( "&All" ) );
+    ReadAll->setAccel( QKeySequence( tr( "Alt+A" ) ) );
+    TextLabel6->setText( tr( "&Initial rows to fetch in query" ) );
+    QToolTip::add( TextLabel6, tr( "The number of rows to always fetch when executing a query." ) );
+    TextLabel6_2->setText( tr( "Initially read in content editor" ) );
+    QToolTip::add( TextLabel6_2, tr( "Number of rows to initially start reading in content editor, use unlimited on slow connections." ) );
+    UnlimitedContent->setText( tr( "&All" ) );
+    KeepAlive->setText( tr( "Keep alive by periodically executing statements on unused connections if they are not used." ) );
+    QToolTip::add( KeepAlive, tr( "Make sure connections are kept alive by periodically (5 minutes) sending a query on all idle connections." ) );
+    GroupBox2->setTitle( tr( "UI feedback settings" ) );
+    AutoLong->setText( tr( "Abort long running queries and reexecute in own connection" ) );
+    QToolTip::add( AutoLong, tr( "Reexecute a query taking more than 30 seconds in its own connection to prevent blocking other database access." ) );
+    TextLabel1->setText( tr( "Move to own connection after" ) );
+    MoveAfter->setSuffix( tr( " seconds" ) );
+    BkgndConnect->setText( tr( "Run UI blocking queries exclusively in main connection" ) );
+    QToolTip::add( BkgndConnect, tr( "Let the background queries normally running on the main connection run in a separate connection." ) );
+    DontReread->setText( tr( "Don't reread data if parameters are exactly same" ) );
+    QToolTip::add( DontReread, tr( "If checked will not refresh a result if it is reexecuted exactly the same two times in a row." ) );
+    GroupBox3->setTitle( tr( "Dataformat" ) );
+    TextLabel1_2->setText( tr( "Number format" ) );
+    QToolTip::add( TextLabel1_2, tr( "The way numbers should be presented." ) );
+    IndicateEmpty->setText( tr( "Indicate empty values as '' instead of NULL as {null}." ) );
+    NumberFormat->clear();
+    NumberFormat->insertItem( tr( "Default" ) );
+    NumberFormat->insertItem( tr( "Scientific" ) );
+    NumberFormat->insertItem( tr( "Fixed decimal" ) );
+    IndicateEmptyColor->setText( tr( "NULL background color" ) );
+    TextLabel3->setText( tr( "Decimals" ) );
+    QToolTip::add( TextLabel3, tr( "Number of decimals for fixed decimal format." ) );
+}
+
+void toDatabaseSettingUI::numberFormatChange()
+{
+    qWarning( "toDatabaseSettingUI::numberFormatChange(): Not implemented yet" );
+}
+
+void toDatabaseSettingUI::IndicateEmpty_toggled(bool)
+{
+    qWarning( "toDatabaseSettingUI::IndicateEmpty_toggled(bool): Not implemented yet" );
+}
+
+void toDatabaseSettingUI::IndicateEmptyColor_clicked()
+{
+    qWarning( "toDatabaseSettingUI::IndicateEmptyColor_clicked(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/todatabasesettingui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todatabasesettingui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todatabasesettingui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,79 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'todatabasesettingui.ui'
+**
+** Created: Tue Sep 18 08:21:27 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TODATABASESETTINGUI_H
+#define TODATABASESETTINGUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QCheckBox;
+class QComboBox;
+class QGroupBox;
+class QLabel;
+class QLineEdit;
+class QSpinBox;
+class QPushButton;
+
+class toDatabaseSettingUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toDatabaseSettingUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toDatabaseSettingUI();
+
+    QCheckBox* AutoCommit;
+    QComboBox* ObjectCache;
+    QGroupBox* QueryGroup;
+    QLabel* TextLabel6_2_2;
+    QLineEdit* MaxColDisp;
+    QLineEdit* InitialFetch;
+    QCheckBox* ReadAll;
+    QLabel* TextLabel6;
+    QLabel* TextLabel6_2;
+    QLineEdit* MaxContent;
+    QCheckBox* UnlimitedContent;
+    QCheckBox* KeepAlive;
+    QGroupBox* GroupBox2;
+    QCheckBox* AutoLong;
+    QLabel* TextLabel1;
+    QSpinBox* MoveAfter;
+    QCheckBox* BkgndConnect;
+    QCheckBox* DontReread;
+    QGroupBox* GroupBox3;
+    QLabel* TextLabel1_2;
+    QSpinBox* Decimals;
+    QCheckBox* IndicateEmpty;
+    QComboBox* NumberFormat;
+    QPushButton* IndicateEmptyColor;
+    QLabel* TextLabel3;
+
+public slots:
+    virtual void numberFormatChange();
+    virtual void IndicateEmpty_toggled( bool );
+    virtual void IndicateEmptyColor_clicked();
+
+protected:
+    QGridLayout* toDatabaseSettingUILayout;
+    QSpacerItem* Spacer1;
+    QGridLayout* QueryGroupLayout;
+    QGridLayout* GroupBox2Layout;
+    QGridLayout* GroupBox3Layout;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TODATABASESETTINGUI_H

Added: kde-extras/tora/branches/upstream/current/src/todatabasesettingui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todatabasesettingui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todatabasesettingui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,435 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>toDatabaseSettingUI</class>
+<widget class="QWidget">
+    <property name="name">
+        <cstring>toDatabaseSettingUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>792</width>
+            <height>515</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>toDatabaseSettingUI</string>
+    </property>
+    <property name="layoutMargin" stdset="0">
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>11</number>
+        </property>
+        <property name="spacing">
+            <number>6</number>
+        </property>
+        <widget class="QCheckBox" row="0" column="0">
+            <property name="name">
+                <cstring>AutoCommit</cstring>
+            </property>
+            <property name="text">
+                <string>&amp;Autocommit changes</string>
+            </property>
+            <property name="accel">
+                <string>Alt+A</string>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>Specify if changes should be automatically commited.</string>
+            </property>
+        </widget>
+        <widget class="QComboBox" row="1" column="0">
+            <item>
+                <property name="text">
+                    <string>Start read object cache when needed</string>
+                </property>
+            </item>
+            <item>
+                <property name="text">
+                    <string>Read object cache on connect</string>
+                </property>
+            </item>
+            <item>
+                <property name="text">
+                    <string>Never read object cache until mandatory</string>
+                </property>
+            </item>
+            <item>
+                <property name="text">
+                    <string>Never read object cache (Will leave parts of application nonfunctianal)</string>
+                </property>
+            </item>
+            <property name="name">
+                <cstring>ObjectCache</cstring>
+            </property>
+        </widget>
+        <widget class="QGroupBox" row="2" column="0">
+            <property name="name">
+                <cstring>QueryGroup</cstring>
+            </property>
+            <property name="frameShape">
+                <enum>Box</enum>
+            </property>
+            <property name="frameShadow">
+                <enum>Sunken</enum>
+            </property>
+            <property name="title">
+                <string>Query settings</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>11</number>
+                </property>
+                <property name="spacing">
+                    <number>6</number>
+                </property>
+                <widget class="QLabel" row="2" column="0">
+                    <property name="name">
+                        <cstring>TextLabel6_2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Maximum size &amp;display</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>MaxColDisp</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>The largest default size of a column in query results.</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="2" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>MaxColDisp</cstring>
+                    </property>
+                    <property name="frameShape">
+                        <enum>LineEditPanel</enum>
+                    </property>
+                    <property name="frameShadow">
+                        <enum>Sunken</enum>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="0" column="1">
+                    <property name="name">
+                        <cstring>InitialFetch</cstring>
+                    </property>
+                    <property name="enabled">
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="0" column="2">
+                    <property name="name">
+                        <cstring>ReadAll</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;All</string>
+                    </property>
+                    <property name="accel">
+                        <string>Alt+A</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="0" column="0">
+                    <property name="name">
+                        <cstring>TextLabel6</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Initial rows to fetch in query</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>InitialFetch</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>The number of rows to always fetch when executing a query.</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="1" column="0">
+                    <property name="name">
+                        <cstring>TextLabel6_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Initially read in content editor</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>InitialFetch</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Number of rows to initially start reading in content editor, use unlimited on slow connections.</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="1" column="1">
+                    <property name="name">
+                        <cstring>MaxContent</cstring>
+                    </property>
+                    <property name="enabled">
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="1" column="2">
+                    <property name="name">
+                        <cstring>UnlimitedContent</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;All</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget class="QCheckBox" row="5" column="0">
+            <property name="name">
+                <cstring>KeepAlive</cstring>
+            </property>
+            <property name="text">
+                <string>Keep alive by periodically executing statements on unused connections if they are not used.</string>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>Make sure connections are kept alive by periodically (5 minutes) sending a query on all idle connections.</string>
+            </property>
+        </widget>
+        <widget class="QGroupBox" row="4" column="0">
+            <property name="name">
+                <cstring>GroupBox2</cstring>
+            </property>
+            <property name="title">
+                <string>UI feedback settings</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>11</number>
+                </property>
+                <property name="spacing">
+                    <number>6</number>
+                </property>
+                <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>AutoLong</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Abort long running queries and reexecute in own connection</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Reexecute a query taking more than 30 seconds in its own connection to prevent blocking other database access.</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="3" column="0">
+                    <property name="name">
+                        <cstring>TextLabel1</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Move to own connection after</string>
+                    </property>
+                </widget>
+                <widget class="QSpinBox" row="3" column="1">
+                    <property name="name">
+                        <cstring>MoveAfter</cstring>
+                    </property>
+                    <property name="enabled">
+                        <bool>false</bool>
+                    </property>
+                    <property name="suffix">
+                        <string> seconds</string>
+                    </property>
+                    <property name="minValue">
+                        <number>5</number>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>BkgndConnect</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Run UI blocking queries exclusively in main connection</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Let the background queries normally running on the main connection run in a separate connection.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>DontReread</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Don't reread data if parameters are exactly same</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>If checked will not refresh a result if it is reexecuted exactly the same two times in a row.</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <spacer row="6" column="0">
+            <property name="name">
+                <cstring>Spacer1</cstring>
+            </property>
+            <property name="orientation">
+                <enum>Vertical</enum>
+            </property>
+            <property name="sizeType">
+                <enum>Expanding</enum>
+            </property>
+            <property name="sizeHint">
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget class="QGroupBox" row="3" column="0">
+            <property name="name">
+                <cstring>GroupBox3</cstring>
+            </property>
+            <property name="title">
+                <string>Dataformat</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>11</number>
+                </property>
+                <property name="spacing">
+                    <number>6</number>
+                </property>
+                <widget class="QLabel" row="1" column="0">
+                    <property name="name">
+                        <cstring>TextLabel1_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Number format</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>The way numbers should be presented.</string>
+                    </property>
+                </widget>
+                <widget class="QSpinBox" row="1" column="3">
+                    <property name="name">
+                        <cstring>Decimals</cstring>
+                    </property>
+                    <property name="enabled">
+                        <bool>false</bool>
+                    </property>
+                    <property name="maxValue">
+                        <number>20</number>
+                    </property>
+                    <property name="value">
+                        <number>2</number>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>IndicateEmpty</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Indicate empty values as '' instead of NULL as {null}.</string>
+                    </property>
+                </widget>
+                <widget class="QComboBox" row="1" column="1">
+                    <item>
+                        <property name="text">
+                            <string>Default</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Scientific</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Fixed decimal</string>
+                        </property>
+                    </item>
+                    <property name="name">
+                        <cstring>NumberFormat</cstring>
+                    </property>
+                </widget>
+                <widget class="QPushButton" row="0" column="2" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>IndicateEmptyColor</cstring>
+                    </property>
+                    <property name="text">
+                        <string>NULL background color</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="1" column="2">
+                    <property name="name">
+                        <cstring>TextLabel3</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Decimals</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Number of decimals for fixed decimal format.</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>ReadAll</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>InitialFetch</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>AutoLong</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>MoveAfter</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>UnlimitedContent</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>MaxContent</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>NumberFormat</sender>
+        <signal>activated(const QString&amp;)</signal>
+        <receiver>toDatabaseSettingUI</receiver>
+        <slot>numberFormatChange()</slot>
+    </connection>
+    <connection>
+        <sender>IndicateEmptyColor</sender>
+        <signal>clicked()</signal>
+        <receiver>toDatabaseSettingUI</receiver>
+        <slot>IndicateEmptyColor_clicked()</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>AutoCommit</tabstop>
+    <tabstop>ObjectCache</tabstop>
+    <tabstop>InitialFetch</tabstop>
+    <tabstop>ReadAll</tabstop>
+    <tabstop>MaxContent</tabstop>
+    <tabstop>UnlimitedContent</tabstop>
+    <tabstop>MaxColDisp</tabstop>
+    <tabstop>IndicateEmpty</tabstop>
+    <tabstop>NumberFormat</tabstop>
+    <tabstop>Decimals</tabstop>
+    <tabstop>BkgndConnect</tabstop>
+    <tabstop>DontReread</tabstop>
+    <tabstop>AutoLong</tabstop>
+    <tabstop>MoveAfter</tabstop>
+    <tabstop>KeepAlive</tabstop>
+</tabstops>
+<includes>
+    <include location="local" impldecl="in implementation">todatabasesettingui.ui.h</include>
+</includes>
+<slots>
+    <slot>numberFormatChange()</slot>
+    <slot>IndicateEmpty_toggled( bool )</slot>
+    <slot>IndicateEmptyColor_clicked()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/todatatype.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todatatype.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todatatype.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,350 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "todatatype.h"
+#include "toextract.h"
+
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qspinbox.h>
+
+#include "todatatype.moc"
+
+toDatatype::toDatatype(toConnection &conn,
+                       const QString &def,
+                       QWidget *parent,
+                       const char *name)
+        : QHBox(parent, name)
+{
+    setup(conn);
+    setType(def);
+}
+
+toDatatype::toDatatype(toConnection &conn,
+                       QWidget *parent,
+                       const char *name)
+        : QHBox(parent, name)
+{
+    setup(conn);
+    setType("VARCHAR(32)");
+}
+
+void toDatatype::setup(toConnection &conn)
+{
+    toExtract extractor(conn, this);
+    Datatypes = extractor.datatypes();
+
+    Type = new QComboBox(this);
+    for (std::list<toExtract::datatype>::iterator i = Datatypes.begin();i != Datatypes.end();i++)
+        Type->insertItem((*i).name());
+    LeftParenthesis = new QLabel(tr("<B>(</B>"), this);
+    LeftParenthesis->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred));
+    Size = new QSpinBox(this);
+    Size->setMinValue(0);
+    Comma = new QLabel(tr("<B>,</B>"), this);
+    Comma->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred));
+    Precision = new QSpinBox(this);
+    Precision->setMinValue(0);
+    RightParenthesis = new QLabel(tr("<B>)</B>"), this);
+    RightParenthesis->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred));
+    Custom = new QLineEdit(this);
+    Custom->hide();
+    PreferCustom = false;
+
+    connect(Type, SIGNAL(activated(int)), this, SLOT(changeType(int)));
+}
+
+QString toDatatype::type() const
+{
+    QString type;
+    if (Custom->isShown())
+    {
+        type = Custom->text();
+    }
+    else
+    {
+        type = Type->currentText();
+        bool par = false;
+        if (Size->isShown())
+        {
+            type += "(";
+            par = true;
+            type += Size->text();
+        }
+        if (Precision->isShown())
+        {
+            if (!par)
+            {
+                type += "(";
+                par = true;
+            }
+            else
+                type += ",";
+            type += Precision->text();
+        }
+        if (par)
+            type += ")";
+    }
+    return type;
+}
+
+void toDatatype::setType(const QString &type)
+{
+    try
+    { // Intentionally not using the SQL parser for this
+        enum {
+            Initial,
+            AtType,
+            AtSize,
+            AtPrecision,
+            AtEnd
+        } state = Initial;
+        int startType = -1;
+        int endType = -1;
+        int size = -1;
+        int precision = -1;
+        bool valid = !PreferCustom;
+        bool endoftoken = false;
+        if (valid)
+        {
+            for (unsigned int pos = 0;pos < type.length();pos++)
+            {
+                QChar c = type.at(pos);
+                if (c.isSpace())
+                {
+                    endoftoken = true;
+                    continue;
+                }
+                switch (state)
+                {
+                case Initial:
+                    state = AtType;
+                    startType = pos;
+                    endoftoken = false;
+                    break;
+                case AtType:
+                    if (c == '(')
+                    {
+                        state = AtSize;
+                        endoftoken = false;
+                    }
+                    else if (endoftoken)
+                    {
+                        valid = false;
+                    }
+                    else
+                        endType = pos;
+                    break;
+                case AtSize:
+                    if (c.isDigit() && (!endoftoken || size == -1))
+                    {
+                        if (size == -1)
+                            size = ((char)c) - '0';
+                        else
+                            size = size * 10 + ((char)c) - '0';
+                        endoftoken = false;
+                    }
+                    else if (size == -1)
+                        valid = false;
+                    else if (c == ')')
+                    {
+                        endoftoken = false;
+                        state = AtEnd;
+                    }
+                    else if (c == ',')
+                    {
+                        endoftoken = false;
+                        state = AtPrecision;
+                    }
+                    else
+                        valid = false;
+                    break;
+                case AtPrecision:
+                    if (c.isDigit() && (!endoftoken || precision == -1))
+                    {
+                        if (precision == -1)
+                            precision = ((char)c) - '0';
+                        else
+                            precision = precision * 10 + ((char)c) - '0';
+                        endoftoken = false;
+                    }
+                    else if (precision == -1)
+                        valid = false;
+                    else if (c == ')')
+                    {
+                        endoftoken = false;
+                        state = AtEnd;
+                    }
+                    else
+                        valid = false;
+                    break;
+                case AtEnd:
+                    valid = false;
+                    break;
+                }
+                if (!valid)
+                    break;
+            }
+        }
+        if (valid)
+        {
+            if (endType == -1)
+                endType = type.length();
+            if (startType >= 0)
+            {
+                QString actualtype = type.mid(startType, endType - startType + 1).upper();
+                valid = false;
+                for (int i = 0;i < Type->count();i++)
+                {
+                    if (actualtype == Type->text(i))
+                    {
+                        Type->show();
+                        Type->setCurrentItem(i);
+                        valid = true;
+                        break;
+                    }
+                }
+                if (valid)
+                {
+                    valid = false;
+                    for (std::list<toExtract::datatype>::iterator i = Datatypes.begin();i != Datatypes.end();i++)
+                    {
+                        if ((*i).name() == actualtype)
+                        {
+                            valid = true;
+                            if ((*i).hasLength())
+                            {
+                                if (size > (*i).maxLength())
+                                    valid = false;
+                                else
+                                {
+                                    Size->show();
+                                    Size->setMaxValue((*i).maxLength());
+                                    if (size != -1)
+                                        Size->setValue(size);
+                                    else
+                                        Size->setValue((*i).maxLength());
+                                }
+                            }
+                            else if (size != -1)
+                                valid = false;
+                            else
+                                Size->hide();
+                            if ((*i).hasPrecision())
+                            {
+                                if (precision > (*i).maxPrecision())
+                                    valid = false;
+                                else
+                                {
+                                    Precision->show();
+                                    Precision->setMaxValue((*i).maxPrecision());
+                                    if (precision != -1)
+                                        Precision->setValue(precision);
+                                    else
+                                        Precision->setValue((*i).maxPrecision());
+                                }
+                            }
+                            else if (precision != -1)
+                                valid = false;
+                            else
+                                Precision->hide();
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        if (!valid)
+        {
+            Custom->setText(type);
+            Custom->show();
+            Precision->hide();
+            Size->hide();
+            Type->hide();
+        }
+        else
+            Custom->hide();
+
+        setupLabels();
+    }
+    TOCATCH
+}
+
+void toDatatype::setupLabels()
+{
+    bool show = Size->isShown() || Precision->isShown();
+    RightParenthesis->setShown(show);
+    LeftParenthesis->setShown(show);
+    Comma->setShown(Size->isShown() && Precision->isShown());
+}
+
+void toDatatype::setCustom(bool prefer)
+{
+    PreferCustom = prefer;
+    setType(type());
+}
+
+void toDatatype::changeType(int id)
+{
+    QString type = Type->text(id);
+    for (std::list<toExtract::datatype>::iterator i = Datatypes.begin();i != Datatypes.end();i++)
+    {
+        if ((*i).name() == type)
+        {
+            if ((*i).hasLength())
+            {
+                Size->setShown(true);
+                Size->setMaxValue((*i).maxLength());
+            }
+            else
+                Size->setShown(false);
+            if ((*i).hasPrecision())
+            {
+                Precision->setShown(true);
+                Precision->setMaxValue((*i).maxPrecision());
+            }
+            else
+                Precision->setShown(false);
+            break;
+        }
+    }
+    setupLabels();
+}

Added: kde-extras/tora/branches/upstream/current/src/todatatype.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todatatype.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todatatype.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,106 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TO_DATATYPE
+#define TO_DATATYPE
+
+#include "config.h"
+
+#include <list>
+
+#include <qhbox.h>
+
+#include "toextract.h"
+
+class QComboBox;
+class QLabel;
+class QLineEdit;
+class QSpinBox;
+class toConnection;
+
+/**
+ * Widget used to represent a datatype selection for a column.
+ */
+
+class toDatatype : public QHBox
+{
+    Q_OBJECT
+
+    std::list<toExtract::datatype> Datatypes;
+    QComboBox *Type;
+    QLabel *LeftParenthesis;
+    QSpinBox *Size;
+    QLabel *Comma;
+    QSpinBox *Precision;
+    QLabel *RightParenthesis;
+    QLineEdit *Custom;
+    bool PreferCustom;
+
+    void setupLabels();
+    void setup(toConnection &conn);
+public:
+    /** Create the widget and specify connection and the datatype.
+     * @param conn Connection to specify datatype for.
+     * @param def Initial datatype to use.
+     * @param parent The parent widget.
+     * @param name Name of widget.
+     */
+    toDatatype(toConnection &conn, const QString &def, QWidget *parent, const char *name = NULL);
+    /** Create the widget and specify connection.
+     * @param conn Connection to specify datatype for.
+     * @param parent The parent widget.
+     * @param name Name of widget.
+     */
+    toDatatype(toConnection &conn, QWidget *parent, const char *name = NULL);
+
+    /** Get a string representation of the type.
+     */
+    QString type() const;
+public slots:
+    /** Change the type.
+     * @param type The entire type specification (Including posible size and precision)
+     */
+    void setType(const QString &type);
+    /** Indicate if you would prefer to enter a custom datatype or if posible use the simpler controls.
+     * @param prefer If true always use custom controls.
+     */
+    void setCustom(bool prefer);
+private slots:
+    void changeType(int);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/todebug.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todebug.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todebug.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,2918 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "todebug.h"
+#include "todebugchangeui.h"
+#include "todebugtext.h"
+#include "tohelp.h"
+#include "tohighlightedtext.h"
+#include "tomarkedtext.h"
+#include "tomain.h"
+#include "tooutput.h"
+#include "toparamget.h"
+#include "toresultview.h"
+#include "tosql.h"
+#include "tosqlparse.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#include <kmenubar.h>
+#endif
+
+#include <stack>
+
+#include <qbuttongroup.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qnamespace.h>
+#include <qradiobutton.h>
+#include <qregexp.h>
+#include <qsizepolicy.h>
+#include <qspinbox.h>
+#include <qsplitter.h>
+#include <qstring.h>
+#include <qtabwidget.h>
+#include <qtimer.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qworkspace.h>
+
+#include "todebug.moc"
+#include "todebugchangeui.moc"
+#include "todebugwatch.moc"
+
+#include "icons/addwatch.xpm"
+#include "icons/changewatch.xpm"
+#include "icons/close.xpm"
+#include "icons/compile.xpm"
+#include "icons/delwatch.xpm"
+#include "icons/enablebreak.xpm"
+#include "icons/execute.xpm"
+#include "icons/nextbug.xpm"
+#include "icons/prevbug.xpm"
+#include "icons/refresh.xpm"
+#include "icons/returnfrom.xpm"
+#include "icons/scansource.xpm"
+#include "icons/stepinto.xpm"
+#include "icons/stepover.xpm"
+#include "icons/stop.xpm"
+#include "icons/todebug.xpm"
+#include "icons/togglebreak.xpm"
+#include "icons/toworksheet.xpm"
+
+#define TO_ID_NEW_SHEET  (toMain::TO_TOOL_MENU_ID+ 0)
+#define TO_ID_SCAN_SOURCE (toMain::TO_TOOL_MENU_ID+ 1)
+#define TO_ID_COMPILE  (toMain::TO_TOOL_MENU_ID+ 2)
+#define TO_ID_EXECUTE  (toMain::TO_TOOL_MENU_ID+ 3)
+#define TO_ID_STOP  (toMain::TO_TOOL_MENU_ID+ 4)
+#define TO_ID_STEP_INTO  (toMain::TO_TOOL_MENU_ID+ 5)
+#define TO_ID_STEP_OVER  (toMain::TO_TOOL_MENU_ID+ 6)
+#define TO_ID_RETURN_FROM (toMain::TO_TOOL_MENU_ID+ 7)
+#define TO_ID_HEAD_TOGGLE (toMain::TO_TOOL_MENU_ID+ 8)
+#define TO_ID_DEBUG_PANE (toMain::TO_TOOL_MENU_ID+ 9)
+#define TO_ID_DEL_WATCH  (toMain::TO_TOOL_MENU_ID+10)
+#define TO_ID_CHANGE_WATCH (toMain::TO_TOOL_MENU_ID+11)
+#define TO_ID_CLOSE_EDITOR (toMain::TO_TOOL_MENU_ID+12)
+#define TO_ID_CLOSE_ALL_EDITOR      (toMain::TO_TOOL_MENU_ID+14)
+
+class toDebugTool : public toTool
+{
+    std::map<toConnection *, QWidget *> Windows;
+
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(todebug_xpm);
+    }
+public:
+    toDebugTool()
+            : toTool(110, "PL/SQL Debugger")
+    { }
+    virtual const char *menuItem()
+    {
+        return "PL/SQL Debugger";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection);
+        if (i != Windows.end())
+        {
+            (*i).second->raise();
+            (*i).second->setFocus();
+            return NULL;
+        }
+        else
+        {
+            QWidget *window = new toDebug(parent, connection);
+            Windows[&connection] = window;
+            return window;
+        }
+    }
+    void closeWindow(toConnection &connection)
+    {
+        std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection);
+        if (i != Windows.end())
+            Windows.erase(i);
+    }
+    virtual bool canHandle(toConnection &conn)
+    {
+        if (!toIsOracle(conn)){
+            return false;
+	}
+#if 1
+        QString version=conn.version();
+	if(version.left(version.find('.')).toInt()<8){
+            return false;
+	}
+#endif
+        return true;
+    }
+};
+
+static toDebugTool DebugTool;
+
+toDebugWatch::toDebugWatch(toDebug *parent)
+        : toDebugWatchUI(parent, "AddWatch", true), Debugger(parent)
+{
+    toHelp::connectDialog(this);
+    {
+        int curline, curcol;
+        Debugger->currentEditor()->getCursorPosition (&curline, &curcol);
+        Default = Debugger->currentEditor()->text(curline);
+        while (curcol > 0 && toIsIdent(Default[curcol - 1]))
+            curcol--;
+        while (curcol < int(Default.length()) && !toIsIdent(Default[curcol]))
+            curcol++;
+        Default.replace(0, curcol, QString::null);
+        curcol = 1;
+        while (curcol < int(Default.length()) && toIsIdent(Default[curcol]))
+            curcol++;
+        Default = Default.left(curcol);
+    }
+
+    Object = Debugger->currentEditor()->object();
+
+    connect(Scope, SIGNAL(clicked(int)), this, SLOT(changeScope(int)));
+    changeScope(1);
+}
+
+void toDebugWatch::changeScope(int num)
+{
+    switch (num)
+    {
+    default:
+        Name->clear();
+        Name->insertItem(Default);
+        break;
+    case 4:
+        {
+            Name->clear();
+            QString str = Debugger->currentEditor()->schema();
+            str += QString::fromLatin1(".");
+            if (!Object.isEmpty())
+            {
+                str += Object;
+                str += QString::fromLatin1(".");
+            }
+            str += Default;
+            Name->insertItem(str);
+        }
+        break;
+    }
+}
+
+QListViewItem *toDebugWatch::createWatch(QListView *watches)
+{
+    QString str;
+    switch (Scope->id(Scope->selected()))
+    {
+    case 1:
+    case 5:
+        {
+            toResultViewItem *item = new toResultViewItem(watches, NULL);
+            item->setText(0, QString::null);
+            item->setText(1, QString::null);
+            item->setText(2, Name->currentText());
+            item->setText(3, QString::null);
+            item->setText(4, QString::fromLatin1("NOCHANGE"));
+            item->setText(6, Scope->id(Scope->selected()) == 5 ? "AUTO" : "");
+            return item;
+        }
+    case 3:
+        str = Debugger->currentEditor()->schema();
+        str += QString::fromLatin1(".");
+        str += Debugger->currentEditor()->object();
+        str += QString::fromLatin1(".");
+        str += Name->currentText();
+        break;
+    case 4:
+        str = Name->currentText();
+        break;
+    }
+    QString schema;
+    QString object;
+    QString name;
+    int pos = str.find(QString::fromLatin1("."));
+    if (pos > 0)
+    {
+        schema = str.left(pos);
+        str.remove(0, pos + 1);
+    }
+    else
+    {
+        toStatusMessage(tr("Can't parse location"));
+        return NULL;
+    }
+    pos = str.find(QString::fromLatin1("."));
+    if (pos > 0)
+    {
+        object = str.left(pos);
+        str.remove(0, pos + 1);
+    }
+    toResultViewItem *item = new toResultViewItem(watches, NULL);
+    item->setText(0, schema);
+    item->setText(1, object);
+    item->setText(2, str);
+    item->setText(3, QString::null);
+    item->setText(4, QString::fromLatin1("NOCHANGE"));
+    return item;
+}
+
+static toSQL SQLDebugOutputPoll("toDebugOutput:Poll",
+                                "DECLARE\n"
+                                "   coll sys.dbms_debug_vc2coll;\n"
+                                "   ret INTEGER;\n"
+                                "   i INTEGER;\n"
+                                "   line VARCHAR2(100);\n"
+                                "   errm VARCHAR2(100);\n"
+                                "BEGIN\n"
+                                "  SYS.DBMS_DEBUG.EXECUTE('DECLARE '||\n"
+                                "                         '  pp SYS.dbms_debug_vc2coll := SYS.dbms_debug_vc2coll(); '||\n"
+                                "                         '  line VARCHAR2(100); '||\n"
+                                "                         '  ret INTEGER; '||\n"
+                                "                         'BEGIN '||\n"
+                                "                         '  SYS.DBMS_OUTPUT.GET_LINE(line,ret); '||\n"
+                                "                         '  pp.EXTEND(2); '||\n"
+                                "                         '  pp(1):=ret; '||\n"
+                                "                         '  pp(2):=line; '||\n"
+                                "                         '  :1 := pp; '||\n"
+                                "                         'END;',\n"
+                                "                         -1,\n"
+                                "                         1,\n"
+                                "                         coll,\n"
+                                "                         line);\n"
+                                "  i:=coll.first;\n"
+                                "  IF i IS NOT NULL THEN\n"
+                                "    ret:=coll(i);\n"
+                                "    IF ret = 0 THEN\n"
+                                "      i:=coll.next(i);\n"
+                                "      line:=coll(i);\n"
+                                "    ELSE\n"
+                                "      line:='';\n"
+                                "    END IF;\n"
+                                "  ELSE\n"
+                                "    ret:=1;\n"
+                                "  END IF;\n"
+                                "  SELECT ret,line INTO :ret<int,out>,:line<char[101,out> FROM sys.DUAL;\n"
+                                "END;",
+                                "Poll for output in the debug session, must have same bindings");
+static toSQL SQLDebugOutputDisable("toDebugOutput:Disable",
+                                   "DECLARE\n"
+                                   "   coll sys.dbms_debug_vc2coll;\n"
+                                   "   errm VARCHAR2(100);\n"
+                                   "BEGIN\n"
+                                   "  SYS.DBMS_DEBUG.EXECUTE('BEGIN SYS.DBMS_OUTPUT.DISABLE; END;',\n"
+                                   "                         -1,\n"
+                                   "                         0,\n"
+                                   "                         coll,\n"
+                                   "                         errm);\n"
+                                   "END;",
+                                   "Disable output in the debug session");
+static toSQL SQLDebugOutputEnable("toDebugOutput:Enable",
+                                  "DECLARE\n"
+                                  "   coll sys.dbms_debug_vc2coll;\n"
+                                  "   errm VARCHAR2(100);\n"
+                                  "BEGIN\n"
+                                  "  SYS.DBMS_DEBUG.EXECUTE('BEGIN SYS.DBMS_OUTPUT.ENABLE; END;',\n"
+                                  "                         -1,\n"
+                                  "                         0,\n"
+                                  "                         coll,\n"
+                                  "                         errm);\n"
+                                  "END;",
+                                  "Enable output in the debug session");
+
+class toDebugOutput : public toOutput
+{
+    toDebug *Debugger;
+public:
+    toDebugOutput(toDebug *debug, QWidget *parent, toConnection &conn)
+            : toOutput(parent, conn), Debugger(debug)
+    {}
+    virtual void refresh(void)
+    {
+        if (Debugger->isRunning() && enabled())
+        {
+            try
+            {
+                int ret = -1;
+                do
+                {
+                    toQuery poll(connection(), SQLDebugOutputPoll);
+                    ret = poll.readValue().toInt();
+                    QString str = poll.readValueNull();
+                    if (ret == 0 || str.length())
+                        insertLine(str);
+                }
+                while (ret == 0);
+            }
+            TOCATCH
+        }
+    }
+    virtual void disable(bool dis)
+    {
+        if (Debugger->isRunning())
+        {
+            try
+            {
+                if (dis)
+                    connection().execute(SQLDebugOutputDisable);
+                else
+                    connection().execute(SQLDebugOutputEnable);
+            }
+            catch (...)
+            {
+                toStatusMessage(qApp->translate("toDebugOutput", "Couldn't enable/disable output for session"));
+            }
+        }
+    }
+};
+
+bool toDebug::isRunning(void)
+{
+    toLocker lock (Lock)
+        ;
+    return RunningTarget;
+}
+
+static toSQL SQLDebugEnable("toDebug:EnableDebug",
+                            "ALTER SESSION SET PLSQL_DEBUG = TRUE",
+                            "Enable PL/SQL debugging");
+
+static toSQL SQLDebugInit("toDebug:Initialize",
+                          "DECLARE\n"
+                          "  ret VARCHAR2(200);\n"
+                          "BEGIN\n"
+                          "  \n"
+                          "  ret:=SYS.DBMS_DEBUG.INITIALIZE;\n"
+                          "  SYS.DBMS_DEBUG.DEBUG_ON;\n"
+                          "  SELECT ret INTO :f2<char[201],out> FROM sys.DUAL;\n"
+                          "END;",
+                          "Initialize the debug session, must have same bindings");
+
+void toDebug::targetTask::run(void)
+{
+    try
+    {
+        toConnection Connection(Parent.connection());
+        try
+        {
+            Connection.execute(SQLDebugEnable);
+        }
+        catch (...)
+        {
+            toLocker lock (Parent.Lock)
+                ;
+            Parent.TargetLog += QString::fromLatin1("Couldn't enable debugging for target session\n");
+        }
+        try
+        {
+            toQuery init(Connection, SQLDebugInit);
+
+            Parent.DebuggerStarted = true;
+            toLocker lock (Parent.Lock)
+                ;
+            Parent.TargetID = init.readValue();
+            Parent.ChildSemaphore.up();
+            Parent.TargetLog += QString::fromLatin1("Debug session connected\n");
+        }
+        catch (const QString &exc)
+        {
+            toLocker lock (Parent.Lock)
+                ;
+            Parent.TargetLog += QString::fromLatin1("Couldn't start debugging:");
+            Parent.TargetLog += exc;
+            Parent.DebuggerStarted = false;
+            Parent.ChildSemaphore.up();
+            return ;
+        }
+        int colSize;
+        while (1)
+        {
+            {
+                toLocker lock (Parent.Lock)
+                    ;
+                Parent.RunningTarget = false;
+                colSize = Parent.ColumnSize;
+            }
+            Parent.TargetSemaphore.down();
+
+            QString sql;
+            toQList inParams;
+            toQList outParams;
+            {
+                toLocker lock (Parent.Lock)
+                    ;
+                Parent.RunningTarget = true;
+                sql = Parent.TargetSQL;
+                Parent.TargetSQL = "";
+                inParams = Parent.InputData;
+                Parent.InputData.clear(); // To make sure data is not shared
+                Parent.OutputData.clear();
+            }
+            Parent.StartedSemaphore.up();
+            if (sql.isEmpty())
+                break;
+
+            try
+            {
+                Parent.Lock.lock();
+                Parent.TargetLog += QString::fromLatin1("Executing SQL\n");
+                Parent.Lock.unlock();
+
+                outParams = toQuery::readQuery(Connection, sql, inParams);
+            }
+            catch (const QString &str)
+            {
+                Parent.Lock.lock();
+                Parent.TargetLog += QString::fromLatin1("Encountered error: ");
+                Parent.TargetLog += str;
+                if (!str.startsWith("ORA-06543:"))
+                    Parent.TargetException += str;
+                Parent.TargetLog += QString::fromLatin1("\n");
+                Parent.Lock.unlock();
+            }
+            catch (...)
+            {
+                Parent.Lock.lock();
+                Parent.TargetLog += QString::fromLatin1("Encountered unknown exception\n");
+                Parent.TargetException += QString::fromLatin1("Encountered unknown exception\n");
+                Parent.Lock.unlock();
+            }
+
+            {
+                toLocker lock (Parent.Lock)
+                    ;
+                Parent.OutputData = outParams;
+                Parent.TargetLog += QString::fromLatin1("Execution ended\n");
+            }
+            Parent.ChildSemaphore.up();
+        }
+
+    }
+    TOCATCH
+    toLocker lock (Parent.Lock)
+        ;
+    Parent.DebuggerStarted = false;
+    Parent.TargetLog += QString::fromLatin1("Closing debug session\n");
+    Parent.TargetThread = NULL;
+    Parent.ChildSemaphore.up();
+}
+
+static QListViewItem *toLastItem(QListViewItem *parent)
+{
+    QListViewItem *lastItem = NULL;
+    for (QListViewItem *item = parent->firstChild();item;item = item->nextSibling())
+        lastItem = item;
+    return lastItem;
+}
+
+class toContentsItem : public QListViewItem
+{
+public:
+    int Line;
+    toContentsItem(QListViewItem *parent, const QString &name, int line)
+            : QListViewItem(parent, toLastItem(parent), name)
+    {
+        Line = line;
+    }
+    toContentsItem(QListView *parent, const QString &name, const QString &id, int line)
+            : QListViewItem(parent, name, id)
+    {
+        Line = line;
+    }
+};
+
+void toDebug::reorderContent(QListViewItem *parent, int start, int diff)
+{
+    QListViewItem *next;
+    for (QListViewItem *item = parent->firstChild();item;item = next)
+    {
+        toContentsItem * cont = dynamic_cast<toContentsItem *>(item);
+        next = item->nextSibling();
+        bool del = false;
+        if (cont)
+        {
+            int line = toHighlightedText::convertLine(cont->Line, start, diff);
+            if (line >= 0)
+                cont->Line = line;
+            else
+            {
+                delete cont;
+                del = true;
+            }
+        }
+        if (!del && item->firstChild())
+            reorderContent(item, start, diff);
+    }
+}
+
+QString toDebug::editorName(const QString &schema, const QString &object, const QString &type)
+{
+    QString ret = connection().quote(schema) + "." + connection().quote(object);
+    if (type.contains("BODY"))
+        ret += tr(" body");
+    return ret;
+
+}
+
+QString toDebug::editorName(toDebugText *text)
+{
+    return editorName(text->schema(), text->object(), text->type());
+}
+
+QString toDebug::currentSchema(void)
+{
+    return Schema->currentText();
+}
+
+QListViewItem *toDebug::contents(void)
+{
+    return Contents->firstChild();
+}
+
+void toDebug::reorderContent(int start, int diff)
+{
+    QString name = currentEditor()->name();
+    for (QListViewItem *item = Contents->firstChild();item;item = item->nextSibling())
+    {
+        if (item->text(1) == name)
+            reorderContent(item, start, diff);
+    }
+}
+
+bool toDebug::hasMembers(const QString &str)
+{
+    if (str == QString::fromLatin1("PACKAGE") || str == QString::fromLatin1("PACKAGE BODY") ||
+            str == QString::fromLatin1("TYPE") || str == QString::fromLatin1("TYPE BODY"))
+        return true;
+    else
+        return false;
+}
+
+void toDebug::execute(void)
+{
+    if (RunningTarget)
+    {
+        continueExecution(TO_BREAK_CONTINUE);
+        return ;
+    }
+
+    if (!checkCompile())
+        return ;
+
+    QString curName = currentEditor()->name();
+    toHighlightedText *current = currentEditor();
+    int curline, curcol;
+    current->getCursorPosition (&curline, &curcol);
+
+    bool valid = false;
+    int line = -1;
+    if (hasMembers(currentEditor()->type()))
+    {
+        for (QListViewItem *parent = Contents->firstChild();parent;parent = parent->nextSibling())
+        {
+            printf("%s\n", (const char *)parent->text(1));
+            if (parent->text(1) == curName)
+            {
+                for (parent = parent->firstChild();parent;parent = parent->nextSibling())
+                {
+                    toContentsItem * cont = dynamic_cast<toContentsItem *>(parent);
+                    if (cont)
+                    {
+                        QString type = cont->text(0);
+                        if (cont->Line > curline)
+                            break;
+                        if (cont->Line > line)
+                        {
+                            line = cont->Line;
+                            if (type.startsWith("Procedure ") || type.startsWith("Function "))
+                                valid = true;
+                            else
+                                valid = false;
+                        }
+                    }
+                }
+                break;
+            }
+        }
+    }
+    else if (currentEditor()->type() == QString::fromLatin1("PROCEDURE") ||
+             currentEditor()->type() == QString::fromLatin1("FUNCTION"))
+    {
+        valid = true;
+        line = 0;
+    }
+
+    if (valid)
+    {
+        try
+        {
+            QString token;
+            int level = 0;
+
+            enum {
+                beginning,
+                waitingEnd,
+                returnType,
+                parType,
+                inOut,
+                name,
+                done
+            } state = beginning;
+
+            CurrentParams.clear();
+            std::list<debugParam>::iterator cp = CurrentParams.begin();
+            QString callName;
+            QString retType;
+
+            toSQLParse::editorTokenizer tokens(current, 0, line);
+
+            do
+            {
+                token = tokens.getToken();
+            }
+            while (token.upper() == QString::fromLatin1("CREATE") || token.upper() == QString::fromLatin1("OR") ||
+                    token.upper() == QString::fromLatin1("REPLACE"));
+
+            if (token.upper() != QString::fromLatin1("FUNCTION") && token.upper() != QString::fromLatin1("PROCEDURE"))
+            {
+                toStatusMessage(tr("Expected function or procedure, internal error"));
+                return ;
+            }
+            do
+            {
+                token = tokens.getToken();
+                if (token.isEmpty())
+                {
+                    toStatusMessage(tr("Unexpected end of declaration."));
+                    return ;
+                }
+                if (state == returnType)
+                {
+                    if (retType.isEmpty() || retType.at(retType.length() - 1) == '.' || token == QString::fromLatin1("."))
+                        retType += token;
+                    else
+                        state = done;
+                }
+                else if (token.upper() == QString::fromLatin1("RETURN") && level == 0)
+                {
+                    state = returnType;
+                }
+                if (token == QString::fromLatin1("("))
+                {
+                    level++;
+                }
+                else if (token == QString::fromLatin1(")"))
+                    level--;
+                else if (level == 1)
+                {
+                    switch (state)
+                    {
+                    case name:
+                        {
+                            debugParam newPar;
+                            CurrentParams.insert(CurrentParams.end(), newPar);
+                            cp++;
+                            (*cp).Name = token;
+                            state = inOut;
+                            break;
+                        }
+                    case inOut:
+                        if (token.upper() == QString::fromLatin1("IN"))
+                        {
+                            (*cp).In = true;
+                            break;
+                        }
+                        else if (token.upper() == QString::fromLatin1("OUT"))
+                        {
+                            (*cp).Out = true;
+                            break;
+                        }
+                        else if (token.upper() == QString::fromLatin1("NOCOPY"))
+                            break;
+                        if (!(*cp).In && !(*cp).Out)
+                            (*cp).In = true;
+                        state = parType;
+                    case parType:
+                        if (token == QString::fromLatin1(","))
+                        {
+                            state = name;
+                            break;
+                        }
+                        else if (token.upper() == QString::fromLatin1("DEFAULT") || token == QString::fromLatin1(":="))
+                        {
+                            state = waitingEnd;
+                            break;
+                        }
+                        else
+                        {
+                            (*cp).Type += token;
+                        }
+                        break;
+                    case waitingEnd:
+                        if (token == QString::fromLatin1(","))
+                            state = name;
+                        else
+                        {
+                            if (token[0] == '\'' && token.length() >= 2)
+                                token = token.mid(1, token.length() - 2);
+                            if (token.upper() == QString::fromLatin1("NULL"))
+                                toParamGet::setDefault(connection(), (*cp).Name, QString::null);
+                            else
+                                toParamGet::setDefault(connection(), (*cp).Name, token);
+                        }
+                        break;
+                    case done:
+                    case returnType:
+                    case beginning:
+                        break;
+                    }
+                }
+                else if (state == beginning)
+                {
+                    callName = token;
+                    state = name;
+                }
+            }
+            while (state != done && token.upper() != "IS" && token.upper() != "AS" && token != ";");
+
+            QChar sep = '(';
+            QString sql;
+            if (!retType.isEmpty())
+                sql += QString::fromLatin1("DECLARE\n  ret VARCHAR2(4000);\n");
+            sql += QString::fromLatin1("BEGIN\n  ");
+            if (!retType.isEmpty())
+                sql += QString::fromLatin1("ret:=");
+            sql += currentEditor()->schema();
+            sql += QString::fromLatin1(".");
+            if (hasMembers(currentEditor()->type()))
+            {
+                sql += currentEditor()->object();
+                sql += QString::fromLatin1(".");
+            }
+            sql += callName;
+
+            Parameters->clear();
+            QListViewItem *head = new toResultViewItem(Parameters, NULL, tr("Input"));
+            QListViewItem *last = NULL;
+            head->setOpen(true);
+
+            for (std::list<debugParam>::iterator i = CurrentParams.begin();i != CurrentParams.end();i++)
+            {
+                if ((*i).In)
+                    last = new toResultViewItem(head, last, (*i).Name);
+                sql += sep;
+                sql += QString::fromLatin1(":");
+                QString nam = (*i).Name;
+                nam.replace(QRegExp(QString::fromLatin1("[^a-zA-Z0-9]+")), QString::fromLatin1("_"));
+                sql += nam;
+                sql += QString::fromLatin1("<char[");
+                sql += toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_SIZE, DEFAULT_MAX_COL_SIZE);
+                sql += QString::fromLatin1("],");
+                if ((*i).In)
+                    sql += QString::fromLatin1("in");
+                if ((*i).Out)
+                    sql += QString::fromLatin1("out");
+                sql += QString::fromLatin1(">");
+                sep = ',';
+            }
+            if (sep == ',')
+                sql += QString::fromLatin1(")");
+            if (!retType.isEmpty())
+            {
+                sql += QString::fromLatin1(";\n  SELECT ret INTO :tora_int_return<char[");
+                sql += toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_SIZE, DEFAULT_MAX_COL_SIZE);
+                sql += QString::fromLatin1("],out> FROM sys.DUAL");
+            }
+            sql += QString::fromLatin1(";\nEND;\n");
+
+            {
+                // Can't hold lock since refresh of output will try to lock
+                toQList input;
+                try
+                {
+                    input = toParamGet::getParam(connection(), this, sql);
+                }
+                catch (...)
+                {
+                    return ;
+                }
+                toLocker lock (Lock)
+                    ;
+                InputData = input;
+                last = head->firstChild();
+                if (InputData.begin() != InputData.end())
+                    for (toQList::iterator i = InputData.begin();
+                            last && i != InputData.end();
+                            i++, last = last->nextSibling())
+                    {
+                        // Is there a smarter way to make a deep copy
+                        last->setText(1, toDeepCopy(*i));
+                    }
+                else
+                    delete head;
+                ColumnSize = toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_SIZE, DEFAULT_MAX_COL_SIZE).toInt();
+                TargetSQL = toDeepCopy(sql); // Deep copy of SQL
+                TargetSemaphore.up(); // Go go power rangers!
+            }
+            StartedSemaphore.down();
+            if (sync() >= 0 && RunningTarget)
+                continueExecution(TO_BREAK_ANY_CALL);
+        }
+        TOCATCH
+    }
+    else
+        toStatusMessage(tr("Couldn't find any function or procedure under cursor."));
+}
+
+static toSQL SQLSync("toDebug:Sync",
+                     "DECLARE\n"
+                     "  ret binary_integer;\n"
+                     "  runinf SYS.DBMS_DEBUG.Runtime_Info;\n"
+                     "BEGIN\n"
+                     "  ret:=SYS.DBMS_DEBUG.SYNCHRONIZE(runinf,:info<int,in>);\n"
+                     "  SELECT ret,\n"
+                     "         runinf.Reason\n"
+                     "    INTO :ret<int,out>,\n"
+                     "         :reason<int,out>\n"
+                     "    FROM sys.DUAL;\n"
+                     "END;",
+                     "Sync with the debugging session, must have same binds");
+
+int toDebug::sync(void)
+{
+    try
+    {
+        toQList args;
+        toPush(args, toQValue(0));
+        int ret;
+        int reason;
+        do
+        {
+            toQuery sync(connection(), SQLSync, args);
+
+            ret = sync.readValue().toInt();
+            reason = sync.readValue().toInt();
+            {
+                toLocker lock (Lock)
+                    ;
+                TargetLog += QString::fromLatin1("Syncing debug session\n");
+                if (!RunningTarget)
+                {
+                    return TO_REASON_KNL_EXIT;
+                }
+            }
+#if 0
+            qApp->processEvents();
+#endif
+
+        }
+        while (reason == TO_REASON_TIMEOUT || ret == TO_ERROR_TIMEOUT);
+        setDeferedBreakpoints();
+        if (Output->enabled())
+            Output->disable(false);
+        else
+            Output->disable(true);
+        return reason;
+    }
+    TOCATCH
+    return -1;
+}
+
+static struct TypeMapType
+{
+    const char *Type;
+    const char *Description;
+    bool WantName;
+    bool Declaration;
+}
+TypeMap[] = { { "FUNCTION", "Function", true , true },    // Must be first in list
+              { "PROCEDURE", "Procedure", true , true },
+              { "PACKAGE", "Package", true , true },
+              { "DECLARE", "Anonymous", false, true },
+              { "TYPE", "Type", true , false},
+              { "CURSOR", "Cursor", true , false},
+              { "IF", "Conditional", false, false},
+              { "LOOP", "Loop", false, false},
+              { "WHILE", "Loop", false, false},
+              { "FOR", "Loop", false, false},
+              { NULL, NULL, false, false}
+            };
+
+static bool FindKeyword(toSQLParse::statement &statements, bool onlyNames, bool &declaration, int &line, QString &name)
+{
+    if (statements.Type == toSQLParse::statement::Keyword ||
+            statements.Type == toSQLParse::statement::Token)
+    {
+        line = statements.Line;
+        if (name.isEmpty())
+        {
+            name = statements.String.upper();
+
+            int j;
+            for (j = 0;TypeMap[j].Type && TypeMap[j].Type != name;j++)
+                ;
+            if (TypeMap[j].Type)
+                name = TypeMap[j].Description;
+            else
+                name = "Anonymous";
+
+            declaration = TypeMap[j].Declaration;
+
+            if (onlyNames && !TypeMap[j].WantName)
+            {
+                name = QString::null;
+                return true;
+            }
+
+            return !TypeMap[j].WantName;
+        }
+        else if (statements.String.upper() != "BODY")
+        {
+            name += " " + statements.String;
+            return true;
+        }
+        else
+            name += " body";
+    }
+    for (std::list<toSQLParse::statement>::iterator i = statements.subTokens().begin();i != statements.subTokens().end();i++)
+    {
+        bool ret = FindKeyword(*i, onlyNames, declaration, line, name);
+        if (ret)
+            return ret;
+    }
+    return false;
+}
+
+void toDebug::updateArguments(toSQLParse::statement &statements, QListViewItem *parent)
+{
+    for (std::list<toSQLParse::statement>::iterator i = statements.subTokens().begin();i != statements.subTokens().end();i++)
+    {
+        if ((*i).Type == toSQLParse::statement::List)
+        {
+            bool first = true;
+            for (std::list<toSQLParse::statement>::iterator j = (*i).subTokens().begin();j != (*i).subTokens().end();j++)
+            {
+                if ((*j).String == ",")
+                    first = true;
+                else if (first)
+                {
+                    new toContentsItem(parent, "Parameter " + (*j).String, (*j).Line);
+                    first = false;
+                }
+            }
+        }
+    }
+}
+
+void toDebug::updateContent(toSQLParse::statement &statements, QListViewItem *parent, const QString &id)
+{
+    QListViewItem *item = NULL;
+    int line;
+    QString name;
+    bool declaration;
+    if (!FindKeyword(statements, statements.Type == toSQLParse::statement::Statement, declaration, line, name) || name.isNull())
+        return ;
+
+    if (parent)
+        item = new toContentsItem(parent, name, line);
+    else
+    {
+        for (item = Contents->firstChild();item;item = item->nextSibling())
+            if (item->text(0) == name && item->text(1) == id)
+            {
+                item->setText(2, QString::null);
+                break;
+            }
+        if (!item)
+            item = new toContentsItem(Contents, name, id, line);
+        else
+        {
+            while (item->firstChild())
+                delete item->firstChild();
+            toContentsItem *ci = dynamic_cast<toContentsItem *>(item);
+            if (ci)
+                ci->Line = line;
+        }
+        item->setOpen(true);
+    }
+
+    std::list<toSQLParse::statement>::iterator i = statements.subTokens().begin();
+    if (statements.Type == toSQLParse::statement::Block)
+    {
+        if (i != statements.subTokens().end())
+        {
+            updateArguments(*i, item);
+            i++;
+        }
+    }
+    else
+    {
+        updateArguments(statements, item);
+        if (i != statements.subTokens().end())
+            i++;
+    }
+    while (i != statements.subTokens().end())
+    {
+        if ((*i).Type == toSQLParse::statement::Block || (*i).Type == toSQLParse::statement::Statement)
+        {
+            if (declaration)
+            {
+                std::list<toSQLParse::statement>::iterator j = (*i).subTokens().begin();
+                if (j != (*i).subTokens().end())
+                    if ((*j).String.upper() == "BEGIN")
+                        declaration = false;
+                    else if ((*j).Type == toSQLParse::statement::Token && (*j).String.upper() != "END")
+                        new toContentsItem(item, "Variable " + (*j).String, (*j).Line);
+            }
+            updateContent(*i, item);
+        }
+        i++;
+    }
+    if (!parent && !item->firstChild())
+        delete item;
+}
+
+void toDebug::updateContent(toDebugText *current)
+{
+    toSQLParse::editorTokenizer tokenizer(current);
+    std::list<toSQLParse::statement> statements = toSQLParse::parse(tokenizer);
+
+    QListViewItem *item;
+
+    for (item = Contents->firstChild();item;item = item->nextSibling())
+        if (item->text(1) == current->name())
+            item->setText(2, "DELETE");
+
+    for (std::list<toSQLParse::statement>::iterator i = statements.begin();i != statements.end();i++)
+        updateContent(*i, NULL, current->name());
+
+    QListViewItem *ni;
+    for (item = Contents->firstChild();item;item = ni)
+    {
+        ni = item->nextSibling();
+        if (item->text(2) == "DELETE")
+            delete item;
+    }
+}
+
+void toDebug::readLog(void)
+{
+    toLocker lock (Lock)
+        ;
+    if (!TargetLog.isEmpty())
+    {
+        TargetLog.replace(TargetLog.length() - 1, 1, QString::null);
+        RuntimeLog->insert(TargetLog);
+        RuntimeLog->setCursorPosition(RuntimeLog->lines() - 1, 0);
+        TargetLog = QString::null;
+    }
+    if (!TargetException.isEmpty())
+    {
+        toStatusMessage(TargetException);
+        TargetException = QString::null;
+    }
+}
+
+static toSQL SQLRuntimeInfo("toDebug:RuntimeInfo",
+                            "DECLARE\n"
+                            "  info SYS.DBMS_DEBUG.RUNTIME_INFO;\n"
+                            "  ret BINARY_INTEGER;\n"
+                            "BEGIN\n"
+                            "  ret:=SYS.DBMS_DEBUG.GET_RUNTIME_INFO(SYS.DBMS_DEBUG.info_getStackDepth,info);\n"
+                            "  SELECT ret,info.stackDepth INTO :ret<int,out>,:depth<int,out> FROM sys.DUAL;\n"
+                            "END;",
+                            "Get runtime info from debug session, must have same bindings");
+static toSQL SQLStackTrace("toDebug:StackTrace",
+                           "DECLARE\n"
+                           "  info SYS.DBMS_DEBUG.PROGRAM_INFO;\n"
+                           "  stack SYS.DBMS_DEBUG.BACKTRACE_TABLE;\n"
+                           "  i BINARY_INTEGER;\n"
+                           "BEGIN\n"
+                           "  SYS.DBMS_DEBUG.PRINT_BACKTRACE(stack);\n"
+                           "  i:=:num<int,in>;\n"
+                           "  info:=stack(i);\n"
+                           "  SELECT info.Name,info.Owner,info.Line#,DECODE(info.LibunitType,SYS.DBMS_DEBUG.LibunitType_cursor,'CURSOR',\n"
+                           "                                                                 SYS.DBMS_DEBUG.LibunitType_function,'FUNCTION',\n"
+                           "                                                                 SYS.DBMS_DEBUG.LibunitType_procedure,'PROCEDURE',\n"
+                           "                                                                 SYS.DBMS_DEBUG.LibunitType_package,'PACKAGE',\n"
+                           "                                                                 SYS.DBMS_DEBUG.LibunitType_package_body,'PACKAGE BODY',\n"
+                           "                                                                 SYS.DBMS_DEBUG.LibunitType_trigger,'TRIGGER',\n"
+                           "                                                                 'UNKNOWN')\n"
+                           "    INTO :name<char[101],out>,:owner<char[101],out>,:line<int,out>,:type<char[101],out> FROM sys.DUAL;\n"
+                           "END;",
+                           "Get stacktrace from debug session, must have same bindings");
+static toSQL SQLLocalWatch("toDebug:LocalWatch",
+                           "DECLARE\n"
+                           "  ret BINARY_INTEGER;\n"
+                           "  data VARCHAR2(4000);\n"
+                           "BEGIN\n"
+                           "  ret:=SYS.DBMS_DEBUG.GET_VALUE(:name<char[101],in>,0,data,NULL);\n"
+                           "  SELECT ret,data INTO :ret<int,out>,:val<char[4001],out> FROM sys.DUAL;\n"
+                           "END;",
+                           "Get data from local watch, must have same bindings");
+static toSQL SQLGlobalWatch("toDebug:GlobalWatch",
+                            "DECLARE\n"
+                            "  data VARCHAR2(4000);\n"
+                            "  proginf SYS.DBMS_DEBUG.program_info;\n"
+                            "  ret BINARY_INTEGER;\n"
+                            "BEGIN\n"
+                            "  proginf.Namespace:=SYS.DBMS_DEBUG.Namespace_pkg_body;\n"
+                            "  proginf.Name:=:object<char[101],in>;\n"
+                            "  proginf.Owner:=:owner<char[101],in>;\n"
+                            "  proginf.DBLink:=NULL;\n"
+                            "  ret:=SYS.DBMS_DEBUG.GET_VALUE(:name<char[101],in>,proginf,data,NULL);\n"
+                            "  IF ret =SYS.DBMS_DEBUG.error_no_such_object THEN\n"
+                            "    proginf.Namespace:=SYS.DBMS_DEBUG.namespace_pkgspec_or_toplevel;\n"
+                            "    ret:=SYS.DBMS_DEBUG.GET_VALUE(:name<char[101],in>,proginf,data,NULL);\n"
+                            "  END IF;\n"
+                            "  SELECT ret          ,data                ,proginf.Namespace\n"
+                            "    INTO :ret<int,out>,:val<char[4001],out>,:namespace<int,out>\n"
+                            "    FROM sys.DUAL;\n"
+                            "END;",
+                            "Get data from global watch, must have same bindings");
+static toSQL SQLLocalIndex("toDebug:LocalIndex",
+                           "DECLARE\n"
+                           "  ret BINARY_INTEGER;\n"
+                           "  proginf SYS.DBMS_DEBUG.program_info;\n"
+                           "  i BINARY_INTEGER;\n"
+                           "  indata SYS.DBMS_DEBUG.index_table;\n"
+                           "  outdata VARCHAR2(4000);\n"
+                           "BEGIN\n"
+                           "  ret:=SYS.DBMS_DEBUG.GET_INDEXES(:name<char[101],in>,0,proginf,indata);\n"
+                           "  IF ret = SYS.DBMS_DEBUG.success THEN\n"
+                           "    i:=indata.first;\n"
+                           "    WHILE i IS NOT NULL AND (LENGTH(outdata)<3900 OR outdata IS NULL) LOOP\n"
+                           "      outdata:=outdata||indata(i)||',';\n"
+                           "      i:=indata.next(i);\n"
+                           "    END LOOP;\n"
+                           "  END IF;\n"
+                           "  SELECT outdata INTO :data<char[4001],out> FROM sys.DUAL;\n"
+                           "END;",
+                           "Get indexes of local watch, must have same bindings");
+static toSQL SQLGlobalIndex("toDebug:GlobalIndex",
+                            "DECLARE\n"
+                            "  ret BINARY_INTEGER;\n"
+                            "  proginf SYS.DBMS_DEBUG.program_info;\n"
+                            "  i BINARY_INTEGER;\n"
+                            "  indata SYS.DBMS_DEBUG.index_table;\n"
+                            "  outdata VARCHAR2(4000);\n"
+                            "BEGIN\n"
+                            "  proginf.Namespace:=:namespace<int,in>;\n"
+                            "  proginf.Name:=:object<char[101],in>;\n"
+                            "  proginf.Owner:=:owner<char[101],in>;\n"
+                            "  proginf.DBLink:=NULL;\n"
+                            "  ret:=SYS.DBMS_DEBUG.GET_INDEXES(:name<char[101],in>,NULL,proginf,indata);\n"
+                            "  IF ret = SYS.DBMS_DEBUG.success THEN\n"
+                            "    i:=indata.first;\n"
+                            "    WHILE i IS NOT NULL AND (LENGTH(outdata)<3900 OR outdata IS NULL) LOOP\n"
+                            "      outdata:=outdata||indata(i)||',';\n"
+                            "      i:=indata.next(i);\n"
+                            "    END LOOP;\n"
+                            "  END IF;\n"
+                            "  SELECT outdata INTO :data<char[4001],out> FROM sys.DUAL;\n"
+                            "END;",
+                            "Get indexes of global watch, must have same bindings");
+
+void toDebug::updateState(int reason)
+{
+    switch (reason)
+    {
+    case TO_REASON_EXIT:
+    case TO_REASON_KNL_EXIT:
+        ChildSemaphore.down();
+        // Intentionally no break here
+    case TO_REASON_NO_SESSION:
+        StopButton->setEnabled(false);
+        StepOverButton->setEnabled(false);
+        StepIntoButton->setEnabled(false);
+        ReturnButton->setEnabled(false);
+        if (ToolMenu)
+        {
+            ToolMenu->setItemEnabled(TO_ID_STOP, false);
+            ToolMenu->setItemEnabled(TO_ID_STEP_INTO, false);
+            ToolMenu->setItemEnabled(TO_ID_STEP_OVER, false);
+            ToolMenu->setItemEnabled(TO_ID_RETURN_FROM, false);
+        }
+        {
+            for (int i = 0;i < Editors->count();i++)
+            {
+                toDebugText *editor = dynamic_cast<toDebugText *>(Editors->page(i));
+                editor->setCurrent( -1);
+            }
+            StackTrace->clear();
+            toLocker lock (Lock)
+                ;
+            if (OutputData.begin() != OutputData.end())
+            {
+                QListViewItem *head = Parameters->firstChild();
+                while (head && head->nextSibling())
+                    head = head->nextSibling();
+                head = new toResultViewItem(Parameters, head, tr("Output"));
+                head->setOpen(true);
+                std::list<debugParam>::iterator cp;
+                for (cp = CurrentParams.begin();cp != CurrentParams.end() && !(*cp).Out;cp++)
+                    ;
+
+                QListViewItem *last = NULL;
+                {
+                    for (toQList::iterator i = OutputData.begin();i != OutputData.end();i++)
+                    {
+                        QString name;
+                        if (cp != CurrentParams.end())
+                        {
+                            name = (*cp).Name;
+                            for (cp++;cp != CurrentParams.end() && !(*cp).Out;cp++)
+                                ;
+                        }
+                        if (name.isEmpty())
+                            name = tr("Returning");
+                        last = new toResultViewItem(head, last, name);
+                        last->setText(1, toDeepCopy(*i)); // Deep copy just to be sure
+                    }
+                }
+            }
+            QListViewItem *next = NULL;
+            for (QListViewItem *item = Watch->firstChild();item;item = next)
+            {
+                item->setText(4, QString::fromLatin1("NOCHANGE"));
+                if (item->firstChild())
+                    next = item->firstChild();
+                else if (item->nextSibling())
+                    next = item->nextSibling();
+                else
+                {
+                    next = item;
+                    do
+                    {
+                        next = next->parent();
+                    }
+                    while (next && !next->nextSibling());
+                    if (next)
+                        next = next->nextSibling();
+                }
+            }
+        }
+        break;
+    default:
+        DebugButton->setOn(true);
+        StopButton->setEnabled(true);
+        StepOverButton->setEnabled(true);
+        StepIntoButton->setEnabled(true);
+        ReturnButton->setEnabled(true);
+        if (ToolMenu)
+        {
+            ToolMenu->setItemEnabled(TO_ID_STOP, true);
+            ToolMenu->setItemEnabled(TO_ID_STEP_INTO, true);
+            ToolMenu->setItemEnabled(TO_ID_STEP_OVER, true);
+            ToolMenu->setItemEnabled(TO_ID_RETURN_FROM, true);
+        }
+        try
+        {
+            toQuery info(connection(), SQLRuntimeInfo);
+            int ret, depth;
+            ret = info.readValue().toInt();
+            depth = info.readValue().toInt();
+            if (ret != TO_SUCCESS)
+            {
+                toStatusMessage(tr("Failed to get runtime info (Reason %1)").arg(ret));
+                return ;
+            }
+
+            QListViewItem *item = NULL;
+            StackTrace->clear();
+            QString name;
+            QString schema;
+            QString line;
+            QString type;
+
+            for (int num = 2;num <= depth;num++)
+            {
+                toQList args;
+                toPush(args, toQValue(num));
+                toQuery stack(connection(), SQLStackTrace, args);
+
+                name = stack.readValue();
+                schema = stack.readValue();
+                line = stack.readValue();
+                type = stack.readValue();
+
+                if (!item)
+                    item = new QListViewItem(StackTrace, name, line, schema, type);
+                else
+                    item = new QListViewItem(item, name, line, schema, type);
+                item->setOpen(true);
+            }
+            Output->refresh();
+            try
+            {
+                {
+                    for (QListViewItem *item = Watch->firstChild();item;item = item->nextSibling())
+                    {
+                        while (item->firstChild())
+                            delete item->firstChild();
+                    }
+                }
+
+                QListViewItem *next = NULL;
+                for (QListViewItem *item = Watch->firstChild();item;item = next)
+                {
+                    int ret = -1;
+                    int space = 0;
+                    QString value;
+                    bool local = false;
+                    QString object;
+                    QString schema;
+                    if (!item->text(6).isEmpty())
+                    {
+                        local = true;
+                        toQuery query(connection(), SQLLocalWatch, item->text(2));
+                        ret = query.readValue().toInt();
+                        value = query.readValue();
+                        if (ret != TO_SUCCESS &&
+                                ret != TO_ERROR_NULLVALUE &&
+                                ret != TO_ERROR_INDEX_TABLE &&
+                                ret != TO_ERROR_NULLCOLLECTION)
+                        {
+                            object = currentEditor()->object();
+                            schema = currentEditor()->schema();
+                            local = false;
+                            toQuery q2(connection(), SQLGlobalWatch,
+                                       object,
+                                       schema,
+                                       item->text(2));
+                            ret = q2.readValue().toInt();
+                            value = q2.readValue();
+                            space = q2.readValue().toInt();
+                            item->setText(0, schema);
+                            item->setText(1, object);
+                        }
+                    }
+                    else if (item->text(0).isEmpty())
+                    {
+                        toQuery query(connection(), SQLLocalWatch, item->text(2));
+                        ret = query.readValue().toInt();
+                        value = query.readValue();
+                        local = true;
+                    }
+                    else
+                    {
+                        object = item->text(1);
+                        schema = item->text(0);
+                        toQuery query(connection(), SQLGlobalWatch,
+                                      object, schema, item->text(2));
+                        ret = query.readValue().toInt();
+                        value = query.readValue();
+                        space = query.readValue().toInt();
+                        local = false;
+                    }
+                    item->setText(4, QString::null);
+                    if (ret == TO_SUCCESS)
+                        item->setText(3, value);
+                    else if (ret == TO_ERROR_NULLVALUE)
+                    {
+                        if (toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY, "").isEmpty())
+                            item->setText(3, QString::fromLatin1("{null}"));
+                        else
+                            item->setText(3, QString::null);
+                        item->setText(5, QString::fromLatin1("NULL"));
+                    }
+                    else if (ret == TO_ERROR_NULLCOLLECTION)
+                    {
+                        item->setText(3, tr("[Count %1]").arg(0));
+                        item->setText(5, QString::fromLatin1("LIST"));
+                    }
+                    else if (ret == TO_ERROR_INDEX_TABLE)
+                    {
+                        if (local)
+                        {
+                            toQuery query(connection(), SQLLocalIndex, item->text(2));
+                            value = query.readValue();
+                        }
+                        else
+                        {
+                            toQList args;
+                            toPush(args, toQValue(space));
+                            toPush(args, toQValue(object));
+                            toPush(args, toQValue(schema));
+                            toPush(args, toQValue(item->text(2)));
+                            toQuery query(connection(), SQLGlobalIndex, args);
+                            value = query.readValue();
+                        }
+                        unsigned int start = 0;
+                        unsigned int end;
+                        QListViewItem *last = NULL;
+                        int num = 0;
+                        for (end = start;end < value.length();end++)
+                        {
+                            if (value.at(end) == ',')
+                            {
+                                if (start < end)
+                                {
+                                    QString name = item->text(2);
+                                    name += QString::fromLatin1("(");
+                                    // Why do I have to add 1 here for it to work?
+                                    name += QString::number(value.mid(start, end - start).toInt() + 1);
+                                    name += QString::fromLatin1(")");
+                                    last = new toResultViewItem(item, last);
+                                    last->setText(0, schema);
+                                    last->setText(1, object);
+                                    last->setText(2, name);
+                                    last->setText(3, value.mid(start, end - start));
+                                    last->setText(4, QString::fromLatin1("NOCHANGE"));
+                                    num++;
+                                }
+                                start = end + 1;
+                            }
+                        }
+                        QString str = tr("[Count %1]").arg(num);
+                        item->setText(3, str);
+                        item->setText(5, QString::fromLatin1("LIST"));
+                    }
+                    else
+                    {
+                        item->setText(3, ret == TO_ERROR_NO_DEBUG_INFO ? tr("{No debug info}") : tr("{Unavailable}"));
+                        item->setText(4, QString::fromLatin1("NOCHANGE"));
+                    }
+                    if (item->firstChild())
+                        next = item->firstChild();
+                    else if (item->nextSibling())
+                        next = item->nextSibling();
+                    else
+                    {
+                        next = item;
+                        do
+                        {
+                            next = next->parent();
+                        }
+                        while (next && !next->nextSibling());
+                        if (next)
+                            next = next->nextSibling();
+                    }
+                }
+            }
+            TOCATCH
+            if (depth >= 2)
+            {
+                viewSource(schema, name, type, line.toInt(), true);
+            }
+            else
+            {
+                if (RunningTarget)
+                    continueExecution(TO_BREAK_NEXT_LINE);
+                return ;
+            }
+        }
+        TOCATCH
+        break;
+    }
+    selectedWatch();
+    readLog();
+}
+
+#if 0 // Not used yet
+QString toDebug::checkWatch(const QString &name)
+{
+    int ret = -1;
+    int space = 0;
+
+    bool local;
+    QString object;
+    QString schema;
+    QString value;
+    local = true;
+    toQuery query(connection(), SQLLocalWatch, name);
+    ret = query.readValue().toInt();
+    value = query.readValue();
+    if (ret != TO_SUCCESS &&
+            ret != TO_ERROR_NULLVALUE &&
+            ret != TO_ERROR_INDEX_TABLE &&
+            ret != TO_ERROR_NULLCOLLECTION)
+    {
+        object = currentEditor()->object();
+        schema = currentEditor()->schema();
+        local = false;
+        toQuery q2(connection(), SQLGlobalWatch,
+                   object,
+                   schema,
+                   name);
+        ret = q2.readValue().toInt();
+        value = q2.readValue();
+        space = q2.readValue().toInt();
+    }
+    if (ret == TO_SUCCESS)
+        return value;
+    else if (ret == TO_ERROR_NULLVALUE)
+        return "{null}";
+    else if (ret == TO_ERROR_NULLCOLLECTION)
+        return tr("[Count %1]").arg(0);
+    else if (ret == TO_ERROR_INDEX_TABLE)
+    {
+        if (local)
+        {
+            toQuery query(connection(), SQLLocalIndex, name);
+            value = query.readValue();
+        }
+        else
+        {
+            toQList args;
+            toPush(args, toQValue(space));
+            toPush(args, toQValue(object));
+            toPush(args, toQValue(schema));
+            toPush(args, toQValue(name));
+            toQuery query(connection(), SQLGlobalIndex, args);
+            value = query.readValue();
+        }
+        unsigned int start = 0;
+        unsigned int end;
+        int num = 0;
+        QString ret;
+        for (end = start;end < value.length();end++)
+        {
+            if (value.at(end) == ',')
+            {
+                if (start < end)
+                {
+                    ret += "\n" + value.mid(start, end - start);
+                    num++;
+                }
+                start = end + 1;
+            }
+        }
+        return tr("[Count %1]").arg(num) + ret;
+    }
+    return QString::null;
+}
+#endif
+
+bool toDebug::viewSource(const QString &schema, const QString &name, const QString &type,
+                         int line, bool setCurrent)
+{
+    try
+    {
+        toDebugText *editor = NULL;
+        int row=line-1;
+        int col=0;
+        for (int i = 0;i < Editors->count();i++)
+        {
+            QString tabname = editorName(schema, name, type);
+            toDebugText *te = dynamic_cast<toDebugText *>(Editors->page(i));
+            if (Editors->tabLabel(te) == tabname)
+            {
+                editor = te;
+                break;
+            }
+            if (Editors->tabLabel(te) == tr("Unknown") && !te->isModified())
+                editor = te;
+        }
+        if (!editor)
+        {
+            editor = new toDebugText(Breakpoints, Editors, this);
+            connect(editor, SIGNAL(insertedLines(int, int)),
+                    this, SLOT(reorderContent(int, int)));
+            Editors->addTab(editor, editorName(editor));
+        }else{
+          editor->getCursorPosition(&row,&col);
+        }
+        if (editor->lines() <= 1)
+        {
+            editor->setData(schema, type, name);
+            editor->readData(connection(), StackTrace);
+            updateContent(editor);
+            Editors->changeTab(editor, editorName(editor));
+            if (editor->hasErrors())
+                Editors->setTabIconSet(editor, QIconSet(QPixmap(const_cast<const char**>(nextbug_xpm))));
+            else
+                Editors->setTabIconSet(editor, QIconSet());
+        }
+        Editors->showPage(editor);
+        editor->setCursorPosition(row, col);
+        if (setCurrent)
+          editor->setCurrent(line-1);
+        editor->setFocus();
+        return true;
+    }
+    catch (const QString &str)
+    {
+        toStatusMessage(str);
+        return false;
+    }
+}
+
+void toDebug::setDeferedBreakpoints(void)
+{
+    for (QListViewItem *item = Breakpoints->firstChild();item;item = item->nextSibling())
+    {
+        toBreakpointItem * point = dynamic_cast<toBreakpointItem *>(item);
+        if (point)
+        {
+            if (point->text(4) == tr("DEFERED"))
+                point->setBreakpoint();
+        }
+    }
+}
+
+static toSQL SQLContinue("toDebug:Continue",
+                         "DECLARE\n"
+                         "  runinf SYS.DBMS_DEBUG.runtime_info;\n"
+                         "  ret BINARY_INTEGER;\n"
+                         "BEGIN\n"
+                         "  ret:=SYS.DBMS_DEBUG.CONTINUE(runinf,:break<int,in>,NULL);\n"
+                         "  SELECT ret,\n"
+                         "         runinf.Reason\n"
+                         "    INTO :ret<int,out>,\n"
+                         "         :reason<int,out>\n"
+                         "    FROM sys.DUAL;\n"
+                         "END;",
+                         "Continue execution, must have same bindings");
+
+int toDebug::continueExecution(int stopon)
+{
+    Lock.lock();
+    if (RunningTarget)
+    {
+        Lock.unlock();
+        try
+        {
+            int ret, reason;
+            setDeferedBreakpoints();
+            while(1){
+              toQList args;
+              toPush(args, toQValue(stopon));
+              toQuery cont(connection(), SQLContinue, args);
+              ret = cont.readValue().toInt();
+              reason = cont.readValue().toInt();
+              if (reason == TO_REASON_TIMEOUT || ret == TO_ERROR_TIMEOUT)
+              {
+                reason = sync();
+                if (reason < 0)
+                  ret = -1;
+                else
+                  ret = TO_SUCCESS;
+              }
+           
+              if(ret != TO_SUCCESS)
+                return -1;
+              if(reason!=TO_REASON_STARTING)
+                break;
+            }
+            updateState(reason);
+            return reason;
+        }
+        TOCATCH
+    }
+    else
+    {
+        toStatusMessage(tr("No running target"));
+        Lock.unlock();
+        readLog();
+    }
+    return -1;
+}
+
+void toDebug::executeInTarget(const QString &str, toQList &params)
+{
+    toBusy busy;
+    {
+        toLocker lock (Lock)
+            ;
+        TargetSQL = toDeepCopy(str);
+        InputData = params;
+        TargetSemaphore.up();
+    }
+    StartedSemaphore.down();
+    int ret = sync();
+    while (ret >= 0 && ret != TO_REASON_EXIT && ret != TO_REASON_KNL_EXIT && RunningTarget)
+    {
+        ret = continueExecution(TO_BREAK_ANY_RETURN);
+    }
+    readLog();
+}
+
+void toDebug::stop(void)
+{
+    if (RunningTarget)
+        continueExecution(TO_ABORT_EXECUTION);
+}
+
+toDebug::toDebug(QWidget *main, toConnection &connection)
+        : toToolWidget(DebugTool, "debugger.html", main, connection), TargetThread()
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Debugger"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Update object list"),
+                    tr("Update object list"),
+                    this, SLOT(refresh(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    Schema = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    connect(Schema, SIGNAL(activated(int)),
+            this, SLOT(changeSchema(int)));
+
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(toworksheet_xpm)),
+                    tr("New sheet"),
+                    tr("New sheet"),
+                    this, SLOT(newSheet(void)),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(scansource_xpm)),
+                    tr("Rescan source"),
+                    tr("Rescan source"),
+                    this, SLOT(scanSource(void)),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(compile_xpm)),
+                    tr("Compile"),
+                    tr("Compile"),
+                    this, SLOT(compile(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(execute_xpm)),
+                    tr("Execute or continue execution"),
+                    tr("Execute or continue execution"),
+                    this, SLOT(execute(void)),
+                    toolbar);
+    StopButton = new QToolButton(QPixmap(const_cast<const char**>(stop_xpm)),
+                                 tr("Stop running"),
+                                 tr("Stop running"),
+                                 this, SLOT(stop(void)),
+                                 toolbar);
+    StopButton->setEnabled(false);
+    toolbar->addSeparator();
+    StepIntoButton = new QToolButton(QPixmap(const_cast<const char**>(stepinto_xpm)),
+                                     tr("Step into procedure or function"),
+                                     tr("Step into procedure or function"),
+                                     this, SLOT(stepInto(void)),
+                                     toolbar);
+    StepIntoButton->setEnabled(false);
+    StepOverButton = new QToolButton(QPixmap(const_cast<const char**>(stepover_xpm)),
+                                     tr("Step over procedure or function"),
+                                     tr("Step over procedure or function"),
+                                     this, SLOT(stepOver(void)),
+                                     toolbar);
+    StepOverButton->setEnabled(false);
+    ReturnButton = new QToolButton(QPixmap(const_cast<const char**>(returnfrom_xpm)),
+                                   tr("Return from procedure or function"),
+                                   tr("Return from procedure or function"),
+                                   this, SLOT(returnFrom(void)),
+                                   toolbar);
+    ReturnButton->setEnabled(false);
+
+    toolbar->addSeparator();
+
+    DebugButton = new QToolButton(toolbar);
+    DebugButton->setToggleButton(true);
+    DebugButton->setIconSet(QIconSet(QPixmap(const_cast<const char**>(todebug_xpm))));
+    connect(DebugButton, SIGNAL(toggled(bool)), this, SLOT(showDebug(bool)));
+    QToolTip::add
+        (DebugButton, tr("Show/hide debug info pane."));
+
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(nextbug_xpm)),
+                    tr("Go to next error"),
+                    tr("Go to next error"),
+                    this, SLOT(nextError(void)),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(prevbug_xpm)),
+                    tr("Go to previous error"),
+                    tr("Go to previous error"),
+                    this, SLOT(prevError(void)),
+                    toolbar);
+
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(togglebreak_xpm)),
+                    tr("Toggle breakpoint on current line"),
+                    tr("Toggle breakpoint on current line"),
+                    this, SLOT(toggleBreak(void)),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(enablebreak_xpm)),
+                    tr("Enable/disable breakpoint on current line"),
+                    tr("Enable/disable breakpoint on current line"),
+                    this, SLOT(toggleEnable(void)),
+                    toolbar);
+
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(addwatch_xpm)),
+                    tr("Add new variable watch"),
+                    tr("Add new variable watch"),
+                    this, SLOT(addWatch(void)),
+                    toolbar);
+    DelWatchButton = new QToolButton(QPixmap(const_cast<const char**>(delwatch_xpm)),
+                                     tr("Delete variable watch"),
+                                     tr("Delete variable watch"),
+                                     this, SLOT(deleteWatch(void)),
+                                     toolbar);
+    ChangeWatchButton = new QToolButton(QPixmap(const_cast<const char**>(changewatch_xpm)),
+                                        tr("Change value of watched variable"),
+                                        tr("Change value of watched variable"),
+                                        this, SLOT(changeWatch(void)),
+                                        toolbar);
+    DelWatchButton->setEnabled(false);
+    ChangeWatchButton->setEnabled(false);
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    QSplitter *splitter = new QSplitter(Vertical, this);
+    QSplitter *hsplitter = new QSplitter(Horizontal, splitter);
+    DebugTabs = new QTabWidget(splitter);
+    DebugTabs->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum));
+    DebugTabs->setMinimumHeight(1);
+    QValueList<int> sizes = splitter->sizes();
+    sizes[1] = 200;
+    splitter->setSizes(sizes);
+    DebugTabs->hide();
+
+    //splitter->setResizeMode(DebugTabs, QSplitter::KeepSize);
+
+    QSplitter *objSplitter = new QSplitter(Vertical, hsplitter);
+
+    Objects = new toListView(objSplitter);
+    Objects->addColumn(tr("Objects"));
+    Objects->setRootIsDecorated(true);
+    Objects->setTreeStepSize(10);
+    Objects->setSorting(0);
+    Objects->setSelectionMode(QListView::Single);
+    Objects->setResizeMode(QListView::AllColumns);
+    connect(Objects, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changePackage(QListViewItem *)));
+    Contents = new toListView(objSplitter);
+    Contents->addColumn(tr("Contents"));
+    Contents->setRootIsDecorated(true);
+    Contents->setSorting( -1);
+    Contents->setTreeStepSize(10);
+    Contents->setSelectionMode(QListView::Single);
+    Contents->setResizeMode(QListView::AllColumns);
+    connect(Contents, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeContent(QListViewItem *)));
+
+    StackTrace = new toListView(DebugTabs);
+    StackTrace->addColumn(tr("Object"));
+    StackTrace->addColumn(tr("Line"));
+    StackTrace->addColumn(tr("Schema"));
+    StackTrace->addColumn(tr("Type"));
+    StackTrace->setColumnAlignment(1, AlignRight);
+    StackTrace->setSorting( -1);
+    StackTrace->setRootIsDecorated(true);
+    StackTrace->setTreeStepSize(10);
+    StackTrace->setAllColumnsShowFocus(true);
+    StackTrace->setResizeMode(QListView::AllColumns);
+    DebugTabs->addTab(StackTrace, tr("&Stack Trace"));
+    connect(StackTrace, SIGNAL(clicked(QListViewItem *)),
+            this, SLOT(showSource(QListViewItem *)));
+
+    Watch = new toListView(DebugTabs);
+    Watch->addColumn(tr("Schema"));
+    Watch->addColumn(tr("Object"));
+    Watch->addColumn(tr("Variable"));
+    Watch->addColumn(tr("Data"));
+    Watch->setRootIsDecorated(true);
+    Watch->setTreeStepSize(10);
+    Watch->setAllColumnsShowFocus(true);
+    Watch->setResizeMode(QListView::AllColumns);
+    DebugTabs->addTab(Watch, tr("W&atch"));
+    Watch->setSelectionMode(QListView::Single);
+    connect(Watch, SIGNAL(selectionChanged(void)),
+            this, SLOT(selectedWatch(void)));
+    connect(Watch, SIGNAL(doubleClicked(QListViewItem *)),
+            this, SLOT(changeWatch(QListViewItem *)));
+
+    Breakpoints = new toListView(DebugTabs);
+    Breakpoints->addColumn(tr("Object"));
+    Breakpoints->addColumn(tr("Line"));
+    Breakpoints->addColumn(tr("Schema"));
+    Breakpoints->addColumn(tr("Object Type"));
+    Breakpoints->addColumn(tr("Enabled"));
+    Breakpoints->setColumnAlignment(1, AlignRight);
+    Breakpoints->setSorting( -1);
+    Breakpoints->setAllColumnsShowFocus(true);
+    Breakpoints->setResizeMode(QListView::AllColumns);
+    DebugTabs->addTab(Breakpoints, tr("&Breakpoints"));
+    connect(Breakpoints, SIGNAL(clicked(QListViewItem *)),
+            this, SLOT(showSource(QListViewItem *)));
+
+    Parameters = new toListView(DebugTabs);
+    Parameters->addColumn(tr("Name"));
+    Parameters->addColumn(tr("Content"));
+    Parameters->setSorting( -1);
+    Parameters->setTreeStepSize(10);
+    Parameters->setRootIsDecorated(true);
+    Parameters->setAllColumnsShowFocus(true);
+    Parameters->setResizeMode(QListView::AllColumns);
+    DebugTabs->addTab(Parameters, tr("&Parameters"));
+
+    Output = new toDebugOutput(this, DebugTabs, connection);
+    DebugTabs->addTab(Output, tr("Debug &Output"));
+
+    RuntimeLog = new toMarkedText(DebugTabs);
+    DebugTabs->addTab(RuntimeLog, tr("&Runtime Log"));
+
+    Editors = new QTabWidget(hsplitter);
+    Editors->setTabPosition(QTabWidget::Bottom);
+
+#if QT_VERSION >= 0x030200
+
+    QToolButton *closeButton = new toPopupButton(Editors);
+    closeButton->setIconSet(QPixmap(const_cast<const char**>(close_xpm)));
+    closeButton->setFixedSize(20, 18);
+
+    connect(closeButton, SIGNAL(clicked()), this, SLOT(closeEditor()));
+    Editors->setCornerWidget(closeButton);
+#endif
+
+    setFocusProxy(Editors);
+    newSheet();
+
+#if 0
+
+    {
+        QValueList<int> sizes = hsplitter->sizes();
+        sizes[0] = 200;
+        hsplitter->setSizes(sizes);
+        hsplitter->setResizeMode(objSplitter, QSplitter::KeepSize);
+    }
+#endif
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    refresh();
+    connect(&StartTimer, SIGNAL(timeout(void)), this, SLOT(startTarget(void)));
+    StartTimer.start(1, true);
+}
+
+static toSQL SQLAttach("toDebug:Attach",
+                       "DECLARE\n"
+                       "    timeout BINARY_INTEGER;\n"
+                       "BEGIN\n"
+                       "    SYS.DBMS_DEBUG.ATTACH_SESSION(:sess<char[201],in>);\n"
+                       "    timeout:=SYS.DBMS_DEBUG.SET_TIMEOUT(1);\n"
+                       "END;",
+                       "Connect to the debugging session");
+
+void toDebug::startTarget(void)
+{
+    try
+    {
+        toLocker lock (Lock)
+            ;
+        TargetThread = new toThread(new targetTask(*this));
+        TargetThread->start();
+    }
+    catch (...)
+    {
+        toStatusMessage(tr("Failed to start target task thread, close some other tools and try again"));
+        return ;
+    }
+
+    ChildSemaphore.down();
+    if (!DebuggerStarted)
+    {
+        {
+            toLocker lock (Lock)
+                ;
+            TOMessageBox::critical(this, tr("Couldn't start debugging"),
+                                   tr("Couldn't connect to target session:\n") +
+                                   TargetLog,
+                                   tr("&Ok"));
+        }
+        close(false);
+        return ;
+    }
+    try
+    {
+        connection().execute(SQLAttach, TargetID);
+    }
+    TOCATCH  // Trying to run somthing after this won't work (And will hang tora I think)
+    readLog();
+}
+
+toDebugText *toDebug::currentEditor(void)
+{
+    return dynamic_cast<toDebugText *>(Editors->currentPage());
+}
+
+void toDebug::changeSchema(int)
+{
+    refresh();
+}
+
+static toSQL SQLListObjects("toDebug:ListObjects",
+                            "SELECT Object_Type,Object_Name Type FROM SYS.ALL_OBJECTS\n"
+                            " WHERE OWNER = :owner<char[101]>\n"
+                            "   AND Object_Type IN ('FUNCTION','PACKAGE',\n"
+                            "                       'PROCEDURE','TYPE')\n"
+                            " ORDER BY Object_Type,Object_Name",
+                            "List objects available in a schema, must have same result columns");
+
+void toDebug::refresh(void)
+{
+    try
+    {
+        QString selected = Schema->currentText();
+        QString currentSchema;
+        if (selected.isEmpty())
+        {
+            selected = connection().user().upper();
+            Schema->clear();
+            toQList users = toQuery::readQuery(connection(),
+                                               toSQL::string(toSQL::TOSQL_USERLIST, connection()));
+            for (toQList::iterator i = users.begin();i != users.end();i++)
+                Schema->insertItem(*i);
+        }
+        if (!selected.isEmpty())
+        {
+            {
+                for (int i = 0;i < Schema->count();i++)
+                    if (Schema->text(i) == selected)
+                    {
+                        Schema->setCurrentItem(i);
+                        break;
+                    }
+            }
+            Objects->clear();
+
+            std::list<toConnection::objectName> &objs = connection().objects(true);
+
+            std::map<QString, QListViewItem *> typeItems;
+            bool any = false;
+            for (std::list<toConnection::objectName>::iterator i = objs.begin();
+                    i != objs.end();i++)
+            {
+                if ((*i).Owner == selected)
+                {
+                    any = true;
+                    QString type = (*i).Type;
+                    if (type == QString::fromLatin1("FUNCTION") ||
+                            type == QString::fromLatin1("PACKAGE") ||
+                            type == QString::fromLatin1("PROCEDURE") ||
+                            type == QString::fromLatin1("TYPE"))
+                    {
+                        QListViewItem *typeItem;
+                        std::map<QString, QListViewItem *>::iterator j = typeItems.find(type);
+                        if (j == typeItems.end())
+                        {
+                            typeItem = new QListViewItem(Objects, type);
+                            typeItems[type] = typeItem;
+#ifndef AUTOEXPAND
+
+                            typeItem->setSelectable(false);
+#endif
+
+                        }
+                        else
+                            typeItem = (*j).second;
+
+                        QString bodyType(type);
+                        bodyType += QString::fromLatin1(" BODY");
+                        QString name = (*i).Name;
+                        QListViewItem *item = new QListViewItem(typeItem, name, type);
+                        if (selected == currentEditor()->schema() &&
+                                (type == currentEditor()->type() ||
+                                 bodyType == currentEditor()->type()) &&
+                                name == currentEditor()->object())
+                        {
+                            Objects->setOpen(typeItem, true);
+                            Objects->setSelected(item, true);
+                        }
+                    }
+                }
+                else if (any)
+                    break;
+            }
+        }
+    }
+    TOCATCH
+}
+
+bool toDebug::checkStop(void)
+{
+    Lock.lock();
+    if (RunningTarget)
+    {
+        Lock.unlock();
+        if (TOMessageBox::information(this, tr("Stop execution?"),
+                                      tr("Do you want to abort the current execution?"),
+                                      tr("&Ok"), tr("Cancel")) != 0)
+            return false;
+        stop();
+    }
+    else
+        Lock.unlock();
+    return true;
+}
+
+bool toDebug::checkCompile(toDebugText *editor)
+{
+    if (editor->isModified())
+    {
+        switch (TOMessageBox::warning(this,
+                                      tr("%1 changed").arg(editorName(editor)),
+                                      tr("%1 changed. Continuing will discard uncompiled or saved changes").arg(editorName(editor)),
+                                      tr("&Compile"),
+                                      tr("&Discard changes"),
+                                      tr("Cancel")))
+        {
+        case 0:
+            if (!checkStop())
+                return false;
+            if (!editor->compile())
+                return false;
+            break;
+        case 1:
+            editor->setModified(false);
+            break;
+        case 2:
+            return false;
+        }
+    }
+    return true;
+}
+
+bool toDebug::checkCompile(void)
+{
+    for (int i = 0;i < Editors->count();i++)
+    {
+        toDebugText *editor = dynamic_cast<toDebugText *>(Editors->page(i));
+        if (!checkCompile(editor))
+            return false;
+    }
+    return true;
+}
+
+bool toDebug::close(bool del)
+{
+    if (checkCompile())
+        return QVBox::close(del);
+    return false;
+}
+
+void toDebug::updateCurrent()
+{
+    try
+    {
+        toDebugText *editor = currentEditor();
+
+        editor->readData(connection(), StackTrace);
+        editor->setFocus();
+
+        updateContent();
+    }
+    TOCATCH
+}
+
+void toDebug::changePackage(QListViewItem *item)
+{
+    if (item && item->parent())
+    {
+        viewSource(Schema->currentText(), item->text(0), item->text(1), 0);
+        if (item->text(1) == "PACKAGE" || item->text(1) == "TYPE")
+            viewSource(Schema->currentText(), item->text(0), item->text(1) + " BODY", 0);
+    }
+#ifdef AUTOEXPAND
+    else if (item && !item->parent())
+        item->setOpen(true);
+#endif
+}
+
+void toDebug::showDebug(bool show)
+{
+    if (show)
+        DebugTabs->show();
+    else
+        DebugTabs->hide();
+    if (ToolMenu)
+        ToolMenu->setItemChecked(TO_ID_DEBUG_PANE, show);
+}
+
+bool toDebugText::compile(void)
+{
+    QString str = text();
+    bool ret = true;
+    if (!str.isEmpty())
+    {
+        bool body = false;
+
+        toSQLParse::stringTokenizer tokens(str);
+
+        QString token = tokens.getToken();
+
+        if (token.upper() == "CREATE")
+        {
+            token = tokens.getToken();
+            if (token.upper() == "OR")
+            {
+                token = tokens.getToken();
+                if (token.upper() == "REPLACE")
+                    token = tokens.getToken();
+            }
+        }
+
+        QString type = token.upper();
+        if (type != QString::fromLatin1("PROCEDURE") &&
+                type != QString::fromLatin1("TYPE") &&
+                type != QString::fromLatin1("FUNCTION") &&
+                type != QString::fromLatin1("PACKAGE"))
+        {
+            toStatusMessage(tr("Invalid start of code"));
+            return false;
+        }
+
+        token = tokens.getToken();
+        if (token.upper() == "BODY")
+        {
+            body = true;
+            token = tokens.getToken();
+        }
+        QString object = token;
+        QString schema = Schema;
+
+        int offset = tokens.offset();
+        token = tokens.getToken();
+        if (token == ".")
+        {
+            schema = object;
+            object = tokens.getToken();
+            offset = tokens.offset();
+        }
+
+        QString sql = QString::fromLatin1("CREATE OR REPLACE ");
+        sql.append(type);
+        if (body)
+            sql.append(QString::fromLatin1(" BODY "));
+        else
+            sql.append(QString::fromLatin1(" "));
+        sql.append(schema);
+        sql.append(QString::fromLatin1("."));
+        sql.append(object);
+        sql.append(QString::fromLatin1(" "));
+        sql.append(str.mid(offset));
+
+        try
+        {
+            toQList nopar;
+            Debugger->executeInTarget(sql, nopar);
+            Schema = schema.upper();
+            Object = Debugger->connection().unQuote(object.upper());
+            Type = type.upper();
+            if (body)
+                Type += QString::fromLatin1(" BODY");
+            readErrors(Debugger->connection());
+            setModified(false);
+            toConnection::objectName no;
+            no.Name = Object;
+            no.Owner = Schema;
+            no.Type = type;
+            Debugger->connection().addIfNotExists(no);
+        }
+        catch (const QString &exc)
+        {
+            toStatusMessage(exc);
+            ret = false;
+        }
+    }
+    return ret;
+}
+
+void toDebug::compile(void)
+{
+    if (!checkStop())
+        return ;
+
+    QString lastSchema = currentEditor()->schema();
+    for (int i = 0;i < Editors->count();i++)
+    {
+        toDebugText *editor = dynamic_cast<toDebugText *>(Editors->page(i));
+        int row,col;
+        editor->getCursorPosition(&row,&col);
+        if (editor->compile())
+        {
+            if (editor == currentEditor() &&
+                    lastSchema != currentEditor()->schema())
+            {
+                for (int i = 0;i < Schema->count();i++)
+                    if (Schema->text(i) == lastSchema)
+                    {
+                        Schema->setCurrentItem(i);
+                        break;
+                    }
+            }
+            if (editor->hasErrors())
+                Editors->setTabIconSet(editor, QIconSet(QPixmap(const_cast<const char**>(nextbug_xpm))));
+            else
+                Editors->setTabIconSet(editor, QIconSet());
+            Editors->changeTab(editor, editorName(editor));
+            editor->setCursorPosition(row,col);
+        }
+        else
+            return ;
+
+    }
+    refresh();
+    scanSource();
+}
+
+toDebug::~toDebug()
+{
+    try
+    {
+        Lock.lock();
+        if (DebuggerStarted)
+        {
+            Lock.unlock();
+            stop();
+            {
+                toLocker lock (Lock)
+                    ;
+                TargetSQL = "";
+                TargetSemaphore.up();
+            }
+            ChildSemaphore.down();
+        }
+        else
+            Lock.unlock();
+    }
+    TOCATCH
+    try
+    {
+        DebugTool.closeWindow(connection());
+    }
+    TOCATCH
+}
+
+void toDebug::prevError(void)
+{
+    currentEditor()->previousError();
+}
+
+void toDebug::nextError(void)
+{
+    currentEditor()->nextError();
+}
+
+void toDebug::changeContent(QListViewItem *ci)
+{
+    toContentsItem *item = dynamic_cast<toContentsItem *>(ci);
+    if (item)
+    {
+        while (ci->parent())
+            ci = ci->parent();
+        toHighlightedText *current = NULL;
+
+        for (int i = 0;i < Editors->count();i++)
+        {
+            if (Editors->page(i)->name() == ci->text(1))
+            {
+                current = dynamic_cast<toDebugText *>(Editors->page(i));
+                break;
+            }
+        }
+        if (current)
+        {
+            current->setCursorPosition(item->Line, 0);
+            Editors->showPage(current);
+            current->setFocus();
+        }
+    }
+#ifdef AUTOEXPAND
+    else
+        ci->setOpen(true);
+#endif
+}
+
+void toDebug::scanSource(void)
+{
+    updateContent();
+}
+
+void toDebug::newSheet(void)
+{
+    toDebugText *text = new toDebugText(Breakpoints, Editors, this);
+    connect(text, SIGNAL(insertedLines(int, int)),
+            this, SLOT(reorderContent(int, int)));
+    if (!Schema->currentText().isEmpty())
+        text->setSchema(Schema->currentText());
+    else
+        text->setSchema(connection().user().upper());
+    Editors->addTab(text, tr("Unknown"));
+    Editors->showPage(text);
+}
+
+void toDebug::showSource(QListViewItem *item)
+{
+    if (item)
+        viewSource(item->text(2), item->text(0), item->text(3), item->text(1).toInt(), false);
+}
+
+void toDebug::toggleBreak(void)
+{
+    currentEditor()->toggleBreakpoint();
+    currentEditor()->setFocus();
+}
+
+void toDebug::toggleEnable(void)
+{
+    currentEditor()->toggleBreakpoint( -1, true);
+    currentEditor()->setFocus();
+}
+
+void toDebug::addWatch(void)
+{
+    toDebugWatch watch(this);
+    if (watch.exec())
+    {
+        watch.createWatch(Watch);
+        if (isRunning())
+            updateState(TO_REASON_WHATEVER);
+    }
+}
+
+void toDebug::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(toworksheet_xpm)),
+                                 tr("&New Sheet"), this, SLOT(newSheet(void)),
+                                 0, TO_ID_NEW_SHEET);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(scansource_xpm)),
+                                 tr("S&can Source"), this, SLOT(scanSource(void)),
+                                 toKeySequence(tr("Ctrl+F9", "Debug|Scan source")), TO_ID_SCAN_SOURCE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(compile_xpm)),
+                                 tr("&Compile"), this, SLOT(compile(void)),
+                                 toKeySequence(tr("F9", "Debug|Compile")), TO_ID_COMPILE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(close_xpm)),
+                                 tr("Close"), this, SLOT(closeEditor(void)),
+                                 0, TO_ID_CLOSE_EDITOR);
+            ToolMenu->insertItem(tr("CloseAll"), this, SLOT(closeAllEditor(void)),
+                                 0, TO_ID_CLOSE_ALL_EDITOR);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(execute_xpm)),
+                                 tr("&Execute or continue"), this, SLOT(execute(void)),
+                                 toKeySequence(tr("Ctrl+Return", "Debug|Execute")), TO_ID_EXECUTE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(stop_xpm)),
+                                 tr("&Stop"), this, SLOT(stop(void)),
+                                 toKeySequence(tr("F12", "Debug|Stop")), TO_ID_STOP);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(stepinto_xpm)),
+                                 tr("Step &Into"), this, SLOT(stepInto(void)),
+                                 toKeySequence(tr("F7", "Debug|Step into")), TO_ID_STEP_INTO);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(stepover_xpm)),
+                                 tr("&Next Line"), this, SLOT(stepOver(void)),
+                                 toKeySequence(tr("F8", "Debug|Stop over")), TO_ID_STEP_OVER);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(returnfrom_xpm)),
+                                 tr("&Return From"), this, SLOT(returnFrom(void)),
+                                 toKeySequence(tr("F6", "Debug|Return from")), TO_ID_RETURN_FROM);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(tr("&Debug Pane"), this, SLOT(toggleDebug(void)),
+                                 toKeySequence(tr("F11", "Debug|Debug pane")), TO_ID_DEBUG_PANE);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(nextbug_xpm)),
+                                 tr("Next &Error"), this, SLOT(nextError(void)),
+                                 toKeySequence(tr("Ctrl+N", "Debug|Next error")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(prevbug_xpm)),
+                                 tr("Pre&vious Error"), this, SLOT(prevError(void)),
+                                 toKeySequence(tr("Ctrl+P", "Debug|Previous error")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(togglebreak_xpm)),
+                                 tr("&Toggle Breakpoint"), this, SLOT(toggleBreak(void)),
+                                 toKeySequence(tr("Ctrl+F5", "Debug|Toggle breakpoint")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(enablebreak_xpm)),
+                                 tr("D&isable Breakpoint"),
+                                 this, SLOT(toggleEnable(void)),
+                                 toKeySequence(tr("Ctrl+F6", "Debug|Disable breakpoint")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(addwatch_xpm)),
+                                 tr("&Add Watch..."), this, SLOT(addWatch(void)),
+                                 toKeySequence(tr("F4", "Debug|Add watch")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(delwatch_xpm)),
+                                 tr("Delete &Watch"), this, SLOT(deleteWatch(void)),
+                                 toKeySequence(tr("Ctrl+Delete", "Debug|Delete watch")), TO_ID_DEL_WATCH);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(changewatch_xpm)),
+                                 tr("Chan&ge Watch..."), this, SLOT(changeWatch(void)),
+                                 toKeySequence(tr("Ctrl+F4", "Debug|Change watch")), TO_ID_CHANGE_WATCH);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(tr("Refresh Object List"), this, SLOT(refresh()),
+                                 toKeySequence(tr("F5", "Debug|Refresh objectlist")));
+            ToolMenu->insertItem(tr("Select Schema"), Schema, SLOT(setFocus(void)),
+                                 toKeySequence(tr("Alt+S", "Debug|Select schema")));
+            ToolMenu->insertItem(tr("Erase Runtime &Log"), this, SLOT(clearLog(void)));
+
+            toMainWidget()->menuBar()->insertItem(tr("&Debug"), ToolMenu, -1, toToolMenuIndex());
+            if (!isRunning())
+            {
+                ToolMenu->setItemEnabled(TO_ID_STOP, false);
+                ToolMenu->setItemEnabled(TO_ID_STEP_INTO, false);
+                ToolMenu->setItemEnabled(TO_ID_STEP_OVER, false);
+                ToolMenu->setItemEnabled(TO_ID_RETURN_FROM, false);
+            }
+            if (!DebugTabs->isHidden())
+                ToolMenu->setItemChecked(TO_ID_DEBUG_PANE, true);
+
+            if (!DelWatchButton->isEnabled())
+                ToolMenu->setItemEnabled(TO_ID_DEL_WATCH, false);
+            if (!ChangeWatchButton->isEnabled())
+                ToolMenu->setItemEnabled(TO_ID_CHANGE_WATCH, false);
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+void toDebug::toggleDebug(void)
+{
+    DebugButton->setOn(!DebugButton->isOn());
+}
+
+void toDebug::selectedWatch()
+{
+    QListViewItem *item = Watch->selectedItem();
+    if (item)
+    {
+        if (!item->text(5).isEmpty() && item->text(5) != QString::fromLatin1("LIST") && item->text(5) != QString::fromLatin1("NULL"))
+        {
+            DelWatchButton->setEnabled(false);
+            if (ToolMenu)
+                ToolMenu->setItemEnabled(TO_ID_DEL_WATCH, false);
+        }
+        else
+        {
+            DelWatchButton->setEnabled(true);
+            if (ToolMenu)
+                ToolMenu->setItemEnabled(TO_ID_DEL_WATCH, true);
+        }
+        if (item->text(4).isEmpty())
+        {
+            ChangeWatchButton->setEnabled(true);
+            if (ToolMenu)
+                ToolMenu->setItemEnabled(TO_ID_CHANGE_WATCH, true);
+        }
+        else
+        {
+            ChangeWatchButton->setEnabled(false);
+            if (ToolMenu)
+                ToolMenu->setItemEnabled(TO_ID_CHANGE_WATCH, false);
+        }
+    }
+    else
+    {
+        DelWatchButton->setEnabled(false);
+        ChangeWatchButton->setEnabled(false);
+        if (ToolMenu)
+        {
+            ToolMenu->setItemEnabled(TO_ID_DEL_WATCH, false);
+            ToolMenu->setItemEnabled(TO_ID_CHANGE_WATCH, false);
+        }
+    }
+}
+
+void toDebug::deleteWatch(void)
+{
+    delete Watch->selectedItem();
+}
+
+void toDebug::clearLog(void)
+{
+    RuntimeLog->clear();
+}
+
+void toDebug::changeWatch(void)
+{
+    changeWatch(Watch->selectedItem());
+}
+
+static toSQL SQLChangeLocal("toDebug:ChangeLocalWatch",
+                            "DECLARE\n"
+                            "  ret BINARY_INTEGER;\n"
+                            "  data VARCHAR2(4000);\n"
+                            "BEGIN\n"
+                            "  ret:=SYS.DBMS_DEBUG.SET_VALUE(0,:assign<char[4001],in>);\n"
+                            "  SELECT ret INTO :ret<int,out> FROM sys.DUAL;\n"
+                            "END;",
+                            "Change local watch value, must have same bindings");
+static toSQL SQLChangeGlobal("toDebug:ChangeGlobalWatch",
+                             "DECLARE\n"
+                             "  data VARCHAR2(4000);\n"
+                             "  proginf SYS.DBMS_DEBUG.program_info;\n"
+                             "  ret BINARY_INTEGER;\n"
+                             "BEGIN\n"
+                             "  proginf.Namespace:=SYS.DBMS_DEBUG.Namespace_pkg_body;\n"
+                             "  proginf.Name:=:object<char[101],in>;\n"
+                             "  proginf.Owner:=:owner<char[101],in>;\n"
+                             "  proginf.DBLink:=NULL;\n"
+                             "  ret:=SYS.DBMS_DEBUG.SET_VALUE(proginf,:assign<char[4001],in>);\n"
+                             "  IF ret =SYS.DBMS_DEBUG.error_no_such_object THEN\n"
+                             "    proginf.Namespace:=SYS.DBMS_DEBUG.namespace_pkgspec_or_toplevel;\n"
+                             "    ret:=SYS.DBMS_DEBUG.SET_VALUE(proginf,:assign<char[4001],in>);\n"
+                             "  END IF;\n"
+                             "  SELECT ret INTO :ret<int,out> FROM sys.DUAL;\n"
+                             "END;",
+                             "Change global watch value, must have same bindings");
+
+void toDebug::changeWatch(QListViewItem *item)
+{
+    if (item && item->text(4).isEmpty())
+    {
+        QString description = tr("Enter new value to the watch %1").arg(item->text(2));
+        QString data;
+
+        toDebugChangeUI dialog(this, "WatchChange", true);
+        toHelp::connectDialog(&dialog);
+
+        dialog.HeadLabel->setText(description);
+        QString index = item->text(5);
+
+        if (item->text(5) == QString::fromLatin1("NULL"))
+            dialog.NullValue->setChecked(true);
+        else
+            data = item->text(3);
+
+        if (!index.isEmpty() && index != QString::fromLatin1("LIST"))
+            dialog.Index->setValue(item->text(5).toInt());
+        if (index != QString::fromLatin1("LIST"))
+        {
+            dialog.Index->setEnabled(false);
+            dialog.Value->setText(data);
+        }
+
+        if (dialog.exec())
+        {
+            int ret = -1;
+            QString escdata;
+            QString assign;
+            if (dialog.NullValue->isChecked())
+            {
+                escdata = QString::fromLatin1("NULL");
+            }
+            else
+            {
+                escdata = data = dialog.Value->text();
+                escdata.replace(QRegExp(QString::fromLatin1("'")), QString::fromLatin1("''"));
+                escdata.prepend(QString::fromLatin1("'"));
+                escdata += QString::fromLatin1("'");
+            }
+            assign = item->text(2);
+            if (index == QString::fromLatin1("LIST"))
+            {
+                assign += QString::fromLatin1("(");
+                assign += dialog.Index->text();
+                assign += QString::fromLatin1(")");
+            }
+
+            assign += QString::fromLatin1(":=");
+            assign += escdata;
+            assign += QString::fromLatin1(";");
+            try
+            {
+                if (item->text(0).isEmpty())
+                {
+                    toQuery local(connection(), SQLChangeLocal, assign);
+                    ret = local.readValue().toInt();
+                }
+                else
+                {
+                    QString tmp = item->text(1);
+                    if (tmp.isEmpty())
+                        tmp = "";
+                    toQuery local(connection(), SQLChangeGlobal, tmp, item->text(0), assign);
+                    ret = local.readValue().toInt();
+                }
+                if (ret == TO_ERROR_UNIMPLEMENTED)
+                {
+                    toStatusMessage(tr("Unimplemented in PL/SQL debug interface"));
+                }
+                else if (ret != TO_SUCCESS)
+                {
+                    toStatusMessage(tr("Assignment failed (Reason %1)").arg(ret));
+                }
+                else
+                    updateState(TO_REASON_WHATEVER);
+            }
+            TOCATCH
+        }
+    }
+}
+
+void toDebug::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    data[prefix + ":Editors"] = Editors->count();
+    for (int i = 0;i < Editors->count();i++)
+    {
+        toHighlightedText *editor = dynamic_cast<toHighlightedText *>(Editors->page(i));
+        QCString num;
+        num.setNum(i);
+        editor->exportData(data, prefix + ":Editor:" + num);
+    }
+    data[prefix + ":Schema"] = Schema->currentText();
+
+    int id = 1;
+    for (QListViewItem *item = Breakpoints->firstChild();item;item = item->nextSibling())
+    {
+        toBreakpointItem * point = dynamic_cast<toBreakpointItem *>(item);
+
+        if (point)
+        {
+            QCString key = prefix + ":Breaks:" + QString::number(id).latin1();
+
+            data[key + ":Schema"] = point->text(2);
+            data[key + ":Object"] = point->text(0);
+            data[key + ":Type"] = point->text(3);
+            data[key + ":Line"] = QString::number(point->line());
+            if (point->text(4) == tr("DISABLED"))
+                data[key + ":Status"] = "DISABLED";
+        }
+
+        id++;
+    }
+    id = 1;
+    for (QListViewItem *qitem = Watch->firstChild();qitem;qitem = qitem->nextSibling())
+    {
+        toResultViewItem * item = dynamic_cast<toResultViewItem *>(qitem);
+        if (item)
+        {
+            QCString key = prefix + ":Watch:" + QString::number(id).latin1();
+            data[key + ":Schema"] = item->allText(0);
+            data[key + ":Object"] = item->allText(1);
+            data[key + ":Item"] = item->allText(2);
+            data[key + ":Auto"] = item->allText(6);
+        }
+        id++;
+    }
+    if (DebugButton->isOn())
+        data[prefix + ":Debug"] = QString::fromLatin1("Show");
+
+    toToolWidget::exportData(data, prefix);
+}
+
+void toDebug::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    QString str = data[prefix + ":Schema"];
+    {
+        for (int i = 0;i < Schema->count();i++)
+            if (Schema->text(i) == str)
+            {
+                Schema->setCurrentItem(i);
+                changeSchema(i);
+                break;
+            }
+    }
+
+    int count = data[prefix + ":Editors"].toInt();
+    for (int j = 0;j < count;j++)
+    {
+        toDebugText *text = new toDebugText(Breakpoints, Editors, this);
+        connect(text, SIGNAL(insertedLines(int, int)),
+                this, SLOT(reorderContent(int, int)));
+        QCString num;
+        num.setNum(j);
+        text->importData(data, prefix + ":Editor:" + num);
+        Editors->addTab(text, editorName(text));
+    }
+
+    int id = 1;
+    std::map<QCString, QString>::iterator i;
+    toBreakpointItem *debug = NULL;
+    while ((i = data.find(prefix + ":Breaks:" + QString::number(id).latin1() + ":Line")) != data.end())
+    {
+        QCString key = prefix + ":Breaks:" + QString::number(id).latin1();
+        int line = (*i).second.toInt();
+        debug = new toBreakpointItem(Breakpoints, debug,
+                                     data[key + ":Schema"],
+                                     data[key + ":Type"],
+                                     data[key + ":Object"],
+                                     line);
+        if (data[key + ":Status"] == QString::fromLatin1("DISABLED"))
+            debug->setText(4, tr("DISABLED"));
+        id++;
+    }
+    id = 1;
+    toResultViewItem *item = NULL;
+    while ((i = data.find(prefix + ":Watch:" + QString::number(id).latin1() + ":Item")) != data.end())
+    {
+        QCString key = prefix + ":Watch:" + QString::number(id).latin1();
+        item = new toResultViewItem(Watch, NULL, data[key + ":Schema"]);
+        item->setText(1, data[key + ":Object"]);
+        item->setText(2, data[key + ":Item"]);
+        item->setText(4, QString::fromLatin1("NOCHANGE"));
+        if (!data[key + ":Auto"].isEmpty())
+            item->setText(6, "AUTO");
+        id++;
+    }
+    scanSource();
+
+    DebugButton->setOn(data[prefix + ":Debug"] == QString::fromLatin1("Show"));
+
+    toToolWidget::importData(data, prefix);
+}
+
+void toDebug::closeEditor()
+{
+    toDebugText *editor = currentEditor();
+    closeEditor(editor);
+}
+
+void toDebug::closeAllEditor()
+{
+    int editorCount = Editors->count();
+    while (editorCount > 0)
+    {
+        editorCount--;
+        toDebugText *editor = dynamic_cast<toDebugText *>(Editors->page(editorCount));
+        if (editor)
+            closeEditor(editor);
+    }
+}
+
+
+void toDebug::closeEditor(toDebugText* &editor)
+{
+
+    if (editor && checkCompile(editor))
+    {
+        QString name = editor->name();
+        for (QListViewItem *item = Contents->firstChild();item;item = item->nextSibling())
+        {
+            if (item->text(1) == name)
+            {
+                delete item;
+                break;
+            }
+        }
+
+        if (Objects->selectedItem() &&
+                Objects->selectedItem()->text(0) == editor->object() &&
+                Schema->currentText() == editor->schema())
+            Objects->clearSelection();
+
+        Editors->removePage(editor);
+        delete editor;
+        if (Editors->count() == 0)
+            newSheet();
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/todebug.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todebug.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todebug.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,281 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TODEBUG_H
+#define TODEBUG_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toconnection.h"
+#include "todebugwatch.h"
+#include "tohighlightedtext.h"
+#include "tosqlparse.h"
+#include "tothread.h"
+#include "totool.h"
+
+#include <qtimer.h>
+
+#define TO_SUCCESS  0
+#define TO_NO_SUCH_BREAKPOINT 13
+#define TO_ERROR_NO_DEBUG_INFO  2
+#define TO_ERROR_ILLEGAL_LINE 12
+#define TO_ERROR_BAD_HANDLE 16
+#define TO_ERROR_UNIMPLEMENTED 17
+#define TO_ERROR_TIMEOUT 31
+#define TO_ERROR_NULLVALUE 32
+#define TO_ERROR_NULLCOLLECTION 40
+#define TO_ERROR_INDEX_TABLE 18
+
+#define TO_REASON_KNL_EXIT 25
+#define TO_REASON_NO_SESSION -1
+#define TO_REASON_TIMEOUT 17
+#define TO_REASON_EXIT  15
+#define TO_REASON_WHATEVER 0
+#define TO_REASON_STARTING 2
+
+#define TO_NAME_CURSOR  0
+#define TO_NAME_TOPLEVEL 1
+#define TO_NAME_BODY  2
+#define TO_NAME_TRIGGER  3
+#define TO_NAME_NONE  127
+
+#define TO_BREAK_CONTINUE       0
+#define TO_BREAK_EXCEPTION 2
+#define TO_BREAK_ANY_CALL 12
+#define TO_BREAK_RETURN  16
+#define TO_BREAK_NEXT_LINE 32
+#define TO_BREAK_ANY_RETURN 512
+#define TO_BREAK_HANDLER 2048
+#define TO_ABORT_EXECUTION 8192
+
+class QComboBox;
+class QListView;
+class QListViewItem;
+class QPopupMenu;
+class QTabWidget;
+class QToolButton;
+class toConnection;
+class toDebugText;
+class toMarkedText;
+class toOutput;
+
+class toDebug : public toToolWidget
+{
+    Q_OBJECT
+
+    struct debugParam
+    {
+        debugParam()
+        {
+            In = false;
+            Out = false;
+        }
+        QString Name;
+        QString Type;
+        bool In;
+        bool Out;
+    };
+
+    std::list<debugParam> CurrentParams;
+
+    // Toolbar
+    QComboBox *Schema;
+    QToolButton *StopButton;
+    QToolButton *StepOverButton;
+    QToolButton *StepIntoButton;
+    QToolButton *ReturnButton;
+    QToolButton *DebugButton;
+    QToolButton *DelWatchButton;
+    QToolButton *ChangeWatchButton;
+
+    // Extra menu
+    QPopupMenu *ToolMenu;
+
+    // Content pane
+    QListView *Objects;
+    QListView *Contents;
+
+    // Debug pane
+    QTabWidget *DebugTabs;
+    QListView *Breakpoints;
+    QListView *StackTrace;
+    QListView *Watch;
+    QListView *Parameters;
+    toOutput *Output;
+    toMarkedText *RuntimeLog;
+
+    // Editors
+    QTabWidget *Editors;
+
+    // Must hold lock before reading or writing to these
+    toLock Lock;
+    toSemaphore TargetSemaphore;
+    toSemaphore ChildSemaphore;
+    toSemaphore StartedSemaphore;
+    toThread *TargetThread;
+    QString TargetSQL;
+    QString TargetLog;
+    QString TargetException;
+    toQList InputData;
+    toQList OutputData;
+    int ColumnSize;
+    bool RunningTarget;
+    bool DebuggerStarted;
+    // Can be read after thread startup
+    QString TargetID;
+    // End of lock stuff
+    toTimer StartTimer;
+
+class targetTask : public toTask
+    {
+        toDebug &Parent;
+    public:
+        targetTask(toDebug &parent)
+                : Parent(parent)
+        { }
+        virtual void run(void);
+    };
+
+    virtual bool close(bool del);
+
+    int continueExecution(int stopon);
+
+    bool checkCompile(toDebugText *edit);
+    bool checkCompile(void);
+    void updateCurrent(void);
+    QString editorName(const QString &schema, const QString &object, const QString &type);
+    QString editorName(toDebugText *text);
+    int sync(void);
+    bool hasMembers(const QString &str);
+    void readLog(void);
+    void updateState(int reason);
+    void updateArguments(toSQLParse::statement &statements, QListViewItem *parent);
+    void updateContent(toSQLParse::statement &statements, QListViewItem *parent, const QString &id = QString::null);
+    void updateContent(toDebugText *editor);
+    void updateContent(void)
+    {
+        updateContent(currentEditor());
+    }
+    void reorderContent(QListViewItem *item, int, int);
+    bool viewSource(const QString &schema, const QString &name, const QString &type,
+                    int line, bool current = false);
+
+    void setDeferedBreakpoints(void);
+    bool checkStop(void);
+    void closeEditor(toDebugText* &editor);
+
+private slots:
+    void startTarget(void);
+public:
+    toDebug(QWidget *parent, toConnection &connection);
+
+    virtual ~toDebug();
+
+    friend class targetTask;
+
+    bool isRunning(void);
+
+    QListViewItem *contents(void);
+    toDebugText *currentEditor(void);
+    QString currentSchema(void);
+
+    void executeInTarget(const QString &, toQList &params);
+
+    QString checkWatch(const QString &name);
+
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+public slots:
+    void stop(void);
+    void compile(void);
+    void refresh(void);
+    void changeSchema(int);
+    void changePackage(QListViewItem *);
+    void showDebug(bool);
+    void prevError(void);
+    void nextError(void);
+    void changeContent(QListViewItem *);
+    void showSource(QListViewItem *);
+    void scanSource(void);
+    void reorderContent(int, int);
+    void newSheet(void);
+    void execute(void);
+    void toggleBreak(void);
+    void toggleEnable(void);
+    void addWatch(void);
+    void stepInto(void)
+    {
+        continueExecution(TO_BREAK_ANY_CALL);
+    }
+    void stepOver(void)
+    {
+        continueExecution(TO_BREAK_NEXT_LINE);
+    }
+    void returnFrom(void)
+               {
+                   continueExecution(TO_BREAK_ANY_RETURN);
+               }
+               void windowActivated(QWidget *w);
+    void toggleDebug(void);
+    void selectedWatch(void);
+    void deleteWatch(void);
+    void clearLog(void);
+    void changeWatch(void);
+    void changeWatch(QListViewItem *item);
+    void closeEditor(void);
+    void closeAllEditor(void);
+};
+
+class toDebugWatch : public toDebugWatchUI
+{
+    Q_OBJECT
+
+    QListViewItem *HeadItems;
+    QListViewItem *BodyItems;
+    toDebug *Debugger;
+    QString Object;
+    QString Default;
+    QListViewItem *findMisc(const QString &str, QListViewItem *);
+public:
+    toDebugWatch(toDebug *parent);
+
+    QListViewItem *createWatch(QListView *watches);
+public slots:
+    void changeScope(int num);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/todebugchangeui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todebugchangeui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todebugchangeui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,106 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'todebugchangeui.ui'
+**
+** Created: Tue Sep 18 08:21:22 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "todebugchangeui.h"
+
+#include <qvariant.h>
+#include <qcheckbox.h>
+#include <qpushbutton.h>
+#include <qlabel.h>
+#include <qspinbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "tomarkedtext.h"
+
+/*
+ *  Constructs a toDebugChangeUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toDebugChangeUI::toDebugChangeUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toDebugChangeUI" );
+    toDebugChangeUILayout = new QGridLayout( this, 1, 1, 11, 6, "toDebugChangeUILayout"); 
+
+    NullValue = new QCheckBox( this, "NullValue" );
+
+    toDebugChangeUILayout->addWidget( NullValue, 1, 0 );
+
+    PushButton1_2 = new QPushButton( this, "PushButton1_2" );
+
+    toDebugChangeUILayout->addWidget( PushButton1_2, 3, 2 );
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+    PushButton1->setDefault( TRUE );
+
+    toDebugChangeUILayout->addWidget( PushButton1, 3, 1 );
+
+    HeadLabel = new QLabel( this, "HeadLabel" );
+    HeadLabel->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)1, 0, 0, HeadLabel->sizePolicy().hasHeightForWidth() ) );
+
+    toDebugChangeUILayout->addMultiCellWidget( HeadLabel, 0, 0, 0, 2 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+    TextLabel1->setAlignment( int( QLabel::AlignVCenter | QLabel::AlignRight ) );
+
+    toDebugChangeUILayout->addWidget( TextLabel1, 1, 1 );
+
+    Value = new toMarkedText( this, "Value" );
+    Value->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, Value->sizePolicy().hasHeightForWidth() ) );
+
+    toDebugChangeUILayout->addMultiCellWidget( Value, 2, 2, 0, 2 );
+
+    Index = new QSpinBox( this, "Index" );
+    Index->setMaxValue( 2147483647 );
+    Index->setMinValue( -2147483647 );
+    Index->setValue( 1 );
+
+    toDebugChangeUILayout->addWidget( Index, 1, 2 );
+    languageChange();
+    resize( QSize(396, 180).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton1_2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( NullValue, SIGNAL( toggled(bool) ), Value, SLOT( setDisabled(bool) ) );
+
+    // tab order
+    setTabOrder( PushButton1, PushButton1_2 );
+
+    // buddies
+    TextLabel1->setBuddy( Index );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toDebugChangeUI::~toDebugChangeUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toDebugChangeUI::languageChange()
+{
+    setCaption( tr( "Change value of watch" ) );
+    NullValue->setText( tr( "NULL" ) );
+    PushButton1_2->setText( tr( "Cancel" ) );
+    PushButton1->setText( tr( "&Ok" ) );
+    TextLabel1->setText( tr( "&Index" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/todebugchangeui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todebugchangeui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todebugchangeui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,54 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'todebugchangeui.ui'
+**
+** Created: Tue Sep 18 08:21:22 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TODEBUGCHANGEUI_H
+#define TODEBUGCHANGEUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toMarkedText;
+class QCheckBox;
+class QPushButton;
+class QLabel;
+class QSpinBox;
+
+class toDebugChangeUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toDebugChangeUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toDebugChangeUI();
+
+    QCheckBox* NullValue;
+    QPushButton* PushButton1_2;
+    QPushButton* PushButton1;
+    QLabel* HeadLabel;
+    QLabel* TextLabel1;
+    toMarkedText* Value;
+    QSpinBox* Index;
+
+protected:
+    QGridLayout* toDebugChangeUILayout;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TODEBUGCHANGEUI_H

Added: kde-extras/tora/branches/upstream/current/src/todebugchangeui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todebugchangeui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todebugchangeui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,185 @@
+<!DOCTYPE UI><UI>
+<class>toDebugChangeUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toDebugChangeUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>396</width>
+            <height>180</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Change value of watch</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="1"  column="0" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>NullValue</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>NULL</string>
+            </property>
+        </widget>
+        <widget row="3"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <widget row="3"  column="1" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="0"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>HeadLabel</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>1</vsizetype>
+                </sizepolicy>
+            </property>
+        </widget>
+        <widget row="1"  column="1" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Index</string>
+            </property>
+            <property stdset="1">
+                <name>alignment</name>
+                <set>AlignVCenter|AlignRight</set>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Index</cstring>
+            </property>
+            <property>
+                <name>hAlign</name>
+            </property>
+        </widget>
+        <widget row="2"  column="0"  rowspan="1"  colspan="3" >
+            <class>toMarkedText</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Value</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>7</vsizetype>
+                </sizepolicy>
+            </property>
+        </widget>
+        <widget row="1"  column="2" >
+            <class>QSpinBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Index</cstring>
+            </property>
+            <property stdset="1">
+                <name>maxValue</name>
+                <number>2147483647</number>
+            </property>
+            <property stdset="1">
+                <name>minValue</name>
+                <number>-2147483647</number>
+            </property>
+            <property stdset="1">
+                <name>value</name>
+                <number>1</number>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toMarkedText</class>
+        <header location="local">tomarkedtext.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toDebugChangeUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton1_2</sender>
+        <signal>clicked()</signal>
+        <receiver>toDebugChangeUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>NullValue</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Value</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>PushButton1</tabstop>
+    <tabstop>PushButton1_2</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/todebugtext.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todebugtext.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todebugtext.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,444 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "todebug.h"
+#include "todebugtext.h"
+#include "tosql.h"
+#include "todebugtext.moc"
+
+#include <qapplication.h>
+#include <qpainter.h>
+#include <qpixmap.h>
+
+#include "icons/breakpoint.xpm"
+#include "icons/disbreakpoint.xpm"
+
+#define TO_BREAK_COL 5
+
+int toDebugText::ID = 0;
+
+toBreakpointItem::toBreakpointItem(QListView *parent, QListViewItem *after,
+                                   const QString &schema, const QString &type,
+                                   const QString &object, int line)
+        : QListViewItem(parent, after)
+{
+    if (schema.isNull())
+        setText(2, QString::null);
+    else
+        setText(2, schema);
+    if (object.isNull())
+        setText(0, QString::null);
+    else
+        setText(0, object);
+    if (type.isNull())
+        setText(3, QString::null);
+    else
+        setText(3, type);
+    setText(1, QString::number(line + 1));
+    if (type == QString::fromLatin1("PACKAGE") ||
+            type == QString::fromLatin1("PROCEDURE") ||
+            type == QString::fromLatin1("FUNCTION") ||
+            type == QString::fromLatin1("TYPE"))
+        Namespace = TO_NAME_TOPLEVEL;
+    else if (type == QString::fromLatin1("PACKAGE BODY") ||
+             type == QString::fromLatin1("TYPE BODY"))
+        Namespace = TO_NAME_BODY;
+    else
+        Namespace = TO_NAME_NONE;
+    Line = line;
+    setText(4, qApp->translate("toDebug", "DEFERED"));
+}
+
+static toSQL SQLBreakpoint("toDebug:SetBreakpoint",
+                           "DECLARE\n"
+                           "    proginf SYS.DBMS_DEBUG.PROGRAM_INFO;\n"
+                           "    bnum BINARY_INTEGER;\n"
+                           "    ret BINARY_INTEGER;\n"
+                           "BEGIN\n"
+                           "    proginf.Namespace:=:type<int,in>;\n"
+                           "    proginf.Name:=:name<char[100],in>;\n"
+                           "    proginf.Owner:=:schema<char[100],in>;\n"
+                           "    proginf.DbLink:=NULL;\n"
+                           "    proginf.LibUnitType:=SYS.DBMS_DEBUG.LibUnitType_Procedure;\n"
+                           "    proginf.EntryPointName:=NULL;\n"
+                           "    proginf.Line#:=:line<int,in>;\n"
+                           "    ret:=SYS.DBMS_DEBUG.SET_BREAKPOINT(proginf,proginf.Line#,bnum,0,1);\n"
+                           "    SELECT ret,bnum INTO :ret<int,out>,:bnum<int,out> FROM sys.DUAL;\n"
+                           "END;",
+                           "Set breakpoint, must have same bindings");
+
+
+void toBreakpointItem::setBreakpoint(void)
+{
+    bool ok = false;
+    try
+    {
+        try
+        {
+            clearBreakpoint();
+        }
+        TOCATCH // I don't the removal of the breakpoint to interact with the setting of the breakpoint
+        toConnection &conn = toCurrentConnection(listView());
+        toQList args;
+        toPush(args, toQValue(Namespace));
+        toPush(args, toQValue(text(0)));
+        toPush(args, toQValue(text(2)));
+        toPush(args, toQValue(Line + 1));
+        toQuery query(conn, SQLBreakpoint, args);
+        int ret = query.readValue().toInt();
+        if (ret == TO_SUCCESS)
+        {
+            setText(TO_BREAK_COL, query.readValue());
+            setText(4, qApp->translate("toDebug", "ENABLED"));
+            ok = true;
+        }
+        else if (ret == TO_ERROR_ILLEGAL_LINE)
+        {
+            toStatusMessage(qApp->translate("toDebug", "Can not enable breakpoint, not a valid line. Perhaps needs to recompile."));
+        }
+        else if (ret == TO_ERROR_BAD_HANDLE)
+        {
+            toStatusMessage(qApp->translate("toDebug", "Can not enable breakpoint, not a valid object. Perhaps needs to compile."));
+        }
+    }
+    TOCATCH
+    if (!ok)
+        setText(4, qApp->translate("toDebug", "NOT SET"));
+}
+
+static toSQL SQLClearBreakpoint("toDebug:ClearBreakpoint",
+                                "DECLARE\n"
+                                "    bnum BINARY_INTEGER;\n"
+                                "    ret BINARY_INTEGER;\n"
+                                "BEGIN\n"
+                                "    bnum:=:bnum<int,in>;\n"
+                                "    ret:=SYS.DBMS_DEBUG.DELETE_BREAKPOINT(bnum);\n"
+                                "    SELECT ret INTO :ret<int,out> FROM sys.DUAL;\n"
+                                "END;",
+                                "Clear breakpoint, must have same bindings");
+
+/** If something goes wrong it throws an exception (type QString with the error message */
+void toBreakpointItem::clearBreakpoint()
+{
+    if (text(4) == qApp->translate("toDebug", "ENABLED") && !text(TO_BREAK_COL).isEmpty())
+    {
+        toConnection &conn = toCurrentConnection(listView());
+        toQList args;
+        toPush(args, toQValue(text(TO_BREAK_COL)));
+        toQuery query(conn, SQLClearBreakpoint, args);
+        int res = query.readValue().toInt();
+
+        if (res != TO_SUCCESS && res != TO_NO_SUCH_BREAKPOINT)
+        {
+            QString message = qApp->translate("toDebug", "Failed to remove breakpoint (Reason %1)").arg(res);
+            toStatusMessage(message);
+            throw(message);
+        }
+
+    }
+    setText(4, qApp->translate("toDebug", "DISABLED"));
+}
+
+#define DEBUG_INDENT 10
+
+static toSQL SQLReadSource("toDebug:ReadSource",
+                           "SELECT Text FROM SYS.All_Source\n"
+                           " WHERE OWNER = :f1<char[101]>\n"
+                           "   AND NAME = :f2<char[101]>\n"
+                           "   AND TYPE = :f3<char[101]>\n"
+                           " ORDER BY Type,Line",
+                           "Read sourcecode for object");
+static toSQL SQLReadErrors("toDebug:ReadErrors",
+                           "SELECT Line-1,Text FROM SYS.All_Errors\n"
+                           " WHERE OWNER = :f1<char[101]>\n"
+                           "   AND NAME = :f2<char[101]>\n"
+                           "   AND TYPE = :f3<char[101]>\n"
+                           " ORDER BY Type,Line",
+                           "Get lines with errors in object (Observe first line 0)");
+
+bool toDebugText::readErrors(toConnection &conn)
+{
+    try
+    {
+        toQuery errors(conn, SQLReadErrors, Schema, Object, Type);
+        std::map<int, QString> Errors;
+
+        while (!errors.eof())
+        {
+            int line = errors.readValue().toInt();
+            Errors[line] += QString::fromLatin1(" ");
+            Errors[line] += errors.readValue();
+        }
+        setErrors(Errors);
+        return true;
+    }
+    TOCATCH
+    return false;
+}
+bool toDebugText::readData(toConnection &conn, QListView *Stack)
+{
+    QListViewItem *item = NULL;
+    if (Stack && Stack->firstChild())
+        for (item = Stack->firstChild();item->firstChild();item = item->firstChild())
+            ;
+    try
+    {
+        toQuery lines(conn, SQLReadSource, Schema, Object, Type);
+
+        QString str;
+        while (!lines.eof())
+            str += lines.readValue();
+        setText(str);
+        setModified(false);
+        setCurrent( -1);
+
+        if (str.isEmpty())
+            return false;
+        else
+        {
+            if (item &&
+                    Schema == item->text(2) &&
+                    Object == item->text(0) &&
+                    Type == item->text(3))
+                setCurrent(item->text(1).toInt() - 1);
+
+            return readErrors(conn);
+        }
+    }
+    TOCATCH
+    return false;
+}
+
+void toDebugText::setData(const QString &schema, const QString &type, const QString &object)
+{
+    Schema = schema;
+    Type = type;
+    Object = object;
+    CurrentItem = FirstItem = NULL;
+    NoBreakpoints = false;
+    update();
+}
+
+toDebugText::toDebugText(QListView *breakpoints,
+                         QWidget *parent,
+                         toDebug *debugger)
+        : toHighlightedText(parent, QString::number(++ID).latin1()),
+        Debugger(debugger),
+        Breakpoints(breakpoints)
+{
+    //setLeftIgnore(DEBUG_INDENT);
+    setMarginWidth(0, 25);
+    setMarginWidth(1, 10);
+    setMarginSensitivity(0,true);
+    setMarginSensitivity(1,true);
+    CurrentItem = FirstItem = NULL;
+    NoBreakpoints = false;
+    connect(this,SIGNAL(marginClicked(int, int, Qt::ButtonState)),this, SLOT(toggleBreakpoint(int, int, Qt::ButtonState)));
+    breakMarker=markerDefine(new QPixmap(const_cast<const char**>(breakpoint_xpm)));
+    disabledBreakMarker=markerDefine(new QPixmap(const_cast<const char**>(disbreakpoint_xpm)));
+    setMarginMarkerMask(1,2^breakMarker|2^disabledBreakMarker);
+}
+
+bool toDebugText::checkItem(toBreakpointItem *item)
+{
+    if (!item)
+        return false;
+    if (item->text(2) == Schema &&
+            item->text(3) == Type &&
+            item->text(0) == Object)
+        return true;
+    return false;
+}
+
+void toDebugText::clear(void)
+{
+    setData(QString::null, QString::null, QString::null);
+    FirstItem = CurrentItem = NULL;
+    NoBreakpoints = false;
+    toHighlightedText::clear();
+}
+
+bool toDebugText::hasBreakpoint(int row) // This has to leave CurrentItem on the breakpoint
+{
+    if (!FirstItem && !NoBreakpoints)
+    {
+        FirstItem = dynamic_cast<toBreakpointItem *>(Breakpoints->firstChild());
+        while (!checkItem(FirstItem) && FirstItem)
+            FirstItem = dynamic_cast<toBreakpointItem *>(FirstItem->nextSibling());
+        if (!FirstItem)
+            NoBreakpoints = true;
+        CurrentItem = FirstItem;
+    }
+
+    if (!NoBreakpoints)
+    {
+        toBreakpointItem *next = dynamic_cast<toBreakpointItem *>(CurrentItem->nextSibling());
+        bool hasNext = checkItem(next);
+        int nextLine = hasNext ? next->line() : row + 1;
+
+        if (CurrentItem->line() == row)
+            return true;
+        if (row == nextLine)
+        {
+            CurrentItem = next;
+            return true;
+        }
+        if (!hasNext && row > CurrentItem->line())
+            return false;
+        if (row < CurrentItem->line())
+        {
+            if (CurrentItem == FirstItem)
+                return false;
+            CurrentItem = FirstItem;
+            return hasBreakpoint(row);
+        }
+        if (row > nextLine)
+        {
+            CurrentItem = next;
+            return hasBreakpoint(row);
+        }
+    }
+    return false;
+}
+
+void toDebugText::mouseMoveEvent(QMouseEvent *me)
+{
+    QRect view = childrenRect ();
+    if (me->x() > DEBUG_INDENT + view.left())
+    {
+        if (LastX <= DEBUG_INDENT + view.left())
+            setCursor(Qt::ibeamCursor);
+        if (me->state() != 0)
+            toHighlightedText::mouseMoveEvent(me);
+    }
+    else
+    {
+        if (LastX > DEBUG_INDENT + view.left())
+            setCursor(Qt::ibeamCursor);
+        setCursor(Qt::arrowCursor);
+    }
+    LastX = me->x();
+}
+
+void toDebugText::toggleBreakpoint(int row, bool enable)
+{
+    if (Schema.isEmpty() ||
+            Type.isEmpty() ||
+            Object.isEmpty())
+        return ;
+
+    int curcol;
+    if (row < 0)
+        getCursorPosition (&row, &curcol);
+    if (row >= 0)
+    {
+        if (hasBreakpoint(row))
+        {
+            try
+            {
+                if (enable)
+                {
+                    if (CurrentItem->text(4) == qApp->translate("toDebug", "DISABLED")){
+                        CurrentItem->setText(4, qApp->translate("toDebug", "DEFERED"));
+                        markerDelete(row,disabledBreakMarker);
+                        markerAdd(row,breakMarker);
+                    }else{
+                        CurrentItem->clearBreakpoint();
+                        markerDelete(row,breakMarker);
+                        markerAdd(row,disabledBreakMarker);
+                    }
+                }
+                else
+                {
+                    CurrentItem->clearBreakpoint();
+                    delete CurrentItem;
+                    markerDelete(row,breakMarker);
+                    markerDelete(row,disabledBreakMarker);
+                    if (FirstItem == CurrentItem)
+                    {
+                        NoBreakpoints = false;
+                        CurrentItem = FirstItem = NULL;
+                    }
+                    else
+                        CurrentItem = FirstItem;
+                }
+            }
+            TOCATCH
+
+        }
+        else if (!enable)
+        {
+            markerAdd(row,breakMarker);
+            if (CurrentItem && CurrentItem->line() > row)
+                new toBreakpointItem(Breakpoints, NULL,
+                                     Schema, Type, Object, row);
+            else
+                new toBreakpointItem(Breakpoints, CurrentItem,
+                                     Schema, Type, Object, row);
+            FirstItem = CurrentItem = NULL;
+            NoBreakpoints = false;
+        }
+        //updateCell(row, 0, false);
+    }
+}
+
+
+void toDebugText::toggleBreakpoint(int margin, int line, Qt::ButtonState   state){
+  if(margin<=1) 
+    toggleBreakpoint(line);
+}
+
+
+void toDebugText::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    toHighlightedText::exportData(data, prefix);
+    data[prefix + ":Schema"] = Schema;
+    data[prefix + ":Object"] = Object;
+    data[prefix + ":Type"] = Type;
+}
+
+void toDebugText::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    toHighlightedText::importData(data, prefix);
+    Schema = data[prefix + ":Schema"];
+    Object = data[prefix + ":Object"];
+    Type = data[prefix + ":Type"];
+    NoBreakpoints = false;
+}

Added: kde-extras/tora/branches/upstream/current/src/todebugtext.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todebugtext.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todebugtext.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,130 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TODEBUGTEXT_H
+#define TODEBUGTEXT_H
+
+#include "config.h"
+#include "tohighlightedtext.h"
+
+#include <qlistview.h>
+
+#include <algorithm>
+
+class toConnection;
+class toDebug;
+
+class toBreakpointItem : public QListViewItem
+{
+    int Line;
+    int Namespace;
+public:
+    toBreakpointItem(QListView *parent, QListViewItem *after,
+                     const QString &schema, const QString &type, const QString &object, int line);
+    void setBreakpoint(void);
+    void clearBreakpoint(void);
+    void disableBreakpoint(void);
+    void enableBreakpoint(void);
+    int line()
+    {
+        return Line;
+    }
+};
+
+class toDebugText : public toHighlightedText
+{
+Q_OBJECT
+    QString Schema;
+    QString Object;
+    QString Type;
+    int LastX;
+    toDebug *Debugger;
+
+    QListView *Breakpoints;
+    bool NoBreakpoints;
+    toBreakpointItem *FirstItem;
+    toBreakpointItem *CurrentItem;
+
+    bool checkItem(toBreakpointItem *item);
+    bool hasBreakpoint(int row);
+    int breakMarker;
+    int disabledBreakMarker;
+    static int ID;
+public:
+    toDebugText(QListView *breakpoints,
+                QWidget *parent,
+                toDebug *debugger);
+
+    void toggleBreakpoint(int row = -1, bool enable = false);
+
+    void setData(const QString &schema, const QString &type, const QString &data);
+    const QString &schema(void) const
+    {
+        return Schema;
+    }
+    const QString &object(void) const
+    {
+        return Object;
+    }
+    void setType(const QString &type)
+    {
+        setData(Schema, type, Object);
+    }
+    void setSchema(const QString &schema)
+    {
+        setData(schema, Type, Object);
+    }
+    const QString &type(void) const
+    {
+        return Type;
+    }
+    void clear(void);
+
+    bool readData(toConnection &connection, QListView *);
+    bool readErrors(toConnection &connection);
+    bool compile(void);
+
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+protected slots:
+    virtual void toggleBreakpoint(int margin, int line, Qt::ButtonState   state);
+protected:
+    virtual void mouseMoveEvent (QMouseEvent *me);
+
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/todebugwatch.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todebugwatch.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todebugwatch.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,136 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'todebugwatch.ui'
+**
+** Created: Tue Sep 18 08:21:22 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "todebugwatch.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toDebugWatchUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toDebugWatchUI::toDebugWatchUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toDebugWatchUI" );
+    toDebugWatchUILayout = new QGridLayout( this, 1, 1, 11, 6, "toDebugWatchUILayout"); 
+
+    PushButton1_2 = new QPushButton( this, "PushButton1_2" );
+
+    toDebugWatchUILayout->addWidget( PushButton1_2, 3, 1 );
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+    PushButton1->setDefault( TRUE );
+
+    toDebugWatchUILayout->addWidget( PushButton1, 3, 0 );
+
+    Name = new QComboBox( FALSE, this, "Name" );
+    Name->setEditable( TRUE );
+    Name->setDuplicatesEnabled( FALSE );
+
+    toDebugWatchUILayout->addMultiCellWidget( Name, 2, 2, 0, 1 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+    TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
+
+    toDebugWatchUILayout->addMultiCellWidget( TextLabel1, 1, 1, 0, 1 );
+
+    Scope = new QButtonGroup( this, "Scope" );
+    Scope->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, Scope->sizePolicy().hasHeightForWidth() ) );
+    Scope->setColumnLayout(0, Qt::Vertical );
+    Scope->layout()->setSpacing( 6 );
+    Scope->layout()->setMargin( 11 );
+    ScopeLayout = new QGridLayout( Scope->layout() );
+    ScopeLayout->setAlignment( Qt::AlignTop );
+
+    GlobalScope = new QRadioButton( Scope, "GlobalScope" );
+    Scope->insert( GlobalScope, 4 );
+
+    ScopeLayout->addWidget( GlobalScope, 3, 0 );
+
+    LocalScope = new QRadioButton( Scope, "LocalScope" );
+    LocalScope->setChecked( FALSE );
+    Scope->insert( LocalScope, 1 );
+
+    ScopeLayout->addWidget( LocalScope, 1, 0 );
+
+    LocalScope_2 = new QRadioButton( Scope, "LocalScope_2" );
+    LocalScope_2->setChecked( TRUE );
+    Scope->insert( LocalScope_2, 5 );
+
+    ScopeLayout->addWidget( LocalScope_2, 0, 0 );
+
+    Package = new QRadioButton( Scope, "Package" );
+    Scope->insert( Package, 3 );
+
+    ScopeLayout->addWidget( Package, 2, 0 );
+
+    toDebugWatchUILayout->addMultiCellWidget( Scope, 0, 0, 0, 1 );
+    languageChange();
+    resize( QSize(188, 228).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton1_2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+
+    // tab order
+    setTabOrder( LocalScope_2, Name );
+    setTabOrder( Name, PushButton1 );
+    setTabOrder( PushButton1, PushButton1_2 );
+    setTabOrder( PushButton1_2, LocalScope );
+    setTabOrder( LocalScope, Package );
+    setTabOrder( Package, GlobalScope );
+
+    // buddies
+    TextLabel1->setBuddy( Name );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toDebugWatchUI::~toDebugWatchUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toDebugWatchUI::languageChange()
+{
+    setCaption( tr( "Add variable watch" ) );
+    PushButton1_2->setText( tr( "Cancel" ) );
+    PushButton1->setText( tr( "&Ok" ) );
+    TextLabel1->setText( tr( "&Variable name" ) );
+    QToolTip::add( TextLabel1, tr( "Variable name to watch." ) );
+    Scope->setTitle( tr( "&Scope" ) );
+    GlobalScope->setText( tr( "&Global" ) );
+    QToolTip::add( GlobalScope, tr( "Global scope of variable." ) );
+    LocalScope->setText( tr( "&Local" ) );
+    QToolTip::add( LocalScope, tr( "Currently running scope." ) );
+    LocalScope_2->setText( tr( "&Autodetect" ) );
+    QToolTip::add( LocalScope_2, tr( "Currently running scope." ) );
+    Package->setText( tr( "&Package" ) );
+    QToolTip::add( Package, tr( "The scope of the file in the body editor." ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/todebugwatch.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todebugwatch.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todebugwatch.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,53 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'todebugwatch.ui'
+**
+** Created: Tue Sep 18 08:21:22 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TODEBUGWATCHUI_H
+#define TODEBUGWATCHUI_H
+
+#include <qvariant.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QPushButton;
+class QComboBox;
+class QLabel;
+class QButtonGroup;
+class QRadioButton;
+
+class toDebugWatchUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toDebugWatchUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toDebugWatchUI();
+
+    QPushButton* PushButton1_2;
+    QPushButton* PushButton1;
+    QComboBox* Name;
+    QLabel* TextLabel1;
+    QButtonGroup* Scope;
+    QRadioButton* GlobalScope;
+    QRadioButton* LocalScope;
+    QRadioButton* LocalScope_2;
+    QRadioButton* Package;
+
+protected:
+    QGridLayout* toDebugWatchUILayout;
+    QGridLayout* ScopeLayout;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TODEBUGWATCHUI_H

Added: kde-extras/tora/branches/upstream/current/src/todebugwatch.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todebugwatch.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todebugwatch.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,235 @@
+<!DOCTYPE UI><UI>
+<class>toDebugWatchUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toDebugWatchUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>188</width>
+            <height>228</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Add variable watch</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="3"  column="1" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <widget row="3"  column="0" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="2"  column="0"  rowspan="1"  colspan="2" >
+            <class>QComboBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Name</cstring>
+            </property>
+            <property stdset="1">
+                <name>editable</name>
+                <bool>true</bool>
+            </property>
+            <property stdset="1">
+                <name>duplicatesEnabled</name>
+                <bool>false</bool>
+            </property>
+        </widget>
+        <widget row="1"  column="0"  rowspan="1"  colspan="2" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Variable name</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Name</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Variable name to watch.</string>
+            </property>
+        </widget>
+        <widget row="0"  column="0"  rowspan="1"  colspan="2" >
+            <class>QButtonGroup</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Scope</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>7</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>&amp;Scope</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="3"  column="0" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>GlobalScope</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Global</string>
+                    </property>
+                    <property stdset="1">
+                        <name>buttonGroupId</name>
+                        <number>4</number>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Global scope of variable.</string>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>LocalScope</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Local</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>false</bool>
+                    </property>
+                    <property stdset="1">
+                        <name>buttonGroupId</name>
+                        <number>1</number>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Currently running scope.</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>LocalScope_2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Autodetect</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                    <property stdset="1">
+                        <name>buttonGroupId</name>
+                        <number>5</number>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Currently running scope.</string>
+                    </property>
+                </widget>
+                <widget row="2"  column="0" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Package</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Package</string>
+                    </property>
+                    <property stdset="1">
+                        <name>buttonGroupId</name>
+                        <number>3</number>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>The scope of the file in the body editor.</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toDebugWatchUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton1_2</sender>
+        <signal>clicked()</signal>
+        <receiver>toDebugWatchUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>LocalScope_2</tabstop>
+    <tabstop>Name</tabstop>
+    <tabstop>PushButton1</tabstop>
+    <tabstop>PushButton1_2</tabstop>
+    <tabstop>LocalScope</tabstop>
+    <tabstop>Package</tabstop>
+    <tabstop>GlobalScope</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/todefaultkeywords.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todefaultkeywords.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todefaultkeywords.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,782 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+static const char *DefaultKeywords[] =
+    {
+        "ABORT",
+        "ACCESS",
+        "ACCESSED",
+        "ACCOUNT",
+        "ACTIVATE",
+        "ADD",
+        "ADMIN",
+        "ADMINISTER",
+        "ADMINISTRATOR",
+        "ADVISE",
+        "AFTER",
+        "ALGORITHM",
+        "ALL",
+        "ALLOCATE",
+        "ALLOW",
+        "ALL_ROWS",
+        "ALTER",
+        "ALWAYS",
+        "ANALYZE",
+        "ANCILLARY",
+        "AND",
+        "ANY",
+        "APPLY",
+        "ARCHIVE",
+        "ARCHIVELOG",
+        "ARRAY",
+        "AS",
+        "ASC",
+        "ASSOCIATE",
+        "AT",
+        "ATTRIBUTE",
+        "ATTRIBUTES",
+        "AUDIT",
+        "AUTHENTICATED",
+        "AUTHID",
+        "AUTHORIZATION",
+        "AUTO",
+        "AUTOALLOCATE",
+        "AUTOEXTEND",
+        "AUTOMATIC",
+        "BACKUP",
+        "BECOME",
+        "BEFORE",
+        "BEGIN",
+        "BEHALF",
+        "BETWEEN",
+        "BFILE",
+        "BINDING",
+        "BITMAP",
+        "BITS",
+        "BLOB",
+        "BLOCK",
+        "BLOCKSIZE",
+        "BLOCK_RANGE",
+        "BODY",
+        "BOTH",
+        "BOOLEAN",
+        "BOUND",
+        "BROADCAST",
+        "BUFFER_POOL",
+        "BUILD",
+        "BULK",
+        "BY",
+        "BYTE",
+        "CACHE",
+        "CACHE_INSTANCES",
+        "CALL",
+        "CANCEL",
+        "CASCADE",
+        "CASE",
+        "CAST",
+        "CATEGORY",
+        "CERTIFICATE",
+        "CFILE",
+        "CHAINED",
+        "CHANGE",
+        "CHAR",
+        "CHARACTER",
+        "CHAR_CS",
+        "CHECK",
+        "CHECKPOINT",
+        "CHILD",
+        "CHOOSE",
+        "CHUNK",
+        "CLEAR",
+        "CLOB",
+        "CLONE",
+        "CLOSE",
+        "CLOSE_CACHED_OPEN_CURSORS",
+        "CLUSTER",
+        "COALESCE",
+        "COLLECT",
+        "COLUMN",
+        "COLUMNS",
+        "COLUMN_VALUE",
+        "COMMENT",
+        "COMMIT",
+        "COMMITTED",
+        "COMPATIBILITY",
+        "COMPILE",
+        "COMPLETE",
+        "COMPOSITE_LIMIT",
+        "COMPRESS",
+        "COMPUTE",
+        "CONFORMING",
+        "CONNECT",
+        "CONNECT_TIME",
+        "CONSIDER",
+        "CONSISTENT",
+        "CONSTRAINT",
+        "CONSTRAINTS",
+        "CONTAINER",
+        "CONTENTS",
+        "CONTEXT",
+        "CONTINUE",
+        "CONTROLFILE",
+        "CONVERT",
+        "CORRUPTION",
+        "COST",
+        "CPU_PER_CALL",
+        "CPU_PER_SESSION",
+        "CREATE",
+        "CREATE_STORED_OUTLINES",
+        "CROSS",
+        "CUBE",
+        "CURRENT",
+        "CURRENT_DATE",
+        "CURRENT_SCHEMA",
+        "CURRENT_TIME",
+        "CURRENT_TIMESTAMP",
+        "CURRENT_USER",
+        "CURSOR",
+        "CURSOR_SPECIFIC_SEGMENT",
+        "CYCLE",
+        "DANGLING",
+        "DATA",
+        "DATABASE",
+        "DATAFILE",
+        "DATAFILES",
+        "DATAOBJNO",
+        "DATE",
+        "DATE_MODE",
+        "DBA",
+        "DBTIMEZONE",
+        "DDL",
+        "DEALLOCATE",
+        "DEBUG",
+        "DEC",
+        "DECIMAL",
+        "DECLARE",
+        "DECODE",
+        "DEFAULT",
+        "DEFERRABLE",
+        "DEFERRED",
+        "DEFINED",
+        "DEFINER",
+        "DEGREE",
+        "DELAY",
+        "DELETE",
+        "DEMAND",
+        "DENSE_RANK",
+        "DEREF",
+        "DESC",
+        "DETACHED",
+        "DETERMINES",
+        "DICTIONARY",
+        "DIMENSION",
+        "DIRECTORY",
+        "DISABLE",
+        "DISASSOCIATE",
+        "DISCONNECT",
+        "DISMOUNT",
+        "DISPATCHERS",
+        "DISTINCT",
+        "DISTINGUISHED",
+        "DISTRIBUTED",
+        "DML",
+        "DOUBLE",
+        "DROP",
+        "DUMP",
+        "DYNAMIC",
+        "EACH",
+        "ELEMENT",
+        "ELSE",
+        "ELSIF",
+        "ENABLE",
+        "ENCRYPTED",
+        "ENCRYPTION",
+        "END",
+        "ENFORCE",
+        "ENTRY",
+        "ERROR_ON_OVERLAP_TIME",
+        "ESCAPE",
+        "ESTIMATE",
+        "EVENTS",
+        "EXCEPT",
+        "EXCEPTION",
+        "EXCEPTIONS",
+        "EXCHANGE",
+        "EXCLUDING",
+        "EXCLUSIVE",
+        "EXECUTE",
+        "EXEMPT",
+        "EXISTS",
+        "EXIT",
+        "EXPIRE",
+        "EXPLAIN",
+        "EXPLOSION",
+        "EXTEND",
+        "EXTENDS",
+        "EXTENT",
+        "EXTENTS",
+        "EXTERNAL",
+        "EXTERNALLY",
+        "EXTRACT",
+        "FAILED_LOGIN_ATTEMPTS",
+        "FALSE",
+        "FAST",
+        "FILE",
+        "FILTER",
+        "FINAL",
+        "FINISH",
+        "FIRST",
+        "FIRST_ROWS",
+        "FLAGGER",
+        "FLOAT",
+        "FLOB",
+        "FLUSH",
+        "FOLLOWING",
+        "FOR",
+        "FORCE",
+        "FOREIGN",
+        "FREELIST",
+        "FREELISTS",
+        "FRESH",
+        "FROM",
+        "FULL",
+        "FUNCTION",
+        "FUNCTIONS",
+        "GENERATED",
+        "GLOBAL",
+        "GLOBALLY",
+        "GLOBAL_NAME",
+        "GLOBAL_TOPIC_ENABLED",
+        "GRANT",
+        "GROUP",
+        "GROUPS",
+        "GUARD",
+        "HASH",
+        "HASHKEYS",
+        "HAVING",
+        "HEADER",
+        "HEAP",
+        "HIERARCHY",
+        "HOUR",
+        "IDENTIFIED",
+        "IDENTIFIER",
+        "IDGENERATORS",
+        "IDLE_TIME",
+        "IF",
+        "IMMEDIATE",
+        "IN",
+        "INCLUDING",
+        "INCREMENT",
+        "INCREMENTAL",
+        "INDEX",
+        "INDEXED",
+        "INDEXES",
+        "INDEXTYPE",
+        "INDEXTYPES",
+        "INDICATOR",
+        "INITIAL",
+        "INITIALIZED",
+        "INITIALLY",
+        "INITRANS",
+        "INNER",
+        "INSERT",
+        "INSTANCE",
+        "INSTANCES",
+        "INSTANTIABLE",
+        "INSTEAD",
+        "INT",
+        "INTEGER",
+        "INTEGRITY",
+        "INTERMEDIATE",
+        "INTERNAL_CONVERT",
+        "INTERNAL_USE",
+        "INTERSECT",
+        "INTERVAL",
+        "INTO",
+        "INVALIDATE",
+        "IN_MEMORY_METADATA",
+        "IS",
+        "ISOLATION",
+        "ISOLATION_LEVEL",
+        "JAVA",
+        "JOIN",
+        "KEEP",
+        "KERBEROS",
+        "KEY",
+        "KEYFILE",
+        "KEYS",
+        "KEYSIZE",
+        "KILL",
+        "LABEL",
+        "LAST",
+        "LATERAL",
+        "LAYER",
+        "LDAP_REGISTRATION",
+        "LDAP_REGISTRATION_ENABLED",
+        "LDAP_REG_SYNC_INTERVAL",
+        "LEADING",
+        "LEFT",
+        "LESS",
+        "LEVEL",
+        "LEVELS",
+        "LIBRARY",
+        "LIKE",
+        "LIKE2",
+        "LIKE4",
+        "LIKEC",
+        "LIMIT",
+        "LINK",
+        "LIST",
+        "LOB",
+        "LOCAL",
+        "LOCALTIME",
+        "LOCALTIMESTAMP",
+        "LOCATION",
+        "LOCATOR",
+        "LOCK",
+        "LOCKED",
+        "LOG",
+        "LOGFILE",
+        "LOGGING",
+        "LOGICAL",
+        "LOGICAL_READS_PER_CALL",
+        "LOGICAL_READS_PER_SESSION",
+        "LOGOFF",
+        "LOGON",
+        "LONG",
+        "LOOP",
+        "MANAGE",
+        "MANAGED",
+        "MANAGEMENT",
+        "MANUAL",
+        "MAPPING",
+        "MASTER",
+        "MATCHED",
+        "MATERIALIZED",
+        "MAXARCHLOGS",
+        "MAXDATAFILES",
+        "MAXEXTENTS",
+        "MAXINSTANCES",
+        "MAXLOGFILES",
+        "MAXLOGHISTORY",
+        "MAXLOGMEMBERS",
+        "MAXSIZE",
+        "MAXTRANS",
+        "MAXVALUE",
+        "MEMBER",
+        "MEMORY",
+        "MERGE",
+        "METHOD",
+        "MINEXTENTS",
+        "MINIMIZE",
+        "MINIMUM",
+        "MINUS",
+        "MINVALUE",
+        "MLSLABEL",
+        "MODE",
+        "MODIFY",
+        "MONITORING",
+        "MOUNT",
+        "MOVE",
+        "MOVEMENT",
+        "MTS_DISPATCHERS",
+        "MULTISET",
+        "NAMED",
+        "NCHAR",
+        "NCHAR_CS",
+        "NCLOB",
+        "NEEDED",
+        "NESTED",
+        "NESTED_TABLE_ID",
+        "NETWORK",
+        "NEVER",
+        "NEXT",
+        "NLS_CALENDAR",
+        "NLS_CHARACTERSET",
+        "NLS_COMP",
+        "NLS_CURRENCY",
+        "NLS_DATE_FORMAT",
+        "NLS_DATE_LANGUAGE",
+        "NLS_ISO_CURRENCY",
+        "NLS_LANG",
+        "NLS_LANGUAGE",
+        "NLS_LENGTH_SEMANTICS",
+        "NLS_NCHAR_CONV_EXCP",
+        "NLS_NUMERIC_CHARACTERS",
+        "NLS_SORT",
+        "NLS_SPECIAL_CHARS",
+        "NLS_TERRITORY",
+        "NO",
+        "NOARCHIVELOG",
+        "NOAUDIT",
+        "NOCACHE",
+        "NOCOMPRESS",
+        "NOCOPY",
+        "NOCYCLE",
+        "NODELAY",
+        "NOFORCE",
+        "NOLOGGING",
+        "NOMAPPING",
+        "NOMAXVALUE",
+        "NOMINIMIZE",
+        "NOMINVALUE",
+        "NOMONITORING",
+        "NONE",
+        "NOORDER",
+        "NOOVERRIDE",
+        "NOPARALLEL",
+        "NORELY",
+        "NORESETLOGS",
+        "NOREVERSE",
+        "NORMAL",
+        "NOROWDEPENDENCIES",
+        "NOSEGMENT",
+        "NOSORT",
+        "NOSWITCH",
+        "NOT",
+        "NOTHING",
+        "NOVALIDATE",
+        "NOWAIT",
+        "NULL",
+        "NULLS",
+        "NUMBER",
+        "NUMERIC",
+        "NVARCHAR2",
+        "OBJECT",
+        "OBJNO",
+        "OBJNO_REUSE",
+        "OF",
+        "OFF",
+        "OFFLINE",
+        "OID",
+        "OIDINDEX",
+        "OLD",
+        "ON",
+        "ONLINE",
+        "ONLY",
+        "OPAQUE",
+        "OPCODE",
+        "OPEN",
+        "OPERATOR",
+        "OPTIMAL",
+        "OPTIMIZER_GOAL",
+        "OPTION",
+        "OR",
+        "ORDER",
+        "ORGANIZATION",
+        "OTHERS",
+        "OUT",
+        "OUTER",
+        "OUTLINE",
+        "OVER",
+        "OVERFLOW",
+        "OVERLAPS",
+        "OWN",
+        "PACKAGE",
+        "PACKAGES",
+        "PARALLEL",
+        "PARAMETERS",
+        "PARENT",
+        "PARTITION",
+        "PARTITIONS",
+        "PARTITION_HASH",
+        "PARTITION_LIST",
+        "PARTITION_RANGE",
+        "PASSWORD",
+        "PASSWORD_GRACE_TIME",
+        "PASSWORD_LIFE_TIME",
+        "PASSWORD_LOCK_TIME",
+        "PASSWORD_REUSE_MAX",
+        "PASSWORD_REUSE_TIME",
+        "PASSWORD_VERIFY_FUNCTION",
+        "PCTFREE",
+        "PCTINCREASE",
+        "PCTTHRESHOLD",
+        "PCTUSED",
+        "PCTVERSION",
+        "PERCENT",
+        "PERMANENT",
+        "PFILE",
+        "PHYSICAL",
+        "PLAN",
+        "PLSQL_DEBUG",
+        "POLICY",
+        "POST_TRANSACTION",
+        "PRAGMA",
+        "PREBUILT",
+        "PRECEDING",
+        "PRECISION",
+        "PREPARE",
+        "PRESERVE",
+        "PRIMARY",
+        "PRIOR",
+        "PRIVATE",
+        "PRIVATE_SGA",
+        "PRIVILEGE",
+        "PRIVILEGES",
+        "PROCEDURE",
+        "PROFILE",
+        "PROTECTED",
+        "PUBLIC",
+        "PURGE",
+        "PX_GRANULE",
+        "QUERY",
+        "QUEUE",
+        "QUIESCE",
+        "QUOTA",
+        "RANDOM",
+        "RANGE",
+        "RAW",
+        "RBA",
+        "READ",
+        "READS",
+        "REAL",
+        "REBUILD",
+        "RECORDS_PER_BLOCK",
+        "RECOVER",
+        "RECOVERABLE",
+        "RECOVERY",
+        "RECYCLE",
+        "REDUCED",
+        "REF",
+        "REFERENCES",
+        "REFERENCING",
+        "REFRESH",
+        "REGISTER",
+        "REJECT",
+        "REKEY",
+        "RELATIONAL",
+        "RELY",
+        "RENAME",
+        "REPLACE",
+        "RESET",
+        "RESETLOGS",
+        "RESIZE",
+        "RESOLVE",
+        "RESOLVER",
+        "RESOURCE",
+        "RESTRICT",
+        "RESTRICTED",
+        "RESUMABLE",
+        "RESUME",
+        "RETURN",
+        "RETURNING",
+        "REUSE",
+        "REVERSE",
+        "REVOKE",
+        "REWRITE",
+        "RIGHT",
+        "ROLE",
+        "ROLES",
+        "ROLLBACK",
+        "ROLLUP",
+        "ROWDEPENDENCIES",
+        "ROWID",
+        "ROWNUM",
+        "ROWS",
+        "ROWTYPE",
+        "RULE",
+        "SAMPLE",
+        "SAVEPOINT",
+        "SB4",
+        "SCAN",
+        "SCAN_INSTANCES",
+        "SCHEMA",
+        "SCN",
+        "SCOPE",
+        "SD_ALL",
+        "SD_INHIBIT",
+        "SD_SHOW",
+        "SECURITY",
+        "SEGMENT",
+        "SEG_BLOCK",
+        "SEG_FILE",
+        "SELECT",
+        "SELECTIVITY",
+        "SEQUENCE",
+        "SEQUENCED",
+        "SERIALIZABLE",
+        "SERVERERROR",
+        "SESSION",
+        "SESSIONS_PER_USER",
+        "SESSIONTIMEZONE",
+        "SESSIONTZNAME",
+        "SESSION_CACHED_CURSORS",
+        "SET",
+        "SETS",
+        "SHARE",
+        "SHARED",
+        "SHARED_POOL",
+        "SHRINK",
+        "SHUTDOWN",
+        "SIBLINGS",
+        "SINGLE",
+        "SINGLETASK",
+        "SIZE",
+        "SKIP",
+        "SKIP_UNUSABLE_INDEXES",
+        "SMALLINT",
+        "SNAPSHOT",
+        "SOME",
+        "SORT",
+        "SOURCE",
+        "SPACE",
+        "SPECIFICATION",
+        "SPFILE",
+        "SPLIT",
+        "SQL_TRACE",
+        "STANDBY",
+        "START",
+        "STARTUP",
+        "STATEMENT_ID",
+        "STATIC",
+        "STATISTICS",
+        "STOP",
+        "STORAGE",
+        "STORE",
+        "STRUCTURE",
+        "SUBPARTITION",
+        "SUBPARTITIONS",
+        "SUBPARTITION_REL",
+        "SUBSTITUTABLE",
+        "SUCCESSFUL",
+        "SUMMARY",
+        "SUPPLEMENTAL",
+        "SUSPEND",
+        "SWITCH",
+        "SWITCHOVER",
+        "SYNONYM",
+        "SYSDATE",
+        "SYSDBA",
+        "SYSOPER",
+        "SYSTEM",
+        "SYSTIMESTAMP",
+        "SYS_OP_BITVEC",
+        "SYS_OP_COL_PRESENT",
+        "SYS_OP_ENFORCE_NOT_NULL$",
+        "SYS_OP_MINE_VALUE",
+        "SYS_OP_NOEXPAND",
+        "SYS_OP_NTCIMG$",
+        "TABLE",
+        "TABLES",
+        "TABLESPACE",
+        "TABLESPACE_NO",
+        "TABNO",
+        "TEMPFILE",
+        "TEMPORARY",
+        "THAN",
+        "THEN",
+        "THREAD",
+        "THROUGH",
+        "TIMEOUT",
+        "TIMESTAMP",
+        "TIMEZONE_ABBR",
+        "TIMEZONE_HOUR",
+        "TIMEZONE_MINUTE",
+        "TIMEZONE_REGION",
+        "TIME_ZONE",
+        "TO",
+        "TOPLEVEL",
+        "TRACE",
+        "TRACING",
+        "TRAILING",
+        "TRANSACTION",
+        "TRANSITIONAL",
+        "TREAT",
+        "TRIGGER",
+        "TRIGGERS",
+        "TRUE",
+        "TRUNCATE",
+        "TX",
+        "TYPE",
+        "TYPES",
+        "TZ_OFFSET",
+        "UB2",
+        "UBA",
+        "UID",
+        "UNARCHIVED",
+        "UNBOUND",
+        "UNBOUNDED",
+        "UNDER",
+        "UNDO",
+        "UNIFORM",
+        "UNION",
+        "UNIQUE",
+        "UNLIMITED",
+        "UNLOCK",
+        "UNPROTECTED",
+        "UNQUIESCE",
+        "UNRECOVERABLE",
+        "UNTIL",
+        "UNUSABLE",
+        "UNUSED",
+        "UPDATABLE",
+        "UPDATE",
+        "UPD_INDEXES",
+        "UPD_JOININDEX",
+        "UPGRADE",
+        "UROWID",
+        "USAGE",
+        "USE",
+        "USER_DEFINED",
+        "USE_PRIVATE_OUTLINES",
+        "USE_STORED_OUTLINES",
+        "USING",
+        "VALIDATE",
+        "VALIDATION",
+        "VALUES",
+        "VARCHAR",
+        "VARCHAR2",
+        "VARRAY",
+        "VARYING",
+        "VIEW",
+        "WAIT",
+        "WHEN",
+        "WHENEVER",
+        "WHERE",
+        "WHILE",
+        "WITH",
+        "WITHIN",
+        "WITHOUT",
+        "WORK",
+        "WRITE",
+        "XID",
+        "XMLSCHEMA",
+        "XMLTYPE",
+        "ZONE",
+        NULL
+    };

Added: kde-extras/tora/branches/upstream/current/src/todroptablespaceui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todroptablespaceui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todroptablespaceui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,72 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'todroptablespaceui.ui'
+**
+** Created: Tue Sep 18 08:21:30 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "todroptablespaceui.h"
+
+#include <qvariant.h>
+#include <qbuttongroup.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toDropTablespaceUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toDropTablespaceUI::toDropTablespaceUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toDropTablespaceUI" );
+
+    buttonGroup3 = new QButtonGroup( this, "buttonGroup3" );
+    buttonGroup3->setGeometry( QRect( 10, 10, 410, 110 ) );
+
+    CascadeCheck = new QCheckBox( buttonGroup3, "CascadeCheck" );
+    CascadeCheck->setEnabled( FALSE );
+    CascadeCheck->setGeometry( QRect( 40, 50, 340, 20 ) );
+
+    dataFileCheck = new QCheckBox( buttonGroup3, "dataFileCheck" );
+    dataFileCheck->setEnabled( FALSE );
+    dataFileCheck->setGeometry( QRect( 40, 80, 150, 20 ) );
+
+    IncludingObjectsCheck = new QCheckBox( buttonGroup3, "IncludingObjectsCheck" );
+    IncludingObjectsCheck->setGeometry( QRect( 10, 20, 220, 20 ) );
+    IncludingObjectsCheck->setChecked( FALSE );
+    languageChange();
+    resize( QSize(436, 133).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( IncludingObjectsCheck, SIGNAL( toggled(bool) ), CascadeCheck, SLOT( setEnabled(bool) ) );
+    connect( IncludingObjectsCheck, SIGNAL( toggled(bool) ), dataFileCheck, SLOT( setEnabled(bool) ) );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toDropTablespaceUI::~toDropTablespaceUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toDropTablespaceUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    buttonGroup3->setTitle( tr( "Options" ) );
+    CascadeCheck->setText( tr( "even if there is some forerign key referencing them" ) );
+    dataFileCheck->setText( tr( "Delete datafiles" ) );
+    IncludingObjectsCheck->setText( tr( "Drop even if it contains objects" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/todroptablespaceui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todroptablespaceui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todroptablespaceui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,43 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'todroptablespaceui.ui'
+**
+** Created: Tue Sep 18 08:21:30 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TODROPTABLESPACEUI_H
+#define TODROPTABLESPACEUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QButtonGroup;
+class QCheckBox;
+
+class toDropTablespaceUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toDropTablespaceUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toDropTablespaceUI();
+
+    QButtonGroup* buttonGroup3;
+    QCheckBox* CascadeCheck;
+    QCheckBox* dataFileCheck;
+    QCheckBox* IncludingObjectsCheck;
+
+protected:
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TODROPTABLESPACEUI_H

Added: kde-extras/tora/branches/upstream/current/src/todroptablespaceui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/todroptablespaceui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/todroptablespaceui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,157 @@
+<!DOCTYPE UI><UI version="3.3" stdsetdef="1">
+<class>toDropTablespaceUI</class>
+<widget class="QWidget">
+    <property name="name">
+        <cstring>toDropTablespaceUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>436</width>
+            <height>133</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>Form1</string>
+    </property>
+    <widget class="QButtonGroup">
+        <property name="name">
+            <cstring>buttonGroup3</cstring>
+        </property>
+        <property name="geometry">
+            <rect>
+                <x>10</x>
+                <y>10</y>
+                <width>410</width>
+                <height>110</height>
+            </rect>
+        </property>
+        <property name="title">
+            <string>Options</string>
+        </property>
+        <widget class="QCheckBox">
+            <property name="name">
+                <cstring>CascadeCheck</cstring>
+            </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
+            <property name="geometry">
+                <rect>
+                    <x>40</x>
+                    <y>50</y>
+                    <width>340</width>
+                    <height>20</height>
+                </rect>
+            </property>
+            <property name="text">
+                <string>even if there is some forerign key referencing them</string>
+            </property>
+        </widget>
+        <widget class="QCheckBox">
+            <property name="name">
+                <cstring>dataFileCheck</cstring>
+            </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
+            <property name="geometry">
+                <rect>
+                    <x>40</x>
+                    <y>80</y>
+                    <width>150</width>
+                    <height>20</height>
+                </rect>
+            </property>
+            <property name="text">
+                <string>Delete datafiles</string>
+            </property>
+        </widget>
+        <widget class="QCheckBox">
+            <property name="name">
+                <cstring>IncludingObjectsCheck</cstring>
+            </property>
+            <property name="geometry">
+                <rect>
+                    <x>10</x>
+                    <y>20</y>
+                    <width>220</width>
+                    <height>20</height>
+                </rect>
+            </property>
+            <property name="text">
+                <string>Drop even if it contains objects</string>
+            </property>
+            <property name="checked">
+                <bool>false</bool>
+            </property>
+        </widget>
+    </widget>
+    <spacer>
+        <property name="name">
+            <cstring>spacer4</cstring>
+        </property>
+        <property name="orientation">
+            <enum>Horizontal</enum>
+        </property>
+        <property name="sizeType">
+            <enum>Expanding</enum>
+        </property>
+        <property name="sizeHint">
+            <size>
+                <width>90</width>
+                <height>20</height>
+            </size>
+        </property>
+        <property name="geometry">
+            <rect>
+                <x>420</x>
+                <y>60</y>
+                <width>90</width>
+                <height>20</height>
+            </rect>
+        </property>
+    </spacer>
+    <spacer>
+        <property name="name">
+            <cstring>spacer5</cstring>
+        </property>
+        <property name="orientation">
+            <enum>Vertical</enum>
+        </property>
+        <property name="sizeType">
+            <enum>Expanding</enum>
+        </property>
+        <property name="sizeHint">
+            <size>
+                <width>20</width>
+                <height>70</height>
+            </size>
+        </property>
+        <property name="geometry">
+            <rect>
+                <x>160</x>
+                <y>120</y>
+                <width>20</width>
+                <height>70</height>
+            </rect>
+        </property>
+    </spacer>
+</widget>
+<connections>
+    <connection>
+        <sender>IncludingObjectsCheck</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>CascadeCheck</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>IncludingObjectsCheck</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>dataFileCheck</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+</connections>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,90 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'toeditextensiongotoui.ui'
+**
+** Created: Tue Sep 18 08:21:22 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "toeditextensiongotoui.h"
+
+#include <qvariant.h>
+#include <qspinbox.h>
+#include <qpushbutton.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+/*
+ *  Constructs a toEditExtensionGotoUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toEditExtensionGotoUI::toEditExtensionGotoUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "todebuggotolineUI" );
+    todebuggotolineUILayout = new QGridLayout( this, 1, 1, 11, 6, "todebuggotolineUILayout"); 
+
+    Line = new QSpinBox( this, "Line" );
+
+    todebuggotolineUILayout->addWidget( Line, 0, 1 );
+
+    layout1 = new QHBoxLayout( 0, 0, 6, "layout1"); 
+    spacer1 = new QSpacerItem( 80, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    layout1->addItem( spacer1 );
+
+    pushButton1 = new QPushButton( this, "pushButton1" );
+    pushButton1->setDefault( TRUE );
+    layout1->addWidget( pushButton1 );
+
+    pushButton2 = new QPushButton( this, "pushButton2" );
+    layout1->addWidget( pushButton2 );
+
+    todebuggotolineUILayout->addMultiCellLayout( layout1, 2, 2, 0, 1 );
+    spacer2 = new QSpacerItem( 20, 21, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    todebuggotolineUILayout->addItem( spacer2, 1, 1 );
+
+    textLabel1 = new QLabel( this, "textLabel1" );
+
+    todebuggotolineUILayout->addWidget( textLabel1, 0, 0 );
+    languageChange();
+    resize( QSize(224, 117).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( pushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( pushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+
+    // tab order
+    setTabOrder( Line, pushButton1 );
+    setTabOrder( pushButton1, pushButton2 );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toEditExtensionGotoUI::~toEditExtensionGotoUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toEditExtensionGotoUI::languageChange()
+{
+    setCaption( tr( "Go to line" ) );
+    pushButton1->setText( tr( "&Ok" ) );
+    pushButton2->setText( tr( "&Cancel" ) );
+    textLabel1->setText( tr( "Line Number" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,48 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'toeditextensiongotoui.ui'
+**
+** Created: Tue Sep 18 08:21:22 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TODEBUGGOTOLINEUI_H
+#define TODEBUGGOTOLINEUI_H
+
+#include <qvariant.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QSpinBox;
+class QPushButton;
+class QLabel;
+
+class toEditExtensionGotoUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toEditExtensionGotoUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toEditExtensionGotoUI();
+
+    QSpinBox* Line;
+    QPushButton* pushButton1;
+    QPushButton* pushButton2;
+    QLabel* textLabel1;
+
+protected:
+    QGridLayout* todebuggotolineUILayout;
+    QSpacerItem* spacer2;
+    QHBoxLayout* layout1;
+    QSpacerItem* spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TODEBUGGOTOLINEUI_H

Added: kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toeditextensiongotoui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,121 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>toEditExtensionGotoUI</class>
+<widget class="QDialog">
+    <property name="name">
+        <cstring>todebuggotolineUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>224</width>
+            <height>117</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>Go to line</string>
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <widget class="QSpinBox" row="0" column="1">
+            <property name="name">
+                <cstring>Line</cstring>
+            </property>
+        </widget>
+        <widget class="QLayoutWidget" row="2" column="0" rowspan="1" colspan="2">
+            <property name="name">
+                <cstring>layout1</cstring>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <spacer>
+                    <property name="name">
+                        <cstring>spacer1</cstring>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                    <property name="sizeType">
+                        <enum>Expanding</enum>
+                    </property>
+                    <property name="sizeHint">
+                        <size>
+                            <width>80</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>pushButton1</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Ok</string>
+                    </property>
+                    <property name="default">
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>pushButton2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Cancel</string>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+        <spacer row="1" column="1">
+            <property name="name">
+                <cstring>spacer2</cstring>
+            </property>
+            <property name="orientation">
+                <enum>Vertical</enum>
+            </property>
+            <property name="sizeType">
+                <enum>Expanding</enum>
+            </property>
+            <property name="sizeHint">
+                <size>
+                    <width>20</width>
+                    <height>21</height>
+                </size>
+            </property>
+        </spacer>
+        <widget class="QLabel" row="0" column="0">
+            <property name="name">
+                <cstring>textLabel1</cstring>
+            </property>
+            <property name="text">
+                <string>Line Number</string>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>pushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>todebuggotolineUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>pushButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>todebuggotolineUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>Line</tabstop>
+    <tabstop>pushButton1</tabstop>
+    <tabstop>pushButton2</tabstop>
+</tabstops>
+<pixmapinproject/>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/toeditextensions.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toeditextensions.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toeditextensions.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,605 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "toeditextensions.h"
+#include "toeditextensionsetupui.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "tosqlparse.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#include <kmenubar.h>
+#endif
+
+#include <qcheckbox.h>
+#include <qmenubar.h>
+#include <qspinbox.h>
+#include <qtoolbutton.h>
+
+#include "toeditextensions.moc"
+#include "toeditextensionsetupui.moc"
+#include "toeditextensiongotoui.moc"
+
+#include "icons/deindent.xpm"
+#include "icons/indent.xpm"
+
+static int AutoIndentBlock;
+static int AutoIndentBuffer;
+static int DeindentIndex;
+static int IndentIndex;
+static int ObfuscateBlock;
+static int ObfuscateBuffer;
+static int ReverseSearch;
+static int IncrementalSearch;
+static int UpperCase;
+static int LowerCase;
+static int GotoLine;
+static int AutoComplete;
+
+#define CONF_EXPAND_SPACES "ExpandSpaces"
+#define CONF_COMMA_BEFORE "CommaBefore"
+#define CONF_BLOCK_OPEN_LINE "BlockOpenLine"
+#define CONF_OPERATOR_SPACE "OperatorSpace"
+#define CONF_KEYWORD_UPPER "KeywordUpper"
+#define CONF_RIGHT_SEPARATOR "RightSeparator"
+#define CONF_END_BLOCK_NEWLINE "EndBlockNewline"
+#define CONF_INDENT_LEVEL "IndentLevel"
+#define DEFAULT_INDENT_LEVEL "4"
+#define CONF_COMMENT_COLUMN "CommentColumn"
+#define DEFAULT_COMMENT_COLUMN "60"
+
+static QToolButton *IndentButton;
+static QToolButton *DeindentButton;
+
+void toEditExtensions::receivedFocus(toEditWidget *widget)
+{
+    if (widget)
+        Current = dynamic_cast<toMarkedText *>(widget);
+    else
+        Current = NULL;
+
+    bool enable = Current && !Current->isReadOnly();
+
+    toMainWidget()->editMenu()->setItemEnabled(IndentIndex, enable);
+    toMainWidget()->editMenu()->setItemEnabled(DeindentIndex, enable);
+    toMainWidget()->editMenu()->setItemEnabled(AutoIndentBlock, enable);
+    toMainWidget()->editMenu()->setItemEnabled(ObfuscateBlock, enable);
+    toMainWidget()->editMenu()->setItemEnabled(AutoIndentBuffer, Current);
+    toMainWidget()->editMenu()->setItemEnabled(ObfuscateBuffer, Current);
+    toMainWidget()->editMenu()->setItemEnabled(IncrementalSearch, Current);
+    toMainWidget()->editMenu()->setItemEnabled(ReverseSearch, Current);
+    toMainWidget()->editMenu()->setItemEnabled(UpperCase, Current);
+    toMainWidget()->editMenu()->setItemEnabled(LowerCase, Current);
+    toMainWidget()->editMenu()->setItemEnabled(GotoLine, Current);
+
+    if (IndentButton)
+        IndentButton->setEnabled(enable);
+    if (DeindentButton)
+        DeindentButton->setEnabled(enable);
+    toHighlightedText * cur=dynamic_cast<toHighlightedText *>(widget);
+    toMainWidget()->editMenu()->setItemEnabled(AutoComplete, cur);
+}
+
+void toEditExtensions::autoComplete(){
+  toHighlightedText *cur=dynamic_cast<toHighlightedText *>(Current);
+  if(cur)
+    cur->autoCompleteFromAPIs();
+  else{
+    TO_DEBUGOUT("cur null");
+  }
+}
+
+void toEditExtensions::lostFocus(toEditWidget *widget)
+{
+    if (widget)
+    {
+        toMarkedText *current = dynamic_cast<toMarkedText *>(widget);
+        if (current && Current == current)
+            receivedFocus(NULL);
+    }
+
+}
+
+void toEditExtensions::gotoLine()
+{
+    if (Current)
+    {
+        toEditExtensionGoto dialog(Current);
+        if (dialog.exec())
+            dialog.gotoLine();
+    }
+}
+
+void toEditExtensions::intIndent(int delta)
+{
+    int line1, col1, line2, col2;
+
+    if (Current)
+    {
+        if (!Current->getSelection(&line1, &col1, &line2, &col2))
+        {
+            Current->getCursorPosition (&line1, &col1);
+            line2 = line1;
+        }
+        else if (col2 == 0)
+        {
+            line2--;
+        }
+
+        QString res;
+        for (int i = line1;i <= line2;i++)
+        {
+            QString t = Current->text(i);
+            int chars = 0;
+            int level = toSQLParse::countIndent(t, chars);
+
+            // trim newline, if present.  we have to do this because
+            // qscintilla returns newlines, the old code didn't.
+            t.remove('\n');
+
+            res += toSQLParse::indentString(std::max(0, level + delta));
+            if (i < line2)
+                res += t.mid(chars) + "\n";
+            else
+                res += t.mid(chars);
+        }
+
+        Current->setSelection(line1, 0, line2, Current->text(line2).length()-1);
+        Current->insert(res, true);
+    }
+}
+
+void toEditExtensions::deindentBlock(void)
+{
+    intIndent( -toSQLParse::getSetting().IndentLevel);
+}
+
+void toEditExtensions::indentBlock(void)
+{
+    intIndent(toSQLParse::getSetting().IndentLevel);
+}
+
+void toEditExtensions::autoIndentBlock(void)
+{
+    if (Current)
+    {
+        try
+        {
+            int line1, col1, line2, col2;
+            if (Current->getSelection(&line1, &col1, &line2, &col2))
+            {
+                QString t = Current->text(line1).mid(0, col1);
+                t += QString::fromLatin1("a");
+                int chars = 0;
+                QString ind = toSQLParse::indentString(toSQLParse::countIndent(t, chars));
+                QString mrk = Current->selectedText();
+                QString res;
+                try
+                {
+                    res = toSQLParse::indent(ind + mrk, toCurrentConnection(Current));
+                }
+                catch (...)
+                {
+                    res = toSQLParse::indent(ind + mrk);
+                }
+                t = Current->text(line2);
+                unsigned int l = res.length() - ind.length();
+                if (col2 == int(t.length()) && t.length() > 0) // Strip last newline if on last col of line
+                    l--;
+                res = res.mid(ind.length(), l); // Strip indent.
+                Current->insert(res, true);
+            }
+        }
+        TOCATCH
+    }
+}
+
+void toEditExtensions::autoIndentBuffer(void)
+{
+    if (Current)
+    {
+        QString text = Current->text();
+        unsigned int pos = 0;
+        while (pos < text.length() && text.at(pos).isSpace())
+        {
+            pos++;
+        }
+        Current->selectAll();
+        try
+        {
+            try
+            {
+                Current->insert(toSQLParse::indent(text.mid(pos), toCurrentConnection(Current)));
+            }
+            catch (...)
+            {
+                Current->insert(toSQLParse::indent(text.mid(pos)));
+            }
+        }
+        TOCATCH
+    }
+}
+
+void toEditExtensions::upperCase(void)
+{
+    if (Current)
+    {
+        QString text = Current->selectedText().upper();
+        if (!text.isEmpty())
+            Current->insert(text, true);
+    }
+}
+
+void toEditExtensions::lowerCase(void)
+{
+    if (Current)
+    {
+        QString text = Current->selectedText().lower();
+        if (!text.isEmpty())
+            Current->insert(text, true);
+    }
+}
+
+static int CountLine(const QString &str)
+{
+    int found = str.findRev(QString::fromLatin1("\n"));
+    if (found < 0)
+        return str.length();
+    else
+        return str.length() - found + 1;
+}
+
+static void ObfuscateStat(toSQLParse::statement &stat, QString &ret)
+{
+    if (ret.length() > 0 &&
+            stat.String.length() > 0 &&
+            toIsIdent(ret.at(ret.length() - 1)) &&
+            toIsIdent(stat.String.at(0)))
+    {
+        if (CountLine(ret) < 60)
+            ret += QString::fromLatin1(" ");
+        else
+            ret += QString::fromLatin1("\n");
+    }
+    ret += stat.String;
+    if (!stat.Comment.isEmpty())
+    {
+        ret += stat.Comment;
+        ret += QString::fromLatin1("\n");
+    }
+    for (std::list<toSQLParse::statement>::iterator i = stat.subTokens().begin();
+            i != stat.subTokens().end();
+            i++)
+    {
+        ObfuscateStat(*i, ret);
+    }
+}
+
+void toEditExtensions::obfuscateBlock(void)
+{
+    if (Current)
+    {
+        QString str = Current->selectedText();
+        if (!str.isEmpty())
+        {
+            toSQLParse::statement stat;
+            stat.subTokens() = toSQLParse::parse(str);
+            QString res;
+            ObfuscateStat(stat, res);
+            Current->insert(res, true);
+        }
+    }
+}
+
+void toEditExtensions::obfuscateBuffer(void)
+{
+    if (Current)
+    {
+        QString str = Current->text();
+        if (!str.isEmpty())
+        {
+            toSQLParse::statement stat;
+            stat.subTokens() = toSQLParse::parse(str);
+            Current->selectAll();
+            QString res;
+            ObfuscateStat(stat, res);
+            Current->insert(res);
+        }
+    }
+}
+
+static toEditExtensions EditExtensions;
+
+class toEditExtensionTool;
+
+class toEditExtensionSetup : public toEditExtensionSetupUI, public toSettingTab
+{
+    toEditExtensionTool *Tool;
+    toSQLParse::settings Current;
+    bool Ok;
+    bool Started;
+public:
+    toEditExtensionSetup(toEditExtensionTool *tool, QWidget *parent, const char *name = NULL)
+            : toEditExtensionSetupUI(parent, name), toSettingTab("editextension.html"), Tool(tool)
+    {
+        Current = toSQLParse::getSetting();
+        Started = false;
+        ExpandSpaces->setChecked(Current.ExpandSpaces);
+        CommaBefore->setChecked(Current.CommaBefore);
+        BlockOpenLine->setChecked(Current.BlockOpenLine);
+        OperatorSpace->setChecked(Current.OperatorSpace);
+        KeywordUpper->setChecked(Current.KeywordUpper);
+        RightSeparator->setChecked(Current.RightSeparator);
+        EndBlockNewline->setChecked(Current.EndBlockNewline);
+        IndentLevel->setValue(Current.IndentLevel);
+        CommentColumn->setValue(Current.CommentColumn);
+        AutoIndent->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_INDENT_RO, "Yes").isEmpty());
+        Ok = false;
+        try
+        {
+            Example->setAnalyzer(toMainWidget()->currentConnection().analyzer());
+        }
+        TOCATCH
+
+        try
+        {
+#ifdef TO_NO_ORACLE
+            Example->setText(toSQLParse::indent("CREATE PROCEDURE COUNT_EMPS_IN_DEPTS (OUT V_TOTAL INT)\n"
+                                                "BEGIN\n"
+                                                "  DECLARE V_DEPTNO INT DEFAULT 10;\n"
+                                                "  DECLARE V_COUNT INT DEFAULT 0;\n"
+                                                "  SET V_TOTAL = 0;\n"
+                                                "  WHILE V_DEPTNO < 100 DO\n"
+                                                "    SELECT COUNT(*)\n"
+                                                "      INTO V_COUNT\n"
+                                                "      FROM TEST.EMP\n"
+                                                "      WHERE DEPTNO = V_DEPTNO;\n"
+                                                "    SET V_TOTAL = V_TOTAL + V_COUNT;\n"
+                                                "    SET V_DEPTNO = V_DEPTNO + 10;\n"
+                                                "  END WHILE;\n"
+                                                "END", Example->analyzer()));
+#else
+
+            Example->setText(toSQLParse::indent("CREATE OR REPLACE procedure spTuxGetAccData (oRet OUT  NUMBER)\n"
+                                                "AS\n"
+                                                "  vYear  CHAR(4);\n"
+                                                "BEGIN\n"
+                                                "select a.TskCod TskCod, -- A Comment\n"
+                                                "       count(1) Tot\n"
+                                                "  from (select * from EssTsk where PrsID >= '1940');\n"
+                                                "having count(a.TspActOprID) > 0;\n"
+                                                "    DECLARE\n"
+                                                "      oTrdStt NUMBER;\n"
+                                                "    BEGIN\n"
+                                                "      oTrdStt := 0;\n"
+                                                "    END;\n"
+                                                "    EXCEPTION\n"
+                                                "        WHEN VALUE_ERROR THEN\n"
+                                                "     oRet := 3;\n"
+                                                "END;", Example->analyzer()));
+#endif
+
+        }
+        TOCATCH
+        Started = true;
+    }
+    virtual ~toEditExtensionSetup()
+    {
+        if (!Ok)
+            toSQLParse::setSetting(Current);
+    }
+    void saveCurrent(void)
+    {
+        Current.ExpandSpaces = ExpandSpaces->isChecked();
+        Current.CommaBefore = CommaBefore->isChecked();
+        Current.BlockOpenLine = BlockOpenLine->isChecked();
+        Current.OperatorSpace = OperatorSpace->isChecked();
+        Current.KeywordUpper = KeywordUpper->isChecked();
+        Current.RightSeparator = RightSeparator->isChecked();
+        Current.EndBlockNewline = EndBlockNewline->isChecked();
+        Current.IndentLevel = IndentLevel->value();
+        Current.CommentColumn = CommentColumn->value();
+        toSQLParse::setSetting(Current);
+    }
+    virtual void changed(void)
+    {
+        if (Started)
+        {
+            saveCurrent();
+            try
+            {
+                Example->setText(toSQLParse::indent(Example->text(), Example->analyzer()));
+            }
+            TOCATCH
+        }
+    }
+    virtual void saveSetting(void);
+};
+
+void toEditExtensions::searchForward(void)
+{
+    if (Current)
+        Current->incrementalSearch(true);
+}
+
+void toEditExtensions::searchBackward(void)
+{
+    if (Current)
+        Current->incrementalSearch(false);
+}
+
+#define TO_EDIT_SEARCH_NEXT 209
+
+class toEditExtensionTool : public toTool
+{
+public:
+    toEditExtensionTool()
+            : toTool(910, "Editor Extensions")
+    {
+        toSQLParse::settings cur;
+        cur.ExpandSpaces = !config(CONF_EXPAND_SPACES, "Yes").isEmpty();
+        cur.CommaBefore = !config(CONF_COMMA_BEFORE, "").isEmpty();
+        cur.BlockOpenLine = !config(CONF_BLOCK_OPEN_LINE, "").isEmpty();
+        cur.OperatorSpace = !config(CONF_OPERATOR_SPACE, "Yes").isEmpty();
+        cur.KeywordUpper = !config(CONF_KEYWORD_UPPER, "Yes").isEmpty();
+        cur.RightSeparator = !config(CONF_RIGHT_SEPARATOR, "Yes").isEmpty();
+        cur.EndBlockNewline = !config(CONF_END_BLOCK_NEWLINE, "Yes").isEmpty();
+        cur.IndentLevel = config(CONF_INDENT_LEVEL, DEFAULT_INDENT_LEVEL).toInt();
+        cur.CommentColumn = config(CONF_COMMENT_COLUMN, DEFAULT_COMMENT_COLUMN).toInt();
+        toSQLParse::setSetting(cur);
+    }
+    virtual QWidget *toolWindow(QWidget *, toConnection &)
+    {
+        return NULL; // Has no tool window
+    }
+    virtual void closeWindow(toConnection &connection){};
+    virtual void customSetup(int)
+    {
+        toMainWidget()->editMenu()->insertSeparator();
+
+        int idx = toMainWidget()->editMenu()->indexOf(TO_EDIT_SEARCH_NEXT);
+
+        QPopupMenu *menu = new QPopupMenu(toMainWidget());
+
+        IncrementalSearch = menu->insertItem(qApp->translate("toEditExtensionTool", "Forward"), &EditExtensions, SLOT(searchForward()),
+                                             toKeySequence(qApp->translate("toEditExtensionTool", "Ctrl+S", "Edit|Incremental search forward")));
+        ReverseSearch = menu->insertItem(qApp->translate("toEditExtensionTool", "Backward"), &EditExtensions, SLOT(searchBackward()),
+                                         toKeySequence(qApp->translate("toEditExtensionTool", "Ctrl+R", "Edit|Incremental search backward")));
+
+        toMainWidget()->editMenu()->insertItem(qApp->translate("toEditExtensionTool", "Incremental Search"), menu, -1, (idx >= 0 ? idx + 1 : 0));
+
+        menu = new QPopupMenu(toMainWidget());
+        AutoIndentBlock = menu->insertItem(qApp->translate("toEditExtensionTool", "Selection"),
+                                           &EditExtensions,
+                                           SLOT(autoIndentBlock()),
+                                           toKeySequence(qApp->translate("toEditExtensionTool", "Ctrl+Alt+I", "Edit|Indent selection")));
+        AutoIndentBuffer = menu->insertItem(qApp->translate("toEditExtensionTool", "Editor"),
+                                            &EditExtensions,
+                                            SLOT(autoIndentBuffer()),
+                                            toKeySequence(qApp->translate("toEditExtensionTool", "Ctrl+Alt+Shift+I", "Edit|Indent editor")));
+        menu->insertSeparator();
+        ObfuscateBlock = menu->insertItem(qApp->translate("toEditExtensionTool", "Obfuscate Selection"),
+                                          &EditExtensions,
+                                          SLOT(obfuscateBlock()));
+        ObfuscateBuffer = menu->insertItem(qApp->translate("toEditExtensionTool", "Obfuscate Editor"),
+                                           &EditExtensions,
+                                           SLOT(obfuscateBuffer()));
+        toMainWidget()->editMenu()->insertItem(qApp->translate("toEditExtensionTool", "Auto Indent"), menu);
+
+        menu = new QPopupMenu(toMainWidget());
+        UpperCase = menu->insertItem(qApp->translate("toEditExtensionTool", "Upper"),
+                                     &EditExtensions,
+                                     SLOT(upperCase()),
+                                     toKeySequence(qApp->translate("toEditExtensionTool", "Ctrl+U", "Edit|Uppercase")));
+        LowerCase = menu->insertItem(qApp->translate("toEditExtensionTool", "Lower"),
+                                     &EditExtensions,
+                                     SLOT(lowerCase()),
+                                     toKeySequence(qApp->translate("toEditExtensionTool", "Ctrl+L", "Edit|Lowercase")));
+        toMainWidget()->editMenu()->insertItem(qApp->translate("toEditExtensionTool", "Modify Case"), menu);
+
+        IndentIndex = toMainWidget()->editMenu()->insertItem(QPixmap(const_cast<const char**>(indent_xpm)),
+                      qApp->translate("toEditExtensionTool", "Indent Block"), &EditExtensions,
+                      SLOT(indentBlock()),
+                      toKeySequence(qApp->translate("toEditExtensionTool", "Alt+Right", "Edit|Indent block")));
+        DeindentIndex = toMainWidget()->editMenu()->insertItem(QPixmap(const_cast<const char**>(deindent_xpm)),
+                        qApp->translate("toEditExtensionTool", "De-indent Block"), &EditExtensions,
+                        SLOT(deindentBlock()),
+                        toKeySequence(qApp->translate("toEditExtensionTool", "Alt+Left", "Edit|De-indent block")));
+        GotoLine = toMainWidget()->editMenu()->insertItem(qApp->translate("toEditExtensionTool", "Goto Line"), &EditExtensions,
+                   SLOT(gotoLine()));
+
+        AutoComplete=toMainWidget()->editMenu()->insertItem(qApp->translate("toEditExtensionTool", "Complete"),&EditExtensions,SLOT(autoComplete()),toKeySequence(qApp->translate("toEditExtensionTool", "Ctrl+Space","Edit|Complete")));
+
+        IndentButton = new QToolButton(QPixmap(const_cast<const char**>(indent_xpm)),
+                                       qApp->translate("toEditExtensionTool", "Indent block in editor"),
+                                       qApp->translate("toEditExtensionTool", "Indent block in editor"),
+                                       &EditExtensions, SLOT(indentBlock()),
+                                       toMainWidget()->editToolbar());
+        DeindentButton = new QToolButton(QPixmap(const_cast<const char**>(deindent_xpm)),
+                                         qApp->translate("toEditExtensionTool", "De-indent block in editor"),
+                                         qApp->translate("toEditExtensionTool", "De-indent block in editor"),
+                                         &EditExtensions, SLOT(deindentBlock()),
+                                         toMainWidget()->editToolbar());
+
+        EditExtensions.receivedFocus(NULL);
+    }
+    virtual QWidget *configurationTab(QWidget *parent)
+    {
+        return new toEditExtensionSetup(this, parent);
+    }
+};
+
+void toEditExtensionSetup::saveSetting(void)
+{
+    Ok = true;
+    Tool->setConfig(CONF_EXPAND_SPACES, ExpandSpaces->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_COMMA_BEFORE, CommaBefore->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_BLOCK_OPEN_LINE, BlockOpenLine->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_OPERATOR_SPACE, OperatorSpace->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_KEYWORD_UPPER, KeywordUpper->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_RIGHT_SEPARATOR, RightSeparator->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_END_BLOCK_NEWLINE, EndBlockNewline->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_INDENT_LEVEL, QString::number(IndentLevel->value()));
+    Tool->setConfig(CONF_COMMENT_COLUMN, QString::number(CommentColumn->value()));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_AUTO_INDENT_RO, AutoIndent->isChecked() ? "Yes" : "");
+    saveCurrent();
+}
+
+static toEditExtensionTool EditExtensionTool;
+
+toEditExtensionGoto::toEditExtensionGoto(toMarkedText *editor)
+        : toEditExtensionGotoUI(editor, "GotoLine", true), Editor(editor)
+{
+    toHelp::connectDialog(this);
+    Line->setMaxValue(Editor->lines());
+    Line->setMinValue(1);
+    {
+        int curline, curcol;
+        Editor->getCursorPosition(&curline, &curcol);
+        Line->setValue(curline);
+    }
+}
+
+void toEditExtensionGoto::gotoLine()
+{
+    Editor->setCursorPosition(Line->value() - 1, 0);
+}

Added: kde-extras/tora/branches/upstream/current/src/toeditextensions.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toeditextensions.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toeditextensions.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,94 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOEDITEXTENSIONS_H
+#define TOEDITEXTENSIONS_H
+
+#include "config.h"
+#include "toeditwidget.h"
+#include "toeditextensiongotoui.h"
+
+#include <algorithm>
+
+class toMarkedText;
+
+class toEditExtensions : public QObject, public toEditWidget::editHandler
+{
+    Q_OBJECT
+
+    toMarkedText *Current;
+
+    void intIndent(int level);
+public:
+    toEditExtensions()
+            : toEditWidget::editHandler()
+    { }
+    virtual void receivedFocus(toEditWidget *widget);
+    virtual void lostFocus(toEditWidget *widget);
+
+public slots:
+    void indentBlock(void);
+    void deindentBlock(void);
+
+    void autoIndentBlock(void);
+    void autoIndentBuffer(void);
+
+    void obfuscateBlock(void);
+    void obfuscateBuffer(void);
+
+    void searchForward(void);
+    void searchBackward(void);
+
+    void upperCase(void);
+    void lowerCase(void);
+
+    void gotoLine(void);
+    
+    void autoComplete(void);
+};
+
+class toEditExtensionGoto : public toEditExtensionGotoUI
+{
+    Q_OBJECT
+
+    toMarkedText *Editor;
+public:
+    toEditExtensionGoto(toMarkedText *editor);
+    void gotoLine();
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,156 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'toeditextensionsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:22 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "toeditextensionsetupui.h"
+
+#include <qvariant.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qspinbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "tohighlightedtext.h"
+
+/*
+ *  Constructs a toEditExtensionSetupUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toEditExtensionSetupUI::toEditExtensionSetupUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toEditExtensionSetupUI" );
+    toEditExtensionSetupUILayout = new QGridLayout( this, 1, 1, 11, 6, "toEditExtensionSetupUILayout"); 
+
+    Example = new toHighlightedText( this, "Example" );
+    Example->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, Example->sizePolicy().hasHeightForWidth() ) );
+
+    toEditExtensionSetupUILayout->addMultiCellWidget( Example, 11, 11, 0, 1 );
+
+    RightSeparator = new QCheckBox( this, "RightSeparator" );
+
+    toEditExtensionSetupUILayout->addMultiCellWidget( RightSeparator, 7, 7, 0, 1 );
+
+    EndBlockNewline = new QCheckBox( this, "EndBlockNewline" );
+
+    toEditExtensionSetupUILayout->addMultiCellWidget( EndBlockNewline, 8, 8, 0, 1 );
+
+    BlockOpenLine = new QCheckBox( this, "BlockOpenLine" );
+
+    toEditExtensionSetupUILayout->addMultiCellWidget( BlockOpenLine, 4, 4, 0, 1 );
+
+    CommaBefore = new QCheckBox( this, "CommaBefore" );
+
+    toEditExtensionSetupUILayout->addMultiCellWidget( CommaBefore, 3, 3, 0, 1 );
+
+    ExpandSpaces = new QCheckBox( this, "ExpandSpaces" );
+
+    toEditExtensionSetupUILayout->addMultiCellWidget( ExpandSpaces, 2, 2, 0, 1 );
+
+    OperatorSpace = new QCheckBox( this, "OperatorSpace" );
+
+    toEditExtensionSetupUILayout->addMultiCellWidget( OperatorSpace, 5, 5, 0, 1 );
+
+    KeywordUpper = new QCheckBox( this, "KeywordUpper" );
+
+    toEditExtensionSetupUILayout->addMultiCellWidget( KeywordUpper, 6, 6, 0, 1 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+
+    toEditExtensionSetupUILayout->addWidget( TextLabel1, 0, 0 );
+
+    IndentLevel = new QSpinBox( this, "IndentLevel" );
+
+    toEditExtensionSetupUILayout->addWidget( IndentLevel, 0, 1 );
+
+    TextLabel1_2 = new QLabel( this, "TextLabel1_2" );
+
+    toEditExtensionSetupUILayout->addWidget( TextLabel1_2, 1, 0 );
+
+    CommentColumn = new QSpinBox( this, "CommentColumn" );
+
+    toEditExtensionSetupUILayout->addWidget( CommentColumn, 1, 1 );
+
+    ExampleLabel = new QLabel( this, "ExampleLabel" );
+
+    toEditExtensionSetupUILayout->addMultiCellWidget( ExampleLabel, 10, 10, 0, 1 );
+
+    AutoIndent = new QCheckBox( this, "AutoIndent" );
+
+    toEditExtensionSetupUILayout->addMultiCellWidget( AutoIndent, 9, 9, 0, 1 );
+    languageChange();
+    resize( QSize(533, 394).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( IndentLevel, SIGNAL( valueChanged(int) ), this, SLOT( changed(void) ) );
+    connect( ExpandSpaces, SIGNAL( toggled(bool) ), this, SLOT( changed(void) ) );
+    connect( CommaBefore, SIGNAL( toggled(bool) ), this, SLOT( changed(void) ) );
+    connect( BlockOpenLine, SIGNAL( toggled(bool) ), this, SLOT( changed(void) ) );
+    connect( KeywordUpper, SIGNAL( toggled(bool) ), this, SLOT( changed(void) ) );
+    connect( RightSeparator, SIGNAL( toggled(bool) ), this, SLOT( changed(void) ) );
+    connect( EndBlockNewline, SIGNAL( toggled(bool) ), this, SLOT( changed(void) ) );
+    connect( OperatorSpace, SIGNAL( toggled(bool) ), this, SLOT( changed(void) ) );
+    connect( CommentColumn, SIGNAL( valueChanged(int) ), this, SLOT( changed(void) ) );
+
+    // tab order
+    setTabOrder( IndentLevel, CommentColumn );
+    setTabOrder( CommentColumn, ExpandSpaces );
+    setTabOrder( ExpandSpaces, CommaBefore );
+    setTabOrder( CommaBefore, BlockOpenLine );
+    setTabOrder( BlockOpenLine, OperatorSpace );
+    setTabOrder( OperatorSpace, KeywordUpper );
+    setTabOrder( KeywordUpper, RightSeparator );
+    setTabOrder( RightSeparator, EndBlockNewline );
+
+    // buddies
+    TextLabel1->setBuddy( IndentLevel );
+    TextLabel1_2->setBuddy( CommentColumn );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toEditExtensionSetupUI::~toEditExtensionSetupUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toEditExtensionSetupUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    RightSeparator->setText( tr( "&Right align keywords in each statement." ) );
+    QToolTip::add( RightSeparator, QString::null );
+    EndBlockNewline->setText( tr( "Insert a &newline after each block" ) );
+    BlockOpenLine->setText( tr( "Place THEN, LOOP, AS and IS on new line at b&eginning of new block" ) );
+    QToolTip::add( BlockOpenLine, QString::null );
+    CommaBefore->setText( tr( "Place &comma on new line before item instead of after on same line" ) );
+    QToolTip::add( CommaBefore, QString::null );
+    ExpandSpaces->setText( tr( "&Expand spaces to tabs when indenting" ) );
+    QToolTip::add( ExpandSpaces, tr( "Transform spaces to tabs whenever posible when indenting." ) );
+    OperatorSpace->setText( tr( "Put spaces around operators" ) );
+    QToolTip::add( OperatorSpace, tr( "Insert extra spaces between operators." ) );
+    KeywordUpper->setText( tr( "Transform keywords to &uppercase" ) );
+    QToolTip::add( KeywordUpper, QString::null );
+    TextLabel1->setText( tr( "&Indentation level" ) );
+    TextLabel1_2->setText( tr( "&Same line comment column" ) );
+    ExampleLabel->setText( tr( "Example" ) );
+    AutoIndent->setText( tr( "Auto indent read only SQL text editors" ) );
+}
+
+void toEditExtensionSetupUI::changed()
+{
+    qWarning( "toEditExtensionSetupUI::changed(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,63 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'toeditextensionsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:22 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOEDITEXTENSIONSETUPUI_H
+#define TOEDITEXTENSIONSETUPUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toHighlightedText;
+class QCheckBox;
+class QLabel;
+class QSpinBox;
+
+class toEditExtensionSetupUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toEditExtensionSetupUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toEditExtensionSetupUI();
+
+    toHighlightedText* Example;
+    QCheckBox* RightSeparator;
+    QCheckBox* EndBlockNewline;
+    QCheckBox* BlockOpenLine;
+    QCheckBox* CommaBefore;
+    QCheckBox* ExpandSpaces;
+    QCheckBox* OperatorSpace;
+    QCheckBox* KeywordUpper;
+    QLabel* TextLabel1;
+    QSpinBox* IndentLevel;
+    QLabel* TextLabel1_2;
+    QSpinBox* CommentColumn;
+    QLabel* ExampleLabel;
+    QCheckBox* AutoIndent;
+
+public slots:
+    virtual void changed(void);
+
+protected:
+    QGridLayout* toEditExtensionSetupUILayout;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOEDITEXTENSIONSETUPUI_H

Added: kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toeditextensionsetupui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,304 @@
+<!DOCTYPE UI><UI>
+<class>toEditExtensionSetupUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toEditExtensionSetupUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>533</width>
+            <height>394</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="11"  column="0"  rowspan="1"  colspan="2" >
+            <class>toHighlightedText</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Example</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>7</vsizetype>
+                </sizepolicy>
+            </property>
+        </widget>
+        <widget row="7"  column="0"  rowspan="1"  colspan="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>RightSeparator</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Right align keywords in each statement.</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string></string>
+            </property>
+        </widget>
+        <widget row="8"  column="0"  rowspan="1"  colspan="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>EndBlockNewline</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Insert a &amp;newline after each block</string>
+            </property>
+        </widget>
+        <widget row="4"  column="0"  rowspan="1"  colspan="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>BlockOpenLine</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Place THEN, LOOP, AS and IS on new line at b&amp;eginning of new block</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string></string>
+            </property>
+        </widget>
+        <widget row="3"  column="0"  rowspan="1"  colspan="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>CommaBefore</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Place &amp;comma on new line before item instead of after on same line</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string></string>
+            </property>
+        </widget>
+        <widget row="2"  column="0"  rowspan="1"  colspan="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ExpandSpaces</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Expand spaces to tabs when indenting</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Transform spaces to tabs whenever posible when indenting.</string>
+            </property>
+        </widget>
+        <widget row="5"  column="0"  rowspan="1"  colspan="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>OperatorSpace</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Put spaces around operators</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Insert extra spaces between operators.</string>
+            </property>
+        </widget>
+        <widget row="6"  column="0"  rowspan="1"  colspan="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>KeywordUpper</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Transform keywords to &amp;uppercase</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string></string>
+            </property>
+        </widget>
+        <widget row="0"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Indentation level</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>IndentLevel</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="1" >
+            <class>QSpinBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>IndentLevel</cstring>
+            </property>
+        </widget>
+        <widget row="1"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Same line comment column</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>CommentColumn</cstring>
+            </property>
+        </widget>
+        <widget row="1"  column="1" >
+            <class>QSpinBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>CommentColumn</cstring>
+            </property>
+        </widget>
+        <widget row="10"  column="0"  rowspan="1"  colspan="2" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ExampleLabel</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Example</string>
+            </property>
+        </widget>
+        <widget row="9"  column="0"  rowspan="1"  colspan="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>AutoIndent</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Auto indent read only SQL text editors</string>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toHighlightedText</class>
+        <header location="local">tohighlightedtext.h</header>
+        <sizehint>
+            <width>100</width>
+            <height>100</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>IndentLevel</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>toEditExtensionSetupUI</receiver>
+        <slot>changed(void)</slot>
+    </connection>
+    <connection>
+        <sender>ExpandSpaces</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toEditExtensionSetupUI</receiver>
+        <slot>changed(void)</slot>
+    </connection>
+    <connection>
+        <sender>CommaBefore</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toEditExtensionSetupUI</receiver>
+        <slot>changed(void)</slot>
+    </connection>
+    <connection>
+        <sender>BlockOpenLine</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toEditExtensionSetupUI</receiver>
+        <slot>changed(void)</slot>
+    </connection>
+    <connection>
+        <sender>KeywordUpper</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toEditExtensionSetupUI</receiver>
+        <slot>changed(void)</slot>
+    </connection>
+    <connection>
+        <sender>RightSeparator</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toEditExtensionSetupUI</receiver>
+        <slot>changed(void)</slot>
+    </connection>
+    <connection>
+        <sender>EndBlockNewline</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toEditExtensionSetupUI</receiver>
+        <slot>changed(void)</slot>
+    </connection>
+    <connection>
+        <sender>OperatorSpace</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toEditExtensionSetupUI</receiver>
+        <slot>changed(void)</slot>
+    </connection>
+    <connection>
+        <sender>CommentColumn</sender>
+        <signal>valueChanged(int)</signal>
+        <receiver>toEditExtensionSetupUI</receiver>
+        <slot>changed(void)</slot>
+    </connection>
+    <slot access="public">changed(void)</slot>
+</connections>
+<tabstops>
+    <tabstop>IndentLevel</tabstop>
+    <tabstop>CommentColumn</tabstop>
+    <tabstop>ExpandSpaces</tabstop>
+    <tabstop>CommaBefore</tabstop>
+    <tabstop>BlockOpenLine</tabstop>
+    <tabstop>OperatorSpace</tabstop>
+    <tabstop>KeywordUpper</tabstop>
+    <tabstop>RightSeparator</tabstop>
+    <tabstop>EndBlockNewline</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/toeditwidget.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toeditwidget.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toeditwidget.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,179 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "toeditwidget.h"
+#include "tomain.h"
+
+std::list<toEditWidget::editHandler *> *toEditWidget::Handlers;
+
+void toEditWidget::setMainSettings(void)
+{
+    toMain::editEnable(this);
+}
+
+toEditWidget::toEditWidget()
+{
+    Open = Save = Print = Undo = Redo = Cut = Copy = Paste = Search = SelectAll = ReadAll = false;
+}
+
+toEditWidget::toEditWidget(bool open, bool save, bool print,
+                           bool undo, bool redo,
+                           bool cut, bool copy, bool paste,
+                           bool search,
+                           bool selectAll, bool readAll)
+{
+    Open = open;
+    Save = save;
+    Print = print;
+    Undo = undo;
+    Redo = redo;
+    Cut = cut;
+    Copy = copy;
+    Paste = paste;
+    Search = search;
+    SelectAll = selectAll;
+    ReadAll = readAll;
+}
+
+void toEditWidget::setEdit(bool open, bool save, bool print,
+                           bool undo, bool redo,
+                           bool cut, bool copy, bool paste,
+                           bool search,
+                           bool selectAll, bool readAll)
+{
+    Open = open;
+    Save = save;
+    Print = print;
+    Undo = undo;
+    Redo = redo;
+    Cut = cut;
+    Copy = copy;
+    Paste = paste;
+    Search = search;
+    SelectAll = selectAll;
+    ReadAll = readAll;
+
+    setMainSettings();
+}
+
+toEditWidget::~toEditWidget()
+{
+    toMain::editDisable(this);
+}
+
+void toEditWidget::addHandler(toEditWidget::editHandler *handler)
+{
+    if (!Handlers)
+        Handlers = new std::list<toEditWidget::editHandler *>;
+    for (std::list<toEditWidget::editHandler *>::iterator i = (*Handlers).begin();
+            i != (*Handlers).end();
+            i++)
+        if (*i == handler)
+            return ;
+    (*Handlers).insert((*Handlers).end(), handler);
+}
+
+void toEditWidget::delHandler(toEditWidget::editHandler *handler)
+{
+    for (std::list<toEditWidget::editHandler *>::iterator i = (*Handlers).begin();
+            i != (*Handlers).end();
+            i++)
+        if (*i == handler)
+        {
+            (*Handlers).erase(i);
+            break;
+        }
+}
+
+void toEditWidget::lostFocus(void)
+{
+    if (!Handlers)
+        return ;
+    for (std::list<editHandler *>::iterator i = (*Handlers).begin();
+            i != (*Handlers).end();
+            i++)
+    {
+        (*i)->lostFocus(this);
+    }
+}
+
+void toEditWidget::receivedFocus(void)
+{
+    toMain::setEditWidget(this);
+
+    if (!Handlers)
+        return ;
+    for (std::list<editHandler *>::iterator i = (*Handlers).begin();
+            i != (*Handlers).end();
+            i++)
+    {
+        (*i)->receivedFocus(this);
+    }
+}
+
+toEditWidget::editHandler::editHandler()
+{
+    toEditWidget::addHandler(this);
+}
+
+toEditWidget::editHandler::~editHandler()
+{
+    toEditWidget::delHandler(this);
+}
+
+bool toEditWidget::editOpen(QString)
+{
+    return true;
+}
+
+bool toEditWidget::editSave(bool)
+{
+    return true;
+}
+
+bool toEditWidget::searchNext(toSearchReplace *)
+{
+    return false;
+}
+
+void toEditWidget::searchReplace(const QString &)
+{}
+
+bool toEditWidget::searchCanReplace(bool)
+{
+    return false;
+}

Added: kde-extras/tora/branches/upstream/current/src/toeditwidget.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toeditwidget.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toeditwidget.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,327 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOEDITWIDGET_H
+#define TOEDITWIDGET_H
+
+#include "config.h"
+
+#include <list>
+
+#include <qwidget.h>
+
+class toSearchReplace;
+
+/** This is an abstract base class for any widget (Not included in object) that wants to
+ * access copy, cut, paste, open, save commands of the user interface.
+ */
+class toEditWidget
+{
+public:
+    /** Class used to extent how to enable/disable parts of the interface as
+     * focus changes.
+     */
+    class editHandler
+    {
+    public:
+        /** Constructor.
+         */
+        editHandler();
+        /** Destructor.
+         */
+        virtual ~editHandler();
+        /** Called when a new widget receives the focus.
+         */
+        virtual void receivedFocus(toEditWidget *widget) = 0;
+        /** Called when a widget loses the focus.
+         */
+        virtual void lostFocus(toEditWidget *widget) = 0;
+    };
+private:
+    bool Open;
+    bool Save;
+    bool Print;
+    bool Undo;
+    bool Redo;
+    bool Cut;
+    bool Copy;
+    bool Paste;
+    bool Search;
+    bool SelectAll;
+    bool ReadAll;
+    void setMainSettings(void);
+
+    static std::list<editHandler *> *Handlers;
+public:
+    /** Empty constructor, all functions are disabled.
+     */
+    toEditWidget();
+    /** Specified constructor, all functions are specified in the constructor.
+     */
+    toEditWidget(bool open, bool save, bool print,
+                 bool undo, bool redo,
+                 bool cut, bool copy, bool paste,
+                 bool search,
+                 bool selectAll, bool readAll);
+    virtual ~toEditWidget();
+
+    /** Specify new enabled functions.
+     */
+    void setEdit(bool open, bool save, bool print,
+                 bool undo, bool redo,
+                 bool cut, bool copy, bool paste,
+                 bool search,
+                 bool selectAll, bool readAll);
+
+    /** Perform an open on this widget. Default NOP.
+     * @param file The file to open, if not specified prompt for file.
+     */
+    virtual bool editOpen(QString file = QString::null);
+    /** Perform a save on this widget. Default NOP.
+     * @param askfile Ask filename even if default filename is available.
+     */
+    virtual bool editSave(bool askfile);
+    /** Print this widgets contents. Default NOP.
+     */
+    virtual void editPrint(void)
+    { }
+    /** Perform undo. Default NOP.
+     */
+    virtual void editUndo(void)
+    { }
+    /** Perform redo. Default NOP.
+     */
+    virtual void editRedo(void)
+    { }
+    /** Perform cut. Default NOP.
+     */
+    virtual void editCut(void)
+    { }
+    /** Perform copy. Default NOP.
+     */
+    virtual void editCopy(void)
+    { }
+    /** Perform paste. Default NOP.
+     */
+    virtual void editPaste(void)
+    { }
+    /** Select all contents. Default NOP.
+     */
+    virtual void editSelectAll(void)
+    { }
+    /** Read all available data. Default NOP.
+     */
+    virtual void editReadAll(void)
+    { }
+
+    /** Set if open is enabled.
+     */
+    void openEnabled(bool val)
+    {
+        Open = val;
+        setMainSettings();
+    }
+    /** Set if save is enabled.
+     */
+    void saveEnabled(bool val)
+    {
+        Save = val;
+        setMainSettings();
+    }
+    /** Set if print is enabled.
+     */
+    void printEnabled(bool val)
+    {
+        Print = val;
+        setMainSettings();
+    }
+    /** Set if undo is enabled.
+     */
+    void undoEnabled(bool val)
+    {
+        Undo = val;
+        setMainSettings();
+    }
+    /** Set if redo is enabled.
+     */
+    void redoEnabled(bool val)
+    {
+        Redo = val;
+        setMainSettings();
+    }
+    /** Set if cut is enabled.
+     */
+    void cutEnabled(bool val)
+    {
+        Cut = val;
+        setMainSettings();
+    }
+    /** Set if copy is enabled.
+     */
+    void copyEnabled(bool val)
+    {
+        Copy = val;
+        setMainSettings();
+    }
+    /** Set if paste is enabled.
+     */
+    void pasteEnabled(bool val)
+    {
+        Paste = val;
+        setMainSettings();
+    }
+    /** Set if search is enabled.
+     */
+    void searchEnabled(bool val)
+    {
+        Search = val;
+        setMainSettings();
+    }
+    /** Set if select all is enabled.
+     */
+    void selectAllEnabled(bool val)
+    {
+        SelectAll = val;
+        setMainSettings();
+    }
+    /** Set if read all is enabled.
+     */
+    void readAllEnabled(bool val)
+    {
+        ReadAll = val;
+        setMainSettings();
+    }
+
+    /** Check if open is enabled.
+     */
+    bool openEnabled(void)
+    {
+        return Open;
+    }
+    /** Check if save is enabled.
+     */
+    bool saveEnabled(void)
+    {
+        return Save;
+    }
+    /** Check if print is enabled.
+     */
+    bool printEnabled(void)
+    {
+        return Print;
+    }
+    /** Check if undo is enabled.
+     */
+    bool undoEnabled(void)
+    {
+        return Undo;
+    }
+    /** Check if redo is enabled.
+     */
+    bool redoEnabled(void)
+    {
+        return Redo;
+    }
+    /** Check if cut is enabled.
+     */
+    bool cutEnabled(void)
+    {
+        return Cut;
+    }
+    /** Check if copy is enabled.
+     */
+    bool copyEnabled(void)
+    {
+        return Copy;
+    }
+    /** Check if paste is enabled.
+     */
+    bool pasteEnabled(void)
+    {
+        return Paste;
+    }
+    /** Check if search is enabled.
+     */
+    bool searchEnabled(void)
+    {
+        return Search;
+    }
+    /** Check if select all is enabled.
+     */
+    bool selectAllEnabled(void)
+    {
+        return SelectAll;
+    }
+    /** Check if read all is enabled.
+     */
+    bool readAllEnabled(void)
+    {
+        return ReadAll;
+    }
+
+    /** Move to top of data
+     */
+    virtual void searchTop(void)
+    { }
+    /** Search for next entry
+     * @return True if found, should select the found text.
+     */
+    virtual bool searchNext(toSearchReplace *search);
+    /** Replace entry with new data
+     */
+    virtual void searchReplace(const QString &newData);
+    /** Check if data can be modified by search
+     * @param all If true can replace all, otherwise can replace right now.
+     */
+    virtual bool searchCanReplace(bool all);
+
+    /** Call this when this widget has received the focus. Must be called by the implementor.
+     */
+    virtual void receivedFocus(void);
+    /** Called when this widget has lost the focus. Don't forget to call parent when reimplemented.
+     */
+    virtual void lostFocus(void);
+
+    /** Add a hook to be called every time focus changes.
+     */
+    static void addHandler(editHandler *handler);
+    /** Removed a hook from being called every time focus changes.
+     */
+    static void delHandler(editHandler *handler);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toextract.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toextract.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toextract.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,966 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "toextract.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#else
+#include <winsock.h>
+#endif
+#include <stdio.h>
+
+#include <qapplication.h>
+#include <qlabel.h>
+#include <qprogressdialog.h>
+#include <qdatetime.h>
+
+std::map<QString, toExtract::extractor *> *toExtract::Extractors;
+
+void toExtract::extractor::registerExtract(const QString &db,
+        const QString &oper,
+        const QString &type)
+{
+    toExtract::allocExtract();
+
+    QString name = toExtract::extractorName(db, oper, type);
+
+    if ((*toExtract::Extractors).find(name) != (*toExtract::Extractors).end())
+        fprintf(stderr, "Extractor %s multiply defined\n", (const char *)name);
+
+    (*toExtract::Extractors)[name] = this;
+}
+
+void toExtract::extractor::unregisterExtract(const QString &db,
+        const QString &oper,
+        const QString &type)
+{
+    toExtract::allocExtract();
+
+    QString name = toExtract::extractorName(db, oper, type);
+    std::map<QString, extractor *>::iterator i = (*toExtract::Extractors).find(name);
+    if (i == (*toExtract::Extractors).end())
+        fprintf(stderr, "Extractor %s not defined on unregistering\n", (const char *)name);
+    else
+        (*toExtract::Extractors).erase(i);
+}
+
+void toExtract::extractor::initialize(toExtract &) const
+{}
+
+void toExtract::extractor::create(toExtract &,
+                                  QTextStream &,
+                                  const QString &,
+                                  const QString &,
+                                  const QString &,
+                                  const QString &) const
+    {}
+
+void toExtract::extractor::describe(toExtract &,
+                                    std::list<QString> &,
+                                    const QString &,
+                                    const QString &,
+                                    const QString &,
+                                    const QString &) const
+    {}
+
+void toExtract::extractor::migrate(toExtract &,
+                                   QTextStream &,
+                                   const QString &,
+                                   std::list<QString> &,
+                                   std::list<QString> &) const
+    {}
+
+void toExtract::extractor::drop(toExtract &,
+                                QTextStream &,
+                                const QString &,
+                                const QString &,
+                                const QString &,
+                                const QString &) const
+    {}
+
+std::list<toExtract::datatype> toExtract::extractor::datatypes() const
+{
+    std::list<toExtract::datatype> ret;
+    return ret;
+}
+
+toExtract::extractor::extractor()
+{}
+
+toExtract::extractor::~extractor()
+{}
+
+void toExtract::allocExtract(void)
+{
+    if (!Extractors)
+        Extractors = new std::map<QString, extractor *>;
+}
+
+QString toExtract::extractorName(const QString &db, const QString &oper, const QString &type)
+{
+    QString ret(db);
+    if (!oper.isEmpty())
+        ret += ":" + oper;
+    if (!type.isEmpty())
+        ret += ":" + type;
+    return ret;
+}
+
+toExtract::extractor *toExtract::findExtractor(toConnection &conn,
+        const QString &oper,
+        const QString &type)
+{
+    allocExtract();
+
+    QString name = extractorName(conn.provider(), oper, type);
+    std::map<QString, extractor *>::iterator i = (*Extractors).find(name);
+    if (i != (*Extractors).end())
+        return (*i).second;
+    return NULL;
+}
+
+void toExtract::initialize(void)
+{
+    if (!Initialized)
+    {
+        Initialized = true;
+        extractor *ext = findExtractor(QString::null, QString::null);
+        if (ext)
+            ext->initialize(*this);
+    }
+}
+
+toExtract::toExtract(toConnection &conn, QWidget *parent)
+        : Connection(conn), Parent(parent)
+{
+    Heading = true;
+    Prompt = true;
+    Constraints = true;
+    Indexes = true;
+    Grants = true;
+    Storage = true;
+    Parallel = true;
+    Contents = true;
+    Comments = true;
+    Partition = true;
+    Schema = "1";
+    Initialized = false;
+    BlockSize = 8192;
+}
+
+void toExtract::setState(const QCString &name, const QVariant &val)
+{
+    Context[name] = val;
+}
+
+QVariant toExtract::state(const QCString &name)
+{
+    return Context[name];
+}
+
+void toExtract::srcDst2DropCreate(std::list<QString> &source, std::list<QString> &destination,
+                                  std::list<QString> &drop, std::list<QString> &create)
+{
+    drop.clear();
+    create.clear();
+
+    std::list<QString>::iterator i = source.begin();
+    std::list<QString>::iterator j = destination.begin();
+    while (i != source.end() && j != destination.end())
+    {
+        if (*i != *j)
+        {
+            if (*i < *j)
+            {
+                drop.insert(drop.end(), *i);
+                i++;
+            }
+            else
+            {
+                create.insert(create.end(), *j);
+                j++;
+            }
+        }
+        else
+        {
+            i++;
+            j++;
+        }
+    }
+    while (i != source.end())
+    {
+        drop.insert(drop.end(), *i);
+        i++;
+    }
+    while (j != destination.end())
+    {
+        create.insert(create.end(), *j);
+        j++;
+    }
+}
+
+void toExtract::parseObject(const QString &object, QString &owner, QString &name)
+{
+    try
+    {
+        unsigned int search = 0;
+        if (object[0] == '\"')
+        {
+            int pos = object.find('\"', 1);
+            if (pos < 0)
+                throw 1;
+            owner = object.left(pos);
+            owner = owner.right(owner.length() - 1);
+            search = pos + 1;
+        }
+        else
+        {
+            int pos = object.find('.');
+            if (pos < 0)
+                pos = object.length();
+            owner = object.left(pos);
+            search = pos;
+        }
+        if (search >= object.length())
+        {
+            name = owner;
+            owner = Connection.user();
+        }
+        else if (object.at(search) != '.')
+            throw 2;
+        search++;
+        if (object.at(search) == '\"')
+        {
+            int pos = object.find('\"', search + 1);
+            if (pos < 0)
+                throw 3;
+            name = object.left(pos);
+            name = owner.right(pos - search - 1);
+            search = pos + 1;
+            if (search < object.length())
+                throw 4;
+        }
+        else
+        {
+            name = object.right(object.length() - search);
+        }
+    }
+    catch (int i)
+    {
+        throw qApp->translate("toExtract", "Failed to extract owner and name from (%1), internal error %2").arg(object).arg(i);
+    }
+}
+
+bool toExtract::canHandle(toConnection &conn)
+{
+    return bool(findExtractor(conn, QString::null, QString::null));
+}
+
+std::list<toExtract::datatype> toExtract::datatypes()
+{
+    std::list<toExtract::datatype> ret;
+    try
+    {
+        extractor *ext = findExtractor(connection(), QString::null, QString::null);
+        if (ext)
+            ret = ext->datatypes();
+        ret.sort();
+    }
+    TOCATCH
+    return ret;
+}
+
+void toExtract::create(QTextStream &ret, std::list<QString> &objects)
+{
+    ret << generateHeading(qApp->translate("toExtract", "CREATE"), objects);
+
+    QProgressDialog *progress = NULL;
+    QLabel *label = NULL;
+    if (Parent)
+    {
+        progress = new QProgressDialog(qApp->translate("toExtract", "Creating create script"), qApp->translate("toExtract", "Cancel"),
+                                       objects.size(), Parent, "progress", true);
+        progress->setCaption(qApp->translate("toExtract", "Creating script"));
+        label = new QLabel(progress);
+        progress->setLabel(label);
+    }
+    initialize();
+
+    try
+    {
+        toBusy busy;
+        int num = 1;
+        for (std::list<QString>::iterator i = objects.begin();i != objects.end();i++)
+        {
+            if (progress)
+            {
+                progress->setProgress(num);
+                label->setText(*i);
+                qApp->processEvents();
+                if (progress->wasCancelled())
+                    throw qApp->translate("toExtract", "Creating script was cancelled");
+            }
+            num++;
+
+            QString type = *i;
+            QString owner;
+            QString name;
+            int pos = type.find(QString::fromLatin1(":"));
+            if (pos < 0)
+                throw qApp->translate("toExtract", "Internal error, missing : in object description");
+            parseObject(type.right(type.length() - pos - 1), owner, name);
+            type.truncate(pos);
+            QString utype = type.upper();
+            QString schema = intSchema(owner, false);
+            try
+            {
+                try
+                {
+                    extractor *ext = findExtractor(QString::fromLatin1("CREATE"), utype);
+                    if (ext)
+                        ext->create(*this,
+                                    ret,
+                                    utype,
+                                    schema,
+                                    owner,
+                                    name);
+                    else
+                        throw qApp->translate("toExtract", "Invalid type %1 to create").arg(type);
+                }
+                catch (const QString &exc)
+                {
+                    rethrow(qApp->translate("toExtract", "Create"), *i, exc);
+                }
+            }
+            catch (const QString &exc)
+            {
+                toStatusMessage(exc);
+            }
+        }
+    }
+    catch (...)
+    {
+        delete progress;
+        throw;
+    }
+    delete progress;
+}
+
+std::list<QString> toExtract::describe(std::list<QString> &objects)
+{
+    std::list<QString> ret;
+
+    QProgressDialog *progress = NULL;
+    QLabel *label = NULL;
+    if (Parent)
+    {
+        progress = new QProgressDialog(qApp->translate("toExtract", "Creating description"), qApp->translate("toExtract", "Cancel"),
+                                       objects.size(), Parent, "progress", true);
+        progress->setCaption(qApp->translate("toExtract", "Creating description"));
+        label = new QLabel(progress);
+        progress->setLabel(label);
+    }
+    initialize();
+
+    try
+    {
+        toBusy busy;
+        int num = 1;
+        for (std::list<QString>::iterator i = objects.begin();i != objects.end();i++)
+        {
+            if (progress)
+            {
+                progress->setProgress(num);
+                label->setText(*i);
+                qApp->processEvents();
+                if (progress->wasCancelled())
+                    throw qApp->translate("toExtract", "Describe was cancelled");
+            }
+            num++;
+
+            QString type = *i;
+            QString owner;
+            QString name;
+            int pos = type.find(QString::fromLatin1(":"));
+            if (pos < 0)
+                throw qApp->translate("toExtract", "Internal error, missing : in object description");
+            parseObject(type.right(type.length() - pos - 1), owner, name);
+            type.truncate(pos);
+            QString utype = type.upper();
+            QString schema = intSchema(owner, true);
+
+            std::list<QString> cur;
+
+            try
+            {
+                try
+                {
+                    extractor *ext = findExtractor(QString::fromLatin1("DESCRIBE"), utype);
+                    if (ext)
+                        ext->describe(*this,
+                                      cur,
+                                      utype,
+                                      schema,
+                                      owner,
+                                      name);
+                    else
+                    {
+                        throw qApp->translate("toExtract", "Invalid type %1 to describe").arg(type);
+                    }
+                }
+                catch (const QString &exc)
+                {
+                    rethrow(qApp->translate("toExtract", "Describe"), *i, exc);
+                }
+                cur.sort();
+                ret.merge(cur);
+            }
+            catch (const QString &exc)
+            {
+                toStatusMessage(exc);
+            }
+        }
+    }
+    catch (...)
+    {
+        delete progress;
+        throw;
+    }
+    delete progress;
+    return ret;
+}
+
+void toExtract::drop(QTextStream &ret, std::list<QString> &objects)
+{
+    ret << generateHeading(qApp->translate("toExtract", "DROP"), objects);
+
+    QProgressDialog *progress = NULL;
+    QLabel *label = NULL;
+    if (Parent)
+    {
+        progress = new QProgressDialog(qApp->translate("toExtract", "Creating drop script"), qApp->translate("toExtract", "Cancel"),
+                                       objects.size(), Parent, "progress", true);
+        progress->setCaption(qApp->translate("toExtract", "Creating drop script"));
+        label = new QLabel(progress);
+        progress->setLabel(label);
+    }
+    initialize();
+
+    try
+    {
+        toBusy busy;
+        int num = 1;
+        for (std::list<QString>::iterator i = objects.begin();i != objects.end();i++)
+        {
+            progress->setProgress(num);
+            label->setText(*i);
+            qApp->processEvents();
+            if (progress->wasCancelled())
+                throw qApp->translate("toExtract", "Creating drop script was cancelled");
+            num++;
+
+            QString type = *i;
+            QString owner;
+            QString name;
+            int pos = type.find(QString::fromLatin1(":"));
+            if (pos < 0)
+                throw qApp->translate("toExtract", "Internal error, missing : in object description");
+            parseObject(type.right(type.length() - pos - 1), owner, name);
+            type.truncate(pos);
+            QString utype = type.upper();
+            QString schema = intSchema(owner, false);
+
+            try
+            {
+                try
+                {
+                    extractor *ext = findExtractor(QString::fromLatin1("DROP"), utype);
+                    if (ext)
+                        ext->drop(*this,
+                                  ret,
+                                  utype,
+                                  schema,
+                                  owner,
+                                  name);
+                    else
+                    {
+                        throw qApp->translate("toExtract", "Invalid type %1 to drop");
+                        ;
+                    }
+                }
+                catch (const QString &exc)
+                {
+                    rethrow(qApp->translate("toExtract", "Drop script"), *i, exc);
+                }
+            }
+            catch (const QString &exc)
+            {
+                toStatusMessage(exc);
+            }
+        }
+    }
+    catch (...)
+    {
+        delete progress;
+        throw;
+    }
+    delete progress;
+}
+
+std::map<QString, std::list<QString> > toExtract::migrateGroup(std::list<QString> &grpLst)
+{
+    std::map<QString, std::list<QString> > ret;
+    for (std::list<QString>::iterator i = grpLst.begin();i != grpLst.end();i++)
+    {
+        std::list<QString> ctx = splitDescribe(*i);
+        if (ctx.size() < 3)
+            toStatusMessage(qApp->translate("toExtract", "Invalid describe context (<3 parts) \"%1\")").arg(*i));
+        else
+        {
+            QString t = toShift(ctx);
+            t += QString::fromLatin1("\01");
+            t += toShift(ctx);
+            t += QString::fromLatin1("\01");
+            t += toShift(ctx);
+            toPush(ret[t], *i);
+        }
+    }
+    return ret;
+}
+
+void toExtract::migrate(QTextStream &ret, std::list<QString> &drpLst, std::list<QString> &crtLst)
+{
+    std::list<QString> t;
+    t.insert(t.end(), qApp->translate("toExtract", "Object list not available in migration"));
+    ret << generateHeading(qApp->translate("toExtract", "MIGRATE"), t);
+
+    QProgressDialog *progress = NULL;
+    QLabel *label = NULL;
+
+    std::map<QString, std::list<QString> > objDrp;
+    std::map<QString, std::list<QString> > objCrt;
+
+    objDrp = migrateGroup(drpLst);
+    objCrt = migrateGroup(crtLst);
+
+    for (std::map<QString, std::list<QString> >::iterator j = objCrt.begin();j != objCrt.end();j++)
+        objDrp[(*j).first]; // Make sure all objects in the createlist also exists in the droplist
+
+    if (Parent)
+    {
+        progress = new QProgressDialog(qApp->translate("toExtract", "Creating migration script"), qApp->translate("toExtract", "Cancel"),
+                                       objDrp.size(), Parent, "progress", true);
+        progress->setCaption(qApp->translate("toExtract", "Creating migration script"));
+        label = new QLabel(progress);
+        progress->setLabel(label);
+    }
+    initialize();
+
+    try
+    {
+        toBusy busy;
+        int num = 1;
+
+        for (std::map<QString, std::list<QString> >::iterator i = objDrp.begin();i != objDrp.end();i++)
+        {
+            QString t = (*i).first;
+
+            if (progress)
+            {
+                progress->setProgress(num);
+                label->setText(t);
+                qApp->processEvents();
+                if (progress->wasCancelled())
+                    throw qApp->translate("toExtract", "Creating drop script was cancelled");
+            }
+            num++;
+
+            std::list<QString> &crt = objCrt[t];
+            std::list<QString> &drp = objDrp[t];
+            crt.sort();
+            drp.sort();
+            std::list<QString> ctx = splitDescribe(t);
+            QString schema = toShift(ctx);
+            QString utype = toShift(ctx).upper();
+            QString name = toShift(ctx);
+
+            try
+            {
+                try
+                {
+                    extractor *ext = findExtractor(QString::fromLatin1("MIGRATE"), utype);
+                    if (ext)
+                        ext->migrate(*this,
+                                     ret,
+                                     utype,
+                                     drp,
+                                     crt);
+                    else
+                    {
+                        throw qApp->translate("toExtract", "Invalid type %1 to migrate").arg(utype);
+                    }
+                }
+                catch (const QString &exc)
+                {
+                    rethrow(qApp->translate("toExtract", "Migration script"), (*i).first, exc);
+                }
+            }
+            catch (const QString &exc)
+            {
+                toStatusMessage(exc);
+            }
+
+        }
+    }
+    catch (...)
+    {
+        delete progress;
+        throw;
+    }
+    delete progress;
+}
+
+QString toExtract::generateHeading(const QString &action,
+                                   std::list<QString> &lst)
+{
+    if (!Heading)
+        return QString::null;
+    char host[1024];
+    gethostname(host, 1024);
+
+    QString db = Connection.host();
+    if (db.length() && db != QString::fromLatin1("*"))
+        db += QString::fromLatin1(":");
+    else
+        db = QString::null;
+    db += Connection.database();
+
+    QString str = qApp->translate("toExtract", "-- This DDL was reverse engineered by\n"
+                                  "-- " TOAPPNAME ", Version %1\n"
+                                  "--\n"
+                                  "-- at:   %2\n"
+                                  "-- from: %3, an %4 %5 database\n"
+                                  "--\n"
+                                  "-- on:   %6\n"
+                                  "--\n").
+                  arg(QString::fromLatin1(TOVERSION)).
+                  arg(QString::fromLatin1(host)).
+                  arg(db).
+                  arg(Connection.provider()).
+                  arg(Connection.version()).
+                  arg(QDateTime::currentDateTime().toString());
+    if (action == QString::fromLatin1("FREE SPACE"))
+        str += qApp->translate("toExtract", "-- Generating free space report for:\n--");
+    else
+    {
+        str += qApp->translate("toExtract", "-- Generating %1 statement for:\n").arg(action);
+    }
+    for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+    {
+        if (!(*i).startsWith(QString::fromLatin1("TABLE REFERENCES")))
+        {
+            str += QString::fromLatin1("-- ");
+            str += (*i);
+            str += QString::fromLatin1("\n");
+        }
+    }
+    str += QString::fromLatin1("\n");
+    return str;
+}
+
+void toExtract::rethrow(const QString &what, const QString &object, const QString &exc)
+{
+    throw qApp->translate("toExtract", "Error in toExtract\n"
+                          "Operation:      %1\n"
+                          "Object:         %2\n"
+                          "Error:          %3").
+    arg(what).
+    arg(object).
+    arg(exc);
+}
+
+void toExtract::setSizes(void)
+{
+    Initial.clear();
+    Next.clear();
+    Limit.clear();
+    if (Resize == QString::fromLatin1("1"))
+    {
+        for (int i = 1;i < 10000;i *= 10)
+        {
+            QString str;
+            if (i < 1000)
+            {
+                str = QString::number(40 * i + 1);
+                str += QString::fromLatin1(" K");
+            }
+            else
+                str = QString::fromLatin1("UNLIMITED");
+            toPush(Initial, str);
+            str = QString::number(5 * BlockSize * i);
+            str += QString::fromLatin1(" K");
+            toPush(Next, str);
+            toPush(Limit, str);
+        }
+    }
+    else if (!Resize.isEmpty())
+    {
+        QStringList lst = QStringList::split(QString::fromLatin1(":"), Resize);
+        if (lst.count() % 3 != 0)
+            throw qApp->translate("toExtract", "Malformed resize string (Should contain multiple of 3 number of ':')");
+        for (unsigned int i = 0;i < lst.count();i += 3)
+        {
+            if (i + 3 < lst.count())
+                toPush(Limit, lst[i]);
+            else
+                toPush(Limit, QString::fromLatin1("UNLIMITED"));
+            toPush(Initial, lst[i + 1]);
+            toPush(Next, lst[i + 2]);
+        }
+    }
+}
+
+QString toExtract::intSchema(const QString &owner, bool desc)
+{
+    if (owner.upper() == QString::fromLatin1("PUBLIC"))
+        return QString::fromLatin1("PUBLIC");
+    if (Schema == QString::fromLatin1("1"))
+    {
+        QString ret = Connection.quote(owner);
+        if (!desc)
+            ret += QString::fromLatin1(".");
+        return ret;
+    }
+    else if (Schema.isEmpty())
+        return QString::null;
+    QString ret = Connection.quote(Schema);
+    if (!desc)
+        ret += QString::fromLatin1(".");
+    return ret;
+}
+
+void toExtract::initialNext(const QString &blocks, QString &initial, QString &next)
+{
+    std::list<QString>::iterator iinit = Initial.begin();
+    std::list<QString>::iterator inext = Next.begin();
+    std::list<QString>::iterator ilimit = Limit.begin();
+    while (ilimit != Initial.end())
+    {
+        if (*ilimit == QString::fromLatin1("UNLIMITED") ||
+                (*ilimit).toFloat() > blocks.toFloat())
+        {
+            initial = *iinit;
+            next = *inext;
+            return ;
+        }
+        iinit++;
+        inext++;
+        ilimit++;
+    }
+}
+
+void toExtract::addDescription(std::list<QString> &ret, const std::list<QString> &ctx,
+                               const QString &arg1, const QString &arg2,
+                               const QString &arg3, const QString &arg4,
+                               const QString &arg5, const QString &arg6,
+                               const QString &arg7, const QString &arg8,
+                               const QString &arg9)
+{
+    int numArgs;
+    if (!arg9.isNull())
+        numArgs = 9;
+    else if (!arg8.isNull())
+        numArgs = 8;
+    else if (!arg7.isNull())
+        numArgs = 7;
+    else if (!arg6.isNull())
+        numArgs = 6;
+    else if (!arg5.isNull())
+        numArgs = 5;
+    else if (!arg4.isNull())
+        numArgs = 4;
+    else if (!arg3.isNull())
+        numArgs = 3;
+    else if (!arg2.isNull())
+        numArgs = 2;
+    else if (!arg1.isNull())
+        numArgs = 1;
+    else
+        numArgs = 0;
+
+    std::list<QString> args = ctx;
+    if (numArgs > 0)
+        args.insert(args.end(), arg1);
+    if (numArgs > 1)
+        args.insert(args.end(), arg2);
+    if (numArgs > 2)
+        args.insert(args.end(), arg3);
+    if (numArgs > 3)
+        args.insert(args.end(), arg4);
+    if (numArgs > 4)
+        args.insert(args.end(), arg5);
+    if (numArgs > 5)
+        args.insert(args.end(), arg6);
+    if (numArgs > 6)
+        args.insert(args.end(), arg7);
+    if (numArgs > 7)
+        args.insert(args.end(), arg8);
+    if (numArgs > 8)
+        args.insert(args.end(), arg9);
+
+    QString str;
+    bool first = true;
+    for (std::list<QString>::iterator i = args.begin();i != args.end();i++)
+    {
+        if (first)
+            first = false;
+        else
+            str += QString::fromLatin1("\01");
+        if (!(*i).isEmpty())
+            str += *i;
+    }
+    ret.insert(ret.end(), str);
+}
+
+std::list<QString> toExtract::splitDescribe(const QString &str)
+{
+    QStringList ctx = QStringList::split(QString::fromLatin1("\01"), str);
+    std::list<QString> ret;
+    for (unsigned int i = 0;i < ctx.count();i++)
+        ret.insert(ret.end(), ctx[i]);
+    return ret;
+}
+
+QString toExtract::partDescribe(const QString &str, int level)
+{
+    QStringList ctx = QStringList::split(QString::fromLatin1("\01"), str);
+    if (ctx.count() <= (unsigned int)level)
+        return QString::null;
+    return ctx[level];
+}
+
+QString toExtract::contextDescribe(const QString &str, int level)
+{
+    int pos = -1;
+    do
+    {
+        level--;
+        str.find(QString::fromLatin1("\01"), pos + 1);
+    }
+    while (pos >= 0 && level > 0);
+
+    if (pos < 0)
+        pos = str.length();
+
+    if (level == 0)
+        return str.mid(0, pos);
+    return QString::null;
+}
+
+QString toExtract::createFromParse(std::list<toSQLParse::statement>::iterator start,
+                                   std::list<toSQLParse::statement>::iterator end)
+{
+    QString ret;
+    toSQLParse::statement newstat(toSQLParse::statement::Statement);
+    while (start != end)
+    {
+        newstat.subTokens().insert(newstat.subTokens().end(), *start);
+        start++;
+    }
+    return toSQLParse::indentStatement(newstat, connection()).stripWhiteSpace();
+}
+
+std::list<toExtract::columnInfo> toExtract::parseColumnDescription(std::list<QString>::const_iterator begin,
+        std::list<QString>::const_iterator end,
+        int level)
+{
+    std::list<columnInfo> ret;
+
+    while (begin != end)
+    {
+        std::list<QString> row = toExtract::splitDescribe(*begin);
+        for (int i = 0;i < level;i++)
+            toShift(row);
+        if (toShift(row) == "COLUMN")
+        {
+            QString name = toShift(row);
+            columnInfo *current = NULL;
+            for (std::list<toExtract::columnInfo>::iterator j = ret.begin();j != ret.end();j++)
+            {
+                if ((*j).Name == name)
+                {
+                    current = &(*j);
+                    break;
+                }
+            }
+            if (current == NULL)
+            {
+                ret.insert(ret.end(), columnInfo(name));
+                current = &(*(ret.rbegin()));
+            }
+            QString extra = toShift(row);
+            if (extra == "ORDER")
+                current->Order = toShift(row).toInt();
+            else if (!extra.isEmpty())
+            {
+                QString data = toShift(row);
+                if (data.isEmpty())
+                {
+                    if (!current->Definition.isEmpty())
+                        throw qApp->translate("toExtract", "More than one definition for column %1").arg(name);
+                    current->Definition = extra;
+                }
+                else
+                {
+                    if (current->Data.find(extra) != current->Data.end())
+                        throw qApp->translate("toExtract", "Same kind of definition existing more than once for column %1").arg(name);
+                    current->Data[extra] = data;
+                }
+            }
+        }
+        begin++;
+    }
+
+    ret.sort();
+
+    return ret;
+}

Added: kde-extras/tora/branches/upstream/current/src/toextract.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toextract.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toextract.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,787 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TO_EXTRACT
+#define TO_EXTRACT
+
+#include "config.h"
+
+#include <list>
+#include <map>
+
+#include <qfile.h>
+#include <qstring.h>
+#include <qtextstream.h>
+#include <qvariant.h>
+
+class QWidget;
+class toConnection;
+
+#include "tosqlparse.h"
+
+// Liberally ported from DDL::Oracle 1.06
+// Copyright (c) 2000, 2001 Richard Sutherland - United States of America
+
+/**
+ * This class can be used to reverse engineered database objects.
+ */
+
+class toExtract
+{
+public:
+    /** Describes an available datatype for the database.
+     */
+    class datatype
+    {
+    private:
+        QString Name;
+        int MaxLength;
+        int MaxPrecision;
+    public:
+        /** Create a new datatype description.
+         * @param name Name of datatype.
+         * @param maxLength Maximum length of parameter if length is needed.
+         * @param maxPrecision Maximum precision of parameter if precision is supported.
+         */
+        datatype(const QString &name, int maxLength = -1, int maxPrecision = -1)
+                : Name(name), MaxLength(maxLength), MaxPrecision(maxPrecision)
+        { }
+        /** Returns true if type has length specification.
+         */
+        bool hasLength()
+        {
+            return MaxLength != -1;
+        }
+        /** Returns true if type has precision specification.
+         */
+        bool hasPrecision()
+        {
+            return MaxPrecision != -1;
+        }
+        /** Get the maximum length value.
+         */
+        int maxLength()
+        {
+            return MaxLength;
+        }
+        /** Get the maximum precision of the datatype.
+         */
+        int maxPrecision()
+        {
+            return MaxPrecision;
+        }
+        /** Get the name of the datatype.
+         */
+        const QString &name()
+        {
+            return Name;
+        }
+
+        /** Implemented so that you can easily sort a list of them. Just compares the names.
+         */
+        bool operator < (const datatype &dat) const
+        {
+            return Name < dat.Name;
+        }
+        /** Implemented so that you can easily sort a list of them. Just compares the names.
+         */
+        bool operator == (const datatype &dat) const
+        {
+            return Name == dat.Name;
+        }
+    };
+
+    /** This is an abstract class to implement part of an extractor for a database. Observe
+     * that an extractor must be stateless and threadsafe except for constructors and
+     * destructors. Use the toExtract::context function for saving context.
+     */
+    class extractor
+    {
+    protected:
+        /** Register an operation to be handled by this extractor.
+         * @param db Database this extractor works on.
+         * @param oper What kind of operation to implement. Can be one of CREATE,
+         *             DESCRIBE, MIGRATE or DROP.
+         * @param type The type of object that this is implemented for. Database specific.
+         */
+        void registerExtract(const QString &db,
+                             const QString &oper,
+                             const QString &type);
+        /** Unregister an operation to be handled by this extractor.
+         * @param db Database this extractor works on.
+         * @param oper What kind of operation to implement. Can be one of CREATE,
+         *             DESCRIBE, MIGRATE or DROP.
+         * @param type The type of object that this is implemented for. Database specific.
+         */
+        void unregisterExtract(const QString &db,
+                               const QString &oper,
+                               const QString &type);
+    public:
+        /** Create an extractor. Normally called from a statical instantiator. Should register
+         * objects it can handle @ref registerExtract. Apart from the objects it handles one
+         * extractor per database can also register an empty operation and type parameter to
+         * @ref registerExtract which will be called to initialize an extractor once per
+         * constructed toExtract object.
+         * operation. 
+         */
+        extractor();
+        /** Destructor.
+         */
+        virtual ~extractor();
+
+        /** Initiate an extractor for a given connection. Can be used to set up states necessary
+         * for further processing. Should probably set blocksize to be used for resizing (@ref
+         * toExtract::setBlocksize).
+         * @param ext Extractor to generate script.
+         */
+        virtual void initialize(toExtract &ext) const;
+
+        /** Called to generate a script to recreate a database object.
+         * @param ext Extractor to generate script.
+         * @param stream Stream to write script to.
+         * @param type Type of object to recreate.
+         * @param schema Specify the schema of the output script or description. If empty
+         *               don't specify any object. If the string "1" use same object as input.
+         *               Otherwise use the specified schema.
+         * @param owner Owner of database object.
+         * @param name Name of database object.
+         * @return A string containing a script to recreate an object.
+         */
+        virtual void create(toExtract &ext,
+                            QTextStream &stream,
+                            const QString &type,
+                            const QString &schema,
+                            const QString &owner,
+                            const QString &name) const;
+        /** Called to describe a database object.
+         * @param ext Extractor to generate script.
+         * @param lst List of descriptions for the object. Should be appended.
+         * @param type Type of object to recreate.
+         * @param schema Specify the schema of the output script or description. If empty
+         *               don't specify any object. If the string "1" use same object as input.
+         *               Otherwise use the specified schema.
+         * @param owner Owner of database object.
+         * @param name Name of database object.
+         */
+        virtual void describe(toExtract &ext,
+                              std::list<QString> &lst,
+                              const QString &type,
+                              const QString &schema,
+                              const QString &owner,
+                              const QString &name) const;
+        /** Called to generate a script to migrate a database object from one description to
+         * another description.
+         * @param ext Extractor to generate script.
+         * @param type Type of object to migrate.
+         * @param src Source description list.
+         * @param dst Destination description list.
+         * @return A script to change the src database object to dst.
+         */
+        virtual void migrate(toExtract &ext,
+                             QTextStream &stream,
+                             const QString &type,
+                             std::list<QString> &src,
+                             std::list<QString> &dst) const;
+
+        /** Called to generate a script to drop an object.
+         * @param ext Extractor to generate script.
+         * @param type Type of object to recreate.
+         * @param schema Specify the schema of the output script or description. If empty
+         *               don't specify any object. If the string "1" use same object as input.
+         *               Otherwise use the specified schema.
+         * @param owner Owner of database object.
+         * @param name Name of database object.
+         * @return A string containing a script to recreate an object.
+         */
+        virtual void drop(toExtract &ext,
+                          QTextStream &stream,
+                          const QString &type,
+                          const QString &schema,
+                          const QString &owner,
+                          const QString &name) const;
+
+        /** Get the available datatypes for the database.
+         */
+        virtual std::list<datatype> datatypes() const;
+    };
+
+private:
+    toConnection &Connection;
+    QWidget *Parent;
+
+    // Attributes
+    QString Schema;
+    QString Resize;
+    bool Code;
+    bool Comments;
+    bool Constraints;
+    bool Contents;
+    bool Grants;
+    bool Heading;
+    bool Indexes;
+    bool Parallel;
+    bool Partition;
+    bool Prompt;
+    bool Storage;
+    bool Initialized;
+
+    int CommitDistance;
+
+    // Database info
+    int BlockSize;
+    std::list<QString> Initial;
+    std::list<QString> Next;
+    std::list<QString> Limit;
+
+    // Context, can be used by the extractor to save context
+    std::map<QCString, QVariant> Context;
+
+    // Stuff to handle extractors
+    static std::map<QString, extractor *> *Extractors;
+
+    static void allocExtract(void);
+    static QString extractorName(const QString &db,
+                                 const QString &oper,
+                                 const QString &type);
+    static extractor *findExtractor(toConnection &conn,
+                                    const QString &oper,
+                                    const QString &type);
+    extractor *findExtractor(const QString &oper,
+                             const QString &type)
+    {
+        return findExtractor(Connection, oper, type);
+    }
+    void initialize(void);
+
+    // General internal functions
+
+    /** Parse an object string to get owner and name of the object.
+     * @param object Object string on the format {owner}.{name}.
+     * @param owner Reference to string which will get the object owner.
+     * @param name Reference to string which will get the object name.
+     */
+    void parseObject(const QString &object, QString &owner, QString &name);
+    void setSizes(void);
+
+    void rethrow(const QString &what, const QString &object, const QString &exc);
+    QString generateHeading(const QString &action, std::list<QString> &list);
+    static std::map<QString, std::list<QString> > migrateGroup(std::list<QString> &grpLst);
+public:
+    /** Create a new extractor.
+     * @param conn Connection to extract from.
+     * @param parent Parent widget of progress indicator.
+     */
+    toExtract(toConnection &conn, QWidget *parent);
+
+    /** Create script to recreate list of objects.
+     * @param object List of object. This has the format {type}:{schema}.{object}.
+     *               The type is database dependent but can as an example be of
+     *               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+     *               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+     *               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+     *               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+     *               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+     *               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+     *               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+     * @return A string containing a script to recreate the specified objects.
+     */
+    QString create(std::list<QString> &object)
+    {
+        QString ret;
+        QTextStream s(&ret, IO_WriteOnly);
+        create(s, object);
+        return ret;
+    }
+    /** Create script to recreate list of objects.
+     * @param stream Stream to write result to.
+     * @param object List of object. This has the format {type}:{schema}.{object}.
+     *               The type is database dependent but can as an example be of
+     *               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+     *               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+     *               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+     *               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+     *               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+     *               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+     *               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+     */
+    void create(QTextStream &stream, std::list<QString> &object);
+
+    /** Create a description of objects.
+     * @param object List of object. This has the format {type}:{schema}.{object}.
+     *               The type is database dependent but can as an example be of
+     *               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+     *               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+     *               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+     *               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+     *               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+     *               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+     *               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+     * @return A list of strings describing the objects. Each string should be
+     *         considered like a list of strings separated by the character '\001'.
+     *         The later in each string the smaller item the change and it is hierachical.
+     */
+    std::list<QString> describe(std::list<QString> &object);
+
+    /** Create script to drop a list of objects.
+     * @param object List of object. This has the format {type}:{schema}.{object}.
+     *               The type is database dependent but can as an example be of
+     *               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+     *               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+     *               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+     *               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+     *               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+     *               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+     *               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+     * @return A string containing a script to drop the specified objects.
+     */
+    QString drop(std::list<QString> &object)
+    {
+        QString ret;
+        QTextStream s(&ret, IO_WriteOnly);
+        drop(s, object);
+        return ret;
+    }
+
+    /** Create script to drop a list of objects.
+     * @param stream Stream to write result to.
+     * @param object List of object. This has the format {type}:{schema}.{object}.
+     *               The type is database dependent but can as an example be of
+     *               CONSTRAINT, DATABASE LINK, EXCHANGE INDEX,
+     *               EXCHANGE TABLE, FUNCTION, INDEX, MATERIALIZED VIEW,
+     *               MATERIALIZED VIEW LOG, PACKAGE, PACKAGE BODY, PROCEDURE,
+     *               PROFILE, ROLE, ROLE GRANTS, ROLLBACK SEGMENT, SEQUENCE,
+     *               SNAPSHOT, SNAPSHOT LOG, SYNONYM, TABLE, TABLE FAMILY,
+     *               TABLE CONTENTS, TABLE REFERENCES, TABLESPACE, TRIGGER,
+     *               TRIGGER, TYPE, USER, USER GRANTS for Oracle databases.
+     * @return A string containing a script to drop the specified objects.
+     */
+    void drop(QTextStream &stream, std::list<QString> &object);
+
+    /** Called to generate a script to migrate a database object from one description to
+     * another description.
+     * @param stream Stream to write result to.
+     * @param src Source description list, generated by describes for the same database.
+     * @param dst Destination description list, generated by describes for the same database.
+     * @return A script to change the src database object to dst.
+     */
+    QString migrate(std::list<QString> &drpLst, std::list<QString> &crtLst)
+    {
+        QString ret;
+        QTextStream s(&ret, IO_WriteOnly);
+        migrate(s, drpLst, crtLst);
+        return ret;
+    }
+
+    /** Called to generate a script to migrate a database object from one description to
+     * another description.
+     * @param stream Stream to write result to.
+     * @param src Source description list, generated by describes for the same database.
+     * @param dst Destination description list, generated by describes for the same database.
+     * @return A script to change the src database object to dst.
+     */
+    void migrate(QTextStream &stream, std::list<QString> &drpLst, std::list<QString> &crtLst);
+
+    /** Set a context for this extractor.
+     * @param name Name of this context
+     * @param val Value of this context
+     */
+    void setState(const QCString &name, const QVariant &val);
+    /** Get the value of a context for the current extractor.
+     * @param name Name of the context to extract.
+     * @return The value of the context.
+     */
+    QVariant state(const QCString &name);
+
+    /** Set the schema of the extraction.
+     * @param schema Specify the schema of the output script or description. If empty
+     *               don't specify any object. If the string "1" use same object as input.
+     *               Otherwise use the specified schema.
+     */
+    void setSchema(const QString &schema)
+    {
+        Schema = schema;
+    }
+    /** Set sizes to use for resize of object on extraction.
+     * @param A list of sizes separated by ':'. Should be an even multiple of three where
+     *        the first value is the largest current size to use these values. The next
+     *        value is the initial value to use, the last is the next increment value to
+     *        use. As a special case the string "1" can be used to set up auto resize.
+     */
+    void setResize(const QString &resize)
+    {
+        Resize = resize;
+        setSizes();
+    }
+    /** Set inclusion of prompts.
+     * @param prompt If prompt generation should be generated.
+     */
+    void setPrompt(bool prompt)
+    {
+        Prompt = prompt;
+    }
+    /** Include heading in scripts.
+     * @param heading Include heading in scripts.
+     */
+    void setHeading(bool heading)
+    {
+        Heading = heading;
+    }
+    /** Include constraints in extraction.
+     * @param constraints Include constraints.
+     */
+    void setConstraints(bool constraints)
+    {
+        Constraints = constraints;
+    }
+    /** Include indexes in extraction.
+     * @param indexes Include indexes.
+     */
+    void setIndexes(bool indexes)
+    {
+        Indexes = indexes;
+    }
+    /** Include grants in extraction.
+     * @param val Include grants.
+     */
+    void setGrants(bool val)
+    {
+        Grants = val;
+    }
+    /** Include storage specification in extraction.
+     * @param val Include storage specification.
+     */
+    void setStorage(bool val)
+    {
+        Storage = val;
+    }
+    /** Include parallel specification in extraction.
+     * @param val Include parallel specification.
+     */
+    void setParallel(bool val)
+    {
+        Parallel = val;
+    }
+    /** Include partition specification in extraction.
+     * @param val Include partition specification.
+     */
+    void setPartition(bool val)
+    {
+        Partition = val;
+    }
+    /** Include contents of tables in scripts.
+     * @param val Include contents of tables.
+     * @param commitdistance The commit distance of the contents 0 means whole tables.
+     */
+    void setContents(bool val, int commitdistance)
+    {
+        Contents = val;
+        CommitDistance = commitdistance;
+    }
+    /** Include comments in extraction.
+     * @param val Include indexes.
+     */
+    void setComments(bool val)
+    {
+        Comments = val;
+    }
+    /** Include code in extraction.
+     * @param val Include code.
+     */
+    void setCode(bool val)
+    {
+        Code = val;
+    }
+    /** Set blocksize of database.
+     * @param val New value of blocksize.
+     */
+    void setBlockSize(int val)
+    {
+        BlockSize = val;
+        setSizes();
+    }
+
+    /** Get schema specification.
+     * @return Schema specification.
+     * @see setSchema
+     */
+    const QString &getSchema(void)
+    {
+        return Schema;
+    }
+    /** Get resize specification.
+     * @return Resize specification.
+     * @see setResize
+     */
+    bool getResize(void)
+    {
+        return !Resize.isEmpty();
+    }
+    /** Check if prompt are generated.
+     * @return If prompts are generated.
+     */
+    bool getPrompt(void)
+    {
+        return Prompt;
+    }
+    /** Check if headings are generated.
+     * @return If headings are generated.
+     */
+    bool getHeading(void)
+    {
+        return Heading;
+    }
+    /** Check if constraints are generated.
+     * @return If constraints are generated.
+     */
+    bool getConstraints(void)
+    {
+        return Constraints;
+    }
+    /** Check if indexes are generated.
+     * @return If indexes are generated.
+     */
+    bool getIndexes(void)
+    {
+        return Indexes;
+    }
+    /** Check if grants are generated.
+     * @return If grants are generated.
+     */
+    bool getGrants(void)
+    {
+        return Grants;
+    }
+    /** Check if storage specification are generated.
+     * @return If storage specification are generated.
+     */
+    bool getStorage(void)
+    {
+        return Storage;
+    }
+    /** Check if parallell specification are generated.
+     * @return If parallell specification are generated.
+     */
+    bool getParallel(void)
+    {
+        return Parallel;
+    }
+    /** Check if partition specification are generated.
+     * @return If partition specification  are generated.
+     */
+    bool getPartition(void)
+    {
+        return Partition;
+    }
+    /** Check if contents of tables are generated.
+     * @return If content is generated.
+     */
+    bool getContents(void)
+    {
+        return Contents;
+    }
+    /** Get the distance of the commits when content is generated.
+     * @return Commit distance.
+     */
+    int getCommitDistance(void)
+    {
+        return CommitDistance;
+    }
+    /** Check if comments are generated.
+     * @return If comments are generated.
+     */
+    bool getComments(void)
+    {
+        return Comments;
+    }
+    /** Check if code is generated.
+     * @return If code is generated.
+     */
+    bool getCode(void)
+    {
+        return Code;
+    }
+    /** Get blocksize.
+     */
+    int getBlockSize(void)
+    {
+        return BlockSize;
+    }
+    /** Get the connection this extractor is working on.
+     */
+    toConnection &connection()
+    {
+        return Connection;
+    }
+
+    /** Fill in the initial and next value for an object currently holding a @ref number of
+     * allocated blocks. Uses the resize or default sizes.
+     * @param blocks Blocks currently allocated.
+     * @param initial New initial value.
+     * @param next New next value.
+     */
+    void initialNext(const QString &blocks, QString &initial, QString &next);
+
+    /** Get the schema name specified by the extractor setup. Will include the following '.'
+     * if needed.
+     * @param owner Owner of object to get schema for.
+     * @param desc Used from describe and not to generate script.
+     * @return The translated schema.
+     */
+    QString intSchema(const QString &owner, bool desc);
+
+    /** Get the available datatypes for a database.
+     * @return A list of datatypes.
+     */
+    std::list<datatype> datatypes();
+
+    /** Utility function, creates a statement from the start to the end specified by the
+     * parameters. The connection used to specify parsing is the one of the extractor.
+     * @param start Start of parameters.
+     * @param end End of parameters.
+     * @return The indented statement.
+     */
+    QString createFromParse(std::list<toSQLParse::statement>::iterator start,
+                            std::list<toSQLParse::statement>::iterator end);
+
+    /** Create a source and destination object list to two other lists
+     * containing dropped and created objects or attributes.
+     * @param source Source list input (Will not be modified).
+     * @param destination Destination list input (Will not be modified).
+     * @param drop Drop list output (Will be overwritten).
+     * @param create Create list output (Will be overwritten).
+     */
+    static void srcDst2DropCreate(std::list<QString> &source, std::list<QString> &destination,
+                                  std::list<QString> &drop, std::list<QString> &creat);
+
+    /** Check if a database is supported at all by the extractor.
+     * @param conn Connection to check for support.
+     * @return True if the database is supported.
+     */
+    static bool canHandle(toConnection &conn);
+
+    /** Add a list to description.
+     * @param ret The return list to add a line to.
+     * @param ctx The current description context.
+     * @param arg1 First extra argument to add.
+     */
+    static void addDescription(std::list<QString> &ret, const std::list<QString> &ctx,
+                               const QString &arg1 = QString::null, const QString &arg2 = QString::null,
+                               const QString &arg3 = QString::null, const QString &arg4 = QString::null,
+                               const QString &arg5 = QString::null, const QString &arg6 = QString::null,
+                               const QString &arg7 = QString::null, const QString &arg8 = QString::null,
+                               const QString &arg9 = QString::null);
+    /** Split a description line into its components.
+     * @param str The description line to split.
+     * @return The list of components.
+     */
+    static std::list<QString> splitDescribe(const QString &str);
+
+    /** Get the part of a description indicated by the level
+     * @param str Description string
+     * @param level The level to get (0 is the first level)
+     */
+    static QString partDescribe(const QString &str, int level);
+
+    /** Get the context of a given level.
+     * @param str Description string
+     * @param level The level to get the context for (1 is the first to not return empty string.
+     * @return The context, if not enough parts are available null is returned.
+     */
+    static QString contextDescribe(const QString &str, int level);
+
+    /** Used to get column information from a describe list
+     */
+    struct columnInfo
+    {
+        /** Name of column
+         */
+        QString Name;
+        /** Definition of column
+         */
+        QString Definition;
+        /** Extra data for the column (Except for order which has own field.
+         */
+        std::map<QString, QString> Data;
+        /** Order of the column. Used for sorting.
+         */
+        int Order;
+
+        /** Create column information from name.
+         */
+        columnInfo(const QString &name)
+                : Name(name)
+        {
+            Order = 0;
+        }
+        /** Implement sort order based only on Order field.
+         */
+        bool operator <(const columnInfo &inf)
+        {
+            return Order < inf.Order;
+        }
+        /** Implement sort order based only on Order field.
+         */
+        bool operator ==(const columnInfo &inf)
+        {
+            return Order == inf.Order;
+        }
+    };
+
+    /** Parse a column description and return a sorted list of column data.
+     * @param begin The iterator indicating the beginning to start searching from (Inclusive).
+     * @param end The iterator indicating the end to end searching at (Not inclusive).
+     * @param level Number of levels of context to discard before looking for "COLUMN" definition.
+     * @return The list of column definitions. Sorted by column order.
+     */
+    static std::list<columnInfo> parseColumnDescription(std::list<QString>::const_iterator begin,
+            std::list<QString>::const_iterator end,
+            int level = 3);
+
+    /** Parse a column description and return a sorted list of column data.
+     * @param description A description list. Will go through entire list.
+     * @param level Number of levels of context to discard before looking for "COLUMN" definition.
+     * @return The list of column definitions. Sorted by column order.
+     */
+    static std::list<columnInfo> parseColumnDescription(const std::list<QString> &description, int level = 3)
+    {
+        return parseColumnDescription(description.begin(), description.end(), level);
+    }
+
+    friend class extractor;
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toextratranslations.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toextratranslations.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toextratranslations.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,417 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+/* This file is not intended to be compiled into the program, only needed for lupdate to get all needed translations */
+
+#include <qobject.h>
+
+static char *toExtraTranslations[] = {
+                                         QT_TRANSLATE_NOOP("toBackup:CurrentBackup", "% Complete"),
+                                         QT_TRANSLATE_NOOP("toBackup:CurrentBackup", "Context"),
+                                         QT_TRANSLATE_NOOP("toBackup:CurrentBackup", "Serial#"),
+                                         QT_TRANSLATE_NOOP("toBackup:CurrentBackup", "Sid"),
+                                         QT_TRANSLATE_NOOP("toBackup:CurrentBackup", "So Far"),
+                                         QT_TRANSLATE_NOOP("toBackup:CurrentBackup", "Total"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "Bytes Written"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "Checkpoint Time"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "Ckpt Change#"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "Completion Time"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "File Size"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "Filename"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "Level"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "Logically Corrupt"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "Media Crpt"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "Mrkd Crpt"),
+                                         QT_TRANSLATE_NOOP("toBackup:LastBackup", "Type"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogHistory", "Controlfile Recid"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogHistory", "Controlfile Stamp"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogHistory", "Highest Scn"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogHistory", "Lowest  Scn"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogHistory", "Sequence#"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogHistory", "Thread#"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogHistory", "Time Of First Entry"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "00"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "01"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "02"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "03"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "04"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "05"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "06"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "07"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "08"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "09"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "10"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "11"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "12"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "13"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "14"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "15"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "16"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "17"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "18"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "19"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "20"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "21"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "22"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "23"),
+                                         QT_TRANSLATE_NOOP("toBackup:LogSwitches", "Date"),
+                                         QT_TRANSLATE_NOOP("toBrowser:AnyGrants", "Grantable"),
+                                         QT_TRANSLATE_NOOP("toBrowser:AnyGrants", "Grantable"),
+                                         QT_TRANSLATE_NOOP("toBrowser:AnyGrants", "Grantee"),
+                                         QT_TRANSLATE_NOOP("toBrowser:AnyGrants", "Grantee"),
+                                         QT_TRANSLATE_NOOP("toBrowser:AnyGrants", "Grantor"),
+                                         QT_TRANSLATE_NOOP("toBrowser:AnyGrants", "Grantor"),
+                                         QT_TRANSLATE_NOOP("toBrowser:AnyGrants", "Privilege"),
+                                         QT_TRANSLATE_NOOP("toBrowser:AnyGrants", "Privilege"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexCols", "Column Length"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexCols", "Column Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexCols", "Descend"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexCols", "Table Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Avg Data Blocks Per Key"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Avg Leaf Blocks Per Key"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Blevel"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Buffer Pool"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Clustering Factor"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Compression"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Degree"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Distinct Keys"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Domidx Opstatus"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Domidx Status"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Duration"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Freelist Groups"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Freelists"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Funcidx Status"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Generated"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Global Stats"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Include Column"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Index Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Index Type"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Ini Trans"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Initial Extent"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Instances"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Ityp Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Ityp Owner"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Join Index"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Last Analyzed"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Leaf Blocks"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Logging"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Max Extents"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Max Trans"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Min Extents"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Next Extent"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Num Rows"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Owner"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Parameters"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Partitioned"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Pct Direct Access"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Pct Free"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Pct Increase"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Pct Threshold"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Prefix Length"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Sample Size"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Secondary"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Status"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Table Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Table Owner"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Table Type"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Tablespace Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Temporary"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "Uniqueness"),
+                                         QT_TRANSLATE_NOOP("toBrowser:IndexInformation", "User Stats"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListCode", "Object Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListCode", "Object Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListCode", "Object Type"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListCode", "Object Type"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListCode", "Type"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListCode", "Type"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListIndex", "Index Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListSequence", "Sequence Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListSynonym", "Synonym Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListTables", "Table Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListTrigger", "Trigger Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:ListView", "View Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SequenceInformation", "Cache Size"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SequenceInformation", "Cycle Flag"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SequenceInformation", "Increment By"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SequenceInformation", "Last Number"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SequenceInformation", "Max Value"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SequenceInformation", "Min Value"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SequenceInformation", "Order Flag"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SequenceInformation", "Sequence Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SequenceInformation", "Sequence Owner"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SynonymInformation", "Db Link"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SynonymInformation", "Owner"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SynonymInformation", "Synonym Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SynonymInformation", "Table Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:SynonymInformation", "Table Owner"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Avg Row Len"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Avg Space Freelist Blocks"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Avg Space"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Backed Up"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Blocks"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Buffer Pool"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Cache"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Chain Cnt"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Cluster Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Cluster Owner"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Degree"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Dependencies"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Duration"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Empty Blocks"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Freelist Groups"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Freelists"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Global Stats"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Ini Trans"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Initial Extent"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Instances"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Iot Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Iot Type"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Last Analyzed"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Logging"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Max Extents"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Max Trans"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Min Extents"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Monitoring"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Nested"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Next Extent"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Num Freelist Blocks"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Num Rows"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Owner"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Partitioned"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Pct Free"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Pct Increase"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Pct Used"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Row Movement"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Sample Size"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Secondary"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Skip Corrupt"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Table Lock"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Table Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Tablespace Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "Temporary"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableInformation", "User Stats"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableTrigger", "Column Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableTrigger", "Description"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableTrigger", "Status"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableTrigger", "Trigger Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TableTrigger", "Triggering Event"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerCols", "Column Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerCols", "In Update"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerCols", "Usage"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Action Type"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Base Object Type"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Column Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Description"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Owner"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Referencing Names"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Status"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Table Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Table Owner"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Trigger Name"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Trigger Type"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "Triggering Event"),
+                                         QT_TRANSLATE_NOOP("toBrowser:TriggerInfo", "When Clause"),
+                                         QT_TRANSLATE_NOOP("toCurrent:ResourceLimit", "Current Utilization"),
+                                         QT_TRANSLATE_NOOP("toCurrent:ResourceLimit", "Initial Allocation"),
+                                         QT_TRANSLATE_NOOP("toCurrent:ResourceLimit", "Limit Value"),
+                                         QT_TRANSLATE_NOOP("toCurrent:ResourceLimit", "Max Utilization"),
+                                         QT_TRANSLATE_NOOP("toCurrent:ResourceLimit", "Resource Name"),
+                                         QT_TRANSLATE_NOOP("toCurrent:Version", "Version"),
+                                         QT_TRANSLATE_NOOP("toInvalid:ListInvalid", "Object"),
+                                         QT_TRANSLATE_NOOP("toInvalid:ListInvalid", "Owner"),
+                                         QT_TRANSLATE_NOOP("toInvalid:ListInvalid", "Type"),
+                                         QT_TRANSLATE_NOOP("toResultParam:ListParam", "Changed"),
+                                         QT_TRANSLATE_NOOP("toResultParam:ListParam", "Description"),
+                                         QT_TRANSLATE_NOOP("toResultParam:ListParam", "Parameter"),
+                                         QT_TRANSLATE_NOOP("toResultParam:ListParam", "Value"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", " "),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", " "),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Buffer Gets"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Buffer Gets"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Disk Reads"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Disk Reads"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Executions"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Executions"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "First Load Time"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "First Load Time"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Invalidations"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Invalidations"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Kept Versions"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Kept Versions"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Loaded Versions"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Loaded Versions"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Loads"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Loads"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Open Versions"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Open Versions"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Optimizer Mode"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Optimizer Mode"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Parse"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Parse"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Parsing Schema Id"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Parsing Schema Id"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Parsing User Id"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Parsing User Id"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Persistent Mem"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Persistent Mem"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Rows Processed"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Rows Processed"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Runtime Mem"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Runtime Mem"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Serializable Aborts"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Serializable Aborts"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Sharable Mem"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Sharable Mem"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Sorts"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Sorts"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Users Executing"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Users Executing"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Users Opening"),
+                                         QT_TRANSLATE_NOOP("toResultResources:Information", "Users Opening"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Block"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Block"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Blocks"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Blocks"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Current (MB)"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Current (MB)"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Current"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Current"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Extents"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Extents"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Hitrate"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Hitrate"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Initial (MB)"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Initial (MB)"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Next (MB)"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Next (MB)"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Optimal (MB)"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Optimal (MB)"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Owner"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Owner"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "PCT Increase"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "PCT Increase"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Reads"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Reads"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Segment"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Segment"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Status"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Status"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Tablespace"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Tablespace"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Transactions"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Transactions"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Used (MB)"),
+                                         QT_TRANSLATE_NOOP("toRollback:Information", "Used (MB)"),
+                                         QT_TRANSLATE_NOOP("toRollback:TransactionUsers", "Oracle User"),
+                                         QT_TRANSLATE_NOOP("toRollback:TransactionUsers", "Os User"),
+                                         QT_TRANSLATE_NOOP("toRollback:TransactionUsers", "Rollback Seg"),
+                                         QT_TRANSLATE_NOOP("toRollback:TransactionUsers", "Rollback Seg"),
+                                         QT_TRANSLATE_NOOP("toRollback:TransactionUsers", "Session ID"),
+                                         QT_TRANSLATE_NOOP("toSession:AccessedObjects", "OBJECT"),
+                                         QT_TRANSLATE_NOOP("toSession:AccessedObjects", "OWNER"),
+                                         QT_TRANSLATE_NOOP("toSession:AccessedObjects", "TYPE"),
+                                         QT_TRANSLATE_NOOP("toSession:ConnectInfo", "Authentication Type"),
+                                         QT_TRANSLATE_NOOP("toSession:ConnectInfo", "Network Service Banner"),
+                                         QT_TRANSLATE_NOOP("toSession:ConnectInfo", "Osuser"),
+                                         QT_TRANSLATE_NOOP("toSession:LockedObject", "Locked Mode"),
+                                         QT_TRANSLATE_NOOP("toSession:LockedObject", "Object Name"),
+                                         QT_TRANSLATE_NOOP("toSession:LockedObject", "Type"),
+                                         QT_TRANSLATE_NOOP("toSession:OpenCursor", "SQL"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionIO", "Block changes"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionIO", "Block gets"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionIO", "Consistent changes"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionIO", "Consistent gets"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionIO", "Physical reads"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "CPU"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "Control File I/O"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "DB File Read"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "DB File Write"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "DB Single File Read"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "Direct I/O"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "Log file"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "Other"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "Parallel execution"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "SQL*Net"),
+                                         QT_TRANSLATE_NOOP("toSession:SessionWait", "Write Complete"),
+                                         QT_TRANSLATE_NOOP("toTool", "Alert Messenger"),
+                                         QT_TRANSLATE_NOOP("toTool", "Backup Manager"),
+                                         QT_TRANSLATE_NOOP("toTool", "Current Session"),
+                                         QT_TRANSLATE_NOOP("toTool", "DB Extraction/Compare/Search"),
+                                         QT_TRANSLATE_NOOP("toTool", "Invalid Objects"),
+                                         QT_TRANSLATE_NOOP("toTool", "PL/SQL Debugger"),
+                                         QT_TRANSLATE_NOOP("toTool", "PL/SQL Profiler"),
+                                         QT_TRANSLATE_NOOP("toTool", "Password Change"),
+                                         QT_TRANSLATE_NOOP("toTool", "Rollback Segments"),
+                                         QT_TRANSLATE_NOOP("toTool", "SGA Trace"),
+                                         QT_TRANSLATE_NOOP("toTool", "SQL Output"),
+                                         QT_TRANSLATE_NOOP("toTool", "SQL Template"),
+                                         QT_TRANSLATE_NOOP("toTool", "SQL Worksheet"),
+                                         QT_TRANSLATE_NOOP("toTool", "Schema Browser"),
+                                         QT_TRANSLATE_NOOP("toTool", "Security Manager"),
+                                         QT_TRANSLATE_NOOP("toTool", "Server Tuning"),
+                                         QT_TRANSLATE_NOOP("toTool", "Sessions"),
+                                         QT_TRANSLATE_NOOP("toTool", "Statistics Manager"),
+                                         QT_TRANSLATE_NOOP("toTool", "Storage Manager"),
+                                         QT_TRANSLATE_NOOP("toTuning:Charts:4BAClients", "Active"),
+                                         QT_TRANSLATE_NOOP("toTuning:Charts:4BAClients", "Inactive"),
+                                         QT_TRANSLATE_NOOP("toTuning:Charts:4BAClients", "System"),
+                                         QT_TRANSLATE_NOOP("toTuning:Charts:6LNExecution", "Calls"),
+                                         QT_TRANSLATE_NOOP("toTuning:Charts:6LNExecution", "Commit"),
+                                         QT_TRANSLATE_NOOP("toTuning:Charts:6LNExecution", "Execute"),
+                                         QT_TRANSLATE_NOOP("toTuning:Charts:6LNExecution", "Hard parse"),
+                                         QT_TRANSLATE_NOOP("toTuning:Charts:6LNExecution", "Parse"),
+                                         QT_TRANSLATE_NOOP("toTuning:Charts:6LNExecution", "Rollbacks"),
+                                         QT_TRANSLATE_NOOP("toTuning:ControlFileRecords", "Allocated"),
+                                         QT_TRANSLATE_NOOP("toTuning:ControlFileRecords", "Size"),
+                                         QT_TRANSLATE_NOOP("toTuning:ControlFileRecords", "Total Records"),
+                                         QT_TRANSLATE_NOOP("toTuning:ControlFileRecords", "Type"),
+                                         QT_TRANSLATE_NOOP("toTuning:ControlFileRecords", "Used Records"),
+                                         QT_TRANSLATE_NOOP("toTuning:ControlFileRecords", "Used"),
+                                         QT_TRANSLATE_NOOP("toTuning:LibraryCache", "Get Hits"),
+                                         QT_TRANSLATE_NOOP("toTuning:LibraryCache", "Gets"),
+                                         QT_TRANSLATE_NOOP("toTuning:LibraryCache", "Namespace"),
+                                         QT_TRANSLATE_NOOP("toTuning:LibraryCache", "Pin Hits"),
+                                         QT_TRANSLATE_NOOP("toTuning:LibraryCache", "Pins"),
+                                         QT_TRANSLATE_NOOP("toTuning:LibraryCache", "Ratio"),
+                                         QT_TRANSLATE_NOOP("toTuning:License", "Sessions Current"),
+                                         QT_TRANSLATE_NOOP("toTuning:License", "Sessions Highwater"),
+                                         QT_TRANSLATE_NOOP("toTuning:License", "Sessions Max"),
+                                         QT_TRANSLATE_NOOP("toTuning:License", "Sessions Warning"),
+                                         QT_TRANSLATE_NOOP("toTuning:License", "Users Max"),
+                                         QT_TRANSLATE_NOOP("toTuning:Options", "Enabled"),
+                                         QT_TRANSLATE_NOOP("toTuning:Options", "Parameter"),
+                                     };

Added: kde-extras/tora/branches/upstream/current/src/tofilesize.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tofilesize.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tofilesize.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,148 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include <stdio.h>
+
+#include <qradiobutton.h>
+#include <qspinbox.h>
+#include <qlayout.h>
+
+#include "tofilesize.h"
+
+#include "tofilesize.moc"
+
+void toFilesize::setup()
+{
+    QVBoxLayout *vlayout = new QVBoxLayout(this);
+    vlayout->addSpacing(15);
+
+    QHBoxLayout *layout = new QHBoxLayout(vlayout);
+    layout->setMargin(10);
+    layout->setSpacing(10);
+    vlayout->addSpacing(2);
+
+    Value = new QSpinBox(this, "Value");
+    Value->setLineStep(1024);
+    Value->setMaxValue(2097151);
+    Value->setMinValue(1);
+    Value->setValue(1024);
+    layout->addWidget(Value);
+    layout->setStretchFactor(Value, 100);
+
+    MBSize = new QRadioButton(this, "MBSize");
+    MBSize->setText(QString::fromLatin1("MB"));
+    MBSize->setChecked(true);
+    layout->addWidget(MBSize);
+    layout->setStretchFactor(MBSize, 1);
+    connect(MBSize, SIGNAL(toggled(bool)), this, SLOT(changeType(bool)));
+
+    KBSize = new QRadioButton(this, "MBSize" );
+    KBSize->setText(QString::fromLatin1("KB"));
+    KBSize->setChecked(false);
+    layout->addWidget(KBSize);
+    layout->setStretchFactor(KBSize, 1);
+    connect(Value, SIGNAL(valueChanged(int)), this, SLOT(changedSize(void)));
+}
+
+toFilesize::toFilesize(QWidget* parent, const char* name)
+        : QButtonGroup(parent, name)
+{
+    setup();
+}
+
+toFilesize::toFilesize(const QString &title, QWidget* parent, const char* name)
+        : QButtonGroup(title, parent, name)
+{
+    setup();
+}
+
+int toFilesize::value(void)
+{
+    if (MBSize->isChecked())
+        return Value->value()*1024;
+    else
+        return Value->value();
+}
+
+void toFilesize::changeType(bool)
+{
+    if (MBSize->isChecked())
+    {
+#if 0
+        Value->setValue(Value->value() / 1024);
+#endif
+
+        Value->setMaxValue(2097151);
+    }
+    else
+    {
+        Value->setMaxValue(2147483647);
+#if 0
+
+        Value->setValue(Value->value()*1024);
+#endif
+
+    }
+}
+
+void toFilesize::setValue(int sizeInKB)
+{
+    if (sizeInKB % 1024 == 0)
+    {
+        MBSize->setChecked(true);
+        KBSize->setChecked(false);
+        Value->setValue(sizeInKB / 1024);
+        Value->setMaxValue(2097151);
+    }
+    else
+    {
+        MBSize->setChecked(false);
+        KBSize->setChecked(true);
+        Value->setMaxValue(2147483647);
+        Value->setValue(sizeInKB);
+    }
+}
+
+QString toFilesize::sizeString(void)
+{
+    char buf[30];
+    if (MBSize->isChecked())
+        sprintf(buf, "%d K", Value->value()*1024);
+    else
+        sprintf(buf, "%d K", Value->value());
+    return QString::fromLatin1(buf);
+}

Added: kde-extras/tora/branches/upstream/current/src/tofilesize.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tofilesize.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tofilesize.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,124 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOFILESIZE_H
+#define TOFILESIZE_H
+
+#include "config.h"
+
+#include <qbuttongroup.h>
+
+class QRadioButton;
+class QSpinBox;
+
+/**
+ * A widget to get a size value for Oracle objects.
+ */
+class toFilesize : public QButtonGroup
+{
+    Q_OBJECT
+
+    /**
+     * @internal
+     * Value of widget
+     */
+    QSpinBox *Value;
+    /**
+     * @internal
+     * MB unit indicator button
+     */
+    QRadioButton *MBSize;
+    /**
+     * @internal
+     * KB unit indicator button
+     */
+    QRadioButton *KBSize;
+    /**
+     * Setup this widget
+     */
+    void setup(void);
+private slots:
+    /**
+     * @internal
+     * Change the unit type callback.
+     */
+    void changeType(bool);
+    /**
+     * @internal
+     * Size value changed callback.
+     */
+    void changedSize(void)
+    {
+        emit valueChanged();
+    }
+signals:
+    /**
+     * Emitted when value was changed in the widget.
+     */
+    void valueChanged(void);
+public:
+    /**
+     * Create a filesize widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toFilesize(QWidget* parent = 0, const char* name = 0);
+    /**
+     * Create a filesize widget.
+     * @param title Title of size selection frame.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toFilesize(const QString &title, QWidget* parent = 0, const char* name = 0);
+    /**
+     * Set the value of the widget in KB.
+     * @param sizeInKB Size in KB.
+     */
+    void setValue(int sizeInKB);
+    /**
+     * Get value in KB.
+     * @return Size selected in KB.
+     */
+    int value(void);
+    /**
+     * Get an oracle size specification string.
+     * @return String describing size in valid Oracle format.
+     */
+    QString sizeString(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toglobalsetting.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toglobalsetting.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toglobalsetting.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,430 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "toglobalsetting.h"
+#include "tomain.h"
+#include "toresultview.h"
+#include "tosql.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#include <kfiledialog.h>
+#endif
+
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qfiledialog.h>
+#include <qfontdialog.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qdir.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qmessagebox.h>
+#include <qpushbutton.h>
+#include <qspinbox.h>
+#include <qtextcodec.h>
+#include <qtooltip.h>
+#include <qvalidator.h>
+#include <qvariant.h>
+#include <qwhatsthis.h>
+#include <qcolordialog.h>
+
+#include "todatabasesettingui.moc"
+#include "toglobalsettingui.moc"
+#include "totoolsettingui.moc"
+
+toGlobalSetting::toGlobalSetting(QWidget *parent, const char *name, WFlags fl)
+        : toGlobalSettingUI(parent, name, fl), toSettingTab("preferences.html#global")
+{
+    SavePassword->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, "").isEmpty());
+    DesktopAware->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_DESKTOP_AWARE, "Yes").isEmpty());
+    ToolsLeft->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_TOOLS_LEFT, "").isEmpty());
+    toRefreshCreate(OptionGroup, TO_KDE_TOOLBAR_WIDGET, QString::null, Refresh);
+    DefaultSession->setText(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION));
+    Status->setValue(toConfigurationSingle::Instance().globalConfig(CONF_STATUS_MESSAGE,
+                                          DEFAULT_STATUS_MESSAGE).toInt());
+    HistorySize->setValue(toConfigurationSingle::Instance().globalConfig(CONF_STATUS_SAVE,
+                          DEFAULT_STATUS_SAVE).toInt());
+    IncludeDB->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_DB_TITLE, "Yes").isEmpty());
+    MaximizeMain->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_MAXIMIZE_MAIN, "Yes").isEmpty());
+    Statusbar->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_MESSAGE_STATUSBAR, "").isEmpty());
+    RestoreSession->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_RESTORE_SESSION, "").isEmpty());
+    HelpDirectory->setText(toHelpPath());
+    ChangeConnection->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_CHANGE_CONNECTION, "Yes").isEmpty());
+    ConnectHistory->setValue(toConfigurationSingle::Instance().globalConfig(CONF_CONNECT_SIZE, DEFAULT_CONNECT_SIZE).toInt());
+    int samples = toConfigurationSingle::Instance().globalConfig(CONF_CHART_SAMPLES, DEFAULT_CHART_SAMPLES).toInt();
+    if (samples < 0)
+    {
+        UnlimitedSamples->setChecked(true);
+        ChartSamples->setValue(QString::fromLatin1(DEFAULT_CHART_SAMPLES).toInt());
+    }
+    else
+        ChartSamples->setValue(samples);
+    samples = toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_SAMPLES, DEFAULT_DISPLAY_SAMPLES).toInt();
+    if (samples < 0)
+    {
+        AllSamples->setChecked(true);
+        DisplaySamples->setValue(ChartSamples->value());
+    }
+    else
+        DisplaySamples->setValue(samples);
+    DefaultFormat->setCurrentItem(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_FORMAT, "").toInt());
+    ToadBindings->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_TOAD_BINDINGS, DEFAULT_TOAD_BINDINGS).isEmpty());
+    DisplayGrid->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_GRIDLINES, DEFAULT_DISPLAY_GRIDLINES).isEmpty());
+
+    QString typ = toConfigurationSingle::Instance().globalConfig(CONF_SIZE_UNIT, DEFAULT_SIZE_UNIT);
+    if (typ == "KB")
+        SizeUnit->setCurrentItem(1);
+    else if (typ == "MB")
+        SizeUnit->setCurrentItem(2);
+
+#ifdef ENABLE_QT_XFT
+
+    AntialiaseFonts->setChecked(toConfigurationSingle::Instance().globalConfig(CONF_QT_XFT, DEFAULT_QT_XFT) == "true");
+#else
+
+    AntialiaseFonts->hide();
+#endif
+
+#ifdef ENABLE_STYLE
+
+    Style->insertStringList(toGetSessionTypes());
+    QString str = toGetSessionType();
+    for (int i = 0;i < Style->count();i++)
+    {
+        if (str == Style->text(i))
+        {
+            Style->setCurrentItem(i);
+            break;
+        }
+    }
+#else
+    Style->hide();
+    StyleLabel->hide();
+#endif
+
+#ifdef TO_KDE
+
+    DockToolbar->hide();
+    DesktopAware->hide();
+#endif
+#ifdef WIN32
+
+    DesktopAware->hide();
+#endif
+#if QT_VERSION < 0x030000
+
+    DockToolbar->setChecked(toConfigurationSingle::Instance().globalConfig(CONF_DOCK_TOOLBAR, "Yes"));
+#else
+
+    DockToolbar->hide();
+#endif
+
+    if (toMonolithic())
+    {
+        PluginLabel->hide();
+        PluginDirectory->hide();
+        PluginBrowse->hide();
+    }
+    else
+    {
+        PluginDirectory->setText(toConfigurationSingle::Instance().globalConfig(CONF_PLUGIN_DIR,
+                                 DEFAULT_PLUGIN_DIR));
+    }
+
+    /** disk caching options
+     */
+
+    CacheDirectory->setText(toConnection::cacheDir());
+    DiskCaching->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_CACHE_DISK, DEFAULT_CACHE_DISK).isEmpty());
+
+    CustomSQL->setText(toConfigurationSingle::Instance().globalConfig(CONF_SQL_FILE,
+                                            DEFAULT_SQL_FILE));
+    Locale->setText(toConfigurationSingle::Instance().globalConfig(CONF_LOCALE, QTextCodec::locale()));
+}
+
+void toGlobalSetting::pluginBrowse(void)
+{
+    QString str = TOFileDialog::getExistingDirectory(PluginDirectory->text(), this);
+    if (!str.isEmpty())
+        PluginDirectory->setText(str);
+}
+
+void toGlobalSetting::sqlBrowse(void)
+{
+    QString str = toOpenFilename(CustomSQL->text(), QString::null, this);
+    if (!str.isEmpty())
+        CustomSQL->setText(str);
+}
+
+void toGlobalSetting::sessionBrowse(void)
+{
+    QString str = toOpenFilename(DefaultSession->text(), QString::fromLatin1("*.tse"), this);
+    if (!str.isEmpty())
+        DefaultSession->setText(str);
+}
+
+void toGlobalSetting::helpBrowse(void)
+{
+    QString str = toOpenFilename(HelpDirectory->text(), QString::fromLatin1("toc.htm*"), this);
+    if (!str.isEmpty())
+        HelpDirectory->setText(str);
+}
+
+void toGlobalSetting::saveSetting(void)
+{
+    if (!toMonolithic())
+        toConfigurationSingle::Instance().globalSetConfig(CONF_PLUGIN_DIR, PluginDirectory->text());
+    toConfigurationSingle::Instance().globalSetConfig(CONF_CACHE_DISK, DiskCaching->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_CACHE_DIR, CacheDirectory->text());
+    toConfigurationSingle::Instance().globalSetConfig(CONF_SQL_FILE, CustomSQL->text());
+    toConfigurationSingle::Instance().globalSetConfig(CONF_DEFAULT_SESSION, DefaultSession->text());
+    toConfigurationSingle::Instance().globalSetConfig(CONF_REFRESH, Refresh->currentText());
+    toConfigurationSingle::Instance().globalSetConfig(CONF_SAVE_PWD, SavePassword->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_DESKTOP_AWARE, DesktopAware->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_STATUS_MESSAGE, QString::number(Status->value()));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_STATUS_SAVE, QString::number(HistorySize->value()));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_CHART_SAMPLES, QString::number(ChartSamples->value()));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_CONNECT_SIZE, QString::number(ConnectHistory->value()));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_MAXIMIZE_MAIN, MaximizeMain->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_MESSAGE_STATUSBAR, Statusbar->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_RESTORE_SESSION, RestoreSession->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_TOOLS_LEFT, ToolsLeft->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_DEFAULT_FORMAT,
+                            QString::number(DefaultFormat->currentItem()));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_TOAD_BINDINGS, ToadBindings->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_DISPLAY_GRIDLINES, DisplayGrid->isChecked() ? "Yes" : "");
+#if QT_VERSION < 0x030000
+
+    toConfigurationSingle::Instance().globalSetConfig(CONF_DOCK_TOOLBAR, DockToolbar->isChecked() ? "Yes" : "");
+#endif
+
+    toConfigurationSingle::Instance().globalSetConfig(CONF_CHANGE_CONNECTION, ChangeConnection->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_DB_TITLE, IncludeDB->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_SIZE_UNIT, SizeUnit->currentText());
+    toConfigurationSingle::Instance().globalSetConfig(CONF_HELP_PATH, HelpDirectory->text());
+#ifdef ENABLE_STYLE
+
+    toConfigurationSingle::Instance().globalSetConfig(CONF_STYLE, Style->currentText());
+    toSetSessionType(Style->currentText());
+#endif
+#ifdef ENABLE_QT_XFT
+
+    toConfigurationSingle::Instance().globalSetConfig(CONF_QT_XFT, AntialiaseFonts->isChecked() ? "true" : "false");
+#endif
+
+    if (AllSamples->isChecked())
+        toConfigurationSingle::Instance().globalSetConfig(CONF_DISPLAY_SAMPLES, "-1");
+    else
+        toConfigurationSingle::Instance().globalSetConfig(CONF_DISPLAY_SAMPLES, QString::number(DisplaySamples->value()));
+    if (UnlimitedSamples->isChecked())
+        toConfigurationSingle::Instance().globalSetConfig(CONF_CHART_SAMPLES, "-1");
+    else
+        toConfigurationSingle::Instance().globalSetConfig(CONF_CHART_SAMPLES, QString::number(ChartSamples->value()));
+
+    toConfigurationSingle::Instance().globalSetConfig(CONF_LOCALE, Locale->text());
+}
+
+void toDatabaseSetting::numberFormatChange()
+{
+    Decimals->setEnabled(NumberFormat->currentItem() == 2);
+}
+
+void toDatabaseSetting::IndicateEmptyColor_clicked()
+{
+    QColor c = QColorDialog::getColor(IndicateEmptyColor->paletteBackgroundColor(), this, "IndicateEmptyColorDialog");
+    if (c.isValid())
+        IndicateEmptyColor->setPaletteBackgroundColor(c);
+}
+
+toDatabaseSetting::toDatabaseSetting(QWidget *parent, const char *name, WFlags fl)
+        : toDatabaseSettingUI(parent, name, fl), toSettingTab("database.html")
+{
+    MaxColDisp->setText(toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_DISP,
+                        DEFAULT_MAX_COL_DISP));
+    QString str = toConfigurationSingle::Instance().globalConfig(CONF_MAX_NUMBER, DEFAULT_MAX_NUMBER);
+    if (str.toInt() <= 0)
+        ReadAll->setChecked(true);
+    else
+        InitialFetch->setText(str);
+
+    str = toConfigurationSingle::Instance().globalConfig(CONF_MAX_CONTENT, DEFAULT_MAX_CONTENT);
+    if (str.toInt() <= 0)
+    {
+        MaxContent->setText(InitialFetch->text());
+        UnlimitedContent->setChecked(true);
+    }
+    else
+        MaxContent->setText(str);
+
+    MaxColDisp->setValidator(new QIntValidator(MaxColDisp));
+    InitialFetch->setValidator(new QIntValidator(InitialFetch));
+    MaxContent->setValidator(new QIntValidator(InitialFetch));
+
+    Decimals->setValue(toConfigurationSingle::Instance().globalConfig(CONF_NUMBER_DECIMALS, DEFAULT_NUMBER_DECIMALS).toInt());
+    NumberFormat->setCurrentItem(toConfigurationSingle::Instance().globalConfig(CONF_NUMBER_FORMAT, DEFAULT_NUMBER_FORMAT).toInt());
+    if (NumberFormat->currentItem() == 2)
+        Decimals->setEnabled(true);
+
+    AutoCommit->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_COMMIT, "").isEmpty());
+    DontReread->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_DONT_REREAD, "Yes").isEmpty());
+    ObjectCache->setCurrentItem(toConfigurationSingle::Instance().globalConfig(CONF_OBJECT_CACHE, DEFAULT_OBJECT_CACHE).toInt());
+    BkgndConnect->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_BKGND_CONNECT, "").isEmpty());
+    IndicateEmpty->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY, "").isEmpty());
+
+    QColor nullColor;
+    nullColor.setNamedColor(toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY_COLOR, "#f2ffbc"));
+    IndicateEmptyColor->setPaletteBackgroundColor(nullColor);
+
+    int val = toConfigurationSingle::Instance().globalConfig(CONF_AUTO_LONG, "0").toInt();
+    AutoLong->setChecked(val);
+    MoveAfter->setValue(val);
+    KeepAlive->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_KEEP_ALIVE, "").isEmpty());
+}
+
+void toUpdateIndicateEmpty(void);
+
+void toDatabaseSetting::saveSetting(void)
+{
+    toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_COL_DISP, MaxColDisp->text());
+    if (ReadAll->isChecked())
+        toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_NUMBER, "-1");
+    else
+        toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_NUMBER, InitialFetch->text());
+    if (UnlimitedContent->isChecked())
+        toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_CONTENT, "-1");
+    else
+    {
+        int num = InitialFetch->text().toInt();
+        int maxnum = MaxContent->text().toInt();
+        if (num < 0)
+            maxnum = num;
+        else if (num >= maxnum)
+            maxnum = num + 1;
+        if (maxnum != MaxContent->text().toInt())
+            TOMessageBox::information(this, tr("Invalid values"),
+                                      tr("Doesn't make sense to have max content less than initial\n"
+                                         "fetch size. Will adjust value to be higher."),
+                                      tr("&Ok"));
+        toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_CONTENT, QString::number(maxnum));
+    }
+    toConfigurationSingle::Instance().globalSetConfig(CONF_AUTO_COMMIT, AutoCommit->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_DONT_REREAD, DontReread->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_OBJECT_CACHE, QString::number(ObjectCache->currentItem()));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_BKGND_CONNECT, BkgndConnect->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_AUTO_LONG,
+                            AutoLong->isChecked() ? MoveAfter->cleanText() : QString::fromLatin1("0"));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_INDICATE_EMPTY, IndicateEmpty->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_INDICATE_EMPTY_COLOR, IndicateEmptyColor->paletteBackgroundColor().name());
+    toConfigurationSingle::Instance().globalSetConfig(CONF_KEEP_ALIVE, KeepAlive->isChecked() ? DEFAULT_KEEP_ALIVE : "");
+
+    toConfigurationSingle::Instance().globalSetConfig(CONF_NUMBER_FORMAT, QString::number(NumberFormat->currentItem()));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_NUMBER_DECIMALS, QString::number(Decimals->value()));
+    toQValue::setNumberFormat(NumberFormat->currentItem(), Decimals->value());
+
+    toMainWidget()->updateKeepAlive();
+    toUpdateIndicateEmpty();
+}
+
+toToolSetting::toToolSetting(QWidget *parent, const char *name, WFlags fl)
+        : toToolSettingUI(parent, name, fl), toSettingTab("toolsetting.html")
+{
+    std::map<QCString, toTool *> &tools = toTool::tools();
+
+    QString first;
+    Enabled->setSorting(0);
+    for (std::map<QCString, toTool *>::iterator i = tools.begin();i != tools.end();i++)
+    {
+        if ((*i).second->menuItem())
+        {
+            QString menuName = qApp->translate("toTool", (*i).second->menuItem());
+            if (first.isEmpty())
+                first = menuName;
+
+            new QListViewItem(Enabled, menuName, (*i).second->name(), (*i).first);
+        }
+    }
+
+    for (QListViewItem *item = Enabled->firstChild();item;item = item->nextSibling())
+    {
+        QCString tmp = item->text(2).latin1();
+        tmp += CONF_TOOL_ENABLE;
+        if (!toConfigurationSingle::Instance().globalConfig(tmp, "Yes").isEmpty())
+            item->setSelected(true);
+    }
+
+    DefaultTool->insertItem(first);
+    changeEnable();
+}
+
+void toToolSetting::changeEnable(void)
+{
+    QString str = DefaultTool->currentText();
+
+    DefaultTool->clear();
+    int id = 0;
+    int sel = 0;
+    for (QListViewItem *item = Enabled->firstChild();item;item = item->nextSibling())
+    {
+        if (item->isSelected())
+        {
+            DefaultTool->insertItem(item->text(0), id);
+            if (item->text(0) == str)
+                sel = id;
+            id++;
+        }
+    }
+    DefaultTool->setCurrentItem(sel);
+}
+
+void toToolSetting::saveSetting(void)
+{
+    for (QListViewItem *item = Enabled->firstChild();item;item = item->nextSibling())
+    {
+        QCString str = item->text(2).latin1();
+        str += CONF_TOOL_ENABLE;
+        toConfigurationSingle::Instance().globalSetConfig(str, item->isSelected() ? "Yes" : "");
+
+        if (DefaultTool->currentText() == item->text(0))
+            toConfigurationSingle::Instance().globalSetConfig(CONF_DEFAULT_TOOL, item->text(2));
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toglobalsetting.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toglobalsetting.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toglobalsetting.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,80 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOGLOBALSETTING_H
+#define TOGLOBALSETTING_H
+
+#include "config.h"
+#include "todatabasesettingui.h"
+#include "toglobalsettingui.h"
+#include "tohelp.h"
+#include "totool.h"
+#include "totoolsettingui.h"
+
+class toGlobalSetting : public toGlobalSettingUI, public toSettingTab
+{
+public:
+    toGlobalSetting(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+
+    virtual void saveSetting(void);
+
+    virtual void pluginBrowse(void);
+    virtual void sqlBrowse(void);
+    virtual void helpBrowse(void);
+    virtual void sessionBrowse(void);
+};
+
+class toDatabaseSetting : public toDatabaseSettingUI, public toSettingTab
+{
+public:
+    toDatabaseSetting(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+
+    virtual void saveSetting(void);
+    virtual void numberFormatChange();
+    virtual void IndicateEmptyColor_clicked();
+};
+
+class toToolSetting : public toToolSettingUI, public toSettingTab
+{
+public:
+    toToolSetting(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+
+    virtual void saveSetting(void);
+    virtual void changeEnable(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toglobalsettingui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toglobalsettingui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toglobalsettingui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,434 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'toglobalsettingui.ui'
+**
+** Created: Tue Sep 18 08:21:28 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "toglobalsettingui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qspinbox.h>
+#include <qcombobox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toGlobalSettingUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toGlobalSettingUI::toGlobalSettingUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toGlobalSettingUI" );
+    toGlobalSettingUILayout = new QGridLayout( this, 1, 1, 11, 6, "toGlobalSettingUILayout"); 
+
+    GroupBox2 = new QGroupBox( this, "GroupBox2" );
+    GroupBox2->setColumnLayout(0, Qt::Vertical );
+    GroupBox2->layout()->setSpacing( 6 );
+    GroupBox2->layout()->setMargin( 11 );
+    GroupBox2Layout = new QGridLayout( GroupBox2->layout() );
+    GroupBox2Layout->setAlignment( Qt::AlignTop );
+
+    TextLabel5 = new QLabel( GroupBox2, "TextLabel5" );
+
+    GroupBox2Layout->addWidget( TextLabel5, 0, 0 );
+
+    SQLBrowse = new QPushButton( GroupBox2, "SQLBrowse" );
+
+    GroupBox2Layout->addWidget( SQLBrowse, 0, 2 );
+
+    CustomSQL = new QLineEdit( GroupBox2, "CustomSQL" );
+    CustomSQL->setFrameShape( QLineEdit::LineEditPanel );
+    CustomSQL->setFrameShadow( QLineEdit::Sunken );
+
+    GroupBox2Layout->addWidget( CustomSQL, 0, 1 );
+
+    PluginBrowse = new QPushButton( GroupBox2, "PluginBrowse" );
+
+    GroupBox2Layout->addWidget( PluginBrowse, 3, 2 );
+
+    PluginDirectory = new QLineEdit( GroupBox2, "PluginDirectory" );
+
+    GroupBox2Layout->addWidget( PluginDirectory, 3, 1 );
+
+    PluginLabel = new QLabel( GroupBox2, "PluginLabel" );
+
+    GroupBox2Layout->addWidget( PluginLabel, 3, 0 );
+
+    CacheBrowse = new QPushButton( GroupBox2, "CacheBrowse" );
+
+    GroupBox2Layout->addWidget( CacheBrowse, 4, 2 );
+
+    CacheDirectory = new QLineEdit( GroupBox2, "CacheDirectory" );
+
+    GroupBox2Layout->addWidget( CacheDirectory, 4, 1 );
+
+    CacheLabel = new QLabel( GroupBox2, "CacheLabel" );
+
+    GroupBox2Layout->addWidget( CacheLabel, 4, 0 );
+
+    PluginLabel_2 = new QLabel( GroupBox2, "PluginLabel_2" );
+
+    GroupBox2Layout->addWidget( PluginLabel_2, 1, 0 );
+
+    HelpDirectory = new QLineEdit( GroupBox2, "HelpDirectory" );
+
+    GroupBox2Layout->addWidget( HelpDirectory, 1, 1 );
+
+    HelpBrowse = new QPushButton( GroupBox2, "HelpBrowse" );
+
+    GroupBox2Layout->addWidget( HelpBrowse, 1, 2 );
+
+    PluginLabel_2_2 = new QLabel( GroupBox2, "PluginLabel_2_2" );
+
+    GroupBox2Layout->addWidget( PluginLabel_2_2, 2, 0 );
+
+    DefaultSession = new QLineEdit( GroupBox2, "DefaultSession" );
+
+    GroupBox2Layout->addWidget( DefaultSession, 2, 1 );
+
+    HelpBrowse_2 = new QPushButton( GroupBox2, "HelpBrowse_2" );
+
+    GroupBox2Layout->addWidget( HelpBrowse_2, 2, 2 );
+
+    toGlobalSettingUILayout->addWidget( GroupBox2, 0, 0 );
+
+    OptionGroup = new QGroupBox( this, "OptionGroup" );
+    OptionGroup->setColumnLayout(0, Qt::Vertical );
+    OptionGroup->layout()->setSpacing( 6 );
+    OptionGroup->layout()->setMargin( 11 );
+    OptionGroupLayout = new QGridLayout( OptionGroup->layout() );
+    OptionGroupLayout->setAlignment( Qt::AlignTop );
+
+    SavePassword = new QCheckBox( OptionGroup, "SavePassword" );
+
+    OptionGroupLayout->addWidget( SavePassword, 1, 0 );
+
+    IncludeDB = new QCheckBox( OptionGroup, "IncludeDB" );
+
+    OptionGroupLayout->addWidget( IncludeDB, 2, 0 );
+
+    ChangeConnection = new QCheckBox( OptionGroup, "ChangeConnection" );
+
+    OptionGroupLayout->addMultiCellWidget( ChangeConnection, 0, 0, 0, 2 );
+
+    TextLabel3_2_2 = new QLabel( OptionGroup, "TextLabel3_2_2" );
+
+    OptionGroupLayout->addWidget( TextLabel3_2_2, 0, 3 );
+
+    ConnectHistory = new QSpinBox( OptionGroup, "ConnectHistory" );
+    ConnectHistory->setMaxValue( 1000 );
+
+    OptionGroupLayout->addMultiCellWidget( ConnectHistory, 0, 0, 4, 5 );
+
+    HistorySize = new QSpinBox( OptionGroup, "HistorySize" );
+    HistorySize->setMaxValue( 1000 );
+
+    OptionGroupLayout->addMultiCellWidget( HistorySize, 2, 2, 4, 5 );
+
+    TextLabel3_2 = new QLabel( OptionGroup, "TextLabel3_2" );
+
+    OptionGroupLayout->addWidget( TextLabel3_2, 2, 3 );
+
+    Status = new QSpinBox( OptionGroup, "Status" );
+
+    OptionGroupLayout->addMultiCellWidget( Status, 1, 1, 4, 5 );
+
+    StatusLabel = new QLabel( OptionGroup, "StatusLabel" );
+
+    OptionGroupLayout->addWidget( StatusLabel, 1, 3 );
+
+    Statusbar = new QCheckBox( OptionGroup, "Statusbar" );
+
+    OptionGroupLayout->addMultiCellWidget( Statusbar, 1, 1, 1, 2 );
+
+    ToolsLeft = new QCheckBox( OptionGroup, "ToolsLeft" );
+
+    OptionGroupLayout->addMultiCellWidget( ToolsLeft, 3, 3, 1, 2 );
+
+    MaximizeMain = new QCheckBox( OptionGroup, "MaximizeMain" );
+
+    OptionGroupLayout->addMultiCellWidget( MaximizeMain, 2, 2, 1, 2 );
+
+    RestoreSession = new QCheckBox( OptionGroup, "RestoreSession" );
+
+    OptionGroupLayout->addWidget( RestoreSession, 3, 0 );
+
+    DesktopAware = new QCheckBox( OptionGroup, "DesktopAware" );
+
+    OptionGroupLayout->addWidget( DesktopAware, 4, 0 );
+
+    AntialiaseFonts = new QCheckBox( OptionGroup, "AntialiaseFonts" );
+
+    OptionGroupLayout->addWidget( AntialiaseFonts, 5, 0 );
+
+    DockToolbar = new QCheckBox( OptionGroup, "DockToolbar" );
+
+    OptionGroupLayout->addWidget( DockToolbar, 6, 0 );
+
+    StyleLabel = new QLabel( OptionGroup, "StyleLabel" );
+
+    OptionGroupLayout->addWidget( StyleLabel, 8, 3 );
+
+    SizeLabel = new QLabel( OptionGroup, "SizeLabel" );
+
+    OptionGroupLayout->addWidget( SizeLabel, 5, 3 );
+
+    Refresh = new QComboBox( FALSE, OptionGroup, "Refresh" );
+
+    OptionGroupLayout->addMultiCellWidget( Refresh, 6, 6, 4, 5 );
+
+    SizeUnit = new QComboBox( FALSE, OptionGroup, "SizeUnit" );
+
+    OptionGroupLayout->addMultiCellWidget( SizeUnit, 5, 5, 4, 5 );
+
+    DefaultFormat = new QComboBox( FALSE, OptionGroup, "DefaultFormat" );
+
+    OptionGroupLayout->addMultiCellWidget( DefaultFormat, 7, 7, 4, 5 );
+
+    TextLabel2 = new QLabel( OptionGroup, "TextLabel2" );
+
+    OptionGroupLayout->addWidget( TextLabel2, 7, 3 );
+
+    RefreshLabel = new QLabel( OptionGroup, "RefreshLabel" );
+
+    OptionGroupLayout->addWidget( RefreshLabel, 6, 3 );
+
+    Style = new QComboBox( FALSE, OptionGroup, "Style" );
+
+    OptionGroupLayout->addMultiCellWidget( Style, 8, 8, 4, 5 );
+
+    TextLabel3_2_3 = new QLabel( OptionGroup, "TextLabel3_2_3" );
+
+    OptionGroupLayout->addWidget( TextLabel3_2_3, 3, 3 );
+
+    ChartSamples = new QSpinBox( OptionGroup, "ChartSamples" );
+    ChartSamples->setMaxValue( 1000 );
+
+    OptionGroupLayout->addWidget( ChartSamples, 3, 4 );
+
+    UnlimitedSamples = new QCheckBox( OptionGroup, "UnlimitedSamples" );
+
+    OptionGroupLayout->addWidget( UnlimitedSamples, 3, 5 );
+
+    TextLabel3_2_3_2 = new QLabel( OptionGroup, "TextLabel3_2_3_2" );
+
+    OptionGroupLayout->addWidget( TextLabel3_2_3_2, 4, 3 );
+
+    DisplaySamples = new QSpinBox( OptionGroup, "DisplaySamples" );
+    DisplaySamples->setMaxValue( 1000 );
+
+    OptionGroupLayout->addWidget( DisplaySamples, 4, 4 );
+
+    AllSamples = new QCheckBox( OptionGroup, "AllSamples" );
+
+    OptionGroupLayout->addWidget( AllSamples, 4, 5 );
+
+    DiskCaching = new QCheckBox( OptionGroup, "DiskCaching" );
+
+    OptionGroupLayout->addMultiCellWidget( DiskCaching, 4, 4, 1, 2 );
+
+    LocaleLabel = new QLabel( OptionGroup, "LocaleLabel" );
+    LocaleLabel->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, 0, 0, LocaleLabel->sizePolicy().hasHeightForWidth() ) );
+
+    OptionGroupLayout->addWidget( LocaleLabel, 8, 1 );
+
+    Locale = new QLineEdit( OptionGroup, "Locale" );
+    Locale->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)4, (QSizePolicy::SizeType)0, 0, 0, Locale->sizePolicy().hasHeightForWidth() ) );
+
+    OptionGroupLayout->addWidget( Locale, 8, 2 );
+
+    DisplayGrid = new QCheckBox( OptionGroup, "DisplayGrid" );
+
+    OptionGroupLayout->addMultiCellWidget( DisplayGrid, 6, 6, 1, 2 );
+
+    ToadBindings = new QCheckBox( OptionGroup, "ToadBindings" );
+
+    OptionGroupLayout->addMultiCellWidget( ToadBindings, 7, 7, 1, 2 );
+
+    toGlobalSettingUILayout->addWidget( OptionGroup, 1, 0 );
+    languageChange();
+    resize( QSize(625, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PluginBrowse, SIGNAL( clicked() ), this, SLOT( pluginBrowse() ) );
+    connect( SQLBrowse, SIGNAL( clicked() ), this, SLOT( pluginBrowse() ) );
+    connect( SQLBrowse, SIGNAL( clicked() ), this, SLOT( sqlBrowse() ) );
+    connect( HelpBrowse, SIGNAL( clicked() ), this, SLOT( helpBrowse() ) );
+    connect( HelpBrowse_2, SIGNAL( clicked() ), this, SLOT( sessionBrowse() ) );
+    connect( UnlimitedSamples, SIGNAL( toggled(bool) ), ChartSamples, SLOT( setDisabled(bool) ) );
+    connect( AllSamples, SIGNAL( toggled(bool) ), DisplaySamples, SLOT( setDisabled(bool) ) );
+
+    // tab order
+    setTabOrder( CustomSQL, SQLBrowse );
+    setTabOrder( SQLBrowse, HelpDirectory );
+    setTabOrder( HelpDirectory, HelpBrowse );
+    setTabOrder( HelpBrowse, DefaultSession );
+    setTabOrder( DefaultSession, HelpBrowse_2 );
+    setTabOrder( HelpBrowse_2, PluginDirectory );
+    setTabOrder( PluginDirectory, PluginBrowse );
+    setTabOrder( PluginBrowse, ChangeConnection );
+    setTabOrder( ChangeConnection, SavePassword );
+    setTabOrder( SavePassword, IncludeDB );
+    setTabOrder( IncludeDB, RestoreSession );
+    setTabOrder( RestoreSession, DesktopAware );
+    setTabOrder( DesktopAware, AntialiaseFonts );
+    setTabOrder( AntialiaseFonts, DockToolbar );
+    setTabOrder( DockToolbar, Statusbar );
+    setTabOrder( Statusbar, MaximizeMain );
+    setTabOrder( MaximizeMain, ToolsLeft );
+    setTabOrder( ToolsLeft, Locale );
+    setTabOrder( Locale, ConnectHistory );
+    setTabOrder( ConnectHistory, Status );
+    setTabOrder( Status, HistorySize );
+    setTabOrder( HistorySize, ChartSamples );
+    setTabOrder( ChartSamples, UnlimitedSamples );
+    setTabOrder( UnlimitedSamples, DisplaySamples );
+    setTabOrder( DisplaySamples, AllSamples );
+    setTabOrder( AllSamples, SizeUnit );
+    setTabOrder( SizeUnit, Refresh );
+    setTabOrder( Refresh, DefaultFormat );
+    setTabOrder( DefaultFormat, Style );
+
+    // buddies
+    TextLabel5->setBuddy( CustomSQL );
+    PluginLabel->setBuddy( PluginDirectory );
+    CacheLabel->setBuddy( CacheDirectory );
+    PluginLabel_2->setBuddy( HelpDirectory );
+    PluginLabel_2_2->setBuddy( DefaultSession );
+    TextLabel3_2_2->setBuddy( ConnectHistory );
+    TextLabel3_2->setBuddy( HistorySize );
+    StatusLabel->setBuddy( Status );
+    StyleLabel->setBuddy( Style );
+    RefreshLabel->setBuddy( Refresh );
+    TextLabel3_2_3->setBuddy( HistorySize );
+    TextLabel3_2_3_2->setBuddy( HistorySize );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toGlobalSettingUI::~toGlobalSettingUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toGlobalSettingUI::languageChange()
+{
+    setCaption( tr( "toGlobalSettingUI" ) );
+    GroupBox2->setTitle( tr( "Paths" ) );
+    TextLabel5->setText( tr( "&Custom SQL" ) );
+    SQLBrowse->setText( tr( "Browse" ) );
+    PluginBrowse->setText( tr( "Browse" ) );
+    PluginLabel->setText( tr( "&Plugin directory" ) );
+    QToolTip::add( PluginLabel, tr( "Directory where to find plugins when starting." ) );
+    CacheBrowse->setText( tr( "Browse" ) );
+    CacheLabel->setText( tr( "&Cache directory" ) );
+    QToolTip::add( CacheLabel, tr( "Directory where to place cached dataaseinformation." ) );
+    PluginLabel_2->setText( tr( "&Help directory" ) );
+    QToolTip::add( PluginLabel_2, tr( "Directory where to find help files." ) );
+    HelpBrowse->setText( tr( "Browse" ) );
+    PluginLabel_2_2->setText( tr( "Default session" ) );
+    QToolTip::add( PluginLabel_2_2, tr( "Default session to use when saving a session." ) );
+    HelpBrowse_2->setText( tr( "Browse" ) );
+    OptionGroup->setTitle( tr( "Options" ) );
+    SavePassword->setText( tr( "&Save passwords" ) );
+    SavePassword->setAccel( QKeySequence( tr( "Alt+S" ) ) );
+    QToolTip::add( SavePassword, tr( "Remember the last password you used to connect.\n"
+"Will leave the password unencryptet in the config file." ) );
+    IncludeDB->setText( tr( "Include DB in caption" ) );
+    QToolTip::add( IncludeDB, tr( "Include database connection in window captions" ) );
+    ChangeConnection->setText( tr( "Change current connection with active window" ) );
+    QToolTip::add( ChangeConnection, tr( "Change currently select connection to the connection of the new active window" ) );
+    TextLabel3_2_2->setText( tr( "Connect history" ) );
+    QToolTip::add( TextLabel3_2_2, tr( "Number of connections to save in history." ) );
+    ConnectHistory->setSuffix( QString::null );
+    HistorySize->setSuffix( QString::null );
+    TextLabel3_2->setText( tr( "Message history" ) );
+    QToolTip::add( TextLabel3_2, tr( "Number of status messages to save in the message history." ) );
+    Status->setSuffix( tr( " seconds" ) );
+    StatusLabel->setText( tr( "Status &message" ) );
+    QToolTip::add( StatusLabel, tr( "The time in seconds temporary messages will be displayed in the status bar. 0 menas keep." ) );
+    Statusbar->setText( tr( "Display alerts in statusbar only" ) );
+    QToolTip::add( Statusbar, tr( "Display alerts in messagebar instead of poping up a dialog with a warning." ) );
+    ToolsLeft->setText( tr( "Tools toolbar on left" ) );
+    QToolTip::add( ToolsLeft, tr( "Start using the tools toolbar on the left of the main window instead of at the top." ) );
+    MaximizeMain->setText( tr( "Maximize window on start" ) );
+    RestoreSession->setText( tr( "Restore session on startup" ) );
+    DesktopAware->setText( tr( "&Desktop aware" ) );
+    QToolTip::add( DesktopAware, tr( "Colors get really weird in KDE if you select this." ) );
+    AntialiaseFonts->setText( tr( "&Antialiase fonts" ) );
+    QToolTip::add( AntialiaseFonts, tr( "Use antialiase fonts if Qt supports this. You need to restart for this to take affect." ) );
+    DockToolbar->setText( tr( "Docks use toolbars" ) );
+    QToolTip::add( DockToolbar, tr( "Check this if docks are to use toolbars instead of normal frames." ) );
+    StyleLabel->setText( tr( "&Style" ) );
+    QToolTip::add( StyleLabel, tr( "The style to use for the user interface." ) );
+    SizeLabel->setText( tr( "Size Unit" ) );
+    QToolTip::add( SizeLabel, tr( "Define the unit sizes should be displayed." ) );
+    SizeUnit->clear();
+    SizeUnit->insertItem( tr( "Bytes" ) );
+    SizeUnit->insertItem( tr( "KB" ) );
+    SizeUnit->insertItem( tr( "MB" ) );
+    DefaultFormat->clear();
+    DefaultFormat->insertItem( tr( "Text" ) );
+    DefaultFormat->insertItem( tr( "Tab delimited" ) );
+    DefaultFormat->insertItem( tr( "CSV" ) );
+    DefaultFormat->insertItem( tr( "HTML" ) );
+    TextLabel2->setText( tr( "Default list format" ) );
+    RefreshLabel->setText( tr( "&Refresh" ) );
+    QToolTip::add( RefreshLabel, tr( "Default refreshtime in tools." ) );
+    TextLabel3_2_3->setText( tr( "Chart samples" ) );
+    QToolTip::add( TextLabel3_2_3, tr( "Number of samples to keep in line and barcharts by default." ) );
+    ChartSamples->setSuffix( QString::null );
+    UnlimitedSamples->setText( tr( "Unlimited" ) );
+    QToolTip::add( UnlimitedSamples, tr( "Save unlimited number of samples. Can large amounts of consume memory." ) );
+    TextLabel3_2_3_2->setText( tr( "Display samples" ) );
+    QToolTip::add( TextLabel3_2_3_2, tr( "Number of samples to display in line and barcharts by default." ) );
+    DisplaySamples->setSuffix( QString::null );
+    AllSamples->setText( tr( "All" ) );
+    QToolTip::add( AllSamples, tr( "Display all available samples" ) );
+    DiskCaching->setText( tr( "Use Disk Caching" ) );
+    QToolTip::add( DiskCaching, tr( "Use Disk Caching of ObjectLists and Synonyms" ) );
+    LocaleLabel->setText( tr( "Translation" ) );
+    QToolTip::add( LocaleLabel, tr( "Which translation locale to use for this program. Must restart to have effect." ) );
+    DisplayGrid->setText( tr( "Display gridlines in results" ) );
+    QToolTip::add( DisplayGrid, tr( "Show grid lines in output results table." ) );
+    ToadBindings->setText( tr( "Prefer TOAD key bindings" ) );
+    QToolTip::add( ToadBindings, tr( "Use TOAD keybindings instead of classic TOra." ) );
+}
+
+void toGlobalSettingUI::helpBrowse()
+{
+    qWarning( "toGlobalSettingUI::helpBrowse(): Not implemented yet" );
+}
+
+void toGlobalSettingUI::sessionBrowse()
+{
+    qWarning( "toGlobalSettingUI::sessionBrowse(): Not implemented yet" );
+}
+
+void toGlobalSettingUI::pluginBrowse()
+{
+    qWarning( "toGlobalSettingUI::pluginBrowse(): Not implemented yet" );
+}
+
+void toGlobalSettingUI::sqlBrowse()
+{
+    qWarning( "toGlobalSettingUI::sqlBrowse(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/toglobalsettingui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toglobalsettingui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toglobalsettingui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,105 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'toglobalsettingui.ui'
+**
+** Created: Tue Sep 18 08:21:28 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOGLOBALSETTINGUI_H
+#define TOGLOBALSETTINGUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QGroupBox;
+class QLabel;
+class QPushButton;
+class QLineEdit;
+class QCheckBox;
+class QSpinBox;
+class QComboBox;
+
+class toGlobalSettingUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toGlobalSettingUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toGlobalSettingUI();
+
+    QGroupBox* GroupBox2;
+    QLabel* TextLabel5;
+    QPushButton* SQLBrowse;
+    QLineEdit* CustomSQL;
+    QPushButton* PluginBrowse;
+    QLineEdit* PluginDirectory;
+    QLabel* PluginLabel;
+    QPushButton* CacheBrowse;
+    QLineEdit* CacheDirectory;
+    QLabel* CacheLabel;
+    QLabel* PluginLabel_2;
+    QLineEdit* HelpDirectory;
+    QPushButton* HelpBrowse;
+    QLabel* PluginLabel_2_2;
+    QLineEdit* DefaultSession;
+    QPushButton* HelpBrowse_2;
+    QGroupBox* OptionGroup;
+    QCheckBox* SavePassword;
+    QCheckBox* IncludeDB;
+    QCheckBox* ChangeConnection;
+    QLabel* TextLabel3_2_2;
+    QSpinBox* ConnectHistory;
+    QSpinBox* HistorySize;
+    QLabel* TextLabel3_2;
+    QSpinBox* Status;
+    QLabel* StatusLabel;
+    QCheckBox* Statusbar;
+    QCheckBox* ToolsLeft;
+    QCheckBox* MaximizeMain;
+    QCheckBox* RestoreSession;
+    QCheckBox* DesktopAware;
+    QCheckBox* AntialiaseFonts;
+    QCheckBox* DockToolbar;
+    QLabel* StyleLabel;
+    QLabel* SizeLabel;
+    QComboBox* Refresh;
+    QComboBox* SizeUnit;
+    QComboBox* DefaultFormat;
+    QLabel* TextLabel2;
+    QLabel* RefreshLabel;
+    QComboBox* Style;
+    QLabel* TextLabel3_2_3;
+    QSpinBox* ChartSamples;
+    QCheckBox* UnlimitedSamples;
+    QLabel* TextLabel3_2_3_2;
+    QSpinBox* DisplaySamples;
+    QCheckBox* AllSamples;
+    QCheckBox* DiskCaching;
+    QLabel* LocaleLabel;
+    QLineEdit* Locale;
+    QCheckBox* DisplayGrid;
+    QCheckBox* ToadBindings;
+
+public slots:
+    virtual void helpBrowse();
+    virtual void sessionBrowse();
+    virtual void pluginBrowse();
+    virtual void sqlBrowse();
+
+protected:
+    QGridLayout* toGlobalSettingUILayout;
+    QGridLayout* GroupBox2Layout;
+    QGridLayout* OptionGroupLayout;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOGLOBALSETTINGUI_H

Added: kde-extras/tora/branches/upstream/current/src/toglobalsettingui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toglobalsettingui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toglobalsettingui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,713 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>toGlobalSettingUI</class>
+<widget class="QWidget">
+    <property name="name">
+        <cstring>toGlobalSettingUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>625</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>toGlobalSettingUI</string>
+    </property>
+    <property name="layoutSpacing" stdset="0">
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>11</number>
+        </property>
+        <property name="spacing">
+            <number>6</number>
+        </property>
+        <widget class="QGroupBox" row="0" column="0">
+            <property name="name">
+                <cstring>GroupBox2</cstring>
+            </property>
+            <property name="title">
+                <string>Paths</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>11</number>
+                </property>
+                <property name="spacing">
+                    <number>6</number>
+                </property>
+                <widget class="QLabel" row="0" column="0">
+                    <property name="name">
+                        <cstring>TextLabel5</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Custom SQL</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>CustomSQL</cstring>
+                    </property>
+                </widget>
+                <widget class="QPushButton" row="0" column="2">
+                    <property name="name">
+                        <cstring>SQLBrowse</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Browse</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="0" column="1">
+                    <property name="name">
+                        <cstring>CustomSQL</cstring>
+                    </property>
+                    <property name="frameShape">
+                        <enum>LineEditPanel</enum>
+                    </property>
+                    <property name="frameShadow">
+                        <enum>Sunken</enum>
+                    </property>
+                </widget>
+                <widget class="QPushButton" row="3" column="2">
+                    <property name="name">
+                        <cstring>PluginBrowse</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Browse</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="3" column="1">
+                    <property name="name">
+                        <cstring>PluginDirectory</cstring>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="3" column="0">
+                    <property name="name">
+                        <cstring>PluginLabel</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Plugin directory</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>PluginDirectory</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Directory where to find plugins when starting.</string>
+                    </property>
+                </widget>
+                <widget class="QPushButton" row="4" column="2">
+                    <property name="name">
+                        <cstring>CacheBrowse</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Browse</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="4" column="1">
+                    <property name="name">
+                        <cstring>CacheDirectory</cstring>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="4" column="0">
+                    <property name="name">
+                        <cstring>CacheLabel</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Cache directory</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>CacheDirectory</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Directory where to place cached dataaseinformation.</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="1" column="0">
+                    <property name="name">
+                        <cstring>PluginLabel_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Help directory</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>HelpDirectory</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Directory where to find help files.</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="1" column="1">
+                    <property name="name">
+                        <cstring>HelpDirectory</cstring>
+                    </property>
+                </widget>
+                <widget class="QPushButton" row="1" column="2">
+                    <property name="name">
+                        <cstring>HelpBrowse</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Browse</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="2" column="0">
+                    <property name="name">
+                        <cstring>PluginLabel_2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Default session</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>DefaultSession</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Default session to use when saving a session.</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="2" column="1">
+                    <property name="name">
+                        <cstring>DefaultSession</cstring>
+                    </property>
+                </widget>
+                <widget class="QPushButton" row="2" column="2">
+                    <property name="name">
+                        <cstring>HelpBrowse_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Browse</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget class="QGroupBox" row="1" column="0">
+            <property name="name">
+                <cstring>OptionGroup</cstring>
+            </property>
+            <property name="title">
+                <string>Options</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>11</number>
+                </property>
+                <property name="spacing">
+                    <number>6</number>
+                </property>
+                <widget class="QCheckBox" row="1" column="0">
+                    <property name="name">
+                        <cstring>SavePassword</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Save passwords</string>
+                    </property>
+                    <property name="accel">
+                        <string>Alt+S</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Remember the last password you used to connect.
+Will leave the password unencryptet in the config file.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="2" column="0">
+                    <property name="name">
+                        <cstring>IncludeDB</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Include DB in caption</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Include database connection in window captions</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>ChangeConnection</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Change current connection with active window</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Change currently select connection to the connection of the new active window</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="0" column="3">
+                    <property name="name">
+                        <cstring>TextLabel3_2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Connect history</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>ConnectHistory</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Number of connections to save in history.</string>
+                    </property>
+                </widget>
+                <widget class="QSpinBox" row="0" column="4" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>ConnectHistory</cstring>
+                    </property>
+                    <property name="suffix">
+                        <string></string>
+                    </property>
+                    <property name="maxValue">
+                        <number>1000</number>
+                    </property>
+                </widget>
+                <widget class="QSpinBox" row="2" column="4" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>HistorySize</cstring>
+                    </property>
+                    <property name="suffix">
+                        <string></string>
+                    </property>
+                    <property name="maxValue">
+                        <number>1000</number>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="2" column="3">
+                    <property name="name">
+                        <cstring>TextLabel3_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Message history</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>HistorySize</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Number of status messages to save in the message history.</string>
+                    </property>
+                </widget>
+                <widget class="QSpinBox" row="1" column="4" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>Status</cstring>
+                    </property>
+                    <property name="suffix">
+                        <string> seconds</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="1" column="3">
+                    <property name="name">
+                        <cstring>StatusLabel</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Status &amp;message</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>Status</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>The time in seconds temporary messages will be displayed in the status bar. 0 menas keep.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="1" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>Statusbar</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Display alerts in statusbar only</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Display alerts in messagebar instead of poping up a dialog with a warning.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="3" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>ToolsLeft</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Tools toolbar on left</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Start using the tools toolbar on the left of the main window instead of at the top.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="2" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>MaximizeMain</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Maximize window on start</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="3" column="0">
+                    <property name="name">
+                        <cstring>RestoreSession</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Restore session on startup</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="4" column="0">
+                    <property name="name">
+                        <cstring>DesktopAware</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Desktop aware</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Colors get really weird in KDE if you select this.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="5" column="0">
+                    <property name="name">
+                        <cstring>AntialiaseFonts</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Antialiase fonts</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Use antialiase fonts if Qt supports this. You need to restart for this to take affect.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="6" column="0">
+                    <property name="name">
+                        <cstring>DockToolbar</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Docks use toolbars</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Check this if docks are to use toolbars instead of normal frames.</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="8" column="3">
+                    <property name="name">
+                        <cstring>StyleLabel</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Style</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>Style</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>The style to use for the user interface.</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="5" column="3">
+                    <property name="name">
+                        <cstring>SizeLabel</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Size Unit</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>SizeUnite</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Define the unit sizes should be displayed.</string>
+                    </property>
+                </widget>
+                <widget class="QComboBox" row="6" column="4" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>Refresh</cstring>
+                    </property>
+                </widget>
+                <widget class="QComboBox" row="5" column="4" rowspan="1" colspan="2">
+                    <item>
+                        <property name="text">
+                            <string>Bytes</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>KB</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>MB</string>
+                        </property>
+                    </item>
+                    <property name="name">
+                        <cstring>SizeUnit</cstring>
+                    </property>
+                </widget>
+                <widget class="QComboBox" row="7" column="4" rowspan="1" colspan="2">
+                    <item>
+                        <property name="text">
+                            <string>Text</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>Tab delimited</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>CSV</string>
+                        </property>
+                    </item>
+                    <item>
+                        <property name="text">
+                            <string>HTML</string>
+                        </property>
+                    </item>
+                    <property name="name">
+                        <cstring>DefaultFormat</cstring>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="7" column="3">
+                    <property name="name">
+                        <cstring>TextLabel2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Default list format</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="6" column="3">
+                    <property name="name">
+                        <cstring>RefreshLabel</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Refresh</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>Refresh</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Default refreshtime in tools.</string>
+                    </property>
+                </widget>
+                <widget class="QComboBox" row="8" column="4" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>Style</cstring>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="3" column="3">
+                    <property name="name">
+                        <cstring>TextLabel3_2_3</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Chart samples</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>HistorySize</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Number of samples to keep in line and barcharts by default.</string>
+                    </property>
+                </widget>
+                <widget class="QSpinBox" row="3" column="4">
+                    <property name="name">
+                        <cstring>ChartSamples</cstring>
+                    </property>
+                    <property name="suffix">
+                        <string></string>
+                    </property>
+                    <property name="maxValue">
+                        <number>1000</number>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="3" column="5">
+                    <property name="name">
+                        <cstring>UnlimitedSamples</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Unlimited</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Save unlimited number of samples. Can large amounts of consume memory.</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="4" column="3">
+                    <property name="name">
+                        <cstring>TextLabel3_2_3_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Display samples</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>HistorySize</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Number of samples to display in line and barcharts by default.</string>
+                    </property>
+                </widget>
+                <widget class="QSpinBox" row="4" column="4">
+                    <property name="name">
+                        <cstring>DisplaySamples</cstring>
+                    </property>
+                    <property name="suffix">
+                        <string></string>
+                    </property>
+                    <property name="maxValue">
+                        <number>1000</number>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="4" column="5">
+                    <property name="name">
+                        <cstring>AllSamples</cstring>
+                    </property>
+                    <property name="text">
+                        <string>All</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Display all available samples</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="4" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>DiskCaching</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Use Disk Caching</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Use Disk Caching of ObjectLists and Synonyms</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="8" column="1">
+                    <property name="name">
+                        <cstring>LocaleLabel</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>1</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>Translation</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Which translation locale to use for this program. Must restart to have effect.</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="8" column="2">
+                    <property name="name">
+                        <cstring>Locale</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>4</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="6" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>DisplayGrid</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Display gridlines in results</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Show grid lines in output results table.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="7" column="1" rowspan="1" colspan="2">
+                    <property name="name">
+                        <cstring>ToadBindings</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Prefer TOAD key bindings</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Use TOAD keybindings instead of classic TOra.</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>PluginBrowse</sender>
+        <signal>clicked()</signal>
+        <receiver>toGlobalSettingUI</receiver>
+        <slot>pluginBrowse()</slot>
+    </connection>
+    <connection>
+        <sender>SQLBrowse</sender>
+        <signal>clicked()</signal>
+        <receiver>toGlobalSettingUI</receiver>
+        <slot>pluginBrowse()</slot>
+    </connection>
+    <connection>
+        <sender>SQLBrowse</sender>
+        <signal>clicked()</signal>
+        <receiver>toGlobalSettingUI</receiver>
+        <slot>sqlBrowse()</slot>
+    </connection>
+    <connection>
+        <sender>HelpBrowse</sender>
+        <signal>clicked()</signal>
+        <receiver>toGlobalSettingUI</receiver>
+        <slot>helpBrowse()</slot>
+    </connection>
+    <connection>
+        <sender>HelpBrowse_2</sender>
+        <signal>clicked()</signal>
+        <receiver>toGlobalSettingUI</receiver>
+        <slot>sessionBrowse()</slot>
+    </connection>
+    <connection>
+        <sender>UnlimitedSamples</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>ChartSamples</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>AllSamples</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>DisplaySamples</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>CustomSQL</tabstop>
+    <tabstop>SQLBrowse</tabstop>
+    <tabstop>HelpDirectory</tabstop>
+    <tabstop>HelpBrowse</tabstop>
+    <tabstop>DefaultSession</tabstop>
+    <tabstop>HelpBrowse_2</tabstop>
+    <tabstop>PluginDirectory</tabstop>
+    <tabstop>PluginBrowse</tabstop>
+    <tabstop>ChangeConnection</tabstop>
+    <tabstop>SavePassword</tabstop>
+    <tabstop>IncludeDB</tabstop>
+    <tabstop>RestoreSession</tabstop>
+    <tabstop>DesktopAware</tabstop>
+    <tabstop>AntialiaseFonts</tabstop>
+    <tabstop>DockToolbar</tabstop>
+    <tabstop>Statusbar</tabstop>
+    <tabstop>MaximizeMain</tabstop>
+    <tabstop>ToolsLeft</tabstop>
+    <tabstop>Locale</tabstop>
+    <tabstop>ConnectHistory</tabstop>
+    <tabstop>Status</tabstop>
+    <tabstop>HistorySize</tabstop>
+    <tabstop>ChartSamples</tabstop>
+    <tabstop>UnlimitedSamples</tabstop>
+    <tabstop>DisplaySamples</tabstop>
+    <tabstop>AllSamples</tabstop>
+    <tabstop>SizeUnit</tabstop>
+    <tabstop>Refresh</tabstop>
+    <tabstop>DefaultFormat</tabstop>
+    <tabstop>Style</tabstop>
+</tabstops>
+<slots>
+    <slot>helpBrowse()</slot>
+    <slot>sessionBrowse()</slot>
+    <slot>pluginBrowse()</slot>
+    <slot>sqlBrowse()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tohelp.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohelp.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohelp.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,750 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "tohelp.h"
+#include "tohtml.h"
+#include "tomain.h"
+#include "toresultview.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#include <kfiledialog.h>
+#include <khtml_part.h>
+#endif
+
+#include <qaccel.h>
+#include <qcombobox.h>
+#include <qdir.h>
+#include <qfiledialog.h>
+#include <qfileinfo.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qmessagebox.h>
+#include <qprogressbar.h>
+#include <qpushbutton.h>
+#include <qregexp.h>
+#include <qsplitter.h>
+#include <qtabwidget.h>
+#include <qtextbrowser.h>
+#include <qtextview.h>
+#include <qtimer.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qvbox.h>
+
+#include "tohelp.moc"
+#include "tohelpaddfileui.moc"
+#include "tohelpsetupui.moc"
+
+#ifdef TO_KDE
+#include "tohelpbrowser.h"
+#include "tohelpbrowser.moc"
+
+toHelpBrowser::toHelpBrowser(QWidget *parent, const char *name)
+        : KHTMLPart(parent, name)
+{
+    connect(browserExtension(),
+            SIGNAL(openURLRequest(const KURL &, const KParts::URLArgs &)),
+            this,
+            SLOT(openURLRequest(const KURL &, const KParts::URLArgs &)));
+}
+
+void toHelpBrowser::openURLRequest(const KURL &url, const KParts::URLArgs &)
+{
+    emit textChanged();
+    openURL(url);
+}
+
+bool toHelpBrowser::openURL(const KURL &url)
+{
+    if (Forward.size() > 0)
+    {
+        emit forwardAvailable(false);
+        Forward.clear();
+    }
+    if (Backward.size() == 1)
+        emit backwardAvailable(true);
+    toPush(Backward, url.url());
+    bool ret = KHTMLPart::openURL(url);
+    emit textChanged();
+    return ret;
+}
+
+void toHelpBrowser::backward(void)
+{
+    toPush(Forward, toPop(Backward));
+    QString url = (*Backward.rbegin());
+    if (Forward.size() == 1)
+        emit forwardAvailable(true);
+    if (Backward.size() == 1)
+        emit backwardAvailable(false);
+    KHTMLPart::openURL(url);
+    emit textChanged();
+}
+
+void toHelpBrowser::forward(void)
+{
+    QString url = toPop(Forward);
+    if (Forward.empty())
+        emit forwardAvailable(false);
+    if (Backward.size() == 1)
+        emit backwardAvailable(true);
+    toPush(Backward, url);
+    KHTMLPart::openURL(url);
+    emit textChanged();
+}
+
+QString toHelpBrowser::source(void)
+{
+    if ( Backward.empty() )
+        return QString::null;
+    return (*Backward.rbegin());
+}
+
+#endif
+
+toHelp *toHelp::Window;
+
+class toHelpAddFile : public toHelpAddFileUI
+{
+public:
+    toHelpAddFile(QWidget *parent, const char *name = 0)
+            : toHelpAddFileUI(parent, name, true)
+    {
+        OkButton->setEnabled(false);
+        toHelp::connectDialog(this);
+    }
+    virtual void browse(void)
+    {
+        QString filename = toOpenFilename(Filename->text(), QString::fromLatin1("toc.htm*"), this);
+        if (!filename.isEmpty())
+            Filename->setText(filename);
+    }
+    virtual void valid(void)
+    {
+        if (Filename->text().isEmpty() || Root->text().isEmpty())
+            OkButton->setEnabled(false);
+        else
+            OkButton->setEnabled(true);
+    }
+};
+
+class toHelpPrefs : public toHelpSetupUI, public toSettingTab
+{
+    toTool *Tool;
+public:
+    toHelpPrefs(toTool *tool, QWidget *parent, const char *name = 0)
+            : toHelpSetupUI(parent, name), toSettingTab("additionalhelp.html"), Tool(tool)
+    {
+        int tot = Tool->config("Number", "-1").toInt();
+        if (tot != -1)
+        {
+            for (int i = 0;i < tot;i++)
+            {
+                QString num = QString::number(i);
+                QString root = Tool->config(num.latin1(), "");
+                num += QString::fromLatin1("file");
+                QString file = Tool->config(num.latin1(), "");
+                new QListViewItem(FileList, root, file);
+            }
+        }
+    }
+    virtual void saveSetting(void)
+    {
+        int i = 0;
+        for (QListViewItem *item = FileList->firstChild();item;item = item->nextSibling())
+        {
+            QString nam = QString::number(i);
+            Tool->setConfig(nam.latin1(), item->text(0));
+            nam += QString::fromLatin1("file");
+            Tool->setConfig(nam.latin1(), item->text(1));
+            i++;
+        }
+        Tool->setConfig("Number", QString::number(i));
+        delete toHelp::Window;
+    }
+    virtual void addFile(void)
+    {
+        toHelpAddFile file(this);
+        if (file.exec())
+            new QListViewItem(FileList, file.Root->text(), file.Filename->text());
+    }
+    virtual void delFile(void)
+    {
+        delete FileList->selectedItem();
+    }
+    virtual void oracleManuals(void)
+    {
+        QString filename = toOpenFilename(QString::null, QString::fromLatin1("*index.htm*"), this);
+        try
+        {
+            toHtml file(toReadFile(filename));
+            QString dsc;
+            bool inDsc = false;
+            QRegExp isToc(QString::fromLatin1("toc\\.html?$"));
+            while (!file.eof())
+            {
+                file.nextToken();
+                if (file.isTag())
+                {
+                    if (file.open() && !strcmp(file.tag(), "a"))
+                    {
+                        QString href = toHelp::path(filename);
+                        href += QString::fromLatin1(file.value("href"));
+                        if (!href.isEmpty() &&
+                                !dsc.isEmpty() &&
+                                href.find(isToc) >= 0 &&
+                                file.value("title"))
+                        {
+                            new QListViewItem(FileList, dsc.simplifyWhiteSpace(), href);
+                            inDsc = false;
+                            dsc = QString::null;
+                        }
+                    }
+                    else if (file.open() && (!strcmp(file.tag(), "dd") || !strcmp(file.tag(), "book")))
+                    {
+                        dsc = QString::null;
+                        inDsc = true;
+                    }
+                }
+                else if (inDsc)
+                    dsc += QString::fromLatin1(file.text());
+            }
+        }
+        catch (const QString &str)
+        {
+            TOMessageBox::warning(toMainWidget(), qApp->translate("toHelpPrefs", "File error"), str);
+        }
+    }
+};
+
+QWidget *toHelpTool::configurationTab(QWidget *parent)
+{
+    return new toHelpPrefs(this, parent);
+}
+
+void toHelpTool::displayHelp(void)
+{
+    QWidget *cur = qApp->focusWidget();
+    while (cur)
+    {
+        QDialog *dlg = dynamic_cast<QDialog *>(cur);
+        if (dlg)
+        {
+            toHelp::displayHelp(dlg);
+            return ;
+        }
+        cur = cur->parentWidget();
+    }
+    // No dialog found
+    toHelp::displayHelp();
+}
+
+static toHelpTool HelpTool;
+
+toHelp::toHelp(QWidget *parent, const char *name, bool modal)
+        : QDialog(parent, name, modal,
+                  WStyle_Customize | WStyle_NormalBorder |
+                  WStyle_Title | WStyle_SysMenu |
+                  WStyle_Minimize | WStyle_Maximize)
+{
+    if (!modal)
+        Window = this;
+    QBoxLayout *l = new QVBoxLayout(this);
+    QToolBar *toolbar = toAllocBar(this, tr("Help Navigation"));
+    l->addWidget(toolbar);
+
+    QSplitter *splitter = new QSplitter(Horizontal, this);
+    l->addWidget(splitter);
+
+    QTabWidget *tabs = new QTabWidget(splitter);
+    Sections = new toListView(tabs);
+    Sections->addColumn(tr("Contents"));
+    Sections->setSorting( -1);
+    Sections->setRootIsDecorated(true);
+
+    tabs->addTab(Sections, tr("Contents"));
+    QVBox *box = new QVBox(tabs);
+    tabs->addTab(box, tr("Search"));
+    SearchLine = new QLineEdit(box);
+    connect(SearchLine, SIGNAL(returnPressed()), this, SLOT(search()));
+    Manuals = new QComboBox(box);
+    Manuals->insertItem(tr("All manuals"));
+    Result = new toListView(box);
+    Result->setSorting(0);
+    Result->addColumn(tr("Result"));
+    Result->addColumn(tr("Manual"));
+    Result->setSelectionMode(QListView::Single);
+    Sections->setSelectionMode(QListView::Single);
+    connect(Sections, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeContent(QListViewItem *)));
+    connect(Result, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeContent(QListViewItem *)));
+
+#ifdef TO_KDE
+
+    Help = new toHelpBrowser(splitter);
+#else
+
+    Help = new QTextBrowser(splitter);
+    Help->mimeSourceFactory()->addFilePath(path());
+#endif
+    // Help->setSizePolicy(QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred));
+    setCaption(tr("Help Browser"));
+
+    connect(Help, SIGNAL(textChanged(void)),
+            this, SLOT(removeSelection(void)));
+
+    QToolButton *button;
+    button = new QToolButton(LeftArrow, toolbar);
+    connect(Help, SIGNAL(backwardAvailable(bool)),
+            button, SLOT(setEnabled(bool)));
+    button->setEnabled(false);
+    connect(button, SIGNAL(clicked(void)),
+            Help, SLOT(backward(void)));
+    QToolTip::add
+        (button, tr("Backward one help page"));
+
+    button = new QToolButton(RightArrow, toolbar);
+    connect(Help, SIGNAL(forwardAvailable(bool)),
+            button, SLOT(setEnabled(bool)));
+    button->setEnabled(false);
+    connect(button, SIGNAL(clicked(void)),
+            Help, SLOT(forward(void)));
+    QToolTip::add
+        (button, tr("Forward one help page"));
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    std::map<QString, QString> Dsc;
+    Dsc[tr(TOAPPNAME " manual")] = toHelpPath();
+    int tot = HelpTool.config("Number", "-1").toInt();
+    if (tot != -1)
+    {
+        for (int i = 0;i < tot;i++)
+        {
+            QString num = QString::number(i);
+            QString dsc = HelpTool.config(num.latin1(), "");
+            num += QString::fromLatin1("file");
+            QString file = HelpTool.config(num.latin1(), "");
+            Dsc[dsc] = file;
+        }
+    }
+
+    splitter->setResizeMode(tabs, QSplitter::KeepSize);
+    setGeometry(x(), y(), std::max(width(), 640), std::max(height(), 480));
+
+    QListViewItem *lastParent = NULL;
+    for (std::map<QString, QString>::iterator i = Dsc.begin();i != Dsc.end();i++)
+    {
+        try
+        {
+            QString path = toHelp::path((*i).second);
+            QString filename = (*i).second;
+            QListViewItem *parent;
+            if ((*i).first == tr("TOra manual"))
+            {
+                parent = new QListViewItem(Sections, NULL, (*i).first, QString::null, filename);
+                if (!lastParent)
+                    lastParent = parent;
+            }
+            else
+                parent = lastParent = new QListViewItem(Sections, lastParent, (*i).first,
+                                                        QString::null, filename);
+            toHtml file(toReadFile(filename));
+            bool inA = false;
+            QString dsc;
+            QCString href;
+            QListViewItem *last = NULL;
+            while (!file.eof())
+            {
+                file.nextToken();
+
+                if (!file.isTag())
+                {
+                    if (inA)
+                    {
+                        dsc += QString::fromLatin1(file.text());
+                        dsc = dsc.simplifyWhiteSpace();
+                    }
+                }
+                else
+                {
+                    const char *c = file.tag();
+                    if (!strcmp(c, "a"))
+                    {
+                        if (file.open())
+                        {
+                            href = file.value("href");
+                            if (!href.isEmpty())
+                                inA = true;
+                        }
+                        else
+                        {
+                            if (inA &&
+                                    !dsc.isEmpty() &&
+                                    !href.isEmpty())
+                            {
+                                if (href.find("//") < 0 &&
+                                        href.find("..") < 0)
+                                {
+                                    last = new QListViewItem(parent, last, dsc);
+                                    filename = path;
+                                    filename += QString::fromLatin1(href);
+                                    last->setText(2, filename);
+                                }
+                                dsc = "";
+                            }
+                            inA = false;
+                        }
+                    }
+                    else if (!strcmp(c, "dl"))
+                    {
+                        if (file.open())
+                        {
+                            if (!last)
+                                last = new QListViewItem(parent, NULL, QString::fromLatin1("--------"));
+                            parent = last;
+                            last = NULL;
+                        }
+                        else
+                        {
+                            last = parent;
+                            parent = parent->parent();
+                            if (!parent)
+                                throw tr("Missing parent, unbalanced dl in help file content");
+                        }
+                    }
+                }
+            }
+        }
+        TOCATCH
+    }
+    for (QListViewItem *item = Sections->firstChild();item;item = item->nextSibling())
+        Manuals->insertItem(item->text(0));
+
+    Progress = new QProgressBar(box);
+    Progress->setTotalSteps(Dsc.size());
+    Progress->hide();
+
+    Searching = false;
+}
+
+toHelp::~toHelp()
+{
+    if (Window == this)
+        Window = NULL;
+}
+
+QString toHelp::path(const QString &path)
+{
+    QString cur;
+    if (path.isNull())
+        cur = toHelpPath();
+    else
+        cur = path;
+    cur.replace(QRegExp(QString::fromLatin1("[^/]+$")), QString::null);
+    return cur;
+}
+
+void toHelp::displayHelp(const QString &context, QWidget *parent)
+{
+    toHelp *window;
+    if (!Window || parent)
+        window = new toHelp(NULL, tr("Help window"), parent);
+    else
+        window = Window;
+    QString file = path();
+
+    file += context;
+#ifdef TO_KDE
+
+    window->Help->openURL(file);
+#else
+
+    if (context.find("htm") >= 0)
+        window->Help->setTextFormat(RichText);
+    else
+        window->Help->setTextFormat(AutoText);
+    window->Help->setSource(file);
+#  if 0 // Necessary?
+
+    window->removeSelection();
+#  endif
+#endif
+
+    if (parent)
+    {
+        window->exec();
+        delete window;
+    }
+    else
+        window->show();
+}
+
+void toHelp::displayHelp(QWidget *parent)
+{
+    QWidget *cur = qApp->focusWidget();
+    while (cur)
+    {
+        toHelpContext *ctx = dynamic_cast<toHelpContext *>(cur);
+        if (ctx && !ctx->context().isEmpty())
+        {
+            toHelp::displayHelp(ctx->context(), parent);
+            return ;
+        }
+        cur = cur->parentWidget();
+    }
+    toHelp::displayHelp(QString::fromLatin1("toc.html"), parent);
+}
+
+void toHelp::connectDialog(QDialog *dialog)
+{
+    QAccel *a = new QAccel(dialog);
+    a->connectItem(a->insertItem(toKeySequence(tr("F1", "Dialog|Help"))),
+                   &HelpTool,
+                   SLOT(displayHelp()));
+}
+
+void toHelp::changeContent(QListViewItem *item)
+{
+#ifdef TO_KDE
+    Help->openURL(item->text(2));
+#else
+
+    disconnect(Help, SIGNAL(textChanged(void)),
+               this, SLOT(removeSelection(void)));
+
+    if (item->text(2).find("htm") >= 0)
+        Help->setTextFormat(RichText);
+    else
+        Help->setTextFormat(AutoText);
+    if (!item->text(2).isEmpty())
+        Help->setSource(item->text(2));
+
+    connect(Help, SIGNAL(textChanged(void)),
+            this, SLOT(removeSelection(void)));
+#endif
+}
+
+void toHelp::search(void)
+{
+    if (Searching)
+        return ;
+    Result->clear();
+    QStringList words = QStringList::split(QRegExp(QString::fromLatin1("\\s+")), SearchLine->text().lower());
+    if (words.count() == 0)
+        return ;
+    QRegExp strip(QString::fromLatin1("\\d+-\\d+\\s*,\\s+"));
+    QRegExp stripend(QString::fromLatin1(",$"));
+    int steps = 1;
+    Progress->setProgress(0);
+    Progress->show();
+    Searching = true;
+    qApp->processEvents();
+    for (QListViewItem *parent = Sections->firstChild();parent;parent = parent->nextSibling())
+    {
+        if (Manuals->currentItem() == 0 || parent->text(0) == Manuals->currentText())
+        {
+            QString path = toHelp::path(parent->text(2));
+            QString filename = path;
+            filename.append(QString::fromLatin1("index.html"));
+            try
+            {
+                toHtml file(toReadFile(filename));
+                std::list<QString> Context;
+                bool inDsc = false;
+                bool aRestart = true;
+                QCString dsc;
+                QCString href;
+                while (!file.eof())
+                {
+                    file.nextToken();
+                    if (file.isTag())
+                    {
+                        if (file.open())
+                        {
+                            if (!strcmp(file.tag(), "a"))
+                            {
+                                href = file.value("href");
+                                if (href[0] == '#')
+                                    href = "";
+                                else if (href.find("..") >= 0)
+                                    href = "";
+                            }
+                            else if (!strcmp(file.tag(), "dd"))
+                            {
+                                inDsc = true;
+                                aRestart = false;
+                                href = dsc = "";
+                            }
+                            else if (!strcmp(file.tag(), "dl"))
+                            {
+                                toPush(Context, QString::fromLatin1(dsc.simplifyWhiteSpace()));
+                                href = dsc = "";
+                                inDsc = true;
+                            }
+                        }
+                        else if (!strcmp(file.tag(), "a"))
+                        {
+                            if (!dsc.isEmpty() &&
+                                    !href.isEmpty())
+                            {
+                                QString tmp;
+                                for (std::list<QString>::iterator i = Context.begin();i != Context.end();i++)
+                                    if (i != Context.begin() && !(*i).isEmpty())
+                                    {
+                                        tmp += *i;
+                                        tmp += QString::fromLatin1(", ");
+                                    }
+                                tmp += QString::fromLatin1(dsc.simplifyWhiteSpace());
+                                QString url = path;
+                                url += QString::fromLatin1(href);
+                                aRestart = true;
+
+                                bool incl = true;
+                                {
+                                    for (size_t i = 0;i < words.count();i++)
+                                        if (!tmp.contains(words[i], false))
+                                        {
+                                            incl = false;
+                                            break;
+                                        }
+                                }
+
+                                if (incl)
+                                {
+                                    tmp.replace(strip, QString::fromLatin1(" "));
+                                    tmp.replace(stripend, QString::fromLatin1(" "));
+                                    QListViewItem *item = new toResultViewItem(Result, NULL, tmp.simplifyWhiteSpace());
+                                    item->setText(1, parent->text(0));
+                                    item->setText(2, url);
+                                }
+                                href = "";
+                            }
+                        }
+                        else if (!strcmp(file.tag(), "dl"))
+                        {
+                            toPop(Context);
+                        }
+                    }
+                    else if (inDsc)
+                    {
+                        dsc += file.text();
+                    }
+                }
+            }
+            TOCATCH
+        }
+        Progress->setProgress(steps);
+        steps++;
+        qApp->processEvents();
+    }
+    Progress->hide();
+    Searching = false;
+}
+
+void toHelp::setSelection(toListView *lst, const QString &source)
+{
+    disconnect(lst, SIGNAL(selectionChanged(QListViewItem *)),
+               this, SLOT(changeContent(QListViewItem *)));
+
+    bool any = false;
+
+    QString t = source;
+    t.replace(QRegExp(QString::fromLatin1("^file:")), QString::fromLatin1(""));
+
+    QListViewItem *next = NULL;
+    for (QListViewItem *item = lst->firstChild();item;item = next)
+    {
+
+        if ((item->text(2) == t) != bool(item->isSelected()))
+        {
+            if (item->text(2) == t)
+            {
+                any = true;
+                lst->setSelected(item, true);
+                lst->ensureItemVisible(item);
+                for (QListViewItem *parent = item->parent();parent;parent = parent->parent())
+                    lst->setOpen(parent, true);
+                break;
+            }
+            else
+                lst->setSelected(item, false);
+        }
+
+        if (item->firstChild())
+            next = item->firstChild();
+        else if (item->nextSibling())
+        {
+            next = item->nextSibling();
+        }
+        else
+        {
+            next = item;
+            do
+            {
+                next = next->parent();
+            }
+            while (next && !next->nextSibling());
+            if (next)
+                next = next->nextSibling();
+        }
+    }
+
+    connect(lst, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeContent(QListViewItem *)));
+
+    if (!any)
+    {
+        QString t = source;
+        t.replace(QRegExp(QString::fromLatin1("#[^#]*$")), QString::null);
+        if (t != source)
+            setSelection(lst, t);
+    }
+}
+
+void toHelp::removeSelection(void)
+{
+    setSelection(Sections, Help->source());
+    setSelection(Result, Help->source());
+}

Added: kde-extras/tora/branches/upstream/current/src/tohelp.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohelp.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohelp.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,261 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOHELP_H
+#define TOHELP_H
+
+#include "config.h"
+
+#include <qdialog.h>
+
+#include <map>
+#include <algorithm>
+
+class toListView;
+class QLineEdit;
+class QTextBrowser;
+class QListViewItem;
+class QProgressBar;
+class toHelpBrowser;
+class QToolButton;
+class toHelpPrefs;
+class QComboBox;
+
+/** This class is used to indicate a help context of an object. When the current context
+ * is to be determined you start at the widget that currently has focus and walk upwards
+ * to it's parent until you find a widget that also inherits this class which specify the
+ * context of all underlying widgets.
+ */
+
+class toHelpContext
+{
+    /**
+     * The current context.
+     */
+    QString Context;
+public:
+    /** Create a context.
+     * @param file File in the help directory that describes the current context.
+     */
+    toHelpContext(const QString &file)
+            : Context(file)
+    { }
+    virtual ~toHelpContext()
+    { }
+    /**
+     * Get this context
+     * @return The location of a file that describes the current context.
+     */
+    virtual const QString &context(void) const
+    {
+        return Context;
+    }
+};
+
+#include "totool.h"
+
+/**
+ * Additional help tool. Also used as object to connect to to display help
+ * for modal dialogs. Only to be used internally.
+ * @internal
+ */
+class toHelpTool : public toTool
+{
+    Q_OBJECT
+public:
+    toHelpTool()
+            : toTool(501, "Additional Help")
+    { }
+    virtual QWidget *toolWindow(QWidget *, toConnection &)
+    {
+        return NULL;
+    }
+    virtual QWidget *configurationTab(QWidget *parent);
+    virtual void closeWindow(toConnection &connection){};
+public slots:
+    void displayHelp(void);
+};
+
+/**
+ * Display a help browser. A help manual consists of HTML pages where at least
+ * two pages are mandatory.
+ *
+ * The first one is toc.html which is parsed for links which are added to the left
+ * pane tree view. Indentation is handled with the tag dl which open and close a
+ * tree branch.
+ *
+ * The following file would result in two main headings with the first one having
+ * one leaf widget as well.
+ *
+<pre>
+<A HREF="first.html">1 Head</A><BR>
+<DL>
+<A HREF="second.html>1.1 Head Head</A></BR>
+</DL>
+<A HREF="third.html">2 Foot</A><BR>
+</pre>
+ * 
+ * The second file which is optional and should be called index.htm if it exists
+ * should contain a file with links to keywords in the manual. This must be present
+ * for search to be possible in the manual. Keywords are indicated by the <dd> tag
+ * in these files as well as a link to where the keyword is described. Indentation
+ * is possible using the <dl> tag is possible here as well.
+ *
+ * The following will make the keywords "Head", "Head, Head Head" and "Foot" available.
+<pre>
+<DD><A HREF="first.html">Head</A><BR>
+<DL>
+    <DD><A HREF="second.html">Head Head</A><BR>
+</DL>
+<DD><A HREF="third.html">Foot</A>
+</pre>
+ * The reason the files look this way is that this way they are compatible with
+ * the Oracle manuals from Oracle Corporation and these can be browsed as well in
+ * this help viewer.
+ */
+
+class toHelp : public QDialog
+{
+    Q_OBJECT
+
+    /** @internal
+     * Pointer to open helpwindow if available, otherwise NULL
+     */
+
+    static toHelp *Window;
+
+    /**
+     * True if you are currently searching. You can't close the window while search, would
+     * coredump.
+     */
+    bool Searching;
+
+    /**
+     * List containing the manuals and their sections, compiled from the toc.htm files.
+     * @see toHelp
+     */
+    toListView *Sections;
+    /**
+     * List containing the search result of the latest search. Search reads the index.htm files.
+     */
+    toListView *Result;
+    /**
+     * The line containing the search text.
+     */
+    QLineEdit *SearchLine;
+    /**
+     * Manuals to include in search.
+     */
+    QComboBox *Manuals;
+#ifdef TO_KDE
+    /**
+     * Displays the actual help window.
+     */
+    toHelpBrowser *Help;
+#else
+
+    QTextBrowser *Help;
+#endif
+    /**
+     * Display progress of current search.
+     */
+    QProgressBar *Progress;
+
+    /**
+     * Set selection and also update selected item in list if any item matches the
+     * selected location.
+     * @param lst Listview to update selected item in.
+     * @param str Location of next help text.
+     */
+    virtual void setSelection(toListView *lst, const QString &str);
+    /**
+     * Reimplemented for internal reasons.
+     */
+    virtual void closeEvent(QCloseEvent *e)
+    {
+        if (!Searching)
+            QWidget::closeEvent(e);
+    }
+private slots:
+    /** Initiate a search with the parameters in the internal widgets.
+     * @internal
+     */
+    void search(void);
+    /** Remove the current selection in the sections and result lists.
+     * @internal
+     */
+    void removeSelection(void);
+    /** Item selected in left pane. Change contents of help viewer.
+     * @internal
+     */
+    void changeContent(QListViewItem *);
+public:
+    /**
+     * Create help widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     * @param modal If dialog is for a modal dialog or not
+     */
+    toHelp(QWidget *parent, const char *name, bool modal = true);
+    /** Help function to get a clean path from a path string. Strips trailing / etc.
+     * @param path Path to strip.
+     * @return Stripped path in string.
+     */
+    static QString path(const QString &path = QString::null);
+    virtual ~toHelp();
+    /** Display a specific help context in the internal manual. Pops up a help window that
+     * displays the selected topic.
+     * @param context Context to diaplay.
+     * @param parent If NULL use modal dialog and main window.
+     */
+    static void displayHelp(const QString &context, QWidget *parent = NULL);
+    /** Display a specific help context in the internal manual. The context is derived from
+     * the widget that currently holds the focus.
+     * @param parent If NULL use modal dialog and main window.
+     */
+    static void displayHelp(QWidget *parent = NULL);
+    /** Connect the F1 key to display help for a modal dialog. Don't use this directly,
+     * instead call displayHelp directly and bind Key_F1 to that call. This is because the
+     * help in modal dialogs are cludgy at best and should be avoided if possible.
+     * @param dialog Dialog to connect accelerator to.
+     */
+    static void connectDialog(QDialog *dialog);
+
+    friend class toHelpPrefs;
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,123 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tohelpaddfileui.ui'
+**
+** Created: Tue Sep 18 08:21:28 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tohelpaddfileui.h"
+
+#include <qvariant.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qframe.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toHelpAddFileUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toHelpAddFileUI::toHelpAddFileUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toHelpAddFileUI" );
+    toHelpAddFileUILayout = new QGridLayout( this, 1, 1, 11, 6, "toHelpAddFileUILayout"); 
+
+    Filename = new QLineEdit( this, "Filename" );
+
+    toHelpAddFileUILayout->addMultiCellWidget( Filename, 3, 3, 0, 1 );
+
+    Browse = new QPushButton( this, "Browse" );
+
+    toHelpAddFileUILayout->addWidget( Browse, 3, 2 );
+
+    Root = new QLineEdit( this, "Root" );
+
+    toHelpAddFileUILayout->addMultiCellWidget( Root, 1, 1, 0, 2 );
+
+    Line1 = new QFrame( this, "Line1" );
+    Line1->setFrameStyle( QFrame::HLine | QFrame::Sunken );
+
+    toHelpAddFileUILayout->addMultiCellWidget( Line1, 4, 4, 0, 2 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toHelpAddFileUILayout->addItem( Spacer1, 5, 0 );
+
+    PushButton2_2 = new QPushButton( this, "PushButton2_2" );
+
+    toHelpAddFileUILayout->addWidget( PushButton2_2, 5, 2 );
+
+    OkButton = new QPushButton( this, "OkButton" );
+    OkButton->setDefault( TRUE );
+
+    toHelpAddFileUILayout->addWidget( OkButton, 5, 1 );
+
+    TextLabel1_2 = new QLabel( this, "TextLabel1_2" );
+
+    toHelpAddFileUILayout->addMultiCellWidget( TextLabel1_2, 2, 2, 0, 2 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+
+    toHelpAddFileUILayout->addMultiCellWidget( TextLabel1, 0, 0, 0, 2 );
+    languageChange();
+    resize( QSize(434, 164).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( OkButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton2_2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( Browse, SIGNAL( clicked() ), this, SLOT( browse() ) );
+    connect( Root, SIGNAL( textChanged(const QString&) ), this, SLOT( valid() ) );
+    connect( Filename, SIGNAL( textChanged(const QString&) ), this, SLOT( valid() ) );
+
+    // tab order
+    setTabOrder( Root, Filename );
+    setTabOrder( Filename, Browse );
+    setTabOrder( Browse, OkButton );
+    setTabOrder( OkButton, PushButton2_2 );
+
+    // buddies
+    TextLabel1_2->setBuddy( Root );
+    TextLabel1->setBuddy( Root );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toHelpAddFileUI::~toHelpAddFileUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toHelpAddFileUI::languageChange()
+{
+    setCaption( tr( "Add help directory" ) );
+    Browse->setText( tr( "&Browse" ) );
+    PushButton2_2->setText( tr( "Canel" ) );
+    OkButton->setText( tr( "&Ok" ) );
+    TextLabel1_2->setText( tr( "&Table of contents file" ) );
+    TextLabel1->setText( tr( "&Title" ) );
+}
+
+void toHelpAddFileUI::browse()
+{
+    qWarning( "toHelpAddFileUI::browse(): Not implemented yet" );
+}
+
+void toHelpAddFileUI::valid()
+{
+    qWarning( "toHelpAddFileUI::valid(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,55 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tohelpaddfileui.ui'
+**
+** Created: Tue Sep 18 08:21:28 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOHELPADDFILEUI_H
+#define TOHELPADDFILEUI_H
+
+#include <qvariant.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QLineEdit;
+class QPushButton;
+class QFrame;
+class QLabel;
+
+class toHelpAddFileUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toHelpAddFileUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toHelpAddFileUI();
+
+    QLineEdit* Filename;
+    QPushButton* Browse;
+    QLineEdit* Root;
+    QFrame* Line1;
+    QPushButton* PushButton2_2;
+    QPushButton* OkButton;
+    QLabel* TextLabel1_2;
+    QLabel* TextLabel1;
+
+public slots:
+    virtual void browse();
+    virtual void valid();
+
+protected:
+    QGridLayout* toHelpAddFileUILayout;
+    QSpacerItem* Spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOHELPADDFILEUI_H

Added: kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohelpaddfileui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,187 @@
+<!DOCTYPE UI><UI>
+<class>toHelpAddFileUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toHelpAddFileUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>434</width>
+            <height>164</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Add help directory</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="3"  column="0"  rowspan="1"  colspan="2" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Filename</cstring>
+            </property>
+        </widget>
+        <widget row="3"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Browse</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Browse</string>
+            </property>
+        </widget>
+        <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Root</cstring>
+            </property>
+        </widget>
+        <widget row="4"  column="0"  rowspan="1"  colspan="3" >
+            <class>Line</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Line1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+        </widget>
+        <spacer row="5"  column="0" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="5"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton2_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Canel</string>
+            </property>
+        </widget>
+        <widget row="5"  column="1" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>OkButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="2"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Table of contents file</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Root</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Title</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Root</cstring>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>OkButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toHelpAddFileUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2_2</sender>
+        <signal>clicked()</signal>
+        <receiver>toHelpAddFileUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>Browse</sender>
+        <signal>clicked()</signal>
+        <receiver>toHelpAddFileUI</receiver>
+        <slot>browse()</slot>
+    </connection>
+    <connection>
+        <sender>Root</sender>
+        <signal>textChanged(const QString&amp;)</signal>
+        <receiver>toHelpAddFileUI</receiver>
+        <slot>valid()</slot>
+    </connection>
+    <connection>
+        <sender>Filename</sender>
+        <signal>textChanged(const QString&amp;)</signal>
+        <receiver>toHelpAddFileUI</receiver>
+        <slot>valid()</slot>
+    </connection>
+    <slot access="public">browse()</slot>
+    <slot access="public">valid()</slot>
+</connections>
+<tabstops>
+    <tabstop>Root</tabstop>
+    <tabstop>Filename</tabstop>
+    <tabstop>Browse</tabstop>
+    <tabstop>OkButton</tabstop>
+    <tabstop>PushButton2_2</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tohelpbrowser.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohelpbrowser.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohelpbrowser.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,102 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOHELPBROWSER_H
+#define TOHELPBROWSER_H
+
+#include "config.h"
+
+#include <list>
+#include <khtml_part.h>
+
+class KURL;
+
+/**
+ * Widget used to display HTML of help pages.
+ */
+
+class toHelpBrowser : public KHTMLPart
+{
+    Q_OBJECT
+
+    /** List of backward history. The current page is at the end of the list.
+     */
+    std::list<QString> Backward;
+    /** List of forward history if you have started walking backwards.
+     */
+    std::list<QString> Forward;
+private slots:
+    /** Reimplemented for internal reasons.
+     */
+    void openURLRequest(const KURL &url, const KParts::URLArgs &);
+public:
+    /** Create a help browser.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toHelpBrowser(QWidget *parent, const char *name = NULL);
+    /** Open an URL in this widget.
+     * @param url URL to open.
+     * @return Success of operator.
+     */
+    virtual bool openURL(const KURL &url);
+    /** Get source of URL.
+     * @return String containing the current localtion.
+     */
+    QString source(void);
+public slots:
+    /** Go forward if available.
+     */
+    void forward(void);
+    /** Go backward if available.
+     */
+    void backward(void);
+signals:
+    /** Change availability of backward history.
+     * @param avail Wether history is available.
+     */
+    void backwardAvailable(bool avail);
+    /** Change availability of forward history.
+     * @param avail Wether history is available.
+     */
+    void forwardAvailable(bool avail);
+    /** The contents of the browser changed.
+     */
+    void textChanged(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tohelpsetupui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohelpsetupui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohelpsetupui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,108 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tohelpsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:28 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tohelpsetupui.h"
+
+#include <qvariant.h>
+#include <qheader.h>
+#include <qlistview.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toHelpSetupUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toHelpSetupUI::toHelpSetupUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toHelpSetupUI" );
+    toHelpSetupUILayout = new QGridLayout( this, 1, 1, 0, 6, "toHelpSetupUILayout"); 
+
+    FileList = new QListView( this, "FileList" );
+    FileList->addColumn( tr( "Title" ) );
+    FileList->addColumn( tr( "Filename" ) );
+    FileList->setAllColumnsShowFocus( TRUE );
+
+    toHelpSetupUILayout->addMultiCellWidget( FileList, 0, 0, 0, 4 );
+
+    AddButton = new QPushButton( this, "AddButton" );
+    AddButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, AddButton->sizePolicy().hasHeightForWidth() ) );
+
+    toHelpSetupUILayout->addWidget( AddButton, 1, 4 );
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toHelpSetupUILayout->addItem( Spacer2, 1, 3 );
+
+    RemoveButton = new QPushButton( this, "RemoveButton" );
+    RemoveButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, RemoveButton->sizePolicy().hasHeightForWidth() ) );
+
+    toHelpSetupUILayout->addWidget( RemoveButton, 1, 0 );
+
+    AddOracle = new QPushButton( this, "AddOracle" );
+    AddOracle->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, AddOracle->sizePolicy().hasHeightForWidth() ) );
+
+    toHelpSetupUILayout->addWidget( AddOracle, 1, 2 );
+    Spacer2_2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toHelpSetupUILayout->addItem( Spacer2_2, 1, 1 );
+    languageChange();
+    resize( QSize(506, 448).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( AddButton, SIGNAL( clicked() ), this, SLOT( addFile() ) );
+    connect( RemoveButton, SIGNAL( clicked() ), this, SLOT( delFile() ) );
+    connect( AddOracle, SIGNAL( clicked() ), this, SLOT( oracleManuals() ) );
+
+    // tab order
+    setTabOrder( FileList, AddButton );
+    setTabOrder( AddButton, RemoveButton );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toHelpSetupUI::~toHelpSetupUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toHelpSetupUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    QToolTip::add( this, tr( "Add manuals from an Oracle index page." ) );
+    QWhatsThis::add( this, tr( "Add manuals from an Oracle index page. This is the index page that links to the actual manuals. Not the master index page that links to different categories of manuals." ) );
+    FileList->header()->setLabel( 0, tr( "Title" ) );
+    FileList->header()->setLabel( 1, tr( "Filename" ) );
+    AddButton->setText( tr( "&Add Manual" ) );
+    RemoveButton->setText( tr( "&Remove Manual" ) );
+    AddOracle->setText( tr( "&Oracle Manuals" ) );
+}
+
+void toHelpSetupUI::addFile()
+{
+    qWarning( "toHelpSetupUI::addFile(): Not implemented yet" );
+}
+
+void toHelpSetupUI::delFile()
+{
+    qWarning( "toHelpSetupUI::delFile(): Not implemented yet" );
+}
+
+void toHelpSetupUI::oracleManuals()
+{
+    qWarning( "toHelpSetupUI::oracleManuals(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tohelpsetupui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohelpsetupui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohelpsetupui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,52 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tohelpsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:28 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOHELPSETUPUI_H
+#define TOHELPSETUPUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QListView;
+class QListViewItem;
+class QPushButton;
+
+class toHelpSetupUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toHelpSetupUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toHelpSetupUI();
+
+    QListView* FileList;
+    QPushButton* AddButton;
+    QPushButton* RemoveButton;
+    QPushButton* AddOracle;
+
+public slots:
+    virtual void addFile();
+    virtual void delFile();
+    virtual void oracleManuals();
+
+protected:
+    QGridLayout* toHelpSetupUILayout;
+    QSpacerItem* Spacer2;
+    QSpacerItem* Spacer2_2;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOHELPSETUPUI_H

Added: kde-extras/tora/branches/upstream/current/src/tohelpsetupui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohelpsetupui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohelpsetupui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,204 @@
+<!DOCTYPE UI><UI>
+<class>toHelpSetupUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toHelpSetupUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>506</width>
+            <height>448</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <property>
+        <name>toolTip</name>
+        <string>Add manuals from an Oracle index page.</string>
+    </property>
+    <property>
+        <name>whatsThis</name>
+        <string>Add manuals from an Oracle index page. This is the index page that links to the actual manuals. Not the master index page that links to different categories of manuals.</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>0</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0"  rowspan="1"  colspan="5" >
+            <class>QListView</class>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Title</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Filename</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>FileList</cstring>
+            </property>
+            <property stdset="1">
+                <name>allColumnsShowFocus</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="1"  column="4" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>AddButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Add Manual</string>
+            </property>
+        </widget>
+        <spacer row="1"  column="3" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="1"  column="0" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>RemoveButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Remove Manual</string>
+            </property>
+        </widget>
+        <widget row="1"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>AddOracle</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Oracle Manuals</string>
+            </property>
+        </widget>
+        <spacer row="1"  column="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>AddButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toHelpSetupUI</receiver>
+        <slot>addFile()</slot>
+    </connection>
+    <connection>
+        <sender>RemoveButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toHelpSetupUI</receiver>
+        <slot>delFile()</slot>
+    </connection>
+    <connection>
+        <sender>AddOracle</sender>
+        <signal>clicked()</signal>
+        <receiver>toHelpSetupUI</receiver>
+        <slot>oracleManuals()</slot>
+    </connection>
+    <slot access="public">addFile()</slot>
+    <slot access="public">delFile()</slot>
+    <slot access="public">oracleManuals()</slot>
+</connections>
+<tabstops>
+    <tabstop>FileList</tabstop>
+    <tabstop>AddButton</tabstop>
+    <tabstop>RemoveButton</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tohighlightedtext.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohighlightedtext.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohighlightedtext.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,753 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tohighlightedtext.h"
+#include "tosqlparse.h"
+#include "totool.h"
+
+#include <ctype.h>
+
+
+#include <qapplication.h>
+#include <qpainter.h>
+#include <qpalette.h>
+#include <qsimplerichtext.h>
+#include <qstylesheet.h>
+#include <qtimer.h>
+#include <qkeysequence.h>
+#include <qextscintillaapis.h>
+#include <qnamespace.h>
+
+#include <qextscintillalexersql.h>
+#include <qpoint.h>
+
+#include "todefaultkeywords.h"
+
+#include "tohighlightedtext.moc"
+
+// Default SQL lexer
+static QextScintillaLexerSQL sqlLexer(0);
+
+toSyntaxAnalyzer::toSyntaxAnalyzer(const char **keywords)
+{
+    for (int i = 0;keywords[i];i++)
+    {
+        std::list<const char *> &curKey = Keywords[(unsigned char)char(toupper(*keywords[i]))];
+        curKey.insert(curKey.end(), keywords[i]);
+    }
+    ColorsUpdated = false;
+}
+
+toSyntaxAnalyzer::posibleHit::posibleHit(const char *text)
+{
+    Pos = 1;
+    Text = text;
+}
+
+QColor toSyntaxAnalyzer::getColor(toSyntaxAnalyzer::infoType typ)
+{
+    if (!ColorsUpdated)
+    {
+        updateSettings();
+        ColorsUpdated = true;
+    }
+    return Colors[typ];
+}
+
+/*
+#define ISIDENT(c) (isalnum(c)||(c)=='_'||(c)=='%'||(c)=='$'||(c)=='#')
+
+std::list<toSyntaxAnalyzer::highlightInfo> toSyntaxAnalyzer::analyzeLine(const QString &str,
+        toSyntaxAnalyzer::infoType in,
+        toSyntaxAnalyzer::infoType &out)
+{
+    std::list<highlightInfo> highs;
+    std::list<posibleHit> search;
+
+    bool inWord;
+    bool wasWord = false;
+    int multiComment = -1;
+    int inString = -1;
+    QChar endString;
+
+    if (in == String)
+    {
+        inString = 0;
+        endString = '\'';
+    }
+    else if (in == Comment)
+    {
+        multiComment = 0;
+    }
+
+    char c;
+    char nc = str[0].latin1();
+    for (int i = 0;i < int(str.length());i++)
+    {
+        std::list<posibleHit>::iterator j = search.begin();
+
+        c = nc;
+        if (int(str.length()) > i)
+            nc = str[i + 1].latin1();
+        else
+            nc = ' ';
+
+        bool nextSymbol = ISIDENT(nc);
+        if (multiComment >= 0)
+        {
+            if (c == '*' && nc == '/')
+            {
+                highs.insert(highs.end(), highlightInfo(multiComment, Comment));
+                highs.insert(highs.end(), highlightInfo(i + 2));
+                multiComment = -1;
+            }
+        }
+        else if (inString >= 0)
+        {
+            if (c == endString)
+            {
+                highs.insert(highs.end(), highlightInfo(inString, String));
+                highs.insert(highs.end(), highlightInfo(i + 1));
+                inString = -1;
+            }
+        }
+        else if (c == '\'' || c == '\"')
+        {
+            inString = i;
+            endString = str[i];
+            search.clear();
+            wasWord = false;
+        }
+        else if (c == '-' && nc == '-')
+        {
+            highs.insert(highs.end(), highlightInfo(i, Comment));
+            highs.insert(highs.end(), highlightInfo(str.length() + 1));
+            out = Default;
+            return highs;
+        }
+        else if (c == '/' && nc == '/')
+        {
+            highs.insert(highs.end(), highlightInfo(i, Comment));
+            highs.insert(highs.end(), highlightInfo(str.length() + 1));
+            out = Default;
+            return highs;
+        }
+        else if (c == '/' && nc == '*')
+        {
+            multiComment = i;
+            search.clear();
+            wasWord = false;
+        }
+        else
+        {
+            std::list<posibleHit> newHits;
+            while (j != search.end())
+            {
+                posibleHit &cur = (*j);
+                if (cur.Text[cur.Pos] == toupper(c))
+                {
+                    cur.Pos++;
+                    if (!cur.Text[cur.Pos] && !nextSymbol)
+                    {
+                        newHits.clear();
+                        highs.insert(highs.end(), highlightInfo(i - cur.Pos, Keyword));
+                        highs.insert(highs.end(), highlightInfo(i + 1));
+                        break;
+                    }
+                    newHits.insert(newHits.end(), cur);
+                }
+                j++;
+            }
+            search = newHits;
+            if (ISIDENT(c))
+                inWord = true;
+            else
+                inWord = false;
+
+            if (!wasWord && inWord)
+            {
+                std::list<const char *> &curKey = Keywords[(unsigned char)char(toupper(c))];
+                for (std::list<const char *>::iterator j = curKey.begin();
+                        j != curKey.end();j++)
+                {
+                    if (strlen(*j) == 1)
+                    {
+                        if (!nextSymbol)
+                        {
+                            highs.insert(highs.end(), highlightInfo(i, Keyword));
+                            highs.insert(highs.end(), highlightInfo(i));
+                        }
+                    }
+                    else
+                        search.insert(search.end(), posibleHit(*j));
+                }
+            }
+            wasWord = inWord;
+        }
+    }
+    if (inString >= 0)
+    {
+        if (endString == '\'')
+        {
+            out = String;
+            highs.insert(highs.end(), highlightInfo(inString, String));
+        }
+        else
+        {
+            out = Default;
+            //highs.insert(highs.end(), highlightInfo(inString, Error));
+            highs.insert(highs.end(), highlightInfo(inString, Comment));
+        }
+        highs.insert(highs.end(), highlightInfo(str.length() + 1));
+    }
+    else if (multiComment >= 0)
+    {
+        highs.insert(highs.end(), highlightInfo(multiComment, Comment));
+        highs.insert(highs.end(), highlightInfo(str.length() + 1));
+        out = Comment;
+    }
+    else
+        out = Default;
+
+    return highs;
+}
+*/
+
+static toSyntaxAnalyzer DefaultAnalyzer(DefaultKeywords);
+
+toSyntaxAnalyzer &toSyntaxAnalyzer::defaultAnalyzer(void)
+{
+    return DefaultAnalyzer;
+}
+
+bool toSyntaxAnalyzer::reservedWord(const QString &str)
+{
+    if (str.length() == 0)
+        return false;
+    QString t = str.upper();
+    std::list<const char *> &curKey = Keywords[(unsigned char)char(str[0].latin1())];
+    for (std::list<const char *>::iterator i = curKey.begin();i != curKey.end();i++)
+        if (t == (*i))
+            return true;
+    return false;
+}
+
+toComplPopup::toComplPopup(toHighlightedText* edit)
+        :QListBox(0,"popup",Qt::WType_Popup|Qt::WStyle_NoBorder|Qt::WStyle_Customize){
+  this->editor=edit;
+}
+
+toComplPopup::~toComplPopup(){
+}
+
+
+void toComplPopup::keyPressEvent(QKeyEvent * e){
+  if ((e->text() && e->text().length()>0 && e->key()!=Qt::Key_Return
+  && e->text()!=" ") || e->key()==Qt::Key_Backspace){
+    this->editor->keyPressEvent(e);
+    this->editor->autoCompleteFromAPIs();
+  }else if (e->text() && e->text().length()>0 && e->text()==" "){
+    this->editor->keyPressEvent(e);
+    this->hide();
+  }else
+    QListBox::keyPressEvent(e);
+  
+}
+
+
+toHighlightedText::toHighlightedText(QWidget *parent, const char *name)
+        : toMarkedText(parent, name), lexer(0), syntaxColoring(false)
+{
+    sqlLexer.setDefaultFont(toStringToFont(toConfigurationSingle::Instance().globalConfig(CONF_CODE, "")));
+    
+    // set default SQL lexer (syntax colouring as well)
+    setLexer (&sqlLexer);
+    
+    // enable line numbers
+    setMarginLineNumbers (0, true);
+    
+    // enable syntax colouring
+    setSyntaxColoring (true);
+    
+    // set the font
+    setFont(toStringToFont(toConfigurationSingle::Instance().globalConfig(CONF_CODE, "")));
+
+    errorMarker=markerDefine(Circle,4);
+    debugMarker=markerDefine(Rectangle,8);
+    updateSyntaxColor(toSyntaxAnalyzer::DebugBg);
+    updateSyntaxColor(toSyntaxAnalyzer::ErrorBg);
+    setMarginMarkerMask(1,0);
+    setAutoIndent(true);
+    connect(this,SIGNAL(cursorPositionChanged(int,int)),this,SLOT(setStatusMessage(void )));
+    complAPI=new QextScintillaAPIs();
+    connect (this,SIGNAL(cursorPositionChanged(int,int)),this,SLOT(positionChanged(int,int)));
+    timer=new QTimer(this);
+    connect( timer, SIGNAL(timeout()), this, SLOT(autoCompleteFromAPIs()) );
+    popup=new toComplPopup(this);
+    popup->hide();
+    connect(popup,SIGNAL(clicked(QListBoxItem*)),this,SLOT(completeFromAPI(QListBoxItem*)));
+    connect(popup,SIGNAL(returnPressed(QListBoxItem*)),this,SLOT(completeFromAPI(QListBoxItem*)));
+}
+
+toHighlightedText::~toHighlightedText() 
+{
+  if(complAPI)
+    delete complAPI;
+  if(popup)
+    delete popup;
+}
+
+void toHighlightedText::positionChanged(int row, int col){
+  if (col>0 && this->text(row)[col-1]=='.'){
+    timer->start(500,true);
+  }else{
+    if(timer->isActive())
+      timer->stop();
+  }
+}
+
+static QString UpperIdent(const QString &str){
+  if (str.length() > 0 && str[0] == '\"')
+    return str;
+  else
+    return str.upper();
+}
+
+void toHighlightedText::autoCompleteFromAPIs(){
+  QString partial;
+  QStringList compleList=this->getCompletionList(&partial);
+  if(compleList.count()==1 && compleList.first()==partial){
+    this->completeWithText(compleList.first());
+    if(popup->isVisible())
+      popup->hide();
+  }else if(!compleList.isEmpty() || popup->isVisible()){
+    long position, posx, posy;
+    int curCol, curRow;
+    this->getCursorPosition(&curRow,&curCol);
+    position=this->SendScintilla(SCI_GETCURRENTPOS);
+    posx=this->SendScintilla(SCI_POINTXFROMPOSITION,0,position);
+    posy=this->SendScintilla(SCI_POINTYFROMPOSITION,0,position)+
+      this->SendScintilla(SCI_TEXTHEIGHT,curRow);
+    QPoint p(posx,posy);
+    p=this->mapToGlobal(p);
+    popup->move(p);
+    popup->clear();
+    popup->insertStringList(compleList);
+    if(partial && partial.length()>0){
+      int i;
+      for(i=0;i<popup->numRows();i++){
+        if(popup->item(i)->text().find(partial)==0){
+          popup->setSelected(i,true);
+          break;
+        }
+      }
+ 
+    }
+    popup->show();
+  }else{
+    popup->hide();
+  }
+}
+
+bool toHighlightedText::invalidToken(int line, int col)
+{
+  bool ident = true;
+  if (line < 0){
+    line = 0;
+    col = 0;
+  }
+  while (line < lines()){
+    QString cl = text(line);
+    while (col < int(cl.length())){
+      QChar c = cl[col];
+      if (!toIsIdent(c))
+        ident = false;
+      if (!ident && !c.isSpace())
+        return c == '.';
+        col++;
+    }
+    line++;
+    col = 0;
+  }
+  return false;
+}
+
+/** 
+ * Sets the syntax colouring flag.
+ */
+void toHighlightedText::setSyntaxColoring(bool val)
+{
+    syntaxColoring = val;
+    if (syntaxColoring) {
+        QextScintilla::setLexer(lexer);
+	updateSyntaxColor(toSyntaxAnalyzer::Default);
+	updateSyntaxColor(toSyntaxAnalyzer::Comment);
+	updateSyntaxColor(toSyntaxAnalyzer::Number);
+	updateSyntaxColor(toSyntaxAnalyzer::Keyword);
+	updateSyntaxColor(toSyntaxAnalyzer::String);
+	updateSyntaxColor(toSyntaxAnalyzer::DefaultBg);
+
+        update();
+    }
+    else {
+        QextScintilla::setLexer(0);
+    }
+}
+
+/** 
+ * Sets the syntax colours for given type
+ */
+void toHighlightedText::updateSyntaxColor(toSyntaxAnalyzer::infoType t)
+{
+    QColor col = DefaultAnalyzer.getColor(t);
+    switch (t)
+    {
+    case toSyntaxAnalyzer::Default:
+	lexer->setColor(col, QextScintillaLexerSQL::Default);
+	//lexer->setColor(col, QextScintillaLexerSQL::CommentLineHash);
+	break;
+    case toSyntaxAnalyzer::Comment:
+	lexer->setColor(col, QextScintillaLexerSQL::Comment);
+	lexer->setColor(col, QextScintillaLexerSQL::CommentLine);
+	lexer->setColor(col, QextScintillaLexerSQL::PlusPrompt);
+	lexer->setColor(col, QextScintillaLexerSQL::PlusComment);
+	lexer->setColor(col, QextScintillaLexerSQL::CommentDoc);
+	lexer->setColor(col, QextScintillaLexerSQL::CommentDocKeyword);
+	break;
+    case toSyntaxAnalyzer::Number:
+	lexer->setColor(col, QextScintillaLexerSQL::Number);
+	break;
+    case toSyntaxAnalyzer::Keyword:
+	lexer->setColor(col, QextScintillaLexerSQL::Keyword);
+	lexer->setColor(col, QextScintillaLexerSQL::PlusKeyword);
+	lexer->setColor(col, QextScintillaLexerSQL::Operator);
+	break;
+    case toSyntaxAnalyzer::String:
+	lexer->setColor(col, QextScintillaLexerSQL::DoubleQuotedString);
+	lexer->setColor(col, QextScintillaLexerSQL::SingleQuotedString);
+	break;
+    case toSyntaxAnalyzer::DefaultBg:
+	lexer->setPaper(col);
+	//lexer->setPaper(col, QextScintillaLexerSQL::Default);
+	break;
+    case toSyntaxAnalyzer::ErrorBg:
+	setMarkerBackgroundColor(col, errorMarker);
+	break;
+    case toSyntaxAnalyzer::DebugBg:
+	setMarkerBackgroundColor(col, debugMarker);
+	break;
+    default:
+	break;
+    }
+}
+
+/**
+ * Set the lexer to use. 
+ * @param lexer to use,
+ *        0 if no syntax colouring
+ */
+void toHighlightedText::setLexer(QextScintillaLexer *lexer) 
+{
+    if (lexer != 0) {
+        this->lexer = lexer;
+    }
+    // refresh scintilla lexer
+    setSyntaxColoring(syntaxColoring);
+}
+
+void toHighlightedText::setFont (const QFont & font)
+{
+    // Only sets fint lexer - one for all styles
+    // this may (or may not) need to be changed in a future
+    if (lexer) {
+        lexer->setDefaultFont(font);
+        lexer->setFont(font);
+
+/*	this is workaround against qscintilla 1.6 setFont(font) bug */
+        lexer->setFont(font, QextScintillaLexerSQL::Comment);
+        lexer->setFont(font, QextScintillaLexerSQL::CommentLine);
+        lexer->setFont(font, QextScintillaLexerSQL::PlusComment);
+        lexer->setFont(font, QextScintillaLexerSQL::CommentLineHash);
+        lexer->setFont(font, QextScintillaLexerSQL::CommentDocKeyword);
+        lexer->setFont(font, QextScintillaLexerSQL::CommentDocKeywordError);
+        lexer->setFont(font, QextScintillaLexerSQL::DoubleQuotedString);
+        lexer->setFont(font, QextScintillaLexerSQL::SingleQuotedString);
+        lexer->setFont(font, QextScintillaLexerSQL::PlusPrompt);
+
+        update();
+    }
+}
+void toHighlightedText::setCurrent(int current)
+    {
+        setCursorPosition (current, 0);
+        markerDeleteAll(debugMarker);
+        if(current>=0)
+          markerAdd(current,debugMarker);
+    }
+void toHighlightedText::tableAtCursor(QString &owner, QString &table, bool mark)
+{
+    try
+    {
+        toConnection &conn = toCurrentConnection(this);
+        int curline, curcol;
+        getCursorPosition (&curline, &curcol);
+
+        QString token = text(curline);
+        toSQLParse::editorTokenizer tokens(this, curcol, curline);
+        if (curcol > 0 && toIsIdent(token[curcol - 1]))
+            token = tokens.getToken(false);
+        else
+            token = QString::null;
+
+        toSQLParse::editorTokenizer lastTokens(this, tokens.offset(), tokens.line());
+        token = tokens.getToken(false);
+        if (token == ".")
+        {
+            lastTokens.setLine(tokens.line());
+            lastTokens.setOffset(tokens.offset());
+            owner = conn.unQuote(tokens.getToken(false));
+            lastTokens.getToken(true);
+            table += conn.unQuote(lastTokens.getToken(true));
+        }
+        else
+        {
+            tokens.setLine(lastTokens.line());
+            tokens.setOffset(lastTokens.offset());
+            owner = conn.unQuote(lastTokens.getToken(true));
+            int tmplastline = lastTokens.line();
+            int tmplastcol = lastTokens.offset();
+            token = lastTokens.getToken(true);
+            if (token == ".")
+                table = conn.unQuote(lastTokens.getToken(true));
+            else
+            {
+                lastTokens.setLine(tmplastline);
+                lastTokens.setOffset(tmplastcol);
+                table = owner;
+                owner = QString::null;
+            }
+        }
+        if (mark)
+        {
+            if (lastTokens.line() >= lines())
+            {
+                lastTokens.setLine(lines() - 1);
+                lastTokens.setOffset(text(lines() - 1).length());
+            }
+            setSelection(tokens.line(), tokens.offset(), lastTokens.line(), lastTokens.offset());
+        }
+    }
+    catch (...)
+    {}
+}
+
+ bool toHighlightedText::hasErrors(){
+     if ( Errors.empty() )
+         return (false); 
+     else
+         return (true);
+}
+
+void toHighlightedText::nextError(void){
+    int curline, curcol;
+    getCursorPosition (&curline, &curcol);
+    for (std::map<int, QString>::iterator i = Errors.begin();i != Errors.end();i++){   
+        if ((*i).first > curline){
+            setCursorPosition((*i).first, 0);
+            break;
+        }
+    }
+}
+
+void toHighlightedText::previousError(void){
+    int curline, curcol;
+    getCursorPosition (&curline, &curcol);
+    curcol = -1;
+    for (std::map<int, QString>::iterator i = Errors.begin();i != Errors.end();i++){
+        if ((*i).first >= curline){
+            if (curcol < 0)
+                curcol = (*i).first;
+            break;
+        }
+        curcol = (*i).first;
+    }
+    if (curcol >= 0)
+        setCursorPosition(curcol, 0);
+}
+
+void toHighlightedText::setErrors(const std::map<int, QString> &errors)
+{
+    Errors = errors;
+    setStatusMessage();
+    markerDeleteAll(errorMarker);
+    for (std::map<int, QString>::iterator i = Errors.begin();i != Errors.end();i++){
+       markerAdd((*i).first,errorMarker);
+    }
+}
+
+void toHighlightedText::setStatusMessage(void)
+{
+    int curline, curcol;
+    getCursorPosition (&curline, &curcol);
+    std::map<int, QString>::iterator err = Errors.find(curline);
+    if (err == Errors.end())
+        toStatusMessage(QString::null);
+    else
+        toStatusMessage((*err).second, true);
+}
+
+QStringList toHighlightedText::getCompletionList(QString* partial){
+  int curline, curcol;
+  QStringList toReturn;
+  getCursorPosition (&curline, &curcol);
+
+  QString line = text(curline);
+
+  if (!isReadOnly() && curcol >= 0){
+    if (toConfigurationSingle::Instance().globalConfig(CONF_CODE_COMPLETION, "Yes").isEmpty())
+      return toReturn;
+    
+    toSQLParse::editorTokenizer tokens(this, curcol, curline);
+    if (line[curcol-1]!='.'){
+      *partial=tokens.getToken(false);
+    }else{
+      *partial="";
+    } 
+
+    QString name = tokens.getToken(false);
+    QString owner;
+    if (name == "."){
+      name = tokens.getToken(false);
+    }  
+
+    QString token = tokens.getToken(false);
+    if (token == ".")
+      owner = tokens.getToken(false);
+    else{
+      QString cmp = UpperIdent(name);
+      QString lastToken;
+      while ((invalidToken(tokens.line(), tokens.offset() + token.length()) || UpperIdent(token) != cmp || lastToken == ".") && token != ";" && !token.isEmpty()){
+        lastToken = token;
+        token = tokens.getToken(false);
+      }
+
+      if(token == ";" || token.isEmpty()){
+        tokens.setLine(curline);
+        tokens.setOffset(curcol);
+        token = tokens.getToken();
+        while ((invalidToken(tokens.line(), tokens.offset()) || UpperIdent(token) != cmp && lastToken != ".") && token != ";" && !token.isEmpty())
+          token = tokens.getToken();
+        lastToken = token;
+        tokens.getToken(false);
+      }
+      if(token != ";" && !token.isEmpty()){
+        token = tokens.getToken(false);
+        if (token != "TABLE" && token != "UPDATE" && token != "FROM" && token != "INTO" && (toIsIdent(token[0]) || token[0] == '\"')){
+          name = token;
+          token = tokens.getToken(false);
+          if (token == ".")
+            owner = tokens.getToken(false);
+        }else if (token == ")"){
+          return toReturn;
+        }
+      }
+    }
+    if (!owner.isEmpty()){
+      name = owner + QString::fromLatin1(".") + name;
+    }
+    if (!name.isEmpty()){
+      try{
+        toConnection &conn = toCurrentConnection(this);
+        toQDescList &desc = conn.columns(conn.realName(name, false));
+        for (toQDescList::iterator i = desc.begin();i != desc.end();i++){
+          QString t;
+          int ind = (*i).Name.find("(");
+          if (ind < 0)
+            ind = (*i).Name.find("RETURNING") - 1; //it could be a function or procedure without parameters. -1 to remove the space
+          if (ind >= 0)
+            t = conn.quote((*i).Name.mid(0, ind)) + (*i).Name.mid(ind);
+          else
+            t = conn.quote((*i).Name);
+          if (t.find(*partial)==0)
+            toReturn.append(t);
+        }
+      }catch (...){}
+    }
+  }
+  toReturn.sort();
+  return toReturn;
+}
+
+void toHighlightedText::completeWithText(QString itemText){
+  int curline, curcol, start,end;
+  getCursorPosition (&curline, &curcol);
+  QString line = text(curline);
+  toSQLParse::editorTokenizer tokens(this, curcol, curline);
+  if (line[curcol-1]!='.'){
+    tokens.getToken(false);
+    start=tokens.offset();
+  }else{
+    start=curcol;
+  }
+  if(line[curcol].isSpace()){
+    end=curcol;
+  }else{
+    tokens.getToken(true);
+    if(tokens.line()!=curline)
+      end=line.length();
+    else
+      end=tokens.offset();
+  }
+  disconnect(this,SIGNAL(cursorPositionChanged(int,int)),this,SLOT(positionChanged(int,int)));
+  setSelection(curline,start,curline,end);
+  this->removeSelectedText();
+  this->insert(itemText);
+  this->setCursorPosition(curline,start+itemText.length());
+  connect (this,SIGNAL(cursorPositionChanged(int,int)),this,SLOT(positionChanged(int,int)));
+}
+  
+
+void toHighlightedText::completeFromAPI(QListBoxItem* item){
+  if(item){
+    this->completeWithText(item->text());
+  }
+  popup->hide();
+}

Added: kde-extras/tora/branches/upstream/current/src/tohighlightedtext.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohighlightedtext.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohighlightedtext.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,381 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOHIGHLIGHTEDTEXT_H
+#define TOHIGHLIGHTEDTEXT_H
+
+#include "config.h"
+
+#include "tomarkedtext.h"
+
+#include <qextscintillalexer.h>
+#include <qextscintillaapis.h>
+
+#include <list>
+#include <map>
+#include <qtimer.h>
+#include <qstringlist.h>
+#include <qlistbox.h>
+
+class QListBoxItem;
+class QPainter;
+class toSyntaxSetup;
+class toHighlightedText;
+
+/** This class implements a syntax parser to provide information to
+ * a syntax highlighted editor.
+ */
+
+class toSyntaxAnalyzer
+{
+public:
+    /** Highlighting categories (joins more categories in qscintilla into
+     * simplier ones
+     */
+    enum infoType {
+        Default = 0,
+        Comment = 1,
+        Number = 2,
+        Keyword = 3,
+        String = 4,
+	DefaultBg = 5,
+        ErrorBg = 6,
+        DebugBg = 7
+    };
+    /** Information about a change in highlighting.
+     */
+#if 0	// is this still needed after switch to qscintilla?!?
+    struct highlightInfo
+    {
+        /** New type of highlighting.
+         */
+        infoType Type;
+        /** Start in line for this highlighting.
+         */
+        int Start;
+        highlightInfo(int start, infoType typ = Default)
+        {
+            Start = start;
+            Type = typ;
+        }
+    };
+#endif
+private:
+    /** Indicate if colors are updated, can't do this in constructor since QApplication
+     * isn't initialized yet.
+     */
+    bool ColorsUpdated;
+    /** Colors allocated for the different @ref infoType values.
+     */
+    QColor Colors[8];
+
+    /** marker per linea contenente errori
+      */
+    int errorMarker;
+    /** marker per linea corrente
+      */
+    int debugMarker;
+    /** Keeps track of possible hits found so far.
+     */
+    struct posibleHit
+    {
+        posibleHit(const char *);
+        /** Where you are in this word to find a hit.
+         */
+        int Pos;
+        /** The text to hit, points into keywords array.
+         */
+        const char *Text;
+    };
+    /** An array of lists of keywords, indexed on the first character.
+     */
+    std::list<const char *> Keywords[256];
+protected:
+    /** Check if this is part of a symbol or not.
+     */
+    bool isSymbol(QChar c)
+    {
+        return (c.isLetterOrNumber() || c == '_' || c == '#' || c == '$' || c == '.');
+    }
+private:
+    /** Get a colordefinition from a @ref infoType value.
+     * @param def Color to fill out.
+     * @param pos @ref infoType to get color for.
+     */
+    void readColor(const QColor &def, infoType pos);
+    /** Get a string representation of an @ref infoType.
+     * @param typ @ref infoType to get string for.
+     * @return Description of infotype.
+     */
+    static QCString typeString(infoType typ);
+    /** Get an @ref infoType from a string representation of it.
+     * @param str Description of @ref infoType.
+     * @return @ref infoType described by string.
+     */
+    static infoType typeString(const QCString &str);
+    /** Update configuration settings from this class color values.
+     */
+    void updateSettings(void);
+public:
+    /** Create a syntax analysed
+     * @param keywords A list of keywords.
+     */
+    toSyntaxAnalyzer(const char **keywords);
+    virtual ~toSyntaxAnalyzer()
+    { }
+
+    /** Get the character used to quote names of functions etc for the database
+     */
+    virtual QChar quoteCharacter()
+    {
+        return '\"';
+    }
+    /** True if declare keyword starts block.
+     */
+    virtual bool declareBlock()
+#ifdef TO_NO_ORACLE
+    { return false;
+    }
+#else
+    { return true;
+    }
+#endif
+
+#if 0	// is this still needed after switch to qscintilla?!?
+    /** Analyze a line. There is no guarantee that lines will be called in any kind of order.
+     * @param str Line to analyze.
+     * @param in Type at start of line.
+     * @param out Type at start of next line.
+     * @return A list of where highlighting should change. Start as normal.
+     */
+    virtual std::list<highlightInfo> analyzeLine(const QString &str, infoType in, infoType &out);
+#endif
+    /** Get a colordefinition for a @ref infoType value.
+     * @param typ @ref infoType to get color for.
+     * @return Color of that type.
+     */
+    QColor getColor(infoType typ);
+
+    /** Check if a word is reserved.
+     * @param word Word to check.
+     * @return True if word is reserved.
+     */
+    bool reservedWord(const QString &word);
+
+    friend class toSyntaxSetup;
+    /** Get the default syntax analyzer.
+     * @return Reference to the default analyzer.
+     */
+    static toSyntaxAnalyzer &defaultAnalyzer();
+};
+
+class toComplPopup : public QListBox {
+  private:
+    toHighlightedText* editor;
+  public:
+    toComplPopup(toHighlightedText* high);
+    virtual ~toComplPopup();
+  protected:
+    virtual void keyPressEvent(QKeyEvent * e );
+};
+/** 
+ * A simple editor which supports syntax highlighting.
+ * 
+ * This needs to be heavily re-implemented/simplified to use QScintilla syntax 
+ * colouring. For now it only stubs used API from previous version of
+ * toHighlightedText. The rest of the API comes unchanged from toMarkedText 
+ * which is now derived from QScintilla.
+ */
+
+class toHighlightedText : public toMarkedText
+{
+private:
+    Q_OBJECT
+    
+    // Associated lexer (may be not used)
+    QextScintillaLexer *lexer;       // NOTE: this should be used in instead of toSyntaxAnalyzer
+    bool syntaxColoring;
+    /** Map of rows with errors and their error message.
+     */
+    std::map<int, QString> Errors;
+    QextScintillaAPIs* complAPI;
+    QTimer* timer;
+protected:
+    int debugMarker;
+    int errorMarker;
+    toComplPopup* popup;
+
+public:
+  friend class toComplPopup;
+
+    /** Create a new editor.
+     * @param parent Parent of widget.
+     * @param name Name of widget.
+     */
+    toHighlightedText(QWidget *parent, const char *name = NULL);
+
+    /** 
+     * Cleaning up done here
+     */
+    virtual ~toHighlightedText();
+
+public:
+    /**
+     * Set the lexer to use. 
+     * @param lexer to use,
+     *        0 if no syntax colouring
+     */
+    void setLexer(QextScintillaLexer *lexer);
+    
+    /** 
+     * Get the current lexer.
+     * @return lexer used or 0 if no syntax colouring.
+     */
+    QextScintillaLexer * getLexer(void)
+    {
+        return lexer;
+    }
+    
+    /**
+     * Overriden to set font for lexer as well. 
+     * @param font the font to set
+     */
+    void setFont (const QFont & font);
+
+public:
+    // ------------------ API used by TOra classes ----------------------
+    // NOTE: currently all stubs
+    
+    /** Convert a linenumber after a change of the buffer to another linenumber. Can be
+     * used to convert a specific linenumber after receiving a @ref insertedLines call.
+     * @param line Line number.
+     * @param start Start of change.
+     * @param diff Lines added or removed.
+     * @return New linenumber or -1 if line doesn't exist anymore.
+     */
+    static int convertLine(int line, int start, int diff) 
+    {
+        return line;
+    }
+
+    /** Set current line. Will be indicated with a different background.
+     * @param current Current line.
+     */
+    void setCurrent(int current);
+    
+    /** Returns true if the editor has any errors.
+     */
+    bool hasErrors();
+    
+    /** Set the error list map.
+     * @param errors A map of linenumbers to errorstrings. These will be displayed in the
+     *               statusbar if the cursor is placed on the line.
+     */
+    void setErrors(const std::map<int, QString> &errors);
+    
+    /**
+     * DEPRECATED: should use setLexer() instead!!!
+     *
+     * Set the syntax highlighter to use.
+     * @param analyzer Analyzer to use.
+     */
+    void setAnalyzer(toSyntaxAnalyzer &analyzer) {}
+    
+    /** 
+     * DEPRECATED: should use getLexer() instead!!!
+     *
+     * Get the current syntaxhighlighter.
+     * @return Analyzer used.
+     */
+    toSyntaxAnalyzer &analyzer(void)
+    {
+        return toSyntaxAnalyzer::defaultAnalyzer();
+    }
+    
+    /** 
+     * Set keyword upper flag. If this is set keywords will be converted 
+     * to uppercase when painted.
+     *
+     * NOTE: this may be quite tricky to implement - have to check 
+     *       how the Scintilla Lexers are working
+     *
+     * @param val New value of keyword to upper flag.
+     */
+    void setKeywordUpper(bool val) {}
+    
+    /** 
+     * Sets the syntax colouring flag.
+     */
+    void setSyntaxColoring(bool val);
+    
+    /** Get the tablename currently under the cursor.
+     * @param owner Filled with owner or table or QString::null if no owner specified.
+     * @param table Filled with tablename.
+     * @param highlight If true mark the extracted tablename
+     */
+    void tableAtCursor(QString &owner, QString &table, bool highlight = false);
+
+    void updateSyntaxColor(toSyntaxAnalyzer::infoType t);
+
+protected:
+    QStringList getCompletionList(QString* partial);
+    void completeWithText(QString itemText);
+  
+private:
+    bool invalidToken(int line, int col);
+    
+    // ------------------ END OF API used by TOra classes ----------------------
+
+public slots:
+    /** Go to next error.
+     */
+    void nextError(void);
+    /** Go to previous error.
+     */
+    void previousError(void);
+
+    virtual void autoCompleteFromAPIs();
+
+    void positionChanged(int row, int col);
+
+    virtual void completeFromAPI(QListBoxItem * item);
+
+private slots:
+    void setStatusMessage(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tohtml.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohtml.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohtml.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,349 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "toconf.h"
+
+
+#include "tomain.h"
+#include "tohtml.h"
+
+#include <ctype.h>
+#include <string.h>
+
+#include <qapplication.h>
+#include <qregexp.h>
+
+toHtml::toHtml(const QCString &data)
+{
+    Length = strlen(data);
+    Data = new char[Length + 1];
+    strcpy(Data, data);
+    Position = 0;
+    LastChar = 0;
+}
+
+toHtml::~toHtml()
+{
+    delete[] Data;
+}
+
+void toHtml::skipSpace(void)
+{
+    if (Position >= Length)
+        return ;
+    char c = LastChar;
+    if (!c)
+        c = Data[Position];
+    if (isspace(c))
+    {
+        Position++;
+        LastChar = 0;
+        while (Position < Length && isspace(Data[Position]))
+            Position++;
+    }
+}
+
+bool toHtml::eof(void)
+{
+    if (Position > Length)
+        throw qApp->translate("toHtml", "Invalidly went beyond end of file");
+    return Position == Length;
+}
+
+void toHtml::nextToken(void)
+{
+    if (eof())
+        throw qApp->translate("toHtml", "Reading HTML after eof");
+    QualifierNum = 0;
+    char c = LastChar;
+    if (!c)
+        c = Data[Position];
+    if (c == '<')
+    {
+        IsTag = true;
+        Position++;
+        LastChar = 0;
+        skipSpace();
+        if (Position >= Length)
+            throw qApp->translate("toHtml", "Lone < at end");
+        if (Data[Position] != '/')
+        {
+            Open = true;
+        }
+        else
+        {
+            Open = false;
+            Position++;
+        }
+        skipSpace();
+        {
+            size_t start = Position;
+            while (Position < Length && !isspace(Data[Position]) && Data[Position] != '>')
+            {
+                Data[Position] = tolower(Data[Position]);
+                Position++;
+            }
+            Tag = mid(start, Position - start);
+        }
+        for (;;)
+        {
+            skipSpace();
+            if (Position >= Length)
+                throw qApp->translate("toHtml", "Unended tag at end");
+
+            c = LastChar;
+            if (!c)
+                c = Data[Position];
+            if (c == '>')
+            {
+                LastChar = 0;
+                Position++;
+                break;
+            }
+
+            // Must always be an empty char here, so LastChar not needed to be checked.
+
+            {
+                size_t start = Position;
+
+                while (Position < Length &&
+                        !isspace(Data[Position]) &&
+                        Data[Position] != '=' &&
+                        Data[Position] != '>')
+                {
+                    Data[Position] = tolower(Data[Position]);
+                    Position++;
+                }
+                Qualifiers[QualifierNum].Name = mid(start, Position - start);
+            }
+            skipSpace();
+            if (Position >= Length)
+                throw qApp->translate("toHtml", "Unended tag qualifier at end");
+            c = LastChar;
+            if (!c)
+                c = Data[Position];
+            if (c == '=')
+            {
+                LastChar = 0;
+                Position++;
+                skipSpace();
+                if (Position >= Length)
+                    throw qApp->translate("toHtml", "Unended tag qualifier data at end");
+                c = Data[Position];
+                if (c == '\'' || c == '\"')
+                {
+                    Position++;
+                    size_t start = Position;
+                    while (Data[Position] != c)
+                    {
+                        Position++;
+                        if (Position >= Length)
+                            throw qApp->translate("toHtml", "Unended quoted string at end");
+                    }
+                    Qualifiers[QualifierNum].Value = mid(start, Position - start);
+                    Position++;
+                    LastChar = 0;
+                }
+                else
+                {
+                    size_t start = Position;
+                    while (!isspace(Data[Position]) && Data[Position] != '>')
+                    {
+                        Position++;
+                        if (Position >= Length)
+                            throw qApp->translate("toHtml", "Unended qualifier data at end");
+                    }
+                    Qualifiers[QualifierNum].Value = mid(start, Position - start);
+                }
+            }
+            QualifierNum++;
+            if (QualifierNum >= TO_HTML_MAX_QUAL)
+                throw qApp->translate("toHtml", "Exceded qualifier max in toHtml");
+        }
+    }
+    else
+    {
+        IsTag = false;
+        size_t start = Position;
+        Position++;
+        LastChar = 0;
+        while (Position < Length)
+        {
+            if (Data[Position] == '<')
+                break;
+            Position++;
+        }
+        Text = mid(start, Position - start);
+    }
+}
+
+const char *toHtml::value(const QCString &q)
+{
+    for (int i = 0;i < QualifierNum;i++)
+    {
+        if (q == Qualifiers[i].Name)
+            return Qualifiers[i].Value;
+    }
+    return NULL;
+}
+
+QCString toHtml::text()
+{
+    QCString ret;
+    for (const char *cur = Text;*cur;cur++)
+    {
+        char c = *cur;
+        if (c == '&')
+        {
+            const char *start = cur + 1;
+            while (*cur && *cur != ';')
+                cur++;
+            QCString tmp(start, cur - start);
+            if (tmp[0] == '#')
+            {
+                tmp = tmp.right(tmp.length() - 1);
+                ret += char(tmp.toInt());
+            }
+            else if (tmp == "auml")
+                ret += "å";
+            // The rest of the & codes...
+        }
+        else
+            ret += c;
+    }
+    return ret;
+}
+
+const char *toHtml::mid(size_t start, size_t size)
+{
+    if (size == 0)
+        return "";
+    if (start >= Length)
+        throw qApp->translate("toHtml", "Tried to access string out of bounds in mid (start=%1)").arg(start);
+    if (size > Length)
+        throw qApp->translate("toHtml", "Tried to access string out of bounds in mid (size=%1)").arg(size);
+    if (start + size > Length)
+        throw qApp->translate("toHtml", "Tried to access string out of bounds in mid (total=%1+%2>%3)").
+        arg(start).
+        arg(size).
+        arg(Length);
+
+    LastChar = Data[start + size];
+    Data[start + size] = 0;
+    return Data + start;
+}
+
+bool toHtml::search(const QCString &all, const QString &str)
+{
+    QCString data(str.lower().latin1());
+    enum {
+        beginning,
+        inTag,
+        inString,
+        inWord
+    } lastState = beginning, state = beginning;
+    unsigned int pos = 0;
+    char endString = 0;
+    for (size_t i = 0;i < all.length();i++)
+    {
+        char c = tolower(all.at(i));
+        if (c == '\'' || c == '\"')
+        {
+            endString = c;
+            state = inString;
+        }
+        else if (c == '<')
+        {
+            state = inTag;
+        }
+        else
+        {
+            switch (state)
+            {
+            case inString:
+                if (c == endString)
+                    state = lastState;
+                break;
+            case beginning:
+                if (data.at(pos) != c)
+                {
+                    pos = 0;
+                    state = inWord;
+                }
+                else
+                {
+                    pos++;
+                    if (pos >= data.length())
+                    {
+                        if (i + 1 >= all.length() || !isalnum(all.at(i + 1)))
+                            return true;
+                        pos = 0;
+                    }
+                    break;
+                }
+                // Intentionally no break here
+            case inWord:
+                if (!isalnum(c))
+                    state = beginning;
+                break;
+            case inTag:
+                if (c == '>')
+                    state = beginning;
+                break;
+            }
+        }
+    }
+    return false;
+}
+
+QString toHtml::escape(const QString &html)
+{
+    QString ret = html;
+
+    static QRegExp amp(QString::fromLatin1("\\&"));
+    static QRegExp lt(QString::fromLatin1("\\<"));
+    static QRegExp gt(QString::fromLatin1("\\>"));
+
+#if 0
+
+    ret.replace(amp, "&amp;");
+    ret.replace(lt, "&lt;");
+    ret.replace(gt, "&gt;");
+#endif
+
+    return ret;
+}

Added: kde-extras/tora/branches/upstream/current/src/tohtml.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tohtml.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tohtml.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,192 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOHTML_H
+#define TOHTML_H
+
+#include "config.h"
+
+#include <map>
+
+#include <qstring.h>
+#include <qcstring.h>
+
+#define TO_HTML_MAX_QUAL 100
+
+/** A small and hopefully pretty efficient parser of HTML tags. No attempt what
+ * so ever is made trying to check the validity of the text so if you forget
+ * a closing > you will probably end up with an exception.
+ *
+ * A simple traverser counting the number of paragraphs might look like this.
+ *
+<pre>
+int paragraphs++;
+toHtml count("Paragraphs<P>And some</P><P>Dobedoo");
+while(!count.eof()) {
+  count.nextToken();
+  if (count.isTag()&&count.open()&&QString(count.tag())=="p")
+    paragraphs++;
+}
+</pre>
+ */
+
+class toHtml
+{
+    /** Actual data of file.
+     */
+    char *Data;
+    /** Length of the data.
+     */
+    size_t Length;
+    /** Current position in data.
+     */
+    size_t Position;
+
+    /** Last character that was at the end of text written over by call to @ref mid.
+     * This is a real cludge, but what don't you do for performance.
+     */
+    char LastChar;
+
+    /** List of qualifiers for tab. This is not a list because of performance as well.
+     * Not really a lot of memory wasted this way, in fact it is probably more efficient
+     * than a dynamic list.
+     */
+    struct
+    {
+        /** Name of qualifier. Always lowercase, points into @ref Data.
+         */
+        const char *Name;
+        /** Value of qualifier. Points into @ref Data.
+         */
+        const char *Value;
+    }
+    Qualifiers[TO_HTML_MAX_QUAL];
+
+    /** Number of qualifiers used.
+     */
+    int QualifierNum;
+    /** If last token read was a tag or plain text.
+     */
+    bool IsTag;
+    /** Last tag read was an open tag. Only valid if @ref isTag is true.
+     */
+    bool Open;
+    /** Name of tag. NULL terminated, points into @ref Data.
+     */
+    const char *Tag;
+    /** Text if not tag. NULL terminated, points into @ref Data.
+     */
+    const char *Text;
+
+    /** Walk forward in @ref Data until not whitespace.
+     */
+    void skipSpace(void);
+    /** Extract a string from @ref Data. Insert 0 at end of string, store overwritten char
+     * in LastChar.
+     * @param start Start position of string to extract.
+     * @param size Size of string to extract.
+     * @return Pointer to string (Points into @ref Data)
+     */
+    const char *mid(size_t start, size_t size);
+public:
+    /** Create a HTML parser.
+     * @param data Data to parse.
+     */
+    toHtml(const QCString &data);
+    ~toHtml();
+
+    /** Read the next token which can be either a open tag, close tag or text.
+     *
+     * Observe that nextToken destroys the data it has parsed, so you
+     * can't search it later. Searhing must be done on an new toHtml,
+     * several serches can be made though on the same toHtml.
+     */
+
+    void nextToken(void);
+
+    /** Get value of a qualifier.
+     * @param name Name of qualifier in lowercase.
+     * @return Value of qualifier or NULL.
+     */
+    const char *value(const QCString &name);
+    /** Return true if current token is a tag.
+     * @return True if tag.
+     */
+    bool isTag(void)
+    {
+        return IsTag;
+    }
+    /** Return true if open tag. Only valid if @ref isTag is true.
+     * @return True if open tag.
+     */
+    bool open(void)
+    {
+        return Open;
+    }
+
+    /** Get bread text if available. Expands &# characters are expanded before returned.
+     * Only valid if @ref isTag returns false.
+     * @return The parsed text.
+     */
+
+    QCString text(void);
+
+    /** Get name of tag in lowercase. Only valid if @ref isTag returns true.
+     * @return Name of tag (Excluding / if close tag).
+     */
+    const char *tag(void)
+    {
+        return Tag;
+    }
+
+    /** Check if at end of data
+     * @return True if at end of data.
+     */
+    bool eof(void);
+
+    /** Search data for a simple text.
+     * @param data Data to search.
+     * @param str Substring to search for in data.
+     */
+    static bool search(const QCString &data, const QString &str);
+
+    /** Escape text to be HTML.
+     */
+    static QString escape(const QString &html);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toinvalid.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toinvalid.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toinvalid.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,277 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "toextract.h"
+#include "tohighlightedtext.h"
+#include "toinvalid.h"
+#include "tomain.h"
+#include "toresultextract.h"
+#include "toresultlong.h"
+#include "toresultview.h"
+#include "tosql.h"
+#include "totool.h"
+
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qmenubar.h>
+#include <qpopupmenu.h>
+#include <qprogressdialog.h>
+#include <qsplitter.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qworkspace.h>
+
+#include "toinvalid.moc"
+
+#include "icons/refresh.xpm"
+#include "icons/toinvalid.xpm"
+#include "icons/compile.xpm"
+
+static toSQL SQLListInvalid("toInvalid:ListInvalid",
+                            "SELECT owner \"Owner\",object_name \"Object\",object_type \"Type\",status \"Status\"\n"
+                            "  FROM sys.all_objects\n"
+                            " WHERE status <> 'VALID'",
+                            "Get invalid objects, must have same first three columns.");
+
+static toSQL SQLListSource("toInvalid:ListSource",
+                           "SELECT Text FROM SYS.ALL_SOURCE\n"
+                           " WHERE Owner = :f1<char[101]> AND Name = :f2<char[101]> AND type = :f3<char[101]>",
+                           "List source of an object.");
+
+static toSQL SQLReadErrors("toInvalid:ReadErrors",
+                           "SELECT Line-1,Text FROM sys.All_Errors\n"
+                           " WHERE OWNER = :f1<char[101]>\n"
+                           "   AND NAME = :f2<char[101]>\n"
+                           "   AND TYPE = :f3<char[101]>",
+                           " ORDER BY Type,Line",
+                           "Get lines with errors in object (Observe first line 0)");
+
+class toInvalidTool : public toTool
+{
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(toinvalid_xpm);
+    }
+public:
+    toInvalidTool()
+            : toTool(130, "Invalid Objects")
+    { }
+    virtual const char *menuItem()
+    {
+        return "Invalid Objects";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        return new toInvalid(parent, connection);
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toInvalidTool InvalidTool;
+
+toInvalid::toInvalid(QWidget *main, toConnection &connection)
+        : toToolWidget(InvalidTool, "invalid.html", main, connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Invalid Objects"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Refresh list"),
+                    tr("Refresh list"),
+                    this, SLOT(refresh()),
+                    toolbar);
+
+    new QToolButton(QPixmap(const_cast<const char**>(compile_xpm)),
+                    tr("Recompile all invalid"),
+                    tr("Recompile all invalid"),
+                    this, SLOT(recompileSelected()),
+                    toolbar);
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    QSplitter *splitter = new QSplitter(Horizontal, this);
+
+    Objects = new toResultLong(false, false, toQuery::Background, splitter);
+    Objects->setSQL(SQLListInvalid);
+
+    Objects->setSelectionMode(QListView::Single);
+    connect(Objects, SIGNAL(selectionChanged()), this, SLOT(changeSelection()));
+
+    Source = new toResultExtract(false, splitter);
+    Source->setSQL(SQLListSource);
+
+    connect(Source, SIGNAL(executed()), this, SLOT(refresh()));
+
+#if 0
+
+    {
+        QValueList<int> sizes = splitter->sizes();
+        sizes[0] = 300;
+        splitter->setSizes(sizes);
+        splitter->setResizeMode(Objects, QSplitter::KeepSize);
+    }
+#endif
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    refresh();
+    setFocusProxy(Objects);
+}
+
+void toInvalid::recompileSelected(void)
+{
+    QProgressDialog progress(tr("Recompiling all invalid"),
+                             tr("Cancel"), Objects->childCount(), this, "progress", true);
+    progress.setCaption("Recompiling");
+    progress.show();
+
+
+    for (QListViewItem *item = Objects->firstChild();item;item = item->nextSibling())
+    {
+        toResultViewItem * ci = dynamic_cast<toResultViewItem *>(item);
+        if (ci)
+        {
+            toConnection &conn = connection();
+            progress.setLabelText("Recompiling " + ci->allText(1) + "." + ci->allText(2));
+            progress.setProgress(progress.progress() + 1);
+            qApp->processEvents();
+            if (progress.wasCancelled())
+                break;
+            QString type = ci->allText(2);
+            QString sql;
+            if (type == "INDEX")
+                sql = "ALTER " + ci->allText(2) + " " + conn.quote(ci->allText(0)) + "." + conn.quote(ci->allText(1)) + " REBUILD";
+            else if (type == "PACKAGE BODY")
+                sql = "ALTER PACKAGE " + conn.quote(ci->allText(0)) + "." + conn.quote(ci->allText(1)) + " COMPILE BODY";
+            else
+                sql = "ALTER " + ci->allText(2) + " " + conn.quote(ci->allText(0)) + "." + conn.quote(ci->allText(1)) + " COMPILE";
+            try
+            {
+                conn.execute(sql);
+            }
+            catch (...)
+            {}
+        }
+    }
+    if (progress.isVisible())
+        progress.close();
+    qApp->processEvents();
+    this->refresh();
+}
+
+void toInvalid::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Invalid|Refresh")));
+
+            toMainWidget()->menuBar()->insertItem(tr("&Invalid"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+void toInvalid::refresh(void)
+{
+    QListViewItem *item = Objects->selectedItem();
+    QString owner;
+    QString object;
+    QString type;
+    if (item)
+    {
+        owner = item->text(0);
+        object = item->text(1);
+        type = item->text(2);
+    }
+    Objects->refresh();
+    if (item)
+    {
+        for (item = Objects->firstChild();item;item = item->nextSibling())
+        {
+            if (item->text(0) == owner && item->text(1) == object && item->text(2) == type)
+            {
+                Objects->setSelected(item, true);
+                break;
+            }
+        }
+        changeSelection();
+    }
+}
+
+void toInvalid::changeSelection(void)
+{
+    try
+    {
+        QListViewItem *item = Objects->selectedItem();
+        if (item)
+        {
+            Source->changeParams(item->text(0), item->text(1), item->text(2));
+            std::map<int, QString> Errors;
+
+            toQuery errors(connection(), SQLReadErrors, item->text(0), item->text(1), item->text(2));
+            while (!errors.eof())
+            {
+                int line = errors.readValue().toInt();
+                Errors[line] += QString::fromLatin1(" ");
+                Errors[line] += errors.readValue();
+            }
+            Source->editor()->setErrors(Errors);
+        }
+    }
+    TOCATCH
+}

Added: kde-extras/tora/branches/upstream/current/src/toinvalid.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toinvalid.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toinvalid.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,67 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOINVALID_H
+#define TOINVALID_H
+
+#include "config.h"
+#include "totool.h"
+
+#include <list>
+
+class QPopupMenu;
+class toResultExtract;
+class toResultView;
+
+class toInvalid : public toToolWidget
+{
+    Q_OBJECT
+
+    toResultView *Objects;
+    toResultExtract *Source;
+    QPopupMenu *ToolMenu;
+public:
+    toInvalid(QWidget *parent, toConnection &connection);
+
+public slots:
+    virtual void changeSelection(void);
+    virtual void refresh(void);
+    virtual void recompileSelected(void);
+    virtual void windowActivated(QWidget *widget);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tolegendchart.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolegendchart.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolegendchart.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,210 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tolegendchart.h"
+
+#include <qpainter.h>
+#include <qpaintdevicemetrics.h>
+
+#include "tolegendchart.moc"
+
+toLegendChart::toLegendChart(int columns, QWidget *parent, const char *name, WFlags f)
+        : QWidget(parent, name, f)
+{
+    Columns = columns < 1 ? 1 : columns;
+    setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred));
+}
+
+void toLegendChart::addLabel(const QString &label)
+{
+    Labels.insert(Labels.end(), label);
+    sizeHint();
+    update();
+}
+
+void toLegendChart::setLabels(std::list<QString> &labels)
+{
+    Labels = labels;
+    sizeHint();
+    update();
+}
+
+#define FONT_ALIGN AlignLeft|AlignTop|ExpandTabs
+
+std::list<int> toLegendChart::sizeHint(int &height, int &items)
+{
+    QFontMetrics fm = fontMetrics();
+
+    int count = 0;
+    {
+        for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++)
+            if (!(*i).isEmpty() && *i != " ")
+                count++;
+    }
+
+    items = (count + Columns - 1) / Columns;
+
+    height = 0;
+    int width = 0;
+    int cheight = 0;
+    int cur = 0;
+    std::list<int> ret;
+
+    for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++)
+    {
+        if (!(*i).isEmpty() && *i != " ")
+        {
+            if (cur == items)
+            {
+                ret.insert(ret.end(), width);
+
+                if (cheight > height)
+                    height = cheight;
+                cheight = 0;
+                width = 0;
+                cur = 0;
+            }
+            QRect bounds = fm.boundingRect(0, 0, 10000, 10000, FONT_ALIGN, *i);
+            if (width < bounds.width())
+                width = bounds.width();
+            cheight += bounds.height();
+            cur++;
+        }
+    }
+    if (width > 0)
+    {
+        ret.insert(ret.end(), width);
+    }
+    if (cheight > height)
+        height = cheight;
+    return ret;
+}
+
+QSize toLegendChart::sizeHint(void)
+{
+    QFontMetrics fm = fontMetrics();
+
+    int height, items;
+
+    std::list<int> widths = sizeHint(height, items);
+
+    height += 8;
+    int width = 8;
+    for (std::list<int>::iterator i = widths.begin();i != widths.end();i++)
+        width += (*i) + 12;
+
+    setFixedWidth(width);
+
+    if (!Title.isEmpty())
+    {
+        QRect bounds = fm.boundingRect(0, 0, width, 10000, FONT_ALIGN, Title);
+        height += bounds.height() + 2;
+    }
+
+    return QSize(width, height);
+}
+
+void toLegendChart::paintEvent(QPaintEvent *)
+{
+    int height, items;
+    std::list<int> widths = sizeHint(height, items);
+
+    int width = 4;
+    {
+        for (std::list<int>::iterator i = widths.begin();i != widths.end();i++)
+            width += (*i) + 12;
+    }
+
+    QPainter p(this);
+    QFontMetrics fm = fontMetrics();
+
+    if (!Title.isEmpty())
+    {
+        p.save();
+        QFont f = p.font();
+        f.setBold(true);
+        p.setFont(f);
+        QRect bounds = fm.boundingRect(0, 0,
+                                       toLegendChart::width(),
+                                       toLegendChart::height(), FONT_ALIGN, Title);
+        p.drawText(0, 2,
+                   toLegendChart::width() - 4,
+                   toLegendChart::height(), AlignHCenter | AlignTop | ExpandTabs, Title);
+        p.restore();
+        p.translate(0, bounds.height() + 2);
+    }
+
+    int cx = 2;
+    int cy = 4;
+    p.save();
+    p.setBrush(white);
+    p.drawRect(2, 2, width, height + 4);
+    p.restore();
+    int cur = 0;
+    std::list<int>::iterator j = widths.begin();
+    int cp = 0;
+    for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++)
+    {
+        if (!(*i).isEmpty() && *i != " ")
+        {
+            if (cur == items)
+            {
+                cx += *j + 12;
+                cy = 4;
+                cur = 0;
+                j++;
+            }
+            QRect bounds = fm.boundingRect(cx + 12, cy, 100000, 100000, FONT_ALIGN, *i);
+            p.drawText(bounds, FONT_ALIGN, *i);
+            p.save();
+            QBrush brush(toChartBrush(cp));
+            p.setBrush(brush.color());
+            p.drawRect(cx + 2, cy + bounds.height() / 2 - fm.ascent() / 2, 8, fm.ascent());
+            if (brush.style() != QBrush::SolidPattern)
+            {
+                p.setBrush(QBrush(Qt::white, brush.style()));
+                p.drawRect(cx + 2, cy + bounds.height() / 2 - fm.ascent() / 2, 8, fm.ascent());
+            }
+            p.restore();
+            cy += bounds.height();
+            cur++;
+        }
+        cp++;
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/tolegendchart.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolegendchart.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolegendchart.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,109 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOLEGENDCHART_H
+#define TOLEGENDCHART_H
+
+#include "config.h"
+
+#include <list>
+
+#include <qwidget.h>
+
+/** A widget that displays a legend to other charts.
+ */
+
+class toLegendChart : public QWidget
+{
+    Q_OBJECT
+
+    int Columns;
+    QString Title;
+
+    std::list<QString> Labels;
+    std::list<int> sizeHint(int &height, int &items);
+public:
+    /** Create a new legend.
+     * @param columns Columns.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toLegendChart(int columns, QWidget *parent = NULL, const char *name = NULL, WFlags f = 0);
+
+    /** Set title of the chart. Set to empty string to not display title.
+     * @param title Title of chart.
+     */
+    void setTitle(const QString &title = QString::null)
+    {
+        Title = title;
+        update();
+    }
+    /** Get title of chart.
+     * @return Title of chart.
+     */
+    const QString &title(void)
+    {
+        return Title;
+    }
+
+    /** Set list of chart labels.
+     * @param labels List of labels, if label is empty it will not appear in legend.
+     */
+    void setLabels(std::list<QString> &labels);
+    /** Add a value to the chart.
+     * @param value New value to add.
+     * @param label Label of this new value.
+     */
+    void addLabel(const QString &label);
+    /** Get labels of chart.
+     * @return List of labels.
+     */
+    std::list<QString> &labels(void)
+    {
+        return Labels;
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual QSize sizeHint();
+protected:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void paintEvent(QPaintEvent *e);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tolinechart.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolinechart.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolinechart.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1002 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "tolinechart.h"
+#include "tolinechartsetupui.h"
+#include "tomain.h"
+#include "toresultview.h"
+#include "totool.h"
+
+#ifdef TO_HAS_KPRINT
+#include <kprinter.h>
+#endif
+
+#include <qcheckbox.h>
+#include <qlineedit.h>
+#include <qpaintdevicemetrics.h>
+#include <qpainter.h>
+#include <qpopupmenu.h>
+#include <qprinter.h>
+#include <qspinbox.h>
+#include <qvalidator.h>
+#include <qworkspace.h>
+
+#include "tolinechart.moc"
+#include "tolinechartsetupui.moc"
+
+#include "icons/print.xpm"
+#include "icons/chart.xpm"
+
+double toLineChart::round(double round, bool up)
+{
+    double base = 1.0E-5;
+    double mult = 1;
+    if (round < 0)
+    {
+        mult = -1;
+        round = -round;
+        up = !up;
+    }
+    for (;;base *= 10)
+    {
+        if (up)
+        {
+            if (base >= round)
+                return mult * base;
+            else if (base*2.5 >= round)
+                return mult*base*2.5;
+            else if (base*5 >= round)
+                return mult*base*5;
+        }
+        else if (base > round)
+        {
+            if (base / 2 <= round)
+                return mult*base / 2;
+            else if (base / 4 <= round)
+                return mult*base / 4;
+            else if (base / 10 <= round)
+                return mult*base / 10;
+            else
+                return 0;
+        }
+    }
+}
+
+void toLineChart::setSamples(int samples)
+{
+    Samples = samples;
+
+    if (Samples > 0)
+    {
+        while (int(XValues.size()) > Samples)
+            XValues.erase(XValues.begin());
+
+        for (std::list<std::list<double> >::iterator i = Values.begin();i != Values.end();i++)
+            while (int((*i).size()) > Samples)
+                (*i).erase((*i).begin());
+    }
+    update();
+}
+
+toLineChart::toLineChart(QWidget *parent, const char *name, WFlags f)
+        : QWidget(parent, name, f)
+{
+    setIcon(QPixmap((const char**)chart_xpm));
+    Menu = NULL;
+    MinAuto = MaxAuto = true;
+    MinValue = MaxValue = 0;
+    Legend = true;
+    Last = false;
+    Grid = 5;
+    AxisText = true;
+    MousePoint[0] = MousePoint[1] = QPoint( -1, -1);
+    DisplaySamples = toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_SAMPLES, DEFAULT_DISPLAY_SAMPLES).toInt();
+
+    clearZoom();
+
+    setSamples(toConfigurationSingle::Instance().globalConfig(CONF_CHART_SAMPLES, DEFAULT_CHART_SAMPLES).toInt());
+
+    setMinimumSize(80, 50);
+
+    // Use list font
+    QString str = toConfigurationSingle::Instance().globalConfig(CONF_LIST, "");
+    if (!str.isEmpty())
+    {
+        QFont font(toStringToFont(str));
+        setFont(font);
+    }
+
+    Horizontal = new QScrollBar(QScrollBar::Horizontal, this);
+    Horizontal->hide();
+    Vertical = new QScrollBar(QScrollBar::Vertical, this);
+    Vertical->hide();
+    connect(Vertical, SIGNAL(valueChanged(int)), this, SLOT(verticalChange(int)));
+    connect(Horizontal, SIGNAL(valueChanged(int)), this, SLOT(horizontalChange(int)));
+
+    toMainWidget()->addChart(this);
+}
+
+void toLineChart::addValues(std::list<double> &value, const QString &xValue)
+{
+    if (int(XValues.size()) == Samples && Samples > 0)
+        XValues.erase(XValues.begin());
+    XValues.insert(XValues.end(), xValue);
+
+    if (Samples > 0)
+        for (std::list<std::list<double> >::iterator i = Values.begin();i != Values.end();i++)
+            if (int((*i).size()) == Samples)
+                (*i).erase((*i).begin());
+
+    std::list<double>::iterator j = value.begin();
+    for (std::list<std::list<double> >::iterator i = Values.begin();i != Values.end() && j != value.end();i++)
+    {
+        (*i).insert((*i).end(), *j);
+        j++;
+    }
+    while (j != value.end())
+    {
+        std::list<double> t;
+        t.insert(t.end(), *j);
+        Values.insert(Values.end(), t);
+        j++;
+    }
+
+    emit valueAdded(value, xValue);
+
+    update();
+}
+
+QRect toLineChart::fixRect(QPoint p1, QPoint p2)
+{
+    if (p1.x() < Chart.x())
+        p1.setX(Chart.x());
+    if (p2.x() < Chart.x())
+        p2.setX(Chart.x());
+    if (p1.x() > Chart.x() + Chart.width())
+        p1.setX(Chart.x() + Chart.width());
+    if (p2.x() > Chart.x() + Chart.width())
+        p2.setX(Chart.x() + Chart.width());
+
+    if (p1.y() < Chart.y())
+        p1.setY(Chart.y());
+    if (p2.y() < Chart.y())
+        p2.setY(Chart.y());
+    if (p1.y() > Chart.y() + Chart.height())
+        p1.setY(Chart.y() + Chart.height());
+    if (p2.y() > Chart.y() + Chart.height())
+        p2.setY(Chart.y() + Chart.height());
+
+    return QRect(std::min(p1.x(), p2.x()),
+                 std::min(p1.y(), p2.y()),
+                 abs(p1.x() - p2.x()),
+                 abs(p1.y() - p2.y()));
+}
+
+#define FONT_ALIGN AlignLeft|AlignTop|ExpandTabs
+
+void toLineChart::paintTitle(QPainter *p, QRect &rect)
+{
+    if (!Title.isEmpty())
+    {
+        p->save();
+        QFont f = p->font();
+        f.setBold(true);
+        p->setFont(f);
+        QFontMetrics fm = p->fontMetrics();
+        QRect bounds = fm.boundingRect(0, 0, rect.width(), rect.width(), FONT_ALIGN, Title);
+        p->drawText(0, 2, rect.width(), bounds.height(), AlignHCenter | AlignTop | ExpandTabs, Title);
+        p->restore();
+        p->translate(0, bounds.height() + 2);
+        rect.setTop(rect.top() + bounds.height() + 2);
+    }
+    if (Last)
+    {
+        QString str;
+        for (std::list<std::list<double> >::iterator i = Values.begin();i != Values.end();i++)
+        {
+            if ((*i).begin() != (*i).end())
+            {
+                if (!str.isEmpty())
+                    str += QString::fromLatin1("\n");
+                str += toQValue::formatNumber(*(*i).rbegin());
+                str += YPostfix;
+            }
+        }
+        if (!str.isEmpty())
+        {
+            QFontMetrics fm = p->fontMetrics();
+            QRect bounds = fm.boundingRect(0, 0, rect.width(), rect.height(), FONT_ALIGN, str);
+            p->drawText(0, 2, rect.width(), bounds.height(), AlignHCenter | AlignTop | ExpandTabs, str);
+            p->translate(0, bounds.height());
+            rect.setTop(rect.top() + bounds.height());
+        }
+    }
+}
+
+void toLineChart::paintLegend(QPainter *p, QRect &rect)
+{
+    QFontMetrics fm = p->fontMetrics();
+    if (Legend)
+    {
+        int lwidth = 0;
+        int lheight = 0;
+
+        toResult *Result = dynamic_cast<toResult *>(this);
+
+        {
+            std::list<bool>::iterator j = Enabled.begin();
+            for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++)
+            {
+                QString t = toTranslateMayby(Result ? Result->sqlName() : QString::fromLatin1("toLineChart"), *i);
+                if (!t.isEmpty() && *i != " " && (j == Enabled.end() || *j))
+                {
+                    QRect bounds = fm.boundingRect(0, 0, 10000, 10000, FONT_ALIGN, t);
+                    if (lwidth < bounds.width())
+                        lwidth = bounds.width();
+                    lheight += bounds.height();
+                }
+                if (j != Enabled.end())
+                    j++;
+            }
+        }
+        if (lheight > 0)
+        {
+            lheight += 4;
+            lwidth += 14;
+        }
+        int lx = rect.width() - lwidth - 2;
+        int ly = 2;
+        if (lx < 50)
+            lx = 50;
+        p->save();
+        p->setBrush(white);
+        p->drawRect(lx, ly, lwidth, lheight);
+        p->restore();
+        rect.setRight(lx - 2);
+        lx += 12;
+        ly += 2;
+        int cp = 0;
+        std::list<bool>::iterator j = Enabled.begin();
+        for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++)
+        {
+            QString t = toTranslateMayby(Result ? Result->sqlName() : QString::fromLatin1("toLineChart"), *i);
+            QRect bounds = fm.boundingRect(lx, ly, 100000, 100000, FONT_ALIGN, t);
+            if (!t.isEmpty() && t != " " && (j == Enabled.end() || *j))
+            {
+                p->drawText(bounds, FONT_ALIGN, t);
+                p->save();
+                QBrush brush(toChartBrush(cp));
+                p->setBrush(brush.color());
+                p->drawRect(lx - 10, ly + bounds.height() / 2 - fm.ascent() / 2, 8, fm.ascent());
+                if (brush.style() != QBrush::SolidPattern)
+                {
+                    p->setBrush(QBrush(Qt::white, brush.style()));
+                    p->drawRect(lx - 10, ly + bounds.height() / 2 - fm.ascent() / 2, 8, fm.ascent());
+                }
+                p->restore();
+                ly += bounds.height();
+            }
+            cp++;
+            if (j != Enabled.end())
+                j++;
+        }
+    }
+}
+
+void toLineChart::paintAxis(QPainter *p, QRect &rect)
+{
+    QFontMetrics fm = p->fontMetrics();
+
+    bool leftAxis = true;
+    if ((zMaxValue == 0 || zMaxValue == round(0, true)) && zMinValue == 0)
+        leftAxis = false;
+
+    if (AxisText)
+    {
+        int yoffset = 0;
+        QString minstr;
+        QString maxstr;
+        QRect ybounds;
+        if (leftAxis)
+        {
+            minstr = toQValue::formatNumber(zMinValue);
+            maxstr = toQValue::formatNumber(zMaxValue);
+            maxstr += YPostfix;
+            QRect bounds = fm.boundingRect(0, 0, 100000, 100000, FONT_ALIGN, minstr);
+            yoffset = bounds.height();
+            ybounds = fm.boundingRect(0, 0, 100000, 100000, FONT_ALIGN, maxstr);
+            if (yoffset < ybounds.height())
+                yoffset = ybounds.height();
+        }
+
+        QString maxXstr;
+        QString minXstr;
+        int xoffset = 0;
+        if (XValues.size() > 1)
+        {
+
+            int count = 0;
+            for (std::list<QString>::reverse_iterator i = XValues.rbegin();i != XValues.rend();i++)
+            {
+                if (count == SkipSamples)
+                    maxXstr = *i;
+                else if (count <= SkipSamples + UseSamples - 1 || UseSamples < 0)
+                    minXstr = *i;
+                count++;
+            }
+
+            QRect bounds = fm.boundingRect(0, 0, 100000, 100000, FONT_ALIGN, minXstr);
+            xoffset = bounds.height();
+            bounds = fm.boundingRect(0, 0, 100000, 100000, FONT_ALIGN, maxXstr);
+            if (xoffset < bounds.height())
+                xoffset = bounds.height();
+
+            bool xscroll = false;
+            if ((UseSamples < count && UseSamples >= 0) || SkipSamples > 0)
+            {
+                xscroll = true;
+                xoffset += Horizontal->sizeHint().height();
+            }
+
+            bool yscroll = false;
+            if (Zooming && (MinValue != zMinValue || MaxValue != zMaxValue))
+            {
+                yscroll = true;
+                yoffset += Vertical->sizeHint().width();
+            }
+
+            if (zMinValue != 0 || zMaxValue != 0)
+            {
+                p->save();
+                p->rotate( -90);
+                p->drawText(xoffset - rect.height() + 2, fm.ascent() + 1, minstr);
+                p->drawText( -2 - ybounds.width(), fm.ascent() + 1, maxstr);
+                p->restore();
+            }
+            else
+                yoffset = (yscroll ? Horizontal->sizeHint().height() : 0);
+
+            p->drawText(yoffset + 2,
+                        rect.height() - xoffset - 2 + (xscroll ? Horizontal->sizeHint().height() : 0),
+                        rect.width() - 4 - yoffset,
+                        xoffset - (xscroll ? Horizontal->sizeHint().height() : 0),
+                        AlignLeft | AlignTop | ExpandTabs, minXstr);
+            p->drawText(yoffset + 2,
+                        rect.height() - xoffset - 2 + (xscroll ? Horizontal->sizeHint().height() : 0),
+                        rect.width() - 4 - yoffset,
+                        xoffset - (xscroll ? Horizontal->sizeHint().height() : 0),
+                        AlignRight | AlignTop | ExpandTabs, maxXstr);
+            p->translate(yoffset, 0);
+
+            rect.setLeft(yoffset);
+            rect.setBottom(rect.bottom() - xoffset);
+
+            if (xscroll)
+            {
+                Horizontal->setGeometry(yoffset + 2,
+                                        rect.bottom() - 1,
+                                        rect.width() - 3,
+                                        Horizontal->sizeHint().height());
+                disconnect(Horizontal, SIGNAL(valueChanged(int)), this, SLOT(horizontalChange(int)));
+                Horizontal->setMinValue(0);
+                Horizontal->setMaxValue(count - UseSamples);
+                Horizontal->setValue(count - UseSamples - SkipSamples);
+                connect(Horizontal, SIGNAL(valueChanged(int)), this, SLOT(horizontalChange(int)));
+                Horizontal->setSteps(1, UseSamples);
+                Horizontal->show();
+            }
+            else
+                Horizontal->hide();
+
+            if (yscroll)
+            {
+                int part = int(100.0 * (MaxValue - MinValue) / (zMaxValue - zMinValue));
+                Vertical->setGeometry(yoffset + 2 - Vertical->sizeHint().width(),
+                                      rect.top() + 2,
+                                      Vertical->sizeHint().width(),
+                                      rect.height() - 3);
+                disconnect(Vertical, SIGNAL(valueChanged(int)), this, SLOT(verticalChange(int)));
+                Vertical->setMinValue(0);
+                Vertical->setMaxValue(part - 100);
+
+                Vertical->setValue(int(100*(MaxValue - zMaxValue) / (zMaxValue - zMinValue)));
+
+                connect(Vertical, SIGNAL(valueChanged(int)), this, SLOT(verticalChange(int)));
+                Vertical->setSteps(10, 100);
+                Vertical->show();
+            }
+            else
+                Vertical->hide();
+
+        }
+    }
+
+    p->save();
+    p->setBrush(white);
+    Chart = QRect(rect.left() + 2, rect.top() + 2, rect.width() - 3, rect.height() - 3);
+    p->drawRect(2, 2, rect.width() - 3, rect.height() - 3);
+    p->restore();
+    if (Grid > 1)
+    {
+        p->save();
+        p->setPen(gray);
+        for (int i = 1;i < Grid;i++)
+        {
+            int ypos = (rect.height() - 4) * i / Grid + 2;
+            int xpos = (rect.width() - 4) * i / Grid + 2;
+            p->drawLine(3, ypos, rect.width() - 3, ypos);
+            p->drawLine(xpos, 3, xpos, rect.height() - 3);
+        }
+        p->restore();
+    }
+}
+
+void toLineChart::paintChart(QPainter *p, QRect &rect)
+{
+    if (!Zooming)
+    {
+        if (MinAuto || MaxAuto)
+        {
+            bool first = true;
+            std::list<bool>::iterator k = Enabled.begin();
+            for (std::list<std::list<double> >::iterator i = Values.begin();i != Values.end();i++)
+            {
+                if (k == Enabled.end() || *k)
+                {
+                    for (std::list<double>::iterator j = (*i).begin();j != (*i).end();j++)
+                    {
+                        if (first)
+                        {
+                            zMinValue = *j;
+                            zMaxValue = *j;
+                            first = false;
+                        }
+                        else if (zMaxValue < *j)
+                            zMaxValue = *j;
+                        else if (zMinValue > *j)
+                            zMinValue = *j;
+                    }
+                }
+                if (k != Enabled.end())
+                    k++;
+            }
+            zMaxValue = round(zMaxValue, true);
+            zMinValue = round(zMinValue, false);
+        }
+        if (!MinAuto)
+            zMinValue = MinValue;
+        else
+        {
+            zMinValue = round(zMinValue, false);
+            MinValue = zMinValue;
+        }
+        if (!MaxAuto)
+            zMaxValue = MaxValue;
+        else
+        {
+            zMaxValue = round(zMaxValue, true);
+            MaxValue = zMaxValue;
+        }
+    }
+
+    paintTitle(p, rect);
+    paintLegend(p, rect);
+    paintAxis(p, rect);
+
+    int cp = 0;
+    int samples = countSamples();
+    if (samples > 1)
+    {
+        const QWMatrix &mtx = p->worldMatrix();
+        p->setClipRect(int(mtx.dx() + 2), int(mtx.dy() + 2), rect.width() - 3, rect.height() - 3);
+        if (Zooming)
+            p->drawText(2, 2, rect.width() - 4, rect.height() - 4,
+                        AlignLeft | AlignTop, tr("Zoom"));
+        std::list<bool>::iterator k = Enabled.begin();
+        for (std::list<std::list<double> >::iterator i = Values.begin();i != Values.end();i++)
+        {
+            if (k == Enabled.end() || *k)
+            {
+                p->save();
+                QBrush brush(toChartBrush(cp));
+                Qt::PenStyle pens;
+                switch (brush.style())
+                {
+                case QBrush::BDiagPattern:
+                    pens = DashLine;
+                    break;
+                case QBrush::FDiagPattern:
+                    pens = DotLine;
+                    break;
+                case QBrush::DiagCrossPattern:
+                    pens = DashDotLine;
+                    break;
+                case QBrush::CrossPattern:
+                    pens = DashDotDotLine;
+                    break;
+                default:
+                    pens = SolidLine;
+                }
+                p->setPen(QPen(brush.color(), pens));
+                std::list<double> &val = *i;
+                int count = 0;
+                bool first = true;
+                int lval = 0;
+                int lx = rect.width() - 2;
+                int skip = SkipSamples;
+                for (std::list<double>::reverse_iterator j = val.rbegin();j != val.rend() && lx >=
+                        2;
+                        j++)
+                {
+                    if (skip > 0)
+                        skip--;
+                    else
+                    {
+                        int val = int(rect.height() - 2 - ((*j - zMinValue) / (zMaxValue - zMinValue) * (rect.height() - 4)));
+                        if (!first)
+                        {
+                            int x = lx;
+                            x = rect.width() - 2 - (count + 1) * (rect.width() - 4) / samples;
+                            p->drawLine(x, val, lx, lval);
+                            lx = x;
+                        }
+                        else
+                            first = false;
+                        lval = val;
+                        count++;
+                        if (count >= samples)
+                            break;
+                    }
+                }
+                p->restore();
+            }
+            cp++;
+            if (k != Enabled.end())
+                k++;
+        }
+    }
+}
+
+void toLineChart::paintEvent(QPaintEvent *)
+{
+    QPainter p(this);
+    p.setFont(font());
+    QRect rect(0, 0, width(), height());
+    paintChart(&p, rect);
+    MousePoint[1] = QPoint( -1, -1);
+}
+
+void toLineChart::mouseReleaseEvent(QMouseEvent *e)
+{
+    if (e->button() == LeftButton && MousePoint[0] != QPoint( -1, -1))
+    {
+        if (MousePoint[1] != QPoint( -1, -1))
+        {
+            QRect rect = fixRect(MousePoint[0], MousePoint[1]);
+            QPainter p(this);
+            p.setRasterOp(NotROP);
+            p.drawRect(rect);
+        }
+        if (MousePoint[0].x() != e->x() &&
+                MousePoint[0].y() != e->y())
+        {
+            QRect rect = fixRect(MousePoint[0], e->pos());
+            int samples = countSamples();
+            UseSamples = samples * rect.width() / Chart.width() + 1;
+            if (UseSamples < 2)
+                UseSamples = 2;
+            SkipSamples += samples * (Chart.width() + Chart.x() - rect.x() - rect.width()) / Chart.width();
+            Zooming = true;
+
+            double t = (zMaxValue - zMinValue) * (Chart.y() + Chart.height() - rect.y() - rect.height()) / Chart.height() + zMinValue;
+            zMaxValue = (zMaxValue - zMinValue) * (Chart.y() + Chart.height() - rect.y()) / Chart.height() + zMinValue;
+            zMinValue = t;
+            update();
+        }
+        MousePoint[1] = MousePoint[0] = QPoint( -1, -1);
+    }
+    else if (e->button() == RightButton)
+    {
+        if (Chart.contains(e->pos()))
+        {
+            clearZoom();
+            update();
+        }
+    }
+}
+
+int toLineChart::countSamples(void)
+{
+    int samples = UseSamples;
+    if (UseSamples <= 1)
+    {
+        if (Samples < 0)
+            samples = XValues.size();
+        else
+            samples = Samples;
+    }
+    return samples;
+}
+
+void toLineChart::mousePressEvent(QMouseEvent *e)
+{
+    if (e->button() == LeftButton)
+        MousePoint[0] = e->pos();
+    else if (e->button() == RightButton)
+    {
+        if (!Chart.contains(e->pos()) || !Zooming)
+        {
+            if (!Menu)
+            {
+                Menu = new QPopupMenu(this);
+                Menu->insertItem(QPixmap(const_cast<const char**>(print_xpm)), tr("&Print..."), this, SLOT(editPrint()));
+                Menu->insertItem(tr("&Open in new window"), this, SLOT(openCopy()));
+                Menu->insertSeparator();
+                Menu->insertItem(tr("&Chart Manager..."), this, SLOT(chartSetup()));
+                Menu->insertItem(tr("&Properties..."), this, SLOT(setup()));
+                Menu->insertSeparator();
+                Menu->insertItem(tr("Clear Chart"), this, SLOT(clear()));
+                addMenues(Menu);
+            }
+            Menu->popup(e->globalPos());
+        }
+    }
+}
+
+void toLineChart::chartSetup(void)
+{
+    toMainWidget()->setupChart(this);
+}
+
+void toLineChart::setup(void)
+{
+    toLineChartSetupUI setup(this, NULL, true);
+    setup.MinValue->setText(toQValue::formatNumber(MinValue));
+    setup.MaxValue->setText(toQValue::formatNumber(MaxValue));
+    setup.AutoMax->setChecked(MaxAuto);
+    setup.AutoMin->setChecked(MinAuto);
+    setup.ShowAxis->setChecked(AxisText);
+    setup.ShowLast->setChecked(Last);
+    setup.ShowLegend->setChecked(Legend);
+    setup.Grids->setValue(Grid);
+
+    setup.Enabled->addColumn(tr("Enabled charts"));
+    std::list<QString>::iterator i = Labels.begin();
+    std::list<bool>::iterator j = Enabled.begin();
+    QListViewItem *item = NULL;
+    setup.Enabled->setSorting( -1);
+    setup.Enabled->setSelectionMode(QListView::Multi);
+    while (i != Labels.end())
+    {
+        item = new toResultViewItem(setup.Enabled, item, *i);
+        if (j != Enabled.end())
+        {
+            if (*j)
+                item->setSelected(true);
+            j++;
+        }
+        else
+            item->setSelected(true);
+        i++;
+    }
+
+    setup.MaxValue->setValidator(new QDoubleValidator(setup.MaxValue));
+    setup.MinValue->setValidator(new QDoubleValidator(setup.MinValue));
+    if (Samples < 0)
+    {
+        setup.UnlimitedSamples->setChecked(true);
+        setup.Samples->setValue(XValues.size());
+    }
+    else
+        setup.Samples->setValue(Samples);
+
+    if (DisplaySamples < 0)
+    {
+        setup.AllSamples->setChecked(true);
+        setup.DisplaySamples->setValue(setup.Samples->value());
+    }
+    else
+        setup.DisplaySamples->setValue(DisplaySamples);
+
+    if (setup.exec())
+    {
+        MinValue = setup.MinValue->text().toDouble();
+        MaxValue = setup.MaxValue->text().toDouble();
+        MaxAuto = setup.AutoMax->isChecked();
+        MinAuto = setup.AutoMin->isChecked();
+        AxisText = setup.ShowAxis->isChecked();
+        Last = setup.ShowLast->isChecked();
+        Legend = setup.ShowLegend->isChecked();
+
+        if (setup.AllSamples->isChecked())
+        {
+            if (DisplaySamples == UseSamples)
+                UseSamples = DisplaySamples = -1;
+            else
+                DisplaySamples = -1;
+        }
+        else
+        {
+            if (DisplaySamples == UseSamples)
+                UseSamples = DisplaySamples = setup.DisplaySamples->value();
+            else
+                DisplaySamples = setup.DisplaySamples->value();
+        }
+
+        if (setup.UnlimitedSamples->isChecked())
+            setSamples( -1);
+        else
+            setSamples(setup.Samples->value());
+
+
+        Grid = setup.Grids->value();
+
+        std::list<bool> ena;
+        for (QListViewItem *item = setup.Enabled->firstChild();item;item = item->nextSibling())
+            ena.insert(ena.end(), item->isSelected());
+
+        Enabled = ena;
+
+        update();
+    }
+}
+
+void toLineChart::editPrint(void)
+{
+    TOPrinter printer;
+    printer.setMinMax(1, 1);
+    if (printer.setup())
+    {
+        printer.setCreator(tr(TOAPPNAME));
+        QPainter painter(&printer);
+        QPaintDeviceMetrics metrics(&printer);
+        QRect rect(0, 0, metrics.width(), metrics.height());
+        paintChart(&painter, rect);
+    }
+}
+
+void toLineChart::clearZoom(void)
+{
+    Zooming = false;
+    SkipSamples = 0;
+    UseSamples = DisplaySamples;
+    zMinValue = -1;
+    zMaxValue = -1;
+}
+
+void toLineChart::mouseMoveEvent(QMouseEvent *e)
+{
+    if (MousePoint[0] != QPoint( -1, -1))
+    {
+        QPainter p(this);
+        p.setRasterOp(NotROP);
+        if (MousePoint[1] != QPoint( -1, -1))
+            p.drawRect(fixRect(MousePoint[0], MousePoint[1]));
+        MousePoint[1] = e->pos();
+        p.drawRect(fixRect(MousePoint[0], MousePoint[1]));
+    }
+}
+
+
+void toLineChart::mouseDoubleClickEvent(QMouseEvent *e)
+{
+    if (e->button() == LeftButton)
+        openCopy();
+}
+
+toLineChart *toLineChart::openCopy(QWidget *parent)
+{
+    toLineChart *newWin = new toLineChart(this,
+                                          parent ? parent : toMainWidget()->workspace(),
+                                          NULL, parent ? 0 : WDestructiveClose);
+    if (!parent)
+    {
+        newWin->show();
+        newWin->raise();
+        newWin->setFocus();
+        toMainWidget()->windowsMenu();
+
+#if QT_VERSION < 0x030100
+        // This is a really ugly workaround for a Qt layout bug
+        QWidget *tmp = NULL;
+        QWidget *tmp2 = NULL;
+        for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).count();i++)
+        {
+            QWidget *widget = toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).at(i);
+            if (newWin != widget)
+                tmp2 = widget;
+            else
+                tmp = newWin;
+            if (tmp2 && tmp)
+                break;
+        }
+        if (tmp2 && tmp)
+        {
+            tmp2->setFocus();
+            tmp->setFocus();
+        }
+#endif
+
+    }
+    return newWin;
+}
+
+toLineChart::~toLineChart()
+{
+    toMainWidget()->removeChart(this);
+}
+
+toLineChart::toLineChart (toLineChart *chart, QWidget *parent, const char *name, WFlags f)
+        : QWidget(parent, name, f)
+{
+    Menu = NULL;
+    Values = chart->Values;
+    XValues = chart->XValues;
+    Labels = chart->Labels;
+    Legend = chart->Legend;
+    Last = false;
+    Grid = 5;
+    AxisText = true;
+    MinValue = chart->MinValue;
+    MinAuto = chart->MinAuto;
+    MaxValue = chart->MaxValue;
+    MaxAuto = chart->MaxAuto;
+    Samples = chart->Samples;
+    Title = chart->Title;
+    YPostfix = chart->YPostfix;
+    DisplaySamples = chart->DisplaySamples;
+    Enabled = chart->Enabled;
+
+    setCaption(Title);
+    setIcon(QPixmap((const char**)chart_xpm));
+
+    clearZoom();
+
+    setMinimumSize(80, 50);
+
+    Horizontal = new QScrollBar(QScrollBar::Horizontal, this);
+    Horizontal->hide();
+    Vertical = new QScrollBar(QScrollBar::Vertical, this);
+    Vertical->hide();
+    connect(Vertical, SIGNAL(valueChanged(int)), this, SLOT(verticalChange(int)));
+    connect(Horizontal, SIGNAL(valueChanged(int)), this, SLOT(horizontalChange(int)));
+
+    // Use list font
+    QString str = toConfigurationSingle::Instance().globalConfig(CONF_LIST, "");
+    if (!str.isEmpty())
+    {
+        QFont font(toStringToFont(str));
+        setFont(font);
+    }
+
+    toMainWidget()->addChart(this);
+}
+
+void toLineChart::exportData(std::map<QCString, QString> &ret, const QCString &prefix)
+{
+    int id = 0;
+    {
+        for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++)
+        {
+            id++;
+            ret[prefix + ":Labels:" + QString::number(id).latin1()] = *i;
+        }
+    }
+    id = 0;
+    {
+        for (std::list<QString>::iterator i = XValues.begin();i != XValues.end();i++)
+        {
+            id++;
+            ret[prefix + ":XValues:" + QString::number(id).latin1()] = *i;
+        }
+    }
+    id = 0;
+    for (std::list<std::list<double> >::iterator i = Values.begin();i != Values.end();i++)
+    {
+        QString value;
+
+        for (std::list<double>::iterator j = (*i).begin();j != (*i).end();j++)
+        {
+            if (!value.isNull())
+                value += QString::fromLatin1(",");
+            value += QString::number(*j);
+        }
+        id++;
+        ret[prefix + ":Values:" + QString::number(id).latin1()] = value;
+    }
+    ret[prefix + ":Title"] = Title;
+}
+
+void toLineChart::importData(std::map<QCString, QString> &ret, const QCString &prefix)
+{
+    int id;
+    std::map<QCString, QString>::iterator i;
+
+    id = 1;
+    Labels.clear();
+    while ((i = ret.find(prefix + ":Labels:" + QString::number(id).latin1())) != ret.end())
+    {
+        Labels.insert(Labels.end(), (*i).second);
+        id++;
+    }
+
+    id = 1;
+    XValues.clear();
+    while ((i = ret.find(prefix + ":XValues:" + QString::number(id).latin1())) != ret.end())
+    {
+        XValues.insert(XValues.end(), (*i).second);
+        id++;
+    }
+
+    id = 1;
+    Values.clear();
+    QRegExp comma(QString::fromLatin1(","));
+    while ((i = ret.find(prefix + ":Values:" + QString::number(id).latin1())) != ret.end())
+    {
+        QStringList lst = QStringList::split(comma, (*i).second);
+        std::list<double> vals;
+        for (unsigned int j = 0;j < lst.count();j++)
+            vals.insert(vals.end(), lst[j].toDouble());
+
+        Values.insert(Values.end(), vals);
+        id++;
+    }
+    Samples = id - 2;
+    Title = ret[prefix + ":Title"];
+    update();
+}
+
+void toLineChart::horizontalChange(int val)
+{
+    SkipSamples = XValues.size() - UseSamples - val;
+    update();
+}
+
+void toLineChart::verticalChange(int val)
+{
+    double size = (zMaxValue - zMinValue);
+    zMaxValue = MaxValue - size / 100 * val;
+    if (val == Vertical->maxValue())
+        zMinValue = MinValue;
+    else
+        zMinValue = MaxValue - size / 100 * (val + 100);
+
+    update();
+}

Added: kde-extras/tora/branches/upstream/current/src/tolinechart.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolinechart.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolinechart.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,380 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOLINECHART_H
+#define TOLINECHART_H
+
+#include "config.h"
+
+#include <list>
+#include <map>
+#include <algorithm>
+
+#include <qwidget.h>
+
+class QPopupMenu;
+class QScrollBar;
+
+/** A widget that displays a linechart with optional background throbber (Not implemented yet).
+ */
+
+class toLineChart : public QWidget
+{
+    Q_OBJECT
+
+    QPopupMenu *Menu;
+
+    QScrollBar *Horizontal;
+    QScrollBar *Vertical;
+
+protected:
+    std::list<std::list<double> > Values;
+    std::list<QString> XValues;
+    std::list<QString> Labels;
+    std::list<bool> Enabled;
+    bool Legend;
+    bool Last;
+    int Grid;
+    bool AxisText;
+    double MinValue;
+    bool MinAuto;
+    double MaxValue;
+    bool MaxAuto;
+    QString YPostfix;
+    int Samples;
+    QString Title;
+
+    QRect Chart;
+    QPoint MousePoint[2];
+    int SkipSamples;
+    int UseSamples;
+    int DisplaySamples;
+    bool Zooming;
+    double zMinValue;
+    double zMaxValue;
+
+    static double round(double round, bool up);
+    QRect fixRect(QPoint p1, QPoint p2);
+    virtual void mouseReleaseEvent(QMouseEvent *e);
+    virtual void mouseMoveEvent(QMouseEvent *e);
+    virtual void mouseDoubleClickEvent(QMouseEvent *e);
+    virtual void mousePressEvent(QMouseEvent *e);
+
+    int countSamples(void);
+    void clearZoom(void);
+
+    virtual void paintLegend(QPainter *p, QRect &rect);
+    virtual void paintTitle(QPainter *p, QRect &rect);
+    virtual void paintAxis(QPainter *p, QRect &rect);
+    virtual void paintChart(QPainter *p, QRect &rect);
+public:
+    /** Create a new linechart.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toLineChart(QWidget *parent = NULL, const char *name = NULL, WFlags f = 0);
+
+    /** Create a new chart by copying all the data from another chart.
+     * @param chart Chart to copy data from.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toLineChart(toLineChart *chart, QWidget *parent = NULL, const char *name = NULL, WFlags f = 0);
+
+    /** Destroy chart
+     */
+    ~toLineChart();
+
+    /** Specify if legend should be displayed to the right of the graph, default is on.
+     * @param on Whether to display legend or not.
+     */
+    void showLegend(bool on)
+    {
+        Legend = on;
+        update();
+    }
+    /** Check if legend is displayed or not.
+     * @return If legend is displayed or not.
+     */
+    bool legend(void) const
+    {
+        return Legend;
+    }
+
+    /** Show most recent value on top of graph
+     * @param on Whether to display or not.
+     */
+    void showLast(bool on)
+    {
+        Last = on;
+        update();
+    }
+    /** Check if last value is displayed or not.
+     * @return If value is displayed or not.
+     */
+    bool last(void) const
+    {
+        return Last;
+    }
+
+    /** Set title of the chart. Set to empty string to not display title.
+     * @param title Title of chart.
+     */
+    void setTitle(const QString &title = QString::null)
+    {
+        Title = title;
+        setCaption(title);
+        update();
+    }
+    /** Get title of chart.
+     * @return Title of chart.
+     */
+    const QString &title(void)
+    {
+        return Title;
+    }
+
+    /** Specify if a grid should be displayed in the graph, default is on.
+     * @param div Number of parts to divide grid into.
+     */
+    void showGrid(int div = 0)
+    {
+        Grid = div;
+        update();
+    }
+    /** Check if grid is displayed or not.
+     * @return Number of parts to divide grid into.
+     */
+    int grid(void) const
+    {
+        return Grid;
+    }
+
+    /** Specify if a y-axis legend should be displayed in the graph, default is on.
+     * @param on Whether to display legend or not.
+     */
+    void showAxisLegend(bool on)
+    {
+        AxisText = on;
+        update();
+    }
+    /** Check if y-axis legend is displayed or not.
+     * @return If legend is displayed or not.
+     */
+    bool axisLegend(void) const
+    {
+        return AxisText;
+    }
+
+    /** Set y postfix value. This will be appended to the values in the axis legend.
+     * @param postfix The string to append.
+     */
+    void setYPostfix(const QString &postfix)
+    {
+        YPostfix = postfix;
+        update();
+    }
+    /** Set max value on y-axis to auto.
+     */
+    void setMaxValueAuto(void)
+    {
+        MaxAuto = true;
+        update();
+    }
+    /** Set min value on y-axis to auto.
+     */
+    void setMinValueAuto(void)
+    {
+        MinAuto = true;
+        update();
+    }
+    /** Set max value on y-axis.
+     * @param val Max value on y-axis.
+     */
+    void setMaxValue(double maxVal)
+    {
+        MaxAuto = false;
+        MaxValue = maxVal;
+        update();
+    }
+    /** Set min value on y-axis.
+     * @param val Min value on y-axis.
+     */
+    void setMinValue(double minVal)
+    {
+        MinAuto = false;
+        MinValue = minVal;
+        update();
+    }
+    /** Get minimum value on y-axis. Will not return the automatically determinned minimum value.
+     * @return Minimum value on y-axis.
+     */
+    double minValue(void) const
+    {
+        return MinValue;
+    }
+    /** Get maximum value on y-axis. Will not return the automatically determinned maximum value.
+     * @return Maximum value on y-axis.
+     */
+    double maxValue(void) const
+    {
+        return MaxValue;
+    }
+
+    /** Set the number of samples on the x-axis. Setting samples to -1 will keep all entries.
+     * @param samples Number of samples.
+     */
+    void setSamples(int samples = -1);
+    /** Get the maximum number of samples on the x-axis.
+     * @return Max number of samples.
+     */
+    int samples(void) const
+    {
+        return Samples;
+    }
+
+    /** Set the labels on the chart lines.
+     * @param labels Labels of the lines. Empty labels will not show up in the legend.
+     */
+    void setLabels(const std::list<QString> &labels)
+    {
+        Labels = labels;
+        update();
+    }
+    /** Get the labels of the chart lines.
+     * @return List of labels.
+     */
+    std::list<QString> &labels(void)
+    {
+        return Labels;
+    }
+
+    /** Add a new value set to the chart.
+     * @param value New values for charts (One for each line).
+     * @param label X-value on these values.
+     */
+    virtual void addValues(std::list<double> &value, const QString &xValues);
+
+    /** Get list of labels
+     * @return List of labels
+     */
+    std::list<QString> &xValues(void)
+    {
+        return XValues;
+    }
+
+    /** Get list of values.
+     * @return Values in piechart.
+     */
+    std::list<std::list<double> > &values(void)
+    {
+        return Values;
+    }
+
+    /** Export chart to a map.
+     * @param data A map that can be used to recreate the data of a chart.
+     * @param prefix Prefix to add to the map.
+     */
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Import data
+     * @param data Data to read from a map.
+     * @param prefix Prefix to read data from.
+     */
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+
+    /** Get enabled datavalues. Values in this list with false are not drawn in the chart.
+     * Could be an empty list if everything is enabled.
+     */
+    std::list<bool> enabledCharts(void)
+    {
+        return Enabled;
+    }
+    /** Set enabled datavalues. Values in this list with false are not drawn in the chart.
+     */
+    void setEnabledCharts(std::list<bool> &enabled)
+    {
+        Enabled = enabled;
+        update();
+    }
+    /** Open chart in new window.
+     */
+    virtual toLineChart *openCopy(QWidget *parent);
+signals:
+    /** A new value set was added to the chart.
+     * @param value New values for charts (One for each line).
+     * @param label X-value on these values.
+     */
+    virtual void valueAdded(std::list<double> &value, const QString &xValues);
+public slots:
+    /** Clear the values from the chart.
+     */
+    virtual void clear(void)
+    {
+        Values.clear();
+        XValues.clear();
+        update();
+    }
+
+    /** Setup values of charts.
+     */
+    virtual void setup(void);
+
+    /** Print the chart.
+     */
+    virtual void editPrint(void);
+
+    void openCopy(void)
+    {
+        openCopy(NULL);
+    }
+protected:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void paintEvent(QPaintEvent *e);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void addMenues(QPopupMenu *)
+    { }
+private slots:
+    void horizontalChange(int);
+    void verticalChange(int);
+    void chartSetup(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,196 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tolinechartsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:22 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tolinechartsetupui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qspinbox.h>
+#include <qlabel.h>
+#include <qgroupbox.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "toresultview.h"
+
+/*
+ *  Constructs a toLineChartSetupUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toLineChartSetupUI::toLineChartSetupUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toLineChartSetupUI" );
+    toLineChartSetupUILayout = new QGridLayout( this, 1, 1, 11, 6, "toLineChartSetupUILayout"); 
+
+    Samples = new QSpinBox( this, "Samples" );
+    Samples->setMaxValue( 1000 );
+
+    toLineChartSetupUILayout->addWidget( Samples, 5, 1 );
+
+    TextLabel1_2 = new QLabel( this, "TextLabel1_2" );
+
+    toLineChartSetupUILayout->addWidget( TextLabel1_2, 5, 0 );
+
+    GroupBox1 = new QGroupBox( this, "GroupBox1" );
+    GroupBox1->setColumnLayout(0, Qt::Vertical );
+    GroupBox1->layout()->setSpacing( 6 );
+    GroupBox1->layout()->setMargin( 11 );
+    GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
+    GroupBox1Layout->setAlignment( Qt::AlignTop );
+
+    TextLabel1 = new QLabel( GroupBox1, "TextLabel1" );
+
+    GroupBox1Layout->addWidget( TextLabel1, 0, 0 );
+
+    TextLabel4 = new QLabel( GroupBox1, "TextLabel4" );
+
+    GroupBox1Layout->addWidget( TextLabel4, 3, 0 );
+
+    MinValue = new QLineEdit( GroupBox1, "MinValue" );
+
+    GroupBox1Layout->addWidget( MinValue, 5, 0 );
+
+    MaxValue = new QLineEdit( GroupBox1, "MaxValue" );
+
+    GroupBox1Layout->addWidget( MaxValue, 2, 0 );
+
+    AutoMax = new QCheckBox( GroupBox1, "AutoMax" );
+
+    GroupBox1Layout->addWidget( AutoMax, 1, 0 );
+
+    AutoMin = new QCheckBox( GroupBox1, "AutoMin" );
+
+    GroupBox1Layout->addWidget( AutoMin, 4, 0 );
+
+    toLineChartSetupUILayout->addMultiCellWidget( GroupBox1, 0, 0, 0, 2 );
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toLineChartSetupUILayout->addItem( Spacer2, 7, 1 );
+
+    ShowLast = new QCheckBox( this, "ShowLast" );
+
+    toLineChartSetupUILayout->addMultiCellWidget( ShowLast, 1, 1, 0, 2 );
+
+    ShowAxis = new QCheckBox( this, "ShowAxis" );
+
+    toLineChartSetupUILayout->addMultiCellWidget( ShowAxis, 2, 2, 0, 2 );
+
+    ShowLegend = new QCheckBox( this, "ShowLegend" );
+
+    toLineChartSetupUILayout->addMultiCellWidget( ShowLegend, 3, 3, 0, 2 );
+
+    OkButton = new QPushButton( this, "OkButton" );
+    OkButton->setDefault( TRUE );
+
+    toLineChartSetupUILayout->addWidget( OkButton, 8, 3 );
+
+    CancelButton = new QPushButton( this, "CancelButton" );
+
+    toLineChartSetupUILayout->addWidget( CancelButton, 8, 4 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toLineChartSetupUILayout->addMultiCell( Spacer1, 8, 8, 0, 2 );
+
+    Enabled = new toListView( this, "Enabled" );
+
+    toLineChartSetupUILayout->addMultiCellWidget( Enabled, 0, 7, 3, 4 );
+
+    DisplaySamples = new QSpinBox( this, "DisplaySamples" );
+    DisplaySamples->setMaxValue( 1000 );
+
+    toLineChartSetupUILayout->addWidget( DisplaySamples, 6, 1 );
+
+    AllSamples = new QCheckBox( this, "AllSamples" );
+
+    toLineChartSetupUILayout->addWidget( AllSamples, 6, 2 );
+
+    TextLabel1_2_2 = new QLabel( this, "TextLabel1_2_2" );
+
+    toLineChartSetupUILayout->addWidget( TextLabel1_2_2, 6, 0 );
+
+    UnlimitedSamples = new QCheckBox( this, "UnlimitedSamples" );
+
+    toLineChartSetupUILayout->addWidget( UnlimitedSamples, 5, 2 );
+
+    TextLabel5 = new QLabel( this, "TextLabel5" );
+    TextLabel5->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, 0, 0, TextLabel5->sizePolicy().hasHeightForWidth() ) );
+
+    toLineChartSetupUILayout->addWidget( TextLabel5, 4, 0 );
+
+    Grids = new QSpinBox( this, "Grids" );
+
+    toLineChartSetupUILayout->addWidget( Grids, 4, 1 );
+    languageChange();
+    resize( QSize(596, 483).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( AutoMax, SIGNAL( toggled(bool) ), MaxValue, SLOT( setDisabled(bool) ) );
+    connect( AutoMin, SIGNAL( toggled(bool) ), MinValue, SLOT( setDisabled(bool) ) );
+    connect( OkButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( CancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( UnlimitedSamples, SIGNAL( toggled(bool) ), Samples, SLOT( setDisabled(bool) ) );
+    connect( AllSamples, SIGNAL( toggled(bool) ), DisplaySamples, SLOT( setDisabled(bool) ) );
+
+    // tab order
+    setTabOrder( AutoMax, MaxValue );
+    setTabOrder( MaxValue, AutoMin );
+    setTabOrder( AutoMin, MinValue );
+    setTabOrder( MinValue, ShowLast );
+    setTabOrder( ShowLast, ShowAxis );
+    setTabOrder( ShowAxis, ShowLegend );
+    setTabOrder( ShowLegend, Grids );
+    setTabOrder( Grids, Samples );
+    setTabOrder( Samples, UnlimitedSamples );
+    setTabOrder( UnlimitedSamples, DisplaySamples );
+    setTabOrder( DisplaySamples, AllSamples );
+    setTabOrder( AllSamples, OkButton );
+    setTabOrder( OkButton, CancelButton );
+
+    // buddies
+    TextLabel5->setBuddy( Grids );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toLineChartSetupUI::~toLineChartSetupUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toLineChartSetupUI::languageChange()
+{
+    setCaption( tr( "Chart setup" ) );
+    TextLabel1_2->setText( tr( "Number of samples to keep" ) );
+    GroupBox1->setTitle( tr( "Y-axis" ) );
+    TextLabel1->setText( tr( "Max value" ) );
+    TextLabel4->setText( tr( "Min value" ) );
+    AutoMax->setText( tr( "Auto detect" ) );
+    AutoMin->setText( tr( "Auto detect" ) );
+    ShowLast->setText( tr( "Show last value" ) );
+    ShowAxis->setText( tr( "Show axis legend" ) );
+    ShowLegend->setText( tr( "Show chart legend" ) );
+    OkButton->setText( tr( "&Ok" ) );
+    CancelButton->setText( tr( "Cancel" ) );
+    AllSamples->setText( tr( "All" ) );
+    TextLabel1_2_2->setText( tr( "Maximum number of samples to display" ) );
+    UnlimitedSamples->setText( tr( "Unlimited" ) );
+    TextLabel5->setText( tr( "Divide chart in grids?" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,73 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tolinechartsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:22 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOLINECHARTSETUPUI_H
+#define TOLINECHARTSETUPUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toListView;
+class QSpinBox;
+class QLabel;
+class QGroupBox;
+class QLineEdit;
+class QCheckBox;
+class QPushButton;
+
+class toLineChartSetupUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toLineChartSetupUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toLineChartSetupUI();
+
+    QSpinBox* Samples;
+    QLabel* TextLabel1_2;
+    QGroupBox* GroupBox1;
+    QLabel* TextLabel1;
+    QLabel* TextLabel4;
+    QLineEdit* MinValue;
+    QLineEdit* MaxValue;
+    QCheckBox* AutoMax;
+    QCheckBox* AutoMin;
+    QCheckBox* ShowLast;
+    QCheckBox* ShowAxis;
+    QCheckBox* ShowLegend;
+    QPushButton* OkButton;
+    QPushButton* CancelButton;
+    toListView* Enabled;
+    QSpinBox* DisplaySamples;
+    QCheckBox* AllSamples;
+    QLabel* TextLabel1_2_2;
+    QCheckBox* UnlimitedSamples;
+    QLabel* TextLabel5;
+    QSpinBox* Grids;
+
+protected:
+    QGridLayout* toLineChartSetupUILayout;
+    QSpacerItem* Spacer2;
+    QSpacerItem* Spacer1;
+    QGridLayout* GroupBox1Layout;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOLINECHARTSETUPUI_H

Added: kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolinechartsetupui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,391 @@
+<!DOCTYPE UI><UI>
+<class>toLineChartSetupUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toLineChartSetupUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>596</width>
+            <height>483</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Chart setup</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="5"  column="1" >
+            <class>QSpinBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Samples</cstring>
+            </property>
+            <property stdset="1">
+                <name>maxValue</name>
+                <number>1000</number>
+            </property>
+        </widget>
+        <widget row="5"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Number of samples to keep</string>
+            </property>
+        </widget>
+        <widget row="0"  column="0"  rowspan="1"  colspan="3" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>GroupBox1</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Y-axis</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Max value</string>
+                    </property>
+                </widget>
+                <widget row="3"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel4</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Min value</string>
+                    </property>
+                </widget>
+                <widget row="5"  column="0" >
+                    <class>QLineEdit</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>MinValue</cstring>
+                    </property>
+                </widget>
+                <widget row="2"  column="0" >
+                    <class>QLineEdit</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>MaxValue</cstring>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>AutoMax</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Auto detect</string>
+                    </property>
+                </widget>
+                <widget row="4"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>AutoMin</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Auto detect</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <spacer row="7"  column="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ShowLast</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Show last value</string>
+            </property>
+        </widget>
+        <widget row="2"  column="0"  rowspan="1"  colspan="3" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ShowAxis</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Show axis legend</string>
+            </property>
+        </widget>
+        <widget row="3"  column="0"  rowspan="1"  colspan="3" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ShowLegend</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Show chart legend</string>
+            </property>
+        </widget>
+        <widget row="8"  column="3" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>OkButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="8"  column="4" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>CancelButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <spacer row="8"  column="0"  rowspan="1"  colspan="3" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="0"  column="3"  rowspan="8"  colspan="2" >
+            <class>toListView</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Enabled</cstring>
+            </property>
+        </widget>
+        <widget row="6"  column="1" >
+            <class>QSpinBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>DisplaySamples</cstring>
+            </property>
+            <property stdset="1">
+                <name>maxValue</name>
+                <number>1000</number>
+            </property>
+        </widget>
+        <widget row="6"  column="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>AllSamples</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>All</string>
+            </property>
+        </widget>
+        <widget row="6"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1_2_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Maximum number of samples to display</string>
+            </property>
+        </widget>
+        <widget row="5"  column="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>UnlimitedSamples</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Unlimited</string>
+            </property>
+        </widget>
+        <widget row="4"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel5</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>7</hsizetype>
+                    <vsizetype>1</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Divide chart in grids?</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Grids</cstring>
+            </property>
+        </widget>
+        <widget row="4"  column="1" >
+            <class>QSpinBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Grids</cstring>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toListView</class>
+        <header location="local">toresultview.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>AutoMax</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>MaxValue</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>AutoMin</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>MinValue</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>OkButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toLineChartSetupUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>CancelButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toLineChartSetupUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>UnlimitedSamples</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Samples</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>AllSamples</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>DisplaySamples</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>AutoMax</tabstop>
+    <tabstop>MaxValue</tabstop>
+    <tabstop>AutoMin</tabstop>
+    <tabstop>MinValue</tabstop>
+    <tabstop>ShowLast</tabstop>
+    <tabstop>ShowAxis</tabstop>
+    <tabstop>ShowLegend</tabstop>
+    <tabstop>Grids</tabstop>
+    <tabstop>Samples</tabstop>
+    <tabstop>UnlimitedSamples</tabstop>
+    <tabstop>DisplaySamples</tabstop>
+    <tabstop>AllSamples</tabstop>
+    <tabstop>OkButton</tabstop>
+    <tabstop>CancelButton</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformatter.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformatter.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformatter.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,47 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "tolistviewformatter.h"
+
+toListViewFormatter::toListViewFormatter()
+{
+}
+
+toListViewFormatter::~toListViewFormatter()
+{
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformatter.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformatter.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformatter.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,53 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+#ifndef TOLISTVIEWFORMATTER
+#define TOLISTVIEWFORMATTER
+
+#include <qstring.h>
+
+class toListView;
+
+
+class toListViewFormatter
+{
+public:
+   toListViewFormatter();
+   virtual ~toListViewFormatter();
+   virtual QString getFormattedString(toListView& tListView) = 0;   
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformattercsv.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformattercsv.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformattercsv.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,185 @@
+/*****
+ *
+ * TOra - An Oracle Toolkit for DBA's and developers
+ * Copyright (C) 2003-2005 Quest Software, Inc
+ * Portions Copyright (C) 2005 Other Contributors
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation;  only version 2 of
+ * the License is valid for this program.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ *
+ *      As a special exception, you have permission to link this program
+ *      with the Oracle Client libraries and distribute executables, as long
+ *      as you follow the requirements of the GNU GPL in regard to all of the
+ *      software in the executable aside from Oracle client libraries.
+ *
+ *      Specifically you are not permitted to link this program with the
+ *      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+ *      And you are not permitted to distribute binaries compiled against
+ *      these libraries without written consent from Quest Software, Inc.
+ *      Observe that this does not disallow linking to the Qt Free Edition.
+ *
+ *      You may link this product with any GPL'd Qt library such as Qt/Free
+ *
+ * All trademarks belong to their respective owners.
+ *
+ *****/
+
+#include "tolistviewformattercsv.h"
+#include "tolistviewformatterfactory.h"
+#include "tolistviewformatteridentifier.h"
+#include "toresultview.h"
+
+#include <qheader.h>
+#include <qregexp.h>
+#include <iostream>
+
+namespace
+{
+    toListViewFormatter* createCSV()
+    {
+        return new toListViewFormatterCSV();
+    }
+    const bool registered = toListViewFormatterFactory::Instance().Register(
+        toListViewFormatterIdentifier::CSV, createCSV);
+}
+
+
+toListViewFormatterCSV::toListViewFormatterCSV() : toListViewFormatter()
+{
+}
+
+toListViewFormatterCSV::~toListViewFormatterCSV()
+{
+}
+
+QString toListViewFormatterCSV::QuoteString(const QString &str)
+{
+    static QRegExp quote(QString::fromLatin1("\""));
+    QString t = str;
+    t.replace(quote, QString::fromLatin1("\"\""));
+    return t;
+}
+
+QString toListViewFormatterCSV::getFormattedString(toListView& tListView)
+{
+    int column_count = tListView.columns();
+    QString separator = tListView.getSep();
+    QString delimiter = tListView.getDel();
+
+    int *sizes = NULL;
+    try
+    {
+        QString output;
+        QString indent;
+        QString bgcolor;
+
+        if (tListView.getIncludeHeader())
+        {
+            if (bgcolor.isEmpty())
+                bgcolor = QString::fromLatin1("nonull");
+            else
+                bgcolor = QString::null;
+            for (int j = 0;j < column_count;j++)
+                output += QString::fromLatin1("%1%2%3%4").
+                    arg(delimiter).
+                    arg(QuoteString((tListView.header())->label(j))).
+                    arg(delimiter).
+                    arg(separator);
+            if (output.length() > 0 )
+                output = output.left(output.length() - separator.length());
+
+#ifdef WIN32
+            output += "\r\n";
+#else
+            output += "\n";
+#endif
+        }
+
+             
+        QListViewItem *next = NULL;
+
+        for (QListViewItem *item = tListView.firstChild();item;item = next)
+        {
+            if (!tListView.getOnlySelection() || item->isSelected())
+            {
+
+                toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item);
+                toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item);
+
+                if (bgcolor.isEmpty())
+                    bgcolor = QString::fromLatin1(" BGCOLOR=#cfcfff");
+                else
+                    bgcolor = QString::null;
+                QString line;
+            
+                for (int i = 0;i < column_count;i++)
+                {
+                    QString text;
+
+                    if (resItem)
+                        text = resItem->allText(i);
+                    else if (chkItem)
+                        text = chkItem->allText(i);
+                    else
+                        text = item->text(i);
+
+                    line += indent;
+
+                    line += QString::fromLatin1("%1%2%3%4").
+                        arg(delimiter,
+                            QuoteString(text),
+                            delimiter,
+                            separator);
+                }
+                line = line.left(line.length() - separator.length());
+
+#ifdef WIN32
+                line += "\r\n";
+#else
+                line += "\n";
+#endif
+
+                output += line;
+            }
+
+            if (item->firstChild())
+            {
+                indent += QString::fromLatin1(" ");
+                next = item->firstChild();
+            }
+            else if (item->nextSibling())
+                next = item->nextSibling();
+            else
+            {
+                next = item;
+                do
+                {
+                    next = next->parent();
+                    indent.truncate(indent.length() - 1);
+                }
+                while (next && !next->nextSibling());
+                if (next)
+                    next = next->nextSibling();
+            }
+        }
+        delete[] sizes;
+        return output;
+    }
+    catch (...)
+    {
+        delete[] sizes;
+        throw;
+    }
+
+}

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformattercsv.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformattercsv.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformattercsv.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,52 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+#ifndef TOLISTVIEWFORMATTERCSV_H
+#define TOLISTVIEWFORMATTERCSV_H
+
+#include "tolistviewformatter.h"
+
+class toListViewFormatterCSV : public toListViewFormatter
+{
+private:
+   QString QuoteString(const QString &str);
+public:
+   toListViewFormatterCSV();
+   virtual ~toListViewFormatterCSV();
+   virtual QString getFormattedString(toListView& tListView);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformatterfactory.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformatterfactory.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformatterfactory.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,48 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+#ifndef TOLISTVIEWFORMATTERFACTORY_H
+#define TOLISTVIEWFORMATTERFACTORY_H
+
+#include <loki/Factory.h>
+#include <loki/Singleton.h>
+
+using Loki::Factory;
+using Loki::SingletonHolder;
+
+typedef SingletonHolder< Factory<toListViewFormatter, int> > toListViewFormatterFactory;
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformatterhtml.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformatterhtml.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformatterhtml.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,195 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "tolistviewformatterhtml.h"
+#include "tolistviewformatterfactory.h"
+#include "tolistviewformatteridentifier.h"
+#include "toresultview.h"
+
+#include <qheader.h>
+#include <iostream>
+
+namespace
+{
+   toListViewFormatter* createHTML()
+   {
+        return new toListViewFormatterHTML();
+   }
+   const bool registered = toListViewFormatterFactory::Instance().Register(toListViewFormatterIdentifier::HTML, createHTML);
+}
+
+
+toListViewFormatterHTML::toListViewFormatterHTML() : toListViewFormatter()
+{
+}
+
+toListViewFormatterHTML::~toListViewFormatterHTML()
+{
+}
+
+QString toListViewFormatterHTML::getFormattedString(toListView& tListView)
+{
+    std::cout << "Yep,  im FORMATTERHTML\n";
+    int column_count = tListView.columns();
+    QString separator = tListView.getSep();
+    QString delimiter = tListView.getDel();
+
+    int *sizes = NULL;
+    try
+    {
+        QString output;
+            output = QString::fromLatin1("<HTML><HEAD><TITLE>%1</TITLE></HEAD><BODY><TABLE CELLSPACING=0 BORDER=0>").
+                     arg(tListView.sqlName());
+
+        QString indent;
+
+        QString bgcolor;
+        if (tListView.getIncludeHeader())
+        {
+            if (bgcolor.isEmpty())
+                bgcolor = QString::fromLatin1("nonull");
+            else
+                bgcolor = QString::null;
+                output += QString::fromLatin1("<TR BGCOLOR=#7f7f7f>");
+            for (int j = 0; j < column_count; j++){
+                    output += QString::fromLatin1("<TH ALIGN=LEFT BGCOLOR=#cfcfcf>");
+                    output += (tListView.header())->label(j);
+                    output += QString::fromLatin1("</TH>");
+}
+            if ( tListView.getIncludeHeader())
+                output += QString::fromLatin1("</TR>");
+#ifdef WIN32
+
+            output += "\r\n";
+#else
+
+            output += "\n";
+#endif
+
+             }
+
+             
+             QListViewItem *next = NULL;
+
+        for (QListViewItem *item = tListView.firstChild();item;item = next)
+        {
+            if (!tListView.getOnlySelection() || item->isSelected())
+            {
+
+                toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item);
+                toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item);
+
+                if (bgcolor.isEmpty())
+                    bgcolor = QString::fromLatin1(" BGCOLOR=#cfcfff");
+                else
+                    bgcolor = QString::null;
+                QString line;
+                line = QString::fromLatin1("<TR%1>").arg(bgcolor);
+
+                for (int i = 0;i < column_count;i++)
+                {
+                    QString text;
+
+                    if (resItem)
+                        text = resItem->allText(i);
+                    else if (chkItem)
+                        text = chkItem->allText(i);
+                    else
+                        text = item->text(i);
+
+                        line += QString::fromLatin1("<TD%1>").arg(bgcolor);
+                        if (i == 0)
+                            line += indent;
+#if QT_VERSION >= 0x030100
+
+                        text.replace('&', "&amp;");
+                        text.replace('<', "&lt;");
+                        text.replace('>', "&gt");
+#else
+
+                        text.replace(QRegExp("&"), "&amp;");
+                        text.replace(QRegExp("<"), "&lt;");
+                        text.replace(QRegExp(">"), "&gt");
+#endif
+                        line += QString::fromLatin1("<PRE>");
+                        line += text;
+                        line += QString::fromLatin1("</PRE>");
+                        line += QString::fromLatin1("</TD>");
+                 }
+                      line += QString::fromLatin1("</TR>");
+                
+#ifdef WIN32
+
+                line += "\r\n";
+#else
+
+                line += "\n";
+#endif
+
+                output += line;
+            }
+
+            if (item->firstChild())
+            {
+                indent += QString::fromLatin1("&nbsp;");
+                next = item->firstChild();
+            }
+            else if (item->nextSibling())
+                next = item->nextSibling();
+            else
+            {
+                next = item;
+                do
+                {
+                    next = next->parent();             
+                    indent.truncate(indent.length() - 5);
+                }
+                while (next && !next->nextSibling());
+                if (next)
+                    next = next->nextSibling();
+            }
+        }        
+        output += QString::fromLatin1("</TABLE></BODY></HTML>");
+        delete[] sizes;
+        return output;
+    }
+    catch (...)
+    {
+        delete[] sizes;
+        throw;
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformatterhtml.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformatterhtml.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformatterhtml.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,50 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+#ifndef TOLISTVIEWFORMATTERHTML_H
+#define TOLISTVIEWFORMATTERHTML_H
+
+#include "tolistviewformatter.h"
+
+class toListViewFormatterHTML : public toListViewFormatter
+{
+public:
+   toListViewFormatterHTML();
+   virtual ~toListViewFormatterHTML();
+   virtual QString getFormattedString(toListView& tListView);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformatteridentifier.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformatteridentifier.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformatteridentifier.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,46 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOLISTVIEWFORMATTERIDENTIFIER_H
+#define TOLISTVIEWFORMATTERIDENTIFIER_H
+
+namespace toListViewFormatterIdentifier {
+   enum { TEXT, TAB_DELIMITED, CSV, HTML, SQL};
+}
+
+#endif
+

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformattersql.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformattersql.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformattersql.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,173 @@
+//
+// C++ Implementation: toListViewFormatterSQL
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconfiguration.h"
+#include "tolistviewformattersql.h"
+#include "toconnection.h"
+#include "tolistviewformatterfactory.h"
+#include "tolistviewformatteridentifier.h"
+#include "toresultview.h"
+
+#include <qheader.h>
+
+namespace
+{
+toListViewFormatter* createSQL()
+{
+    return new toListViewFormatterSQL();
+}
+const bool registered = toListViewFormatterFactory::Instance().Register( toListViewFormatterIdentifier::SQL, createSQL );
+}
+
+
+toListViewFormatterSQL::toListViewFormatterSQL() : toListViewFormatter()
+{}
+
+toListViewFormatterSQL::~toListViewFormatterSQL()
+{}
+
+SQLTypeMap toListViewFormatterSQL::getSQLTypes( toListView& tListView )
+{
+    SQLTypeMap m;
+    toConnection conn = toCurrentConnection( &tListView );
+    toConnection::objectName on = toConnection::objectName( tListView.getOwner(), tListView.getObjectName() );
+    toQDescList desc = conn.columns( on );
+    for ( toQDescList::iterator i = desc.begin();i != desc.end(); ++i )
+    {
+        if ( std::find( headerFields.begin(), headerFields.end(), ( ( *i ).Name ) ) != headerFields.end() )
+        {
+            if ( ( ( *i ).Datatype ).find( "NUMBER" ) != -1 )
+                m.insert( std::make_pair( ( *i ).Name, static_cast<int>( SQL_NUMBER ) ) );
+            else if ( ( ( *i ).Datatype ).find( "VARCHAR" ) != -1 )
+                m.insert( std::make_pair( ( *i ).Name, static_cast<int>( SQL_STRING ) ) );
+            else if ( ( ( *i ).Datatype ).find( "DATE" ) != -1 )
+                m.insert( std::make_pair( ( *i ).Name, static_cast<int>( SQL_DATE ) ) );
+        }
+    }
+    return m;
+
+}
+
+QString toListViewFormatterSQL::getFormattedString( toListView& tListView )
+{
+    unsigned int column_count = tListView.columns();
+    SQLTypeMap sqltypemap;
+    QString output;
+    QListViewItem* next = 0;
+    unsigned int startIndex = 0;
+    try
+    {
+        for ( unsigned int j = 0;j < column_count;j++ )
+        {
+            headerFields.push_back( ( tListView.header() ) ->label( j ) );
+        }
+
+        if ( tListView.getIncludeHeader() )
+        {
+            startIndex = 1;
+            output += "-- INSERT for table " + tListView.getOwner() + "." + tListView.getObjectName() + "\n";
+        }
+        else
+        {
+            startIndex = 0;
+        }
+
+
+        sqltypemap = getSQLTypes( tListView );
+        for ( QListViewItem * item = tListView.firstChild();item;item = next )
+        {
+            if ( !tListView.getOnlySelection() || item->isSelected() )
+            {
+
+                toResultViewItem * resItem = dynamic_cast<toResultViewItem *>( item );
+                toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>( item );
+
+                QString line, text;
+
+                for ( unsigned int i = startIndex; i < column_count; i++ )
+                {
+                    if ( resItem )
+                        text = resItem->allText( i );
+                    else if ( chkItem )
+                        text = chkItem->allText( i );
+                    else
+                        text = item->text( i );
+
+                    if ( i == startIndex )
+                    {
+                        line += "INSERT INTO " + tListView.getOwner() + "." + tListView.getObjectName() + "(";
+                        for ( unsigned int j = startIndex;j < column_count;j++ )
+                        {
+                            line += ( tListView.header() ) ->label( j ) + ",";
+                        }
+                        line.remove( line.length() - 1, 1 );
+                        line += ") VALUES (";
+                    }
+
+                    switch ( sqltypemap[ ( tListView.header() ) ->label( i ) ] )
+                    {
+                    case SQL_NUMBER:
+                        line += ( text.isEmpty() ) ? "NULL," : QString::fromLatin1( "%1," ).arg( text );
+                        break;
+                    case SQL_STRING:
+                        line += ( text.isEmpty() ) ? "NULL," : QString::fromLatin1( "\'%1\'," ).arg( text );
+                        break;
+                    case SQL_DATE:
+                        if ( text.isEmpty() )
+                        {
+                            line += "NULL,";
+                        }
+                        else
+                        {
+                            line += "TO_DATE(" + QString::fromLatin1( "\'%1\'" ).arg( text ) + ",\'" + toConfigurationSingle::Instance().globalConfig( CONF_DATE_FORMAT, DEFAULT_DATE_FORMAT ) + "\')" + ",";
+                        }
+                        break;
+                    }
+                    if ( i == ( column_count - 1 ) )
+                    {
+                        line.replace( line.length() - 1, 1, ")" );
+#ifdef WIN32
+
+                        line += ";\r\n";
+#else
+
+                        line += ";\n";
+#endif
+
+                    }
+
+                }
+                output += line;
+            }
+
+            if ( item->firstChild() )
+            {
+                next = item->firstChild();
+            }
+            else if ( item->nextSibling() )
+                next = item->nextSibling();
+            else
+            {
+                next = item;
+                do
+                {
+                    next = next->parent();
+                }
+                while ( next && !next->nextSibling() );
+                if ( next )
+                    next = next->nextSibling();
+            }
+        }
+        return output;
+    }
+    catch ( ... )
+    {
+        throw;
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformattersql.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformattersql.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformattersql.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,64 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+#ifndef TOLISTVIEWFORMATTERSQL_H
+#define TOLISTVIEWFORMATTERSQL_H
+
+#include <map>
+#include <list>
+
+#include <qstring.h>
+
+#include "tolistviewformatter.h"
+
+typedef std::map<QString,int> SQLTypeMap;
+
+class toListViewFormatterSQL : public toListViewFormatter
+{
+
+private:
+    enum{SQL_STRING, SQL_NUMBER, SQL_DATE};
+    SQLTypeMap getSQLTypes(toListView& tListView);
+    std::list<QString> headerFields;
+public:
+   toListViewFormatterSQL();
+   virtual ~toListViewFormatterSQL();
+   virtual QString getFormattedString(toListView& tListView);
+};
+
+
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformattertabdel.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformattertabdel.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformattertabdel.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,170 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "tolistviewformattertabdel.h"
+#include "tolistviewformatterfactory.h"
+#include "tolistviewformatteridentifier.h"
+#include "toresultview.h"
+
+#include <qheader.h>
+#include <iostream>
+
+namespace
+{
+   toListViewFormatter* createTabDel()
+   {
+        return new toListViewFormatterTabDel();
+   }
+   const bool registered = toListViewFormatterFactory::Instance().Register(toListViewFormatterIdentifier::TAB_DELIMITED, createTabDel);
+}
+
+
+toListViewFormatterTabDel::toListViewFormatterTabDel() : toListViewFormatter()
+{
+}
+
+toListViewFormatterTabDel::~toListViewFormatterTabDel()
+{
+}
+
+QString toListViewFormatterTabDel::getFormattedString(toListView& tListView)
+{
+    std::cout << "Yep,  im FORMATTERTABDEL\n";
+    int column_count = tListView.columns();
+    QString separator = tListView.getSep();
+    QString delimiter = tListView.getDel();
+
+
+    int *sizes = NULL;
+    try
+    {
+        QString output;
+
+        QString indent;
+
+        QString bgcolor;
+        if (tListView.getIncludeHeader())
+        {
+            if (bgcolor.isEmpty())
+                bgcolor = QString::fromLatin1("nonull");
+            else
+                bgcolor = QString::null;
+            for (int j = 0;j < column_count;j++)
+                    output += QString::fromLatin1("%1\t").arg((tListView.header())->label(j));
+            output = output.left(output.length() - 1);
+#ifdef WIN32
+
+            output += "\r\n";
+#else
+
+            output += "\n";
+#endif
+
+        }
+
+             
+         QListViewItem *next = NULL;
+
+        for (QListViewItem *item = tListView.firstChild();item;item = next)
+        {
+            if (!tListView.getOnlySelection() || item->isSelected())
+            {
+
+                toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item);
+                toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item);
+
+                if (bgcolor.isEmpty())
+                    bgcolor = QString::fromLatin1(" BGCOLOR=#cfcfff");
+                else
+                    bgcolor = QString::null;
+                QString line;
+                for (int i = 0;i < column_count;i++)
+                {
+                    QString text;
+
+                    if (resItem)
+                        text = resItem->allText(i);
+                    else if (chkItem)
+                        text = chkItem->allText(i);
+                    else
+                        text = item->text(i);
+
+                        line += indent;
+                        line += QString::fromLatin1("%1\t").arg(text);
+                }
+                    line = line.left(line.length() - 1);
+#ifdef WIN32
+
+                line += "\r\n";
+#else
+
+                line += "\n";
+#endif
+
+                output += line;
+            }
+
+            if (item->firstChild())
+            {
+                indent += QString::fromLatin1(" ");
+                next = item->firstChild();
+            }
+            else if (item->nextSibling())
+                next = item->nextSibling();
+            else
+            {
+                next = item;
+                do
+                {
+                    next = next->parent();
+                    indent.truncate(indent.length() - 1);
+                }
+                while (next && !next->nextSibling());
+                if (next)
+                    next = next->nextSibling();
+            }
+        }
+        delete[] sizes;
+        return output;
+    }
+    catch (...)
+    {
+        delete[] sizes;
+        throw;
+    }
+
+}

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformattertabdel.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformattertabdel.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformattertabdel.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,50 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+#ifndef TOLISTVIEWFORMATTERTABDEL_H
+#define TOLISTVIEWFORMATTERTABDEL_H
+
+#include "tolistviewformatter.h"
+
+class toListViewFormatterTabDel : public toListViewFormatter
+{
+public:
+   toListViewFormatterTabDel();
+   virtual ~toListViewFormatterTabDel();
+   virtual QString getFormattedString(toListView& tListView);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformattertext.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformattertext.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformattertext.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,246 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "tolistviewformattertext.h"
+#include "tolistviewformatterfactory.h"
+#include "tolistviewformatteridentifier.h"
+#include "toresultview.h"
+
+#include <qheader.h>
+#include <iostream>
+
+namespace
+{
+   toListViewFormatter* createText()
+   {
+        return new toListViewFormatterText();
+   }
+   const bool registered = toListViewFormatterFactory::Instance().Register(toListViewFormatterIdentifier::TEXT, createText);
+}
+
+
+toListViewFormatterText::toListViewFormatterText() : toListViewFormatter()
+{
+}
+
+toListViewFormatterText::~toListViewFormatterText()
+{
+}
+
+QString toListViewFormatterText::getFormattedString(toListView& tListView)
+{
+    std::cout << "Yep,  im FORMATTERTEXT\n";
+    int column_count = tListView.columns();
+    QString separator = tListView.getSep();
+    QString delimiter = tListView.getDel();
+
+    int *sizes = NULL;
+    try
+    {
+	sizes = new int[column_count];
+        int level = 0;
+        for (int i = 0;i < column_count;i++)
+            if (tListView.getIncludeHeader())
+                sizes[i] = (tListView.header())->label(i).length();
+              else
+                    sizes[i] = 0;
+
+            {
+                QListViewItem *next = NULL;
+                for (QListViewItem *item = tListView.firstChild();item;item = next)
+                {
+                    toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item);
+                    toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item);
+
+                    if (!tListView.getOnlySelection() || item->isSelected())
+                    {
+                        for (int i = 0;i < column_count;i++)
+                        {
+                            int csiz;
+                            if (resItem)
+                                csiz = resItem->allText(i).length();
+                            else if (chkItem)
+                                csiz = chkItem->allText(i).length();
+                            else
+                                csiz = item->text(i).length();
+                            if (i == 0)
+                                csiz += level;
+                            if (sizes[i] < csiz)
+                                sizes[i] = csiz;
+                        }
+                    }
+
+                    if (item->firstChild())
+                    {
+                        level++;
+                        next = item->firstChild();
+                    }
+                    else if (item->nextSibling())
+                        next = item->nextSibling();
+                    else
+                    {
+                        next = item;
+                        do
+                        {
+                            next = next->parent();
+                            level--;
+                        }
+                        while (next && !next->nextSibling());
+                        if (next)
+                            next = next->nextSibling();
+                    }
+                }
+            }
+
+
+        QString output;
+
+        QString indent;
+
+        QString bgcolor;
+        if (tListView.getIncludeHeader())
+        {
+            if (bgcolor.isEmpty())
+                bgcolor = QString::fromLatin1("nonull");
+            else
+                bgcolor = QString::null;
+            for (int j = 0;j < column_count;j++)
+                    output += QString::fromLatin1("%1 ").arg((tListView.header())->label(j), -sizes[j]);
+
+            if (output.length() > 0 )
+                output = output.left(output.length() - 1);
+            
+#ifdef WIN32
+
+            output += "\r\n";
+#else
+
+            output += "\n";
+#endif
+
+                for (int k = 0;k < column_count;k++)
+                {
+                    for (int l = 0;l < sizes[k];l++)
+                        output += QString::fromLatin1("=");
+                    if (k != column_count - 1)
+                        output += QString::fromLatin1(" ");
+                }
+#ifdef WIN32
+                output += "\r\n";
+#else
+
+                output += "\n";
+#endif
+
+
+        }
+
+             
+             QListViewItem *next = NULL;
+
+        for (QListViewItem *item = tListView.firstChild();item;item = next)
+        {
+            if (!tListView.getOnlySelection() || item->isSelected())
+            {
+
+                toResultViewItem * resItem = dynamic_cast<toResultViewItem *>(item);
+                toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item);
+
+                if (bgcolor.isEmpty())
+                    bgcolor = QString::fromLatin1(" BGCOLOR=#cfcfff");
+                else
+                    bgcolor = QString::null;
+                QString line;
+        
+                for (int i = 0;i < column_count;i++)
+                {
+                    QString text;
+
+                    if (resItem)
+                        text = resItem->allText(i);
+                    else if (chkItem)
+                        text = chkItem->allText(i);
+                    else
+                        text = item->text(i);
+
+                        line += indent;
+                        line += QString::fromLatin1("%1 ").arg(text, (i == 0 ? indent.length() : 0) - sizes[i]);
+		}
+                line = line.left(line.length() - 1);
+                
+#ifdef WIN32
+
+                line += "\r\n";
+#else
+
+                line += "\n";
+#endif
+
+                output += line;
+            }
+
+            if (item->firstChild())
+            {
+
+                indent += QString::fromLatin1(" ");
+                next = item->firstChild();
+            }
+            else if (item->nextSibling())
+                next = item->nextSibling();
+            else
+            {
+                next = item;
+                do
+                {
+                    next = next->parent();
+                    indent.truncate(indent.length() - 1);
+                }
+                while (next && !next->nextSibling());
+                if (next)
+                    next = next->nextSibling();
+            }
+        }
+        delete[] sizes;
+        return output;
+    }
+    catch (...)
+    {
+        delete[] sizes;
+        throw;
+    }
+
+}

Added: kde-extras/tora/branches/upstream/current/src/tolistviewformattertext.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tolistviewformattertext.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tolistviewformattertext.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,50 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+#ifndef TOLISTVIEWFORMATTERTEXT_H
+#define TOLISTVIEWFORMATTERTEXT_H
+
+#include "tolistviewformatter.h"
+
+class toListViewFormatterText : public toListViewFormatter
+{
+public:
+   toListViewFormatterText();
+   virtual ~toListViewFormatterText();
+   virtual QString getFormattedString(toListView& tListView);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tomain.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomain.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomain.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1727 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toabout.h"
+#include "tobackgroundlabel.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "toeditwidget.h"
+#include "tohelp.h"
+#include "tomain.h"
+#include "tomarkedtext.h"
+#include "tomemoeditor.h"
+#include "tomessageui.h"
+#include "tonewconnection.h"
+#include "topreferences.h"
+#include "tosearchreplace.h"
+#include "totemplate.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#include <kfiledialog.h>
+#include <kmenubar.h>
+#include <kstatusbar.h>
+#endif
+
+#ifdef TO_KDE_KACCELMANAGER
+#include <kaccelmanager.h>
+#endif
+
+#include <qaccel.h>
+#include <qapplication.h>
+#include <qcheckbox.h>
+#include <qclipboard.h>
+#include <qcombobox.h>
+#include <qevent.h>
+#include <qfile.h>
+#include <qfiledialog.h>
+#include <qfileinfo.h>
+#include <qinputdialog.h>
+#include <qlabel.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qnamespace.h>
+#include <qpopupmenu.h>
+#include <qpushbutton.h>
+#include <qregexp.h>
+#include <qstatusbar.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qvbox.h>
+#include <qworkspace.h>
+
+#if QT_VERSION >= 0x030000
+#include <qurloperator.h>
+#include <qnetwork.h>
+#include <qstyle.h>
+#endif
+
+#include "tomain.moc"
+#include "tomessageui.moc"
+#ifdef TO_KDE
+#include "tomainwindow.kde.moc"
+
+#include "icons/toramini.xpm"
+
+#else
+#include "tomainwindow.moc"
+#endif
+
+#include "icons/connect.xpm"
+#include "icons/copy.xpm"
+#include "icons/cut.xpm"
+#include "icons/disconnect.xpm"
+#include "icons/fileopen.xpm"
+#include "icons/filesave.xpm"
+#include "icons/paste.xpm"
+#include "icons/print.xpm"
+#include "icons/redo.xpm"
+#include "icons/search.xpm"
+#include "icons/tora.xpm"
+#include "icons/undo.xpm"
+#include "icons/up.xpm"
+#include "icons/commit.xpm"
+#include "icons/rollback.xpm"
+#include "icons/stop.xpm"
+#include "icons/refresh.xpm"
+
+#define DEFAULT_TITLE TOAPPNAME " %s"
+
+#define TO_ABOUT_ID_OFFSET (toMain::TO_TOOL_ABOUT_ID-TO_TOOLS)
+
+toMain::toMain()
+        : toMainWindow(), toBackupTool_(new toBackupTool), BackgroundLabel(new toBackgroundLabel(statusBar()))
+{
+    qApp->setMainWidget(this);
+    
+    setDockMenuEnabled(true);
+
+    Edit = NULL;
+
+    FileMenu = new QPopupMenu(this);
+
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(connect_xpm)),
+                         tr("&New Connection..."), TO_NEW_CONNECTION);
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(disconnect_xpm)),
+                         tr("&Close Connection"), this, SLOT(delConnection()), 0, TO_CLOSE_CONNECTION);
+
+    FileMenu->insertSeparator();
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(commit_xpm)), tr("&Commit Connection"), TO_FILE_COMMIT);
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(rollback_xpm)), tr("&Rollback Connection"), TO_FILE_ROLLBACK);
+    FileMenu->insertItem(tr("C&urrent Connection"), TO_FILE_CURRENT);
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(stop_xpm)), tr("Stop All Queries"), TO_STOP_ALL);
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("Reread Object Cache"), TO_FILE_CLEARCACHE);
+
+    FileMenu->insertSeparator();
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(fileopen_xpm)), tr("&Open File..."), TO_FILE_OPEN);
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(filesave_xpm)), tr("&Save"), TO_FILE_SAVE);
+    FileMenu->insertItem(tr("Save A&s..."), TO_FILE_SAVE_AS);
+    FileMenu->insertSeparator();
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(fileopen_xpm)), tr("Open Session..."),
+                         TO_FILE_OPEN_SESSION);
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(filesave_xpm)), tr("Save Session..."),
+                         TO_FILE_SAVE_SESSION);
+    FileMenu->insertItem(tr("Restore Last Session"), TO_FILE_LAST_SESSION);
+    FileMenu->insertItem(tr("Close Session"), TO_FILE_CLOSE_SESSION);
+    FileMenu->insertSeparator();
+    FileMenu->insertItem(QPixmap(const_cast<const char**>(print_xpm)), tr("&Print..."), TO_FILE_PRINT);
+    FileMenu->insertSeparator();
+    FileMenu->insertItem(tr("&Quit"), TO_FILE_QUIT);
+
+    FileMenu->setAccel(toKeySequence(tr("Ctrl+G", "File|New connection")), TO_NEW_CONNECTION);
+    FileMenu->setAccel(toKeySequence(tr("Ctrl+O", "File|File open")), TO_FILE_OPEN);
+    FileMenu->setAccel(toKeySequence(tr("Ctrl+W", "File|File save")), TO_FILE_SAVE);
+    FileMenu->setAccel(toKeySequence(tr("Ctrl+Shift+W", "File|File save as")), TO_FILE_SAVE_AS);
+
+    FileMenu->setAccel(toKeySequence(tr("Ctrl+Shift+C", "File|Commit")), TO_FILE_COMMIT);
+    FileMenu->setAccel(toKeySequence(tr("Ctrl+J", "File|Stop all")), TO_STOP_ALL);
+    FileMenu->setAccel(toKeySequence(tr("Ctrl+<", "File|Rollback")) | CTRL, TO_FILE_ROLLBACK);
+    FileMenu->setAccel(toKeySequence(tr("Ctrl+Shift+U", "File|Current connection")), TO_FILE_CURRENT);
+
+    updateRecent();
+
+    connect(FileMenu, SIGNAL(aboutToShow()), this, SLOT(showFileMenu()));
+    menuBar()->insertItem(tr("&File"), FileMenu, TO_FILE_MENU);
+    connect(FileMenu, SIGNAL(activated(int)), this, SLOT(commandCallback(int)));
+
+    EditMenu = new QPopupMenu(this);
+    EditMenu->insertItem(QPixmap(const_cast<const char**>(undo_xpm)), tr("&Undo"), TO_EDIT_UNDO);
+    EditMenu->insertItem(QPixmap(const_cast<const char**>(redo_xpm)), tr("&Redo"), TO_EDIT_REDO);
+    EditMenu->insertSeparator();
+    EditMenu->insertItem(QPixmap(const_cast<const char**>(cut_xpm)), tr("Cu&t"), TO_EDIT_CUT);
+    EditMenu->insertItem(QPixmap(const_cast<const char**>(copy_xpm)), tr("&Copy"), TO_EDIT_COPY);
+    EditMenu->insertItem(QPixmap(const_cast<const char**>(paste_xpm)), tr("&Paste"), TO_EDIT_PASTE);
+    EditMenu->insertSeparator();
+    EditMenu->insertItem(QPixmap(const_cast<const char**>(search_xpm)), tr("&Search && Replace..."),
+                         TO_EDIT_SEARCH);
+    EditMenu->insertItem(tr("Search &Next"), TO_EDIT_SEARCH_NEXT);
+    EditMenu->insertItem(tr("Select &All"), TO_EDIT_SELECT_ALL);
+    EditMenu->insertItem(tr("Read All &Items"), TO_EDIT_READ_ALL);
+    EditMenu->insertSeparator();
+    EditMenu->insertItem(tr("&Preferences..."), TO_EDIT_OPTIONS);
+
+    QAccel *accel = new QAccel(this);
+    accel->connectItem(accel->insertItem(toKeySequence(tr("Ctrl+Insert", "Edit|Copy"))), this, SLOT(copyButton()));
+    accel->connectItem(accel->insertItem(toKeySequence(tr("Shift+Delete", "Edit|Cut"))), this, SLOT(cutButton()));
+    accel->connectItem(accel->insertItem(toKeySequence(tr("Shift+Insert", "Edit|Paste"))), this, SLOT(pasteButton()));
+
+    EditMenu->setAccel(toKeySequence(tr("Ctrl+A", "Edit|Select all")), TO_EDIT_SELECT_ALL);
+    EditMenu->setAccel(toKeySequence(tr("Ctrl+Z", "Edit|Undo")), TO_EDIT_UNDO);
+    EditMenu->setAccel(toKeySequence(tr("Ctrl+Y", "Edit|Redo")), TO_EDIT_REDO);
+    EditMenu->setAccel(toKeySequence(tr("Ctrl+X", "Edit|Cut")), TO_EDIT_CUT);
+    EditMenu->setAccel(toKeySequence(tr("Ctrl+C", "Edit|Copy")), TO_EDIT_COPY);
+    EditMenu->setAccel(toKeySequence(tr("Ctrl+V", "Edit|Paste")), TO_EDIT_PASTE);
+    EditMenu->setAccel(toKeySequence(tr("Ctrl+F", "Edit|Search")), TO_EDIT_SEARCH);
+    EditMenu->setAccel(toKeySequence(tr("F3", "Edit|Search next")), TO_EDIT_SEARCH_NEXT);
+
+
+    menuBar()->insertItem(tr("&Edit"), EditMenu, TO_EDIT_MENU);
+    connect(EditMenu, SIGNAL(activated(int)), this, SLOT(commandCallback(int)));
+
+    std::map<QCString, toTool *> &tools = toTool::tools();
+
+    ToolsToolbar = toAllocBar(this, tr("Tools"));
+
+    EditToolbar = toAllocBar(this, tr("Application"));
+
+    LoadButton = new QToolButton(QPixmap(const_cast<const char**>(fileopen_xpm)),
+                                 tr("Load file into editor"),
+                                 tr("Load file into editor"),
+                                 this, SLOT(loadButton()), EditToolbar);
+    SaveButton = new QToolButton(QPixmap(const_cast<const char**>(filesave_xpm)),
+                                 tr("Save file from editor"),
+                                 tr("Save file from editor"),
+                                 this, SLOT(saveButton()), EditToolbar);
+    PrintButton = new QToolButton(QPixmap(const_cast<const char**>(print_xpm)),
+                                  tr("Print"),
+                                  tr("Print"),
+                                  this, SLOT(printButton()), EditToolbar);
+    PrintButton->setEnabled(false);
+    LoadButton->setEnabled(false);
+    SaveButton->setEnabled(false);
+
+    EditToolbar->addSeparator();
+    UndoButton = new QToolButton(QPixmap(const_cast<const char**>(undo_xpm)),
+                                 tr("Undo"),
+                                 tr("Undo"),
+                                 this, SLOT(undoButton()), EditToolbar);
+    RedoButton = new QToolButton(QPixmap(const_cast<const char**>(redo_xpm)),
+                                 tr("Redo"),
+                                 tr("Redo"),
+                                 this, SLOT(redoButton()), EditToolbar);
+    CutButton = new QToolButton(QPixmap(const_cast<const char**>(cut_xpm)),
+                                tr("Cut to clipboard"),
+                                tr("Cut to clipboard"),
+                                this, SLOT(cutButton()), EditToolbar);
+    CopyButton = new QToolButton(QPixmap(const_cast<const char**>(copy_xpm)),
+                                 tr("Copy to clipboard"),
+                                 tr("Copy to clipboard"),
+                                 this, SLOT(copyButton()), EditToolbar);
+    PasteButton = new QToolButton(QPixmap(const_cast<const char**>(paste_xpm)),
+                                  tr("Paste from clipboard"),
+                                  tr("Paste from clipboard"),
+                                  this, SLOT(pasteButton()), EditToolbar);
+    EditToolbar->addSeparator();
+    SearchButton = new QToolButton(QPixmap(const_cast<const char**>(search_xpm)),
+                                   tr("Search & replace"),
+                                   tr("Search & replace"),
+                                   this, SLOT(searchButton()), EditToolbar);
+
+    UndoButton->setEnabled(false);
+    RedoButton->setEnabled(false);
+    CutButton->setEnabled(false);
+    CopyButton->setEnabled(false);
+    PasteButton->setEnabled(false);
+    SearchButton->setEnabled(false);
+
+    ConnectionToolbar = toAllocBar(this, tr("Connections"));
+    new QToolButton(QPixmap(const_cast<const char**>(connect_xpm)),
+                    tr("Connect to database"),
+                    tr("Connect to database"),
+                    this, SLOT(addConnection()), ConnectionToolbar);
+    DisconnectButton = new QToolButton(QPixmap(const_cast<const char**>(disconnect_xpm)),
+                                       tr("Disconnect current connection"),
+                                       tr("Disconnect current connection"),
+                                       this, SLOT(delConnection()), ConnectionToolbar);
+    DisconnectButton->setEnabled(false);
+
+    ConnectionToolbar->addSeparator();
+    NeedConnection[new QToolButton(QPixmap(const_cast<const char**>(commit_xpm)),
+                                   tr("Commit connection"),
+                                   tr("Commit connection"),
+                                   this, SLOT(commitButton()), ConnectionToolbar)] = true;
+    NeedConnection[new QToolButton(QPixmap(const_cast<const char**>(rollback_xpm)),
+                                   tr("Rollback connection"),
+                                   tr("Rollback connection"),
+                                   this, SLOT(rollbackButton()), ConnectionToolbar)] = true;
+    ConnectionToolbar->addSeparator();
+    NeedConnection[new QToolButton(QPixmap(const_cast<const char**>(stop_xpm)),
+                                   tr("Stop all running queries on connection"),
+                                   tr("Stop all running queries on connection"),
+                                   this, SLOT(stopButton()), ConnectionToolbar)] = true;
+
+    ConnectionToolbar->addSeparator();
+    ConnectionSelection = new QComboBox(ConnectionToolbar, TO_KDE_TOOLBAR_WIDGET);
+    ConnectionSelection->setMinimumWidth(300);
+    ConnectionSelection->setFocusPolicy(NoFocus);
+    connect(ConnectionSelection, SIGNAL(activated(int)), this, SLOT(changeConnection()));
+
+    ToolsMenu = new QPopupMenu(this);
+
+    HelpMenu = new QPopupMenu(this);
+
+    HelpMenu->insertItem(tr("C&urrent Context..."), TO_HELP_CONTEXT);
+    HelpMenu->insertItem(tr("&Contents..."), TO_HELP_CONTENTS);
+    HelpMenu->insertSeparator();
+    HelpMenu->insertItem(tr("&About " TOAPPNAME "..."), TO_HELP_ABOUT);
+    HelpMenu->insertItem(tr("&License..."), TO_HELP_LICENSE);
+
+    HelpMenu->setAccel(toKeySequence(tr("F1", "Help|Help")), TO_HELP_CONTEXT);
+
+    int toolID = TO_TOOLS;
+    SQLEditor = -1;
+    DefaultTool = toolID;
+    QCString defName = toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_TOOL, "").latin1();
+
+    QPopupMenu *toolAbout = NULL;
+
+    for (std::map<QCString, toTool *>::iterator i = tools.begin();i != tools.end();i++)
+    {
+        const QPixmap *pixmap = (*i).second->toolbarImage();
+        const char *menuName = (*i).second->menuItem();
+
+        QCString tmp = (*i).first;
+        tmp += CONF_TOOL_ENABLE;
+        if (toConfigurationSingle::Instance().globalConfig(tmp, "Yes").isEmpty())
+            continue;
+
+        if (defName == (*i).first)
+            DefaultTool = toolID;
+
+        if ((*i).second->hasAbout() && menuName)
+        {
+            if (!toolAbout)
+            {
+                toolAbout = new QPopupMenu(this);
+                HelpMenu->insertItem(tr("Tools"), toolAbout);
+            }
+            if (pixmap)
+                toolAbout->insertItem(*pixmap, qApp->translate("toTool", menuName), toolID + TO_ABOUT_ID_OFFSET);
+            else
+                toolAbout->insertItem(qApp->translate("toTool", menuName), toolID + TO_ABOUT_ID_OFFSET);
+        }
+
+        Tools[toolID] = (*i).second;
+
+        toolID++;
+    }
+
+    if (!toConfigurationSingle::Instance().globalConfig(CONF_TOOLS_LEFT, "").isEmpty())
+        moveToolBar(ToolsToolbar, Left);
+
+    menuBar()->insertItem(tr("&Tools"), ToolsMenu, TO_TOOLS_MENU);
+    connect(ToolsMenu, SIGNAL(activated(int)), this, SLOT(commandCallback(int)));
+
+    WindowsMenu = new QPopupMenu(this);
+
+    WindowsMenu->setCheckable(true);
+    WindowsMenu->insertItem(tr("C&lose"), TO_WINDOWS_CLOSE);
+    WindowsMenu->insertItem(tr("Close &All"), TO_WINDOWS_CLOSE_ALL);
+    WindowsMenu->insertSeparator();
+    WindowsMenu->insertItem(tr("&Cascade"), TO_WINDOWS_CASCADE);
+    WindowsMenu->insertItem(tr("&Tile"), TO_WINDOWS_TILE);
+    WindowsMenu->insertSeparator();
+
+    connect(WindowsMenu, SIGNAL(aboutToShow()), this, SLOT( windowsMenu()));
+    menuBar()->insertItem(tr("&Window"), WindowsMenu, TO_WINDOWS_MENU);
+    connect(WindowsMenu, SIGNAL(activated(int)), this, SLOT(commandCallback(int)));
+
+    menuBar()->insertSeparator();
+
+    menuBar()->insertItem(tr("&Help"), HelpMenu, TO_HELP_MENU);
+    connect(HelpMenu, SIGNAL(activated(int)), this, SLOT(commandCallback(int)));
+
+    char buffer[100];
+    sprintf(buffer, DEFAULT_TITLE, TOVERSION);
+    setCaption(tr(buffer));
+
+#ifdef TO_KDE
+
+    KDockWidget *mainDock = createDockWidget(tr(buffer), QPixmap(const_cast<const char**>(toramini_xpm)));
+    Workspace = new QWorkspace(mainDock);
+    mainDock->setWidget(Workspace);
+    setView(mainDock);
+    setMainDockWidget(mainDock);
+    mainDock->setEnableDocking(KDockWidget::DockNone);
+#else
+
+    Workspace = new QWorkspace(this);
+    setCentralWidget(Workspace);
+#endif
+
+    setIcon(QPixmap(const_cast<const char**>(tora_xpm)));
+
+    statusBar()->message(QString::null);
+    FileMenu->setItemEnabled(TO_CLOSE_CONNECTION, false);
+    FileMenu->setItemEnabled(TO_FILE_COMMIT, false);
+    FileMenu->setItemEnabled(TO_STOP_ALL, false);
+    FileMenu->setItemEnabled(TO_FILE_ROLLBACK, false);
+    FileMenu->setItemEnabled(TO_FILE_CLEARCACHE, false);
+    DisconnectButton->setEnabled(false);
+
+    RowLabel = new QLabel(statusBar());
+    statusBar()->addWidget(RowLabel, 0, true);
+    RowLabel->setMinimumWidth(60);
+    //  RowLabel->hide();
+
+    ColumnLabel = new QLabel(statusBar());
+    statusBar()->addWidget(ColumnLabel, 0, true);
+    ColumnLabel->setMinimumWidth(60);
+    //  ColumnLabel->hide();
+
+    QToolButton *dispStatus = new toPopupButton(statusBar());
+    dispStatus->setIconSet(QPixmap(const_cast<const char**>(up_xpm)));
+    statusBar()->addWidget(dispStatus, 0, true);
+    StatusMenu = new QPopupMenu(dispStatus);
+    dispStatus->setPopup(StatusMenu);
+    connect(StatusMenu, SIGNAL(aboutToShow()),
+            this, SLOT(statusMenu()));
+    connect(StatusMenu, SIGNAL(activated(int)), this, SLOT(commandCallback(int)));
+
+    toolID = TO_TOOLS;
+    for (std::map<QCString, toTool *>::iterator k = tools.begin();k != tools.end();k++)
+    {
+        (*k).second->customSetup(toolID);
+        toolID++;
+    }
+    Search = NULL;
+
+    for (std::map<QToolButton *, bool>::iterator j = NeedConnection.begin();
+            j != NeedConnection.end();j++)
+        (*j).first->setEnabled(false);
+
+    QString welcome;
+
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(checkCaching()));
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    if (!toConfigurationSingle::Instance().globalConfig(CONF_RESTORE_SESSION, "").isEmpty())
+    {
+        try
+        {
+            std::map<QCString, QString> session;
+            toConfigurationSingle::Instance().loadMap(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION), session);
+            importData(session, "TOra");
+        }
+        TOCATCH
+    }
+
+    if (!toConfigurationSingle::Instance().globalConfig(CONF_MAXIMIZE_MAIN, "Yes").isEmpty() && Connections.empty() )
+        showMaximized();
+    else
+        show();
+
+    if (Connections.empty() )
+    {
+        try
+        {
+            toNewConnection newConnection(this, tr("First connection"), true);
+
+            toConnection *conn;
+
+            do
+            {
+                conn = NULL;
+                if (newConnection.exec())
+                {
+                    conn = newConnection.makeConnection();
+                }
+                else
+                {
+                    break;
+                }
+            }
+            while (!conn);
+
+            if (conn)
+                addConnection(conn);
+        }
+        TOCATCH
+    }
+    statusBar()->addWidget(BackgroundLabel, 0, true);
+    BackgroundLabel->show();    
+    QToolTip::add(BackgroundLabel, tr("No background queries."));
+ }
+
+void toMain::windowActivated(QWidget *widget)
+{
+    if (toConfigurationSingle::Instance().globalConfig(CONF_CHANGE_CONNECTION, "Yes").isEmpty())
+        return ;
+    toToolWidget *tool = dynamic_cast<toToolWidget *>(widget);
+    if (tool)
+    {
+        try
+        {
+            toConnection &conn = tool->connection();
+            int pos = 0;
+            for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++)
+            {
+                if (&conn == *i)
+                {
+                    ConnectionSelection->setCurrentItem(pos);
+                    changeConnection();
+                    break;
+                }
+                pos++;
+            }
+        }
+        TOCATCH
+    }
+}
+
+void toMain::showFileMenu(void)
+{
+    bool hascon = (ConnectionSelection->count() > 0);
+
+    FileMenu->setItemEnabled(TO_FILE_COMMIT, hascon);
+    FileMenu->setItemEnabled(TO_STOP_ALL, hascon);
+    FileMenu->setItemEnabled(TO_FILE_ROLLBACK, hascon);
+    FileMenu->setItemEnabled(TO_FILE_CLEARCACHE, hascon);
+    FileMenu->setItemEnabled(TO_CLOSE_CONNECTION, hascon);
+
+    updateRecent();
+}
+
+void toMain::updateRecent()
+{
+    static bool first = true;
+    int num = toConfigurationSingle::Instance().globalConfig(CONF_RECENT_FILES, "0").toInt();
+    if (num > 0)
+    {
+        if (first)
+        {
+            FileMenu->insertSeparator();
+            first = false;
+        }
+        for (int i = 0;i < num;i++)
+        {
+            QString file = toConfigurationSingle::Instance().globalConfig(QCString(CONF_RECENT_FILES ":") + QString::number(i).latin1(), "");
+            if (!file.isEmpty())
+            {
+                QFileInfo fi(file);
+                if (FileMenu->indexOf(TO_LAST_FILE_ID + i) == -1)
+                    FileMenu->insertItem(fi.fileName(), TO_LAST_FILE_ID + i);
+                else
+                {
+                    FileMenu->changeItem(TO_LAST_FILE_ID + i, fi.fileName());
+                }
+            }
+            FileMenu->setItemEnabled(TO_LAST_FILE_ID + i, Edit && Edit->openEnabled());
+        }
+    }
+}
+
+void toMain::addRecentFile(const QString &file)
+{
+    int num = toConfigurationSingle::Instance().globalConfig(CONF_RECENT_FILES, "0").toInt();
+    int maxnum = toConfigurationSingle::Instance().globalConfig(CONF_RECENT_MAX, DEFAULT_RECENT_MAX).toInt();
+    std::list<QString> files;
+    for (int j = 0;j < num;j++)
+    {
+        QString t = toConfigurationSingle::Instance().globalConfig(QCString(CONF_RECENT_FILES ":") + QString::number(j).latin1(), "");
+        if (t != file)
+            toPush(files, t);
+    }
+    toUnShift(files, file);
+
+    num = 0;
+    for (std::list<QString>::iterator i = files.begin();i != files.end();i++)
+    {
+        toConfigurationSingle::Instance().globalSetConfig(QCString(CONF_RECENT_FILES ":") + QString::number(num).latin1(), *i);
+        num++;
+        if (num >= maxnum)
+            break;
+    }
+    toConfigurationSingle::Instance().globalSetConfig(CONF_RECENT_FILES, QString::number(num));
+    toConfigurationSingle::Instance().saveConfig();
+}
+
+void toMain::windowsMenu(void)
+{
+    WindowsMenu->setItemEnabled(TO_WINDOWS_CLOSE, workspace()->activeWindow());
+
+    bool first = true;
+    QRegExp strip(QString::fromLatin1(" <[0-9]+>$"));
+    int id = 0;
+    unsigned int i;
+#if QT_VERSION < 0x030200
+
+    for (i = 0;i < workspace()->windowList().count();i++)
+    {
+        QWidget *widget = workspace()->windowList().at(i);
+#else
+
+    for (i = 0;i < workspace()->windowList(QWorkspace::CreationOrder).count();i++)
+    {
+        QWidget *widget = workspace()->windowList(QWorkspace::CreationOrder).at(i);
+#endif
+
+        if (widget && !widget->isHidden())
+        {
+            if (first)
+                first = false;
+            QString caption = widget->caption();
+            caption.replace(strip, QString::null);
+            if (WindowsMenu->indexOf(TO_WINDOWS_WINDOWS + i) < 0)
+                WindowsMenu->insertItem(caption, TO_WINDOWS_WINDOWS + i);
+            else
+                WindowsMenu->changeItem(TO_WINDOWS_WINDOWS + i, caption);
+#if QT_VERSION < 0x030200
+
+            WindowsMenu->setItemChecked(TO_WINDOWS_WINDOWS + i,
+                                        workspace()->activeWindow() == workspace()->windowList().at(i));
+#else
+
+            WindowsMenu->setItemChecked(TO_WINDOWS_WINDOWS + i,
+                                        workspace()->activeWindow() == workspace()->windowList(QWorkspace::CreationOrder).at(i));
+#endif
+
+            if (i < 9)
+            {
+                WindowsMenu->setAccel(Key_1 + id | CTRL, TO_WINDOWS_WINDOWS + i);
+                caption += QString::fromLatin1(" <");
+                caption += QString::number(++id);
+                caption += QString::fromLatin1(">");
+            }
+            widget->setCaption(caption);
+        }
+    }
+    while (WindowsMenu->indexOf(TO_WINDOWS_WINDOWS + i) >= 0)
+    {
+        WindowsMenu->removeItem(TO_WINDOWS_WINDOWS + i);
+        i++;
+    }
+
+    WindowsMenu->setItemEnabled(TO_WINDOWS_CASCADE, !first);
+    WindowsMenu->setItemEnabled(TO_WINDOWS_TILE, !first);
+    WindowsMenu->setItemEnabled(TO_WINDOWS_CLOSE_ALL, !first);
+}
+
+void toMain::commandCallback(int cmd)
+{
+    QWidget *focus = qApp->focusWidget();
+
+    if (focus)
+    {
+        toEditWidget *edit = findEdit(focus);
+        if (edit && edit != Edit)
+            setEditWidget(edit);
+        else if (focus->inherits("QLineEdit") ||
+                 focus->isA("QSpinBox"))
+            editDisable(Edit);
+    }
+
+    if (Tools[cmd])
+        Tools[cmd]->createWindow();
+    else if (cmd >= TO_TOOL_ABOUT_ID && cmd <= TO_TOOL_ABOUT_ID_END)
+    {
+        if (Tools[cmd - TO_ABOUT_ID_OFFSET])
+            Tools[cmd - TO_ABOUT_ID_OFFSET]->about(this);
+    }
+    else if (cmd >= TO_WINDOWS_WINDOWS && cmd <= TO_WINDOWS_END)
+    {
+#if QT_VERSION < 0x030200
+        if (cmd - TO_WINDOWS_WINDOWS < int(workspace()->windowList().count()))
+        {
+            QWidget *widget = workspace()->windowList().at(cmd - TO_WINDOWS_WINDOWS);
+#else
+
+        if (cmd - TO_WINDOWS_WINDOWS < int(workspace()->windowList(QWorkspace::CreationOrder).count()))
+        {
+            QWidget *widget = workspace()->windowList(QWorkspace::CreationOrder).at(cmd - TO_WINDOWS_WINDOWS);
+#endif
+
+            widget->raise();
+            widget->setFocus();
+        }
+    }
+    else if (cmd >= TO_STATUS_ID && cmd <= TO_STATUS_ID_END)
+    {
+        QString str = StatusMenu->text(cmd);
+        new toMemoEditor(this, str);
+    }
+    else
+    {
+        QWidget *currWidget = qApp->focusWidget();
+        toEditWidget *edit = NULL;
+        while (currWidget && !edit)
+        {
+            edit = dynamic_cast<toEditWidget *>(currWidget);
+            currWidget = currWidget->parentWidget();
+        }
+        if (edit)
+        {
+            if (cmd >= TO_LAST_FILE_ID && cmd <= TO_LAST_FILE_ID_END)
+            {
+                edit->editOpen(toConfigurationSingle::Instance().globalConfig(QCString(CONF_RECENT_FILES ":") +
+                                                    QString::number(cmd - TO_LAST_FILE_ID).latin1(),
+                                                    ""));
+            }
+            else
+            {
+                switch (cmd)
+                {
+                case TO_EDIT_REDO:
+                    edit->editRedo();
+                    break;
+                case TO_EDIT_UNDO:
+                    edit->editUndo();
+                    break;
+                case TO_EDIT_COPY:
+                    edit->editCopy();
+                    break;
+                case TO_EDIT_PASTE:
+                    edit->editPaste();
+                    break;
+                case TO_EDIT_CUT:
+                    edit->editCut();
+                    break;
+                case TO_EDIT_SELECT_ALL:
+                    edit->editSelectAll();
+                    ;
+                    break;
+                case TO_EDIT_READ_ALL:
+                    edit->editReadAll();
+                    break;
+                case TO_EDIT_SEARCH:
+                    if (!Search)
+                        Search = new toSearchReplace(this);
+                    Search->show();
+                    break;
+                case TO_FILE_OPEN:
+                    edit->editOpen();
+                    break;
+                case TO_FILE_SAVE_AS:
+                    edit->editSave(true);
+                    break;
+                case TO_FILE_SAVE:
+                    edit->editSave(false);
+                    break;
+                case TO_FILE_PRINT:
+                    edit->editPrint();
+                    break;
+                }
+            }
+        }
+        switch (cmd)
+        {
+        case TO_FILE_COMMIT:
+            try
+            {
+                toConnection &conn = currentConnection();
+                emit willCommit(conn, true);
+                conn.commit();
+                setNeedCommit(conn, false);
+            }
+            TOCATCH
+            break;
+        case TO_STOP_ALL:
+            try
+            {
+                toConnection &conn = currentConnection();
+                conn.cancelAll();
+            }
+            TOCATCH
+            break;
+        case TO_FILE_CLEARCACHE:
+            try
+            {
+                currentConnection().rereadCache();
+            }
+            TOCATCH
+            toMainWidget()->checkCaching();
+            break;
+        case TO_FILE_ROLLBACK:
+            try
+            {
+                toConnection &conn = currentConnection();
+                emit willCommit(conn, false);
+                conn.rollback();
+                setNeedCommit(conn, false);
+            }
+            TOCATCH
+            break;
+        case TO_FILE_CURRENT:
+            ConnectionSelection->setFocus();
+            break;
+        case TO_FILE_QUIT:
+            close(true);
+            break;
+        case TO_EDIT_SEARCH_NEXT:
+            if (Search)
+                Search->searchNext();
+            break;
+        case TO_WINDOWS_CASCADE:
+            workspace()->cascade();
+            break;
+        case TO_WINDOWS_TILE:
+            workspace()->tile();
+            break;
+        case TO_NEW_CONNECTION:
+            addConnection();
+            break;
+        case TO_HELP_CONTEXT:
+            contextHelp();
+            break;
+        case TO_HELP_CONTENTS:
+            toHelp::displayHelp(QString::fromLatin1("toc.html"));
+            break;
+        case TO_HELP_ABOUT:
+        case TO_HELP_LICENSE:
+        case TO_HELP_QUOTES:
+            {
+                toAbout about(cmd - TO_HELP_ABOUT, this, "About " TOAPPNAME, true);
+                about.exec();
+            }
+            break;
+        case TO_EDIT_OPTIONS:
+            toPreferences::displayPreferences(this);
+            break;
+        case TO_WINDOWS_CLOSE_ALL:
+#if QT_VERSION < 0x030200
+
+            while (workspace()->windowList().count() > 0 && workspace()->windowList().at(0))
+                if (workspace()->windowList().at(0) &&
+                        !workspace()->windowList().at(0)->close(true))
+#else
+
+            while (workspace()->windowList(QWorkspace::CreationOrder).count() > 0 && workspace()->windowList(QWorkspace::CreationOrder).at(0))
+                if (workspace()->windowList(QWorkspace::CreationOrder).at(0) &&
+                        !workspace()->windowList(QWorkspace::CreationOrder).at(0)->close(true))
+#endif
+
+                    return ;
+            break;
+        case TO_WINDOWS_CLOSE:
+            {
+                QWidget *widget = workspace()->activeWindow();
+                if (widget)
+                    widget->close(true);
+                break;
+            }
+        case TO_FILE_OPEN_SESSION:
+            loadSession();
+            break;
+        case TO_FILE_SAVE_SESSION:
+            saveSession();
+            break;
+        case TO_FILE_LAST_SESSION:
+            try
+            {
+                std::map<QCString, QString> session;
+                toConfigurationSingle::Instance().loadMap(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION, DEFAULT_SESSION), session);
+                importData(session, "TOra");
+            }
+            TOCATCH
+            break;
+        case TO_FILE_CLOSE_SESSION:
+            closeSession();
+            break;
+        }
+    }
+}
+
+void toMain::addConnection(void)
+{
+    try
+    {
+        toNewConnection newConnection(this, "New connection", true);
+
+        toConnection *conn = NULL;
+
+        if (newConnection.exec())
+            conn = newConnection.makeConnection();
+
+        if (conn)
+            addConnection(conn);
+    }
+    TOCATCH
+}
+
+toConnection &toMain::currentConnection()
+{
+    for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        if (ConnectionSelection->currentText().startsWith((*i)->description()))
+        {
+            return *(*i);
+        }
+    }
+    throw tr("Can't find active connection");
+}
+
+toConnection *toMain::addConnection(toConnection *conn, bool def)
+{
+    int j = 0;
+    for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++, j++)
+    {
+        if ((*i)->description() == conn->description())
+        {
+            ConnectionSelection->setCurrentItem(j);
+            if (def)
+                createDefault();
+            return *i;
+        }
+    }
+
+    Connections.insert(Connections.end(), conn);
+    ConnectionSelection->insertItem(conn->description());
+    ConnectionSelection->setCurrentItem(ConnectionSelection->count() - 1);
+
+    if (ConnectionSelection->count() == 1)
+    {
+        FileMenu->setItemEnabled(TO_FILE_COMMIT, true);
+        FileMenu->setItemEnabled(TO_STOP_ALL, true);
+        FileMenu->setItemEnabled(TO_FILE_ROLLBACK, true);
+        FileMenu->setItemEnabled(TO_FILE_CLEARCACHE, true);
+        FileMenu->setItemEnabled(TO_CLOSE_CONNECTION, true);
+        DisconnectButton->setEnabled(true);
+    }
+
+    checkCaching();
+
+    changeConnection();
+    emit addedConnection(conn->description());
+
+    if (def)
+        createDefault();
+
+    return conn;
+}
+
+void toMain::setNeedCommit(toConnection &conn, bool needCommit)
+{
+    int pos = 0;
+    for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        if (conn.description() == (*i)->description())
+        {
+            QString dsc = conn.description();
+            if (needCommit)
+                dsc += QString::fromLatin1(" *");
+            ConnectionSelection->changeItem(dsc, pos);
+            break;
+        }
+        pos++;
+    }
+    conn.setNeedCommit(needCommit);
+}
+
+bool toMain::delConnection(void)
+{
+    toConnection *conn = NULL;
+    int pos = 0;
+    for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        if (ConnectionSelection->currentText().startsWith((*i)->description()))
+        {
+            conn = (*i);
+            if (conn->needCommit())
+            {
+                QString str = tr("Commit work in session to %1  before closing it?").arg(conn->description());
+                switch (TOMessageBox::warning(this, tr("Commit work?"), str, tr("&Yes"), tr("&No"), tr("Cancel")))
+                {
+                case 0:
+                    conn->commit();
+                    break;
+                case 1:
+                    conn->rollback();
+                    break;
+                case 2:
+                    return false;
+                }
+            }
+            if (!conn->closeWidgets())
+                return false;
+            emit removedConnection(conn->description());
+            Connections.erase(i);
+            ConnectionSelection->removeItem(pos);
+            if (ConnectionSelection->count())
+                ConnectionSelection->setCurrentItem(std::max(pos - 1, 0));
+            delete conn;
+            break;
+        }
+        pos++;
+    }
+    if (ConnectionSelection->count() == 0)
+    {
+        FileMenu->setItemEnabled(TO_FILE_COMMIT, false);
+        FileMenu->setItemEnabled(TO_STOP_ALL, false);
+        FileMenu->setItemEnabled(TO_FILE_ROLLBACK, false);
+        FileMenu->setItemEnabled(TO_FILE_CLEARCACHE, false);
+        FileMenu->setItemEnabled(TO_CLOSE_CONNECTION, false);
+        DisconnectButton->setEnabled(false);
+        ToolsMenu->clear();
+        ToolsToolbar->clear();
+        for (std::map<QToolButton *, bool>::iterator i = NeedConnection.begin();
+                i != NeedConnection.end();i++)
+            (*i).first->setEnabled(false);
+    }
+    else
+        changeConnection();
+    return true;
+}
+
+std::list<QString> toMain::connections(void)
+{
+    std::list<QString> ret;
+    for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++)
+        toPush(ret, (*i)->description());
+    return ret;
+}
+
+toConnection &toMain::connection(const QString &str)
+{
+    for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++)
+        if ((*i)->description() == str)
+            return *(*i);
+    throw tr("Couldn't find specified connectionts (%1)").arg(str);
+}
+
+void toMain::loadButton(void)
+{
+    commandCallback(TO_FILE_OPEN);
+}
+
+void toMain::commitButton(void)
+{
+    commandCallback(TO_FILE_COMMIT);
+}
+
+void toMain::stopButton(void)
+{
+    commandCallback(TO_STOP_ALL);
+}
+
+void toMain::rollbackButton(void)
+{
+    commandCallback(TO_FILE_ROLLBACK);
+}
+
+void toMain::saveButton(void)
+{
+    commandCallback(TO_FILE_SAVE);
+}
+
+void toMain::undoButton(void)
+{
+    commandCallback(TO_EDIT_UNDO);
+}
+
+void toMain::redoButton(void)
+{
+    commandCallback(TO_EDIT_REDO);
+}
+
+void toMain::copyButton(void)
+{
+    commandCallback(TO_EDIT_COPY);
+}
+
+void toMain::cutButton(void)
+{
+    commandCallback(TO_EDIT_CUT);
+}
+
+void toMain::searchButton(void)
+{
+    commandCallback(TO_EDIT_SEARCH);
+}
+
+void toMain::pasteButton(void)
+{
+    commandCallback(TO_EDIT_PASTE);
+}
+
+void toMain::printButton(void)
+{
+    commandCallback(TO_FILE_PRINT);
+}
+
+void toMain::optionButton(void)
+{
+    commandCallback(TO_EDIT_OPTIONS);
+}
+
+void toMain::setEditWidget(toEditWidget *edit)
+{
+    toMain *main = (toMain *)qApp->mainWidget();
+    if (main && edit)
+    {
+        if (main->Edit)
+            main->Edit->lostFocus();
+        main->Edit = edit;
+#if 0
+
+        main->RowLabel->hide();
+        main->ColumnLabel->hide();
+#else
+
+        main->RowLabel->setText(QString::null);
+        main->ColumnLabel->setText(QString::null);
+#endif
+
+        main->editEnable(edit);
+    }
+}
+
+void toMain::editEnable(toEditWidget *edit)
+{
+    toMain *main = (toMain *)qApp->mainWidget();
+    if (main)
+        main->editEnable(edit,
+                         edit->openEnabled(),
+                         edit->saveEnabled(),
+                         edit->printEnabled(),
+                         edit->undoEnabled(),
+                         edit->redoEnabled(),
+                         edit->cutEnabled(),
+                         edit->copyEnabled(),
+                         edit->pasteEnabled(),
+                         edit->searchEnabled(),
+                         edit->selectAllEnabled(),
+                         edit->readAllEnabled());
+
+#if QT_VERSION >= 0x030000
+    // Set Selection Mode on X11
+    QClipboard *clip = qApp->clipboard();
+    if (clip->supportsSelection())
+        clip->setSelectionMode(true);
+#endif
+}
+
+void toMain::editDisable(toEditWidget *edit)
+{
+    toMain *main = (toMain *)qApp->mainWidget();
+
+    if (main)
+    {
+        if (edit && edit == main->Edit)
+        {
+            main->editEnable(edit, false, false, false, false, false, false, false, false, false, false, false);
+            main->Edit->lostFocus();
+            main->Edit = NULL;
+        }
+    }
+}
+
+toEditWidget *toMain::findEdit(QWidget *widget)
+{
+    while (widget)
+    {
+        toEditWidget *edit = dynamic_cast<toEditWidget *>(widget);
+        if (edit)
+            return edit;
+        widget = widget->parentWidget();
+    }
+    return NULL;
+}
+
+void toMain::editEnable(toEditWidget *edit, bool open, bool save, bool print,
+                        bool undo, bool redo,
+                        bool cut, bool copy, bool paste,
+                        bool search, bool selectAll, bool readAll)
+{
+    if (edit && edit == Edit)
+    {
+        LoadButton->setEnabled(open);
+        SaveButton->setEnabled(save);
+        PrintButton->setEnabled(print);
+
+        UndoButton->setEnabled(undo);
+        RedoButton->setEnabled(redo);
+
+        CutButton->setEnabled(cut);
+        CopyButton->setEnabled(copy);
+        PasteButton->setEnabled(paste);
+        SearchButton->setEnabled(search);
+
+        EditMenu->setItemEnabled(TO_EDIT_UNDO, undo);
+        EditMenu->setItemEnabled(TO_EDIT_REDO, redo);
+        EditMenu->setItemEnabled(TO_EDIT_CUT, cut);
+        EditMenu->setItemEnabled(TO_EDIT_COPY, copy);
+        EditMenu->setItemEnabled(TO_EDIT_PASTE, paste);
+        EditMenu->setItemEnabled(TO_EDIT_SELECT_ALL, selectAll);
+        EditMenu->setItemEnabled(TO_EDIT_READ_ALL, readAll);
+        EditMenu->setItemEnabled(TO_EDIT_SEARCH, search);
+        EditMenu->setItemEnabled(TO_EDIT_SEARCH_NEXT, Search && Search->searchNextAvailable());
+
+        FileMenu->setItemEnabled(TO_FILE_OPEN, open);
+        FileMenu->setItemEnabled(TO_FILE_SAVE, save);
+        FileMenu->setItemEnabled(TO_FILE_SAVE_AS, save);
+    }
+}
+
+void toMain::registerSQLEditor(int tool)
+{
+    SQLEditor = tool;
+}
+
+bool toMain::close(bool del)
+{
+    std::map<QCString, QString> session;
+    exportData(session, "TOra");
+    try
+    {
+        toConfigurationSingle::Instance().saveMap(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION,
+                                             DEFAULT_SESSION),
+                        session);
+    }
+    TOCATCH
+
+    while (Connections.end() != Connections.begin())
+    {
+        if (!delConnection())
+            return false;
+    }
+    editDisable(Edit);
+    toConfigurationSingle::Instance().saveConfig();
+    return QMainWindow::close(del);
+}
+
+void toMain::createDefault(void)
+{
+    commandCallback(DefaultTool);
+}
+
+void toMain::setCoordinates(int line, int col)
+{
+    QString str = tr("Row:") + " ";
+    str += QString::number(line);
+    RowLabel->setText(str);
+    str = tr("Col:") + " ";
+    str += QString::number(col);
+    ColumnLabel->setText(str);
+#if 0
+
+    RowLabel->show();
+    ColumnLabel->show();
+#endif
+}
+
+void toMain::editSQL(const QString &str)
+{
+    if (SQLEditor >= 0 && Tools[SQLEditor])
+    {
+        Tools[SQLEditor]->createWindow();
+        emit sqlEditor(str);
+    }
+}
+
+void toMain::contextHelp(void)
+{
+    toHelp::displayHelp();
+}
+
+void toMain::statusMenu(void)
+{
+    std::list<QString> status = toStatusMessages();
+    StatusMenu->clear();
+    int id = TO_STATUS_ID;
+    for (std::list<QString>::iterator i = status.begin();i != status.end();i++)
+        StatusMenu->insertItem(*i, id++);
+}
+
+void toMain::changeConnection(void)
+{
+    try
+    {
+        toConnection &conn = currentConnection();
+        for (std::map<QToolButton *, bool>::iterator j = NeedConnection.begin();
+                j != NeedConnection.end();j++)
+            (*j).first->setEnabled(true);
+
+        int toolID = TO_TOOLS;
+        int lastPriorityPix = 0;
+        int lastPriorityMenu = 0;
+
+        ToolsMenu->clear();
+        ToolsToolbar->clear();
+
+        std::map<QCString, toTool *> &tools = toTool::tools();
+        for (std::map<QCString, toTool *>::iterator i = tools.begin();i != tools.end();i++)
+        {
+            const QPixmap *pixmap = (*i).second->toolbarImage();
+            const char *toolTip = (*i).second->toolbarTip();
+            const char *menuName = (*i).second->menuItem();
+
+            QCString tmp = (*i).first;
+            tmp += CONF_TOOL_ENABLE;
+            if (toConfigurationSingle::Instance().globalConfig(tmp, "Yes").isEmpty())
+                continue;
+
+            if ((*i).second->canHandle(conn))
+            {
+                int priority = (*i).second->priority();
+                if (priority / 100 != lastPriorityPix / 100 &&
+                        pixmap)
+                {
+                    ToolsToolbar->addSeparator();
+                    lastPriorityPix = priority;
+                }
+                if (priority / 100 != lastPriorityMenu / 100 &&
+                        menuName)
+                {
+                    ToolsMenu->insertSeparator();
+                    lastPriorityMenu = priority;
+                }
+
+                if (pixmap)
+                {
+                    if (!toolTip)
+                        toolTip = "";
+                    new QToolButton(*pixmap,
+                                    qApp->translate("toTool", toolTip),
+                                    qApp->translate("toTool", toolTip),
+                                    (*i).second,
+                                    SLOT(createWindow(void)),
+                                    ToolsToolbar);
+                }
+
+                if (menuName)
+                {
+#ifdef TODEBUG_TRANSLATION
+                    printf("QT_TRANSLATE_NOOP(\"toTool\",\"%s\"),\n", (const char *)menuName);
+#endif
+
+                    if (pixmap)
+                        ToolsMenu->insertItem(*pixmap, qApp->translate("toTool", menuName), toolID);
+                    else
+                        ToolsMenu->insertItem(qApp->translate("toTool", menuName), toolID);
+                }
+            }
+
+            toolID++;
+        }
+    }
+    TOCATCH
+}
+
+void toMain::checkCaching(void)
+{
+    int num = 0;
+    for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        if (!(*i)->cacheAvailable(true, false, false))
+            num++;
+    }
+    if (num == 0){
+        Poll.stop();
+    }
+    else{
+        Poll.start(100);
+     }
+}
+
+void toMain::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    try
+    {
+        if (isMaximized())
+            data[prefix + ":State"] = QString::fromLatin1("Maximized");
+        else if (isMinimized())
+            data[prefix + ":State"] = QString::fromLatin1("Minimized");
+        else
+        {
+            QRect rect = geometry();
+            data[prefix + ":X"] = QString::number(rect.x());
+            data[prefix + ":Y"] = QString::number(rect.y());
+            data[prefix + ":Width"] = QString::number(rect.width());
+            data[prefix + ":Height"] = QString::number(rect.height());
+        }
+
+        int id = 1;
+        std::map<toConnection *, int> connMap;
+        {
+            for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++)
+            {
+                QCString key = prefix + ":Connection:" + QString::number(id).latin1();
+                if (toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD) != DEFAULT_SAVE_PWD)
+                    data[key + ":Password"] = toObfuscate((*i)->password());
+                data[key + ":User"] = (*i)->user();
+                data[key + ":Host"] = (*i)->host();
+
+                QString options;
+                for (std::set
+                            <QString>::const_iterator j = (*i)->options().begin();j != (*i)->options().end();j++)
+                        options += "," + *j;
+                data[key + ":Options"] = options.mid(1); // Strip extra , in beginning
+
+                data[key + ":Database"] = (*i)->database();
+                data[key + ":Provider"] = (*i)->provider();
+                connMap[*i] = id;
+                id++;
+            }
+        }
+
+        id = 1;
+#if QT_VERSION < 0x030200
+
+        for (unsigned int i = 0;i < workspace()->windowList().count();i++)
+        {
+            toToolWidget *tool = dynamic_cast<toToolWidget *>(workspace()->windowList().at(i));
+#else
+
+        for (unsigned int i = 0;i < workspace()->windowList(QWorkspace::CreationOrder).count();i++)
+        {
+            toToolWidget *tool = dynamic_cast<toToolWidget *>(workspace()->windowList(QWorkspace::CreationOrder).at(i));
+#endif
+
+            if (tool)
+            {
+                QCString key = prefix + ":Tools:" + QString::number(id).latin1();
+                tool->exportData(data, key);
+                data[key + ":Type"] = tool->tool().key();
+                data[key + ":Connection"] = QString::number(connMap[&tool->connection()]);
+                id++;
+            }
+        }
+
+        toTemplateProvider::exportAllData(data, prefix + ":Templates");
+    }
+    TOCATCH
+}
+
+void toMain::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    if (data[prefix + ":State"] == QString::fromLatin1("Maximized"))
+        showMaximized();
+    else if (data[prefix + ":State"] == QString::fromLatin1("Minimized"))
+        showMinimized();
+    else
+    {
+        int width = data[prefix + ":Width"].toInt();
+        if (width == 0)
+        {
+            TOMessageBox::warning(toMainWidget(),
+                                  tr("Invalid session file"), tr("The session file is not valid, can't read it."));
+            return ;
+        }
+        else
+            setGeometry(data[prefix + ":X"].toInt(),
+                        data[prefix + ":Y"].toInt(),
+                        width,
+                        data[prefix + ":Height"].toInt());
+        showNormal();
+    }
+
+    std::map<int, toConnection *> connMap;
+
+    int id = 1;
+    std::map<QCString, QString>::iterator i;
+    while ((i = data.find(prefix + ":Connection:" + QString::number(id).latin1() + ":Database")) != data.end())
+    {
+        QCString key = prefix + ":Connection:" + QString::number(id).latin1();
+        QString database = (*i).second;
+        QString user = data[key + ":User"];
+        QString host = data[key + ":Host"];
+
+        QStringList optionlist = QStringList::split(",", data[key + ":Options"]);
+        std::set
+            <QString> options;
+        for (unsigned int j = 0;j < optionlist.count();j++)
+            if (!optionlist[j].isEmpty())
+                options.insert(optionlist[j]);
+
+        QString password = toUnobfuscate(data[key + ":Password"]);
+        QString provider = data[key + ":Provider"];
+        bool ok = true;
+        if (toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD) == password)
+        {
+            password = QInputDialog::getText(tr("Input password"),
+                                             tr("Enter password for %1").arg(database),
+                                             QLineEdit::Password,
+                                             QString::fromLatin1(DEFAULT_SAVE_PWD),
+                                             &ok,
+                                             this);
+        }
+        if (ok)
+        {
+            try
+            {
+                toConnection *conn = new toConnection(provider.latin1(), user, password, host, database, options);
+                if (conn)
+                {
+                    conn = addConnection(conn, false);
+                    connMap[id] = conn;
+                }
+            }
+            TOCATCH
+        }
+        id++;
+    }
+
+    id = 1;
+    while ((i = data.find(prefix + ":Tools:" + QString::number(id).latin1() + ":Type")) != data.end())
+    {
+        QCString key = (*i).second.latin1();
+        int connid = data[prefix + ":Tools:" + QString::number(id).latin1() + ":Connection"].toInt();
+        std::map<int, toConnection *>::iterator j = connMap.find(connid);
+        if (j != connMap.end())
+        {
+            toTool *tool = toTool::tool(key);
+            if (tool)
+            {
+                QWidget *widget = tool->toolWindow(workspace(), *((*j).second));
+                const QPixmap *icon = tool->toolbarImage();
+                if (icon)
+                    widget->setIcon(*icon);
+                widget->show();
+                if (widget)
+                {
+                    toToolWidget *tw = dynamic_cast<toToolWidget *>(widget);
+                    if (tw)
+                    {
+                        toToolCaption(tw, tool->name());
+                        tw->importData(data, prefix + ":Tools:" + QString::number(id).latin1());
+                        toolWidgetAdded(tw);
+                    }
+                }
+            }
+        }
+        id++;
+    }
+
+    toTemplateProvider::importAllData(data, prefix + ":Templates");
+    windowsMenu();
+}
+
+void toMain::saveSession(void)
+{
+    QString fn = toSaveFilename(QString::null, QString::fromLatin1("*.tse"), this);
+    if (!fn.isEmpty())
+    {
+        std::map<QCString, QString> session;
+        exportData(session, "TOra");
+        try
+        {
+            toConfigurationSingle::Instance().saveMap(fn, session);
+        }
+        TOCATCH
+    }
+}
+
+void toMain::loadSession(void)
+{
+    QString filename = toOpenFilename(QString::null, QString::fromLatin1("*.tse"), this);
+    if (!filename.isEmpty())
+    {
+        try
+        {
+            std::map<QCString, QString> session;
+            toConfigurationSingle::Instance().loadMap(filename, session);
+            importData(session, "TOra");
+        }
+        TOCATCH
+    }
+}
+
+void toMain::closeSession(void)
+{
+    std::map<QCString, QString> session;
+    exportData(session, "TOra");
+    try
+    {
+        toConfigurationSingle::Instance().saveMap(toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_SESSION,
+                                             DEFAULT_SESSION),
+                        session);
+    }
+    TOCATCH
+
+    // Workaround in bug in Qt 3.0.0
+#if QT_VERSION < 0x030200
+    while (workspace()->windowList().count() > 0 && workspace()->windowList().at(0))
+        if (workspace()->windowList().at(0) &&
+                !workspace()->windowList().at(0)->close(true))
+            return ;
+#else
+
+    while (workspace()->windowList(QWorkspace::CreationOrder).count() > 0 && workspace()->windowList(QWorkspace::CreationOrder).at(0))
+        if (workspace()->windowList(QWorkspace::CreationOrder).at(0) &&
+                !workspace()->windowList(QWorkspace::CreationOrder).at(0)->close(true))
+            return ;
+#endif
+
+    while (Connections.end() != Connections.begin())
+    {
+        if (!delConnection())
+            return ;
+    }
+}
+
+void toMain::addChart(toLineChart *chart)
+{
+    emit chartAdded(chart);
+}
+
+void toMain::setupChart(toLineChart *chart)
+{
+    emit chartSetup(chart);
+}
+
+void toMain::removeChart(toLineChart *chart)
+{
+    emit chartRemoved(chart);
+}
+
+void toMain::displayMessage(void)
+{
+    static bool recursive = false;
+    static bool disabled = false;
+    if (disabled)
+    {
+        while (StatusMessages.size() > 1) // Clear everything but the first one.
+            toPop(StatusMessages);
+        return ;
+    }
+
+    if (StatusMessages.size() >= 50)
+    {
+        disabled = true;
+        toUnShift(StatusMessages,
+                  tr("Message flood, temporary disabling of message box error reporting from now on.\n"
+                     "Restart to reenable. You probably have a too high refreshrate in some tool."));
+    }
+
+    if (recursive)
+        return ;
+    recursive = true;
+
+    for (QString str = toShift(StatusMessages);!str.isEmpty();str = toShift(StatusMessages))
+    {
+        toMessageUI dialog(toMainWidget(), NULL, true);
+        dialog.Message->setReadOnly(true);
+
+#ifdef TO_KDE_KACCELMANAGER
+
+        KAcceleratorManager::setNoAccel( dialog.Message );
+#endif
+
+#if QT_VERSION >= 0x030000
+
+        dialog.Icon->setPixmap(QApplication::style().stylePixmap(QStyle::SP_MessageBoxWarning));
+#endif
+
+        dialog.Message->setText(str);
+        dialog.exec();
+        if (dialog.Statusbar->isChecked())
+        {
+            toConfigurationSingle::Instance().globalSetConfig(CONF_MESSAGE_STATUSBAR, "Yes");
+            TOMessageBox::information(toMainWidget(),
+                                      tr("Information"),
+                                      tr("You can enable this through the Global Settings in the Options (Edit menu)"));
+            toConfigurationSingle::Instance().saveConfig();
+        }
+    }
+    recursive = false;
+}
+
+void toMain::displayMessage(const QString &str)
+{
+    toPush(StatusMessages, str);
+    QTimer::singleShot(1, this, SLOT(displayMessage()));
+}
+
+void toMain::updateKeepAlive(void)
+{
+    int keepAlive = toConfigurationSingle::Instance().globalConfig(CONF_KEEP_ALIVE, "0").toInt();
+    if (KeepAlive.isActive())
+        disconnect(&KeepAlive, SIGNAL(timeout()), this, SLOT(keepAlive()));
+    if (keepAlive)
+    {
+        connect(&KeepAlive, SIGNAL(timeout()), this, SLOT(keepAlive()));
+        KeepAlive.start(keepAlive*1000);
+    }
+}
+
+class toMainNopExecutor : public toTask
+{
+private:
+    toConnection &Connection;
+    QString SQL;
+public:
+    toMainNopExecutor(toConnection &conn, const QString &sql)
+            : Connection(conn), SQL(sql)
+    { }
+    virtual void run(void)
+    {
+        try
+        {
+            Connection.allExecute(SQL);
+        }
+        TOCATCH
+    }
+};
+
+void toMain::keepAlive(void)
+{
+    for (std::list<toConnection *>::iterator i = Connections.begin();i != Connections.end();i++)
+    {
+        toThread *thread = new toThread(new toMainNopExecutor(*(*i), toSQL::string("Global:Now", *(*i))));
+        thread->start();
+    }
+}
+
+void toMain::toolWidgetAdded(toToolWidget *tool)
+{
+    emit addedToolWidget(tool);
+}
+
+void toMain::toolWidgetRemoved(toToolWidget *tool)
+{
+    emit removedToolWidget(tool);
+}
+
+toBackgroundLabel* toMain::getBackgroundLabel()
+{
+return BackgroundLabel;
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tomain.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomain.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomain.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,617 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOMAIN_H
+#define TOMAIN_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "tobackuptool.h"
+
+#ifdef TO_KDE
+#include "tomainwindow.kde.h"
+#else
+#include "tomainwindow.h"
+#endif
+
+#include <list>
+#include <map>
+#include <algorithm>
+
+#include <qtimer.h>
+
+#if QT_VERSION >= 0x030000
+class QUrlOperator;
+#endif
+
+#define TOMessageBox QMessageBox
+
+class QComboBox;
+class QLabel;
+class QListView;
+class QListViewItem;
+class QNetworkOperation;
+class QPopupMenu;
+class QToolBar;
+class QToolButton;
+class QWorkspace;
+class toBackgroundLabel;
+class toConnection;
+class toEditWidget;
+class toLineChart;
+class toMarkedText;
+class toSearchReplace;
+class toTool;
+class toToolWidget;
+
+/** This class defines the main window. Observe that this class will have different baseclass
+ * depending on if TOra is a Qt or KDE application. In the case of Qt this will be a
+ * QMainWindow descendant.
+ */
+class toMain : public toMainWindow
+{
+    Q_OBJECT
+private:
+    std::auto_ptr<toBackupTool> toBackupTool_;
+    /**
+     * The connections that have been opened in TOra.
+     */
+    std::list<toConnection *> Connections;
+    /**
+     * Workspace of main window.
+     */
+    QWorkspace *Workspace;
+    /**
+     * Handles available connections list in toolbar.
+     */
+    QComboBox *ConnectionSelection;
+    /**
+     * Add a new connection. The connection itself must already be created.
+     * Returns the connection or it's duplicate already opened connection.
+     */
+    toConnection *addConnection(toConnection *conn, bool def = true);
+    /**
+     * A map from menu ID:s to tools.
+     */
+    std::map<int, toTool *> Tools;
+    /**
+     * A list of toolbuttons that need an open connection to be enabled.
+     */
+    std::map<QToolButton *, bool> NeedConnection;
+    /**
+     * The ID of the tool providing the SQL editor.
+     */
+    int SQLEditor;
+
+    /** Status messages to display
+     */
+    std::list<QString> StatusMessages;
+
+    /**
+     * Disconnect connection button.
+     */
+    QToolButton *DisconnectButton;
+    /**
+     * Load file button.
+     */
+    QToolButton *LoadButton;
+    /**
+     * Save file button.
+     */
+    QToolButton *SaveButton;
+    /**
+     * Print button.
+     */
+    QToolButton *PrintButton;
+    /**
+     * Undo button.
+     */
+    QToolButton *UndoButton;
+    /**
+     * Redo button.
+     */
+    QToolButton *RedoButton;
+    /**
+     * Cut button.
+     */
+    QToolButton *CutButton;
+    /**
+     * Copy button.
+     */
+    QToolButton *CopyButton;
+    /**
+     * Paste button.
+     */
+    QToolButton *PasteButton;
+    /**
+     * Paste button.
+     */
+    QToolButton *SearchButton;
+
+    /**
+     * Edit buttons toolbar.
+     */
+    QToolBar *EditToolbar;
+    /**
+     * Tool buttons toolbar.
+     */
+    QToolBar *ToolsToolbar;
+    /**
+     * Connection buttons toolbar.
+     */
+    QToolBar *ConnectionToolbar;
+
+    /**
+     * File menu.
+     */
+    QPopupMenu *FileMenu;
+    /**
+     * Edit menu.
+     */
+    QPopupMenu *EditMenu;
+    /**
+     * Tools menu.
+     */
+    QPopupMenu *ToolsMenu;
+    /**
+     * Windows menu.
+     */
+    QPopupMenu *WindowsMenu;
+    /**
+     * Help menu.
+     */
+    QPopupMenu *HelpMenu;
+    /**
+     * Display latest status messages
+     */
+    QPopupMenu *StatusMenu;
+    /**
+     * Current column label.
+     */
+    QLabel *ColumnLabel;
+    /**
+     * Current row label.
+     */
+    QLabel *RowLabel;
+    toBackground Poll;
+    /**
+     * Search & replace dialog if available.
+     */
+    toSearchReplace *Search;
+    /**
+     * Default tool id
+     */
+    int DefaultTool;
+
+    toBackgroundLabel* BackgroundLabel;
+
+    QTimer KeepAlive;
+
+    toEditWidget *Edit;
+
+    toEditWidget *findEdit(QWidget *edit);
+
+    void updateRecent(void);
+
+    void editEnable(toEditWidget *edit,
+                    bool open, bool save, bool print,
+                    bool undo, bool redo,
+                    bool cut, bool copy, bool paste,
+                    bool search,
+                    bool selectAll, bool readAll);
+
+    static const int TO_STATUS_ID = 4000;
+    static const int TO_STATUS_ID_END = 4999;
+    static const int TO_NEW_CONNECTION = 100;
+    static const int TO_CLOSE_CONNECTION = 101;
+    static const int TO_STOP_ALL = 102;
+    static const int TO_FILE_OPEN = 103;
+    static const int TO_FILE_SAVE = 104;
+    static const int TO_FILE_SAVE_AS = 105;
+    static const int TO_FILE_COMMIT = 106;
+    static const int TO_FILE_ROLLBACK = 107;
+    static const int TO_FILE_CURRENT = 108;
+    static const int TO_FILE_CLEARCACHE = 109;
+    static const int TO_FILE_PRINT = 110;
+    static const int TO_FILE_QUIT = 111;
+    static const int TO_FILE_OPEN_SESSION = 112;
+    static const int TO_FILE_SAVE_SESSION = 113;
+    static const int TO_FILE_CLOSE_SESSION = 114;
+    static const int TO_FILE_LAST_SESSION = 115;
+
+    static const int TO_EDIT_UNDO = 200;
+    static const int TO_EDIT_REDO = 201;
+    static const int TO_EDIT_CUT = 202;
+    static const int TO_EDIT_COPY = 203;
+    static const int TO_EDIT_PASTE = 204;
+    static const int TO_EDIT_SELECT_ALL = 205;
+    static const int TO_EDIT_OPTIONS = 206;
+    static const int TO_EDIT_READ_ALL = 207;
+    static const int TO_EDIT_SEARCH = 208;
+    static const int TO_EDIT_SEARCH_NEXT = 209;  // Used by edit extension
+
+    static const int TO_WINDOWS_TILE = 300;
+    static const int TO_WINDOWS_CASCADE = 301;
+    static const int TO_WINDOWS_CLOSE = 302;
+    static const int TO_WINDOWS_CLOSE_ALL = 303;
+    static const int TO_WINDOWS_WINDOWS = 310;
+    static const int TO_WINDOWS_END = 399;
+
+    static const int TO_HELP_CONTENTS = 900;
+    static const int TO_HELP_CONTEXT = 901;
+    static const int TO_HELP_ABOUT = 902;
+    static const int TO_HELP_LICENSE = 903;
+    static const int TO_HELP_QUOTES = 904;
+
+    static const int TO_TOOLS = 1000;
+
+public:
+
+    /** IDs of the menu bar
+     */
+    enum {TO_FILE_MENU, TO_EDIT_MENU, TO_TOOLS_MENU, TO_WINDOWS_MENU, TO_HELP_MENU};
+
+    /** First ID of the tool specific menu items.
+     */
+    static const int TO_TOOL_MENU_ID = 2000;
+    /** Last ID of the tool specific menu items.
+     */
+    static const int TO_TOOL_MENU_ID_END = 2999;
+
+    /** First ID of the tool specific menu items.
+     */
+    static const int TO_LAST_FILE_ID = 5000;
+    /** Last ID of the tool specific menu items.
+     */
+    static const int TO_LAST_FILE_ID_END = 5999;
+
+    /** First ID of the tool specific about menu items.
+     */
+    static const int TO_TOOL_ABOUT_ID = 3000;
+    /** Last ID of the tool specific about menu items.
+     */
+    static const int TO_TOOL_ABOUT_ID_END = 3999;
+
+    /**
+     * Create main window. Always NULL as parent.
+     */
+    toMain();
+
+    /**
+     * Get the workspace widget of the main window.
+     * @return Workspace widget.
+     */
+    QWorkspace *workspace()
+    {
+        return Workspace;
+    }
+
+    /**
+     * Get the current database connection
+     * @return Reference to current connection.
+     */
+    toConnection &currentConnection(void);
+
+    /**
+     * Set the widget to edit through menues and toolbar.
+     */
+    static void setEditWidget(toEditWidget *edit);
+    /**
+     * Set available menu items in user interface. It is not enough to just call
+     * this function to make open for instance to actually work. It is a lot of
+     * more especially in @ref commandCallback and @ref editFileMenu. Will only
+     * update if this is the current editing widget.
+     */
+    static void editEnable(toEditWidget *edit);
+    /**
+     * Disable all the current available items in the user interface (That @ref
+     * editEnable can enable). If specified widget has the focus the edit widget
+     * is cleared.
+     */
+    static void editDisable(toEditWidget *edit);
+    /** Get current edit widget
+     */
+    toEditWidget *editWidget()
+    {
+        return Edit;
+    }
+
+    /**
+     * Close window
+     * @param del If user interaction is allowed.
+     * @return True if close was allowed, otherwise false.
+     */
+    virtual bool close(bool del);
+    /**
+     * Create the default tool for the current connection.
+     *
+     * This is the tool with the highest priority, usually the SQL worksheet.
+     */
+    void createDefault(void);
+    /**
+     * Set coordinates in the statusbar.
+     *
+     * Used to indicate current cursor position by child widgets.
+     */
+    void setCoordinates(int, int);
+
+    /**
+     * Get the file menu.
+     * @return File menu
+     */
+    QPopupMenu *fileMenu()
+    {
+        return FileMenu;
+    }
+    /**
+     * Get the edit menu.
+     * @return Edit menu
+     */
+    QPopupMenu *editMenu()
+    {
+        return EditMenu;
+    }
+    /**
+     * Get the tools menu.
+     * @return Tools menu
+     */
+    QPopupMenu *toolsMenu()
+    {
+        return ToolsMenu;
+    }
+    /**
+     * Get the help menu.
+     * @return Help menu
+     */
+    QPopupMenu *helpMenu()
+    {
+        return HelpMenu;
+    }
+ 
+    toBackgroundLabel* getBackgroundLabel();
+
+    /* Update the keepalive from configuration
+     */
+    void updateKeepAlive();
+
+    /**
+     * Get a list of currently open connections.
+     * @return List of connection names. The returned list can then be used by
+     * @ref connection to get the actual connection.
+     */
+    std::list<QString> connections(void);
+    /** Get a connection identified by a string.
+     * @return A reference to a connection.
+     * @exception QString If connection wasn't found.
+     */
+    toConnection &connection(const QString &);
+    /** Set if a connection needs to be commited. Also updates visual feedback in interface.
+     */
+    void setNeedCommit(toConnection &conn, bool needCommit = true);
+
+    /** Edit an SQL statement in the SQL editor if any connected.
+     * @param str Identifier of the SQL to edit.
+     */
+    void editSQL(const QString &str);
+    /**
+     * Register a tool which to use as an SQL editor. When something is to be edited
+     * first a toolwindow will be created and the @ref sqlEditor will be emited, so
+     * the SQL editor must connect to this signal as well.
+     *
+     * @param toolid Which tool identifier to register as the SQL editor. This
+     *               is the value which is passed to the @ref toTool::customSetup
+     *               member.
+     */
+    void registerSQLEditor(int toolid);
+
+    /** Called by @ref toTool when a new tool is created.
+     * @param tool The tool widget created.
+     */
+    void toolWidgetAdded(toToolWidget *tool);
+    /** Called by @ref toToolWidget when a new tool is about to be destroyed.
+     * @param tool The tool widget created.
+     */
+    void toolWidgetRemoved(toToolWidget *tool);
+
+    /** Export data to a map.
+     * @param data A map that can be used to recreate the session.
+     * @param prefix Prefix to add to the map.
+     */
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Import data
+     * @param data Data to read from a map.
+     * @param prefix Prefix to read data from.
+     */
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Get edit toolbar pointer.
+     */
+    QToolBar *editToolbar()
+    {
+        return EditToolbar;
+    }
+    /** Get connection toolbar pointer.
+     */
+    QToolBar *connectionToolbar()
+    {
+        return ConnectionToolbar;
+    }
+    /** Added chart.
+     */
+    void addChart(toLineChart *chart);
+    /** Removed chart.
+     */
+    void removeChart(toLineChart *chart);
+    /** Setup chart.
+     */
+    void setupChart(toLineChart *chart);
+    /** Display status message in dialog.
+     */
+    void displayMessage(const QString &str);
+    /** Add recent file
+     */
+    void addRecentFile(const QString &filename);
+signals:
+    /** Invoked to start editing an SQL identifier.
+     * @param str Identifier to start editing.
+     */
+    void sqlEditor(const QString &str);
+    /** Invoked when a new chart is created.
+     */
+    void chartAdded(toLineChart *chart);
+    /** Invoked before a chart is destroyed.
+     */
+    void chartSetup(toLineChart *chart);
+    /** Invoked before a chart is destroyed.
+     */
+    void chartRemoved(toLineChart *chart);
+    /** Invoked when a connection is added.
+     * @param str Connection identifier.
+     */
+    void addedConnection(const QString &str);
+    /** Invoked when a connection is removed.
+     * @param str Connection identifier.
+     */
+    void removedConnection(const QString &str);
+    /** Invoked when a tool window is created.
+     * @param tool The tool created.
+     */
+    void addedToolWidget(toToolWidget *tool);
+    /** Invoked when a tool window is closed.
+     * @param tool Tool about to be removed.
+     */
+    void removedToolWidget(toToolWidget *tool);
+    /** Emitted before a commit or rollback is made to the current connection.
+     * @param conn Connection that is commited
+     * @param cmt True if commit, false if rollback.
+     */
+    void willCommit(toConnection &conn, bool cmt);
+public slots:
+    /** Used to enable/disable entries in the windows menu
+     */
+    void windowsMenu(void);
+    /** Used to fill the status menu with the latest status entries
+     */
+    void statusMenu(void);
+    /** Display context help.
+     */
+    void contextHelp(void);
+    /** Called when active window is changed.
+     */
+    void windowActivated(QWidget *);
+    /** Used to enable/disable entries in the file menu
+     */
+    void showFileMenu(void);
+    /** Check if object caching is done.
+     */
+    void checkCaching(void);
+    /** Save the current TOra session
+     */
+    void saveSession(void);
+    /** Load a session (Merge with current)
+     */
+    void loadSession(void);
+    /** Close all windows and connections.
+     */
+    void closeSession(void);
+    /** Change current connection
+     */
+    void changeConnection(void);
+private slots:
+    /** Add a connection
+     */
+    void addConnection(void);
+    /** Remove a connection
+     */
+    bool delConnection(void);
+    /** Handles menu selections
+     * @param cmd Menu entry ID selected
+     */
+    void commandCallback(int cmd);
+
+    /** Commit button pressed
+     */
+    void commitButton(void);
+    /** Rollback button pressed
+     */
+    void rollbackButton(void);
+
+    /** Load button pressed
+     */
+    void loadButton(void);
+    /** Save button pressed
+     */
+    void saveButton(void);
+    /** Print button pressed
+     */
+    void printButton(void);
+    /** Options button pressed
+     */
+    void optionButton(void);
+    /** Undo button pressed
+     */
+    void undoButton(void);
+    /** Redo button pressed
+     */
+    void redoButton(void);
+    /** Copy button pressed
+     */
+    void copyButton(void);
+    /** Cut button pressed
+     */
+    void cutButton(void);
+    /** Paste button pressed
+     */
+    void pasteButton(void);
+    /** Paste button pressed
+     */
+    void searchButton(void);
+    /** Stop running queries on connection
+     */
+    void stopButton(void);
+    /** Display status message
+     */
+    void displayMessage(void);
+
+    void keepAlive();
+};
+
+/** Get a pointer to the main window
+ * @return Pointer to main window.
+ */
+toMain *toMainWidget(void);
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tomainwindow.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomainwindow.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomainwindow.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,55 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOMAINWINDOW_H
+#define TOMAINWINDOW_H
+
+#include "config.h"
+
+#include <qmainwindow.h>
+
+class toMainWindow : public QMainWindow
+{
+    Q_OBJECT
+public:
+    toMainWindow()
+            : QMainWindow(0, "Main Window")
+    { }
+}
+;
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tomainwindow.kde.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomainwindow.kde.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomainwindow.kde.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,60 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOMAINWINDOW_KDE_H
+#define TOMAINWINDOW_KDE_H
+
+#include "config.h"
+
+#include <kapp.h>
+#include <kdockwidget.h>
+
+/**
+ * A container class that either inherits KDE or Qt main window.
+ */
+
+class toMainWindow : public KDockMainWindow
+{
+    Q_OBJECT
+public:
+    toMainWindow()
+            : KDockMainWindow(0, "Main Window")
+    { }
+}
+;
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tomarkedtext.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomarkedtext.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomarkedtext.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,723 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "tomarkedtext.h"
+#include "tosearchreplace.h"
+#include "totool.h"
+
+#ifdef TO_HAS_KPRINT
+#include <kprinter.h>
+#endif
+
+#include <qapplication.h>
+#include <qfileinfo.h>
+#include <qmessagebox.h>
+#include <qpaintdevicemetrics.h>
+#include <qpainter.h>
+#include <qpalette.h>
+#include <qprinter.h>
+#include <qclipboard.h>
+
+#include "tomarkedtext.moc"
+
+#define ACCEL_KEY(k) "\t" + QString("Ctrl+" #k)
+
+
+// static value for default tab width
+int toMarkedText::defTabWidth = 8;
+
+
+toMarkedText::toMarkedText(QWidget *parent, const char *name)
+        : QextScintilla(parent, name), toEditWidget()
+{
+    setEdit();
+    Search = false;
+    setFont(toStringToFont(toConfigurationSingle::Instance().globalConfig(CONF_TEXT, "")));
+
+    connect(this, SIGNAL(textChanged()), this, SLOT(setTextChanged()));
+    connect(this,SIGNAL(copyAvailable(bool)),this,SLOT(setCopyAvailable(bool)));
+
+/*	is this still neccessary after switch to sqcintilla?!?
+    QPalette pal = palette();
+    pal.setColor(QColorGroup::Base,
+                 toSyntaxAnalyzer::defaultAnalyzer().getColor(toSyntaxAnalyzer::DefaultBg));
+    pal.setColor(QColorGroup::Foreground,
+                 toSyntaxAnalyzer::defaultAnalyzer().getColor(toSyntaxAnalyzer::Default));
+    setPalette(pal);
+*/
+    CursorTimerID = -1;
+    
+    // sets default tab width
+    setTabWidth(defaultTabWidth());
+    this->setUtf8(true);
+}
+toMarkedText::~toMarkedText(){
+}
+
+void toMarkedText::setCopyAvailable(bool yes){
+  setEdit();
+} 
+
+void toMarkedText::setEdit(void)
+{
+    if (isReadOnly())
+    {
+        toEditWidget::setEdit(false, true, true,
+                              false, false,
+                              false, hasSelectedText(), false,
+                              true, true, false);
+    }
+    else
+    {
+        toEditWidget::setEdit(true, true, true,
+                              undoEnabled(), redoEnabled(),
+                              hasSelectedText(), hasSelectedText(), true,
+                              true, true, false);
+    }
+    toMain::editEnable(this);
+}
+
+void toMarkedText::focusInEvent (QFocusEvent *e)
+{
+    receivedFocus();
+    int curline, curcol;
+    getCursorPosition (&curline, &curcol);
+    toMainWidget()->setCoordinates(curline + 1, curcol + 1);
+    QextScintilla::focusInEvent(e);
+    if (CursorTimerID < 0)
+        CursorTimerID = startTimer(500);
+}
+
+void toMarkedText::timerEvent(QTimerEvent *e)
+{
+    if (CursorTimerID == e->timerId())
+    {
+        int curline, curcol;
+        getCursorPosition (&curline, &curcol);
+        toMainWidget()->setCoordinates(curline + 1, curcol + 1);
+    }
+    else
+        QextScintilla::timerEvent(e);
+}
+
+void toMarkedText::focusOutEvent (QFocusEvent *e)
+{
+    if (Search)
+    {
+        Search = false;
+        LastSearch = SearchString;
+        toStatusMessage(QString::null);
+    }
+    if (CursorTimerID >= 0)
+    {
+        killTimer(CursorTimerID);
+        CursorTimerID = -1;
+    }
+    QextScintilla::focusOutEvent(e);
+}
+
+void toMarkedText::dropEvent(QDropEvent *e)
+{
+    QextScintilla::dropEvent(e);
+    setFocus();
+}
+
+void toMarkedText::editPrint(void)
+{
+    TOPrinter printer;
+    printer.setMinMax(1, 1000);
+    printer.setFromTo(1, 1000);
+    if (printer.setup())
+    {
+        printer.setCreator(tr(TOAPPNAME));
+        QPainter painter(&printer);
+
+        int line = 0;
+        int offset = 0;
+        int page = 1;
+        while (page < printer.fromPage() &&
+                (line = printPage(&printer, &painter, line, offset, page++, false)))
+            painter.resetXForm();
+        while ((line = printPage(&printer, &painter, line, offset, page++)) &&
+                line < lines() &&
+                (printer.toPage() == 0 || page <= printer.toPage()))
+        {
+            printer.newPage();
+            painter.resetXForm();
+            qApp->processEvents();
+            toStatusMessage(tr("Printing page %1").arg(page), false, false);
+        }
+        painter.end();
+        toStatusMessage(tr("Done printing"), false, false);
+    }
+}
+
+int toMarkedText::printPage(TOPrinter *printer, QPainter *painter, int line, int &offset,
+                            int pageNo, bool paint)
+{
+    QPaintDeviceMetrics metrics(printer);
+    painter->drawLine(0, 0, metrics.width(), 0);
+    QRect size = painter->boundingRect(0, 0, metrics.width(), metrics.height(),
+                                       AlignLeft | AlignTop | ExpandTabs | SingleLine,
+                                       Filename);
+    QString str = tr("Page: %1").arg(pageNo);
+    if (paint)
+    {
+        painter->drawText(0, metrics.height() - size.height(), size.width(), size.height(),
+                          AlignLeft | AlignTop | ExpandTabs | SingleLine,
+                          Filename);
+        painter->drawText(size.width(), metrics.height() - size.height(), metrics.width() - size.width(),
+                          size.height(),
+                          AlignRight | AlignTop | SingleLine,
+                          str);
+        painter->drawLine(0, 0, metrics.width(), 0);
+    }
+    int margin = size.height() + 2;
+
+    QFont defFont = painter->font();
+    painter->setFont(font());
+    size = painter->boundingRect(0, 0, metrics.width(), metrics.height(),
+                                 AlignLeft | AlignTop,
+                                 QString::fromLatin1("x"));
+    int height = size.height();
+    int totalHeight = (metrics.height() - margin) / height * height;
+    if (paint)
+        painter->drawLine(0, totalHeight + 2, metrics.width(), totalHeight + 2);
+    painter->setClipRect(0, 2, metrics.width(), totalHeight);
+    int pos = 1 + offset;
+    do
+    {
+        QRect bound;
+        if (paint)
+        {
+            painter->drawText(0, pos,
+                              metrics.width(), metrics.height(),
+                              AlignLeft | AlignTop | ExpandTabs | WordBreak,
+                              text(line), -1, &bound);
+        }
+        else
+            bound = painter->boundingRect(0, pos,
+                                          metrics.width(), metrics.height(),
+                                          AlignLeft | AlignTop | ExpandTabs | WordBreak,
+                                          text(line));
+        int cheight = bound.height() ? bound.height() : height;
+        totalHeight -= cheight;
+        pos += cheight;
+        if (totalHeight >= 0)
+            line++;
+    }
+    while (totalHeight > 0 && line < lines());
+    painter->setClipping(false);
+    offset = totalHeight;
+    painter->setFont(defFont);
+    return line;
+}
+
+void toMarkedText::openFilename(const QString &file)
+{
+    QCString data = toReadFile(file);
+    setText(QString::fromLocal8Bit(data));
+    setFilename(file);
+    setModified(false);
+    toMainWidget()->addRecentFile(file);
+    toStatusMessage(tr("File opened successfully"), false, false);
+}
+
+bool toMarkedText::editOpen(QString suggestedFile)
+{
+    if (isModified())
+    {
+        int ret = TOMessageBox::information(this,
+                                            tr("Save changes?"),
+                                            tr("The editor has been changed, do you want to save them\n"
+                                               "before opening a new file?"),
+                                            tr("&Yes"), tr("&No"), tr("Cancel"), 0, 2);
+        if (ret == 2)
+            return false;
+        else if (ret == 0)
+            if (!editSave(false))
+                return false;
+    }
+
+    QString fname;
+    if (suggestedFile != QString::null)
+        fname = suggestedFile;
+    else
+    {
+        QFileInfo file(filename());
+        fname = toOpenFilename(file.dirPath(), QString::null, this);
+    }
+    if (!fname.isEmpty())
+    {
+        try
+        {
+            openFilename(fname);
+            return true;
+        }
+        TOCATCH
+    }
+    return false;
+}
+
+bool toMarkedText::editSave(bool askfile)
+{
+    QFileInfo file(filename());
+    QString fn = filename();
+    if (askfile || fn.isEmpty())
+        fn = toSaveFilename(file.dirPath(), QString::null, this);
+    if (!fn.isEmpty())
+    {
+        if (!toWriteFile(fn, text()))
+            return false;
+        toMainWidget()->addRecentFile(fn);
+        setFilename(fn);
+        setModified(false);
+        return true;
+    }
+    return false;
+}
+
+void toMarkedText::newLine(void)
+{
+    // new line
+    switch (eolMode()) {
+        case EolWindows:
+            insert ("\n\r");
+            break;
+		
+		case EolMac:
+           insert ("\n");
+           break;
+
+        default:
+            // Unix is default one
+            insert ("\r");
+            break;
+    }
+    
+    if (!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_INDENT, "Yes").isEmpty())
+    {
+        int curline, curcol;
+        getCursorPosition (&curline, &curcol);
+        if (curline > 0)
+        {
+            QString str = text(curline - 1);
+            QString ind;
+            for (unsigned int i = 0;i < str.length() && str.at(i).isSpace();i++)
+                ind += str.at(i);
+            if (ind.length())
+                insert(ind, false);
+        }
+    }
+}
+
+void toMarkedText::searchFound(int line, int col)
+{
+    setSelection (line, col + SearchString.length(), line, col);
+    ensureCursorVisible();
+    toStatusMessage(tr("Incremental search") + QString::fromLatin1(":") + SearchString, false, false);
+}
+
+void toMarkedText::incrementalSearch(bool forward, bool next)
+{
+    int curline, curcol;
+    getCursorPosition (&curline, &curcol);
+    QString line;
+    if (SearchFailed && next)
+    {
+        if (forward)
+        {
+            curline = 0;
+            curcol = 0;
+            next = false;
+            line = text(curline);
+        }
+        else
+        {
+            curline = lines() - 1;
+            line = text(curline);
+            curcol = line.length();
+            next = false;
+        }
+        SearchFailed = false;
+    }
+    else
+        line = text(curline);
+    if (forward)
+    {
+        if (next)
+            curcol++;
+        if (curcol + SearchString.length() <= line.length())
+        {
+            int pos = line.find(SearchString, curcol, false);
+            if (pos >= 0)
+            {
+                searchFound(curline, pos);
+                return ;
+            }
+        }
+        for (curline++;curline < lines();curline++)
+        {
+            int pos = text(curline).find(SearchString, 0, false);
+            if (pos >= 0)
+            {
+                searchFound(curline, pos);
+                return ;
+            }
+        }
+    }
+    else
+    {
+        if (next)
+            curcol--;
+        if (curcol >= 0)
+        {
+            int pos = line.findRev(SearchString, curcol, false);
+            if (pos >= 0)
+            {
+                searchFound(curline, pos);
+                return ;
+            }
+        }
+        for (curline--;curline >= 0;curline--)
+        {
+            int pos = text(curline).findRev(SearchString, -1, false);
+            if (pos >= 0)
+            {
+                searchFound(curline, pos);
+                return ;
+            }
+        }
+    }
+    toStatusMessage(tr("Incremental search") + QString::fromLatin1(":") + SearchString + QString::fromLatin1(" (failed)"), false, false);
+    SearchFailed = true;
+}
+
+void toMarkedText::mousePressEvent(QMouseEvent *e)
+{
+    if (Search)
+    {
+        Search = false;
+        LastSearch = SearchString;
+        toStatusMessage(QString::null);
+    }
+    QextScintilla::mousePressEvent(e);
+}
+
+void toMarkedText::incrementalSearch(bool forward)
+{
+    SearchForward = forward;
+    if (!Search)
+    {
+        Search = true;
+        SearchFailed = false;
+        SearchString = QString::null;
+        toStatusMessage(tr("Incremental search") + QString::fromLatin1(":"), false, false);
+    }
+    else if (Search)
+    {
+        if (!SearchString.length())
+            SearchString = LastSearch;
+        if (SearchString.length())
+            incrementalSearch(SearchForward, true);
+    }
+}
+
+void toMarkedText::keyPressEvent(QKeyEvent *e)
+{
+    if (Search)
+    {
+        bool ok = false;
+        if (e->state() == NoButton && e->key() == Key_Backspace)
+        {
+            int len = SearchString.length();
+            if (len > 0)
+                SearchString.truncate(len - 1);
+            ok = true;
+        }
+        else if (e->key() != Key_Escape)
+        {
+            QString t = e->text();
+            if (t.length())
+            {
+                SearchString += t;
+                ok = true;
+            }
+            else if (e->key() == Key_Shift ||
+                     e->key() == Key_Control ||
+                     e->key() == Key_Meta ||
+                     e->key() == Key_Alt)
+            {
+                ok = true;
+            }
+        }
+
+        if (ok)
+        {
+            incrementalSearch(SearchForward, false);
+            e->accept();
+            return ;
+        }
+        else
+        {
+            Search = false;
+            LastSearch = SearchString;
+            toStatusMessage(QString::null);
+        }
+    }
+    QextScintilla::keyPressEvent(e);
+}
+
+void toMarkedText::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    data[prefix + ":Filename"] = Filename;
+    data[prefix + ":Text"] = text();
+    int curline, curcol;
+    getCursorPosition (&curline, &curcol);
+    data[prefix + ":Column"] = QString::number(curcol);
+    data[prefix + ":Line"] = QString::number(curline);
+    if (isModified())
+        data[prefix + ":Edited"] = "Yes";
+}
+
+void toMarkedText::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    QString txt = data[prefix + ":Text"];
+    if (txt != text())
+        setText(txt);
+    Filename = data[prefix + ":Filename"];
+    setCursorPosition(data[prefix + ":Line"].toInt(), data[prefix + ":Column"].toInt());
+    if (data[prefix + ":Edited"].isEmpty())
+        setModified(false);
+}
+
+static int FindIndex(const QString &str, int line, int col)
+{
+    int pos = 0;
+    for (int i = 0;i < line;i++)
+    {
+        pos = str.find(QString::fromLatin1("\n"), pos);
+        if (pos < 0)
+            return pos;
+        pos++;
+    }
+    return pos + col;
+}
+
+void toMarkedText::findPosition(int index, int &line, int &col)
+{
+    int pos = 0;
+    for (int i = 0;i < lines();i++)
+    {
+        QString str = text(i);
+        if (str.length() + pos >= (unsigned int)index)
+        {
+            line = i;
+            col = index - pos;
+            return ;
+        }
+        pos += str.length();
+    }
+    col = -1;
+    line = -1;
+    return ;
+}
+
+bool toMarkedText::searchNext(toSearchReplace *search)
+{
+    QString text = toMarkedText::text();
+
+    int col;
+    int line;
+    getCursorPosition(&line, &col);
+    int pos = FindIndex(text, line, col);
+
+    int endPos;
+    if (search->findString(text, pos, endPos))
+    {
+        int endCol;
+        int endLine;
+        findPosition(pos, line, col);
+        findPosition(endPos, endLine, endCol);
+        setSelection(line, col, endLine, endCol);
+        ensureCursorVisible();
+        return true;
+    }
+
+    return false;
+}
+
+void toMarkedText::searchReplace(const QString &newData)
+{
+    if (!isReadOnly())
+        insert(newData);
+}
+
+bool toMarkedText::searchCanReplace(bool all)
+{
+    if (isReadOnly())
+        return false;
+    if (all || hasSelectedText())
+        return true;
+    return false;
+}
+
+void toMarkedText::insert(const QString &str, bool select)
+{
+    int lineFrom;
+    int indexFrom;
+
+    // Make this work as one undo so user doesn't see his code disappear first.
+    QextScintilla::beginUndoAction();
+
+    QextScintilla::removeSelectedText();
+
+    if(select)
+        getCursorPosition(&lineFrom, &indexFrom);
+    
+    // insert() doesn't work as advertised.
+    // docs say: "The new current position if after the inserted text."
+
+    // I thought it would mean that the cursor would be at the end of
+    // the inserted text. Now I'm not really sure what the heck that
+    // means.
+
+    QextScintilla::insert(str);
+    
+    // get new position and select if requested
+    if(select) {
+        // Normally we'd find where the cursor is now.
+        // getCursorPosition(&lineTo, &indexTo);
+
+        int count = countChars(str, '\n');
+        setSelection(lineFrom, indexFrom, lineFrom + count + 1, 0);
+    }
+
+    QextScintilla::endUndoAction();
+}
+
+void toMarkedText::setTextChanged()
+{
+    redoEnabled(isRedoAvailable());
+    undoEnabled(isUndoAvailable());
+    if (hasSelectedText()) {
+        setEdit();
+    }
+}
+
+void toMarkedText::contextMenuEvent(QContextMenuEvent *e)
+{
+    QGuardedPtr<toMarkedText> that = this;
+    QGuardedPtr<QPopupMenu> popup = createPopupMenu( e->pos() );
+    if ( !popup )
+	return;
+    
+    e->accept();
+
+    // NOTE: this emit exist for compatibility with older 
+    //       version of TOra. It will have to be removed 
+    //       once the way around it will be figured out
+    emit displayMenu(popup);
+    
+    int r = popup->exec( e->globalPos() );
+    delete popup;
+    
+    if (!that)
+        return;
+
+    if ( r == id[ IdClear ] )
+	    clear();
+    else if ( r == id[ IdSelectAll ] )
+	    editSelectAll();
+    else if ( r == id[ IdUndo ] )
+	    undo();
+    else if ( r == id[ IdRedo ] )
+	    redo();
+    else if ( r == id[ IdCut ] )
+	    cut();
+    else if ( r == id[ IdCopy ] )
+	    copy();
+    else if ( r == id[ IdPaste ] )
+	    paste();
+}
+
+/**
+ * This function is called to create a right mouse button popup menu
+ * at the specified position. If you want to create a custom popup menu, 
+ * reimplement this function and return the created popup menu. Ownership 
+ * of the popup menu is transferred to the caller.
+ */
+QPopupMenu *toMarkedText::createPopupMenu(const QPoint& pos)
+{
+    Q_UNUSED( pos )
+
+    // clear ID array
+    for (int i=0; i<IdSize; i++)
+        id[i] = 0;
+
+    // create menu
+    QPopupMenu *popup = new QPopupMenu( this, "qt_edit_menu" );
+    if ( !isReadOnly() ) {
+        id[ IdUndo ] = popup->insertItem( tr( "&Undo" ) + ACCEL_KEY( Z ) );
+        id[ IdRedo ] = popup->insertItem( tr( "&Redo" ) + ACCEL_KEY( Y ) );
+        popup->insertSeparator();
+        id[ IdCut ] = popup->insertItem( tr( "Cu&t" ) + ACCEL_KEY( X ) );
+        id[ IdCopy ] = popup->insertItem( tr( "&Copy" ) + ACCEL_KEY( C ) );
+    	id[ IdPaste ] = popup->insertItem( tr( "&Paste" ) + ACCEL_KEY( V ) );
+    	id[ IdClear ] = popup->insertItem( tr( "Clear" ) );
+	    popup->insertSeparator();
+    }
+#if defined(Q_WS_X11)
+    id[ IdSelectAll ] = popup->insertItem( tr( "Select All" ) );
+#else
+    id[ IdSelectAll ] = popup->insertItem( tr( "Select All" ) + ACCEL_KEY( A ) );
+#endif
+    popup->setItemEnabled( id[ IdUndo ], !isReadOnly() && isUndoAvailable() );
+    popup->setItemEnabled( id[ IdRedo ], !isReadOnly() && isRedoAvailable() );
+    popup->setItemEnabled( id[ IdCut ], !isReadOnly() && hasSelectedText() );
+    popup->setItemEnabled( id[ IdCopy ], hasSelectedText() );
+    popup->setItemEnabled( id[ IdPaste ], !isReadOnly() && !QApplication::clipboard()->text(QClipboard::Clipboard).isEmpty() );
+    const bool isEmptyDocument = (lines() == 0);
+    popup->setItemEnabled( id[ IdClear ], !isReadOnly() && !isEmptyDocument );
+    popup->setItemEnabled( id[ IdSelectAll ], !isEmptyDocument );
+    return popup;
+}

Added: kde-extras/tora/branches/upstream/current/src/tomarkedtext.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomarkedtext.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomarkedtext.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,315 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOMARKEDTEXT_H
+#define TOMARKEDTEXT_H
+
+#include "config.h"
+#include "toeditwidget.h"
+
+#include <map>
+
+#include <qglobal.h>
+#include <qstring.h>
+#include <qtimer.h>
+#include <qpopupmenu.h>
+
+#include <qextscintilla.h>
+
+class TOPrinter;
+
+/** 
+ * This is the enhanced editor used in TOra. It mainly offers integration in the TOra
+ * menues and print support. It is based on QextScintilla which is API compatible
+ * with QTextEdit class.
+ */
+
+class toMarkedText : public QextScintilla, public toEditWidget
+{
+    Q_OBJECT
+
+    /** Filename of the file in this buffer.
+     */
+    QString Filename;
+
+    bool Search;
+    bool SearchFailed;
+    bool SearchForward;
+    QString SearchString;
+    QString LastSearch;
+
+    int CursorTimerID;
+    
+    static int defTabWidth;
+
+    /** Print one page to printer.
+     * @param printer Printer to print to.
+     * @param painter Painter to print to.
+     * @param line Line at top of page.
+     * @param offset Where one the drawn result this line starts.
+     * @param pageNo Pagenumber.
+     * @param paint Wether to paint or just test.
+     */
+    virtual int printPage(TOPrinter *printer, QPainter *painter, int line, int &offset,
+                          int pageNo, bool paint = true);
+
+    void searchFound(int line, int col);
+    void incrementalSearch(bool forward, bool next);
+protected:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void mousePressEvent(QMouseEvent *e);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void keyPressEvent(QKeyEvent *e);
+public:
+    /** Create an editor.
+     * @param parent Parent of this widget.
+     * @param name Name of this widget.
+     */
+    toMarkedText(QWidget *parent, const char *name = NULL);
+    
+    virtual ~toMarkedText();
+    
+    /**
+     * Returns the default tab width.
+     */
+    static int defaultTabWidth() 
+    {
+        return defTabWidth;
+    }
+
+    /**
+     * Sets the default tab width.
+     * @param width the new default tab width;
+     */
+    static void setDefaultTabWidth(int width) 
+    {
+        if (width > 0) {
+            defTabWidth = width;
+        }
+    }
+
+    /** Insert text and optionallly mark inserted text.
+     * @param str String to insert.
+     * @param mark True if mark inserted as selected.
+     */
+    virtual void insert(const QString &str, bool select = false);
+
+    /** Erase the contents of the editor.
+     */
+    virtual void clear(void)
+    {
+        Filename = "";
+        redoEnabled(false);
+        undoEnabled(false);
+        setEdit();
+        QextScintilla::clear();
+        setModified(false);
+    }
+
+    /** Get location of the current selection. This function is now public. See the
+     * Qt documentation for more information.
+     */
+    bool getSelection (int * line1, int * col1, int * line2, int * col2)
+    {
+        QextScintilla::getSelection(line1, col1, line2, col2);
+        
+        return hasSelectedText();
+    }
+
+    /** Get filename of current file in editor.
+     * @return Filename of editor.
+     */
+    virtual QString filename(void) const
+    {
+        return Filename;
+    }
+    /** Open a file for editing.
+     * @param file File to open for editing.
+     */
+    virtual void openFilename(const QString &file);
+    /** Set the current filename of the file in editor.
+     * @param str String containing filename.
+     */
+    virtual void setFilename(const QString &str)
+    {
+        Filename = str;
+    }
+    /** Update user interface with availability of copy/paste etc.
+     */
+    virtual void setEdit(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void focusInEvent (QFocusEvent *e);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void focusOutEvent (QFocusEvent *e);
+    /** Print this editor.
+     */
+    virtual void editPrint(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual bool editOpen(QString file = QString::null);
+    /** Reimplemented for internal reasons.
+     */
+    virtual bool editSave(bool ask);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editUndo(void)
+    {
+        undo();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editRedo(void)
+    {
+        redo();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editCut(void)
+    {
+        cut();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editCopy(void)
+    {
+        copy();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editPaste(void)
+    {
+        paste();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editSelectAll(void)
+    {
+        selectAll();
+    }
+
+    /** QextScintilla's selectAll doesn't always work like we want.
+     *
+     */
+    virtual void selectAll (bool select = TRUE)
+    {
+        // selectAll(true) doesn't work if there's a selection already.
+        if(QextScintilla::hasSelectedText())
+            QextScintilla::selectAll(false);
+
+        QextScintilla::selectAll();
+    }
+
+    /** Move to top of data
+     */
+    virtual void searchTop(void)
+    {
+        setCursorPosition(0, 0);
+    }
+    /** Search for next entry
+     * @return True if found, should select the found text.
+     */
+    virtual bool searchNext(toSearchReplace *search);
+    /** Replace entry with new data
+     */
+    virtual void searchReplace(const QString &newData);
+    /** Check if data can be modified by search
+     * @param all If true can replace all, otherwise can replace right now.
+     */
+    virtual bool searchCanReplace(bool all);
+
+    /** Start incremental search mode, or search next if started.
+     */
+    void incrementalSearch(bool forward);
+
+    /** Export data to a map.
+     * @param data A map that can be used to recreate the data of a chart.
+     * @param prefix Prefix to add to the map.
+     */
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Import data
+     * @param data Data to read from a map.
+     * @param prefix Prefix to read data from.
+     */
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Find the line and column of an index into the string of the entire editor.
+     * @param index Index to get line and col from.
+     * @param line Will be filled out with the line.
+     * @param col Will be filled out with the col.
+     */
+    void findPosition(int index, int &line, int &col);
+    
+signals:
+    void displayMenu(QPopupMenu *);
+
+protected:
+    virtual void newLine(void);
+    virtual void dropEvent(QDropEvent *);
+    virtual void timerEvent(QTimerEvent *);
+    void contextMenuEvent(QContextMenuEvent *);
+    
+    /**
+     * This function is called to create a right mouse button popup menu
+     * at the specified position. If you want to create a custom popup menu, 
+     * reimplement this function and return the created popup menu. Ownership 
+     * of the popup menu is transferred to the caller.
+     */
+    virtual QPopupMenu *createPopupMenu(const QPoint& pos);
+    
+private slots:
+    void setTextChanged();
+    void setCopyAvailable(bool yes);
+
+private:
+    enum {
+        IdUndo = 0,
+        IdRedo,
+        IdCut,
+        IdCopy,
+        IdPaste,
+        IdClear,
+        IdSelectAll,
+        IdSize
+    };
+    
+    int id[IdSize];
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tomemoeditor.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomemoeditor.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomemoeditor.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,522 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "tohighlightedtext.h"
+#include "tomarkedtext.h"
+#include "tomemoeditor.h"
+#include "toresultview.h"
+
+#include <qcheckbox.h>
+#include <qheader.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qpixmap.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+
+#include "tomemoeditor.moc"
+
+#include "icons/commit.xpm"
+#include "icons/copy.xpm"
+#include "icons/cut.xpm"
+#include "icons/fileopen.xpm"
+#include "icons/filesave.xpm"
+#include "icons/forward.xpm"
+#include "icons/next.xpm"
+#include "icons/paste.xpm"
+#include "icons/previous.xpm"
+#include "icons/rewind.xpm"
+
+class toMemoText : public toMarkedText
+{
+    toMemoEditor *MemoEditor;
+public:
+    toMemoText(toMemoEditor *edit, QWidget *parent, const char *name = NULL)
+            : toMarkedText(parent, name), MemoEditor(edit)
+    { }
+    virtual void keyPressEvent(QKeyEvent *e)
+    {
+        if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toMemoEditor", "Ctrl+Return", "Memo Editor|Save changes"))))
+        {
+            MemoEditor->store();
+            e->accept();
+        }
+        else
+        {
+            toMarkedText::keyPressEvent(e);
+        }
+    }
+};
+
+class toMemoSQL : public toHighlightedText
+{
+    toMemoEditor *MemoEditor;
+public:
+    toMemoSQL(toMemoEditor *edit, QWidget *parent, const char *name = NULL)
+            : toHighlightedText(parent, name), MemoEditor(edit)
+    { }
+    virtual void keyPressEvent(QKeyEvent *e)
+    {
+        if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toMemoEditor", "Ctrl+Return", "Memo Editor|Save changes"))))
+        {
+            MemoEditor->store();
+            e->accept();
+        }
+        else
+        {
+            toHighlightedText::keyPressEvent(e);
+        }
+    }
+};
+
+void toMemoEditor::openFile(void)
+{
+    Editor->editOpen();
+}
+
+void toMemoEditor::saveFile(void)
+{
+    Editor->editSave(true);
+}
+
+toMemoEditor::toMemoEditor(QWidget *parent, const QString &str, int row, int col,
+                           bool sql, bool modal, bool navigation)
+        : QDialog(parent, NULL, modal, modal ? 0 : WDestructiveClose), Row(row), Col(col)
+{
+    setMinimumSize(400, 300);
+    QDesktopWidget *paramDesktop = new QDesktopWidget;
+    setMaximumWidth(paramDesktop->availableGeometry(this).width()*2/3);
+
+    setCaption("Memo Editor");
+
+    QBoxLayout *l = new QVBoxLayout(this);
+
+    Toolbar = toAllocBar(this, tr("Memo Editor"));
+    l->addWidget(Toolbar);
+
+    if (sql)
+        Editor = new toMemoSQL(this, this);
+    else
+        Editor = new toMemoText(this, this);
+    l->addWidget(Editor);
+    Editor->setReadOnly(Row < 0 || Col < 0 || listView());
+    Editor->setFocus();
+
+    QToolButton *btn;
+    if (Row >= 0 && Col >= 0 && !listView())
+    {
+        new QToolButton(QPixmap(const_cast<const char**>(commit_xpm)),
+                        tr("Save changes"),
+                        tr("Save changes"),
+                        this, SLOT(store(void)),
+                        Toolbar);
+        Toolbar->addSeparator();
+        new QToolButton(QPixmap(const_cast<const char**>(fileopen_xpm)),
+                        tr("Open file"),
+                        tr("Open file"),
+                        this, SLOT(openFile()), Toolbar);
+        new QToolButton(QPixmap(const_cast<const char**>(filesave_xpm)),
+                        tr("Save file"),
+                        tr("Save file"),
+                        this, SLOT(saveFile()), Toolbar);
+        Toolbar->addSeparator();
+        btn = new QToolButton(QPixmap(const_cast<const char**>(cut_xpm)),
+                              tr("Cut to clipboard"),
+                              tr("Cut to clipboard"),
+                              Editor, SLOT(cut()), Toolbar);
+        connect(Editor, SIGNAL(copyAvailable(bool)),
+                btn, SLOT(setEnabled(bool)));
+        btn->setEnabled(false);
+    }
+    else
+    {
+        new QToolButton(QPixmap(const_cast<const char**>(filesave_xpm)),
+                        tr("Save file"),
+                        tr("Save file"),
+                        this, SLOT(saveFile()), Toolbar);
+        Toolbar->addSeparator();
+    }
+    btn = new QToolButton(QPixmap(const_cast<const char**>(copy_xpm)),
+                          tr("Copy to clipboard"),
+                          tr("Copy to clipboard"),
+                          Editor, SLOT(copy()), Toolbar);
+    connect(Editor, SIGNAL(copyAvailable(bool)),
+            btn, SLOT(setEnabled(bool)));
+    btn->setEnabled(false);
+    if (Row >= 0 && Col >= 0 && !listView())
+        new QToolButton(QPixmap(const_cast<const char**>(paste_xpm)),
+                        tr("Paste from clipboard"),
+                        tr("Paste from clipboard"),
+                        Editor, SLOT(paste()), Toolbar);
+
+    toListView *lst = listView();
+    if (lst || navigation)
+    {
+        Toolbar->addSeparator();
+        new QToolButton(QPixmap(const_cast<const char**>(rewind_xpm)),
+                        tr("First column"),
+                        tr("First column"),
+                        this, SLOT(firstColumn()), Toolbar);
+        new QToolButton(QPixmap(const_cast<const char**>(previous_xpm)),
+                        tr("Previous column"),
+                        tr("Previous column"),
+                        this, SLOT(previousColumn()), Toolbar);
+        new QToolButton(QPixmap(const_cast<const char**>(next_xpm)),
+                        tr("Next column"),
+                        tr("Next column"),
+                        this, SLOT(nextColumn()), Toolbar);
+        new QToolButton(QPixmap(const_cast<const char**>(forward_xpm)),
+                        tr("Last column"),
+                        tr("Last column"),
+                        this, SLOT(lastColumn()), Toolbar);
+    }
+    Toolbar->addSeparator();
+    Null = new QCheckBox(tr("NULL"), Toolbar, TO_KDE_TOOLBAR_WIDGET);
+    connect(Null, SIGNAL(toggled(bool)), this, SLOT(null(bool)));
+    Null->setEnabled(!Editor->isReadOnly());
+    Null->setFocusPolicy(StrongFocus);
+
+    setText(str);
+
+    Label = new QLabel(Toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Label->setAlignment(AlignRight | AlignVCenter);
+    Toolbar->setStretchableWidget(Label);
+
+    if (lst)
+    {
+        connect(parent, SIGNAL(currentChanged(QListViewItem *)),
+                this, SLOT(changeCurrent(QListViewItem *)));
+        Label->setText(QString::fromLatin1("<B>") +
+                       lst->header()->label(Col) +
+                       QString::fromLatin1("</B>"));
+    }
+
+    if (!modal)
+        show();
+}
+
+void toMemoEditor::setText(const QString &str)
+{
+    Editor->setText(str);
+    Null->setChecked(str.isNull());
+    Editor->setModified(false);
+}
+
+void toMemoEditor::null(bool nul)
+{
+    Editor->setModified(true);
+    Editor->setDisabled(nul);
+}
+
+QString toMemoEditor::text(void)
+{
+    return Editor->text();
+}
+
+void toMemoEditor::store(void)
+{
+    if (Editor->isReadOnly())
+        return ;
+    if (Editor->isModified())
+    {
+        if (!Editor->isEnabled())
+            emit changeData(Row, Col, QString::null);
+        else
+            emit changeData(Row, Col, Editor->text());
+    }
+    accept();
+}
+
+void toMemoEditor::changePosition(int row, int cols)
+{
+    if (Editor->isModified())
+    {
+        if (!Editor->isEnabled())
+            emit changeData(Row, Col, QString::null);
+        else
+            emit changeData(Row, Col, Editor->text());
+        Editor->setModified(false);
+    }
+
+    toListView *lst = listView();
+    if (lst)
+        Label->setText(QString::fromLatin1("<B>") +
+                       lst->header()->label(Col) +
+                       QString::fromLatin1("</B>"));
+
+    Row = row;
+    Col = cols;
+}
+
+toListView *toMemoEditor::listView(void)
+{
+    return dynamic_cast<toListView *>(parentWidget());
+}
+
+void toMemoEditor::firstColumn(void)
+{
+    toListView *lst = listView();
+    if (lst)
+    {
+        QListViewItem *cur = lst->currentItem();
+        if (!cur)
+            return ;
+
+        if (Col == 0)
+        {
+            QListViewItem *item = lst->firstChild();
+            QListViewItem *next = item;
+            while (next && next != cur)
+            {
+                item = next;
+                if (item->firstChild())
+                    next = item->firstChild();
+                else if (item->nextSibling())
+                    next = item->nextSibling();
+                else
+                {
+                    next = item;
+                    do
+                    {
+                        next = next->parent();
+                    }
+                    while (next && !next->nextSibling());
+                    if (next)
+                        next = next->nextSibling();
+                }
+            }
+            lst->setCurrentItem(item);
+        }
+        else
+        {
+            Col = 0;
+            Label->setText("<B>" + lst->header()->label(Col) + "</B>");
+
+            toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(cur);
+            toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(cur);
+            if (resItem)
+                setText(resItem->allText(Col));
+            else if (chkItem)
+                setText(chkItem->allText(Col));
+            else
+                setText(cur->text(Col));
+        }
+    }
+}
+
+void toMemoEditor::previousColumn(void)
+{
+    toListView *lst = listView();
+    if (lst)
+    {
+        QListViewItem *cur = lst->currentItem();
+        if (!cur)
+            return ;
+
+        if (Col == 0)
+        {
+            Col = lst->columns() - 1;
+            QListViewItem *item = lst->firstChild();
+            QListViewItem *next = item;
+            while (next && next != cur)
+            {
+                item = next;
+                if (item->firstChild())
+                    next = item->firstChild();
+                else if (item->nextSibling())
+                    next = item->nextSibling();
+                else
+                {
+                    next = item;
+                    do
+                    {
+                        next = next->parent();
+                    }
+                    while (next && !next->nextSibling());
+                    if (next)
+                        next = next->nextSibling();
+                }
+            }
+            if (item != cur)
+            {
+                lst->setCurrentItem(item);
+                cur = NULL;
+            }
+        }
+        else
+            Col--;
+
+        if (cur)
+        {
+            toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(cur);
+            toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(cur);
+            if (resItem)
+                setText(resItem->allText(Col));
+            else if (chkItem)
+                setText(chkItem->allText(Col));
+            else
+                setText(cur->text(Col));
+        }
+        Label->setText(QString::fromLatin1("<B>") +
+                       lst->header()->label(Col) +
+                       QString::fromLatin1("</B>"));
+    }
+}
+
+void toMemoEditor::nextColumn(void)
+{
+    toListView *lst = listView();
+    if (lst)
+    {
+        QListViewItem *cur = lst->currentItem();
+        if (!cur)
+            return ;
+
+        if (Col == lst->columns() - 1)
+        {
+            Col = 0;
+            QListViewItem *next = cur;
+            if (cur->firstChild())
+                next = cur->firstChild();
+            else if (cur->nextSibling())
+                next = cur->nextSibling();
+            else
+            {
+                next = cur;
+                do
+                {
+                    next = next->parent();
+                }
+                while (next && !next->nextSibling());
+                if (next)
+                    next = next->nextSibling();
+            }
+            if (next)
+            {
+                lst->setCurrentItem(next);
+                cur = NULL;
+            }
+        }
+        else
+            Col++;
+        if (cur)
+        {
+            toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(cur);
+            toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(cur);
+            if (resItem)
+                setText(resItem->allText(Col));
+            else if (chkItem)
+                setText(chkItem->allText(Col));
+            else
+                setText(cur->text(Col));
+        }
+        Label->setText(QString::fromLatin1("<B>") +
+                       lst->header()->label(Col) +
+                       QString::fromLatin1("</B>"));
+    }
+}
+
+void toMemoEditor::lastColumn(void)
+{
+    toListView *lst = listView();
+    if (lst)
+    {
+        QListViewItem *cur = lst->currentItem();
+        if (!cur)
+            return ;
+
+        if (Col == lst->columns() - 1)
+        {
+            QListViewItem *next = cur;
+            if (cur->firstChild())
+                next = cur->firstChild();
+            else if (cur->nextSibling())
+                next = cur->nextSibling();
+            else
+            {
+                next = cur;
+                do
+                {
+                    next = next->parent();
+                }
+                while (next && !next->nextSibling());
+                if (next)
+                    next = next->nextSibling();
+            }
+            if (next)
+                lst->setCurrentItem(next);
+        }
+        else
+        {
+            Col = lst->columns() - 1;
+            Label->setText(QString::fromLatin1("<B>") +
+                           lst->header()->label(Col) +
+                           QString::fromLatin1("</B>"));
+            toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(cur);
+            toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(cur);
+            if (resItem)
+                setText(resItem->allText(Col));
+            else if (chkItem)
+                setText(chkItem->allText(Col));
+            else
+                setText(cur->text(Col));
+        }
+    }
+}
+
+void toMemoEditor::changeCurrent(QListViewItem *)
+{
+    toListView *lst = listView();
+    if (lst)
+    {
+        QListViewItem *cur = lst->currentItem();
+        if (!cur)
+            return ;
+
+        toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(cur);
+        toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(cur);
+        if (resItem)
+            setText(resItem->allText(Col));
+        else if (chkItem)
+            setText(chkItem->allText(Col));
+        else
+            setText(cur->text(Col));
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/tomemoeditor.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomemoeditor.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomemoeditor.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,155 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOMEMOEDITOR_H
+#define TOMEMOEDITOR_H
+
+#include "config.h"
+
+#include <qdialog.h>
+
+class QCheckBox;
+class QLabel;
+class QListViewItem;
+class QToolBar;
+class toListView;
+class toMarkedText;
+class toResultContentEditor;
+
+/** Displays an text in a widget which can optionally be modified and saved back.
+ */
+
+class toMemoEditor : public QDialog
+{
+    Q_OBJECT
+
+    /** Editor of widget
+     */
+    toMarkedText *Editor;
+    /** Row of this field
+     */
+    int Row;
+    /** Column of this field
+     */
+    int Col;
+    QToolBar *Toolbar;
+    QLabel *Label;
+    QCheckBox *Null;
+
+    toListView *listView(void);
+private slots:
+    void openFile(void);
+    void saveFile(void);
+protected:
+    QToolBar *toolbar()
+    {
+        return Toolbar;
+    }
+    toMarkedText *editor()
+    {
+        return Editor;
+    }
+    QLabel *label()
+    {
+        return Label;
+    }
+public:
+    /** Create this editor. If row and col is specified, editing is posible.
+     * @param parent Parent widget.
+     * @param data Data of editor.
+     * @param row Optional location specifier, pass on in @ref changeData call.
+     * @param col Optional location specifier, pass on in @ref changeData call.
+     * @param sql Use SQL syntax highlighting of widget.
+     * @param modal Display in modal dialog
+     * @param navigation Display navigation buttons
+     */
+    toMemoEditor(QWidget *parent, const QString &data, int row = -1, int col = -1,
+                 bool sql = false, bool modal = false, bool navigation = false);
+
+    /** Get editor text.
+     * @return String of editor.
+     */
+    QString text(void);
+    /** Current row being edited.
+     */
+    int row() const
+    {
+        return Row;
+    }
+    /** Current column being edited.
+     */
+    int column() const
+    {
+        return Col;
+    }
+signals:
+    /** Emitted when data is to be stored back to the creator
+     * @param row Pass on from creation.
+     * @param col Pass on from creation.
+     * @param data New data to save.
+     */
+    void changeData(int row, int col, const QString &data);
+public slots:
+    /** Save changes and close.
+     */
+    virtual void store(void);
+
+    /** Goto first column.
+     */
+    virtual void firstColumn();
+    /** Goto next column.
+     */
+    virtual void nextColumn();
+    /** Goto previous column.
+     */
+    virtual void previousColumn();
+    /** Goto last column.
+     */
+    virtual void lastColumn();
+
+    /** Change position in whatever it is your displaying.
+     */
+    virtual void changePosition(int row, int cols);
+    /** Change value of editor.
+     */
+    virtual void setText(const QString &);
+private slots:
+    void changeCurrent(QListViewItem *item);
+    virtual void null(bool);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tomessageui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomessageui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomessageui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,2358 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tomessageui.ui'
+**
+** Created: Tue Sep 18 08:21:29 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tomessageui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+#include "tomarkedtext.h"
+static const char* const image0_data[] = { 
+"100 100 2165 2",
+"cQ c #000000",
+"d8 c #000002",
+"da c #000004",
+"es c #000005",
+"dF c #000007",
+"d7 c #000008",
+"b7 c #000009",
+"d6 c #00000a",
+"dJ c #00000b",
+"dI c #00000c",
+"ew c #00000d",
+"cN c #00000e",
+"ev c #00000f",
+"df c #000010",
+"eu c #000011",
+"dK c #000012",
+"ec c #000013",
+"d2 c #000015",
+"cR c #000100",
+"ob c #000102",
+"bj c #000103",
+"wA c #000104",
+"bi c #000105",
+"ex c #000106",
+"eE c #000108",
+"m8 c #000110",
+"ed c #000112",
+"gG c #000115",
+"aM c #000200",
+"bk c #000201",
+"hf c #000202",
+"eZ c #000203",
+"xh c #000205",
+"eF c #000207",
+"s0 c #000209",
+"C1 c #00020b",
+"kI c #00020e",
+"dL c #000213",
+"aL c #000300",
+"eX c #000302",
+"eY c #000304",
+"s. c #000308",
+"fW c #00030a",
+"ee c #00030c",
+"gF c #000312",
+"aK c #000400",
+"mB c #000402",
+"rw c #000403",
+"D4 c #000405",
+"bl c #000500",
+"aJ c #000600",
+"vd c #000604",
+"aI c #000700",
+"aH c #000800",
+"aN c #000900",
+"p4 c #000a00",
+"lP c #000b00",
+"Et c #000c00",
+"uV c #000d00",
+"fH c #010000",
+"gj c #010002",
+"Cx c #010004",
+"b3 c #010005",
+"b2 c #010006",
+"b5 c #010008",
+"vP c #010009",
+"b6 c #01000a",
+"BQ c #01000b",
+"cL c #01000c",
+"sk c #01000d",
+"eb c #01000e",
+"cM c #01000f",
+"Af c #010010",
+"fh c #010011",
+"cK c #010100",
+"dc c #010101",
+"b4 c #010103",
+"e# c #010109",
+"ea c #01010b",
+"dH c #01010d",
+"cJ c #010200",
+"hi c #010204",
+"d9 c #010206",
+"eU c #010207",
+"bg c #010300",
+"bh c #010302",
+"C0 c #010310",
+"bf c #010400",
+"be c #010500",
+"lQ c #010504",
+"fT c #010600",
+"gE c #01060c",
+"nT c #010700",
+"lY c #010800",
+"oi c #010900",
+"uz c #010a00",
+"DT c #010d00",
+"BR c #010e00",
+"ws c #011000",
+"xD c #020001",
+"gh c #020008",
+"b8 c #02000b",
+"bY c #02000d",
+"gm c #02000e",
+"de c #020010",
+"yM c #020014",
+"vo c #020100",
+"b1 c #020106",
+"b0 c #020107",
+"bZ c #020109",
+"cI c #020200",
+"db c #020202",
+"cH c #020204",
+"pA c #02020a",
+"tL c #02020c",
+"dG c #02020e",
+"c# c #020300",
+"o2 c #020305",
+"hj c #020307",
+"eV c #020308",
+"er c #020400",
+"yp c #020403",
+"CZ c #020410",
+"xU c #020413",
+"oA c #020500",
+"rK c #020600",
+"fk c #020607",
+"CL c #020609",
+"uR c #020612",
+"fj c #020700",
+"wQ c #02070a",
+"c8 c #020800",
+"vN c #020900",
+"uG c #020a00",
+"qP c #020b00",
+"wl c #020d00",
+"kG c #020e00",
+"ie c #030000",
+"iV c #030002",
+"Dy c #030004",
+"yf c #030005",
+"xH c #030007",
+"if c #030009",
+"xI c #03000b",
+"Ce c #03000e",
+"Cd c #030010",
+"mV c #030011",
+"yo c #030013",
+"iW c #030102",
+"xE c #030106",
+"q8 c #03010c",
+"dg c #03010e",
+"v8 c #03010f",
+"fe c #030200",
+"eT c #030207",
+"fi c #030208",
+"cG c #03020a",
+"hh c #030212",
+"jC c #030300",
+"et c #030301",
+"vG c #030303",
+"bW c #030305",
+"uc c #03030b",
+"hk c #03030d",
+"f2 c #03030f",
+"c9 c #030400",
+"f0 c #030406",
+"eB c #030408",
+"yc c #030409",
+"bV c #030500",
+"wt c #030502",
+"jA c #030600",
+"fV c #03060b",
+"wk c #030708",
+"nI c #03070a",
+"vC c #030710",
+"fo c #030800",
+"Cz c #030802",
+"w4 c #030804",
+"dM c #03080e",
+"pH c #030900",
+"ig c #030a00",
+"he c #030e00",
+"w9 c #040000",
+"x. c #040005",
+"vO c #04000e",
+"ye c #040108",
+"Cy c #04010a",
+"fJ c #040116",
+"DR c #040205",
+"hW c #04020d",
+"cO c #04020f",
+"yL c #040210",
+"wE c #040301",
+"d3 c #040308",
+"hZ c #040309",
+"gk c #04030b",
+"o3 c #040311",
+"xF c #040400",
+"lu c #040402",
+"fI c #040404",
+"jm c #040406",
+"gH c #04040c",
+"ud c #040410",
+"kV c #040500",
+"eW c #040507",
+"eD c #040509",
+"f1 c #04050a",
+"Bn c #040600",
+"o5 c #040603",
+"fZ c #040605",
+"px c #040700",
+"pe c #040800",
+"Dw c #040809",
+"fl c #04080b",
+"m9 c #040811",
+"EF c #040900",
+"fL c #040a00",
+"zS c #040b00",
+"CM c #040b04",
+"Cr c #040d00",
+"EL c #041000",
+"D3 c #041100",
+"kl c #041200",
+"iU c #050004",
+"w8 c #050100",
+"hx c #050102",
+"vQ c #050209",
+"gi c #05020b",
+"gV c #05020d",
+"rg c #050217",
+"Di c #050304",
+"wd c #050308",
+"bX c #05030e",
+"hv c #050310",
+"iT c #050400",
+"fG c #050402",
+"cF c #050409",
+"cP c #05040a",
+"fF c #05040c",
+"DQ c #050500",
+"j6 c #050503",
+"kh c #050505",
+"h0 c #050507",
+"vw c #05050d",
+"AF c #050511",
+"mU c #050600",
+"d5 c #050601",
+"xs c #050608",
+"eA c #05060a",
+"e. c #05060b",
+"xC c #050700",
+"uT c #050702",
+"j4 c #050704",
+"xJ c #050800",
+"t# c #050801",
+"h2 c #050900",
+"oa c #050908",
+"fn c #05090a",
+"uw c #05090c",
+"f3 c #050a00",
+"z. c #050a06",
+"oQ c #050b00",
+"pd c #050d00",
+"hA c #050e00",
+"qg c #050f00",
+"t3 c #051000",
+"DS c #06000a",
+"Dx c #060200",
+"Dj c #060201",
+"wG c #060203",
+"CI c #060211",
+"xG c #060300",
+"jD c #06030a",
+"CK c #06030c",
+"fg c #060314",
+"Dh c #060405",
+"hy c #060409",
+"dh c #06040f",
+"gl c #060411",
+"dC c #060412",
+"C2 c #060501",
+"iD c #06050a",
+"dE c #06050b",
+"n0 c #06050d",
+"tU c #060513",
+"d4 c #060604",
+"jo c #060606",
+"ki c #060608",
+"py c #06060e",
+"By c #060701",
+"wz c #060702",
+"tx c #060709",
+"eC c #06070b",
+"o4 c #06070c",
+"pz c #060803",
+"fX c #060805",
+"v3 c #060807",
+"Eq c #060900",
+"uK c #06090e",
+"fm c #060910",
+"ca c #060a00",
+"fU c #060a09",
+"fM c #060c00",
+"gn c #060d00",
+"C3 c #060d06",
+"j3 c #060f00",
+"fO c #061000",
+"zx c #061400",
+"n. c #061500",
+"id c #070300",
+"CJ c #070311",
+"sN c #070415",
+"fK c #070417",
+"wF c #070508",
+"kU c #070510",
+"n1 c #070512",
+"dd c #070513",
+"iS c #070601",
+"fd c #070602",
+"ns c #07060b",
+"b9 c #07060c",
+"fE c #07060e",
+"d. c #070705",
+"wH c #070707",
+"d# c #070709",
+"ty c #07070f",
+"h1 c #070800",
+"jB c #070802",
+"o7 c #07080c",
+"nJ c #07081a",
+"fY c #070906",
+"o6 c #070908",
+"Cq c #070a00",
+"qu c #070c00",
+"vX c #070c08",
+"B# c #070d01",
+"fN c #070e00",
+"Es c #070f02",
+"B1 c #071000",
+"Ae c #071100",
+"u8 c #071400",
+"nt c #080516",
+"dD c #080611",
+"zf c #080613",
+"kj c #08070c",
+"di c #08070d",
+"yg c #08070f",
+"yd c #080717",
+"ni c #080806",
+"c. c #080808",
+"qe c #08080a",
+"hz c #080904",
+"z1 c #08090b",
+"dj c #08090d",
+"wP c #08090e",
+"vD c #080a05",
+"ve c #080a09",
+"nK c #080a17",
+"uy c #080b00",
+"kH c #080b12",
+"y9 c #080d09",
+"gW c #080f00",
+"rm c #081000",
+"rf c #081200",
+"lg c #081300",
+"cS c #081500",
+"hX c #090712",
+"qp c #090715",
+"qE c #09080d",
+"lt c #09080e",
+"hY c #090810",
+"ux c #090907",
+"ff c #090909",
+"ey c #090a0e",
+"uS c #090a1c",
+"Dv c #090b06",
+"Ap c #090c11",
+"qX c #090e00",
+"nL c #090e0a",
+"kW c #091000",
+"pV c #091100",
+"ic c #091300",
+"z2 c #091400",
+"vp c #091500",
+"xr c #091600",
+"aO c #091700",
+"qQ c #0a0718",
+"q7 c #0a090f",
+"j5 c #0a0a0a",
+"jn c #0a0a0c",
+"ez c #0a0b0f",
+"u9 c #0a0b10",
+"sO c #0a0c00",
+"iE c #0a0c01",
+"ta c #0a0c0b",
+"v9 c #0a0f08",
+"v2 c #0a0f0b",
+"wu c #0a1000",
+"ls c #0a1100",
+"Ed c #0a110a",
+"d1 c #0a1300",
+"Ee c #0a1400",
+"m7 c #0a1700",
+"uQ c #0a1900",
+"hw c #0b0704",
+"uU c #0b0917",
+"tz c #0b0a0f",
+"qf c #0b0b0b",
+"CY c #0b0c07",
+"pW c #0b0d0c",
+"vF c #0b0e00",
+"xV c #0b0e17",
+"dk c #0b0f12",
+"BP c #0b1000",
+"q6 c #0b1009",
+"bU c #0b1100",
+"Ep c #0b1200",
+"Cs c #0b1400",
+"EX c #0b1700",
+"aG c #0b1800",
+"vH c #0b1900",
+"sl c #0c091c",
+"yn c #0c0c0a",
+"cE c #0c1300",
+"tA c #0c1400",
+"mC c #0c1900",
+"m. c #0c1a00",
+"vg c #0c1b00",
+"iF c #0d1200",
+"y8 c #0d120c",
+"v4 c #0d1400",
+"rV c #0d1500",
+"hV c #0d1900",
+"v. c #0d1b00",
+"qD c #0d1c00",
+"rW c #0e0d13",
+"vf c #0e0e10",
+"hg c #0e101c",
+"Du c #0e1300",
+"rF c #0e1800",
+"tw c #0e1900",
+"rv c #0e1b00",
+"qd c #0e1c00",
+"o# c #0f1a00",
+"mA c #0f1b00",
+"gD c #0f1d00",
+"A2 c #101010",
+"vE c #101300",
+"sm c #101302",
+"Eb c #101600",
+"nr c #101700",
+"oz c #101900",
+"nH c #101b00",
+"fS c #101c00",
+"dN c #101f00",
+"iX c #110e15",
+"kk c #110e17",
+"lR c #111700",
+"Ct c #111a00",
+"wO c #111b00",
+"bm c #111c00",
+"uv c #111d00",
+"r9 c #111e00",
+"ef c #111f00",
+"pX c #112100",
+"jl c #121700",
+"bd c #121900",
+"cb c #121a00",
+"jp c #121b00",
+"fp c #121c00",
+"vn c #121d00",
+"rL c #121f00",
+"fP c #122000",
+"C4 c #122500",
+"xB c #131900",
+"ue c #131a00",
+"AN c #131b00",
+"pl c #131c00",
+"Cw c #131f00",
+"yy c #132300",
+"v7 c #141a00",
+"w3 c #141c00",
+"go c #141d00",
+"iC c #142100",
+"yz c #142400",
+"Bo c #151b00",
+"pw c #151d00",
+"tV c #151e00",
+"o1 c #151f00",
+"dB c #152000",
+"Cu c #152100",
+"sd c #152300",
+"fQ c #152400",
+"sj c #161e00",
+"iR c #162000",
+"tl c #162200",
+"sZ c #162300",
+"ah c #162400",
+"E7 c #162900",
+"nU c #171e00",
+"s6 c #172300",
+"fR c #172400",
+"ai c #172500",
+"ag c #172600",
+"o8 c #172700",
+"x# c #182100",
+"sM c #182200",
+"sD c #182600",
+"q9 c #192000",
+"qF c #192100",
+"s1 c #192200",
+"B2 c #192500",
+"nM c #192700",
+"sz c #1a2300",
+"Cv c #1a2600",
+"wW c #1b2200",
+"AE c #1b2203",
+"Ff c #1b2500",
+"eS c #1b2600",
+"mL c #1b2900",
+"af c #1b2b00",
+"xt c #1c2400",
+"s# c #1c2600",
+"gg c #1c2700",
+"AO c #1c2900",
+"aj c #1c2a00",
+"s5 c #1d2b00",
+"cc c #1d2d00",
+"fD c #1e2800",
+"fc c #1e2900",
+"w5 c #1f250b",
+"EG c #1f2800",
+"A3 c #202705",
+"ih c #202b00",
+"u2 c #202d00",
+"EM c #202f00",
+"DU c #203000",
+"CX c #212b00",
+"rG c #212c00",
+"gI c #212e00",
+"ms c #222d00",
+"vR c #223000",
+"vv c #223100",
+"BO c #232c00",
+"uL c #233300",
+"vc c #233800",
+"wc c #242e00",
+"pf c #243000",
+"aF c #243200",
+"oP c #243300",
+"aP c #243400",
+"tM c #252f00",
+"ak c #253300",
+"gC c #253500",
+"to c #263401",
+"lF c #263b00",
+"CH c #272f00",
+"gX c #273100",
+"f4 c #273200",
+"cT c #273700",
+"lX c #283200",
+"bT c #283300",
+"p3 c #283500",
+"EY c #283600",
+"Dz c #283a00",
+"gp c #293400",
+"e0 c #293700",
+"ae c #293a00",
+"eg c #293b00",
+"pB c #294100",
+"ze c #2a3400",
+"eq c #2a3600",
+"B. c #2a3700",
+"w7 c #2b3206",
+"Bm c #2b3209",
+"Fe c #2c3800",
+"rh c #2c3900",
+"nS c #2c3b00",
+"yW c #2c4300",
+"B0 c #2d3700",
+"Eo c #2d3800",
+"Ba c #2d3b00",
+"zy c #2d3d00",
+"hd c #2e3d06",
+"Bz c #2f3a00",
+"Dg c #2f3b00",
+"hl c #2f3d00",
+"eG c #314000",
+"kT c #323b02",
+"al c #324108",
+"tQ c #32410a",
+"t4 c #333e04",
+"cD c #343d04",
+"Bx c #343f00",
+"lh c #353d0a",
+"yq c #354100",
+"oH c #354200",
+"hU c #35430e",
+"D2 c #354800",
+"jz c #364200",
+"yG c #364502",
+"j7 c #364900",
+"Ea c #373f0c",
+"nu c #374300",
+"c7 c #374400",
+"wR c #374514",
+"mj c #374708",
+"lZ c #384205",
+"aE c #384800",
+"oo c #384900",
+"hB c #394500",
+"jk c #394507",
+"Aq c #39490b",
+"Ef c #394c00",
+"mT c #3a440f",
+"Dt c #3a4503",
+"Ag c #3a4c00",
+"h3 c #3b4506",
+"iY c #3b4508",
+"bc c #3b4510",
+"dl c #3b4d03",
+"bn c #3e4a08",
+"xg c #3e4a0c",
+"qR c #3e4c00",
+"am c #3e4e0d",
+"t9 c #3e4e10",
+"ad c #3e4f08",
+"Dk c #3e5600",
+"EE c #3f490c",
+"z0 c #3f4a08",
+"qo c #404f00",
+"Fl c #405800",
+"nj c #414b0e",
+"un c #414d0d",
+"aQ c #425500",
+"xK c #434d10",
+"hu c #435104",
+"B3 c #435200",
+"we c #435400",
+"lO c #445416",
+"EH c #454f12",
+"p9 c #455107",
+"gq c #455200",
+"z3 c #455517",
+"us c #45560f",
+"vW c #455701",
+"d0 c #46530d",
+"an c #46580c",
+"jE c #475315",
+"EZ c #475800",
+"lv c #495517",
+"yN c #495610",
+"uH c #4a580d",
+"j2 c #4b5813",
+"pc c #4c5a0f",
+"gY c #4d5a0a",
+"oR c #4d5a0b",
+"xi c #4d6011",
+"BN c #4f5c0d",
+"iB c #4f6210",
+"Cc c #506210",
+"DP c #525f1a",
+"vM c #52600b",
+"BA c #526011",
+"ac c #526514",
+"o9 c #526b05",
+"iG c #535f1d",
+"kg c #536011",
+"qq c #53620d",
+"kJ c #536211",
+"w6 c #545c2d",
+"zE c #54651e",
+"uF c #556713",
+"dO c #556817",
+"cC c #566314",
+"E# c #566415",
+"lf c #566720",
+"yV c #566e0c",
+"ib c #576613",
+"lG c #576d08",
+"yX c #576f0d",
+"AM c #586513",
+"dA c #586617",
+"ii c #58670a",
+"vB c #586e09",
+"A1 c #596132",
+"m6 c #596c1d",
+"z# c #596e0f",
+"cd c #597015",
+"mW c #5a690c",
+"tT c #5a6d1e",
+"lr c #5b6911",
+"zg c #5b6c1c",
+"Cf c #5b6d23",
+"qC c #5b6f18",
+"bS c #5c6b10",
+"x3 c #5c6e1c",
+"EK c #5c6e22",
+"yx c #5c6f1d",
+"uP c #5c720d",
+"pY c #5c750f",
+"lS c #5d6b13",
+"AP c #5d6e1e",
+"nh c #5d6f1b",
+"oc c #5d6f1d",
+"gB c #5d6f23",
+"oB c #5d711c",
+"cU c #5d7217",
+"lE c #5d730e",
+"En c #5e6c14",
+"hc c #5e7024",
+"vI c #5e7115",
+"kX c #5e7117",
+"Ec c #5e711f",
+"C5 c #5e7702",
+"yK c #5f6e13",
+"EI c #5f6e1d",
+"qO c #5f7014",
+"kF c #5f711f",
+"vx c #5f7125",
+"km c #5f7218",
+"mD c #5f7220",
+"m# c #5f7221",
+"Cb c #5f7314",
+"vh c #5f7419",
+"yb c #606d25",
+"qG c #606e1f",
+"uf c #606e21",
+"o0 c #606f1c",
+"wr c #607321",
+"Fk c #607904",
+"rx c #616d23",
+"zD c #616f1a",
+"x4 c #616f20",
+"si c #61701d",
+"tv c #617128",
+"B4 c #617216",
+"wV c #61751c",
+"uW c #617619",
+"sP c #626a3b",
+"oy c #62711e",
+"yh c #627120",
+"nG c #627229",
+"mz c #62732c",
+"w. c #62741e",
+"n# c #62761d",
+"wX c #636f27",
+"tW c #637021",
+"pv c #63702a",
+"sL c #63721f",
+"tB c #64711f",
+"fq c #64731e",
+"ub c #64752e",
+"Ad c #64771e",
+"y7 c #647725",
+"um c #647819",
+"v6 c #656d3e",
+"sn c #656e37",
+"v5 c #656e39",
+"xA c #657125",
+"tb c #657127",
+"w2 c #657222",
+"rU c #65722d",
+"gr c #65731b",
+"hT c #65772d",
+"l9 c #657827",
+"qv c #667321",
+"fb c #66771b",
+"wm c #667730",
+"nN c #667822",
+"ab c #667a21",
+"CN c #667b1c",
+"qc c #667b1e",
+"q5 c #667b20",
+"bo c #677925",
+"E6 c #677c1d",
+"wy c #68742a",
+"AD c #687432",
+"hC c #68771a",
+"E0 c #687b12",
+"uu c #687b2a",
+"aR c #687e12",
+"xT c #697728",
+"xq c #697b25",
+"gA c #697d26",
+"zT c #697e1f",
+"qh c #697e21",
+"wv c #6a7727",
+"n2 c #6a791c",
+"t. c #6a7b2b",
+"wI c #6a7d14",
+"ru c #6a7d24",
+"yA c #6a7f24",
+"wB c #6b7737",
+"EW c #6b7a29",
+"p5 c #6b7c1c",
+"pU c #6b7e22",
+"wj c #6b801b",
+"Bl c #6c7732",
+"r. c #6c782c",
+"o. c #6c7d2d",
+"ao c #6c8027",
+"xu c #6d792d",
+"wD c #6d792f",
+"rX c #6d7b24",
+"f5 c #6d7f1c",
+"uJ c #6d812c",
+"ED c #6e7b29",
+"CW c #6e7d22",
+"eH c #6e8221",
+"fC c #6e8223",
+"eR c #6f8320",
+"bb c #707e2f",
+"mr c #707e31",
+"dm c #708624",
+"oj c #71802f",
+"oh c #71832f",
+"yF c #71852c",
+"uA c #718725",
+"BZ c #728220",
+"Bb c #728430",
+"mM c #73802e",
+"aD c #73862d",
+"Ao c #748328",
+"u3 c #74832e",
+"e1 c #75882e",
+"Bp c #778933",
+"Ca c #778c25",
+"DA c #78911c",
+"gJ c #798c23",
+"Cp c #7a8831",
+"iQ c #7a8b2d",
+"Df c #7b8c26",
+"c6 c #7b8c2c",
+"D1 c #7b921e",
+"t2 c #7c912a",
+"gz c #7c9132",
+"u7 c #7c922e",
+"jq c #7c931f",
+"ep c #7d8e30",
+"mK c #7d9331",
+"Ar c #7e9334",
+"aa c #7e9430",
+"Ds c #7f9026",
+"vb c #7fa00b",
+"B5 c #809133",
+"pG c #809135",
+"hm c #80932a",
+"E8 c #809634",
+"ap c #80972f",
+"mt c #81912f",
+"re c #819330",
+"hb c #819637",
+"gU c #81972a",
+"k8 c #81a20d",
+"pm c #829132",
+"gZ c #829230",
+"gs c #839235",
+"iZ c #839330",
+"BB c #839532",
+"qY c #84923b",
+"dZ c #849932",
+"v# c #849a38",
+"EV c #859638",
+"BM c #859733",
+"pI c #85982d",
+"vm c #85982f",
+"zo c #859f22",
+"vq c #869834",
+"pC c #86a120",
+"Fg c #879935",
+"nV c #88993d",
+"eh c #89a034",
+"Eg c #89a036",
+"aC c #8a9f38",
+"zz c #8aa32b",
+"E1 c #8ba02b",
+"Bw c #8c9e2e",
+"nq c #8ca138",
+"EN c #8da33e",
+"wN c #8da432",
+"D5 c #8da43c",
+"AQ c #8ea33a",
+"C# c #8ea435",
+"gy c #8ea43f",
+"xa c #8fa42f",
+"AG c #8fa43f",
+"nR c #8fa539",
+"ij c #90a32f",
+"hS c #90a642",
+"vY c #90a644",
+"aS c #90a82e",
+"nv c #91a430",
+"Em c #92a339",
+"wS c #92a74a",
+"yH c #92a839",
+"zh c #92aa3c",
+"kY c #92ac2d",
+"mI c #92b501",
+"l0 c #93a446",
+"mi c #93a849",
+"tK c #93a93a",
+"iA c #93a947",
+"vu c #93ab39",
+"ha c #93ab3b",
+"Ah c #93ae2b",
+"zj c #93b600",
+"au c #93b602",
+"cr c #93b809",
+"li c #94a53b",
+"gt c #94a640",
+"z4 c #94a94c",
+"j8 c #94ad2d",
+"p. c #94b125",
+"jI c #94b204",
+"bN c #94b504",
+"mG c #94b50e",
+"xR c #94b607",
+"fx c #94b701",
+"sW c #94b909",
+"Ax c #94bb00",
+"B6 c #95a741",
+"le c #95ad3d",
+"cV c #95ae39",
+"zn c #95b129",
+"i. c #95b607",
+"xZ c #95bb06",
+"rn c #96a747",
+"EC c #96a83c",
+"uM c #96ae3e",
+"jj c #96ae40",
+"aq c #96af37",
+"pZ c #96b130",
+"oE c #96b907",
+"dP c #97ae42",
+"a# c #97af41",
+"zp c #97b134",
+"y6 c #97b33a",
+"nm c #97b40c",
+"uB c #97b531",
+"yj c #97b70e",
+"hp c #97b805",
+"x0 c #97b811",
+"dW c #97b903",
+"sI c #97ba06",
+"k5 c #97bc0c",
+"lb c #97bd08",
+"ss c #97bd10",
+"y1 c #97bd12",
+"bR c #98aa3a",
+"rE c #98ab40",
+"xW c #98b040",
+"yY c #98b43b",
+"Fs c #98b50b",
+"Dl c #98b620",
+"FB c #98b71c",
+"xn c #98b817",
+"a8 c #98ba03",
+"fy c #98ba0c",
+"wp c #98bb17",
+"z7 c #98bc00",
+"rB c #98bd0b",
+"bC c #98bd0e",
+"t0 c #98be06",
+"zN c #98be07",
+"tF c #98bf00",
+"zt c #98bf04",
+"sv c #98bf0c",
+"y3 c #98c007",
+"z9 c #98c105",
+"tE c #98c200",
+"jF c #99aa4c",
+"A9 c #99ab3b",
+"ht c #99ad3c",
+"j1 c #99ae47",
+"B7 c #99b03b",
+"yE c #99b23a",
+"ug c #99b431",
+"ce c #99b441",
+"nx c #99b707",
+"FC c #99b721",
+"Dp c #99b800",
+"DD c #99b805",
+"uY c #99b812",
+"ft c #99b900",
+"Fi c #99b910",
+"h7 c #99b916",
+"EJ c #99b918",
+"Bq c #99b91a",
+"ql c #99ba07",
+"f. c #99ba09",
+"f8 c #99bb02",
+"a5 c #99bb04",
+"zH c #99bb0c",
+"bJ c #99bb0d",
+".X c #99bc06",
+"#o c #99bc08",
+"l# c #99bc18",
+"sg c #99bd01",
+"rk c #99bd03",
+"kA c #99be0c",
+"zO c #99be0e",
+"ti c #99be0f",
+"bt c #99bf08",
+"jY c #99bf0a",
+"tf c #99c202",
+"zZ c #9aac40",
+"dz c #9aad42",
+"jy c #9aae3f",
+"yr c #9aaf46",
+"rM c #9ab043",
+"gu c #9ab13f",
+"gx c #9ab145",
+"E. c #9ab334",
+"vK c #9ab41d",
+"sR c #9ab510",
+"xx c #9ab60c",
+"Ft c #9ab70f",
+"C6 c #9ab91e",
+"#b c #9aba17",
+"iJ c #9aba19",
+"#v c #9aba1b",
+"cZ c #9abb14",
+"qL c #9abc05",
+"tr c #9abc0d",
+"r6 c #9abc0e",
+".W c #9abd07",
+"#p c #9abd09",
+"z6 c #9abd0b",
+"lo c #9abe02",
+"qV c #9abe04",
+"ps c #9abe06",
+"Aj c #9abf00",
+"sV c #9abf0d",
+"ch c #9abf0f",
+"k6 c #9abf10",
+"Ay c #9ac008",
+"sF c #9ac00b",
+"r1 c #9ac013",
+"k3 c #9ac102",
+"sf c #9ac104",
+"A. c #9ac106",
+"y2 c #9ac10c",
+"sw c #9ac10e",
+"sT c #9ac20a",
+"Aw c #9ac305",
+"mk c #9bad41",
+"sC c #9bb43c",
+"C. c #9bb43e",
+"#T c #9bb538",
+"nX c #9bb810",
+"qi c #9bb83a",
+"EP c #9bb909",
+"Aa c #9bba14",
+"jt c #9bba1e",
+"mc c #9bbb1a",
+"qk c #9bbb1c",
+"ts c #9bbc17",
+"u0 c #9bbd04",
+"uj c #9bbd06",
+"#z c #9bbd0e",
+"lJ c #9bbd0f",
+"jw c #9bbe02",
+"#n c #9bbe08",
+"hM c #9bbe0a",
+"m2 c #9bbf07",
+"nc c #9bbf13",
+"wi c #9bc001",
+"kB c #9bc00e",
+"sX c #9bc011",
+"AX c #9bc109",
+"k4 c #9bc10c",
+"y0 c #9bc207",
+"cB c #9cb03f",
+"se c #9cb442",
+"s4 c #9cb53d",
+"dn c #9cb53f",
+"gv c #9cb540",
+"#S c #9cb637",
+"B8 c #9cb639",
+"sc c #9cb63b",
+"xc c #9cba0c",
+"DE c #9cba0d",
+"ay c #9cbc13",
+"ur c #9cbc1b",
+"Ex c #9cbc1d",
+"dw c #9cbd0a",
+"cx c #9cbd0e",
+".6 c #9cbd14",
+"uq c #9cbd16",
+"l6 c #9cbd18",
+"AV c #9cbe05",
+"lB c #9cbe0f",
+"xm c #9cbe10",
+"cY c #9cbe12",
+"#A c #9cbf09",
+"#. c #9cbf0b",
+"k1 c #9cbf0d",
+"jf c #9cbf1a",
+"m3 c #9cc006",
+"#i c #9cc008",
+"nP c #9cc016",
+"bs c #9cc018",
+"kQ c #9cc101",
+"ci c #9cc10f",
+"wo c #9cc111",
+"u# c #9cc112",
+"bw c #9cc20a",
+"jX c #9cc20d",
+"ky c #9cc308",
+"s2 c #9db044",
+"qx c #9db715",
+"#U c #9db73c",
+"hI c #9db813",
+"oF c #9db829",
+"#R c #9db837",
+"y. c #9dba10",
+"te c #9dba12",
+"EQ c #9dbb0b",
+"Ey c #9dbb1f",
+"DL c #9dbd02",
+"vk c #9dbd10",
+"eK c #9dbd12",
+"Ew c #9dbd1c",
+"#u c #9dbd1e",
+"gP c #9dbe0f",
+"#y c #9dbe15",
+"pR c #9dbe17",
+".3 c #9dbe19",
+"hN c #9dbf10",
+".7 c #9dbf13",
+".V c #9dc00a",
+".S c #9dc00c",
+"#h c #9dc00e",
+"ne c #9dc105",
+"nz c #9dc107",
+"m0 c #9dc109",
+"lL c #9dc117",
+"cn c #9dc119",
+"jW c #9dc210",
+"bD c #9dc212",
+"lK c #9dc30b",
+"zr c #9dc314",
+"st c #9dc316",
+"yu c #9dc405",
+"Fv c #9eb145",
+"ba c #9eb146",
+"pg c #9eb23f",
+"Fw c #9eb243",
+"A4 c #9eb34e",
+"AC c #9eb448",
+"gw c #9eb646",
+"AR c #9eb738",
+"rl c #9eb839",
+"rJ c #9eb83b",
+"#Q c #9eb936",
+"C8 c #9ebb11",
+"wK c #9ebb15",
+"zX c #9ebc0c",
+"cy c #9ebd19",
+"c3 c #9ebd1a",
+"ji c #9ebd33",
+"A5 c #9ebe05",
+"Bf c #9ebe11",
+"lp c #9ebe13",
+"uk c #9ebe15",
+"t7 c #9ebe1f",
+"k9 c #9ebe2c",
+"jK c #9ebf00",
+"bM c #9ebf0e",
+"hq c #9ebf10",
+".5 c #9ebf16",
+"m4 c #9ebf18",
+"h8 c #9ebf1a",
+"eL c #9ec009",
+"ax c #9ec00a",
+"#g c #9ec011",
+"mQ c #9ec012",
+".s c #9ec014",
+"dv c #9ec105",
+"e8 c #9ec10b",
+".C c #9ec10d",
+".P c #9ec10f",
+"#8 c #9ec206",
+"xP c #9ec208",
+"fv c #9ec20a",
+"yQ c #9ec218",
+"by c #9ec21a",
+"pQ c #9ec303",
+"kw c #9ec311",
+"lc c #9ec314",
+"oX c #9ec400",
+"i9 c #9ec40d",
+"yT c #9ec506",
+"me c #9ec508",
+"nd c #9ec50a",
+"zs c #9ec60d",
+"tg c #9ec70b",
+"zd c #9fb141",
+"DO c #9fb14e",
+"vS c #9fb340",
+"s9 c #9fb546",
+"zF c #9fb551",
+"r8 c #9fb73f",
+"og c #9fb839",
+"rI c #9fb920",
+"AY c #9fb922",
+"B9 c #9fb93e",
+"jH c #9fba1f",
+"Bt c #9fbb0e",
+"qT c #9fbb19",
+"Fu c #9fbc14",
+"a9 c #9fbd10",
+"k. c #9fbd21",
+"DH c #9fbe08",
+"gS c #9fbe18",
+"k# c #9fbe1a",
+"iy c #9fbe23",
+"xj c #9fbe32",
+"x9 c #9fbf04",
+"jv c #9fbf1e",
+"dp c #9fbf20",
+"vA c #9fbf2d",
+"gR c #9fc00f",
+"hO c #9fc017",
+".4 c #9fc019",
+".2 c #9fc01b",
+"yP c #9fc029",
+"AU c #9fc10b",
+".F c #9fc112",
+".Y c #9fc113",
+".r c #9fc115",
+"jg c #9fc124",
+"eN c #9fc203",
+"rb c #9fc206",
+".T c #9fc20c",
+"nA c #9fc20e",
+".A c #9fc210",
+"uD c #9fc21d",
+"zP c #9fc21e",
+"e6 c #9fc300",
+"mw c #9fc307",
+"oN c #9fc30b",
+"yC c #9fc317",
+"bB c #9fc319",
+"tj c #9fc31b",
+"pp c #9fc402",
+"zk c #9fc404",
+"#5 c #9fc405",
+"cj c #9fc412",
+"jV c #9fc414",
+"je c #9fc415",
+"oW c #9fc500",
+"jS c #9fc50d",
+"jc c #9fc50e",
+"r4 c #9fc510",
+"ks c #9fc60b",
+"bH c #9fc611",
+"bI c #9fc615",
+"aZ c #9fc70e",
+"c0 c #9fc70f",
+"bG c #9fc808",
+"aY c #9fc80a",
+"ct c #9fc80c",
+"sA c #a0b445",
+"nF c #a0b647",
+"lN c #a0b652",
+"sK c #a0b742",
+"lw c #a0b745",
+"bp c #a0b74b",
+"q# c #a0b91d",
+"rz c #a0b927",
+"tk c #a0b943",
+"lH c #a0b944",
+"hH c #a0ba1b",
+"FO c #a0ba21",
+"yB c #a0ba3f",
+"CT c #a0bd0d",
+"qs c #a0bd13",
+"Fa c #a0bd17",
+"kM c #a0be0e",
+"n8 c #a0be20",
+"AH c #a0be2a",
+"Fo c #a0bf0a",
+"lV c #a0bf0c",
+"AA c #a0bf19",
+"p0 c #a0bf24",
+"vz c #a0bf26",
+"h6 c #a0c01d",
+"DW c #a0c01f",
+"ju c #a0c021",
+"or c #a0c100",
+"jL c #a0c102",
+"a4 c #a0c10e",
+"rq c #a0c112",
+"#q c #a0c118",
+"#a c #a0c11a",
+"#x c #a0c11c",
+"ld c #a0c128",
+"yv c #a0c12c",
+"e9 c #a0c209",
+"kR c #a0c20c",
+".z c #a0c213",
+".G c #a0c214",
+".K c #a0c216",
+".U c #a0c30d",
+".E c #a0c30f",
+".n c #a0c311",
+"bz c #a0c31e",
+"e5 c #a0c402",
+"iu c #a0c408",
+"xd c #a0c40a",
+"#m c #a0c40c",
+"a2 c #a0c418",
+"cm c #a0c41c",
+"#7 c #a0c505",
+"ke c #a0c506",
+"cu c #a0c513",
+"a1 c #a0c515",
+"el c #a0c516",
+"zV c #a0c601",
+"cs c #a0c60e",
+"av c #a0c60f",
+"a0 c #a0c611",
+"su c #a0c617",
+"r2 c #a0c619",
+"yt c #a0c708",
+"bF c #a0c70a",
+"aX c #a0c70c",
+"zK c #a0c712",
+"h4 c #a1b252",
+"hD c #a1b345",
+"Bk c #a1b34d",
+"wb c #a1b449",
+"AL c #a1b53c",
+"Fh c #a1b542",
+"tN c #a1b546",
+"w# c #a1b64d",
+"Bu c #a1bb19",
+"rZ c #a1bb1a",
+"up c #a1bb22",
+"#V c #a1bb40",
+"A7 c #a1bc17",
+"FP c #a1bc1f",
+"yU c #a1bc47",
+"D# c #a1bd11",
+"Am c #a1bd13",
+"zB c #a1bd1b",
+"Db c #a1be0a",
+"vU c #a1be18",
+"DY c #a1be26",
+"qz c #a1bf11",
+"kf c #a1bf12",
+"oO c #a1bf29",
+"sS c #a1c00a",
+"FH c #a1c00d",
+"hr c #a1c01c",
+"on c #a1c025",
+"#K c #a1c027",
+"rC c #a1c114",
+"#c c #a1c11e",
+"#w c #a1c120",
+"#t c #a1c122",
+"oL c #a1c20f",
+"qU c #a1c211",
+"rj c #a1c213",
+".t c #a1c219",
+"p7 c #a1c21b",
+"q2 c #a1c21d",
+"oe c #a1c22d",
+"pi c #a1c30a",
+"oK c #a1c30c",
+"pj c #a1c30d",
+"## c #a1c314",
+"no c #a1c315",
+".M c #a1c317",
+"nC c #a1c405",
+"rQ c #a1c406",
+".9 c #a1c40e",
+".R c #a1c410",
+".m c #a1c412",
+"#B c #a1c509",
+"#j c #a1c50b",
+"dr c #a1c50d",
+"oM c #a1c519",
+"tq c #a1c606",
+"iv c #a1c607",
+"jT c #a1c614",
+"jU c #a1c616",
+"cq c #a1c617",
+"E3 c #a1c702",
+"rA c #a1c710",
+"j. c #a1c712",
+"kt c #a1c80b",
+"tG c #a1c80d",
+"wY c #a2b63d",
+"sa c #a2b647",
+"kn c #a2b849",
+"n9 c #a2b944",
+"e2 c #a2ba40",
+"vi c #a2bb43",
+"na c #a2bb45",
+"sb c #a2bc23",
+"sy c #a2bc3f",
+"lD c #a2bc41",
+"q0 c #a2bd16",
+"mY c #a2bd22",
+"BW c #a2be11",
+"hJ c #a2be14",
+"xM c #a2be1b",
+"vs c #a2be1c",
+"AS c #a2be2d",
+"AJ c #a2bf0d",
+"ol c #a2bf17",
+"pk c #a2bf2f",
+"i8 c #a2c010",
+"jP c #a2c013",
+"AT c #a2c022",
+"#L c #a2c02e",
+"mo c #a2c10e",
+"Bd c #a2c11e",
+"D7 c #a2c125",
+"aV c #a2c126",
+"lk c #a2c207",
+"gb c #a2c215",
+"aW c #a2c21f",
+"r7 c #a2c221",
+"tn c #a2c223",
+"DI c #a2c300",
+"oV c #a2c304",
+"bK c #a2c312",
+"jR c #a2c314",
+".h c #a2c31a",
+"iL c #a2c31c",
+"iK c #a2c31e",
+"it c #a2c40b",
+".# c #a2c415",
+".a c #a2c416",
+".b c #a2c418",
+"eM c #a2c507",
+"rP c #a2c509",
+".c c #a2c50f",
+"Qt c #a2c511",
+".f c #a2c513",
+".g c #a2c60a",
+".e c #a2c60c",
+".d c #a2c60e",
+"co c #a2c61a",
+"sY c #a2c61c",
+"ov c #a2c705",
+"dV c #a2c707",
+"du c #a2c708",
+"jd c #a2c715",
+"Bh c #a2c717",
+"bx c #a2c718",
+"FW c #a2c800",
+"FX c #a2c801",
+"FY c #a2c803",
+"r5 c #a2c811",
+"jb c #a2c813",
+"Av c #a2c90c",
+"tc c #a3b547",
+"nk c #a3b64b",
+"oG c #a3b851",
+"il c #a3bb25",
+"pb c #a3bb43",
+"my c #a3bb4b",
+"zR c #a3bc44",
+"E5 c #a3bc47",
+"CC c #a3bd1c",
+"FJ c #a3bd24",
+"x6 c #a3bd28",
+"qH c #a3bd42",
+"FA c #a3be21",
+"#P c #a3be39",
+"qW c #a3be3d",
+"oC c #a3bf46",
+"xw c #a3c00e",
+"CS c #a3c010",
+"jQ c #a3c016",
+"FQ c #a3c01a",
+"yl c #a3c026",
+"g5 c #a3c028",
+"rN c #a3c02a",
+"jO c #a3c111",
+"gL c #a3c121",
+"mv c #a3c125",
+"kD c #a3c12d",
+"kN c #a3c20f",
+"eP c #a3c21e",
+"Ei c #a3c226",
+"F. c #a3c227",
+"jM c #a3c30a",
+"bO c #a3c316",
+"kr c #a3c318",
+"zb c #a3c31a",
+"rr c #a3c320",
+"l2 c #a3c322",
+"mg c #a3c324",
+"jh c #a3c331",
+"kq c #a3c411",
+"mp c #a3c413",
+"iO c #a3c415",
+".Z c #a3c41b",
+".1 c #a3c41d",
+"ds c #a3c41f",
+"DJ c #a3c500",
+"aw c #a3c50c",
+"en c #a3c50e",
+"eO c #a3c50f",
+".o c #a3c516",
+".w c #a3c517",
+".v c #a3c519",
+"em c #a3c607",
+"os c #a3c60a",
+"cv c #a3c610",
+".i c #a3c612",
+".l c #a3c614",
+"dq c #a3c70b",
+"dS c #a3c70d",
+"ek c #a3c70f",
+"iw c #a3c808",
+"ja c #a3c816",
+"Ak c #a3c900",
+"zW c #a3c902",
+"kz c #a3c912",
+"j# c #a3c914",
+"r3 c #a3c91a",
+"k2 c #a3ca0d",
+"sU c #a3ca17",
+"zL c #a3cb13",
+"Cg c #a4bb51",
+"op c #a4bc26",
+"ro c #a4bc30",
+"aB c #a4bc44",
+"tS c #a4bc4c",
+"g4 c #a4bd2e",
+"eI c #a4bd3e",
+"im c #a4be1d",
+"sB c #a4be25",
+"DZ c #a4be36",
+"pF c #a4be37",
+"q4 c #a4be41",
+"kL c #a4bf22",
+"pT c #a4bf3e",
+"CD c #a4c013",
+"i2 c #a4c014",
+"CR c #a4c016",
+"ph c #a4c01d",
+"lT c #a4c01e",
+"p1 c #a4c02d",
+"ei c #a4c038",
+"iq c #a4c10d",
+"sq c #a4c10f",
+"ip c #a4c111",
+"az c #a4c127",
+"rs c #a4c131",
+"q1 c #a4c20c",
+"ho c #a4c226",
+"oY c #a4c22c",
+"ys c #a4c230",
+"jN c #a4c30e",
+"xN c #a4c310",
+"ge c #a4c31d",
+"eo c #a4c320",
+"g6 c #a4c328",
+"Do c #a4c401",
+"n5 c #a4c407",
+"jJ c #a4c409",
+"pK c #a4c40b",
+"rc c #a4c419",
+"ka c #a4c41b",
+"D8 c #a4c421",
+"#s c #a4c423",
+"wT c #a4c432",
+"n7 c #a4c512",
+"rR c #a4c514",
+"e4 c #a4c516",
+".u c #a4c51c",
+".0 c #a4c51e",
+"#d c #a4c520",
+"cw c #a4c610",
+".y c #a4c617",
+".x c #a4c618",
+".J c #a4c61a",
+"fw c #a4c711",
+".j c #a4c713",
+"gO c #a4c715",
+"bA c #a4c722",
+"cg c #a4c725",
+"ix c #a4c80c",
+"l4 c #a4c80e",
+"#H c #a4c810",
+"ck c #a4c81c",
+"cl c #a4c820",
+"#4 c #a4c909",
+"#6 c #a4c90a",
+"sx c #a4c917",
+"s7 c #a4c91a",
+"xe c #a4ca03",
+"Az c #a4ca12",
+"mf c #a4ca13",
+"Bg c #a4ca15",
+"bu c #a4cb0c",
+"AW c #a4cb0e",
+"kx c #a4cb10",
+"w1 c #a5b747",
+"ym c #a5b84c",
+"EU c #a5b84d",
+"rY c #a5ba3b",
+"rt c #a5bc47",
+"xp c #a5be48",
+"v1 c #a5be49",
+"oT c #a5bf1e",
+"FK c #a5bf26",
+"t6 c #a5bf28",
+"pu c #a5bf44",
+"in c #a5c019",
+"u5 c #a5c023",
+"AB c #a5c033",
+"Fj c #a5c03d",
+"io c #a5c114",
+"n4 c #a5c115",
+"DM c #a5c11f",
+"ar c #a5c139",
+"Cl c #a5c20e",
+"Cm c #a5c212",
+"BU c #a5c21a",
+"mm c #a5c21c",
+"vl c #a5c228",
+"Bi c #a5c22a",
+"lI c #a5c236",
+"ir c #a5c30d",
+"r0 c #a5c313",
+"wh c #a5c316",
+"dx c #a5c323",
+"f# c #a5c325",
+"Dn c #a5c404",
+"pO c #a5c40e",
+"FG c #a5c40f",
+"DX c #a5c41e",
+"k0 c #a5c428",
+"qJ c #a5c429",
+"zJ c #a5c42b",
+"oJ c #a5c50a",
+"om c #a5c50c",
+"mZ c #a5c518",
+"kp c #a5c51c",
+"#r c #a5c522",
+"nD c #a5c613",
+"c2 c #a5c615",
+"#I c #a5c61d",
+"BH c #a5c621",
+"gc c #a5c710",
+"f9 c #a5c711",
+"#2 c #a5c718",
+"e7 c #a5c719",
+"#f c #a5c71b",
+"dT c #a5c812",
+".k c #a5c814",
+".B c #a5c816",
+"#E c #a5c90d",
+"#k c #a5c90f",
+"#l c #a5c911",
+"jZ c #a5c91f",
+"#C c #a5ca0a",
+"m1 c #a5ca0b",
+"xk c #a5ca1b",
+"yR c #a5cb13",
+"y4 c #a5cb1c",
+"mH c #a5cc0d",
+"tZ c #a5cd15",
+"CG c #a6b946",
+"rH c #a6ba47",
+"ox c #a6bb42",
+"td c #a6bd2e",
+"f6 c #a6be36",
+"D0 c #a6be42",
+"mS c #a6be44",
+"qb c #a6bf49",
+"qB c #a6bf4a",
+"Ck c #a6c01e",
+"Fb c #a6c027",
+"FN c #a6c029",
+"pn c #a6c11a",
+"h5 c #a6c136",
+"vV c #a6c13e",
+"pN c #a6c215",
+"CP c #a6c21f",
+"ER c #a6c220",
+"BG c #a6c231",
+"nZ c #a6c239",
+"A6 c #a6c30f",
+"#M c #a6c335",
+"pL c #a6c337",
+"x7 c #a6c414",
+"qm c #a6c426",
+"xX c #a6c42e",
+"j0 c #a6c432",
+"FT c #a6c50f",
+"FI c #a6c512",
+"Be c #a6c51f",
+"Ej c #a6c52a",
+"x8 c #a6c609",
+"is c #a6c60d",
+"ga c #a6c61b",
+"dU c #a6c71e",
+"#e c #a6c720",
+"tI c #a6c722",
+"h9 c #a6c80f",
+"ny c #a6c811",
+"gd c #a6c812",
+".p c #a6c819",
+".q c #a6c81a",
+".H c #a6c81c",
+"l3 c #a6c913",
+".8 c #a6c915",
+".Q c #a6c917",
+"zu c #a6c925",
+"#G c #a6ca0e",
+"kd c #a6ca10",
+"#3 c #a6ca12",
+"ui c #a6ca20",
+"ut c #a6ca22",
+"pr c #a6cb09",
+"ot c #a6cb0b",
+"#F c #a6cb0c",
+"sE c #a6cb19",
+"kv c #a6cb1b",
+"pq c #a6cc05",
+"xQ c #a6cc07",
+"bv c #a6cd10",
+"u. c #a6cd12",
+"yS c #a6ce0b",
+"zM c #a6ce15",
+"th c #a6ce16",
+"ww c #a7b755",
+"so c #a7b850",
+"p2 c #a7ba4e",
+"Co c #a7bb40",
+"t5 c #a7bb4a",
+"hE c #a7bc3d",
+"BY c #a7bd34",
+"xy c #a7bf2b",
+"tu c #a7bf4d",
+"l8 c #a7bf51",
+"Fz c #a7c02e",
+"s3 c #a7c128",
+"l1 c #a7c13a",
+"h# c #a7c144",
+"Dm c #a7c21b",
+"wg c #a7c225",
+"Cj c #a7c321",
+"rD c #a7c330",
+"Da c #a7c412",
+"qy c #a7c414",
+"pa c #a7c42a",
+"tJ c #a7c42e",
+"zQ c #a7c436",
+"qj c #a7c438",
+"FR c #a7c515",
+"DG c #a7c517",
+"lW c #a7c529",
+"nb c #a7c533",
+"FS c #a7c611",
+"mP c #a7c613",
+"qM c #a7c620",
+"vt c #a7c62a",
+"g7 c #a7c62d",
+"gM c #a7c71e",
+"dR c #a7c726",
+"BI c #a7c728",
+"zv c #a7c738",
+"kO c #a7c817",
+"a3 c #a7c819",
+"#1 c #a7c823",
+"yD c #a7c831",
+"uC c #a7c833",
+"gN c #a7c91a",
+".N c #a7c91b",
+"kb c #a7c91d",
+"tY c #a7c92a",
+"k7 c #a7c92d",
+"a6 c #a7ca0e",
+"ra c #a7ca14",
+"g. c #a7ca16",
+".D c #a7ca18",
+"kP c #a7cb11",
+"ln c #a7cb13",
+"#D c #a7cc0d",
+"ku c #a7cc1a",
+"tH c #a7cd16",
+"la c #a7cd18",
+"A# c #a7ce13",
+"oS c #a8bc3f",
+"BC c #a8bc4b",
+"sh c #a8bd44",
+"BS c #a8bf53",
+"hG c #a8c02a",
+"xf c #a8c044",
+"m5 c #a8c050",
+"iH c #a8c142",
+"tP c #a8c149",
+"FL c #a8c229",
+"tO c #a8c22b",
+"As c #a8c245",
+"#W c #a8c247",
+"pJ c #a8c326",
+"c4 c #a8c338",
+"qt c #a8c340",
+"i7 c #a8c417",
+"Dc c #a8c418",
+"t1 c #a8c433",
+"#O c #a8c43c",
+"i3 c #a8c511",
+"ow c #a8c52d",
+"xo c #a8c535",
+"qa c #a8c537",
+"za c #a8c539",
+"i4 c #a8c610",
+"Br c #a8c616",
+"rp c #a8c619",
+"q3 c #a8c630",
+"x1 c #a8c632",
+"u6 c #a8c634",
+"u1 c #a8c723",
+"pt c #a8c72b",
+"DB c #a8c72c",
+"sr c #a8c80b",
+"Al c #a8c80d",
+"xO c #a8c80f",
+"CO c #a8c825",
+"wM c #a8c829",
+"FF c #a8c916",
+"Ev c #a8c920",
+"y5 c #a8c932",
+"qI c #a8c934",
+"uZ c #a8ca14",
+"C7 c #a8ca1b",
+"nB c #a8ca1c",
+".I c #a8ca1e",
+"uO c #a8ca2e",
+"n6 c #a8cb0f",
+"lm c #a8cb15",
+"lA c #a8cb17",
+"FE c #a8cb19",
+"uh c #a8cb29",
+"zl c #a8cc10",
+"sG c #a8cc14",
+"pP c #a8cd0e",
+"ou c #a8ce09",
+"ri c #a9be47",
+"u4 c #a9bf40",
+"rT c #a9c04e",
+"ma c #a9c151",
+"ua c #a9c153",
+"uE c #a9c240",
+"vy c #a9c24a",
+"yO c #a9c24d",
+"CQ c #a9c321",
+"tm c #a9c32c",
+"gf c #a9c33b",
+"ko c #a9c33e",
+"ng c #a9c344",
+"Ez c #a9c427",
+"hs c #a9c435",
+"ul c #a9c439",
+"BT c #a9c43f",
+"Eh c #a9c441",
+"mh c #a9c443",
+"CE c #a9c51b",
+"#N c #a9c53c",
+"p8 c #a9c53d",
+"po c #a9c612",
+"i5 c #a9c614",
+"i6 c #a9c616",
+"eJ c #a9c62e",
+"lC c #a9c636",
+"zq c #a9c63a",
+"oU c #a9c711",
+"hK c #a9c719",
+"np c #a9c731",
+"nY c #a9c812",
+"r# c #a9c82d",
+"AI c #a9c90c",
+"F# c #a9c910",
+"iM c #a9ca21",
+"p# c #a9ca23",
+"#J c #a9ca25",
+"br c #a9ca33",
+"Fn c #a9cb1c",
+".L c #a9cb1f",
+"g# c #a9cc18",
+"qK c #a9cc1a",
+"fu c #a9cd07",
+"fz c #a9cd13",
+"lz c #a9cd15",
+"cp c #a9cd21",
+"xl c #a9cf1a",
+"g0 c #aabc4c",
+"pM c #aabc50",
+"De c #aabf3c",
+"c5 c #aac14c",
+"vJ c #aac24a",
+"zY c #aac329",
+"fa c #aac341",
+"BX c #aac422",
+"mO c #aac42b",
+"FM c #aac42d",
+"aT c #aac43f",
+"hR c #aac449",
+"Bc c #aac538",
+"zG c #aac544",
+"D. c #aac61c",
+"vj c #aac633",
+"oq c #aac713",
+"e3 c #aac72f",
+"mF c #aac737",
+"h. c #aac739",
+"wL c #aac818",
+"g8 c #aac832",
+"bq c #aac844",
+"Fp c #aac914",
+"FD c #aac92e",
+"jr c #aac930",
+"mR c #aaca29",
+"nf c #aaca2b",
+"rO c #aacb1a",
+"hL c #aacb1c",
+"Au c #aacb22",
+"FV c #aacc1d",
+"EO c #aacd17",
+"Fm c #aacd19",
+"c1 c #aace16",
+"bE c #aacf1d",
+"tC c #abbd4d",
+"EB c #abc03f",
+"BL c #abc04b",
+"g3 c #abc138",
+"BF c #abc23c",
+"Er c #abc256",
+"Fy c #abc33b",
+"ia c #abc34b",
+"fB c #abc442",
+"kE c #abc44e",
+"x2 c #abc44f",
+"dY c #abc540",
+"Ek c #abc637",
+"BV c #abc71d",
+"CB c #abc725",
+"fs c #abc727",
+"Bs c #abc818",
+"rS c #abc832",
+"zU c #abc838",
+"tp c #abc935",
+"g9 c #abc937",
+"nn c #abca15",
+"pE c #abca26",
+"dX c #abca27",
+"js c #abca2f",
+"cX c #abca31",
+"uN c #abcb2c",
+"bL c #abcc19",
+"dt c #abcc27",
+"md c #abcd1e",
+"a7 c #abce10",
+"kc c #abce18",
+"z8 c #abce1a",
+".O c #abce1c",
+"sH c #abcf17",
+"xv c #acbf4c",
+"oZ c #acc04d",
+"tX c #acc04f",
+"qZ c #acc13e",
+"xL c #acc244",
+"hF c #acc337",
+"lj c #acc430",
+"Ac c #acc44c",
+"wq c #acc452",
+"nO c #acc550",
+"p6 c #acc631",
+"aA c #acc63e",
+"eQ c #acc63f",
+"b. c #acc72c",
+"sJ c #acc837",
+"dQ c #acc83f",
+"Ab c #acc933",
+"mn c #acca1c",
+"fA c #acca2a",
+"#Z c #acca38",
+"ll c #accb16",
+"iI c #accb2f",
+"#0 c #accb30",
+"gQ c #accc1f",
+"ly c #accc2d",
+"at c #accd28",
+"iN c #accf10",
+"kC c #acd026",
+"xz c #adbf4f",
+"ry c #adc04d",
+"qS c #adc344",
+"CF c #adc435",
+"wZ c #adc438",
+"vL c #adc440",
+"Bj c #adc442",
+"sp c #adc533",
+"rd c #adc53b",
+"vr c #adc53d",
+"ml c #adc636",
+"Fc c #adc637",
+"yw c #adc650",
+"kS c #adc72e",
+"BJ c #adc83d",
+"vZ c #adc843",
+"nE c #adc938",
+"DF c #adca20",
+"tt c #adca3a",
+"a. c #adcb37",
+"lx c #adcb39",
+"yk c #adcc19",
+"zI c #adcc31",
+"as c #adcc33",
+"FU c #add01a",
+"l5 c #add119",
+"x5 c #aec24f",
+"i0 c #aec342",
+"CU c #aec536",
+"EA c #aec632",
+"qr c #aec63c",
+"vT c #aec735",
+"tD c #aec738",
+"BK c #aec745",
+"xb c #aec92e",
+"mq c #aec93e",
+"yI c #aecb35",
+"mx c #aecb3b",
+"va c #aecb3d",
+"E4 c #aecb3f",
+"pD c #aecd31",
+"cf c #aecd41",
+"#9 c #aece2d",
+"hP c #aece2f",
+"of c #aecf26",
+"yZ c #aecf3a",
+"DK c #aed008",
+"Ci c #aed11b",
+"uo c #afc350",
+"ya c #afc354",
+"oI c #afc44b",
+"ik c #afc53e",
+"Bv c #afc638",
+"zc c #afc836",
+"nl c #afc839",
+"mE c #afc853",
+"#X c #afc94c",
+"C9 c #afca23",
+"gT c #afca3b",
+"D6 c #afca45",
+"E9 c #afca47",
+"cz c #afcc36",
+"kZ c #afcc3c",
+"Fr c #afcd1f",
+"pS c #afcd37",
+"CA c #afcd39",
+"qA c #afcd3b",
+"D9 c #afce33",
+"Ai c #afd029",
+"mu c #b0c647",
+"mN c #b0c64a",
+"iP c #b0c741",
+"yJ c #b0c745",
+"Dd c #b0c92f",
+"dy c #b0ca42",
+"t8 c #b0ca4f",
+"i# c #b0cd37",
+"s8 c #b0cd3d",
+"Ch c #b0cd41",
+"At c #b0ce38",
+"DC c #b0cf1a",
+"zA c #b0d02f",
+"l. c #b0d138",
+"xY c #b0d42a",
+"mX c #b1c645",
+"n3 c #b1c740",
+"ok c #b1c749",
+"Dr c #b1c83c",
+"nW c #b1c842",
+"b# c #b1c844",
+"cA c #b1c941",
+"wn c #b1c959",
+"i1 c #b1ca30",
+"y# c #b1ca3b",
+"od c #b1ca55",
+"hQ c #b1ce3e",
+"oD c #b1d035",
+"El c #b2c84c",
+"BE c #b2c945",
+"wf c #b2c947",
+"AK c #b2cb32",
+"ES c #b2cb3b",
+"iz c #b2cb56",
+"j9 c #b2cd3e",
+"DV c #b2cd4a",
+"Dq c #b2ce22",
+"cW c #b2ce45",
+"f7 c #b2cf25",
+"aU c #b2cf3f",
+"mb c #b2cf43",
+"lU c #b2d11e",
+"nQ c #b2d138",
+"ej c #b2d231",
+"v0 c #b2d33a",
+"uI c #b3c84f",
+"fr c #b3c94b",
+"Fd c #b3ca44",
+"qN c #b3ca46",
+"lq c #b3ca48",
+"gK c #b3cb41",
+"wU c #b3d044",
+"Fq c #b3d21f",
+"CV c #b4c751",
+"zC c #b4c946",
+"Fx c #b4c950",
+"zw c #b4cc5a",
+"nw c #b4cd33",
+"#Y c #b4cf4e",
+"jx c #b4d02e",
+"l7 c #b4d143",
+"sQ c #b5c469",
+"g2 c #b5ca47",
+"qw c #b5ca4b",
+"wa c #b5ca51",
+"jG c #b5cb4c",
+"BD c #b5cb4d",
+"Cn c #b5ce32",
+"bP c #b5d131",
+"zi c #b5d149",
+"tR c #b5d244",
+"w0 c #b6cb48",
+"qn c #b6cb52",
+"ET c #b6cc50",
+"wJ c #b6cf3f",
+"xS c #b6d048",
+"lM c #b6d24a",
+"An c #b7cc49",
+"kK c #b7cd4f",
+"do c #b7d448",
+"zm c #b7d63d",
+"wC c #b8c575",
+"wx c #b8c76c",
+"uX c #b8d159",
+"mJ c #b8d350",
+"q. c #b9cc56",
+"g1 c #b9cd52",
+"z5 c #b9d453",
+"AZ c #bacf58",
+"DN c #bad14d",
+"Eu c #bad455",
+"hn c #bcd351",
+"yi c #bcd44c",
+"A0 c #bdca7a",
+"A8 c #bdd445",
+"bQ c #c1d750",
+"E2 c #c1d951",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#.#.a.a.a.a.a.a.b.a.a.#.a.a.b.b.b.b.a.#.#Qt.c.d.e.d.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.f.#.#.#.#.#.#.a.a.#.f.#.#.a.a.a.a.#.#.fQt.c.d.e.d.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.e.g.e.e.e.e.d.d.c.cQtQt.f.f.#.fQtQtQtQtQtQtQtQtQtQtQt.c.d.d.d.d.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.e.g.e.e.e.e.d.d.d.d.c.c.c.cQtQtQt.cQt.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.f.f.fQtQtQtQt.c.c.d.d.d.d.d.cQtQt.fQt.f.f.f.f.#.#.a.a.b.b.h.b.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.a.a.a.#.#.f.fQt.c.c.d.d.e.e.dQtQtQtQtQtQtQtQt.f.f.#.#.a.b.b.a.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.a.#.#.#.#.f.fQt.c.c.c.c.d.d.d.c.c.d.d.e.g.g.g.g.g.e.d.d.c.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.f.f.f.f.f.f.f.fQtQtQtQt.c.c.d.e.e.g.g.g.e.e.e.d.d.cQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.i.j.k.l.m.n.o.p.q.a.r.s.t.u.u.v.b.w.x.x.y.#.z.A.B.A.CQt.i.A.n.DQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.i.E.C.C.n.f.m.F.F.G.a.H.I.I.H.v.J.a.K.r.K.v.H.L.M.s.M.N.N.a.G.#.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.O.B.A.P.l.Q.B.R.S.T.c.c.U.V.W.X.iQt.n.F.Y.M.Z.0.1.2.3.4.5.6.7.G.fQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.R.EQt.k.8.k.i.c.c.c.9.U.T.9.c#..P##.x.Z#a.3#b#c#c#d#e#f.##g#hQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c#i#j#k#l#m#n#o#p.m.f.a.w.w.v.b.b#q.h.0#r#s#t#u#v#w#x#y#z#A#B#C#D.dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c#E#F#G#H.R###I#J#t#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#N#Z#0#1#2#3#4#5.dQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.d#6#7#8.R.L#9a.#N#Wa#aaabacadaeafagahaiajakalamanaoapaqarasat.GauQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.cav.cavQt.f.f.f.#.f.fQt.c.c.d.dawaxayazaAaBaCaDaEaFaGaHaIaHaJaKaLaMaMaLaLaKaJaNaNaOaPaQaRaSaTaUaVaW.h.#Qt.d.c.c.f.#.#.#.#.f.fQt.f.f.f.f.fQt.fQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.caXaYaXaZa0a1a2a2.Z.va3a4a5a6a7a8a9b.b#babbbcbdaKbebfbfbfbfbgbgbhbibibjbkbkaMaMaMaLaKblaJaHbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbE.#.#.#.#.#.f.#.f.f.fQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtavbFbGaYaZbHbIa2a2.JbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbYbZb0b1b1b1b1b2b3b3b4b4b3b5b6b7b8b9c.c#aMcacbcccdcecfcgchcicjckclcmcncocpcqcr.a.#.a.#.#.#.#.f.f.fQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtavcsctctaZa0cua1cu.RcvcwcxcyczcAcBcCcDcEblaMc#cFcGb8bZb0cHcIc#c#c#cJcJcJcJcKb4b5cLcMcNcNcOcPcQcRaLaHcScTcUcVcWcX#bcY.y.8.U.m.N.0cZ.a.f.#.f.f.f.fQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQta0avc0c0c0a0a0avcs#kc1c2c3c4c5c6c7c8aMaMc9d.d#b1dab1b1cHdbc#c#c#c#cJcJcJcJcJdcb3b5dddedfcNdgdhdidjdkaLaJaOdldmdndodp.Y.ddqdr.Pdsdt.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQta0a0bHcucua0cs.gdudvdwdxdydzdAdBaJbWdCdDdEcHcQcQcQcIcIdbcIc#c#c#c#bjbibjaMaMaMaMbjdadFdGdHdIdJdJdIdKdLdMblaIdNdOdPdQdR.i.gdSdT#IdU.f.c.c.c.c.c.c.c.c.cQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtcubIa1cuavaXdVdudWdXdYdZd0d1aJaLcNd2dfb7d3d4d5c9cIdbcHcHdbdbc#dbd6dId7bibjbkbkbkd8d9e.e#b7b7eaebececedeeaMaIefegeheiej.p.Vek.B#h.c.d.d.d.d.d.c.c.c.cQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fa1elelcu.dduemeneodYepeqaJaLerd.dhdIb7escQetcIcQb1b0bZb8b8bZbZb8euecevewd6d7exbieyezeAdadaeBeCeDeEdFb7eeeFaMaKaHeGeHeIeJeKeLeMeN.g.e.e.e.d.d.d.d.c.cQtQtQtQt.f.fQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.felela1a0.e.eeOePeQeReSblcRd4cRcQd3cPcPcPeTdaesdFb8b8b8b8bZb0b0b0d7d7d7d7exexexexeUeVdadad9djeWcRaKeXeYesdFeseZaKaIe0e1e2e3e4e5e6du.e.d.d.d.d.d.d.c.cQtQtQtQt.f.fQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fe7.xe8dSe9f.f#fafbfcaKcKb3b3fdfeffd8esb8fgdfdKfhcNcLfibWcJcRcRaMfjaJblaKaLaKfkflfmdFdFdFdFdFexfnbgaMcRcRdaeUd6escRfofpfqfrfsftfudqfvcvfwcv#Afxcv.c.cQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.Jfy.dfzdwfAfBfCfDblcQfEfFb1fGfHfIeTdFdIdKfJfKdCficJaLbefLfMfNfOfPfQaifRfSfOaJblaKaLfTfUfVdFdJfWeWfXfYfZf0f1f2ewdJfZf3f4f5f6f7f8f9.R.i.EQtg..ig#QtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fgagbgcgdgegfepggaLd8ghgigjfHfHfHdagkglgmcNdJdacRaKgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDaHblaLgEgFgGcNf2gHdad8eBgHdHdIgHaMaJgIgJgKgLgM.qgN.z.zgNgO.f.fQtQtQt.c.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.fgPgQgRgSgTgUeqblb4ddgVb3fHfHfHgjfFb6b5d3cQaMaKgWgXgYgZg0g1g2g3g4g5g6g7g8g9h.#Oh#hahbhchdheaKhfhgcNhhdGdFdahihjdFdJhkf0aLaNhlhmhnho.h.Z.b.b.b.Y#g.#.fQtQt.c.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQthphqhrhshthuaJcRb5hvb3fHhwhwhxhyb7cPhzaLaJhAhBhChDhEhFhGhHhIhJhKhL.Q.m.ShM#.hNhOhPhQhRhShThUhVaKd8hWhXhYd3d8d8b3eshZh0h1h2aIh3h4h5h6h7h8#e.0.Z.I.#.fQtQt.c.d.d.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.ch9i.i#iaibicaLd.b2b0gjfHhwidiehyifbWaLigihiiijikiliminioipiqirisit#jiuiuivdViwix.9.7iydQiziAiBiCaKcRcQd#iDdad8d#d8h0d8cQiEaLiFiGiHiI#uiJ#riKiLiM.a.#.f.c.c.d.d.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.diNiOiPiQiRblercRiSiTfHfHiUiVieiWiXcRf3iYiZi0i1i2i3i4i3i5i6i7ioi8e8i9j.j#jajba0jca0jdjejfjgjhjijjjkjlaLcRjmesdajndbcIcQcQjod4cRjpjqjrjsjtjujvh8.1.b.#.f.c.c.d.e.d.cQtQtQt",
+"QtQt.c.cQtQt.f.fQtQtQtQtQt.c.d.ejwjxjyjzbljAjBcRjCcKfHgjjDjDiUiSaMgnjEjFjGjHjIjJjKjLjMjNjOjPjQjR.UjSjTjUcqjVjWjXjYa0jbcichcqjZj0j1j2j3aKj4d7dFiDj5cRj6fIdahZb5aKj7j8j9k.k##qkakb.#.fQtQtQt.c.d.d.cQtQtQt",
+"Qt.c.d.d.c.f.#.#.mg.kc.T.Tkdkeh9kfbQkgaJkhb6kic#aMcRcQkjb5bXkkaMklkmknkoazkpiOcweOeneOeOkqiOkr.#ksktkukvkwjbkxkykzkAbxa2bDkwkBkCkDkEkFkGaLkHkIb7hibgbgbgcHb0b8c#aIkJkKkLkMenkNkOeOeO.cQt.a.aa0avQtQtQtQt",
+"Qt.c.d.d.c.f.a.a.f.jfwe8#HkPkQkRkSbRkTaLkUcNdaetcRkVb4esesd8cQkWkXkYkZk0.7#hk1#..fQt.c.c.cQt.a.fk2k3k4jdcjk5k6clk7k8k9l.l#cqlalblcldlelflgaLfVdFd9bhbgbgcHb0b8b1aMlhliljkMlklljNenen.c.f.b.bcuavQtQtQtQt",
+".fQt.d.d.c.f.#.a.lQte8.VlmlnlolplqlrlsaMltb7d8lucIfIcPdacRaLfolvlwlxlyhO.C.d.c.cQtQt.d.d.d.c.f.f#3.elzlAlBh6lClDlElFlGlHlI#vlJ.9lKlLlMlNlOlPaLlQd9d9hihib1b0bZb1cRlRlSi0lTi8lUlVeOkqQt.f.b.acua0QtQtQtQt",
+".fQt.d.d.c.f.#.a##.fe8.Tlmfw.ClWbalXblc9d#dacQlud3esbXjoaLlYlZl0l1l2.s.CdS#G#3l3QtQt.d.e.e.eQtQt#3l4l5.Bl6l7l8l9m.aNdNm#mambmcmdmemfmgmhmimjaIfMbheUeUeUb1b1b0b1cQaKbTmkmlmmmnmokqmp.f.#.a.acua0QtQtQtQt",
+".fQt.c.d.cQt.#.a.FgO.c.ccv.m#fmqmrbUaLhzcIlucRetbZdJcLd5aJmsmtmumvlB.V.e.gmw.T.n.fQt.d.e.g.g.c.d#Glo#odsmxmymzmAaLmBaJmCmDmEmFmGkymHmIiJmJmKmLaJbge#eaeab0b1b1b1esergnmMmNmOa9mPmpiO.a.a.#.#a1cuQtQtQtQt",
+".fQt.c.d.cQt.#.amQ.Bl3ek.C.amRmSmTbVc9c.cRmUc9dbdImVb7aMj3mWmXmYmZm0#Bm1#8m2.n.o.#.f.d.gdu.g.d.edVm3m4aUm5m6m7aKm8dKm9bln.n#nanbncndnehMnfngnhaNbed9eaeab0cHcHb1dFniaKnjnknlnmnnmpiO.b.a.f.fa1a1.fQtQtQt",
+".fQt.c.c.d.c.f.ano#2fwdrk1#enpnqnrbWnsjmcRc9c#b4cNntdaaKnunvnwnxnyne#BixnznAnBkb.b.#.d.gdudu.d.enCnDnEnFnGnHaKnInJdKnKnLaInMnNnOjhnPkd#Bk1nQnRnSnTbge#eab0cHcHcHdFkiaMnUnVnWnXnYkqiO.b.aQtQta1el.fQtQtQt",
+".f.fQt.c.d.c.f.#.J.o.9#mhNmRnZe1aKbXn0dacQcRcQesfhn1cRlsn2n3n4n5n6mwdq#E.V.m.HhO.a.f.edVdVdu.dQtn7n8n9o.o#aKoadFkIdIdJobblaImCocodoe.Yneiuofogohoibfhie#b1cHdbcHesdacQblojokolomeOmp.b.aQt.celel.fQtQtQt",
+".#.f.fQt.d.dQt.#.H.Ym0.d##on#WoobebYb8b0dbdbb1b8cNb2aLgXhDopoqoros.e.e.eQt.f.b.a.l#motouovdul3.ZowoxoyozaLhje#eUd8fZd8cRcRoAaKlPoBoCoDoEmw.BoFoGf4bljAdad3b4cQdcb4d8d#caoHoIoloJoKoLno##.c.ccqoM.fQtQtQt",
+".#.#.fQt.d.dQt.#.b.GoN.d.aoOa#oPbebYbZb1dbcHb8gmdIcQoQoRoSoToUoVos.e.e.e.c.f.#.f.UmwoWoXkQm0nooYoZo0o1aKo2o3f2o4o5bfero6o7dacRblo8o9p.p##j.cpapbpcpdpecRb4b3b4dbcQcQcPaLpfpgphoJpipj####.c.ccqoM.fQtQtQt",
+".#.#.#Qt.e.eQt.#hO.b.d.d.bpkaaaGbebZb1cHcHb0gmdebYaMplpmhFpnpojJos.g.g.g.e.d.c.d#Gpppqprps.sptpupvpwaKpxpydIdJf1cRoApzfZesdFpAc8lPpBpCpD.RdrpEpFpGdBpHaMd8b1d8etcRcQhZaMo#pIpJpKpioK.m.m.c.ccqcq.fQtQtQt",
+".#.#.#Qt.e.g.c.#m4.H.ddr.vpLabaNbfb1cHdbcHb0dedecGbfbTpMhGpNi5pOaw.g.g.g.e.e.d.epPpQot#lpRpSpTpUpVaMcRpWdFdJb7escRfYo5cRdaeAhiblpXpYpZp0.mekgbp1p2p3lYaLd8b0d8cKcRcQdhcRp4p5p6mooKoK.R.m.cQtjUjU.fQtQtQt",
+".#.#.a.f.e.g.c.#p7.I#m#m.Zp8acaIbfcHcIcIdbb0dedeb2pep9q.q#ipi6kNeO.d.e.e.e.e.e.e.gm3.WpRqaqbqcqdaLdad8d8eshZcGesdaqedadaqfc#aLqgqhqiqjqk#2.dqlqmqnqoaIaKd8b0d8cQcQdaqpcQaIqqqrqspjoK.R.mQtQtjTjTQtQtQtQt",
+".#.#.a.f.e.g.c.#.0.InzoN.ZqtadaHbfdbcIc#dbb0dededaquqvqwqxiqqyqzmpQt.c.d.d.d.d.d.c#hm4qAqBqCqDaJjAeTd8d8qEd3dab1bWdadFiDc#aKqFqGqHqIqJ#dqKoNqLqMqNqOqPaLb3b5cQcQd8b5qQdaaJqRqSqTqUoK.R.mQtQtj.j.QtQtQtQt",
+".#.#.a.f.g.g.c.#.0.HqV#jiLqWaeaIbgcHc#c#c#b1deded8qXqYqZq0q1ipkfbO.a.f.f.f.f.f.#.qq2q3q4q5qDaJq6aLaMcRc.q7esd8dbcQd8q8b1aMq9r.oZr#je.s.yra#jrbrcrdrerfaLeTdFdbcQb3dJrgbZblrhrijHrjpj.R.m.fQtj.j.QtQtQtQt",
+".f.f.#.f.c.d.c.f.Z.wrk.diLrlafblbgcHc#c#cIb1debYcRrmrnrorpomkMrq.#.#.f.fQtQtQt.arrrsrtrurvaJq6rwoAcRdcdaesesb3d8b1dah0aMgnrxryrzcYrAcirB.c#k#jrCrDrErFaLeBdFlucRbWdFcMb5aKrGrHrIrjpj##noQt.crArAQtQtQtQt",
+".d.c.f.a.a.#.c.c.z.l#H.CiLrJahaLbkb3cKcKbid6evd7rKrLrMrNrOrP.C.Eksk2l3l3#GdurQrRrSrTrUrVaLpxpxoAb4b5b6b6b5b5b5b6dIrWaMnrrXrYrZr0bxr1r2r3r4r5mfr6r7r8r9aLs.esjAaMcRcJb3cQaKs#sasbiOkqiLiL.c.ecsavQtQtQtQt",
+".e.d.f.aiL.b.c.dQtQt.c.AdsscahaMbjb3dcdcexd6ewbiaJsdseg6l3ivi9r4bFsfdreksgm3nDn8shsisjaMdad3ercRb2skskcLb5b2b5cLsldFsmsnsospsqsrcjssstsusvswsxckiKsyiCaLeFexaKaLaMcJcKcQaMszsAsBmpkqiKiK.cducsavQtQtQtQt",
+".d.cQt.#.h.b.c.e.k.m.E.zrrsCsDaMbkb4dcdcbjexdIbiaKfRgwg7.9kej.jUsEsFsGsHsI#ysJsKsLsMaKaMcHd8cJetb2b6b5b2b4dcb3b5sNdFsOsPsQg2sRsScssTbHsUsVsWsXsYl2pusZaLeFs0cRbfcJcRcQcKaMs1s2s3mpeOiLiL.c.gava0QtQtQtQt",
+".c.cQt.#.h.a.d.e.8.n.Pnol2s4s5aLbkb4dcdcbkbid6biaLs6gxg8.V#7jabxs7jTg..liKs8s9t.ozfTt#tad8d8d#bWb2b2b2b4cJcJcJb4dJfEcRlRtbtctdtejStftgthsxchtitjk0tktlaLexfWd8bVc#cJd8dbaMs#s2tmiOeO.h.h.d.gava0QtQtQtQt",
+"QtQt.f.#.b.a.d.e.8.m.P.MtntktoaLaMb4b4dcaMbkd7biaLnHgytp#ntqjaoMbDkwtrtstttutvtwaLtxtydFb2tzltesb2b2b4cKbgbgbgcJb2gkcHaLtAtBtCtDcjtEtFtGtHsx.wtItJtKfSaLextLdafZdcdbb0b4aLtMtNtOiOeO.b.a.d.ea0cuQtQtQtQt",
+"QtQt.f.#.b.a.d.e.i.o.z#qjutPtQaKaMb3b3b4aMaMexbiaKfOgzh.#AdVjdjejbk5h6tRtStTbmaKeBtUdIdJdEiDesesb5b2b3cKbgbfbfbgd8dFn0d5bltVtWtXtYtZlKt0jca0.n.1t1t2t3aLd7dGeso2d8eTcGcQaKt4t5t6iOeO.#.#.d.da0cuQtQtQtQt",
+".f.f.f.#.b.a.d.enA.p.wpRt7t8t9blaMb2b5b2aMaMbibifkaJgA#O#hiwa0jWu.u#mFuaubmCaKfUucuddHeagkdad8b1b6cLb5b4cJbgbfbgcQb2b7dEh1aKueufuguhuikAm2nzujukulumaIfXb6dgdab4dacPfFcQaJunuoupbOeOQtQt.d.ccua1.fQtQtQt",
+".f.f.f.#.b.a.d.e#hnB#fuqur#YusaJaMb5cLb6bkaMbiexflblgBh#.r#6jcjXksutpuuuuvaKuwfWf1e.pyeUeseTjod8cLskb6b3cKcJbgbguxb3bYbYdac9uyuzuAuBuCuD.m.erPkpuEuFbleycLdgd8cQdadEfEcRuGuHuIrIbOen.c.c.cQta1a1.fQtQtQt",
+".f.fQt.f.b.a.d.e.f.G.JiL#x#OuJaHaLdJcMdddad8eyeUuKaKuLuMuNfwjcsFmfuOuPuQaLuRuSdJd8uTaMcReTkidccHb7uUhvdFhZd8cQd5dbb1b8bYb8b0cIfTuVuWuXj0uYuZu0u1riu2bfn0dIq8fHfed3b0fiaMaHu3u4u5bOen.d.dQt.fa1a1.fQtQtQt",
+".fQt.cQt.b.a.c.d.m.a.v.Z.5u6u7u8aKb8cNdedFd9u9eVdFaLv.v#vahOcuj.jWvbvcaNvddKdKdIvepxoAj4d#dad8d8vfd8dakjdEesesdab1b0bZb8b8bZb1bfuzvgvhvivjePvkvlvmvnaMcOdIcGfHvocFesd#aLvpvqvrvsiOeO.e.d.f.#ela1.fQtQtQt",
+"QtQt.cQt.b.bQt.c.n#2noe7lBvtvuvvblfEdIcNtLvwe.esdFfjaHvxvyvzlcjbcqvAvBdNblvCnKdJd8bVvDfXb3dFhWkiaMvEvFcRvGfFdJcLb8bZb0b1b1cHdbbgaKaJvHvIvJc4vKvLvMvNfHvOvPvQvofHiDdauxblvRvSvTvUiOeO.e.d.#.bela1.fQtQtQt",
+"Qt.c.dQt.b.bQt.c.AgN.z.D.W#evVvWaJqehWdIdHeadFesdFvXaJhdvYvZjfjXu#v0v1m#cSblv2obcRo6v3cRb1kjb1aMv4v5v6v7aLc9fFv8b8bZcHdbdbcIc#bgexv9aIgDw.w#wawbwcaKfHgib3wdfefHd3b4jBaJwewfwgwhiOkq.d.c.a.helcuQtQtQtQt",
+".c.d.d.c.b.b.fQt.zgN.zl3wigOlxwjaIc#cFq8dIdJdFeUeswkaLwlwmwnjgsVwowppLwqwrwsaIvNwteyesdaqfc#aMwuwvwwwxwytAaKwzdFbZb0dbc#c#c#c#bhgHwAaJaHhAwBwCwDwuaMwEwFiVwGiUgjeswHeraHwIwJwKwLiOkq.d.c.hiLelcuQtQtQtQt",
+".d.e.e.c.b.h.#.f###2.n#Hpp#BwMwNwOaMcKdEdJdJucwPeseswQaKwRwSwTa1jWelqkwUmEwVsDaIpxd9dFeCc#aKwWwXwYwZw0w1w2w3aLetb1b1cIc#c#c#cIhipAdFw4pHaLw5w6w7bfcRiTfdw8w9x.b3b3uxaLx#xaxbxcllmpmp.dQtiLiKelcuQtQtQtQt",
+".e.e.e.c.b.h.#.f.o.o.mxdxepp#yxfxgcaaMqeb7dHpyeBxhdFuRhfo#xixjxksFxlxmxnxoxpxqxraKcRgHxsaLxtxuxvhHxwxxxyxzxAxBxCc#dbcIc#dbcHb1d9dauweVdFhhesaMpxxDxEfHxFxGiexHxIvQkVxJxKxLxMxNxOmpmp.dQtiLiKela0QtQtQtQt",
+".d.d.e.c.a.b.#.f.y.#.fxPxQpQxRxSxTueaLffdJebf1cRveeFxUxVaKrLxWxXxYxZe8.Ox0x1x2x3kGblc8blhAx4x5x6x7x8x9y.y#yaybaHfTbfbgbhb1d9b1hio2d8ycdIecyddbcRxHyefHcKjCfHyfgVygaMpVyhyiyjykpjkqeO.e.d.biLelcuQtQtQtQt",
+".c.c.cQt.f.f.fQt.f.fQt.c.e.d.fylymrGblyncNyob3cRcRfXdHdIypblyqyrysjejSytyuchyvywyxyyp4yzyAyBwM.obxjVavr4yCyDyEyFp4aJaMdFe#escRcRbkdcb4b3b5b2dccKd8d8cQcRcQcQgjess0aKyGyHyI.veK.wQt.eovov.c.#.b.b.fQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtePyJyKlscRyLyMescRcRhzb8v8fEcRlRyNyOyPyQyRySyTu#yvyUyVyWyXyYyZsxy0r1y1y2y3y3y4y5y6y7gDbly8oboby9aMcKdcdcdcdcdcdcdckhfIvGdbdcdcdccRz.lPz#zaiLk1kb.v.f.ddVov.eQt.a.b.fQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtzbzczdzeaKygfJcLescQd#q8gmzfd8aMhAzgzhzi#szjzkzl.zzmznzozpzqk0xmjYsuzrbHzsztjWzuzvzwqCzxaIblaKcRcRdcdcdcdcdcdcdcdccQcQdcvGfIvGvGpxblzyzzzAm3kQg..a.a.#.c.d.cQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbOzBzCzDv4cJv8v8dJesd3b8dJdggkcQaKp4zEzFzGur.Sdu#8zH#1zIzJ#u.3.FjXsxzKzLzMtGzNzOzPzQzRkmdNaNzSbjdFb4dcdcdcdcdcdcdccQcQcQdbcQcQcQaKp4zTzU.fzVzWm0##.b.aQt.c.c.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtkqzXzYzZz0aKd8bYdIb8cGb0dFb7q8fEz1aLz2z3z4z5nfz6nez7l4l3.A.nz8kcjSksz9A.kxA#ks#i.RAaAbAcAdAeaKvwAfb2dcdcdcdcdcdcdcfIdcdbkhcQcQcQblAgAhAiAjAkpq#Ano.a.#.c.e.d.cQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQteOAlAmAnAow3aLcQb8bXgkb0daesdFb7dFApaLwlAqArAsAtAu.j#mxPxddSl4#H#kAvAwAxAyAzaXne.gf9AAABACADAEd8AFb3dcdcdcdcdcdcdcdccQdcc.jodcwHbdAGAH.xivzVdV.k.a.a.f.e.g.e.dQt.fQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtenAIAJAKALAMANaLvGb5hWeTcHdbdcd8das0wkaLaJAOAPAQARASATkpc2AUa8AVl4AWkxAXbtcv#mjwrPe9gbAYAZA0A1aLwHdcdcdcdcdcdcdcdccQcQcQwHc.khA2A3A4#L#x.fdrdr.Dno.#Qt.e.g.g.dQt.fQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQteOA5A6A7A8A9B.aIjAd8cGcPb4luwzwzwHeswArwB#blaHBaBbw#xfBcazBdBekaBf#pBgBhje.H.vlpkpu1BiBjBkBlBmBncQdcdcdcdcdcdcdcdcjocQcQkhdccQfIBoBppursBq.H.B.A.A.#.f.c.d.e.e.cQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtkqBrBsBtBuBvBwBxaJcResb7b5cQcRcRBybgbhhihibhbffToiBzBABBBCBDBEBFBGaW.ZBHBIe3sJBJBKBLBMBNBOBPkVifBQdakhcQcQfIdccQjodbdbdbdbdbdbdbbeBRmDBSBT#v.Fcve8.#.b.b.aQt.edu.g.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtmpBUBVqyBWBXBYBZB0aKc#hZfFnsd.kVcRbfbghie#dHeahibfblB1B2BaB3B4B5B6B7B8B9C.C#CaCbCcgIfpnTaLcResCdCedafIcQcQdccQcQcQdbdbdbdbdbdbdbbfaJefCfCgChl6.SCi.#.hiL.h.f.edudu.dQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtiOCjCki6ClCmCnCoCpw3CqcJdEdEdad8cKbfbghie#dHebead9pxpezSuGuzCrCsCtCus6CvB2CwlgaJblaLcRfHCxxHCyb3Cxd8vGdccQdbdccQcQdbdbdbdbdbdbdbbgCzblrvvxv1CA.b.U.f.a.h.b.f.d.g.g.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtbOCBCCCDA6q1CECFCGtWCHaKaMnidadacFbgbghieUeadHdHe#dacRaMaMaKaLaLaMaKaMaMaMaMaMfZdjhWhvCICJCKwdiWfecQdbvGdbkhc.wHkhdbdbdbdbdbdbdbbhCLCMaJqDCNvVCO.CQt.f.#.#Qt.c.d.dQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtiOCPCQCRCSA6CTBuCUCVCWCXlYpxCYnsb5b0b1b1b1b1b1b1b1cFbWb4b4b1eTeTeUCZC0kIC1dFdFdFdFb7b7vPb3iView8C2cQdcfIcQcQjoc.dcdbdbdbdbdbdbdbbhcRC3uGaHC4C5C6C7.c.d.c.c.c.c.f.f.fQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtmpC8C9D.D#DaA6DbDcDdDeDfDgaIaLfIcGb8bZb0cHdbcIdbcHeTeThZfFgkbZesdFdJdIdIdJdJb7dFesb1jmDhDiDjieiefHfHdcvGcQcQdckhcQdbdbdbdbdbdbdbbhaLaLpdaIuVDkDl.GQt.cQtQt.c.c.#.#.fQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtkqjOi7DmpnDci3DnDoDpDqDrDsDtDuc9dEbYbYbZcHcIc#cIdbbWb1esesd8dcwzDvveDweBd9bio2j6BycKcKcKcIDxhxDyb3gjdcvGcQcQwHA2fIdbdbdbdbdbdbdbbgaMaKaKkGDzDADBlB.f.#.b.a.f.cQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtkqDCDDDEDFDGDHDIDJDKDLDMDNDODPjpblcIb0b1cHdbcIdbdbd8d8eTbWdccQcJc9aMaMcRaMbhbgcRcRDQcIcKcKfHDRDSifdabkpxaKblbdA3BobebfbgbhbhbhbgbfaKrFDTDUv#DVDW.A.f.#.b.aQt.c.d.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQteOeOeOeOeOenososawrRDXDYDZD0D1D2aIaMcRcQdaesesesb4cQcQcQcQcQb3vGcRaMc#c9cIcQd8d8h0bWb4d8b3b1yefis0z.blp4AgAGA4BpD3aJblD4cRaKaMaKt3p4egD5D6D7.Mg#QtQtQt.c.d.e.e.e.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.d.d.e.e.e.d.cgO.qiMD8tnD9pSE.E#EaEbaKaMd.qeeTd8cQcQcQdab5dJdFc#cJcJcJdbd3dEb9dFesb1jmvGetc#oAaKlPzyzTAhAHpkpuEcgDblC3EdaLaKEep4EfEgEhEicY.PcvQtQt.c.d.d.e.e.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.c.c.d.d.d.c.ck1#g#fdsxn#vEjEkElEmEnEoEpaKaMcQd#cPhZdhqpqQrgcMb3cQcQd8b2cGfFn0cPd#uxBybVoAEqpVyGz#zzzUAi.x#xrsErCfaGaJuGEsaKEtegEgEuu6.4.B.R.C.f.f.fQtQt.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.c.c.cQt.f.z.vEv#dEwExEyEzEAEBECEDEEq9EFcaaLaMcRcQdabZb5cQcQcQcQd8cQcQcRBnaLblaJoiEGEHEIyHzazA.fAjiv.fEJvZCgEKuQaHaIELEMENEhu6iJ.aEOfwQt.#.#.#.f.fQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.f.fQtQtQtQtQtqK#2.G.K.uBHrrgeEPEQERESETEUEVEWoHpftwp4aIaJblaKaLaMaMaMaLaKblaHaHEXEYEZE0E1xLE2yIiLm3zVAkE3#j.q#vE4E5E6E7uVDzE8E9F..2.aQtoN.9.8.#.a.#.f.fQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.#.#.f.fQtQtQtk1gO.#lJcY.7.6.GF#jJkMFaFbFcFdjGoIpgvmp5qqqRFerGFfszx#s#tMt4unuHu3FgFhlqwJxbxMFirck1kQzWpqdV#j.k.ztsa.FjFkFlDAE9aV.6.yFm.Tm0Qt.P.#.#.#.fQt.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.#.#.#.#.f.f.foE.QqK#2FngNno#2FoFpFqFrjPFsFtFuolphpJp6qrBjrirHsasAFvFwtNBCuoFxqSFyFzFAvUqzxNnDeKkbg.m0#A.k.D.Alm.C.sD8FBFCFD#w.M#g.m.j.RQt.flB.#.#Qt.c.c.d.d.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.a.#.#.#.#.f.f.m.D.n#h.DFE.m.BFFFGlVFHFIFpnYisoJoJpKmoqsqTjHrIFJFKFLFMtmFNFJFOFPvsFQwhFRFSFTeO.w.v.a##no.ano.Ae8FU.T.CFV.wlBlBqK.l.P.f.Q.PlBgN.#.fQt.c.c.d.d.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.#.#.#.#.#.#.#.#.f.fQtQtQt.c.c.ceneneOkqmpmpkqeOoKpipioKpjqUrjrjiOmpmpiOiOiObObObOiOiOiOiOmpmpkqQt.f.a.b.a.a.#.#.#.#.fQt.cQt.f.#.#.#.a.a.a.a.#.#.fQtQtQtQt.c.c.cQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.f.#.#.#.#.#.#.f.fQtQt.c.d.d.denenkqmpiOiOiOmpoLpjoKoKoKoKpjpjkqkqeOeOeOeOeOeneOeOeOkqmpmpmpeO.e.d.#.a.#.fQt.f.b.h.a.f.d.c.#.a.#.#.a.b.b.a.#.fQtQt.f.f.f.fQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.f.f.#.#.#.#.#.fQtQt.c.d.d.d.d.cQt.f.a.b.b.bno##.m.R.R.R.R##iLiKiL.h.b.#Qt.c.d.e.e.e.d.d.d.govdV.cQt.c.e.e.c.biL.h.#.cQt.b.h.#.#.a.b.b.a.#.fQt.f.#.#.a.a.#.fQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.c.cQt.f.#.#.#.#.#.fQt.c.d.e.dQt.f.#.#.a.a.a.ano##.m.m.m.m.mnoiLiKiL.h.a.#Qt.c.d.d.d.c.cQtQt.ddVov.d.c.e.g.g.d.a.h.b.#.cQt.a.b.#.f.a.b.b.a.#.fQt.f.a.a.a.a.fQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.d.e.d.cQt.f.#.#.#.#.fQt.c.d.e.c.#.b.b.a.#.fQt.c.c.c.c.cQtQt.fQt.c.d.c.d.d.d.d.cQt.f.#.a.hiLiL.b.c.e.c.c.d.e.e.dQt.f.fQt.c.c.f.fQtQt.#.a.a.#.fQt.f.f.a.a.a.f.c.d.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.e.g.e.d.cQt.#.#.#.#.fQtQt.c.d.c.a.b.a.a.#.fQt.c.c.c.cQtQtQtQt.c.edu.g.g.e.d.cQt.f.#.b.hiLiKiKiL.#QtQt.c.c.c.d.d.d.e.d.c.c.cQt.c.cQt.#.a.a.#.fQt.f.#.a.a.f.cdudu.dQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.gdu.g.e.cQt.#.#.a.#.fQtQt.c.d.da0cucucua1a1a1elcqcqcqjUjTj.j.rAcscsavava0a0cua1a1elelelelelelel.b.aQt.cQtQt.f.c.gdV.g.d.f.fQt.c.cQt.#.a.a.#.fQt.f.#.a.#.cduFWFX.eQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.e.g.e.d.cQt.f.#.#.#.fQtQt.c.c.cavava0a0cua1eleloMoMcqjUjTj.j.rAavava0a0cucua1a1a1a1a1cucucua0cu.b.bQt.cQt.f.fQt.gdu.g.d.#.#Qt.c.cQt.#.#.#.#.fQt.f.f.#.f.dduFXFY.eQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.c.c.c.cQtQtQt.f.f.fQtQtQtQtQtQtQtQtQtQtQt.f.f.f.f.f.f.fQtQtQtQtQtQtQtQtQtQt.f.f.f.f.fQtQtQtQtQt.f.fQtQtQtQtQtQt.c.d.c.c.f.fQtQtQtQt.f.f.f.fQtQtQtQt.fQt.c.d.e.e.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
+
+
+/*
+ *  Constructs a toMessageUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toMessageUI::toMessageUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl ),
+      image0( (const char **) image0_data )
+{
+    if ( !name )
+	setName( "toMessageUI" );
+    toMessageUILayout = new QGridLayout( this, 1, 1, 11, 6, "toMessageUILayout"); 
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toMessageUILayout->addItem( Spacer1, 2, 2 );
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+    PushButton1->setDefault( TRUE );
+
+    toMessageUILayout->addWidget( PushButton1, 2, 3 );
+
+    Statusbar = new QCheckBox( this, "Statusbar" );
+
+    toMessageUILayout->addMultiCellWidget( Statusbar, 2, 2, 0, 1 );
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toMessageUILayout->addItem( Spacer2, 1, 0 );
+
+    Message = new toMarkedText( this, "Message" );
+    Message->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, Message->sizePolicy().hasHeightForWidth() ) );
+
+    toMessageUILayout->addMultiCellWidget( Message, 0, 1, 1, 3 );
+
+    Icon = new QLabel( this, "Icon" );
+    Icon->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, Icon->sizePolicy().hasHeightForWidth() ) );
+    Icon->setPixmap( image0 );
+    Icon->setScaledContents( TRUE );
+
+    toMessageUILayout->addWidget( Icon, 0, 0 );
+    languageChange();
+    resize( QSize(476, 277).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toMessageUI::~toMessageUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toMessageUI::languageChange()
+{
+    setCaption( tr( "Warning message" ) );
+    PushButton1->setText( tr( "&Ok" ) );
+    Statusbar->setText( tr( "Display alerts in statusbar only." ) );
+    QToolTip::add( Statusbar, tr( "Display alerts in messagebar instead of poping up a dialog with a warning." ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tomessageui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomessageui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomessageui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,53 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tomessageui.ui'
+**
+** Created: Tue Sep 18 08:21:29 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOMESSAGEUI_H
+#define TOMESSAGEUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toMarkedText;
+class QPushButton;
+class QCheckBox;
+class QLabel;
+
+class toMessageUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toMessageUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toMessageUI();
+
+    QPushButton* PushButton1;
+    QCheckBox* Statusbar;
+    toMarkedText* Message;
+    QLabel* Icon;
+
+protected:
+    QGridLayout* toMessageUILayout;
+    QSpacerItem* Spacer1;
+    QSpacerItem* Spacer2;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+    QPixmap image1;
+
+};
+
+#endif // TOMESSAGEUI_H

Added: kde-extras/tora/branches/upstream/current/src/tomessageui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomessageui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomessageui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,175 @@
+<!DOCTYPE UI><UI>
+<class>toMessageUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toMessageUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>476</width>
+            <height>277</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Warning message</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <spacer row="2"  column="2" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="2"  column="3" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="2"  column="0"  rowspan="1"  colspan="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Statusbar</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Display alerts in statusbar only.</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Display alerts in messagebar instead of poping up a dialog with a warning.</string>
+            </property>
+        </widget>
+        <spacer row="1"  column="0" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="0"  column="1"  rowspan="2"  colspan="3" >
+            <class>toMarkedText</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Message</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>7</hsizetype>
+                    <vsizetype>7</vsizetype>
+                </sizepolicy>
+            </property>
+        </widget>
+        <widget row="0"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Icon</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>pixmap</name>
+                <pixmap>image0</pixmap>
+            </property>
+            <property stdset="1">
+                <name>scaledContents</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toMarkedText</class>
+        <header location="local">tomarkedtext.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image1</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="55092">789cccbd47b7eb38b2ef397f9fa2d6e5ecae5e7cf266d0035266cb6da7ed77af1ed07b2f1aa9bf7c83883f704c56d5cd7c75bb5f95d6c9ca5f8a22114044202200f0fccffffcdbe7d3fddffef37ffe8fea625c02eb6f966f947ffb4fbb4e92ebfff57fff9fffcffff88fe160f0b7fecf68389bfe6df41fffc7fff80febf96fd6df9401ff5fcff64232ffde36244f7a762ac953fefd56f29cf35cf2a267f3072ff9f733c906e7836493f35eb2c59fd74ab6797b1f243bfcfb46b2cb7fef0a1e72799c5af2907f7f94cce5732cc963fefd483297cf3a8387d43f992999ffde0c25f3dfb79a64de5f662099dfcfe924cf386f24f3fe4a44ff0fd17e5b327f9e772799dfcfb8078fa87d662499cbebbb9249de6fc9bcbd9d2f99dab795ccc7b31a48e6e3b71a4ae6e315ed25f3f1b04f82a93f0dc1636a9ff32999daf32599f757a54ae6fde17e48e6fae23892b97e78a2bd63ea1f438cef849e97e892f9f7652b99b76f3d91cce53763f0947e6f08fd9c1137b664de5e43c83fc7f53bf0022cf475499c8be719c4f113d824de5cc01671fd0eb6895dbaff50d8ab174ae6f2ad3ac9a47f63c924df4832d73f732a99f777f324998fb73993ccfb5f7f96ccc7df3a49e6e3514592b9bd3aa664ae1fd6bd646eaf9a2b98f4ddf52573fdb58e60d89f6d49e6df9b13c97c3c1d45326fbf634826ffb2934cfee40086fdf88164de7ff65232d9eb9b646e1fa607867e9bbe641a8f816092cf14f2423f4d070c7d8b9f25f3e7bbaf60e89fb791ccfb3b15df43ffe22f30f42f13f240ffea1b18fab716bf877ee967b043dc92bf1f0ea16fdd9af3a8f740bc3dbe64f2f70bc9bcbfcd2fc9bcbfbd4432f90b4730f5cff55e3297bfc9c0187f732899f4772099c6e35b321f7f6b0fc6f8daa6649aff7692f9f3724d32d7f7cb4932ef6ffb4e32e9b302c6f86723c9dcdefc50326f9ff32e99f7975382a10fd75c32d7e795906742fdd3bd49e6df67a2bdd09ff20886beb89164fefcd54932ef9ffa2c98fca72bda0b7d6a9f25f3feb0c4f842bf9a07b0d02fd13fd0afe2090cffd6c660e85b24ae87be05a40f63e1df8277c9bc7debab643e5e575732efef6e2799cb1bfcf89ecbdbed2573fd5cfd781e1fcf952d98fa3b91cf277f74cd24f3fe0f3ec08807ba8d64ae9fc54232e98f27993faff9f13df787ae680ff4d57995cce57103c95c7fac3bc97c7c7c5f308d67b8028bf9f72299cbd3dc49e6f2981f92797fd69664de5f7e2499dbb33b92ccdb6f2dc1d067772099fca72e99b7ff6a49a6f946f437f4b9bd48267934b0d0ef77c9bc7dad68df9cee9fee25f3fe69447fcc31df88f1843eaf6e92f9f3da89649a0fee25f3f1cb85be41ff0331bed07f5f8ca7f0a7d43f13a1df9d2a99f777f32899dfffea80111faeae92b93cee41f090f7effa0c463ce77f48a6f9ee51321fafeb4930f547bb01433fecb164fe7cff5b321f2f2f92ccfb3f93d793bd745b30f421ae2593bfd94be6fd1b2692b93cde4e32b79fda164ced8ddec1d017e74332f9dbb564de5e772899e299140c7dcaa692b93db8df92797fe61d18fe3117e303fd59b792e979b164de3f8918ff05f5cf46f40ff4c715e301fdb9bd80e13f57f792797fad4a30fce906bf17f3f51ae331c4fc19a13d43f89780e693a9f0a7ed028cebfd4e321fafe6198c7cc00b2473f9bc77c95cdf4a4ff0908fc75a5c8f78bfb52553fcf02999ebbfdf08a6f10e5ec1c2bfdc49a6f97c2b99e6ff27c9642f3fbee7fab416f2407fc299643efe912f99ec692099cbd3b492b9bc9ab8ff94c63711fd0bfdb2a792c93e2ac9140f689229df5125f3feed5660e85ffd2a99fce34432efdfee00867e5e14c9941f8ec0d0bfcc904cf9572a99b7a76e25f3fe73c760a1afaa646ebf99e85fe86f2ec61bfaea0b79e11f0ba12f2eda8bfb4b7d267b98897c64dd81a1cfeb503297afbd934cf1d45e30fc93f81ef363b896ccefbf3a4a26793dc1149fae7d30f247ff2a99ea1d3fbee7fed68b05a31eb1924cf9c2083ca5f6076bc9542fd948e6fa900e2473fdbbbc09463d630246be1a6692f9f84481643edef95532b73f5df01cfd7993ccdb7be92453beb5924cf3c14432efbf5cfc7e01fffa2999e6bfb1646e5f9b022ce2cba364de3e37114cfec132c0d047f74d32f9e37b30f26b2f05431f5763c9bc7f42c1d04797e6cf99d0c71be41fc21fa52a18fe24207d9f0bfd5a1d04d3f8570fe009d573dca3642e7fbb054f697ca237c1246f3a944cf53a5b32c5a72f60f81bd796ccaf4f2bc994af2d2593be6f2453bea682e7345eed4e32d5ff14c9bcbf2f57c95cff7dd15ef8a35097ccdb93cd25537e2bfa6b3124fffd055ec2bfcc24537c548045fe518331decda7647ebd2eda6ba37fc478c01f6d44ffb8d43e1ded17e3af3960cc97f5022cf481e257a6dd149fd96bf08cc6ffe64aa6f92604c35eec4032b7efab2799e2375b30e94b2aae5f50ff58aa642e6fe148a67ce1065e927fb80d2553bd2494cc9fdf3e49a6fc45c863c07e1dc97cfcd3a3606a5f7d05633e887682497faf4bb08df8e2030cfb2bc9de17a2ff4bf49f886762f4cf10f666bd80618f3e8dff92f5177f5e914be6ed2f36e005c91b5f24533cf22598ecafeec04be467ae64f28757b041bfaf5f040f29fe68c0268d9726da63917e14a2bdd0c7f424998f5f44fdb314fd91bf83a18f8105467fdc4660e86783e789fee94a30e215e3118c78a3a0f9dc60fd45fa34072f491fc329d8a0f685a964aae7dfc0265d5f2f05537f568f60d86bb091ccfbe36248e6fad988dfbba85f8e24533e48f66f88fe892b30fa67634ba6f97508467f6d1cb0a827435ed11f35fa6388f9c9a7f8c814f157fd065e92fe5f6e6083e42f5cb0897ac417d8227dca3fc036f55fb305431fba77c1747f3b02bba4df3ad9ab29e42f669229df46fb647fe460d8d3aa0243fecd2758d4bbefc0a21eb403a33f2a8a772c263f6fff35055ba827d1f85aa2bf2f1a58f4f70a8cfb252a18febdf1c0f02701f58f2dda7f5d48a6fe9b8071fff21d2cfc83603caf51c1b87fb106433f4b1a1f87fd17eebf1b17ec903efbd43e46b0f71a0c79cb2d58c4e72d18cf2f1bb078be0dc6f3339abf5cd11f8906c6f5de1a8cf846e3f6c1cbe724df068cf6548964ae3f1b130c7f9096608c7f7603a3bde90e8ce7bb2f60b4d77e00c39f075c9f98f639e47fa34832d7e7f84c2c9eb7ba80216ffb08c6f3cc042cd64f1a30e42f9760d88fe382d19e1ced19c11e42aebf0cf17cd306435ecb04a33d610e16f20b16f1470a16ed3981457cf9443c82bdae2660e19f79bc341c8be7d70e18cfd71ec022df8ac178feaa05e379d72bf108e3df70ff369cc8fe1d8345bc9c81d1fe60452cfaeb7a03c3be74ba7e2adbd382f1fbcb3b18e3910dc1689f4df24e657fd4603cafb2c168bffb0cc6f32b1ebf0c67e2fe01e9d34cdcef1283e12faa6f30ee67f860e1ffe660a1efdc7f0ee7e2fed58c58b6e70cc6ef8d002cd6173db0a83f2dc0d0b78edbf77021e5bd078bf6aec1f87d41fabd14f2155bb0f8fd108cdfeb2330da93de83f1fc8ac6d310f2ac1a309ed772ff3734c5fdb48d64ee0fb72e58d4e75ec0f87d7202a33f0d713df4a5237bb7e4782a60b11ee681d15eed112cee1782a1cf158f4f86b6b8bf6581c5fa2af5a733823f762d30eed7d2efdd11f2efcd1d18d76bdc5e468311f2a3c007e379f5082cea75f760e8fbfa8d782cf49dfba3d150fcbebc030b7bdc83a17f099faf472371ffe64c2ceed73460e883cefb6b3416f7ab4fc463e10f2c30e46b8927e279b94b2cee6f6cc1d087ec092cec4930c6f342f24f85fc46442caef75660e8cf85fb93d18cfd9ec783f1162ceaa37cfe19cdc5fd3ceabfb990d79d80d13eeb152cd64fe9fa85f8de7c05a33df9188cf66cbec0d0c7f50d0c7df3b8ff1f2d85bcce002ce227078ceb1d0f2cfca54e3c41fb6f74bd21ef5780f17c5d058bf53beeaf46e618ebd77a2299c77f5bba9f25c6b7f4c1c2bfbd80d19eeb07f104fda1933cb678de2603e37eba01c6ef6f57b0a8ff71ff3d72c6a8b7e8d47faee88fb507c6effd188cdf3bdc1ec67d38c739e2e3c5a63393e21723269e60fde4f22c99d677b93e307577285eb7b8fd8f27ecfe9cf50e0c7d8a79ff8ca7ec7bfefb6b412cc627db81c57e823730ead9eb1158d43fb8bce399b8fe7a0716eb5d7330c663c3fb733c67eda1fa484d2cc6c39a83a11fed193ca57a651282b13e16f3f96ebc9860bdc8d880c5fe810c2cf21bae8fe3e544d4cb23c93c5ed30a30ea071b170cff92d0f81813d443d71730eaed9a07c6f53eb7b7b1c9bee7fa117c49a6f5024b30c5b3760cb6b19ec9e3adb13331e8face93ccfbaf3883f13c23013ba8a72e05d3fd0d1b8c7c734df23b53d8df86facf9da03e7e1b80f1fc82f7e76430813e6d63e229fa3be5e333194e4cd40b52b04ded31b8fe4e4653110ff2fa0a73a736f28d9a788afd67fa180cfd6a1db0588fe3fe7f32610accfb77c3f59721f2c77c493cc5fe0aaf00e37eb731788afa4e059ed1f8361f60d48f6dde1f93d914ebc7460a46bd2fe4fd37994fc7940f6cbec1e89f98cf5f93a578def5013c433d86da6f4c51bf09b9bd4dcce982f2b39cebcbc49a22fff6b83e4dec29ea15d95932adb704c433acffebf43c776ad1fd039d7886f5d315bf3f5356f09acf77d3d1d4a5fa65734f3cc3fe035d134cf7372c30ec355b824dc413dc3fb0e9906574dcdf79c4e2f74501c6fa5b74104cdfb73c3e9d4ea6d6887f7fdb10b3e791bef1f9940ddf1ceb078fe005f5b7c5e7e3e96c86f58f8d0246fd3a76c1f311f9b377b043e31bf07c693a9fa1de19df816dec07f804bb584fa3fe5accc47a86069e517b82002cd6f775b043f39bc6e3dde9923d8eeb7332035bd47f3705ec60ff824d3cc7fecf84ebefd498c19e2faf609bfa2be6f9f0d49c2d51cff5c016e5fb2b176c8f78fb8b15d8a5fa99c9e7d7a93543fdab1b831dfafde6287844f5d10e8cf1af49bfac39c63bff024f499e98ee6fb3fb937f7d023bd4fed407bb435aafb124d37e2d5d30b53f03cf87d43eeb0d8cf5dd7803c67cb7e1f63d75587f707df1e9fece7c30a2fd5d7b30f6b3469f9269fdc792cce5594dc1587fba52ffb84c1edebecd5e326f7f41faebceb19f2cda8271bfa6133ca2e727e0118d4fb2164cfa9c2892f978af4c30eca1f1c19321d7bf2bff7e3660e34ff5e53bb043cfaf5dc174bf6c0076a97fdb929805acfcfb6d0446bdbee4ed9f0d857eddd660f89b6e2298da5f05c4ac3f687e6bc0c311ad87e07a263f9f0fda77f094da537f8067245fc5f569369a1963d29f2b31eb5fdabfe20ba6e7a777e0d188ff3eb9815906c29fa78227d04f053ca3f6b65c3f6663260fd553a93d2cfca4fec91bc95cfeea041e517f5fb8fece2662fcdd023c86ff33c1d31167cd06cf21cf5c308d679d8017d41f0df72fb3e9cc1ef3ebab14ec8c69bfc05432ed47d38885fe5d4cc9b4fe37028fc8fecb37c9649f25784cf6ebbf82e7f47dbc042fe87e05f5cf4ce8936b82e7f4fb36113ca6f17a002fe8f986b8de80fe8bef4dd28fc292cce52fa68269fc4d1effb0db2f49decd0c0c7fdc92fe2ce6131a3f6d2d98fcb7bf02cf49bf370330d68fea5a30fdde38831dfabea3fe59b2fea178b0009bd41e4f03db23aeff37713decb5f00593fc2df5a7c1ee47eb6f2330eadd17156c8ea87ff7609bfc45590b267f78d5c02e714bfa6ab2f1207ff80136c87ef22918f34dfe06c67cd186c48b018dafcee3cd99c5ee47faa48217647f99609bf4c7a0f1b2160392afa3f6da6cfc68bcd69279ff949f6093daef4ec1f067f5817831a4e76de8f70ebb9ece177c806d6abfb3235ec0dfba2bc9b4df9bc6d7ed1376ae5f5c3fe703263f6f4f520a1e53fc99102f66d4be8cf7cf7cc8e4e3d7673e784c7cdd82a7d4de5a03c3fe751e9f3265c2fca09be009d94fc2e397394b87c99f186bf08cfa4fe3fd3b9fb0e7717dacc792e97c0b8f5f58f8bb20d6793d613e5f2cc7b49fc5005bd49e35b56fb1c4fcecf1fe9e2fd9f7743dfdde582ca83f8267b049ed59f3f9686eb2eb69fd782699d62fa83de67244f67de1fa3eb79643b237ef2698f4ab9e8347d4feb0008fc99e1c6a8fbd70d05f4762261e6f9f46e3e730a6f3160618fdbbe6f9c6dc5d0ea8bd0df5bf6b88f89aebdfa25f00a5f8ff4e32edd749c0636aff66019ee17939780e7de2f92a73f643e8bb031e537b7c133c237bf5dec073ba7f44f71f1a225ea3e78f447f79dfe011ddcfe3f22dc68c29feff06e379ba0e9ed2ef0b1effb1747d44f3b1fd0d5ed2f78d0236c65cdf367c7e5fb0009858bf07cfd15f7bf082f4a3492473f96f19d8257b6df8f82e66cb05f55fbe223630ff6f797cbc98b3f67079527afe82319d17e1f6b7581a03fafdc693ccc7d7a0fb194b97da7bbb111b63f2af1bae9f0bd31810eb7cbd61612d1dd2bf94da671943c8cfe7af856d8c69be6e0563be594f2573fdd7b8bd2c1c763ded0f53c01392c7bb4ae6fdd3717d5db8c684fa4bbb134cdfa767f094e28180fba3e5c080fff15fc0b309f5ef9764d24ff13dfc43cae7a3e5d0807d6cf8782d47acbdfcfeed0b783ea1fad50ebca0ef6f3ed82079a32f30f2c5644f6c627f5acce7df655fd0e1e3930460a662dc3f1cc14beaaf40133ca178a8069bf47cdf90ccc74ff3c10e8de78dfa676c8afd09b564daff5982b1ff36a6f64c58ffd2fed40b7836a1fac504bc9c50fd6101c6fc97abc426e2b3700fc67911f3018cf33ac99d643e1edd198cf3176e07463da4fa0063bf8826be47bd53e7fe773965e345fded806db217eb1d8c78f29612b3f6923ea9603cbffb0663bf4949d7b38083c663b3022f68fceb7bb043f6118682a9ff8c02ec92bfcbe9fe7dba49f5c30d18fb636c9e2f2ce7ecf7144f2a6097e4bbe5c4ecf7140fcdc0b0b734018bfde03a784af3c53504cfb15f47dc0ffb0bbb8160ecbffc002fa95e58edc1d8bf1a4dc1163d2f36c1a8575495609c5f1a4aa6f3a134febd83e2ed2f376093faafa3e72fcc01f1f50b3c217ddd5660ac37ad63f00cfe5407cf69beef5230ea35c6026c60bfe55532e55b39d8a4eb6f73b0d8df20ee6f637fe04a32cdff03b043fd757b904cf9d9168c7ae7ed2299ce7b3692697fc898d8c2f99ddb128cf3b317f49f85fa6348f75f1a06d9afb604c37ff817b04dfa1c0ec10ee9bb4ef22ecd015d7fdd8047345eb5079e907e598e60d2d7b40363ffe3762598e2d5750e16e703d692297ffc128cf35768af897afb36108cfaee5c32d56b0f9269fe2e24f3f61731d880ff5125d37ed80558ac974c25d37ec09d64de7fe64132f73fea27d8a2f15732c9b4bea008a6f655a23fb1dfb28c24d3fe470d8c7ae1ed5132e95b2099cf8fa6e82fd4e3c32fc9b4bee3125b38ef7723ff641816d99b7d03dbe48fc22bd8a1f9f95a825d9adf4af28706eb1ede5eaf060fe97aaf133ca1fc5605237e6d8ee009e5bbd5198cf58b4efc1efb6fb71730f67bae66e025c5df8a09c6fecae020998fafd248a6f3ba909fd93b6f4f71025bb0af52329ddf9849e6cf533fc036e993924ba6f96726993f2fcec00ef57ff12e99e2c34a32ed7f0cc1f017d5bb649aef7cc9bc3f22f13c97fa4fc3f859388f5a6d25f3f69443c1d86f3b06e37c4be54ae6edd354c9bc7dd791643aefdc4aa67acf2b18e7f134f13dced325a4ef26d3379affc95f9826e2cb952a99c6f7153ca57835fd0463ff691108267fb579028b78c2001b34dee14532bf7f62814df88b4832d52f2ab085f59d0118eba3752899ecff2699eae307c9b43fb405431f9454329d2fbb97ccdb938cc02ee95b2adaebd2f8b590dfc279e448974ce3f12998e67b4d30ce074713c934ff403e0be72d2dba9fc5e607defeca014fc85f5413f094e2313b954cfea0114cfe467901233fd41792a99e6a49a6f527c198afd71bc9549fb9822dea8fba944cf9502799dad782b17e6d7592c9be6782495fea42321fdff8c7f77cbcb477b043fa1deb9229ff4904e37cc697641a7f0decd27828aa647abfc45032ade7b982495f13b25fcbc2fb0c944032d9cb93606abf5949a6f314cf60bc4fc00a24f3f6b79960d29f5a914cf11dfa53d87bf82999d6df303e16ceb755a4cf369b3fc8ff7660ec3f57de04933ff0f760ac5f665bc114df2b67c1a44f57156c507f5f1cc9b49ff3198cfdc69bab60aac7ac4f601be7fd22c1781fc95132ddaf95ccdbabd492b93e794f60e883229e87fd9ef959326fbf3a964cf9e00318fe5d9d4be6fda192fed916ce83a92f92a93dbe64ca8fd11f229e4c6f92f9f3938164ca1f4f82b1fe994ae6df871f60acf79a6bc9bc7f62f49785f3b1b75230d95775914cf30bfacfc279b22df90f47c413a621995f9f7be011f99b6d2b98e2136d021e4f683d63059e4cb83e7ae2fa19dd4f3b83e734df943118f581f22099cba33c8397549f592dc026d69b8f9279fb6f9f60e453d6156c537f5a63c9644f8160aa47695330fc8dee0aa6e7c5b964f28791648a6fe692297e580aa6fa6628da8bf8c3bc974cf9642118fa38954cf58f89649acf1692e93c27e9936361ffbdd149e6df2b9e609c1f7d96ccf549ad24d37974e887d0676721998f8fba924cf1fa9364b247713df687754f92e9fc672399ea45a23d581f35af92f9f7b9f81eef13885ac1181f4b32d5dfa10f16f6a3044bc974dee9158cfd3f892399fcbb2d993fff26fa6786fd3ba23f711ef146d7bbcc7e283f7b944ce7995ec0639aafab25784af671db0a9e52feb200cfc9fe320f2cec650f5e52beae7d49a6f319e2fe4bd457766083f453bf80b11fa878154cf6b2adc1585f37c4fde0af235530f251717fc45b9e90d7c17ca848a67add5530ad1f74a160aa8f76e279c8e7c34630f97f3b174cf2379a645abf247fe35a781f90ff2818f3c1443297571d49a67cfd4930cd87da1b58e8ff5630ece74b32cd1fa564aaef7982697dc87900633f73694ae6faa0be4aa6fd789a648aa724637fd25a32ed3f79924ceb3d3330f6f325ad64de1fd98364927f2598facbd42553fd3594ccafcf311e16cecbdf22c95c5e652a99de7f267e8ff3c9e1bb641a6f4732bf3efb008bfd812f92297eb32473794b31bec87fa30a2ccea3ee0493ff30f79269bfe23718f53e6b2099ea0377609c7f34be2453fc7b914cf91c1f2f63c0e6478a0fb6e019d58be207c1538aff8fe039e503712b99e6eb5c3297a750c04b1afff22618fb1922c1347fc73bc9b47f4630f2f9eda360b2efab2e98fcd1ea158cfd83452598f47f6b48e6cf8feec1a8b7a40bc1f05f3bc9bcffb61918f596f85d32d5e3447fbaa48ff94030f6ffdc24737bf267c416f6a7ac3f2453fe580bc67e99122cceeb9c24533d6b2299f4ad108cfce30773fd500cc9341f7792a9fe6b0ba6f5da6b2399ce372ec1d85f1d9d25f3efd59b60f89f3bc9bc3fd4a364f22f6f60ec97543792797fa8a960d8c74d32f9932918f61ed49269ff832d99e44d24f3f61a23c1d43f96fc1ef1fe1c8cf763448e645a3f16cfc3fe3d632899e2955832cdafd01f0be7d5ad4a32ad9f3792b9fcc64030ced3d792b93e9723c9b41feb02c6fe67732b99f68b7c4aa6faa3180f9c17f6499ffa032dc46bf098ec5d8f24d3fe08133ca1f530ed049e527eb7f50593ffb83c48a6fd570a7846f7d36b30e6fff25b32d5ab73c1145f28ef82299ed1e660d473b64f92a9def92698fcdd5a3cdf46fd24914cfbcd74c9b43e21e445fda611f7437cb1fe124cf65edcc02edd3f7225d3fb001e05d3fc5ebd108b7879bb93ccfbc72f05937e66a9605abf538e92493f56e021d99f6249a6fa5b2b98fc9f72914cedc3785a789f52f12698e42943c964ef17c9e40fe792697e1849e6f2648e60ac470660bc9f243b4aa6fd3fa1647ebda20826f9d24c32ef0ff55e32d5d7447f60fe2f9f25933f5a4aa6f8e62c18f9502299f40ffa61e1fd4b4a2899f6279492495ed19e29e297028cf795048d64dedef05530e29137c9e47fe4efb19f740cc6fed152134ced0f55c9fcfb488c17dedf74b9934cf64dfa3c326754ffab0cc1643f510ac67a78ba04633e77466083ecb309c026cdffa921998f476582b19fa7ba0aa6f93e5e0ba6fca6188051bf4b447bb1bf4aff00237ff60f92e9fd41f792e9bc7d2599e6f717c1d8cf247e8f7a5d160ba6fecf23c1b4bf21a0f86264e13c72f82499f2fd57c1f06727c954bfcec098df755b30d9ef7a2e98ecdf78974cf54cb447d47b3d5330e2cb0fc9b4df47dc0ffbd12ea9647a9fec1e2cde07f92e99f60b1c05239e3e4ba6f9df974cf9d74932ed9ffff17b2e5f70014f90ef288261df8664b25f5332bd6f0ae36be1fc4ef92499f22d4b3297ff593c0fefb7525dc9e4df3c30de5fa53a9229feb12553bc2ec66f46f2565f92c97f37609ca7b4df25d37e825a32adff89fba39eaafb92293fea24f3ebb7627cb13ebbfd944cfbadbf2453fe37154cf287a664d257d15e715e80fa6fcce673f2af117846f94076075e503d2188c1d88f9a9b82c91f2457c954cf38832df2279ba9647adfe70a8cfaecf62098e2ef6e2699ce27ed04533cb2d5c0d8efaa3c09a6fa46f12199ec5d3c0feba51dcd9f63517f5dbd0886bd3f4be6d76f7f30d59b62c164afde5432d5271f2453bdf0118c7abd77124ced4f1ac914afae2553bd5edc0ff3b9f32498ec6d1308a6f66c55c9341fdd83313f9ba23da8ef46a564dabf664aa6fd21f27b8a37e291643abfe249a6f9ce174cfb13a2028cf78b25b9647a1fd4a364f20fdf92c97f0c25d37a512599d607a03f22bf375ac994ffa49229ff78944cf94a2618fe48fe1ef59e4632bd3f270163becf2ac994bf8beb71fe4b0d2453bd27964cf552d13fa807da2f9269ff612499e627d13ed40f424330b55f13d763bfc6ed4332c50f37c1f0f78a64daff3d964cfb43c578637daf7a138cfd39429f719e6745fa30314df21f590ec6fedd32134cfbb10c5d30f98bcb8b64da2f3c01dbd87fbc174cf5c92001e37c4d25eee760fff1b7605a0fc8b792e9fc81b8bf43f149740263ff68fe2a989eb722fb9c8878201849a6f75f9e25d3f37cc974fee15532bdaf752898ecdd0904d37a475080512faf7e30e9432e18e7f56e82914f5482c91e0bf13ce4ff7e2698c627fb924cebcfe2f7d8ff1b3e80719eaa934cfaee3992491e717ff80f6f2699f22ff13dcecfa753c9e4bf0e92293f394aa6fd139660b2cfc8904cf9df4230e68b4a32add78bf1c0feda740ec6fbebcab3648a8f2792c95fd492299e1848a67ccd164cf25b2d58f887ab64f2379d64de3fea4132bd6f4efc7e8e7827944cfb7f1e2553bd4f134cfa6c799269ffb6781eea8df14432b57f2718ebe591645a2f8b05231f15bfc77e0f652699e229f13cbc7faa9a4ba6f361427fb03f5013fa8cf5e2c495ccbfd73dc924af180fec0fd33e24737922f17c9c6f6cc91ea626f69b5e13f082fccfe64d32d547bfc0385f565ec0886fba1cecd07a663394ccfb237b05633d627b144cf6779949a6f75fd682c93f06349f4dc5fa433d154cfaace982697d721b4aa6f3c11918f585742299fce5bd64aa67958229be5ac560ac27ac12c178bfd79b64da0ff1e37b7adf95fc3dcef70592a95ebb174cfe3a10cf47fda01c08c67e1b5f32bdcfb0134cfde12a92493ed17f585fc81f25d378dc49a6f8e253308d57249e3f417c7a904cfbcd7e30c5d382b11e982592797f24df82b1de954ba67aa6907f4af69baec138af6c8d24533d692f99ea733bc1e4ff3c0b2cde37be944cfe712499f2b1b964b2675732c52bd0670bfb45d54832e58fba64da0fb301e3fd8d4a2499d67f857ee0fc72f82d99be5f81713e3e194aa6fd49e27e588fb89ec1884fae13c9d4ffa27fb0bff0229e67537fae481f66e612fb2d776083ec3debc026eaa53618f18a3b0323fe580f04d3f5c98b64da7f63825df217852e99ce77907c33113f6c4dc134df6f1f24d37c9982b17ee04f05537b9a77c9148f88dfa3deb07a92ccfb7f73168cf365778229be48bf25537d19f28bf501e55e309d4fc94f92c97fcec158cf2b12c1e41fbb4fc9b43e3d104cf3f7f6158cf87ebb170cffe448267942c1e47fba05187f1f455049a6f5614330f4ff0d8cf3b88ab83fde3770d94ba6fafc12bca0f6a557c1c80f6dc9644fb964aa7f1492a99eb1934cf3f718bc44fd632199f2ab67c914bfd782518f16e389f78346a23dd8bfa58c25d379ba4030c95b5f2453fc5c824deacfec2299f6eb6c25d37ae74630e2b94632ad170bf9b13fb87b964cf514713df61bd4aa643a9f0f7bb31cecbf10fa28f6e3f89269bd83e2adb9399f52bd33032fa6fcfef9086cd07e8d95f81eeb1b97a964b2bf0dd8a2f958ff02dbb41fbbbb825d9a3f2eb5608a3fe28560caafb6141fcd45fdb11a83b11e180f05d37e5c5f114cfe669d8051ef6f3dc1a40fab108cf3d9e55a30ce3b1a60d4d78bab649a5fe5f7645f978364dededbb360f247452899ea616730d6e7d6779269fdfb4330f9bbd4148cf8e7058cf5b8e44932bdffe25e30f6835c24d3f9d1b964b27f713decdd16ed9b937fd2f792a99ed2082679a247b0380f33964cf3ab18af05c52f57d1df381f5baf2453bcff0046fcacfe60daaf6a4aa6f9ed4b30ce7fce25d3fedd1918f65f8af1c37e6d4f954cf9cf5a32c927fa17fbede254326faf22aec77c1bd582a9fd971d58ecef3524d3fe5ea1bfd84f97d1f82ec47a83be124cf5c8ca07dba4efbab8de9df2dffba44f0b51afeb5cc1747d32154cf61eecc043ccf74f9269ffd3098cf7495c1e25d3f9c14a30ad9f281f92693de2001ee3bcf34430e94f71114cfe259883f17ef6b52599de2f36144cfaa23c4aa6fafd188cfa79d60a267de832c1345f1786649a3f7e30cd97a2bdc86ff55232c54fb9648a6fc4f367e44fbaa1649a5f669269ffb7f87e4ef6915f2453beaf4ba6f9443c1feb655a2c99e47b944cfb532493ff6bef25d3f86ec1e2bc532318ef1712fa82f3cdc55e32b5ff1b0c7b5acd25d3df9fa04ba67ac25e32bd0f44b4cfc0f95ad13f787f759c08c6fb8f34c9141f6e2453fee80b46fe22fac7c2fbafef24933f17fa8efdf9590dc6fb8d4a8a079626ceb3d513b04bfa5a527cb664f645eb65067848f359fd8369bfec063cc27ae45532d5e31f25f3f15c3d83315f5d12c9544f740553fe1e6592a93f3dc158bfb88127145ffb9560b2873a96cce5d75f25537ce90ba6fa62f283a95e2ae49bd2f82b0f82c93ef385645a6f17ed453d39984aa6fac04c32fdfd5607c1a42ff14a30cdb7b74232e5a76f60e483fe5132cdafb960c4fb5f60c4aba52218ebaf7b30d69fb6e27b9c1f0ceec1d82f962b92c95f1d24537da7148cf93d05239f534f92e9bc8bb81fcefb1547c9544fabc1383fe68af1c67e92f807d3fe43213ff6af7662fcb19fdaa37cc410f5ebfc5e30cd1f6b07ecd2f85a347e06332faa8f1cc0d0efdb17784cf6e91a82499ff44ff004eb318f92693fdebd649adf5f05937efa67c1347fe91618e7bb6e7782112faa60ac8736a1601a8fac00a31ee98c05e37d155bc1347ff8aa647a1fc009bca0f1f21682c99f9ae2fe0b6acf360763fd62bb168cfcb0148cf7790879f1be9ad4954cf53cd17fd8bfe49f24533db1164cfdbd7d07e33cd346fc1efb17b789643a4f300423bf303760bcdfec42f669b27885ee47f38169e1bc977e124cf18d3706e3fd11fa163c22fdda9482a7b43e7805c3ff058660ba9f2b9e87f364d14632d5fb4792e9ef37fe02e33cd926028bf364efe039c9b712f747fdd9ad24d3f58231fee58b601affdb9b648a6f7230dedfe12d25d3fa760a467d3817f218145fd99f9269bda1924cefdf93df23fe7e009b349f98623c2c1a5ffb2298ee97d8609c3f32e6609c3f8b2cc9646f0bc914cf3f4aa6786607c6fe958ee20f8bcdafb43f81e20b165e93fe5c3e25d37e30f13dea3ddd093cc27ede2d18f5983804e3fd1d9a25989ed7168269ff61fa089e223f9e8167d47f862699d6f39e25d3fe68152ce2b70318e7c9ec67c9f4fe12138cf70f252918f1932b9e67507caf08f9f1be9938069b648fc15e308dbf32108cf7df88e7637f627c150cff7a0163ff42f000c6f99c88ec9b4d37a867d1fc62b3f1a3fd3c743f5b8c5ff102463cb2da82117fb4df9269bde12498ec510f25d3fef01c8cfcb8b425d37eaa5232bd5f2506235ed85a9269bda4154ce31d89f6cef17ea8037841f76b447b17d84fb6012fa9fd6b211fea49978b608a4f0c156c423f3bc9b49f3602c31e6f7bc1d0bf4a32c50fe44f6c1bfb3be22918e7e93a6287d907adb70ec063eacfd51b784afdb3d1c0c85f8a5232cd97afe0398ddf652d99fcf75130e5879d09c67c961482c97eae7bb049f74b3ac9349e86649a4f2692b93cb978be8df749b88229be509660eca7f39f24d3f922713dd6afaedf8269bcd690c7c6f9d755001e52bc5b533ceb5a63d29fab2199ce63edc1139a9f82083c25f9f5068cf745dd2cf082c6238d25d3fb1d378229bf503ec178dfce6a0946fce9bd0aa6fe5ccf04e37d0af27aca77ac1bd8a2e747df9229fe2dc136f98ffc4530e9f34a934cf9f10fa6e78be739387f48fde9daa8f7273c3e310716f67b260f9269ffde1318efefb91e24537dcd06e3fd79f6156ca0deb1904cf6a080d1fe6a2199e67b5f303d4fbb801dd8fb0a8cf8f9a611db78ff5dac8211df745f60d413133e7e2c389be17ccc183c27ff97459279ffac4b30de27947e0826f94c4532bd7f5d032fa9fd6d2a784af58e21d8a0f9e1aa48a6f53f5b30d58ffd6730de5f94ad89ed01d9ef86eb2b0b2eb0feac6fc04b92af7525d3fbcd8f6093fccde64532d9cb4d30c57fe1128cfd33eb77c1a41feb028cf7355a1f82e9f9ee1cec62ffea9b60f227892918e785f0bd8dfdafe9b3601a4f270463fda81980f17ea59adbbf3966fd41ef472dc14bf2075b1b6c60fdec4132d50f0bc9944f1cc126c693dad7bf5e9ff2075c6f63bd6b45fd33b1e6549fb8adc0580fdc7682c97fdd5ab035a5f74309c67961e50bec523c1de2f736eaf7f11c3ca4feaba8bfa6d664467fffdc080c7f53b492a97e6f08a6f686776013fab4964cf69982717ed224ff30b5b15fe81608c6fbd3ce60c48b2d8dd78cdd8ff2eb5430c5839b5730f2dff60086be74a4af33d6ff148fdd8391ff6a74bf390b30693de808b6917f64c436ce8fdf1230f6bfb7345e0b6b3a27fbe9c0f319bdaf8bfcc782a5f7e43f0f60cc4705f99f256b3fedf71c826d92ef3625b627349f68dcdf9b2c9f9b927f237d3458ffd1fc5b8327f007241f530f1aaf6b00467cad51ffb2f8674efd41fed5b6711ed0e4fac192cf39b57733022fe97ecf977feda32abf7d8c9f3e26ffa7827fa74fcf0afb9da5daaac3fe58ff6a0be8f3df21cb2f72b9ecf3bb5c0afe9b90afff77f7df5116d62247f5d81ffad87ddba87590cbfd87bfb3f1f9779605f20899fa6be8cfffb79fff167b71e9f393743ffadc1663f4e33aa96fbdedf8eccf3f18b9ffff65e16dfbc90e6009240d1fa9bf2b3bc9439ee0df4d1661eb3f64f9313a3f24f3e4e717cbfa7791e5379fecfefa91d758f05a8e94457a8a7f2b590235542335561335553335570b364ea55aa917b5669f86e951ab76ec7365b2de544dd5d99f15ff9dc67eb1fe379365a3aed827652391a85bf6b963d2ecd43dfbec982c07464726dd91fdfb4e3da9f74cce7bf5817d0c76e53ff4daff5b6479e43dfdc446e699fddb597d515fb94ebda9efea87faa906ec9a9449f8c524f85607ea501da96375a24ed5993a67d2fc1bc9c25a7a5637ec9f91ba607f02d8fd92c9f2cafe6929aafaa4284cc7be15431d2ba662b18fad380af31a8aa7f8ff3d92fcf7cc954aa0844aa4c44aa2a44aa6e44ccf5ca63d2dfbf4b6622a059b45064aa954ca45a9954669954eb92a3745537465a5acffe8b5ff37cab251b6ca9db253cf8aa2ec95036bf1513929f7ca83f2a83c29cfca5979515e9537e55df9503e952ff6dfbf9581325446ca589928d37f23596c65a6cc9505d3b393b26413cd83f261288661b044c0b00dc7700dcff08dc0088dc8888dc4488dccc88dc2288dcab8a87746fddf23c99f9345b58ca6ff23a390df6677a3353ae36adc0ccdd08d95b13636c6d6b83376c69efd391847e364dcb3cf897d8e8c1fd8e7d178329e8db3f162bc1a6fc6bbf1c1b4b0cf02685e757f9b797f9aadfe999ff8af6561527c1a5feccfb7313086c6c818315fd4186363624c8d194b9916c6b2370ad3304dd3326de3683aa68b8fc73ebe19b04f684666c465eaa53a9a31936a6726666a66666e16666956e6c5accdc66ccdcebc9a375333757365aecdcd2f33b1f2eb1cfcd764311a736bde3169becd9db9e7b21ccc8379344fe6bdf9603e9a4fe6b379365fcc57f3cd7c373fcc4ff38b7dbecd8139c467648ed967c23e63736aceccb9b960992a3334e3de322cd3b22cdb722cd7f22cdf0aacd08aacd84aacd4caacdc2aac12b9dc2f91c5ffaa2c56655dac4b3f2e566d0cad5a3d5b8dd55a9d75b56e9666e9d6ca5a5b1bd6d3f7ccd96ead3bd6522689b5b3f61677bfd6019f2393666a9dac7beb817d1ead27ebd93ab351da592fd6abf566bd5b1fd6274b98bf5884b0601e3d61b3e9c0faeea3cf1fd1d1bfa2634cb31a8bfe82f001fff74a89aca135b2c6d6c49a5a336b6e2d7acdb196cc74fa4a9ed18f85b5b34d48f2439643bf4c614e6ddb766cd77ab03ddbb7033bb42326cfc178b4633bb1533bb37336abda766197ea935dd997de92fecce74fc932307756cdc6646055aa67d77663b776675fed9badd9ba71303fec95bdb6376c249ef9676fed9924625414662bcc5e602bf766681bf6d6beb377f6de3eb0cfde3eda27fb9e8debde7eb01fed27fbd93eb319d7b35fec57656fbfb1d1b07efffcafc9f27cb16a66274cb78cc6f8b4df992c1ff6a7fd657fdb037bc8faf3c47a7864bbe6dc1edb137b6a2db924bb7e64fab161ff9cb1f6ce85fd9b91bdb0972c485698ddcc1dc3311d662c8eed384cd2bde33a9ee33b8113b218f5dd89545df17fcdecfe155954d7183ab113333bb1edda499cd4c9ec2f27778a5e0ea7640ff0ed3d6b55653d3b17361acf4cc706cc6216dc6ed8ff3b356b6be3b44ca6b9d3998173756e8e66f7938feeac9cb5b3b1b7ecf78eb365d21c8d9d73e7ec9cbd73708ecec9b9771e7ec9107ecb7a7eb6a03f234b2f09f3c683fe7ecea3f3e43c3b67e7c58cadb33db1ced6b33d6656cc3ece2b6b5dc5dab5c0a7f765ec63cfe9e374f8bc39efbd24f6d20e9d0f66fd47e7d3f9ea7fe954ce379366dffff5f6cec8e9ff5acca933b3eb9fe4f8576599ab9db3b05f9c25fba1e21a6ce2b08c23f34accd3bab6ebb8aebd702a73e17ab66b1f5d9ff9a8931b981fccdacfaca5f76ec86c2ae673e6d18ddcd84d98bde0e3746e6a7acc73b02b594fbcd93336be67377373b7704bb7722f6e6d176e63356e6b358ae67656f3afe8987a70afaaeddeecd6d55cdd5db96b3626cfeec6dd9a43f7ceddb97b3622dbde86dd837bb4576e6031ed331df7e4debb0feea3fbe43e1b817b765fdc472195fbeabeb9efec5707f7c3f9703fdd2ff7db1db84377c474f1c0fe7dec4edca93b73e7eec25daabd2f6091b8a7aa81f70fbdda9f91c533d8f46d79b6e778ae937b9e71b2179eef055ec8e4601fdbf0222ff612e6030eb6d1eb8c977a99977b85577a9577f16aaff15aaff3aedecdd33cdd5b796b36e7c7c6c9db785befce7a70471ebb0b1b5d9dfd3ff36fde8e59cec1db7b07efe89dbc7bb5f01e58467af31ebcc71f5af5bb1ff853b23c79cfded97bf15ebd37a730637362dbde3bd32f2e099368cbe6f229b39ae7de76bd0fefd3fbf2bebd8137f446ded89b78536fe6cdbd85b76441d7a3aff8866ffa966ffb8e71f45ddfb31e7c9ff9e8ad6df8811ff663e547ee8069e4831ffb899ffa198bd6be51bffd523c9189fe75599e2f7eee177ee957fec5af0d6603e6d46f7a49fc967d3aff6acead27ffd6cf77bee6ebfeca5ffb1b7febdff93b7fef1ffca37f62f966a2bef8f78aea3ff88ffe93ffec9ffd17ffd57ff3df8da3bdf03ffc4fff8bf9f485bd30c74ee57ffb037fe88f8cbd3ff627fed49ff9737fa1382c27fd6679f70f597ea97dfc99d8d25f066aa004060b112da65f6aff97c0f7fae5b7811d38fe3570cd0fe31478811f04411844411c24411a64411e14411954c14509839a7d1afb3d68838ee59af3e06a3f07b7400bf460c5fc48ef0d9560ddeb99ad30d906f6c27a0e36ecaedbe02ed8057ba50e0e4a191c8353708f0af54f35ab3f2d8b1d3c048fc153f01c9ccdd829ad73f012bcf6da15bc05ef81137c049fccf38c83afe03b1804c360148c8309fb330d66c19c49b47016c1325443253442d3188416fbc39c71e8865ee88741188651c86cc73a8709f3cb4698f29881c50f61d6fbfc300f8bb00cabf012d661e32fd421d3b41fb2387f94e5e77af6cf63d25f1db661175ec39b19875aa8b3bbafac636f27e13a5c33795e8c7b2f0d37e136bc0b77e13e3c84c7f014de870fe163f8143e8767f52d7c095fc337ab08dfc38ff033fc62d2982c22f6d97ff90e07e1301c8563e3184ed82cb40dd6e1943d63e6ee99fd7c9b53f6dfe7e1225c466aa428456444e68fcacdaf5a46b288ff862c28f1d4c8525fd5d7c88e1c7f19b9e673e41987c8376751c02375a61351c8e2f7cf88e524511c25511a65c62dca8347ab65f369cafe3c4645f01895aa1255d125aaa3266a5910d345d7e8166966678ccc75d4467ab48ad6d126da4677c629da452c82f0039ef778d68ecdb40bf6bc7d74888ed129ba77d2e8217aecefcdabed866af4d1eeaff6f2932c068fb043b77516ca2e7a8a9ea373f4629ea357f6a437e6750d16a79ca37773c2e6e8aad7eae823fa8cbea2ef68a0ce153f1a2aea8f2a2c7f9e1b8da27134096d2b8ca6d1cc8aa379b48896b11a2b56111b319bac629b85166eccbc3d9f73962c7f93b29843e33ef6e3200ea3fb388ae3f081f554cadbcafc5a1f25fe2c0b7ff68f7131d4f8f9e22cd4f73889d3388bf3b888cbb86277bcb0f87111d7d6dedd5b4f7c2639b959dcc46ddcc557ff515dfdb4f662cb3bbaca5875e25bacc5ba3f8b57f13adec4dbf82edec57ba5890fea323ec6a7f83e7e881fe327e3143fb3d866c9bc7380b86e689de373fc120ce2d76011bfc5effd88736b3055a38fdeff992c0ad34726cb6b9cb8adba8a3f4c23fe649db7641ec6b09ee3da665ed3fc0c33f6dcaff83b1ec4c378a456eaca7e51ee94713c862c3c1eecff9dfdb7493c55f57816cfe345bc4c54e3c17e4894c448ccc44aecc449dcc44bfc24484263efde9b3e8bd8d887e7a42c3b65f3d6d17c4da2244e92244db2a84872b1baf07765b1c886f8155b36bbb2fe65914fa2b8499194e69b71f26fd69e8dc9d9b998dff6c13ad953e39054c925a99326d6d5f7beea9db4ccca52f40d55c1d97d95bb385332bb4abae49adc12cd38252ceb4956c93ad924dbe42eba26bb641f1c9243724cd82c657a8ec272014364d94c9b4b2f4dee9387e4d158264f09b34ab146d2e722ff4c96e499f5e198e50e2bf6efe7e4257935dfad3e3f3f276f56ff8afa7df26ece8dfb709c7c249fc957f29d0c143d192a8b64c4abe3bdc7b4fbac8dc9c264b2df93713231de9269324be6c63159d8c76469c6a99a2aa9919aa995daa9e3dfa76eeaa5bef1603a2cbfe1b2f45910cb54b769601cd3308dd2384dd294cbc2d76dfa7cc4180aaff6932c96b0fe3453466e6b97cc8e9d344f8bb4343fd22a4c98f75a5afdfe8687f4621becee75daa46ddaa5d7d451f4a04b6fa996ea91c9fd3f978549c3644957e93adda4dbf42eddb15fedd3837d4c8fe9c9d8a7f7e943fa18fae953642b7a344c9fd373fa92bed2c8902c2ca7db4681719fbea5efe947fa997ef5feb197a56f7f9f5bfd2acb8f91e17a78607dbb5412ff2139a7dfce9069eb673ae86da5f7c54ee5fa696f8f553a4ac7e9249da6b3a4b50b65c3f42c5177fe23ef31361a7d0edad724d379ba4897999a29c63163f971b4efb3e3ccecb3e2649559999d39ea57ea0475e6665ee66781e9fa81a3a06ab0eb675096e1c5599845599c25ce23b3172e8b6af5b9d52fb2889a9add3f99d14efd4a064ccf952c553eb2cc74cc2fe61b077dcecbf477613d982316e37efaeb2ccf8aaccc2a61e7e45b98b34db24b56678d5dc763f53b6bb32ebb662c62f343d6df6ff6c2fd66de9c652c99661ce3a74ccf56d93adb306bd3b36d76e74efa5999c53363a603cf76bfcd8445369691edb23d93e5901db313d31d85db7491ddff268bf28b2ca67a973d3032b24743c99eb82ccc37f67d642ebcc4661146f69c9db397ec357bcbde852c1855577d4bdaec23fb8c9e93419a655fd97736c8d8e866a36cec8eb24936355da7cc66d9bcf7ebacbf17d93257734509552b377233b7723b77d8377d3d6dc29edad74398b7cedddccbfdec900779a828ff4496be024a7dabf8bd36f63edacc23c330ee982cbd97efed70c024619219f7799c27fe364ff32c3c30597eac4172bf95e779919779a556f925aff3266f8d63dee5d75eb7dc613f1ef9cdfdeeb3e25cb316f153aee7ab7cad9eed32dfe4dbfcced67396c1b09879c8729a4bafd9feb7719f29f93e3fe4c73cc88e4c9b1392c52afe812cbd0f559209d332db2ed5263f1926f32baed05ca6678eed5877ecbfbce6f7fe5dfe104cf347a3fd690d92d97afe943f671725cecff94bfe9abfe5ef7dd4937ff49909af719cddaf6cca73628dcd8871fe997fe5dff9404d9cc833f3613ecac7f1579ff1997dbc4c51b4cfee30c9a7f92cc9988e1d59a699f47e377c0bdffe200bb75792259fab7b854d65ea77be302c63cfd2fb1dd5bc481673943bf9b2500b8545f5b3e8814547b6dcabc0575793b1fa919f0ba33059b7d9ac557d2cbfe8f312ebaeb7e4c2e96b1785cb62ad53e1157e111461112923d52ee22229d22233f67d5ec365611ac6aecdd98cb92f8aa22caa3c2459faf6b398f5f597f9e5375958c6b34f6fcc62be8b0b7be4ce74a97227646177ae8ba6688b2e288a6b714bf25f7684303d53fc645268855eac8ab5710835e7b597a5d8b06cabaf6a7ef4d5be60cd243916dbe2aed815fbe2a0d8c5317b284ec57df1503c16cc3efa1a279764614e0b268f7128cec54bf15abcfd248b1aaa7f57164fcab22bde59fe742a3ed894b5efa33c5420875c9645f1597c15dfc5a01806398ba2c90bffd8555114a3625c4c8a692f4931ebd72c989ea8c5bc8f467b5b6677e03163b12cd5ecbb544287c540d7d250c2d22cadd22e9dd2354ebc22c2ae36c7f6a1f498cdc6a55f06e1ae64290dd731f7efc822d654c40cf3adb665c472b053191b2ecbef852cfb5e16f3cb3a9749999659996749745f163f564a7824669465599597b22e9b5e92b2cd34661b565f3b6371dc985bb4e10ffaaca7ecca6b79b3be4acd0a4a9d8d67c4a45995eb72536e992cbabdeda326368e5bebbecf64cabb7257ee7b591425cd7a6d28b552fb45961fd13ef773ea8dcd103b75c56439183e1bebc81c5b7d3d2cb0674e63cfcb63792aefcb87f2b17c6271ce86e527a398c594ca9d5d97cfe5b97c295fcbb7f29d79d12eef32adafee9bb3bebec13f337b5f7eb079bc2c3fcbaff2bb1c985d392c47e5b89c94d3c42d67e5bc5c944be3c45c7d156a7c4c0f665f1939564a655466d06746a7e0d4ef2ab2aadf62fedefb3059d8b7663f36c8d834bbaa2c26cbbd19b2deec97483a264b6b06c6a1b22bc79bc5e3a00996e5c4dc562e538ba86236cfa29545e5574115329fca66bb3ea736471513d73a313946fd9a4515dbdb2aa9d22aabf2aaa84a2bacaaea52d55553b5556745c1b1ba062b362e5ba7a355b57ebda3aff254b74aabf42467b21c83a36ad9f51f641151a5cf6571d488e9e246bd315559556b264bc4662c268b193269f64c96a37bf65a6fae2e2387e9eb5bb5a9b6d55db5abf6cab53a54c7ea54f575e17be6c717d681c5d5233e26a3fe2ebd3d570f4c96c7eaa97af646d5b97ab1aaead5dc556fd57bf5517d565ff128afabef5e966ac07ac2e5f5cf678bddb11a56a36a9ce4ce23c6c5339adf627e4bca6270efba60d1ee539ac5a36a524db98e912c51af654c965335f33a8f656bca3c34ccae9a87af9eaac6ac3f17d5f2a26637f7f5a25cb81fb615f38349d17f26b406c3ee7570377d7e75312fd6c5be38e1cbc5bd78179f8d897f092e6134b8449798c9d2b91fccbadefb159cde673059946a7449823e47f6d9c7fea32ca859283c96225912f549bdbfa4ec9e593fc6fdfa9c6df523d4af3d18a774e75d2fb9925e8ad0c8eefbbcfd525eaacbe5525f9a4b6b9c2edde56a6fcdd1e5165f98bd93244764f10773e445d68e5da55df4cbeab2b6c2cbe6b2bddc5d7655a7b697fde57039ba2fbd2c173633b1d8cde27fd5d684fde2fef27079e4b2a0adfd5add3f95256071f24d29c2faf27479eeb585d61bfb95a07ecd81e9d8a377f35545b3df7975c88ca6feec72bebc5c5ecdc4383afae58daf136d8235f75dbd7e8db92c7c3d96f5f196c5dd5333bebc5f3e2e9f97afcb777cbcf06a13d388e16578195dc66c869ddb6c66cd466c967db5ee7adbbf4c2ed3cb8ccba2f0bcc2fe5d16392f4096545373b5cdcf97f9657159f6eb90bdcdb2d8b85fd50accc08d8c83a7298f8a1fb4c620fca8d55a49b6b5519bc98ac9f9565bb56def1cc38bfaf99ecd8d336ef74cc7b8341e9b3146e6dcdef82cdeac9ddaadbddaaf83484b46e9ad0eeba88eeb84e5ca9fcce3796c6e9db008f4c9dd32590e755a67756e325990875bfd0aeaeff9cbcfb2287eaa2b6e5dd4a5f25557c68149c0bc0fb3dfa8978569716cc69eee2b6aa9cc422bfc8caa9a4590ec7f0d6b5beb7eb84347cdaf2c63af9cd73063f67faa22f6ebdeaff7d27875c746f9cbfc626d5cd6d7fa566bb55eafea35d36ca77c8af27a536fcdd8b9b23cdceb6318d6239bdec2eabb7a57efcb3d932515759e3fe695d8112074cc55efd44370523ae5b13e184cb3597e7f6fdbbc12cfda581f599b4ff57dfde0b6a1556d13b77eac9fea67e3549feb17a65b8bfab59f159cd728b02d1691ceeb37bfb1b7fe376fd994b220ca89acbdfb5abfd71ff56738a8bfeaef7a500fcba01e992ed3c27db17077aec3f29881cb324b63578feb493de5b2507ef20f7264f6a797a59ffb13f6ff0d9bfda7f5ac9ed70b9657b2fc8bc52e5b7b592f9d779bcdc98dda288de13f5a35f3ca1f8dd958c64363db47f6d9374e3f438693be6ed3fbb2c665ff34a2d0def09a9af1cb1ae0d074eb5be3357e1334a1f3d4444ddc244dcafae291e54977eeaec9ac2dfb158b429bbc299ab2a9b8bdd09ca8f42b763fcb42732397c5e4b364aa8cd2cc99c77a7369eaa6316377c3eefb7039352d0b8359d6e186c6aee99a6b738badd0b48a466b74fbc18c9b557aecc7c57c6fd64cdfc76c2c3efa5cbdd9345bebdcdcb9dbbe8283d53fac9c9b5ebfb3a4d935fbe6604d9a63736aee9b0726c363f3d43c3799bbeb6be64c2fe3e6dcbc34afcd9b948559c51f65a1d95ecaa2f1959bb5faa138cd7bf3c1a22ac7ff609e89d973bfa6686f9b4fe3e0dbcd57f31dbae167ad3483669828d60b7bde283359ae356bc66c961b46611f41369366dacc9ab971b296eeb6e1e3815566167d9b9ed3354b63efad5bb5555aa3355bcbe8ebd581396efb15c45d9f2b87ba71689dd66dbdd6ef63181e7719aadfaf09ff365752a5cfa4bdc2fdfa937a8bc76de03dc65d1b1afd4afdb658703fbbed6dba8d8c531bb7499b865ef5de666d9e9fdaa22ddbcad8370fed85595585fce4beaddba66ddbaebd5e5876dfded8bcf3ddd70ee4eabfefed5aaddf1de36baddeaeda755bb35f6dda6df0dede056f5ec89eb7734a63d7eedb437b6c4f52163f38fd41161bd97abff39945bc2c951e313ddbe5b9a2b7f7ed43fbc8b4f7686ffa9d05b5d53ef55adf326fdf9edb97f6d518861f4e5c44ed5bb269df59ccb3cf3b7bc9645ef5f949fbd17eb65fed773b6887eda865b3068b697aed123b19f67e906bf6b69db0acf8d44edb593b6751cb397875ed76d12e3bb59fdbeace38754a67746667c571922779af472c8e39fe4116e75759d84c99a94967770e93e6dab99d67192cd770d89cb063be56ef7c7b5b9f7d3753baa00bbba8da767197746997b1b0b8e8ca7e6dc8db75157bfea5abbbc6df756dd775d7eed6699ddeadfaac8e723b5ec95b326b687b8fe2fb4e65dce75db7ee36eeaedb76776c02d875fbe6397aef0eddb13b75f7dd43f7f8ab2cbfc563b40fdae2fbb87b59fabdb76ef7d43de7cfddb97be95e6bc738b9ae7de8ff1a4166c38eb3eddeba77964f9cba8feeb3fbeabe9d85fad80dba6137eac6d19d195b0b33f6b56ed24dbb5937ef16ddf2aa5e95ab71358d9dfbca7763f9bd1ce6d00ffa99fd6ad97bc7bada4cbe73b7bb322bb18ee1cadd5d5deffdea3109dfaffe35b886d7280fa302b66ffe1d1d13eb0b72bf196a7fdcef5de36b52b2d65d53ebe19ab119ef6c9dddcf7eb5f79ab3ff5a5ccb6bc5e29897ebe55a5bfeb5b9b6d7ee7acd27d7db55bb321d5533b30bdf8da69c5c57d7f57573dde6937efe655aa8f4750ce623a2be06c6f7638dd87c74ecfd38d515ade7de5aaa8171bcde5d77d7bdda3847b5edab2c5993353c07367f9c07f8afd7f89ca7ebe17a8cd953afa7eb3d3dddbf998b6641d1eef5e1fa787dba3e5fcfd797eb6bad3069deaeefd78febe7f5ebfa5d75d74139bc0eafa3eb987d26d7e975769d7b6bd60b8bcccccceb92dba2f5f327f2dd7d73c7fc1c27ebcc52c3a79b7263f955348c4c36f3b9aa6dbf33591cbebef31764b99937eb66df1cd6379ecb66877edf8bad140b2fb9b139d0b8f7b51b0b346f8152ddc25b748bd5db2db9a5b7ec96df8a68d025e15755df4a7377ab6e97f0e3c626c65b5bac6e9db1ef772df0fd16d6af1f5eafb0d86cc4246aee7236b3dcaeb7db4d4bc6d133cb2d44fefb87ddf3ffb52ce6e34dbfad6eeb86c5860d1b0d663515f3f8ecff6d8fc5eecc9fe593dbe6b6bdddd5a5fa62d7cae2b65386b7fdeda0d4ea58dd869f55773bde4eb7fbcbddede1f6787bba3ddfce51623f180fb71733643e7af24759983454afa4fbbfdede54f7f67efb48068a226ac97f7d7d3f2a6e9fb7afdbf76dc02b565f2cb35c58776c86d89a73162f6d6e43e3741bddc6b7c96d9abab759eadce6f1241ef77bf56f8bc80a5fa2eab6d4d4a8d394a85202f5ac199aa9599aadb1b16e5acdedade4e78fbbef3396c82759cc58f3345f0bb4508bf242d1d20ce3f287d3597fc25e1eb5584bb454cbfad981dd7b617e7a119385f624cdedad96f733a75668a5566917ad564325615ed0b65fe289b25322add15aadd3aedacdf84c1dd573979aa6e9da4a5b6b1b7ba16da99af0ebc8b03f2a8bb1ad7667dada9db653bba0b9bddbef2c7f37642dcfa1f8f22fc8926a7beda01db59376af3db008efce9cfa1f2c3bda71eb6451633568f92e43ed517bd29eb5b3f6a2bd46b935d2de8c85f61e4fb40f36269f2c216e94246ccb2767e999da97f6ad0d3436a6edeeefd98bf5dcee2c35f2b59136d6260a8bd955d72eed525db37111f562ef2fcbf2a84db59936d716da52578d7da8318f79673d9993b86e6fecb363518056b6bac26c79a71bbad92a9dab5bc64db77527327457c97596ee844e7fe622ce597e32d4033dd4233dd6133dedc7e0d74f98f5b2447e2f95bbd7333dcfebb2d20bf6fbfe0c84266b797c86ff2b3a16157aa957fa45aff5466ff5aedf11c3f2de39af8f322fa45ffb798faffbfaa6ebbe66817ed3355dd757fa5adfe85bfdcef850bff59dbe77c6d5413fe847fda4dfeb0ffaa3fe14bd07aece722db28dde4ef86e0bf3e78fe9e8e764adbfe8af4aa36ead86cdca34abf4f6eff075c43fbd8724c9f537fdbdb8ea1ffaa7fea57febcc07588affed6ed3ca56a3f7beea637afd3a561f4733895c33d687fa888dd0589fe8537da6cff585be5ca92b6565accc95e5eddd3c7ded778d38d5ca5e39b6e1eec90f0b0ff68b2cae7170dc95bbf2567e3c535f56415f310a4e2cdeea57df6a5a7bfb73b2048fab701505b355bc4a56e92a5be5ed78555807166b6efa5ccb3afe248bc9b28265dee5ceed8565b4b755b9aa5697555dcd568d3e5ab5b1c7f7c23129dcddaaeb76abab395e752c5bbbe3f66e626ef955166f7533e3b261f9d270a5b1f178e335567efeafaf2afd9571311f57fa6ab55a6bb362b8daacb6abbbcbc76ad75767d2a05f79b0b67d0ecf64796372ec983c0adfc570cff7819ef85efea3d8cf6bdcbbdf76e87ff8cd6abf3aac8ead1d7cb84edffa7e9e679aa6b63b6627bfcae2af4eab7b9643ad570fcdfbea919fce727f3a052c4f69fca971795a3dafceab176db67ad5ebd5dbea7df5b1fa8cbff26ef595f615a31fbbddf98749f7c177bc0f9d57f6795b7daf06d17e35147b2cfbbdbccd9339ee7739b58bd5a8d72e173b9358e3acdf65b1ceab717d67ec5693d574355bcd51c3b7708ec1fdf3314c92af16abe55a5d2b6b439badcdb5b5b6d7ceda5d7bc69e45cffb1f7bdefb489eaffb32097a7b62b3105fc7e3fba9f9beea7e36627e6318266b7f1dacc3c0091cbecb91452c6431bd17f85d967e7473dbd8d7efeb681dab77e20c2d9745f9b16be9cff8b1f03198af933c5d5bc1789daeb375be2ed6e5ba5a5fd6b5b5b437741601fbf7fbd5b30fbe57a25f6bb15a16fc34ceba757416dfb3e83e9ce9d77ecd807df6ebceefd6cc62bc50c8d2eeb411f366bfd90bd7d26374b7beadb53573e4b2fee5fed5793f628aba5eaf37ebedfa6ebd5befd787f5717d5adfaf1fd68feba790c5fdd69eef5ac1b8b04fbf9ef76a7e704b3e584bbedb9f5950bffba8f7e2eb7e97fcb1df83b63eaf5f02d736cc28effa73246c8e1feb193f73d2e7373edfafe4b23c69bb7e5dbf35cafa7dfdc1e617c8f2f7f78ffdf38ff3283f69566595d196e7f5e7fa6bfdbd1eac87eb11d335bea38c568b980e4db0afbf8fa6c6acc7cffc04c6b2dfadd7cbe90f7a7bea77569a43967505d5e0a69a713e6171d79d36d1f3f5b8f776eb49bfa3b61f93cb389f38de7aba9eade7eabdd8d32b674be7afc8f2d3d9621ecf798f6a11dcaf179774bdcc5f36ea46d9181bb37faead164ebf368979c230a77db5439cb4602336661ab91436d3dc39174ba1fd0a2caa7f6511e4ae0f0b36569fdfacc6cce59f8ce3c6c9271b77e36dfc4d607da94f56f35b9bfed2b8fc7eb6381a2a9ee2da55972acd26dc449b78936cd24db6c9f9aa0bcb6eac27ffdbf68bbc782effdf76ae6549552488eee733a6f615fdba7dbb6356a899203e5a6db51f3b4444f0c14b1489987f9faa8202a4bd37b457331113b9d010943a661645669d93b6d9e37b5a6207f5ce54d90a7b630ee6244ed8f3c2d4532060d9afca32ad349d280e4d481246103617866ae8b10a11c3b2b36c86248e1fe983506f36cb7bd7f59cde1344592e9dd23decc91c0e90c0115250a0014d680104cf80a691efb672cf7c667bc1191af13a6a6c8d2ed758790ea8a041fba8a546ca6681e23a2c67047dffd9b4a1130fb9e20cbad0833e2ce34747a706bc2c0e85fef98baee722bfd4f4404187dc51957668dcd0c2d0b660004318c12b8c61025378f3347fb13bb0acbe5df0f8ab3a31cdd0e01d3ee0136ee036e9c2ddb1ed7437f7e95459c13d7169c0bcfd003fe0117eb2bb700a4ff08c94def1b9eef5e9337dca1557dfc052a8ea8aefae6ed98c216b9d45ef4ffa485524aebeeaa181333471eeaa5edbb7f71bff47100423b4421517519a70a1686ff7106f632dbe471b97ebe0a027b3a4874ec8a276354cdffc603e255ca59dee228325a4b8c2354b719e8d29bbca113774bcb961e319c8f15c1f6327bd3884873ca043ee1bdcda7dce35430f7d0c30740718e10e636fed2f7ddd7f0cc2861b3aa1161991827b3cecfa8d66ec6112bce2115354f693204dfadb96d559cd6ccab25f967cd21655d61b3627a2d61336b0892d72a03dc20e53978ef868d8fa229f5faee75a7fe935c07eb745b764495b08ec7d0311d5f514356ca3bffd70224ff774bfb3f1822818bb5ad8461d3bd8c5de6e837df6fe0507fb088787258ef015c7d68bd0fa1a7cc79ef3f0a8623d21573237714a0f6bb636061dba66de58d0211dac1b76bfe293ef6039b59ad281736c393795d713791dceebf80ee712f96e3009ddd07544a5d179e13613e6e4967d435ca3ec245389a0cad56bfd58aad7bf7aee9fc122ff178e852391e3f3ba9c7d9399eff23a234758aeb7d96b869def6fe7fb0f468e60216ac18678a2378b9890bd31a42ee18c42f1d27b720dcf09969c1fb0909d7904e76ec356026184f0baafc89d66956e3da5fecbf6f6f369d67545d6b5c5d924df135a7ec542cb5e26e49a7cbfc201afa191da8093df3604f79408ae9ab0ad576031ca9ca3caca1635c83935653d22cfb448ce3bcf6adc752c32e62a9eb9443352aa19aaaae7e288acea1ab4729f2cb50e052bf5d4871cf952b02732ae47d9db635ea9689b453c57bc2062244752ad5f5e84c592fcc3e1ee4c949995795bc152fdbea830d827ffc84c20e9088f91d2fb395e4b665b520152c3422492ebf27dce3a1163b10a2cc60916c11710bad85b6ed69a7320cdc09db863ceee0a1533e20c1ccef6c814cd995eb334f9fc9ecf4b7ebda988b5c23b67b1108e04dff03d63da7fc32f8b9a5f4caeec2fc7c9c7e6f5bc5e154b795ce2e596e3679fca7dd222b624e3bc58134fe3a1e0bbcd199677fcb81c4b3d6a7ea7d6aeb0fb7e71ceb9a3f5738b7cbeda2ba7de3ba79caf57e52fff15fb1fcbbfd3fefcfbaf3ffe0193cc32fd</data>
+    </image>
+    <image>
+        <name>image1</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toMessageUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+</connections>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tomysqlkeywords.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tomysqlkeywords.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tomysqlkeywords.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,230 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+static const char *MySQLKeywords[] =
+    {
+        "ADD",
+        "ALL",
+        "ALTER",
+        "ANALYZE",
+        "AND",
+        "AS",
+        "ASC",
+        "AUTO_INCREMENT",
+        "BDB",
+        "BERKELEYDB",
+        "BETWEEN",
+        "BIGINT",
+        "BINARY",
+        "BLOB",
+        "BOTH",
+        "BTREE",
+        "BY",
+        "CASCADE",
+        "CASE",
+        "CHANGE",
+        "CHAR",
+        "CHARACTER",
+        "CHECK",
+        "COLLATE",
+        "COLUMN",
+        "COLUMNS",
+        "CONSTRAINT",
+        "CREATE",
+        "CROSS",
+        "CURRENT_DATE",
+        "CURRENT_TIME",
+        "CURRENT_TIMESTAMP",
+        "DATABASE",
+        "DATABASES",
+        "DAY_HOUR",
+        "DAY_MINUTE",
+        "DAY_SECOND",
+        "DEC",
+        "DECIMAL",
+        "DEFAULT",
+        "DELAYED",
+        "DELETE",
+        "DESC",
+        "DESCRIBE",
+        "DISTINCT",
+        "DISTINCTROW",
+        "DIV",
+        "DOUBLE",
+        "DROP",
+        "ELSE",
+        "ENCLOSED",
+        "ERRORS",
+        "ESCAPED",
+        "EXISTS",
+        "EXPLAIN",
+        "FALSE",
+        "FIELDS",
+        "FLOAT",
+        "FOR",
+        "FORCE",
+        "FOREIGN",
+        "FROM",
+        "FULLTEXT",
+        "FUNCTION",
+        "GEOMETRY",
+        "GRANT",
+        "GROUP",
+        "HASH",
+        "HAVING",
+        "HELP",
+        "HIGH_PRIORITY",
+        "HOUR_MINUTE",
+        "HOUR_SECOND",
+        "IF",
+        "IGNORE",
+        "IN",
+        "INDEX",
+        "INFILE",
+        "INNER",
+        "INNODB",
+        "INSERT",
+        "INT",
+        "INTEGER",
+        "INTERVAL",
+        "INTO",
+        "IS",
+        "JOIN",
+        "KEY",
+        "KEYS",
+        "KILL",
+        "LEADING",
+        "LEFT",
+        "LIKE",
+        "LIMIT",
+        "LINES",
+        "LOAD",
+        "LOCALTIME",
+        "LOCALTIMESTAMP",
+        "LOCK",
+        "LONG",
+        "LONGBLOB",
+        "LONGTEXT",
+        "LOW_PRIORITY",
+        "MASTER_SERVER_ID",
+        "MATCH",
+        "MEDIUMBLOB",
+        "MEDIUMINT",
+        "MEDIUMTEXT",
+        "MIDDLEINT",
+        "MINUTE_SECOND",
+        "MOD",
+        "MRG_MYISAM",
+        "NATURAL",
+        "NOT",
+        "NULL",
+        "NUMERIC",
+        "ON",
+        "OPTIMIZE",
+        "OPTION",
+        "OPTIONALLY",
+        "OR",
+        "ORDER",
+        "OUTER",
+        "OUTFILE",
+        "PRECISION",
+        "PRIMARY",
+        "PRIVILEGES",
+        "PROCEDURE",
+        "PURGE",
+        "READ",
+        "REAL",
+        "REFERENCES",
+        "REGEXP",
+        "RENAME",
+        "REPLACE",
+        "REQUIRE",
+        "RESTRICT",
+        "RETURNS",
+        "REVOKE",
+        "RIGHT",
+        "RLIKE",
+        "RTREE",
+        "SELECT",
+        "SET",
+        "SHOW",
+        "SMALLINT",
+        "SOME",
+        "SONAME",
+        "SPATIAL",
+        "SQL_BIG_RESULT",
+        "SQL_CALC_FOUND_ROWS",
+        "SQL_SMALL_RESULT",
+        "SSL",
+        "STARTING",
+        "STRAIGHT_JOIN",
+        "STRIPED",
+        "TABLE",
+        "TABLES",
+        "TERMINATED",
+        "THEN",
+        "TINYBLOB",
+        "TINYINT",
+        "TINYTEXT",
+        "TO",
+        "TRAILING",
+        "TRUE",
+        "TYPES",
+        "UNION",
+        "UNIQUE",
+        "UNLOCK",
+        "UNSIGNED",
+        "UPDATE",
+        "USAGE",
+        "USE",
+        "USER_RESOURCES",
+        "USING",
+        "VALUES",
+        "VARBINARY",
+        "VARCHAR",
+        "VARCHARACTER",
+        "VARYING",
+        "WARNINGS",
+        "WHEN",
+        "WHERE",
+        "WITH",
+        "WRITE",
+        "XOR",
+        "YEAR_MONTH",
+        "ZEROFILL",
+        NULL
+    };

Added: kde-extras/tora/branches/upstream/current/src/tonewconnection.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tonewconnection.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tonewconnection.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,571 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonewconnection.h"
+#include "tomain.h"
+#include "toresultview.h"
+#include "totool.h"
+
+#include <qbuttongroup.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qfile.h>
+#include <qinputdialog.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qlistview.h>
+#include <qmessagebox.h>
+#include <qpopupmenu.h>
+#include <qpushbutton.h>
+#include <qspinbox.h>
+#include <qtooltip.h>
+#include <qtooltip.h>
+#include <qvariant.h>
+#include <qwhatsthis.h>
+
+#ifdef WIN32
+#  include "windows/cregistry.h"
+#endif
+
+#ifdef TO_KDE_KACCELMANAGER
+#  include <kaccelmanager.h>
+#endif
+
+#include "tonewconnection.moc"
+#include "tonewconnectionui.moc"
+
+toNewConnection::toNewConnection(QWidget* parent, const char* name, bool modal, WFlags fl)
+        : toNewConnectionUI(parent, name, modal, fl),
+        toHelpContext(QString::fromLatin1("newconnection.html"))
+{
+    toHelp::connectDialog(this);
+
+    OptionGroup->setColumnLayout(0, Qt::Vertical );
+    OptionGroup->layout()->setSpacing( 6 );
+    OptionGroup->layout()->setMargin( 11 );
+    OptionGroupLayout = new QVBoxLayout( OptionGroup->layout() );
+    OptionGroupLayout->setAlignment( Qt::AlignTop );
+#ifdef TO_KDE_KACCELMANAGER
+    KAcceleratorManager::setNoAccel( OptionGroup );
+#endif
+
+    QPopupMenu *menu = new QPopupMenu(Previous);
+    Database->insertItem(toConfigurationSingle::Instance().globalConfig(CONF_DATABASE, DEFAULT_DATABASE));
+    Previous->addColumn(tr("Provider"));
+    Previous->addColumn(tr("Host"));
+    Previous->addColumn(tr("Database"));
+    Previous->addColumn(tr("Username"));
+    Previous->setSelectionMode(QListView::Single);
+    Previous->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Expanding));
+    menu->insertItem("Delete", TONEWCONNECTION_DELETE);
+    connect(menu, SIGNAL(activated(int)), this, SLOT(menuCallback(int)));
+    Previous->setDisplayMenu(menu);
+    connect(Previous, SIGNAL(selectionChanged()), this, SLOT(historySelection()));
+    connect(Previous, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(historyConnect()));
+    std::list<QCString> lst = toConnectionProvider::providers();
+    int sel = 0, cur = 0;
+    QCString provider = toConfigurationSingle::Instance().globalConfig(CONF_PROVIDER, DEFAULT_PROVIDER).latin1();
+    for (std::list<QCString>::iterator i = lst.begin();i != lst.end();i++)
+    {
+        Provider->insertItem(QString::fromLatin1(*i));
+        if (*i == provider)
+            sel = cur;
+        cur++;
+    }
+    if (cur == 0)
+    {
+        TOMessageBox::information(this,
+                                  tr("No connection provider"),
+                                  tr("No available connection provider, plugins probably missing"));
+        reject();
+        return ;
+    }
+    Provider->setCurrentItem(sel);
+    changeProvider();
+    processOptions(toConfigurationSingle::Instance().globalConfig(CONF_OPTIONS, DEFAULT_OPTIONS));
+
+    QString host = toConfigurationSingle::Instance().globalConfig(CONF_HOST, DEFAULT_HOST);
+
+    int portix = host.find(":");
+    if (portix >= 0)
+    {
+        Host->lineEdit()->setText(host.mid(0, portix));
+        Port->setValue(host.mid(portix + 1).toInt());
+    }
+    else
+        Host->lineEdit()->setText(host);
+
+    Username->setText(toConfigurationSingle::Instance().globalConfig(CONF_USER, DEFAULT_USER));
+    Username->setFocus();
+
+    bool pass = toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD).isEmpty();
+    if (pass)
+        Password->setText(QString::fromLatin1(DEFAULT_PASSWORD));
+    else
+        Password->setText(toUnobfuscate(toConfigurationSingle::Instance().globalConfig(CONF_PASSWORD, DEFAULT_PASSWORD)));
+
+    QString defdb = toConfigurationSingle::Instance().globalConfig(CONF_DATABASE, DEFAULT_DATABASE);
+    Database->setEditable(true);
+
+    {
+        int maxHist = toConfigurationSingle::Instance().globalConfig(CONF_CONNECT_CURRENT, 0).toInt();
+        Previous->setSorting( -1);
+        QListViewItem *last = NULL;
+        for (int i = 0;i < maxHist;i++)
+        {
+            QCString path = CONF_CONNECT_HISTORY;
+            path += ":";
+            path += QString::number(i).latin1();
+            QCString tmp = path;
+            tmp += CONF_USER;
+            QString user = toConfigurationSingle::Instance().globalConfig(tmp, "");
+
+            tmp = path;
+            tmp += CONF_PASSWORD;
+            QString passstr = (pass ? QString::fromLatin1(DEFAULT_PASSWORD) :
+                               (toUnobfuscate(toConfigurationSingle::Instance().globalConfig(tmp, DEFAULT_PASSWORD))));
+
+            tmp = path;
+            tmp += CONF_HOST;
+            QString host = toConfigurationSingle::Instance().globalConfig(tmp, DEFAULT_HOST);
+
+            tmp = path;
+            tmp += CONF_DATABASE;
+            QString database = toConfigurationSingle::Instance().globalConfig(tmp, DEFAULT_DATABASE);
+
+            tmp = path;
+            tmp += CONF_PROVIDER;
+            QString provider = toConfigurationSingle::Instance().globalConfig(tmp, DEFAULT_PROVIDER);
+
+            tmp = path;
+            tmp += CONF_OPTIONS;
+            QString options = toConfigurationSingle::Instance().globalConfig(tmp, DEFAULT_OPTIONS);
+
+            last = new QListViewItem(Previous, last, provider, host, database, user, passstr, options);
+        }
+    }
+    adjustSize();
+}
+
+toNewConnection::~toNewConnection()
+{}
+
+void toNewConnection::changeProvider(void)
+{
+    try
+    {
+        std::list<QString> hosts = toConnectionProvider::hosts(Provider->currentText().latin1());
+        QString current = Host->currentText();
+
+        bool sqlNet = false;
+
+        Host->clear();
+        DefaultPort = 0;
+        for (std::list<QString>::iterator i = hosts.begin();i != hosts.end();i++)
+        {
+            if ((*i).isEmpty())
+                sqlNet = true;
+            else if ((*i).startsWith(":"))
+            {
+                DefaultPort = (*i).mid(1).toInt();
+            }
+            else
+                Host->insertItem(*i);
+        }
+        Port->setValue(DefaultPort);
+        if (sqlNet)
+        {
+            HostLabel->hide();
+            Host->hide();
+            PortLabel->hide();
+            Port->hide();
+        }
+        else
+        {
+            HostLabel->show();
+            Host->show();
+            PortLabel->show();
+            Port->show();
+        }
+        Host->lineEdit()->setText(current);
+
+        for (std::list<QWidget *>::iterator k = OptionWidgets.begin();k != OptionWidgets.end();k++)
+        {
+            if ((*k)->isA("QCheckBox"))
+            {
+                QCheckBox *box = (QCheckBox *)(*k);
+                Options[box->text()] = box->isChecked();
+            }
+            delete *k;
+        }
+        OptionWidgets.clear();
+
+        std::list<QString> options = toConnectionProvider::options(Provider->currentText().latin1());
+        for (std::list<QString>::iterator j = options.begin();j != options.end();j++)
+        {
+            if ((*j) == "-")
+            {
+                QFrame *frame = new QFrame(OptionGroup);
+                frame->setFrameShape( QFrame::HLine );
+                frame->setFrameShadow( QFrame::Sunken );
+                OptionGroupLayout->addWidget(frame);
+                frame->show();
+                OptionWidgets.insert(OptionWidgets.end(), frame);
+            }
+            else
+            {
+                QString option = *j;
+                bool defOn = false;
+                if (option.startsWith("*"))
+                {
+                    defOn = true;
+                    option = option.mid(1);
+                }
+
+                QCheckBox *ow = new QCheckBox(OptionGroup);
+                ow->setText(option);
+                if (Options.find(option) != Options.end())
+                    ow->setChecked((*(Options.find(option))).second);
+                else
+                    ow->setChecked(defOn);
+                OptionGroupLayout->addWidget(ow);
+                ow->show();
+                OptionWidgets.insert(OptionWidgets.end(), ow);
+            }
+        }
+        if ( options.empty() )
+            OptionGroup->hide();
+        else
+            OptionGroup->show();
+
+    }
+    catch (const QString &str)
+    {
+        Host->clear();
+        toStatusMessage(str);
+    }
+}
+
+void toNewConnection::changeHost(void)
+{
+    try
+    {
+        if (!Host->isHidden())
+        {
+            QString host;
+            host = Host->currentText();
+            std::list<QString> databases = toConnectionProvider::databases(Provider->currentText().latin1(),
+                                           host,
+                                           Username->text(),
+                                           Password->text());
+            QString current = Database->currentText();
+
+            Database->clear();
+            for (std::list<QString>::iterator i = databases.begin();i != databases.end();i++)
+                Database->insertItem(*i);
+            Database->lineEdit()->setText(current);
+        }
+    }
+    catch (const QString &str)
+    {
+        Database->clear();
+        toStatusMessage(str);
+    }
+}
+
+void toNewConnection::processOptions(const QString &str)
+{
+    QStringList options = QStringList::split(",", str);
+    std::map<QString, bool> values;
+    for (unsigned int i = 0;i < options.count();i++)
+    {
+        QString val = options[i];
+        if (val.startsWith("*"))
+            values[val.mid(1)] = true;
+        else
+            values[val] = false;
+    }
+    for (std::list<QWidget *>::iterator k = OptionWidgets.begin();k != OptionWidgets.end();k++)
+    {
+        if ((*k)->isA("QCheckBox"))
+        {
+            QCheckBox *box = (QCheckBox *)(*k);
+            if (values.find(box->text()) != values.end())
+                box->setChecked(values[box->text()]);
+        }
+    }
+}
+
+toConnection *toNewConnection::makeConnection(void)
+{
+    try
+    {
+        toConfigurationSingle::Instance().globalSetConfig(CONF_PROVIDER, Provider->currentText());
+        toConfigurationSingle::Instance().globalSetConfig(CONF_USER, Username->text());
+        QString pass;
+        QString host;
+        if (!Host->isHidden())
+            host = Host->currentText();
+
+        QString optionstring;
+        std::set
+            <QString> options;
+
+        for (std::list<QWidget *>::iterator k = OptionWidgets.begin();k != OptionWidgets.end();k++)
+        {
+            if ((*k)->isA("QCheckBox"))
+            {
+                if (!optionstring.isEmpty())
+                    optionstring += ",";
+                QCheckBox *box = (QCheckBox *)(*k);
+                if (box->isChecked())
+                {
+                    optionstring += "*";
+                    options.insert(box->text());
+                }
+                optionstring += box->text();
+            }
+        }
+        toConfigurationSingle::Instance().globalSetConfig(CONF_OPTIONS, optionstring);
+
+        std::list<QString> con = toMainWidget()->connections();
+        for (std::list<QString>::iterator i = con.begin();i != con.end();i++)
+        {
+            try
+            {
+                toConnection &conn = toMainWidget()->connection(*i);
+                if (conn.user() == Username->text() &&
+                        conn.provider() == Provider->currentText().latin1() &&
+                        conn.host() == host &&
+                        conn.database() == Database->currentText())
+                    return &conn;
+            }
+            catch (...)
+            {}
+        }
+        if (Port->value() != 0 && Port->value() != DefaultPort)
+            host += ":" + QString::number(Port->value());
+
+        toConfigurationSingle::Instance().globalSetConfig(CONF_HOST, host);
+
+        toConnection *retCon = new toConnection(Provider->currentText().latin1(),
+                                                Username->text(),
+                                                Password->text(),
+                                                host,
+                                                Database->currentText(),
+                                                options);
+        {
+            for (QListViewItem *item = Previous->firstChild();item;item = item->nextSibling())
+            {
+                if (item->text(0) == Provider->currentText() &&
+                        ((item->text(1) == host) || (item->text(1).isEmpty() && host.isEmpty())) &&
+                        item->text(2) == Database->currentText() &&
+                        item->text(3) == Username->text())
+                {
+                    delete item;
+                    break;
+                }
+            }
+        }
+
+        if (!toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD).isEmpty())
+            pass = retCon->password();
+        else
+            pass = DEFAULT_PASSWORD;
+        toConfigurationSingle::Instance().globalSetConfig(CONF_PASSWORD, toObfuscate(pass));
+        toConfigurationSingle::Instance().globalSetConfig(CONF_DATABASE, Database->currentText());
+
+        new QListViewItem(Previous, NULL,
+                          Provider->currentText(),
+                          host,
+                          Database->currentText(),
+                          Username->text(),
+                          retCon->password(),
+                          optionstring);
+        historySave();
+        return retCon;
+    }
+    catch (const QString &exc)
+    {
+        QString str = tr("Unable to connect to the database.\n");
+        str.append(exc);
+        TOMessageBox::information(this->parentWidget(false),
+                                  tr("Unable to connect to the database"),
+                                  str);
+        return NULL;
+    }
+}
+
+void toNewConnection::historySave(void)
+{
+    int siz = toConfigurationSingle::Instance().globalConfig(CONF_CONNECT_SIZE, DEFAULT_CONNECT_SIZE).toInt();
+    int i = 0;
+    int j = 0;
+
+    for (QListViewItem *item = Previous->firstChild();i < siz;item = (item ? item = item->nextSibling() : 0))
+    {
+        QCString path = CONF_CONNECT_HISTORY;
+        path += ":";
+        path += QString::number(i).latin1();
+
+        QCString tmp = path;
+        tmp += CONF_PROVIDER;
+        if (i < siz && item)
+            toConfigurationSingle::Instance().globalSetConfig(tmp, item->text(0));
+        else
+            toConfigurationSingle::Instance().globalEraseConfig(tmp);
+
+        tmp = path;
+        tmp += CONF_HOST;
+        if (i < siz && item)
+            toConfigurationSingle::Instance().globalSetConfig(tmp, item->text(1));
+        else
+            toConfigurationSingle::Instance().globalEraseConfig(tmp);
+
+        tmp = path;
+        tmp += CONF_DATABASE;
+        if (i < siz && item)
+            toConfigurationSingle::Instance().globalSetConfig(tmp, item->text(2));
+        else
+            toConfigurationSingle::Instance().globalEraseConfig(tmp);
+
+        tmp = path;
+        tmp += CONF_USER;
+        if (i < siz && item)
+            toConfigurationSingle::Instance().globalSetConfig(tmp, item->text(3));
+        else
+            toConfigurationSingle::Instance().globalEraseConfig(tmp);
+
+        tmp = path;
+        tmp += CONF_PASSWORD;
+        if (i < siz && item)
+            toConfigurationSingle::Instance().globalSetConfig(tmp, toObfuscate(item->text(4)));
+        else
+            toConfigurationSingle::Instance().globalEraseConfig(tmp);
+
+        tmp = path;
+        tmp += CONF_OPTIONS;
+        if (i < siz && item)
+            toConfigurationSingle::Instance().globalSetConfig(tmp, item->text(5));
+        else
+            toConfigurationSingle::Instance().globalEraseConfig(tmp);
+
+        i++;
+        if (i < siz && item)
+            j++;
+    }
+    toConfigurationSingle::Instance().globalSetConfig(CONF_CONNECT_CURRENT, QString::number(j));
+    toConfigurationSingle::Instance().saveConfig();
+}
+
+void toNewConnection::historySelection(void)
+{
+    QListViewItem *item = Previous->selectedItem();
+    if (item)
+    {
+        for (int i = 0;i < Provider->count();i++)
+            if (Provider->text(i) == item->text(0))
+            {
+                Provider->setCurrentItem(i);
+                break;
+            }
+        changeProvider();
+
+        QString host = item->text(1);
+        int portix = host.find(":");
+        if (portix >= 0)
+        {
+            Host->lineEdit()->setText(host.mid(0, portix));
+            Port->setValue(host.mid(portix + 1).toInt());
+        }
+        else
+        {
+            Host->lineEdit()->setText(host);
+            Port->setValue(DefaultPort);
+        }
+
+        processOptions(item->text(5));
+
+        Database->lineEdit()->setText(item->text(2));
+        Username->setText(item->text(3));
+        if (item->text(4) != DEFAULT_PASSWORD)
+            Password->setText(item->text(4));
+    }
+}
+
+void toNewConnection::historyConnect(void)
+{
+    bool ok = true;
+    if (toConfigurationSingle::Instance().globalConfig(CONF_SAVE_PWD, DEFAULT_SAVE_PWD).isEmpty())
+    {
+        ok = false;
+        QString name = QInputDialog::getText(tr("Enter password"),
+                                             tr("Enter password to use for connection."),
+                                             QLineEdit::Password, QString::null, &ok, this);
+        if (ok)
+            Password->setText(name);
+    }
+    if (ok)
+        accept();
+}
+void toNewConnection::menuCallback(int cmd)
+{
+    switch (cmd)
+    {
+    case TONEWCONNECTION_DELETE:
+        {
+            historyDelete();
+            break;
+        }
+    }
+}
+
+void toNewConnection::historyDelete()
+{
+    QListViewItem *item = Previous->selectedItem();
+    if (item)
+    {
+        Previous->takeItem(item);
+        delete item;
+        historySave();
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/tonewconnection.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tonewconnection.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tonewconnection.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,73 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TONEWCONNECTION_H
+#define TONEWCONNECTION_H
+
+#define TONEWCONNECTION_DELETE 1
+
+#include "config.h"
+#include "tonewconnectionui.h"
+#include "tohelp.h"
+
+class toNewConnection : public toNewConnectionUI, public toHelpContext
+{
+    Q_OBJECT
+
+    int DefaultPort;
+
+    QVBoxLayout *OptionGroupLayout;
+
+    std::map<QString, bool> Options;
+    std::list<QWidget *> OptionWidgets;
+
+    void processOptions(const QString &);
+public:
+    toNewConnection(QWidget* parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0);
+    ~toNewConnection();
+    toConnection *makeConnection();
+public slots:
+    virtual void historyDelete(void);
+    virtual void menuCallback(int);
+    virtual void historySelection(void);
+    virtual void changeProvider(void);
+    virtual void changeHost(void);
+    virtual void historyConnect(void);
+    virtual void historySave(void);
+};
+
+#endif // TONEWCONNECTION_H

Added: kde-extras/tora/branches/upstream/current/src/tonewconnectionui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tonewconnectionui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tonewconnectionui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,209 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tonewconnectionui.ui'
+**
+** Created: Tue Sep 18 08:21:29 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tonewconnectionui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qcombobox.h>
+#include <qspinbox.h>
+#include <qbuttongroup.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "toresultview.h"
+
+/*
+ *  Constructs a toNewConnectionUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toNewConnectionUI::toNewConnectionUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toNewConnectionUI" );
+    toNewConnectionUILayout = new QGridLayout( this, 1, 1, 11, 6, "toNewConnectionUILayout"); 
+
+    CancelButton = new QPushButton( this, "CancelButton" );
+    CancelButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, CancelButton->sizePolicy().hasHeightForWidth() ) );
+
+    toNewConnectionUILayout->addWidget( CancelButton, 13, 3 );
+
+    OkButton = new QPushButton( this, "OkButton" );
+    OkButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, OkButton->sizePolicy().hasHeightForWidth() ) );
+    OkButton->setDefault( TRUE );
+
+    toNewConnectionUILayout->addWidget( OkButton, 13, 2 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toNewConnectionUILayout->addMultiCell( Spacer1, 13, 13, 0, 1 );
+
+    Previous = new toListView( this, "Previous" );
+    Previous->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, Previous->sizePolicy().hasHeightForWidth() ) );
+    Previous->setFocusPolicy( toListView::StrongFocus );
+
+    toNewConnectionUILayout->addMultiCellWidget( Previous, 1, 12, 0, 0 );
+
+    TextLabel2 = new QLabel( this, "TextLabel2" );
+    TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) );
+
+    toNewConnectionUILayout->addWidget( TextLabel2, 0, 0 );
+
+    Password = new QLineEdit( this, "Password" );
+    Password->setEchoMode( QLineEdit::Password );
+
+    toNewConnectionUILayout->addMultiCellWidget( Password, 5, 5, 1, 3 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+    TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
+
+    toNewConnectionUILayout->addMultiCellWidget( TextLabel1, 2, 2, 1, 3 );
+
+    TextLabel1_2 = new QLabel( this, "TextLabel1_2" );
+    TextLabel1_2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, 0, 0, TextLabel1_2->sizePolicy().hasHeightForWidth() ) );
+
+    toNewConnectionUILayout->addMultiCellWidget( TextLabel1_2, 4, 4, 1, 3 );
+
+    Username = new QLineEdit( this, "Username" );
+
+    toNewConnectionUILayout->addMultiCellWidget( Username, 3, 3, 1, 3 );
+
+    ProviderLabel = new QLabel( this, "ProviderLabel" );
+
+    toNewConnectionUILayout->addMultiCellWidget( ProviderLabel, 0, 0, 1, 3 );
+
+    Provider = new QComboBox( FALSE, this, "Provider" );
+
+    toNewConnectionUILayout->addMultiCellWidget( Provider, 1, 1, 1, 3 );
+
+    Database = new QComboBox( FALSE, this, "Database" );
+    Database->setEditable( TRUE );
+    Database->setAutoCompletion( TRUE );
+    Database->setDuplicatesEnabled( FALSE );
+
+    toNewConnectionUILayout->addMultiCellWidget( Database, 10, 10, 1, 3 );
+
+    TextLabel3 = new QLabel( this, "TextLabel3" );
+
+    toNewConnectionUILayout->addMultiCellWidget( TextLabel3, 9, 9, 1, 3 );
+
+    Host = new QComboBox( FALSE, this, "Host" );
+    Host->setEditable( TRUE );
+    Host->setAutoCompletion( TRUE );
+    Host->setDuplicatesEnabled( FALSE );
+
+    toNewConnectionUILayout->addMultiCellWidget( Host, 7, 7, 1, 3 );
+
+    HostLabel = new QLabel( this, "HostLabel" );
+
+    toNewConnectionUILayout->addMultiCellWidget( HostLabel, 6, 6, 1, 3 );
+
+    PortLabel = new QLabel( this, "PortLabel" );
+
+    toNewConnectionUILayout->addMultiCellWidget( PortLabel, 8, 8, 1, 2 );
+
+    Port = new QSpinBox( this, "Port" );
+    Port->setMaxValue( 65535 );
+
+    toNewConnectionUILayout->addWidget( Port, 8, 3 );
+
+    OptionGroup = new QButtonGroup( this, "OptionGroup" );
+    OptionGroup->setFocusPolicy( QButtonGroup::StrongFocus );
+
+    toNewConnectionUILayout->addMultiCellWidget( OptionGroup, 11, 11, 1, 3 );
+    Spacer3 = new QSpacerItem( 20, 30, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toNewConnectionUILayout->addItem( Spacer3, 12, 1 );
+    languageChange();
+    resize( QSize(654, 424).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( OkButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( CancelButton, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( Provider, SIGNAL( activated(int) ), this, SLOT( changeProvider() ) );
+    connect( Host, SIGNAL( textChanged(const QString&) ), this, SLOT( changeHost() ) );
+
+    // tab order
+    setTabOrder( Provider, Username );
+    setTabOrder( Username, Password );
+    setTabOrder( Password, Host );
+    setTabOrder( Host, Port );
+    setTabOrder( Port, Database );
+    setTabOrder( Database, OptionGroup );
+    setTabOrder( OptionGroup, OkButton );
+    setTabOrder( OkButton, CancelButton );
+    setTabOrder( CancelButton, Previous );
+
+    // buddies
+    TextLabel2->setBuddy( Previous );
+    TextLabel1->setBuddy( Username );
+    TextLabel1_2->setBuddy( Password );
+    ProviderLabel->setBuddy( Provider );
+    TextLabel3->setBuddy( Database );
+    HostLabel->setBuddy( Host );
+    PortLabel->setBuddy( Host );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toNewConnectionUI::~toNewConnectionUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toNewConnectionUI::languageChange()
+{
+    setCaption( tr( "New connection" ) );
+    CancelButton->setText( tr( "Cancel" ) );
+    OkButton->setText( tr( "&Ok" ) );
+    TextLabel2->setText( tr( "&Previous connections" ) );
+    QToolTip::add( TextLabel2, tr( "A list of previous connections. Select to bring over to the right." ) );
+    TextLabel1->setText( tr( "&Username" ) );
+    QToolTip::add( TextLabel1, tr( "Username to connect with" ) );
+    TextLabel1_2->setText( tr( "&Password" ) );
+    QToolTip::add( TextLabel1_2, tr( "Password to connect with." ) );
+    ProviderLabel->setText( tr( "Connection provider" ) );
+    TextLabel3->setText( tr( "&Database" ) );
+    QToolTip::add( TextLabel3, tr( "Select the database ID to connect to." ) );
+    HostLabel->setText( tr( "&Host" ) );
+    QToolTip::add( HostLabel, tr( "Select the database ID to connect to." ) );
+    PortLabel->setText( tr( "&Port" ) );
+    QToolTip::add( PortLabel, tr( "Select the database ID to connect to." ) );
+    OptionGroup->setTitle( tr( "Options" ) );
+}
+
+void toNewConnectionUI::changeHost()
+{
+    qWarning( "toNewConnectionUI::changeHost(): Not implemented yet" );
+}
+
+void toNewConnectionUI::changeProvider()
+{
+    qWarning( "toNewConnectionUI::changeProvider(): Not implemented yet" );
+}
+
+void toNewConnectionUI::historySelection()
+{
+    qWarning( "toNewConnectionUI::historySelection(): Not implemented yet" );
+}
+
+void toNewConnectionUI::historyConnect()
+{
+    qWarning( "toNewConnectionUI::historyConnect(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tonewconnectionui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tonewconnectionui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tonewconnectionui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tonewconnectionui.ui'
+**
+** Created: Tue Sep 18 08:21:29 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TONEWCONNECTIONUI_H
+#define TONEWCONNECTIONUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toListView;
+class QPushButton;
+class QLabel;
+class QLineEdit;
+class QComboBox;
+class QSpinBox;
+class QButtonGroup;
+
+class toNewConnectionUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toNewConnectionUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toNewConnectionUI();
+
+    QPushButton* CancelButton;
+    QPushButton* OkButton;
+    toListView* Previous;
+    QLabel* TextLabel2;
+    QLineEdit* Password;
+    QLabel* TextLabel1;
+    QLabel* TextLabel1_2;
+    QLineEdit* Username;
+    QLabel* ProviderLabel;
+    QComboBox* Provider;
+    QComboBox* Database;
+    QLabel* TextLabel3;
+    QComboBox* Host;
+    QLabel* HostLabel;
+    QLabel* PortLabel;
+    QSpinBox* Port;
+    QButtonGroup* OptionGroup;
+
+public slots:
+    virtual void changeHost();
+    virtual void changeProvider();
+    virtual void historySelection();
+    virtual void historyConnect();
+
+protected:
+    QGridLayout* toNewConnectionUILayout;
+    QSpacerItem* Spacer1;
+    QSpacerItem* Spacer3;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TONEWCONNECTIONUI_H

Added: kde-extras/tora/branches/upstream/current/src/tonewconnectionui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tonewconnectionui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tonewconnectionui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,370 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>toNewConnectionUI</class>
+<widget class="QDialog">
+    <property name="name">
+        <cstring>toNewConnectionUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>654</width>
+            <height>424</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>New connection</string>
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>11</number>
+        </property>
+        <property name="spacing">
+            <number>6</number>
+        </property>
+        <widget class="QPushButton" row="13" column="3">
+            <property name="name">
+                <cstring>CancelButton</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="text">
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <widget class="QPushButton" row="13" column="2">
+            <property name="name">
+                <cstring>OkButton</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="text">
+                <string>&amp;Ok</string>
+            </property>
+            <property name="default">
+                <bool>true</bool>
+            </property>
+        </widget>
+        <spacer row="13" column="0" rowspan="1" colspan="2">
+            <property name="name">
+                <cstring>Spacer1</cstring>
+            </property>
+            <property name="orientation">
+                <enum>Horizontal</enum>
+            </property>
+            <property name="sizeType">
+                <enum>Expanding</enum>
+            </property>
+            <property name="sizeHint">
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget class="toListView" row="1" column="0" rowspan="12" colspan="1">
+            <property name="name">
+                <cstring>Previous</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>7</hsizetype>
+                    <vsizetype>7</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="focusPolicy">
+                <enum>StrongFocus</enum>
+            </property>
+        </widget>
+        <widget class="QLabel" row="0" column="0">
+            <property name="name">
+                <cstring>TextLabel2</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="text">
+                <string>&amp;Previous connections</string>
+            </property>
+            <property name="buddy" stdset="0">
+                <cstring>Previous</cstring>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>A list of previous connections. Select to bring over to the right.</string>
+            </property>
+        </widget>
+        <widget class="QLineEdit" row="5" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>Password</cstring>
+            </property>
+            <property name="echoMode">
+                <enum>Password</enum>
+            </property>
+        </widget>
+        <widget class="QLabel" row="2" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="text">
+                <string>&amp;Username</string>
+            </property>
+            <property name="buddy" stdset="0">
+                <cstring>Username</cstring>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>Username to connect with</string>
+            </property>
+        </widget>
+        <widget class="QLabel" row="4" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>TextLabel1_2</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>7</hsizetype>
+                    <vsizetype>1</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="text">
+                <string>&amp;Password</string>
+            </property>
+            <property name="buddy" stdset="0">
+                <cstring>Password</cstring>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>Password to connect with.</string>
+            </property>
+        </widget>
+        <widget class="QLineEdit" row="3" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>Username</cstring>
+            </property>
+        </widget>
+        <widget class="QLabel" row="0" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>ProviderLabel</cstring>
+            </property>
+            <property name="text">
+                <string>Connection provider</string>
+            </property>
+            <property name="buddy" stdset="0">
+                <cstring>Provider</cstring>
+            </property>
+        </widget>
+        <widget class="QComboBox" row="1" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>Provider</cstring>
+            </property>
+        </widget>
+        <widget class="QComboBox" row="10" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>Database</cstring>
+            </property>
+            <property name="editable">
+                <bool>true</bool>
+            </property>
+            <property name="autoCompletion">
+                <bool>true</bool>
+            </property>
+            <property name="duplicatesEnabled">
+                <bool>false</bool>
+            </property>
+        </widget>
+        <widget class="QLabel" row="9" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>TextLabel3</cstring>
+            </property>
+            <property name="text">
+                <string>&amp;Database</string>
+            </property>
+            <property name="buddy" stdset="0">
+                <cstring>Database</cstring>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>Select the database ID to connect to.</string>
+            </property>
+        </widget>
+        <widget class="QComboBox" row="7" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>Host</cstring>
+            </property>
+            <property name="editable">
+                <bool>true</bool>
+            </property>
+            <property name="autoCompletion">
+                <bool>true</bool>
+            </property>
+            <property name="duplicatesEnabled">
+                <bool>false</bool>
+            </property>
+        </widget>
+        <widget class="QLabel" row="6" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>HostLabel</cstring>
+            </property>
+            <property name="text">
+                <string>&amp;Host</string>
+            </property>
+            <property name="buddy" stdset="0">
+                <cstring>Host</cstring>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>Select the database ID to connect to.</string>
+            </property>
+        </widget>
+        <widget class="QLabel" row="8" column="1" rowspan="1" colspan="2">
+            <property name="name">
+                <cstring>PortLabel</cstring>
+            </property>
+            <property name="text">
+                <string>&amp;Port</string>
+            </property>
+            <property name="buddy" stdset="0">
+                <cstring>Host</cstring>
+            </property>
+            <property name="toolTip" stdset="0">
+                <string>Select the database ID to connect to.</string>
+            </property>
+        </widget>
+        <widget class="QSpinBox" row="8" column="3">
+            <property name="name">
+                <cstring>Port</cstring>
+            </property>
+            <property name="maxValue">
+                <number>65535</number>
+            </property>
+        </widget>
+        <widget class="QButtonGroup" row="11" column="1" rowspan="1" colspan="3">
+            <property name="name">
+                <cstring>OptionGroup</cstring>
+            </property>
+            <property name="focusPolicy">
+                <enum>StrongFocus</enum>
+            </property>
+            <property name="title">
+                <string>Options</string>
+            </property>
+        </widget>
+        <spacer row="12" column="1">
+            <property name="name">
+                <cstring>Spacer3</cstring>
+            </property>
+            <property name="orientation">
+                <enum>Vertical</enum>
+            </property>
+            <property name="sizeType">
+                <enum>Expanding</enum>
+            </property>
+            <property name="sizeHint">
+                <size>
+                    <width>20</width>
+                    <height>30</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toListView</class>
+        <header location="local">toresultview.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>7</hordata>
+            <verdata>7</verdata>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image name="image0">
+        <data format="XPM.GZ" length="45">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523250004143a55a6b2e0026630c4f</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>OkButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toNewConnectionUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>CancelButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toNewConnectionUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>Provider</sender>
+        <signal>activated(int)</signal>
+        <receiver>toNewConnectionUI</receiver>
+        <slot>changeProvider()</slot>
+    </connection>
+    <connection>
+        <sender>Host</sender>
+        <signal>textChanged(const QString&amp;)</signal>
+        <receiver>toNewConnectionUI</receiver>
+        <slot>changeHost()</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>Provider</tabstop>
+    <tabstop>Username</tabstop>
+    <tabstop>Password</tabstop>
+    <tabstop>Host</tabstop>
+    <tabstop>Port</tabstop>
+    <tabstop>Database</tabstop>
+    <tabstop>OptionGroup</tabstop>
+    <tabstop>OkButton</tabstop>
+    <tabstop>CancelButton</tabstop>
+    <tabstop>Previous</tabstop>
+</tabstops>
+<slots>
+    <slot>changeHost()</slot>
+    <slot>changeProvider()</slot>
+    <slot>historySelection()</slot>
+    <slot>historyConnect()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+<includehints>
+    <includehint>toresultview.h</includehint>
+</includehints>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tonoblockquery.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tonoblockquery.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tonoblockquery.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,499 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "tonoblockquery.h"
+#include "toresultstats.h"
+#include "totool.h"
+
+#include <qapplication.h>
+
+#include <signal.h>
+#include <sys/types.h>
+#ifndef WIN32
+#include <unistd.h>
+#endif
+#include <stdio.h>
+
+#undef TO_DEBUG
+#ifdef TO_DEBUG
+#include <stdio.h>
+#define TO_DEBUGOUT(x) fprintf(stderr,(const char *)x);
+#else
+#define TO_DEBUGOUT(x)
+#endif
+
+#define PREFETCH_SIZE 5000
+
+void toNoBlockQuery::queryTask::run(void)
+{
+    TO_DEBUGOUT("Thread started\n");
+    int Length = 0;
+    try
+    {
+        TO_DEBUGOUT("Open query\n");
+        if (Parent.Query)
+            Parent.Query->execute(Parent.SQL, Parent.Param);
+
+        bool eof = true;
+        {
+            TO_DEBUGOUT("Locking description\n");
+            toLocker lock (Parent.Lock)
+                ;
+            if (Parent.Query)
+            {
+                Parent.Description = Parent.Query->describe();
+                Length = Parent.Query->columns();
+                eof = Parent.Query->eof();
+            }
+        }
+
+        if (!eof)
+        {
+            bool signaled = false;
+            for (;;)
+            {
+                for (int i = 0;i < Length && Parent.Query;i++)
+                {
+                    TO_DEBUGOUT("Reading value\n");
+                    toQValue value(Parent.Query->readValueNull());
+                    {
+                        TO_DEBUGOUT("Locking parent\n");
+                        toLocker lock (Parent.Lock)
+                            ;
+                        Parent.ReadingValues.insert(Parent.ReadingValues.end(), value);
+                        if (Parent.ReadingValues.size() == 1)
+                        {
+                            if (signaled)
+                            {
+                                Parent.Lock.unlock();
+                                TO_DEBUGOUT("Pulling down continue\n");
+                                Parent.Continue.down();
+                                Parent.Lock.lock();
+                            }
+                            TO_DEBUGOUT("Running up\n");
+                            Parent.Running.up();
+                            signaled = true;
+                        }
+                    }
+                }
+                TO_DEBUGOUT("Locking to check size\n");
+                toLocker lock (Parent.Lock)
+                    ;
+                if (!Parent.Query || Parent.Query->eof())
+                    break;
+                else
+                {
+                    if (Parent.ReadingValues.size() > PREFETCH_SIZE)
+                    {
+                        Parent.Lock.unlock();
+                        TO_DEBUGOUT("Waiting for next\n");
+                        Parent.Continue.down();
+                        TO_DEBUGOUT("Done waiting\n");
+                        signaled = false;
+                        Parent.Lock.lock();
+                    }
+                }
+                if (Parent.Quit)
+                    break;
+            }
+        }
+        TO_DEBUGOUT("EOQ\n");
+        if (Parent.Query)
+            Parent.Processed = Parent.Query->rowsProcessed();
+        else
+            Parent.Processed = 0;
+    }
+    catch (const toConnection::exception &str)
+    {
+        TO_DEBUGOUT("Locking exception string\n");
+        toLocker lock (Parent.Lock)
+            ;
+        Parent.Error = str;
+    }
+    catch (const QString &str)
+    {
+        TO_DEBUGOUT("Locking exception string\n");
+        toLocker lock (Parent.Lock)
+            ;
+        Parent.Error = str;
+    }
+    catch (...)
+    {
+        TO_DEBUGOUT("Unknown exception\n");
+        toLocker lock (Parent.Lock)
+            ;
+        Parent.Error = qApp->translate("toNoBlockQuery", "Unknown exception");
+    }
+
+    TO_DEBUGOUT("Locking EOQ\n");
+    toLocker lock (Parent.Lock)
+        ;
+    TO_DEBUGOUT("Deleting query\n");
+    if (!Parent.Error && !Parent.Query->eof())
+        try
+        {
+            Parent.Query->cancel();
+        }
+        catch (...)
+        {}
+    delete Parent.Query;
+    Parent.Query = NULL;
+    TO_DEBUGOUT("Running up\n");
+    Parent.Running.up();
+    Parent.EOQ = true;
+    TO_DEBUGOUT("Done\n");
+}
+
+toQValue toNoBlockQuery::readValueNull()
+{
+    if (CurrentValue == Values.end())
+    {
+        TO_DEBUGOUT("Waiting for running\n");
+        Lock.lock();
+        bool eoq = EOQ;
+        Lock.unlock();
+        if (!eoq)
+            Running.down();
+        TO_DEBUGOUT("Locking reading\n");
+        toLocker lock (Lock)
+            ;
+        Values = ReadingValues;
+        CurrentValue = Values.begin();
+        ReadingValues.clear();
+        TO_DEBUGOUT("Continue running\n");
+        Continue.up();
+        if (CurrentValue == Values.end())
+            throw qApp->translate("toNoBlockQuery", "Reading past end of query");
+    }
+    checkError();
+    toQValue ret = *CurrentValue;
+    CurrentValue++;
+    return ret;
+}
+
+toQValue toNoBlockQuery::readValue()
+{
+    return toNull(readValueNull());
+}
+
+toNoBlockQuery::toNoBlockQuery(toConnection &conn, const QString &sql,
+                               const toQList &param, toResultStats *stats)
+        : SQL(sql),
+        Error(QString::null),
+        Param(param),
+        Statistics(stats)
+{
+    CurrentValue = Values.end();
+    Quit = EOQ = false;
+    Processed = 0;
+
+    try
+    {
+        Query = NULL;
+        Query = new toQuery(conn, toQuery::Long);
+    }
+    catch (...)
+    {
+        delete Query;
+        Query = NULL;
+        Error = qApp->translate("toNoBlockQuery", "Couldn't open query");
+        return ;
+    }
+    TO_DEBUGOUT("Created no block query\n");
+
+    try
+    {
+        if (Statistics)
+            Statistics->changeSession(*Query);
+    }
+    catch (...)
+    {
+        Statistics = NULL;
+    }
+
+    int val = toConfigurationSingle::Instance().globalConfig(CONF_AUTO_LONG, "0").toInt();
+    if (val != 0)
+        Started = time(NULL) + val;
+    else
+        Started = 0;
+
+    toLocker lock (Lock)
+        ;
+    TO_DEBUGOUT("Creating thread\n");
+    try
+    {
+        toThread *thread = new toThread(new queryTask(*this));
+        TO_DEBUGOUT("Created thread\n");
+        thread->start();
+        TO_DEBUGOUT("Started thread\n");
+    }
+    catch (...)
+    {
+        Error = qApp->translate("toNoBlockQuery", "Failed to start background query thread");
+        while (Running.getValue())
+            Running.down();
+        Quit = EOQ = true;
+        delete Query;
+        Query = NULL;
+    }
+}
+
+toNoBlockQuery::toNoBlockQuery(toConnection &conn, toQuery::queryMode mode,
+                               const QString &sql, const toQList &param, toResultStats *stats)
+        : SQL(sql),
+        Error(QString::null),
+        Param(param),
+        Statistics(stats)
+{
+    try
+    {
+        Query = NULL;
+        Query = new toQuery(conn, mode);
+    }
+    catch (...)
+    {
+        delete Query;
+        Query = NULL;
+        Error = qApp->translate("toNoBlockQuery", "Couldn't open query");
+        return ;
+    }
+    TO_DEBUGOUT("Created no block query\n");
+    CurrentValue = Values.end();
+    Quit = EOQ = false;
+    Processed = 0;
+
+    try
+    {
+        if (Statistics)
+            Statistics->changeSession(*Query);
+    }
+    catch (...)
+    {
+        Statistics = NULL;
+    }
+
+    int val = toConfigurationSingle::Instance().globalConfig(CONF_AUTO_LONG, "0").toInt();
+    if (val != 0)
+        Started = time(NULL) + val;
+    else
+        Started = 0;
+
+    toLocker lock (Lock)
+        ;
+    TO_DEBUGOUT("Creating thread\n");
+    try
+    {
+        toThread *thread = new toThread(new queryTask(*this));
+        TO_DEBUGOUT("Created thread\n");
+        thread->start();
+        TO_DEBUGOUT("Started thread\n");
+    }
+    catch (...)
+    {
+        Error = qApp->translate("toNoBlockQuery", "Failed to start background query thread");
+        while (Running.getValue())
+            Running.down();
+        Quit = EOQ = true;
+        delete Query;
+        Query = NULL;
+    }
+}
+
+toQDescList &toNoBlockQuery::describe(void)
+{
+    TO_DEBUGOUT("Locking describe\n");
+    toLocker lock (Lock)
+        ;
+    checkError();
+    return Description;
+}
+
+bool toNoBlockQuery::eof(void)
+{
+    TO_DEBUGOUT("Locking eof\n");
+    toLocker lock (Lock)
+        ;
+    checkError();
+    return EOQ && CurrentValue == Values.end() && !ReadingValues.size();
+}
+
+int toNoBlockQuery::rowsProcessed(void)
+{
+    TO_DEBUGOUT("Locking processed\n");
+    toLocker lock (Lock)
+        ;
+    checkError();
+    return Processed;
+}
+
+void toNoBlockQuery::stop(void)
+{
+    Lock.lock();
+    int sleep = 100;
+    while (!EOQ)
+    {
+        TO_DEBUGOUT("Locking clear values\n");
+        Quit = true;
+        ReadingValues.clear();
+        Continue.up();
+        Lock.unlock();
+
+        toThread::msleep(sleep);
+
+        Lock.lock();
+        if (Running.getValue() == 0)
+        {
+            TO_DEBUGOUT("Query cancel\n");
+            if (Query)
+            {
+                Query->cancel();
+                sleep += 100;
+            }
+        }
+    }
+    Lock.unlock();
+
+    if (Statistics)
+    {
+        TO_DEBUGOUT("Get statistics\n");
+        Statistics->refreshStats(false);
+    }
+    while (Query)
+    {
+        fprintf(stderr, "Internal error, query not deleted after stopping it.\n");
+        toThread::msleep(100);
+    }
+    TO_DEBUGOUT("Done deleting\n");
+}
+
+toNoBlockQuery::~toNoBlockQuery()
+{
+    try
+    {
+        stop();
+    }
+    TOCATCH
+}
+
+bool toNoBlockQuery::poll(void)
+{
+    unsigned int count = 0;
+    for (toQList::iterator i = CurrentValue;i != Values.end();i++)
+        count++;
+    if (Running.getValue() > 0)
+    {
+        toLocker lock (Lock)
+            ;
+        count += ReadingValues.size();
+    }
+
+    if ((count >= Description.size() && Description.size() > 0) || eof())
+        return true;
+
+    Lock.lock();
+    if (Started > 0 && Started < time(NULL) && !Description.size())
+    {
+        if (Query && (Query->mode() == toQuery::Normal || Query->mode() == toQuery::Background))
+        {
+            try
+            {
+                toStatusMessage(qApp->translate("toNoBlockQuery", "Restarting query in own connection"), false, false);
+                toConnection &conn = Query->connection();
+                Lock.unlock();
+                TO_DEBUGOUT("Stopping normal query\n");
+                stop();
+                toLocker lock (Lock)
+                    ;
+                while (Running.getValue() > 0)
+                    Running.down();
+                while (Continue.getValue() > 0)
+                    Continue.down();
+                Error = QString::null;
+                ReadingValues.clear();
+                Values.clear();
+                CurrentValue = Values.end();
+                Quit = EOQ = false;
+                Processed = 0;
+
+                TO_DEBUGOUT("Creating new long query\n");
+                Query = new toQuery(conn, toQuery::Long);
+
+                try
+                {
+                    if (Statistics)
+                        Statistics->changeSession(*Query);
+                }
+                catch (...)
+                {
+                    Statistics = NULL;
+                }
+
+                toThread *thread = new toThread(new queryTask(*this));
+                TO_DEBUGOUT("Created thread\n");
+                thread->start();
+                TO_DEBUGOUT("Started thread\n");
+            }
+            catch (...)
+            {
+                Error = qApp->translate("toNoBlockQuery", "Failed to start background query thread");
+                while (Running.getValue())
+                    Running.down();
+                Quit = EOQ = true;
+                delete Query;
+                Query = NULL;
+            }
+        }
+        else
+            Lock.unlock();
+    }
+    else
+        Lock.unlock();
+
+    return false;
+}
+
+void toNoBlockQuery::checkError()
+{
+    if (!Error.isNull())
+    {
+        TO_DEBUGOUT("Throwing exception\n");
+        throw Error;
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/tonoblockquery.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tonoblockquery.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tonoblockquery.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,179 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TONOBLOCKQUERY_H
+#define TONOBLOCKQUERY_H
+
+#include "config.h"
+#include "toconnection.h"
+#include "tothread.h"
+
+#include <time.h>
+
+class toResultStats;
+
+/** This is class to be able to run a query in the background without
+ * blocking until a response is available from OCI.
+ */
+
+class toNoBlockQuery
+{
+private:
+    /** A task to implement running the query.
+     */
+class queryTask : public toTask
+    {
+        toNoBlockQuery &Parent;
+    public:
+        queryTask(toNoBlockQuery &parent)
+                : Parent(parent)
+        { }
+        virtual void run(void);
+    };
+    friend class queryTask;
+
+    /** This semaphore indicates wether the query is still running.
+     */
+    toSemaphore Running;
+    /** This semaphore indicates wether the child thread should
+     * continue reading values.
+     */
+    toSemaphore Continue;
+    /** Lock for all this stuff
+     */
+    toLock Lock;
+    /** Current location that values are being read.
+     */
+    toQList::iterator CurrentValue;
+    /** Values read by the task. This can be changed without holding @ref Lock.
+     */
+    toQList ReadingValues;
+    /** Values ready to be read by client.
+     */
+    toQList Values;
+    /** Indicator if at end of query.
+     */
+    bool EOQ;
+    /** Indicator if to quit reading from query.
+     */
+    bool Quit;
+    /** SQL to execute.
+     */
+    QString SQL;
+    /** Error string if error occurs.
+     */
+    toConnection::exception Error;
+    /** Number of rows processed.
+     */
+    int Processed;
+    /** Parameters to pass to query before execution.
+     */
+    toQList Param;
+    /** Statistics to be used if any.
+     */
+    toResultStats *Statistics;
+    /** Description of result
+     */
+    toQDescList Description;
+    /** When query is executed
+     */
+    time_t Started;
+    /** Query used to run query
+     */
+    toQuery *Query;
+    /** Throw error if any.
+     */
+    void checkError();
+    /** Stop reading query
+     */
+    void stop();
+public:
+    /** Create a new query.
+     * @param conn Connection to run on.
+     * @param sql SQL to execute.
+     * @param param Parameters to pass to query.
+     * @param statistics Optional statistics widget to update with values from query.
+     */
+    toNoBlockQuery(toConnection &conn,
+                   const QString &sql,
+                   const toQList &param,
+                   toResultStats *statistics = NULL);
+    /** Create a new query.
+     * @param conn Connection to run on.
+     * @param mode Query mode to execute query in.
+     * @param sql SQL to execute.
+     * @param param Parameters to pass to query.
+     * @param statistics Optional statistics widget to update with values from query.
+     */
+    toNoBlockQuery(toConnection &conn,
+                   toQuery::queryMode mode,
+                   const QString &sql,
+                   const toQList &param,
+                   toResultStats *statistics = NULL);
+    virtual ~toNoBlockQuery();
+
+    /** Poll if any result is available.
+     * @return True if at least one row is available.
+     */
+    bool poll(void);
+
+    /** Get description of columns.
+     * @return Description of columns list. Don't modify this list.
+     */
+    toQDescList &describe(void);
+
+    /** Read the next value from the query.
+     * @return The next available value.
+     */
+    toQValue readValue(void);
+    /** Read the next value from the query. Don't send NULL as string.
+     * @return The next available value.
+     */
+    toQValue readValueNull(void);
+
+    /** Get the number of rows processed.
+     * @return Number of rows processed.
+     */
+    int rowsProcessed(void);
+
+    /** Check if at end of query.
+     * @return True if query is done.
+     */
+    bool eof(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toocistub.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toocistub.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toocistub.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,194 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include <windows.h>
+
+#define OCI_ERROR -1
+typedef signed int sword;
+
+#define TO_EXPORT __declspec(dllexport)
+
+extern "C"
+{
+
+    BOOL APIENTRY DllMain(HANDLE hModule,
+                          DWORD ul_reason_for_call,
+                          LPVOID lpReserved)
+    {
+        switch (ul_reason_for_call)
+        {
+        case DLL_PROCESS_ATTACH:
+        case DLL_THREAD_ATTACH:
+        case DLL_THREAD_DETACH:
+        case DLL_PROCESS_DETACH:
+            break;
+        }
+        return TRUE;
+    }
+
+    TO_EXPORT sword OCIEnvInit()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIHandleAlloc()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIServerAttach()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIAttrGet()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIAttrSet()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCISessionBegin()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCISessionEnd()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIBreak()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIBindByName()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIInitialize()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIHandleFree()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCILobGetLength()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCILobLocatorIsInit()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCILobRead()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIStmtPrepare()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIStmtExecute()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCITransCommit()
+    {
+        return OCI_ERROR;
+    }
+
+
+    TO_EXPORT sword OCITransRollback()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIDescriptorAlloc()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIDescriptorFree()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIParamGet()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIServerDetach()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCILobWrite()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIStmtFetch()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIDefineByPos()
+    {
+        return OCI_ERROR;
+    }
+
+    TO_EXPORT sword OCIErrorGet()
+    {
+        return OCI_ERROR;
+    }
+
+}

Added: kde-extras/tora/branches/upstream/current/src/tooracleconnection.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tooracleconnection.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tooracleconnection.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1435 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#ifdef WIN32
+#  include "windows/cregistry.h"
+#include <Windows.h>
+#endif
+
+#define OTL_STL
+#define OTL_STREAM_POOLING_ON
+
+#include "otlv4.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <stdio.h>
+#include <iostream>
+
+#include <qcheckbox.h>
+#include <qfile.h>
+#include <qinputdialog.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qregexp.h>
+#include <qspinbox.h>
+#include <qvalidator.h>
+
+#include "tooraclesettingui.h"
+#include "tooraclesettingui.moc"
+
+#define CONF_OPEN_CURSORS "OpenCursors"
+#define DEFAULT_OPEN_CURSORS "40"  // Defined to be able to update tuning view
+#define CONF_MAX_LONG  "MaxLong"
+
+// Must be larger than max long size in otl.
+
+#ifndef DEFAULT_MAX_LONG
+#define DEFAULT_MAX_LONG 30000
+#endif
+
+static int toMaxLong = DEFAULT_MAX_LONG;
+
+static toSQL SQLComment("toOracleConnection:Comments",
+                        "SELECT /*+ RULE */ Column_name,Comments FROM sys.All_Col_Comments\n"
+                        " WHERE Owner = :f1<char[100]>\n"
+                        "   AND Table_Name = :f2<char[100]>",
+                        "Display column comments");
+
+static toSQL SQLMembers("toOracleConnection:Members",
+                        "SELECT /*+ RULE */ object_name,overload,argument_name,data_type\n"
+                        "  FROM sys.All_Arguments\n"
+                        " WHERE Owner = :f1<char[100]>\n"
+                        "   AND Package_Name = :f2<char[100]>\n"
+                        " ORDER BY object_name,overload,DECODE(argument_name,NULL,9999,sequence)",
+                        "Get list of package members");
+
+static toSQL SQLListObjects("toOracleConnection:ListObjects",
+                            "select /*+ RULE */ a.owner,a.object_name,a.object_type,b.comments\n"
+                            "  from sys.all_objects a,\n"
+                            "       sys.all_tab_comments b\n"
+                            " where a.owner = b.owner(+) and a.object_name = b.table_name(+)\n"
+                            "   and a.object_type = b.table_type(+) and a.object_type != 'SYNONYM'",
+                            "List the objects to cache for a connection, should have same "
+                            "columns and binds");
+
+static toSQL SQLListSynonyms("toOracleConnection:ListSynonyms",
+                             "select /*+ RULE */ synonym_name,table_owner,table_name\n"
+                             "  from sys.all_synonyms\n"
+                             " where owner = :usr<char[101]> or owner = 'PUBLIC'\n"
+                             " order by table_owner,table_name",
+                             "List the synonyms available to a user, should have same columns and binds");
+
+static void ThrowException(const otl_exception &exc)
+{
+    if (exc.code == 24344)
+        throw toConnection::exception(QString::fromLatin1("ORA-24344 success with compilation error"));
+    else
+    {
+        toConnection::exception ret(QString::fromUtf8((const char *)exc.msg));
+
+        if (ret.isEmpty())
+        {
+            if (exc.code != 0)
+            {
+                ret = QString::fromLatin1("ORA-") +
+                      QString::number(exc.code) +
+                      QString::fromLatin1(" missing error description");
+            }
+            else if (ret.isEmpty())
+            {
+                ret = QString::fromLatin1(
+                          "Missing error description, could occur if you have several ORACLE_HOME and the binary directory\n"
+                          "of the one which is not active is before the active ORACLE_HOME in your path");
+            }
+        }
+
+        if (exc.stm_text && strlen(exc.stm_text))
+        {
+            ret += QString::fromLatin1("\n");
+            QString sql = QString::fromUtf8((const char *)exc.stm_text);
+            if (exc.code >= 0)
+            {
+                QString t = QString::fromUtf8((const char *)exc.stm_text, exc.error_offset);
+                ret.setOffset(t.length());
+                sql.insert(t.length(), QString::fromLatin1("<ERROR>"));
+            }
+            ret += sql;
+        }
+        throw ret;
+    }
+}
+
+class toOracleProvider : public toConnectionProvider
+{
+public:
+class connectionDeleter : public toTask
+    {
+        otl_connect *Connection;
+    public:
+        connectionDeleter(otl_connect *connect)
+                : Connection(connect)
+        { }
+        virtual void run(void)
+        {
+            delete Connection;
+        }
+    };
+class oracleSub : public toConnectionSub
+    {
+    public:
+        toSemaphore Lock;
+        otl_connect *Connection;
+        oracleSub(otl_connect *conn)
+                : Lock(1)
+        {
+            Connection = conn;
+        }
+        ~oracleSub()
+        {
+            toThread *thread = new toThread(new connectionDeleter(Connection));
+            thread->start();
+        }
+        virtual void cancel(void)
+        {
+            Connection->cancel();
+        }
+        virtual void throwExtendedException(toConnection &conn, const otl_exception &exc)
+        {
+            if (conn.version() < "0800" && exc.code == 0)
+            {
+                // Serious OCI voodoo to get the Parse error location on Oracle7 servers
+
+                Lda_Def lda;
+                Cda_Def cda;
+                if (OCISvcCtxToLda(Connection->connect_struct.svchp,
+                                   Connection->connect_struct.errhp,
+                                   &lda) == OCI_SUCCESS)
+                {
+                    if (oopen(&cda,
+                              &lda,
+                              (OraText *)0, -1,
+                              -1,
+                              (OraText *)0, -1) == OCI_SUCCESS)
+                    {
+                        cda.peo = 0;
+                        oparse(&cda, (OraText *)exc.stm_text, -1, FALSE, 1);
+                        ((otl_exception &)exc).code = cda.peo;
+                        oclose(&cda);
+                    }
+                    OCILdaToSvcCtx(&Connection->connect_struct.svchp,
+                                   Connection->connect_struct.errhp,
+                                   &lda);
+                }
+            }
+            ThrowException(exc);
+        }
+    };
+
+class oracleQuery : public toQuery::queryImpl
+    {
+        bool Cancel;
+        bool Running;
+        bool SaveInPool;
+        otl_stream *Query;
+    public:
+        oracleQuery(toQuery *query, oracleSub *)
+                : toQuery::queryImpl(query)
+        {
+            Running = Cancel = false;
+            SaveInPool = false;
+            Query = NULL;
+        }
+        virtual ~oracleQuery()
+        {
+#ifdef OTL_STREAM_POOLING_ON
+            if (!SaveInPool && Query)
+                Query->close(false);
+#endif
+
+            delete Query;
+        }
+        virtual void execute(void);
+
+        virtual toQValue readValue(void)
+        {
+            char *buffer = NULL;
+            otl_var_desc *dsc = Query->describe_next_out_var();
+            if (!dsc)
+                throw QString::fromLatin1("Couldn't get description of next column to read");
+
+            oracleSub *conn = dynamic_cast<oracleSub *>(query()->connectionSub());
+            if (!conn)
+                throw QString::fromLatin1("Internal error, not oracle sub connection");
+            conn->Lock.down();
+            if (Cancel)
+                throw QString::fromLatin1("Cancelled while waiting to read value");
+            Running = true;
+            SaveInPool = true;
+            try
+            {
+                toQValue null;
+                switch (dsc->ftype)
+                {
+                case otl_var_double:
+                case otl_var_float:
+                    {
+                        double d = 0;
+                        (*Query) >> d;
+                        Running = false;
+                        conn->Lock.up();
+                        if (Query->is_null())
+                            return null;
+                        return toQValue(d);
+                    }
+                    break;
+                case otl_var_int:
+                case otl_var_unsigned_int:
+                case otl_var_short:
+                case otl_var_long_int:
+                    {
+                        int i = 0;
+                        (*Query) >> i;
+                        Running = false;
+                        conn->Lock.up();
+                        if (Query->is_null())
+                            return null;
+                        return toQValue(i);
+                    }
+                    break;
+                case otl_var_varchar_long:
+                case otl_var_raw:
+                case otl_var_raw_long:
+                    {
+                        int len = toMaxLong;
+                        if (toMaxLong < 0)
+                            len = DEFAULT_MAX_LONG;
+                        buffer = (char *)malloc(len + 1);
+                        buffer[len] = 0;
+                        otl_long_string str(buffer, len);
+                        (*Query) >> str;
+                        Running = false;
+                        conn->Lock.up();
+                        if (!str.len())
+                            return null;
+                        QString buf;
+                        if (dsc->ftype == otl_var_varchar_long)
+                        {
+                            buf = (QString::fromUtf8(buffer));
+                            free(buffer);
+                            return buf;
+                        }
+                        else
+                        {
+                            QByteArray ret;
+                            ret.assign(buffer, str.len());
+                            return toQValue::createBinary(ret);
+                        }
+                    }
+                case otl_var_clob:
+                case otl_var_blob:
+                    {
+                        otl_lob_stream lob;
+                        (*Query) >> lob;
+                        if (lob.len() == 0)
+                        {
+                            Running = false;
+                            conn->Lock.up();
+                            return null;
+                        }
+                        int len = lob.len();
+                        if (toMaxLong >= 0 && len > toMaxLong)
+                            len = toMaxLong;
+                        if (dsc->ftype == otl_var_clob)
+                            len *= 5;
+                        else
+                            len *= 2;
+                        buffer = (char *)malloc(len + 1);
+                        buffer[0] = 0;
+                        otl_long_string data(buffer, len);
+                        lob >> data;
+                        if (!lob.eof())
+                        {
+                            otl_long_string sink(10000);
+                            do
+                            {
+                                lob >> sink;
+                            }
+                            while (!lob.eof() && sink.len() > 0);
+                            if (toThread::mainThread())
+                                toStatusMessage(QString::fromLatin1("Data exists past length of LOB"));
+                            else
+                                printf("Data exists past length of LOB in thread\n");
+                        }
+                        buffer[data.len()] = 0;
+                        Running = false;
+                        conn->Lock.up();
+
+                        if (dsc->ftype == otl_var_clob)
+                        {
+                            QString buf = QString::fromUtf8(buffer);
+                            free(buffer);
+                            return buf;
+                        }
+                        else
+                        {
+                            QByteArray ret;
+                            ret.assign(buffer, data.len());
+                            return toQValue::createBinary(ret);
+                        }
+                    }
+                    break;
+                default:       // Try using char if all else fails
+                    {
+                        // The *5 is for raw columns or UTF expanded data, also dates and numbers
+                        // are a bit tricky but if someone specifies a dateformat longer than 100 bytes he
+                        // deserves everything he gets!
+                        buffer = new char[std::max(dsc->elem_size * 5 + 1, 100)];
+                        buffer[0] = 0;
+                        (*Query) >> buffer;
+                        Running = false;
+                        conn->Lock.up();
+                        if (Query->is_null())
+                        {
+                            delete[] buffer;
+                            return null;
+                        }
+                        QString buf(QString::fromUtf8(buffer));
+                        delete[] buffer;
+                        return buf;
+                    }
+                    break;
+                }
+            }
+            catch (const otl_exception &exc)
+            {
+                Running = false;
+                conn->Lock.up();
+                delete[] buffer;
+                conn->throwExtendedException(query()->connection(), exc);
+            }
+            catch (...)
+            {
+                Running = false;
+                conn->Lock.up();
+                delete[] buffer;
+                throw;
+            }
+            // Never get here
+            return QString::null;
+        }
+        virtual void cancel(void);
+        virtual bool eof(void)
+        {
+            if (!Query || Cancel)
+                return true;
+            return Query->eof();
+        }
+        virtual int rowsProcessed(void)
+        {
+            if (!Query)
+                return 0;
+            return Query->get_rpc();
+        }
+        virtual int columns(void)
+        {
+            int descriptionLen;
+            Query->describe_select(descriptionLen);
+            return descriptionLen;
+        }
+        virtual std::list<toQuery::queryDescribe> describe(void)
+        {
+            std::list<toQuery::queryDescribe> ret;
+            int descriptionLen;
+            int datatypearg1 = 0;
+            int datatypearg2 = 0;
+            otl_column_desc *description = Query->describe_select(descriptionLen);
+
+            for (int i = 0;i < descriptionLen;i++)
+            {
+                toQuery::queryDescribe desc;
+                desc.AlignRight = false;
+                desc.Name = QString::fromUtf8(description[i].name);
+/*
+ * http://www.stanford.edu/dept/itss/docs/oracle/10g/server.101/b10758/sqlqr06.htm
+ * include ocidfn.h
+ */
+                switch (description[i].dbtype)
+                {
+                    case 1:	/* VARCHAR2, NVARCHAR2 */
+                        desc.Datatype = QString::fromLatin1("VARCHAR2(%i)");
+                        datatypearg1 = description[i].char_size;
+#ifdef OTL_ORA_UNICODE
+                        if (description[i].charset_form == 2)
+                        {
+                    	    desc.Datatype = QString::fromLatin1("N") + desc.Datatype;
+		        }
+#endif
+		        break;
+
+		    case 2:	/* NUMBER */
+                        desc.Datatype = QString::fromLatin1("NUMBER");
+                    
+                        if (description[i].prec)
+                        {
+                            desc.Datatype = QString::fromLatin1("NUMBER(%i)");
+                            datatypearg1 = description[i].prec;
+                            if (description[i].scale != 0)
+                            {
+                              desc.Datatype = QString::fromLatin1("NUMBER(%i,%i)");
+                              datatypearg2 = description[i].scale;
+                            }
+                        }
+                        desc.AlignRight = true;
+                        break;
+
+		    case 8:	/* LONG */
+                        desc.Datatype = QString::fromLatin1("LONG");
+                        break;
+
+		    case 12:	/* DATE */
+                        desc.Datatype = QString::fromLatin1("DATE");
+                        desc.AlignRight = true;
+                        break;
+
+		    case 23:	/* RAW */
+                        desc.Datatype = QString::fromLatin1("RAW(%i)");
+                        datatypearg1 = description[i].dbsize;
+                        break;
+
+		    case 24:	/* LONG RAW */
+                        desc.Datatype = QString::fromLatin1("LONG RAW");
+                    break;
+
+		    case 104:	/* ROWID, docu: 69, ocidfn.h: 104  */
+		    case 208:	/* UROWID */
+                        desc.Datatype = QString::fromLatin1("ROWID");
+                        break;
+
+		    case 96:	/* CHAR, NCHAR */
+                        desc.Datatype = QString::fromLatin1("CHAR(%i)");
+                        datatypearg1 = description[i].char_size;
+#ifdef OTL_ORA_UNICODE
+                        if (description[i].charset_form == 2)
+                        {
+                    	    desc.Datatype = QString::fromLatin1("N") + desc.Datatype;
+		        }
+#endif
+		        break;
+#ifdef OTL_ORA_NATIVE_TYPES
+		    case 100:	/* BINARY_FLOAT */
+                        desc.Datatype = QString::fromLatin1("BINARY_FLOAT");
+                        break;
+
+		    case 101:	/* BINARY_DOUBLE */
+                        desc.Datatype = QString::fromLatin1("BINARY_DOUBLE");
+                        break;
+#endif
+		    case 112:	/* CLOB, NCLOB */
+                        desc.Datatype = QString::fromLatin1("CLOB");
+#ifdef OTL_ORA_UNICODE
+                        if (description[i].charset_form == 2)
+                        {
+                    	    desc.Datatype = QString::fromLatin1("N") + desc.Datatype;
+		        }
+#endif
+                        break;
+
+		    case 113:	/* BLOB */
+                        desc.Datatype = QString::fromLatin1("BLOB");
+                        break;
+#ifdef OTL_ORA_TIMESTAMP
+		    case 187:	/* TIMESTAMP, docu: 180, ocidfn.h: 187 */
+                        desc.Datatype = QString::fromLatin1("TIMESTAMP(%i)");
+                        datatypearg1 = description[i].scale;
+                        break;
+
+		    case 188:	/* TIMESTAMP WITH TIME ZONE, docu: 181, ocidfn.h: 188 */
+                        desc.Datatype = QString::fromLatin1("TIMESTAMP(%i) WITH TIME ZONE");
+                        datatypearg1 = description[i].scale;
+                        break;
+
+		    case 189:	/* INTERVAL YEAR TO MONTH, docu: 182, ocidfn.h: 189 */
+                        desc.Datatype = QString::fromLatin1("INTERVAL YEAR(%i) TO MONTH");
+                        datatypearg1 = description[i].prec;
+                        break;
+
+		    case 190:	/* INTERVAL DAY TO SECOND, docu: 183, ocidfn.h: 190  */
+                        desc.Datatype = QString::fromLatin1("INTERVAL DAY(%i) TO SECOND(%i)");
+                        datatypearg1 = description[i].prec;
+                        datatypearg2 = description[i].scale;
+                        break;
+
+		    case 232:	/* TIMESTAMP WITH LOCAL TIME ZONE docu: 231, ocidfn.h: 232 */
+                        desc.Datatype = QString::fromLatin1("TIMESTAMP(%i) WITH LOCAL TIME ZONE");
+                        datatypearg1 = description[i].scale;
+                        break;
+#endif
+                    default:
+                        desc.Datatype = QString::fromLatin1("UNKNOWN");
+
+                        /* report unmatched datatypes for adding later */
+                        printf("File a bug report and include the table layout and the following data:\n");
+                        printf("  type=%i, otl_type=%i, size=%i, nullok=%i, charset_form=%i, charset_size=%i, prec=%i, scale=%i\n",
+                               description[i].dbtype,
+                               description[i].otl_var_dbtype,
+                               description[i].dbsize,
+                               description[i].nullok,
+                               description[i].charset_form,
+                               description[i].char_size,
+                               description[i].prec,
+                               description[i].scale);
+		}
+                desc.Datatype.sprintf(desc.Datatype, datatypearg1, datatypearg2);
+
+                desc.Null = description[i].nullok;
+
+                ret.insert(ret.end(), desc);
+            }
+            return ret;
+        }
+    };
+
+class oracleConnection : public toConnection::connectionImpl
+    {
+        QCString connectString(void)
+        {
+            QCString ret;
+            ret = connection().user().utf8();
+            ret += QString::fromLatin1("/");
+            ret += connection().password().utf8();
+            if (!connection().host().isEmpty())
+            {
+                ret += QString::fromLatin1("@");
+                ret += connection().database().utf8();
+            }
+            return ret;
+        }
+        oracleSub *oracleConv(toConnectionSub *sub)
+        {
+            oracleSub *conn = dynamic_cast<oracleSub *>(sub);
+            if (!conn)
+                throw QString::fromLatin1("Internal error, not oracle sub connection");
+            return conn;
+        }
+    public:
+        oracleConnection(toConnection *conn)
+                : toConnection::connectionImpl(conn)
+    { }
+
+        /** Return a string representation to address an object.
+         * @param name The name to be quoted.
+         * @return String addressing table.
+         */
+        virtual QString quote(const QString &name)
+        {
+            bool ok = true;
+            for (unsigned int i = 0;i < name.length();i++)
+            {
+                if (name.at(i).upper() != name.at(i) || !toIsIdent(name.at(i)))
+                    ok = false;
+            }
+            if (ok)
+                return name.lower();
+            else
+                return QString::fromLatin1("\"") + name + QString::fromLatin1("\"");
+        }
+        virtual QString unQuote(const QString &str)
+        {
+            if (str.at(0).latin1() == '\"' && str.at(str.length() - 1).latin1() == '\"')
+                return str.left(str.length() - 1).right(str.length() - 2);
+            return str.upper();
+        }
+
+        virtual std::list<toConnection::objectName> objectNames(void)
+        {
+            std::list<toConnection::objectName> ret;
+
+            std::list<toQValue> par;
+            toQuery objects(connection(), toQuery::Long,
+                            SQLListObjects, par);
+            toConnection::objectName cur;
+            while (!objects.eof())
+            {
+                cur.Owner = objects.readValueNull();
+                cur.Name = objects.readValueNull();
+                cur.Type = objects.readValueNull();
+                cur.Comment = objects.readValueNull();
+                ret.insert(ret.end(), cur);
+            }
+
+            return ret;
+        }
+        virtual std::map<QString, toConnection::objectName> synonymMap(std::list<toConnection::objectName> &objects)
+        {
+            std::map<QString, toConnection::objectName> ret;
+
+            toConnection::objectName cur;
+            cur.Type = QString::fromLatin1("A");
+            std::list<toQValue> par;
+            par.insert(par.end(), toQValue(connection().user().upper()));
+            toQuery synonyms(connection(), toQuery::Long,
+                             SQLListSynonyms, par);
+            std::list<toConnection::objectName>::iterator i = objects.begin();
+            while (!synonyms.eof())
+            {
+                QString synonym = synonyms.readValueNull();
+                cur.Owner = synonyms.readValueNull();
+                cur.Name = synonyms.readValueNull();
+                while (i != objects.end() && (*i) < cur)
+                    i++;
+                if (i == objects.end())
+                    break;
+                if (cur.Name == (*i).Name && cur.Owner == (*i).Owner)
+                {
+                    ret[synonym] = (*i);
+                    (*i).Synonyms.insert((*i).Synonyms.end(), synonym);
+                }
+            }
+
+            return ret;
+        }
+        virtual toQDescList columnDesc(const toConnection::objectName &table)
+        {
+            toBusy busy;
+            if (table.Type == QString::fromLatin1("PACKAGE"))
+            {
+                toQDescList ret;
+                try
+                {
+                    toQuery::queryDescribe desc;
+                    desc.Datatype = ("MEMBER");
+                    desc.Null = false;
+                    QString lastName;
+                    QString lastOver;
+                    toQuery member(connection(), SQLMembers, table.Owner, table.Name);
+                    bool hasArgs = false;
+                    while (!member.eof())
+                    {
+                        QString name = member.readValue();
+                        QString overld = member.readValue();
+                        QString arg = member.readValueNull();
+                        QString type = member.readValueNull();
+                        if (lastName != name || overld != lastOver)
+                        {
+                            if (hasArgs)
+                                desc.Name += ")";
+                            if (!desc.Name.isEmpty())
+                                ret.insert(ret.end(), desc);
+                            desc.Name = name;
+                            lastName = name;
+                            lastOver = overld;
+                            hasArgs = false;
+                        }
+                        if (arg.isEmpty())
+                        {
+                            if (hasArgs)
+                            {
+                                desc.Name += ")";
+                                hasArgs = false;
+                            }
+                            desc.Name += " RETURNING ";
+                        }
+                        else
+                        {
+                            if (hasArgs)
+                                desc.Name += ", ";
+                            else
+                            {
+                                desc.Name += "(";
+                                hasArgs = true;
+                            }
+                            desc.Name += arg;
+                            desc.Name += " ";
+                        }
+                        desc.Name += type;
+                    }
+                    if (desc.Name.contains("("))
+                        desc.Name += ")";
+                    if (!desc.Name.isEmpty())
+                        ret.insert(ret.end(), desc);
+                }
+                catch (...)
+                {}
+                return ret;
+            }
+
+            std::map<QString, QString> comments;
+            try
+            {
+                toQuery comment(connection(), SQLComment, table.Owner, table.Name);
+                while (!comment.eof())
+                {
+                    QString col = comment.readValue();
+                    comments[col] = comment.readValueNull();
+                }
+            }
+            catch (...)
+            {}
+
+            try
+            {
+                toQuery query(connection());
+#ifdef OTL_STREAM_POOLING_ON
+                // Need to clear the stream cache first.
+                oracleSub *sub = dynamic_cast<oracleSub *>(query.connectionSub());
+                sub->Lock.down();
+                sub->Connection->set_stream_pool_size(std::max(toConfigurationSingle::Instance().globalConfig(CONF_OPEN_CURSORS,
+                                                      DEFAULT_OPEN_CURSORS).toInt(), 1));
+                sub->Lock.up();
+#endif
+
+                QString SQL = QString::fromLatin1("SELECT * FROM \"");
+                SQL += table.Owner;
+                SQL += QString::fromLatin1("\".\"");
+                SQL += table.Name;
+                SQL += QString::fromLatin1("\" WHERE NULL=NULL");
+                toQList par;
+                query.execute(SQL, par);
+                toQDescList desc = query.describe();
+                for (toQDescList::iterator j = desc.begin();j != desc.end();j++)
+                    (*j).Comment = comments[(*j).Name];
+
+                return desc;
+            }
+            catch ( ... )
+            {
+                throw;
+            }
+
+            toQDescList ret;
+            return ret;
+        }
+
+        virtual void commit(toConnectionSub *sub)
+        {
+            oracleSub *conn = oracleConv(sub);
+            try
+            {
+                conn->Connection->commit();
+            }
+            catch (const otl_exception &exc)
+            {
+                ThrowException(exc);
+            }
+        }
+        virtual void rollback(toConnectionSub *sub)
+        {
+            oracleSub *conn = oracleConv(sub);
+            try
+            {
+                conn->Connection->rollback();
+            }
+            catch (const otl_exception &exc)
+            {
+                ThrowException(exc);
+            }
+        }
+
+        virtual toConnectionSub *createConnection(void);
+
+        void closeConnection(toConnectionSub *conn)
+        {
+            delete conn;
+        }
+
+        virtual QCString version(toConnectionSub *sub)
+        {
+            oracleSub *conn = oracleConv(sub);
+            try
+            {
+                otl_stream version(1,
+                                   "SELECT version FROM product_component_version where product like 'Oracle Database %'",
+                                   *(conn->Connection));
+                if (!version.eof())
+                {
+                    char buffer[1024];
+                    version >> buffer;
+                    QStringList vl = QStringList::split('.', QString::fromUtf8(buffer));
+                    QString ve;
+                    QString verrj;
+                    for ( QStringList::iterator vi = vl.begin(); vi != vl.end(); ++vi ) {
+                        ve = *vi;
+                        verrj += ve.rightJustify(2,'0');
+                    }
+                    return QCString::QCString(verrj);
+                }
+            }
+            catch (...)
+            {
+                // Ignore any errors here
+            }
+            return QCString::QCString();
+        }
+
+        virtual toQuery::queryImpl *createQuery(toQuery *query, toConnectionSub *sub)
+        {
+            return new oracleQuery(query, oracleConv(sub));
+        }
+
+        virtual void execute(toConnectionSub *sub, const QCString &sql, toQList &params)
+        {
+            oracleSub *conn = oracleConv(sub);
+
+            if ( params.empty() )
+            {
+                try
+                {
+                    otl_cursor::direct_exec(*(conn->Connection), sql);
+                }
+                catch (const otl_exception &exc)
+                {
+                    conn->throwExtendedException(connection(), exc);
+                }
+            }
+            else
+                toQuery query(connection(), QString::fromUtf8(sql), params);
+        }
+
+             virtual void parse(toConnectionSub *sub,const QCString &sql)
+               {
+                 oracleSub *conn=oracleConv(sub);
+                 try{
+                     conn->Connection->reset_throw_count(); 
+                     conn->Connection->syntax_check(sql);
+
+                 } catch (const otl_exception &exc) {
+                   conn->Connection->throw_count++;
+                   ThrowException(exc);
+                 }
+               }
+    };
+
+    toOracleProvider(void)
+            : toConnectionProvider("Oracle", false)
+{}
+
+    virtual void initialize(void)
+    {
+        toMaxLong = toConfigurationSingle::Instance().globalConfig(CONF_MAX_LONG,
+                                         QString::number(DEFAULT_MAX_LONG).latin1()).toInt();
+        if (otl_connect::otl_initialize(1))
+            addProvider("Oracle");
+        else
+            fprintf(stderr, "otl_initialize failed!\n");
+    }
+
+    virtual toConnection::connectionImpl *provideConnection(const QCString &, toConnection *conn)
+    {
+        return new oracleConnection(conn);
+    }
+    virtual std::list<QString> providedOptions(const QCString &)
+    {
+        std::list<QString> ret;
+        ret.insert(ret.end(), "*SQL*Net");
+        ret.insert(ret.end(), "-");
+        ret.insert(ret.end(), "SYS_OPER");
+        ret.insert(ret.end(), "SYS_DBA");
+        return ret;
+    }
+    virtual std::list<QString> providedHosts(const QCString &)
+    {
+        std::list<QString> ret;
+        ret.insert(ret.end(), QString::null);
+        ret.insert(ret.end(), QString::fromLatin1("SQL*Net"));
+        return ret;
+    }
+    virtual std::list<QString> providedDatabases(const QCString &,
+            const QString &host,
+            const QString &,
+            const QString &)
+    {
+        QString str;
+#ifdef WIN32
+
+        CRegistry registry;
+        DWORD siz = 1024;
+        char buffer[1024];
+        try
+        {
+            if (registry.GetStringValue(HKEY_LOCAL_MACHINE,
+                                        "SOFTWARE\\ORACLE\\HOME0",
+                                        "TNS_ADMIN",
+                                        buffer, siz))
+            {
+                if (siz > 0)
+                    str = buffer;
+                else
+                    throw 0;
+            }
+            else
+                throw 0;
+        }
+        catch (...)
+        {
+            try
+            {
+                if (registry.GetStringValue(HKEY_LOCAL_MACHINE,
+                                            "SOFTWARE\\ORACLE\\HOME0",
+                                            "ORACLE_HOME",
+                                            buffer, siz))
+                {
+                    if (siz > 0)
+                    {
+                        str = buffer;
+                        str += "\\network\\admin";
+                    }else
+                     throw 0; 
+                }else
+                  throw 0;
+            }
+            catch (...)
+            {
+             if(GetEnvironmentVariableA("TNS_ADMIN",buffer,siz)>0)
+               str=buffer;
+            }
+        }
+#else
+
+        if (!getenv("ORACLE_HOME"))
+            throw QString::fromLatin1("ORACLE_HOME environment variable not set");
+        if (getenv("TNS_ADMIN"))
+        {
+            str = getenv("TNS_ADMIN");
+        }
+        else
+        {
+            str = getenv("ORACLE_HOME");
+            str.append(QString::fromLatin1("/network/admin"));
+        }
+#endif
+        str.append(QString::fromLatin1("/tnsnames.ora"));
+
+
+        std::list<QString> ret;
+
+        QFile file(str);
+        if (!file.open(IO_ReadOnly))
+            return ret;
+
+        int size = file.size();
+
+        char *buf = new char[size + 1];
+        if (file.readBlock(buf, size) == -1)
+        {
+            delete[] buf;
+            return ret;
+        }
+
+        buf[size] = 0;
+
+        int begname = -1;
+        int parambeg = -1;
+        int pos = 0;
+        int param = 0;
+        while (pos < size)
+        {
+            if (buf[pos] == '#')
+            {
+                while (pos < size && buf[pos] != '\n')
+                    pos++;
+            }
+            else if (buf[pos] == '=')
+            {
+                if (param == 0)
+                {
+                    if (begname >= 0 && !host.isEmpty())
+                        ret.insert(ret.end(), QString::fromLatin1(buf + begname, pos - begname));
+                }
+            }
+            else if (buf[pos] == '(')
+            {
+                begname = -1;
+                parambeg = pos + 1;
+                param++;
+            }
+            else if (buf[pos] == ')')
+            {
+                if (parambeg >= 0 && host.isEmpty())
+                {
+                    QString tmp = QString::fromLatin1(buf + parambeg, pos - parambeg);
+                    tmp.replace(QRegExp(QString::fromLatin1("\\s+")), QString::null);
+                    if (tmp.lower().startsWith(QString::fromLatin1("sid=")))
+                        ret.insert(ret.end(), tmp.mid(4));
+                }
+                begname = -1;
+                parambeg = -1;
+                param--;
+            }
+            else if (!isspace(buf[pos]) && begname < 0)
+            {
+                begname = pos;
+            }
+            pos++;
+        }
+        delete[] buf;
+        return ret;
+    }
+    virtual QWidget *providerConfigurationTab(const QCString &provider, QWidget *parent);
+};
+
+static toOracleProvider OracleProvider;
+
+void toOracleProvider::oracleQuery::execute(void)
+{
+    oracleSub *conn = dynamic_cast<oracleSub *>(query()->connectionSub());
+    if (!conn)
+        throw QString::fromLatin1("Internal error, not oracle sub connection");
+    try
+    {
+        delete Query;
+        Query = NULL;
+
+        while (conn->Lock.getValue() > 1)
+        {
+            conn->Lock.down();
+            toStatusMessage(QString::fromLatin1("Too high value on connection lock semaphore"));
+        }
+
+        conn->Lock.down();
+        if (Cancel)
+            throw QString::fromLatin1("Query aborted before started");
+        Running = true;
+        try
+        {
+            static QRegExp stripnl("\r");
+            Query = new otl_stream;
+            Query->set_commit(0);
+            if (toQValue::numberFormat() == 0)
+                Query->set_all_column_types(otl_all_num2str | otl_all_date2str);
+            else
+                Query->set_all_column_types(otl_all_date2str);
+
+            QCString sql = query()->sql();
+            sql.replace(stripnl, "");
+            Query->open(1,
+                        sql,
+                        *(conn->Connection));
+        }
+        catch (...)
+        {
+            conn->Lock.up();
+            throw;
+        }
+    }
+    catch (const otl_exception &exc)
+    {
+        Running = false;
+        conn->throwExtendedException(query()->connection(), exc);
+    }
+    try
+    {
+        otl_null null;
+        for (toQList::iterator i = query()->params().begin();i != query()->params().end();i++)
+        {
+            if ((*i).isNull())
+                (*Query) << null;
+            else
+            {
+                otl_var_desc *next = Query->describe_next_in_var();
+                if (next)
+                {
+                    switch (next->ftype)
+                    {
+                    case otl_var_double:
+                    case otl_var_float:
+                        (*Query) << (*i).toDouble();
+                        break;
+                    case otl_var_int:
+                    case otl_var_unsigned_int:
+                    case otl_var_short:
+                    case otl_var_long_int:
+                        (*Query) << (*i).toInt();
+                        break;
+                    case otl_var_raw_long:
+                    case otl_var_blob:
+                        if ((*i).isBinary())
+                        {
+                            QByteArray arr = (*i).toByteArray();
+                            otl_long_string str(arr, arr.size(), arr.size());
+                            (*Query) << str;
+                            break;
+                        }
+                        // Intentially left out break
+                    case otl_var_varchar_long:
+                    case otl_var_clob:
+                        {
+                            QCString buf = (*i).utf8();
+                            otl_long_string str(buf, buf.length(), buf.length());
+                            (*Query) << str;
+                        }
+                        break;
+                    default:
+                        (*Query) << (*i).utf8();
+                        break;
+                    }
+                }
+                else
+                {
+                    printf("ERROR: More parameters than binds\n");
+                }
+            }
+        }
+        Running = false;
+        conn->Lock.up();
+    }
+    catch (const otl_exception &exc)
+    {
+        Running = false;
+        conn->Lock.up();
+        conn->throwExtendedException(query()->connection(), exc);
+    }
+}
+
+void toOracleProvider::oracleQuery::cancel(void)
+{
+    oracleSub *conn = dynamic_cast<oracleSub *>(query()->connectionSub());
+    if (!conn)
+        throw QString::fromLatin1("Internal error, not oracle sub connection");
+    if (Running)
+    {
+        conn->Connection->cancel();
+        Cancel = true;
+    }
+    else
+    {
+        Cancel = true;
+        conn->Lock.up();
+    }
+}
+
+toConnectionSub *toOracleProvider::oracleConnection::createConnection(void)
+{
+    QString oldSid;
+
+    std::set
+        <QString> options = connection().options();
+
+    bool sqlNet = (options.find("SQL*Net") != options.end());
+    if (!sqlNet)
+    {
+        oldSid = getenv("ORACLE_SID");
+        toSetEnv("ORACLE_SID", connection().database().utf8());
+    }
+    otl_connect *conn = NULL;
+    try
+    {
+        int session_mode = OCI_DEFAULT;
+        if (options.find("SYS_OPER") != options.end())
+            session_mode = OCI_SYSOPER;
+        else if (options.find("SYS_DBA") != options.end())
+            session_mode = OCI_SYSDBA;
+        do
+        {
+            conn = new otl_connect;
+#ifdef OTL_STREAM_POOLING_ON
+
+            conn->set_stream_pool_size(std::max(toConfigurationSingle::Instance().globalConfig(CONF_OPEN_CURSORS,
+                                                DEFAULT_OPEN_CURSORS).toInt(), 1));
+#endif
+
+            if (!sqlNet)
+                conn->server_attach();
+            else
+                conn->server_attach(connection().database().utf8());
+            QCString user = connection().user().utf8();
+            QCString pass = connection().password().utf8();
+            try
+            {
+                conn->session_begin(user.isEmpty() ? "" : (const char *)user, pass.isEmpty() ? "" : (const char *)pass, 0, session_mode);
+            }
+            catch (const otl_exception &exc)
+            {
+                if (toThread::mainThread() && exc.code == 28001)
+                {
+                    bool ok = false;
+                    QString newpass = QInputDialog::getText(
+                                          qApp->translate("toOracleConnection", "Password expired"),
+                                          qApp->translate("toOracleConnection", "Enter new password"),
+                                          QLineEdit::Password,
+                                          QString::null,
+                                          &ok,
+                                          toMainWidget());
+                    if (ok)
+                    {
+                        QString newpass2 = QInputDialog::getText(
+                                               qApp->translate("toOracleConnection", "Password expired"),
+                                               qApp->translate("toOracleConnection", "Enter password again for confirmation"),
+                                               QLineEdit::Password,
+                                               QString::null,
+                                               &ok,
+                                               toMainWidget());
+                        if (ok)
+                        {
+                            if (newpass2 != newpass)
+                                throw qApp->translate("toOracleConnection", "The two passwords doesn't match");
+                            QCString nputf = newpass.utf8();
+                            conn->change_password(user.isEmpty() ? "" : (const char *)user,
+                                                  pass.isEmpty() ? "" : (const char *)pass,
+                                                  newpass.isEmpty() ? "" : (const char *)nputf);
+                            connection().setPassword(newpass);
+                            delete conn;
+                            conn = NULL;
+                        }
+                        else
+                            throw exc;
+                    }
+                    else
+                    {
+                        throw exc;
+                    }
+                }
+                else
+                    throw exc;
+            }
+        }
+        while (!conn);
+    }
+    catch (const otl_exception &exc)
+    {
+        if (!sqlNet)
+        {
+            if (oldSid.isNull())
+                toUnSetEnv("ORACLE_SID");
+            else
+                toSetEnv("ORACLE_SID", oldSid.latin1());
+        }
+        delete conn;
+        ThrowException(exc);
+    }
+    if (!sqlNet)
+    {
+        if (oldSid.isNull())
+            toUnSetEnv("ORACLE_SID");
+        else
+        {
+            toSetEnv("ORACLE_SID", oldSid.latin1());
+        }
+    }
+
+    try
+    {
+        {
+            QString str = QString::fromLatin1("ALTER SESSION SET NLS_DATE_FORMAT = '");
+            str += toConfigurationSingle::Instance().globalConfig(CONF_DATE_FORMAT, DEFAULT_DATE_FORMAT);
+            str += QString::fromLatin1("'");
+            otl_stream date(1, str.utf8(), *conn);
+        }
+        {
+            otl_stream info(1,
+                            "BEGIN\n"
+                            "  SYS.DBMS_APPLICATION_INFO.SET_CLIENT_INFO('" TOAPPNAME
+                            " (http://tora.sourceforge.net)"
+                            "');\n"
+                            "  SYS.DBMS_APPLICATION_INFO.SET_MODULE('" TOAPPNAME "','Access Database');\n"
+                            "END;",
+                            *conn);
+        }
+    }
+    catch (...)
+    {
+        toStatusMessage(QString::fromLatin1("Failed to set new default date format for session"));
+    }
+    return new oracleSub(conn);
+}
+
+/*
+** 11g version, see $ORACLE_HOME/rdbms/admin/utlxplan.sql
+*/
+static toSQL SQLCreatePlanTable(toSQL::TOSQL_CREATEPLAN,
+                                "CREATE TABLE %1 (\n"
+                                "STATEMENT_ID        VARCHAR2(30),\n"
+                                "PLAN_ID             NUMBER,\n"
+                                "TIMESTAMP           DATE,\n"
+                                "REMARKS             VARCHAR2(4000),\n"
+                                "OPERATION           VARCHAR2(30),\n"
+                                "OPTIONS             VARCHAR2(255),\n"
+                                "OBJECT_NODE         VARCHAR2(128),\n"
+                                "OBJECT_OWNER        VARCHAR2(30),\n"
+                                "OBJECT_NAME         VARCHAR2(30),\n"
+                                "OBJECT_ALIAS        VARCHAR2(65),\n"
+                                "OBJECT_INSTANCE     NUMERIC,\n"
+                                "OBJECT_TYPE         VARCHAR2(30),\n"
+                                "OPTIMIZER           VARCHAR2(255),\n"
+                                "SEARCH_COLUMNS      NUMBER,\n"
+                                "ID                  NUMERIC,\n"
+                                "PARENT_ID           NUMERIC,\n"
+                                "DEPTH               NUMERIC,\n"
+                                "POSITION            NUMERIC,\n"
+                                "COST                NUMERIC,\n"
+                                "CARDINALITY         NUMERIC,\n"
+                                "BYTES               NUMERIC,\n"
+                                "OTHER_TAG           VARCHAR2(255),\n"
+                                "PARTITION_START     VARCHAR2(255),\n"
+                                "PARTITION_STOP      VARCHAR2(255),\n"
+                                "PARTITION_ID        NUMERIC,\n"
+                                "OTHER               LONG,\n"
+                                "DISTRIBUTION        VARCHAR2(30),\n"
+                                "CPU_COST            NUMERIC,\n"
+                                "IO_COST             NUMERIC,\n"
+                                "TEMP_SPACE          NUMERIC,\n"
+                                "ACCESS_PREDICATES   VARCHAR2(4000),\n"
+                                "FILTER_PREDICATES   VARCHAR2(4000),\n"
+                                "PROJECTION          VARCHAR2(4000),\n"
+                                "TIME                NUMERIC,\n"
+                                "QBLOCK_NAME         VARCHAR2(30),\n"
+                                "OTHER_XML           CLOB\n"
+                                ")",
+                                "Create plan table, must have same % signs");
+
+class toOracleSetting : public toOracleSettingUI, public toSettingTab
+{
+public:
+    toOracleSetting(QWidget *parent)
+            : toOracleSettingUI(parent), toSettingTab("database.html#oracle")
+    {
+        DefaultDate->setText(toConfigurationSingle::Instance().globalConfig(CONF_DATE_FORMAT,
+                             DEFAULT_DATE_FORMAT));
+        CheckPoint->setText(toConfigurationSingle::Instance().globalConfig(CONF_PLAN_CHECKPOINT,
+                            DEFAULT_PLAN_CHECKPOINT));
+        ExplainPlan->setText(toConfigurationSingle::Instance().globalConfig(CONF_PLAN_TABLE,
+                             DEFAULT_PLAN_TABLE));
+        OpenCursors->setValue(toConfigurationSingle::Instance().globalConfig(CONF_OPEN_CURSORS,
+                              DEFAULT_OPEN_CURSORS).toInt());
+        KeepPlans->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_KEEP_PLANS, "").isEmpty());
+        int len = toConfigurationSingle::Instance().globalConfig(CONF_MAX_LONG,
+                                       QString::number(DEFAULT_MAX_LONG).latin1()).toInt();
+        if (len >= 0)
+        {
+            MaxLong->setText(QString::number(len));
+            MaxLong->setValidator(new QIntValidator(MaxLong));
+            Unlimited->setChecked(false);
+        }
+        try
+        {
+            // Check if connection exists
+            toMainWidget()->currentConnection();
+            CreatePlanTable->setEnabled(true);
+        }
+        catch (...)
+        {}
+    }
+    virtual void saveSetting(void)
+    {
+        toConfigurationSingle::Instance().globalSetConfig(CONF_KEEP_PLANS, KeepPlans->isChecked() ? "Yes" : "");
+        toConfigurationSingle::Instance().globalSetConfig(CONF_DATE_FORMAT, DefaultDate->text());
+        toConfigurationSingle::Instance().globalSetConfig(CONF_PLAN_CHECKPOINT, CheckPoint->text());
+        toConfigurationSingle::Instance().globalSetConfig(CONF_PLAN_TABLE, ExplainPlan->text());
+        toConfigurationSingle::Instance().globalSetConfig(CONF_OPEN_CURSORS, QString::number(OpenCursors->value()));
+        if (Unlimited->isChecked())
+        {
+            toMaxLong = -1;
+            toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_LONG, QString::fromLatin1("-1"));
+        }
+        else
+        {
+            toConfigurationSingle::Instance().globalSetConfig(CONF_MAX_LONG, MaxLong->text());
+            toMaxLong = MaxLong->text().toInt();
+        }
+    }
+    virtual void createPlanTable(void)
+    {
+        try
+        {
+            toConnection &conn = toMainWidget()->currentConnection();
+            conn.execute(toSQL::string(SQLCreatePlanTable, conn).
+                         arg(ExplainPlan->text()));
+        }
+        TOCATCH
+    }
+};
+
+QWidget *toOracleProvider::providerConfigurationTab(const QCString &, QWidget *parent)
+{
+    return new toOracleSetting(parent);
+}

Added: kde-extras/tora/branches/upstream/current/src/tooracleextract.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tooracleextract.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tooracleextract.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,8274 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "toextract.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <qapplication.h>
+#include <qregexp.h>
+
+// Some convenient defines
+
+#define ORACLE_NAME "Oracle"
+#define CONNECTION (ext.connection())
+#define QUOTE(x) (ext.connection().quote(x))
+#define PROMPT (ext.getPrompt())
+
+#define addDescription toExtract::addDescription
+
+class toOracleExtract : public toExtract::extractor
+{
+
+    // Misc utility functions
+
+    void clearFlags(toExtract &ext) const;
+    QString displaySource(toExtract &ext, const QString &schema, const QString &owner,
+                          const QString &name, const QString &type, bool describe) const;
+    QString keyColumns(toExtract &ext, const QString &owner, const QString &name,
+                       const QString &type, const QString &table) const;
+    QString partitionKeyColumns(toExtract &ext, const QString &owner,
+                                const QString &name, const QString &type) const;
+    static QString prepareDB(const QString &data);
+    QString segments(toExtract &ext) const;
+    QString segments(toExtract &ext, const toSQL &sql) const;
+    QString subPartitionKeyColumns(toExtract &ext, const QString &owner,
+                                   const QString &name, const QString &type) const;
+
+    // Create utility functions
+
+    QString constraintColumns(toExtract &ext, const QString &owner, const QString &name) const;
+    QString createComments(toExtract &ext, const QString &schema,
+                           const QString &owner, const QString &name) const;
+    QString createContextPrefs(toExtract &ext, const QString &schema, const QString &owner,
+                               const QString &name, const QString &sql) const;
+    QString createIOT(toExtract &ext, const QString &schema, const QString &owner,
+                      const QString &name) const;
+    QString createMView(toExtract &ext, const QString &schema, const QString &owner,
+                        const QString &name, const QString &type) const;
+    QString createMViewIndex(toExtract &ext, const QString &schema, const QString &owner,
+                             const QString &name) const;
+    QString createMViewLog(toExtract &ext, const QString &schema, const QString &owner,
+                           const QString &name, const QString &type) const;
+    QString createMViewTable(toExtract &ext, const QString &schema, const QString &owner,
+                             const QString &name) const;
+    QString createPartitionedIOT(toExtract &ext, const QString &schema,
+                                 const QString &owner, const QString &name) const;
+    QString createPartitionedIndex(toExtract &ext, const QString &schema, const QString &owner,
+                                   const QString &name, const QString &sql) const;
+    QString createPartitionedTable(toExtract &ext, const QString &schema,
+                                   const QString &owner, const QString &name) const;
+    QString createTableText(toExtract &ext, toQList &result, const QString &schema,
+                            const QString &owner, const QString &name) const;
+    QString grantedPrivs(toExtract &ext, const QString &dest, const QString &name, int typ) const;
+    QString indexColumns(toExtract &ext, const QString &indent, const QString &owner,
+                         const QString &name) const;
+    QString rangePartitions(toExtract &ext, const QString &owner, const QString &name,
+                            const QString &subPartitionType, const QString &caller) const;
+    QString segmentAttributes(toExtract &ext, toQList &result) const;
+    QString tableColumns(toExtract &ext, const QString &owner, const QString &name) const;
+
+    // Describe utility functions
+    void describeAttributes(toExtract &ext, std::list<QString> &dsp, std::list<QString> &ctx,
+                            toQList &result) const;
+    void describeComments(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                          const QString &owner, const QString &name) const;
+    void describePrivs(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                       const QString &name) const;
+    void describeIOT(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                     const QString &schema, const QString &owner, const QString &name) const;
+    void describeIndexColumns(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                              const QString &owner, const QString &name) const;
+    void describeMView(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                       const QString &owner, const QString &name, const QString &type) const;
+    void describeMViewIndex(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                            const QString &schema, const QString &owner, const QString &name) const;
+    void describeMViewLog(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                          const QString &owner, const QString &name, const QString &type) const;
+    void describeMViewTable(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                            const QString &schema, const QString &owner, const QString &name) const;
+    void describePartitions(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                            const QString &owner, const QString &name,
+                            const QString &subPartitionType, const QString &caller) const;
+    void describePartitionedIOT(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                                const QString &schema, const QString &owner,
+                                const QString &name) const;
+    void describePartitionedIndex(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                                  const QString &schema, const QString &owner,
+                                  const QString &name) const;
+    void describePartitionedTable(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                                  const QString &schema, const QString &owner,
+                                  const QString &name) const;
+    void describeSource(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                        const QString &owner, const QString &name, const QString &type) const;
+    void describeTableColumns(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                              const QString &owner, const QString &name) const;
+    void describeTableText(toExtract &ext, std::list<QString> &lst, std::list<QString> &ctx,
+                           toQList &result, const QString &schema, const QString &owner,
+                           const QString &name) const;
+
+    // Migrate utility functions
+
+    QString migrateAttributes(std::list<QString> &desc,
+                              std::list<QString>::iterator i,
+                              int level,
+                              const QString &indent) const;
+    QString migrateIndexColumns(std::list<QString> &destin,
+                                std::list<QString>::iterator i,
+                                const QString &context) const;
+    QString migratePartitions(std::list<QString> &desc,
+                              std::list<QString>::iterator &i,
+                              int level,
+                              const QString &indent) const;
+    QString migratePrivs(toExtract &ext,
+                         std::list<QString> &source,
+                         std::list<QString> &destin,
+                         const QString &type) const;
+    QString migrateSource(toExtract &ext,
+                          std::list<QString> &source,
+                          std::list<QString> &destin,
+                          const QString &type) const;
+
+    // Create functions
+
+    QString createConstraint(toExtract &ext, const QString &schema, const QString &owner,
+                             const QString &name) const;
+    QString createDBLink(toExtract &ext, const QString &schema, const QString &owner,
+                         const QString &name) const;
+    QString createExchangeIndex(toExtract &ext, const QString &schema, const QString &owner,
+                                const QString &name) const;
+    QString createExchangeTable(toExtract &ext, const QString &schema, const QString &owner,
+                                const QString &name) const;
+    QString createFunction(toExtract &ext, const QString &schema, const QString &owner,
+                           const QString &name) const;
+    QString createIndex(toExtract &ext, const QString &schema, const QString &owner,
+                        const QString &name) const;
+    QString createMaterializedView(toExtract &ext, const QString &schema, const QString &owner,
+                                   const QString &name) const;
+    QString createMaterializedViewLog(toExtract &ext, const QString &schema, const QString &owner,
+                                      const QString &name) const;
+    QString createPackage(toExtract &ext, const QString &schema, const QString &owner,
+                          const QString &name) const;
+    QString createPackageBody(toExtract &ext, const QString &schema, const QString &owner,
+                              const QString &name) const;
+    QString createProcedure(toExtract &ext, const QString &schema, const QString &owner,
+                            const QString &name) const;
+    QString createProfile(toExtract &ext, const QString &schema, const QString &owner,
+                          const QString &name) const;
+    QString createRole(toExtract &ext, const QString &schema, const QString &owner,
+                       const QString &name) const;
+    QString createRollbackSegment(toExtract &ext, const QString &schema, const QString &owner,
+                                  const QString &name) const;
+    QString createSequence(toExtract &ext, const QString &schema, const QString &owner,
+                           const QString &name) const;
+    QString createSnapshot(toExtract &ext, const QString &schema, const QString &owner,
+                           const QString &name) const;
+    QString createSnapshotLog(toExtract &ext, const QString &schema, const QString &owner,
+                              const QString &name) const;
+    QString createSynonym(toExtract &ext, const QString &schema, const QString &owner,
+                          const QString &name) const;
+    QString createTable(toExtract &ext, const QString &schema, const QString &owner,
+                        const QString &name) const;
+    QString createTableFamily(toExtract &ext, const QString &schema, const QString &owner,
+                              const QString &name) const;
+    void createTableContents(toExtract &ext, QTextStream &stream,
+                             const QString &schema, const QString &owner, const QString &name) const;
+    QString createTableReferences(toExtract &ext, const QString &schema, const QString &owner,
+                                  const QString &name) const;
+    QString createTablespace(toExtract &ext, const QString &schema, const QString &owner,
+                             const QString &name) const;
+    QString createTrigger(toExtract &ext, const QString &schema, const QString &owner,
+                          const QString &name) const;
+    QString createType(toExtract &ext, const QString &schema, const QString &owner,
+                       const QString &name) const;
+    QString createUser(toExtract &ext, const QString &schema, const QString &owner,
+                       const QString &name) const;
+    QString createView(toExtract &ext, const QString &schema, const QString &owner,
+                       const QString &name) const;
+
+    // Describe functions
+    void describeConstraint(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                            const QString &owner, const QString &name) const;
+    void describeDBLink(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                        const QString &owner, const QString &name) const;
+    void describeExchangeIndex(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                               const QString &owner, const QString &name) const;
+    void describeExchangeTable(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                               const QString &owner, const QString &name) const;
+    void describeFunction(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                          const QString &owner, const QString &name) const;
+    void describeIndex(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                       const QString &owner, const QString &name) const;
+    void describeMaterializedView(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                                  const QString &owner, const QString &name) const;
+    void describeMaterializedViewLog(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                                     const QString &owner, const QString &name) const;
+    void describePackage(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                         const QString &owner, const QString &name) const;
+    void describePackageBody(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                             const QString &owner, const QString &name) const;
+    void describeProcedure(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                           const QString &owner, const QString &name) const;
+    void describeProfile(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                         const QString &owner, const QString &name) const;
+    void describeRole(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                      const QString &owner, const QString &name) const;
+    void describeRollbackSegment(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                                 const QString &owner, const QString &name) const;
+    void describeSequence(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                          const QString &owner, const QString &name) const;
+    void describeSnapshot(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                          const QString &owner, const QString &name) const;
+    void describeSnapshotLog(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                             const QString &owner, const QString &name) const;
+    void describeSynonym(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                         const QString &owner, const QString &name) const;
+    void describeTable(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                       const QString &owner, const QString &name) const;
+    void describeTableFamily(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                             const QString &owner, const QString &name) const;
+    void describeTableReferences(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                                 const QString &owner, const QString &name) const;
+    void describeTablespace(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                            const QString &owner, const QString &name) const;
+    void describeTrigger(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                         const QString &owner, const QString &name) const;
+    void describeType(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                      const QString &owner, const QString &name) const;
+    void describeUser(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                      const QString &owner, const QString &name) const;
+    void describeView(toExtract &ext, std::list<QString> &lst, const QString &schema,
+                      const QString &owner, const QString &name) const;
+
+    // Drop functions
+    QString dropConstraint(toExtract &ext, const QString &schema, const QString &owner,
+                           const QString &type, const QString &name) const;
+    QString dropDatabaseLink(toExtract &ext, const QString &schema, const QString &owner,
+                             const QString &type, const QString &name) const;
+    QString dropMViewLog(toExtract &ext, const QString &schema, const QString &owner,
+                         const QString &type, const QString &name) const;
+    QString dropObject(toExtract &ext, const QString &schema, const QString &owner,
+                       const QString &type, const QString &name) const;
+    QString dropProfile(toExtract &ext, const QString &schema, const QString &owner,
+                        const QString &type, const QString &name) const;
+    QString dropSchemaObject(toExtract &ext, const QString &schema, const QString &owner,
+                             const QString &type, const QString &name) const;
+    QString dropSynonym(toExtract &ext, const QString &schema, const QString &owner,
+                        const QString &type, const QString &name) const;
+    QString dropTable(toExtract &ext, const QString &schema, const QString &owner,
+                      const QString &type, const QString &name) const;
+    QString dropTablespace(toExtract &ext, const QString &schema, const QString &owner,
+                           const QString &type, const QString &name) const;
+    QString dropUser(toExtract &ext, const QString &schema, const QString &owner,
+                     const QString &type, const QString &name) const;
+
+    // Migrate functions
+    QString migrateConstraint(toExtract &ext, std::list<QString> &source,
+                              std::list<QString> &destin) const;
+    QString migrateDBLink(toExtract &ext, std::list<QString> &source,
+                          std::list<QString> &destin) const;
+    QString migrateFunction(toExtract &ext, std::list<QString> &source,
+                            std::list<QString> &destin) const;
+    QString migrateIndex(toExtract &ext, std::list<QString> &source,
+                         std::list<QString> &destin) const;
+    QString migratePackage(toExtract &ext, std::list<QString> &source,
+                           std::list<QString> &destin) const;
+    QString migratePackageBody(toExtract &ext, std::list<QString> &source,
+                               std::list<QString> &destin) const;
+    QString migrateProcedure(toExtract &ext, std::list<QString> &source,
+                             std::list<QString> &destin) const;
+    QString migrateRole(toExtract &ext, std::list<QString> &source,
+                        std::list<QString> &destin) const;
+    QString migrateSequence(toExtract &ext, std::list<QString> &source,
+                            std::list<QString> &destin) const;
+public:
+    // Public interface
+
+    toOracleExtract();
+    virtual ~toOracleExtract();
+
+    virtual void initialize(toExtract &ext) const;
+    virtual void create(toExtract &ext, QTextStream &stream,
+                        const QString &type, const QString &schema,
+                        const QString &owner, const QString &name) const;
+    virtual void describe(toExtract &ext, std::list<QString> &lst, const QString &type,
+                          const QString &schema, const QString &owner, const QString &name) const;
+    virtual void drop(toExtract &ext, QTextStream &stream, const QString &type, const QString &schema,
+                      const QString &owner, const QString &name) const;
+};
+
+static toOracleExtract OracleExtractor;
+
+// Implementation misc
+
+void toOracleExtract::clearFlags(toExtract &ext) const
+{
+    ext.setState("IsASnapIndex", QVariant(false));
+    ext.setState("IsASnapTable", QVariant(false));
+}
+
+static toSQL SQLDisplaySource("toOracleExtract:ListSource",
+                              "SELECT text\n"
+                              "  FROM sys.all_source\n"
+                              " WHERE type = :typ<char[100]>\n"
+                              "   AND name = :nam<char[100]>\n"
+                              "   AND owner = :own<char[100]>\n"
+                              " ORDER BY line",
+                              "Get source of an object from the database, "
+                              "must have same columns and binds");
+
+QString toOracleExtract::displaySource(toExtract &ext,
+                                       const QString &schema,
+                                       const QString &owner,
+                                       const QString &name,
+                                       const QString &type,
+                                       bool describe) const
+{
+    if (!ext.getCode())
+        return "";
+
+    QString re("^\\s*");
+    re += type;
+    re += "\\s+";
+    QRegExp StripType(re, false);
+
+    toQuery inf(CONNECTION, SQLDisplaySource, type, name, owner);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "Couldn't find source for of %1.%2").arg(owner).arg(name);
+
+    QString ret;
+    if (PROMPT && !describe)
+        ret = QString("PROMPT CREATE OR REPLACE %1 %2%3\n\n").
+              arg(type).
+              arg(schema).
+              arg(QUOTE(name));
+    bool first = true;
+    while (!inf.eof())
+    {
+        QString line = inf.readValue();
+        if (first)
+        {
+            int len;
+            int pos = StripType.match(line, 0, &len);
+            if (pos != 0)
+                throw qApp->translate("toOracleExtract", "Displaying source of wrong type for %1. Got %2 expected 0.")
+                .arg(type).arg(pos);
+            QString tmp = QString("CREATE OR REPLACE %1 ")
+                          .arg(type);
+            if (!describe)
+                tmp += schema;
+            tmp += line.mid(len);
+            line = tmp;
+
+            first = false;
+        }
+        ret += line;
+    }
+    if (!describe)
+        ret += "\n/\n\n";
+    return ret;
+}
+
+static toSQL SQLKeyColumns("toOracleExtract:KeyColumns",
+                           "SELECT  column_name\n"
+                           "  FROM sys.all_%1_key_columns\n"
+                           " WHERE name           = :nam<char[100]>\n"
+                           "   AND owner          = :owner<char[100]>\n"
+                           "   AND object_type LIKE :typ<char[100]>||'%'",
+                           "Get key columns of partitions, "
+                           "must have same binds, columns and %");
+
+QString toOracleExtract::keyColumns(toExtract &ext,
+                                    const QString &owner,
+                                    const QString &name,
+                                    const QString &type,
+                                    const QString &table) const
+{
+    toQuery inf(CONNECTION, toSQL::string(SQLKeyColumns, CONNECTION).arg(table),
+                name, owner, type);
+    QString ret;
+    bool first = true;
+    while (!inf.eof())
+    {
+        if (first)
+            first = false;
+        else
+            ret += "\n  , ";
+        ret += QUOTE(inf.readValue());
+    }
+    return ret;
+}
+
+QString toOracleExtract::partitionKeyColumns(toExtract &ext,
+        const QString &owner,
+        const QString &name,
+        const QString &type) const
+{
+    return keyColumns(ext, owner, name, type, "PART");
+}
+
+QString toOracleExtract::prepareDB(const QString &db)
+{
+    static QRegExp quote("'");
+    QString ret = db;
+    ret.replace(quote, "''");
+    return ret;
+}
+
+QString toOracleExtract::segments(toExtract &ext) const
+{
+    return ext.state("Segments").toString();
+}
+
+QString toOracleExtract::segments(toExtract &ext, const toSQL &sql) const
+{
+    return toSQL::string(sql, CONNECTION).arg(segments(ext));
+}
+
+QString toOracleExtract::subPartitionKeyColumns(toExtract &ext,
+        const QString &owner,
+        const QString &name,
+        const QString &type) const
+{
+    return keyColumns(ext, owner, name, type, "SUBPART");
+}
+
+// Implementation create utility functions
+
+static toSQL SQLConstraintCols("toOracleExtract:ConstraintCols",
+                               "SELECT column_name\n"
+                               "  FROM sys.all_cons_columns\n"
+                               " WHERE owner = :own<char[100]>\n"
+                               "   AND constraint_name = :con<char[100]>\n"
+                               " ORDER BY position",
+                               "List columns in a constraint, must have same binds and columns");
+
+QString toOracleExtract::constraintColumns(toExtract &ext,
+        const QString &owner,
+        const QString &name) const
+{
+    toQuery query(CONNECTION, SQLConstraintCols, owner, name);
+
+    QString ret = "(\n    ";
+    bool first = true;
+    while (!query.eof())
+    {
+        if (first)
+            first = false;
+        else
+            ret += ",\n    ";
+        ret += QUOTE(query.readValue());
+    }
+    ret += "\n)\n";
+    return ret;
+}
+
+static toSQL SQLTableComments("toOracleExtract:TableComment",
+                              "SELECT comments\n"
+                              "  FROM sys.all_tab_comments\n"
+                              " WHERE table_name = :nam<char[100]>\n"
+                              "   AND comments IS NOT NULL\n"
+                              "   AND owner = :own<char[100]>",
+                              "Extract comments about a table, must have same columns and binds");
+
+static toSQL SQLColumnComments("toOracleExtract:ColumnComment",
+                               "SELECT column_name,\n"
+                               "       comments\n"
+                               "  FROM sys.all_col_comments\n"
+                               " WHERE table_name = :nam<char[100]>\n"
+                               "   AND comments IS NOT NULL\n"
+                               "   AND owner = :own<char[100]>",
+                               "Extract comments about a columns, must have same columns and binds");
+
+QString toOracleExtract::createComments(toExtract &ext,
+                                        const QString &schema,
+                                        const QString &owner,
+                                        const QString &name) const
+{
+    QString ret;
+    if (ext.getComments())
+    {
+        QString sql;
+        toQuery inf(CONNECTION, SQLTableComments, name, owner);
+        while (!inf.eof())
+        {
+            sql = QString("COMMENT ON TABLE %1%2 IS '%3'").
+                  arg(schema).
+                  arg(QUOTE(name)).
+                  arg(prepareDB(inf.readValue()));
+            if (PROMPT)
+            {
+                ret += "PROMPT ";
+                ret += sql;
+                ret += "\n\n";
+            }
+            ret += sql;
+            ret += ";\n\n";
+        }
+        toQuery col(CONNECTION, SQLColumnComments, name, owner);
+        while (!col.eof())
+        {
+            QString column = col.readValue();
+            sql = QString("COMMENT ON COLUMN %1%2.%3 IS '%4'").
+                  arg(schema).
+                  arg(QUOTE(name)).
+                  arg(QUOTE(column)).
+                  arg(prepareDB(col.readValue()));
+            if (PROMPT)
+            {
+                ret += "PROMPT ";
+                ret += sql;
+                ret += "\n\n";
+            }
+            ret += sql;
+            ret += ";\n\n";
+        }
+    }
+    return ret;
+}
+
+static toSQL SQLContextInfoDBA("toOracleExtract:ContextInfoDBA",
+                               "SELECT\n"
+                               "        ixv_class\n"
+                               "      , ixv_object\n"
+                               "      , ixv_attribute\n"
+                               "      , ixv_value\n"
+                               " FROM\n"
+                               "        ctxsys.ctx_index_values\n"
+                               " WHERE\n"
+                               "        ixv_index_owner = :own<char[100]>\n"
+                               "    AND\n"
+                               "        ixv_index_name = :nam<char[100]>\n"
+                               "     AND\n"
+                               "        ixv_class = :cls<char[100]>\n"
+                               " ORDER BY\n"
+                               "        ixv_object",
+                               "Get information on context index preferences.",
+                               "0801");
+
+static toSQL SQLContextInfoNoAttrDBA("toOracleExtract:ContextInfoNoAttrDBA",
+                                     "SELECT\n"
+                                     "        ixo_object\n"
+                                     " FROM\n"
+                                     "        ctxsys.ctx_index_objects\n"
+                                     " WHERE\n"
+                                     "        ixo_index_owner = :own<char[100]>\n"
+                                     "    AND\n"
+                                     "        ixo_index_name = :nam<char[100]>\n"
+                                     "    AND\n"
+                                     "        ixo_class = :cls<char[100]>",
+                                     "Get the context preferences w/o attributes.",
+                                     "0801");
+
+static toSQL SQLContextColumnDBA("toOracleExtract:ContextColumnDBA",
+                                 "SELECT\n"
+                                 "        idx_language_column\n"
+                                 "      , idx_format_column\n"
+                                 "      , idx_charset_column\n"
+                                 " FROM\n"
+                                 "        ctxsys.ctx_indexes\n"
+                                 " WHERE\n"
+                                 "        idx_owner = :own<char[100]>\n"
+                                 "    AND\n"
+                                 "        idx_name = :nam<char[100]>",
+                                 "Get the context column designations.",
+                                 "0801");
+
+static toSQL SQLContextInfo("toOracleExtract:ContextInfo",
+                            "SELECT\n"
+                            "        ixv_class\n"
+                            "      , ixv_object\n"
+                            "      , ixv_attribute\n"
+                            "      , ixv_value\n"
+                            " FROM\n"
+                            "        ctxsys.ctx_user_index_values\n"
+                            " WHERE\n"
+                            "        ixv_index_name = :nam<char[100]>\n"
+                            "     AND\n"
+                            "        ixv_class = :cls<char[100]>\n"
+                            " ORDER BY\n"
+                            "        ixv_object",
+                            "Get information on context index preferences.",
+                            "0801");
+
+static toSQL SQLContextInfoNoAttr("toOracleExtract:ContextInfoNoAttr",
+                                  "SELECT\n"
+                                  "        ixo_object\n"
+                                  " FROM\n"
+                                  "        ctxsys.ctx_user_index_objects\n"
+                                  " WHERE\n"
+                                  "        ixo_index_name = :nam<char[100]>\n"
+                                  "    AND\n"
+                                  "        ixo_class = :cls<char[100]>",
+                                  "Get the context preferences w/o attributes.",
+                                  "0801");
+
+static toSQL SQLContextColumn("toOracleExtract:ContextColumn",
+                              "SELECT\n"
+                              "        idx_language_column\n"
+                              "      , idx_format_column\n"
+                              "      , idx_charset_column\n"
+                              " FROM\n"
+                              "        ctxsys.ctx_user_indexes\n"
+                              " WHERE\n"
+                              "        idx_name = :nam<char[100]>",
+                              "Get the context column designations.",
+                              "0801");
+
+QString toOracleExtract::createContextPrefs(toExtract &ext,
+        const QString &,
+        const QString &owner,
+        const QString &name,
+        const QString &sql) const
+{
+    QString prefs = "";
+    if (PROMPT)
+        prefs += "PROMPT CREATE CONTEXT PREFERENCES\n\n";
+    prefs += qApp->translate("toOracleExtract",
+                             "-- Context indexes can be quite complicated depending upon the\n"
+                             "-- used parameters. The following is an attempt to recreate this\n"
+                             "-- context index. But, a close scrutiny of the following code is\n"
+                             "-- strongly recommended.\n\n");
+    QString tmp;
+    QString pre_name = "";
+    QString parameters = "";
+    QStringList ql;
+    toQList resultset;
+    bool first = true;
+    bool isDBA = true;
+    try
+    {
+        resultset = toQuery::readQueryNull(CONNECTION,
+                                           "SELECT * FROM ctxsys.ctx_indexes "
+                                           "WHERE idx_owner = 'DUMMY'");
+    }
+    catch (...)
+    {
+        isDBA = false;
+    }
+    ql << "DATASTORE" << "FILTER" << "LEXER" << "WORDLIST" << "STORAGE";
+    // Lets start with discovering the preferences
+    QStringList::Iterator it;
+    for (it = ql.begin();it != ql.end();++it)
+    {
+        if (isDBA)
+            resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfoDBA,
+                                               owner, name, *it);
+        else
+            resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfo,
+                                               name, *it);
+        if (!resultset.empty())
+        {
+            first = true;
+            while (!resultset.empty())
+            {
+                QString pre_class = toShift(resultset);
+                QString pre_obj = toShift(resultset);
+                QString pre_attr = toShift(resultset);
+                QString pre_val = toShift(resultset);
+                if (first)
+                {
+                    first = false;
+                    pre_name = QString("%1_%2").arg(name).arg(pre_obj);
+                    pre_name.truncate(30);
+                    tmp = QString("BEGIN\n  CTX_DDL.CREATE_PREFERENCE('%1','%2');\n")
+                          .arg(pre_name).arg(pre_obj);
+                    prefs += tmp;
+                    parameters += QString("             %1 %2\n")
+                                  .arg(pre_class).arg(pre_name);
+                }
+                tmp = QString("  CTX_DDL.SET_ATTRIBUTE('%1', '%2', '%3');\n")
+                      .arg(pre_name).arg(pre_attr).arg(pre_val);
+                prefs += tmp;
+            }
+            prefs += "END;\n\n";
+        }
+        else
+        {
+            // some preferences don't have any attributes and
+            // so won't be caught above
+            if (isDBA)
+                resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfoNoAttrDBA,
+                                                   owner, name, *it);
+            else
+                resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfoNoAttr,
+                                                   name, *it);
+            if (!resultset.empty())
+            {
+                QString pre_obj = toShift(resultset);
+                pre_name = QString("%1_%2").arg(name).arg(pre_obj);
+                pre_name.truncate(30);
+                tmp = QString("BEGIN\n  CTX_DDL.CREATE_PREFERENCE('%1', '%2');\nEND;\n\n").arg(pre_name).arg(pre_obj);
+                prefs += tmp;
+                parameters += QString("             %1 %2\n")
+                              .arg(*it).arg(pre_name);
+            }
+        }
+    }
+
+    // Now get the stoplist
+    if (isDBA)
+        resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfoDBA,
+                                           owner, name, "STOPLIST");
+    else
+        resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfo,
+                                           name, "STOPLIST");
+    pre_name = "";
+    while (!resultset.empty())
+    {
+        QString pre_class = toShift(resultset);
+        QString pre_obj = toShift(resultset);
+        QString pre_attr = toShift(resultset);
+        QString pre_val = toShift(resultset);
+        if (pre_name == "")
+        {
+            pre_name = QString("%1_STOPLIST").arg(name);
+            pre_name.truncate(30);
+            tmp = QString("BEGIN\n  CTX_DDL.CREATE_STOPLIST('%1');\n")
+                  .arg(pre_name);
+            prefs += tmp;
+            parameters += QString("             STOPLIST %1\n").arg(pre_name);
+        }
+        pre_attr.remove(4, 1);
+        tmp = QString("  CTX_DDL.ADD_%1('%2', '%3');\n")
+              .arg(pre_attr).arg(pre_name).arg(pre_val);
+        prefs += tmp;
+    }
+    if (pre_name != "")
+        prefs += "END;\n\n";
+    else
+    {
+        // This is most probably redundant but shouldn't hurt.
+        // When everybody is out to get you paranoia just seems like a good idea.
+
+        if (isDBA)
+            resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfoNoAttrDBA,
+                                               owner, name, "STOPLIST");
+        else
+            resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfoNoAttr,
+                                               name, "STOPLIST");
+
+        if (!resultset.empty())
+        {
+            QString pre_obj = toShift(resultset);
+            pre_name = QString("%1_%2").arg(name).arg(pre_obj);
+            pre_name.truncate(30);
+            tmp = QString("BEGIN\n  CTX_DDL.CREATE_STOPLIST('%1');\nEND;\n\n")
+                  .arg(pre_name);
+            prefs += tmp;
+            parameters += QString("             STOPLIST %1\n").arg(pre_name);
+        }
+    }
+
+    // get the section_groups
+    if (isDBA)
+        resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfoDBA,
+                                           owner, name, "SECTION_GROUP");
+    else
+        resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfo,
+                                           name, "SECTION_GROUP");
+    pre_name = "";
+    while (!resultset.empty())
+    {
+        QString pre_class = toShift(resultset);
+        QString pre_obj = toShift(resultset);
+        QString pre_attr = toShift(resultset);
+        QString pre_val = toShift(resultset);
+        QString pre_val1 = pre_val.left(pre_val.find(':', 0, false));
+        pre_val = pre_val.right(pre_val.length() - pre_val1.length() - 1);
+        QString pre_val2 = pre_val.left(pre_val.find(':', 0, false));
+        QString pre_val4 = pre_val.right(1);
+        if (pre_val4 == "Y")
+            pre_val4 = "TRUE";
+        else
+            pre_val4 = "FALSE";
+        if (pre_name == "")
+        {
+            pre_name = QString("%1_SECTION_GROUP").arg(name);
+            pre_name.truncate(30);
+            tmp = QString("BEGIN\n  CTX_DDL.CREATE_SECTION_GROUP('%1', '%2');\n")
+                  .arg(pre_name).arg(pre_obj);
+            prefs += tmp;
+            parameters += QString("             SECTION GROUP %1\n").arg(pre_name);
+        }
+        if (pre_attr == "ZONE")
+            tmp = QString("  CTX_DDL.ADD_ZONE_SECTION('%1', '%2', '%3');\n")
+                  .arg(pre_name).arg(pre_val1).arg(pre_val2);
+        else if (pre_attr == "FIELD")
+            tmp = QString("  CTX_DDL.ADD_FIELD_SECTION('%1', '%2', '%3', %4);\n")
+                  .arg(pre_name).arg(pre_val1).arg(pre_val2).arg(pre_val4);
+        else if (pre_attr == "SPECIAL")
+            tmp = QString("  CTX_DDL.ADD_SPECIAL_SECTION('%1', '%2');\n")
+                  .arg(pre_name).arg(pre_val1);
+        prefs += tmp;
+    }
+    if (pre_name != "")
+        prefs += "END;\n\n";
+    else
+    {
+        if (isDBA)
+            resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfoNoAttrDBA,
+                                               owner, name, "SECTION_GROUP");
+        else
+            resultset = toQuery::readQueryNull(CONNECTION, SQLContextInfoNoAttr,
+                                               name, "SECTION_GROUP");
+        if (!resultset.empty())
+        {
+            QString pre_obj = toShift(resultset);
+            pre_name = QString("%1_%2").arg(name).arg(pre_obj);
+            pre_name.truncate(30);
+            tmp = QString("BEGIN\n  CTX_DDL.CREATE_SECTION_GROUP('%1', '%2');\nEND;\n\n").
+                  arg(pre_name).arg(pre_obj);
+            prefs += tmp;
+            parameters += QString("             SECTION GROUP %1\n").arg(pre_name);
+        }
+    }
+
+    // Lets look up the language, format, and charset columns
+    // only if Oracle 8.1.6 and above
+    if (CONNECTION.version() >= "080106")
+    {
+        if (isDBA)
+            resultset = toQuery::readQueryNull(CONNECTION, SQLContextColumnDBA,
+                                               owner, name);
+        else
+            resultset = toQuery::readQueryNull(CONNECTION, SQLContextColumn,
+                                               name);
+        if (!resultset.empty())
+        {
+            toQValue vlang = toShift(resultset);
+            toQValue vfrmt = toShift(resultset);
+            toQValue vcset = toShift(resultset);
+            if (!vlang.isNull())
+            {
+                tmp = QString("             LANGUAGE COLUMN %1\n").arg(vlang);
+                parameters += tmp;
+            }
+            if (!vfrmt.isNull())
+            {
+                tmp = QString("             FORMAT COLUMN %1\n").arg(vfrmt);
+                parameters += tmp;
+            }
+            if (!vcset.isNull())
+            {
+                tmp = QString("             CHARSET COLUMN %1\n").arg(vcset);
+                parameters += tmp;
+            }
+        }
+    }
+    prefs += sql;
+    parameters += "            ";
+    tmp = QString("INDEXTYPE IS CTXSYS.CONTEXT\nPARAMETERS ('\n%1');\n\n").
+          arg(parameters);
+    prefs += tmp;
+    return prefs;
+}
+
+static toSQL SQLIOTInfo("toOracleExtract:IOTInfo",
+                        "SELECT\n"
+                        "        DECODE(\n"
+                        "                b.monitoring\n"
+                        "               ,'NO','NOMONITORING'\n"
+                        "               ,     'MONITORING'\n"
+                        "              )\n"
+                        "      , 'N/A'                         AS table_name\n"
+                        "      , LTRIM(a.degree)\n"
+                        "      , LTRIM(a.instances)\n"
+                        "      , 'INDEX'                       AS organization\n"
+                        "      , 'N/A'                         AS cache\n"
+                        "      , 'N/A'                         AS pct_used\n"
+                        "      , a.pct_free\n"
+                        "      , DECODE(\n"
+                        "                a.ini_trans\n"
+                        "               ,0,1\n"
+                        "               ,null,1\n"
+                        "               ,a.ini_trans\n"
+                        "              )                       AS ini_trans\n"
+                        "      , DECODE(\n"
+                        "                a.max_trans\n"
+                        "               ,0,255\n"
+                        "               ,null,255\n"
+                        "               ,a.max_trans\n"
+                        "              )                       AS max_trans\n"
+                        "      , a.initial_extent\n"
+                        "      , a.next_extent\n"
+                        "      , a.min_extents\n"
+                        "      , DECODE(\n"
+                        "                a.max_extents\n"
+                        "               ,2147483645,'unlimited'\n"
+                        "               ,a.max_extents\n"
+                        "              )                       AS max_extents\n"
+                        "      , a.pct_increase\n"
+                        "      , NVL(a.freelists,1)\n"
+                        "      , NVL(a.freelist_groups,1)\n"
+                        "      , a.buffer_pool                 AS buffer_pool\n"
+                        "      , DECODE(\n"
+                        "                b.logging\n"
+                        "               ,'NO','NOLOGGING'\n"
+                        "               ,     'LOGGING'\n"
+                        "              )                       AS logging\n"
+                        "      , a.tablespace_name             AS tablespace_name\n"
+                        "      , DECODE(\n"
+                        "                b.blocks\n"
+                        "                ,null,GREATEST(a.initial_extent,a.next_extent) \n"
+                        "                      / (b.blocks * 1024)\n"
+                        "                ,'0' ,GREATEST(a.initial_extent,a.next_extent)\n"
+                        "                      / (b.blocks * 1024)\n"
+                        "                ,b.blocks\n"
+                        "              )                       AS blocks\n"
+                        " FROM\n"
+                        "        sys.all_indexes a,\n"
+                        "        sys.all_all_tables b,\n"
+                        "        sys.all_constraints c\n"
+                        " WHERE  a.table_name  = :nam<char[100]>\n"
+                        "   AND  b.owner = a.owner\n"
+                        "   AND  b.table_name = a.table_name\n"
+                        "   AND  a.owner = :own<char[100]>\n"
+                        "   AND  c.constraint_name = a.index_name\n"
+                        "   AND  c.owner = a.owner\n"
+                        "   AND  c.constraint_type = 'P'",
+                        "Get storage information about a IOT storage, "
+                        "same binds and columns");
+
+static toSQL SQLOverflowInfo("toOracleExtract:OverflowInfo",
+                             "SELECT\n"
+                             "        '  '\n"
+                             "      , 'N/A'\n"
+                             "      , DECODE(\n"
+                             "                LTRIM(t.cache)\n"
+                             "               ,'Y','CACHE'\n"
+                             "               ,    'NOCACHE'\n"
+                             "              )\n"
+                             "      , t.pct_used\n"
+                             "      , t.pct_free\n"
+                             "      , DECODE(\n"
+                             "                t.ini_trans\n"
+                             "               ,0,1\n"
+                             "               ,null,1\n"
+                             "               ,t.ini_trans\n"
+                             "              )                       AS ini_trans\n"
+                             "      , DECODE(\n"
+                             "                t.max_trans\n"
+                             "               ,0,255\n"
+                             "               ,null,255\n"
+                             "               ,t.max_trans\n"
+                             "              )                       AS max_trans\n"
+                             "      , t.initial_extent\n"
+                             "      , t.next_extent\n"
+                             "      , t.min_extents\n"
+                             "      , DECODE(\n"
+                             "                t.max_extents\n"
+                             "               ,2147483645,'unlimited'\n"
+                             "               ,           t.max_extents\n"
+                             "              )                       AS max_extents\n"
+                             "      , NVL(t.pct_increase,0)\n"
+                             "      , NVL(t.freelists,1)\n"
+                             "      , NVL(t.freelist_groups,1)\n"
+                             "      , t.buffer_pool                 AS buffer_pool\n"
+                             "      , DECODE(\n"
+                             "                t.logging\n"
+                             "               ,'NO','NOLOGGING'\n"
+                             "               ,     'LOGGING'\n"
+                             "              )                       AS logging\n"
+                             "      , t.tablespace_name             AS tablespace_name\n"
+                             "      , s.blocks - NVL(t.empty_blocks,0)\n"
+                             " FROM\n"
+                             "        sys.all_tables    t\n"
+                             "      , %1  s\n"
+                             " WHERE\n"
+                             "            t.iot_name     = :nam<char[100]>\n"
+                             "        AND t.table_name   = s.segment_name\n"
+                             "        AND s.segment_type = 'TABLE'\n"
+                             "        AND s.owner        = :own<char[100]>\n"
+                             "        AND t.owner        = s.owner",
+                             "Get information about overflow segment for table, must have same binds and columns",
+                             "0800");
+
+QString toOracleExtract::createIOT(toExtract &ext, const QString &schema, const QString &owner,
+                                   const QString &name) const
+{
+    toQList storage = toQuery::readQueryNull(CONNECTION, SQLIOTInfo, name, owner);
+
+    QString ret = createTableText(ext, storage, schema, owner, name);
+    if (ext.getStorage())
+    {
+        toQList overflow = toQuery::readQueryNull(CONNECTION, segments(ext, SQLOverflowInfo), name, owner);
+        if (overflow.size() == 18)
+        {
+            ret += "OVERFLOW\n";
+            ret += segmentAttributes(ext, overflow);
+        }
+    }
+    ret += ";\n\n";
+    ret += createComments(ext, schema, owner, name);
+    return ret;
+}
+
+static toSQL SQLPrimaryKey("toOracleExtract:PrimaryKey",
+                           "SELECT a.constraint_name,b.tablespace_name\n"
+                           "  FROM sys.all_constraints a,sys.all_indexes b\n"
+                           " WHERE a.table_name = :nam<char[100]>\n"
+                           "   AND a.constraint_type = 'P'\n"
+                           "   AND a.owner = :own<char[100]>\n"
+                           "   AND a.owner = b.owner\n"
+                           "   AND a.constraint_name = b.index_name",
+                           "Get constraint name for primary key of table, same binds and columns");
+
+QString toOracleExtract::createTableText(toExtract &ext,
+        toQList &result,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    QString monitoring = toShift(result);
+    QString table = toShift(result);
+    QString degree = toShift(result);
+    QString instances = toShift(result);
+    QString organization = toShift(result);
+
+    QString ret;
+    if (PROMPT)
+        ret = QString("PROMPT CREATE TABLE %1%2\n\n").arg(schema).arg(QUOTE(name));
+    ret += QString("CREATE TABLE %1%2\n(\n    ").arg(schema).arg(QUOTE(name));
+    ret += tableColumns(ext, owner, name);
+    if (organization == "INDEX" && ext.getStorage())
+    {
+        toQList res = toQuery::readQueryNull(CONNECTION, SQLPrimaryKey, name, owner);
+        if (res.size() != 2)
+            throw qApp->translate("toOracleExtract", "Couldn't find primary key of %1.%2").arg(owner).arg(name);
+        QString primary = *(res.begin());
+        QString tablespace = *(res.rbegin());
+        ret += QString("  , CONSTRAINT %1 PRIMARY KEY\n").arg(QUOTE(primary));
+        ret += indexColumns(ext, "      ", owner, primary);
+        ret += QString("      USING TABLESPACE %2\n").arg(QUOTE(tablespace));
+    }
+    ret += ")\n";
+    if (CONNECTION.version() >= "0800" && ext.getStorage())
+    {
+        ret += "ORGANIZATION        ";
+        ret += organization;
+        ret += "\n";
+    }
+    if (CONNECTION.version() >= "0801" && ext.getStorage())
+    {
+        ret += monitoring;
+        ret += "\n";
+    }
+    if (ext.getParallel())
+        ret += QString("PARALLEL\n"
+                       "(\n"
+                       "  DEGREE            %1\n"
+                       "  INSTANCES         %2\n"
+                       ")\n").
+               arg(degree).
+               arg(instances);
+
+    toUnShift(result, toQValue(organization));
+    toUnShift(result, toQValue(""));
+
+    ret += segmentAttributes(ext, result);
+
+    return ret;
+}
+
+static toSQL SQLMViewInfo("toOracleExtract:MaterializedViewInfo",
+                          "       SELECT\n"
+                          "              m.container_name\n"
+                          "            , DECODE(\n"
+                          "                      m.build_mode\n"
+                          "                     ,'YES','USING PREBUILT TABLE'\n"
+                          "                     ,DECODE(\n"
+                          "                              m.last_refresh_date\n"
+                          "                             ,null,'BUILD DEFERRED'\n"
+                          "                             ,'BUILD IMMEDIATE'\n"
+                          "                            )\n"
+                          "                    )                                  AS build_mode\n"
+                          "            , DECODE(\n"
+                          "                      m.refresh_method\n"
+                          "                     ,'NEVER','NEVER REFRESH'\n"
+                          "                     ,'REFRESH ' || m.refresh_method\n"
+                          "                    )                                  AS refresh_method\n"
+                          "            , DECODE(\n"
+                          "                      m.refresh_mode\n"
+                          "                     ,'NEVER',null\n"
+                          "                     ,'ON ' || m.refresh_mode\n"
+                          "                    )                                  AS refresh_mode\n"
+                          "            , TO_CHAR(s.start_with, 'DD-MON-YYYY HH24:MI:SS')\n"
+                          "                                                       AS start_with\n"
+                          "            , s.next\n"
+                          "            , DECODE(\n"
+                          "                      s.refresh_method\n"
+                          "                     ,'PRIMARY KEY','WITH  PRIMARY KEY'\n"
+                          "                     ,'ROWID'      ,'WITH  ROWID'\n"
+                          "                     ,null\n"
+                          "                    )                                  AS using_pk\n"
+                          "            , s.master_rollback_seg\n"
+                          "            , DECODE(\n"
+                          "                      m.updatable\n"
+                          "                     ,'N',null\n"
+                          "                     ,DECODE(\n"
+                          "                              m.rewrite_enabled\n"
+                          "                             ,'Y','FOR UPDATE ENABLE QUERY REWRITE'\n"
+                          "                             ,'N','FOR UPDATE DISABLE QUERY REWRITE'\n"
+                          "                            )\n"
+                          "                    )                                  AS updatable\n"
+                          "            , s.query\n"
+                          "       FROM\n"
+                          "              sys.all_mviews     m\n"
+                          "            , sys.all_snapshots  s\n"
+                          "       WHERE\n"
+                          "                  m.mview_name  = :nam<char[100]>\n"
+                          "              AND s.name        = m.mview_name\n"
+                          "              AND m.owner       = :own<char[100]>\n"
+                          "              AND s.owner       = m.owner",
+                          "Get information about materialized view, must have same columns and binds");
+
+static toSQL SQLIndexName("toOracleExtract:TableIndexes",
+                          "SELECT index_name\n"
+                          "  FROM sys.all_indexes\n"
+                          " WHERE table_name = :nam<char[100]>\n"
+                          "   AND owner = own<char[100]>",
+                          "Get indexes available to a table, must have same binds and columns");
+
+QString toOracleExtract::createMView(toExtract &ext,
+                                     const QString &schema,
+                                     const QString &owner,
+                                     const QString &name,
+                                     const QString &type) const
+{
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLMViewInfo, name, owner);
+    if (result.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find materialised table %1.%2").
+        arg(QUOTE(owner)).arg(QUOTE(name));
+    QString table = toShift(result);
+    QString buildMode = toShift(result);
+    QString refreshMethod = toShift(result);
+    QString refreshMode = toShift(result);
+    QString startWith = toShift(result);
+    QString next = toShift(result);
+    QString usingPK = toShift(result);
+    QString masterRBSeg = toShift(result);
+    QString updatable = toShift(result);
+    QString query = toShift(result);
+
+    toQuery inf(CONNECTION, SQLIndexName, table, owner);
+    QString index(inf.readValue());
+
+    QString ret;
+    QString sql = QString("CREATE %1 %2%3\n").arg(type).arg(schema).arg(QUOTE(name));
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n";
+    }
+    ret += sql;
+    ret += createMViewTable(ext, schema, owner, table);
+    ret += buildMode;
+    ret += "\nUSING INDEX\n";
+    ret += createMViewIndex(ext, schema, owner, index);
+
+    if (refreshMethod != "NEVER REFRESH")
+    {
+        if (!startWith.isEmpty())
+            ret += QString("START WITH TO_DATE('%1','DD-MM-YYYY HH24:MI:SS')\n").
+                   arg(startWith);
+        if (!next.isEmpty())
+            ret += QString("NEXT  %1\n").arg(next);
+        if (!usingPK.isEmpty())
+        {
+            ret += usingPK;
+            ret += "\n";
+        }
+        if (!masterRBSeg.isEmpty() && ext.getStorage())
+            ret += QString("USING MASTER ROLLBACK SEGMENT %1\n").
+                   arg(QUOTE(masterRBSeg));
+    }
+
+    if (!updatable.isEmpty())
+    {
+        ret += updatable;
+        ret += "\n";
+    }
+    ret += "AS\n";
+    ret += query;
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::createMViewIndex(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    if (!ext.getStorage() || !ext.getParallel())
+        return "";
+    ext.setState("IsASnapIndex", true);
+
+    static QRegExp start("^INITRANS");
+    static QRegExp ignore("LOGGING");
+
+    bool started = false;
+    bool done = false;
+
+    QString initial = createIndex(ext, schema, owner, name);
+    QStringList linesIn = QStringList::split("\n", initial, true);
+    QString ret;
+
+    for (QStringList::Iterator i = linesIn.begin();i != linesIn.end() && !done;i++)
+    {
+        if (start.match(*i) >= 0)
+            started = true;
+        if (started)
+        {
+            QString line = *i;
+            if (line.length() > 0 && line.at(line.length() - 1) == ';')
+            {
+                line.truncate(line.length() - 1);
+                done = true;
+            }
+            if (ignore.match(line) < 0 && line.length() > 0)
+            {
+                ret += line;
+                ret += "\n";
+            }
+        }
+    }
+
+    ext.setState("IsASnapIndex", false);
+    return ret;
+}
+
+static toSQL SQLSnapshotInfo("toOracleExtract:SnapshotInfo",
+                             "SELECT log_table,\n"
+                             "       rowids,\n"
+                             "       primary_key,\n"
+                             "       filter_columns\n"
+                             "  FROM sys.all_snapshot_logs\n"
+                             "   AND master = :nam<char[100]>\n"
+                             "   AND log_owner = :own<char[100]>",
+                             "Get information about snapshot or materialized view log, "
+                             "must have same binds and columns");
+
+static toSQL SQLSnapshotColumns("toOracleExtract:SnapshotColumns",
+                                "SELECT\n"
+                                "        column_name\n"
+                                " FROM\n"
+                                "        sys.dba_snapshot_log_filter_cols\n"
+                                " WHERE\n"
+                                "            name  = :nam<char[100]>\n"
+                                "        AND owner = :own<char[100]>\n"
+                                " MINUS\n"
+                                " SELECT\n"
+                                "        column_name\n"
+                                " FROM\n"
+                                "        sys.all_cons_columns  c\n"
+                                "      , sys.all_constraints   d\n"
+                                " WHERE\n"
+                                "            d.table_name      = :nam<char[100]>\n"
+                                "        AND d.constraint_type = 'P'\n"
+                                "        AND c.table_name      = d.table_name\n"
+                                "        AND c.constraint_name = d.constraint_name\n"
+                                "        AND d.owner           = :own<char[100]>\n"
+                                "        AND c.owner           = d.owner",
+                                "Get columns of snapshot log, must have same columns and binds");
+
+QString toOracleExtract::createMViewLog(toExtract &ext,
+                                        const QString &schema,
+                                        const QString &owner,
+                                        const QString &name,
+                                        const QString &type) const
+{
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLSnapshotInfo, name, owner);
+    if (result.size() != 4)
+        throw qApp->translate("toOracleExtract", "Couldn't find log %1.%2").arg(owner).arg(name);
+
+    QString table = toShift(result);
+    QString rowIds = toShift(result);
+    QString primaryKey = toShift(result);
+    QString filterColumns = toShift(result);
+
+    QString ret;
+    QString sql = QString("CREATE %1 LOG ON %2%3\n").
+                  arg(type).
+                  arg(schema).
+                  arg(QUOTE(name));
+    if (PROMPT)
+    {
+        QString ret = "PROMPT ";
+        ret += sql;
+        ret += "\n";
+    }
+    ret += sql;
+    ret += createMViewTable(ext, schema, owner, table);
+
+    if (rowIds == "YES" && primaryKey == "YES")
+        ret += "WITH PRIMARY KEY, ROWID ";
+    else if (rowIds == "YES")
+        ret += "WITH ROWID ";
+    else if (primaryKey == "YES")
+        ret += "WITH PRIMARY KEY";
+
+    toQuery inf(CONNECTION, SQLSnapshotColumns, name, owner);
+    bool first = true;
+    if (!inf.eof())
+    {
+        ret += "\n(\n    ";
+        while (!inf.eof())
+        {
+            if (first)
+                first = false;
+            else
+                ret += "\n  , ";
+            ret += QUOTE(inf.readValue());
+        }
+        ret += ")";
+    }
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::createMViewTable(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    if (!ext.getStorage() || !ext.getParallel())
+        return "";
+    ext.setState("IsASnapTable", true);
+
+    static QRegExp parallel("^PARALLEL");
+
+    bool started = false;
+    bool done = false;
+
+    QString initial = createTable(ext, schema, owner, name);
+    QStringList linesIn = QStringList::split("\n", initial, true);
+    QString ret;
+
+    for (QStringList::Iterator i = linesIn.begin();i != linesIn.end() && !done;i++)
+    {
+        if (parallel.match(*i) >= 0)
+            started = true;
+        if (started)
+        {
+            QString line = *i;
+            if (line.length() > 0 && line.at(line.length() - 1) == ';')
+            {
+                line.truncate(line.length() - 1);
+                done = true;
+            }
+            if (line.length())
+            {
+                ret += line;
+                ret += "\n";
+            }
+        }
+    }
+
+    ext.setState("IsASnapTable", false);
+    return ret;
+}
+
+static toSQL SQLPartitionedIOTInfo("toOracleExtract:PartitionedIOTInfo",
+                                   "SELECT\n"
+                                   "        DECODE(\n"
+                                   "                t.monitoring\n"
+                                   "               ,'NO','NOMONITORING'\n"
+                                   "               ,     'MONITORING'\n"
+                                   "              )                       AS monitoring\n"
+                                   "      , t.table_name\n"
+                                   "      , LTRIM(t.degree)               AS degree\n"
+                                   "      , LTRIM(t.instances)            AS instances\n"
+                                   "      , 'INDEX'                       AS organization\n"
+                                   "      , DECODE(\n"
+                                   "                LTRIM(t.cache)\n"
+                                   "               ,'Y','CACHE'\n"
+                                   "               ,    'NOCACHE'\n"
+                                   "              )                       AS cache\n"
+                                   "      , 'N/A'                         AS pct_used\n"
+                                   "      , p.def_pct_free                AS pct_free\n"
+                                   "      , p.def_ini_trans               AS ini_trans\n"
+                                   "      , p.def_max_trans               AS max_trans\n"
+                                   "      ,DECODE(\n"
+                                   "               p.def_initial_extent\n"
+                                   "              ,'DEFAULT',s.initial_extent\n"
+                                   "              ,p.def_initial_extent * :bs<char[100]> * 1024\n"
+                                   "             )                        AS initial_extent\n"
+                                   "      ,DECODE(\n"
+                                   "               p.def_next_extent\n"
+                                   "              ,'DEFAULT',s.next_extent\n"
+                                   "              ,p.def_next_extent * :bs<char[100]> * 1024\n"
+                                   "             )                        AS next_extent\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_min_extents\n"
+                                   "               ,'DEFAULT',s.min_extents\n"
+                                   "               ,p.def_min_extents\n"
+                                   "              )                       AS min_extents\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_max_extents\n"
+                                   "               ,'DEFAULT',DECODE(\n"
+                                   "                                  s.max_extents\n"
+                                   "                                 ,2147483645,'unlimited'\n"
+                                   "                                 ,s.max_extents\n"
+                                   "                                )\n"
+                                   "               ,2147483645,'unlimited'\n"
+                                   "               ,p.def_max_extents\n"
+                                   "              )                       AS max_extents\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_pct_increase\n"
+                                   "               ,'DEFAULT',s.pct_increase\n"
+                                   "               ,p.def_pct_increase\n"
+                                   "              )                       AS pct_increase\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_freelists\n"
+                                   "               ,0,1\n"
+                                   "               ,NVL(p.def_freelists,1)\n"
+                                   "              )                       AS freelists\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_freelist_groups\n"
+                                   "               ,0,1\n"
+                                   "               ,NVL(p.def_freelist_groups,1)\n"
+                                   "              )                       AS freelist_groups\n"
+                                   "      , p.def_buffer_pool             AS buffer_pool\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_logging \n"
+                                   "               ,'NO','NOLOGGING'\n"
+                                   "               ,     'LOGGING'\n"
+                                   "              )                       AS logging\n"
+                                   "      , p.def_tablespace_name         AS tablespace_name\n"
+                                   "      , t.blocks - NVL(t.empty_blocks,0)\n"
+                                   " FROM\n"
+                                   "        sys.all_all_tables    t\n"
+                                   "      , sys.all_part_indexes  p\n"
+                                   "      , sys.dba_tablespaces   s\n"
+                                   " WHERE\n"
+                                   "            t.table_name      = :name<char[100]>\n"
+                                   "        AND p.table_name      = t.table_name\n"
+                                   "        AND s.tablespace_name = p.def_tablespace_name\n"
+                                   "        AND t.owner           = :own<char[100]>\n"
+                                   "        AND p.owner           = t.owner",
+                                   "Get information about a partitioned indexed organized table, "
+                                   "must have same columns and binds",
+                                   "0801");
+
+static toSQL SQLPartitionedIOTInfo8("toOracleExtract:PartitionedIOTInfo",
+                                    "SELECT\n"
+                                    "        'N/A'                         AS monitoring\n"
+                                    "      , t.table_name\n"
+                                    "      , LTRIM(t.degree)               AS degree\n"
+                                    "      , LTRIM(t.instances)            AS instances\n"
+                                    "      , 'INDEX'                       AS organization\n"
+                                    "      , DECODE(\n"
+                                    "                LTRIM(t.cache)\n"
+                                    "               ,'Y','CACHE'\n"
+                                    "               ,    'NOCACHE'\n"
+                                    "              )                       AS cache\n"
+                                    "      , 'N/A'                         AS pct_used\n"
+                                    "      , p.def_pct_free                AS pct_free\n"
+                                    "      , p.def_ini_trans               AS ini_trans\n"
+                                    "      , p.def_max_trans               AS max_trans\n"
+                                    "      ,DECODE(\n"
+                                    "               p.def_initial_extent\n"
+                                    "              ,'DEFAULT',s.initial_extent\n"
+                                    "              ,p.def_initial_extent * :bs<char[100]> * 1024\n"
+                                    "             )                        AS initial_extent\n"
+                                    "      ,DECODE(\n"
+                                    "               p.def_next_extent\n"
+                                    "              ,'DEFAULT',s.next_extent\n"
+                                    "              ,p.def_next_extent * :bs<char[100]> * 1024\n"
+                                    "             )                        AS next_extent\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_min_extents\n"
+                                    "               ,'DEFAULT',s.min_extents\n"
+                                    "               ,p.def_min_extents\n"
+                                    "              )                       AS min_extents\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_max_extents\n"
+                                    "               ,'DEFAULT',DECODE(\n"
+                                    "                                  s.max_extents\n"
+                                    "                                 ,2147483645,'unlimited'\n"
+                                    "                                 ,s.max_extents\n"
+                                    "                                )\n"
+                                    "               ,2147483645,'unlimited'\n"
+                                    "               ,p.def_max_extents\n"
+                                    "              )                       AS max_extents\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_pct_increase\n"
+                                    "               ,'DEFAULT',s.pct_increase\n"
+                                    "               ,p.def_pct_increase\n"
+                                    "              )                       AS pct_increase\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_freelists\n"
+                                    "               ,0,1\n"
+                                    "               ,NVL(p.def_freelists,1)\n"
+                                    "              )                       AS freelists\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_freelist_groups\n"
+                                    "               ,0,1\n"
+                                    "               ,NVL(p.def_freelist_groups,1)\n"
+                                    "              )                       AS freelist_groups\n"
+                                    "      , 'N/A'                         AS buffer_pool\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_logging \n"
+                                    "               ,'NO','NOLOGGING'\n"
+                                    "               ,     'LOGGING'\n"
+                                    "              )                       AS logging\n"
+                                    "      , p.def_tablespace_name         AS tablespace_name\n"
+                                    "      , t.blocks - NVL(t.empty_blocks,0)\n"
+                                    " FROM\n"
+                                    "        sys.all_all_tables    t\n"
+                                    "      , sys.all_part_indexes  p\n"
+                                    "      , sys.dba_tablespaces   s\n"
+                                    " WHERE\n"
+                                    "            t.table_name      = :name<char[100]>\n"
+                                    "        AND p.table_name      = t.table_name\n"
+                                    "        AND s.tablespace_name = p.def_tablespace_name\n"
+                                    "        AND t.owner           = :own<char[100]>\n"
+                                    "        AND p.owner           = t.owner",
+                                    "",
+                                    "0800");
+
+static toSQL SQLPartitionIndexNames("toOracleExtract:PartitionIndexNames",
+                                    "SELECT index_name\n"
+                                    "  FROM sys.all_part_indexes\n"
+                                    " WHERE table_name = :nam<char[100]>\n"
+                                    "   AND owner      = :own<char[100]>\n"
+                                    " ORDER BY index_name",
+                                    "Index names of partition table, "
+                                    "must have same binds and columns");
+
+QString toOracleExtract::createPartitionedIOT(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLPartitionedIOTInfo,
+                                            QString::number(ext.getBlockSize()), name, owner);
+    QString ret = createTableText(ext, result, schema, owner, name);
+    if (ext.getStorage())
+    {
+        toQList overflow = toQuery::readQueryNull(CONNECTION, segments(ext, SQLOverflowInfo), name, owner);
+        if (overflow.size() == 18)
+        {
+            ret += "OVERFLOW\n";
+            ret += segmentAttributes(ext, overflow);
+        }
+    }
+
+    if (ext.getPartition())
+    {
+        toQuery inf(CONNECTION, SQLPartitionIndexNames, name, owner);
+        if (!inf.eof())
+            throw qApp->translate("toOracleExtract", "Couldn't find index partitions for %1.%2").arg(owner).arg(name);
+        QString index(inf.readValue());
+        ret +=
+            "PARTITION BY RANGE\n"
+            "(\n    ";
+        ret += partitionKeyColumns(ext, owner, name, "TABLE");
+        ret += "\n)\n";
+        ret += rangePartitions(ext, owner, index, "NONE", "IOT");
+    }
+    ret += createComments(ext, schema, owner, name);
+    return ret;
+}
+
+static toSQL SQLIndexPartition8("toOracleExtract:IndexPartition",
+                                "SELECT\n"
+                                "        i.partitioning_type\n"
+                                "      , 'N/A'                         AS subpartitioning_type\n"
+                                "      , i.locality\n"
+                                "      , 0                             AS compressed\n"
+                                "      , 'INDEX'                       AS organization\n"
+                                "      , 'N/A'                         AS cache\n"
+                                "      , 'N/A'                         AS pct_used\n"
+                                "      , i.def_pct_free\n"
+                                "      , DECODE(\n"
+                                "                i.def_ini_trans\n"
+                                "               ,0,1\n"
+                                "               ,null,1\n"
+                                "               ,i.def_ini_trans\n"
+                                "              )                       AS ini_trans\n"
+                                "      , DECODE(\n"
+                                "                i.def_max_trans\n"
+                                "               ,0,255\n"
+                                "               ,null,255\n"
+                                "               ,i.def_max_trans\n"
+                                "              )                       AS max_trans\n"
+                                "      ,DECODE(\n"
+                                "               i.def_initial_extent\n"
+                                "              ,'DEFAULT',s.initial_extent\n"
+                                "              ,i.def_initial_extent * :bs<char[100]> * 1024\n"
+                                "             )                        AS initial_extent\n"
+                                "      ,DECODE(\n"
+                                "               i.def_next_extent\n"
+                                "              ,'DEFAULT',s.next_extent\n"
+                                "              ,i.def_next_extent * :bs<char[100]> * 1024\n"
+                                "             )                        AS next_extent\n"
+                                "      , DECODE(\n"
+                                "                i.def_min_extents\n"
+                                "               ,'DEFAULT',s.min_extents\n"
+                                "               ,i.def_min_extents\n"
+                                "              )                       AS min_extents\n"
+                                "      , DECODE(\n"
+                                "                i.def_max_extents\n"
+                                "               ,'DEFAULT',DECODE(\n"
+                                "                                  s.max_extents\n"
+                                "                                 ,2147483645,'unlimited'\n"
+                                "                                 ,s.max_extents\n"
+                                "                                )\n"
+                                "               ,2147483645,'unlimited'\n"
+                                "               ,i.def_max_extents\n"
+                                "              )                       AS max_extents\n"
+                                "      , DECODE(\n"
+                                "                i.def_pct_increase\n"
+                                "               ,'DEFAULT',s.pct_increase\n"
+                                "               ,i.def_pct_increase\n"
+                                "              )                       AS pct_increase\n"
+                                "      , DECODE(\n"
+                                "                i.def_freelists\n"
+                                "               ,0,1\n"
+                                "               ,null,1\n"
+                                "               ,i.def_freelists\n"
+                                "              )                       AS freelists\n"
+                                "      , DECODE(\n"
+                                "                i.def_freelist_groups\n"
+                                "               ,0,1\n"
+                                "               ,null,1\n"
+                                "               ,i.def_freelist_groups\n"
+                                "              )                       AS freelist_groups\n"
+                                "      , 'N/A'                         AS buffer_pool\n"
+                                "      , DECODE(\n"
+                                "                i.def_logging\n"
+                                "               ,'NO','NOLOGGING'\n"
+                                "               ,     'LOGGING'\n"
+                                "              )                       AS logging\n"
+                                "      , NVL(i.def_tablespace_name,s.tablespace_name)\n"
+                                "      , GREATEST(\n"
+                                "                  DECODE(\n"
+                                "                          i.def_initial_extent\n"
+                                "                         ,'DEFAULT',s.initial_extent / :bs<char[100]> / 1024\n"
+                                "                         ,i.def_initial_extent\n"
+                                "                        )\n"
+                                "                 ,DECODE(\n"
+                                "                          i.def_next_extent\n"
+                                "                         ,'DEFAULT',s.next_extent / :bs<char[100]> / 1024\n"
+                                "                         ,i.def_next_extent\n"
+                                "                        )\n"
+                                "                )                     AS blocks\n"
+                                " FROM\n"
+                                "        sys.all_part_indexes  i\n"
+                                "      , sys.dba_tablespaces   s\n"
+                                "      , sys.all_part_tables   t\n"
+                                " WHERE\n"
+                                "            i.index_name      = :nam<char[100]>\n"
+                                "        AND t.table_name      = i.table_name\n"
+                                "        AND s.tablespace_name = t.def_tablespace_name\n"
+                                "        AND i.owner           = :own<char[100]>\n"
+                                "        AND n.owner           = i.owner\n"
+                                "        AND t.owner           = i.owner",
+                                "Get information about index partitions, "
+                                "must have same columns and same columns",
+                                "0800");
+
+static toSQL SQLIndexPartition("toOracleExtract:IndexPartition",
+                               "SELECT\n"
+                               "        i.partitioning_type\n"
+                               "      , i.subpartitioning_type\n"
+                               "      , i.locality\n"
+                               "      , DECODE(\n"
+                               "                n.compression\n"
+                               "               ,'ENABLED',n.prefix_length\n"
+                               "               ,0\n"
+                               "              )                             AS compressed\n"
+                               "      , 'INDEX'                       AS organization\n"
+                               "      , 'N/A'                         AS cache\n"
+                               "      , 'N/A'                         AS pct_used\n"
+                               "      , i.def_pct_free\n"
+                               "      , DECODE(\n"
+                               "                i.def_ini_trans\n"
+                               "               ,0,1\n"
+                               "               ,null,1\n"
+                               "               ,i.def_ini_trans\n"
+                               "              )                       AS ini_trans\n"
+                               "      , DECODE(\n"
+                               "                i.def_max_trans\n"
+                               "               ,0,255\n"
+                               "               ,null,255\n"
+                               "               ,i.def_max_trans\n"
+                               "              )                       AS max_trans\n"
+                               "      ,DECODE(\n"
+                               "               i.def_initial_extent\n"
+                               "              ,'DEFAULT',s.initial_extent\n"
+                               "              ,i.def_initial_extent * :bs<char[100]> * 1024\n"
+                               "             )                        AS initial_extent\n"
+                               "      ,DECODE(\n"
+                               "               i.def_next_extent\n"
+                               "              ,'DEFAULT',s.next_extent\n"
+                               "              ,i.def_next_extent * :bs<char[100]> * 1024\n"
+                               "             )                        AS next_extent\n"
+                               "      , DECODE(\n"
+                               "                i.def_min_extents\n"
+                               "               ,'DEFAULT',s.min_extents\n"
+                               "               ,i.def_min_extents\n"
+                               "              )                       AS min_extents\n"
+                               "      , DECODE(\n"
+                               "                i.def_max_extents\n"
+                               "               ,'DEFAULT',DECODE(\n"
+                               "                                  s.max_extents\n"
+                               "                                 ,2147483645,'unlimited'\n"
+                               "                                 ,s.max_extents\n"
+                               "                                )\n"
+                               "               ,2147483645,'unlimited'\n"
+                               "               ,i.def_max_extents\n"
+                               "              )                       AS max_extents\n"
+                               "      , DECODE(\n"
+                               "                i.def_pct_increase\n"
+                               "               ,'DEFAULT',s.pct_increase\n"
+                               "               ,i.def_pct_increase\n"
+                               "              )                       AS pct_increase\n"
+                               "      , DECODE(\n"
+                               "                i.def_freelists\n"
+                               "               ,0,1\n"
+                               "               ,null,1\n"
+                               "               ,i.def_freelists\n"
+                               "              )                       AS freelists\n"
+                               "      , DECODE(\n"
+                               "                i.def_freelist_groups\n"
+                               "               ,0,1\n"
+                               "               ,null,1\n"
+                               "               ,i.def_freelist_groups\n"
+                               "              )                       AS freelist_groups\n"
+                               "      , i.def_buffer_pool             AS buffer_pool\n"
+                               "      , DECODE(\n"
+                               "                i.def_logging\n"
+                               "               ,'NO','NOLOGGING'\n"
+                               "               ,     'LOGGING'\n"
+                               "              )                       AS logging\n"
+                               "      , NVL(i.def_tablespace_name,s.tablespace_name)\n"
+                               "      , GREATEST(\n"
+                               "                  DECODE(\n"
+                               "                          i.def_initial_extent\n"
+                               "                         ,'DEFAULT',s.initial_extent / :bs<char[100]> / 1024\n"
+                               "                         ,i.def_initial_extent\n"
+                               "                        )\n"
+                               "                 ,DECODE(\n"
+                               "                          i.def_next_extent\n"
+                               "                         ,'DEFAULT',s.next_extent / :bs<char[100]> / 1024\n"
+                               "                         ,i.def_next_extent\n"
+                               "                        )\n"
+                               "                )                     AS blocks\n"
+                               " FROM\n"
+                               "        sys.all_part_indexes  i\n"
+                               "      , sys.all_indexes       n\n"
+                               "      , sys.dba_tablespaces   s\n"
+                               "      , sys.all_part_tables   t\n"
+                               " WHERE\n"
+                               "            i.index_name      = :nam<char[100]>\n"
+                               "        AND n.index_name      = i.index_name\n"
+                               "        AND t.table_name      = i.table_name\n"
+                               "        AND s.tablespace_name = t.def_tablespace_name\n"
+                               "        AND i.owner           = :own<char[100]>\n"
+                               "        AND n.owner           = i.owner\n"
+                               "        AND t.owner           = i.owner",
+                               "",
+                               "0801");
+
+QString toOracleExtract::createPartitionedIndex(toExtract &ext,
+        const QString &,
+        const QString &owner,
+        const QString &name,
+        const QString &sql) const
+{
+    if (!ext.getPartition())
+        return "";
+
+    QString ret = sql;
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLIndexPartition,
+                                            QString::number(ext.getBlockSize()), name, owner);
+    QString partitionType = toShift(result);
+    QString subPartitionType = toShift(result);
+    QString locality = toShift(result);
+    QString compressed = toShift(result);
+    toUnShift(result, toQValue(""));
+
+    ret += segmentAttributes(ext, result);
+
+    if (!compressed.isEmpty())
+    {
+        ret += "COMPRESS            ";
+        ret += compressed;
+        ret += "\n";
+    }
+
+    if (locality == "GLOBAL")
+    {
+        ret +=
+            "GLOBAL PARTITION BY RANGE\n"
+            "(\n"
+            "    ";
+        ret += partitionKeyColumns(ext, owner, name, "INDEX");
+        ret += "\n)\n";
+        ret += rangePartitions(ext, owner, name, subPartitionType, "GLOBAL");
+    }
+    else
+    {
+        ret += "LOCAL\n";
+        if (partitionType == "RANGE")
+            ret += rangePartitions(ext, owner, name, subPartitionType, "LOCAL");
+    }
+    return ret;
+}
+
+static toSQL SQLPartitionTableInfo("toOracleExtract:PartitionTableInfo",
+                                   "SELECT\n"
+                                   "        DECODE(\n"
+                                   "                t.monitoring\n"
+                                   "               ,'NO','NOMONITORING'\n"
+                                   "               ,     'MONITORING'\n"
+                                   "              )                       AS monitoring\n"
+                                   "      , t.table_name\n"
+                                   "      , LTRIM(t.degree)               AS degree\n"
+                                   "      , LTRIM(t.instances)            AS instances\n"
+                                   "      , DECODE(\n"
+                                   "                t.iot_type\n"
+                                   "               ,'IOT','INDEX'\n"
+                                   "               ,      'HEAP'\n"
+                                   "              )                       AS organization\n"
+                                   "      , DECODE(\n"
+                                   "                LTRIM(t.cache)\n"
+                                   "               ,'Y','CACHE'\n"
+                                   "               ,    'NOCACHE'\n"
+                                   "              )                       AS cache\n"
+                                   "      , p.def_pct_used\n"
+                                   "      , p.def_pct_free                AS pct_free\n"
+                                   "      , p.def_ini_trans               AS ini_trans\n"
+                                   "      , p.def_max_trans               AS max_trans\n"
+                                   "      ,DECODE(\n"
+                                   "               p.def_initial_extent\n"
+                                   "              ,'DEFAULT',s.initial_extent\n"
+                                   "              ,p.def_initial_extent * :bs<char[100]> * 1024\n"
+                                   "             )                        AS initial_extent\n"
+                                   "      ,DECODE(\n"
+                                   "               p.def_next_extent\n"
+                                   "              ,'DEFAULT',s.next_extent\n"
+                                   "              ,p.def_next_extent * :bs<char[100]> * 1024\n"
+                                   "             )                        AS next_extent\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_min_extents\n"
+                                   "               ,'DEFAULT',s.min_extents\n"
+                                   "               ,p.def_min_extents\n"
+                                   "              )                       AS min_extents\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_max_extents\n"
+                                   "               ,'DEFAULT',DECODE(\n"
+                                   "                                  s.max_extents\n"
+                                   "                                 ,2147483645,'unlimited'\n"
+                                   "                                 ,s.max_extents\n"
+                                   "                                )\n"
+                                   "               ,2147483645,'unlimited'\n"
+                                   "               ,p.def_max_extents\n"
+                                   "              )                       AS max_extents\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_pct_increase\n"
+                                   "               ,'DEFAULT',s.pct_increase\n"
+                                   "               ,p.def_pct_increase\n"
+                                   "              )                       AS pct_increase\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_freelists\n"
+                                   "               ,0,1\n"
+                                   "               ,NVL(p.def_freelists,1)\n"
+                                   "              )                       AS freelists\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_freelist_groups\n"
+                                   "               ,0,1\n"
+                                   "               ,NVL(p.def_freelist_groups,1)\n"
+                                   "              )                       AS freelist_groups\n"
+                                   "      , p.def_buffer_pool             AS buffer_pool\n"
+                                   "      , DECODE(\n"
+                                   "                p.def_logging \n"
+                                   "               ,'NO','NOLOGGING'\n"
+                                   "               ,     'LOGGING'\n"
+                                   "              )                       AS logging\n"
+                                   "      , p.def_tablespace_name         AS tablespace_name\n"
+                                   "      , t.blocks - NVL(t.empty_blocks,0)\n"
+                                   " FROM\n"
+                                   "        sys.all_all_tables   t\n"
+                                   "      , sys.all_part_tables  p\n"
+                                   "      , sys.dba_tablespaces  s\n"
+                                   " WHERE\n"
+                                   "            t.table_name      = :nam<char[100]>\n"
+                                   "        AND p.table_name      = t.table_name\n"
+                                   "        AND s.tablespace_name = p.def_tablespace_name\n"
+                                   "        AND t.owner           = :own<char[100]>\n"
+                                   "        AND p.owner           = t.owner",
+                                   "Get storage information about a partitioned table, "
+                                   "same binds and columns",
+                                   "0801");
+
+static toSQL SQLPartitionTableInfo8("toOracleExtract:PartitionTableInfo",
+                                    "SELECT\n"
+                                    "        'N/A'                         AS monitoring\n"
+                                    "      , t.table_name\n"
+                                    "      , LTRIM(t.degree)               AS degree\n"
+                                    "      , LTRIM(t.instances)            AS instances\n"
+                                    "      , DECODE(\n"
+                                    "                t.iot_type\n"
+                                    "               ,'IOT','INDEX'\n"
+                                    "               ,      'HEAP'\n"
+                                    "              )                       AS organization\n"
+                                    "      , DECODE(\n"
+                                    "                LTRIM(t.cache)\n"
+                                    "               ,'Y','CACHE'\n"
+                                    "               ,    'NOCACHE'\n"
+                                    "              )                       AS cache\n"
+                                    "      , p.def_pct_used\n"
+                                    "      , p.def_pct_free                AS pct_free\n"
+                                    "      , p.def_ini_trans               AS ini_trans\n"
+                                    "      , p.def_max_trans               AS max_trans\n"
+                                    "      ,DECODE(\n"
+                                    "               p.def_initial_extent\n"
+                                    "              ,'DEFAULT',s.initial_extent\n"
+                                    "              ,p.def_initial_extent * :bs<char[100]> * 1024\n"
+                                    "             )                        AS initial_extent\n"
+                                    "      ,DECODE(\n"
+                                    "               p.def_next_extent\n"
+                                    "              ,'DEFAULT',s.next_extent\n"
+                                    "              ,p.def_next_extent * :bs<char[100]> * 1024\n"
+                                    "             )                        AS next_extent\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_min_extents\n"
+                                    "               ,'DEFAULT',s.min_extents\n"
+                                    "               ,p.def_min_extents\n"
+                                    "              )                       AS min_extents\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_max_extents\n"
+                                    "               ,'DEFAULT',DECODE(\n"
+                                    "                                  s.max_extents\n"
+                                    "                                 ,2147483645,'unlimited'\n"
+                                    "                                 ,s.max_extents\n"
+                                    "                                )\n"
+                                    "               ,2147483645,'unlimited'\n"
+                                    "               ,p.def_max_extents\n"
+                                    "              )                       AS max_extents\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_pct_increase\n"
+                                    "               ,'DEFAULT',s.pct_increase\n"
+                                    "               ,p.def_pct_increase\n"
+                                    "              )                       AS pct_increase\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_freelists\n"
+                                    "               ,0,1\n"
+                                    "               ,NVL(p.def_freelists,1)\n"
+                                    "              )                       AS freelists\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_freelist_groups\n"
+                                    "               ,0,1\n"
+                                    "               ,NVL(p.def_freelist_groups,1)\n"
+                                    "              )                       AS freelist_groups\n"
+                                    "      , 'N/A'                         AS buffer_pool\n"
+                                    "      , DECODE(\n"
+                                    "                p.def_logging \n"
+                                    "               ,'NO','NOLOGGING'\n"
+                                    "               ,     'LOGGING'\n"
+                                    "              )                       AS logging\n"
+                                    "      , p.def_tablespace_name         AS tablespace_name\n"
+                                    "      , t.blocks - NVL(t.empty_blocks,0)\n"
+                                    " FROM\n"
+                                    "        sys.all_all_tables   t\n"
+                                    "      , sys.all_part_tables  p\n"
+                                    "      , sys.dba_tablespaces  s\n"
+                                    " WHERE\n"
+                                    "            t.table_name      = :nam<char[100]>\n"
+                                    "        AND p.table_name      = t.table_name\n"
+                                    "        AND s.tablespace_name = p.def_tablespace_name\n"
+                                    "        AND t.owner           = :own<char[100]>\n"
+                                    "        AND p.owner           = t.owner",
+                                    "",
+                                    "0800");
+
+static toSQL SQLPartitionType("toOracleExtract:PartitionType",
+                              "SELECT\n"
+                              "        partitioning_type\n"
+                              "      , partition_count\n"
+                              "      , subpartitioning_type\n"
+                              "      , def_subpartition_count\n"
+                              " FROM\n"
+                              "        sys.all_part_tables\n"
+                              " WHERE\n"
+                              "            table_name = :nam<char[100]>\n"
+                              "        AND owner = :own<char[100]>",
+                              "Get partition type, must have same binds and columns",
+                              "0801");
+
+static toSQL SQLPartitionType8("toOracleExtract:PartitionType",
+                               "SELECT\n"
+                               "        partitioning_type\n"
+                               "      , partition_count\n"
+                               "      , 'N/A'                        AS subpartitioning_type\n"
+                               "      , 'N/A'                        AS def_subpartition_count\n"
+                               " FROM\n"
+                               "        sys.all_part_tables\n"
+                               " WHERE\n"
+                               "            table_name = :nam<char[100]>\n"
+                               "        AND owner = :own<char[100]>",
+                               "",
+                               "0800");
+
+static toSQL SQLPartitionSegment("toOracleExtract:PartitionSegment",
+                                 "SELECT\n"
+                                 "        partition_name\n"
+                                 "      , high_value\n"
+                                 "      , 'N/A'\n"
+                                 "      , pct_used\n"
+                                 "      , pct_free\n"
+                                 "      , ini_trans\n"
+                                 "      , max_trans\n"
+                                 "      , initial_extent\n"
+                                 "      , next_extent\n"
+                                 "      , min_extent\n"
+                                 "      , DECODE(\n"
+                                 "                max_extent\n"
+                                 "               ,2147483645,'unlimited'\n"
+                                 "               ,           max_extent\n"
+                                 "              )                       AS max_extents\n"
+                                 "      , pct_increase\n"
+                                 "      , NVL(freelists,1)\n"
+                                 "      , NVL(freelist_groups,1)\n"
+                                 "      , buffer_pool\n"
+                                 "      , DECODE(\n"
+                                 "                logging \n"
+                                 "               ,'NO','NOLOGGING'\n"
+                                 "               ,     'LOGGING'\n"
+                                 "              )                       AS logging\n"
+                                 "      , tablespace_name\n"
+                                 "      , blocks - NVL(empty_blocks,0)\n"
+                                 " FROM\n"
+                                 "        sys.all_tab_partitions\n"
+                                 " WHERE  table_name = :nam<char[100]>\n"
+                                 "   AND  table_owner = :own<char[100]>\n"
+                                 " ORDER BY partition_name",
+                                 "Information about segment storage for partitioned tables, "
+                                 "must have same binds and columns",
+                                 "0801");
+
+static toSQL SQLPartitionSegment8("toOracleExtract:PartitionSegment",
+                                  "SELECT\n"
+                                  "        partition_name\n"
+                                  "      , high_value\n"
+                                  "      , 'N/A'\n"
+                                  "      , pct_used\n"
+                                  "      , pct_free\n"
+                                  "      , ini_trans\n"
+                                  "      , max_trans\n"
+                                  "      , initial_extent\n"
+                                  "      , next_extent\n"
+                                  "      , min_extent\n"
+                                  "      , DECODE(\n"
+                                  "                max_extent\n"
+                                  "               ,2147483645,'unlimited'\n"
+                                  "               ,           max_extent\n"
+                                  "              )                       AS max_extents\n"
+                                  "      , pct_increase\n"
+                                  "      , NVL(freelists,1)\n"
+                                  "      , NVL(freelist_groups,1)\n"
+                                  "      , 'N/A'                         AS buffer_pool\n"
+                                  "      , DECODE(\n"
+                                  "                logging \n"
+                                  "               ,'NO','NOLOGGING'\n"
+                                  "               ,     'LOGGING'\n"
+                                  "              )                       AS logging\n"
+                                  "      , tablespace_name\n"
+                                  "      , blocks - NVL(empty_blocks,0)\n"
+                                  " FROM\n"
+                                  "        sys.all_tab_partitions\n"
+                                  " WHERE  table_name = :nam<char[100]>\n"
+                                  "   AND  table_owner = :own<char[100]>\n"
+                                  " ORDER BY partition_name",
+                                  "",
+                                  "0800");
+
+static toSQL SQLSubPartitionName("toOracleExtract:SubPartitionName",
+                                 "SELECT subpartition_name,\n"
+                                 "       tablespace_name\n"
+                                 "  FROM sys.all_tab_subpartitions\n"
+                                 " WHERE table_name = :nam<char[100]>\n"
+                                 "   AND partition_name = :prt<char[100]>\n"
+                                 "   AND table_owner = :own<char[100]>\n"
+                                 " ORDER BY subpartition_name",
+                                 "Get information about sub partitions, "
+                                 "must have same columns and binds");
+
+static toSQL SQLPartitionName("toOracleExtract:PartitionName",
+                              "SELECT partition_name,\n"
+                              "       tablespace_name\n"
+                              "  FROM sys.all_tab_partitions\n"
+                              " WHERE table_name = :nam<char[100]>\n"
+                              "   AND table_owner = :own<char[100]>\n"
+                              " ORDER BY partition_name",
+                              "Get information about hash partition names, "
+                              "must have same columns and binds");
+
+QString toOracleExtract::createPartitionedTable(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    toQList storage = toQuery::readQueryNull(CONNECTION, SQLPartitionTableInfo,
+                      QString::number(ext.getBlockSize()), name, owner);
+
+    QString organization;
+    {
+        toQList::iterator i = storage.begin();
+        i++;
+        i++;
+        i++;
+        i++;
+        organization = *i;
+    }
+
+    QString ret = createTableText(ext, storage, schema, owner, name);
+
+    if (ext.getPartition())
+    {
+        toQList type = toQuery::readQueryNull(CONNECTION, SQLPartitionType, name, owner);
+        QString partitionType (toShift(type));
+        QString partitionCount (toShift(type));
+        QString subPartitionType (toShift(type));
+        QString subPartitionCount(toShift(type));
+
+        ret += QString("PARTITION BY %1\n(\n    ").arg(partitionType);
+        ret += partitionKeyColumns(ext, owner, name, "TABLE");
+        ret += "\n)\n";
+
+        if (partitionType == "RANGE")
+        {
+            if (subPartitionType == "HASH")
+            {
+                ret += "SUBPARTITIONED BY HASH\n(\n    ";
+                ret += subPartitionKeyColumns(ext, owner, name, "TABLE");
+                ret += "\n)\nSUBPARTITIONS ";
+                ret += subPartitionCount;
+                ret += "\n";
+            }
+            ret += "(\n";
+
+            toQList segment = toQuery::readQueryNull(CONNECTION, SQLPartitionSegment, name, owner);
+
+            QString comma = "    ";
+            while (!segment.empty())
+            {
+                toQList storage;
+                QString partition = toShift(segment);
+                QString highValue = toShift(segment);
+                toPush(storage, toQValue("      "));
+                toPush(storage, toQValue(organization));
+                for (int i = 0;i < 16;i++)
+                    toPush(storage, toShift(segment));
+
+                ret += comma;
+                ret += QString("PARTITION %1 VALUES LESS THAN\n"
+                               "      (\n"
+                               "        %2\n"
+                               "      )\n").arg(QUOTE(partition)).arg(highValue);
+                ret += segmentAttributes(ext, storage);
+                comma = "  , ";
+
+                if (subPartitionType == "HASH")
+                {
+                    toQList subs = toQuery::readQueryNull(CONNECTION, SQLSubPartitionName,
+                                                          name, partition, owner);
+                    bool first = true;
+                    ret += "        (\n            ";
+                    while (!subs.empty())
+                    {
+                        if (first)
+                            first = false;
+                        else
+                            ret += "\n          , ";
+                        ret += QString("SUBPARTITION %2 TABLESPACE %1").
+                               arg(QUOTE(toShift(subs))).
+                               arg(QUOTE(toShift(subs)));
+                    }
+                    ret += "\n        )\n";
+                }
+            }
+        }
+        else
+        {
+            toQList hash = toQuery::readQueryNull(CONNECTION, SQLPartitionName, name, owner);
+            bool first = true;
+            ret += "(\n    ";
+            while (!hash.empty())
+            {
+                if (first)
+                    first = false;
+                else
+                    ret += "\n  , ";
+                ret += QString("PARTITION %2 TABLESPACE %1").
+                       arg(QUOTE(toShift(hash))).
+                       arg(QUOTE(toShift(hash)));
+            }
+        }
+        ret += ")\n";
+    }
+
+    ret += ";\n\n";
+    ret += createComments(ext, schema, owner, name);
+    return ret;
+}
+
+static toSQL SQLRolePrivs("toOracleExtract:RolePrivs",
+                          "SELECT\n"
+                          "        granted_role\n"
+                          "      , DECODE(\n"
+                          "                admin_option\n"
+                          "               ,'YES','WITH ADMIN OPTION'\n"
+                          "               ,null\n"
+                          "              )                         AS admin_option\n"
+                          "  FROM  sys.dba_role_privs\n"
+                          " WHERE  grantee = :nam<char[100]>\n"
+                          " ORDER  BY granted_role",
+                          "Get roles granted, must have same columns and binds");
+
+static toSQL SQLSystemPrivs("toOracleExtract:SystemPrivs",
+                            "SELECT\n"
+                            "        privilege\n"
+                            "      , DECODE(\n"
+                            "                admin_option\n"
+                            "               ,'YES','WITH ADMIN OPTION'\n"
+                            "               ,null\n"
+                            "              )                         AS admin_option\n"
+                            "  FROM  sys.dba_sys_privs\n"
+                            " WHERE  grantee = :nam<char[100]>\n"
+                            " ORDER  BY privilege",
+                            "Get system priveleges granted, must have same columns and binds");
+
+static toSQL SQLObjectPrivs("toOracleExtract:ObjectPrivs",
+                            "SELECT  privilege\n"
+                            "      , table_schema\n"
+                            "      , table_name\n"
+                            "      , DECODE(\n"
+                            "                grantable\n"
+                            "               ,'YES','WITH GRANT OPTION'\n"
+                            "               ,null\n"
+                            "              )                         AS grantable\n"
+                            "  FROM  sys.all_tab_privs\n"
+                            " WHERE  grantee = :nam<char[100]>\n"
+                            " ORDER  BY table_name,privilege",
+                            "Get object priveleges granted, must have same columns and binds");
+
+QString toOracleExtract::grantedPrivs(toExtract &ext,
+                                      const QString &dest,
+                                      const QString &name,
+                                      int typ) const
+{
+    if (!ext.getGrants())
+        return "";
+
+    QString ret;
+    if ((typ&1) == 1)
+    {
+        toQList result = toQuery::readQueryNull(CONNECTION, SQLSystemPrivs, name);
+        while (!result.empty())
+        {
+            QString priv = QString(toShift(result)).lower();
+            QString sql = QString("GRANT %1 TO %2 %3").
+                          arg(priv).
+                          arg(dest).
+                          arg(toShift(result));
+            if (PROMPT)
+            {
+                ret += "PROMPT ";
+                ret += sql;
+                ret += "\n\n";
+            }
+            ret += sql;
+            ret += ";\n\n";
+        }
+    }
+
+    if ((typ&2) == 2)
+    {
+        toQList result = toQuery::readQueryNull(CONNECTION, SQLRolePrivs, name);
+        while (!result.empty())
+        {
+            QString priv = QString(toShift(result)).lower();
+            QString sql = QString("GRANT %1 TO %2 %3").
+                          arg(priv).
+                          arg(dest).
+                          arg(toShift(result));
+            if (PROMPT)
+            {
+                ret += "PROMPT ";
+                ret += sql;
+                ret += "\n\n";
+            }
+            ret += sql;
+            ret += ";\n\n";
+        }
+    }
+
+    if ((typ&4) == 4)
+    {
+        toQList result = toQuery::readQueryNull(CONNECTION, SQLObjectPrivs, name);
+        while (!result.empty())
+        {
+            QString priv = QString(toShift(result)).lower();
+            QString schema = ext.intSchema(toShift(result), false);
+            QString object = QUOTE(toShift(result));
+            QString sql = QString("GRANT %1 ON %2%3 TO %4 %5").
+                          arg(priv.lower()).
+                          arg(schema).
+                          arg(object).
+                          arg(dest).
+                          arg(toShift(result));
+            if (PROMPT)
+            {
+                ret += "PROMPT ";
+                ret += sql;
+                ret += "\n\n";
+            }
+            ret += sql;
+            ret += ";\n\n";
+        }
+    }
+    return ret;
+}
+
+static toSQL SQLIndexColumns("toOracleExtract:IndexColumns",
+                             "SELECT column_name,\n"
+                             "       descend\n"
+                             "  FROM sys.all_ind_columns\n"
+                             " WHERE index_name = :nam<char[100]>\n"
+                             "   AND index_owner = :own<char[100]>\n"
+                             " ORDER BY column_position",
+                             "Get column names from index, same binds and columns",
+                             "0801");
+static toSQL SQLIndexColumns7("toOracleExtract:IndexColumns",
+                              "SELECT column_name,\n"
+                              "       'ASC'\n"
+                              "  FROM sys.all_ind_columns\n"
+                              " WHERE index_name = :nam<char[100]>\n"
+                              "   AND index_owner = :own<char[100]>\n"
+                              " ORDER BY column_position",
+                              "",
+                              "07");
+static toSQL SQLIndexFunction("toOracleExtract:IndexFunction",
+                              "SELECT c.default$\n"
+                              "  FROM sys.col$ c,\n"
+                              "       sys.all_indexes i,\n"
+                              "       sys.all_objects o\n"
+                              " WHERE i.index_name = :ind<char[100]>\n"
+                              "   AND o.object_name = i.table_name\n"
+                              "   AND c.obj# = o.object_id\n"
+                              "   AND c.name = :tab<char[100]>\n"
+                              "   AND i.owner = :own<char[100]>\n"
+                              "   AND o.owner = i.table_owner",
+                              "Get function of index column, same column and binds");
+
+QString toOracleExtract::indexColumns(toExtract &ext,
+                                      const QString &indent,
+                                      const QString &owner,
+                                      const QString &name) const
+{
+    static QRegExp quote("\"");
+    static QRegExp func("^sys_nc[0-9]+", false);
+    toQuery inf(CONNECTION, SQLIndexColumns, name, owner);
+    QString ret = indent;
+    ret += "(\n";
+    bool first = true;
+    while (!inf.eof())
+    {
+        QString col = inf.readValue();
+        QString asc = inf.readValue();
+        QString row;
+        if (func.match(col) >= 0)
+        {
+            toQuery def(CONNECTION, SQLIndexFunction, name, col, owner);
+            if (!def.eof())
+            {
+                QString function(def.readValue());
+                function.replace(quote, "");
+                if (asc == "DESC")
+                    row = QString("%1 DESC").arg(function, 30);
+                else
+                    row = function;
+            }
+            else if (asc == "DESC")
+                row = QString("%1 DESC").arg(QUOTE(col));
+            else
+                row = QUOTE(col);
+        }
+        else if (asc == "DESC")
+            row = QString("%1 DESC").arg(QUOTE(col));
+        else
+            row = QUOTE(col);
+        ret += indent;
+        if (first)
+        {
+            first = false;
+            ret += "    ";
+        }
+        else
+            ret += "  , ";
+        ret += row;
+        ret += "\n";
+    }
+    ret += indent;
+    ret += ")\n";
+    return ret;
+}
+
+static toSQL SQLRangePartitions("toOracleExtract:RangePartitions",
+                                "SELECT  partition_name\n"
+                                "      , high_value\n"
+                                "      , 'N/A'                         AS cache\n"
+                                "      , 'N/A'                         AS pct_used\n"
+                                "      , pct_free\n"
+                                "      , ini_trans\n"
+                                "      , max_trans\n"
+                                "      , initial_extent\n"
+                                "      , next_extent\n"
+                                "      , min_extent\n"
+                                "      , DECODE(\n"
+                                "                max_extent\n"
+                                "               ,2147483645,'unlimited'\n"
+                                "               ,           max_extent\n"
+                                "              )                       AS max_extents\n"
+                                "      , pct_increase\n"
+                                "      , NVL(freelists,1)\n"
+                                "      , NVL(freelist_groups,1)\n"
+                                "      , buffer_pool\n"
+                                "      , DECODE(\n"
+                                "                logging \n"
+                                "               ,'NO','NOLOGGING'\n"
+                                "               ,     'LOGGING'\n"
+                                "              )                       AS logging\n"
+                                "      , tablespace_name\n"
+                                "      , leaf_blocks                   AS blocks\n"
+                                " FROM   sys.all_ind_partitions\n"
+                                " WHERE      index_name  =  :nam<char[100]>\n"
+                                "        AND index_owner =  :own<char[100]>\n"
+                                " ORDER BY partition_name",
+                                "Get information about partition ranges, must have same binds "
+                                "and columns",
+                                "0801");
+
+static toSQL SQLRangePartitions8("toOracleExtract:RangePartitions",
+                                 "SELECT  partition_name\n"
+                                 "      , high_value\n"
+                                 "      , 'N/A'                         AS cache\n"
+                                 "      , 'N/A'                         AS pct_used\n"
+                                 "      , pct_free\n"
+                                 "      , ini_trans\n"
+                                 "      , max_trans\n"
+                                 "      , initial_extent\n"
+                                 "      , next_extent\n"
+                                 "      , min_extent\n"
+                                 "      , DECODE(\n"
+                                 "                max_extent\n"
+                                 "               ,2147483645,'unlimited'\n"
+                                 "               ,           max_extent\n"
+                                 "              )                       AS max_extents\n"
+                                 "      , pct_increase\n"
+                                 "      , NVL(freelists,1)\n"
+                                 "      , NVL(freelist_groups,1)\n"
+                                 "      , 'N/A'                         AS buffer_pool\n"
+                                 "      , DECODE(\n"
+                                 "                logging \n"
+                                 "               ,'NO','NOLOGGING'\n"
+                                 "               ,     'LOGGING'\n"
+                                 "              )                       AS logging\n"
+                                 "      , tablespace_name\n"
+                                 "      , leaf_blocks                   AS blocks\n"
+                                 " FROM   sys.all_ind_partitions\n"
+                                 " WHERE      index_name  =  :nam<char[100]>\n"
+                                 "        AND index_owner =  :own<char[100]>\n"
+                                 " ORDER BY partition_name",
+                                 "",
+                                 "0801");
+
+static toSQL SQLIndexSubPartitionName("toOracleExtract:IndexSubPartitionName",
+                                      "SELECT subpartition_name,\n"
+                                      "       tablespace_name\n"
+                                      "  FROM sys.all_ind_subpartitions\n"
+                                      " WHERE index_name     = :ind<char[100]>\n"
+                                      "   AND partition_name = :prt<char[100]>\n"
+                                      "   AND index_owner    = :own<char[100]>\n"
+                                      " ORDER BY subpartition_name",
+                                      "Get information about a subpartition, "
+                                      "must have same binds and columns");
+
+QString toOracleExtract::rangePartitions(toExtract &ext,
+        const QString &owner,
+        const QString &name,
+        const QString &subPartitionType,
+        const QString &caller) const
+{
+    if (!ext.getPartition())
+        return "";
+
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLRangePartitions, name, owner);
+    if (result.empty() || result.size() % 18)
+        throw qApp->translate("toOracleExtract", "Couldn't find partition range %1.%2").arg(owner).arg(name);
+
+    QString ret;
+
+    QString comma = "    ";
+    while (!result.empty())
+    {
+        QString partition = toShift(result);
+        QString highValue = toShift(result);
+
+        toQList storage;
+        toPush(storage, toQValue("      "));
+        toPush(storage, toQValue("INDEX"));
+        for (int i = 0;i < 16;i++)
+            toPush(storage, toShift(result));
+
+        ret += comma;
+        ret += "PARTITION ";
+        ret += QUOTE(partition);
+        if (caller != "LOCAL")
+            ret += QString(" VALUES LESS THAN (%1)\n").arg(highValue);
+        else
+            ret += "\n";
+        ret += segmentAttributes(ext, storage);
+
+        if (subPartitionType == "HASH")
+        {
+            toQuery inf(CONNECTION, SQLIndexSubPartitionName, name, partition, owner);
+            ret +=
+                "        (\n"
+                "            ";
+            bool first = true;
+            while (!inf.eof())
+            {
+                QString sub(inf.readValue());
+                QString tablespace(inf.readValue());
+                if (first)
+                    first = false;
+                else
+                    ret += "\n          , ";
+                ret += QUOTE(sub);
+                ret += " TABLESPACE ";
+                ret += QUOTE(tablespace);
+            }
+            ret += "\n        )\n";
+        }
+        comma = "  , ";
+    }
+    ret += ");\n\n";
+
+    return ret;
+}
+
+QString toOracleExtract::segmentAttributes(toExtract &ext, toQList &result) const
+{
+    QString ret;
+    if (ext.getStorage())
+    {
+        if (result.size() != 18)
+            throw qApp->translate("toOracleExtract", "Internal error, result should be 18 in segment attributes (Was %1)").
+            arg(result.size());
+
+        toQList::iterator i = result.begin();
+
+        QString indent = *i;
+        i++;
+        QString organization = *i;
+        i++;
+        QString cache = *i;
+        i++;
+        QString pctUsed = *i;
+        i++;
+        QString pctFree = *i;
+        i++;
+        QString iniTrans = *i;
+        i++;
+        QString maxTrans = *i;
+        i++;
+        QString initial = *i;
+        i++;
+        QString next = *i;
+        i++;
+        QString minExtents = *i;
+        i++;
+        QString maxExtents = *i;
+        i++;
+        QString pctIncrease = *i;
+        i++;
+        QString freelists = *i;
+        i++;
+        QString freelistGroups = *i;
+        i++;
+        QString bufferPool = *i;
+        i++;
+        QString logging = *i;
+        i++;
+        QString tablespace = *i;
+        i++;
+        QString blocks = *i;
+        i++;
+
+        if (ext.getResize())
+            ext.initialNext(blocks, initial, next);
+
+        if (organization == "HEAP")
+        {
+            if (cache != "N/A")
+            {
+                ret += indent;
+                ret += cache;
+                ret += "\n";
+            }
+            if (!ext.state("IsASnapIndex").toBool() && !pctUsed.isEmpty())
+                ret += QString("%1PCTUSED             %2\n").arg(indent).arg(pctUsed);
+        }
+        if (!ext.state("IsASnapIndex").toBool())
+            ret += QString("%1PCTFREE             %2\n").arg(indent).arg(pctFree);
+        if (!ext.state("IsASnapTable").toBool())
+            ret += QString("%1INITRANS            %2\n").arg(indent).arg(iniTrans);
+
+        ret += QString("%1MAXTRANS            %2\n").arg(indent).arg(maxTrans);
+        ret += indent;
+        ret += "STORAGE\n";
+        ret += indent;
+        ret += "(\n";
+        ret += QString("%1  INITIAL           %2\n").arg(indent).arg(initial);
+        if (!next.isEmpty())
+            ret += QString("%1  NEXT              %2\n").arg(indent).arg(next);
+        ret += QString("%1  MINEXTENTS        %2\n").arg(indent).arg(minExtents);
+        ret += QString("%1  MAXEXTENTS        %2\n").arg(indent).arg(maxExtents);
+        if (!pctIncrease.isEmpty())
+            ret += QString("%1  PCTINCREASE       %2\n").arg(indent).arg(pctIncrease);
+        ret += QString("%1  FREELISTS         %2\n").arg(indent).arg(freelists);
+        ret += QString("%1  FREELIST GROUPS   %2\n").arg(indent).arg(freelistGroups);
+        if (CONNECTION.version() >= "0801")
+        {
+            ret += QString("%1  BUFFER_POOL       %2\n").arg(indent).arg(QUOTE(bufferPool));
+        }
+        ret += indent;
+        ret += ")\n";
+        if (CONNECTION.version() >= "0800")
+            ret += QString("%1%2\n").arg(indent).arg(logging);
+        ret += QString("%1TABLESPACE          %2\n").arg(indent).arg(QUOTE(tablespace));
+    }
+    return ret;
+}
+
+static toSQL SQLTableColumns9("toOracleExtract:TableColumns",
+                              "SELECT  column_name,\n"
+                              "        RPAD(\n"
+                              "             DECODE(\n"
+                              "                     data_type\n"
+                              "                    ,'NUMBER',DECODE(\n"
+                              "                                      data_precision\n"
+                              "                                     ,null,DECODE(\n"
+                              "                                                   data_scale\n"
+                              "                                                  ,0,'INTEGER'\n"
+                              "                                                  ,  'NUMBER   '\n"
+                              "                                                 )\n"
+                              "                                     ,'NUMBER   '\n"
+                              "                                    )\n"
+                              "                    ,'RAW'     ,'RAW      '\n"
+                              "                    ,'CHAR'    ,'CHAR     '\n"
+                              "                    ,'NCHAR'   ,'NCHAR    '\n"
+                              "                    ,'UROWID'  ,'UROWID   '\n"
+                              "                    ,'VARCHAR2','VARCHAR2 '\n"
+                              "                    ,data_type\n"
+                              "                   )\n"
+                              "               || DECODE(\n"
+                              "                          data_type\n"
+                              "                         ,'DATE',null\n"
+                              "                         ,'LONG',null\n"
+                              "                         ,'NUMBER',DECODE(\n"
+                              "                                           data_precision\n"
+                              "                                          ,null,null\n"
+                              "                                          ,'('\n"
+                              "                                         )\n"
+                              "                         ,'RAW'      ,'('\n"
+                              "                         ,'CHAR'     ,'('\n"
+                              "                         ,'NCHAR'    ,'('\n"
+                              "                         ,'UROWID'   ,'('\n"
+                              "                         ,'VARCHAR2' ,'('\n"
+                              "                         ,'NVARCHAR2','('\n"
+                              "                         ,null\n"
+                              "                        )\n"
+                              "               || DECODE(\n"
+                              "                          data_type\n"
+                              "                         ,'RAW'      ,data_length\n"
+                              "                         ,'CHAR'     ,data_length\n"
+                              "                         ,'NCHAR'    ,char_length\n"
+                              "                         ,'UROWID'   ,data_length\n"
+                              "                         ,'VARCHAR2' ,data_length\n"
+                              "                         ,'NVARCHAR2',char_length\n"
+                              "                         ,'NUMBER'   ,data_precision\n"
+                              "                         , null\n"
+                              "                        )\n"
+                              "               || DECODE(\n"
+                              "                          data_type\n"
+                              "                         ,'NUMBER',DECODE(\n"
+                              "                           TO_CHAR(data_precision)\n"
+                              "                          ,null,null\n"
+                              "                          ,DECODE(\n"
+                              "                                   TO_CHAR(data_scale)\n"
+                              "                                  ,null,null\n"
+                              "                                  ,0   ,null\n"
+                              "                                  ,',' || data_scale\n"
+                              "                                 )\n"
+                              "                              )\n"
+                              "                        )\n"
+                              "               || DECODE(\n"
+                              "                          data_type\n"
+                              "                         ,'DATE',null\n"
+                              "                         ,'LONG',null\n"
+                              "                         ,'NUMBER',DECODE(\n"
+                              "                                           data_precision\n"
+                              "                                          ,null,null\n"
+                              "                                          ,')'\n"
+                              "                                         )\n"
+                              "                         ,'RAW'      ,')'\n"
+                              "                         ,'CHAR'     ,')'\n"
+                              "                         ,'NCHAR'    ,')'\n"
+                              "                         ,'UROWID'   ,')'\n"
+                              "                         ,'VARCHAR2' ,')'\n"
+                              "                         ,'NVARCHAR2',')'\n"
+                              "                         ,null\n"
+                              "                        )\n"
+                              "             ,32\n"
+                              "            )\n"
+                              "     , data_default\n"
+                              "     , DECODE(\n"
+                              "                nullable\n"
+                              "               ,'N','NOT NULL'\n"
+                              "               ,     null\n"
+                              "              )\n"
+                              "  FROM sys.all_tab_columns\n"
+                              " WHERE table_name = :nam<char[100]>\n"
+                              "   AND owner = :own<char[100]>\n"
+                              " ORDER BY column_id",
+                              "Extract column definitions from table",
+                              "09");
+
+static toSQL SQLTableColumns("toOracleExtract:TableColumns",
+                             "SELECT  column_name,\n"
+                             "        RPAD(\n"
+                             "             DECODE(\n"
+                             "                     data_type\n"
+                             "                    ,'NUMBER',DECODE(\n"
+                             "                                      data_precision\n"
+                             "                                     ,null,DECODE(\n"
+                             "                                                   data_scale\n"
+                             "                                                  ,0,'INTEGER'\n"
+                             "                                                  ,  'NUMBER   '\n"
+                             "                                                 )\n"
+                             "                                     ,'NUMBER   '\n"
+                             "                                    )\n"
+                             "                    ,'RAW'     ,'RAW      '\n"
+                             "                    ,'CHAR'    ,'CHAR     '\n"
+                             "                    ,'NCHAR'   ,'NCHAR    '\n"
+                             "                    ,'UROWID'  ,'UROWID   '\n"
+                             "                    ,'VARCHAR2','VARCHAR2 '\n"
+                             "                    ,data_type\n"
+                             "                   )\n"
+                             "               || DECODE(\n"
+                             "                          data_type\n"
+                             "                         ,'DATE',null\n"
+                             "                         ,'LONG',null\n"
+                             "                         ,'NUMBER',DECODE(\n"
+                             "                                           data_precision\n"
+                             "                                          ,null,null\n"
+                             "                                          ,'('\n"
+                             "                                         )\n"
+                             "                         ,'RAW'      ,'('\n"
+                             "                         ,'CHAR'     ,'('\n"
+                             "                         ,'NCHAR'    ,'('\n"
+                             "                         ,'UROWID'   ,'('\n"
+                             "                         ,'VARCHAR2' ,'('\n"
+                             "                         ,'NVARCHAR2','('\n"
+                             "                         ,null\n"
+                             "                        )\n"
+                             "               || DECODE(\n"
+                             "                          data_type\n"
+                             "                         ,'RAW'      ,data_length\n"
+                             "                         ,'CHAR'     ,data_length\n"
+                             "                         ,'NCHAR'    ,data_length\n"
+                             "                         ,'UROWID'   ,data_length\n"
+                             "                         ,'VARCHAR2' ,data_length\n"
+                             "                         ,'NVARCHAR2',data_length\n"
+                             "                         ,'NUMBER'   ,data_precision\n"
+                             "                         , null\n"
+                             "                        )\n"
+                             "               || DECODE(\n"
+                             "                          data_type\n"
+                             "                         ,'NUMBER',DECODE(\n"
+                             "                           TO_CHAR(data_precision)\n"
+                             "                          ,null,null\n"
+                             "                          ,DECODE(\n"
+                             "                                   TO_CHAR(data_scale)\n"
+                             "                                  ,null,null\n"
+                             "                                  ,0   ,null\n"
+                             "                                  ,',' || data_scale\n"
+                             "                                 )\n"
+                             "                              )\n"
+                             "                        )\n"
+                             "               || DECODE(\n"
+                             "                          data_type\n"
+                             "                         ,'DATE',null\n"
+                             "                         ,'LONG',null\n"
+                             "                         ,'NUMBER',DECODE(\n"
+                             "                                           data_precision\n"
+                             "                                          ,null,null\n"
+                             "                                          ,')'\n"
+                             "                                         )\n"
+                             "                         ,'RAW'      ,')'\n"
+                             "                         ,'CHAR'     ,')'\n"
+                             "                         ,'NCHAR'    ,')'\n"
+                             "                         ,'UROWID'   ,')'\n"
+                             "                         ,'VARCHAR2' ,')'\n"
+                             "                         ,'NVARCHAR2',')'\n"
+                             "                         ,null\n"
+                             "                        )\n"
+                             "             ,32\n"
+                             "            )\n"
+                             "     , data_default\n"
+                             "     , DECODE(\n"
+                             "                nullable\n"
+                             "               ,'N','NOT NULL'\n"
+                             "               ,     null\n"
+                             "              )\n"
+                             "  FROM sys.all_tab_columns\n"
+                             " WHERE table_name = :nam<char[100]>\n"
+                             "   AND owner = :own<char[100]>\n"
+                             " ORDER BY column_id",
+                             "",
+                             "0800");
+
+static toSQL SQLTableColumns7("toOracleExtract:TableColumns",
+                              "       SELECT\n"
+                              "        column_name,\n"
+                              "        RPAD(\n"
+                              "             DECODE(\n"
+                              "                     data_type\n"
+                              "                    ,'NUMBER',DECODE(\n"
+                              "                                      data_precision\n"
+                              "                                     ,null,DECODE(\n"
+                              "                                                   data_scale\n"
+                              "                                                  ,0,'INTEGER'\n"
+                              "                                                  ,  'NUMBER   '\n"
+                              "                                                 )\n"
+                              "                                     ,'NUMBER   '\n"
+                              "                                    )\n"
+                              "                    ,'RAW'     ,'RAW      '\n"
+                              "                    ,'CHAR'    ,'CHAR     '\n"
+                              "                    ,'UROWID'  ,'UROWID   '\n"
+                              "                    ,'VARCHAR2','VARCHAR2 '\n"
+                              "                    ,data_type\n"
+                              "                   )\n"
+                              "               || DECODE(\n"
+                              "                          data_type\n"
+                              "                         ,'DATE',null\n"
+                              "                         ,'LONG',null\n"
+                              "                         ,'NUMBER',DECODE(\n"
+                              "                                           data_precision\n"
+                              "                                          ,null,null\n"
+                              "                                          ,'('\n"
+                              "                                         )\n"
+                              "                         ,'RAW'      ,'('\n"
+                              "                         ,'CHAR'     ,'('\n"
+                              "                         ,'UROWID'   ,'('\n"
+                              "                         ,'VARCHAR2' ,'('\n"
+                              "                         ,null\n"
+                              "                        )\n"
+                              "               || DECODE(\n"
+                              "                          data_type\n"
+                              "                         ,'RAW'      ,data_length\n"
+                              "                         ,'CHAR'     ,data_length\n"
+                              "                         ,'UROWID'   ,data_length\n"
+                              "                         ,'VARCHAR2' ,data_length\n"
+                              "                         ,'NUMBER'   ,data_precision\n"
+                              "                         , null\n"
+                              "                        )\n"
+                              "               || DECODE(\n"
+                              "                          data_type\n"
+                              "                         ,'NUMBER',DECODE(\n"
+                              "                                          data_precision\n"
+                              "                                          ,null,null\n"
+                              "                                          ,DECODE(\n"
+                              "                                                  data_scale\n"
+                              "                                                 ,null,null\n"
+                              "                                                 ,0   ,null\n"
+                              "                                                 ,',' || data_scale\n"
+                              "                                                 )\n"
+                              "                                         )\n"
+                              "                        )\n"
+                              "               || DECODE(\n"
+                              "                          data_type\n"
+                              "                         ,'DATE',null\n"
+                              "                         ,'LONG',null\n"
+                              "                         ,'NUMBER',DECODE(\n"
+                              "                                           data_precision\n"
+                              "                                          ,null,null\n"
+                              "                                          ,')'\n"
+                              "                                         )\n"
+                              "                         ,'RAW'      ,')'\n"
+                              "                         ,'CHAR'     ,')'\n"
+                              "                         ,'UROWID'   ,')'\n"
+                              "                         ,'VARCHAR2' ,')'\n"
+                              "                         ,'NVARCHAR2',')'\n"
+                              "                         ,null\n"
+                              "                        )\n"
+                              "             ,33\n"
+                              "            )\n"
+                              "     , data_default\n"
+                              "     , DECODE(\n"
+                              "                nullable\n"
+                              "               ,'N','NOT NULL'\n"
+                              "               ,     null\n"
+                              "              )\n"
+                              "  FROM sys.all_tab_columns\n"
+                              " WHERE table_name = :nam<char[100]>\n"
+                              "   AND owner = :own<char[100]>\n"
+                              " ORDER BY column_id",
+                              "",
+                              "0700");
+
+QString toOracleExtract::tableColumns(toExtract &ext,
+                                      const QString &owner,
+                                      const QString &name) const
+{
+    toQList cols = toQuery::readQueryNull(CONNECTION, SQLTableColumns, name, owner);
+    bool first = true;
+    QString ret;
+    while (!cols.empty())
+    {
+        if (first)
+            first = false;
+        else
+            ret += "\n  , ";
+        ret += QString(QUOTE(toShift(cols))).leftJustify(32);
+        ret += " ";
+        ret += toShift(cols);
+        QString def = toShift(cols);
+        QString notNull = toShift(cols);
+        if (!def.isEmpty())
+        {
+            ret += "DEFAULT ";
+            ret += def.stripWhiteSpace();
+            ret += " ";
+        }
+        ret += notNull;
+    }
+    ret += "\n";
+    return ret;
+}
+
+// Implementation describe utility functions
+
+void toOracleExtract::describeAttributes(toExtract &ext,
+        std::list<QString> &dsp,
+        std::list<QString> &ctx,
+        toQList &result) const
+{
+    if (!ext.getStorage())
+        return ;
+
+    if (result.size() != 18)
+        throw qApp->translate("toOracleExtract", "Internal error, result should be 18 in segment attributes");
+
+    toQList::iterator i = result.begin();
+
+    QString indent = *i;
+    i++;
+    QString organization = *i;
+    i++;
+    QString cache = *i;
+    i++;
+    QString pctUsed = *i;
+    i++;
+    QString pctFree = *i;
+    i++;
+    QString iniTrans = *i;
+    i++;
+    QString maxTrans = *i;
+    i++;
+    QString initial = *i;
+    i++;
+    QString next = *i;
+    i++;
+    QString minExtents = *i;
+    i++;
+    QString maxExtents = *i;
+    i++;
+    QString pctIncrease = *i;
+    i++;
+    QString freelists = *i;
+    i++;
+    QString freelistGroups = *i;
+    i++;
+    QString bufferPool = *i;
+    i++;
+    QString logging = *i;
+    i++;
+    QString tablespace = *i;
+    i++;
+    QString blocks = *i;
+    i++;
+
+    if (ext.getResize())
+        ext.initialNext(blocks, initial, next);
+
+    QString ret;
+    if (organization == "HEAP")
+    {
+        if (cache != "N/A")
+            addDescription(dsp, ctx, "PARAMETERS", cache);
+        if (!ext.state("IsASnapIndex").toBool() && !pctUsed.isEmpty())
+            addDescription(dsp, ctx, "PARAMETERS", QString("PCTUSED %1").arg(pctUsed));
+    }
+    if (!ext.state("IsASnapIndex").toBool())
+        addDescription(dsp, ctx, "PARAMETERS", QString("PCTFREE %1").arg(pctFree));
+    if (!ext.state("IsASnapTable").toBool())
+        addDescription(dsp, ctx, "PARAMETERS", QString("INITRANS %1").arg(iniTrans));
+
+    addDescription(dsp, ctx, "PARAMETERS", QString("MAXTRANS %1").arg(maxTrans));
+    addDescription(dsp, ctx, "STORAGE", QString("INITIAL %1").arg(initial));
+    if (!next.isEmpty())
+        addDescription(dsp, ctx, "STORAGE", QString("NEXT %1").arg(next));
+    addDescription(dsp, ctx, "STORAGE", QString("MINEXTENTS %1").arg(minExtents));
+    addDescription(dsp, ctx, "STORAGE", QString("MAXEXTENTS %1").arg(maxExtents));
+    addDescription(dsp, ctx, "STORAGE", QString("PCTINCREASE %1").arg(pctIncrease));
+    addDescription(dsp, ctx, "STORAGE", QString("FREELISTS %1").arg(freelists));
+    addDescription(dsp, ctx, "STORAGE", QString("FREELIST GROUPS %1").arg(freelistGroups));
+    if (CONNECTION.version() >= "0801")
+    {
+        addDescription(dsp, ctx, "STORAGE", QString("BUFFER_POOL %1").arg(QUOTE(bufferPool)));
+    }
+    if (CONNECTION.version() >= "0800")
+        addDescription(dsp, ctx, "PARAMETERS", logging);
+    addDescription(dsp, ctx, "PARAMETERS", QString("TABLESPACE %1").arg(QUOTE(tablespace)));
+}
+
+void toOracleExtract::describeComments(toExtract &ext,
+                                       std::list<QString> &lst,
+                                       std::list<QString> &ctx,
+                                       const QString &owner,
+                                       const QString &name) const
+{
+    if (ext.getComments())
+    {
+        toQuery inf(CONNECTION, SQLTableComments, name, owner);
+        while (!inf.eof())
+        {
+            addDescription(lst, ctx, "COMMENT", inf.readValue());
+        }
+        toQuery col(CONNECTION, SQLColumnComments, name, owner);
+        while (!col.eof())
+        {
+            QString column = col.readValue();
+            addDescription(lst, ctx, "COLUMN", QUOTE(column), "COMMENT", col.readValue());
+        }
+    }
+}
+
+void toOracleExtract::describePrivs(toExtract &ext,
+                                    std::list<QString> &lst,
+                                    std::list<QString> &ctx,
+                                    const QString &name) const
+{
+    if (!ext.getGrants())
+        return ;
+
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLRolePrivs, name);
+    while (!result.empty())
+    {
+        QString role = QUOTE(toShift(result));
+        addDescription(lst, ctx, "GRANT", "ROLE " + role, toShift(result));
+    }
+
+    result = toQuery::readQueryNull(CONNECTION, SQLSystemPrivs, name);
+    while (!result.empty())
+    {
+        QString priv = QString(toShift(result)).lower();
+        addDescription(lst, ctx, "GRANT", priv, toShift(result));
+    }
+
+    result = toQuery::readQueryNull(CONNECTION, SQLObjectPrivs, name);
+    while (!result.empty())
+    {
+        QString priv = toShift(result);
+        QString schema = ext.intSchema(toShift(result), false);
+        QString res = schema;
+        res += QUOTE(toShift(result));
+        addDescription(lst, ctx, "GRANT", priv.lower(), "ON", res, toShift(result));
+    }
+}
+
+void toOracleExtract::describeIOT(toExtract &ext,
+                                  std::list<QString> &lst,
+                                  std::list<QString> &ctx,
+                                  const QString &schema,
+                                  const QString &owner,
+                                  const QString &name) const
+{
+    toQList storage = toQuery::readQueryNull(CONNECTION, SQLIOTInfo, name, owner);
+
+    describeTableText(ext, lst, ctx, storage, schema, owner, name);
+    describeComments(ext, lst, ctx, owner, name);
+    if (ext.getStorage())
+    {
+        toQList overflow = toQuery::readQueryNull(CONNECTION, segments(ext, SQLOverflowInfo), name, owner);
+        if (overflow.size() == 18)
+        {
+            ctx.insert(ctx.end(), "OVERFLOW");
+            describeAttributes(ext, lst, ctx, overflow);
+        }
+    }
+}
+
+void toOracleExtract::describeIndexColumns(toExtract &ext,
+        std::list<QString> &lst,
+        std::list<QString> &ctx,
+        const QString &owner,
+        const QString &name) const
+{
+    static QRegExp quote("\"");
+    static QRegExp func("^sys_nc[0-9]g");
+    toQuery inf(CONNECTION, SQLIndexColumns, name, owner);
+    int num = 1;
+    while (!inf.eof())
+    {
+        QString col = inf.readValue();
+        QString asc = inf.readValue();
+        QString row;
+        if (func.match(col) >= 0)
+        {
+            toQuery def(CONNECTION, SQLIndexFunction, col, name, owner);
+            QString function(inf.readValue());
+            function.replace(quote, "");
+            if (asc == "DESC")
+                row = QString("%1 DESC").arg(function, 30);
+            else
+                row = function;
+        }
+        else if (asc == "DESC")
+            row = QString("%1 DESC").arg(QUOTE(col));
+        else
+            row = QUOTE(col);
+        addDescription(lst, ctx, "COLUMN", row);
+        addDescription(lst, ctx, "COLUMN", row, "ORDER", QString::number(num));
+        num++;
+    }
+}
+
+void toOracleExtract::describeMView(toExtract &ext, std::list<QString> &lst,
+                                    const QString &schema, const QString &owner,
+                                    const QString &name, const QString &type) const
+{
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLMViewInfo, name, owner);
+    if (result.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find materialised table %1.%2").
+        arg(QUOTE(owner)).arg(QUOTE(name));
+    QString table = toShift(result);
+    QString buildMode = toShift(result);
+    QString refreshMethod = toShift(result);
+    QString refreshMode = toShift(result);
+    QString startWith = toShift(result);
+    QString next = toShift(result);
+    QString usingPK = toShift(result);
+    QString masterRBSeg = toShift(result);
+    QString updatable = toShift(result);
+    QString query = toShift(result);
+
+    toQuery inf(CONNECTION, SQLIndexName, table, owner);
+    QString index(inf.readValue());
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), schema);
+    ctx.insert(ctx.end(), type);
+    ctx.insert(ctx.end(), QUOTE(name));
+
+    describeMViewTable(ext, lst, ctx, schema, owner, table);
+    addDescription(lst, ctx, buildMode);
+    ctx.insert(ctx.end(), "INDEX");
+    ctx.insert(ctx.end(), QUOTE(index));
+    describeMViewIndex(ext, lst, ctx, schema, owner, index);
+
+    if (refreshMethod != "NEVER REFRESH")
+    {
+        addDescription(lst, ctx, QString("START WITH %1").arg(startWith));
+        if (!next.isEmpty())
+            addDescription(lst, ctx, QString("NEXT %1").arg(next));
+        addDescription(lst, ctx, usingPK);
+        if (!masterRBSeg.isEmpty() && ext.getStorage())
+            addDescription(lst, ctx, QString("USING MASTER ROLLBACK SEGMENT %1").
+                           arg(QUOTE(masterRBSeg)));
+    }
+
+    if (!updatable.isEmpty())
+        addDescription(lst, ctx, updatable);
+    addDescription(lst, ctx, QString("AS %1").arg(query));
+}
+
+static QString ReContext(std::list<QString> &ctx, int strip, const QString &str)
+{
+    QStringList lst = QStringList::split("\01", str);
+    QString ret;
+    QString sep = "";
+    for (std::list<QString>::iterator i = ctx.begin();i != ctx.end();i++)
+    {
+        ret += sep;
+        ret += *i;
+        if (sep.isEmpty())
+            sep = "\01";
+    }
+    for (QStringList::Iterator j = lst.begin();j != lst.end();j++)
+    {
+        if (strip > 0)
+        {
+            ret += sep;
+            ret += *j;
+        }
+        else
+            strip--;
+        if (sep.isEmpty())
+            sep = "\01";
+    }
+    return ret;
+}
+
+void toOracleExtract::describeMViewIndex(toExtract &ext,
+        std::list<QString> &lst,
+        std::list<QString> &ctx,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    if (!ext.getStorage() || !ext.getParallel())
+        return ;
+    ext.setState("IsASnapIndex", true);
+
+    static QRegExp start("^[^\001]+[\001][^\001]+[\001][^\001]+[\001]INITTRANS");
+    static QRegExp ignore("^[^\001]+[\001][^\001]+[\001][^\001]+[\001]LOGGING");
+
+    bool started = false;
+    bool done = false;
+
+    std::list<QString> tbllst;
+    describeIndex(ext, tbllst, schema, owner, name);
+    QString ret;
+
+    for (std::list<QString>::iterator i = tbllst.begin();i != tbllst.end() && !done;i++)
+    {
+        if (start.match(*i) >= 0)
+            started = true;
+        if (started)
+            lst.insert(lst.end(), ReContext(ctx, 3, *i));
+    }
+
+    ext.setState("IsASnapIndex", false);
+}
+
+void toOracleExtract::describeMViewLog(toExtract &ext,
+                                       std::list<QString> &lst,
+                                       const QString &schema,
+                                       const QString &owner,
+                                       const QString &name,
+                                       const QString &type) const
+{
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLSnapshotInfo, name, owner);
+    if (result.size() != 4)
+        throw qApp->translate("toOracleExtract", "Couldn't find log %1.%2").arg(owner).arg(name);
+
+    QString table = toShift(result);
+    QString rowIds = toShift(result);
+    QString primaryKey = toShift(result);
+    QString filterColumns = toShift(result);
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), schema);
+    ctx.insert(ctx.end(), type);
+    ctx.insert(ctx.end(), QUOTE(name));
+
+    describeMViewTable(ext, lst, ctx, schema, owner, table);
+
+    if (rowIds == "YES" && primaryKey == "YES")
+        ctx.insert(ctx.end(), "WITH PRIMARY KEY, ROWID");
+    else if (rowIds == "YES")
+        ctx.insert(ctx.end(), "WITH ROWID");
+    else if (primaryKey == "YES")
+        ctx.insert(ctx.end(), "WITH PRIMARY KEY");
+    addDescription(lst, ctx);
+
+    toQuery inf(CONNECTION, SQLSnapshotColumns, name, owner);
+    bool first = true;
+    if (!inf.eof())
+    {
+        QString col = "(";
+        while (!inf.eof())
+        {
+            if (first)
+                first = false;
+            else
+                col += ",";
+            col += QUOTE(inf.readValue());
+        }
+        col += ")";
+        addDescription(lst, ctx, col);
+    }
+}
+
+void toOracleExtract::describeMViewTable(toExtract &ext,
+        std::list<QString> &lst,
+        std::list<QString> &ctx,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    if (!ext.getStorage() || !ext.getParallel())
+        return ;
+    ext.setState("IsASnapTable", true);
+    //                        Schema        Table         Name
+    static QRegExp parallel("^[^\001]+[\001][^\001]+[\001][^\001]+[\001]PARALLEL");
+
+    bool started = false;
+    bool done = false;
+
+    std::list<QString> tbllst;
+    describeTable(ext, tbllst, schema, owner, name);
+    QString ret;
+
+    for (std::list<QString>::iterator i = tbllst.begin();i != tbllst.end() && !done;i++)
+    {
+        if (parallel.match(*i) >= 0)
+            started = true;
+        if (started)
+            lst.insert(lst.end(), ReContext(ctx, 3, *i));
+    }
+
+    ext.setState("IsASnapTable", false);
+}
+
+void toOracleExtract::describePartitions(toExtract &ext,
+        std::list<QString> &lst,
+        std::list<QString> &ctx,
+        const QString &owner,
+        const QString &name,
+        const QString &subPartitionType,
+        const QString &caller) const
+{
+    if (!ext.getPartition())
+        return ;
+
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLRangePartitions, name, owner);
+    if (result.empty() || result.size() % 18)
+        throw qApp->translate("toOracleExtract", "Couldn't find partition range %1.%2").arg(owner).arg(name);
+
+    while (!result.empty())
+    {
+        QString partition = toShift(result);
+        QString highValue = toShift(result);
+
+        toQList storage;
+        toPush(storage, toQValue("      "));
+        toPush(storage, toQValue("INDEX"));
+        for (int i = 0;i < 16;i++)
+            toPush(storage, toShift(result));
+
+        std::list<QString> cctx = ctx;
+        cctx.insert(cctx.end(), QUOTE(partition));
+
+        addDescription(lst, cctx);
+        if (caller != "LOCAL")
+            addDescription(lst, cctx, "RANGE", QString("VALUES LESS THAN (%1)").arg(highValue));
+        describeAttributes(ext, lst, cctx, storage);
+
+        if (subPartitionType == "HASH")
+        {
+            toQuery inf(CONNECTION, SQLIndexSubPartitionName, name, partition, owner);
+            while (!inf.eof())
+            {
+                QString sub(inf.readValue());
+                QString tablespace(inf.readValue());
+                addDescription(lst, cctx, "HASH", QString("%1 TABLESPACE %2").arg(QUOTE(sub)).arg(QUOTE(tablespace)));
+            }
+        }
+    }
+}
+
+void toOracleExtract::describePartitionedIOT(toExtract &ext,
+        std::list<QString> &lst,
+        std::list<QString> &ctx,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLPartitionedIOTInfo,
+                                            QString::number(ext.getBlockSize()), name, owner);
+    describeTableText(ext, lst, ctx, result, schema, owner, name);
+    if (ext.getPartition())
+    {
+        toQuery inf(CONNECTION, SQLPartitionIndexNames, name, owner);
+        if (!inf.eof())
+            throw qApp->translate("toOracleExtract", "Couldn't find index partitions for %1.%2").arg(owner).arg(name);
+        QString index(inf.readValue());
+        std::list<QString> cctx = ctx;
+        toPush(cctx, QString("PARTITION COLUMNS"));
+        toPush(cctx, partitionKeyColumns(ext, owner, name, "TABLE"));
+        addDescription(lst, cctx);
+        describePartitions(ext, lst, cctx, owner, index, "NONE", "IOT");
+    }
+    describeComments(ext, lst, ctx, owner, name);
+    if (ext.getStorage())
+    {
+        toQList overflow = toQuery::readQueryNull(CONNECTION, segments(ext, SQLOverflowInfo), name, owner);
+        if (overflow.size() == 18)
+        {
+            ctx.insert(ctx.end(), "OVERFLOW");
+            describeAttributes(ext, lst, ctx, overflow);
+        }
+    }
+}
+
+void toOracleExtract::describePartitionedIndex(toExtract &ext,
+        std::list<QString> &lst,
+        std::list<QString> &ctx,
+        const QString &,
+        const QString &owner,
+        const QString &name) const
+{
+    if (!ext.getPartition())
+        return ;
+
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLIndexPartition,
+                                            QString::number(ext.getBlockSize()), owner, name);
+    QString partitionType = toShift(result);
+    QString subPartitionType = toShift(result);
+    QString locality = toShift(result);
+    QString compressed = toShift(result);
+    toUnShift(result, toQValue(""));
+
+    describeAttributes(ext, lst, ctx, result);
+
+    if (!compressed.isEmpty())
+        addDescription(lst, ctx, "COMPRESS", compressed);
+
+    if (locality == "GLOBAL")
+    {
+        std::list<QString> cctx = ctx;
+        toPush(cctx, QString("GLOBAL PARTITION COLUMNS"));
+        toPush(cctx, partitionKeyColumns(ext, owner, name, "INDEX"));
+
+        addDescription(lst, cctx);
+        describePartitions(ext, lst, cctx, owner, name, subPartitionType, "GLOBAL");
+    }
+    else
+    {
+        std::list<QString> cctx = ctx;
+        toPush(cctx, QString("LOCAL PARTITION"));
+        addDescription(lst, cctx);
+        if (partitionType == "RANGE")
+            describePartitions(ext, lst, cctx, owner, name, subPartitionType, "LOCAL");
+    }
+}
+
+void toOracleExtract::describePartitionedTable(toExtract &ext,
+        std::list<QString> &lst,
+        std::list<QString> &ctx,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    toQList storage = toQuery::readQueryNull(CONNECTION, SQLPartitionTableInfo,
+                      QString::number(ext.getBlockSize()), name, owner);
+
+    QString organization;
+    {
+        toQList::iterator i = storage.begin();
+        i++;
+        i++;
+        i++;
+        i++;
+        organization = *i;
+    }
+
+    describeTableText(ext, lst, ctx, storage, schema, owner, name);
+
+    if (ext.getPartition())
+    {
+        toQList type = toQuery::readQueryNull(CONNECTION, SQLPartitionType, name, owner);
+        QString partitionType (toShift(type));
+        QString partitionCount (toShift(type));
+        QString subPartitionType (toShift(type));
+        QString subPartitionCount(toShift(type));
+
+        QString prtstr = QString("PARTITION BY %1 (%2)").
+                         arg(partitionType).
+                         arg(partitionKeyColumns(ext, owner, name, "TABLE"));
+        addDescription(lst, ctx, prtstr);
+        QString subprtstr;
+
+        if (partitionType == "RANGE")
+        {
+            if (subPartitionType == "HASH")
+            {
+                subprtstr = QString("SUBPARTITIONED BY HASH (%1) SUBPARTITIONS %2").
+                            arg(subPartitionKeyColumns(ext, owner, name, "TABLE")).
+                            arg(subPartitionCount);
+                addDescription(lst, ctx, subprtstr);
+            }
+
+            toQList segment = toQuery::readQueryNull(CONNECTION, SQLPartitionSegment, name, owner);
+
+            while (!segment.empty())
+            {
+                toQList storage;
+                QString partition = toShift(segment);
+                QString highValue = toShift(segment);
+                toPush(storage, toQValue("      "));
+                toPush(storage, toQValue(organization));
+                for (int i = 0;i < 16;i++)
+                    toPush(storage, toShift(segment));
+
+                std::list<QString> cctx = ctx;
+                cctx.insert(cctx.end(), prtstr);
+                cctx.insert(cctx.end(), QUOTE(partition));
+                addDescription(lst, cctx, "RANGE", QString("VALUES LESS THAN %2").
+                               arg(highValue));
+                describeAttributes(ext, lst, cctx, storage);
+
+                if (subPartitionType == "HASH")
+                {
+                    toQList subs = toQuery::readQueryNull(CONNECTION, SQLSubPartitionName,
+                                                          name, partition, owner);
+                    while (!subs.empty())
+                    {
+                        QString subpart = QUOTE(toShift(subs));
+                        QString tabspac = toShift(subs);
+                        addDescription(lst, cctx, subprtstr, subpart);
+                        addDescription(lst, cctx, subprtstr, subpart,
+                                       QString("TABLESPACE %1").arg(QUOTE(tabspac)));
+                    }
+                }
+            }
+        }
+        else
+        {
+            toQList hash = toQuery::readQueryNull(CONNECTION, SQLPartitionName,
+                                                  name, owner);
+            while (!hash.empty())
+            {
+                QString partition = QUOTE(toShift(hash));
+                QString tablespac = toShift(hash);
+                addDescription(lst, ctx, prtstr, partition);
+                addDescription(lst, ctx, prtstr, partition,
+                               QString("TABLESPACE %1").arg(QUOTE(tablespac)));
+            }
+        }
+    }
+
+    describeComments(ext, lst, ctx, owner, name);
+}
+
+void toOracleExtract::describeSource(toExtract &ext,
+                                     std::list<QString> &lst,
+                                     const QString &schema,
+                                     const QString &owner,
+                                     const QString &name,
+                                     const QString &type) const
+{
+    if (!ext.getCode())
+        return ;
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), schema);
+    ctx.insert(ctx.end(), type);
+    ctx.insert(ctx.end(), QUOTE(name));
+    addDescription(lst, ctx);
+    addDescription(lst, ctx, displaySource(ext, schema, owner, name, type, true));
+}
+
+void toOracleExtract::describeTableColumns(toExtract &ext,
+        std::list<QString> &lst,
+        std::list<QString> &ctx,
+        const QString &owner,
+        const QString &name) const
+{
+    toQList cols = toQuery::readQueryNull(CONNECTION, SQLTableColumns, name, owner);
+    int num = 1;
+    while (!cols.empty())
+    {
+        QString col = QUOTE(toShift(cols));
+        QString line = toShift(cols);
+        QString extra = toShift(cols);
+        if (!extra.isEmpty())
+        {
+            line += " DEFAULT ";
+            line += extra;
+        }
+        extra += toShift(cols);
+        addDescription(lst, ctx, "COLUMN", col);
+        addDescription(lst, ctx, "COLUMN", col, line);
+        addDescription(lst, ctx, "COLUMN", col, "EXTRA", extra);
+        addDescription(lst, ctx, "COLUMN", col, "ORDER", QString::number(num));
+        num++;
+    }
+}
+
+void toOracleExtract::describeTableText(toExtract &ext,
+                                        std::list<QString> &lst,
+                                        std::list<QString> &ctx,
+                                        toQList &result,
+                                        const QString &,
+                                        const QString &owner,
+                                        const QString &name) const
+{
+    QString monitoring = toShift(result);
+    QString table = toShift(result);
+    QString degree = toShift(result);
+    QString instances = toShift(result);
+    QString organization = toShift(result);
+
+    QString ret;
+    addDescription(lst, ctx);
+    describeTableColumns(ext, lst, ctx, owner, name);
+    if (CONNECTION.version() >= "0800" && ext.getStorage())
+        addDescription(lst, ctx, "PARAMETERS", QString("ORGANIZATION %1").arg(organization));
+    if (CONNECTION.version() >= "0801" && ext.getStorage())
+        addDescription(lst, ctx, "PARAMETERS", monitoring);
+    if (ext.getParallel())
+    {
+        addDescription(lst, ctx, "PARALLEL", QString("DEGREE %1").arg(degree));
+        addDescription(lst, ctx, "PARALLEL", QString("INSTANCES %1").arg(instances));
+    }
+
+    toUnShift(result, toQValue(organization));
+    toUnShift(result, toQValue(""));
+
+    describeAttributes(ext, lst, ctx, result);
+}
+
+// Implementation create functions
+
+static toSQL SQLListConstraint("toOracleExtract:ListConstraint",
+                               "SELECT table_name,\n"
+                               "       constraint_type,\n"
+                               "       search_condition,\n"
+                               "       r_owner,\n"
+                               "       r_constraint_name,\n"
+                               "       delete_rule,\n"
+                               "       DECODE(status,'ENABLED','ENABLE NOVALIDATE','DISABLE'),\n"
+                               "       deferrable,\n"
+                               "       deferred\n"
+                               "  FROM sys.all_constraints\n"
+                               " WHERE owner = :own<char[100]>\n"
+                               "   AND constraint_name = :nam<char[100]>",
+                               "Get information about a constraint, same binds and columns",
+                               "0800");
+
+static toSQL SQLListConstraint7("toOracleExtract:ListConstraint",
+                                "SELECT table_name,\n"
+                                "       constraint_type,\n"
+                                "       search_condition,\n"
+                                "       r_owner,\n"
+                                "       r_constraint_name,\n"
+                                "       delete_rule,\n"
+                                "       DECODE(status,'ENABLED','ENABLE','DISABLE'),\n"
+                                "       NULL,\n"
+                                "       NULL\n"
+                                "  FROM sys.all_constraints\n"
+                                " WHERE owner = :own<char[100]>\n"
+                                "   AND constraint_name = :nam<char[100]>",
+                                "",
+                                "0700");
+
+static toSQL SQLConstraintTable("toOracleExtract:ConstraintTable",
+                                "SELECT table_name\n"
+                                "  FROM sys.all_constraints\n"
+                                " WHERE owner = :own<char[100]>\n"
+                                "   AND constraint_name = :nam<char[100]>",
+                                "Get tablename from constraint name, same binds and columns");
+
+QString toOracleExtract::createConstraint(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    QString ret;
+
+    if (ext.getConstraints())
+    {
+        toQuery inf(CONNECTION, SQLListConstraint, owner, name);
+        if (inf.eof())
+            throw qApp->translate("toOracleExtract", "Constraint %1.%2 doesn't exist").arg(owner).arg(name);
+        QString table(inf.readValue());
+        QString tchr(inf.readValue());
+        QString search(inf.readValue());
+        QString rOwner(inf.readValue());
+        QString rName(inf.readValue());
+        QString delRule(inf.readValue());
+        QString status(inf.readValue());
+        QString defferable(inf.readValue());
+        QString deffered(inf.readValue());
+
+        QString type =
+            (tchr == "P") ? "PRIMARY KEY" :
+            (tchr == "U") ? "UNIQUE" :
+            (tchr == "R") ? "FOREIGN KEY" :
+            "CHECK";
+
+        QString sql = QString("ALTER TABLE %1%2 ADD CONSTRAINT %3 %4\n").
+                      arg(schema).arg(QUOTE(table)).arg(QUOTE(name)).arg(type);
+        if (PROMPT)
+        {
+            ret = "PROMPT ";
+            ret += sql;
+            ret += "\n";
+        }
+        ret += sql;
+        if (tchr == "C")
+        {
+            ret += "    (";
+            ret += search;
+            ret += ")\n";
+        }
+        else
+        {
+            ret += constraintColumns(ext, owner, name);
+
+            if (tchr == "R")
+            {
+                toQuery query(CONNECTION, SQLConstraintTable, rOwner, rName);
+                ret += " REFERENCES ";
+                ret += ext.intSchema(rOwner, false);
+                ret += QUOTE(query.readValue());
+                ret += constraintColumns(ext, rOwner, rName);
+
+                if (delRule == "CASCADE")
+                    ret += "ON DELETE CASCADE\n";
+            }
+        }
+        if (CONNECTION.version() < "08")
+        {
+            if (status != "ENABLED")
+                ret += status;
+        }
+        else
+        {
+            ret += defferable;
+            ret += "\nINITIALLY ";
+            ret += deffered;
+            ret += "\n";
+            ret += status;
+        }
+        ret += ";\n\n";
+    }
+    return ret;
+}
+
+static toSQL SQLDBLink("toOracleExtract:ExtractDBLink",
+                       "SELECT l.userid,\n"
+                       "       l.password,\n"
+                       "       l.host\n"
+                       "  FROM sys.link$ l,\n"
+                       "       sys.user$ u\n"
+                       " WHERE u.name    = :own<char[100]>\n"
+                       "   AND l.owner# = u.user#\n"
+                       "   AND l.name LIKE :nam<char[100]>||'%'",
+                       "Get information about a DB Link, must have same binds and columns");
+
+QString toOracleExtract::createDBLink(toExtract &ext,
+                                      const QString &,
+                                      const QString &owner,
+                                      const QString &name) const
+{
+    toQuery inf(CONNECTION, SQLDBLink, owner, name);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "DBLink %1.%2 doesn't exist").arg(owner).arg(name);
+    QString user(inf.readValue());
+    QString password(inf.readValue());
+    QString host(inf.readValue());
+    QString publ = (owner == "PUBLIC") ? " PUBLIC" : "";
+    QString sql = QString("CREATE%1 DATABASE LINK %2").arg(publ).arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += QString("\nCONNECT TO %1 IDENTIFIED BY %2 USING '%3';\n\n").
+           arg(user.lower()).
+           arg(password.lower()).
+           arg(prepareDB(host));
+    return ret;
+}
+
+static toSQL SQLPartitionSegmentType("toOracleExtract:PartitionSegment type",
+                                     "SELECT SUBSTR(segment_type,7),\n"
+                                     "       TO_CHAR(blocks)\n"
+                                     "  FROM %1\n"
+                                     " WHERE segment_name = :nam<char[100]>\n"
+                                     "   AND partition_name = :prt<char[100]>\n"
+                                     "   AND owner = :own<char[100]>",
+                                     "Get segment type for object partition, same binds and columns");
+
+static toSQL SQLExchangeIndex("toOracleExtract:ExchangeIndex",
+                              "SELECT\n"
+                              "        LTRIM(i.degree)\n"
+                              "      , LTRIM(i.instances)\n"
+                              "      , i.table_name\n"
+                              "      , DECODE(\n"
+                              "                i.uniqueness\n"
+                              "               ,'UNIQUE',' UNIQUE'\n"
+                              "               ,null\n"
+                              "              )                       AS uniqueness\n"
+                              "      , DECODE(\n"
+                              "                i.index_type\n"
+                              "               ,'BITMAP',' BITMAP'\n"
+                              "               ,null\n"
+                              "              )                       AS index_type\n"
+                              "      , 'INDEX'                       AS organization\n"
+                              "      , 'N/A'                         AS cache\n"
+                              "      , 'N/A'                         AS pct_used\n"
+                              "      , p.pct_free\n"
+                              "      , DECODE(\n"
+                              "                p.ini_trans\n"
+                              "               ,0,1\n"
+                              "               ,null,1\n"
+                              "               ,p.ini_trans\n"
+                              "              )                       AS ini_trans\n"
+                              "      , DECODE(\n"
+                              "                p.max_trans\n"
+                              "               ,0,255\n"
+                              "               ,null,255\n"
+                              "               ,p.max_trans\n"
+                              "              )                       AS max_trans\n"
+                              "      , p.initial_extent\n"
+                              "      , p.next_extent\n"
+                              "      , p.min_extent\n"
+                              "      , DECODE(\n"
+                              "                p.max_extent\n"
+                              "               ,2147483645,'unlimited'\n"
+                              "               ,           p.max_extent\n"
+                              "              )                       AS max_extent\n"
+                              "      , p.pct_increase\n"
+                              "      , NVL(p.freelists,1)\n"
+                              "      , NVL(p.freelist_groups,1)\n"
+                              "      , p.buffer_pool                 AS buffer_pool\n"
+                              "      , DECODE(\n"
+                              "                p.logging\n"
+                              "               ,'NO','NOLOGGING'\n"
+                              "               ,     'LOGGING'\n"
+                              "              )                       AS logging\n"
+                              "      , p.tablespace_name             AS tablespace_name\n"
+                              "      , %2                            AS blocks\n"
+                              " FROM\n"
+                              "        sys.all_indexes  i\n"
+                              "      , sys.all_ind_%1s  p\n"
+                              " WHERE\n"
+                              "            p.index_name   = :nam<char[100]>\n"
+                              "        AND p.%1_name      = :typ<char[100]>\n"
+                              "        AND i.index_name   = p.index_name\n"
+                              "        AND p.index_owner  = :own<char[100]>\n"
+                              "        AND i.owner        = p.index_owner",
+                              "Get information about exchange index, "
+                              "must have same %, binds and columns");
+
+QString toOracleExtract::createExchangeIndex(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    QStringList str = QStringList::split(":", name);
+    if (str.count() != 2)
+        throw ("When calling createExchangeIndex name should contain :");
+    QString segment = str.first();
+    QString partition = str.last();
+
+    toQuery inf(CONNECTION, segments(ext, SQLPartitionSegmentType), segment, partition, owner);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "Exchange index %1.%2 doesn't exist").arg(owner).arg(name);
+    QString type = inf.readValue();
+    QString blocks = inf.readValue();
+
+    QString sql = toSQL::string(SQLExchangeIndex, CONNECTION).
+                  arg(type).arg(blocks);
+    toQList result = toQuery::readQueryNull(CONNECTION, sql, segment, partition, owner);
+    QString degree = toShift(result);
+    QString instances = toShift(result);
+    QString table = toShift(result);
+    QString unique = toShift(result);
+    QString bitmap = toShift(result);
+
+    toUnShift(result, toQValue(""));
+
+    sql = QString("CREATE%1%2 INDEX %3%4 ON %3%5\n").
+          arg(unique).arg(bitmap).arg(schema).arg(segment).arg(QUOTE(table));
+
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n";
+    }
+    ret += sql;
+    ret += indexColumns(ext, "", owner, segment);
+    if (ext.getParallel())
+    {
+        ret += "PARALLEL\n(\n  DEGREE            ";
+        ret += degree;
+        ret += "\n  INSTANCES         ";
+        ret += instances;
+        ret += ")\n";
+    }
+    ret += segmentAttributes(ext, result);
+    ret += ";\n\n";
+    return ret;
+}
+
+static toSQL SQLExchangeTable("toOracleExtract:ExchangeTable",
+                              "SELECT\n"
+                              "        DECODE(\n"
+                              "                t.monitoring\n"
+                              "               ,'NO','NOMONITORING'\n"
+                              "               ,     'MONITORING'\n"
+                              "              )                              AS monitoring\n"
+                              "      , t.table_name\n"
+                              "      , LTRIM(t.degree)                      AS degree\n"
+                              "      , LTRIM(t.instances)                   AS instances\n"
+                              "      , 'HEAP'                               AS organization\n"
+                              "      , DECODE(\n"
+                              "                t.cache\n"
+                              "               ,'y','CACHE'\n"
+                              "               ,    'NOCACHE'\n"
+                              "              )                              AS cache\n"
+                              "      , p.pct_used\n"
+                              "      , p.pct_free\n"
+                              "      , p.ini_trans\n"
+                              "      , p.max_trans\n"
+                              "      , p.initial_extent\n"
+                              "      , p.next_extent\n"
+                              "      , p.min_extent\n"
+                              "      , DECODE(\n"
+                              "                p.max_extent\n"
+                              "               ,2147483645,'unlimited'\n"
+                              "               ,p.max_extent\n"
+                              "              )                              AS max_extents\n"
+                              "      , p.pct_increase\n"
+                              "      , p.freelists\n"
+                              "      , p.freelist_groups\n"
+                              "      , p.buffer_pool                        AS buffer_pool\n"
+                              "      , DECODE(\n"
+                              "                p.logging\n"
+                              "               ,'NO','NOLOGGING'\n"
+                              "               ,     'LOGGING'\n"
+                              "              )                              AS logging\n"
+                              "      , p.tablespace_name                    AS tablespace_name\n"
+                              "      , %2 - NVL(p.empty_blocks,0)           AS blocks\n"
+                              " FROM\n"
+                              "        sys.all_tables        t\n"
+                              "      , sys.all_tab_%1s       p\n"
+                              " WHERE\n"
+                              "            p.table_name   = :nam<char[100]>\n"
+                              "        AND p.%1_name      = :sgm<char[100]>\n"
+                              "        AND t.table_name   = p.table_name\n"
+                              "        AND p.table_owner  = :own<char[100]>\n"
+                              "        AND t.owner        = p.table_owner",
+                              "Get information about exchange table, "
+                              "must have same %, binds and columns");
+
+QString toOracleExtract::createExchangeTable(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    QStringList str = QStringList::split(":", name);
+    if (str.count() != 2)
+        throw ("When calling createExchangeTable name should contain :");
+    QString segment = str.first();
+    QString partition = str.last();
+
+    toQuery inf(CONNECTION, segments(ext, SQLPartitionSegmentType), segment, partition, owner);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "Exchange table %1.%2 doesn't exist").arg(owner).arg(name);
+    QString type = inf.readValue();
+    QString blocks = inf.readValue();
+
+    QString sql = toSQL::string(SQLExchangeTable, CONNECTION).arg(type).arg(blocks);
+    toQList result = toQuery::readQueryNull(CONNECTION, sql, segment, partition, owner);
+    QString ret = createTableText(ext, result, schema, owner, segment);
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::createFunction(toExtract &ext,
+                                        const QString &schema,
+                                        const QString &owner,
+                                        const QString &name) const
+{
+    return displaySource(ext, schema, owner, name, "FUNCTION", false);
+}
+
+static toSQL SQLIndexInfo7("toOracleExtract:IndexInfo",
+                           "SELECT  'N/A'                           AS partitioned\n"
+                           "      , table_name\n"
+                           "      , table_owner\n"
+                           "      , NULL\n"
+                           "      , DECODE(\n"
+                           "                uniqueness\n"
+                           "               ,'UNIQUE',' UNIQUE'\n"
+                           "               ,null\n"
+                           "              )\n"
+                           "      , null                            AS bitmap\n"
+                           "      , null                            AS domain\n"
+                           "      , null\n"
+                           "      , null\n"
+                           "      , null\n"
+                           "  FROM sys.all_indexes\n"
+                           " WHERE index_name = :nam<char[100]>\n"
+                           "   AND owner = :own<char[100]>",
+                           "Initial information about an index, same binds and columns",
+                           "0700");
+static toSQL SQLIndexInfo("toOracleExtract:IndexInfo",
+                          "SELECT partitioned\n"
+                          "      , table_name\n"
+                          "      , table_owner\n"
+                          "      , DECODE(index_type,'NORMAL/REV','REVERSE',NULL)\n"
+                          "      , DECODE(\n"
+                          "                uniqueness\n"
+                          "               ,'UNIQUE',' UNIQUE'\n"
+                          "               ,null\n"
+                          "              )\n"
+                          "      , DECODE(\n"
+                          "                index_type\n"
+                          "               ,'BITMAP',' BITMAP'\n"
+                          "               ,null\n"
+                          "              )\n"
+                          "      , DECODE(\n"
+                          "                index_type\n"
+                          "               ,'DOMAIN','DOMAIN'\n"
+                          "               ,null\n"
+                          "              )\n"
+                          "      , ityp_owner\n"
+                          "      , ityp_name\n"
+                          "      , parameters\n"
+                          "  FROM sys.all_indexes\n"
+                          " WHERE index_name = :nam<char[100]>\n"
+                          "   AND owner = :own<char[100]>",
+                          "",
+                          "0800");
+
+static toSQL SQLIndexSegment("toOracleExtract:IndexSegment",
+                             "SELECT  LTRIM(i.degree)\n"
+                             "      , LTRIM(i.instances)\n"
+                             "      , DECODE(\n"
+                             "                i.compression\n"
+                             "               ,'ENABLED',i.prefix_length\n"
+                             "               ,0\n"
+                             "              )                             AS compressed\n"
+                             "      , 'INDEX'                       AS organization\n"
+                             "      , 'N/A'                         AS cache\n"
+                             "      , 'N/A'                         AS pct_used\n"
+                             "      , i.pct_free\n"
+                             "      , DECODE(\n"
+                             "                i.ini_trans\n"
+                             "               ,0,1\n"
+                             "               ,null,1\n"
+                             "               ,i.ini_trans\n"
+                             "              )                       AS ini_trans\n"
+                             "      , DECODE(\n"
+                             "                i.max_trans\n"
+                             "               ,0,255\n"
+                             "               ,null,255\n"
+                             "               ,i.max_trans\n"
+                             "              )                       AS max_trans\n"
+                             "      , i.initial_extent\n"
+                             "      , i.next_extent\n"
+                             "      , i.min_extents\n"
+                             "      , DECODE(\n"
+                             "                i.max_extents\n"
+                             "               ,2147483645,'unlimited'\n"
+                             "               ,           i.max_extents\n"
+                             "              )                       AS max_extents\n"
+                             "      , i.pct_increase\n"
+                             "      , NVL(i.freelists,1)\n"
+                             "      , NVL(i.freelist_groups,1)\n"
+                             "      , i.buffer_pool                 AS buffer_pool\n"
+                             "      , DECODE(\n"
+                             "                i.logging\n"
+                             "               ,'NO','NOLOGGING'\n"
+                             "               ,     'LOGGING'\n"
+                             "              )                       AS logging\n"
+                             "      , i.tablespace_name             AS tablespace_name\n"
+                             "      , s.blocks\n"
+                             "  FROM  sys.all_indexes   i\n"
+                             "      , %1  s\n"
+                             " WHERE  i.index_name   = :nam<char[100]>\n"
+                             "   AND  s.segment_name = i.index_name\n"
+                             "   AND  s.segment_type  = 'INDEX'\n"
+                             "   AND  i.owner        = :own<char[100]>\n"
+                             "   AND  s.owner        = i.owner",
+                             "Get information about how index is stored",
+                             "0801");
+
+static toSQL SQLIndexSegment8("toOracleExtract:IndexSegment",
+                              "SELECT  LTRIM(i.degree)\n"
+                              "      , LTRIM(i.instances)\n"
+                              "      , 0                             AS compressed\n"
+                              "      , 'INDEX'                       AS organization\n"
+                              "      , 'N/A'                         AS cache\n"
+                              "      , 'N/A'                         AS pct_used\n"
+                              "      , i.pct_free\n"
+                              "      , DECODE(\n"
+                              "                i.ini_trans\n"
+                              "               ,0,1\n"
+                              "               ,null,1\n"
+                              "               ,i.ini_trans\n"
+                              "              )                       AS ini_trans\n"
+                              "      , DECODE(\n"
+                              "                i.max_trans\n"
+                              "               ,0,255\n"
+                              "               ,null,255\n"
+                              "               ,i.max_trans\n"
+                              "              )                       AS max_trans\n"
+                              "      , i.initial_extent\n"
+                              "      , i.next_extent\n"
+                              "      , i.min_extents\n"
+                              "      , DECODE(\n"
+                              "                i.max_extents\n"
+                              "               ,2147483645,'unlimited'\n"
+                              "               ,           i.max_extents\n"
+                              "              )                       AS max_extents\n"
+                              "      , i.pct_increase\n"
+                              "      , NVL(i.freelists,1)\n"
+                              "      , NVL(i.freelist_groups,1)\n"
+                              "      , i.buffer_pool                 AS buffer_pool\n"
+                              "      , DECODE(\n"
+                              "                i.logging\n"
+                              "               ,'NO','NOLOGGING'\n"
+                              "               ,     'LOGGING'\n"
+                              "              )                       AS logging\n"
+                              "      , i.tablespace_name             AS tablespace_name\n"
+                              "      , s.blocks\n"
+                              "  FROM  sys.all_indexes   i\n"
+                              "      , %1  s\n"
+                              " WHERE  i.index_name   = :nam<char[100]>\n"
+                              "   AND  s.segment_type = 'INDEX'\n"
+                              "   AND  s.segment_name = i.index_name\n"
+                              "   AND  i.owner        = :own<char[100]>\n"
+                              "   AND  s.owner        = i.owner",
+                              "",
+                              "0800");
+
+static toSQL SQLIndexSegment7("toOracleExtract:IndexSegment",
+                              "SELECT  'N/A'                         AS degree\n"
+                              "      , 'N/A'                         AS instances\n"
+                              "      , 0                             AS compressed\n"
+                              "      , 'INDEX'                       AS organization\n"
+                              "      , 'N/A'                         AS cache\n"
+                              "      , 'N/A'                         AS pct_used\n"
+                              "      , i.pct_free\n"
+                              "      , DECODE(\n"
+                              "                i.ini_trans\n"
+                              "               ,0,1\n"
+                              "               ,null,1\n"
+                              "               ,i.ini_trans\n"
+                              "              )                       AS ini_trans\n"
+                              "      , DECODE(\n"
+                              "                i.max_trans\n"
+                              "               ,0,255\n"
+                              "               ,null,255\n"
+                              "               ,i.max_trans\n"
+                              "              )                       AS max_trans\n"
+                              "      , i.initial_extent\n"
+                              "      , i.next_extent\n"
+                              "      , i.min_extents\n"
+                              "      , DECODE(\n"
+                              "                i.max_extents\n"
+                              "               ,2147483645,'unlimited'\n"
+                              "               ,           i.max_extents\n"
+                              "              )                       AS max_extents\n"
+                              "      , i.pct_increase\n"
+                              "      , NVL(i.freelists,1)\n"
+                              "      , NVL(i.freelist_groups,1)\n"
+                              "      , 'N/A'                         AS buffer_pool\n"
+                              "      , 'N/A'                         AS logging\n"
+                              "      , i.tablespace_name             AS tablespace_name\n"
+                              "      , s.blocks\n"
+                              "  FROM  sys.all_indexes   i\n"
+                              "      , %1  s\n"
+                              " WHERE  i.index_name   = :nam<char[100]>\n"
+                              "   AND  s.segment_name = i.index_name\n"
+                              "   AND  s.segment_type = 'INDEX'\n"
+                              "   AND  i.owner        = :own<char[100]>\n"
+                              "   AND  s.owner        = i.owner",
+                              "",
+                              "0700");
+
+QString toOracleExtract::createIndex(toExtract &ext,
+                                     const QString &schema,
+                                     const QString &owner,
+                                     const QString &name) const
+{
+    if (!ext.getIndexes())
+        return "";
+
+    toQList res = toQuery::readQueryNull(CONNECTION, SQLIndexInfo, name, owner);
+    if (res.size() != 10)
+        throw qApp->translate("toOracleExtract", "Couldn't find index %1.%2").arg(owner).arg(name);
+
+    QString partitioned = toShift(res);
+    QString table = toShift(res);
+    QString tableOwner = toShift(res);
+    QString reverse = toShift(res);
+    QString unique = toShift(res);
+    QString bitmap = toShift(res);
+    QString domain = toShift(res);
+    QString domOwner = toShift(res);
+    QString domName = toShift(res);
+    QString domParam = toShift(res);
+
+    toQList storage = toQuery::readQueryNull(CONNECTION, segments(ext, SQLIndexSegment), name, owner);
+    QString degree = toShift(storage);
+    QString instances = toShift(storage);
+    QString compressed = toShift(storage);
+
+    QString schema2 = ext.intSchema(tableOwner, false);
+
+    QString ret;
+    QString sql = QString("CREATE%1%2 INDEX %3%4 ON %5%6\n").
+                  arg(unique).
+                  arg(bitmap).
+                  arg(schema).
+                  arg(QUOTE(name)).
+                  arg(schema2).
+                  arg(QUOTE(table));
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n";
+    }
+    ret += sql;
+    ret += indexColumns(ext, "", owner, name);
+    if (domain == "DOMAIN")
+    {
+        if (CONNECTION.version() >= "0801" && domOwner == "CTXSYS" && domName == "CONTEXT")
+        {
+            ret = createContextPrefs(ext, schema, owner, name, ret);
+            return ret;
+        }
+        ret += QString("INDEXTYPE IS %1.%2\nPARAMETERS ('%3');\n\n").
+               arg(QUOTE(domOwner)).arg(QUOTE(domName)).arg(prepareDB(domParam));
+        return ret;
+    }
+    if (CONNECTION.version() >= "0800" && ext.getParallel())
+    {
+        ret += QString("PARALLEL\n"
+                       "(\n"
+                       "  DEGREE            %1\n"
+                       "  INSTANCES         %2\n"
+                       ")\n").
+               arg(degree).
+               arg(instances);
+    }
+    if (partitioned == "YES")
+        return createPartitionedIndex(ext, schema, owner, name, ret);
+
+    toUnShift(storage, toQValue(""));
+    ret += segmentAttributes(ext, storage);
+    if (!compressed.isEmpty() && compressed != "0" && ext.getStorage())
+    {
+        ret += "COMPRESS            ";
+        ret += compressed;
+        ret += "\n";
+    }
+    if (!reverse.isEmpty())
+    {
+        ret += reverse;
+        ret += "\n";
+    }
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::createMaterializedView(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    return createMView(ext, schema, owner, name, "MATERIALIZED VIEW");
+}
+
+QString toOracleExtract::createMaterializedViewLog(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    return createMViewLog(ext, schema, owner, name, "MATERIALIZED VIEW");
+}
+
+QString toOracleExtract::createPackage(toExtract &ext,
+                                       const QString &schema,
+                                       const QString &owner,
+                                       const QString &name) const
+{
+    return displaySource(ext, schema, owner, name, "PACKAGE", false);
+}
+
+QString toOracleExtract::createPackageBody(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    return displaySource(ext, schema, owner, name, "PACKAGE BODY", false);
+}
+
+QString toOracleExtract::createProcedure(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    return displaySource(ext, schema, owner, name, "PROCEDURE", false);
+}
+
+static toSQL SQLProfileInfo("toOracleExtract:ProfileInfo",
+                            "SELECT\n"
+                            "        RPAD(resource_name,27)\n"
+                            "      , DECODE(\n"
+                            "                RESOURCE_NAME\n"
+                            "               ,'PASSWORD_VERIFY_FUNCTION'\n"
+                            "               ,DECODE(limit\n"
+                            "                      ,'UNLIMITED','null'\n"
+                            "                      ,limit\n"
+                            "                      )\n"
+                            "               ,limit\n"
+                            "              )\n"
+                            " FROM\n"
+                            "        sys.dba_profiles\n"
+                            " WHERE\n"
+                            "        profile = :nam<char[100]>\n"
+                            " ORDER\n"
+                            "    BY\n"
+                            "        DECODE(\n"
+                            "               SUBSTR(resource_name,1,8)\n"
+                            "              ,'FAILED_L',2\n"
+                            "              ,'PASSWORD',2\n"
+                            "              ,1\n"
+                            "             )\n"
+                            "      , resource_name",
+                            "Get information about a profile, must have same binds and columns");
+
+QString toOracleExtract::createProfile(toExtract &ext,
+                                       const QString &,
+                                       const QString &,
+                                       const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLProfileInfo,
+                                          name);
+    if (info.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find profile %1").arg(name);
+
+    QString ret;
+    if (PROMPT)
+        ret = QString("PROMPT CREATE PROFILE %1\n\n").arg(QUOTE(name));
+    ret += QString("CREATE PROFILE %1\n").arg(QUOTE(name));
+
+    while (!info.empty())
+    {
+        ret += "   ";
+        ret += toShift(info);
+        ret += " ";
+        ret += toShift(info);
+        ret += "\n";
+    }
+    ret += ";\n\n";
+    return ret;
+}
+
+static toSQL SQLRoleInfo("toOracleExtract:RoleInfo",
+                         "SELECT\n"
+                         "        DECODE(\n"
+                         "                r.password_required\n"
+                         "               ,'YES', DECODE(\n"
+                         "                               u.password\n"
+                         "                              ,'EXTERNAL','IDENTIFIED EXTERNALLY'\n"
+                         "                              ,'IDENTIFIED BY VALUES ''' \n"
+                         "                                || u.password || ''''\n"
+                         "                             )\n"
+                         "               ,'NOT IDENTIFIED'\n"
+                         "              )                         AS password\n"
+                         " FROM\n"
+                         "        sys.dba_roles   r\n"
+                         "      , sys.user$  u\n"
+                         " WHERE\n"
+                         "            r.role = :rol<char[100]>\n"
+                         "        AND u.name = r.role",
+                         "Get information about a role, must have same binds and columns");
+
+QString toOracleExtract::createRole(toExtract &ext,
+                                    const QString &,
+                                    const QString &,
+                                    const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLRoleInfo,
+                                          name);
+    if (info.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find role %1").arg(name);
+
+    QString ret;
+    if (PROMPT)
+        ret = QString("PROMPT CREATE ROLE %1\n\n").arg(QUOTE(name));
+    ret += QString("CREATE ROLE %1 %2;\n\n").arg(QUOTE(name)).arg(toShift(info));
+    ret += grantedPrivs(ext, QUOTE(name), name, 1);
+    return ret;
+}
+
+static toSQL SQLRollbackSegment("toOracleExtract:RollbackSegment",
+                                "SELECT  DECODE(\n"
+                                "                r.owner\n"
+                                "               ,'PUBLIC',' PUBLIC '\n"
+                                "               ,         ' '\n"
+                                "              )                                  AS is_public\n"
+                                "      , r.tablespace_name\n"
+                                "      , NVL(r.initial_extent,t.initial_extent)   AS initial_extent\n"
+                                "      , NVL(r.next_extent,t.next_extent)         AS next_extent\n"
+                                "      , r.min_extents\n"
+                                "      , DECODE(\n"
+                                "                r.max_extents\n"
+                                "               ,2147483645,'unlimited'\n"
+                                "               ,           r.max_extents\n"
+                                "              )                                  AS max_extents\n"
+                                "  FROM  sys.dba_rollback_segs    r\n"
+                                "      , sys.dba_tablespaces  t\n"
+                                " WHERE\n"
+                                "            r.segment_name    = :nam<char[100]>\n"
+                                "        AND t.tablespace_name = r.tablespace_name",
+                                "Get information about rollback segment, "
+                                "must have same binds and columns");
+
+QString toOracleExtract::createRollbackSegment(toExtract &ext,
+        const QString &,
+        const QString &,
+        const QString &name) const
+{
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLRollbackSegment, name);
+    QString isPublic = toShift(result);
+    QString tablespaceName = toShift(result);
+    QString initialExtent = toShift(result);
+    QString nextExtent = toShift(result);
+    QString minExtent = toShift(result);
+    QString maxExtent = toShift(result);
+
+    QString ret;
+    if (PROMPT)
+        ret += QString("PROMPT CREATE%1ROLLBACK SEGMENT %2\n\n").arg(isPublic).arg(QUOTE(name));
+    ret += QString("CREATE%1ROLLBACK SEGMENT %2\n\n").arg(isPublic).arg(QUOTE(name));
+    if (ext.getStorage())
+    {
+        ret += QString("STORAGE\n(\n"
+                       "  INITIAL      %1\n").arg(initialExtent);
+        if (!nextExtent.isEmpty())
+            ret += QString("  NEXT         %1\n").arg(nextExtent);
+        ret += QString("  MINEXTENTS   %1\n"
+                       "  MAXEXTENTS   %2\n"
+                       ")\n"
+                       "TABLESPACE     %3;\n\n").
+               arg(minExtent).arg(maxExtent).arg(QUOTE(tablespaceName));
+    }
+    return ret;
+}
+
+static toSQL SQLSequenceInfo("toOracleExtract:SequenceInfo",
+                             "SELECT  'START WITH       '\n"
+                             "         || LTRIM(TO_CHAR(last_number,'fm999999999'))\n"
+                             "                                         AS start_with\n"
+                             "      , 'INCREMENT BY     '\n"
+                             "         || LTRIM(TO_CHAR(increment_by,'fm999999999')) AS imcrement_by\n"
+                             "      , DECODE(\n"
+                             "                min_value\n"
+                             "               ,0,'NOMINVALUE'\n"
+                             "               ,'MINVALUE         ' || TO_CHAR(min_value)\n"
+                             "              )                          AS min_value\n"
+                             "      , DECODE(\n"
+                             "                TO_CHAR(max_value,'fm999999999999999999999999999')\n"
+                             "               ,'999999999999999999999999999','NOMAXVALUE'\n"
+                             "               ,'MAXVALUE         ' || TO_CHAR(max_value)\n"
+                             "              )                          AS max_value\n"
+                             "      , DECODE(\n"
+                             "                cache_size\n"
+                             "               ,0,'NOCACHE'\n"
+                             "               ,'CACHE            ' || TO_CHAR(cache_size)\n"
+                             "              )                          AS cache_size\n"
+                             "      , DECODE(\n"
+                             "                cycle_flag\n"
+                             "               ,'Y','CYCLE'\n"
+                             "               ,'N', 'NOCYCLE'\n"
+                             "              )                          AS cycle_flag\n"
+                             "      , DECODE(\n"
+                             "                order_flag\n"
+                             "               ,'Y','ORDER'\n"
+                             "               ,'N', 'NOORDER'\n"
+                             "              )                          AS order_flag\n"
+                             " FROM\n"
+                             "        sys.all_sequences\n"
+                             " WHERE\n"
+                             "            sequence_name  = :nam<char[100]>\n"
+                             "        AND sequence_owner = :own<char[100]>",
+                             "Get information about sequences, must have same binds");
+
+QString toOracleExtract::createSequence(toExtract &ext,
+                                        const QString &schema,
+                                        const QString &owner,
+                                        const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLSequenceInfo,
+                                          name, owner);
+    if (info.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find sequence %1").arg(name);
+
+    QString ret;
+    if (PROMPT)
+        ret = QString("PROMPT CREATE SEQUENCE %1%2\n\n").arg(schema).arg(QUOTE(name));
+    ret += QString("CREATE SEQUENCE %1%2\n").arg(schema).arg(QUOTE(name));
+
+    while (!info.empty())
+    {
+        ret += "   ";
+        ret += toShift(info);
+        ret += "\n";
+    }
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::createSnapshot(toExtract &ext,
+                                        const QString &schema,
+                                        const QString &owner,
+                                        const QString &name) const
+{
+    return createMViewLog(ext, schema, owner, name, "SNAPSHOT");
+}
+
+QString toOracleExtract::createSnapshotLog(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    return createMViewLog(ext, schema, owner, name, "SNAPSHOT LOG");
+}
+
+static toSQL SQLSynonymInfo("toOracleExtract:SynonymInfo",
+                            "SELECT  table_owner\n"
+                            "      , table_name\n"
+                            "      , NVL(db_link,'NULL')\n"
+                            " FROM\n"
+                            "        sys.all_synonyms\n"
+                            " WHERE\n"
+                            "            synonym_name = :nam<char[100]>\n"
+                            "        AND owner = :own<char[100]>",
+                            "Get information about a synonym, must have same binds and columns");
+
+QString toOracleExtract::createSynonym(toExtract &ext,
+                                       const QString &schema,
+                                       const QString &owner,
+                                       const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLSynonymInfo,
+                                          name, owner);
+    if (info.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find synonym %1.%2").arg(owner).arg(name);
+
+    QString tableOwner = toShift(info);
+    QString tableName = toShift(info);
+    QString dbLink = toShift(info);
+    if (dbLink == "NULL")
+        dbLink = "";
+    else
+        dbLink = "@" + QUOTE(dbLink);
+    QString useSchema = (schema == "PUBLIC") ? QString("") : schema;
+    QString isPublic = (owner == "PUBLIC") ? " PUBLIC" : "";
+    QString tableSchema = ext.intSchema(tableOwner, false);
+
+    QString sql = QString("CREATE%1 SYNONYM %2%3 FOR %4%5%6").
+                  arg(isPublic).arg(useSchema).arg(QUOTE(name)).
+                  arg(tableSchema).arg(QUOTE(tableName)).arg(dbLink);
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+    return ret;
+}
+
+static toSQL SQLTableType("toOracleExtract:TableType",
+                          "SELECT partitioned,\n"
+                          "      iot_type\n"
+                          " FROM sys.all_tables\n"
+                          "WHERE table_name = :nam<char[100]>\n"
+                          "  AND owner = :own<char[100]>",
+                          "Get table type, must have same columns and binds",
+                          "0800");
+
+static toSQL SQLTableType7("toOracleExtract:TableType",
+                           "SELECT 'NO',\n"
+                           "      'NOT IOT'\n"
+                           " FROM sys.all_tables\n"
+                           "WHERE table_name = :nam<char[100]>\n"
+                           "  AND owner = :own<char[100]>",
+                           "",
+                           "0700");
+
+static toSQL SQLTableInfo("toOracleExtract:TableInfo",
+                          "SELECT\n"
+                          "        DECODE(\n"
+                          "                t.monitoring\n"
+                          "               ,'NO','NOMONITORING'\n"
+                          "               ,     'MONITORING'\n"
+                          "              )                       AS monitoring\n"
+                          "      , 'N/A'                         AS table_name\n"
+                          "      , LTRIM(t.degree)\n"
+                          "      , LTRIM(t.instances)\n"
+                          "      , DECODE(\n"
+                          "                t.iot_type\n"
+                          "               ,'IOT','INDEX'\n"
+                          "               ,      'HEAP'\n"
+                          "              )                       AS organization\n"
+                          "      , DECODE(\n"
+                          "                LTRIM(t.cache)\n"
+                          "               ,'Y','CACHE'\n"
+                          "               ,    'NOCACHE'\n"
+                          "              )\n"
+                          "      , t.pct_used\n"
+                          "      , t.pct_free\n"
+                          "      , DECODE(\n"
+                          "                t.ini_trans\n"
+                          "               ,0,1\n"
+                          "               ,null,1\n"
+                          "               ,t.ini_trans\n"
+                          "              )                       AS ini_trans\n"
+                          "      , DECODE(\n"
+                          "                t.max_trans\n"
+                          "               ,0,255\n"
+                          "               ,null,255\n"
+                          "               ,t.max_trans\n"
+                          "              )                       AS max_trans\n"
+                          "      , t.initial_extent\n"
+                          "      , t.next_extent\n"
+                          "      , t.min_extents\n"
+                          "      , DECODE(\n"
+                          "                t.max_extents\n"
+                          "               ,2147483645,'unlimited'\n"
+                          "               ,           t.max_extents\n"
+                          "              )                       AS max_extents\n"
+                          "      , NVL(t.pct_increase,0)\n"
+                          "      , NVL(t.freelists,1)\n"
+                          "      , NVL(t.freelist_groups,1)\n"
+                          "      , t.buffer_pool                 AS buffer_pool\n"
+                          "      , DECODE(\n"
+                          "                t.logging\n"
+                          "               ,'NO','NOLOGGING'\n"
+                          "               ,     'LOGGING'\n"
+                          "              )                       AS logging\n"
+                          "      , t.tablespace_name             AS tablespace_name\n"
+                          "      , s.blocks - NVL(t.empty_blocks,0)\n"
+                          " FROM\n"
+                          "        sys.all_tables    t\n"
+                          "      , %1  s\n"
+                          " WHERE\n"
+                          "            t.table_name   = :nam<char[100]>\n"
+                          "        AND t.table_name   = s.segment_name\n"
+                          "        AND s.segment_type = 'TABLE'\n"
+                          "        AND s.owner        = :own<char[100]>\n"
+                          "        AND t.owner        = s.owner",
+                          "Get information about a vanilla table, must have same binds and columns",
+                          "0801");
+
+static toSQL SQLTableInfo8("toOracleExtract:TableInfo",
+                           "SELECT\n"
+                           "        'N/A'                         AS monitoring\n"
+                           "      , 'N/A'                         AS table_name\n"
+                           "      , LTRIM(t.degree)\n"
+                           "      , LTRIM(t.instances)\n"
+                           "      , DECODE(\n"
+                           "                t.iot_type\n"
+                           "               ,'IOT','INDEX'\n"
+                           "               ,      'HEAP'\n"
+                           "              )                       AS organization\n"
+                           "      , DECODE(\n"
+                           "                LTRIM(t.cache)\n"
+                           "               ,'Y','CACHE'\n"
+                           "               ,    'NOCACHE'\n"
+                           "              )\n"
+                           "      , t.pct_used\n"
+                           "      , t.pct_free\n"
+                           "      , DECODE(\n"
+                           "                t.ini_trans\n"
+                           "               ,0,1\n"
+                           "               ,null,1\n"
+                           "               ,t.ini_trans\n"
+                           "              )                       AS ini_trans\n"
+                           "      , DECODE(\n"
+                           "                t.max_trans\n"
+                           "               ,0,255\n"
+                           "               ,null,255\n"
+                           "               ,t.max_trans\n"
+                           "              )                       AS max_trans\n"
+                           "      , t.initial_extent\n"
+                           "      , t.next_extent\n"
+                           "      , t.min_extents\n"
+                           "      , DECODE(\n"
+                           "                t.max_extents\n"
+                           "               ,2147483645,'unlimited'\n"
+                           "               ,           t.max_extents\n"
+                           "              )                       AS max_extents\n"
+                           "      , NVL(t.pct_increase,0)\n"
+                           "      , NVL(t.freelists,1)\n"
+                           "      , NVL(t.freelist_groups,1)\n"
+                           "      , 'N/A'                         AS buffer_pool\n"
+                           "      , DECODE(\n"
+                           "                t.logging\n"
+                           "               ,'NO','NOLOGGING'\n"
+                           "               ,     'LOGGING'\n"
+                           "              )                       AS logging\n"
+                           "      , t.tablespace_name             AS tablespace_name\n"
+                           "      , s.blocks - NVL(t.empty_blocks,0)\n"
+                           " FROM\n"
+                           "        sys.all_tables    t\n"
+                           "      , %1  s\n"
+                           " WHERE\n"
+                           "            t.table_name   = :nam<char[100]>\n"
+                           "        AND t.table_name   = s.segment_name\n"
+                           "        AND s.segment_type = 'TABLE'\n"
+                           "        AND s.owner        = :own<char[100]>\n"
+                           "        AND t.owner        = s.owner",
+                           "",
+                           "0800");
+
+static toSQL SQLTableInfo7("toOracleExtract:TableInfo",
+                           "SELECT\n"
+                           "        'N/A'                         AS monitoring\n"
+                           "      , 'N/A'                         AS table_name\n"
+                           "      , LTRIM(t.degree)\n"
+                           "      , LTRIM(t.instances)\n"
+                           "      , 'N/A'                         AS organization\n"
+                           "      , DECODE(\n"
+                           "                LTRIM(t.cache)\n"
+                           "               ,'Y','CACHE'\n"
+                           "               ,    'NOCACHE'\n"
+                           "              )\n"
+                           "      , t.pct_used\n"
+                           "      , t.pct_free\n"
+                           "      , DECODE(\n"
+                           "                t.ini_trans\n"
+                           "               ,0,1\n"
+                           "               ,null,1\n"
+                           "               ,t.ini_trans\n"
+                           "              )                       AS ini_trans\n"
+                           "      , DECODE(\n"
+                           "                t.max_trans\n"
+                           "               ,0,255\n"
+                           "               ,null,255\n"
+                           "               ,t.max_trans\n"
+                           "              )                       AS max_trans\n"
+                           "      , t.initial_extent\n"
+                           "      , t.next_extent\n"
+                           "      , t.min_extents\n"
+                           "      , DECODE(\n"
+                           "                t.max_extents\n"
+                           "               ,2147483645,'unlimited'\n"
+                           "               ,           t.max_extents\n"
+                           "              )                       AS max_extents\n"
+                           "      , NVL(t.pct_increase,0)\n"
+                           "      , NVL(t.freelists,1)\n"
+                           "      , NVL(t.freelist_groups,1)\n"
+                           "      , 'N/A'                         AS buffer_pool\n"
+                           "      , 'N/A'                         AS logging\n"
+                           "      , t.tablespace_name             AS tablespace_name\n"
+                           "      , s.blocks - NVL(t.empty_blocks,0)\n"
+                           " FROM\n"
+                           "        sys.all_tables    t\n"
+                           "      , %1  s\n"
+                           " WHERE\n"
+                           "            t.table_name   = :nam<char[100]>\n"
+                           "        AND t.table_name   = s.segment_name\n"
+                           "        AND s.segment_type = 'TABLE'\n"
+                           "        AND s.owner        = :own<char[100]>\n"
+                           "        AND t.owner        = s.owner",
+                           "",
+                           "0700");
+
+QString toOracleExtract::createTable(toExtract &ext,
+                                     const QString &schema,
+                                     const QString &owner,
+                                     const QString &name) const
+{
+    toQuery inf(CONNECTION, SQLTableType, name, owner);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "Couldn't find table %1.%2").arg(owner).arg(name);
+
+    QString partitioned(inf.readValue());
+    QString iot_type(inf.readValue());
+
+    if (iot_type == "IOT")
+    {
+        if (partitioned == "YES")
+            return createPartitionedIOT(ext, schema, owner, name);
+        else
+            return createIOT(ext, schema, owner, name);
+    }
+    else if (partitioned == "YES")
+        return createPartitionedTable(ext, schema, owner, name);
+
+    toQList result = toQuery::readQueryNull(CONNECTION, segments(ext, SQLTableInfo), name, owner);
+    QString ret = createTableText(ext, result, schema, owner, name);
+    ret += ";\n\n";
+    ret += createComments(ext, schema, owner, name);
+    return ret;
+}
+
+static toSQL SQLTableConstraints("toOracleExtract:TableConstraints",
+                                 "SELECT\n"
+                                 "        constraint_type,\n"
+                                 "        constraint_name,\n"
+                                 "        NULL\n"
+                                 " FROM\n"
+                                 "        sys.all_constraints cn\n"
+                                 " WHERE      table_name       = :nam<char[100]>\n"
+                                 "        AND owner            = :own<char[100]>\n"
+                                 "        AND constraint_type IN('P','U','C')\n"
+                                 "        AND generated        != 'GENERATED NAME'\n"
+                                 " ORDER\n"
+                                 "    BY\n"
+                                 "       DECODE(\n"
+                                 "               constraint_type\n"
+                                 "              ,'P',1\n"
+                                 "              ,'U',2\n"
+                                 "              ,'C',4\n"
+                                 "             )\n"
+                                 "     , constraint_name",
+                                 "Get constraints tied to a table except referential, same binds and columns",
+                                 "0800");
+static toSQL SQLTableConstraints7("toOracleExtract:TableConstraints",
+                                  "SELECT\n"
+                                  "        constraint_type,\n"
+                                  "        constraint_name,\n"
+                                  "        search_condition\n"
+                                  " FROM\n"
+                                  "        sys.all_constraints cn\n"
+                                  " WHERE      table_name       = :nam<char[100]>\n"
+                                  "        AND owner            = :own<char[100]>\n"
+                                  "        AND constraint_type IN('P','U','C')\n"
+                                  " ORDER\n"
+                                  "    BY\n"
+                                  "       DECODE(\n"
+                                  "               constraint_type\n"
+                                  "              ,'P',1\n"
+                                  "              ,'U',2\n"
+                                  "              ,'C',4\n"
+                                  "             )\n"
+                                  "     , constraint_name",
+                                  QString::null,
+                                  "0703");
+
+static toSQL SQLTableReferences("toOracleExtract:TableReferences",
+                                "SELECT\n"
+                                "        constraint_name\n"
+                                " FROM\n"
+                                "        sys.all_constraints cn\n"
+                                " WHERE      table_name       = :nam<char[100]>\n"
+                                "        AND owner            = :own<char[100]>\n"
+                                "        AND constraint_type IN('R')\n"
+                                "        AND generated        != 'GENERATED NAME'\n"
+                                " ORDER\n"
+                                "    BY\n"
+                                "       DECODE(\n"
+                                "               constraint_type\n"
+                                "              ,'R',1\n"
+                                "             )\n"
+                                "     , constraint_name",
+                                "Get foreign constraints from a table, same binds and columns",
+                                "0800");
+
+static toSQL SQLTableReferences7("toOracleExtract:TableReferences",
+                                 "SELECT\n"
+                                 "        constraint_name\n"
+                                 " FROM\n"
+                                 "        sys.all_constraints cn\n"
+                                 " WHERE      table_name       = :nam<char[100]>\n"
+                                 "        AND owner            = :own<char[100]>\n"
+                                 "        AND constraint_type IN('R')\n"
+                                 " ORDER\n"
+                                 "    BY\n"
+                                 "       DECODE(\n"
+                                 "               constraint_type\n"
+                                 "              ,'R',1\n"
+                                 "             )\n"
+                                 "     , constraint_name",
+                                 QString::null,
+                                 "0703");
+
+static toSQL SQLTableTriggers("toOracleExtract:TableTriggers",
+                              "SELECT  trigger_name\n"
+                              "  FROM  sys.all_triggers\n"
+                              " WHERE      table_name = :nam<char[100]>\n"
+                              "        AND owner      = :own<char[100]>\n"
+                              " ORDER  BY  trigger_name",
+                              "Get triggers for a table, must have same columns and binds");
+
+static toSQL SQLIndexNames("toOracleExtract:IndexNames",
+                           "SELECT owner,index_name\n"
+                           "  FROM sys.all_indexes a\n"
+                           " WHERE table_name = :nam<char[100]>\n"
+                           "   AND table_owner = :own<char[100]>",
+                           "Get all indexes on table, same binds and columns");
+
+QString toOracleExtract::createTableFamily(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    QString ret = createTable(ext, schema, owner, name);
+
+    toQuery inf(CONNECTION, SQLTableType, name, owner);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "Couldn't find table %1.%2").arg(owner).arg(name);
+
+    inf.readValue();
+    QString iotType(inf.readValue());
+
+    toQList constraints = toQuery::readQueryNull(CONNECTION, SQLTableConstraints, name, owner);
+    toQList indexes = toQuery::readQueryNull(CONNECTION, SQLIndexNames, name, owner);
+
+    while (!indexes.empty())
+    {
+        QString indOwner(toShift(indexes));
+        QString indName(toShift(indexes));
+        bool add
+            = true;
+        if (iotType == "IOT")
+        {
+            for (toQList::iterator i = constraints.begin();i != constraints.end();i++)
+            {
+                QString consType = *i;
+                i++;
+                QString consName = *i;
+                i++;
+                if (consType == "P" && consName == indName && owner == indOwner)
+                {
+                    add
+                        = false;
+                    break;
+                }
+            }
+        }
+        if (add
+           )
+            ret += createIndex(ext, ext.intSchema(indOwner, false), indOwner, indName);
+    }
+
+    while (!constraints.empty())
+    {
+        QString type = toShift(constraints);
+        QString name = toShift(constraints);
+        QString search = toShift(constraints);
+        if ((type != "P" || iotType != "IOT") && !search.contains(" IS NOT NULL"))
+            ret += createConstraint(ext, schema, owner, name);
+    }
+
+    toQList triggers = toQuery::readQueryNull(CONNECTION, SQLTableTriggers, name, owner);
+    while (!triggers.empty())
+        ret += createTrigger(ext, schema, owner, toShift(triggers));
+    return ret;
+}
+
+void toOracleExtract::createTableContents(toExtract &ext,
+        QTextStream &stream,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    if (ext.getContents())
+    {
+        if (PROMPT)
+            stream << QString("PROMPT CONTENTS OF %1%2\n\n").arg(schema).arg(QUOTE(name));
+
+        toQuery query(CONNECTION, QString("SELECT * FROM %1.%2").arg(QUOTE(owner)).arg(QUOTE(name)));
+
+        toQDescList desc = query.describe();
+        int cols = query.columns();
+        bool first = true;
+        QString dateformat = toConfigurationSingle::Instance().globalConfig(CONF_DATE_FORMAT, DEFAULT_DATE_FORMAT);
+
+        QString beg = QString("INSERT INTO %1%2 (").arg(schema).arg(QUOTE(name));
+        bool *dates = new bool[desc.size()];
+        try
+        {
+            int num = 0;
+            for (toQDescList::iterator i = desc.begin();i != desc.end();i++)
+            {
+                if (first)
+                    first = false;
+                else
+                    beg += ",";
+                beg += (*i).Name;
+                dates[num] = (*i).Datatype.contains("DATE");
+                num++;
+            }
+            beg += ") VALUES (";
+
+            QRegExp find("'");
+
+            int row = 0;
+            int maxRow = ext.getCommitDistance();
+
+            while (!query.eof())
+            {
+                QString line = beg;
+                first = true;
+                for (int i = 0;i < cols;i++)
+                {
+                    if (first)
+                        first = false;
+                    else
+                        line += ",";
+                    QString val = query.readValueNull();
+                    if (dates[i])
+                    {
+                        if (val.isNull())
+                            line += "NULL";
+                        else
+                            line += QString("TO_DATE('%1','%2')").arg(val).arg(dateformat);
+                    }
+                    else
+                    {
+                        if (val.isNull())
+                            line += "NULL";
+                        else
+                        {
+                            val.replace(find, "''");
+                            line += "'";
+                            line += val;
+                            line += "'";
+                        }
+                    };
+                }
+                line += ");\n";
+                stream << line;
+
+                row++;
+                if (maxRow > 0 && row % maxRow == 0)
+                    stream << "COMMIT;\n";
+            }
+        }
+        catch (...)
+        {
+            delete[] dates;
+            throw;
+        }
+        delete[] dates;
+        stream << "COMMIT;\n\n";
+    }
+}
+
+QString toOracleExtract::createTableReferences(toExtract &ext,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    QString ret;
+    toQList constraints = toQuery::readQueryNull(CONNECTION, SQLTableReferences, name, owner);
+    while (!constraints.empty())
+        ret += createConstraint(ext, schema, owner, toShift(constraints));
+    return ret;
+}
+
+static toSQL SQLTablespaceInfo("toOracleExtract:TablespaceInfo",
+                               "SELECT  initial_extent\n"
+                               "      , next_extent\n"
+                               "      , min_extents\n"
+                               "      , DECODE(\n"
+                               "                max_extents\n"
+                               "               ,2147483645,'unlimited'\n"
+                               "               ,null,DECODE(\n"
+                               "                              :bs<char[100]>\n"
+                               "                            , 1,  57\n"
+                               "                            , 2, 121\n"
+                               "                            , 4, 249\n"
+                               "                            , 8, 505\n"
+                               "                            ,16,1017\n"
+                               "                            ,32,2041\n"
+                               "                            ,'\?\?\?'\n"
+                               "                           )\n"
+                               "               ,max_extents\n"
+                               "              )                       AS max_extents\n"
+                               "      , pct_increase\n"
+                               "      , min_extlen\n"
+                               "      , contents\n"
+                               "      , logging\n"
+                               "      , extent_management\n"
+                               "      , allocation_type\n"
+                               " FROM\n"
+                               "        sys.dba_tablespaces\n"
+                               " WHERE\n"
+                               "        tablespace_name = :nam<char[100]>",
+                               "Get tablespace information, must have same columns and binds",
+                               "0801");
+
+static toSQL SQLTablespaceInfo8("toOracleExtract:TablespaceInfo",
+                                "SELECT  initial_extent\n"
+                                "      , next_extent\n"
+                                "      , min_extents\n"
+                                "      , DECODE(\n"
+                                "                max_extents\n"
+                                "               ,2147483645,'unlimited'\n"
+                                "               ,null,DECODE(\n"
+                                "                             :bs<char[100]>\n"
+                                "                            , 1,  57\n"
+                                "                            , 2, 121\n"
+                                "                            , 4, 249\n"
+                                "                            , 8, 505\n"
+                                "                            ,16,1017\n"
+                                "                            ,32,2041\n"
+                                "                            ,'\?\?\?'\n"
+                                "                           )\n"
+                                "               ,max_extents\n"
+                                "              )                       AS max_extents\n"
+                                "      , pct_increase\n"
+                                "      , min_extlen\n"
+                                "      , contents\n"
+                                "      , DECODE(\n"
+                                "                logging \n"
+                                "               ,'NO','NOLOGGING'\n"
+                                "               ,     'LOGGING'\n"
+                                "              )                       AS logging\n"
+                                "      , 'N/A'                         AS extent_management\n"
+                                "      , 'N/A'                         AS allocation_type\n"
+                                " FROM\n"
+                                "        sys.dba_tablespaces\n"
+                                " WHERE\n"
+                                "        tablespace_name = :nam<char[100]>",
+                                "",
+                                "0800");
+
+static toSQL SQLTablespaceInfo7("toOracleExtract:TablespaceInfo",
+                                "SELECT  initial_extent\n"
+                                "      , next_extent\n"
+                                "      , min_extents\n"
+                                "      , DECODE(\n"
+                                "                max_extents\n"
+                                "               ,2147483645,'unlimited'\n"
+                                "               ,null,DECODE(\n"
+                                "                             $block_size\n"
+                                "                            , 1,  57\n"
+                                "                            , 2, 121\n"
+                                "                            , 4, 249\n"
+                                "                            , 8, 505\n"
+                                "                            ,16,1017\n"
+                                "                            ,32,2041\n"
+                                "                            ,'\?\?\?'\n"
+                                "                           )\n"
+                                "               ,max_extents\n"
+                                "              )                       AS max_extents\n"
+                                "      , pct_increase\n"
+                                "      , min_extlen\n"
+                                "      , contents\n"
+                                "      , DECODE(\n"
+                                "                logging \n"
+                                "               ,'NO','NOLOGGING'\n"
+                                "               ,     'LOGGING'\n"
+                                "              )                       AS logging\n"
+                                "      , 'N/A'                         AS extent_management\n"
+                                "      , 'N/A'                         AS allocation_type\n"
+                                " FROM\n"
+                                "        sys.dba_tablespaces\n"
+                                " WHERE\n"
+                                "        tablespace_name = :nam<char[100]>",
+                                "",
+                                "0700");
+
+static toSQL SQLDatafileInfo("toOracleExtract:DatafileInfo",
+                             "SELECT\n"
+                             "        file_name\n"
+                             "      , bytes\n"
+                             "      , autoextensible\n"
+                             "      , DECODE(\n"
+                             "                SIGN(2147483645 - maxbytes)\n"
+                             "               ,-1,'unlimited'\n"
+                             "               ,maxbytes\n"
+                             "              )                               AS maxbytes\n"
+                             "      , increment_by * :bs<char[100]> * 1024     AS increment_by\n"
+                             " FROM\n"
+                             "        (select bytes,autoextensible,blocks,increment_by,maxbytes,file_name,tablespace_name\n"
+			     "         from sys.dba_temp_files\n"
+			     "          union\n"
+			     "         select bytes,autoextensible,blocks,increment_by,maxbytes,file_name,tablespace_name\n"
+			     "         from sys.dba_data_files)\n"
+                             " WHERE\n"
+                             "        tablespace_name = :nam<char[100]>\n"
+                             " ORDER  BY file_name",
+                             "Get information about datafiles in a tablespace, "
+                             "same binds and columns",
+                             "0800");
+
+static toSQL SQLDatafileInfo7("toOracleExtract:DatafileInfo",
+                              "SELECT\n"
+                              "        file_name\n"
+                              "      , bytes\n"
+                              "      , 'N/A'                                 AS autoextensible\n"
+                              "      , 'N/A'                                 AS maxbytes\n"
+                              "      , DECODE(:bs<char[100]>,\n"
+                              "               NULL,'N/A','N/A')              AS increment_by\n"
+                              " FROM\n"
+                              "        sys.dba_data_files\n"
+                              " WHERE\n"
+                              "        tablespace_name = :nam<char[100]>\n"
+                              " ORDER  BY file_name",
+                              "",
+                              "0700");
+
+QString toOracleExtract::createTablespace(toExtract &ext,
+        const QString &,
+        const QString &,
+        const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLTablespaceInfo,
+                                          QString::number(ext.getBlockSize()),
+                                          name);
+
+    if (info.size() != 10)
+        throw qApp->translate("toOracleExtract", "Couldn't find tablespace %1").arg(name);
+
+    QString initial = toShift(info);
+    QString next = toShift(info);
+    QString minExtents = toShift(info);
+    QString maxExtents = toShift(info);
+    QString pctIncrease = toShift(info);
+    QString minExtlen = toShift(info);
+    QString contents = toShift(info);
+    QString logging = toShift(info);
+    QString extentManagement = toShift(info);
+    QString allocationType = toShift(info);
+
+    QString ret;
+    QString sql;
+
+    if (extentManagement == "LOCAL" && contents == "TEMPORARY")
+        sql = QString("CREATE TEMPORARY TABLESPACE %1\n").arg(QUOTE(name));
+    else
+        sql = QString("CREATE TABLESPACE %1\n").arg(QUOTE(name));
+
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n";
+    }
+    ret += sql;
+
+    toQList files = toQuery::readQueryNull(CONNECTION,
+                                           SQLDatafileInfo,
+                                           QString::number(ext.getBlockSize()),
+                                           name);
+    if (extentManagement == "LOCAL" && contents == "TEMPORARY")
+        ret += "TEMPFILE\n";
+    else
+        ret += "DATAFILE\n";
+    QString comma = "  ";
+    while (!files.empty())
+    {
+        QString fileName = toShift(files);
+        QString bytes = toShift(files);
+        QString autoExtensible = toShift(files);
+        QString maxBytes = toShift(files);
+        QString incrementBy = toShift(files);
+
+        ret += QString("%1 '%2' SIZE %3 REUSE\n").
+               arg(comma).
+               arg(prepareDB(fileName)).
+               arg(bytes);
+        if (CONNECTION.version() >= "0800" && ext.getStorage())
+        {
+            ret += "       AUTOEXTEND ";
+            if (autoExtensible == "YES")
+                ret += QString("ON NEXT %1 MAXSIZE %2\n").
+                       arg(incrementBy).
+                       arg(maxBytes);
+            else
+                ret += "OFF\n";
+        }
+        comma = " ,";
+    }
+
+    if (ext.getStorage())
+    {
+        if (extentManagement == "LOCAL")
+        {
+            ret += "EXTENT MANAGEMENT LOCAL ";
+            if (allocationType == "SYSTEM")
+                ret += "AUTOALLOCATE\n";
+            else
+                ret += QString("UNIFORM SIZE %1\n").arg(next);
+        }
+        else
+        {
+            ret += QString("DEFAULT STORAGE\n"
+                           "(\n"
+                           "  INITIAL        %1\n").arg(initial);
+            if (!next.isEmpty())
+                ret += QString("  NEXT           %1\n").arg(next);
+            ret += QString("  MINEXTENTS     %1\n"
+                           "  MAXEXTENTS     %2\n"
+                           "  PCTINCREASE    %3\n"
+                           ")\n").
+                   arg(minExtents).
+                   arg(maxExtents).
+                   arg(pctIncrease);
+            if (minExtlen.toInt() > 0)
+                ret += QString("MINIMUM EXTENT   %1\n").arg(minExtlen);
+            if (CONNECTION.version() >= "0801")
+                ret += "EXTENT MANAGEMENT DICTIONARY\n";
+        }
+        if (CONNECTION.version() >= "0800" && (contents != "TEMPORARY" || extentManagement != "LOCAL"))
+        {
+            ret += logging;
+            ret += "\n";
+        }
+    }
+    ret += ";\n\n";
+    return ret;
+}
+
+static toSQL SQLTriggerInfo("toOracleExtract:TriggerInfo",
+                            "SELECT  trigger_type\n"
+                            "      , RTRIM(triggering_event)\n"
+                            "      , table_owner\n"
+                            "      , table_name\n"
+                            "      , base_object_type\n"
+                            "      , referencing_names\n"
+                            "      , upper(description)\n"
+                            "      , when_clause\n"
+                            "      , trigger_body\n"
+                            "      , DECODE(status,'ENABLED','ENABLE','DISABLE')\n"
+                            " FROM\n"
+                            "        sys.all_triggers\n"
+                            " WHERE\n"
+                            "            trigger_name = :nam<char[100]>\n"
+                            "        AND owner        = :own<char[100]>",
+                            "Get information about triggers, must have same binds and columns",
+                            "0801");
+
+static toSQL SQLTriggerInfo8("toOracleExtract:TriggerInfo",
+                             "SELECT\n"
+                             "        trigger_type\n"
+                             "      , RTRIM(triggering_event)\n"
+                             "      , table_owner\n"
+                             "      , table_name\n"
+                             "      , 'TABLE'                           AS base_object_type\n"
+                             "      , referencing_names\n"
+                             "      , upper(description)\n"
+                             "      , when_clause\n"
+                             "      , trigger_body\n"
+                             "      , DECODE(status,'ENABLED','ENABLE','DISABLE')\n"
+                             " FROM\n"
+                             "        sys.all_triggers\n"
+                             " WHERE\n"
+                             "            trigger_name = :nam<char[100]>\n"
+                             "        AND owner        = :own<char[100]>",
+                             "",
+                             "0800");
+
+QString toOracleExtract::createTrigger(toExtract &ext,
+                                       const QString &schema,
+                                       const QString &owner,
+                                       const QString &name) const
+{
+    if (!ext.getCode())
+        return "";
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLTriggerInfo, name, owner);
+    if (result.size() != 10)
+        throw qApp->translate("toOracleExtract", "Couldn't find trigger %1.%2").arg(owner).arg(name);
+    QString triggerType = toShift(result);
+    QString event = toShift(result);
+    QString tableOwner = toShift(result);
+    QString table = toShift(result);
+    QString baseType = toShift(result);
+    QString refNames = toShift(result);
+    QString description = toShift(result);
+    QString when = toShift(result);
+    QString body = toShift(result);
+    QString status = toShift(result);
+
+    QString trgType;
+    if (triggerType.find("BEFORE") >= 0)
+        trgType = "BEFORE";
+    else if (triggerType.find("AFTER") >= 0)
+        trgType = "AFTER";
+    else if (triggerType.find("INSTEAD OF") >= 0)
+        trgType = "INSTEAD OF";
+
+
+    QString trgPart = trgType + " " + event;
+    QRegExp src("\\s" + trgPart + "\\s", false);
+    description.replace(QRegExp("\nON"), QString("\n ON"));
+    int pos = description.find(src);
+    //QString columns=description;
+    QString columns;
+    if (pos >= 0)
+    {
+        pos += trgPart.length() + 2;
+        int endPos = description.find(" ON ", pos, false);
+        if (endPos >= 0)
+        {
+            columns = description.right(description.length() - pos);
+            columns.truncate(endPos - pos);
+        }
+    }
+    QString schema2 = ext.intSchema(tableOwner, false);
+    QString object;
+    if (baseType == "TABLE")
+    {
+        object = schema2;
+        object += table;
+    }
+    else if (baseType == "SCHEMA")
+    {
+        object = schema;
+        object += "SCHEMA";
+    }
+    else
+    {
+        object = baseType;
+    }
+    QString sql = QString("CREATE OR REPLACE TRIGGER %1%2\n").arg(schema).arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n";
+    }
+    ret += sql;
+    ret += QString("%1 %2 %3 ON %4\n").arg(trgType).arg(event).arg(columns).arg(object);
+    if (baseType.find("TABLE") >= 0 || baseType.find("VIEW") >= 0)
+    {
+        ret += refNames;
+        ret += "\n";
+    }
+    if (triggerType.find("EACH ROW") >= 0)
+        ret += "FOR EACH ROW\n";
+    if (!when.isEmpty())
+    {
+        ret += "WHEN (";
+        ret += when;
+        ret += ")\n";
+    }
+    ret += body;
+    ret += "\n/\n\n";
+    if (status != "ENABLE")
+    {
+        ret += QString("ALTER TRIGGER %1%2 DISABLE;\n\n").arg(schema).arg(QUOTE(name));
+    }
+    return ret;
+}
+
+QString toOracleExtract::createType(toExtract &ext,
+                                    const QString &schema,
+                                    const QString &owner,
+                                    const QString &name) const
+{
+    return displaySource(ext, schema, owner, name, "TYPE", false);
+}
+
+static toSQL SQLUserInfo("toOracleExtract:UserInfo",
+                         "SELECT\n"
+                         "        DECODE(\n"
+                         "                password\n"
+                         "               ,'EXTERNAL','EXTERNALLY'\n"
+                         "               ,'BY VALUES ''' || password || ''''\n"
+                         "              )                         AS password\n"
+                         "      , profile\n"
+                         "      , default_tablespace\n"
+                         "      , temporary_tablespace\n"
+                         " FROM\n"
+                         "        sys.dba_users\n"
+                         " WHERE\n"
+                         "        username = :nam<char[100]>",
+                         "Information about authentication for a user, "
+                         "same binds and columns");
+
+static toSQL SQLUserQuotas("toOracleExtract:UserQuotas",
+                           "SELECT\n"
+                           "        DECODE(\n"
+                           "                max_bytes\n"
+                           "               ,-1,'unlimited'\n"
+                           "               ,TO_CHAR(max_bytes,'99999999')\n"
+                           "              )                         AS max_bytes\n"
+                           "      , tablespace_name\n"
+                           " FROM\n"
+                           "        sys.dba_ts_quotas\n"
+                           " WHERE\n"
+                           "        username = :nam<char[100]>\n"
+                           " ORDER  BY tablespace_name",
+                           "Get information about tablespaces for a user, "
+                           "same binds and columns");
+
+QString toOracleExtract::createUser(toExtract &ext,
+                                    const QString &,
+                                    const QString &,
+                                    const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLUserInfo,
+                                          name);
+
+    if (info.size() != 4)
+        throw qApp->translate("toOracleExtract", "Couldn't find user %1").arg(name);
+
+    QString password = toShift(info);
+    QString profile = toShift(info);
+    QString defaultTablespace = toShift(info);
+    QString temporaryTablespace = toShift(info);
+
+    QString ret;
+    QString nam;
+    if (ext.getSchema() != "1" && !ext.getSchema().isEmpty())
+        nam = ext.getSchema().lower();
+    else
+        nam = QUOTE(name);
+    if (PROMPT)
+        ret = QString("PROMPT CREATE USER %1\n\n").arg(nam);
+    ret += QString("CREATE USER %1 IDENTIFIED %2\n"
+                   "   PROFILE              %3\n"
+                   "   DEFAULT TABLESPACE   %4\n"
+                   "   TEMPORARY TABLESPACE %5\n").
+           arg(nam).
+           arg(password).
+           arg(QUOTE(profile)).
+           arg(QUOTE(defaultTablespace)).
+           arg(QUOTE(temporaryTablespace));
+
+    if (ext.getStorage())
+    {
+        toQList quota = toQuery::readQueryNull(CONNECTION, SQLUserQuotas, name);
+        while (!quota.empty())
+        {
+            QString siz = toShift(quota);
+            QString tab = toShift(quota);
+            ret += QString("   QUOTA %1 ON %2\n").
+                   arg(siz).
+                   arg(QUOTE(tab));
+        }
+    }
+    ret += ";\n\n";
+    ret += grantedPrivs(ext, nam, name, 3);
+    return ret;
+}
+
+static toSQL SQLViewSource("toOracleExtract:ViewSource",
+                           "SELECT  text\n"
+                           " FROM\n"
+                           "        sys.all_views\n"
+                           " WHERE\n"
+                           "            view_name = :nam<char[100]>\n"
+                           "        AND owner = :own<char[100]>",
+                           "Get the source of the view, must have same binds and columns");
+
+static toSQL SQLViewColumns("toOracleExtract:ViewColumns",
+                            "SELECT column_name\n"
+                            "  FROM sys.all_tab_columns\n"
+                            " WHERE table_name = :nam<char[100]>\n"
+                            "   AND owner      = :own<char[100]>\n"
+                            " ORDER BY column_id",
+                            "Get column names of the view, must have same binds and columns");
+
+QString toOracleExtract::createView(toExtract &ext,
+                                    const QString &schema,
+                                    const QString &owner,
+                                    const QString &name) const
+{
+    if (!ext.getCode())
+        return "";
+    toQList source = toQuery::readQueryNull(CONNECTION,
+                                            SQLViewSource,
+                                            name, owner);
+    if (source.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find view %1.%2").arg(QUOTE(owner)).arg(QUOTE(name));
+
+    QString text = toShift(source);
+    QString ret;
+    QString sql = QString("CREATE OR REPLACE VIEW %1%2\n").arg(schema).arg(QUOTE(name));
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n";
+    }
+    ret += sql;
+    toQList cols = toQuery::readQueryNull(CONNECTION,
+                                          SQLViewColumns,
+                                          name, owner);
+    ret += "(";
+    QString sep = "\n    ";
+    while (!cols.empty())
+    {
+        QString str = toShift(cols);
+        ret += sep;
+        ret += QUOTE(str);
+        sep = "\n  , ";
+    }
+    ret += "\n)\n";
+    ret += "AS\n";
+    ret += text;
+    ret += ";\n\n";
+    ret += createComments(ext, schema, owner, name);
+    return ret;
+}
+
+// Implementation describe functions
+
+void toOracleExtract::describeConstraint(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    if (ext.getConstraints())
+    {
+        toQuery inf(CONNECTION, SQLListConstraint, owner, name);
+        if (inf.eof())
+            throw qApp->translate("toOracleExtract", "Constraint %1.%2 doesn't exist").arg(owner).arg(name);
+        QString table(inf.readValue());
+        QString tchr(inf.readValue());
+        QString search(inf.readValue());
+        QString rOwner(inf.readValue());
+        QString rName(inf.readValue());
+        QString delRule(inf.readValue());
+        QString status(inf.readValue());
+        QString defferable(inf.readValue());
+        QString deffered(inf.readValue());
+
+        QString type =
+            (tchr == "P") ? "PRIMARY KEY" :
+            (tchr == "U") ? "UNIQUE" :
+            (tchr == "R") ? "FOREIGN KEY" :
+            "CHECK";
+
+        std::list<QString> ctx;
+        ctx.insert(ctx.end(), schema);
+        ctx.insert(ctx.end(), "TABLE");
+        ctx.insert(ctx.end(), QUOTE(table));
+        ctx.insert(ctx.end(), "CONSTRAINT");
+        ctx.insert(ctx.end(), QUOTE(name));
+
+        QString ret = type;
+        if (tchr == "C")
+        {
+            ret += " (";
+            ret += search;
+            ret += ")";
+        }
+        else
+        {
+            ret += " ";
+            ret += constraintColumns(ext, owner, name).simplifyWhiteSpace();
+
+            if (tchr == "R")
+            {
+                toQuery query(CONNECTION, SQLConstraintTable, rOwner, rName);
+                ret += " REFERENCES ";
+                ret += ext.intSchema(rOwner, false);
+                ret += QUOTE(query.readValue());
+                ret += constraintColumns(ext, rOwner, rName);
+
+                if (delRule == "CASCADE")
+                    ret += "ON DELETE CASCADE";
+            }
+        }
+        addDescription(lst, ctx, "DEFINITION", ret);
+
+        if (status.startsWith("ENABLE"))
+            status = "ENABLED";
+
+        if (CONNECTION.version() < "08")
+            ret = status;
+        else
+        {
+            addDescription(lst, ctx, "STATUS", defferable);
+            ret = "INITIALLY ";
+            ret += deffered;
+            addDescription(lst, ctx, "STATUS", ret);
+            ret = status;
+        }
+        addDescription(lst, ctx, "STATUS", ret);
+    }
+}
+
+void toOracleExtract::describeDBLink(toExtract &ext,
+                                     std::list<QString> &lst,
+                                     const QString &,
+                                     const QString &owner,
+                                     const QString &name) const
+{
+    toQuery inf(CONNECTION, SQLDBLink, owner, name);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "DBLink %1.%2 doesn't exist").arg(owner).arg(name);
+    QString user(inf.readValue());
+    QString password(inf.readValue());
+    QString host(inf.readValue());
+    QString publ = (owner == "PUBLIC") ? "PUBLIC" : "";
+    QString sql = QString("CREATE%1 DATABASE LINK %2").arg(publ).arg(QUOTE(name));
+    QString ret;
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), "DATABASE LINK");
+    ctx.insert(ctx.end(), QUOTE(name));
+
+    addDescription(lst, ctx, publ, QString("%1 IDENTIFIED BY %2 USING '%3'").
+                   arg(user.lower()).
+                   arg(password.lower()).
+                   arg(prepareDB(host)));
+}
+
+void toOracleExtract::describeExchangeIndex(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    QStringList str = QStringList::split(":", name);
+    if (str.count() != 2)
+        throw ("When calling createExchangeIndex name should contain :");
+    QString segment = str.first();
+    QString partition = str.last();
+
+    toQuery inf(CONNECTION, segments(ext, SQLPartitionSegmentType), segment, partition, owner);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "Exchange index %1.%2 doesn't exist").arg(owner).arg(name);
+    QString type = inf.readValue();
+    QString blocks = inf.readValue();
+
+    QString sql = toSQL::string(SQLExchangeIndex, CONNECTION).arg(type).arg(blocks);
+    toQList result = toQuery::readQueryNull(CONNECTION, sql, segment, partition, owner);
+    QString degree = toShift(result);
+    QString instances = toShift(result);
+    QString table = toShift(result);
+    QString unique = toShift(result);
+    QString bitmap = toShift(result);
+
+    toUnShift(result, toQValue(""));
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), schema);
+    ctx.insert(ctx.end(), "TABLE");
+    ctx.insert(ctx.end(), QUOTE(table));
+    ctx.insert(ctx.end(), "EXCHANGE INDEX");
+    ctx.insert(ctx.end(), segment);
+    ctx.insert(ctx.end(), partition);
+
+    describeIndexColumns(ext, lst, ctx, owner, segment);
+    addDescription(lst, ctx, QString("%1%2").arg(unique).arg(bitmap));
+    addDescription(lst, ctx, QString("%1%2").arg(segment).arg(table));
+    if (ext.getParallel())
+    {
+        addDescription(lst, ctx, "PARALLEL", "DEGREE", degree);
+        addDescription(lst, ctx, "PARALLEL", "INSTANCES", instances);
+    }
+    describeAttributes(ext, lst, ctx, result);
+}
+
+void toOracleExtract::describeExchangeTable(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    QStringList str = QStringList::split(":", name);
+    if (str.count() != 2)
+        throw ("When calling createExchangeTable name should contain :");
+    QString segment = str.first();
+    QString partition = str.last();
+
+    toQuery inf(CONNECTION, segments(ext, SQLPartitionSegmentType), segment, partition, owner);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "Exchange table %1.%2 doesn't exist").arg(owner).arg(name);
+    QString type = inf.readValue();
+    QString blocks = inf.readValue();
+
+    QString sql = toSQL::string(SQLExchangeTable, CONNECTION).arg(type).arg(blocks);
+    toQList result = toQuery::readQueryNull(CONNECTION, sql, segment, partition, owner);
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), schema);
+    ctx.insert(ctx.end(), "EXCHANGE TABLE");
+    ctx.insert(ctx.end(), segment);
+    ctx.insert(ctx.end(), partition);
+    describeTableText(ext, lst, ctx, result, schema, owner, segment);
+}
+
+void toOracleExtract::describeFunction(toExtract &ext,
+                                       std::list<QString> &lst,
+                                       const QString &schema,
+                                       const QString &owner,
+                                       const QString &name) const
+{
+    describeSource(ext, lst, schema, owner, name, "FUNCTION");
+}
+
+void toOracleExtract::describeIndex(toExtract &ext,
+                                    std::list<QString> &lst,
+                                    const QString &schema,
+                                    const QString &owner,
+                                    const QString &name) const
+{
+    if (!ext.getIndexes())
+        return ;
+
+    toQList res = toQuery::readQueryNull(CONNECTION, SQLIndexInfo, name, owner);
+    if (res.size() != 10)
+        throw qApp->translate("toOracleExtract", "Couldn't find index %1.%2").arg(owner).arg(name);
+
+    QString partitioned = toShift(res);
+    QString table = toShift(res);
+    QString tableOwner = toShift(res);
+    QString reverse = toShift(res);
+    QString unique = toShift(res);
+    QString bitmap = toShift(res);
+    QString domain = toShift(res);
+    QString domOwner = toShift(res);
+    QString domName = toShift(res);
+    QString domParam = toShift(res);
+
+    toQList storage = toQuery::readQueryNull(CONNECTION, segments(ext, SQLIndexSegment), name, owner);
+    QString degree = toShift(storage);
+    QString instances = toShift(storage);
+    QString compressed = toShift(storage);
+
+    QString schema2 = ext.intSchema(tableOwner, false);
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), schema);
+    ctx.insert(ctx.end(), QString("INDEX"));
+    ctx.insert(ctx.end(), QUOTE(name));
+    addDescription(lst, ctx, "ON", schema2 + QUOTE(table));
+    addDescription(lst, ctx, QString("%1%2 INDEX").arg(unique).arg(bitmap).mid(1));
+
+    addDescription(lst, ctx);
+    if (!reverse.isEmpty())
+        addDescription(lst, ctx, reverse);
+    describeIndexColumns(ext, lst, ctx, owner, name);
+    if (domain == "DOMAIN")
+    {
+        addDescription(lst, ctx, "DOMAIN", QString("INDEXTYPE IS DOMAINOWNER %1.%2").
+                       arg(QUOTE(domOwner)).
+                       arg(QUOTE(domName)));
+        addDescription(lst, ctx, "DOMAIN", QString("PARAMETERS %1").arg(domParam));
+        return ;
+    }
+    if (CONNECTION.version() >= "0800" && ext.getParallel())
+    {
+        addDescription(lst, ctx, "PARALLEL", QString("DEGREE %1").arg(degree));
+        addDescription(lst, ctx, "PARALLEL", QString("INSTANCES %1").arg(instances));
+    }
+    if (partitioned == "YES")
+    {
+        describePartitionedIndex(ext, lst, ctx, schema, owner, name);
+        return ;
+    }
+
+    toUnShift(storage, toQValue(""));
+    describeAttributes(ext, lst, ctx, storage);
+    if (!compressed.isEmpty() && compressed != "0" && ext.getStorage())
+        addDescription(lst, ctx, "COMPRESS", compressed);
+}
+
+void toOracleExtract::describeMaterializedView(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    describeMView(ext, lst, schema, owner, name, "MATERIALIZED VIEW");
+}
+
+void toOracleExtract::describeMaterializedViewLog(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    describeMViewLog(ext, lst, schema, owner, name, "MATERIALIZED VIEW LOG");
+}
+
+void toOracleExtract::describePackage(toExtract &ext,
+                                      std::list<QString> &lst,
+                                      const QString &schema,
+                                      const QString &owner,
+                                      const QString &name) const
+{
+    describeSource(ext, lst, schema, owner, name, "PACKAGE");
+}
+
+void toOracleExtract::describePackageBody(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    describeSource(ext, lst, schema, owner, name, "PACKAGE BODY");
+}
+
+void toOracleExtract::describeProcedure(toExtract &ext,
+                                        std::list<QString> &lst,
+                                        const QString &schema,
+                                        const QString &owner,
+                                        const QString &name) const
+{
+    describeSource(ext, lst, schema, owner, name, "PROCEDURE");
+}
+
+void toOracleExtract::describeProfile(toExtract &ext,
+                                      std::list<QString> &lst,
+                                      const QString &,
+                                      const QString &,
+                                      const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLProfileInfo,
+                                          name);
+    if (info.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find profile %1").arg(name);
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), "NONE");
+    ctx.insert(ctx.end(), "PROFILE");
+    ctx.insert(ctx.end(), QUOTE(name));
+    addDescription(lst, ctx);
+
+    while (!info.empty())
+    {
+        QString nam = toShift(info);
+        QString val = toShift(info);
+        addDescription(lst, ctx, nam, val);
+    }
+}
+
+void toOracleExtract::describeRole(toExtract &ext,
+                                   std::list<QString> &lst,
+                                   const QString &,
+                                   const QString &,
+                                   const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLRoleInfo,
+                                          name);
+    if (info.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find role %1").arg(name);
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), "NONE");
+    ctx.insert(ctx.end(), "ROLE");
+    ctx.insert(ctx.end(), QUOTE(name));
+    addDescription(lst, ctx);
+    addDescription(lst, ctx, "INFO", toShift(info));
+    describePrivs(ext, lst, ctx, name);
+}
+
+void toOracleExtract::describeRollbackSegment(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &,
+        const QString &,
+        const QString &name) const
+{
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLRollbackSegment, name);
+    QString isPublic = toShift(result);
+    QString tablespaceName = toShift(result);
+    QString initialExtent = toShift(result);
+    QString nextExtent = toShift(result);
+    QString minExtent = toShift(result);
+    QString maxExtent = toShift(result);
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), "NONE");
+    ctx.insert(ctx.end(), "ROLLBACK SEGMENT");
+    ctx.insert(ctx.end(), QUOTE(name));
+
+    addDescription(lst, ctx);
+    addDescription(lst, ctx, QString("TABLESPACE %1").arg(QUOTE(tablespaceName)));
+
+    if (ext.getStorage())
+    {
+        ctx.insert(ctx.end(), "STORAGE");
+        addDescription(lst, ctx, QString("INITIAL %1").arg(initialExtent));
+        if (!nextExtent.isEmpty())
+            addDescription(lst, ctx, QString("NEXT %1").arg(nextExtent));
+        addDescription(lst, ctx, QString("MINEXTENTS %1").arg(minExtent));
+        addDescription(lst, ctx, QString("MAXEXTENTS %1").arg(maxExtent));
+    }
+}
+
+void toOracleExtract::describeSequence(toExtract &ext,
+                                       std::list<QString> &lst,
+                                       const QString &schema,
+                                       const QString &owner,
+                                       const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLSequenceInfo,
+                                          name, owner);
+    if (info.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find sequence %1").arg(name);
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), schema);
+    ctx.insert(ctx.end(), "SEQUENCE");
+    ctx.insert(ctx.end(), QUOTE(name));
+
+    addDescription(lst, ctx);
+
+    while (!info.empty())
+        addDescription(lst, ctx, toShift(info));
+}
+
+void toOracleExtract::describeSnapshot(toExtract &ext,
+                                       std::list<QString> &lst,
+                                       const QString &schema,
+                                       const QString &owner,
+                                       const QString &name) const
+{
+    describeMView(ext, lst, schema, owner, name, "SNAPSHOT");
+}
+
+void toOracleExtract::describeSnapshotLog(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    describeMViewLog(ext, lst, schema, owner, name, "SNAPSHOT LOG");
+}
+
+void toOracleExtract::describeSynonym(toExtract &ext,
+                                      std::list<QString> &lst,
+                                      const QString &,
+                                      const QString &owner,
+                                      const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLSynonymInfo,
+                                          name, owner);
+    if (info.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find synonym %1.%2").arg(owner).arg(name);
+
+    QString tableOwner = toShift(info);
+    QString tableName = toShift(info);
+    QString dbLink = toShift(info);
+    if (dbLink == "NULL")
+        dbLink = "";
+    else
+        dbLink = "@" + QUOTE(dbLink);
+    QString tableSchema = ext.intSchema(tableOwner, true);
+
+    std::list<QString> ctx;
+
+    ctx.insert(ctx.end(), owner);
+    addDescription(lst, ctx, "SYNONYM", QString("%1%2%3").
+                   arg(tableSchema).arg(QUOTE(tableName)).arg(dbLink));
+}
+
+void toOracleExtract::describeTable(toExtract &ext,
+                                    std::list<QString> &lst,
+                                    const QString &schema,
+                                    const QString &owner,
+                                    const QString &name) const
+{
+    toQuery inf(CONNECTION, SQLTableType, name, owner);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "Couldn't find table %1.%2").arg(owner).arg(name);
+
+    QString partitioned(inf.readValue());
+    QString iot_type(inf.readValue());
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), schema);
+    ctx.insert(ctx.end(), "TABLE");
+    ctx.insert(ctx.end(), QUOTE(name));
+
+    if (iot_type == "IOT" && ext.getIndexes())
+    {
+        if (partitioned == "YES")
+            describePartitionedIOT(ext, lst, ctx, schema, owner, name);
+        else
+            describeIOT(ext, lst, ctx, schema, owner, name);
+        return ;
+    }
+    else if (partitioned == "YES")
+    {
+        describePartitionedTable(ext, lst, ctx, schema, owner, name);
+        return ;
+    }
+
+    toQList result = toQuery::readQueryNull(CONNECTION, segments(ext, SQLTableInfo), name, owner);
+    describeTableText(ext, lst, ctx, result, schema, owner, name);
+    describeComments(ext, lst, ctx, owner, name);
+}
+
+void toOracleExtract::describeTableFamily(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    describeTable(ext, lst, schema, owner, name);
+
+    toQList indexes = toQuery::readQueryNull(CONNECTION, SQLIndexNames, name, owner);
+    while (!indexes.empty())
+    {
+        QString indOwner(toShift(indexes));
+        describeIndex(ext, lst, ext.intSchema(indOwner, true), indOwner, toShift(indexes));
+    }
+
+    toQuery inf(CONNECTION, SQLTableType, name, owner);
+    if (inf.eof())
+        throw qApp->translate("toOracleExtract", "Couldn't find table %1.%2").arg(owner).arg(name);
+
+    inf.readValue();
+    QString iotType(inf.readValue());
+
+    toQList constraints = toQuery::readQueryNull(CONNECTION, SQLTableConstraints, name, owner);
+    while (!constraints.empty())
+    {
+        if (toShift(constraints) != "P" || iotType != "IOT")
+            describeConstraint(ext, lst, schema, owner, toShift(constraints));
+        else
+            toShift(constraints);
+        toShift(constraints);
+    }
+
+    toQList triggers = toQuery::readQueryNull(CONNECTION, SQLTableTriggers, name, owner);
+    while (!triggers.empty())
+        describeTrigger(ext, lst, schema, owner, toShift(triggers));
+}
+
+void toOracleExtract::describeTableReferences(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &schema,
+        const QString &owner,
+        const QString &name) const
+{
+    toQList constraints = toQuery::readQueryNull(CONNECTION, SQLTableReferences, name, owner);
+    while (!constraints.empty())
+        describeConstraint(ext, lst, schema, owner, toShift(constraints));
+}
+
+void toOracleExtract::describeTablespace(toExtract &ext,
+        std::list<QString> &lst,
+        const QString &,
+        const QString &,
+        const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLTablespaceInfo,
+                                          QString::number(ext.getBlockSize()),
+                                          name);
+
+    if (info.size() != 10)
+        throw qApp->translate("toOracleExtract", "Couldn't find tablespace %1").arg(name);
+
+    QString initial = toShift(info);
+    QString next = toShift(info);
+    QString minExtents = toShift(info);
+    QString maxExtents = toShift(info);
+    QString pctIncrease = toShift(info);
+    QString minExtlen = toShift(info);
+    QString contents = toShift(info);
+    QString logging = toShift(info);
+    QString extentManagement = toShift(info);
+    QString allocationType = toShift(info);
+
+    std::list<QString> ctx;
+
+    ctx.insert(ctx.end(), "NONE");
+    if (extentManagement == "LOCAL" && contents == "TEMPORARY")
+        ctx.insert(ctx.end(), "TEMPORARY TABLESPACE");
+    else
+        ctx.insert(ctx.end(), "TABLESPACE");
+    ctx.insert(ctx.end(), QUOTE(name));
+
+    addDescription(lst, ctx);
+
+    toQList files = toQuery::readQueryNull(CONNECTION,
+                                           SQLDatafileInfo,
+                                           QString::number(ext.getBlockSize()),
+                                           name);
+    while (!files.empty())
+    {
+        QString fileName = toShift(files);
+        QString bytes = toShift(files);
+        QString autoExtensible = toShift(files);
+        QString maxBytes = toShift(files);
+        QString incrementBy = toShift(files);
+
+        std::list<QString> cctx = ctx;
+        if (extentManagement == "LOCAL" && contents == "TEMPORARY")
+            cctx.insert(cctx.end(), "TEMPFILE");
+        else
+            cctx.insert(cctx.end(), "DATAFILE");
+        cctx.insert(cctx.end(), prepareDB(fileName));
+
+        addDescription(lst, cctx);
+        addDescription(lst, cctx, QString("SIZE %3").arg(bytes));
+
+        if (CONNECTION.version() >= "0800" && ext.getStorage())
+        {
+            QString ret = "AUTOEXTEND ";
+            if (autoExtensible == "YES")
+                ret += QString("ON NEXT %1 MAXSIZE %2\n").
+                       arg(incrementBy).
+                       arg(maxBytes);
+            else
+                ret += "OFF\n";
+            addDescription(lst, cctx, ret);
+        }
+    }
+
+    if (ext.getStorage())
+    {
+        if (extentManagement == "LOCAL")
+        {
+            QString ret = "EXTENT MANAGEMENT LOCAL ";
+            if (allocationType == "SYSTEM")
+                ret += "AUTOALLOCATE";
+            else
+                ret += QString("UNIFORM SIZE %1").arg(next);
+            addDescription(lst, ctx, ret);
+        }
+        else
+        {
+            addDescription(lst, ctx, "STORAGE", QString("INITIAL %1").arg(initial));
+            if (!next.isEmpty())
+                addDescription(lst, ctx, "STORAGE", QString("NEXT %1").arg(next));
+            addDescription(lst, ctx, "STORAGE", QString("MINEXTENTS %1").arg(minExtents));
+            addDescription(lst, ctx, "STORAGE", QString("MAXEXTENTS %1").arg(maxExtents));
+            addDescription(lst, ctx, "STORAGE", QString("PCTINCREASE %1").arg(pctIncrease));
+            addDescription(lst, ctx, QString("MINIMUM EXTENT %1").arg(minExtlen));
+            addDescription(lst, ctx, "EXTENT MANAGEMENT DICTIONARY");
+        }
+        if (CONNECTION.version() >= "0800" && (contents != "TEMPORARY" || extentManagement != "LOCAL"))
+            addDescription(lst, ctx, logging);
+    }
+}
+
+void toOracleExtract::describeTrigger(toExtract &ext,
+                                      std::list<QString> &lst,
+                                      const QString &schema,
+                                      const QString &owner,
+                                      const QString &name) const
+{
+    if (!ext.getCode())
+        return ;
+
+    toQList result = toQuery::readQueryNull(CONNECTION, SQLTriggerInfo, name, owner);
+    if (result.size() != 10)
+        throw qApp->translate("toOracleExtract", "Couldn't find trigger %1.%2").arg(owner).arg(name);
+    QString triggerType = toShift(result);
+    QString event = toShift(result);
+    QString tableOwner = toShift(result);
+    QString table = toShift(result);
+    QString baseType = toShift(result);
+    QString refNames = toShift(result);
+    QString description = toShift(result);
+    QString when = toShift(result);
+    QString body = toShift(result);
+    QString status = toShift(result);
+
+    QString trgType;
+    if (triggerType.find("BEFORE") >= 0)
+        trgType = "BEFORE";
+    else if (triggerType.find("AFTER") >= 0)
+        trgType = "AFTER";
+    else if (triggerType.find("INSTEAD OF") >= 0)
+        trgType = "INSTEAD OF";
+
+    QString src = trgType;
+    src += " ";
+    src += event;
+    description.replace(QRegExp("\nON"), QString("\n ON"));
+    int pos = description.find(src);
+    QString columns;
+    if (pos >= 0)
+    {
+        pos += src.length();
+        int endPos = description.find(" ON ", pos, false);
+        if (endPos >= 0)
+        {
+            columns = description.right(description.length() - pos);
+            columns.truncate(endPos - pos);
+        }
+    }
+    QString schema2 = ext.intSchema(tableOwner, true);
+    QString object;
+    if (baseType == "TABLE")
+    {
+        object = schema2;
+        if (!schema2.isEmpty())
+            object += ".";
+        object += table;
+    }
+    else if (baseType == "SCHEMA")
+    {
+        object = schema;
+        if (!schema.isEmpty())
+            object += ".";
+        object += "SCHEMA";
+    }
+    else
+    {
+        object = baseType;
+    }
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), schema);
+    ctx.insert(ctx.end(), "TRIGGER");
+    ctx.insert(ctx.end(), QUOTE(name));
+    addDescription(lst, ctx);
+    QString tmp = triggerType;
+    tmp += event;
+    tmp += columns;
+    addDescription(lst, ctx, tmp);
+    tmp = "ON ";
+    tmp += object;
+    if (!refNames.isEmpty())
+    {
+        tmp += " ";
+        tmp += refNames;
+    }
+    addDescription(lst, ctx, object);
+    if (!when.isEmpty())
+        addDescription(lst, ctx, when);
+    addDescription(lst, ctx, "BODY", body);
+    addDescription(lst, ctx, status);
+}
+
+void toOracleExtract::describeType(toExtract &ext,
+                                   std::list<QString> &lst,
+                                   const QString &schema,
+                                   const QString &owner,
+                                   const QString &name) const
+{
+    describeSource(ext, lst, schema, owner, name, "TYPE");
+}
+
+void toOracleExtract::describeUser(toExtract &ext,
+                                   std::list<QString> &lst,
+                                   const QString &,
+                                   const QString &,
+                                   const QString &name) const
+{
+    toQList info = toQuery::readQueryNull(CONNECTION,
+                                          SQLUserInfo,
+                                          name);
+
+    if (info.size() != 4)
+        throw qApp->translate("toOracleExtract", "Couldn't find user %1").arg(name);
+
+    QString password = toShift(info);
+    QString profile = toShift(info);
+    QString defaultTablespace = toShift(info);
+    QString temporaryTablespace = toShift(info);
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), "NONE");
+    ctx.insert(ctx.end(), "USER");
+    QString nam;
+    if (ext.getSchema() != "1" && !ext.getSchema().isEmpty())
+        nam = ext.getSchema().lower();
+    else
+        nam = QUOTE(name);
+    ctx.insert(ctx.end(), nam);
+
+    addDescription(lst, ctx);
+    addDescription(lst, ctx, QString("PROFILE %1").arg(QUOTE(profile)));
+    addDescription(lst, ctx, QString("DEFAULT TABLESPACE %1").arg(QUOTE(defaultTablespace)));
+    addDescription(lst, ctx, QString("TEMPORARY TABLESPACE %1").arg(QUOTE(temporaryTablespace)));
+
+    if (ext.getStorage())
+    {
+        toQList quota = toQuery::readQueryNull(CONNECTION, SQLUserQuotas, name);
+        while (!quota.empty())
+        {
+            QString siz = toShift(quota);
+            QString tab = toShift(quota);
+            addDescription(lst, ctx, "QUOTA", QString("%1 ON %2").
+                           arg(siz).
+                           arg(QUOTE(tab)));
+        }
+    }
+    describePrivs(ext, lst, ctx, name);
+}
+
+void toOracleExtract::describeView(toExtract &ext,
+                                   std::list<QString> &lst,
+                                   const QString &schema,
+                                   const QString &owner,
+                                   const QString &name) const
+{
+    if (!ext.getCode())
+        return ;
+    toQList source = toQuery::readQueryNull(CONNECTION,
+                                            SQLViewSource,
+                                            name, owner);
+    if (source.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find view %1.%2").arg(QUOTE(owner)).arg(QUOTE(name));
+
+    std::list<QString> ctx;
+    ctx.insert(ctx.end(), schema);
+    ctx.insert(ctx.end(), "VIEW");
+    ctx.insert(ctx.end(), QUOTE(name));
+
+    addDescription(lst, ctx);
+    QString text = toShift(source);
+    addDescription(lst, ctx, "AS", text);
+    describeComments(ext, lst, ctx, owner, name);
+
+    toQuery query(CONNECTION, "SELECT * FROM " + QUOTE(owner) + "." + QUOTE(name) + " WHERE NULL = NULL");
+
+    toQDescList desc = query.describe();
+    int num = 1;
+    for (toQDescList::iterator i = desc.begin();i != desc.end();i++)
+    {
+        addDescription(lst, ctx, "COLUMN", (*i).Name);
+        addDescription(lst, ctx, "COLUMN", (*i).Name, (*i).Datatype);
+        addDescription(lst, ctx, "COLUMN", (*i).Name, "ORDER", QString::number(num));
+        num++;
+    }
+}
+
+// Implementation drop functions
+
+QString toOracleExtract::dropConstraint(toExtract &ext,
+                                        const QString &schema,
+                                        const QString &owner,
+                                        const QString &,
+                                        const QString &name) const
+{
+    toQList tableName = toQuery::readQueryNull(CONNECTION,
+                        SQLConstraintTable,
+                        owner, name);
+    if (tableName.empty())
+        throw qApp->translate("toOracleExtract", "Couldn't find constraint %1.%2").
+        arg(QUOTE(owner)).arg(QUOTE(name));
+    QString sql = QString("ALTER TABLE %1%2 DROP CONSTRAINT %3").
+                  arg(schema).
+                  arg(QUOTE(toShift(tableName))).
+                  arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::dropDatabaseLink(toExtract &ext,
+        const QString &,
+        const QString &owner,
+        const QString &,
+        const QString &name) const
+{
+    QString sql = QString("DROP%1 DATABASE LINK %2").
+                  arg((owner == "PUBLIC") ? " PUBLIC" : "").
+                  arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::dropMViewLog(toExtract &ext,
+                                      const QString &schema,
+                                      const QString &,
+                                      const QString &type,
+                                      const QString &name) const
+{
+    QString sql = QString("DROP %1 ON %2%3").arg(type).arg(schema).arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+
+    return ret;
+}
+
+QString toOracleExtract::dropObject(toExtract &ext,
+                                    const QString &,
+                                    const QString &,
+                                    const QString &type,
+                                    const QString &name) const
+{
+    QString sql = QString("DROP %1 %2").arg(type).arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::dropProfile(toExtract &ext,
+                                     const QString &,
+                                     const QString &,
+                                     const QString &,
+                                     const QString &name) const
+{
+    QString sql = QString("DROP PROFILE %1 CASCADE").arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::dropSchemaObject(toExtract &ext,
+        const QString &schema,
+        const QString &,
+        const QString &type,
+        const QString &name) const
+{
+    QString sql = QString("DROP %1 %2%3").arg(type).arg(schema).arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::dropSynonym(toExtract &ext,
+                                     const QString &schema,
+                                     const QString &owner,
+                                     const QString &,
+                                     const QString &name) const
+{
+    QString sql = QString("DROP%1 SYNONYM %2%3").
+                  arg((owner == "PUBLIC") ? " PUBLIC" : "").
+                  arg((owner == "PUBLIC") ? schema : QString("")).
+                  arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::dropTable(toExtract &ext,
+                                   const QString &schema,
+                                   const QString &,
+                                   const QString &,
+                                   const QString &name) const
+{
+    QString sql = QString("DROP TABLE %1%2 CASCADE CONSTRAINTS").
+                  arg(schema).
+                  arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::dropTablespace(toExtract &ext,
+                                        const QString &,
+                                        const QString &,
+                                        const QString &,
+                                        const QString &name) const
+{
+    QString sql = QString("DROP TABLESPACE %1 INCLUDING CONTENTS CASCADE CONSTRAINTS").
+                  arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+    return ret;
+}
+
+QString toOracleExtract::dropUser(toExtract &ext,
+                                  const QString &,
+                                  const QString &,
+                                  const QString &,
+                                  const QString &name) const
+{
+    QString sql = QString("DROP USER %1 CASCADE").
+                  arg(QUOTE(name));
+    QString ret;
+    if (PROMPT)
+    {
+        ret = "PROMPT ";
+        ret += sql;
+        ret += "\n\n";
+    }
+    ret += sql;
+    ret += ";\n\n";
+    return ret;
+}
+
+// Internal utility migration functions
+
+static bool SameContext(const QString &str, const QString &str2)
+{
+    if (str.startsWith(str2))
+    {
+        if (str.length() == str2.length())
+            return true;
+        if (str.length() > str2.length() &&
+                str.at(str2.length()) == QChar('\001'))
+            return true;
+    }
+    return false;
+}
+
+static std::list<QString>::iterator FindItem(std::list<QString> &desc,
+        std::list<QString>::iterator i,
+        const QString &context,
+        int level = -1,
+        const QString &search = QString::null)
+{
+    if (search.isNull() || level < 0)
+    {
+        while (i != desc.end() && *i < context)
+            i++;
+        if (i == desc.end() || !SameContext(*i, context))
+            return desc.end();
+        return i;
+    }
+    else
+    {
+        while (i != desc.end())
+        {
+            if (!SameContext(*i, context) && !context.isEmpty())
+                return desc.end();
+            if (toExtract::partDescribe(*i, level) == search)
+                return i;
+            i++;
+        }
+        return desc.end();
+    }
+}
+
+QString toOracleExtract::migrateAttributes(std::list<QString> &desc,
+        std::list<QString>::iterator i,
+        int level,
+        const QString &indent) const
+{
+    QString after;
+    QString storage;
+    QString parallel;
+    QString ret;
+    QString partition;
+
+    QString context = toExtract::contextDescribe(*i, level);
+    if (context.isNull())
+        return QString::null;
+
+    while (i != desc.end())
+    {
+        if (!SameContext(*i, context))
+            break;
+        QString type = toExtract::partDescribe(*i, level);
+        QString par = toExtract::partDescribe(*i, level + 1);
+        if (type == "PARAMETER")
+        {
+            if (par.startsWith("TABLESPACE"))
+                after += indent + par + "\n";
+            else
+                ret += indent + par + "\n";
+        }
+        else if (type == "STORAGE")
+            storage += indent + "  " + par + "\n";
+        else if (type == "PARALLEL")
+            parallel += indent + "  " + par + "\n";
+        else if (type == "LOCAL PARTITION")
+        {
+            if (partition.isEmpty())
+            {
+                partition += indent + "LOCAL\n";
+                partition += migratePartitions(desc, i, level + 2, indent + "  ");
+            }
+        }
+        else if (type == "GLOBAL PARTITION COLUMNS" ||
+                 type.startsWith("PARTITION BY "))
+        {}
+        i++;
+    }
+
+    if (!parallel.isEmpty())
+        ret.prepend(indent + "PARALLEL\n" + indent + "(\n" + parallel + indent + ")\n");
+
+    if (!storage.isEmpty())
+        ret += indent + "STORAGE\n" + indent + "(\n" + storage + indent + ")\n";
+
+    ret += after;
+    return ret;
+}
+
+QString toOracleExtract::migrateIndexColumns(std::list<QString> &destin,
+        std::list<QString>::iterator i,
+        const QString &context) const
+{
+    std::map<int, QString> cols;
+    QString ret;
+    do
+    {
+        if (!SameContext(*i, context))
+            break;
+        QString col = toExtract::partDescribe(*i, 4);
+        QString ord = toExtract::partDescribe(*i, 5);
+        if (!col.isNull() && !col.isNull())
+            cols[ord.toInt()] = col;
+        i++;
+    }
+    while (i != destin.end());
+    ret += "(\n";
+    for (int j = 1;!cols[j].isNull();j++)
+    {
+        if (j == 1)
+            ret += "    ";
+        else
+            ret += "  , ";
+        ret += cols[j] + "\n";
+    }
+    ret += ")\n";
+    return ret;
+}
+
+QString toOracleExtract::migratePartitions(std::list<QString> &desc,
+        std::list<QString>::iterator &i,
+        int level,
+        const QString &indent) const
+{
+    QString ret;
+
+    QString context = toExtract::contextDescribe(*i, level);
+    if (context.isNull())
+        return QString::null;
+
+    while (i != desc.end())
+    {
+        if (!SameContext(*i, context))
+            break;
+        QString partition = toExtract::partDescribe(*i, level);
+        QString cc = toExtract::contextDescribe(*i, level + 1);
+        ret += indent + "PARTITION " + partition;
+        std::list<QString>::iterator t = FindItem(desc, i, cc, level + 1, "RANGE");
+        if (t != desc.end())
+            ret += toExtract::partDescribe(*t, level + 2);
+        ret += "\n";
+        ret += migrateAttributes(desc, i, level + 1, indent + "  ");
+        t = FindItem(desc, i, cc, level + 1, "HASH");
+
+        if (t != desc.end())
+        {
+            ret += indent + "  (\n";
+            QString ind = indent + "    ";
+            while (t != desc.end())
+            {
+                if (!SameContext(*t, cc))
+                {
+                    i = t;
+                    break;
+                }
+                if (toExtract::partDescribe(*t, level + 1) != "HASH")
+                    break;
+                ret += ind + toExtract::partDescribe(*t, level + 2);
+                ind = indent + "  , ";
+                t++;
+            }
+            ret += indent + "  )\n";
+        }
+
+        while (i != desc.end())
+        {
+            if (!SameContext(*i, cc))
+                break;
+            i++;
+        }
+    }
+    return ret;
+}
+
+QString toOracleExtract::migrateSource(toExtract &ext,
+                                       std::list<QString> &source,
+                                       std::list<QString> &destin,
+                                       const QString &sourcetype) const
+{
+    std::list<QString> drop;
+    std::list<QString> create;
+
+    QString ret;
+
+    toExtract::srcDst2DropCreate(source, destin, drop, create);
+
+    QString lastOwner;
+    QString lastName;
+
+    {
+        for (std::list<QString>::iterator i = drop.begin();i != drop.end();i++)
+        {
+            std::list<QString> ctx = toExtract::splitDescribe(*i);
+            QString owner = toShift(ctx);
+            QString type = toShift(ctx);
+            if (type != sourcetype)
+                continue;
+            QString name = toShift(ctx);
+
+            if (lastOwner != owner || name != lastName)
+            {
+                QString sql = "DROP " + sourcetype + " " + owner + "." + name;
+                if (PROMPT)
+                    ret += "PROMPT " + sql + "\n\n";
+                ret += sql + ";\n\n";
+                lastOwner = owner;
+                lastName = name;
+            }
+        }
+    }
+    lastOwner = lastName = QString::null;
+
+    for (std::list<QString>::iterator i = create.begin();i != create.end();i++)
+    {
+        std::list<QString> ctx = toExtract::splitDescribe(*i);
+
+        QString owner = toShift(ctx);
+        QString type = toShift(ctx);
+        if (type != sourcetype)
+            continue;
+        QString name = toShift(ctx);
+        QString source = toShift(ctx);
+
+        if (lastOwner != owner || name != lastName && !source.isEmpty())
+        {
+            QString sql = "CREATE " + sourcetype + " " + owner + "." + name;
+            if (PROMPT)
+                ret += "PROMPT " + sql + "\n\n";
+            ret += source + "\n\n";
+            lastOwner = owner;
+            lastName = name;
+        }
+    }
+
+    return ret;
+}
+
+QString toOracleExtract::migratePrivs(toExtract &ext,
+                                      std::list<QString> &source,
+                                      std::list<QString> &destin,
+                                      const QString &onlyGrantee) const
+{
+    std::list<QString> drop;
+    std::list<QString> create;
+
+    QString ret;
+
+    toExtract::srcDst2DropCreate(source, destin, drop, create);
+
+    {
+        for (std::list<QString>::iterator i = drop.begin();i != drop.end();i++)
+        {
+            std::list<QString> ctx = toExtract::splitDescribe(*i);
+            if (toShift(ctx) != "NONE")
+                continue;
+            QString grantee = toShift(ctx);
+            if (!onlyGrantee.isEmpty() && grantee != onlyGrantee)
+                continue;
+            QString priv = toShift(ctx);
+            QString admin = toShift(ctx);
+            if (priv.isEmpty())
+                continue;
+
+            if (admin == "ON")
+            {
+                QString object = toShift(ctx);
+                admin = toShift(ctx);
+                QString sql = "REVOKE " + priv + " ON " + object + " FROM " + grantee;
+                if (PROMPT)
+                    ret += sql + "\n\n";
+                ret += sql + ";\n\n";
+            }
+            else
+            {
+                QString sql = "REVOKE " + priv + " FROM " + grantee;
+                if (PROMPT)
+                    ret += sql + "\n\n";
+                ret += sql + ";\n\n";
+            }
+        }
+    }
+
+    for (std::list<QString>::iterator i = create.begin();i != create.end();i++)
+    {
+        std::list<QString> ctx = toExtract::splitDescribe(*i);
+        if (toShift(ctx) != "NONE")
+            continue;
+        QString grantee = toShift(ctx);
+        if (!onlyGrantee.isEmpty() && grantee != onlyGrantee)
+            continue;
+
+        QString priv = toShift(ctx);
+        QString admin = toShift(ctx);
+        if (priv.isEmpty())
+            continue;
+
+        if (admin == "ON")
+        {
+            QString object = toShift(ctx);
+            admin = toShift(ctx);
+            QString sql = "GRANT " + priv + " ON " + object + " TO " + grantee;
+            if (PROMPT)
+                ret += sql + "\n\n";
+            ret += sql + ";\n\n";
+        }
+        else
+        {
+            QString sql = "GRANT " + priv + " TO " + grantee;
+            if (PROMPT)
+                ret += sql + "\n\n";
+            ret += sql + ";\n\n";
+        }
+    }
+
+    return ret;
+}
+
+// Implementation of migration functions
+
+QString toOracleExtract::migrateConstraint(toExtract &ext,
+        std::list<QString> &source,
+        std::list<QString> &destin) const
+{
+    QString lastSchema;
+    QString lastTable;
+    QString lastName;
+    QString lastType;
+    QString sql;
+
+    std::list<QString> drop;
+    std::list<QString> create;
+
+    toExtract::srcDst2DropCreate(source, destin, drop, create);
+
+    {
+        for (std::list<QString>::iterator i = drop.begin();i != drop.end();i++)
+        {
+            std::list<QString> ctx = toExtract::splitDescribe(*i);
+            QString schema = toShift(ctx);
+            QString table = toShift(ctx);
+            if (toShift(ctx) != "TABLE")
+                continue;
+            QString name = toShift(ctx);
+            if (toShift(ctx) != "CONSTRAINT")
+                continue;
+            QString type = toShift(ctx);
+            QString extra = toShift(ctx);
+            if ((schema != lastSchema ||
+                    table != lastTable ||
+                    name != lastName ||
+                    type != lastType) &&
+                    extra.isEmpty())
+            {
+                if (PROMPT)
+                    sql += QString("PROMPT ALTER TABLE %1%2 DROP CONSTRAINT %3\n\n").
+                           arg(schema).arg(table).arg(name);
+                sql += QString("ALTER TABLE %1%2 DROP CONSTRAINT %3;\n\n").
+                       arg(schema).arg(table).arg(name);
+                lastSchema = schema;
+                lastTable = table;
+                lastName = name;
+                lastType = type;
+            }
+        }
+    }
+
+    lastSchema = lastTable = lastName = lastType = QString::null;
+
+    for (std::list<QString>::iterator i = create.begin();i != create.end();i++)
+    {
+        std::list<QString> ctx = toExtract::splitDescribe(*i);
+        QString schema = toShift(ctx);
+        QString table = toShift(ctx);
+        if (toShift(ctx) != "TABLE")
+            continue;
+        QString name = toShift(ctx);
+        if (toShift(ctx) != "CONSTRAINT")
+            continue;
+        QString type = toShift(ctx);
+        if (toShift(ctx) != "DEFINITION")
+            continue;
+        QString extra = toShift(ctx);
+        if (schema == lastSchema &&
+                table == lastTable &&
+                name == lastName &&
+                type == lastType)
+        {
+            sql += " " + extra;
+        }
+        else if (extra.isEmpty())
+        {
+            if (!sql.isEmpty())
+                sql += ";\n\n";
+            if (PROMPT)
+                sql += QString("PROMPT ALTER TABLE %1%2 ADD CONSTRAINT %3\n\n").
+                       arg(schema).arg(table).arg(name);
+            sql += QString("ALTER TABLE %1%2 ADD CONSTRAINT %3 %4").
+                   arg(schema).arg(table).arg(name).arg(type);
+            lastSchema = schema;
+            lastTable = table;
+            lastName = name;
+            lastType = type;
+        }
+        else
+        {
+            if (PROMPT)
+                sql += QString("PROMPT ALTER TABLE %1%2 MODIFY CONSTRAINT %3\n\n").
+                       arg(schema).arg(table).arg(name);
+            sql += QString("ALTER TABLE %1%2 MODIFY CONSTRAINT %3 %4\n\n").
+                   arg(schema).arg(table).arg(name).arg(extra);
+        }
+    }
+    if (!sql.isEmpty())
+        sql += ";\n\n";
+
+    return sql;
+}
+
+QString toOracleExtract::migrateDBLink(toExtract &ext,
+                                       std::list<QString> &source,
+                                       std::list<QString> &destin) const
+{
+    std::list<QString> drop;
+    std::list<QString> create;
+
+    toExtract::srcDst2DropCreate(source, destin, drop, create);
+
+    QString ret;
+
+    {
+        for (std::list<QString>::iterator i = drop.begin();i != drop.end();i++)
+        {
+            std::list<QString> ctx = toExtract::splitDescribe(*i);
+            QString owner = toShift(ctx);
+            if (toShift(ctx) != "DATABASE LINK")
+                continue;
+            QString sql;
+            if (owner == "PUBLIC")
+                sql = "DROP PUBLIC DATABASE LINK ";
+            else
+                sql = "DROP DATABASE LINK";
+            sql += toShift(ctx);
+            if (PROMPT)
+                ret += "PROMPT " + sql + "\n\n";
+            ret += sql;
+            ret += ";\n\n";
+        }
+    }
+    for (std::list<QString>::iterator i = create.begin();i != create.end();i++)
+    {
+        std::list<QString> ctx = toExtract::splitDescribe(*i);
+        QString owner = toShift(ctx);
+        if (toShift(ctx) != "DATABASE LINK")
+            continue;
+        QString sql;
+        if (owner == "PUBLIC")
+            sql = "CREATE PUBLIC DATABASE LINK ";
+        else
+            sql = "CREATE DATABASE LINK";
+        sql += toShift(ctx);
+        if (PROMPT)
+            ret += "PROMPT " + sql + "\n\n";
+        ret += sql;
+        ret += toShift(ctx);
+        ret += ";\n\n";
+    }
+    return ret;
+}
+
+QString toOracleExtract::migrateFunction(toExtract &ext,
+        std::list<QString> &source,
+        std::list<QString> &destin) const
+{
+    return migrateSource(ext, source, destin, "FUNCTION");
+}
+
+QString toOracleExtract::migrateIndex(toExtract &ext,
+                                      std::list<QString> &source,
+                                      std::list<QString> &destin) const
+{
+    std::list<QString> drop;
+    std::list<QString> create;
+
+    QString ret;
+
+    toExtract::srcDst2DropCreate(source, destin, drop, create);
+    QString lastOwner;
+    QString lastName;
+
+    {
+        for (std::list<QString>::iterator i = drop.begin();i != drop.end();i++)
+        {
+            std::list<QString> ctx = toExtract::splitDescribe(*i);
+            QString owner = toShift(ctx);
+            QString type = toShift(ctx);
+            if (type != "INDEX" && type != "UNIQUE INDEX" && type != "BITMAP INDEX")
+                continue;
+            QString name = toShift(ctx);
+
+            if (lastOwner != owner || name != lastName)
+            {
+                QString sql = "DROP INDEX " + owner + "." + name;
+                if (PROMPT)
+                    ret += "PROMPT " + sql + "\n\n";
+                ret += sql + ";\n\n";
+                lastOwner = owner;
+                lastName = name;
+            }
+        }
+    }
+    lastOwner = lastName = QString::null;
+
+    std::list<QString>::iterator j = destin.begin();
+    for (std::list<QString>::iterator i = create.begin();i != create.end();i++)
+    {
+        std::list<QString> ctx = toExtract::splitDescribe(*i);
+
+        QString owner = toShift(ctx);
+        QString type = toShift(ctx);
+        if (type != "INDEX" && type != "UNIQUE INDEX" && type != "BITMAP INDEX")
+            continue;
+        QString name = toShift(ctx);
+
+        if (lastOwner != owner || name != lastName)
+        {
+            QString context = toExtract::contextDescribe(*i, 3);
+            j = FindItem(destin, j, context);
+            if (j != destin.end())
+            {
+                std::list<QString>::iterator k = FindItem(destin, j, context, 3, "ON");
+                if (k == destin.end())
+                    throw qApp->translate("toOracleExtract", "Missing ON description item on index");
+                QString on = toExtract::partDescribe(*k, 4);
+                QString sql = "CREATE " + type + " " + owner + "." + name + " ON " + on;
+                if (PROMPT)
+                    ret += "PROMPT " + sql + "\n\n";
+                ret += sql + "\n";
+                k = FindItem(destin, j, context, 3, "COLUMN");
+                if (k == destin.end())
+                    throw qApp->translate("toOracleExtract", "Couldn't find any COLUMN on index");
+                ret += migrateIndexColumns(destin, k, toExtract::contextDescribe(*k, 4));
+                k = FindItem(destin, j, context, 3, "DOMAIN");
+                if (k != destin.end())
+                {
+                    while (k != destin.end() && toExtract::partDescribe(*k, 3) == "DOMAIN")
+                    {
+                        ret += "\n" + toExtract::partDescribe(*k, 4);
+                        k++;
+                    }
+                    ret += ";\n";
+                    break;
+                }
+                else
+                    ret += "\n";
+                k = FindItem(destin, j, context, 3, "COMPRESS");
+                if (k != destin.end())
+                    ret += "COMPRESS " + toExtract::partDescribe(*k, 4) + "\n";
+                ret += migrateAttributes(destin, j, 3, "");
+                k = FindItem(destin, j, context, 3, "REVERSE");
+                if (k != destin.end())
+                    ret += "REVERSE\n";
+                ret + ";\n\n";
+            }
+            lastOwner = owner;
+            lastName = name;
+        }
+    }
+
+    return ret;
+}
+
+QString toOracleExtract::migratePackage(toExtract &ext,
+                                        std::list<QString> &source,
+                                        std::list<QString> &destin) const
+{
+    return migrateSource(ext, source, destin, "PACKAGE");
+}
+
+QString toOracleExtract::migratePackageBody(toExtract &ext,
+        std::list<QString> &source,
+        std::list<QString> &destin) const
+{
+    return migrateSource(ext, source, destin, "PACKAGE BODY");
+}
+
+QString toOracleExtract::migrateProcedure(toExtract &ext,
+        std::list<QString> &source,
+        std::list<QString> &destin) const
+{
+    return migrateSource(ext, source, destin, "PROCEDURE");
+}
+
+QString toOracleExtract::migrateRole(toExtract &ext,
+                                     std::list<QString> &source,
+                                     std::list<QString> &destin) const
+{
+    std::list<QString> drop;
+    std::list<QString> create;
+
+    toExtract::srcDst2DropCreate(source, destin, drop, create);
+
+    std::list<QString> privs;
+
+    QString ret;
+    QString lrole;
+
+    {
+        bool dropped = false;
+        for (std::list<QString>::iterator i = drop.begin();i != drop.end();i++)
+        {
+            std::list<QString> ctx = toExtract::splitDescribe(*i);
+            QString owner = toShift(ctx);
+            if (toShift(ctx) != "ROLE")
+                continue;
+            QString role = toShift(ctx);
+            if (role != lrole)
+                dropped = false;
+            if ( ctx.empty() )
+            {
+                QString sql = "DROP ROLE " + QUOTE(role) + ";";
+                if (PROMPT)
+                    ret += "PROMPT " + sql + "\n\n";
+                ret += sql + ";\n\n";
+                dropped = true;
+            }
+            else if (!dropped)
+            {
+                if (toShift(ctx) != "GRANT")
+                    continue;
+                QString type = toShift(ctx);
+                QString on = toShift(ctx);
+                QString what = toShift(ctx);
+                QString sql = QString("REVOKE %1").arg(QUOTE(type));
+                if (!on.isEmpty())
+                    sql += QUOTE(on);
+                if (!what.isEmpty())
+                {
+                    if (what == "ON")
+                        sql += "FROM";
+                    else
+                        sql += QUOTE(what);
+                }
+                if (PROMPT)
+                    ret += "PROMPT " + sql + "\n\n";
+                ret += sql + ";\n\n";
+            }
+            lrole = role;
+        }
+    }
+    lrole = QString::null;
+
+    for (std::list<QString>::iterator i = create.begin();i != create.end();i++)
+    {
+        std::list<QString> ctx = toExtract::splitDescribe(*i);
+        QString owner = toShift(ctx);
+        if (toShift(ctx) != "ROLE")
+            continue;
+        QString role = toShift(ctx);
+        if ( ctx.empty() )
+            continue;
+        else
+        {
+            QString extra = toShift(ctx);
+            if (extra == "INFO")
+            {
+                QString sql = "CREATE ROLE " + QUOTE(role) + ";";
+                if (PROMPT)
+                    ret += "PROMPT " + sql + "\n\n";
+                ret += sql + QString("%1;\n\n").arg(toShift(ctx));
+            }
+            else if (extra == "GRANT")
+            {
+                QString type = toShift(ctx);
+                QString on = toShift(ctx);
+                QString what = toShift(ctx);
+                QString sql = QString("GRANT %1").arg(QUOTE(type));
+                if (!on.isEmpty())
+                    sql += QUOTE(on);
+                if (!what.isEmpty())
+                    sql += QUOTE(what);
+                if (PROMPT)
+                    ret += "PROMPT " + sql + "\n\n";
+                ret += sql + ";\n\n";
+            }
+        }
+        lrole = role;
+    }
+    return ret;
+}
+
+QString toOracleExtract::migrateSequence(toExtract &ext,
+        std::list<QString> &source,
+        std::list<QString> &destin) const
+{
+    QString ret;
+
+    std::list<QString> drop;
+    std::list<QString> create;
+
+    toExtract::srcDst2DropCreate(source, destin, drop, create);
+    {
+        for (std::list<QString>::iterator i = drop.begin();i != drop.end();i++)
+        {
+            std::list<QString> ctx = toExtract::splitDescribe(*i);
+            QString owner = toShift(ctx);
+            if (toShift(ctx) != "SEQUENCE")
+                continue;
+            QString sequence = toShift(ctx);
+            if ( ctx.empty() )
+            {
+                QString sql = QString("DROP SEQUENCE %1.%2").arg(QUOTE(owner)).arg(QUOTE(sequence));
+                if (PROMPT)
+                    ret += "PROMPT " + sql + "\n\n";
+                ret += sql + ";\n\n";
+            }
+        }
+    }
+    bool created = false;
+    QString lastOwner;
+    QString lastSequence;
+    QString sql;
+    QString prompt;
+    for (std::list<QString>::iterator i = create.begin();i != create.end();i++)
+    {
+        std::list<QString> ctx = toExtract::splitDescribe(*i);
+        QString owner = toShift(ctx);
+        if (toShift(ctx) != "SEQUENCE")
+            continue;
+        QString sequence = toShift(ctx);
+        if (lastSequence != sequence || lastOwner != owner)
+        {
+            if (created)
+            {
+                prompt = QString("CREATE SEQUENCE %1.%2").arg(lastOwner).arg(lastSequence);
+                sql.prepend(prompt);
+            }
+            else
+            {
+                prompt = QString("ALTER SEQUENCE %1.%2").arg(lastOwner).arg(lastSequence);
+                sql.prepend(prompt);
+            }
+            if (PROMPT)
+                ret += prompt + "\n\n";
+            ret += sql + ";\n\n";
+
+            prompt = sql =
+                         created = false;
+        }
+        if ( ctx.empty() )
+            created = true;
+        else
+            sql += " " + toShift(ctx);
+
+        lastOwner = owner;
+        lastSequence = sequence;
+    }
+
+    if (created)
+    {
+        prompt = QString("CREATE SEQUENCE %1.%2").arg(lastOwner).arg(lastSequence);
+        sql.prepend(prompt);
+    }
+    else
+    {
+        prompt = QString("ALTER SEQUENCE %1.%2").arg(lastOwner).arg(lastSequence);
+        sql.prepend(prompt);
+    }
+    if (PROMPT)
+        ret += prompt + "\n\n";
+    ret += sql + ";\n\n";
+    return ret;
+}
+
+// Implementation public interface
+
+toOracleExtract::toOracleExtract()
+{
+    // Supports Oracle
+    registerExtract(ORACLE_NAME,
+                    QString::null,
+                    QString::null);
+
+    // Register creates
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "CONSTRAINT");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "DATABASE LINK");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "EXCHANGE INDEX");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "EXCHANGE TABLE");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "FUNCTION");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "INDEX");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "MATERIALIZED VIEW");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "MATERIALIZED VIEW LOG");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "PACKAGE");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "PACKAGE BODY");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "PROCEDURE");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "PROFILE");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "ROLE");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "ROLE GRANTS");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "ROLLBACK SEGMENT");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "SEQUENCE");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "SNAPSHOT");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "SNAPSHOT LOG");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "SYNONYM");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "TABLE");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "TABLE FAMILY");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "TABLE CONTENTS");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "TABLE REFERENCES");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "TABLESPACE");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "TRIGGER");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "TYPE");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "USER");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "USER GRANTS");
+    registerExtract(ORACLE_NAME,
+                    "CREATE",
+                    "VIEW");
+
+    // Register describes
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "CONSTRAINT");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "DATABASE LINK");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "EXCHANGE INDEX");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "EXCHANGE TABLE");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "FUNCTION");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "INDEX");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "MATERIALIZED VIEW");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "MATERIALIZED VIEW LOG");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "PACKAGE");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "PACKAGE BODY");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "PROCEDURE");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "PROFILE");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "ROLE");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "ROLE GRANTS");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "ROLLBACK SEGMENT");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "SEQUENCE");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "SNAPSHOT");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "SNAPSHOT LOG");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "SYNONYM");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "TABLE");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "TABLE FAMILY");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "TABLE CONTENTS");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "TABLE REFERENCES");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "TABLESPACE");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "TRIGGER");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "TYPE");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "USER");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "USER GRANTS");
+    registerExtract(ORACLE_NAME,
+                    "DESCRIBE",
+                    "VIEW");
+
+    // Register drops
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "CONSTRAINT");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "DATABASE LINK");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "DIMENSION");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "DIRECTORY");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "FUNCTION");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "INDEX");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "MATERIALIZED VIEW");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "MATERIALIZED VIEW LOG");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "PACKAGE");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "PROCEDURE");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "PROFILE");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "ROLE");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "ROLLBACK SEGMENT");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "SEQUENCE");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "SNAPSHOT");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "SNAPSHOT LOG");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "SYNONYM");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "TABLE");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "TABLESPACE");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "TRIGGER");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "TYPE");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "USER");
+    registerExtract(ORACLE_NAME,
+                    "DROP",
+                    "VIEW");
+}
+
+toOracleExtract::~toOracleExtract()
+{
+    // Supports Oracle
+    unregisterExtract(ORACLE_NAME,
+                      QString::null,
+                      QString::null);
+
+    // Unregister creates
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "CONSTRAINT");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "DATABASE LINK");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "EXCHANGE INDEX");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "EXCHANGE TABLE");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "FUNCTION");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "INDEX");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "MATERIALIZED VIEW");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "MATERIALIZED VIEW LOG");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "PACKAGE");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "PACKAGE BODY");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "PROCEDURE");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "PROFILE");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "ROLE");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "ROLE GRANTS");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "ROLLBACK SEGMENT");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "SEQUENCE");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "SNAPSHOT");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "SNAPSHOT LOG");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "SYNONYM");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "TABLE");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "TABLE FAMILY");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "TABLE CONTENTS");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "TABLE REFERENCES");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "TABLESPACE");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "TRIGGER");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "TYPE");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "USER");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "USER GRANTS");
+    unregisterExtract(ORACLE_NAME,
+                      "CREATE",
+                      "VIEW");
+
+    // Unregister describes
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "CONSTRAINT");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "DATABASE LINK");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "EXCHANGE INDEX");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "EXCHANGE TABLE");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "FUNCTION");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "INDEX");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "MATERIALIZED VIEW");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "MATERIALIZED VIEW LOG");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "PACKAGE");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "PACKAGE BODY");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "PROCEDURE");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "PROFILE");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "ROLE");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "ROLE GRANTS");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "ROLLBACK SEGMENT");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "SEQUENCE");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "SNAPSHOT");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "SNAPSHOT LOG");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "SYNONYM");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "TABLE");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "TABLE FAMILY");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "TABLE CONTENTS");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "TABLE REFERENCES");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "TABLESPACE");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "TRIGGER");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "TYPE");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "USER");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "USER GRANTS");
+    unregisterExtract(ORACLE_NAME,
+                      "DESCRIBE",
+                      "VIEW");
+
+    // Unregister drops
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "CONSTRAINT");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "DATABASE LINK");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "DIMENSION");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "DIRECTORY");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "FUNCTION");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "INDEX");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "MATERIALIZED VIEW");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "MATERIALIZED VIEW LOG");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "PACKAGE");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "PROCEDURE");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "PROFILE");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "ROLE");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "ROLLBACK SEGMENT");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "SEQUENCE");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "SNAPSHOT");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "SNAPSHOT LOG");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "SYNONYM");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "TABLE");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "TABLESPACE");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "TRIGGER");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "TYPE");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "USER");
+    unregisterExtract(ORACLE_NAME,
+                      "DROP",
+                      "VIEW");
+}
+
+static toSQL SQLSetSizing("toOracleExtract:SetSizing",
+                          "SELECT value FROM v$parameter WHERE name = 'db_block_size'",
+                          "Get information about block sizes from alloced space, same columns");
+
+static toSQL SQLSetSizingFallback("toOracleExtract:SetSizingFallback",
+                                  "SELECT bytes/blocks/1024   AS block_size\n"
+                                  "  FROM user_free_space\n"
+                                  " WHERE bytes  IS NOT NULL\n"
+                                  "   AND blocks IS NOT NULL\n"
+                                  "   AND ROWNUM < 2",
+                                  "Get information about block sizes, same columns");
+
+static toSQL SQLSetSizingFallback2("toOracleExtract:SetSizingFallback2",
+                                   "SELECT bytes/blocks/1024   AS block_size\n"
+                                   "  FROM user_segments\n"
+                                   " WHERE bytes  IS NOT NULL\n"
+                                   "   AND blocks IS NOT NULL\n"
+                                   "   AND ROWNUM < 2",
+                                   "Get information about block sizes, same columns");
+
+void toOracleExtract::initialize(toExtract &ext) const
+{
+    QString DbaSegments;
+    try
+    {
+        toQuery(CONNECTION, "select * from sys.dba_segments where null=null");
+        DbaSegments = "sys.dba_segments";
+    }
+    catch (...)
+    {
+        DbaSegments = QString("(select '%1' owner,user_segments.* from sys.user_segments)").
+                      arg(CONNECTION.user().upper());
+    }
+    ext.setState("Segments", DbaSegments);
+
+    try
+    {
+        toQList ret = toQuery::readQueryNull(CONNECTION, SQLSetSizing);
+        ext.setBlockSize(toShift(ret).toInt());
+    }
+    catch (...)
+    {
+        toQList ret = toQuery::readQueryNull(CONNECTION, SQLSetSizingFallback);
+        if (ret.empty())
+            ret = toQuery::readQueryNull(CONNECTION, SQLSetSizingFallback2);
+        ext.setBlockSize(toShift(ret).toInt());
+    }
+}
+
+void toOracleExtract::create(toExtract &ext,
+                             QTextStream &stream,
+                             const QString &type,
+                             const QString &schema,
+                             const QString &owner,
+                             const QString &name) const
+{
+    clearFlags(ext);
+
+    if (type == "CONSTRAINT")
+        stream << createConstraint(ext, schema, owner, name);
+    else if (type == "DATABASE LINK")
+        stream << createDBLink(ext, schema, owner, name);
+    else if (type == "EXCHANGE INDEX")
+        stream << createExchangeIndex(ext, schema, owner, name);
+    else if (type == "EXCHANGE TABLE")
+        stream << createExchangeTable(ext, schema, owner, name);
+    else if (type == "FUNCTION")
+        stream << createFunction(ext, schema, owner, name);
+    else if (type == "INDEX")
+        stream << createIndex(ext, schema, owner, name);
+    else if (type == "MATERIALIZED VIEW")
+        stream << createMaterializedView(ext, schema, owner, name);
+    else if (type == "MATERIALIZED VIEW LOG")
+        stream << createMaterializedViewLog(ext, schema, owner, name);
+    else if (type == "PACKAGE")
+        stream << createPackage(ext, schema, owner, name);
+    else if (type == "PACKAGE BODY")
+        stream << createPackageBody(ext, schema, owner, name);
+    else if (type == "PROCEDURE")
+        stream << createProcedure(ext, schema, owner, name);
+    else if (type == "PROFILE")
+        stream << createProfile(ext, schema, owner, name);
+    else if (type == "ROLE")
+        stream << createRole(ext, schema, owner, name);
+    else if (type == "ROLE GRANTS")
+        stream << grantedPrivs(ext, QUOTE(name), name, 6);
+    else if (type == "ROLLBACK SEGMENT")
+        stream << createRollbackSegment(ext, schema, owner, name);
+    else if (type == "SEQUENCE")
+        stream << createSequence(ext, schema, owner, name);
+    else if (type == "SNAPSHOT")
+        stream << createSnapshot(ext, schema, owner, name);
+    else if (type == "SNAPSHOT LOG")
+        stream << createSnapshotLog(ext, schema, owner, name);
+    else if (type == "SYNONYM")
+        stream << createSynonym(ext, schema, owner, name);
+    else if (type == "TABLE")
+        stream << createTable(ext, schema, owner, name);
+    else if (type == "TABLE FAMILY")
+        stream << createTableFamily(ext, schema, owner, name);
+    else if (type == "TABLE CONTENTS")
+        createTableContents(ext, stream, schema, owner, name);
+    else if (type == "TABLE REFERENCES")
+        stream << createTableReferences(ext, schema, owner, name);
+    else if (type == "TABLESPACE")
+        stream << createTablespace(ext, schema, owner, name);
+    else if (type == "TRIGGER")
+        stream << createTrigger(ext, schema, owner, name);
+    else if (type == "TYPE")
+        stream << createType(ext, schema, owner, name);
+    else if (type == "USER")
+        stream << createUser(ext, schema, owner, name);
+    else if (type == "USER GRANTS")
+    {
+        QString nam;
+        if (ext.getSchema() != "1" && !ext.getSchema().isEmpty())
+            nam = ext.getSchema().lower();
+        else
+            nam = QUOTE(name);
+        stream << grantedPrivs(ext, nam, name, 4);
+    }
+    else if (type == "VIEW")
+        stream << createView(ext, schema, owner, name);
+    else
+    {
+        throw qApp->translate("toOracleExtract", "Invalid type %1 to create").arg(type);
+    }
+}
+
+void toOracleExtract::describe(toExtract &ext,
+                               std::list<QString> &lst,
+                               const QString &type,
+                               const QString &schema,
+                               const QString &owner,
+                               const QString &name) const
+{
+    clearFlags(ext);
+
+    if (type == "CONSTRAINT")
+        describeConstraint(ext, lst, schema, owner, name);
+    else if (type == "DATABASE LINK")
+        describeDBLink(ext, lst, schema, owner, name);
+    else if (type == "EXCHANGE INDEX")
+        describeExchangeIndex(ext, lst, schema, owner, name);
+    else if (type == "EXCHANGE TABLE")
+        describeExchangeTable(ext, lst, schema, owner, name);
+    else if (type == "FUNCTION")
+        describeFunction(ext, lst, schema, owner, name);
+    else if (type == "INDEX")
+        describeIndex(ext, lst, schema, owner, name);
+    else if (type == "MATERIALIZED VIEW")
+        describeMaterializedView(ext, lst, schema, owner, name);
+    else if (type == "MATERIALIZED VIEW LOG")
+        describeMaterializedViewLog(ext, lst, schema, owner, name);
+    else if (type == "PACKAGE")
+        describePackage(ext, lst, schema, owner, name);
+    else if (type == "PACKAGE BODY")
+        describePackageBody(ext, lst, schema, owner, name);
+    else if (type == "PROCEDURE")
+        describeProcedure(ext, lst, schema, owner, name);
+    else if (type == "PROFILE")
+        describeProfile(ext, lst, schema, owner, name);
+    else if (type == "ROLE")
+        describeRole(ext, lst, schema, owner, name);
+    else if (type == "ROLE GRANTS")
+    {
+        // A nop, everything is done in describe role
+    }
+    else if (type == "ROLLBACK SEGMENT")
+        describeRollbackSegment(ext, lst, schema, owner, name);
+    else if (type == "SEQUENCE")
+        describeSequence(ext, lst, schema, owner, name);
+    else if (type == "SNAPSHOT")
+        describeSnapshot(ext, lst, schema, owner, name);
+    else if (type == "SNAPSHOT LOG")
+        describeSnapshotLog(ext, lst, schema, owner, name);
+    else if (type == "SYNONYM")
+        describeSynonym(ext, lst, schema, owner, name);
+    else if (type == "TABLE")
+        describeTable(ext, lst, schema, owner, name);
+    else if (type == "TABLE FAMILY")
+        describeTableFamily(ext, lst, schema, owner, name);
+    else if (type == "TABLE REFERENCES")
+        describeTableReferences(ext, lst, schema, owner, name);
+    else if (type == "TABLE CONTENTS")
+    {
+        // A nop, nothing is described of contents
+    }
+    else if (type == "TABLESPACE")
+        describeTablespace(ext, lst, schema, owner, name);
+    else if (type == "TRIGGER")
+        describeTrigger(ext, lst, schema, owner, name);
+    else if (type == "TYPE")
+        describeType(ext, lst, schema, owner, name);
+    else if (type == "USER")
+        describeUser(ext, lst, schema, owner, name);
+    else if (type == "USER GRANTS")
+    {
+        // A nop, everything is done in describe user
+    }
+    else if (type == "VIEW")
+        describeView(ext, lst, schema, owner, name);
+    else
+    {
+        throw qApp->translate("toOracleExtract", "Invalid type %1 to describe").arg(type);
+    }
+}
+
+void toOracleExtract::drop(toExtract &ext,
+                           QTextStream &stream,
+                           const QString &type,
+                           const QString &schema,
+                           const QString &owner,
+                           const QString &name) const
+{
+    clearFlags(ext);
+    if (type == "CONSTRAINT")
+        stream << dropConstraint(ext, schema, owner, type, name);
+    else if (type == "DATABASE LINK")
+        stream << dropDatabaseLink(ext, schema, owner, type, name);
+    else if (type == "DIMENSION")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else if (type == "DIRECTORY")
+        stream << dropObject(ext, schema, owner, type, name);
+    else if (type == "FUNCTION")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else if (type == "INDEX")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else if (type == "MATERIALIZED VIEW")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else if (type == "MATERIALIZED VIEW LOG")
+        stream << dropMViewLog(ext, schema, owner, type, name);
+    else if (type == "PACKAGE")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else if (type == "PROCEDURE")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else if (type == "PROFILE")
+        stream << dropProfile(ext, schema, owner, type, name);
+    else if (type == "ROLE")
+        stream << dropObject(ext, schema, owner, type, name);
+    else if (type == "ROLLBACK SEGMENT")
+        stream << dropObject(ext, schema, owner, type, name);
+    else if (type == "SEQUENCE")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else if (type == "SNAPSHOT")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else if (type == "SNAPSHOT LOG")
+        stream << dropMViewLog(ext, schema, owner, type, name);
+    else if (type == "SYNONYM")
+        stream << dropSynonym(ext, schema, owner, type, name);
+    else if (type == "TABLE")
+        stream << dropTable(ext, schema, owner, type, name);
+    else if (type == "TABLESPACE")
+        stream << dropTablespace(ext, schema, owner, type, name);
+    else if (type == "TRIGGER")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else if (type == "TYPE")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else if (type == "USER")
+        stream << dropUser(ext, schema, owner, type, name);
+    else if (type == "VIEW")
+        stream << dropSchemaObject(ext, schema, owner, type, name);
+    else
+    {
+        throw qApp->translate("toOracleExtract", "Invalid type %1 to drop").arg(type);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/tooraclepreload.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tooraclepreload.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tooraclepreload.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,61 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOMONOLITHIC
+
+#include <qcstring.h>
+
+#include <dlfcn.h>
+#include <stdlib.h>
+
+class toInit
+{
+public:
+    toInit(void)
+    {
+        char *home = getenv("ORACLE_HOME");
+        if (!home)
+            return ;
+        QCString dlpath = home;
+        dlpath += "/lib/libclntsh.so";
+        if (!dlopen(dlpath, RTLD_NOW | RTLD_GLOBAL))
+            return ;
+    }
+};
+
+static toInit Init;
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tooraclesettingui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tooraclesettingui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tooraclesettingui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,152 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tooraclesettingui.ui'
+**
+** Created: Tue Sep 18 08:21:23 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tooraclesettingui.h"
+
+#include <qvariant.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qpushbutton.h>
+#include <qspinbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toOracleSettingUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toOracleSettingUI::toOracleSettingUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toOracleSettingUI" );
+    toOracleSettingUILayout = new QGridLayout( this, 1, 1, 11, 6, "toOracleSettingUILayout"); 
+
+    TextLabel6_2_2_2 = new QLabel( this, "TextLabel6_2_2_2" );
+
+    toOracleSettingUILayout->addWidget( TextLabel6_2_2_2, 1, 0 );
+
+    TextLabel6_2_3 = new QLabel( this, "TextLabel6_2_3" );
+
+    toOracleSettingUILayout->addWidget( TextLabel6_2_3, 0, 0 );
+
+    DefaultDate = new QLineEdit( this, "DefaultDate" );
+
+    toOracleSettingUILayout->addMultiCellWidget( DefaultDate, 1, 1, 1, 2 );
+
+    CheckPoint = new QLineEdit( this, "CheckPoint" );
+
+    toOracleSettingUILayout->addMultiCellWidget( CheckPoint, 0, 0, 1, 2 );
+
+    TextLabel6_3_2 = new QLabel( this, "TextLabel6_3_2" );
+
+    toOracleSettingUILayout->addWidget( TextLabel6_3_2, 3, 0 );
+
+    Unlimited = new QCheckBox( this, "Unlimited" );
+    Unlimited->setChecked( TRUE );
+
+    toOracleSettingUILayout->addWidget( Unlimited, 3, 2 );
+
+    MaxLong = new QLineEdit( this, "MaxLong" );
+    MaxLong->setEnabled( FALSE );
+
+    toOracleSettingUILayout->addWidget( MaxLong, 3, 1 );
+    Spacer6 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toOracleSettingUILayout->addItem( Spacer6, 6, 2 );
+    Spacer2_2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toOracleSettingUILayout->addMultiCell( Spacer2_2, 5, 5, 0, 1 );
+
+    CreatePlanTable = new QPushButton( this, "CreatePlanTable" );
+    CreatePlanTable->setEnabled( FALSE );
+    CreatePlanTable->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, CreatePlanTable->sizePolicy().hasHeightForWidth() ) );
+
+    toOracleSettingUILayout->addWidget( CreatePlanTable, 5, 2 );
+
+    TextLabel6_3 = new QLabel( this, "TextLabel6_3" );
+
+    toOracleSettingUILayout->addWidget( TextLabel6_3, 4, 0 );
+
+    ExplainPlan = new QLineEdit( this, "ExplainPlan" );
+
+    toOracleSettingUILayout->addWidget( ExplainPlan, 4, 1 );
+
+    KeepPlans = new QCheckBox( this, "KeepPlans" );
+
+    toOracleSettingUILayout->addWidget( KeepPlans, 4, 2 );
+
+    OpenCursors = new QSpinBox( this, "OpenCursors" );
+    OpenCursors->setMinValue( 1 );
+
+    toOracleSettingUILayout->addWidget( OpenCursors, 2, 2 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+
+    toOracleSettingUILayout->addMultiCellWidget( TextLabel1, 2, 2, 0, 1 );
+    languageChange();
+    resize( QSize(361, 287).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( CreatePlanTable, SIGNAL( clicked() ), this, SLOT( createPlanTable() ) );
+    connect( Unlimited, SIGNAL( toggled(bool) ), MaxLong, SLOT( setDisabled(bool) ) );
+
+    // tab order
+    setTabOrder( CheckPoint, DefaultDate );
+    setTabOrder( DefaultDate, OpenCursors );
+    setTabOrder( OpenCursors, MaxLong );
+    setTabOrder( MaxLong, Unlimited );
+    setTabOrder( Unlimited, ExplainPlan );
+    setTabOrder( ExplainPlan, KeepPlans );
+    setTabOrder( KeepPlans, CreatePlanTable );
+
+    // buddies
+    TextLabel6_2_2_2->setBuddy( DefaultDate );
+    TextLabel6_2_3->setBuddy( CheckPoint );
+    TextLabel6_3_2->setBuddy( ExplainPlan );
+    TextLabel6_3->setBuddy( ExplainPlan );
+    TextLabel1->setBuddy( OpenCursors );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toOracleSettingUI::~toOracleSettingUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toOracleSettingUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    TextLabel6_2_2_2->setText( tr( "&Default date format" ) );
+    QToolTip::add( TextLabel6_2_2_2, tr( "The default dateformat to use when querying the database." ) );
+    TextLabel6_2_3->setText( tr( "&Checkpoint name" ) );
+    QToolTip::add( TextLabel6_2_3, tr( "The name of the checkpoint used when needed to rollback work." ) );
+    TextLabel6_3_2->setText( tr( "&Max long and LOB data length" ) );
+    QToolTip::add( TextLabel6_3_2, tr( "Max length to read from LOB or LONG data fields. LONG:s can not be specified unlimited but will be defaulted to 33000 if unlimited." ) );
+    Unlimited->setText( tr( "Unlimited" ) );
+    CreatePlanTable->setText( tr( "Create Table" ) );
+    TextLabel6_3->setText( tr( "&Explain plan table" ) );
+    QToolTip::add( TextLabel6_3, tr( "Name of the table to put explain plan output in." ) );
+    KeepPlans->setText( tr( "&Keep plans" ) );
+    QToolTip::add( KeepPlans, tr( "Keep records for the plan explanations in the plan table." ) );
+    TextLabel1->setText( tr( "Maximum cursors to keep open" ) );
+}
+
+void toOracleSettingUI::createPlanTable()
+{
+    qWarning( "toOracleSettingUI::createPlanTable(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tooraclesettingui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tooraclesettingui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tooraclesettingui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,61 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tooraclesettingui.ui'
+**
+** Created: Tue Sep 18 08:21:23 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOORACLESETTINGUI_H
+#define TOORACLESETTINGUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QLabel;
+class QLineEdit;
+class QCheckBox;
+class QPushButton;
+class QSpinBox;
+
+class toOracleSettingUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toOracleSettingUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toOracleSettingUI();
+
+    QLabel* TextLabel6_2_2_2;
+    QLabel* TextLabel6_2_3;
+    QLineEdit* DefaultDate;
+    QLineEdit* CheckPoint;
+    QLabel* TextLabel6_3_2;
+    QCheckBox* Unlimited;
+    QLineEdit* MaxLong;
+    QPushButton* CreatePlanTable;
+    QLabel* TextLabel6_3;
+    QLineEdit* ExplainPlan;
+    QCheckBox* KeepPlans;
+    QSpinBox* OpenCursors;
+    QLabel* TextLabel1;
+
+public slots:
+    virtual void createPlanTable();
+
+protected:
+    QGridLayout* toOracleSettingUILayout;
+    QSpacerItem* Spacer6;
+    QSpacerItem* Spacer2_2;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOORACLESETTINGUI_H

Added: kde-extras/tora/branches/upstream/current/src/tooraclesettingui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tooraclesettingui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tooraclesettingui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,286 @@
+<!DOCTYPE UI><UI>
+<class>toOracleSettingUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toOracleSettingUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>361</width>
+            <height>287</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="1"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel6_2_2_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Default date format</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>DefaultDate</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>The default dateformat to use when querying the database.</string>
+            </property>
+        </widget>
+        <widget row="0"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel6_2_3</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Checkpoint name</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>CheckPoint</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>The name of the checkpoint used when needed to rollback work.</string>
+            </property>
+        </widget>
+        <widget row="1"  column="1"  rowspan="1"  colspan="2" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>DefaultDate</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="1"  rowspan="1"  colspan="2" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>CheckPoint</cstring>
+            </property>
+        </widget>
+        <widget row="3"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel6_3_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Max long and LOB data length</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>ExplainPlan</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Max length to read from LOB or LONG data fields. LONG:s can not be specified unlimited but will be defaulted to 33000 if unlimited.</string>
+            </property>
+        </widget>
+        <widget row="3"  column="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Unlimited</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Unlimited</string>
+            </property>
+            <property stdset="1">
+                <name>checked</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="3"  column="1" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>MaxLong</cstring>
+            </property>
+            <property stdset="1">
+                <name>enabled</name>
+                <bool>false</bool>
+            </property>
+        </widget>
+        <spacer row="6"  column="2" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer6</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <spacer row="5"  column="0"  rowspan="1"  colspan="2" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="5"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>CreatePlanTable</cstring>
+            </property>
+            <property stdset="1">
+                <name>enabled</name>
+                <bool>false</bool>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Create Table</string>
+            </property>
+        </widget>
+        <widget row="4"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel6_3</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Explain plan table</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>ExplainPlan</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Name of the table to put explain plan output in.</string>
+            </property>
+        </widget>
+        <widget row="4"  column="1" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ExplainPlan</cstring>
+            </property>
+        </widget>
+        <widget row="4"  column="2" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>KeepPlans</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Keep plans</string>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Keep records for the plan explanations in the plan table.</string>
+            </property>
+        </widget>
+        <widget row="2"  column="2" >
+            <class>QSpinBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>OpenCursors</cstring>
+            </property>
+            <property stdset="1">
+                <name>minValue</name>
+                <number>1</number>
+            </property>
+        </widget>
+        <widget row="2"  column="0"  rowspan="1"  colspan="2" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Maximum cursors to keep open</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>OpenCursors</cstring>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>CreatePlanTable</sender>
+        <signal>clicked()</signal>
+        <receiver>toOracleSettingUI</receiver>
+        <slot>createPlanTable()</slot>
+    </connection>
+    <connection>
+        <sender>Unlimited</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>MaxLong</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <slot access="public">createPlanTable()</slot>
+</connections>
+<tabstops>
+    <tabstop>CheckPoint</tabstop>
+    <tabstop>DefaultDate</tabstop>
+    <tabstop>OpenCursors</tabstop>
+    <tabstop>MaxLong</tabstop>
+    <tabstop>Unlimited</tabstop>
+    <tabstop>ExplainPlan</tabstop>
+    <tabstop>KeepPlans</tabstop>
+    <tabstop>CreatePlanTable</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tooutput.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tooutput.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tooutput.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,422 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "tomarkedtext.h"
+#include "toresultview.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <map>
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qcombobox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qmenubar.h>
+#include <qpopupmenu.h>
+#include <qstring.h>
+#include <qtimer.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qworkspace.h>
+
+#include "tooutput.moc"
+
+#include "icons/eraselog.xpm"
+#include "icons/offline.xpm"
+#include "icons/online.xpm"
+#include "icons/refresh.xpm"
+#include "icons/tooutput.xpm"
+
+#define CONF_POLLING     "Refresh"
+#define DEFAULT_POLLING  "10 seconds"
+
+#define CONF_LOG_TYPE  "Type"
+#define DEFAULT_LOG_TYPE "0"
+
+#define CONF_LOG_USER  "LogUser"
+#define DEFAULT_LOG_USER "ULOG"
+
+class toOutputPrefs : public QGroupBox, public toSettingTab
+{
+    QComboBox *AutoPolling;
+    QComboBox *Type;
+    QLineEdit *User;
+    toTool *Tool;
+
+public:
+    toOutputPrefs(toTool *tool, QWidget* parent = 0, const char* name = 0)
+            : QGroupBox(1, Horizontal, parent, name), toSettingTab("output.html"), Tool(tool)
+    {
+        setTitle(qApp->translate("toOutputPrefs", "SQL Output"));
+
+        QLabel *label = new QLabel(qApp->translate("toOutputPrefs", "&Polling timeout"), this);
+        label->setGeometry(QRect(20, 30, 100, 20));
+        QToolTip::add
+            (label, qApp->translate("toOutputPrefs", "Time between trying to poll for output."));
+
+        AutoPolling = toRefreshCreate(this, TO_KDE_TOOLBAR_WIDGET, Tool->config(CONF_POLLING, DEFAULT_POLLING));
+        label->setBuddy(AutoPolling);
+
+        label = new QLabel(qApp->translate("toOutputPrefs", "Default &source"), this);
+        Type = new QComboBox(this);
+        Type->insertItem(qApp->translate("toLogOutput", "SQL Output"));
+        Type->insertItem(qApp->translate("toLogOutput", "Log4PL/SQL"));
+        Type->setCurrentItem(Tool->config(CONF_LOG_TYPE, DEFAULT_LOG_TYPE).toInt());
+        label->setBuddy(Type);
+
+        label = new QLabel(qApp->translate("toOutputPrefs", "Log4PL/SQL &User"), this);
+        User = new QLineEdit(Tool->config(CONF_LOG_USER, DEFAULT_LOG_USER), this);
+        label->setBuddy(User);
+    }
+    virtual void saveSetting(void)
+    {
+        Tool->setConfig(CONF_POLLING, AutoPolling->currentText());
+        Tool->setConfig(CONF_LOG_TYPE, QString::number(Type->currentItem()));
+        Tool->setConfig(CONF_LOG_USER, User->text());
+    }
+};
+
+class toOutputTool : public toTool
+{
+protected:
+    std::map<toConnection *, QWidget *> Windows;
+
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(tooutput_xpm);
+    }
+public:
+    toOutputTool()
+            : toTool(340, "SQL Output")
+    { }
+    virtual const char *menuItem()
+    {
+        return "SQL Output";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection);
+        if (i != Windows.end())
+        {
+            (*i).second->raise();
+            (*i).second->setFocus();
+            return NULL;
+        }
+        else
+        {
+            QWidget *window = new toLogOutput(parent, connection);
+            Windows[&connection] = window;
+            return window;
+        }
+    }
+    void closeWindow(toConnection &connection)
+    {
+        std::map<toConnection *, QWidget *>::iterator i = Windows.find(&connection);
+        if (i != Windows.end())
+            Windows.erase(i);
+    }
+    virtual QWidget *configurationTab(QWidget *parent)
+    {
+        return new toOutputPrefs(this, parent);
+    }
+};
+
+static toOutputTool OutputTool;
+
+toOutput::toOutput(QWidget *main, toConnection &connection, bool enabled)
+        : toToolWidget(OutputTool, "output.html", main, connection)
+{
+    ToolBar = toAllocBar(this, tr("SQL Output"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Poll for output now"),
+                    tr("Poll for output now"),
+                    this, SLOT(refresh(void)),
+                    ToolBar);
+    ToolBar->addSeparator();
+    DisableButton = new QToolButton(ToolBar);
+    DisableButton->setToggleButton(true);
+#if QT_VERSION >= 0x030000
+
+    QIconSet iconset;
+    iconset.setPixmap(QPixmap(const_cast<const char**>(online_xpm)), QIconSet::Automatic, QIconSet::Normal, QIconSet::Off);
+    iconset.setPixmap(QPixmap(const_cast<const char**>(offline_xpm)), QIconSet::Automatic, QIconSet::Normal, QIconSet::On);
+    DisableButton->setIconSet(iconset);
+#else
+
+    DisableButton->setIconSet(QIconSet(QPixmap(const_cast<const char**>(online_xpm))), false);
+    DisableButton->setIconSet(QIconSet(QPixmap(const_cast<const char**>(offline_xpm))), true);
+#endif
+
+    DisableButton->setOn(!enabled);
+    connect(DisableButton, SIGNAL(toggled(bool)), this, SLOT(disable(bool)));
+    QToolTip::add
+        (DisableButton, tr("Enable or disable getting SQL output."));
+
+    new QToolButton(QPixmap(const_cast<const char**>(eraselog_xpm)),
+                    tr("Clear output"),
+                    tr("Clear output"),
+                    this, SLOT(clear()),
+                    ToolBar);
+    ToolBar->addSeparator();
+    new QLabel(tr("Refresh") + " ", ToolBar, TO_KDE_TOOLBAR_WIDGET);
+    connect(Refresh = toRefreshCreate(ToolBar, TO_KDE_TOOLBAR_WIDGET, OutputTool.config(CONF_POLLING, DEFAULT_POLLING)),
+            SIGNAL(activated(const QString &)), this, SLOT(changeRefresh(const QString &)));
+    ToolBar->setStretchableWidget(new QLabel(ToolBar, TO_KDE_TOOLBAR_WIDGET));
+
+    Output = new toMarkedText(this);
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    try
+    {
+        connect(timer(), SIGNAL(timeout(void)), this, SLOT(refresh(void)));
+        toRefreshParse(timer(), OutputTool.config(CONF_POLLING, DEFAULT_POLLING));
+    }
+    TOCATCH
+    if (enabled)
+        disable(false);
+
+    setFocusProxy(Output);
+}
+
+#define TO_ID_TOGGLE  (toMain::TO_TOOL_MENU_ID+ 0)
+
+void toOutput::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Output|Refresh")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(tr("Output enabled"),
+                                 this, SLOT(toggleMenu()),
+                                 toKeySequence(tr("F4", "Output|Enable")), TO_ID_TOGGLE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(eraselog_xpm)), tr("Clear output"),
+                                 this, SLOT(clear()),
+                                 toKeySequence(tr("Ctrl+Backspace", "Output|Clear output")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(tr("&Change Refresh"), Refresh, SLOT(setFocus(void)),
+                                 toKeySequence(tr("Alt+R", "Output|Change refresh")));
+
+            toMainWidget()->menuBar()->insertItem(tr("&Output"), ToolMenu, -1, toToolMenuIndex());
+            ToolMenu->setItemChecked(TO_ID_TOGGLE, !DisableButton->isOn());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+static toSQL SQLEnable("toOutput:Enable",
+                       "BEGIN\n"
+                       "    SYS.DBMS_OUTPUT.ENABLE;\n"
+                       "END;",
+                       "Enable output collection");
+static toSQL SQLDisable("toOutput:Disable",
+                        "BEGIN\n"
+                        "    SYS.DBMS_OUTPUT.DISABLE;\n"
+                        "END;",
+                        "Disable output collection");
+
+void toOutput::toggleMenu()
+{
+    DisableButton->setOn(!DisableButton->isOn());
+}
+
+void toOutput::disable(bool dis)
+{
+    try
+    {
+        if (dis)
+            connection().allExecute(SQLDisable);
+        else
+            connection().allExecute(SQLEnable);
+        QString str = toSQL::string(SQLEnable, connection());
+        if (dis)
+            connection().delInit(str);
+        else
+            connection().addInit(str);
+        if (ToolMenu)
+            ToolMenu->setItemChecked(TO_ID_TOGGLE, !DisableButton->isOn());
+    }
+    catch (...)
+    {
+        toStatusMessage(tr("Couldn't enable/disable output for session"));
+    }
+}
+
+toOutput::~toOutput()
+{
+    try
+    {
+        disable(true);
+        OutputTool.closeWindow(connection());
+    }
+    TOCATCH
+}
+
+static toSQL SQLLines("toOutput:Poll",
+                      "BEGIN\n"
+                      "    SYS.DBMS_OUTPUT.GET_LINE(:lines<char[1000],out>,\n"
+                      "                             :stat<int,out>);\n"
+                      "END;",
+                      "Get lines from SQL Output, must use same bindings");
+
+void toOutput::poll()
+{
+    try
+    {
+        bool any;
+        do
+        {
+            toQList params;
+            toQuery query(connection(), toQuery::All, SQLLines, params);
+
+            any = false;
+            while (!query.eof())
+            {
+                QString line = query.readValueNull();
+                int status = query.readValueNull().toInt();
+                if (status == 0)
+                {
+                    any = true;
+                    if(line) insertLine(line);
+                }
+            }
+        }
+        while (any);
+    }
+    TOCATCH
+}
+
+void toOutput::refresh(void)
+{
+    poll();
+}
+
+void toOutput::clear(void)
+{
+    Output->clear();
+}
+
+void toOutput::changeRefresh(const QString &str)
+{
+    try
+    {
+        toRefreshParse(timer(), str);
+    }
+    TOCATCH
+}
+
+bool toOutput::enabled(void)
+{
+    return !DisableButton->isOn();
+}
+
+static toSQL SQLLog("toLogOutput:Poll",
+                    "SELECT LDATE||'.'||to_char(mod(LHSECS,100),'09') \"Timestamp\",\n"
+                    "       decode(llevel,1,'OFF',\n"
+                    "                     2,'FATAL',\n"
+                    "                     3,'ERROR',\n"
+                    "                     4,'WARNING',\n"
+                    "                     5,'INFO',\n"
+                    "                     6,'DEBUG',\n"
+                    "                     7,'ALL' ,\n"
+                    "                     'UNDEFINED') \"Level\",\n"
+                    "       LUSER \"User\",\n"
+                    "       LSECTION \"Section\",\n"
+                    "       LTEXTE \"Text\"\n"
+                    "  from %1.tlog order by id desc\n",
+                    "Poll data from PL/SQL log table");
+
+toLogOutput::toLogOutput(QWidget *parent, toConnection &connection)
+        : toOutput(parent, connection)
+{
+    Type = new QComboBox(toolBar(), TO_KDE_TOOLBAR_WIDGET);
+    Type->insertItem(tr("SQL Output"));
+    Type->insertItem(tr("Log4PL/SQL"));
+    Type->setCurrentItem(OutputTool.config(CONF_LOG_TYPE, DEFAULT_LOG_TYPE).toInt());
+    connect(Type, SIGNAL(activated(int)), this, SLOT(changeType()));
+
+    Log = new toResultView(false, false, this);
+    changeType();
+}
+
+void toLogOutput::refresh(void)
+{
+    if (Type->currentItem() == 1)
+    {
+        Log->setSQL(QString::null);
+        Log->query(SQLLog(connection()).arg(OutputTool.config(CONF_LOG_USER, DEFAULT_LOG_USER)));
+    }
+    toOutput::refresh();
+}
+
+void toLogOutput::changeType(void)
+{
+    if (Type->currentItem() == 1)
+    {
+        output()->hide();
+        Log->show();
+        refresh();
+    }
+    else
+    {
+        output()->show();
+        Log->hide();
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/tooutput.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tooutput.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tooutput.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,101 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOOUTPUT_H
+#define TOOUTPUT_H
+
+#include "config.h"
+#include "totool.h"
+
+class QComboBox;
+class QPopupMenu;
+class QToolBar;
+class QToolButton;
+class toConnection;
+class toMarkedText;
+class toResultView;
+
+class toOutput : public toToolWidget
+{
+    Q_OBJECT
+
+    toMarkedText *Output;
+    QPopupMenu *ToolMenu;
+    QToolButton *DisableButton;
+    QComboBox *Refresh;
+    QToolBar *ToolBar;
+
+    void poll(void);
+public:
+    toOutput(QWidget *parent, toConnection &connection, bool enabled = true);
+    virtual ~toOutput();
+    void insertLine(const QString &str)
+    {
+        Output->append(str);
+    }
+    bool enabled(void);
+    QToolBar *toolBar(void)
+    {
+        return ToolBar;
+    }
+    toMarkedText *output(void)
+    {
+        return Output;
+    }
+public slots:
+    void clear(void);
+    virtual void refresh(void);
+    virtual void disable(bool);
+    void changeRefresh(const QString &str);
+    void windowActivated(QWidget *widget);
+    void toggleMenu();
+};
+
+class toLogOutput : public toOutput
+{
+    Q_OBJECT
+
+    QComboBox *Type;
+    toResultView *Log;
+public:
+    toLogOutput(QWidget *parent, toConnection &connection);
+public slots:
+    virtual void refresh(void);
+    void changeType(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toparamget.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toparamget.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toparamget.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,391 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "tohelp.h"
+#include "tomemoeditor.h"
+#include "toparamget.h"
+#include "totool.h"
+
+#include <qapplication.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qgrid.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qpalette.h>
+#include <qpushbutton.h>
+#include <qregexp.h>
+#include <qscrollview.h>
+#include <qsizepolicy.h>
+
+#include "toparamget.moc"
+
+std::map<QString, std::list<QString> > toParamGet::DefaultCache;
+std::map<QString, std::list<QString> > toParamGet::Cache;
+
+toParamGet::toParamGet(QWidget *parent, const char *name)
+        : QDialog(parent, name, true), toHelpContext(QString::fromLatin1("common.html#param"))
+{
+    toHelp::connectDialog(this);
+    resize(500, 480);
+    setCaption(tr("Define binding variables"));
+
+    QGridLayout *layout = new QGridLayout(this, 3, 2);
+    layout->setSpacing( 6 );
+    layout->setMargin( 11 );
+
+    View = new QScrollView(this);
+    View->enableClipper(true);
+    View->setGeometry(10, 10, 330, 480);
+    View->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+    layout->addMultiCellWidget(View, 0, 2, 0, 0);
+
+    Container = new QGrid(4, View->viewport());
+    View->addChild(Container, 5, 5);
+    Container->setSpacing(10);
+    Container->setFixedWidth(View->width() - 30);
+    View->viewport()->setBackgroundColor(qApp->palette().active().background());
+
+    QPushButton *OkButton = new QPushButton(this, "OkButton");
+    OkButton->setText(tr("&Ok"));
+    OkButton->setDefault(true);
+    layout->addWidget(OkButton, 0, 1);
+
+    QPushButton *CancelButton = new QPushButton(this, "CancelButton");
+    CancelButton->setText(tr("Cancel"));
+    CancelButton->setDefault(false);
+    layout->addWidget(CancelButton, 1, 1);
+
+    QSpacerItem* spacer = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    layout->addItem(spacer, 2, 1);
+
+    connect(OkButton, SIGNAL(clicked()), this, SLOT(accept()));
+    connect(CancelButton, SIGNAL(clicked()), this, SLOT(reject()));
+}
+
+toQList toParamGet::getParam(toConnection &conn, QWidget *parent, QString &str, bool interactive)
+{
+    std::map<QString, bool> parameters;
+    std::list<QString> names;
+    toParamGet *widget = NULL;
+
+    enum {
+        afterName,
+        inString,
+        normal,
+        comment,
+        multiComment,
+        name,
+        specification,
+        endInput
+    } state;
+    state = normal;
+
+    QChar endString;
+    QString fname;
+    QString direction;
+    QString res;
+
+    QString def = QString::fromLatin1("<char[4000]>");
+
+    int colon = 1;
+
+    int num = 0;
+    for (unsigned int i = 0;i < str.length() + 1;i++)
+    {
+        QChar c;
+        QChar nc;
+        QChar pc;
+
+        c = nc = pc = '\n';
+
+        if(i < str.length())
+            c = str.at(i);
+
+        if(i < str.length() - 1)
+            nc = str.at(i + 1);
+
+        if(i - 1 > 0)
+            pc = str.at(i - 1);
+
+        if (state == normal && c == '-' && nc == '-')
+            state = comment;
+        else if (state == normal && c == '/' && nc == '*')
+            state = multiComment;
+        else
+        {
+            switch (state)
+            {
+            case inString:
+                if (c == endString)
+                    state = normal;
+                break;
+            case comment:
+                if (c == '\n')
+                    state = normal;
+                break;
+            case multiComment:
+                if (c == '*' && nc == '/')
+                    state = normal;
+                break;
+            case normal:
+                switch (c.latin1())
+                {
+                case '\'':
+                case '\"':
+                    endString = c;
+                    state = inString;
+                    break;
+                case ':':
+                    // ignore ::
+                    // this is a type cast for postgres, not a parameter.
+                    if(nc == ':' || pc == ':')
+                        break;
+
+                    if(nc != '=')
+                        state = name;
+                    direction = "";
+                    fname = "";
+                    break;
+                case '?':
+                    fname = QString::fromLatin1("f");
+                    fname += QString::number(colon);
+                    colon++;
+                    res += QString::fromLatin1(":");
+                    res += fname;
+                    res += def.mid(0, def.length() - 1);
+                    c = def.at(def.length() - 1);
+                    break;
+                }
+                break;
+            case name:
+                if (c.isLetterOrNumber() || c == '_')
+                {
+                    fname += c;
+                    break;
+                }
+                if (fname.isEmpty() && !toIsMySQL(conn))
+                {
+                    toStatusMessage(tr("Missing field name"));
+                    throw tr("Missing field name");
+                }
+                state = afterName;
+            case afterName:
+                if (c == '<')
+                    state = specification;
+                else
+                {
+                    state = normal;
+                    res += def;
+                }
+                break;
+            case specification:
+                if (c == ',')
+                    state = endInput;
+                else if (c == '>')
+                    state = normal;
+                break;
+            case endInput:
+                if (c == '>')
+                    state = normal;
+                else
+                    direction += c;
+                break;
+            }
+        }
+        if (state == normal && !fname.isEmpty())
+        {
+#if 0
+            fname.replace(QRegExp("_"), " ");
+#endif
+
+            if (direction.isEmpty() || direction == "in" || direction == "inout")
+            {
+                if (!parameters[fname])
+                {
+                    parameters[fname] = true;
+                    if (!widget)
+                        widget = new toParamGet(parent);
+                    new QLabel(fname, widget->Container);
+                    QComboBox *edit = new QComboBox(widget->Container, QString::number(num));
+                    edit->setEditable(true);
+                    QString defval;
+                    std::map<QString, std::list<QString> >::iterator fnd = Cache.find(fname);
+                    if (fnd != Cache.end())
+                        for (std::list<QString>::iterator i = (*fnd).second.begin();i != (*fnd).second.end();i++)
+                        {
+                            if (edit->count() == 0)
+                                defval = *i;
+                            edit->insertItem(*i);
+                        }
+
+                    fnd = DefaultCache.find(fname);
+                    if (fnd != DefaultCache.end())
+                        for (std::list<QString>::iterator i = (*fnd).second.begin();i != (*fnd).second.end();i++)
+                        {
+                            if (edit->count() == 0)
+                                defval = *i;
+                            edit->insertItem(*i);
+                        }
+
+                    QCheckBox *box = new QCheckBox(tr("NULL"), widget->Container);
+                    connect(box, SIGNAL(toggled(bool)), edit, SLOT(setDisabled(bool)));
+                    if (edit->count() > 0)
+                    {
+                        if (defval.isNull())
+                            box->setChecked(true);
+                    }
+                    toParamGetButton *btn = new toParamGetButton(num, widget->Container);
+                    btn->setText(tr("Edit"));
+                    btn->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
+                    connect(btn, SIGNAL(clicked(int)), widget, SLOT(showMemo(int)));
+                    connect(box, SIGNAL(toggled(bool)), btn, SLOT(setDisabled(bool)));
+                    widget->Value.insert(widget->Value.end(), edit);
+                    names.insert(names.end(), fname);
+
+                    QDesktopWidget *paramDesktop = new QDesktopWidget;
+                    edit->setMaximumWidth(paramDesktop->availableGeometry(edit).width()*2/3);
+                    edit->setMinimumWidth(100);
+                    edit->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed));
+			
+                    num++;
+                }
+            }
+            fname = "";
+        }
+        if (i < str.length())
+            res += c;
+    }
+
+    toQList ret;
+    if (widget)
+    {
+        (*widget->Value.begin())->setFocus();
+        if (!interactive || widget->exec())
+        {
+            std::list<QString>::iterator cn = names.begin();
+            for (std::list<QComboBox *>::iterator i = widget->Value.begin();i != widget->Value.end();i++)
+            {
+                QComboBox *current = *i;
+                QString val;
+                if (current)
+                {
+                    if (current->isEnabled())
+                        val = current->currentText();
+                    else
+                        val = QString::null;
+                }
+                if (cn != names.end())
+                {
+                    std::list<QString> &lst = Cache[*cn];
+                    for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                        if ((*i) == val)
+                        {
+                            lst.erase(i);
+                            break;
+                        }
+                    lst.insert(lst.begin(), val);
+
+                    std::map<QString, std::list<QString> >::iterator fnd = DefaultCache.find(*cn);
+                    if (fnd != DefaultCache.find(*cn))
+                        for (std::list<QString>::iterator i = (*fnd).second.begin();i != (*fnd).second.end();i++)
+                            if ((*i) == val)
+                            {
+                                (*fnd).second.erase(i);
+                                break;
+                            }
+
+                    cn++;
+                }
+                ret.insert(ret.end(), val);
+            }
+            delete widget;
+        }
+        else
+        {
+            delete widget;
+            toStatusMessage(tr("Aborted execution"), false, false);
+            throw tr("Aborted execution");
+        }
+    }
+    str = res;
+    return ret;
+}
+
+void toParamGet::setDefault(toConnection &, const QString &name, const QString &val)
+{
+    std::map<QString, std::list<QString> >::iterator fnd = Cache.find(name);
+    if (fnd != Cache.end())
+        for (std::list<QString>::iterator i = (*fnd).second.begin();i != (*fnd).second.end();i++)
+            if (val == *i)
+                return ;
+
+    std::list<QString> &lst = DefaultCache[name];
+    for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+        if ((*i) == val)
+        {
+            lst.erase(i);
+            break;
+        }
+    lst.insert(lst.begin(), val);
+}
+
+void toParamGet::showMemo(int row)
+{
+    QObject *obj = child(QString::number(row));
+    if (obj)
+    {
+        toMemoEditor *memo = new toMemoEditor(this,
+                                              ((QComboBox *) obj)->currentText(),
+                                              row,
+                                              0,
+                                              false,
+                                              true);
+        if (memo->exec())
+            ((QComboBox *)obj)->setCurrentText(memo->text());
+    }
+}
+
+void toParamGet::resizeEvent(QResizeEvent *e)
+{
+    QDialog::resizeEvent(e);
+    Container->setFixedWidth(View->width() - 30);
+}

Added: kde-extras/tora/branches/upstream/current/src/toparamget.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toparamget.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toparamget.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,117 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOPARAMGET_H
+#define TOPARAMGET_H
+
+#include "config.h"
+#include "toconnection.h"
+#include "tohelp.h"
+
+#include <list>
+#include <map>
+
+#include <qdialog.h>
+#include <qpushbutton.h>
+
+class QComboBox;
+class QGrid;
+class QScrollView;
+
+class toParamGetButton : public QPushButton
+{
+    Q_OBJECT
+    int Row;
+public:
+    toParamGetButton(int row, QWidget *parent = 0, const char *name = 0)
+            : QPushButton(parent, name), Row(row)
+    {
+        connect(this, SIGNAL(clicked()), this, SLOT(internalClicked()));
+    }
+private slots:
+    void internalClicked(void)
+    {
+        emit clicked(Row);
+    }
+signals:
+    void clicked(int);
+};
+
+/** A help class to parse SQL for input/output bindings and if available also pop up a
+ * dialog and ask for values. Also maintains an internal cache of old values.
+ */
+
+class toParamGet : public QDialog, public toHelpContext
+{
+    Q_OBJECT
+    /** Default values cache
+     */
+    static std::map<QString, std::list<QString> > DefaultCache;
+    /** Specified values cache
+     */
+    static std::map<QString, std::list<QString> > Cache;
+
+    QScrollView *View;
+    QGrid *Container;
+
+    std::list<QComboBox *> Value;
+    toParamGet(QWidget *parent = 0, const char *name = 0);
+protected:
+    virtual void resizeEvent(QResizeEvent *e);
+public:
+    /** Get parameters for specified SQL string.
+     * @param conn Connection to get binds for.
+     * @param parent Parent widget if dialog is needed.
+     * @param str SQL to parse for bindings. Observe that this string can be changed to further
+     *            declare the binds.
+     * @param interactive If not interactive simply rewrite the query and pass on the defaults.
+     * @return Returns a list of values to feed into the query.
+     */
+    static toQList getParam(toConnection &conn, QWidget *parent, QString &str, bool interactive = true);
+    /** Specify a default value for the cache. This can not overwrite a manually
+     * specified value by the user.
+     * @param conn Connection to get binds for.
+     * @param name Name of the bind variable.
+     * @param val Value of the bind variable.
+     */
+    static void setDefault(toConnection &conn, const QString &name, const QString &val);
+private slots:
+
+    virtual void showMemo(int row);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/topassword.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/topassword.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/topassword.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,105 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "tomain.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <qapplication.h>
+#include <qinputdialog.h>
+#include <qmessagebox.h>
+
+static toSQL SQLChangePassword("toPassword:ChangePassword",
+                               "ALTER USER %1 IDENTIFIED BY \"%2\"",
+                               "Change password of a user, must have same %");
+
+class toPasswordTool : public toTool
+{
+protected:
+public:
+    toPasswordTool()
+            : toTool(599, "Password Change")
+    { }
+    virtual const char *menuItem()
+    {
+        return "Password Change";
+    }
+    virtual QWidget *toolWindow(QWidget *, toConnection &connection)
+    {
+        QString np = QInputDialog::getText(qApp->translate("toPasswordTool", "Enter new password"),
+                                           qApp->translate("toPasswordTool", "Enter new password"),
+                                           QLineEdit::Password,
+                                           QString::null,
+                                           NULL,
+                                           toMainWidget());
+        if (!np.isNull())
+        {
+            QString np2 = QInputDialog::getText(qApp->translate("toPasswordTool", "Enter new password again for confirmation"),
+                                                qApp->translate("toPasswordTool", "Enter new password again for confirmation"),
+                                                QLineEdit::Password,
+                                                QString::null,
+                                                NULL,
+                                                toMainWidget());
+            if (!np2.isNull())
+            {
+                if (np != np2)
+                    TOMessageBox::warning(toMainWidget(),
+                                          qApp->translate("toPasswordTool", "Passwords doesn't match"),
+                                          qApp->translate("toPasswordTool", "The two givens passwords doesn't match, please try again"));
+                else
+                {
+                    try
+                    {
+                        connection.execute(toSQL::string(SQLChangePassword, connection).
+                                           arg(connection.user()).arg(np));
+                    }
+                    catch (const QString &exc)
+                    {
+                        toStatusMessage(exc);
+                    }
+                }
+            }
+        }
+        return NULL;
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toPasswordTool PasswordTool;

Added: kde-extras/tora/branches/upstream/current/src/topiechart.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/topiechart.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/topiechart.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,502 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "tolinechart.h"
+#include "topiechart.h"
+#include "tomain.h"
+#include "toresult.h"
+#include "totool.h"
+
+#ifdef TO_HAS_KPRINT
+#include <kprinter.h>
+#endif
+
+#include <math.h>
+#include <time.h>
+
+#include <qapplication.h>
+#include <qpaintdevicemetrics.h>
+#include <qpainter.h>
+#include <qpopupmenu.h>
+#include <qprinter.h>
+#include <qtooltip.h>
+#include <qworkspace.h>
+
+#include "topiechart.moc"
+
+#include "icons/chart.xpm"
+#include "icons/print.xpm"
+
+class toPieTip : public QToolTip
+{
+private:
+    toPieChart *Chart;
+public:
+    toPieTip(toPieChart *parent)
+            : QToolTip(parent), Chart(parent)
+    {
+    }
+
+    virtual ~toPieTip()
+    {
+    }
+
+    virtual void maybeTip(const QPoint &p)
+    {
+        QString t = Chart->findLabel(p);
+        if (!t.isEmpty())
+            tip(QRect(p.x() - 20, p.y() - 20, 40, 40), t);
+    }
+};
+
+toPieChart::toPieChart(QWidget *parent, const char *name, WFlags f)
+        : QWidget(parent, name, f)
+{
+    Legend = true;
+    DisplayPercent = false;
+
+    setIcon(QPixmap(const_cast<const char**>(chart_xpm)));
+    setMinimumSize(60, 60);
+    Menu = NULL;
+
+    setMinimumSize(60, 60);
+    // Use list font
+    QString str = toConfigurationSingle::Instance().globalConfig(CONF_LIST, "");
+    if (!str.isEmpty())
+    {
+        QFont font(toStringToFont(str));
+        setFont(font);
+    }
+    AllTip = new toPieTip(this);
+}
+
+toPieChart::~toPieChart()
+{
+    delete AllTip;
+    AllTip = 0;
+}
+
+#define FONT_ALIGN AlignLeft|AlignTop|ExpandTabs
+
+void toPieChart::mouseDoubleClickEvent(QMouseEvent *e)
+{
+    if (e->button() == LeftButton)
+        openCopy();
+}
+
+void toPieChart::openCopy(void)
+{
+    QWidget *newWin = new toPieChart(this, toMainWidget()->workspace(), NULL, WDestructiveClose);
+    newWin->show();
+    newWin->raise();
+    newWin->setFocus();
+    toMainWidget()->windowsMenu();
+
+#if QT_VERSION < 0x030100
+    // This is a really ugly workaround for a Qt layout bug
+    QWidget *tmp = NULL;
+    QWidget *tmp2 = NULL;
+    for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).count();i++)
+    {
+        QWidget *widget = toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).at(i);
+        if (newWin != widget)
+            tmp2 = widget;
+        else
+            tmp = newWin;
+        if (tmp2 && tmp)
+            break;
+    }
+    if (tmp2 && tmp)
+    {
+        tmp2->setFocus();
+        tmp->setFocus();
+    }
+#endif
+}
+
+void toPieChart::setValues(std::list<double> &values, std::list<QString> &labels)
+{
+    Values = values;
+    Labels = labels;
+
+    emit newValues(values, labels);
+    update();
+}
+
+
+toPieChart::toPieChart(toPieChart *pie, QWidget *parent, const char *name, WFlags f)
+        : QWidget(parent, name, f),
+        Values(pie->Values),
+        Labels(pie->Labels),
+        Postfix(pie->Postfix),
+        Legend(pie->Legend),
+        DisplayPercent(pie->DisplayPercent),
+        Title(pie->Title)
+{
+    setIcon(QPixmap(const_cast<const char**>(chart_xpm)));
+    Menu = NULL;
+
+    setMinimumSize(60, 60);
+    // Use list font
+    QString str = toConfigurationSingle::Instance().globalConfig(CONF_LIST, "");
+    if (!str.isEmpty())
+    {
+        QFont font(toStringToFont(str));
+        setFont(font);
+    }
+    new toPieTip(this);
+}
+
+void toPieChart::mousePressEvent(QMouseEvent *e)
+{
+    if (e->button() == RightButton)
+    {
+        if (!Menu)
+        {
+            Menu = new QPopupMenu(this);
+            Menu->insertItem(QPixmap(const_cast<const char**>(print_xpm)), tr("&Print..."), this, SLOT(editPrint()));
+            Menu->insertItem(tr("&Open in new window"), this, SLOT(openCopy()));
+        }
+        Menu->popup(e->globalPos());
+    }
+}
+
+void toPieChart::paintChart(QPainter *p, QRect rect)
+{
+    QFontMetrics fm = p->fontMetrics();
+
+    int right = rect.width();
+    int bottom = rect.height();
+
+    double tot = 0;
+    {
+        for (std::list<double>::iterator i = Values.begin();i != Values.end();i++)
+            tot += *i;
+    }
+
+    if (!Title.isEmpty())
+    {
+        p->save();
+        QFont f = p->font();
+        f.setBold(true);
+        p->setFont(f);
+        QRect bounds = fm.boundingRect(0, 0, rect.width(), rect.height(), FONT_ALIGN, Title);
+        p->drawText(0, 2, rect.width(), bounds.height(), AlignHCenter | AlignTop | ExpandTabs, Title);
+        p->restore();
+        p->translate(0, bounds.height() + 2);
+        bottom -= bounds.height() + 2;
+    }
+
+    if (Legend)
+    {
+        int lwidth = 0;
+        int lheight = 0;
+
+        toResult *Result = dynamic_cast<toResult *>(this);
+
+        std::list<double>::iterator j = Values.begin();
+        {
+            for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++)
+            {
+                QString sizstr;
+                if (j != Values.end())
+                {
+                    if (DisplayPercent)
+                        sizstr.sprintf("%0.1f", 100*(*j) / tot);
+                    else
+                        sizstr = toQValue::formatNumber(*j);
+                    sizstr += Postfix;
+                }
+                if (!(*i).isEmpty())
+                {
+                    QString str = toTranslateMayby(Result ? Result->sqlName() : QString::fromLatin1("toPieChart"), *i);
+                    str += QString::fromLatin1(" (");
+                    str += sizstr;
+                    str += QString::fromLatin1(")");
+                    QRect bounds = fm.boundingRect(0, 0, 10000, 10000, FONT_ALIGN, str);
+                    if (lwidth < bounds.width())
+                        lwidth = bounds.width();
+                    lheight += bounds.height();
+                }
+            }
+            if (j != Values.end())
+                j++;
+        }
+        if (lheight > 0)
+        {
+            lheight += 4;
+            lwidth += 14;
+        }
+        int lx = rect.width() - lwidth - 2;
+        int ly = 2;
+        if (lx < 50)
+            lx = 50;
+        right = lx;
+        p->save();
+        p->setBrush(white);
+        p->drawRect(lx, ly, lwidth, lheight);
+        p->restore();
+        lx += 12;
+        ly += 2;
+        int cp = 0;
+        j = Values.begin();
+        for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++)
+        {
+            QString sizstr;
+            if (j != Values.end())
+            {
+                if (DisplayPercent)
+                    sizstr.sprintf("%0.1f", 100*(*j) / tot);
+                else
+                    sizstr = toQValue::formatNumber(*j);
+                sizstr += Postfix;
+            }
+
+            if (!(*i).isEmpty())
+            {
+                QString str = toTranslateMayby(Result ? Result->sqlName() : QString::fromLatin1("toPieChart"), *i);
+                str += QString::fromLatin1(" (");
+                str += sizstr;
+                str += QString::fromLatin1(")");
+
+                QRect bounds = fm.boundingRect(lx, ly, 100000, 100000, FONT_ALIGN, str);
+                p->drawText(bounds, FONT_ALIGN, str);
+                p->save();
+                QBrush brush(toChartBrush(cp));
+                p->setBrush(brush.color());
+                p->drawRect(lx - 10, ly + bounds.height() / 2 - fm.ascent() / 2, 8, fm.ascent());
+                if (brush.style() != QBrush::SolidPattern)
+                {
+                    p->setBrush(QBrush(Qt::white, brush.style()));
+                    p->drawRect(lx - 10, ly + bounds.height() / 2 - fm.ascent() / 2, 8, fm.ascent());
+                }
+                p->restore();
+                ly += bounds.height();
+            }
+            cp++;
+
+            if (j != Values.end())
+                j++;
+        }
+    }
+
+    if (tot == 0)
+    {
+        p->drawText(QRect(2, 2, right - 4, bottom - 4),
+                    AlignCenter | WordBreak, tr("All values are 0 in this chart"));
+        return ;
+    }
+
+    int cp = 0;
+    int pos = 0;
+    unsigned int count = 0;
+    ChartRect = p->xForm(QRect(2, 2, right - 4, bottom - 4));
+    Angels.clear();
+    for (std::list<double>::iterator i = Values.begin();i != Values.end();i++)
+    {
+        count++;
+        int size = int(*i * 5760 / tot);
+        if (count == Values.size())
+            size = 5760 - pos;
+
+        if (size > 0)
+        {
+            p->save();
+            QBrush brush(toChartBrush(cp));
+            p->setBrush(brush.color());
+            p->drawPie(2, 2, right - 4, bottom - 4, pos, size);
+            if (brush.style() != QBrush::SolidPattern)
+            {
+                p->setBrush(QBrush(Qt::white, brush.style()));
+                p->drawPie(2, 2, right - 4, bottom - 4, pos, size);
+            }
+            p->restore();
+            pos += size;
+        }
+        Angels.insert(Angels.end(), pos);
+        cp++;
+    }
+}
+
+#ifndef M_PI
+#define M_PI 3.1415926535897932384626433832795
+#endif
+
+QString toPieChart::findLabel(QPoint p)
+{
+    if (ChartRect.contains(p))
+    {
+        QPoint center = ChartRect.center();
+        p -= center;
+        int iang;
+        if (p.x() != 0)
+        {
+            double angle = atan(double( -p.y()) / p.x());
+            iang = int(angle * 180 * 16 / M_PI);
+            if (p.x() < 0)
+                iang += 180 * 16;
+            if (iang < 0)
+                iang += 360 * 16;
+        }
+        else if (p.y() <= 0)
+            iang = 90 * 16;
+        else
+            iang = 270 * 16;
+
+        std::list<int>::iterator i = Angels.begin();
+        std::list<QString>::iterator j = Labels.begin();
+        while (i != Angels.end() && j != Labels.end())
+        {
+            if ((*i) > iang)
+                return *j;
+            i++;
+            j++;
+        }
+    }
+    return QString::null;
+}
+
+void toPieChart::paintEvent(QPaintEvent *)
+{
+    QPainter p(this);
+    paintChart(&p, QRect(0, 0, width(), height()));
+}
+
+void toPieChart::editPrint(void)
+{
+    TOPrinter printer;
+    printer.setMinMax(1, 1);
+    if (printer.setup())
+    {
+        printer.setCreator(tr(TOAPPNAME));
+        QPainter painter(&printer);
+        QPaintDeviceMetrics metrics(&printer);
+        QRect rect(0, 0, metrics.width(), metrics.height());
+        paintChart(&painter, rect);
+    }
+}
+
+toPieConnector::toPieConnector(toPieChart *pieChart, toLineChart *lineChart)
+{
+    PieChart = pieChart;
+    LineChart = lineChart;
+    Flow = false;
+    LastStamp = 0;
+
+    connect(PieChart, SIGNAL(destroyed()), this, SLOT(deleteLater()));
+    connect(LineChart, SIGNAL(destroyed()), this, SLOT(deleteLater()));
+    connect(PieChart, SIGNAL(newValues(std::list<double> &, std::list<QString> &)),
+            this, SLOT(newValues(std::list<double> &, std::list<QString> &)));
+}
+
+void toPieConnector::newValues(std::list<double> &values, std::list<QString> &labels)
+{
+    std::map<QString, double> reorderMap;
+    std::list<double>::iterator val = values.begin();
+    std::list<QString>::iterator lab = labels.begin();
+    while (val != values.end() && lab != labels.end())
+    {
+        reorderMap[*lab] = *val;
+        val++;
+        lab++;
+    }
+
+    std::list<QString> newlabs = LineChart->labels();
+    std::list<double> reordVals;
+    std::map<QString, double>::iterator rv;
+    lab = newlabs.begin();
+
+    while (lab != newlabs.end())
+    {
+        rv = reorderMap.find(*lab);
+        if (rv != reorderMap.end())
+        {
+            reordVals.insert(reordVals.end(), (*rv).second);
+            reorderMap.erase(rv);
+        }
+        else
+            reordVals.insert(reordVals.end(), 0);
+        lab++;
+    }
+    if (reorderMap.begin() != reorderMap.end())
+    {
+        rv = reorderMap.begin();
+        while (rv != reorderMap.end())
+        {
+            newlabs.insert(newlabs.end(), (*rv).first);
+            reordVals.insert(reordVals.end(), (*rv).second);
+            rv++;
+        }
+        LineChart->setLabels(newlabs);
+    }
+
+    QString nowstr;
+    try
+    {
+        nowstr = toNow(toCurrentConnection(PieChart));
+    }
+    catch (...)
+    {}
+
+    if (Flow)
+    {
+        time_t now = time(NULL);
+        if (now != LastStamp)
+        {
+            if (LastValues.size() > 0)
+            {
+                std::list<double> dispVal;
+                std::list<double>::iterator i = reordVals.begin();
+                std::list<double>::iterator j = LastValues.begin();
+                while (i != reordVals.end() && j != LastValues.end())
+                {
+                    dispVal.insert(dispVal.end(), (*i - *j) / (now - LastStamp));
+                    i++;
+                    j++;
+                }
+                LineChart->addValues(dispVal, nowstr);
+            }
+            LastValues = reordVals;
+            LastStamp = now;
+        }
+    }
+    else
+        LineChart->addValues(reordVals, nowstr);
+}

Added: kde-extras/tora/branches/upstream/current/src/topiechart.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/topiechart.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/topiechart.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,247 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOPIECHART_H
+#define TOPIECHART_H
+
+#include "config.h"
+
+#include <list>
+#include <qwidget.h>
+
+class QPopupMenu;
+class toLineChart;
+class toPieTip;
+
+/** A widget that displays a piechart.
+ */
+
+class toPieChart : public QWidget
+{
+    Q_OBJECT
+
+    std::list<double> Values;
+    std::list<QString> Labels;
+    QString Postfix;
+    bool Legend;
+    bool DisplayPercent;
+    QString Title;
+    QPopupMenu *Menu;
+
+    QRect ChartRect;
+    std::list<int> Angels;
+
+    toPieTip* AllTip;
+
+protected:
+    virtual void mouseDoubleClickEvent(QMouseEvent *e);
+    virtual void mousePressEvent(QMouseEvent *e);
+public:
+    /** Create a new piechart.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toPieChart(QWidget *parent = NULL, const char *name = NULL, WFlags f = 0);
+
+    virtual ~toPieChart();
+
+    /** Create a copy of a piechart.
+     * @param pie Pie chart to copy.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toPieChart(toPieChart *pie, QWidget *parent = NULL, const char *name = NULL, WFlags f = 0);
+
+    /** Set the postfix text to append the current values when they are displayed in the
+     * pie.
+     * @param post Postfix string, no space will be added after the value before the string
+     *             so if you want the space you need to specify it first in this string.
+     */
+    void setPostfix(const QString &post)
+    {
+        Postfix = post;
+        update();
+    }
+    /** Get the postfix string.
+     * @return Current postfix string.
+     */
+    const QString &postfix(void) const
+    {
+        return Postfix;
+    }
+
+    /** Set title of the chart. Set to empty string to not display title.
+     * @param title Title of chart.
+     */
+    void setTitle(const QString &title = QString::null)
+    {
+        Title = title;
+        update();
+    }
+    /** Get title of chart.
+     * @return Title of chart.
+     */
+    const QString &title(void)
+    {
+        return Title;
+    }
+
+    /** Display piecharts in percent instead of actual values
+     * @param pct Wether or not to display percent only.
+     */
+    void setDisplayPercent(bool pct)
+    {
+        DisplayPercent = pct;
+        update();
+    }
+    /** Check if only percent is displayed
+     * @return True if only percent is displayed.
+     */
+    bool displayPercent(void) const
+    {
+        return DisplayPercent;
+    }
+
+    /** Specify if legend should be displayed to the right of the graph, default is on.
+     * @param on Whether to display graph or not.
+     */
+    void showLegend(bool on)
+    {
+        Legend = on;
+        update();
+    }
+    /** Check if legend is displayed or not.
+     * @return If legend is displayed or not.
+     */
+    bool legend(void) const
+    {
+        return Legend;
+    }
+
+    /** Set value list of piechart.
+     * @param values List of values to display.
+     * @param labels List of labels, if label is empty it will not appear in legend.
+     */
+    void setValues(std::list<double> &values, std::list<QString> &labels);
+    /** Add a value to the piechart.
+     * @param value New value to add.
+     * @param label Label of this new value.
+     */
+    void addValue(double value, const QString &label)
+    {
+        Values.insert(Values.end(), value);
+        Labels.insert(Labels.end(), label);
+        update();
+    }
+    /** Get list of values.
+     * @return Values in piechart.
+     */
+    std::list<double> &values(void)
+    {
+        return Values;
+    }
+    /** Get labels of piechart.
+     * @return List of labels.
+     */
+    std::list<QString> &labels(void)
+    {
+        return Labels;
+    }
+    /** Find the label if any of a point in the chart.
+     */
+    QString findLabel(QPoint p);
+    /** Get rectangle that the chart is contained in.
+     */
+    QRect chartRectangle()
+    {
+        return ChartRect;
+    }
+signals:
+    void newValues(std::list<double> &values, std::list<QString> &labels);
+public slots:
+    /** Print the chart
+     */
+    void editPrint(void);
+    /** Open in new window
+     */
+    void openCopy(void);
+protected:
+    /** Paint chart in a given rectangle.
+     */
+    virtual void paintChart(QPainter *p, QRect rect);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void paintEvent(QPaintEvent *e);
+};
+
+/** This class can be used to make a line chart (Or bar chart) follow the values in a piechart.
+ * After it is constructed it will destroy itself if any of the two involved classes are deleted.
+ * The only available option is wether to use flow (Differences since last time) or not when
+ * updating the linechart. Requires that each valueset has a unique label to work.
+ */
+
+class toPieConnector : public QObject
+{
+    Q_OBJECT
+
+    toPieChart *PieChart;
+    toLineChart *LineChart;
+
+    bool Flow;
+    time_t LastStamp;
+    std::list<double> LastValues;
+public:
+    toPieConnector(toPieChart *pieChart, toLineChart *lineChart);
+    /** Set flow status.
+     */
+    void setFlow(bool flow)
+    {
+        Flow = flow;
+    }
+    /** Check flow status.
+     */
+    bool flow(void) const
+    {
+        return Flow;
+    }
+private slots:
+    void newValues(std::list<double> &values, std::list<QString> &labels);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/topreferences.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/topreferences.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/topreferences.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,161 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "toglobalsetting.h"
+#include "tohelp.h"
+#include "tomain.h"
+#include "topreferences.h"
+#include "topreferencesui.h"
+#include "tosyntaxsetup.h"
+
+#include <qframe.h>
+#include <qlayout.h>
+#include <qlistbox.h>
+
+#include "topreferences.moc"
+#include "topreferencesui.moc"
+
+void toPreferences::addWidget(QListBoxItem *item, QWidget *widget)
+{
+    Layout->addWidget(widget);
+    Tabs[item] = widget;
+    if (!Shown)
+        Shown = widget;
+    else
+        widget->hide();
+}
+
+void toPreferences::selectTab(QListBoxItem *item)
+{
+    QWidget *tab = Tabs[item];
+    if (tab)
+    {
+        if (Shown)
+            Shown->hide();
+        tab->show();
+        Shown = tab;
+    }
+}
+
+void toPreferences::displayPreferences(QWidget *parent)
+{
+    toPreferences dialog(parent, "Options", true);
+    if (dialog.exec())
+        dialog.saveSetting();
+}
+
+void toPreferences::saveSetting(void)
+{
+
+    for (std::map<QListBoxItem *, QWidget *>::iterator i = Tabs.begin();i != Tabs.end();i++)
+    {
+        toSettingTab *tab = dynamic_cast<toSettingTab *>((*i).second);
+        if (tab)
+            tab->saveSetting();
+    }
+    toConfigurationSingle::Instance().saveConfig();
+}
+
+toPreferences::toPreferences(QWidget* parent, const char* name, bool modal, WFlags fl)
+        : toPreferencesUI(parent, name, modal, fl), toHelpContext(QString::fromLatin1("preferences.html"))
+{
+    try
+    {
+        toHelp::connectDialog(this);
+        Shown = NULL;
+
+        Layout = new QVBoxLayout(Parent);
+
+        QListBoxText *item;
+        item = new QListBoxText(TabSelection, tr("Global Settings"));
+        addWidget(item, new toGlobalSetting(Parent));
+
+        item = new QListBoxText(TabSelection, tr("Editor Settings"));
+        addWidget(item, new toSyntaxSetup(Parent));
+
+        item = new QListBoxText(TabSelection, tr("Database Settings"));
+        addWidget(item, new toDatabaseSetting(Parent));
+
+        std::list<QCString> prov = toConnectionProvider::providers();
+        for (std::list<QCString>::iterator i = prov.begin();i != prov.end();i++)
+        {
+            QWidget *tab = toConnectionProvider::configurationTab(*i, Parent);
+            if (tab)
+            {
+                QString str(QString::fromLatin1(" "));
+                str.append(QString::fromLatin1(*i));
+                addWidget(new QListBoxText(TabSelection, str), tab);
+            }
+        }
+
+        item = new QListBoxText(TabSelection, tr("Tools"));
+        addWidget(item, new toToolSetting(Parent));
+
+        TabSelection->setCurrentItem(0);
+
+        std::map<QCString, toTool *> tools = toTool::tools();
+        std::map<QCString, toTool *> newSort;
+        {
+            for (std::map<QCString, toTool *>::iterator i = tools.begin();i != tools.end();i++)
+                newSort[(*i).second->name()] = (*i).second;
+        }
+
+        {
+            for (std::map<QCString, toTool *>::iterator i = newSort.begin();i != newSort.end();i++)
+            {
+                QWidget *tab = (*i).second->configurationTab(Parent);
+                if (tab)
+                {
+                    QString str(QString::fromLatin1(" "));
+                    str.append((*i).first);
+                    addWidget(new QListBoxText(TabSelection, str), tab);
+                }
+            }
+        }
+    }
+    TOCATCH
+}
+
+void toPreferences::help(void)
+{
+    if (Shown)
+        Shown->setFocus();
+    toHelp::displayHelp(this);
+}

Added: kde-extras/tora/branches/upstream/current/src/topreferences.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/topreferences.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/topreferences.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOPREFERENCES_H
+#define TOPREFERENCES_H
+
+#include "config.h"
+
+#include <qvariant.h>
+#include <qdialog.h>
+#include <map>
+
+#include "tohelp.h"
+#include "topreferencesui.h"
+
+class QHBoxLayout;
+
+class toPreferences : public toPreferencesUI, public toHelpContext
+{
+    Q_OBJECT
+
+    QWidget *Shown;
+    QVBoxLayout *Layout;
+
+    std::map<QListBoxItem *, QWidget *> Tabs;
+
+    void addWidget(QListBoxItem *, QWidget *);
+public:
+    toPreferences(QWidget* parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0);
+
+
+    static void displayPreferences(QWidget *parent);
+
+public slots:
+    void saveSetting(void);
+    void selectTab(QListBoxItem *item);
+    void help(void);
+};
+
+#endif // TOPREFERENCES_H

Added: kde-extras/tora/branches/upstream/current/src/topreferencesui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/topreferencesui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/topreferencesui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,119 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'topreferencesui.ui'
+**
+** Created: Tue Sep 18 08:21:29 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "topreferencesui.h"
+
+#include <qvariant.h>
+#include <qlistbox.h>
+#include <qframe.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toPreferencesUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toPreferencesUI::toPreferencesUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toPreferencesUI" );
+    toPreferencesUILayout = new QGridLayout( this, 1, 1, 11, 6, "toPreferencesUILayout"); 
+
+    TabSelection = new QListBox( this, "TabSelection" );
+    TabSelection->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)4, (QSizePolicy::SizeType)7, 0, 0, TabSelection->sizePolicy().hasHeightForWidth() ) );
+
+    toPreferencesUILayout->addWidget( TabSelection, 0, 0 );
+
+    Parent = new QFrame( this, "Parent" );
+    Parent->setFrameShape( QFrame::NoFrame );
+    Parent->setFrameShadow( QFrame::Raised );
+
+    toPreferencesUILayout->addWidget( Parent, 0, 1 );
+
+    layout1 = new QHBoxLayout( 0, 0, 6, "layout1"); 
+
+    HelpButton = new QPushButton( this, "HelpButton" );
+    HelpButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)4, (QSizePolicy::SizeType)0, 0, 0, HelpButton->sizePolicy().hasHeightForWidth() ) );
+    layout1->addWidget( HelpButton );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Preferred, QSizePolicy::Minimum );
+    layout1->addItem( Spacer1 );
+
+    PushButton2_2 = new QPushButton( this, "PushButton2_2" );
+    layout1->addWidget( PushButton2_2 );
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+    PushButton1->setDefault( TRUE );
+    layout1->addWidget( PushButton1 );
+
+    PushButton2 = new QPushButton( this, "PushButton2" );
+    layout1->addWidget( PushButton2 );
+
+    toPreferencesUILayout->addMultiCellLayout( layout1, 1, 1, 0, 1 );
+    languageChange();
+    resize( QSize(588, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( TabSelection, SIGNAL( selectionChanged(QListBoxItem*) ), this, SLOT( selectTab(QListBoxItem*) ) );
+    connect( HelpButton, SIGNAL( clicked() ), this, SLOT( help() ) );
+    connect( PushButton2_2, SIGNAL( clicked() ), this, SLOT( saveSetting() ) );
+
+    // tab order
+    setTabOrder( TabSelection, HelpButton );
+    setTabOrder( HelpButton, PushButton2_2 );
+    setTabOrder( PushButton2_2, PushButton1 );
+    setTabOrder( PushButton1, PushButton2 );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toPreferencesUI::~toPreferencesUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toPreferencesUI::languageChange()
+{
+    setCaption( tr( "Preferences" ) );
+    HelpButton->setText( tr( "&Help" ) );
+    HelpButton->setAccel( QKeySequence( tr( "Alt+H" ) ) );
+    PushButton2_2->setText( tr( "Apply" ) );
+    PushButton1->setText( tr( "&Ok" ) );
+    PushButton1->setAccel( QKeySequence( tr( "Alt+O" ) ) );
+    PushButton2->setText( tr( "Cancel" ) );
+}
+
+void toPreferencesUI::help()
+{
+    qWarning( "toPreferencesUI::help(): Not implemented yet" );
+}
+
+void toPreferencesUI::selectTab(QListBoxItem*)
+{
+    qWarning( "toPreferencesUI::selectTab(QListBoxItem*): Not implemented yet" );
+}
+
+void toPreferencesUI::saveSetting()
+{
+    qWarning( "toPreferencesUI::saveSetting(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/topreferencesui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/topreferencesui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/topreferencesui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,55 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'topreferencesui.ui'
+**
+** Created: Tue Sep 18 08:21:29 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOPREFERENCESUI_H
+#define TOPREFERENCESUI_H
+
+#include <qvariant.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QListBox;
+class QListBoxItem;
+class QFrame;
+class QPushButton;
+
+class toPreferencesUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toPreferencesUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toPreferencesUI();
+
+    QListBox* TabSelection;
+    QFrame* Parent;
+    QPushButton* HelpButton;
+    QPushButton* PushButton2_2;
+    QPushButton* PushButton1;
+    QPushButton* PushButton2;
+
+public slots:
+    virtual void help();
+    virtual void selectTab(QListBoxItem *);
+    virtual void saveSetting();
+
+protected:
+    QGridLayout* toPreferencesUILayout;
+    QHBoxLayout* layout1;
+    QSpacerItem* Spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOPREFERENCESUI_H

Added: kde-extras/tora/branches/upstream/current/src/topreferencesui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/topreferencesui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/topreferencesui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,175 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>toPreferencesUI</class>
+<widget class="QDialog">
+    <property name="name">
+        <cstring>toPreferencesUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>588</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>Preferences</string>
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>11</number>
+        </property>
+        <property name="spacing">
+            <number>6</number>
+        </property>
+        <widget class="QListBox" row="0" column="0">
+            <property name="name">
+                <cstring>TabSelection</cstring>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>4</hsizetype>
+                    <vsizetype>7</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+        </widget>
+        <widget class="QFrame" row="0" column="1">
+            <property name="name">
+                <cstring>Parent</cstring>
+            </property>
+            <property name="frameShape">
+                <enum>NoFrame</enum>
+            </property>
+            <property name="frameShadow">
+                <enum>Raised</enum>
+            </property>
+        </widget>
+        <widget class="QLayoutWidget" row="1" column="0" rowspan="1" colspan="2">
+            <property name="name">
+                <cstring>layout1</cstring>
+            </property>
+            <hbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>HelpButton</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>4</hsizetype>
+                            <vsizetype>0</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Help</string>
+                    </property>
+                    <property name="accel">
+                        <string>Alt+H</string>
+                    </property>
+                </widget>
+                <spacer>
+                    <property name="name">
+                        <cstring>Spacer1</cstring>
+                    </property>
+                    <property name="orientation">
+                        <enum>Horizontal</enum>
+                    </property>
+                    <property name="sizeType">
+                        <enum>Preferred</enum>
+                    </property>
+                    <property name="sizeHint">
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>PushButton2_2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Apply</string>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>PushButton1</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Ok</string>
+                    </property>
+                    <property name="accel">
+                        <string>Alt+O</string>
+                    </property>
+                    <property name="default">
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget class="QPushButton">
+                    <property name="name">
+                        <cstring>PushButton2</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Cancel</string>
+                    </property>
+                </widget>
+            </hbox>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toPreferencesUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>toPreferencesUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>TabSelection</sender>
+        <signal>selectionChanged(QListBoxItem*)</signal>
+        <receiver>toPreferencesUI</receiver>
+        <slot>selectTab(QListBoxItem*)</slot>
+    </connection>
+    <connection>
+        <sender>HelpButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toPreferencesUI</receiver>
+        <slot>help()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2_2</sender>
+        <signal>clicked()</signal>
+        <receiver>toPreferencesUI</receiver>
+        <slot>saveSetting()</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>TabSelection</tabstop>
+    <tabstop>HelpButton</tabstop>
+    <tabstop>PushButton2_2</tabstop>
+    <tabstop>PushButton1</tabstop>
+    <tabstop>PushButton2</tabstop>
+</tabstops>
+<slots>
+    <slot>help()</slot>
+    <slot>selectTab(QListBoxItem *)</slot>
+    <slot>saveSetting()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/toprofiler.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toprofiler.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toprofiler.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,675 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tohighlightedtext.h"
+#include "toprofiler.h"
+#include "toresultitem.h"
+#include "toresultlong.h"
+#include "tosql.h"
+#include "totool.h"
+#include "toworksheet.h"
+
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qmessagebox.h>
+#include <qpainter.h>
+#include <qspinbox.h>
+#include <qsplitter.h>
+#include <qtabwidget.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+
+#include "toprofiler.moc"
+
+#include "icons/clock.xpm"
+#include "icons/execute.xpm"
+#include "icons/refresh.xpm"
+#if 0
+#include "icons/background.xpm"
+#endif
+
+static toSQL SQLProfilerRuns("toProfiler:ProfilerRuns",
+                             "create table plsql_profiler_runs\n"
+                             "(\n"
+                             "  runid           number primary key,\n"
+                             "  related_run     number,\n"
+                             "  run_owner       varchar2(32),\n"
+                             "  run_date        date,\n"
+                             "  run_comment     varchar2(2047),\n"
+                             "  run_total_time  number,\n"
+                             "  run_system_info varchar2(2047),\n"
+                             "  run_comment1    varchar2(2047),\n"
+                             "  spare1          varchar2(256)\n"
+                             ")",
+                             "Create table plsql_profiler_runs");
+
+static toSQL SQLProfilerUnits("toProfiler:ProfilerUnits",
+                              "create table plsql_profiler_units\n"
+                              "(\n"
+                              "  runid              number references plsql_profiler_runs,\n"
+                              "  unit_number        number,\n"
+                              "  unit_type          varchar2(32),\n"
+                              "  unit_owner         varchar2(32),\n"
+                              "  unit_name          varchar2(32),\n"
+                              "  unit_timestamp     date,\n"
+                              "  total_time         number DEFAULT 0 NOT NULL,\n"
+                              "  spare1             number,\n"
+                              "  spare2             number,\n"
+                              "  primary key (runid, unit_number)\n"
+                              ")",
+                              "Create table plsql_profiler_unites");
+
+static toSQL SQLProfilerData("toProfiler:ProfilerData",
+                             "create table plsql_profiler_data\n"
+                             "(\n"
+                             "  runid           number,\n"
+                             "  unit_number     number,\n"
+                             "  line#           number not null,\n"
+                             "  total_occur     number,\n"
+                             "  total_time      number,\n"
+                             "  min_time        number,\n"
+                             "  max_time        number,\n"
+                             "  spare1          number,\n"
+                             "  spare2          number,\n"
+                             "  spare3          number,\n"
+                             "  spare4          number,\n"
+                             "  primary key (runid, unit_number, line#),\n"
+                             "  foreign key (runid, unit_number) references plsql_profiler_units\n"
+                             ")",
+                             "Create table plsql_profiler_data");
+
+static toSQL SQLProfilerNumber("toProfiler:ProfilerNumber",
+                               "create sequence plsql_profiler_runnumber start with 1 nocache",
+                               "Create sequence plsql_profiler_runnumber");
+
+static toSQL SQLProfilerDetect("toProfiler:ProfilerDetect",
+                               "select count(1)\n"
+                               "  from plsql_profiler_data a,\n"
+                               "       plsql_profiler_units b,\n"
+                               "       plsql_profiler_runs c\n"
+                               " where a.runid = null and b.runid = null and c.runid = null",
+                               "Detect if profiler tables seems to exist");
+
+static toSQL SQLListUnits("toProfiler:ListUnits",
+                          "SELECT unit_owner \"Owner\",\n"
+                          "       unit_name \"Name\",\n"
+                          "       total_time \"Total time\",\n"
+                          "       unit_timestamp \"Changed\",\n"
+                          "       unit_type \" \",\n"
+                          "       runid \" \",\n"
+                          "       unit_number \" \"\n"
+                          "  FROM plsql_profiler_units\n"
+                          " WHERE runid = :run<char[101]>\n"
+                          "   AND unit_owner != '<anonymous>'\n"
+                          " ORDER BY total_time DESC",
+                          "Get information of available units for a run, same columns and binds");
+
+static toSQL SQLListSource("toProfiler:ListSource",
+                           "SELECT *\n"
+                           "  FROM (SELECT a.line \"#\",\n"
+                           "               NVL(b.total_occur,0) \"Count\",\n"
+                           "               b.total_time \"Total\",\n"
+                           "               b.max_time \"Max\",\n"
+                           "               b.min_time \"Min\",\n"
+                           "               TRANSLATE(a.text,'A'||CHR(10),'A') \"Source\"\n"
+                           "          FROM all_source a,\n"
+                           "               plsql_profiler_data b\n"
+                           "         WHERE a.owner = :owner<char[101]>\n"
+                           "           AND a.name = :name<char[101]>\n"
+                           "           AND a.type = :typ<char[101]>\n"
+                           "           AND b.runid = :run<char[101]>\n"
+                           "           AND b.unit_number = :unit<char[101]>\n"
+                           "           AND a.line = b.line#\n"
+                           "        UNION\n"
+                           "        SELECT a.line,\n"
+                           "               0,\n"
+                           "               0,\n"
+                           "               0,\n"
+                           "               0,\n"
+                           "               TRANSLATE(a.text,'A'||CHR(10),'A')\n"
+                           "          FROM all_source a\n"
+                           "         WHERE a.owner = :owner<char[101]>\n"
+                           "           AND a.name = :name<char[101]>\n"
+                           "           AND a.type = :typ<char[101]>\n"
+                           "           AND not exists (select 'X'\n"
+                           "                             from plsql_profiler_data b\n"
+                           "                            where b.runid = :run<char[1019>\n"
+                           "                              and b.unit_number = :unit<char[101]>\n"
+                           "                              and a.line = b.line#)\n"
+                           "       )\n"
+                           " ORDER BY 1",
+                           "Get information about an object with it's statistics data. This one is tricky, must have same binds and columns");
+
+static toSQL SQLRunInfo("toProfiler:RunInfo",
+                        "SELECT Related_Run \"Related run\",\n"
+                        "       Run_Owner \"Owner\",\n"
+                        "       Run_Comment \"Comment\",\n"
+                        "       to_char(to_date(trunc(run_total_time/1E9),'SSSSS'),'HH24:MI:SS')||'.'||\n"
+                        "       SUBSTR(TO_CHAR(TRUNC(run_total_time/1E7)-TRUNC(run_total_time/1E7,-2),'00'),2) \"Total time\",\n"
+                        "       Run_System_Info \"System info\",\n"
+                        "       Run_Comment1 \"Extra comment\"\n"
+                        "  FROM plsql_profiler_runs\n"
+                        " WHERE runid = :run<char[101]>",
+                        "Get information about a run, same binds");
+
+static toSQL SQLTotalTime("toProfiler:TotalTime",
+                          "SELECT run_total_time\n"
+                          "  FROM plsql_profiler_runs\n"
+                          " WHERE runid = :run<char[101]>",
+                          "Get total time of a run, same binds");
+
+static toSQL SQLListRuns("toProfiler:ListRuns",
+                         "SELECT runid,run_owner,run_comment,run_total_time\n"
+                         "  FROM plsql_profiler_runs\n"
+                         " ORDER BY runid DESC",
+                         "Get list of available runs, same columns");
+
+static toSQL SQLStartProfiler("toProfiler:StartProfiler",
+                              "DECLARE\n"
+                              "  PRAGMA AUTONOMOUS_TRANSACTION;\n"
+                              "BEGIN\n"
+                              "  DBMS_PROFILER.START_PROFILER(:comment<char[4000],in>,\n"
+                              "                               :com2<char[100],in>,\n"
+                              "                               :runid<char[4000],out>);\n",
+                              "Start profiler run, must have same binds");
+
+static toSQL SQLStopProfiler("toProfiler:StopProfiler",
+                             "  DBMS_PROFILER.STOP_PROFILER;\n"
+                             "  UPDATE plsql_profiler_units a\n"
+                             "     SET total_time = (SELECT SUM(total_time)\n"
+                             "                         FROM plsql_profiler_data b\n"
+                             "                        WHERE a.runid = b.runid\n"
+                             "                          AND a.unit_number = b.unit_number);\n"
+                             "  COMMIT;\n"
+                             "END;",
+                             "Stop profiler run");
+
+class toProfilerTool : public toTool
+{
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(clock_xpm);
+    }
+public:
+    toProfilerTool()
+            : toTool(120, "PL/SQL Profiler")
+    { }
+    virtual const char *menuItem()
+    {
+        return "PL/SQL Profiler";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        return new toProfiler(parent, connection);
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toProfilerTool ProfilerTool;
+
+static QString FormatTime(double tim)
+{
+    QString timstr;
+    if (tim >= 3600)
+        timstr.sprintf("%d:%02d:%02d.%02d",
+                       int(tim) / 3600,
+                       (int(tim) / 60) % 60,
+                       int(tim) % 60,
+                       int(tim*100) % 100);
+    else if (tim > 1)
+        timstr.sprintf("%d:%02d.%02d",
+                       (int(tim) / 60) % 60,
+                       int(tim) % 60,
+                       int(tim*100) % 100);
+    else if (tim > 0.001)
+        timstr.sprintf("%d ms", (int)(tim*1000));
+    else if (tim > 0)
+        timstr.sprintf("%d ns", (int)(tim*1E9));
+    else
+        timstr = "0";
+    return timstr;
+}
+
+class toProfilerUnits : public toResultLong
+{
+    double Total;
+public:
+class unitsItem : public toResultViewItem
+    {
+    public:
+        unitsItem(QListView *parent, QListViewItem *after, const QString &buf = QString::null)
+                : toResultViewItem(parent, after, buf)
+        { }
+        virtual void paintCell(QPainter *p, const QColorGroup &cg,
+                               int column, int width, int alignment)
+        {
+            if (column == 2)
+            {
+                toProfilerUnits *units = dynamic_cast<toProfilerUnits *>(listView());
+                if (!units)
+                {
+                    QListViewItem::paintCell(p, cg, column, width, alignment);
+                    return ;
+                }
+                double total = allText(column).toDouble();
+                QString timstr = FormatTime(total / 1E9);
+                double val = total / units->total();
+
+                p->fillRect(0, 0, int(val*width), height(), QBrush(blue));
+                p->fillRect(int(val*width), 0, width, height(),
+                            QBrush(isSelected() ? cg.highlight() : cg.base()));
+
+                QPen pen(isSelected() ? cg.highlightedText() : cg.foreground());
+                p->setPen(pen);
+                p->drawText(0, 0, width, height(), AlignRight, timstr);
+            }
+            else
+            {
+                QListViewItem::paintCell(p, cg, column, width, alignment);
+            }
+        }
+    };
+
+    virtual QListViewItem *createItem(QListViewItem *last, const QString &str)
+    {
+        return new unitsItem(this, last, str);
+    }
+    toProfilerUnits(QWidget *parent)
+            : toResultLong(true, false, toQuery::Normal, parent)
+    {
+        setColumnAlignment(3, AlignRight);
+        setSQL(SQLListUnits);
+    }
+    double total(void) const
+    {
+        return Total;
+    }
+    void setTotal(double total)
+    {
+        Total = total;
+        update();
+    }
+};
+
+class toProfilerSource : public toResultLong
+{
+    double TotalOccur;
+    double TotalTime;
+    double MaxTime;
+    double MinTime;
+public:
+class listItem : public toResultViewItem
+    {
+    public:
+        listItem(QListView *parent, QListViewItem *after, const QString &buf = QString::null)
+                : toResultViewItem(parent, after, buf)
+        { }
+        virtual QString text(int col) const
+        {
+            if (col == 2 || col == 3 || col == 4)
+                return FormatTime(allText(col).toDouble() / 1E9);
+            else
+                return toResultViewItem::text(col);
+        }
+
+        virtual int compare (QListViewItem *i, int col, bool ascending) const
+        {
+            if (col == 2 || col == 3 || col == 4)
+            {
+                toProfilerSource::listItem* item = dynamic_cast<toProfilerSource::listItem*>(i);
+                if (!i)
+                    return QListViewItem::compare(i, col, ascending);
+                else
+                {
+                    double val_in = allText(col).toDouble();
+                    double val_out = item->allText(col).toDouble();
+                    if (val_in > val_out)
+                        return 1;
+                    else if (val_in < val_out)
+                        return -1;
+                    else
+                        return 0;
+                }
+            }
+            else
+                return QListViewItem::compare(i, col, ascending);
+        }
+
+        virtual void paintCell(QPainter *p, const QColorGroup &cg,
+                               int column, int width, int alignment)
+        {
+            if (column == 1 || column == 2 || column == 3 || column == 4)
+            {
+                toProfilerSource *source = dynamic_cast<toProfilerSource *>(listView());
+                if (!source)
+                {
+                    QListViewItem::paintCell(p, cg, column, width, alignment);
+                    return ;
+                }
+                double total = allText(column).toDouble();
+                double val;
+                switch (column)
+                {
+                case 1:
+                    val = total / source->TotalOccur;
+                    break;
+                case 2:
+                    val = total / source->TotalTime;
+                    break;
+                case 3:
+                    val = total / source->MaxTime;
+                    break;
+                case 4:
+                    val = total / source->MinTime;
+                    break;
+                default:
+                    val = 0;
+                }
+
+                p->fillRect(0, 0, int(val*width), height(), QBrush(blue));
+                p->fillRect(int(val*width), 0, width, height(),
+                            QBrush(isSelected() ? cg.highlight() : cg.base()));
+
+                QPen pen(isSelected() ? cg.highlightedText() : cg.foreground());
+                p->setPen(pen);
+                p->drawText(0, 0, width, height(), AlignRight, text(column));
+            }
+            else
+            {
+                QListViewItem::paintCell(p, cg, column, width, alignment);
+            }
+        }
+    };
+
+    virtual QListViewItem *createItem(QListViewItem *last, const QString &str)
+    {
+        return new listItem(this, last, str);
+    }
+    void clearTotals(void)
+    {
+        TotalOccur = TotalTime = MaxTime = MinTime = 0;
+    }
+    toProfilerSource(QWidget *parent)
+            : toResultLong(true, false, toQuery::Normal, parent)
+    {
+        setColumnAlignment(1, AlignRight);
+        setColumnAlignment(2, AlignRight);
+        setColumnAlignment(3, AlignRight);
+        setColumnAlignment(4, AlignRight);
+        clearTotals();
+    }
+    void calcTotals(void)
+    {
+        clearTotals();
+        for (QListViewItem *qi = firstChild();qi;qi = qi->nextSibling())
+        {
+            toResultViewItem * item = dynamic_cast<toResultViewItem *>(qi);
+            if (item)
+            {
+                TotalOccur += item->allText(1).toDouble();
+                TotalTime += item->allText(2).toDouble();
+                double t;
+                t = item->allText(3).toDouble();
+                if (t > MaxTime)
+                    MaxTime = t;
+                t = item->allText(4).toDouble();
+                if (t > MinTime)
+                    MinTime = t;
+            }
+        }
+        update();
+    }
+    friend class toProfilerSource::listItem;
+};
+
+toProfiler::toProfiler(QWidget *parent, toConnection &connection)
+        : toToolWidget(ProfilerTool, "toprofiler.html", parent, connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("PL/SQL Profiler"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Refresh list"),
+                    tr("Refresh list"),
+                    this, SLOT(refresh()),
+                    toolbar);
+
+    toolbar->addSeparator();
+
+    new QLabel(tr("Repeat run") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    Repeat = new QSpinBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Repeat->setValue(5);
+    Repeat->setMaxValue(1000);
+
+    toolbar->addSeparator();
+
+    new QLabel(tr("Comment") + " ", toolbar);
+    Comment = new QLineEdit(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Comment->setText(tr("Unknown"));
+
+    toolbar->addSeparator();
+
+#if 0
+
+    Background = new QToolButton(toolbar);
+    Background->setToggleButton(true);
+    Background->setIconSet(QIconSet(QPixmap(const_cast<const char**>(background_xpm))));
+    QToolTip::add
+        (Background, tr("Run profiling in background"));
+
+    toolbar->addSeparator();
+#endif
+
+    new QToolButton(QPixmap(const_cast<const char**>(execute_xpm)),
+                    tr("Execute current profiling"),
+                    tr("Execute current profiling"),
+                    this, SLOT(execute()),
+                    toolbar);
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    Tabs = new QTabWidget(this);
+    Script = new toWorksheet(Tabs, NULL, connection);
+    Tabs->addTab(Script, tr("Script"));
+
+    Result = new QSplitter(Tabs);
+    Tabs->addTab(Result, tr("Result"));
+
+    QVBox *box = new QVBox(Result);
+    Run = new QComboBox(box);
+    QSplitter *vsplit = new QSplitter(Vertical, box);
+    Info = new toResultItem(2, vsplit);
+    Info->setSQL(SQLRunInfo);
+    connect(Run, SIGNAL(activated(int)), this, SLOT(changeRun()));
+    Units = new toProfilerUnits(vsplit);
+    Units->setReadAll(true);
+    Units->setSelectionMode(QListView::Single);
+    connect(Units, SIGNAL(selectionChanged()), this, SLOT(changeObject()));
+    Lines = new toProfilerSource(Result);
+    Lines->setReadAll(true);
+    connect(Lines, SIGNAL(done()), this, SLOT(calcTotals()));
+
+    LastUnit = CurrentRun = 0;
+    show();
+
+    try
+    {
+        toQuery query(connection, SQLProfilerDetect);
+    }
+    catch (const QString &)
+    {
+        int ret = TOMessageBox::warning(this,
+                                        tr("Profiler tables doesn't exist"),
+                                        tr("Profiler tables doesn't exist. Should TOra\n"
+                                           "try to create them in the current schema?"),
+                                        tr("&Yes"), tr("&No"), QString::null, 0, 1);
+        if (ret == 0)
+        {
+            try
+            {
+                connection.execute(SQLProfilerRuns);
+                connection.execute(SQLProfilerUnits);
+                connection.execute(SQLProfilerData);
+                connection.execute(SQLProfilerNumber);
+            }
+            catch (const QString &str)
+            {
+                toStatusMessage(str);
+                QTimer::singleShot(1, this, SLOT(noTables()));
+                return ;
+            }
+        }
+        else
+        {
+            QTimer::singleShot(1, this, SLOT(noTables()));
+            return ;
+        }
+    }
+
+    refresh();
+}
+
+void toProfiler::refresh(void)
+{
+    Run->clear();
+    Run->insertItem(tr("Select run"));
+    try
+    {
+        toQuery query(connection(), SQLListRuns);
+        int id = 1;
+        while (!query.eof())
+        {
+            QString runid = query.readValueNull();
+            QString owner = query.readValueNull();
+            QString comment = query.readValueNull();
+            double total = query.readValueNull().toDouble() / 1E9;
+            if (!owner.isEmpty())
+                owner = QString::fromLatin1("(") + owner + QString::fromLatin1(")");
+            QString timstr = QString::fromLatin1(" [") + FormatTime(total) + QString::fromLatin1("]");
+            Run->insertItem(runid + owner + QString::fromLatin1(": ") + comment + timstr);
+            if (runid.toInt() == CurrentRun)
+            {
+                Run->setCurrentItem(id);
+                changeRun();
+            }
+            id++;
+        }
+    }
+    TOCATCH
+}
+
+void toProfiler::execute(void)
+{
+    try
+    {
+        QString exc;
+        exc = toSQL::string(SQLStartProfiler, connection());
+        for (int i = 0;i < Repeat->value();i++)
+        {
+            exc += Script->editor()->text();
+            exc += QString::fromLatin1("\n");
+        }
+        exc += toSQL::string(SQLStopProfiler, connection());
+
+        toQuery query(connection(),
+                      exc,
+                      Comment->text(),
+                      tr("%1 runs").arg(Repeat->value()));
+        CurrentRun = query.readValue().toInt();
+        if (CurrentRun > 0)
+        {
+            Tabs->showPage(Result);
+            refresh();
+        }
+        else
+            toStatusMessage(tr("Something went wrong collecting statistics"));
+    }
+    TOCATCH
+}
+
+void toProfiler::changeRun(void)
+{
+    QString t = Run->currentText();
+    int pos = t.find(QString::fromLatin1("("));
+    if (pos < 0)
+        pos = t.find(QString::fromLatin1(":"));
+    if (pos >= 0)
+        CurrentRun = t.mid(0, pos).toInt();
+    QString run = QString::number(CurrentRun);
+    try
+    {
+        toQList vals = toQuery::readQuery(connection(), SQLTotalTime, run);
+        Units->setTotal(toShift(vals).toDouble());
+        Units->changeParams(run);
+        Info->changeParams(run);
+    }
+    TOCATCH
+}
+
+void toProfiler::calcTotals(void)
+{
+    Lines->calcTotals();
+}
+
+void toProfiler::changeObject(void)
+{
+    QListViewItem *qi = Units->selectedItem();
+    toResultViewItem *item = qi ? dynamic_cast<toResultViewItem *>(qi) : NULL;
+    if (item)
+    {
+        toQList par;
+        toPush(par, toQValue(item->allText(0)));
+        toPush(par, toQValue(item->allText(1)));
+        toPush(par, toQValue(item->allText(4)));
+        toPush(par, toQValue(item->allText(5)));
+        toPush(par, toQValue(item->allText(6)));
+        Lines->clearTotals();
+        try
+        {
+            Lines->query(toSQL::string(SQLListSource, connection()), par);
+        }
+        TOCATCH
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toprofiler.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toprofiler.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toprofiler.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,88 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOPROFILER_H
+#define TOPROFILER_H
+
+#include "config.h"
+#include "totool.h"
+
+class QComboBox;
+class QLineEdit;
+class QSpinBox;
+class QSplitter;
+class QTabWidget;
+class QToolButton;
+class toProfilerSource;
+class toProfilerUnits;
+class toResultItem;
+class toResultLong;
+class toWorksheet;
+
+class toProfiler : public toToolWidget
+{
+    Q_OBJECT
+
+    int CurrentRun;
+    int LastUnit;
+
+    QToolButton *Background;
+    QSpinBox *Repeat;
+    QLineEdit *Comment;
+    QTabWidget *Tabs;
+    QSplitter *Result;
+
+    QComboBox *Run;
+    toResultItem *Info;
+    toProfilerUnits *Units;
+    toProfilerSource *Lines;
+    toWorksheet *Script;
+public:
+    toProfiler(QWidget *parent, toConnection &connection);
+public slots:
+    void refresh(void);
+    void changeRun(void);
+    void execute(void);
+    void changeObject(void);
+    void calcTotals(void);
+    void noTables(void)
+    {
+        close(false);
+    }
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toproject.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toproject.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toproject.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,640 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "tomemoeditor.h"
+#include "toproject.h"
+#include "toworksheet.h"
+
+#include <qfile.h>
+#include <qfileinfo.h>
+#include <qlabel.h>
+#include <qregexp.h>
+#include <qtimer.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qworkspace.h>
+
+#include "toproject.moc"
+
+#include "icons/addproject.xpm"
+#include "icons/filesave.xpm"
+#include "icons/new.xpm"
+#include "icons/sql.xpm"
+#include "icons/trash.xpm"
+#include "icons/up.xpm"
+#include "icons/down.xpm"
+
+static toProjectTemplate ProjectTemplate;
+
+#ifdef TO_KDE
+#define PROJECT_EXTENSIONS "*.sql *.pkg *.pkb|SQL files\n*.tpr|Project files\n*.txt|Text files\n*|All files"
+#else
+#define PROJECT_EXTENSIONS "SQL (*.sql *.pkg *.pkb),Project files (*.tpr) ,Text (*.txt), All (*)"
+#endif
+
+bool toProjectTemplateItem::project(void)
+{
+    if (!parent())
+        return true;
+    if (Filename.length() > 4 && Filename.mid(Filename.length() - 4, 4) == ".tpr")
+        return true;
+    return false;
+}
+
+void toProjectTemplateItem::setup(const QString &name, bool open)
+{
+    Order = -1;
+    setFilename(name);
+    if (project() && !Filename.isEmpty() && open)
+    {
+        try
+        {
+            QString data = QString::fromUtf8(toReadFile(Filename));
+            QStringList files = QStringList::split(QRegExp(QString::fromLatin1("\n")), data);
+            toProjectTemplateItem *last = NULL;
+            for (unsigned int i = 0;i < files.count();i++)
+                last = new toProjectTemplateItem(this, last, files[i]);
+        }
+        catch (const QString &exc)
+        {
+            toStatusMessage(exc);
+        }
+    }
+}
+
+void toProjectTemplateItem::setFilename(const QString &name)
+{
+    if (parent())
+    {
+        int pos = name.findRev(QString::fromLatin1("/"));
+        if (pos < 0)
+            pos = name.findRev(QString::fromLatin1("\\"));
+        if (pos >= 0)
+            setText(0, name.mid(pos + 1));
+        else
+            setText(0, name);
+    }
+    Filename = name;
+}
+
+toProjectTemplateItem::toProjectTemplateItem(toTemplateItem *item,
+        QListViewItem *after,
+        QString name, bool open)
+        : toTemplateItem(item, QString::null, after)
+{
+    setup(name, open);
+}
+
+toProjectTemplateItem::toProjectTemplateItem(QListView *item, QString name, bool open)
+        : toTemplateItem(ProjectTemplate, item, qApp->translate("toProject", "SQL Project"))
+{
+    setup(name, open);
+}
+
+int toProjectTemplateItem::order(bool asc)
+{
+    if (asc)
+    {
+        toProjectTemplateItem *item = previousSibling();
+        if (item)
+        {
+            int attemptOrder = item->Order + 1;
+            if (attemptOrder != Order)
+                Order = item->order(asc) + 1;
+        }
+        else
+            Order = 1;
+    }
+    else
+    {
+        toProjectTemplateItem *item = dynamic_cast<toProjectTemplateItem *>(nextSibling());
+        if (item)
+        {
+            int attemptOrder = item->Order + 1;
+            if (attemptOrder != Order)
+                Order = item->order(asc) + 1;
+        }
+        else
+            Order = 1;
+    }
+    return Order;
+}
+
+toProjectTemplateItem *toProjectTemplateItem::previousSibling()
+{
+    QListViewItem *item = itemAbove();
+    if (!item)
+        return NULL;
+    if (item == parent())
+        return NULL;
+    while (item && item->parent() != parent())
+        item = item->parent();
+    return dynamic_cast<toProjectTemplateItem *>(item);
+}
+
+// Here be dragons! Basically all the order stuff will retain whatever order the
+// items were created in.
+
+QString toProjectTemplateItem::key(int col, bool asc) const
+{
+    if (!parent())
+        return text(col);
+    int no = ((toProjectTemplateItem *)this)->order(asc);
+    QString ret;
+    ret.sprintf("%010d", no);
+    return ret;
+}
+
+void toProjectTemplateItem::selected(void)
+{
+    if (project())
+        return ;
+    try
+    {
+        toWorksheet::fileWorksheet(Filename);
+    }
+    TOCATCH
+}
+
+QWidget *toProjectTemplateItem::selectedWidget(QWidget *parent)
+{
+    toProject *proj = ProjectTemplate.selectedWidget(parent);
+    proj->selectItem(this);
+    return proj;
+}
+
+toProject *toProjectTemplate::selectedWidget(QWidget *parent)
+{
+    if (!Details)
+        Details = new toProject(ProjectTemplate.root(), parent);
+    return Details;
+}
+
+void toProjectTemplate::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    bool any = false;
+    std::map<QCString, QString>::iterator i = data.find(prefix + ":");
+    while (i != data.end())
+    {
+        if ((*i).first.mid(0, prefix.length()) == prefix)
+        {
+            Import[(*i).first.mid(prefix.length() + 1)] = (*i).second;
+            any = true;
+        }
+        else if (any)
+            break;
+        i++;
+    }
+}
+
+void toProjectTemplate::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    if (!Root)
+        return ;
+    std::map<QListViewItem *, int> itemMap;
+    QListViewItem *next;
+    int id = 0;
+    data[prefix + ":"] = Root->filename();
+    for (QListViewItem *item = Root->firstChild();item;item = next)
+    {
+        id++;
+        QCString nam = prefix;
+        nam += ":Items:";
+        nam += QString::number(id).latin1();
+        nam += ":";
+        itemMap[item] = id;
+        if (item->parent())
+            data[nam + "Parent"] = QString::number(itemMap[item->parent()]);
+        else
+            data[nam + "Parent"] = QString::fromLatin1("0");
+        if (item->isOpen())
+            data[nam + "Open"] = QString::fromLatin1("Yes");
+        toProjectTemplateItem *projitem = dynamic_cast<toProjectTemplateItem *>(item);
+        QString val;
+        if (projitem)
+            data[nam + "0"] = projitem->filename();
+
+        if (item->firstChild())
+            next = item->firstChild();
+        else if (item->nextSibling())
+            next = item->nextSibling();
+        else
+        {
+            next = item;
+            do
+            {
+                next = next->parent();
+            }
+            while (next && !next->nextSibling());
+            if (next)
+                next = next->nextSibling();
+            if (next == Root->nextSibling())
+                break;
+        }
+    }
+}
+
+void toProjectTemplate::insertItems(QListView *parent, QToolBar *toolbar)
+{
+    Root = new toProjectTemplateItem(parent, Import[""], false);
+    Root->setOpen(true);
+
+    int id = 1;
+    std::map<QCString, QString>::iterator i;
+    std::map<int, toProjectTemplateItem *> itemMap;
+
+    toProjectTemplateItem *last = NULL;
+
+    while ((i = Import.find(QCString("Items:") + QString::number(id).latin1() + ":Parent")) != Import.end())
+    {
+        QCString nam = QCString("Items:") + QString::number(id).latin1() + ":";
+        int parent = (*i).second.toInt();
+        if (parent)
+            last = new toProjectTemplateItem(itemMap[parent], last, Import[nam + "0"], false);
+        else
+            last = new toProjectTemplateItem(Root, last, Import[nam + "0"], false);
+        if (!Import[nam + "Open"].isEmpty())
+            last->setOpen(true);
+        itemMap[id] = last;
+        id++;
+    }
+
+    connect(parent, SIGNAL(selectionChanged(QListViewItem *)), this, SLOT(changeItem(QListViewItem *)));
+    AddFile = new QToolButton(QPixmap(const_cast<const char**>(addproject_xpm)),
+                              qApp->translate("toProject", "Add file to project"),
+                              qApp->translate("toProject", "Add file to project"),
+                              this, SLOT(addFile()),
+                              toolbar);
+    DelFile = new QToolButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                              qApp->translate("toProject", "Remove file from project"),
+                              qApp->translate("toProject", "Remove file from project"),
+                              this, SLOT(delFile()),
+                              toolbar);
+    AddFile->setEnabled(false);
+    DelFile->setEnabled(false);
+}
+
+void toProjectTemplate::changeItem(QListViewItem *item)
+{
+    bool ena = dynamic_cast<toProjectTemplateItem *>(item);
+    AddFile->setEnabled(ena);
+    DelFile->setEnabled(ena && item->parent());
+}
+
+void toProjectTemplate::removeItems(QListViewItem *item)
+{
+    delete item;
+}
+
+void toProjectTemplate::addFile(void)
+{
+    QString file = toOpenFilename(QString::null,
+                                  QString::fromLatin1(PROJECT_EXTENSIONS),
+                                  toMainWidget());
+    if (!file.isNull())
+    {
+        QListView *view = Root->listView();
+        toProjectTemplateItem *item = dynamic_cast<toProjectTemplateItem *>(view->currentItem());
+        if (item)
+        {
+            item->setOpen(true);
+            QListViewItem *last = item->firstChild();
+            while (last && last->nextSibling())
+                last = last->nextSibling();
+            if (item->project())
+                new toProjectTemplateItem(item, last, file);
+            else
+            {
+                item = dynamic_cast<toProjectTemplateItem *>(item->parent());
+                if (item)
+                    new toProjectTemplateItem(item, last, file);
+            }
+        }
+        if (Details)
+            Details->update();
+    }
+}
+
+void toProjectTemplate::delFile(void)
+{
+    QListView *view = Root->listView();
+    toProjectTemplateItem *item = dynamic_cast<toProjectTemplateItem *>(view->currentItem());
+    delete item;
+    if (Details)
+        Details->update();
+}
+
+void toProject::update(toProjectTemplateItem *sourceparent, toResultViewItem *parent)
+{
+    if (parent == NULL)
+    {
+        parent = new toResultViewItem(Project, NULL, tr("SQL Project"));
+        parent->setOpen(true);
+        ItemMap[parent] = sourceparent;
+    }
+    for (QListViewItem *item = sourceparent->firstChild();item;item = item->nextSibling())
+    {
+        toProjectTemplateItem * projitem = dynamic_cast<toProjectTemplateItem *>(item);
+        if (projitem)
+        {
+            QFile file(projitem->filename());
+            unsigned int size = file.size();
+            toResultViewItem *nitem;
+            nitem = new toResultViewItem(parent, NULL, projitem->filename());
+            if (projitem->project())
+                update(projitem, nitem);
+            else if (size > 0)
+                nitem->setText(1, QString::number(size));
+            nitem->setOpen(true);
+            if (projitem->isSelected())
+                nitem->setSelected(true);
+            ItemMap[nitem] = projitem;
+        }
+    }
+}
+
+toProject::toProject(toProjectTemplateItem *top, QWidget *parent)
+        : QVBox(parent)
+{
+    Root = top;
+
+    QToolBar *toolbar = toAllocBar(this, tr("SQL project"));
+    new QToolButton(QPixmap(const_cast<const char**>(addproject_xpm)),
+                    tr("Add file to project"),
+                    tr("Add file to project"),
+                    this, SLOT(addFile()),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(filesave_xpm)),
+                    tr("Save project"),
+                    tr("Save project"),
+                    this, SLOT(saveProject()),
+                    toolbar);
+    DelFile = new QToolButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                              tr("Remove file from project"),
+                              tr("Remove file from project"),
+                              this, SLOT(delFile()),
+                              toolbar);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(new_xpm)),
+                    tr("Add new subproject"),
+                    tr("Add new subproject"),
+                    this, SLOT(newProject()),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(sql_xpm)),
+                    tr("Generate SQL for this project"),
+                    tr("Generate SQL for this project"),
+                    this, SLOT(generateSQL()),
+                    toolbar);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(up_xpm)),
+                    tr("Move up in project"),
+                    tr("Move up in project"),
+                    this, SLOT(moveUp()),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(down_xpm)),
+                    tr("Move down in project"),
+                    tr("Move down in project"),
+                    this, SLOT(moveDown()),
+                    toolbar);
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    Project = new toListView(this);
+    Project->addColumn(tr("File"));
+    Project->addColumn(tr("Size"));
+    Project->setSelectionMode(QListView::Single);
+    Project->setRootIsDecorated(true);
+    Project->setSorting(0);
+    connect(Project, SIGNAL(selectionChanged()),
+            this, SLOT(selectionChanged()));
+    update();
+}
+
+void toProject::update(void)
+{
+    ItemMap.clear();
+    Project->clear();
+    update(Root, NULL);
+}
+
+void toProject::selectionChanged(void)
+{
+    QListViewItem *item = Project->selectedItem();
+    if (item)
+    {
+        DelFile->setEnabled(item->parent());
+        toProjectTemplateItem *oi = ItemMap[item];
+        if (oi)
+        {
+            oi->listView()->setSelected(oi, true);
+        }
+    }
+}
+
+void toProject::addFile(void)
+{
+    selectionChanged();
+    ProjectTemplate.addFile();
+}
+
+void toProject::delFile(void)
+{
+    selectionChanged();
+    ProjectTemplate.delFile();
+}
+
+void toProject::moveDown(void)
+{
+    QListViewItem *item = Project->selectedItem();
+    if (item)
+    {
+        toProjectTemplateItem *oi = ItemMap[item];
+        if (oi)
+        {
+            QListViewItem *item = oi->nextSibling();
+            QListViewItem *parent = oi->parent();
+            if (item && parent)
+            {
+                oi->moveItem(item);
+                update();
+            }
+        }
+    }
+}
+
+void toProject::moveUp(void)
+{
+    QListViewItem *item = Project->selectedItem();
+    if (item)
+    {
+        toProjectTemplateItem *oi = ItemMap[item];
+        if (oi)
+        {
+            QListViewItem *item = oi->previousSibling();
+            QListViewItem *parent = oi->parent();
+            if (item && parent)
+            {
+                item->moveItem(oi);
+                update();
+            }
+        }
+    }
+}
+
+void toProject::newProject(void)
+{
+    QListViewItem *item = Project->selectedItem();
+    if (item)
+    {
+        toProjectTemplateItem *oi = ItemMap[item];
+        if (oi)
+        {
+            QListViewItem *last = oi;
+            if (!oi->project())
+                oi = dynamic_cast<toProjectTemplateItem *>(oi->parent());
+            else
+            {
+                last = last->firstChild();
+                while (last && last->nextSibling())
+                    last = last->nextSibling();
+            }
+            if (oi)
+            {
+                new toProjectTemplateItem(oi, last, tr("untitled.tpr"));
+                Project->update();
+            }
+        }
+    }
+}
+
+void toProject::saveProject(void)
+{
+    QListViewItem *item = Project->selectedItem();
+    if (item)
+    {
+        toProjectTemplateItem *oi = ItemMap[item];
+        if (oi)
+        {
+            if (!oi->project())
+                oi = dynamic_cast<toProjectTemplateItem *>(oi->parent());
+            if (oi)
+            {
+                QFileInfo file(oi->filename());
+                QString fn = oi->filename();
+                fn = toSaveFilename(file.dirPath(), QString::fromLatin1("*.tpr"), this);
+                if (!fn.isEmpty())
+                {
+                    QString data;
+                    for (QListViewItem *item = oi->firstChild();item;item = item->nextSibling())
+                    {
+                        toProjectTemplateItem * projitem = dynamic_cast<toProjectTemplateItem *>(item);
+                        data += projitem->filename() + QString::fromLatin1("\n");
+                    }
+                    if (toWriteFile(fn, data.utf8()))
+                        oi->setFilename(fn);
+                }
+            }
+        }
+    }
+}
+
+QString toProject::generateSQL(toProjectTemplateItem *parent)
+{
+    QString data;
+    for (toProjectTemplateItem *item = dynamic_cast<toProjectTemplateItem *>(parent->firstChild());
+            item;
+            item = dynamic_cast<toProjectTemplateItem *>(item->nextSibling()))
+    {
+        if (item->project())
+        {
+            data += tr("\n\n-- Start of project %1\n\n").arg(item->filename());
+            data += generateSQL(item);
+        }
+        else
+        {
+            data += tr("\n\n-- Start of file %1\n\n").arg(item->filename());
+            data += QString::fromLocal8Bit(toReadFile(item->filename()));
+        }
+    }
+    return data;
+}
+
+void toProject::generateSQL(void)
+{
+    QListViewItem *item = Project->selectedItem();
+    if (item)
+    {
+        toProjectTemplateItem *oi = ItemMap[item];
+        if (oi)
+        {
+            if (!oi->project())
+                oi = dynamic_cast<toProjectTemplateItem *>(oi->parent());
+            if (oi)
+            {
+                QString data = generateSQL(oi);
+                new toMemoEditor(toMainWidget(), data);
+            }
+        }
+    }
+}
+
+toProject::~toProject()
+{
+    if (ProjectTemplate.Details == this)
+        ProjectTemplate.Details = NULL;
+}
+
+void toProject::selectItem(toProjectTemplateItem *item)
+{
+    for (std::map<QListViewItem *, toProjectTemplateItem *>::iterator i = ItemMap.begin();
+            i != ItemMap.end();
+            i++)
+    {
+        if ((*i).second == item)
+        {
+            disconnect(Project, SIGNAL(selectionChanged()),
+                       this, SLOT(selectionChanged()));
+            Project->setSelected((*i).first, true);
+            connect(Project, SIGNAL(selectionChanged()),
+                    this, SLOT(selectionChanged()));
+            break;
+        }
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toproject.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toproject.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toproject.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,136 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOPROJECT_H
+#define TOPROJECT_H
+
+#include "config.h"
+#include "totemplate.h"
+
+#include <map>
+
+class toProjectTemplateItem : public toTemplateItem
+{
+    QString Filename;
+    int Order;
+    void setup(const QString &name, bool open);
+    int order(bool asc);
+public:
+    toProjectTemplateItem(toTemplateItem *item, QListViewItem *after, QString name, bool open = true);
+    toProjectTemplateItem(QListView *item, QString name = QString::null, bool open = true);
+
+    virtual QString key(int col, bool asc) const;
+
+    const QString &filename(void) const
+    {
+        return Filename;
+    }
+    void setFilename(const QString &file);
+    bool project(void);
+    virtual void selected(void);
+    toProjectTemplateItem *previousSibling(void);
+
+    virtual QWidget *selectedWidget(QWidget *parent);
+};
+
+class toProject : public QVBox
+{
+    Q_OBJECT
+
+    toProjectTemplateItem *Root;
+    QToolButton *DelFile;
+    QListView *Project;
+    std::map<QListViewItem *, toProjectTemplateItem *> ItemMap;
+
+    void update(toProjectTemplateItem *sourceparent, toResultViewItem *parent);
+    QString generateSQL(toProjectTemplateItem *item);
+public:
+    toProject(toProjectTemplateItem *top, QWidget *parent);
+    ~toProject();
+
+    void selectItem(toProjectTemplateItem *);
+public slots:
+    void update(void);
+    void addFile(void);
+    void delFile(void);
+    void newProject(void);
+    void saveProject(void);
+    void generateSQL(void);
+    void selectionChanged(void);
+    void moveDown(void);
+    void moveUp(void);
+};
+
+class toProjectTemplate : public QObject, public toTemplateProvider
+{
+    Q_OBJECT
+
+    toProjectTemplateItem *Root;
+    std::map<QCString, QString> Import;
+
+    QToolButton *AddFile;
+    QToolButton *DelFile;
+
+    toProject *Details;
+public:
+    toProjectTemplate(void)
+            : QObject(NULL, "projecttemplate"), toTemplateProvider("project")
+    {
+        Details = NULL;
+    }
+
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+
+    virtual void insertItems(QListView *parent, QToolBar *toolbar);
+    virtual void removeItems(QListViewItem *item);
+
+    virtual toProject *selectedWidget(QWidget *parent);
+
+    virtual toProjectTemplateItem *root(void)
+    {
+        return Root;
+    }
+
+    friend class toProject;
+public slots:
+    void addFile();
+    void delFile();
+    void changeItem(QListViewItem *item);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toqsqlconnection.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toqsqlconnection.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toqsqlconnection.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1911 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "tomysqlkeywords.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <ctype.h>
+#include <string.h>
+
+#include <qapplication.h>
+#include <qcheckbox.h>
+#include <qgroupbox.h>
+#include <qlayout.h>
+#include <qsqldatabase.h>
+#include <qsqlerror.h>
+#include <qsqlfield.h>
+#include <qsqlrecord.h>
+#include <qsqlresult.h>
+
+static toSQL SQLVersion("toQSqlConnection:Version",
+                        "SHOW VARIABLES LIKE 'version'",
+                        "Show version of database, "
+                        "last value of first return record of result is used.",
+                        "3.0",
+                        "MySQL");
+
+static toSQL SQLVersionSapDb("toQSqlConnection:Version",
+                             "select ltrim(substring(kernel,10,10)) from versions",
+                             "",
+                             "",
+                             "SapDB");
+
+static toSQL SQLVersionPgSQL("toQSqlConnection:Version",
+                             "SELECT SUBSTR(version(), STRPOS(version(), ' ') + 1, STRPOS(version(), 'on') - STRPOS(version(), ' ') - 2)",
+                             "",
+                             "7.1",
+                             "PostgreSQL");
+
+static toSQL SQLListDatabases("toQSqlConnection:ListDatabases",
+                              "show databases",
+                              "List the available databases for a mysql connection",
+                              "3.0",
+                              "MySQL");
+
+static toSQL SQLListObjectsDatabase("toQSqlConnection:ListObjectsDatabase",
+                                    "show table status from :f1<noquote>",
+                                    "Get the available tables for a specific database (MySQL specific, won't work for anything else)",
+                                    "3.0",
+                                    "MySQL");
+
+static toSQL SQLListObjects("toQSqlConnection:ListObjects",
+                            "show tables",
+                            "Get the available tables for a connection",
+                            "3.0",
+                            "MySQL");
+
+static toSQL SQLListObjectsSapDb("toQSqlConnection:ListObjects",
+                                 "select tablename \"Tablename\",\n"
+                                 "       owner     \"Owner\",\n"
+                                 "       tabletype \"Type\",\n"
+                                 "from tables \n"
+                                 "where tabletype not in (\'SYNONYM\',\'RESULT\') \n"
+                                 "order by tablename",
+                                 "",
+                                 "",
+                                 "SapDB");
+
+static toSQL SQLListObjectsPgSQL("toQSqlConnection:ListObjects",
+                                 "SELECT c.relname AS \"Tablename\",\n"
+                                 "       n.nspname AS \"Owner\",\n"
+                                 "       c.relkind AS \"Type\"\n"
+                                 "  FROM pg_class c LEFT OUTER JOIN pg_namespace n ON c.relnamespace=n.oid\n"
+                                 " ORDER BY \"Tablename\"",
+                                 "",
+                                 "7.1",
+                                 "PostgreSQL");
+
+static toSQL SQLListSynonymsSapDb("toQSqlConnection:ListSynonyms",
+                                  "SELECT synonymname \"Synonym\", owner \"Schema\", tablename \"Object\"\n"
+                                  "from synonyms \n"
+                                  "where tabletype not in (\'SYNONYM\',\'RESULT\') \n"
+                                  "order by owner,tablename",
+                                  "Get synonym list, should have same columns",
+                                  "",
+                                  "SapDb");
+
+static toSQL SQLListSynonyms("toQSqlConnection:ListSynonyms",
+                             "SELECT c.relname AS \"Synonym\", n.nspname AS \"Schema\", c.relname AS \"Object\"\n"
+                             "  FROM pg_class c LEFT OUTER JOIN pg_namespace n ON c.relnamespace=n.oid\n"
+                             " ORDER BY n.nspname, c.relname",
+                             "",
+                             "7.1",
+                             "PostgreSQL");
+
+static toSQL SQLColumnComments("toQSqlConnection:ColumnComments",
+                               "select a.attname,b.description\n"
+                               "from\n"
+                               "  pg_attribute a,\n"
+                               "  pg_description b,\n"
+                               "  pg_class c LEFT OUTER JOIN pg_namespace n ON c.relowner=n.oid\n"
+                               "where\n"
+                               "  a.oid=b.objoid\n"
+                               "  and c.oid=a.attrelid\n"
+                               "  and (u.nspname = :owner OR u.usesysid IS NULL)\n"
+                               "  and c.relname=:table",
+                               "Get the available comments on columns of a table, "
+                               "must have same binds and columns",
+                               "7.1",
+                               "PostgreSQL");
+
+static toSQL SQLColumnComments72("toQSqlConnection:ColumnComments",
+                                 "select a.attname,b.description\n"
+                                 "from\n"
+                                 "  pg_attribute a,\n"
+                                 "  pg_description b,\n"
+                                 "  pg_class c LEFT OUTER JOIN pg_namespace n ON c.relowner=n.oid\n"
+                                 "where\n"
+                                 "  a.attnum=b.objsubid\n"
+                                 "  and b.objoid=a.attrelid\n"
+                                 "  and c.oid=a.attrelid\n"
+                                 "  and (n.nspname = :owner OR u.usesysid IS NULL)\n"
+                                 "  and c.relname=:table",
+                                 "",
+                                 "7.2",
+                                 "PostgreSQL");
+
+static toSQL SQLConnectionID("toQSqlConnection:ConnectionID",
+                             "SELECT connection_id()",
+                             "Get a connection ID for a session",
+                             "3.23",
+                             "MySQL");
+
+static toSQL SQLCancel("toQSqlConnection:Cancel",
+                       "KILL :f1",
+                       "Cancel a connection given it's connection ID",
+                       "3.23",
+                       "MySQL");
+
+#define CONF_ONLY_FORWARD "OnlyForward"
+#define DEFAULT_ONLY_FORWARD "Yes"
+
+struct toQSqlProviderAggregate
+{
+    enum aggregateType {
+        None,
+        AllDatabases,
+        AllTables,
+        CurrentDatabase,
+        SpecifiedDatabase
+    } Type;
+    QString Data;
+    toQSqlProviderAggregate()
+            : Type(None)
+    { }
+    toQSqlProviderAggregate(aggregateType type, const QString &data = QString::null)
+            : Type(type), Data(data)
+    { }
+}
+;
+
+static QString QueryParam(const QString &in, toQList &params, std::list<QString> *extradata)
+{
+    QString ret;
+    bool inString = false;
+    toQList::iterator cpar = params.begin();
+    QString query = QString::fromUtf8(in);
+
+    std::map<QString, QString> binds;
+
+    for (unsigned int i = 0;i < query.length();i++)
+    {
+        QChar rc = query.at(i);
+        char c = rc.latin1();
+
+        char nc = 0;
+        if(i + 1 < query.length())
+            nc = query.at(i + 1).latin1();
+
+        char pc = 0;
+        if(i - 1 >= 0)
+            pc = query.at(i - 1).latin1();
+
+        switch (c)
+        {
+        case '\\':
+            ret += rc;
+            ret += query.at(++i);
+            break;
+        case '\'':
+            inString = !inString;
+            ret += rc;
+            break;
+        case ':':
+            // mostly for postgres-style casts, ignore ::
+            if(nc == ':' || pc == ':') {
+                ret += rc;
+                break;
+            }
+
+            if (!inString)
+            {
+                QString nam;
+                for (i++;i < query.length();i++)
+                {
+                    rc = query.at(i);
+                    if (!rc.isLetterOrNumber())
+                        break;
+                    nam += rc;
+                }
+                c = rc.latin1();
+                QString in;
+                if (c == '<')
+                {
+                    for (i++;i < query.length();i++)
+                    {
+                        rc = query.at(i);
+                        c = rc.latin1();
+                        if (c == '>')
+                        {
+                            i++;
+                            break;
+                        }
+                        in += rc;
+                    }
+                }
+                i--;
+
+                toQSqlProviderAggregate aggr;
+                ;
+                if (in == "alldatabases")
+                    aggr = toQSqlProviderAggregate(toQSqlProviderAggregate::AllDatabases);
+                else if (in == "alltables")
+                    aggr = toQSqlProviderAggregate(toQSqlProviderAggregate::AllTables);
+                else if (in == "currenttables")
+                    aggr = toQSqlProviderAggregate(toQSqlProviderAggregate::CurrentDatabase);
+                else if (in == "database")
+                {
+                    aggr = toQSqlProviderAggregate(toQSqlProviderAggregate::SpecifiedDatabase);
+                }
+
+                QString str;
+                QString tmp;
+                if (aggr.Type == toQSqlProviderAggregate::None ||
+                    aggr.Type == toQSqlProviderAggregate::SpecifiedDatabase)
+                {
+                    if (nam.isEmpty())
+                        break;
+
+                    if (binds.find(nam) != binds.end())
+                    {
+                        ret += binds[nam];
+                        break;
+                    }
+                    if (cpar == params.end())
+                        throw QString::fromLatin1("Not all bind variables suplied");
+                    if ((*cpar).isNull())
+                    {
+                        str = QString::fromLatin1("NULL");
+                    }
+                    else if ((*cpar).isInt() || (*cpar).isDouble())
+                    {
+                        str = QString(*cpar);
+                    }
+                    tmp = (*cpar);
+                    cpar++;
+                }
+                if (str.isNull())
+                {
+                    if (aggr.Type != toQSqlProviderAggregate::None)
+                    {
+                        if (extradata)
+                        {
+                            if ( extradata->empty() )
+                                return QString::null;
+                            tmp = toShift(*extradata);
+                        }
+                        else
+                        {
+                            aggr.Data = tmp;
+                            throw aggr;
+                        }
+                    }
+                    else
+                    {
+                        if (in != QString::fromLatin1("noquote"))
+                            str += QString::fromLatin1("'");
+                    }
+                    for (unsigned int j = 0;j < tmp.length();j++)
+                    {
+                        QChar d = tmp.at(j);
+                        switch (d.latin1())
+                        {
+                        case 0:
+                            str += QString::fromLatin1("\\0");
+                            break;
+                        case '\n':
+                            str += QString::fromLatin1("\\n");
+                            break;
+                        case '\t':
+                            str += QString::fromLatin1("\\t");
+                            break;
+                        case '\r':
+                            str += QString::fromLatin1("\\r");
+                            break;
+                        case '\'':
+                            str += QString::fromLatin1("\\\'");
+                            break;
+                        case '\"':
+                            str += QString::fromLatin1("\\\"");
+                            break;
+                        case '\\':
+                            str += QString::fromLatin1("\\\\");
+                            break;
+                        default:
+                            str += d;
+                        }
+                    }
+                    if (in != QString::fromLatin1("noquote") && aggr.Type == toQSqlProviderAggregate::None)
+                        str += QString::fromLatin1("'");
+                }
+                binds[nam] = str;
+                ret += str;
+                break;
+            }
+        default:
+            ret += rc;
+        }
+    }
+    return ret;
+}
+
+static QString ErrorString(const QSqlError &err, const QString &sql = QString::null)
+{
+    QString ret;
+    if (err.databaseText().isEmpty())
+    {
+        if (err.driverText().isEmpty())
+            ret = QString::fromLatin1("Unknown error");
+        else
+            ret = err.driverText();
+    }
+    else
+        ret = err.databaseText();
+    if (!sql.isEmpty())
+        ret += QString::fromLatin1("\n\n") + sql;
+    return ret;
+}
+
+// PostgreSQL datatypes (From pg_type.h)
+
+#define BOOLOID                 16
+#define BYTEAOID                17
+#define CHAROID                 18
+#define NAMEOID                 19
+#define INT8OID                 20
+#define INT2OID                 21
+#define INT2VECTOROID    22
+#define INT4OID                 23
+#define REGPROCOID              24
+#define TEXTOID                 25
+#define OIDOID                  26
+#define TIDOID           27
+#define XIDOID    28
+#define CIDOID    29
+#define OIDVECTOROID     30
+#define POINTOID                600
+#define LSEGOID                 601
+#define PATHOID                 602
+#define BOXOID                  603
+#define POLYGONOID              604
+#define LINEOID                 628
+#define FLOAT4OID   700
+#define FLOAT8OID   701
+#define ABSTIMEOID              702
+#define RELTIMEOID              703
+#define TINTERVALOID     704
+#define UNKNOWNOID              705
+#define CIRCLEOID               718
+#define CASHOID   790
+#define MACADDROID   829
+#define INETOID   869
+#define CIDROID   650
+#define BPCHAROID               1042
+#define VARCHAROID              1043
+#define DATEOID                 1082
+#define TIMEOID                 1083
+#define TIMESTAMPOID     1114
+#define TIMESTAMPTZOID   1184
+#define INTERVALOID             1186
+#define TIMETZOID               1266
+#define BITOID     1560
+#define VARBITOID        1562
+#define NUMERICOID              1700
+#define REFCURSOROID     1790
+
+// MySQL datatypes (From mysql_com.h)
+
+enum enum_field_types { FIELD_TYPE_DECIMAL, FIELD_TYPE_TINY,
+                        FIELD_TYPE_SHORT, FIELD_TYPE_LONG,
+                        FIELD_TYPE_FLOAT, FIELD_TYPE_DOUBLE,
+                        FIELD_TYPE_NULL, FIELD_TYPE_TIMESTAMP,
+                        FIELD_TYPE_LONGLONG, FIELD_TYPE_INT24,
+                        FIELD_TYPE_DATE, FIELD_TYPE_TIME,
+                        FIELD_TYPE_DATETIME, FIELD_TYPE_YEAR,
+                        FIELD_TYPE_NEWDATE,
+                        FIELD_TYPE_ENUM = 247,
+                        FIELD_TYPE_SET = 248,
+                        FIELD_TYPE_TINY_BLOB = 249,
+                        FIELD_TYPE_MEDIUM_BLOB = 250,
+                        FIELD_TYPE_LONG_BLOB = 251,
+                        FIELD_TYPE_BLOB = 252,
+                        FIELD_TYPE_VAR_STRING = 253,
+                        FIELD_TYPE_STRING = 254
+                      };
+
+// SAPDb Datatypes (from /opt/sapdb/interfaces/odbc/incl/*.h)
+#define SAP_SQL_UNKNOWN_TYPE    0
+#define SAP_SQL_DECIMAL         3
+#define SAP_SQL_NUMERIC         2
+#define SAP_SQL_REAL            7
+#define SAP_SQL_FLOAT           6
+#define SAP_SQL_DOUBLE          8
+
+#define SAP_SQL_INTEGER         4
+#define SAP_SQL_SMALLINT        5
+#define SAP_SQL_BIT            (-7)
+#define SAP_SQL_TINYINT        (-6)
+#define SAP_SQL_BIGINT         (-5)
+
+#define SAP_SQL_CHAR            1
+#define SAP_SQL_VARCHAR        12
+#define SAP_SQL_LONGVARCHAR    (-1)
+
+#define SAP_SQL_BINARY         (-2)
+#define SAP_SQL_VARBINARY      (-3)
+#define SAP_SQL_LONGVARBINARY  (-4)
+
+#define SAP_SQL_DATE       9
+#define SAP_SQL_DATETIME       9
+#define SAP_SQL_TYPE_DATE      91
+
+#define SAP_SQL_TIME      10
+#define SAP_SQL_TYPE_TIME       92
+
+#define SAP_SQL_TIMESTAMP 11
+#define SAP_SQL_TYPE_TIMESTAMP  93
+
+
+
+static std::list<toQuery::queryDescribe> Describe(const QCString &type, QSqlRecordInfo recInfo, int *order, unsigned int orderSize)
+{
+    std::list<toQuery::queryDescribe> ret;
+    QSqlRecord record = recInfo.toRecord();
+    unsigned int count = record.count();
+    if (order)
+    {
+        count = orderSize;
+    }
+    for (unsigned int i = 0;i < count;i++)
+    {
+        toQuery::queryDescribe desc;
+        desc.AlignRight = false;
+        int col = i;
+        if (order)
+            col = order[i] - 1;
+        if (col == -1)
+        {
+            desc.Name = "Database";
+            desc.Datatype = "STRING";
+            desc.Null = false;
+            desc.AlignRight = false;
+            ret.insert(ret.end(), desc);
+            continue;
+        }
+        desc.Name = record.fieldName(col);
+        desc.AlignRight = false;
+
+        int size = 1;
+
+        QSqlFieldInfo info(recInfo.find(desc.Name));
+        if (type == "MySQL")
+        {
+            switch (info.typeID())
+            {
+            case FIELD_TYPE_DECIMAL:
+                desc.Datatype = QString::fromLatin1("DECIMAL");
+                break;
+            case FIELD_TYPE_TINY:
+                desc.Datatype = QString::fromLatin1("TINY");
+                break;
+            case FIELD_TYPE_SHORT:
+                desc.Datatype = QString::fromLatin1("SHORT");
+                break;
+            case FIELD_TYPE_LONG:
+                desc.Datatype = QString::fromLatin1("LONG");
+                break;
+            case FIELD_TYPE_FLOAT:
+                desc.Datatype = QString::fromLatin1("FLOAT");
+                break;
+            case FIELD_TYPE_DOUBLE:
+                desc.Datatype = QString::fromLatin1("DOUBLE");
+                break;
+            case FIELD_TYPE_NULL:
+                desc.Datatype = QString::fromLatin1("NULL");
+                break;
+            case FIELD_TYPE_TIMESTAMP:
+                desc.Datatype = QString::fromLatin1("TIMESTAMP");
+                break;
+            case FIELD_TYPE_LONGLONG:
+                desc.Datatype = QString::fromLatin1("LONGLONG");
+                break;
+            case FIELD_TYPE_INT24:
+                desc.Datatype = QString::fromLatin1("INT23");
+                break;
+            case FIELD_TYPE_DATE:
+                desc.Datatype = QString::fromLatin1("DATE");
+                break;
+            case FIELD_TYPE_TIME:
+                desc.Datatype = QString::fromLatin1("TIME");
+                break;
+            case FIELD_TYPE_DATETIME:
+                desc.Datatype = QString::fromLatin1("DATETIME");
+                break;
+            case FIELD_TYPE_YEAR:
+                desc.Datatype = QString::fromLatin1("YEAR");
+                break;
+            case FIELD_TYPE_NEWDATE:
+                desc.Datatype = QString::fromLatin1("NEWDATE");
+                break;
+            case FIELD_TYPE_ENUM:
+                desc.Datatype = QString::fromLatin1("ENUM");
+                break;
+            case FIELD_TYPE_SET:
+                desc.Datatype = QString::fromLatin1("SET");
+                break;
+            case FIELD_TYPE_TINY_BLOB:
+                desc.Datatype = QString::fromLatin1("TINY_BLOB");
+                break;
+            case FIELD_TYPE_MEDIUM_BLOB:
+                desc.Datatype = QString::fromLatin1("MEDIUM_BLOB");
+                break;
+            case FIELD_TYPE_LONG_BLOB:
+                desc.Datatype = QString::fromLatin1("LONG_BLOB");
+                break;
+            case FIELD_TYPE_BLOB:
+                desc.Datatype = QString::fromLatin1("BLOB");
+                break;
+            case FIELD_TYPE_VAR_STRING:
+                desc.Datatype = QString::fromLatin1("VAR_STRING");
+                break;
+            case FIELD_TYPE_STRING:
+                desc.Datatype = QString::fromLatin1("STRING");
+                break;
+            default:
+                desc.Datatype = QString::fromLatin1("UNKNOWN");
+                break;
+            }
+        }
+        else if (type == "PostgreSQL")
+        {
+            switch (info.typeID())
+            {
+            case BOOLOID:
+                desc.Datatype = QString::fromLatin1("BOOL");
+                break;
+            case BYTEAOID:
+                desc.Datatype = QString::fromLatin1("BYTEA");
+                break;
+            case CHAROID:
+                desc.Datatype = QString::fromLatin1("CHAR");
+                break;
+            case NAMEOID:
+                size = 32;
+                desc.Datatype = QString::fromLatin1("NAME");
+                break;
+            case INT8OID:
+                size = 8;
+                desc.Datatype = QString::fromLatin1("INT8");
+                break;
+            case INT2OID:
+                size = 2;
+                desc.Datatype = QString::fromLatin1("INT2");
+                break;
+            case INT2VECTOROID:
+                size = 2;
+                desc.Datatype = QString::fromLatin1("INT2VECTOR");
+                break;
+            case INT4OID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("INT4");
+                break;
+            case REGPROCOID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("REGPROC");
+                break;
+            case TEXTOID:
+                desc.Datatype = QString::fromLatin1("TEXT");
+                break;
+            case OIDOID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("OID");
+                break;
+            case TIDOID:
+                size = 6;
+                desc.Datatype = QString::fromLatin1("TID");
+                break;
+            case XIDOID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("XID");
+                break;
+            case CIDOID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("CID");
+                break;
+            case OIDVECTOROID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("OIDVECTOR");
+                break;
+            case POINTOID:
+                size = 16;
+                desc.Datatype = QString::fromLatin1("POINT");
+                break;
+            case LSEGOID:
+                size = 32;
+                desc.Datatype = QString::fromLatin1("LSEG");
+                break;
+            case PATHOID:
+                desc.Datatype = QString::fromLatin1("PATH");
+                break;
+            case BOXOID:
+                size = 32;
+                desc.Datatype = QString::fromLatin1("BOX");
+                break;
+            case POLYGONOID:
+                desc.Datatype = QString::fromLatin1("POLYGON");
+                break;
+            case LINEOID:
+                size = 32;
+                desc.Datatype = QString::fromLatin1("LINE");
+                break;
+            case FLOAT4OID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("FLOAT4");
+                break;
+            case FLOAT8OID:
+                size = 8;
+                desc.Datatype = QString::fromLatin1("FLOAT8");
+                break;
+            case ABSTIMEOID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("ABSTIME");
+                break;
+            case RELTIMEOID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("RELTIME");
+                break;
+            case TINTERVALOID:
+                size = 12;
+                desc.Datatype = QString::fromLatin1("TINTERVAL");
+                break;
+            case UNKNOWNOID:
+                desc.Datatype = QString::fromLatin1("UNKNOWN");
+                break;
+            case CIRCLEOID:
+                size = 24;
+                desc.Datatype = QString::fromLatin1("CIRCLE");
+                break;
+            case CASHOID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("MONEY");
+                break;
+            case MACADDROID:
+                size = 6;
+                desc.Datatype = QString::fromLatin1("MACADDR");
+                break;
+            case INETOID:
+                desc.Datatype = QString::fromLatin1("INET");
+                break;
+            case CIDROID:
+                desc.Datatype = QString::fromLatin1("CIDR");
+                break;
+            case BPCHAROID:
+                desc.Datatype = QString::fromLatin1("BPCHAR");
+                break;
+            case VARCHAROID:
+                desc.Datatype = QString::fromLatin1("VARCHAR");
+                break;
+            case DATEOID:
+                size = 4;
+                desc.Datatype = QString::fromLatin1("DATE");
+                break;
+            case TIMEOID:
+                size = 8;
+                desc.Datatype = QString::fromLatin1("TIME");
+                break;
+            case TIMESTAMPOID:
+                size = 8;
+                desc.Datatype = QString::fromLatin1("TIMESTAMP");
+                break;
+            case TIMESTAMPTZOID:
+                size = 8;
+                desc.Datatype = QString::fromLatin1("TIMESTAMPTZ");
+                break;
+            case INTERVALOID:
+                size = 12;
+                desc.Datatype = QString::fromLatin1("INTERVAL");
+                break;
+            case TIMETZOID:
+                size = 12;
+                desc.Datatype = QString::fromLatin1("TIMETZ");
+                break;
+            case BITOID:
+                desc.Datatype = QString::fromLatin1("BIT");
+                break;
+            case VARBITOID:
+                desc.Datatype = QString::fromLatin1("VARBIT");
+                break;
+            case NUMERICOID:
+                desc.Datatype = QString::fromLatin1("NUMERIC");
+                break;
+            case REFCURSOROID:
+                desc.Datatype = QString::fromLatin1("REFCURSOR");
+                break;
+            default:
+                desc.Datatype = QString::fromLatin1("UNKNOWN");
+                break;
+            }
+        }
+        else if (type == "SapDB")
+        {
+            switch (info.typeID())
+            {
+            case SAP_SQL_UNKNOWN_TYPE:
+                desc.Datatype = QString::fromLatin1("UNKNOWN");
+                break;
+            case SAP_SQL_BIT:
+                desc.Datatype = QString::fromLatin1("BIT");
+                break;
+            case SAP_SQL_INTEGER:
+                desc.Datatype = QString::fromLatin1("INTEGER");
+                break;
+            case SAP_SQL_SMALLINT:
+                desc.Datatype = QString::fromLatin1("SMALLINT");
+                break;
+            case SAP_SQL_BIGINT:
+                desc.Datatype = QString::fromLatin1("BIGINT");
+                break;
+            case SAP_SQL_TINYINT:
+                desc.Datatype = QString::fromLatin1("TINYINT");
+                break;
+            case SAP_SQL_NUMERIC:
+                desc.Datatype = QString::fromLatin1("NUMERIC");
+                break;
+            case SAP_SQL_DECIMAL:
+                desc.Datatype = QString::fromLatin1("DECIMAL");
+                break;
+            case SAP_SQL_FLOAT:
+                desc.Datatype = QString::fromLatin1("FLOAT");
+                break;
+            case SAP_SQL_REAL:
+                desc.Datatype = QString::fromLatin1("REAL");
+                break;
+            case SAP_SQL_DOUBLE:
+                desc.Datatype = QString::fromLatin1("DOUBLE");
+                break;
+            case SAP_SQL_DATE:
+                desc.Datatype = QString::fromLatin1("DATE");
+                break;
+            case SAP_SQL_TYPE_DATE:
+                desc.Datatype = QString::fromLatin1("DATE");
+                break;
+            case SAP_SQL_TIME:
+                desc.Datatype = QString::fromLatin1("TIME");
+                break;
+            case SAP_SQL_TYPE_TIME:
+                desc.Datatype = QString::fromLatin1("TIME");
+                break;
+            case SAP_SQL_TIMESTAMP:
+                desc.Datatype = QString::fromLatin1("TIMESTAMP");
+                break;
+            case SAP_SQL_TYPE_TIMESTAMP:
+                desc.Datatype = QString::fromLatin1("TIMESTAMP");
+                break;
+            case SAP_SQL_CHAR:
+                desc.Datatype = QString::fromLatin1("CHAR");
+                break;
+            case SAP_SQL_VARCHAR:
+                desc.Datatype = QString::fromLatin1("VARCHAR");
+                break;
+            case SAP_SQL_LONGVARCHAR:
+                desc.Datatype = QString::fromLatin1("LONGVARCHAR");
+                break;
+            case SAP_SQL_BINARY:
+                desc.Datatype = QString::fromLatin1("BINARY");
+                break;
+            case SAP_SQL_VARBINARY:
+                desc.Datatype = QString::fromLatin1("BINARY");
+                break;
+            case SAP_SQL_LONGVARBINARY:
+                desc.Datatype = QString::fromLatin1("LONGVARBINARY");
+                break;
+            default:
+                desc.Datatype = QString::fromLatin1("UNKNOWN");
+                break;
+            }
+        }
+        else
+        {
+            switch (info.type())
+            {
+            default:
+                desc.Datatype = QString::fromLatin1("UNKNOWN");
+                break;
+            case QVariant::Invalid:
+                desc.Datatype = QString::fromLatin1("INVALID");
+                break;
+            case QVariant::List:
+                desc.Datatype = QString::fromLatin1("LIST");
+                break;
+            case QVariant::Map:
+                desc.Datatype = QString::fromLatin1("MAP");
+                break;
+            case QVariant::String:
+                if (info.isTrim())
+                    desc.Datatype = QString::fromLatin1("CHAR");
+                else
+                    desc.Datatype = QString::fromLatin1("VARCHAR");
+                break;
+            case QVariant::StringList:
+                desc.Datatype = QString::fromLatin1("STRINGLIST");
+                break;
+            case QVariant::Font:
+                desc.Datatype = QString::fromLatin1("FONT");
+                break;
+            case QVariant::Pixmap:
+                desc.Datatype = QString::fromLatin1("PIXMAP");
+                break;
+            case QVariant::Brush:
+                desc.Datatype = QString::fromLatin1("BRUSH");
+                break;
+            case QVariant::Rect:
+                desc.Datatype = QString::fromLatin1("RECT");
+                break;
+            case QVariant::Size:
+                desc.Datatype = QString::fromLatin1("SIZE");
+                break;
+            case QVariant::Color:
+                desc.Datatype = QString::fromLatin1("COLOR");
+                break;
+            case QVariant::Palette:
+                desc.Datatype = QString::fromLatin1("PALETTE");
+                break;
+            case QVariant::ColorGroup:
+                desc.Datatype = QString::fromLatin1("COLORGROUP");
+                break;
+            case QVariant::IconSet:
+                desc.Datatype = QString::fromLatin1("ICONSET");
+                break;
+            case QVariant::Point:
+                desc.Datatype = QString::fromLatin1("POINT");
+                break;
+            case QVariant::Image:
+                desc.Datatype = QString::fromLatin1("IMAGE");
+                break;
+            case QVariant::Int:
+                desc.Datatype = QString::fromLatin1("INT");
+                desc.AlignRight = true;
+                break;
+            case QVariant::UInt:
+                desc.Datatype = QString::fromLatin1("UINT");
+                desc.AlignRight = true;
+                break;
+            case QVariant::Bool:
+                desc.Datatype = QString::fromLatin1("BOOL");
+                break;
+            case QVariant::Double:
+                desc.Datatype = QString::fromLatin1("DOUBLE");
+                desc.AlignRight = true;
+                break;
+            case QVariant::CString:
+                if (info.isTrim())
+                    desc.Datatype = QString::fromLatin1("CHAR");
+                else
+                    desc.Datatype = QString::fromLatin1("VARCHAR");
+                break;
+            case QVariant::PointArray:
+                desc.Datatype = QString::fromLatin1("POINTARRAY");
+                break;
+            case QVariant::Region:
+                desc.Datatype = QString::fromLatin1("REGION");
+                break;
+            case QVariant::Bitmap:
+                desc.Datatype = QString::fromLatin1("BITMAP");
+                break;
+            case QVariant::Cursor:
+                desc.Datatype = QString::fromLatin1("CURSOR");
+                break;
+            case QVariant::Date:
+                desc.Datatype = QString::fromLatin1("DATE");
+                break;
+            case QVariant::Time:
+                desc.Datatype = QString::fromLatin1("TIME");
+                break;
+            case QVariant::DateTime:
+                desc.Datatype = QString::fromLatin1("DATETIME");
+                break;
+            case QVariant::ByteArray:
+                desc.Datatype = QString::fromLatin1("BLOB");
+                break;
+            case QVariant::BitArray:
+                desc.Datatype = QString::fromLatin1("BITARRAY");
+                break;
+            case QVariant::SizePolicy:
+                desc.Datatype = QString::fromLatin1("SIZEPOLICY");
+                break;
+            case QVariant::KeySequence:
+                desc.Datatype = QString::fromLatin1("KEYSEQUENCE");
+                break;
+            }
+        }
+
+        if (info.length() > size)
+        {
+            desc.Datatype += QString::fromLatin1(" (");
+            if (info.length() % size == 0)
+                desc.Datatype += QString::number(info.length() / size);
+            else
+                desc.Datatype += QString::number(info.length());
+            if (info.precision() > 0)
+            {
+                desc.Datatype += QString::fromLatin1(",");
+                desc.Datatype += QString::number(info.precision());
+            }
+            desc.Datatype += QString::fromLatin1(")");
+        }
+        desc.Null = !info.isRequired();
+
+        ret.insert(ret.end(), desc);
+    }
+    return ret;
+}
+
+class toQSqlProvider : public toConnectionProvider
+{
+    QStringList Drivers;
+public:
+    static bool OnlyForward;
+
+class qSqlSetting : public QWidget, public toSettingTab
+    {
+        QCheckBox *OnlyForward;
+    public:
+        qSqlSetting(QWidget *parent)
+                : QWidget(parent), toSettingTab("database.html#qsql")
+        {
+            QGridLayout *baseLayout = new QGridLayout(this, 1, 1, 0, 6);
+
+            QGroupBox *box = new QGroupBox(this);
+            box->setColumnLayout(0, Qt::Vertical);
+            box->layout()->setSpacing(6);
+            box->layout()->setMargin(11);
+            QGridLayout *layout = new QGridLayout(box->layout());
+            layout->setAlignment(Qt::AlignTop);
+
+            OnlyForward = new QCheckBox(qApp->translate("qSqlSetting", "Posibility to break MySQL queries (Can require more connections)"), box);
+            layout->addMultiCellWidget(OnlyForward, 0, 0, 0, 0);
+
+            OnlyForward->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_ONLY_FORWARD, DEFAULT_ONLY_FORWARD).isEmpty());
+
+            QSpacerItem *spacer = new QSpacerItem(20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding);
+            layout->addItem(spacer, 1, 0);
+
+            baseLayout->addWidget(box, 0, 0);
+        }
+        virtual void saveSetting(void)
+        {
+            toConfigurationSingle::Instance().globalSetConfig(CONF_ONLY_FORWARD, OnlyForward->isChecked() ? "Yes" : "");
+            toQSqlProvider::OnlyForward = OnlyForward->isChecked();
+        }
+    };
+
+    static QCString fromQSqlName(const QString &driv)
+    {
+        if (driv == QString::fromLatin1("QMYSQL3"))
+            return "MySQL";
+        else if (driv == QString::fromLatin1("QPSQL7"))
+            return "PostgreSQL";
+        else if (driv == QString::fromLatin1("QTDS"))
+            return "Microsoft SQL/TDS";
+        else if (driv == QString::fromLatin1("QSAPDB7"))
+            return "SapDB";
+        else if (driv == QString::fromLatin1("QODBC3"))
+            return "ODBC";
+        return "";
+    }
+    static QString toQSqlName(const QCString &driv)
+    {
+        if (driv == "MySQL")
+            return QString::fromLatin1("QMYSQL3");
+        else if (driv == "PostgreSQL")
+            return QString::fromLatin1("QPSQL7");
+        else if (driv == "Microsoft SQL/TDS")
+            return QString::fromLatin1("QTDS");
+        else if (driv == "SapDB")
+            return QString::fromLatin1("QSAPDB7");
+        else if (driv == "ODBC")
+            return QString::fromLatin1("QODBC3");
+        return QString::null;
+    }
+
+class mySQLAnalyzer : public toSyntaxAnalyzer
+    {
+    public:
+        mySQLAnalyzer()
+                : toSyntaxAnalyzer(MySQLKeywords)
+        { }
+        virtual QChar quoteCharacter()
+        {
+            return '`';
+        }
+        virtual bool declareBlock()
+        {
+            return false;
+        }
+    };
+
+class qSqlSub : public toConnectionSub
+    {
+        toSemaphore Lock;
+    public:
+        QSqlDatabase *Connection;
+        QString Name;
+        QString ConnectionID;
+
+        qSqlSub(QSqlDatabase *conn, const QString &name)
+                : Lock(1), Connection(conn), Name(name)
+        { }
+
+        void lockUp()
+        {
+            Lock.up();
+        }
+
+        void lockDown ()
+        {
+            Lock.down();
+        }
+
+        int getLockValue()
+        {
+            return Lock.getValue();
+        }
+
+        void reconnect(toConnection &conn);
+
+        ~qSqlSub()
+        {
+            if (!Name.isEmpty())
+                QSqlDatabase::removeDatabase(Name);
+        }
+        void throwError(const QString &sql)
+        {
+            throw ErrorString(Connection->lastError(), sql);
+        }
+    };
+
+class qSqlQuery : public toQuery::queryImpl
+    {
+        QSqlQuery *Query;
+        QSqlRecord Record;
+        qSqlSub *Connection;
+        QString CurrentExtra;
+        std::list<QString> ExtraData;
+        bool EOQ;
+        unsigned int Column;
+        unsigned int ColumnOrderSize;
+        int *ColumnOrder;
+
+        void checkQuery(void);
+
+        std::list<QString> extraData(const toQSqlProviderAggregate &aggr)
+        {
+            std::list<QString> ret;
+            std::list<toConnection::objectName> &objects = query()->connection().objects(false);
+            for (std::list<toConnection::objectName>::iterator i = objects.begin();i != objects.end();i++)
+            {
+                if ((*i).Type == "DATABASE" && aggr.Type == toQSqlProviderAggregate::AllDatabases)
+                {
+                    toPush(ret, (*i).Owner);
+                }
+                else if ((*i).Type == "TABLE")
+                {
+                    if (aggr.Type == toQSqlProviderAggregate::AllTables ||
+                            (aggr.Type == toQSqlProviderAggregate::CurrentDatabase && (*i).Owner == query()->connection().user()) ||
+                            (aggr.Type == toQSqlProviderAggregate::SpecifiedDatabase && (*i).Owner == aggr.Data))
+                        toPush(ret, (*i).Owner + "." + (*i).Name);
+                }
+            }
+            return ret;
+        }
+        QSqlQuery *createQuery(const QString &query)
+        {
+            QSqlQuery *ret = new QSqlQuery(QString::null, Connection->Connection);
+            if (toQSqlProvider::OnlyForward)
+                ret->setForwardOnly(true);
+            ret->exec(query);
+            return ret;
+        }
+    public:
+        qSqlQuery(toQuery *query, qSqlSub *conn)
+                : toQuery::queryImpl(query), Connection(conn)
+        {
+            Column = 0;
+            ColumnOrder = NULL;
+            EOQ = true;
+            Query = NULL;
+        }
+        virtual ~qSqlQuery()
+        {
+            delete Query;
+            delete[] ColumnOrder;
+        }
+        virtual void execute(void);
+
+        virtual void cancel(void)
+        {
+            if (!Connection->ConnectionID.isEmpty())
+            {
+                try
+                {
+                    toConnection &conn = query()->connection();
+                    toQList pars;
+                    pars.insert(pars.end(), Connection->ConnectionID);
+                    conn.execute(SQLCancel, pars);
+                    Connection->reconnect(conn);
+                }
+                catch (...)
+                {}
+            }
+        }
+
+        QString parseReorder(const QString &str)
+        {
+            if (str.upper().startsWith("TOAD"))
+            {
+                std::list<int> order;
+                int num = -1;
+                unsigned int i;
+                for (i = 4;i < str.length();i++)
+                {
+                    char c = str.at(i);
+                    if (isspace(c))
+                        ;
+                    else if (isdigit(c))
+                    {
+                        if (num < 0)
+                            num = 0;
+                        num *= 10;
+                        num += c - '0';
+                    }
+                    else if (c == '*')
+                    {
+                        if (num >= 0)
+                            throw QString("Invalid column selection, number before *");
+                        if (c == '*')
+                        {
+                            order.insert(order.end(), -1);
+                            do
+                            {
+                                i++;
+                            }
+                            while (str.at(i).isSpace());
+                            break;
+                        }
+                    }
+                    else
+                    {
+                        if (num < 0)
+                            throw QString("Invalid column selection, number missing");
+                        order.insert(order.end(), num);
+                        num = -1;
+                        if (c != ',')
+                            break;
+                    }
+                }
+                ColumnOrderSize = order.size();
+                if (ColumnOrderSize == 0)
+                    throw QString("Missing column selection");
+                delete[] ColumnOrder;
+                ColumnOrder = new int[ColumnOrderSize];
+                int pos = 0;
+                for (std::list<int>::iterator j = order.begin();j != order.end();j++, pos++)
+                    ColumnOrder[pos] = *j;
+
+                return str.mid(i);
+            }
+            else
+                return str;
+        }
+
+        virtual toQValue readValue(void)
+        {
+            if (!Query)
+                throw QString::fromLatin1("Fetching from unexecuted query");
+            if (EOQ)
+                throw QString::fromLatin1("Tried to read past end of query");
+
+            Connection->lockDown();
+            QVariant val;
+            bool fixEmpty = false;
+            if (ColumnOrder)
+            {
+                int col = ColumnOrder[Column];
+                if (col >= 1)
+                {
+                    val = Query->value(col - 1);
+                    if (Query->isNull(col - 1))
+                        val.clear();
+                    else if ((val.type() == QVariant::Date || val.type() == QVariant::DateTime) && val.isNull())
+                        fixEmpty = true;
+                }
+                else if (col == 0)
+                {
+                    val = CurrentExtra;
+                }
+            }
+            else
+            {
+                val = Query->value(Column);
+                if (Query->isNull(Column))
+                    val.clear();
+                else if ((val.type() == QVariant::Date || val.type() == QVariant::DateTime) && val.isNull())
+                    fixEmpty = true;
+            }
+            if (fixEmpty)
+            {
+                switch (val.type())
+                {
+                case QVariant::Date:
+                    val = QVariant(QString("0000-00-00"));
+                    break;
+                case QVariant::DateTime:
+                    val = QVariant(QString("0000-00-00T00:00:00"));
+                    break;
+                default:
+                    break;
+                    // Do nothing
+                }
+            }
+
+            // sapdb marks value as invalid on some views
+            // for example tables,indexes etc, so ignore this check
+            Column++;
+            if ((ColumnOrder && Column == ColumnOrderSize) || (!ColumnOrder && Column == Record.count()))
+            {
+                Column = 0;
+                EOQ = !Query->next();
+            }
+            if (EOQ && ExtraData.begin() != ExtraData.end())
+            {
+                delete Query;
+                Query = NULL;
+                CurrentExtra = *ExtraData.begin();
+                try
+                {
+                    Query = createQuery(QueryParam(parseReorder(query()->sql()), query()->params(), &ExtraData));
+                }
+                catch (...)
+                {
+                    Connection->lockUp();
+                    throw;
+                }
+                checkQuery();
+            }
+            else
+                Connection->lockUp();
+
+            if (val.type() == QVariant::ByteArray)
+                return toQValue::createBinary(val.toByteArray());
+            return val.toString();
+        }
+        virtual bool eof(void)
+        {
+            return EOQ;
+        }
+        virtual int rowsProcessed(void)
+        {
+            if (!Query)
+                return 0;
+            Connection->lockDown();
+            int ret = Query->numRowsAffected();
+            Connection->lockUp();
+            return ret;
+        }
+        virtual int columns(void)
+        {
+            Connection->lockDown();
+            int ret = Record.count();
+            ;
+            if (ColumnOrder)
+            {
+                ret = ColumnOrderSize;
+            }
+            Connection->lockUp();
+            return ret;
+        }
+        virtual std::list<toQuery::queryDescribe> describe(void)
+        {
+            std::list<toQuery::queryDescribe> ret;
+            if (Query && Query->isSelect())
+            {
+                QCString provider = query()->connection().provider();
+                Connection->lockDown();
+                QSqlRecordInfo recInfo = Connection->Connection->recordInfo(*Query);
+                ret = Describe(provider, recInfo, ColumnOrder, ColumnOrderSize);
+                Connection->lockUp();
+            }
+            return ret;
+        }
+    };
+
+class qSqlConnection : public toConnection::connectionImpl
+    {
+        bool Multiple;
+        bool HasTransactions;
+        qSqlSub *qSqlConv(toConnectionSub *sub)
+        {
+            qSqlSub *conn = dynamic_cast<qSqlSub *>(sub);
+            if (!conn)
+                throw QString::fromLatin1("Internal error, not QSql sub connection");
+            return conn;
+        }
+        toSyntaxAnalyzer *MySQLAnalyzer;
+    public:
+        qSqlConnection(toConnection *conn)
+                : toConnection::connectionImpl(conn)
+        {
+            if (conn->provider() == "SapDB" ||
+                    (conn->provider() == "MySQL" && toQSqlProvider::OnlyForward))
+                Multiple = false;
+            else
+                Multiple = true;
+            if (conn->provider() == "MySQL")
+                HasTransactions = false;
+            else
+                HasTransactions = true;
+            MySQLAnalyzer = NULL;
+        }
+
+        virtual toSyntaxAnalyzer &analyzer()
+        {
+            if (connection().provider() == "MySQL")
+            {
+                if (!MySQLAnalyzer)
+                    MySQLAnalyzer = new mySQLAnalyzer();
+                return *MySQLAnalyzer;
+            }
+            else
+                return toSyntaxAnalyzer::defaultAnalyzer();
+        }
+
+        virtual QString quote(const QString &name)
+        {
+            if (connection().provider() == "PostgreSQL")
+            {
+                bool ok = true;
+                for (unsigned int i = 0;i < name.length();i++)
+                {
+                    if (name.at(i).lower() != name.at(i) || !toIsIdent(name.at(i)))
+                        ok = false;
+                }
+                if (!ok)
+                    return QString::fromLatin1("\"") + name + QString::fromLatin1("\"");
+            }
+            return name;
+        }
+
+        virtual QString unQuote(const QString &name)
+        {
+            if (connection().provider() == "PostgreSQL")
+            {
+                if (name.at(0).latin1() == '\"' && name.at(name.length() - 1).latin1() == '\"')
+                    return name.left(name.length() - 1).right(name.length() - 2);
+            }
+            else if (connection().provider() == "MySQL")
+            {
+                if (name.at(0).latin1() == '`' && name.at(name.length() - 1).latin1() == '`')
+                    return name.left(name.length() - 1).right(name.length() - 2);
+            }
+            return name;
+        }
+
+        virtual std::list<toConnection::objectName> objectNames(void)
+        {
+            std::list<toConnection::objectName> ret;
+
+            toConnection::objectName cur;
+            try
+            {
+                toQuery databases(connection(), SQLListDatabases);
+                while (!databases.eof())
+                {
+                    QString db = databases.readValueNull();
+                    cur.Owner = db;
+                    cur.Type = "DATABASE";
+                    cur.Name = QString::null;
+                    ret.insert(ret.end(), cur);
+                    try
+                    {
+                        toQuery tables(connection(), SQLListObjectsDatabase, db);
+                        while (!tables.eof())
+                        {
+                            cur.Name = tables.readValueNull();
+                            cur.Owner = db;
+                            cur.Type = "TABLE";
+                            for (int i = 2;i < tables.columns();i++) // I just wan't the last column except for the first one
+                                tables.readValueNull();
+                            cur.Comment = tables.readValueNull();
+                            ret.insert(ret.end(), cur);
+                        }
+                    }
+                    catch (...)
+                    {}
+                }
+            }
+            catch (...)
+            {
+                toQuery tables(connection(), SQLListObjects);
+                while (!tables.eof())
+                {
+                    cur.Name = tables.readValueNull();
+                    if (tables.columns() > 1)
+                        cur.Owner = tables.readValueNull();
+                    else
+                        cur.Owner = connection().database();
+                    if (tables.columns() > 2)
+                        cur.Type = tables.readValueNull();
+                    else
+                        cur.Type = QString::fromLatin1("TABLE");
+                    ret.insert(ret.end(), cur);
+                }
+            }
+
+            return ret;
+        }
+
+        virtual std::map<QString, toConnection::objectName> synonymMap(std::list<toConnection::objectName> &objects)
+        {
+            std::map<QString, toConnection::objectName> ret;
+
+            try
+            {
+                toConnection::objectName cur;
+                cur.Type = QString::fromLatin1("A");
+
+                toQuery synonyms(connection(), SQLListSynonyms);
+                std::list<toConnection::objectName>::iterator i = objects.begin();
+                while (!synonyms.eof())
+                {
+                    QString synonym = synonyms.readValueNull();
+                    cur.Owner = synonyms.readValueNull();
+                    cur.Name = synonyms.readValueNull();
+                    while (i != objects.end() && (*i) < cur)
+                        i++;
+                    if (i == objects.end())
+                        break;
+                    if (cur.Name == (*i).Name && cur.Owner == (*i).Owner)
+                    {
+                        ret[synonym] = (*i);
+                        (*i).Synonyms.insert((*i).Synonyms.end(), synonym);
+                    }
+                }
+            }
+            catch (...)
+            {}
+
+            return ret;
+        }
+
+        virtual toQDescList columnDesc(const toConnection::objectName &table)
+        {
+            toBusy busy;
+
+            std::map<QString, QString> comments;
+            try
+            {
+                toQuery comment(connection(), SQLColumnComments, table.Owner, table.Name);
+                while (!comment.eof())
+                {
+                    QString col = comment.readValue();
+                    comments[col] = comment.readValueNull();
+                }
+            }
+            catch (...)
+            {}
+
+            try
+            {
+                toQDescList desc;
+                if (connection().provider() == "PostgreSQL")
+                {
+                    toQuery query(connection(), toQuery::Normal);
+                    qSqlSub *sub = dynamic_cast<qSqlSub *>(query.connectionSub());
+                    if (sub)
+                    {
+                        sub->lockDown();
+                        desc = Describe(connection().provider(), sub->Connection->recordInfo(quote(table.Name)), NULL, 0);
+                        sub->lockUp();
+                    }
+                }
+                else
+                {
+                    QString SQL = QString::fromLatin1("SELECT * FROM ");
+                    SQL += quote(table.Owner);
+                    SQL += QString::fromLatin1(".");
+                    SQL += quote(table.Name);
+                    SQL += QString::fromLatin1(" WHERE NULL=NULL");
+                    toQuery query(connection(), SQL);
+                    desc = query.describe();
+                }
+                for (toQDescList::iterator j = desc.begin();j != desc.end();j++)
+                    (*j).Comment = comments[(*j).Name];
+
+                return desc;
+            }
+            catch (...)
+            {}
+
+            toQDescList ret;
+            return ret;
+        }
+
+        virtual bool handleMultipleQueries()
+        {
+            return Multiple;
+        }
+
+        virtual void commit(toConnectionSub *sub)
+        {
+            qSqlSub *conn = qSqlConv(sub);
+            if (!conn->Connection->commit() && HasTransactions)
+                conn->throwError(QString::fromLatin1("COMMIT"));
+        }
+        virtual void rollback(toConnectionSub *sub)
+        {
+            qSqlSub *conn = qSqlConv(sub);
+            if (!conn->Connection->rollback() && HasTransactions)
+                conn->throwError(QString::fromLatin1("ROLLBACK"));
+        }
+
+        virtual toConnectionSub *createConnection(void);
+
+        void closeConnection(toConnectionSub *conn)
+        {
+            delete conn;
+        }
+
+        virtual QCString version(toConnectionSub *sub)
+        {
+            QCString ret;
+            qSqlSub *conn = qSqlConv(sub);
+            conn->lockDown();
+            try
+            {
+                QSqlQuery query = conn->Connection->exec(toSQL::string(SQLVersion, connection()));
+                if (query.next())
+                {
+                    if (query.isValid())
+                    {
+                        QSqlRecord record = conn->Connection->record(query);
+                        QVariant val = query.value(record.count() - 1);
+                        ret = val.toString().latin1();
+                    }
+                }
+            }
+            catch (...)
+            {}
+            conn->lockUp();
+            return ret;
+        }
+
+        virtual toQuery::queryImpl *createQuery(toQuery *query, toConnectionSub *sub)
+        {
+            return new qSqlQuery(query, qSqlConv(sub));
+        }
+        virtual void execute(toConnectionSub *sub, const QCString &sql, toQList &params)
+        {
+            qSqlSub *conn = qSqlConv(sub);
+            conn->lockDown();
+            try
+            {
+                QSqlQuery Query(conn->Connection->exec(QueryParam(sql, params, NULL)));
+                if (!Query.isActive())
+                {
+                    conn->lockUp();
+                    QString msg = QString::fromLatin1("Query not active ");
+                    msg += sql;
+                    throw ErrorString(Query.lastError(), msg);
+                }
+                conn->lockUp();
+            }
+            catch (const toQSqlProviderAggregate &)
+            { // Ok, this one is complicated and will probably never be used.
+                conn->lockUp();
+                throw QString("Direct exec aggregate queries are not supported, use a toQuery object for this one");
+            }
+        }
+    };
+
+    toQSqlProvider(void)
+            : toConnectionProvider("QSql", false)
+    {
+        OnlyForward = !toConfigurationSingle::Instance().globalConfig(CONF_ONLY_FORWARD, DEFAULT_ONLY_FORWARD).isEmpty();
+    }
+
+    virtual void initialize(void)
+    {
+        Drivers = QSqlDatabase::drivers();
+        for (unsigned int i = 0;i < Drivers.count();i++)
+        {
+            QCString t = fromQSqlName(Drivers[i]);
+            if (!t.isEmpty())
+                addProvider(t);
+        }
+    }
+
+    ~toQSqlProvider()
+    {
+        for (unsigned int i = 0;i < Drivers.count();i++)
+        {
+            QCString t = fromQSqlName(Drivers[i]);
+            if (!t.isEmpty())
+                removeProvider(t);
+        }
+    }
+
+    virtual QWidget *providerConfigurationTab(const QCString &provider,
+            QWidget *parent)
+    {
+        if (provider == "MySQL")
+            return new qSqlSetting(parent);
+        return NULL;
+    }
+
+    virtual toConnection::connectionImpl *provideConnection(const QCString &, toConnection *conn)
+    {
+        return new qSqlConnection(conn);
+    }
+    virtual std::list<QString> providedHosts(const QCString &provider)
+    {
+        std::list<QString> ret;
+        ret.insert(ret.end(), "localhost");
+        if (provider == "MySQL")
+            ret.insert(ret.end(), ":3306");
+        else if (provider == "PostgreSQL")
+            ret.insert(ret.end(), ":5432");
+        return ret;
+    }
+
+    virtual std::list<QString> providedOptions(const QCString &provider)
+    {
+        std::list<QString> ret;
+#if QT_VERSION >= 0x030200
+
+        if (provider == "MySQL")
+        {
+            ret.insert(ret.end(), "*SSL");
+            ret.insert(ret.end(), "*Compress");
+            ret.insert(ret.end(), "-");
+            ret.insert(ret.end(), "Ignore Space");
+            ret.insert(ret.end(), "No Schema");
+        }
+#endif
+        return ret;
+    }
+    virtual std::list<QString> providedDatabases(const QCString &, const QString &, const QString &, const QString &)
+    {
+        std::list<QString> ret;
+
+        // Need implementation
+
+        return ret;
+    }
+
+    static qSqlSub* createConnection(toConnection &conn);
+};
+
+static toQSqlProvider QSqlProvider;
+toLock myLock;
+
+void toQSqlProvider::qSqlQuery::execute(void)
+{
+    while (Connection->getLockValue() > 1)
+    {
+        Connection->lockDown();
+        toStatusMessage(QString::fromLatin1("Too high value on connection lock semaphore"));
+    }
+    Connection->lockDown();
+    Query = NULL;
+    try
+    {
+        Query = createQuery(QueryParam(parseReorder(query()->sql()), query()->params(), NULL));
+    }
+    catch (const toQSqlProviderAggregate &aggr)
+    {
+        ExtraData = extraData(aggr);
+        if (ExtraData.begin() != ExtraData.end())
+            CurrentExtra = *ExtraData.begin();
+        try
+        {
+            QString t = QueryParam(parseReorder(query()->sql()), query()->params(), &ExtraData);
+            if (t.isEmpty())
+            {
+                toStatusMessage("Nothing to send to aggregate query");
+                Query = NULL;
+                EOQ = true;
+                Connection->lockUp();
+                return ;
+            }
+            else
+                Query = createQuery(t);
+        }
+        catch (...)
+        {
+            Connection->lockUp();
+            throw;
+        }
+    }
+    checkQuery();
+}
+
+void toQSqlProvider::qSqlQuery::checkQuery(void) // Must call with lockDown!!!!
+{
+    while (Connection->getLockValue() > 0)
+    {
+        toStatusMessage(QString::fromLatin1("Too high value on connection lock semaphore for checkQuery"));
+    }
+    do
+    {
+        if (!Query->isActive())
+        {
+            Connection->lockUp();
+            QString msg = QString::fromLatin1("Query not active ");
+            msg += query()->sql();
+            throw ErrorString(Query->lastError(), msg);
+        }
+
+        if (Query->isSelect())
+        {
+            Record = Connection->Connection->record(*Query);
+            if (ColumnOrder && ColumnOrder[ColumnOrderSize - 1] == -1)
+            {
+                unsigned int newsize = ColumnOrderSize + Record.count() - 1;
+                int *newalloc = new int[newsize];
+                unsigned int i;
+                for (i = 0;i < ColumnOrderSize - 1;i++)
+                    newalloc[i] = ColumnOrder[i];
+                for (int colnum = 1;i < newsize;i++, colnum++)
+                    newalloc[i] = colnum;
+                delete[] ColumnOrder;
+                ColumnOrder = newalloc;
+                ColumnOrderSize = newsize;
+            }
+            EOQ = !Query->next();
+            Column = 0;
+        }
+        else
+        {
+            EOQ = true;
+        }
+        if (EOQ && ExtraData.begin() != ExtraData.end())
+        {
+            delete Query;
+            Query = NULL;
+            try
+            {
+                Query = createQuery(QueryParam(parseReorder(query()->sql()), query()->params(), &ExtraData));
+            }
+            catch (...)
+            {
+                Connection->lockUp();
+                throw;
+            }
+        }
+    }
+    while (ExtraData.begin() != ExtraData.end() && EOQ);
+
+    Connection->lockUp();
+}
+
+toQSqlProvider::qSqlSub *toQSqlProvider::createConnection(toConnection &conn)
+{
+    static int ID = 0;
+    ID++;
+
+    QString dbName = QString::number(ID);
+    QSqlDatabase *db = QSqlDatabase::addDatabase(toQSqlName(conn.provider()), dbName);
+    if (!db)
+        throw QString(QString::fromLatin1("Couldn't create QSqlDatabase object"));
+    db->setDatabaseName(conn.database());
+    QString host = conn.host();
+    int pos = host.find(QString::fromLatin1(":"));
+    if (pos < 0)
+        db->setHostName(host);
+    else
+    {
+        db->setHostName(host.mid(0, pos));
+        db->setPort(host.mid(pos + 1).toInt());
+    }
+
+#if QT_VERSION >= 0x030200
+    QString opt;
+
+    std::set
+        <QString> options = conn.options();
+    if (options.find("Compress") != options.end())
+        opt += ";CLIENT_COMPRESS";
+    if (options.find("Ignore Space") != options.end())
+        opt += ";CLIENT_IGNORE_SPACE";
+    if (options.find("No Schema") != options.end())
+        opt += ";CLIENT_NO_SCHEMA";
+    if (options.find("SSL") != options.end())
+        opt += ";CLIENT_SSL";
+
+    if (!opt.isEmpty())
+        db->setConnectOptions(opt.mid(1)); // Strip first ; character
+#endif
+
+    db->open(conn.user(), conn.password());
+    if (!db->isOpen())
+    {
+        QString t = ErrorString(db->lastError());
+        QSqlDatabase::removeDatabase(dbName);
+        throw t;
+    }
+
+    toQSqlProvider::qSqlSub *ret = new toQSqlProvider::qSqlSub(db, dbName);
+
+    // Try to figure out the connection ID for canceling
+    try
+    {
+        QString sql = SQLConnectionID(conn);
+
+        QSqlQuery query = db->exec(sql);
+        if (query.next())
+            ret->ConnectionID = query.value(0).toString();
+    }
+    catch (...)
+    {}
+    return ret;
+}
+
+void toQSqlProvider::qSqlSub::reconnect(toConnection &conn)
+{
+    qSqlSub *sub = createConnection(conn);
+    Connection = sub->Connection;
+    ConnectionID = sub->ConnectionID;
+
+    // Switch database and remove the old one
+    QString t = Name;
+    Name = sub->Name;
+    sub->Name = t;
+    delete sub;
+}
+
+toConnectionSub *toQSqlProvider::qSqlConnection::createConnection(void)
+{
+    return toQSqlProvider::createConnection(connection());
+}
+
+bool toQSqlProvider::OnlyForward;

Added: kde-extras/tora/branches/upstream/current/src/toqvalue.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toqvalue.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toqvalue.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,196 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOQVALUE_H
+#define TOQVALUE_H
+
+#include "config.h"
+
+#include <list>
+
+#include <qstring.h>
+
+/** This function is used to represent values that are passed to and from queries
+ */
+class toQValue
+{
+    enum queryType {
+        intType,
+        doubleType,
+        stringType,
+        binaryType,
+        nullType
+    } Type;
+
+    union queryValue {
+        int Int;
+        double Double;
+        QString *String;
+        QByteArray *Array;
+    } Value;
+public:
+    /** Create null value.
+     */
+    toQValue(void);
+    /** Create integer value.
+     * @param i Value.
+     */
+    toQValue(int i);
+    /** Create string value.
+     * @param str Value.
+     */
+    toQValue(const QString &str);
+    /** Create double value.
+     * @param d Value.
+     */
+    toQValue(double d);
+    /** Destruct query.
+     */
+    ~toQValue();
+
+    /** Create a copy of a value.
+     */
+    toQValue(const toQValue &copy);
+    /** Assign this value from another value.
+     */
+    const toQValue &operator = (const toQValue &copy);
+
+    /** Check a value for equality. Requires same type and same value. NULL is equal to other NULL values.
+     */
+    bool operator == (const toQValue &) const;
+
+    /** Check if this is an int value.
+     */
+    bool isInt(void) const;
+    /** Check if this is a double value.
+     */
+    bool isDouble(void) const;
+    /** Check if this is a string value.
+     */
+    bool isString(void) const;
+    /** Check if this value is null.
+     */
+    bool isNull(void) const;
+    /** Check if this value is binary.
+     */
+    bool isBinary(void) const;
+
+    /** Get utf8 format of this value.
+     */
+    QCString utf8(void) const;
+    /** Get integer representation of this value.
+     */
+    int toInt(void) const;
+    /** Get double representation of this value.
+     */
+    double toDouble(void) const;
+
+    /** Get binary representation of value. Can only be called when the data is actually binary.
+     */
+    const QByteArray &toByteArray(void) const;
+
+    /** Convert value to a string. If binary convert to hex.
+     */
+    operator QString() const;
+
+    /** Convert value to a string. If binary convert to hex.
+     */
+    QString toString() const
+    {
+        return QString(*this);
+    }
+
+    QString toSIsize() const
+    {
+        if (this->isNull()) return NULL;
+
+        double size = toDouble();
+        QString s = "%1";
+        int i = 0;
+
+        while (size / 1024 >= 10) {
+            i++;
+            size = size / 1024;
+        }
+
+        switch (i) {
+            case 0: break;
+            case 1: s.append("K");
+                break;
+            case 2: s.append("M");
+                break;
+            case 3: s.append("G");
+                break;
+            case 4: s.append("T");
+                break;
+            default: s.append("E");
+        }
+
+        return s.arg(size, 0, 'f', 0);
+    }
+
+    /** Set numberformat.
+     * @param format 0 = Default, 1 = Scientific, 2 = Fixed Decimals
+     * @param decimals Number on decimals for fixed decimals.
+     */
+    static void setNumberFormat(int format, int decimals);
+    /** Format a number according to current settings.
+     */
+    static QString formatNumber(double number);
+    /** Get number format.
+     * @return Format 0 = Default, 1 = Scientific, 2 = Fixed Decimals
+     */
+    static int numberFormat(void);
+    /** Get decimals if fixed decimals.
+     */
+    static int numberDecimals(void);
+    /** Create a binary value
+     */
+    static toQValue createBinary(const QByteArray &arr);
+    /** Create a binary value from it's hex representation.
+     */
+    static toQValue createFromHex(const QString &hex);
+    /** Create a binary value from it's hex representation.
+     */
+    static toQValue createFromHex(const QCString &hex);
+};
+
+/** A short representation of list<toQuery::queryValue>
+ */
+typedef std::list<toQValue> toQList;
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toreport.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toreport.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toreport.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,425 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tohtml.h"
+#include "toextract.h"
+#include "toreport.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#else
+#include <winsock.h>
+#endif
+
+#include <qapplication.h>
+#include <qdatetime.h>
+
+static bool SameContext(const QString &str, const QString &str2)
+{
+    if (str.startsWith(str2))
+    {
+        if (str.length() == str2.length())
+            return true;
+        if (str.length() > str2.length() &&
+                str.at(str2.length()) == QChar('\001'))
+            return true;
+    }
+    return false;
+}
+
+static bool HasChildren(std::list<QString> &desc,
+                        std::list<QString>::iterator i,
+                        const QString &context)
+{
+    if ((*i).length() > context.length())
+        return true;
+    i++;
+    if (i == desc.end())
+        return false;
+    return SameContext(*i, context);
+}
+
+static std::list<QString>::iterator FindItem(std::list<QString> &desc,
+        std::list<QString>::iterator i,
+        int level,
+        const QString &context,
+        const QString &search)
+{
+    while (i != desc.end())
+    {
+        if (!SameContext(*i, context) && !context.isEmpty())
+            return desc.end();
+        if (toExtract::partDescribe(*i, level) == search)
+            return i;
+        i++;
+    }
+    return desc.end();
+}
+
+static QString GenerateConstraint(const QString &name,
+                                  const QString &def,
+                                  const QString &status)
+{
+    return QString::fromLatin1("<TR><TD VALIGN=top WIDTH=25%>%1</TD><TD VALIGN=top WIDTH=50%>%2</TD><TD VALIGN=top WIDTH=25%>%3</TD></TR>\n").
+           arg(toHtml::escape(name)).
+           arg(toHtml::escape(def)).
+           arg(toHtml::escape(status));
+}
+
+static QString DescribeConstraints(std::list<QString> &desc,
+                                   std::list<QString>::iterator i,
+                                   int level,
+                                   const QString &context)
+{
+    QString ret = QString::fromLatin1("<H4>CONSTRAINTS</H4>\n"
+                                      "<TABLE BORDER=0 WIDTH=100%><TR><TH ALIGN=left WIDTH=25%>Name</TH>"
+                                      "<TH ALIGN=left WIDTH=50%>Constraint</TH><TH ALIGN=left WIDTH=25%>Status</TH></TR>\n");
+
+    QString lastName;
+    QString status;
+    QString definition;
+
+    do
+    {
+        if (!SameContext(*i, context))
+            break;
+
+        QString name = toExtract::partDescribe(*i, level);
+        QString extra = toExtract::partDescribe(*i, level + 1);
+
+        if (lastName != name)
+        {
+            if (!lastName.isNull())
+                ret += GenerateConstraint(lastName, definition, status);
+            definition = QString::null;
+            status = QString::null;
+            lastName = name;
+        }
+
+        if (extra == QString::fromLatin1("DEFINITION"))
+            definition += toExtract::partDescribe(*i, level + 2) + " ";
+        else if (extra == QString::fromLatin1("STATUS"))
+        {
+            QString t = toExtract::partDescribe(*i, level + 2);
+            if (t.startsWith(QString::fromLatin1("ENABLE")) || t.startsWith(QString::fromLatin1("DISABLE")))
+                status += t + QString::fromLatin1(" ");
+        }
+
+        i++;
+    }
+    while (i != desc.end());
+    ret += GenerateConstraint(lastName, definition, status);
+    ret += QString::fromLatin1("</TABLE>\n");
+    return ret;
+}
+
+struct toReportColumn
+{
+    QString Order;
+    QString Datatype;
+    QString Comment;
+};
+
+static QString DescribeColumns(std::list<QString> &desc,
+                               std::list<QString>::iterator i,
+                               int level,
+                               const QString &context)
+{
+    bool hasComments = false;
+    bool hasDatatype = false;
+
+    int maxCol = 1;
+
+    std::map<QString, toReportColumn> cols;
+    do
+    {
+        if (!SameContext(*i, context))
+            break;
+
+        QString col = toExtract::partDescribe(*i, level + 0);
+        QString extra = toExtract::partDescribe(*i, level + 1);
+
+        if (extra == QString::fromLatin1("ORDER"))
+        {
+            cols[col].Order = toExtract::partDescribe(*i, level + 2);
+            maxCol = std::max(maxCol, cols[col].Order.toInt());
+        }
+        else if (extra == QString::fromLatin1("COMMENT"))
+        {
+            cols[col].Comment = toExtract::partDescribe(*i, level + 2);
+            hasComments = true;
+        }
+        else if (!extra.isEmpty())
+        {
+            cols[col].Datatype += extra + QString::fromLatin1(" ");
+            hasDatatype = true;
+        }
+
+        i++;
+    }
+    while (i != desc.end());
+
+    QString ret = qApp->translate("toReport",
+                                  "<H4>COLUMNS</H4>\n"
+                                  "<TABLE WIDTH=100% BORDER=0><TR><TH ALIGN=left WIDTH=25%>Name</TH>");
+    if (hasDatatype)
+        ret += qApp->translate("toReport", "<TH ALIGN=left WIDTH=25%>Definition</TH>");
+    if (hasComments)
+        ret += qApp->translate("toReport", "<TH ALIGN=left WIDTH=50%>Description</TH>");
+    ret += QString::fromLatin1("</TR>\n");
+
+    for (int j = 1;j <= maxCol;j++)
+    {
+        for (std::map<QString, toReportColumn>::iterator k = cols.begin();k != cols.end();k++)
+        {
+            if ((*k).second.Order.toInt() == j)
+            {
+                ret += QString::fromLatin1("<TR><TD VALIGN=top WIDTH=25%>");
+                ret += toHtml::escape((*k).first);
+                ret += QString::fromLatin1("</TD>");
+                if (hasDatatype)
+                {
+                    ret += QString::fromLatin1("<TD VALIGN=top WIDTH=25%>");
+                    if (!(*k).second.Datatype.isEmpty())
+                        ret += toHtml::escape((*k).second.Datatype);
+                    else
+                        ret += QString::fromLatin1("<BR>");
+                    ret += QString::fromLatin1("</TD>");
+                }
+                if (hasComments)
+                {
+                    ret += QString::fromLatin1("<TD VALIGN=top WIDTH=50%>");
+                    if (!(*k).second.Comment.isEmpty())
+                        ret += toHtml::escape((*k).second.Comment);
+                    else
+                        ret += QString::fromLatin1("&nbsp;");
+                    ret += QString::fromLatin1("</TD>");
+                }
+                ret += QString::fromLatin1("</TR>\n");
+                break;
+            }
+        }
+    }
+    ret += QString::fromLatin1("</TABLE>\n");
+    return ret;
+}
+
+static QString ValidPart(std::list<QString> &desc,
+                         std::list<QString>::iterator &i,
+                         int level)
+{
+    QString part = toExtract::partDescribe(*i, level);
+    while (part.isNull() && i != desc.end())
+    {
+        i++;
+        part = toExtract::partDescribe(*i, level);
+    }
+    return part;
+}
+
+static QString DescribePart(std::list<QString> &desc,
+                            std::list<QString>::iterator &i,
+                            int level,
+                            const QString &parentContext)
+{
+    QString ret;
+    QString text;
+
+    QString lastPart;
+
+    std::list<QString>::iterator start = i;
+
+    do
+    {
+        if (!SameContext(*i, parentContext))
+            break;
+        QString part = ValidPart(desc, i, level);
+
+        do
+        {
+            QString part = toExtract::partDescribe(*i, level);
+        }
+        while (part.isNull());
+        if (lastPart != part)
+        {
+            if (lastPart.isNull())
+            {
+                i = FindItem(desc, start, level, parentContext, QString::fromLatin1("TABLE"));
+                if (i == desc.end())
+                {
+                    i = start;
+                    part = ValidPart(desc, i, level);
+                }
+                else
+                    part = toExtract::partDescribe(*i, level);
+            }
+            else
+            {
+                while (part == QString::fromLatin1("TABLE"))
+                {
+                    i++;
+                    if (i == desc.end())
+                        return ret;
+                    part = toExtract::partDescribe(*i, level);
+                }
+            }
+            if (lastPart == QString::fromLatin1("TABLE"))
+            {
+                i = start;
+                part = ValidPart(desc, i, level);
+            }
+            lastPart = part;
+        }
+        QString child = parentContext + QString::fromLatin1("\001") + part;
+
+        if (part == QString::fromLatin1("COLUMN") ||
+                part == QString::fromLatin1("COMMENT") ||
+                part == QString::fromLatin1("CONSTRAINT"))
+        {
+            i++;
+        }
+        else if (HasChildren(desc, i, child))
+        {
+            ret += QString::fromLatin1("<P><H%1>%2</H%3></P>\n").
+                   arg(level + 1).
+                   arg(toHtml::escape(part)).
+                   arg(level + 1);
+            std::list<QString>::iterator com = FindItem(desc,
+                                               i,
+                                               level + 1,
+                                               child,
+                                               QString::fromLatin1("COMMENT"));
+            if (com != desc.end())
+                ret += "<P>" + toHtml::escape(toExtract::partDescribe(*com, level + 2)) + "</P>";
+
+            std::list<QString>::iterator col = FindItem(desc,
+                                               i,
+                                               level + 1,
+                                               child,
+                                               QString::fromLatin1("COLUMN"));
+
+            if (col != desc.end())
+                ret += DescribeColumns(desc, col, level + 2, child + QString::fromLatin1("\001COLUMN"));
+
+            std::list<QString>::iterator con = FindItem(desc,
+                                               i,
+                                               level + 1,
+                                               child,
+                                               QString::fromLatin1("CONSTRAINT"));
+
+            if (con != desc.end())
+                ret += DescribeConstraints(desc, con, level + 2, child + QString::fromLatin1("\001CONSTRAINT"));
+
+            ret += DescribePart(desc, i, level + 1, child);
+        }
+        else
+        {
+            if (!part.isEmpty())
+                text += QString::fromLatin1("<P>") + toHtml::escape(part) + QString::fromLatin1("</P>\n");
+            i++;
+        }
+    }
+    while (i != desc.end());
+    return text + ret;
+}
+
+QString toGenerateReport(toConnection &conn, std::list<QString> &desc)
+{
+    char host[1024];
+    gethostname(host, 1024);
+
+    QString db = conn.host();
+    if (db.length() && db != QString::fromLatin1("*"))
+        db += QString::fromLatin1(":");
+    else
+        db = QString::null;
+    db += conn.database();
+
+    QString ret = qApp->translate("toReport", "<HTML><HEAD><TITLE>Report on database %7</TITLE></HEAD>\n"
+                                  "<BODY><H1>Report on database %8</H1>\n"
+                                  "<TABLE BORDER=0>\n"
+                                  "<TR><TD VALIGN=top>Generated by:</TD><TD VALIGN=top>TOra, Version %1</TD></TR>\n"
+                                  "<TR><TD VALIGN=top>At:</TD><TD VALIGN=top>%2</TD></TR>\n"
+                                  "<TR><TD VALIGN=top>From:</TD><TD VALIGN=top>%3, an %4 %5 database</TD></TR>\n"
+                                  "<TR><TD VALIGN=top>On:</TD><TD VALIGN=top>%6</TD></TR>\n"
+                                  "</TABLE>\n").
+                  arg(QString::fromLatin1(TOVERSION)).
+                  arg(QString::fromLatin1(host)).
+                  arg(db).
+                  arg(conn.provider()).
+                  arg(conn.version()).
+                  arg(QDateTime::currentDateTime().toString()).
+                  arg(db).
+                  arg(db);
+
+    std::list<QString>::iterator i;
+    i = FindItem(desc, desc.begin(), 0, QString::null, QString::fromLatin1("NONE"));
+    if (i != desc.end())
+    {
+        ret += qApp->translate("toReport", "<H1>Global Objects</H1>\n");
+        ret += DescribePart(desc, i, 1, QString::fromLatin1("NONE"));
+    }
+
+    i = desc.begin();
+    QString lastContext;
+    while (i != desc.end())
+    {
+        QString context = toExtract::partDescribe(*i, 0);
+        if (context != QString::fromLatin1("NONE"))
+        {
+            if (context != lastContext)
+            {
+                if (context == QString::fromLatin1("public"))
+                    ret += qApp->translate("toReport", "<H1>Public</H1>");
+                else
+                    ret += qApp->translate("toReport", "<H1>Schema %1</H1>\n").arg(toHtml::escape(context));
+            }
+            ret += DescribePart(desc, i, 1, context);
+            lastContext = context;
+        }
+        else
+            i++;
+    }
+    ret += QString::fromLatin1("</BODY>\n</HTML>");
+
+    return ret;
+
+}

Added: kde-extras/tora/branches/upstream/current/src/toreport.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toreport.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toreport.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,55 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOREPORT_H
+#define TOREPORT_H
+
+#include "config.h"
+
+#include <list>
+#include <algorithm>
+
+#include <qstring.h>
+
+/** Generate an HTML based report on a description of database objects from @ref toExtract.
+ * @param conn Connection description list was generated from.
+ * @param desc Description list to create report on.
+ * @return An HTML formatted report on the contents of @ref desc.
+ */
+QString toGenerateReport(toConnection &conn, std::list<QString> &desc);
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresult.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresult.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresult.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,294 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toresult.h"
+#include "totabwidget.h"
+#include "totool.h"
+
+#include <qtabwidget.h>
+#include <qtimer.h>
+
+#include "toresult.moc"
+
+
+toResult::toResult()
+        : Slots(this),Handled(true),Tabs(0),TabWidget(0),ForceRefresh(false),QueryReady(false), FromSQL(false)
+{
+    QTimer::singleShot(1, &Slots, SLOT(setup()));                
+}
+
+void toResult::changeHandle(void)
+{
+    QWidget *widget = dynamic_cast<QWidget *>(this);
+    if (widget)
+    {
+        widget->setEnabled(handled());
+        if (handled())
+        {
+            if (TabWidget && Tabs && handled())
+            {
+                toTabWidget *tab = dynamic_cast<toTabWidget *>(Tabs);
+                if (tab)
+                    tab->showTab(TabWidget);
+                else
+                    Tabs->setTabEnabled(TabWidget, true);
+                TabWidget = NULL;
+            }
+        }
+        else
+        {
+            QWidget *par = widget->parentWidget();
+            QWidget *widgetInStack = widget;
+            while (par && (par->inherits("QVBox") || par->isA("QWidgetStack") || (Tabs && Tabs != par)))
+            {
+                if (!par->isA("QWidgetStack"))
+                {
+                    widgetInStack = par;
+                }
+                par = par->parentWidget();
+            }
+            if (par && par->inherits("QTabWidget"))
+            {
+                if (!Tabs)
+                    Tabs = (QTabWidget *)par;
+                toTabWidget *tab = dynamic_cast<toTabWidget *>(Tabs);
+                if (tab)
+                    tab->hideTab(widgetInStack);
+                else
+                    Tabs->setTabEnabled(widgetInStack, false);
+                TabWidget = widgetInStack;
+            }
+        }
+    }
+}
+
+void toResult::setHandle(bool ena)
+{
+    bool last = Handled;
+    try
+    {
+        if (!ena)
+            Handled = false;
+        else
+            Handled = canHandle(connection());
+    }
+    catch (...)
+    {
+        Handled = false;
+    }
+    if (last != Handled)
+        changeHandle();
+}
+
+void toResult::connectionChanged(void)
+{
+    ForceRefresh = true;
+    if (FromSQL)
+    {
+        try
+        {
+            if (QueryReady)
+                query(toSQL::string(sqlName().latin1(), connection()), (const toQList)Params);
+            else if (FromSQL)
+                SQL = toSQL::string(sqlName().latin1(), connection());
+            setHandle(true);
+        }
+        catch (...)
+        {
+            setHandle(false);
+        }
+    }
+    else
+        setHandle(true);
+
+}
+
+toTimer *toResult::timer(void)
+{
+    return toCurrentTool(dynamic_cast<QWidget *>(this))->timer();
+}
+
+toConnection &toResult::connection(void)
+{
+    return toCurrentConnection(dynamic_cast<QWidget *>(this));
+}
+
+void toResult::query(const QString &sql)
+{
+    toQList params;
+    query(sql, (const toQList)params);
+}
+
+void toResult::query(const toSQL &sql)
+{
+    setSQLName(sql.name());
+    FromSQL = true;
+    try
+    {
+        toQList params;
+        query((const QString)toSQL::string(sql, connection()), (const toQList)params);
+        setHandle(true);
+    }
+    catch (...)
+    {
+        setHandle(false);
+    }
+}
+
+void toResult::query(const toSQL &sql, toQList &par)
+{
+    setSQLName(sql.name());
+    FromSQL = true;
+    try
+    {
+        query((const QString)toSQL::string(sql, connection()), (const toQList)par);
+        setHandle(true);
+    }
+    catch (...)
+    {
+        setHandle(false);
+    }
+}
+
+void toResult::setSQL(const toSQL &sql)
+{
+    setSQLName(sql.name());
+    FromSQL = true;
+
+    try
+    {
+        Params.clear();
+        setSQL(toSQL::string(sql, connection()));
+        setHandle(true);
+    }
+    catch (...)
+    {
+        setHandle(false);
+    }
+}
+
+void toResult::changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+{
+    toQList params;
+    toPush(params, toQValue(Param1));
+    toPush(params, toQValue(Param2));
+    toPush(params, toQValue(Param3));
+    query((const QString)SQL, (const toQList)params);
+}
+
+void toResult::changeParams(const QString &Param1, const QString &Param2)
+{
+    toQList params;
+    toPush(params, toQValue(Param1));
+    toPush(params, toQValue(Param2));
+    query((const QString)SQL, (const toQList)params);
+}
+
+void toResult::changeParams(const QString &Param1)
+{
+    toQList params;
+    toPush(params, toQValue(Param1));
+    query((const QString)SQL, (const toQList)params);
+}
+
+void toResultObject::connectionChanged(void)
+{
+    Result->connectionChanged();
+}
+
+void toResultObject::setup(void)
+{
+    QObject *obj = dynamic_cast<QObject *>(Result);
+    if (!obj)
+    {
+        toStatusMessage(tr("Internal error, toResult is not a descendant of toResult"));
+        return ;
+    }
+    try
+    {
+        QObject::connect(toCurrentTool(obj), SIGNAL(connectionChange()), this, SLOT(connectionChanged()));
+    }
+    catch (...)
+    {}
+    try
+    {
+        if (Result->Handled)
+            Result->Handled = Result->canHandle(Result->connection());
+    }
+    catch (...)
+    {
+        Result->Handled = false;
+    }
+    if (!Result->Handled)
+        Result->changeHandle();
+}
+
+bool toResult::setSQLParams(const QString &sql, const toQList &par)
+{
+    bool force = ForceRefresh;
+    ForceRefresh = false;
+    if (!toConfigurationSingle::Instance().globalConfig(CONF_DONT_REREAD, "Yes").isEmpty())
+    {
+        if (SQL == sql && par.size() == Params.size())
+        {
+            toQList::iterator i = ((toQList &)par).begin();
+            toQList::iterator j = Params.begin();
+            while (i != ((toQList &)par).end() && j != Params.end())
+            {
+                if (QString(*i) != QString(*j))
+                    break;
+                i++;
+                j++;
+            }
+            if (i == ((toQList &)par).end() && j == Params.end())
+                return force;
+        }
+    }
+    SQL = sql;
+    Params = par;
+    QueryReady = true;
+    return true;
+}
+
+void toResult::refresh()
+{
+    ForceRefresh = true;
+    query((const QString &)SQL, (const toQList &)Params);
+}

Added: kde-extras/tora/branches/upstream/current/src/toresult.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresult.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresult.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,236 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULT_H
+#define TORESULT_H
+
+#include "config.h"
+#include "toqvalue.h"
+#include "tosql.h"
+
+#include <list>
+
+#include <qobject.h>
+
+class QTabWidget;
+class toConnection;
+class toResult;
+class toTimer;
+
+/** Used for getting slots into toResult.
+ * @internal
+ */
+
+class toResultObject : public QObject
+{
+    Q_OBJECT
+
+    toResult *Result;
+public:
+    toResultObject(toResult *result)
+            : Result(result)
+    { }
+public slots:
+    /** Called when connection is changed. Be sure to call the parent if you reimplement this.
+     */
+    virtual void connectionChanged(void);
+    /** Called when timer times out
+     */
+    virtual void setup(void);
+};
+
+/** Abstract baseclass of widgets that can perform queries. Usefull because you can execute
+ * the query without knowing how it's UI is presented.
+ */
+
+class toResult
+{
+    toResultObject Slots;
+    bool Handled;
+    QTabWidget *Tabs;
+
+    QWidget *TabWidget;
+
+    QString SQL;
+    bool ForceRefresh;
+    bool QueryReady;
+    toQList Params;
+    bool FromSQL;
+    QString Name;
+protected:
+    /** Set parameters of last query.
+     */
+    void setParams(const toQList &par)
+    {
+        Params = par;
+        QueryReady = true;
+    }
+    /** Set SQL and parameters and return false if query shouldn't be reexecuted. It is
+     * important that all descendants call this function in the beginning of the implementation
+     * of the query function to determine if the query should be reexecuted or not.
+     */
+    bool setSQLParams(const QString &sql, const toQList &par);
+public:
+    /** Get the current connection from the closest tool.
+     * @return Reference to connection.
+     */
+    toConnection &connection(void);
+    /** Get the timer associated with the closest tool.
+     * @return Pointer to tool timer.
+     */
+    toTimer *timer(void);
+
+    toResult(void);
+    virtual ~toResult()
+    { }
+
+    /** Erase last parameters
+     */
+    virtual void clearParams(void)
+    {
+        Params.clear();
+        QueryReady = false;
+    }
+    /** Re execute last query
+     */
+    virtual void refresh(void);
+    /** Perform a query.
+     * @param sql Execute an SQL statement.
+     * @param params Parameters needed as input to execute statement.
+     */
+    virtual void query(const QString &sql, const toQList &params) = 0;
+    /** Reexecute with changed parameters.
+     * @param Param1 First parameter.
+     */
+    virtual void changeParams(const QString &Param1);
+    /** Reexecute with changed parameters.
+     * @param Param1 First parameter.
+     * @param Param1 Second parameter.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2);
+    /** Reexecute with changed parameters.
+     * @param Param1 First parameter.
+     * @param Param2 Second parameter.
+     * @param Param3 Third parameter.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3);
+    /** Reimplemented for internal reasons.
+     */
+    virtual bool canHandle(toConnection &)
+    {
+        return false;
+    }
+    /** Get last parameters used.
+     * @return Don't modify the list returned.
+     */
+    toQList &params(void)
+    {
+        return Params;
+    }
+    /** Check if this result is handled by the current connection
+     */
+    bool handled(void)
+    {
+        return Handled;
+    }
+    /** Indicate that this result can not be handled even though indicated otherwise
+     */
+    void setHandle(bool);
+    /** Indicate what tabbed widget to disable page if not immediate parent if this
+     * result is not handled.
+     */
+    void setTabWidget(QTabWidget *tab)
+    {
+        Tabs = tab;
+    }
+
+    /** Set the SQL statement of this list
+     * @param sql String containing statement.
+     */
+    void setSQL(const QString &sql)
+    {
+        SQL = sql;
+    }
+    /** Set the SQL statement of this list. This will also affect @ref Name.
+     * @param sql SQL containing statement.
+     */
+    void setSQL(const toSQL &sql);
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const QString &sql);
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql);
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql, toQList &par);
+    /** Get SQL to execute
+     */
+    QString sql(void)
+    {
+        return SQL;
+    }
+
+    /** Get SQL name of list.
+     */
+    virtual QString sqlName(void)
+    {
+        return Name;
+    }
+    /** Set SQL name of list.
+     */
+    virtual void setSQLName(const QString &name)
+    {
+        Name = name;
+    }
+
+    friend class toResultObject;
+protected:
+    /** Called when connection is changed. Be sure to call the parent if you reimplement this.
+     */
+    virtual void connectionChanged(void);
+private:
+    void changeHandle(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultbar.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultbar.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultbar.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,220 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "tonoblockquery.h"
+#include "toresultbar.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <qpopupmenu.h>
+
+#include "toresultbar.moc"
+
+toResultBar::toResultBar(QWidget *parent, const char *name)
+        : toBarChart(parent, name)
+{
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+    LastStamp = 0;
+    Flow = true;
+    Columns = 0;
+    Query = NULL;
+    Started = false;
+}
+
+toResultBar::~toResultBar()
+{
+    delete Query;
+}
+
+void toResultBar::start(void)
+{
+    if (!Started)
+    {
+        try
+        {
+            connect(timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+        }
+        TOCATCH
+        Started = true;
+    }
+}
+
+void toResultBar::stop(void)
+{
+    if (Started)
+    {
+        try
+        {
+            disconnect(timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+        }
+        TOCATCH
+        Started = false;
+    }
+}
+
+void toResultBar::query(const QString &sql, const toQList &param, bool first)
+{
+    if (!handled() || Query)
+        return ;
+
+    start();
+    setSQLParams(sql, param);
+
+    try
+    {
+        First = first;
+        Query = new toNoBlockQuery(connection(), toQuery::Background, sql, param);
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+void toResultBar::poll(void)
+{
+    try
+    {
+        if (Query && Query->poll())
+        {
+            toQDescList desc;
+            if (!Columns)
+            {
+                desc = Query->describe();
+                Columns = desc.size();
+            }
+
+            if (First)
+            {
+                if ( desc.empty() )
+                    desc = Query->describe();
+                clear();
+                std::list<QString> labels;
+                for (toQDescList::iterator i = desc.begin();i != desc.end();i++)
+                    if (i != desc.begin())
+                        labels.insert(labels.end(), (*i).Name);
+                setLabels(labels);
+            }
+
+            while (Query->poll() && !Query->eof())
+            {
+                unsigned int num = 0;
+                QString lab = Query->readValue();
+                num++;
+                std::list<double> vals;
+                while (!Query->eof() && num < Columns)
+                {
+                    vals.insert(vals.end(), Query->readValue().toDouble());
+                    num++;
+                }
+
+                if (Flow)
+                {
+                    time_t now = time(NULL);
+                    if (now != LastStamp)
+                    {
+                        if (LastValues.size() > 0)
+                        {
+                            std::list<double> dispVal;
+                            std::list<double>::iterator i = vals.begin();
+                            std::list<double>::iterator j = LastValues.begin();
+                            while (i != vals.end() && j != LastValues.end())
+                            {
+                                dispVal.insert(dispVal.end(), (*i - *j) / (now - LastStamp));
+                                i++;
+                                j++;
+                            }
+                            std::list<double> tmp = transform(dispVal);
+                            addValues(tmp, lab);
+                        }
+                        LastValues = vals;
+                        LastStamp = now;
+                    }
+                }
+                else
+                {
+                    std::list<double> tmp = transform(vals);
+                    addValues(tmp, lab);
+                }
+            }
+            if (Query->eof())
+            {
+                Poll.stop();
+                Columns = 0;
+                delete Query;
+                Query = NULL;
+                update();
+            }
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}
+
+std::list<double> toResultBar::transform(std::list<double> &input)
+{
+    return input;
+}
+
+void toResultBar::connectionChanged(void)
+{
+    toResult::connectionChanged();
+    clear();
+}
+
+void toResultBar::addMenues(QPopupMenu *popup)
+{
+    if (!sqlName().isEmpty())
+    {
+        popup->insertSeparator();
+        popup->insertItem(tr("Edit SQL..."),
+                          this, SLOT(editSQL()));
+    }
+}
+
+void toResultBar::editSQL(void)
+{
+    toMainWidget()->editSQL(sqlName());
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultbar.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultbar.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultbar.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,215 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTBAR_H
+#define TORESULTBAR_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "tobarchart.h"
+#include "toresult.h"
+
+#include <time.h>
+
+#include <list>
+
+class toNoBlockQuery;
+class toSQL;
+
+/** Display the result of a query in a piechart. The first column of the query should
+ * contain the x value and the rest of the columns should be values of the diagram. The
+ * legend is the column name. Connects to the tool timer for updates automatically.
+ */
+
+class toResultBar : public toBarChart, public toResult
+{
+    Q_OBJECT
+    /** Display flow in change per second instead of actual values.
+     */
+    bool Flow;
+    bool Started;
+    /** Timestamp of last fetch.
+     */
+    time_t LastStamp;
+    /** Last read values.
+     */
+    std::list<double> LastValues;
+    bool First;
+    toNoBlockQuery *Query;
+    toBackground Poll;
+    unsigned int Columns;
+    void query(const QString &sql, const toQList &param, bool first);
+public:
+    /** Create widget.
+     * @param parent Parent of list.
+     * @param name Name of widget.
+     */
+    toResultBar(QWidget *parent, const char *name = NULL);
+
+    /** Destroy chart
+     */
+    ~toResultBar();
+
+    /** Stop automatic updating from tool timer.
+     */
+    void stop();
+    /** Start automatic updating from tool timer.
+     */
+    void start();
+
+    /** Display actual values or flow/s.
+     * @param on Display flow or absolute values.
+     */
+    void setFlow(bool on)
+    {
+        Flow = on;
+    }
+    /** Return if flow is displayed.
+     * @return If flow is used.
+     */
+    bool flow(void)
+    {
+        return Flow;
+    }
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param)
+    {
+        query(sql, param, true);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void clear(void)
+    {
+        LastStamp = 0;
+        LastValues.clear();
+        toBarChart::clear();
+    }
+    /** Transform valueset. Make it possible to perform more complex transformation.
+     * called directly before adding the valueset to the chart. After flow transformation.
+     * Default is passthrough.
+     * @param input The untransformed valueset.
+     * @return The valueset actually added to the chart.
+     */
+    virtual std::list<double> transform(std::list<double> &input);
+    /** Handle any connection
+     */
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+
+    // Why are these needed?
+#if 1
+    /** Set the SQL statement of this list
+     * @param sql String containing statement.
+     */
+    void setSQL(const QString &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set the SQL statement of this list. This will also affect @ref Name.
+     * @param sql SQL containing statement.
+     */
+    void setSQL(const toSQL &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const QString &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql, toQList &par)
+    {
+        toResult::query(sql, par);
+    }
+#endif
+public slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        query(sql(), params(), false);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+protected slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void connectionChanged(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void addMenues(QPopupMenu *);
+private slots:
+    void poll(void);
+    void editSQL(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultcols.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcols.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcols.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,613 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "toresultcols.h"
+#include "toresultcolscomment.h"
+#include "toresultlong.h"
+#include "tosql.h"
+
+#include <map>
+
+#include <qapplication.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qregexp.h>
+
+#include "toresultcols.moc"
+
+
+QWidget *toResultCols::resultColsEdit::createValue(QWidget *parent)
+{
+    toResultColsComment *widget = new toResultColsComment(parent);
+    return widget;
+}
+
+void toResultCols::resultColsEdit::setValue(QWidget *widget, const QString &title, const QString &value)
+{
+    toResultColsComment *comment = dynamic_cast<toResultColsComment *>(widget);
+    if (comment)
+    {
+        if (Cached)
+            comment->setCachedComment(false, Table + "." + connection().quote(title), const_cast<QString &>(value));
+        else
+            comment->setComment(false, Table + "." + connection().quote(title), value);
+    }
+}
+
+void toResultCols::resultColsEdit::describe(toQDescList &desc, const QString &table, bool cache)
+{
+    start();
+    Table = table;
+    Cached = cache;
+    for (toQDescList::iterator i = desc.begin();i != desc.end();i++)
+        addItem((*i).Name, (*i).Comment);
+    done();
+}
+
+static toSQL SQLInfo("toResultCols:Info",
+                     "SELECT Data_Default,\n"
+                     "       Num_Distinct,\n"
+                     "       Low_Value,\n"
+                     "       High_Value,\n"
+                     "       Density,\n"
+                     "       Num_Nulls,\n"
+                     "       Num_Buckets,\n"
+                     "       Last_Analyzed,\n"
+                     "       Sample_Size,\n"
+                     "       Avg_Col_Len\n"
+                     "  FROM sys.All_Tab_Columns\n"
+                     " WHERE Owner = :f1<char[100]>\n"
+                     "   AND Table_Name = :f2<char[100]>\n"
+                     "   AND Column_Name = :f3<char[100]>",
+                     "Display analyze statistics about a column",
+                     "0801");
+static toSQL SQLInfo8("toResultCols:Info",
+                      "SELECT Data_Default,\n"
+                      "       Num_Distinct,\n"
+                      "       Low_Value,\n"
+                      "       High_Value,\n"
+                      "       Density,\n"
+                      "       Num_Nulls,\n"
+                      "       Num_Buckets,\n"
+                      "       Last_Analyzed,\n"
+                      "       Sample_Size,\n"
+                      "       NULL\n"
+                      "  FROM sys.All_Tab_Columns\n"
+                      " WHERE Owner = :f1<char[100]>\n"
+                      "   AND Table_Name = :f2<char[100]>\n"
+                      "   AND Column_Name = :f3<char[100]>",
+                      QString::null,
+                      "0800");
+static toSQL SQLInfo7("toResultCols:Info",
+                      "SELECT Data_Default,\n"
+                      "       Num_Distinct,\n"
+                      "       Low_Value,\n"
+                      "       High_Value,\n"
+                      "       Density,\n"
+                      "       NULL,\n"
+                      "       NULL,\n"
+                      "       NULL,\n"
+                      "       NULL,\n"
+                      "       NULL\n"
+                      "  FROM sys.All_Tab_Columns\n"
+                      " WHERE Owner = :f1<char[100]>\n"
+                      "   AND Table_Name = :f2<char[100]>\n"
+                      "   AND Column_Name = :f3<char[100]>",
+                      "",
+                      "0703");
+
+class toResultColsItem : public toResultViewMLine
+{
+public:
+    toResultColsItem(QListView *parent, QListViewItem *after)
+            : toResultViewMLine(parent, after)
+    { }
+    virtual QString key (int column, bool ascending)
+    {
+        if (column == 0)
+        {
+            QString ret;
+            ret.sprintf("%04d", text(0).toInt());
+            return ret;
+        }
+        return toResultViewMLine::key(column, ascending);
+    }
+    virtual int width(const QFontMetrics &fm, const QListView *lst, int col) const
+    {
+        return QListViewItem::width(fm, lst, col);
+    }
+    virtual QString tooltip(int col) const
+    {
+        toResultCols::resultCols *view = dynamic_cast<toResultCols::resultCols *>(listView());
+        try
+        {
+            toConnection &conn = toCurrentConnection(view);
+            if (!toIsOracle(conn))
+                return QString::null;
+            toQList resLst = toQuery::readQueryNull(conn, SQLInfo,
+                                                    text(10), text(11), text(1));
+            QString result(QString::fromLatin1("<B>"));
+            result += (text(1));
+            result += QString::fromLatin1("</B><BR><BR>");
+
+            int any = 0;
+            QString cur = toShift(resLst);
+            if (!cur.isEmpty())
+            {
+                result += qApp->translate("toResultCols", "Default value: <B>");
+                result += (cur);
+                result += QString::fromLatin1("</B><BR><BR>");
+                any++;
+            }
+
+            QString analyze;
+            cur = toShift(resLst);
+            if (!cur.isEmpty())
+            {
+                analyze += qApp->translate("toResultCols", "Distinct values: <B>");
+                analyze += (cur);
+                analyze += QString::fromLatin1("</B><BR>");
+                any++;
+            }
+            cur = toShift(resLst);
+            if (!cur.isEmpty())
+            {
+                analyze += qApp->translate("toResultCols", "Low value: <B>");
+                analyze += (cur);
+                analyze += QString::fromLatin1("</B><BR>");
+                any++;
+            }
+            cur = toShift(resLst);
+            if (!cur.isEmpty())
+            {
+                analyze += qApp->translate("toResultCols", "High value: <B>");
+                analyze += (cur);
+                analyze += QString::fromLatin1("</B><BR>");
+                any++;
+            }
+            cur = toShift(resLst);
+            if (!cur.isEmpty())
+            {
+                analyze += qApp->translate("toResultCols", "Density: <B>");
+                analyze += (cur);
+                analyze += QString::fromLatin1("</B><BR>");
+                any++;
+            }
+            cur = toShift(resLst);
+            if (!cur.isEmpty())
+            {
+                analyze += qApp->translate("toResultCols", "Number of nulls: <B>");
+                analyze += (cur);
+                analyze += QString::fromLatin1("</B><BR>");
+                any++;
+            }
+            cur = toShift(resLst);
+            if (!cur.isEmpty())
+            {
+                analyze += qApp->translate("toResultCols", "Number of histogram buckets: <B>");
+                analyze += (cur);
+                analyze += QString::fromLatin1("</B><BR>");
+                any++;
+            }
+            cur = toShift(resLst);
+            if (!cur.isEmpty())
+            {
+                analyze += qApp->translate("toResultCols", "Last analyzed: <B>");
+                analyze += (cur);
+                analyze += QString::fromLatin1("</B><BR>");
+                any++;
+            }
+            cur = toShift(resLst);
+            if (!cur.isEmpty())
+            {
+                analyze += qApp->translate("toResultCols", "Sample size: <B>");
+                analyze += (cur);
+                analyze += QString::fromLatin1("</B><BR>");
+                any++;
+            }
+            cur = toShift(resLst);
+            if (!cur.isEmpty())
+            {
+                analyze += qApp->translate("toResultCols", "Average column size: <B>");
+                analyze += (cur);
+                analyze += QString::fromLatin1("</B><BR>");
+                any++;
+            }
+            if (!analyze.isEmpty())
+            {
+                result += QString::fromLatin1("<B>Analyze statistics:</B><BR>");
+                result += (analyze);
+            }
+            if (!any)
+                return text(col);
+            return result;
+        }
+        catch (const QString &exc)
+        {
+            toStatusMessage(exc);
+            return text(col);
+        }
+    }
+};
+
+static toSQL SQLTableCommentMySQL("toResultCols:TableComment",
+                                  "TOAD 15 SHOW TABLE STATUS FROM :f1<noquote> LIKE :f2<char[100]>",
+                                  "Dispalay Table comment",
+                                  "4.1",
+                                  "MySQL");
+static toSQL SQLTableComment("toResultCols:TableComment",
+                             "SELECT Comments FROM sys.All_Tab_Comments\n"
+                             " WHERE Owner = :f1<char[100]>\n"
+                             "   AND Table_Name = :f2<char[100]>",
+                             "");
+
+static toSQL SQLTableColumns("toResultCols:ListCols",
+                             "SHOW FULL COLUMNS FROM :f1<noquote>",
+                             "Show full column information, only used for MySQL databases",
+                             "3.23",
+                             "MySQL");
+
+toResultCols::toResultCols(QWidget *parent, const char *name, WFlags f)
+        : QVBox(parent, name, f)
+{
+    QHBox *box = new QHBox(this);
+    Title = new QLabel(box);
+    Title->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Maximum));
+    Comment = new QLabel(box);
+    Comment->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum));
+    EditComment = new toResultColsComment(box);
+    EditComment->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Maximum));
+    EditComment->hide();
+    Edit = new QCheckBox("Edit comments", box);
+    Edit->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Maximum));
+    connect(Edit, SIGNAL(toggled(bool)), this, SLOT(editComment(bool)));
+    Columns = new resultCols(this);
+    MySQLColumns = new toResultLong(this);
+    MySQLColumns->hide();
+    Header = true;
+    resize(640, 300);
+}
+
+void toResultCols::displayHeader(bool display)
+{
+    Header = display;
+
+    Title->setShown(display);
+    Comment->setShown(display && !Edit->isChecked());
+    EditComment->setShown(display && Edit->isChecked());
+    Edit->setShown(display);
+}
+
+void toResultCols::query(const QString &sql, const toQList &param, bool nocache)
+{
+    QString Owner;
+    QString Name;
+    QString object;
+
+    nocache = true;
+
+    // Intentionally ignore returncode.
+    if (!setSQLParams(sql, param) && !nocache)
+        return ;
+
+    try
+    {
+        toQList subp;
+
+        toConnection &conn = connection();
+
+        toQList::iterator cp = ((toQList &)param).begin();
+        if (cp != ((toQList &)param).end())
+        {
+            object = conn.quote(*cp);
+            Owner = *cp;
+        }
+        cp++;
+        if (cp != ((toQList &)param).end())
+        {
+            object += QString::fromLatin1(".");
+            object += conn.quote(*cp);
+            Name = *cp;
+        }
+        else
+        {
+            Name = Owner;
+            if (toIsMySQL(conn))
+                Owner = connection().database();
+            else
+                Owner = connection().user().upper();
+        }
+
+        QString synonym;
+
+        Columns->clear();
+
+        if (toIsMySQL(conn))
+        {
+            MySQLColumns->show();
+            Columns->hide();
+            MySQLColumns->setSQL(SQLTableColumns);
+            if (Owner.isEmpty())
+                MySQLColumns->changeParams(Name);
+            else
+                MySQLColumns->changeParams(Owner + "." + Name);
+        }
+        else
+        {
+            Columns->show();
+            MySQLColumns->hide();
+        }
+
+        const toConnection::objectName &name = conn.realName(object, synonym, false);
+
+        QString label = QString::fromLatin1("<B>");
+        if (!synonym.isEmpty())
+        {
+            label += conn.quote(synonym);
+            label += tr("</B> synonym for <B>");
+        }
+        label += conn.quote(name.Owner);
+        if (label != QString::fromLatin1("<B>"))
+            label += QString::fromLatin1(".");
+        label += conn.quote(name.Name);
+
+        label += QString::fromLatin1("</B>");
+        if (name.Comment)
+        {
+            Comment->setText(QString::fromLatin1(" - ") + name.Comment);
+            EditComment->setCachedComment(true,
+                                          conn.quote(name.Owner) + "." + conn.quote(name.Name),
+                                          const_cast<QString &>(name.Comment));
+        }
+        else
+        {
+            Comment->setText(QString::null);
+            EditComment->setCachedComment(true,
+                                          conn.quote(name.Owner) + "." + conn.quote(name.Name),
+                                          const_cast<QString &>(name.Comment));
+        }
+
+        if (toIsOracle(connection()) || toIsMySQL(connection()))
+        {
+            editComment(Edit->isChecked());
+            Edit->setEnabled(true);
+        }
+        else
+        {
+            editComment(Edit->isChecked());
+            Edit->setEnabled(false);
+        }
+
+        if (!toIsMySQL(conn))
+            Columns->query(name, nocache);
+
+        Title->setText(label);
+    }
+    catch (const QString &)
+    {
+        try
+        {
+            QString label = QString::fromLatin1("<B>");
+            label += object;
+            label += QString::fromLatin1("</B>");
+            if (connection().provider() == "Oracle" || connection().provider() == "MySQL")
+            {
+                toConnection &conn = connection();
+                toQuery query(conn, SQLTableComment, Owner, Name);
+                QString t;
+                while (!query.eof())
+                {
+                    t += QString::fromLatin1(" - ");
+                    QString comment = query.readValueNull();
+                    EditComment->setComment(true, conn.quote(Owner) + "." + conn.quote(Name), comment);
+                    t += comment;
+                }
+                Comment->setText(t);
+                editComment(Edit->isChecked());
+                Edit->setEnabled(true);
+            }
+            else
+            {
+                editComment(false);
+                Edit->setEnabled(false);
+            }
+            label += " " + tr("(Object cache not ready)");
+            if (!toIsMySQL(connection()))
+                Columns->query(object, Owner, Name);
+            Title->setText(label);
+        }
+        catch (const QString &str)
+        {
+            Title->setText(str);
+            toStatusMessage(str);
+        }
+    }
+}
+
+toResultCols::resultCols::resultCols(QWidget *parent, const char *name)
+        : toListView(parent, name)
+{
+    addColumn(QString::fromLatin1("#"));
+    setColumnAlignment(0, AlignRight);
+    addColumn(tr("Column Name"));
+    addColumn(tr("Data Type"));
+    addColumn(QString::fromLatin1("NULL"));
+    addColumn(tr("Comments"));
+    setSorting(0);
+    Edit = new resultColsEdit(parent);
+    Edit->hide();
+}
+
+void toResultCols::resultCols::editComment(bool val)
+{
+    if (val)
+    {
+        Edit->show();
+        hide();
+    }
+    else
+    {
+        Edit->hide();
+        show();
+    }
+}
+
+void toResultCols::resultCols::describe(toQDescList &desc)
+{
+    int col = 1;
+    for (toQDescList::iterator i = desc.begin();i != desc.end();i++)
+    {
+        QListViewItem *item = new toResultColsItem(this, NULL);
+
+        item->setText(0, QString::number(col++));
+        item->setText(1, (*i).Name);
+        item->setText(2, (*i).Datatype);
+        if ((*i).Null)
+            item->setText(3, QString::fromLatin1("NULL"));
+        else
+            item->setText(3, QString::fromLatin1("NOT NULL"));
+        item->setText(4, (*i).Comment);
+
+        item->setText(10, Owner);
+        item->setText(11, Name);
+    }
+}
+
+static toSQL SQLComment("toResultCols:Comments",
+                        "SELECT Column_name,Comments FROM sys.All_Col_Comments\n"
+                        " WHERE Owner = :f1<char[100]>\n"
+                        "   AND Table_Name = :f2<char[100]>",
+                        "Display column comments");
+
+void toResultCols::resultCols::query(const QString &object,
+                                     const QString &owner, const QString &name)
+{
+    try
+    {
+        toConnection &conn = toCurrentConnection(this);
+
+        QString table;
+
+        QString sql = QString::fromLatin1("SELECT * FROM ");
+        if (toIsPostgreSQL(conn))
+            table = name;
+        else
+            table = object;
+        sql += table;
+        sql += QString::fromLatin1(" WHERE NULL=NULL");
+
+        setSQLName(tr("Description of %1").
+                   arg(object));
+
+        toQuery query(conn, sql);
+        toQDescList desc = query.describe();
+
+        if (toIsOracle(conn))
+        {
+            try
+            {
+                toQuery query(conn, SQLComment, owner, name);
+                while (!query.eof())
+                {
+                    QString col = query.readValueNull();
+                    QString com = query.readValueNull();
+                    for (toQDescList::iterator i = desc.begin();i != desc.end();i++)
+                    {
+                        if ((*i).Name == col)
+                        {
+                            (*i).Comment = com;
+                            break;
+                        }
+                    }
+                }
+            }
+            TOCATCH
+        }
+
+        Owner = owner;
+        Name = name;
+
+        describe(desc);
+        Edit->describe(desc, table, false);
+    }
+    TOCATCH
+}
+
+void toResultCols::resultCols::query(const toConnection::objectName &name, bool nocache)
+{
+    try
+    {
+        clear();
+        toConnection &conn = toCurrentConnection(this);
+
+        Owner = name.Owner;
+        Name = name.Name;
+
+        QString wholename = conn.quote(Owner) + "." + conn.quote(Name);
+
+        setSQLName(tr("Description of %1").
+                   arg(wholename));
+
+        toQDescList &desc = conn.columns(name, nocache);
+
+        describe(desc);
+        Edit->describe(desc, wholename, true);
+    }
+    TOCATCH
+}
+
+void toResultCols::editComment(bool val)
+{
+    if (toIsOracle(connection()))
+        Columns->editComment(val);
+    if (Header)
+    {
+        if (val)
+        {
+            Comment->hide();
+            EditComment->show();
+        }
+        else
+        {
+            Comment->show();
+            EditComment->hide();
+        }
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultcols.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcols.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcols.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,206 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTCOLS_H
+#define TORESULTCOLS_H
+
+#include "config.h"
+#include "toconnection.h"
+#include "toresultview.h"
+#include "toresultitem.h"
+
+#include <qvbox.h>
+#include <qlineedit.h>
+
+class QCheckBox;
+class QLabel;
+class toResultColsItem;
+class toResultLong;
+class toResultColsComment;
+
+/** This widget displays information about the returned columns of an object
+ * specified by the first and second parameter in the query. The sql is not
+ * used in the query.
+ */
+
+class toResultCols : public QVBox, public toResult
+{
+    Q_OBJECT
+
+    class resultCols;
+    class resultColsEdit;
+    friend class resultCols;
+    friend class resultColsEdit;
+class resultColsEdit : public toResultItem
+    {
+        QString Table;
+        bool Cached;
+    public:
+        resultColsEdit(QWidget *parent)
+                : toResultItem(1, false, parent)
+        { }
+        virtual QWidget *createValue(QWidget *parent);
+        virtual void setValue(QWidget *widget, const QString &title, const QString &value);
+        void describe(toQDescList &desc, const QString &table, bool cached);
+        friend class resultCols;
+    };
+class resultCols : public toListView
+    {
+        resultColsEdit *Edit;
+        QString Owner;
+        QString Name;
+    public:
+        resultCols(QWidget *parent, const char *name = NULL);
+        void editComment(bool val);
+        void describe(toQDescList &desc);
+        void query(const toConnection::objectName &, bool);
+        void query(const QString &table, const QString &owner, const QString &name);
+        friend class toResultCols;
+    };
+
+    QLabel *Title;
+    QLabel *Comment;
+    toResultColsComment *EditComment;
+    QCheckBox *Edit;
+    resultCols *Columns;
+    toResultLong *MySQLColumns;
+    bool Header;
+
+    virtual void query(const QString &sql, const toQList &param, bool nocache);
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toResultCols(QWidget *parent, const char *name = NULL, WFlags f = 0);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param)
+    {
+        query(sql, param, false);
+    }
+    /** Handle any connection by default
+     */
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+
+    /** Display header of column view
+     */
+    void displayHeader(bool disp);
+
+    // Why are these needed?
+#if 1
+    /** Set the SQL statement of this list
+     * @param sql String containing statement.
+     */
+    void setSQL(const QString &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set the SQL statement of this list. This will also affect @ref Name.
+     * @param sql SQL containing statement.
+     */
+    void setSQL(const toSQL &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const QString &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql, toQList &par)
+    {
+        toResult::query(sql, par);
+    }
+#endif
+
+    friend class toResultColsItem;
+public slots:
+    /** Erase last parameters
+     */
+    virtual void clearParams(void)
+    {
+        toResult::clearParams();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        query(sql(), params(), true);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+private slots:
+    void editComment(bool val);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultcolscomment.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcolscomment.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcolscomment.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,102 @@
+//
+// C++ Implementation: toresultcolscomment
+//
+// Description: 
+//
+//
+// Author: Thomas Porschberg, core <pberg at porschberg>, (C) 2006
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+//
+#include "toresultcolscomment.h"
+
+#include <qregexp.h>
+
+#include "toconnection.h"
+#include "tosql.h"
+#include "utils.h"
+
+#include "toresultcolscomment.moc"
+
+namespace {
+	toSQL SQLChangeTableCommentMySQL("toResultCols:ChangeTableComment",
+                                        "ALTER TABLE %1 COMMENT = %2",
+                                        "Set a comment on a table. Must have same % signs",
+                                        "4.1",
+                                        "MySQL");
+
+	toSQL SQLChangeTableComment("toResultCols:ChangeTableComment",
+                                   "COMMENT ON TABLE %1 IS %2",
+                                   "");
+
+	toSQL SQLChangeColumnComment("toResultCols:ChangeColumnComment",
+                                    "COMMENT ON COLUMN %1 IS %2",
+                                    "Set a comment on a column. Must have same % signs");
+}
+
+toResultColsComment::toResultColsComment(QWidget *parent)
+        : QLineEdit(parent), Changed(false), Cached(0)
+{
+    connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged()));    
+}
+
+	void toResultColsComment::setComment(bool table, const QString &name, const QString &comment)
+{
+    saveUnchanged();
+    disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged()));
+    Table = table;
+    Name = name;
+    Cached = NULL;
+    Changed = false;
+    setText(comment);
+    connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged()));
+}
+
+void toResultColsComment::setCachedComment(bool table, const QString &name, QString &comment)
+{
+    saveUnchanged();
+    disconnect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged()));
+    Table = table;
+    Name = name;
+    Cached = &comment;
+    Changed = false;
+    setText(comment);
+    connect(this, SIGNAL(textChanged(const QString &)), this, SLOT(commentChanged()));
+}
+
+void toResultColsComment::commentChanged()
+{
+    Changed = true;
+}
+
+void toResultColsComment::focusOutEvent(QFocusEvent *e)
+{
+    QLineEdit::focusOutEvent(e);
+    saveUnchanged();
+}
+
+void toResultColsComment::saveUnchanged()
+{
+    try
+    {
+        if (!Name.isEmpty() && Changed)
+        {
+            Changed = false;
+            toConnection &conn = toCurrentConnection(this);
+            QString sql;
+            if (Table)
+                sql = SQLChangeTableComment(conn);
+            else
+                sql = SQLChangeColumnComment(conn);
+            QString comment = text();
+            comment.replace(QRegExp("'"), "''");
+            comment = "'" + comment + "'";
+            conn.execute(sql.arg(Name).arg(comment));
+            if (Cached)
+                *Cached = text();
+        }
+    }
+    TOCATCH
+}
+

Added: kde-extras/tora/branches/upstream/current/src/toresultcolscomment.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcolscomment.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcolscomment.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,70 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTCOLSCOMMENT_H
+#define TORESULTCOLSCOMMENT_H
+
+#include <qstring.h>
+#include <qlineedit.h>
+
+class QFocusEvent;
+class QWidget;
+
+/** This widget is used for single record view in the content editor. Only for internal use.
+ * @internal
+ */
+class toResultColsComment : public QLineEdit
+{
+    Q_OBJECT
+
+    bool Changed;
+    bool Table;
+    QString Name;
+    QString *Cached;
+private:
+    void saveUnchanged();
+protected:
+    virtual void focusOutEvent(QFocusEvent *);
+public:
+    toResultColsComment(QWidget *parent);
+    void setComment(bool table, const QString &name, const QString &comment);
+    void setCachedComment(bool table, const QString &name, QString &comment);
+public slots:
+    void commentChanged();
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultcombo.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcombo.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcombo.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,114 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultcombo.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include "toresultcombo.moc"
+
+toResultCombo::toResultCombo(QWidget *parent, const char *name)
+        : QComboBox(parent, name), Query(0)
+{
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+    connect(this, SIGNAL(activated(int)),
+            this, SLOT(changeSelected(void)));
+}
+
+toResultCombo::~toResultCombo()
+{    
+}
+
+void toResultCombo::query(const QString &sql, const toQList &param)
+{
+    if (!setSQLParams(sql, param))
+        return ;
+
+    try
+    {
+        clear();
+        insertStringList(Additional);
+        for (unsigned int i = 0;i < Additional.count();i++)
+            if (Additional[i] == Selected)
+                setCurrentItem(i);
+
+        Query = new toNoBlockQuery(connection(), toQuery::Background, sql, param);
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+void toResultCombo::changeSelected(void)
+{
+    Selected = currentText();
+}
+
+void toResultCombo::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            while (Query->poll() && !Query->eof())
+            {
+                QString t = Query->readValue();
+                insertItem(t);
+                if (t == Selected)
+                    setCurrentItem(count() - 1);
+            }
+
+            if (Query->eof())
+            {
+                Poll.stop();
+                setFont(font()); // Small hack to invalidate size hint of combobox which should resize to needed size.
+                updateGeometry();
+            }
+        }
+    }
+    catch (const QString &exc)
+    {
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultcombo.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcombo.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcombo.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,190 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTCOMBO_H
+#define TORESULTCOMBO_H
+
+#include <qcombobox.h>
+#include <qstringlist.h>
+
+#include <loki/SmartPtr.h>
+
+#include "config.h"
+#include "tobackground.h"
+#include "toresult.h"
+
+class toNoBlockQuery;
+class toSQL;
+
+using Loki::SmartPtr;
+
+/** This widget displays the result of a query where each field is added as an item
+ * to a combobox.
+ */
+
+class toResultCombo : public QComboBox, public toResult
+{
+    Q_OBJECT
+
+    SmartPtr<toNoBlockQuery> Query;
+    toBackground Poll;
+
+    QString Selected;
+    QStringList Additional;
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultCombo(QWidget *parent, const char *name = NULL);
+    /** Destruct object
+     */
+    ~toResultCombo();
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+
+    /** Clear list of additional items.
+     */
+    virtual void clearAdditional()
+    {
+        Additional.clear();
+    }
+    /** Item to add before the query is read. Can be called several times.
+     */
+    virtual void additionalItem(const QString &item)
+    {
+        Additional << item;
+    }
+
+    /** Handle any connection by default
+     */
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+
+    /** Set selected. When the result is read and this value is encountered that item is selected.
+     */
+    void setSelected(const QString &sel)
+    {
+        Selected = sel;
+    }
+    /** Get selected item value. Might not be same as currentText since that item might not have been read yet.
+     */
+    QString selected(void)
+    {
+        return Selected;
+    }
+
+    // Why are these needed?
+#if 1
+    /** Set the SQL statement of this list
+     * @param sql String containing statement.
+     */
+    void setSQL(const QString &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set the SQL statement of this list. This will also affect @ref Name.
+     * @param sql SQL containing statement.
+     */
+    void setSQL(const toSQL &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const QString &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql, toQList &par)
+    {
+        toResult::query(sql, par);
+    }
+#endif
+signals:
+    /** Done reading the query.
+     */
+    void done(void);
+public slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        toResult::refresh();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+private slots:
+    void poll(void);
+    void changeSelected(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultconstraint.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultconstraint.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultconstraint.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,350 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "toextract.h"
+#include "tonoblockquery.h"
+#include "toresultconstraint.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include "toresultconstraint.moc"
+
+toResultConstraint::toResultConstraint(QWidget *parent, const char *name)
+        : toResultView(false, false, parent, name)
+{
+    setReadAll(true);
+    addColumn(tr("Constraint Name"));
+    addColumn(tr("Condition"));
+#ifndef TO_NO_ORACLE
+
+    addColumn(tr("Enabled"));
+    addColumn(tr("Delete Rule"));
+    addColumn(tr("Generated"));
+#endif
+
+    setSQLName(QString::fromLatin1("toResultConstraint"));
+
+    setSorting(0);
+
+    Query = NULL;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+bool toResultConstraint::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn) ||
+        toIsPostgreSQL(conn) ||
+        toExtract::canHandle(conn);
+}
+
+static toSQL SQLConsColumns("toResultConstraint:ForeignColumns",
+                            "SELECT Column_Name,Table_Name FROM sys.All_Cons_Columns\n"
+                            " WHERE Owner = :f1<char[101]> AND Constraint_Name = :f2<char[101]>\n"
+                            " ORDER BY Position",
+                            "Get columns of foreign constraint, must return same number of cols");
+
+static toSQL PGSQLConsColumns("toResultConstraint:ForeignColumns",
+                              " SELECT column_name,\n"
+                              "         table_name\n"
+                              "    FROM information_schema.constraint_column_usage\n"
+                              "   WHERE lower ( table_schema ) = lower ( :f1<char[101]> )\n"
+                              "     AND lower ( constraint_name ) = lower ( :f2<char[101]> )\n"
+                              "   ORDER BY constraint_name\n",
+                              "",
+                              "7.1",
+                              "PostgreSQL");
+
+QString toResultConstraint::constraintCols(const QString &conOwner, const QString &conName)
+{
+    toSQL sql = SQLConsColumns;
+    toQuery query(connection(), SQLConsColumns, conOwner, conName);
+
+    QString ret;
+    while (!query.eof())
+    {
+        QString value = query.readValue();
+        if (!ret.isEmpty())
+            ret.append(QString::fromLatin1(","));
+        ret.append(value);
+        LastTable = query.readValue();
+    }
+    return ret;
+}
+
+static toSQL SQLConstraints("toResultConstraint:ListConstraints",
+                            "SELECT Constraint_Name,\n"
+                            "       Search_Condition,\n"
+                            "       R_Owner,\n"
+                            "       R_Constraint_Name,\n"
+                            "       Status,\n"
+                            "       Constraint_Type,\n"
+                            "       Delete_Rule,\n"
+                            "       Generated\n"
+                            "  FROM sys.All_Constraints\n"
+                            " WHERE Owner = :f1<char[101]>\n"
+                            "   AND Table_Name = :f2<char[101]>\n"
+                            " ORDER BY Constraint_Name",
+                            "List constraints on a table. Must have same column order",
+                            "0800");
+
+static toSQL SQLConstraints7("toResultConstraint:ListConstraints",
+                             "SELECT Constraint_Name,\n"
+                             "       Search_Condition,\n"
+                             "       R_Owner,\n"
+                             "       R_Constraint_Name,\n"
+                             "       Status,\n"
+                             "       Constraint_Type,\n"
+                             "       Delete_Rule,\n"
+                             "       'N/A'\n"
+                             "  FROM sys.All_Constraints\n"
+                             " WHERE Owner = :f1<char[101]>\n"
+                             "   AND Table_Name = :f2<char[101]>\n"
+                             " ORDER BY Constraint_Name",
+                             "",
+                             "0703");
+
+static toSQL PGSQLConstraints("toResultConstraint:ListConstraints",
+                              " SELECT cu.constraint_name,\n"
+                              "        pg_get_constraintdef ( ct.OID ) AS Search_Condition,\n"
+                              "        NULL AS r_owner,\n"
+                              "        NULL AS r_constraint_name,\n"
+                              "        NOT ct.condeferred AS status,\n"
+                              "        ct.contype AS TYPE,\n"
+                              "        NULL AS Delete_rule,\n"
+                              "        NULL AS GENERATED\n"
+                              "   FROM information_schema.constraint_column_usage cu,\n"
+                              "        pg_constraint ct\n"
+                              "  WHERE lower ( cu.table_schema ) = lower ( :f1<char[101]> )\n"
+                              "    AND lower ( Table_Name ) = lower ( :f2<char[101]> )\n"
+                              "    AND cu.constraint_name = ct.conname\n"
+                              "  ORDER BY constraint_name\n",
+                              "",
+                              "7.4",
+                              "PostgreSQL");
+                              
+
+void toResultConstraint::addConstraint(const QString &name, const QString &definition, const QString &status)
+{
+    QListViewItem *item = new toResultViewItem(this, NULL);
+    item->setText(0, name);
+    item->setText(1, definition);
+    item->setText(2, status);
+}
+
+void toResultConstraint::query(const QString &sql, const toQList &param)
+{
+    if (!handled())
+        return ;
+
+    toQList::iterator cp = ((toQList &)param).begin();
+    if (cp != ((toQList &)param).end())
+        Owner = *cp;
+    cp++;
+    if (cp != ((toQList &)param).end())
+        TableName = (*cp);
+
+    if (!setSQLParams(sql, param))
+        return ;
+
+    clear();
+
+    if (toIsOracle(connection()))
+    {
+        if (Query)
+            delete Query;
+        Query = NULL;
+
+        try
+        {
+            toQList par;
+            par.insert(par.end(), Owner);
+            par.insert(par.end(), TableName);
+            Query = new toNoBlockQuery(connection(), toQuery::Background,
+                                       toSQL::string(SQLConstraints, connection()),
+                                       par);
+            Poll.start(100);
+        }
+        TOCATCH
+    }
+    else if(toIsPostgreSQL(connection())) {
+        if (Query)
+            delete Query;
+        Query = NULL;
+
+        try
+        {
+            toQList par;
+            par.insert(par.end(), Owner);
+            par.insert(par.end(), TableName);
+            Query = new toNoBlockQuery(connection(),
+                                       toQuery::Background,
+                                       toSQL::string(PGSQLConstraints,
+                                                     connection()),
+                                       par);
+            Poll.start(100);
+        }
+        TOCATCH;
+    }
+    else
+    {
+        std::list<QString> objects;
+        objects.insert(objects.end(), "TABLE FAMILY:" + Owner + "." + TableName);
+        objects.insert(objects.end(), "TABLE REFERENCES:" + Owner + "." + TableName);
+
+        toExtract extract(connection(), NULL);
+        extract.setCode(true);
+        extract.setHeading(false);
+        extract.setConstraints(true);
+        std::list<QString> dsc = extract.describe(objects);
+
+        QString name;
+        QString definition;
+        QString status;
+
+        for (std::list<QString>::iterator i = dsc.begin();i != dsc.end();i++)
+        {
+            std::list<QString> ctx = toExtract::splitDescribe(*i);
+            toShift(ctx); // Schema;
+            toShift(ctx); // Table;
+            toShift(ctx); // Name;
+            if (toShift(ctx) == "CONSTRAINT")
+            {
+                QString nname = toShift(ctx);
+                if (nname != name && !name.isEmpty())
+                    addConstraint(name, definition, status);
+                name = nname;
+                QString extra = toShift(ctx);
+                if (extra == "DEFINITION")
+                    definition = toShift(ctx);
+                else if (extra == "STATUS")
+                    status = toShift(ctx);
+            }
+        }
+        if (!name.isEmpty())
+            addConstraint(name, definition, status);
+    }
+}
+
+toResultConstraint::~toResultConstraint()
+{
+    delete Query;
+}
+
+void toResultConstraint::poll()
+{
+    try
+    {
+        if (Query && Query->poll())
+        {
+            while (Query->poll() && !Query->eof())
+            {
+                QListViewItem *item = new toResultViewItem(this, NULL);
+
+                QString consName = Query->readValue();
+                QString check = Query->readValue();
+                QString colNames = constraintCols(Owner, consName);
+                item->setText(0, consName);
+                QString rConsOwner = Query->readValue();
+                QString rConsName = Query->readValue();
+                item->setText(2, Query->readValue());
+                QString type = Query->readValue();
+
+                // for pg, the check string is already good
+                if(toIsPostgreSQL(connection()))
+                    item->setText(1, check);
+                else {
+                    QString Condition;
+                    char t = (type.latin1())[0];
+                    switch (t)
+                    {
+                    case 'U':
+                        Condition = QString::fromLatin1("unique (");
+                        Condition.append(colNames);
+                        Condition.append(QString::fromLatin1(")"));
+                        break;
+                    case 'P':
+                        Condition = QString::fromLatin1("primary key (");
+                        Condition.append(colNames);
+                        Condition.append(QString::fromLatin1(")"));
+                        break;
+                    case 'C':
+                    case 'V':
+                    case 'O':
+                        Condition = QString::fromLatin1("check (");
+                        Condition.append(check);
+                        Condition.append(QString::fromLatin1(")"));
+                        break;
+                    case 'R':
+                        Condition = QString::fromLatin1("foreign key (");
+                        Condition.append(colNames);
+                        Condition.append(QString::fromLatin1(") references "));
+                        Condition.append(rConsOwner);
+                        Condition.append(QString::fromLatin1("."));
+                        QString cols(constraintCols(rConsOwner, rConsName));
+
+                        Condition.append(LastTable);
+                        Condition.append(QString::fromLatin1("("));
+                        Condition.append(cols);
+                        Condition.append(QString::fromLatin1(")"));
+                        break;
+                    }
+                    item->setText(1, Condition);
+                }
+
+                item->setText(3, Query->readValueNull());
+                item->setText(4, Query->readValue());
+            }
+            if (Query->eof())
+            {
+                delete Query;
+                Query = NULL;
+                Poll.stop();
+            }
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultconstraint.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultconstraint.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultconstraint.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,91 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTCONSTRAINT_H
+#define TORESULTCONSTRAINT_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+/** This widget displays information about the constraints of an object
+ * specified by the first and second parameter in the query. The sql is not
+ * used in the query.
+ */
+
+class toResultConstraint : public toResultView
+{
+    Q_OBJECT
+
+    /** The last table queried.
+     */
+    QString LastTable;
+    /** Get columns for a constraints.
+     * @param conOwner Owner of constraint.
+     * @param conName Name of constraint.
+     * @return String with column names separated by a ',' character.
+     */
+    QString constraintCols(const QString &conOwner, const QString &conName);
+
+    QString Owner;
+    QString TableName;
+
+    toNoBlockQuery *Query;
+    toBackground Poll;
+    void addConstraint(const QString &name, const QString &definition, const QString &status);
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultConstraint(QWidget *parent, const char *name = NULL);
+    /** Destroy object
+     */
+    ~toResultConstraint();
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+    /** Support Oracle
+     */
+    virtual bool canHandle(toConnection &conn);
+private slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultcontent.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcontent.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcontent.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1786 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "tomemoeditor.h"
+#include "tonoblockquery.h"
+#include "toparamget.h"
+#include "toresultcols.h"
+#include "toresultcontent.h"
+#include "toresultcontentfilterui.h"
+#include "toresultview.h"
+#include "tosearchreplace.h"
+#include "totool.h"
+
+#include <qcheckbox.h>
+#include <qclipboard.h>
+#include <qdragobject.h>
+#include <qgrid.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qmessagebox.h>
+#include <qpainter.h>
+#include <qpopupmenu.h>
+#include <qregexp.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <stdio.h>
+
+#include "toresultcontent.moc"
+#include "toresultcontentfilterui.moc"
+
+#include "icons/addrecord.xpm"
+#include "icons/canceledit.xpm"
+#include "icons/duplicaterecord.xpm"
+#include "icons/filter.xpm"
+#include "icons/forward.xpm"
+#include "icons/next.xpm"
+#include "icons/nofilter.xpm"
+#include "icons/previous.xpm"
+#include "icons/rewind.xpm"
+#include "icons/saverecord.xpm"
+#include "icons/single.xpm"
+#include "icons/trash.xpm"
+
+std::map<QCString, QString> toResultContentEditor::Criteria;
+std::map<QCString, QString> toResultContentEditor::Order;
+
+toResultContentEditor *toResultContentMemo::contentEditor()
+{
+    return dynamic_cast<toResultContentEditor *>(parent());
+}
+
+toResultContentMemo::toResultContentMemo(QWidget *parent, const QString &data, int row, int col,
+        bool sql)
+        : toMemoEditor(parent, data, row, col, sql, false, true)
+{
+    toResultContentEditor *cnt = contentEditor();
+    if (cnt)
+        label()->setText("<B>" + cnt->horizontalHeader()->label(col) + "</B>");
+    connect(parent, SIGNAL(currentChanged(int, int)), this, SLOT(changePosition(int, int)));
+}
+
+void toResultContentMemo::changePosition(int row, int cols)
+{
+    toMemoEditor::changePosition(row, cols);
+    toResultContentEditor *cnt = contentEditor();
+    if (cnt)
+    {
+        cnt->setCurrentCell(row, cols); // Nasty workaround but it'll work I think.
+        setText(cnt->text(row, cols));
+        label()->setText("<B>" + cnt->horizontalHeader()->label(cols) + "</B>");
+    }
+}
+
+void toResultContentMemo::firstColumn()
+{
+    toResultContentEditor *cnt = contentEditor();
+    if (cnt)
+    {
+        int col = cnt->currentColumn();
+        if (col == 0)
+            cnt->setCurrentCell(std::max(cnt->currentRow() - 1, 0), 0);
+        else
+            cnt->setCurrentCell(cnt->currentRow(), 0);
+    }
+}
+
+void toResultContentMemo::lastColumn()
+{
+    toResultContentEditor *cnt = contentEditor();
+    if (cnt)
+    {
+        int col = cnt->currentColumn();
+        int maxCol = cnt->numCols() - 1;
+        if (col == maxCol)
+            cnt->setCurrentCell(std::min(cnt->numRows() - 1, cnt->currentRow() + 1), maxCol);
+        else
+            cnt->setCurrentCell(cnt->currentRow(), maxCol);
+    }
+}
+
+void toResultContentMemo::previousColumn()
+{
+    toResultContentEditor *cnt = contentEditor();
+    if (cnt)
+    {
+        int col = cnt->currentColumn();
+        if (col == 0)
+            cnt->setCurrentCell(std::max(cnt->currentRow() - 1, 0), cnt->numCols() - 1);
+        else
+            cnt->setCurrentCell(cnt->currentRow(), col - 1);
+    }
+}
+
+void toResultContentMemo::nextColumn()
+{
+    toResultContentEditor *cnt = contentEditor();
+    if (cnt)
+    {
+        int col = cnt->currentColumn();
+        int maxCol = cnt->numCols() - 1;
+        if (col == maxCol)
+            cnt->setCurrentCell(std::min(cnt->numRows() - 1, cnt->currentRow() + 1), 0);
+        else
+            cnt->setCurrentCell(cnt->currentRow(), col + 1);
+    }
+}
+
+toConnection &toResultContentEditor::connection()
+{
+    return toCurrentConnection(this);
+}
+
+toResultContentEditor::contentItem::contentItem(QTable *table, const QString &text)
+        : QTableItem(table, OnTyping, text)
+{}
+
+QString toResultContentEditor::contentItem::key(void) const
+{
+    static QRegExp number(QString::fromLatin1("^-?\\d*\\.?\\d+E?-?\\d*.?.?$"));
+
+    QString txt = text();
+    if (number.match(txt) >= 0)
+    {
+        QString ret;
+        double val = txt.toFloat();
+        if (val < 0)
+            ret.sprintf("\x01%015.5f", val);
+        else
+            ret.sprintf("%015.5f", val);
+        return ret;
+    }
+    return txt;
+}
+
+void toResultContentEditor::setText(int row, int col, const QString &text)
+{
+    QTableItem *itm = item(row, col);
+    if (itm)
+        itm->setText(text);
+    else
+        setItem(row, col, new contentItem(this, text));
+}
+
+void toResultContentEditor::setCurrentCellFocus(int row, int col)
+{
+    QTable::setCurrentCell(row, col);
+    viewport()->setFocus();
+}
+
+void toResultContentEditor::contentsMouseMoveEvent (QMouseEvent *e)
+{
+    if (e->state() == LeftButton &&
+            e->stateAfter() == LeftButton &&
+            LastMove.x() > 0 &&
+            LastMove != e->pos())
+    {
+
+        QPoint p = e->pos();
+        int col = columnAt(p.x());
+        int row = rowAt(p.y());
+        QString str = text(row, col);
+
+        if (str.length())
+        {
+            QDragObject *d = new QTextDrag(str, this);
+            d->dragCopy();
+        }
+    }
+    else
+    {
+        LastMove = e->pos();
+        QTable::contentsMouseMoveEvent(e);
+    }
+}
+
+void toResultContentEditor::contentsMousePressEvent(QMouseEvent *e)
+{
+    LastMove = QPoint( -1, -1);
+    if (e->button() == RightButton)
+        displayMenu(e->globalPos());
+    else
+        QTable::contentsMousePressEvent(e);
+    viewport()->setFocus();
+}
+
+void toResultContentEditor::contentsMouseReleaseEvent(QMouseEvent *e)
+{
+    LastMove = QPoint( -1, -1);
+    QTable::contentsMouseReleaseEvent(e);
+}
+
+void toResultContentEditor::dragEnterEvent(QDragEnterEvent *e)
+{
+    e->accept(QTextDrag::canDecode(e));
+}
+
+void toResultContentEditor::dropEvent(QDropEvent *e)
+{
+    QPoint p(e->pos().x() + contentsX() - verticalHeader()->width(),
+             e->pos().y() + contentsY() - horizontalHeader()->height());
+    int col = columnAt(p.x());
+    int row = rowAt(p.y());
+
+    changePosition(col, row);
+
+    saveRow(row);
+    QString text;
+    if ( QTextDrag::decode(e, text))
+    {
+        setText(row, col, text);
+        setCurrentCell(row, col);
+    }
+}
+
+#define TORESULT_COPY_FIELD 1
+#define TORESULT_PASTE     2
+#define TORESULT_COPY_SEL 3
+#define TORESULT_COPY_SEL_HEAD 4
+#define TORESULT_COPY_TRANS 5
+#define TORESULT_MEMO      6
+#define TORESULT_READ_ALL  7
+#define TORESULT_EXPORT    8
+#define TORESULT_DELETE    9
+#define TORESULT_SELECT_ALL 10
+
+toResultContentEditor::toResultContentEditor(QWidget *parent, const char *name)
+        : QTable(parent, name),
+        toEditWidget(false, true, true,
+                     false, false,
+                     false, false, false,
+                     true, true, true)
+{
+    CurrentEditor = NULL;
+    BinaryColumns = 0;
+    SearchStart = SearchEnd = 0;
+    NoUseReturning = false;
+    AllFilter = false;
+    MaxColDisp = toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_DISP, DEFAULT_MAX_COL_DISP).toInt();
+    Query = NULL;
+    SingleEdit = NULL;
+    connect(this, SIGNAL(currentChanged(int, int)), this, SLOT(changePosition(int, int)));
+    CurrentRow = -1;
+    setFocusPolicy(StrongFocus);
+    setSelectionMode(Single);
+    connect(horizontalHeader(), SIGNAL(clicked(int)), this, SLOT(changeSort(int)));
+    SortRow = -1;
+    setAcceptDrops(true);
+    LastMove = QPoint( -1, -1);
+    MenuColumn = MenuRow = -1;
+
+    Menu = new QPopupMenu(this);
+    Menu->insertItem(tr("&Display in editor..."), TORESULT_MEMO);
+    Menu->insertSeparator();
+    Menu->insertItem(QPixmap(const_cast<const char**>(addrecord_xpm)), tr("New record"), this, SLOT(addRecord()));
+    Menu->insertItem(QPixmap(const_cast<const char**>(duplicaterecord_xpm)), tr("Copy record"), this, SLOT(duplicateRecord()));
+    Menu->insertItem(QPixmap(const_cast<const char**>(saverecord_xpm)), tr("Save changes"), this, SLOT(saveUnsaved()));
+    Menu->insertItem(QPixmap(const_cast<const char**>(canceledit_xpm)), tr("Discard changes"), this, SLOT(cancelEdit()));
+    Menu->insertItem(QPixmap(const_cast<const char**>(trash_xpm)), tr("Delete record"), this, SLOT(deleteCurrent()));
+    Menu->insertSeparator();
+    Menu->insertItem(QPixmap(const_cast<const char**>(filter_xpm)), tr("Define filter"), parentWidget(), SLOT(changeFilter()));
+    Menu->insertItem(QPixmap(const_cast<const char**>(nofilter_xpm)), tr("Remove all filters"), parentWidget(), SLOT(removeFilter()));
+    Menu->insertSeparator();
+    Menu->insertItem(tr("&Copy field"), TORESULT_COPY_FIELD);
+    Menu->insertItem(tr("&Paste field"), TORESULT_PASTE);
+    Menu->insertSeparator();
+    Menu->insertItem(tr("Copy selection"), TORESULT_COPY_SEL);
+    Menu->insertItem(tr("Copy selection with header"), TORESULT_COPY_SEL_HEAD);
+    Menu->insertItem(tr("Copy transposed"), TORESULT_COPY_TRANS);
+    Menu->insertSeparator();
+    Menu->insertItem(tr("&Delete record"), TORESULT_DELETE);
+    Menu->insertSeparator();
+    Menu->insertItem(tr("Select all"), TORESULT_SELECT_ALL);
+    Menu->insertSeparator();
+    Menu->insertItem(tr("Export to file..."), TORESULT_EXPORT);
+    Menu->insertItem(tr("Read all"), TORESULT_READ_ALL);
+    connect(Menu, SIGNAL(activated(int)), this, SLOT(menuCallback(int)));
+
+    QString str = toConfigurationSingle::Instance().globalConfig(CONF_LIST, "");
+    if (!str.isEmpty())
+    {
+        QFont font(toStringToFont(str));
+        setFont(font);
+    }
+
+    installEventFilter(this);
+
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+toResultContentEditor::~toResultContentEditor()
+{
+    saveUnsaved();
+    delete Query;
+    delete [] BinaryColumns;
+}
+
+void toResultContentEditor::wrongUsage(void)
+{
+    toStatusMessage(tr("Can't use these on toResultContent"));
+}
+
+void toResultContentEditor::changeSort(int col)
+{
+    if (col != SortRow)
+    {
+        SortRow = col;
+        SortRowAsc = true;
+    }
+    else
+        SortRowAsc = !SortRowAsc;
+    sortColumn(SortRow, SortRowAsc, true);
+}
+
+void toResultContentEditor::query(const QString &, const toQList &params)
+{
+    if (params.size() != 2)
+        wrongUsage();
+    toQList::const_iterator par = params.begin();
+    QString Param1 = *par;
+    par++;
+    QString Param2 = *par;
+
+    Owner = Param1;
+    Table = Param2;
+    if (AllFilter)
+        FilterName = ("");
+    else
+    {
+        FilterName = Owner;
+        FilterName += (".");
+        FilterName += Table;
+    }
+
+    setNumRows(0);
+    setNumCols(0);
+    NewRecordRow = -1;
+    MaxNumber = toConfigurationSingle::Instance().globalConfig(CONF_MAX_NUMBER, DEFAULT_MAX_NUMBER).toInt();
+
+    delete Query;
+    Query = NULL;
+    GotoEnd = false;
+
+    try
+    {
+        SQL = ("SELECT * FROM ");
+        SQL += table();
+        bool where = false;
+        if (!Criteria[FilterName.utf8()].isEmpty())
+        {
+            SQL += (" WHERE ");
+            SQL += Criteria[FilterName.utf8()];
+            SQL += (" ");
+            where = true;
+        }
+        emit filterEnabled(where);
+
+        toQList par;
+
+        QString order;
+        if (!Order[FilterName.utf8()].isEmpty())
+        {
+            order = (" ORDER BY ");
+            order += Order[FilterName.utf8()];
+        }
+
+        QString init = SQL;
+        SkipNumber = toConfigurationSingle::Instance().globalConfig(CONF_MAX_CONTENT, DEFAULT_MAX_CONTENT).toInt();
+
+        if (SkipNumber > 0)
+        {
+            if (connection().provider() == "Oracle")
+                init = "SELECT * FROM (" + SQL + order + ") WHERE ROWNUM <= " + QString::number(SkipNumber);
+            else if (connection().provider() == "MySQL")
+                init = SQL + order + " LIMIT " + QString::number(SkipNumber);
+            else if (connection().provider() == "SapDB")
+            {
+                init = SQL;
+                if (where)
+                    init += " AND ";
+                else
+                    init += " WHERE ";
+                init += "ROWNO <= " + QString::number(SkipNumber) + order;
+            }
+        }
+        SQL += order;
+        Query = new toNoBlockQuery(connection(), toQuery::Background, init, par);
+        Poll.start(100);
+        OrigValues.clear();
+        CurrentRow = -1;
+    }
+    TOCATCH
+}
+
+#define STOP_RESIZE_ROW 200
+
+void toResultContentEditor::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            bool first = false;
+            if (numRows() == 0)
+            {
+                Description = Query->describe();
+
+                delete [] BinaryColumns;
+                BinaryColumns = new bool[Description.size()];
+                for (unsigned int j = 0;j < Description.size();j++)
+                    BinaryColumns[j] = false;
+
+                setNumCols(Description.size());
+
+                QHeader *head = horizontalHeader();
+                int col = 0;
+                for (toQDescList::iterator i = Description.begin();i != Description.end();i++)
+                {
+                    head->setLabel(col, (*i).Name);
+                    col++;
+                }
+                Row = 0;
+                first = true;
+            }
+
+            std::list<QString> data;
+            int dataSize = 0;
+
+            for (int j = Row;(j < MaxNumber || MaxNumber < 0) && Query->poll() && !Query->eof();j++)
+            {
+                for (int k = 0;k < numCols();k++)
+                    if (SkipNumber <= 0 || j < SkipNumber)
+                    {
+                        toQValue val = Query->readValueNull();
+                        if (val.isDouble())
+                            data.insert(data.end(), QString::number(val.toDouble()));
+                        else
+                        {
+                            if (val.isBinary())
+                                BinaryColumns[k] = true;
+                            data.insert(data.end(), val);
+                        }
+                        dataSize++;
+                    }
+                    else
+                        Query->readValueNull();
+                if (SkipNumber > 0 && j >= SkipNumber)
+                    SkipNumber--;
+            }
+
+            int rows = Row + dataSize / numCols() + 1;
+            if (numRows() != rows)
+            {
+                setUpdatesEnabled(false);
+                setNumRows(rows);
+
+#if QT_VERSION >= 0x030000
+
+                int origRow = Row;
+#endif
+
+                while (dataSize > 0)
+                {
+                    verticalHeader()->setLabel(Row, QString::number(Row + 1));
+                    for (int j = 0;j < numCols();j++)
+                    {
+                        setText(Row, j, toShift(data));
+                        dataSize--;
+                    }
+                    Row++;
+                }
+#if QT_VERSION >= 0x030000
+                if (numRows() < STOP_RESIZE_ROW)
+                    for (int j = 0;j < numCols();j++)
+                    {
+                        int width = columnWidth(j);
+                        for (int k = origRow;k < Row;k++)
+                        {
+                            QRect bounds = fontMetrics().boundingRect(text(k, j));
+                            int cw = std::min(bounds.width(), MaxColDisp);
+                            if (cw > width)
+                                width = cw;
+                        }
+                        if (width != columnWidth(j))
+                            setColumnWidth(j, width);
+                    }
+#endif
+                setUpdatesEnabled(true);
+            }
+            if (first && SingleEdit)
+            {
+                SingleEdit->changeSource(this);
+                saveRow(currentRow());
+            }
+
+            if (Query->eof())
+            {
+                delete Query;
+                Query = NULL;
+
+                if (SkipNumber > 0 && Row == SkipNumber)
+                {
+                    toQList par;
+                    Query = new toNoBlockQuery(connection(), toQuery::Background, SQL, par);
+                }
+                else
+                {
+                    Poll.stop();
+                    if (GotoEnd)
+                        setCurrentCellFocus(Row - 1, currentColumn());
+                }
+            }
+            else if (Row >= MaxNumber && MaxNumber >= 0)
+                Poll.stop();
+        }
+    }
+    catch (const QString &str)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        if (GotoEnd)
+            setCurrentCellFocus(Row - 1, currentColumn());
+        toStatusMessage(str);
+    }
+}
+
+bool toResultContentEditor::eventFilter(QObject *o, QEvent *e)
+{
+    if (e && o && e->type() == QEvent::KeyPress)
+    {
+        QKeyEvent *ke = (QKeyEvent*)e;
+        if ((ke->key() == Key_Tab && ke->state() == 0) ||
+                (ke->key() == Key_Backtab && ke->state() == ShiftButton))
+        {
+            keyPressEvent(ke);
+            return true;
+        }
+    }
+    return QTable::eventFilter(o, e);
+}
+
+void toResultContentEditor::keyPressEvent(QKeyEvent *e)
+{
+    if (e->key() == Key_PageDown)
+    {
+        if (Query && !Query->eof())
+        {
+            Poll.start(100);
+            if (MaxNumber >= 0)
+            {
+                int height = verticalHeader()->sectionSize(0);
+                MaxNumber += std::max(height + 1, 20);
+            }
+            else
+                MaxNumber += 20;
+        }
+    }
+    else if (e->key() == Key_Return)
+    {
+        if (e->state() == 0)
+        {
+            gotoNextRecord();
+            e->accept();
+            return ;
+        }
+        else if (e->state() == ShiftButton)
+        {
+            gotoPreviousRecord();
+            e->accept();
+            return ;
+        }
+    }
+    else if (e->key() == Key_Tab && e->state() == 0)
+    {
+        if (currentColumn() < numCols() - 1)
+            setCurrentCellFocus(currentRow(), currentColumn() + 1);
+        else if (currentRow() < numRows() - 1)
+            setCurrentCellFocus(currentRow() + 1, 0);
+        e->accept();
+        return ;
+    }
+    else if (e->key() == Key_Backtab && e->state() == ShiftButton)
+    {
+        if (currentColumn() > 0)
+            setCurrentCellFocus(currentRow(), currentColumn() - 1);
+        else if (currentRow() > 0)
+            setCurrentCellFocus(currentRow() - 1, numCols() - 1);
+        e->accept();
+        return ;
+    }
+    QTable::keyPressEvent(e);
+}
+
+void toResultContentEditor::paintCell(QPainter *p, int row, int col, const QRect &cr, bool selected)
+{
+    if (row + 1 >= MaxNumber)
+    {
+        if (Query && !Query->eof())
+        {
+            Poll.start(100);
+            if (MaxNumber >= 0)
+                MaxNumber += 5;
+        }
+    }
+
+    QString txt = text(row, col);
+    int nl = txt.find(("\n"));
+    if (nl >= 0)
+    {
+        txt = txt.mid(0, nl);
+        txt += ("...");
+    }
+
+    toQDescList::iterator i = Description.begin();
+    for (;col > 0 && i != Description.end();i++, col--)
+        ;
+    int align = AlignLeft;
+    if (i != Description.end() && (*i).AlignRight)
+        align = AlignRight;
+    align |= ExpandTabs | AlignVCenter;
+
+    p->setBrush(selected ? colorGroup().highlight() : colorGroup().base());
+    p->setPen(colorGroup().foreground());
+    p->drawRect( -1, -1, cr.width() + 1, cr.height() + 1);
+    if (selected)
+        p->setPen(colorGroup().highlightedText());
+    p->drawText(1, 1, cr.width() - 3, cr.height() - 3, align, txt);
+}
+
+QWidget *toResultContentEditor::beginEdit(int row, int col, bool replace)
+{
+    SearchStart = SearchEnd = 0;
+    if (CurrentRow != row)
+        toStatusMessage(tr("Unsaved data in contents, select other row to store"), true);
+    saveRow(row);
+
+    QString txt = text(row, col);
+    if (txt.contains(("\n")))
+    {
+        toMemoEditor *edit = new toResultContentMemo(this, txt, row, col);
+        connect(edit, SIGNAL(changeData(int, int, const QString &)),
+                this, SLOT(changeData(int, int, const QString &)));
+    }
+
+    QWidget *ret = QTable::beginEdit(row, col, replace);
+    if (ret->isA("QLineEdit"))
+        CurrentEditor = (QLineEdit *)ret;
+    return ret;
+}
+
+void toResultContentEditor::endEdit(int row, int col, bool accept, bool replace)
+{
+    CurrentEditor = NULL;
+    QTable::endEdit(row, col, accept, replace);
+}
+
+void toResultContentEditor::gotoLastRecord()
+{
+    editReadAll();
+    if (!Query || Query->eof())
+    {
+        setNumRows(Row + 1);
+        setCurrentCellFocus(Row - 1, currentColumn());
+    }
+    else
+    {
+        toStatusMessage(tr("Reading all values, moving cursor to end when done"), false, false);
+        GotoEnd = true;
+    }
+}
+
+void toResultContentEditor::gotoFirstRecord()
+{
+    setCurrentCellFocus(0, currentColumn());
+}
+
+void toResultContentEditor::gotoPreviousRecord()
+{
+    setCurrentCellFocus(std::max(0, currentRow() - 1), currentColumn());
+}
+
+void toResultContentEditor::gotoNextRecord()
+{
+    setCurrentCellFocus(std::min(numRows() - 1, currentRow() + 1), currentColumn());
+}
+
+void toResultContentEditor::addRecord()
+{
+    if (CurrentRow > 0 || NewRecordRow > 0)
+    {
+        return ;
+    }
+
+    saveUnsaved();
+
+    if (currentRow() > numRows() - 2)
+    {
+        setCurrentCellFocus(numRows() - 1, 0);
+    }
+    else
+    {
+        setNumRows(numRows() + 1);
+        int crow = currentRow();
+        if (crow < 0 || crow > numRows() - 2)
+            crow = 0;
+        for (int row = numRows() - 1;row > crow;row--)
+            swapRows(row, row - 1);
+
+        for (int i = 0;i < numCols();i++)
+            setText(crow, i, (""));
+
+        NewRecordRow = crow;
+        setNumRows(numRows());
+        setCurrentCellFocus(crow, 0);
+    }
+}
+
+void toResultContentEditor::duplicateRecord()
+{
+    if (CurrentRow > 0 || NewRecordRow > 0)
+    {
+        return ;
+    }
+
+    int fromrow = currentRow();
+    addRecord();
+    if (currentRow() + 1 < numRows())
+        fromrow++;
+    if (fromrow != currentRow())
+        for (int i = 0;i < numCols();i++)
+            setText(currentRow(), i, text(fromrow, i));
+}
+
+void toResultContentEditor::cancelEdit()
+{
+
+    if (CurrentRow < 0 && NewRecordRow < 0)
+    {
+        setCurrentCellFocus(currentRow(), currentColumn());
+        return ;
+    }
+
+    int crow = CurrentRow;
+    endEdit(currentRow(), currentColumn(), false, false);
+
+    if (NewRecordRow > -1)
+    {
+        crow = NewRecordRow;
+        NewRecordRow = -1;
+        for (int row = crow + 1;row < numRows();row++)
+            swapRows(row - 1, row);
+    }
+    else
+    {
+        int col = 0;
+        for (std::list<QString>::iterator j = OrigValues.begin();j != OrigValues.end();j++, col++)
+            setText(CurrentRow, col, *j);
+    }
+    CurrentRow = -1;
+    OrigValues.clear();
+
+    setNumRows(Row + 1);
+    if (SingleEdit)
+        setCurrentCellFocus(crow, !currentColumn()); // Must change position
+    else
+        setCurrentCellFocus(crow, 0);
+    toStatusMessage(tr("Edit cancelled"), false, false);
+}
+
+void toResultContentEditor::deleteCurrent()
+{
+    if (currentRow() == NewRecordRow)
+    {
+        cancelEdit();
+        return ;
+    }
+    saveUnsaved();
+    if (currentRow() < Row)
+    {
+        try
+        {
+            QString sql = ("DELETE FROM ");
+            sql += table();
+            sql += (" WHERE ");
+
+            QHeader *head = horizontalHeader();
+            toQDescList::iterator di = Description.begin();
+            bool where = false;
+            toConnection &conn = connection();
+
+            bool oracle = (connection().provider() == "Oracle");
+            {
+                for (int i = 0;i < numCols();i++)
+                {
+                    if (!oracle || (!(*di).Datatype.upper().startsWith(("LONG")) &&
+                                    !(*di).Datatype.upper().contains(("LOB"))))
+                    {
+                        if (where)
+                            sql += (" AND ");
+                        else
+                            where = true;
+                        sql += conn.quote(head->label(i));
+                        if (!text(currentRow(), i))
+                            sql += (" IS NULL");
+                        else
+                        {
+                            sql += ("= :c");
+                            sql += QString::number(i);
+                            if (BinaryColumns[i])
+                            {
+                                sql += ("<raw_long>");
+                            }
+                            else
+                                sql += ("<char[4000]>");
+                        }
+                    }
+                    di++;
+                }
+            }
+            if (!where)
+            {
+                toStatusMessage(tr("This table contains only LOB/LONG columns and can not be edited"));
+                return ;
+            }
+            toQList args;
+            di = Description.begin();
+            for (int i = 0;i < numCols();i++)
+            {
+                QString str = text(currentRow(), i);
+                if (!str.isNull() && (!oracle || (!(*di).Datatype.upper().startsWith(("LONG")) &&
+                                                  !(*di).Datatype.upper().contains(("LOB")))))
+                {
+                    if (BinaryColumns[i])
+                        toPush(args, toQValue::createFromHex(str));
+                    else
+                        toPush(args, toQValue(str));
+                }
+                di++;
+            }
+            conn.execute(sql, args);
+            if (!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_COMMIT, "").isEmpty())
+                conn.commit();
+            else
+                toMainWidget()->setNeedCommit(conn);
+        }
+        TOCATCH
+    }
+    int crow = currentRow();
+    for (int row = crow + 1;row < numRows();row++)
+        swapRows(row - 1, row);
+    if (crow < Row)
+        Row--;
+    else
+        setNumRows(Row);
+
+    setNumRows(Row + 1);
+    OrigValues.clear();
+    if (SingleEdit)
+        setCurrentCellFocus(crow, !currentColumn()); // Must change position
+    else
+        setCurrentCellFocus(crow, 0);
+}
+
+void toResultContentEditor::saveUnsaved(void)
+{
+    if (SingleEdit && CurrentRow >= 0)
+        SingleEdit->saveRow(this, CurrentRow);
+
+    endEdit(currentRow(), currentColumn(), true, true);
+
+    if (OrigValues.size() > 0)
+    {
+
+        // Check to make sure some changes were actually made
+
+        std::list<QString>::iterator j = OrigValues.begin();
+        for (int i = 0;i < numCols() && j != OrigValues.end();i++, j++)
+            if (*j != text(CurrentRow, i))
+                break;
+        if (j == OrigValues.end())
+        {
+            toStatusMessage(tr("No changes made"), false, false);
+            return ;
+        }
+
+        bool oracle = false;
+        QString rowid;
+        try
+        {
+            toConnection &conn = connection();
+            oracle = (connection().provider() == "Oracle");
+            toStatusMessage(tr("Saved row"), false, false);
+            if (CurrentRow >= Row || CurrentRow == NewRecordRow)
+            {
+                QString sql = ("INSERT INTO ");
+                sql += table();
+                sql += " (";
+                int num = 0;
+                QHeader *head = horizontalHeader();
+                {
+                    for (int i = 0;i < numCols();i++)
+                    {
+                        if (!text(CurrentRow, i).isNull())
+                        {
+                            if (num > 0)
+                                sql += ",";
+                            sql += conn.quote(head->label(i));
+                            num++;
+                        }
+                    }
+                }
+                sql += ") VALUES (";
+                num = 0;
+                toQDescList::iterator di = Description.begin();
+                for (int i = 0;i < numCols() && di != Description.end();i++)
+                {
+                    if (!text(CurrentRow, i).isNull())
+                    {
+                        if (num > 0)
+                            sql += (",");
+                        sql += (":f");
+                        sql += QString::number(num + 1);
+                        if (BinaryColumns[i])
+                        {
+                            if ((*di).Datatype.upper().contains("LOB"))
+                                sql += ("<blob>");
+                            else
+                                sql += ("<raw_long,in>");
+                        }
+                        else
+                        {
+                            if ((*di).Datatype.upper().contains("LOB"))
+                                sql += ("<clob>");
+                            else
+                                sql += ("<char[4000],in>");
+                        }
+                        num++;
+                    }
+                    di++;
+                }
+                sql += (")");
+                if (oracle && !NoUseReturning)
+                    sql += (" RETURNING ROWID INTO :r<char[101],out>");
+
+                try
+                {
+                    toQList args;
+                    for (int i = 0;i < numCols();i++)
+                    {
+                        QString str = text(CurrentRow, i);
+                        if (!str.isNull())
+                        {
+                            if (BinaryColumns[i])
+                                toPush(args, toQValue::createFromHex(str));
+                            else
+                                toPush(args, toQValue(str));
+                        }
+                    }
+                    toQuery q(conn, sql, args);
+                    if (oracle && !NoUseReturning)
+                        rowid = q.readValueNull();
+                    Row++;
+                    setNumRows(Row + 1);
+                    if (!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_COMMIT, "").isEmpty())
+                        conn.commit();
+                    else
+                        toMainWidget()->setNeedCommit(conn);
+                }
+                catch (const QString &str)
+                {
+                    cancelEdit();
+                    toStatusMessage(str);
+                    oracle = false;
+                }
+            }
+            else
+            {
+                QString sql = ("UPDATE ");
+                sql += table();
+                sql += (" SET ");
+                QHeader *head = horizontalHeader();
+                std::list<QString>::iterator k = OrigValues.begin();
+                bool first = false;
+                toQDescList::iterator di = Description.begin();
+                for (int i = 0;i < numCols() && di != Description.end();i++, k++)
+                {
+                    QString fld = text(CurrentRow, i);
+                    if (*k != fld)
+                    {
+                        if (!first)
+                            first = true;
+                        else
+                            sql += (", ");
+                        sql += conn.quote(head->label(i));
+                        if (fld.isNull())
+                            sql += (" = NULL");
+                        else
+                        {
+                            sql += ("= :f");
+                            sql += QString::number(i);
+                            if (BinaryColumns[i])
+                            {
+                                if ((*di).Datatype.upper().contains("LOB"))
+                                    sql += ("<blob>");
+                                else
+                                    sql += ("<raw_long,in>");
+                            }
+                            else
+                            {
+                                if ((*di).Datatype.upper().contains("LOB"))
+                                    sql += ("<clob>");
+                                else
+                                    sql += ("<char[4000],in>");
+                            }
+                        }
+                    }
+                    di++;
+                }
+                if (first)
+                {
+                    sql += (" WHERE (");
+                    int col = 0;
+                    bool where = false;
+                    toQDescList::iterator di = Description.begin();
+                    for (std::list<QString>::iterator j = OrigValues.begin();j != OrigValues.end();j++, col++)
+                    {
+                        if (!oracle || (!(*di).Datatype.upper().startsWith(("LONG")) &&
+                                        !(*di).Datatype.upper().contains(("LOB"))))
+                        {
+                            if (where)
+                                sql += (" AND (");
+                            else
+                                where = true;
+                            sql += conn.quote((*di).Name);
+                            if ((*j).isEmpty())
+                                sql += " IS NULL OR " + conn.quote((*di).Name);
+                            sql += ("= :c");
+                            sql += QString::number(col);
+                            if (BinaryColumns[col])
+                                sql += ("<raw_long,in>)");
+                            else
+                                sql += ("<char[4000],in>)");
+                        }
+                        di++;
+                    }
+                    if (!where)
+                    {
+                        toStatusMessage(tr("This table contains only LOB/LONG columns and can not be edited"));
+                        return ;
+                    }
+                    if (oracle && !NoUseReturning)
+                        sql += (" RETURNING ROWID INTO :r<char[101],out>");
+                    try
+                    {
+                        toQList args;
+
+                        std::list<QString>::iterator k = OrigValues.begin();
+                        for (int i = 0;i < numCols();i++, k++)
+                        {
+                            QString str = text(CurrentRow, i);
+                            if (str != *k && !str.isNull())
+                            {
+                                if (BinaryColumns[i])
+                                    toPush(args, toQValue::createFromHex(str));
+                                else
+                                    toPush(args, toQValue(str));
+                            }
+                        }
+
+                        col = 0;
+                        toQDescList::iterator di = Description.begin();
+                        for (std::list<QString>::iterator j = OrigValues.begin();j != OrigValues.end();j++, col++)
+                        {
+                            QString str = (*j);
+                            if (!oracle || (!(*di).Datatype.upper().startsWith(("LONG")) &&
+                                            !(*di).Datatype.upper().contains(("LOB"))))
+                            {
+                                if (str.isNull())
+                                    toPush(args, toQValue(QString("")));
+                                else if (BinaryColumns[col])
+                                    toPush(args, toQValue::createFromHex(str));
+                                else
+                                    toPush(args, toQValue(str));
+                            }
+                            di++;
+                        }
+                        toQuery q(conn, sql, args);
+                        if (oracle && !NoUseReturning)
+                            rowid = q.readValueNull();
+                        if (!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_COMMIT, "").isEmpty())
+                            conn.commit();
+                        else
+                            toMainWidget()->setNeedCommit(conn);
+                    }
+                    catch (const QString &str)
+                    {
+                        int col = 0;
+                        for (std::list<QString>::iterator j = OrigValues.begin();j != OrigValues.end();j++, col++)
+                            setText(CurrentRow, col, *j);
+                        toStatusMessage(str);
+                        oracle = false;
+                    }
+                }
+            }
+
+            emit changesSaved();
+        }
+        TOCATCH
+        OrigValues.clear();
+        if (oracle)
+        {
+            try
+            {
+                QString sql;
+                sql = ("SELECT * FROM ");
+                sql += table();
+                sql += (" WHERE rowid = :r<char[101]>");
+                toQuery q(connection(), sql, rowid);
+                for (int j = 0;j < numCols() && !q.eof();j++)
+                    setText(CurrentRow, j, q.readValueNull());
+            }
+            TOCATCH
+        }
+        CurrentRow = -1;
+        NewRecordRow = -1;
+    }
+}
+
+void toResultContentEditor::changePosition(int row, int col)
+{
+    SearchStart = SearchEnd = 0;
+    if (CurrentRow != row && CurrentRow >= 0)
+        saveUnsaved();
+
+    if (NewRecordRow > 0 && NewRecordRow != row)
+    {
+        cancelEdit();
+        setCurrentCell(row, col);
+    }
+    else if (SingleEdit)
+    {
+        saveRow(currentRow()); // Don't use row here since row can have changed
+        SingleEdit->changeRow(this, currentRow());
+    }
+}
+
+void toResultContentEditor::drawContents(QPainter * p, int cx, int cy, int cw, int ch)
+{
+    QTable::drawContents(p, cx, cy, cw, ch);
+}
+
+void toResultContentEditor::editReadAll(void)
+{
+    if (Query)
+    {
+        MaxNumber = -1;
+        Poll.start(100);
+    }
+}
+
+void toResultContentEditor::editPrint(void)
+{
+    toResultView print(false, true, this);
+    print.hide();
+    QString name = tr("Content of %1.%2").arg(Owner).arg(Table);
+    print.setSQLName(name);
+    print.query(SQL);
+    print.editPrint();
+}
+
+bool toResultContentEditor::editSave(bool ask)
+{
+    toResultView list(false, true, this);
+    list.hide();
+    QString name = tr("Content of %1.%2").arg(Owner).arg(Table);
+    list.setSQLName(name);
+    list.setObjectName(Table);
+    list.setOwner(Owner);
+    list.query(SQL);
+    list.editReadAll();
+    return list.editSave(ask);
+}
+
+void toResultContentEditor::activateNextCell()
+{
+    if (currentColumn() + 1 < numCols())
+        setCurrentCell(currentRow(), currentColumn() + 1);
+    else
+    {
+        if (currentRow() + 1 >= numRows())
+            setNumRows(Row + 2);
+        setCurrentCell(currentRow() + 1, 0);
+    }
+}
+
+void toResultContentEditor::focusInEvent (QFocusEvent *e)
+{
+    receivedFocus();
+    QTable::focusInEvent(e);
+}
+
+void toResultContentEditor::displayMenu(const QPoint &p)
+{
+    QPoint lp = mapFromGlobal(p);
+    lp = QPoint(lp.x() + contentsX() - verticalHeader()->width(),
+                lp.y() + contentsY() - horizontalHeader()->height());
+    MenuColumn = columnAt(lp.x());
+    MenuRow = rowAt(lp.y());
+    if (MenuColumn >= 0 && MenuRow >= 0)
+    {
+        setCurrentCell(MenuRow, MenuColumn);
+        Menu->popup(p);
+        QClipboard *clip = qApp->clipboard();
+        Menu->setItemEnabled(TORESULT_PASTE, !clip->text().isEmpty());
+    }
+}
+
+void toResultContentEditor::displayMemo(void)
+{
+    toMemoEditor *edit = new toResultContentMemo(this, text(MenuRow, MenuColumn), MenuRow, MenuColumn);
+    connect(edit, SIGNAL(changeData(int, int, const QString &)),
+            this, SLOT(changeData(int, int, const QString &)));
+}
+
+void toResultContentEditor::changeData(int row, int col, const QString &str)
+{
+    changePosition(col, row);
+    saveRow(row);
+    setText(row, col, str);
+    setCurrentCell(row, col);
+}
+
+void toResultContentEditor::editSelectAll(void)
+{
+    removeSelection(0);
+    QTableSelection sel;
+    sel.init(0, 0);
+    sel.expandTo(numRows() - 1, numCols() - 1);
+}
+
+void toResultContentEditor::menuCallback(int cmd)
+{
+    switch (cmd)
+    {
+    case TORESULT_COPY_FIELD:
+        {
+            QClipboard *clip = qApp->clipboard();
+            clip->setText(text(MenuRow, MenuColumn));
+        }
+        break;
+    case TORESULT_PASTE:
+        {
+            QClipboard *clip = qApp->clipboard();
+            saveRow(MenuRow);
+            setText(MenuRow, MenuColumn, clip->text());
+        }
+        break;
+    case TORESULT_COPY_SEL:
+        {
+            toListView *lst = copySelection(false);
+            lst->setObjectName(Table);
+            lst->setOwner(Owner);
+            if (lst)
+            {
+                try
+                {
+                    QClipboard *clip = qApp->clipboard();
+                    clip->setText(lst->exportAsText(false, false));
+                }
+                TOCATCH
+                delete lst;
+            }
+        }
+        break;
+    case TORESULT_COPY_SEL_HEAD:
+        {
+            toListView *lst = copySelection(true);
+            lst->setObjectName(Table);
+            lst->setOwner(Owner);
+            if (lst)
+            {
+                try
+                {
+                    QClipboard *clip = qApp->clipboard();
+                    clip->setText(lst->exportAsText(true, false));
+                }
+                TOCATCH
+                delete lst;
+            }
+        }
+        break;
+    case TORESULT_SELECT_ALL:
+        editSelectAll();
+        break;
+    case TORESULT_COPY_TRANS:
+        {
+            editSelectAll();
+            toListView *lst = copySelection(true);
+            if (lst)
+            {
+                lst->copyTransposed();
+                delete lst;
+            }
+        }
+        break;
+    case TORESULT_DELETE:
+        setCurrentCell(MenuRow, 0);
+        deleteCurrent();
+        break;
+    case TORESULT_MEMO:
+        displayMemo();
+        break;
+    case TORESULT_READ_ALL:
+        editReadAll();
+        break;
+    case TORESULT_EXPORT:
+        editSave(false);
+        break;
+    }
+}
+
+QString toResultContentEditor::table(void)
+{
+    try
+    {
+        QString sql;
+        if (connection().provider() != "PostgreSQL")
+        {
+            sql = connection().quote(Owner);
+            sql += (".");
+        }
+        sql += connection().quote(Table);
+        return sql;
+    }
+    catch (const QString &str)
+    {
+        toStatusMessage(str);
+        return Table;
+    }
+}
+
+bool toResultContentEditor::searchNext(toSearchReplace *search)
+{
+    int row = currentRow();
+    int col = currentColumn();
+    while (row < numRows())
+    {
+        int pos = SearchEnd;
+        int endPos;
+
+        if (search->findString(text(row, col), pos, endPos))
+        {
+            setCurrentCell(row, col);
+
+#if QT_VERSION >= 0x030000
+
+            editCell(row, col);
+            if (CurrentEditor)
+                CurrentEditor->setSelection(pos, endPos - pos);
+#endif
+
+            SearchEnd = endPos;
+            SearchStart = pos;
+            return true;
+        }
+        col++;
+        if (col >= numCols())
+        {
+            row++;
+            col = 0;
+        }
+        SearchEnd = 0;
+    }
+    return false;
+}
+
+void toResultContentEditor::searchReplace(const QString &newData)
+{
+    if (SearchEnd > 0)
+    {
+        int row = currentRow();
+        int col = currentColumn();
+        QTableItem *itm = item(row, col);
+        if (itm)
+        {
+            QString txt = itm->text();
+            txt.replace(SearchStart, SearchEnd - SearchStart, newData);
+            saveRow(row);
+            itm->setText(txt);
+        }
+    }
+}
+
+bool toResultContentEditor::searchCanReplace(bool all)
+{
+    if (all || (SearchEnd > 0))
+        return true;
+    return false;
+}
+
+toResultContent::toResultContent(QWidget *parent, const char *name)
+        : QVBox(parent, name)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Content editor"));
+    Editor = new toResultContentEditor(this, name);
+
+    QToolButton *btn = new QToolButton(QPixmap(const_cast<const char**>(filter_xpm)),
+                                       tr("Define filter for editor"),
+                                       tr("Define filter for editor"),
+                                       this, SLOT(changeFilter()), toolbar);
+    connect(Editor,
+            SIGNAL(filterEnabled(bool)),
+            btn,
+            SLOT(setOn(bool)));
+    btn->setToggleButton(true);
+
+    new QToolButton(QPixmap(const_cast<const char**>(nofilter_xpm)),
+                    tr("Remove any filter"),
+                    tr("Remove any filter"),
+                    this, SLOT(removeFilter()), toolbar);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(addrecord_xpm)),
+                    tr("Add a new record"),
+                    tr("Add a new record"),
+                    Editor, SLOT(addRecord()), toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(duplicaterecord_xpm)),
+                    tr("Duplicate an existing record"),
+                    tr("Duplicate an existing record"),
+                    Editor, SLOT(duplicateRecord()), toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(saverecord_xpm)),
+                    tr("Save changes"),
+                    tr("Save changes"),
+                    Editor, SLOT(saveUnsaved()), toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(canceledit_xpm)),
+                    tr("Discard changes"),
+                    tr("Discard changes"),
+                    Editor, SLOT(cancelEdit()), toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                    tr("Delete current record from table"),
+                    tr("Delete current record from table"),
+                    Editor, SLOT(deleteCurrent()), toolbar);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(rewind_xpm)),
+                    tr("Go to first row"),
+                    tr("Go to first row"),
+                    Editor, SLOT(gotoFirstRecord()), toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(previous_xpm)),
+                    tr("Go to previous row"),
+                    tr("Go to previous row"),
+                    Editor, SLOT(gotoPreviousRecord()), toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(next_xpm)),
+                    tr("Go to next row"),
+                    tr("Go to next row"),
+                    Editor, SLOT(gotoNextRecord()), toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(forward_xpm)),
+                    tr("Go to last row"),
+                    tr("Go to last row"),
+                    Editor, SLOT(gotoLastRecord()), toolbar);
+    toolbar->addSeparator();
+
+    btn = new QToolButton(toolbar);
+    btn->setToggleButton(true);
+    btn->setIconSet(QIconSet(QPixmap(const_cast<const char**>(single_xpm))));
+    connect(btn, SIGNAL(toggled(bool)), Editor, SLOT(singleRecordForm(bool)));
+    QToolTip::add
+        (btn, tr("Toggle between table or single record editing"));
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    connect(toMainWidget(), SIGNAL(willCommit(toConnection &, bool)),
+            this, SLOT(saveUnsaved(toConnection &, bool)));
+    connect(Editor, SIGNAL(changesSaved()), this, SIGNAL(changesSaved()));
+}
+
+void toResultContent::changeFilter(void)
+{
+    toResultContentFilterUI filter(this, "FilterSetup", true);
+    filter.AllTables->setChecked(Editor->allFilter());
+    filter.Order->setText(Editor->Order[Editor->FilterName.utf8()]);
+    filter.Criteria->setText(Editor->Criteria[Editor->FilterName.utf8()]);
+    filter.Columns->changeParams(Editor->Owner, Editor->Table);
+    if (filter.exec())
+        Editor->changeFilter(filter.AllTables->isChecked(),
+                             filter.Criteria->text(),
+                             filter.Order->text());
+}
+
+void toResultContentEditor::changeFilter(bool all, const QString &crit, const QString &ord)
+{
+    AllFilter = all;
+    QString nam;
+    if (AllFilter)
+        nam = ("");
+    else
+    {
+        nam = Owner;
+        nam += (".");
+        nam += Table;
+    }
+    Criteria[nam.utf8()] = crit;
+    Order[nam.utf8()] = ord;
+    saveUnsaved();
+
+    QString t = Owner;
+    Owner = QString::null;
+    changeParams(t, Table);
+}
+
+void toResultContent::saveUnsaved(toConnection &conn, bool)
+{
+    try
+    {
+        toConnection &mycon = connection();
+        if (&mycon == &conn) // Is this same connection
+            saveUnsaved();
+    }
+    TOCATCH
+}
+
+bool toResultContent::canHandle(toConnection &)
+{
+    return true;
+}
+
+void toResultContent::removeFilter(void)
+{
+    if (!Editor->allFilter())
+    {
+        switch (TOMessageBox::information(this, tr("Remove filter"),
+                                          tr("Remove the filter for this table only or for all tables."),
+                                          tr("&All"), tr("&This"), tr("Cancel"), 0))
+        {
+        case 0:
+            Editor->Criteria.clear();
+            Editor->Order.clear();
+            // Intentionally no break
+        case 1:
+            Editor->changeFilter(false, QString::null, QString::null);
+            break;
+        case 2:
+            return ;
+        }
+    }
+    else
+        Editor->changeFilter(Editor->allFilter(), QString::null, QString::null);
+}
+
+void toResultContentEditor::saveRow(int row)
+{
+    if (row != CurrentRow)
+    {
+        OrigValues.clear();
+        for (int i = 0;i < numCols();i++)
+            OrigValues.insert(OrigValues.end(), text(row, i));
+        CurrentRow = row;
+    }
+}
+
+void toResultContentEditor::singleRecordForm(bool display)
+{
+    if (display && !SingleEdit)
+    {
+        SingleEdit = new toResultContentSingle(parentWidget());
+        SingleEdit->changeSource(this);
+        saveRow(currentRow());
+        SingleEdit->show();
+        hide();
+    }
+    else if (SingleEdit)
+    {
+        show();
+        SingleEdit->saveRow(this, currentRow());
+        delete SingleEdit;
+        SingleEdit = NULL;
+    }
+}
+
+void toResultContentEditor::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    if (AllFilter)
+        data[prefix + ":All"] = "Yes";
+    toMapExport(data, prefix + ":Crit", Criteria);
+    toMapExport(data, prefix + ":Order", Order);
+}
+
+void toResultContentEditor::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    AllFilter = !(data[prefix + ":All"].isEmpty());
+    toMapImport(data, prefix + ":Crit", Criteria);
+    toMapImport(data, prefix + ":Order", Order);
+}
+
+toListView *toResultContentEditor::copySelection(bool header)
+{
+    QTableSelection sel = selection(0);
+    if (sel.isActive())
+    {
+        toListView *lst = new toListView(this);
+        int row;
+        int col;
+        if (header)
+        {
+            lst->addColumn(("#"));
+            lst->setColumnAlignment(0, AlignRight);
+        }
+        for (col = sel.leftCol();col <= sel.rightCol();col++)
+        {
+            QString lab = horizontalHeader()->label(col);
+            lst->addColumn(lab);
+            for (toQDescList::iterator i = Description.begin();i != Description.end();i++)
+            {
+                if ((*i).Name == lab)
+                {
+                    if ((*i).AlignRight)
+                        lst->setColumnAlignment(lst->columns() - 1, AlignRight);
+                    break;
+                }
+            }
+        }
+        QListViewItem *item = NULL;
+        for (row = sel.topRow();row <= sel.bottomRow();row++)
+        {
+            item = new toResultViewItem(lst, item);
+            if (header)
+                item->setText(0, verticalHeader()->label(row));
+            for (col = sel.leftCol();col <= sel.rightCol();col++)
+            {
+                item->setText(col - sel.leftCol() + (header ? 1 : 0),
+                              text(row, col));
+            }
+        }
+        QString name = tr("Content of %1.%2").arg(Owner).arg(Table);
+        lst->setSQLName(name);
+        return lst;
+    }
+    return NULL;
+}
+
+toResultContentSingle::toResultContentSingle(QWidget *parent)
+        : QScrollView(parent)
+{
+    enableClipper(true);
+    Container = NULL;
+    Row = -1;
+    viewport()->setBackgroundColor(qApp->palette().active().background());
+}
+
+void toResultContentSingle::changeSource(QTable *table)
+{
+    delete Container;
+    Container = new QGrid(4, viewport());
+    addChild(Container, 5, 5);
+    Container->setSpacing(10);
+    Value.clear();
+    Null.clear();
+
+    QHeader *head = table->horizontalHeader();
+    for (int i = 0;i < table->numCols();i++)
+    {
+        new QLabel(head->label(i), Container);
+        QLineEdit *edit = new QLineEdit(Container, QString::number(i));
+        edit->setFixedWidth(300);
+        QCheckBox *box = new QCheckBox(("NULL"), Container);
+        connect(box, SIGNAL(toggled(bool)), edit, SLOT(setDisabled(bool)));
+
+        toParamGetButton *btn = new toParamGetButton(i, Container);
+        btn->setText(tr("Edit"));
+        btn->setSizePolicy(QSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed));
+        connect(btn, SIGNAL(clicked(int)), this, SLOT(showMemo(int)));
+        connect(box, SIGNAL(toggled(bool)), btn, SLOT(setDisabled(bool)));
+        Value.insert(Value.end(), edit);
+        Null.insert(Null.end(), box);
+    }
+    Row = table->currentRow();
+    Container->show();
+    changeRow(table, Row);
+}
+
+void toResultContentSingle::changeRow(QTable *table, int row)
+{
+    bool any = false;
+    std::list<QCheckBox *>::iterator chk = Null.begin();
+    std::list<QLineEdit *>::iterator val = Value.begin();
+    for (int i = 0;i < table->numCols() && chk != Null.end() && val != Value.end();i++)
+    {
+        QString str = table->text(row, i);
+        if (!str.isNull())
+            any = true;
+        (*chk)->setChecked(str.isNull());
+        (*val)->setText(str);
+        chk++;
+        val++;
+    }
+    if (!any)
+        for (chk = Null.begin();chk != Null.end();chk++)
+            (*chk)->setChecked(false);
+    Row = row;
+}
+
+void toResultContentSingle::saveRow(QTable *table, int row)
+{
+    if (Row == row)
+    {
+        std::list<QLineEdit *>::iterator val = Value.begin();
+        for (int i = 0;i < table->numCols() && val != Value.end();i++)
+        {
+            table->setText(row, i, (*val)->isEnabled() ? (*val)->text() : QString::null);
+            val++;
+        }
+    }
+    else
+        toStatusMessage(tr("Internal error, save different row than current in content editor"));
+}
+
+void toResultContentSingle::showMemo(int row)
+{
+    QObject *obj = child(QString::number(row));
+    if (obj)
+    {
+        toMemoEditor *memo = new toMemoEditor(this, ((QLineEdit *)obj)->text(), row, 0, false, true);
+        if (memo->exec())
+            ((QLineEdit *)obj)->setText(memo->text());
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultcontent.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcontent.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcontent.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,546 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTCONTENT_H
+#define TORESULTCONTENT_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toconnection.h"
+#include "toeditwidget.h"
+#include "tomemoeditor.h"
+#include "toresult.h"
+
+#include <list>
+#include <algorithm>
+
+#include <qtable.h>
+#include <qvbox.h>
+
+class QChecBox;
+class QCheckBox;
+class QGrid;
+class QLineEdit;
+class toNoBlockQuery;
+class toResultContent;
+class toSearchReplace;
+
+/** Implement memo editor in result content editor. Only for internal use.
+ * @internal
+ */
+
+class toResultContentMemo : public toMemoEditor
+{
+    Q_OBJECT
+
+    toResultContentEditor *contentEditor();
+public:
+    toResultContentMemo(QWidget *parent, const QString &data, int row, int col,
+                        bool sql = false);
+public slots:
+    virtual void firstColumn();
+    virtual void nextColumn();
+    virtual void previousColumn();
+    virtual void lastColumn();
+
+    virtual void changePosition(int row, int cols);
+};
+
+/** This widget is used for single record view in the content editor. Only for internal use.
+ * @internal
+ */
+
+class toResultContentSingle : public QScrollView
+{
+    Q_OBJECT
+
+    int Row;
+    QGrid *Container;
+    std::list<QCheckBox *> Null;
+    std::list<QLineEdit *> Value;
+public:
+    toResultContentSingle(QWidget *parent);
+
+    void changeSource(QTable *table);
+    void changeRow(QTable *table, int row);
+    void saveRow(QTable *table, int row);
+private slots:
+    virtual void showMemo(int row);
+};
+
+/** This widget allows the user to browse the contents of a table and also edit
+ * the content. The table is specified by the first and second parameter in the query.
+ * The sql is not used in the query. Only for internal use.
+ */
+
+class toResultContentEditor : public QTable, public toEditWidget
+{
+    Q_OBJECT
+
+    /** Single record form.
+     */
+    toResultContentSingle *SingleEdit;
+    /** Owner of table.
+     */
+    QString Owner;
+    /** Tablename.
+     */
+    QString Table;
+    /** The SQL used to read the data.
+     */
+    QString SQL;
+    /** Original values of rows currently being edited.
+     */
+    std::list<QString> OrigValues;
+    /** Original values of rows currently being edited.
+     */
+    bool *BinaryColumns;
+    /** Stream to read data from.
+     */
+    toNoBlockQuery *Query;
+
+    toQDescList Description;
+    toBackground Poll;
+    int MaxNumber;
+    int SkipNumber;
+    bool GotoEnd;
+    /** Number of rows read from stream.
+     */
+    int Row;
+    /** Current row of editing.
+     */
+    int CurrentRow;
+    /** Current row of editing.
+     */
+    int NewRecordRow;
+    /** Used to detect drag.
+     */
+    QPoint LastMove;
+
+    /** Popup menu if available.
+     */
+    QPopupMenu *Menu;
+    /** Column of item selected when popup menu displayed.
+     */
+    int MenuColumn;
+    /** Row of item selected when popup menu displayed.
+     */
+    int MenuRow;
+
+    /** Current sorting row.
+     */
+    int SortRow;
+    /** Indicate if sorting ascending or descending.
+     */
+    bool SortRowAsc;
+
+    /** Use filter for all tables.
+     */
+    bool AllFilter;
+    /** Filter selection criteria
+     */
+    static std::map<QCString, QString> Criteria;
+    /** Filter retrieve order
+     */
+    static std::map<QCString, QString> Order;
+    /** Current filter name in map
+     */
+    QString FilterName;
+    /** Never use returning.
+     */
+    bool NoUseReturning;
+
+    /** Throw an exception about wrong usage.
+     */
+    void wrongUsage(void);
+
+    void saveRow(int);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void drawContents(QPainter * p, int cx, int cy, int cw, int ch);
+    /** Reimplemented for internal reasons.
+     */
+    virtual QWidget *beginEdit(int row, int col, bool replace);
+    virtual void endEdit(int row, int col, bool accept, bool replace);
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void paintCell(QPainter *p, int row, int col, const QRect &cr, bool selected);
+    /** Reimplemented for internal reasons.
+    */
+    virtual bool eventFilter(QObject *o, QEvent *e);
+    /** Reimplemented for internal reasons.
+    */
+    virtual void keyPressEvent(QKeyEvent *e);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void activateNextCell();
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void dragEnterEvent(QDragEnterEvent *event);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void dropEvent(QDropEvent *event);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void contentsMousePressEvent(QMouseEvent *e);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void contentsMouseReleaseEvent(QMouseEvent *e);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void contentsMouseMoveEvent (QMouseEvent *e);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void focusInEvent (QFocusEvent *e);
+    /** A setCurrentCell() replacement; makes sure that we have focus.
+     */
+    virtual void setCurrentCellFocus(int row, int col);
+
+    int MaxColDisp;
+
+    QString table(void);
+
+    toConnection &connection();
+    QLineEdit *CurrentEditor;
+    int SearchStart;
+    int SearchEnd;
+
+class contentItem : public QTableItem
+    {
+    public:
+        contentItem(QTable *table, const QString &text);
+        virtual QString key(void) const;
+    };
+
+    toListView *copySelection(bool);
+public:
+    /** Indicate that editor should never use returning clauses even if this is oracle.
+     */
+    void useNoReturning(bool use)
+    {
+        NoUseReturning = use;
+    }
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultContentEditor(QWidget *parent, const char *name = NULL);
+    /** Destruct object
+     */
+    ~toResultContentEditor();
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &, const toQList &);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toQList pars;
+        pars.insert(pars.end(), Param1);
+        pars.insert(pars.end(), Param2);
+        query(QString::null, pars);
+    }
+
+    /** Print this editor.
+     */
+    virtual void editPrint(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual bool editSave(bool ask);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editReadAll(void);
+    /** Select all contents. Default NOP.
+     */
+    virtual void editSelectAll(void);
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void setText(int row, int col, const QString &text);
+
+    /** Set a new filter setting.
+     * @param all Apply filter to all tables, otherwise only for this table.
+     * @param criteria Criteria to filter on.
+     * @param order Order to read data on.
+     */
+    void changeFilter(bool all, const QString &criteria, const QString &order);
+
+    /** Get information about if filter affect all tables.
+     */
+    bool allFilter()
+    {
+        return AllFilter;
+    }
+
+    friend class contentItem;
+    friend class toResultContent;
+
+    /** Export data to a map.
+     * @param data A map that can be used to recreate the data of a chart.
+     * @param prefix Prefix to add to the map.
+     */
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Import data
+     * @param data Data to read from a map.
+     * @param prefix Prefix to read data from.
+     */
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+public slots:
+    /** Erase last parameters
+     */
+    virtual void clearParams(void)
+    {
+        Owner = Table = QString::null;
+    }
+    /** Change sorting column
+     * @param col Column selected to change as sorting.
+     */
+    virtual void changeSort(int col);
+    /** Current cell changed.
+     * @param row New row.
+     * @param col New column.
+     */
+    void changePosition(int row, int col);
+
+    /** Display popup menu
+     * @param p Point to display popup at.
+     */
+    virtual void displayMenu(const QPoint &p);
+    /** Display editable memo viewer at current position.
+     */
+    virtual void displayMemo(void);
+    /** Save unsaved changes in the editor
+     */
+    virtual void saveUnsaved(void);
+    /** Delete the current row from the table.
+     */
+    virtual void deleteCurrent(void);
+    /** Add a new record to the table.
+     */
+    virtual void addRecord(void);
+    /** Duplicate a new record for editing.
+     */
+    virtual void duplicateRecord(void);
+    /** Discard the changes made to the table.
+     */
+    virtual void cancelEdit(void);
+    /** Goto the last record in the table.
+     */
+    virtual void gotoLastRecord(void);
+    /** Goto the first record in the table.
+     */
+    virtual void gotoFirstRecord(void);
+    /** Goto the previous record in the table.
+     */
+    virtual void gotoPreviousRecord(void);
+    /** Goto the next record in the table.
+     */
+    virtual void gotoNextRecord(void);
+    /** Display single record form.
+     */
+    virtual void singleRecordForm(bool display);
+
+    /** Move to top of data
+     */
+    virtual void searchTop(void)
+    {
+        setCurrentCell(0, 0);
+    }
+    /** Search for next entry
+     * @return True if found, should select the found text.
+     */
+    virtual bool searchNext(toSearchReplace *search);
+    /** Replace entry with new data
+     */
+    virtual void searchReplace(const QString &newData);
+    /** Check if data can be modified by search
+     * @param all If true can replace all, otherwise can replace right now.
+     */
+    virtual bool searchCanReplace(bool all);
+signals:
+    /** Emitted to indicate wether a filter is used.
+     */
+    void filterEnabled(bool);
+    //* Emitted when changes were saved.
+    void changesSaved();
+protected slots:
+    /** Callback from popup menu.
+     * @param cmd Command ID.
+     */
+    virtual void menuCallback(int cmd);
+    /** Change data at specified position.
+     * @param row Row to change.
+     * @param col Column to change.
+     * @param data New contents of data.
+     */
+    virtual void changeData(int row, int col, const QString &data);
+private slots:
+    virtual void poll(void);
+};
+
+/** This widget allows the user to browse the contents of a table and also edit
+ * the content. The table is specified by the first and second parameter in the query.
+ * The sql is not used in the query.
+ */
+
+class toResultContent : public QVBox, public toResult
+{
+    Q_OBJECT
+
+    toResultContentEditor *Editor;
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultContent(QWidget *parent, const char *name = NULL);
+
+    /** Get content editor table widget
+     * @return Pointer to editor.
+     */
+    toResultContentEditor *editor(void)
+    {
+        return Editor;
+    }
+
+    /** Read all rows from the table.
+     */
+    virtual void editReadAll(void)
+    {
+        Editor->editReadAll();
+    }
+    /** Print the contents.
+     */
+    virtual void editPrint(void)
+    {
+        Editor->editPrint();
+    }
+    /** Export contents to file.
+     */
+    virtual void editSave(bool ask)
+    {
+        Editor->editSave(ask);
+    }
+
+    /** Export data to a map.
+     * @param data A map that can be used to recreate the data of a chart.
+     * @param prefix Prefix to add to the map.
+     */
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix)
+    {
+        Editor->exportData(data, prefix);
+    }
+    /** Import data
+     * @param data Data to read from a map.
+     * @param prefix Prefix to read data from.
+     */
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix)
+    {
+        Editor->importData(data, prefix);
+    }
+    /** Indicate that editor should never use returning clauses even if this is oracle.
+     */
+    void useNoReturning(bool use)
+    {
+        Editor->useNoReturning(use);
+    }
+private slots:
+    void changeFilter(void);
+    void removeFilter(void);
+signals:
+    //* Emitted when changes were saved.
+    void changesSaved(void);
+public slots:
+    /** Erase last parameters
+     */
+    virtual void clearParams(void)
+    {
+        toResult::clearParams();
+        Editor->clearParams();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        toResult::refresh();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param)
+    {
+        if (!setSQLParams(sql, param))
+            return ;
+        Editor->query(sql, param);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+    /** Save unsaved changes in the editor
+     */
+    virtual void saveUnsaved(void)
+    {
+        Editor->saveUnsaved();
+    }
+    /** Commit connection
+     * @param conn Connection commit is made on.
+     * @param cmt If commit or rollback
+     */
+    virtual void saveUnsaved(toConnection &conn, bool cmt);
+
+    /** Handle all databases
+     */
+    virtual bool canHandle(toConnection &);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,123 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'toresultcontentfilterui.ui'
+**
+** Created: Tue Sep 18 08:21:23 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "toresultcontentfilterui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "tohighlightedtext.h"
+#include "toresultcols.h"
+
+/*
+ *  Constructs a toResultContentFilterUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toResultContentFilterUI::toResultContentFilterUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toResultContentFilterUI" );
+    toResultContentFilterUILayout = new QGridLayout( this, 1, 1, 11, 6, "toResultContentFilterUILayout"); 
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+    PushButton1->setDefault( TRUE );
+
+    toResultContentFilterUILayout->addWidget( PushButton1, 4, 1 );
+
+    PushButton3 = new QPushButton( this, "PushButton3" );
+
+    toResultContentFilterUILayout->addWidget( PushButton3, 4, 2 );
+
+    Order = new QLineEdit( this, "Order" );
+
+    toResultContentFilterUILayout->addWidget( Order, 3, 0 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+    TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
+
+    toResultContentFilterUILayout->addWidget( TextLabel1, 0, 0 );
+
+    Criteria = new toHighlightedText( this, "Criteria" );
+    Criteria->setFocusPolicy( toHighlightedText::StrongFocus );
+
+    toResultContentFilterUILayout->addWidget( Criteria, 1, 0 );
+
+    TextLabel1_2 = new QLabel( this, "TextLabel1_2" );
+    TextLabel1_2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, TextLabel1_2->sizePolicy().hasHeightForWidth() ) );
+
+    toResultContentFilterUILayout->addWidget( TextLabel1_2, 2, 0 );
+
+    TextLabel2 = new QLabel( this, "TextLabel2" );
+    TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) );
+
+    toResultContentFilterUILayout->addMultiCellWidget( TextLabel2, 0, 0, 1, 3 );
+
+    Columns = new toResultCols( this, "Columns" );
+
+    toResultContentFilterUILayout->addMultiCellWidget( Columns, 1, 3, 1, 3 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toResultContentFilterUILayout->addItem( Spacer1, 4, 3 );
+
+    AllTables = new QCheckBox( this, "AllTables" );
+
+    toResultContentFilterUILayout->addWidget( AllTables, 4, 0 );
+    languageChange();
+    resize( QSize(750, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton3, SIGNAL( clicked() ), this, SLOT( reject() ) );
+
+    // tab order
+    setTabOrder( Criteria, Order );
+    setTabOrder( Order, PushButton1 );
+    setTabOrder( PushButton1, PushButton3 );
+
+    // buddies
+    TextLabel1->setBuddy( Criteria );
+    TextLabel1_2->setBuddy( Order );
+    TextLabel2->setBuddy( Columns );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toResultContentFilterUI::~toResultContentFilterUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toResultContentFilterUI::languageChange()
+{
+    setCaption( tr( "Content editor filter settings" ) );
+    PushButton1->setText( tr( "Ok" ) );
+    PushButton3->setText( tr( "Cancel" ) );
+    TextLabel1->setText( tr( "Selection &criteria" ) );
+    QToolTip::add( TextLabel1, tr( "Selection criteria to use getting items to edit. Same as after where in a select clause." ) );
+    TextLabel1_2->setText( tr( "Sort &order. Separate columns with comma." ) );
+    QToolTip::add( TextLabel1_2, tr( "The sort order to use when retreiving data from the database." ) );
+    TextLabel2->setText( tr( "Table &columns" ) );
+    QToolTip::add( TextLabel2, tr( "Available column names in table." ) );
+    AllTables->setText( tr( "Use for all tables" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,58 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'toresultcontentfilterui.ui'
+**
+** Created: Tue Sep 18 08:21:23 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TORESULTCONTENTFILTERUI_H
+#define TORESULTCONTENTFILTERUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toHighlightedText;
+class toResultCols;
+class QPushButton;
+class QLineEdit;
+class QLabel;
+class QCheckBox;
+
+class toResultContentFilterUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toResultContentFilterUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toResultContentFilterUI();
+
+    QPushButton* PushButton1;
+    QPushButton* PushButton3;
+    QLineEdit* Order;
+    QLabel* TextLabel1;
+    toHighlightedText* Criteria;
+    QLabel* TextLabel1_2;
+    QLabel* TextLabel2;
+    toResultCols* Columns;
+    QCheckBox* AllTables;
+
+protected:
+    QGridLayout* toResultContentFilterUILayout;
+    QSpacerItem* Spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TORESULTCONTENTFILTERUI_H

Added: kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultcontentfilterui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,250 @@
+<!DOCTYPE UI><UI>
+<class>toResultContentFilterUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toResultContentFilterUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>750</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Content editor filter settings</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="4"  column="1" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="4"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton3</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <widget row="3"  column="0" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Order</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Selection &amp;criteria</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Criteria</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Selection criteria to use getting items to edit. Same as after where in a select clause.</string>
+            </property>
+        </widget>
+        <widget row="1"  column="0" >
+            <class>toHighlightedText</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Criteria</cstring>
+            </property>
+            <property stdset="1">
+                <name>focusPolicy</name>
+                <enum>StrongFocus</enum>
+            </property>
+        </widget>
+        <widget row="2"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Sort &amp;order. Separate columns with comma.</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Order</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>The sort order to use when retreiving data from the database.</string>
+            </property>
+        </widget>
+        <widget row="0"  column="1"  rowspan="1"  colspan="3" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel2</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Table &amp;columns</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Columns</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Available column names in table.</string>
+            </property>
+        </widget>
+        <widget row="1"  column="1"  rowspan="3"  colspan="3" >
+            <class>toResultCols</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Columns</cstring>
+            </property>
+        </widget>
+        <spacer row="4"  column="3" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="4"  column="0" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>AllTables</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Use for all tables</string>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toHighlightedText</class>
+        <header location="local">tohighlightedtext.h</header>
+        <sizehint>
+            <width>100</width>
+            <height>100</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+    <customwidget>
+        <class>toResultCols</class>
+        <header location="local">toresultcols.h</header>
+        <sizehint>
+            <width>-1</width>
+            <height>-1</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toResultContentFilterUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton3</sender>
+        <signal>clicked()</signal>
+        <receiver>toResultContentFilterUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>Criteria</tabstop>
+    <tabstop>Order</tabstop>
+    <tabstop>PushButton1</tabstop>
+    <tabstop>PushButton3</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/toresultdepend.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultdepend.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultdepend.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,222 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultdepend.h"
+#include "tosql.h"
+
+#include "toresultdepend.moc"
+
+static toSQL SQLResultDepend("toResultDepend:Depends",
+                             "SELECT DISTINCT\n"
+                             "       referenced_owner \"Owner\",\n"
+                             "       referenced_name \"Name\",\n"
+                             "       referenced_type \"Type\",\n"
+                             "       dependency_type \"Dependency Type\"\n"
+                             "  FROM sys.all_dependencies\n"
+                             " WHERE owner = :owner<char[101]>\n"
+                             "   AND name = :name<char[101]>\n"
+                             " ORDER BY referenced_owner,referenced_type,referenced_name",
+                             "Display dependencies on an object, must have first two "
+                             "columns same columns and same bindings",
+                             "0800");
+static toSQL SQLResultDepend7("toResultDepend:Depends",
+                              "SELECT DISTINCT\n"
+                              "       referenced_owner \"Owner\",\n"
+                              "       referenced_name \"Name\",\n"
+                              "       referenced_type \"Type\",\n"
+                              "       'N/A' \"Dependency Type\"\n"
+                              "  FROM sys.all_dependencies\n"
+                              " WHERE owner = :owner<char[101]>\n"
+                              "   AND name = :name<char[101]>\n"
+                              " ORDER BY referenced_owner,referenced_type,referenced_name",
+                              "",
+                              "0703");
+
+bool toResultDepend::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn);
+}
+
+toResultDepend::toResultDepend(QWidget *parent, const char *name)
+        : toResultView(false, false, parent, name)
+{
+    addColumn(tr("Owner"));
+    addColumn(tr("Name"));
+    addColumn(tr("Type"));
+    addColumn(tr("Dependency"));
+
+    setRootIsDecorated(true);
+    setReadAll(true);
+    setSQLName(QString::fromLatin1("toResultDepend"));
+
+    Query = NULL;
+    Current = NULL;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+toResultDepend::~toResultDepend()
+{
+    delete Query;
+}
+
+bool toResultDepend::exists(const QString &owner, const QString &name)
+{
+    QListViewItem *item = firstChild();
+    while (item)
+    {
+        if (item->text(0) == owner && item->text(1) == name)
+            return true;
+        if (item->firstChild())
+            item = item->firstChild();
+        else if (item->nextSibling())
+            item = item->nextSibling();
+        else
+        {
+            do
+            {
+                item = item->parent();
+            }
+            while (item && !item->nextSibling());
+            if (item)
+                item = item->nextSibling();
+        }
+    }
+    return false;
+}
+
+void toResultDepend::query(const QString &sql, const toQList &param)
+{
+    if (!handled())
+        return ;
+
+    delete Query;
+    Query = NULL;
+    Current = NULL;
+
+    if (!setSQLParams(sql, param))
+        return ;
+
+    clear();
+
+    try
+    {
+        Query = new toNoBlockQuery(connection(),
+                                   toQuery::Background,
+                                   toSQL::string(SQLResultDepend, connection()),
+                                   param);
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+void toResultDepend::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            int cols = Query->describe().size();
+            while (Query->poll() && !Query->eof())
+            {
+                QListViewItem *item;
+                QString owner = Query->readValue();
+                QString name = Query->readValue();
+                if (!exists(owner, name))
+                {
+                    if (!Current)
+                        item = new toResultViewItem(this, NULL, owner);
+                    else
+                        item = new toResultViewItem(Current, NULL, owner);
+                    item->setText(1, name);
+                    for (int i = 2;i < cols;i++)
+                        item->setText(i, Query->readValue());
+                }
+                else
+                {
+                    for (int i = 2;i < cols;i++)
+                        Query->readValue();
+                }
+            }
+            if (Query->eof())
+            {
+                if (!Current)
+                    Current = firstChild();
+                else if (Current->firstChild())
+                    Current = Current->firstChild();
+                else if (Current->nextSibling())
+                    Current = Current->nextSibling();
+                else
+                {
+                    do
+                    {
+                        Current = Current->parent();
+                    }
+                    while (Current && !Current->nextSibling());
+                    if (Current)
+                        Current = Current->nextSibling();
+                }
+                delete Query;
+                Query = NULL;
+                if (Current)
+                {
+                    toQList param;
+                    param.insert(param.end(), Current->text(0));
+                    param.insert(param.end(), Current->text(1));
+                    Query = new toNoBlockQuery(connection(),
+                                               toQuery::Background,
+                                               toSQL::string(SQLResultDepend, connection()),
+                                               param);
+                }
+                else
+                    Poll.stop();
+            }
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultdepend.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultdepend.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultdepend.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,94 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTDEPEND_H
+#define TORESULTDEPEND_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+/** This widget displays information about the dependencies of an object
+ * specified by the first and second parameter in the query. The sql is not
+ * used in the query. It will also recurs through all dependencies of the
+ * objects depended on.
+ */
+
+class toResultDepend : public toResultView
+{
+    Q_OBJECT
+
+    /** Check if an object already exists.
+     * @param owner Owner of object.
+     * @param name Name of object.
+     * @return True if object exists.
+     */
+    bool exists(const QString &owner, const QString &name);
+
+    toNoBlockQuery *Query;
+    toBackground Poll;
+    QListViewItem *Current;
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultDepend(QWidget *parent, const char *name = NULL);
+
+    /** Object destructor.
+     */
+    ~toResultDepend();
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+    /** Reimplemented for internal reasons.
+     */
+    void query(const QString &sql)
+    {
+        toQList p;
+        query(sql, p);
+    }
+    /** Support Oracle
+     */
+    virtual bool canHandle(toConnection &conn);
+public slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultextract.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultextract.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultextract.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,150 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "toextract.h"
+#include "tohighlightedtext.h"
+#include "toresultextract.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include "toresultextract.moc"
+
+toResultExtract::toResultExtract(bool prompt, QWidget *parent, const char *name)
+        : toWorksheet(parent, name, toCurrentConnection(parent))
+{
+    Prompt = prompt;
+}
+
+static toSQL SQLObjectTypeMySQL("toResultExtract:ObjectType",
+                                "SELECT IF(LOCATE('.',CONCAT(:f1,:f2))>0,'INDEX','TABLE')",
+                                "Get type of an object by name",
+                                "4.1",
+                                "MySQL");
+
+static toSQL SQLObjectType("toResultExtract:ObjectType",
+                           "SELECT Object_Type FROM sys.All_Objects\n"
+                           " WHERE Owner = :f1<char[101]> AND Object_Name = :f2<char[101]>",
+                           "");
+
+void toResultExtract::query(const QString &sql, const toQList &param)
+{
+    if (!setSQLParams(sql, param))
+        return ;
+
+    try
+    {
+        toQList::iterator i = params().begin();
+        QString owner;
+        QString name;
+        if (i != params().end())
+        {
+            owner = *i;
+            i++;
+        }
+        toConnection &conn = toToolWidget::connection();
+        if (i == params().end())
+        {
+            name = owner;
+            if (toIsOracle(conn))
+                owner = conn.user().upper();
+            else
+                owner = conn.user();
+        }
+        else
+        {
+            name = *i;
+            i++;
+        }
+
+        QString type;
+        if (i == params().end())
+        {
+            toQuery query(conn, SQLObjectType, owner, name);
+
+            if (query.eof())
+                throw tr("Object not found");
+
+            type = query.readValue();
+        }
+        else
+            type = *i;
+
+        std::list<QString> objects;
+
+        if (toIsOracle(conn))
+        {
+            if (type == QString::fromLatin1("TABLE") ||
+                    type == QString::fromLatin1("TABLE PARTITION"))
+            {
+                objects.insert(objects.end(), QString::fromLatin1("TABLE FAMILY:") + owner + QString::fromLatin1(".") + name);
+                objects.insert(objects.end(), QString::fromLatin1("TABLE REFERENCES:") + owner + QString::fromLatin1(".") + name);
+            }
+            else if (type.startsWith(QString::fromLatin1("PACKAGE")) && Prompt)
+            {
+                objects.insert(objects.end(), QString::fromLatin1("PACKAGE:") + owner + QString::fromLatin1(".") + name);
+                objects.insert(objects.end(), QString::fromLatin1("PACKAGE BODY:") + owner + QString::fromLatin1(".") + name);
+            }
+            else
+                objects.insert(objects.end(), type + QString::fromLatin1(":") + owner + QString::fromLatin1(".") + name);
+        }
+        else
+            objects.insert(objects.end(), type + QString::fromLatin1(":") + owner + QString::fromLatin1(".") + name);
+
+        toExtract extract(conn, NULL);
+        extract.setCode(true);
+        extract.setHeading(false);
+        extract.setPrompt(Prompt);
+        editor()->setText(extract.create(objects));
+    }
+    TOCATCH
+}
+
+bool toResultExtract::canHandle(toConnection &conn)
+{
+    try
+    {
+        return toExtract::canHandle(conn) && !toSQL::string(SQLObjectType, conn).isEmpty();
+    }
+    catch (...)
+    {
+        return false;
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultextract.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultextract.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultextract.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,98 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTEXTRACT_H
+#define TORESULTEXTRACT_H
+
+#include "config.h"
+#include "toresult.h"
+#include "toworksheet.h"
+
+class toSQL;
+
+/** This widget displays the SQL used to recreate an object. It uses the
+ * @ref toExtract class to do this.
+ */
+
+class toResultExtract : public toWorksheet, public toResult
+{
+    Q_OBJECT
+
+    bool Prompt;
+
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultExtract(bool prompt, QWidget *parent, const char *name = NULL);
+
+    /** Ignores sql and extect object name and owner as parameters.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+
+    /** Support Oracle
+     */
+    virtual bool canHandle(toConnection &conn);
+public slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        toResult::refresh();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultfield.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultfield.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultfield.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,129 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultfield.h"
+#include "tosql.h"
+#include "tosqlparse.h"
+#include "totool.h"
+
+#include "toresultfield.moc"
+
+toResultField::toResultField(QWidget *parent, const char *name)
+        : toHighlightedText(parent, name)
+{
+    setReadOnly(true);
+    Query = NULL;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+toResultField::~toResultField()
+{
+    delete Query;
+}
+
+void toResultField::query(const QString &sql, const toQList &param)
+{
+    if (!setSQLParams(sql, param))
+        return ;
+
+    setFilename(QString::null);
+
+    try
+    {
+        clear();
+        Unapplied = QString::null;
+        if (Query)
+        {
+            delete Query;
+            Query = NULL;
+        }
+
+        Query = new toNoBlockQuery(connection(), toQuery::Background, sql, param);
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+#define THRESHOLD 10240
+
+void toResultField::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            while (Query->poll() && !Query->eof())
+            {
+                Unapplied += Query->readValue();
+            }
+            if (Unapplied.length() > THRESHOLD)
+            {
+                append(Unapplied);
+                Unapplied = QString::null;
+            }
+            if (Query->eof())
+            {
+                delete Query;
+                Query = NULL;
+                Poll.stop();
+                try
+                {
+                    if (!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_INDENT_RO, "Yes").isEmpty())
+                        setText(toSQLParse::indent(text() + Unapplied));
+                    else
+                        append(Unapplied);
+                }
+                TOCATCH
+                Unapplied = QString::null;
+            }
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultfield.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultfield.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultfield.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,152 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTFIELD_H
+#define TORESULTFIELD_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "tohighlightedtext.h"
+#include "toresult.h"
+
+class toNoBlockQuery;
+class toSQL;
+
+/** This widget displays the result of a query where each item in the stream
+ * is added as a line in a text editer.
+ */
+
+class toResultField : public toHighlightedText, public toResult
+{
+    Q_OBJECT
+
+    QString Unapplied;
+    toNoBlockQuery *Query;
+    toBackground Poll;
+
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultField(QWidget *parent, const char *name = NULL);
+    /** Destruct object
+     */
+    ~toResultField();
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+
+    /** Handle any connection by default
+     */
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+
+    // Why are these needed?
+#if 1
+    /** Set the SQL statement of this list
+     * @param sql String containing statement.
+     */
+    void setSQL(const QString &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set the SQL statement of this list. This will also affect @ref Name.
+     * @param sql SQL containing statement.
+     */
+    void setSQL(const toSQL &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const QString &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql, toQList &par)
+    {
+        toResult::query(sql, par);
+    }
+#endif
+public slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        toResult::refresh();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+private slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultindexes.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultindexes.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultindexes.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,293 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultindexes.h"
+#include "tosql.h"
+#include "totool.h"
+#include "toresultindexes.moc"
+
+bool toResultIndexes::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn) || toIsMySQL(conn) || toIsPostgreSQL(conn) || toIsSapDB(conn);
+}
+
+toResultIndexes::toResultIndexes(QWidget *parent, const char *name)
+        : toResultView(false, false, parent, name)
+{
+    setReadAll(true);
+    addColumn(tr("Index Name"));
+    addColumn(tr("Columns"));
+    addColumn(tr("Type"));
+    addColumn(tr("Unique"));
+    setSQLName(QString::fromLatin1("toResultIndexes"));
+    Query = NULL;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+toResultIndexes::~toResultIndexes()
+{
+    delete Query;
+}
+
+static toSQL SQLColumnsPgSQL("toResultIndexes:Columns",
+                             "SELECT a.attname, a.attname as x\n"
+                             "  FROM pg_class c, pg_attribute a, pg_user u\n"
+                             " WHERE c.relowner=u.usesysid AND u.usename = :f1\n"
+                             "   AND a.attrelid = c.oid AND c.relname = :f2\n"
+                             "   AND a.attnum > 0\n"
+                             " ORDER BY a.attnum",
+                             "List columns an index is built on",
+                             "7.1",
+                             "PostgreSQL");
+static toSQL SQLColumns("toResultIndexes:Columns",
+                        "SELECT b.Column_Expression,a.Column_Name\n"
+                        "  FROM sys.All_Ind_Columns a,\n"
+                        "       sys.All_Ind_Expressions b\n"
+                        " WHERE a.Index_Owner = b.Index_Owner(+)\n"
+                        "   AND a.Index_Name  = b.Index_Name(+)\n"
+                        "   AND a.Column_Position = b.Column_Position(+)\n"
+                        "   AND a.Index_Owner = :own<char[101]>\n"
+                        "   AND a.Index_Name = :nam<char[101]>\n"
+                        " ORDER BY a.Column_Position",
+                        "",
+                        "0801");
+static toSQL SQLColumns8("toResultIndexes:Columns",
+                         "SELECT Column_Name,NULL FROM sys.All_Ind_Columns\n"
+                         " WHERE Index_Owner = :f1<char[101]> AND Index_Name = :f2<char[101]>\n"
+                         " ORDER BY Column_Position",
+                         "",
+                         "0800");
+
+static toSQL SQLColumnsSapDB("toResultIndexes:Columns",
+                             "SELECT columnname,datatype\n"
+                             "  FROM indexcolumns\n"
+                             " WHERE owner = :f1<char101> and indexname = :f2<char[101]>\n"
+                             " ORDER BY columnno\n",
+                             "",
+                             "",
+                             "SapDB");
+
+QString toResultIndexes::indexCols(const QString &indOwner, const QString &indName)
+{
+    toQuery query(connection(), SQLColumns, indOwner, indName);
+
+    QString ret;
+    while (!query.eof())
+    {
+        if (!ret.isEmpty())
+            ret.append(QString::fromLatin1(","));
+        QString t = query.readValueNull();
+        if (t.isEmpty())
+            t = query.readValue();
+        else
+            query.readValue();
+        ret.append(t);
+    }
+    return ret;
+}
+
+static toSQL SQLListIndexMySQL("toResultIndexes:ListIndex",
+                               "SHOW INDEX FROM :f1<noquote>.:tab<noquote>",
+                               "List the indexes available on a table",
+                               "3.0",
+                               "MySQL");
+
+static toSQL SQLListIndex("toResultIndexes:ListIndex",
+                          "SELECT Owner,\n"
+                          "       Index_Name,\n"
+                          "       Index_Type,\n"
+                          "       Uniqueness\n"
+                          "  FROM sys.All_Indexes\n"
+                          " WHERE Table_Owner = :f1<char[101]>\n"
+                          "   AND Table_Name = :f2<char[101]>\n"
+                          " ORDER BY Index_Name",
+                          "",
+                          "0800");
+static toSQL SQLListIndex7("toResultIndexes:ListIndex",
+                           "SELECT Owner,\n"
+                           "       Index_Name,\n"
+                           "       'NORMAL',\n"
+                           "       Uniqueness\n"
+                           "  FROM sys.All_Indexes\n"
+                           " WHERE Table_Owner = :f1<char[101]>\n"
+                           "   AND Table_Name = :f2<char[101]>\n"
+                           " ORDER BY Index_Name",
+                           "",
+                           "0703");
+
+static toSQL SQLListIndexPgSQL("toResultIndexes:ListIndex",
+                               "SELECT u.usename as Owner,\n"
+                               "       c2.relname as Index_Name,\n"
+                               "  CASE WHEN i.indisprimary = TRUE THEN 'PRIMARY'\n"
+                               "       ELSE 'NORMAL'\n"
+                               "  END AS Index_Type,\n"
+                               "  CASE WHEN i.indisunique = TRUE THEN 'UNIQUE'\n"
+                               "       ELSE 'NON UNIQUE'\n"
+                               "  END AS non_unique\n"
+                               "  FROM pg_class c, pg_class c2, pg_index i, pg_user u\n"
+                               " WHERE c.relowner=u.usesysid and u.usename = :f1\n"
+                               "   AND c.relname = :f2\n"
+                               "   AND c.oid = i.indrelid\n"
+                               "   AND i.indexrelid = c2.oid\n"
+                               " ORDER BY c2.relname",
+                               "",
+                               "7.1",
+                               "PostgreSQL");
+static toSQL SQLListIndexSapDB("toResultIndexes:ListIndex",
+                               "SELECT owner,\n"
+                               "       indexname \"Index_Name\",\n"
+                               "       'NORMAL',\n"
+                               "       type\n"
+                               " FROM indexes \n"
+                               " WHERE owner = :f1<char[101]> and tablename = :f2<char[101]> \n"
+                               " ORDER by indexname",
+                               "",
+                               "",
+                               "SapDB");
+
+void toResultIndexes::query(const QString &, const toQList &param)
+{
+    if (!handled())
+        return ;
+
+    if (Query)
+        delete Query;
+    Query = NULL;
+
+    try
+    {
+        toConnection &conn = connection();
+        if (toIsOracle(conn))
+            Type = Oracle;
+        else if (toIsMySQL(conn))
+            Type = MySQL;
+        else if (toIsPostgreSQL(conn))
+            Type = PostgreSQL;
+        else if (toIsSapDB(conn))
+            Type = SapDB;
+        else
+            return ;
+
+        toQList::iterator cp = ((toQList &)param).begin();
+        if (cp != ((toQList &)param).end())
+            Owner = *cp;
+        cp++;
+        if (cp != ((toQList &)param).end())
+            TableName = (*cp);
+
+        RowNumber = 0;
+
+        clear();
+
+        toQuery query(connection());
+        toQList par;
+        par.insert(par.end(), Owner);
+        par.insert(par.end(), TableName);
+        Last = NULL;
+
+        Query = new toNoBlockQuery(connection(), toQuery::Background,
+                                   toSQL::string(SQLListIndex, conn), par);
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+void toResultIndexes::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            while (Query->poll() && !Query->eof())
+            {
+                if (Type == Oracle || Type == PostgreSQL || Type == SapDB)
+                {
+                    Last = new toResultViewItem(this, NULL);
+
+                    QString indexOwner(Query->readValue());
+                    QString indexName(Query->readValue());
+                    Last->setText(0, indexName);
+                    Last->setText(1, indexCols(indexOwner, indexName));
+                    Last->setText(2, Query->readValue());
+                    Last->setText(3, Query->readValue());
+                }
+                else if (Type == MySQL)
+                {
+                    Query->readValue(); // Tablename
+                    int unique = Query->readValue().toInt();
+                    QString name = Query->readValue();
+                    Query->readValue(); // SeqID
+                    QString col = Query->readValue();
+
+                    toQDescList &desc = Query->describe();
+                    for (unsigned int i = 5;i < desc.size();i++)
+                        Query->readValue();
+                    if (Last && Last->text(0) == name)
+                        Last->setText(1, Last->text(1) + QString::fromLatin1(",") + col);
+                    else
+                    {
+                        Last = new toResultViewItem(this, NULL);
+                        Last->setText(0, name);
+                        Last->setText(1, col);
+                        Last->setText(2, name == "PRIMARY" ? "PRIMARY" : "INDEX");
+                        Last->setText(3, unique ? "NONUNIQUE" : "UNIQUE");
+                    }
+                }
+            }
+            if (Query->eof())
+            {
+                delete Query;
+                Query = NULL;
+                Poll.stop();
+            }
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultindexes.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultindexes.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultindexes.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,95 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTINDEXES_H
+#define TORESULTINDEXES_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+/** This widget displays information about indexes of an object
+ * specified by the first and second parameter in the query. The sql is not
+ * used in the query.
+ */
+
+class toResultIndexes : public toResultView
+{
+    Q_OBJECT
+
+    /** Get columns of index.
+     * @param conOwner Owner of object.
+     * @param conName Name of index.
+     * @return Columns separated by ','.
+     */
+    QString indexCols(const QString &conOwner, const QString &conName);
+
+    QString Owner;
+    QString TableName;
+
+    enum {
+        Oracle,
+        MySQL,
+        PostgreSQL,
+        SapDB
+    } Type;
+
+    toNoBlockQuery *Query;
+    toBackground Poll;
+    QListViewItem *Last;
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultIndexes(QWidget *parent, const char *name = NULL);
+    /** Destroy object
+     */
+    ~toResultIndexes();
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+    /** Support Oracle & MySQL
+     */
+    virtual bool canHandle(toConnection &conn);
+private slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultitem.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultitem.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultitem.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,287 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultitem.h"
+#include "toresultresources.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <qgrid.h>
+#include <qheader.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+
+#include "toresultitem.moc"
+
+static toSQL SQLResource("toResultResources:Information",
+                         "SELECT 'Total' \"-\",         'per Execution' \"-\",                                                   'per Row processed' \"-\",\n"
+                         "       Sorts,                 DECODE(Executions,0,'N/A',ROUND(Sorts/Executions,3)) \" \",         DECODE(Rows_Processed,0,'N/A',ROUND(Sorts/Rows_Processed,3)) \" \",\n"
+                         "       Parse_Calls \"Parse\", DECODE(Executions,0,'N/A',ROUND(Parse_Calls/Executions,3)) \" \",   DECODE(Rows_Processed,0,'N/A',ROUND(Parse_Calls/Rows_Processed,3)) \" \",\n"
+                         "       Disk_Reads,            DECODE(Executions,0,'N/A',ROUND(Disk_Reads/Executions,3)) \" \",    DECODE(Rows_Processed,0,'N/A',ROUND(Disk_Reads/Rows_Processed,3)) \" \",\n"
+                         "       Buffer_Gets,           DECODE(Executions,0,'N/A',ROUND(Buffer_Gets/Executions,3)) \" \",   DECODE(Rows_Processed,0,'N/A',ROUND(Buffer_Gets/Rows_Processed,3)) \" \",\n"
+                         "       Rows_Processed,        DECODE(Executions,0,'N/A',ROUND(Rows_Processed/Executions,3)) \" \",' ' \"-\",\n"
+                         "       Executions,            ' ' \"-\",                                                          ' ' \"-\",\n"
+                         "       ' ' \"-\",             ' ' \"-\",                                                          ' ' \"-\",\n"
+                         "       Loads,                 First_Load_Time,                                                    Parsing_User_Id,\n"
+                         "       Parsing_Schema_Id,     Users_Executing,                                                    Users_Opening,\n"
+                         "       Open_Versions,         Sharable_Mem,                                                       Kept_Versions,\n"
+                         "       Persistent_Mem,        Optimizer_Mode,                                                     Loaded_Versions,\n"
+                         "       Runtime_Mem,           Serializable_Aborts,                                                Invalidations\n"
+                         " FROM v$sqlarea WHERE Address||':'||Hash_Value = :f1<char[100]>",
+                         "Display information about an SQL statement");
+
+toResultResources::toResultResources(QWidget *parent, const char *name)
+        : toResultItem(3, true, parent, name)
+{
+    setSQL(SQLResource);
+}
+
+void toResultItem::setup(int num, bool readable)
+{
+    enableClipper(true);
+    ReadableColumns = readable;
+    NumWidgets = 0;
+    WidgetPos = 0;
+    viewport()->setBackgroundMode(PaletteBackground);
+    Result = new QGrid(2 * num, viewport());
+    Result->setFixedWidth(width() - 30);
+    addChild(Result);
+    Result->setSpacing(3);
+    ShowTitle = true;
+    Right = true;
+    DataFont.setBold(true);
+    Query = NULL;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+toResultItem::toResultItem(int num, bool readable, QWidget *parent, const char *name)
+        : QScrollView(parent, name), DataFont(QFont::defaultFont())
+{
+    setup(num, readable);
+}
+
+toResultItem::toResultItem(int num, QWidget *parent, const char *name)
+        : QScrollView(parent, name), DataFont(QFont::defaultFont())
+{
+    setup(num, false);
+}
+
+toResultItem::~toResultItem()
+{
+    delete Query;
+}
+
+void toResultItem::start(void)
+{
+    WidgetPos = 0;
+}
+
+// Must be alloced in multiples of 2
+#define ALLOC_SIZE 1000
+
+QWidget *toResultItem::createTitle(QWidget *parent)
+{
+    QLabel *widget = new QLabel(parent);
+    widget->setAlignment(AlignRight | AlignVCenter | ExpandTabs | WordBreak);
+    return widget;
+}
+
+QWidget *toResultItem::createValue(QWidget *parent)
+{
+    QLabel *widget = new QLabel(parent);
+    return widget;
+}
+
+void toResultItem::setTitle(QWidget *widget, const QString &title, const QString &)
+{
+    QLabel *label = static_cast<QLabel *>(widget);
+    if (label)
+        label->setText(title);
+}
+
+void toResultItem::setValue(QWidget *widget, const QString &title, const QString &value)
+{
+    QLabel *label = static_cast<QLabel *>(widget);
+    if (label)
+    {
+        if (title != "-")
+        {
+            label->setFrameStyle(StyledPanel | Sunken);
+            label->setFont(DataFont);
+        }
+        else
+        {
+            label->setFrameStyle(NoFrame);
+            label->setFont(qApp->font());
+        }
+        label->setText(value);
+        if (Right)
+            label->setAlignment(AlignRight | AlignVCenter | ExpandTabs | WordBreak);
+        else
+            label->setAlignment(AlignLeft | AlignVCenter | ExpandTabs | WordBreak);
+    }
+}
+
+void toResultItem::addItem(const QString &title, const QString &value)
+{
+    if (WidgetPos >= NumWidgets)
+    {
+        NumWidgets += ALLOC_SIZE;
+        Widgets.resize(NumWidgets, 0);
+    }
+    QString t;
+    if (title != "-")
+        t = toTranslateMayby(sqlName(), title);
+    QWidget *widget;
+    if (!Widgets[WidgetPos])
+    {
+        widget = createTitle(Result);
+        Widgets[WidgetPos] = widget;
+    }
+    else
+        widget = ((QLabel *)Widgets[WidgetPos]);
+
+    setTitle(widget, t, value);
+    if (ShowTitle)
+        widget->show();
+    else
+        widget->hide();
+
+    WidgetPos++;
+    if (!Widgets[WidgetPos])
+    {
+        widget = createValue(Result);
+        Widgets[WidgetPos] = widget;
+    }
+    else
+        widget = Widgets[WidgetPos];
+    setValue(widget, title, value);
+
+    widget->show();
+    WidgetPos++;
+}
+
+void toResultItem::done(void)
+{
+    for (int i = WidgetPos;i < NumWidgets;i++)
+        if (Widgets[i])
+            Widgets[i]->hide();
+    QLayout *l = layout();
+    if (l)
+        l->invalidate();
+}
+
+void toResultItem::query(const QString &sql, const toQList &param)
+{
+    if (!setSQLParams(sql, param))
+        return ;
+
+    start();
+    if (!handled() || Query)
+    {
+        if (!Query)
+            done();
+        return ;
+    }
+
+    try
+    {
+        if (Query)
+        {
+            delete Query;
+            Query = NULL;
+        }
+        Query = new toNoBlockQuery(connection(), toQuery::Background,
+                                   sql, param);
+        Poll.start(100);
+
+    }
+    catch (const QString &str)
+    {
+        done();
+        toStatusMessage(str);
+    }
+}
+
+void toResultItem::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            toQDescList desc = Query->describe();
+
+            if (!Query->eof())
+            {
+                for (toQDescList::iterator i = desc.begin();i != desc.end();i++)
+                {
+                    QString name = (*i).Name;
+                    if (ReadableColumns)
+                        toReadableColumn(name);
+
+                    addItem(name, Query->readValue());
+                }
+            }
+            done();
+            delete Query;
+            Query = NULL;
+            Poll.stop();
+        }
+    }
+    catch (const QString &str)
+    {
+        delete Query;
+        Query = NULL;
+        done();
+        toStatusMessage(str);
+        Poll.stop();
+    }
+}
+
+void toResultItem::resizeEvent(QResizeEvent *e)
+{
+    QScrollView::resizeEvent(e);
+    Result->setFixedWidth(width() - 30);
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultitem.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultitem.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultitem.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,257 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTITEM_H
+#define TORESULTITEM_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toresult.h"
+
+#include <qscrollview.h>
+#include <qfont.h>
+
+#include <vector>
+
+class QGrid;
+class toSQL;
+class toNoBlockQuery;
+
+/** Display the first row of a query with each column with a separate label.
+ * If the label of the item is a single '-' character the data is treated as
+ * a horizontal label (Not bold or sunken), and the label is not printed.
+ */
+
+class toResultItem : public QScrollView, public toResult
+{
+    Q_OBJECT
+
+    /** Result widget.
+     */
+    QGrid *Result;
+
+    /** Number of created widgets.
+     */
+    int NumWidgets;
+    /** Last widget used.
+     */
+    int WidgetPos;
+    /** List of allocated widgets.
+     */
+    std::vector<QWidget*> Widgets;
+
+    /** If title names are to be made more readable.
+     */
+    bool ReadableColumns;
+    /** If title names are to be displayed.
+     */
+    bool ShowTitle;
+    /** Align widgets to the right.
+     */
+    bool Right;
+    /** Font to display data with.
+     */
+    QFont DataFont;
+
+    toNoBlockQuery *Query;
+    toBackground Poll;
+
+    /** Setup widget.
+     * @param num Number of columns.
+     * @param readable Make columns more readable.
+     */
+    void setup(int num, bool readable);
+protected:
+    /** Start new query, hide all widgets.
+     */
+    void start(void);
+    /** Add a new widget.
+     * @param title Title of this value.
+     * @param value Value.
+     */
+    void addItem(const QString &title, const QString &value);
+    /** Done with adding queries.
+     */
+    void done(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void resizeEvent(QResizeEvent *e);
+public:
+    /** Create widget.
+     * @param num Number of columns to arrange data in.
+     * @param readable Indicate if columns are to be made more readable. This means that the
+     * descriptions are capitalised and '_' are converted to ' '.
+     * @param parent Parent of list.
+     * @param name Name of widget.
+     */
+    toResultItem(int num, bool readable, QWidget *parent, const char *name = NULL);
+    /** Create widget. Readable columns by default.
+     * @param num Number of columns to arrange data in.
+     * @param parent Parent of list.
+     * @param name Name of widget.
+     */
+    toResultItem(int num, QWidget *parent, const char *name = NULL);
+    /** Destroy object
+     */
+    ~toResultItem(void);
+
+    /** Set if titles are to be shown.
+     * @param val If titles are to be shown.
+     */
+    void showTitle(bool val)
+    {
+        ShowTitle = val;
+    }
+    /** Set if labels are to be aligned right.
+     * @param val If labels are to be aligned right.
+     */
+    void alignRight(bool val)
+    {
+        Right = val;
+    }
+    /** Set the font to display data with.
+     */
+    void dataFont(const QFont &val)
+    {
+        DataFont = val;
+    }
+
+    /** Create title widget.
+     * @param parent Parent of widget.
+     * @return Title widget created.
+     */
+    virtual QWidget *createTitle(QWidget *parent);
+    /** Create value widget.
+     * @param parent Parent of widget.
+     * @return Title widget created.
+     */
+    virtual QWidget *createValue(QWidget *parent);
+    /** Set value of title widget.
+     * @param widget Widget to use for title.
+     * @param title The title of the new widget pair.
+     * @param value Vaue of new title widget.
+     */
+    virtual void setTitle(QWidget *widget, const QString &title, const QString &value);
+    /** Set value of value widget.
+     * @param widget Widget to use for value.
+     * @param title The title of the new widget pair.
+     * @param value Vaue of new title widget.
+     */
+    virtual void setValue(QWidget *widget, const QString &title, const QString &value);
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+
+    /** Handle any connection
+     */
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+
+    // Why are these needed?
+#if 1
+    /** Set the SQL statement of this list
+     * @param sql String containing statement.
+     */
+    void setSQL(const QString &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set the SQL statement of this list. This will also affect @ref Name.
+     * @param sql SQL containing statement.
+     */
+    void setSQL(const toSQL &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const QString &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql, toQList &par)
+    {
+        toResult::query(sql, par);
+    }
+#endif
+public slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        toResult::refresh();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+private slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultlabel.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultlabel.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultlabel.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,109 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultlabel.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include "toresultlabel.moc"
+
+toResultLabel::toResultLabel(QWidget *parent, const char *name)
+        : QLabel(parent, name)
+{
+    Query = NULL;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+toResultLabel::~toResultLabel()
+{
+    delete Query;
+}
+
+void toResultLabel::query(const QString &sql, const toQList &param)
+{
+    if (!setSQLParams(sql, param))
+        return ;
+
+    try
+    {
+        clear();
+        if (Query)
+        {
+            delete Query;
+            Query = NULL;
+        }
+
+        Query = new toNoBlockQuery(connection(), toQuery::Background, sql, param);
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+#define THRESHOLD 10240
+
+void toResultLabel::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            QStringList res;
+            while (!Query->eof())
+            {
+                res << Query->readValue();
+            }
+            setText(res.join(QString::fromLatin1("/")));
+            delete Query;
+            Query = NULL;
+            Poll.stop();
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultlabel.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultlabel.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultlabel.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,167 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTLABEL_H
+#define TORESULTLABEL_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toresult.h"
+
+#include <qlabel.h>
+
+class toNoBlockQuery;
+class toSQL;
+
+/** This widget displays the result of a query where each item in the stream
+ * is added to a label separated by an optional string.
+ */
+
+class toResultLabel : public QLabel, public toResult
+{
+    Q_OBJECT
+
+    toNoBlockQuery *Query;
+    toBackground Poll;
+
+    QString Separator;
+
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultLabel(QWidget *parent, const char *name = NULL);
+    /** Destruct object
+     */
+    ~toResultLabel();
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+
+    /** Handle any connection by default
+     */
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+
+    /** Get separator string to use between result.
+     */
+    const QString &separator(void) const
+    {
+        return Separator;
+    }
+    /** Set separator string to use between result.
+     */
+    void setSeparator(const QString &sep)
+    {
+        Separator = sep;
+    }
+
+    // Why are these needed?
+#if 1
+    /** Set the SQL statement of this list
+     * @param sql String containing statement.
+     */
+    void setSQL(const QString &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set the SQL statement of this list. This will also affect @ref Name.
+     * @param sql SQL containing statement.
+     */
+    void setSQL(const toSQL &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const QString &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql, toQList &par)
+    {
+        toResult::query(sql, par);
+    }
+#endif
+public slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        toResult::refresh();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+private slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultline.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultline.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultline.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,220 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "tonoblockquery.h"
+#include "toresultline.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <qpopupmenu.h>
+
+#include "toresultline.moc"
+
+toResultLine::toResultLine(QWidget *parent, const char *name)
+        : toLineChart(parent, name)
+{
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+    LastStamp = 0;
+    Flow = true;
+    Columns = 0;
+    Query = NULL;
+    Started = false;
+}
+
+toResultLine::~toResultLine()
+{
+    delete Query;
+}
+
+void toResultLine::start(void)
+{
+    if (!Started)
+    {
+        try
+        {
+            connect(timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+        }
+        TOCATCH
+        Started = true;
+    }
+}
+
+void toResultLine::stop(void)
+{
+    if (Started)
+    {
+        try
+        {
+            disconnect(timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+        }
+        TOCATCH
+        Started = false;
+    }
+}
+
+void toResultLine::query(const QString &sql, const toQList &param, bool first)
+{
+    if (!handled() || Query)
+        return ;
+
+    start();
+    setSQLParams(sql, param);
+
+    try
+    {
+        First = first;
+        Query = new toNoBlockQuery(connection(), toQuery::Background, sql, param);
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+void toResultLine::poll(void)
+{
+    try
+    {
+        if (Query && Query->poll())
+        {
+            toQDescList desc;
+            if (!Columns)
+            {
+                desc = Query->describe();
+                Columns = desc.size();
+            }
+
+            if (First)
+            {
+                if ( desc.empty() )
+                    desc = Query->describe();
+                clear();
+                std::list<QString> labels;
+                for (toQDescList::iterator i = desc.begin();i != desc.end();i++)
+                    if (i != desc.begin())
+                        labels.insert(labels.end(), (*i).Name);
+                setLabels(labels);
+            }
+
+            while (Query->poll() && !Query->eof())
+            {
+                unsigned int num = 0;
+                QString lab = Query->readValue();
+                num++;
+                std::list<double> vals;
+                while (!Query->eof() && num < Columns)
+                {
+                    vals.insert(vals.end(), Query->readValue().toDouble());
+                    num++;
+                }
+
+                if (Flow)
+                {
+                    time_t now = time(NULL);
+                    if (now != LastStamp)
+                    {
+                        if (LastValues.size() > 0)
+                        {
+                            std::list<double> dispVal;
+                            std::list<double>::iterator i = vals.begin();
+                            std::list<double>::iterator j = LastValues.begin();
+                            while (i != vals.end() && j != LastValues.end())
+                            {
+                                dispVal.insert(dispVal.end(), (*i - *j) / (now - LastStamp));
+                                i++;
+                                j++;
+                            }
+                            std::list<double> tmp = transform(dispVal);
+                            addValues(tmp, lab);
+                        }
+                        LastValues = vals;
+                        LastStamp = now;
+                    }
+                }
+                else
+                {
+                    std::list<double> tmp = transform(vals);
+                    addValues(tmp, lab);
+                }
+            }
+            if (Query->eof())
+            {
+                Poll.stop();
+                Columns = 0;
+                delete Query;
+                Query = NULL;
+                update();
+            }
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}
+
+std::list<double> toResultLine::transform(std::list<double> &input)
+{
+    return input;
+}
+
+void toResultLine::connectionChanged(void)
+{
+    toResult::connectionChanged();
+    clear();
+}
+
+void toResultLine::addMenues(QPopupMenu *popup)
+{
+    if (sqlName().length())
+    {
+        popup->insertSeparator();
+        popup->insertItem(tr("Edit SQL..."),
+                          this, SLOT(editSQL()));
+    }
+}
+
+void toResultLine::editSQL(void)
+{
+    toMainWidget()->editSQL(sqlName());
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultline.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultline.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultline.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,214 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTLINE_H
+#define TORESULTLINE_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "tolinechart.h"
+#include "toresult.h"
+
+#include <time.h>
+
+#include <list>
+
+class toNoBlockQuery;
+class toSQL;
+
+/** Display the result of a query in a piechart. The first column of the query should
+ * contain the x value and the rest of the columns should be values of the diagram. The
+ * legend is the column name. Connects to the tool timer for updates automatically.
+ */
+
+class toResultLine : public toLineChart, public toResult
+{
+    Q_OBJECT
+    /** Display flow in change per second instead of actual values.
+     */
+    bool Flow;
+    bool Started;
+    /** Timestamp of last fetch.
+     */
+    time_t LastStamp;
+    /** Last read values.
+     */
+    std::list<double> LastValues;
+    bool First;
+    toNoBlockQuery *Query;
+    toBackground Poll;
+    unsigned int Columns;
+    void query(const QString &sql, const toQList &param, bool first);
+public:
+    /** Create widget.
+     * @param parent Parent of list.
+     * @param name Name of widget.
+     */
+    toResultLine(QWidget *parent, const char *name = NULL);
+    /** Destroy chart
+     */
+    ~toResultLine();
+
+    /** Stop automatic updating from tool timer.
+     */
+    void stop();
+    /** Start automatic updating from tool timer.
+     */
+    void start();
+
+    /** Display actual values or flow/s.
+     * @param on Display flow or absolute values.
+     */
+    void setFlow(bool on)
+    {
+        Flow = on;
+    }
+    /** Return if flow is displayed.
+     * @return If flow is used.
+     */
+    bool flow(void)
+    {
+        return Flow;
+    }
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param)
+    {
+        query(sql, param, true);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void clear(void)
+    {
+        LastStamp = 0;
+        LastValues.clear();
+        toLineChart::clear();
+    }
+    /** Transform valueset. Make it possible to perform more complex transformation.
+     * called directly before adding the valueset to the chart. After flow transformation.
+     * Default is passthrough.
+     * @param input The untransformed valueset.
+     * @return The valueset actually added to the chart.
+     */
+    virtual std::list<double> transform(std::list<double> &input);
+    /** Handle any connection
+     */
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+
+    // Why are these needed?
+#if 1
+    /** Set the SQL statement of this list
+     * @param sql String containing statement.
+     */
+    void setSQL(const QString &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set the SQL statement of this list. This will also affect @ref Name.
+     * @param sql SQL containing statement.
+     */
+    void setSQL(const toSQL &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const QString &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql, toQList &par)
+    {
+        toResult::query(sql, par);
+    }
+#endif
+public slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        query(sql(), params(), false);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+protected slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void connectionChanged(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void addMenues(QPopupMenu *);
+private slots:
+    void poll(void);
+    void editSQL(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultlistformatui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultlistformatui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultlistformatui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,117 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'toresultlistformatui.ui'
+**
+** Created: Tue Sep 18 08:21:29 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "toresultlistformatui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toResultListFormatUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toResultListFormatUI::toResultListFormatUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toResultListFormatUI" );
+    toResultListFormatUILayout = new QGridLayout( this, 1, 1, 11, 6, "toResultListFormatUILayout"); 
+
+    PushButton2 = new QPushButton( this, "PushButton2" );
+
+    toResultListFormatUILayout->addWidget( PushButton2, 5, 2 );
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+    PushButton1->setDefault( TRUE );
+
+    toResultListFormatUILayout->addWidget( PushButton1, 5, 1 );
+
+    Format = new QComboBox( FALSE, this, "Format" );
+
+    toResultListFormatUILayout->addMultiCellWidget( Format, 1, 1, 0, 2 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+    TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
+
+    toResultListFormatUILayout->addMultiCellWidget( TextLabel1, 0, 0, 0, 2 );
+
+    Separator = new QLineEdit( this, "Separator" );
+
+    toResultListFormatUILayout->addWidget( Separator, 3, 0 );
+
+    TextLabel1_2 = new QLabel( this, "TextLabel1_2" );
+
+    toResultListFormatUILayout->addWidget( TextLabel1_2, 2, 0 );
+
+    TextLabel2 = new QLabel( this, "TextLabel2" );
+
+    toResultListFormatUILayout->addMultiCellWidget( TextLabel2, 2, 2, 1, 2 );
+
+    Delimiter = new QLineEdit( this, "Delimiter" );
+
+    toResultListFormatUILayout->addMultiCellWidget( Delimiter, 3, 3, 1, 2 );
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toResultListFormatUILayout->addItem( Spacer2, 4, 0 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toResultListFormatUILayout->addItem( Spacer1, 5, 0 );
+    languageChange();
+    resize( QSize(356, 199).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( Format, SIGNAL( activated(int) ), this, SLOT( formatChanged(int) ) );
+
+    // tab order
+    setTabOrder( Format, Separator );
+    setTabOrder( Separator, Delimiter );
+    setTabOrder( Delimiter, PushButton1 );
+    setTabOrder( PushButton1, PushButton2 );
+
+    // buddies
+    TextLabel1->setBuddy( Format );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toResultListFormatUI::~toResultListFormatUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toResultListFormatUI::languageChange()
+{
+    setCaption( tr( "Choose format" ) );
+    PushButton2->setText( tr( "Cancel" ) );
+    PushButton1->setText( tr( "&Ok" ) );
+    TextLabel1->setText( tr( "&Choose format of exported file." ) );
+    TextLabel1_2->setText( tr( "Separator" ) );
+    TextLabel2->setText( tr( "Delimiter" ) );
+}
+
+void toResultListFormatUI::formatChanged(int)
+{
+    qWarning( "toResultListFormatUI::formatChanged(int): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/toresultlistformatui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultlistformatui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultlistformatui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,55 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'toresultlistformatui.ui'
+**
+** Created: Tue Sep 18 08:21:29 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TORESULTLISTFORMATUI_H
+#define TORESULTLISTFORMATUI_H
+
+#include <qvariant.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QPushButton;
+class QComboBox;
+class QLabel;
+class QLineEdit;
+
+class toResultListFormatUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toResultListFormatUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toResultListFormatUI();
+
+    QPushButton* PushButton2;
+    QPushButton* PushButton1;
+    QComboBox* Format;
+    QLabel* TextLabel1;
+    QLineEdit* Separator;
+    QLabel* TextLabel1_2;
+    QLabel* TextLabel2;
+    QLineEdit* Delimiter;
+
+public slots:
+    virtual void formatChanged(int);
+
+protected:
+    QGridLayout* toResultListFormatUILayout;
+    QSpacerItem* Spacer2;
+    QSpacerItem* Spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TORESULTLISTFORMATUI_H

Added: kde-extras/tora/branches/upstream/current/src/toresultlistformatui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultlistformatui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultlistformatui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,194 @@
+<!DOCTYPE UI><UI>
+<class>toResultListFormatUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toResultListFormatUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>356</width>
+            <height>199</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Choose format</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="5"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <widget row="5"  column="1" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+            <class>QComboBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Format</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Choose format of exported file.</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Format</cstring>
+            </property>
+        </widget>
+        <widget row="3"  column="0" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Separator</cstring>
+            </property>
+        </widget>
+        <widget row="2"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Separator</string>
+            </property>
+        </widget>
+        <widget row="2"  column="1"  rowspan="1"  colspan="2" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Delimiter</string>
+            </property>
+        </widget>
+        <widget row="3"  column="1"  rowspan="1"  colspan="2" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Delimiter</cstring>
+            </property>
+        </widget>
+        <spacer row="4"  column="0" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <spacer row="5"  column="0" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toResultListFormatUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>toResultListFormatUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>Format</sender>
+        <signal>activated(int)</signal>
+        <receiver>toResultListFormatUI</receiver>
+        <slot>formatChanged(int)</slot>
+    </connection>
+    <slot access="public">formatChanged(int)</slot>
+</connections>
+<tabstops>
+    <tabstop>Format</tabstop>
+    <tabstop>Separator</tabstop>
+    <tabstop>Delimiter</tabstop>
+    <tabstop>PushButton1</tabstop>
+    <tabstop>PushButton2</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/toresultlock.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultlock.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultlock.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,327 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultlock.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <map>
+
+#include "toresultlock.moc"
+
+bool toResultLock::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn);
+}
+
+toResultLock::toResultLock(QWidget *parent, const char *name)
+        : toResultView(false, false, parent, name)
+{
+    setAllColumnsShowFocus(true);
+    setSorting( -1);
+    setRootIsDecorated(true);
+    addColumn(tr("Session"));
+    addColumn(tr("Schema"));
+    addColumn(tr("Osuser"));
+    addColumn(tr("Program"));
+    addColumn(tr("Type"));
+    addColumn(tr("Mode"));
+    addColumn(tr("Request"));
+    addColumn(tr("Object"));
+    addColumn(tr("Grabbed"));
+    addColumn(tr("Requested"));
+    setSQLName(QString::fromLatin1("toResultLock"));
+
+    Query = NULL;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+toResultLock::~toResultLock()
+{
+    delete Query;
+}
+
+static toSQL SQLBlockingLock("toResultLock:BlockingLocks",
+                             "select b.sid,b.schemaname,b.osuser,b.program,\n"
+                             "       decode(a.type,\n"
+                             "              'MR', 'Media Recovery',\n"
+                             "              'RT', 'Redo Thread',\n"
+                             "              'UN', 'User Name',\n"
+                             "              'TX', 'Transaction',\n"
+                             "              'TM', 'DML',\n"
+                             "              'UL', 'PL/SQL User Lock',\n"
+                             "              'DX', 'Distributed Xaction',\n"
+                             "              'CF', 'Control File',\n"
+                             "              'IS', 'Instance State',\n"
+                             "              'FS', 'File Set',\n"
+                             "              'IR', 'Instance Recovery',\n"
+                             "              'ST', 'Disk Space Transaction',\n"
+                             "              'TS', 'Temp Segment',\n"
+                             "              'IV', 'Library Cache Invalidation',\n"
+                             "              'LS', 'Log Start or Switch',\n"
+                             "              'RW', 'Row Wait',\n"
+                             "              'SQ', 'Sequence Number',\n"
+                             "              'TE', 'Extend Table',\n"
+                             "              'TT', 'Temp Table',\n"
+                             "              'Internal ('||a.type||')'),\n"
+                             "       DECODE(a.lmode,0,'None',1,'Null',2,'Row-S',3,'Row-X',4,'Share',5,'S/Row-X',6,'Exclusive',TO_CHAR(a.lmode)),\n"
+                             "       DECODE(a.request,0,'None',1,'Null',2,'Row-S',3,'Row-X',4,'Share',5,'S/Row-X',6,'Exclusive',TO_CHAR(a.request)),\n"
+                             "       d.object_name,\n"
+                             "       ' ',\n"
+                             "       TO_CHAR(SYSDATE-a.CTIME/3600/24)\n"
+                             "  from v$lock a,v$session b,v$locked_object c,sys.all_objects d\n"
+                             " where a.sid = b.sid\n"
+                             "   and c.session_id = a.sid\n"
+                             "   and exists (select 'X'\n"
+                             "                 from v$locked_object bb,\n"
+                             "                      v$lock cc\n"
+                             "                where bb.session_id = cc.sid\n"
+                             "                  and cc.sid != a.sid\n"
+                             "                  and cc.id1 = a.id1\n"
+                             "                  and cc.id2 = a.id2\n"
+                             "                  and bb.object_id = c.object_id)\n"
+                             "   and d.object_id = c.object_id\n"
+                             "   and a.request != 0",
+                             "List session blocked by a lock");
+
+static toSQL SQLLock("toResultLock:Locks",
+                     "select b.sid,\n"
+                     "       b.schemaname,\n"
+                     "       b.osuser,\n"
+                     "       b.program,\n"
+                     "       decode(a.type,\n"
+                     "              'MR', 'Media Recovery',\n"
+                     "              'RT', 'Redo Thread',\n"
+                     "              'UN', 'User Name',\n"
+                     "              'TX', 'Transaction',\n"
+                     "              'TM', 'DML',\n"
+                     "              'UL', 'PL/SQL User Lock',\n"
+                     "              'DX', 'Distributed Xaction',\n"
+                     "              'CF', 'Control File',\n"
+                     "              'IS', 'Instance State',\n"
+                     "              'FS', 'File Set',\n"
+                     "              'IR', 'Instance Recovery',\n"
+                     "              'ST', 'Disk Space Transaction',\n"
+                     "              'TS', 'Temp Segment',\n"
+                     "              'IV', 'Library Cache Invalidation',\n"
+                     "              'LS', 'Log Start or Switch',\n"
+                     "              'RW', 'Row Wait',\n"
+                     "              'SQ', 'Sequence Number',\n"
+                     "              'TE', 'Extend Table',\n"
+                     "              'TT', 'Temp Table',\n"
+                     "              'Internal ('||a.type||')'),\n"
+                     "       DECODE(a.lmode,0,'None',1,'Null',2,'Row-S',3,'Row-X',4,'Share',5,'S/Row-X',6,'Exclusive',TO_CHAR(a.lmode)),\n"
+                     "       DECODE(e.request,0,'None',1,'Null',2,'Row-S',3,'Row-X',4,'Share',5,'S/Row-X',6,'Exclusive',TO_CHAR(e.request)),\n"
+                     "       d.object_name,\n"
+                     "       TO_CHAR(SYSDATE-a.CTIME/3600/24),\n"
+                     "       TO_CHAR(SYSDATE-e.CTIME/3600/24)\n"
+                     "  from v$lock a, v$session b,v$locked_object c,sys.all_objects d,v$lock e\n"
+                     " where a.sid = b.sid\n"
+                     "   and a.lmode != 0\n"
+                     "   and c.session_id = a.sid\n"
+                     "   and c.object_id = d.object_id\n"
+                     "   and exists (select 'X'\n"
+                     "                 from v$locked_object bb,\n"
+                     "                      v$lock cc\n"
+                     "                where bb.session_id = cc.sid\n"
+                     "                  and cc.sid != a.sid\n"
+                     "                  and cc.id1 = a.id1\n"
+                     "                  and cc.id2 = a.id2\n"
+                     "                  and bb.object_id = c.object_id)\n"
+                     "   and a.id1 = e.id1\n"
+                     "   and a.id2 = e.id2\n"
+                     "   and e.sid = :f1<char[101]>\n"
+                     "   and e.lmode != e.request\n"
+                     "   and e.request != 0",
+                     "List locks in a session");
+
+void toResultLock::query(const QString &sql,
+                         const toQList &param)
+{
+    if (!handled())
+        return ;
+
+    if (!setSQLParams(sql, param))
+        return ;
+
+    if (Query)
+    {
+        delete Query;
+        Query = NULL;
+    }
+    clear();
+    Checked.clear();
+
+    try
+    {
+        LastItem = NULL;
+        toQList par;
+        if (!sql.isEmpty())
+        {
+            par.insert(par.end(), sql);
+            Query = new toNoBlockQuery(connection(), toQuery::Background,
+                                       toSQL::string(SQLLock, connection()), par);
+        }
+        else
+        {
+            Query = new toNoBlockQuery(connection(), toQuery::Background,
+                                       toSQL::string(SQLBlockingLock, connection()), par);
+        }
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+#define MARK_COL 20
+
+void toResultLock::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            if (!Query->eof())
+            {
+                do
+                {
+                    QListViewItem *item;
+                    if (!LastItem)
+                        item = new toResultViewItem(this, NULL);
+                    else
+                        item = new toResultViewItem(LastItem, NULL);
+                    toQDescList desc = Query->describe();
+                    for (unsigned int pos = 0;pos < desc.size();pos++)
+                        item->setText(int(pos), Query->readValue());
+                }
+                while (!Query->eof());
+            }
+
+            delete Query;
+            Query = NULL;
+
+            LastItem = NULL;
+            QListViewItem *next = NULL;
+            for (QListViewItem *item = firstChild();item;item = next)
+            {
+                int sid = item->text(0).toInt();
+                if (item->text(MARK_COL).isEmpty())
+                {
+                    item->setText(MARK_COL, QString::fromLatin1("Yes"));
+                    item->setOpen(true);
+                    if (!Checked[sid])
+                    {
+                        Checked[sid] = true;
+                        LastItem = item;
+                        toQList par;
+                        par.insert(par.end(), LastItem->text(0));
+                        Query = new toNoBlockQuery(connection(), toQuery::Background,
+                                                   toSQL::string(SQLLock, connection()), par);
+                    }
+                    else
+                    {
+                        QListViewItem *cn = NULL;
+                        for (QListViewItem *ci = firstChild();ci;ci = cn)
+                        {
+                            if (ci != item && ci->text(0) == item->text(0))
+                            {
+                                if (ci->firstChild())
+                                {
+                                    ci = ci->firstChild();
+                                    cn = new toResultViewItem(item, NULL);
+                                    for (int i = 0;i < columns();i++)
+                                        cn->setText(i, ci->text(i));
+                                }
+                                break;
+                            }
+                            if (ci->firstChild())
+                            {
+                                cn = ci->firstChild();
+                            }
+                            else if (ci->nextSibling())
+                                cn = ci->nextSibling();
+                            else
+                            {
+                                cn = ci;
+                                do
+                                {
+                                    cn = cn->parent();
+                                }
+                                while (cn && !cn->nextSibling());
+                                if (cn)
+                                    cn = cn->nextSibling();
+                            }
+                        }
+                    }
+                    break;
+                }
+                if (item->firstChild())
+                {
+                    next = item->firstChild();
+                }
+                else if (item->nextSibling())
+                    next = item->nextSibling();
+                else
+                {
+                    next = item;
+                    do
+                    {
+                        next = next->parent();
+                    }
+                    while (next && !next->nextSibling());
+                    if (next)
+                        next = next->nextSibling();
+                }
+            }
+            if (!LastItem)
+                Poll.stop();
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultlock.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultlock.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultlock.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,76 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTLOCK_H
+#define TORESULTLOCK_H
+
+#include "config.h"
+
+#include <map>
+
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+class toResultLock : public toResultView
+{
+    Q_OBJECT
+
+    toBackground Poll;
+    toNoBlockQuery *Query;
+    QListViewItem *LastItem;
+    std::map<int, bool> Checked;
+public:
+    toResultLock(QWidget *parent, const char *name = NULL);
+    ~toResultLock();
+
+    virtual void query(const QString &sql, const toQList &param);
+
+    virtual void query(const QString &sql)
+    {
+        toQList p;
+        query(sql, p);
+    }
+    /** Support Oracle
+     */
+    virtual bool canHandle(toConnection &conn);
+private slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultlong.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultlong.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultlong.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,341 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toresultlong.h"
+#include "toresultlong.moc"
+#include "toconf.h"
+#include "totool.h"
+#include "tonoblockquery.h"
+
+#include <stdio.h>
+
+#include <qregexp.h>
+#include <qclipboard.h>
+#include <qheader.h>
+#include <qtooltip.h>
+
+toResultLong::toResultLong(bool readable, bool dispCol, toQuery::queryMode mode,
+                           QWidget *parent, const char *name, WFlags f)
+        : toResultView(readable, dispCol, parent, name, f)
+{
+    Query = NULL;
+    Statistics = NULL;
+    Mode = mode;
+    connect(&Timer, SIGNAL(timeout(void)), this, SLOT(addItem(void)));
+}
+
+toResultLong::toResultLong(QWidget *parent, const char *name, WFlags f)
+        : toResultView(parent, name, f)
+{
+    Query = NULL;
+    Statistics = NULL;
+    Mode = toQuery::Long;
+    connect(&Timer, SIGNAL(timeout(void)), this, SLOT(addItem(void)));
+}
+
+void toResultLong::query(const QString &sql, const toQList &param)
+{
+    if (!setSQLParams(sql, param))
+    {
+        emit firstResult(toResult::sql(),
+                         toConnection::exception(tr("Will not reexecute same query")), false);
+        emit done();
+        return ;
+    }
+    stop();
+    Query = NULL;
+    LastItem = NULL;
+    RowNumber = 0;
+    First = true;
+
+    clear();
+    while (columns() > 0)
+    {
+        removeColumn(0);
+    }
+    HasHeaders = false;
+    setSorting( -1);
+
+    if (NumberColumn)
+    {
+        addColumn(QString::fromLatin1("#"));
+        setColumnAlignment(0, AlignRight);
+    }
+
+    if (Filter)
+        Filter->startingQuery();
+
+    try
+    {
+        Query = new toNoBlockQuery(connection(), Mode, sql, param, Statistics);
+
+        if (ReadAll)
+            MaxNumber = -1;
+        else
+            MaxNumber = toConfigurationSingle::Instance().globalConfig(CONF_MAX_NUMBER, DEFAULT_MAX_NUMBER).toInt();
+        addItem();
+    }
+    catch (const toConnection::exception &str)
+    {
+        First = false;
+        emit firstResult(toResult::sql(), str, true);
+        emit done();
+        if (Mode != toQuery::Long)
+            toStatusMessage(str);
+    }
+    catch (const QString &str)
+    {
+        First = false;
+        emit firstResult(toResult::sql(), str, true);
+        emit done();
+        if (Mode != toQuery::Long)
+            toStatusMessage(str);
+    }
+    updateContents();
+}
+
+#define TO_POLL_CHECK 100
+
+void toResultLong::editReadAll(void)
+{
+    if (Query && !Query->eof())
+    {
+        MaxNumber = -1;
+        Timer.start(TO_POLL_CHECK);
+    }
+}
+
+void toResultLong::addItem(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query)
+        {
+            if (Query->poll())
+            {
+                bool em = false;
+                QString buffer;
+                if (First)
+                {
+                    QString tmp = sql().simplifyWhiteSpace().mid(0, 10).lower();
+                    if (tmp.startsWith(QString::fromLatin1("update")) ||
+                            tmp.startsWith(QString::fromLatin1("delete")) ||
+                            tmp.startsWith(QString::fromLatin1("insert")))
+                        buffer = tr("%1 rows processed").arg(Query->rowsProcessed());
+                    else if (tmp.startsWith(QString::fromLatin1("select")))
+                        buffer = tr("Query executed");
+                    else
+                        buffer = tr("Statement executed");
+                    em = true;
+                }
+                if (!HasHeaders)
+                {
+                    Description = Query->describe();
+                    bool hidden = false;
+
+                    for (toQDescList::iterator i = Description.begin();i != Description.end();i++)
+                    {
+                        QString name = (*i).Name;
+                        if (ReadableColumns)
+                            toReadableColumn(name);
+                        if (name.length() > 0 && name[0].latin1() != ' ')
+                        {
+                            if (hidden)
+                                throw tr("Can only hide last column in query");
+                            if (name[0].latin1() == '-')
+                            {
+                                addColumn(toTranslateMayby(sqlName(), name.right(name.length() - 1)));
+                                setColumnAlignment(columns() - 1, AlignRight);
+                            }
+                            else
+                            {
+                                addColumn(toTranslateMayby(sqlName(), name));
+                                if ((*i).AlignRight)
+                                    setColumnAlignment(columns() - 1, AlignRight);
+                            }
+                        }
+                        else
+                            hidden = true;
+                    }
+                    HasHeaders = true;
+
+                    if (resizeMode() != QListView::NoColumn)
+                        setResizeMode(resizeMode());
+
+                    if (sortColumn() < 0)
+                    {
+                        if (NumberColumn)
+                            setSorting(0);
+                        else
+                            setSorting(Description.size());
+                    }
+                }
+
+                if (!Query->eof())
+                {
+                    int disp = 0;
+                    unsigned int cols = Description.size();
+                    if (NumberColumn)
+                    {
+                        disp = 1;
+                    }
+                    do
+                    {
+                        QListViewItem *last = LastItem;
+                        LastItem = createItem(LastItem, QString::null);
+                        if (NumberColumn)
+                            LastItem->setText(0, QString::number(RowNumber + 1));
+                        else
+                            LastItem->setText(cols, QString::number(RowNumber + 1));
+                        toResultViewItem *ri = dynamic_cast<toResultViewItem *>(LastItem);
+                        toResultViewCheck *ci = dynamic_cast<toResultViewCheck *>(LastItem);
+                        for (unsigned int j = 0;(j < cols || j == 0) && !Query->eof();j++)
+                        {
+                            if (ri)
+                                ri->setText(j + disp, Query->readValue());
+                            else if (ci)
+                                ci->setText(j + disp, Query->readValue());
+                            else
+                                LastItem->setText(j + disp, Query->readValue());
+                        }
+                        if (Filter && !Filter->check(LastItem))
+                        {
+                            delete LastItem;
+                            LastItem = last;
+                        }
+                        else
+                            RowNumber++;
+                    }
+                    while (Query->poll() && !Query->eof() && (MaxNumber < 0 || MaxNumber > RowNumber));
+                }
+                if (em)
+                {
+                    First = false;
+                    emit firstResult(sql(), toConnection::exception(buffer), false);
+                }
+                if (Query->eof())
+                {
+                    cleanup();
+                    return ;
+                }
+                if (MaxNumber < 0 || MaxNumber > RowNumber)
+                {
+                    if (!Timer.isActive())
+                        Timer.start(1); // Must use timer, would mean really long recursion otherwise
+                    else
+                        Timer.start(TO_POLL_CHECK);
+                }
+                else
+                    Timer.stop();
+            }
+            else
+            {
+                if (Query->eof())
+                {
+                    cleanup();
+                    return ;
+                }
+                else if (!Timer.isActive())
+                    Timer.start(TO_POLL_CHECK);
+            }
+        }
+    }
+    catch (const toConnection::exception &str)
+    {
+        if (First)
+        {
+            First = false;
+            emit firstResult(sql(), str, true);
+            if (Mode != toQuery::Long)
+                toStatusMessage(str);
+        }
+        else
+            toStatusMessage(str);
+        cleanup();
+    }
+    catch (const QString &str)
+    {
+        if (First)
+        {
+            First = false;
+            emit firstResult(sql(), str, true);
+            if (Mode != toQuery::Long)
+                toStatusMessage(str);
+        }
+        else
+            toStatusMessage(str);
+        cleanup();
+    }
+}
+
+void toResultLong::cleanup(void)
+{
+    delete Query;
+    Query = NULL;
+    emit done();
+    Timer.stop();
+}
+
+bool toResultLong::eof(void)
+{
+    return !Query || Query->eof();
+}
+
+void toResultLong::stop(void)
+{
+    if (Query)
+    {
+        delete Query;
+        Query = NULL;
+        Timer.stop();
+        emit done();
+    }
+}
+
+toResultLong::~toResultLong()
+{
+    if (Query)
+    {
+        delete Query;
+        Query = NULL;
+    }
+}
+

Added: kde-extras/tora/branches/upstream/current/src/toresultlong.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultlong.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultlong.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,158 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTLONG_H
+#define TORESULTLONG_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toconnection.h"
+#include "toresultview.h"
+
+class QListViewItem;
+class toNoBlockQuery;
+class toResultStats;
+class toResultTip;
+class toresultlong;
+
+/** A widget which contains the result of a query run in the background.
+ */
+class toResultLong : public toResultView
+{
+    Q_OBJECT
+
+    /** No blocking query object.
+     */
+    toNoBlockQuery *Query;
+    /** Timer to poll for new data.
+     */
+    toBackground Timer;
+    /** Indicator if headers have been parsed yet.
+     */
+    bool HasHeaders;
+    /** Indicator if first row has been read yet.
+     */
+    bool First;
+    /** Widget to store query statistics to.
+     */
+    toResultStats *Statistics;
+    /** Description of query
+     */
+    toQDescList Description;
+    /** Number of rows to fetch when starting. (-1 for all)
+     */
+    int MaxNumber;
+
+    /** The query mode to use for the executed query.
+     */
+    toQuery::queryMode Mode;
+
+    /** Check if at eof.
+     */
+    virtual bool eof(void);
+    /** Clean up when query is done
+     */
+    void cleanup(void);
+public:
+    /** Create widget.
+     * @param readable Indicate if columns are to be made more readable. This means that the
+     * descriptions are capitalised and '_' are converted to ' '.
+     * @param numCol If number column is to be displayed.
+     * @param mode Query mode to use when executing query
+     * @param parent Parent of list.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toResultLong(bool readable, bool numCol, toQuery::queryMode mode, QWidget *parent, const char *name = NULL, WFlags f = 0);
+    /** Create widget. The columns are not readable and the number column is displayed.
+     * @param parent Parent of list.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toResultLong(QWidget *parent, const char *name = NULL, WFlags f = 0);
+    ~toResultLong();
+
+    /** Set statistics widget.
+     * @param stats Statistics widget.
+     */
+    void setStatistics(toResultStats *stats)
+    {
+        Statistics = stats;
+    }
+
+    /** Check if query is still running.
+     * @return True if query is still running.
+     */
+    bool running(void)
+    {
+        return Query;
+    }
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+    /** Reimplemented for internal reasons.
+     */
+    void query(const QString &sql)
+    {
+        toQList p;
+        query(sql, p);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editReadAll(void);
+signals:
+    /** Emitted when query is finnished.
+     */
+    void done(void);
+    /** Emitted when the first result is available.
+     * @param sql SQL that was run.
+     * @param res String describing result.
+     * @param error Error has occurred.
+     */
+    void firstResult(const QString &sql, const toConnection::exception &res, bool error);
+
+public slots:
+    /** Stop running query.
+     */
+    void stop(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void addItem(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultparam.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultparam.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultparam.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,417 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toresultparam.h"
+#include "tosql.h"
+#include "toresultview.h"
+#include "tomemoeditor.h"
+#include "toconnection.h"
+#include "toresultlong.h"
+
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qregexp.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+
+#include "toresultparam.moc"
+
+#include "icons/database.xpm"
+#include "icons/filesave.xpm"
+#include "icons/scansource.xpm"
+#include "icons/tocurrent.xpm"
+#include "icons/trash.xpm"
+#include "icons/commit.xpm"
+
+static toSQL SQLParamsMySQL("toResultParam:ListParam",
+                            "TOAD 1,2 show variables",
+                            "List parameters available in the session",
+                            "4.0",
+                            "MySQL");
+
+static toSQL SQLParamsGlobal("toResultParam:ListGlobal",
+                             "TOAD 1,2 show global variables",
+                             "List parameters available in the database",
+                             "4.0",
+                             "MySQL");
+
+static toSQL SQLParams("toResultParam:ListParam",
+                       "select name \"Parameter\",value \"Value\",' ' \"Changed\",\n"
+                       "       description \"Description\", num \" Number\",\n"
+                       "       type \" Type\",isdefault \" Default\",\n"
+                       "       isses_modifiable \" Sesmod\",issys_modifiable \" Sysmod\"\n"
+                       "  from v$parameter order by name",
+                       "");
+
+static toSQL SQLHiddenParams("toResultParam:ListHidden",
+                             "SELECT KSPPINM \"Parameter\",\n"
+                             "       KSPFTCTXVL \"Value\",\n"
+                             "       ' ' \"Changed\",\n"
+                             "       KSPPDESC \"Description\",\n"
+                             "       KSPFTCTXPN \" Num\",\n"
+                             "       ksppity \" Type\",\n"
+                             "       KSPFTCTXDF \" Default\",\n"
+                             "       DECODE(MOD(TRUNC(KSPPIFLG/256),2),0,'FALSE','TRUE') \" Sesmod\",\n"
+                             "       DECODE(MOD(TRUNC(KSPPIFLG/65536),8),0,'FALSE','TRUE') \" Sysmod\"\n"
+                             "  FROM X$KSPPI x,\n"
+                             "       X$KSPPCV2 y\n"
+                             " WHERE x.INDX+1=y.KSPFTCTXPN ORDER BY KSPPINM",
+                             "List parameters available in the database including hidden parameters");
+
+bool toResultParam::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn) || toIsMySQL(conn);
+}
+
+toResultParam::toResultParam(QWidget *parent, const char *name)
+        : QVBox(parent, name)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Parameter editor"));
+    Toggle = new QToolButton(toolbar);
+    Toggle->setToggleButton(true);
+    if (toIsOracle(connection()))
+    {
+        Toggle->setIconSet(QIconSet(QPixmap(const_cast<const char**>(scansource_xpm))));
+        connect(Toggle, SIGNAL(toggled(bool)), this, SLOT(showHidden(bool)));
+        QToolTip::add
+            (Toggle, tr("Display hidden parameters. This will only word if you are logged in as the sys user."));
+    }
+    else
+    {
+        QIconSet iconset(QPixmap(const_cast<const char**>(tocurrent_xpm)));
+        iconset.setPixmap(QPixmap(const_cast<const char**>(database_xpm)), QIconSet::Automatic, QIconSet::Normal, QIconSet::On);
+        Toggle->setIconSet(iconset);
+        connect(Toggle, SIGNAL(toggled(bool)), this, SLOT(showGlobal(bool)));
+        QToolTip::add
+            (Toggle, tr("Switch between global and session variables to show."));
+    }
+    toolbar->addSeparator();
+
+    new QToolButton(QPixmap(const_cast<const char**>(filesave_xpm)),
+                    tr("Generate configuration file"),
+                    tr("Generate configuration file"),
+                    this, SLOT(generateFile()), toolbar);
+    toolbar->addSeparator();
+    if (toIsOracle(connection()))
+    {
+        new QToolButton(QPixmap(const_cast<const char**>(database_xpm)),
+                        tr("Apply changes to system"),
+                        tr("Apply changes to system"),
+                        this, SLOT(applySystem()), toolbar);
+        new QToolButton(QPixmap(const_cast<const char**>(tocurrent_xpm)),
+                        tr("Apply changes to session"),
+                        tr("Apply changes to session"),
+                        this, SLOT(applySession()), toolbar);
+    }
+    else
+    {
+        new QToolButton(QPixmap(const_cast<const char**>(commit_xpm)),
+                        tr("Apply changes"),
+                        tr("Apply changes"),
+                        this, SLOT(applyChanges()), toolbar);
+    }
+    if (toIsOracle(connection()))
+    {
+        toolbar->addSeparator();
+        new QToolButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                        tr("Drop current changes"),
+                        tr("Drop current changes"),
+                        this, SLOT(dropChanges()), toolbar);
+    }
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    Params = new toResultLong(false, false, toQuery::Background, this);
+    Params->setSQL(SQLParams);
+    Params->setReadAll(true);
+    Params->setSelectionMode(QListView::Single);
+    connect(Params, SIGNAL(selectionChanged()), this, SLOT(changeItem()));
+    connect(Params, SIGNAL(done()), this, SLOT(done()));
+    Value = new QLineEdit(this);
+    Value->setEnabled(false);
+    refresh();
+}
+
+void toResultParam::showHidden(bool hid)
+{
+    if (hid)
+        Params->setSQL(SQLHiddenParams);
+    else
+        Params->setSQL(SQLParams);
+    refresh();
+}
+
+void toResultParam::showGlobal(bool glb)
+{
+    if (glb)
+        Params->setSQL(SQLParamsGlobal);
+    else
+        Params->setSQL(SQLParams);
+    refresh();
+}
+
+void toResultParam::query(const QString &, const toQList &)
+{
+    saveChange();
+    LastItem = QString::null;
+
+    Params->refresh();
+}
+
+void toResultParam::dropChanges(void)
+{
+    NewValues.clear();
+    refresh();
+}
+
+void toResultParam::done()
+{
+    for (QListViewItem *item = Params->firstChild();item;item = item->nextSibling())
+    {
+        std::map<QString, QString>::iterator i = NewValues.find(item->text(0));
+        if (i != NewValues.end())
+        {
+            item->setText(1, (*i).second);
+            item->setText(6, QString::fromLatin1("FALSE"));
+            item->setText(2, tr("Changed"));
+        }
+    }
+}
+
+void toResultParam::saveChange()
+{
+    if (!LastItem.isEmpty() && LastValue != Value->text())
+    {
+        NewValues[LastItem] = Value->text();
+        LastValue = Value->text();
+        for (QListViewItem *item = Params->firstChild();item;item = item->nextSibling())
+        {
+            if (item->text(0) == LastItem)
+            {
+                item->setText(1, LastValue);
+                item->setText(6, QString::fromLatin1("FALSE"));
+                item->setText(2, tr("Changed"));
+                break;
+            }
+        }
+    }
+}
+
+void toResultParam::generateFile(void)
+{
+    saveChange();
+    QString str = tr("# Generated by TOra version %1\n\n").arg(QString::fromLatin1(TOVERSION));
+    QRegExp comma(QString::fromLatin1("\\s*,\\s+"));
+    for (QListViewItem *item = Params->firstChild();item;item = item->nextSibling())
+    {
+        if (toIsOracle(connection()))
+        {
+            if (item->text(6) == QString::fromLatin1("FALSE"))
+            {
+                str += item->text(0);
+                str += QString::fromLatin1(" = ");
+                if (item->text(5) == QString::fromLatin1("2"))
+                {
+                    QStringList lst = QStringList::split(comma, item->text(1));
+                    if (lst.count() > 1)
+                        str += QString::fromLatin1("( ");
+                    for (unsigned int i = 0;i < lst.count();i++)
+                    {
+                        if (i > 0)
+                            str += QString::fromLatin1(", ");
+                        str += QString::fromLatin1("\"") + lst[i] + QString::fromLatin1("\"");
+                    }
+                    if (lst.count() > 1)
+                        str += QString::fromLatin1(" )");
+                }
+                else
+                    str += item->text(1);
+                str += QString::fromLatin1("\n");
+            }
+        }
+        else
+        {
+            str += item->text(0) + " = '" + item->text(1) + "'\n";
+        }
+    }
+    connect(new toMemoEditor(this, str, 0, 0), SIGNAL(changeData(int, int, const QString &)),
+            this, SLOT(changedData(int, int, const QString &)));
+}
+
+void toResultParam::applySession(void)
+{
+    try
+    {
+        saveChange();
+        toConnection &conn = connection();
+        for (QListViewItem *item = Params->firstChild();item;item = item->nextSibling())
+        {
+            if (item->text(2) == tr("Changed"))
+            {
+                try
+                {
+                    if (item->text(7) != QString::fromLatin1("FALSE"))
+                    {
+                        QString str = QString::fromLatin1("ALTER SESSION SET ");
+                        str += item->text(0);
+                        str += QString::fromLatin1(" = ");
+                        if (item->text(5) == QString::fromLatin1("2"))
+                        {
+                            str += QString::fromLatin1("'");
+                            str += item->text(1);
+                            str += QString::fromLatin1("'");
+                        }
+                        else
+                            str += item->text(1);
+                        conn.allExecute(str);
+                        std::map<QString, QString>::iterator i = NewValues.find(item->text(0));
+                        if (i != NewValues.end())
+                            NewValues.erase(i);
+                    }
+                }
+                TOCATCH
+            }
+        }
+    }
+    TOCATCH
+    refresh();
+}
+
+void toResultParam::applySystem(void)
+{
+    try
+    {
+        saveChange();
+        toConnection &conn = connection();
+        for (QListViewItem *item = Params->firstChild();item;item = item->nextSibling())
+        {
+            if (item->text(2) == tr("Changed"))
+            {
+                try
+                {
+                    if (item->text(8) != QString::fromLatin1("FALSE"))
+                    {
+                        QString str = QString::fromLatin1("ALTER SYSTEM SET ");
+                        str += item->text(0);
+                        str += QString::fromLatin1(" = ");
+                        if (item->text(5) == QString::fromLatin1("2"))
+                        {
+                            str += QString::fromLatin1("'");
+                            str += item->text(1);
+                            str += QString::fromLatin1("'");
+                        }
+                        else
+                            str += item->text(1);
+                        conn.execute(str);
+                        std::map<QString, QString>::iterator i = NewValues.find(item->text(0));
+                        if (i != NewValues.end())
+                            NewValues.erase(i);
+                    }
+                }
+                TOCATCH
+            }
+        }
+    }
+    TOCATCH
+    refresh();
+}
+
+// Only used by MySQL
+
+void toResultParam::applyChanges(void)
+{
+    try
+    {
+        saveChange();
+        toConnection &conn = connection();
+        for (QListViewItem *item = Params->firstChild();item;item = item->nextSibling())
+        {
+            if (item->text(2) == tr("Changed"))
+            {
+                try
+                {
+                    QString str = "SET ";
+                    if (!Toggle->isOn())
+                        str += "GLOBAL ";
+                    else
+                        str += "SESSION ";
+                    str += item->text(0);
+                    str += " = ";
+                    str += QString::fromLatin1("'");
+                    str += item->text(1);
+                    str += QString::fromLatin1("'");
+                    conn.execute(str);
+                    std::map<QString, QString>::iterator i = NewValues.find(item->text(0));
+                    if (i != NewValues.end())
+                        NewValues.erase(i);
+                }
+                TOCATCH
+            }
+        }
+    }
+    TOCATCH
+    refresh();
+}
+
+void toResultParam::changeItem(void)
+{
+    saveChange();
+
+    QListViewItem *item = Params->selectedItem();
+    if (item)
+    {
+        LastItem = item->text(0);
+        LastValue = item->text(1);
+        Value->setText(LastValue);
+        Value->setEnabled(true);
+    }
+    else
+    {
+        LastItem = QString::null;
+        Value->setEnabled(false);
+    }
+}
+
+void toResultParam::changedData(int, int, const QString &data)
+{
+    QString file = toSaveFilename(QString::null, toIsOracle(connection()) ? "*.pfile" : "*.conf", this);
+    if (!file.isEmpty())
+        toWriteFile(file, data);
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultparam.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultparam.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultparam.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,116 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTPARAM_H
+#define TORESULTPARAM_H
+
+#include "config.h"
+#include "toresult.h"
+
+#include <map>
+
+#include <qvbox.h>
+
+class QLineEdit;
+class QToolButton;
+class toResultView;
+
+/** This widget displays the parameters of a session and lets
+ * you edit them.
+ */
+
+class toResultParam : public QVBox, public toResult
+{
+    Q_OBJECT
+
+    QString LastItem;
+    QString LastValue;
+    std::map<QString, QString> NewValues;
+
+    toResultView *Params;
+    QLineEdit *Value;
+    QToolButton *Toggle;
+
+    void saveChange();
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultParam(QWidget *parent, const char *name = NULL);
+
+    virtual bool canHandle(toConnection &conn);
+private slots:
+    void generateFile(void);
+    void applySession(void);
+    void applySystem(void);
+    void applyChanges(void);
+    void changeItem(void);
+    void changedData(int row, int col, const QString &data);
+    void dropChanges(void);
+    void done(void);
+    void showHidden(bool);
+    void showGlobal(bool);
+public slots:
+    virtual void query(const QString &sql, const toQList &param);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        toResult::refresh();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultpie.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultpie.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultpie.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,157 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultpie.h"
+#include "tosql.h"
+
+#include "toresultpie.moc"
+
+toResultPie::toResultPie(QWidget *parent, const char *name)
+        : toPieChart(parent, name)
+{
+    Query = NULL;
+    Columns = 0;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+    Started = false;
+    LabelFirst = false;
+}
+
+void toResultPie::start(void)
+{
+    if (!Started)
+    {
+        try
+        {
+            connect(timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+        }
+        TOCATCH
+        Started = true;
+    }
+}
+
+void toResultPie::stop(void)
+{
+    if (Started)
+    {
+        try
+        {
+            disconnect(timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+        }
+        TOCATCH
+        Started = false;
+    }
+}
+
+void toResultPie::query(const QString &sql, const toQList &param)
+{
+    if (!handled() || Query)
+        return ;
+
+    start();
+    if (!setSQLParams(sql, param))
+        return ;
+
+    try
+    {
+        Query = new toNoBlockQuery(connection(), toQuery::Background, sql, param);
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+void toResultPie::poll(void)
+{
+    try
+    {
+        if (Query && Query->poll())
+        {
+            if (!Columns)
+                Columns = Query->describe().size();
+            while (Query->poll() && !Query->eof())
+            {
+                QString val;
+                QString lab;
+                if (Columns > 1)
+                {
+                    if (LabelFirst)
+                    {
+                        lab = Query->readValueNull();
+                        val = Query->readValueNull();
+                    }
+                    else
+                    {
+                        val = Query->readValueNull();
+                        lab = Query->readValueNull();
+                    }
+                    for (int i = 2;i < Columns;i++)
+                        Query->readValueNull();
+                }
+                else
+                    val = Query->readValueNull();
+                if (!Filter.isEmpty() && !Filter.exactMatch(lab))
+                    continue;
+                if (!ValueFilter.isEmpty() && !ValueFilter.exactMatch(val))
+                    continue;
+                Values.insert(Values.end(), val.toDouble());
+                if (Columns > 1)
+                    Labels.insert(Labels.end(), lab);
+            }
+            if (Query->eof())
+            {
+                setValues(Values, Labels);
+                Values.clear();
+                Labels.clear();
+                delete Query;
+                Query = NULL;
+                Columns = 0;
+                Poll.stop();
+            }
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultpie.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultpie.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultpie.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,196 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTPIE_H
+#define TORESULTPIE_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "topiechart.h"
+#include "toresult.h"
+
+#include <list>
+
+#include <qregexp.h>
+
+class toNoBlockQuery;
+class toSQL;
+
+/** Display the result of a query in a piechart. The first column of the query should
+ * contain the value and the second should contain an optional label.
+ */
+
+class toResultPie : public toPieChart, public toResult
+{
+    Q_OBJECT
+
+    toNoBlockQuery *Query;
+    std::list<QString> Labels;
+    std::list<double> Values;
+    toBackground Poll;
+    int Columns;
+    bool Started;
+    bool LabelFirst;
+    QRegExp Filter;
+    QRegExp ValueFilter;
+public:
+    /** Create widget.
+     * @param parent Parent of list.
+     * @param name Name of widget.
+     */
+    toResultPie(QWidget *parent, const char *name = NULL);
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+
+    /** Stop automatic updating from tool timer.
+     */
+    void stop();
+    /** Start automatic updating from tool timer.
+     */
+    void start();
+
+    /** Indicate that the first column should be the label.
+     */
+    void setLabelFirst(bool first)
+    {
+        LabelFirst = first;
+    }
+    /** Check label first status.
+     */
+    bool labelFirst(void)
+    {
+        return LabelFirst;
+    }
+    /** Set a filter on which columns to add based on label.
+     * @param filter A regexp which the label must match.
+     * @param valueFilter A regexp which the value must match.
+     */
+    void setFilter(const QRegExp &filter, const QRegExp &valueFilter)
+    {
+        Filter = filter;
+        ValueFilter = valueFilter;
+    }
+    /** Get the current filter.
+     */
+    const QRegExp &filter(void)
+    {
+        return Filter;
+    }
+    /** Get the current value filter.
+     */
+    const QRegExp &valueFilter(void)
+    {
+        return ValueFilter;
+    }
+
+    // Why are these needed?
+#if 1
+    /** Set the SQL statement of this list
+     * @param sql String containing statement.
+     */
+    void setSQL(const QString &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set the SQL statement of this list. This will also affect @ref Name.
+     * @param sql SQL containing statement.
+     */
+    void setSQL(const toSQL &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const QString &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql, toQList &par)
+    {
+        toResult::query(sql, par);
+    }
+#endif
+public slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void)
+    {
+        toResult::refresh();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+private slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultplan.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultplan.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultplan.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,437 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "tonoblockquery.h"
+#include "toresultplan.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <time.h>
+
+#include <map>
+
+#include <qmessagebox.h>
+
+#include "toresultplan.moc"
+
+toResultPlan::toResultPlan(QWidget *parent, const char *name)
+        : toResultView(false, false, parent, name)
+{
+    setSQLName(QString::fromLatin1("toResultPlan"));
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+    Query = NULL;
+    oracleSetup();
+}
+
+static toSQL SQLViewPlan("toResultPlan:ViewPlan",
+                         "SELECT ID,NVL(Parent_ID,0),Operation, Options, Object_Name, Optimizer,cost,\n"
+                         "  io_cost,Bytes,Cardinality,\n"
+                         "  partition_start,partition_stop,temp_space,time\n"
+                         "  FROM %1 WHERE Statement_ID = '%2' ORDER BY NVL(Parent_ID,0),ID",
+                         "Get the contents of a plan table. Observe the %1 and %2 which must be present. Must return same columns");
+
+bool toResultPlan::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn) || toIsMySQL(conn);
+}
+
+toResultPlan::~toResultPlan()
+{
+    delete Query;
+}
+
+void toResultPlan::oracleSetup(void)
+{
+    clear();
+
+    while (columns() > 0)
+    {
+        removeColumn(0);
+    }
+    setAllColumnsShowFocus(true);
+    setSorting( -1);
+    setRootIsDecorated(true);
+    addColumn(QString::fromLatin1("#"));
+    addColumn(tr("Operation"));
+    addColumn(tr("Options"));
+    addColumn(tr("Object name"));
+    addColumn(tr("Mode"));
+    addColumn(tr("Cost"));
+    addColumn(tr("%CPU"));
+    addColumn(tr("Bytes"));
+    addColumn(tr("Rows"));
+    addColumn(tr("TEMP Space"));
+    addColumn(tr("Time"));
+    addColumn(tr("Startpartition"));
+    addColumn(tr("Endpartition"));
+    setColumnAlignment(5, AlignRight);
+    setColumnAlignment(6, AlignRight);
+    setColumnAlignment(7, AlignRight);
+    setColumnAlignment(8, AlignRight);
+    setColumnAlignment(9, AlignRight);
+    setColumnAlignment(10, AlignRight);
+    setColumnAlignment(11, AlignRight);
+    setColumnAlignment(12, AlignRight);
+}
+
+void toResultPlan::oracleNext(void)
+{
+    LastTop = NULL;
+    Parents.clear();
+    Last.clear();
+
+    QString chkPoint = toConfigurationSingle::Instance().globalConfig(CONF_PLAN_CHECKPOINT, DEFAULT_PLAN_CHECKPOINT);
+
+    toConnection &conn = connection();
+
+    conn.execute(QString::fromLatin1("SAVEPOINT %1").arg(chkPoint));
+
+    Ident = QString::fromLatin1("TOra ") + QString::number((int)time(NULL) + rand());
+
+    QString planTable = toConfigurationSingle::Instance().globalConfig(CONF_PLAN_TABLE, DEFAULT_PLAN_TABLE);
+
+    QString sql = toShift(Statements);
+    if (sql.isNull())
+    {
+        Poll.stop();
+        return ;
+    }
+    if (sql.length() > 0 && sql.at(sql.length() - 1).latin1() == ';')
+        sql = sql.mid(0, sql.length() - 1);
+
+    QString explain = QString::fromLatin1("EXPLAIN PLAN SET STATEMENT_ID = '%1' INTO %2.%3 FOR %4").
+                      arg(Ident).arg(connection().user()).arg(planTable).arg(toSQLStripSpecifier(sql));
+    if (!User.isNull() && User != conn.user().upper())
+    {
+        try
+        {
+            conn.execute(QString::fromLatin1("ALTER SESSION SET CURRENT_SCHEMA = %1").arg(User));
+            conn.execute(explain);
+        }
+        catch (...)
+        {
+            try
+            {
+                conn.execute(QString::fromLatin1("ALTER SESSION SET CURRENT_SCHEMA = %1").arg(connection().user()));
+            }
+            catch (...)
+            {}
+            throw;
+        }
+        conn.execute(QString::fromLatin1("ALTER SESSION SET CURRENT_SCHEMA = %1").arg(connection().user()));
+        toQList par;
+        Query = new toNoBlockQuery(connection(), toQuery::Normal,
+                                   toSQL::string(SQLViewPlan, connection()).
+                                   arg(toConfigurationSingle::Instance().globalConfig(CONF_PLAN_TABLE, DEFAULT_PLAN_TABLE)).
+                                   arg(Ident), par);
+        Reading = true;
+    }
+    else
+    {
+        Reading = false;
+        toQList par;
+        Query = new toNoBlockQuery(conn, toQuery::Normal, explain, par);
+    }
+    TopItem = new toResultViewItem(this, TopItem, QString::fromLatin1("DML"));
+    TopItem->setText(1, sql);
+    Poll.start(100);
+}
+
+static void StripInto(std::list<toSQLParse::statement> &stats)
+{
+    std::list<toSQLParse::statement> res;
+    bool into = false;
+    bool add
+        = true;
+    for (std::list<toSQLParse::statement>::iterator i = stats.begin();i != stats.end();i++)
+    {
+        if (into)
+        {
+            if (!add
+                    && (*i).String.upper() == QString::fromLatin1("FROM"))
+                add
+                    = true;
+        }
+        else if ((*i).String.upper() == QString::fromLatin1("INTO"))
+        {
+            add
+                = false;
+            into = true;
+        }
+        if (add
+           )
+            res.insert(res.end(), *i);
+    }
+    stats = res;
+}
+
+void toResultPlan::addStatements(std::list<toSQLParse::statement> &stats)
+{
+    for (std::list<toSQLParse::statement>::iterator i = stats.begin();i != stats.end();i++)
+    {
+        if ((*i).Type == toSQLParse::statement::Block)
+            addStatements((*i).subTokens());
+        else if ((*i).Type == toSQLParse::statement::Statement)
+        {
+            if ((*i).subTokens().begin() != (*i).subTokens().end())
+            {
+                QString t = (*((*i).subTokens().begin())).String.upper();
+                if (t == QString::fromLatin1("SELECT"))
+                    StripInto((*i).subTokens());
+
+                if (t == QString::fromLatin1("SELECT") ||
+                        t == QString::fromLatin1("INSERT") ||
+                        t == QString::fromLatin1("UPDATE") ||
+                        t == QString::fromLatin1("DELETE"))
+                    Statements.insert(Statements.end(),
+                                      toSQLParse::indentStatement(*i).stripWhiteSpace());
+            }
+        }
+    }
+}
+
+void toResultPlan::query(const QString &sql,
+                         const toQList &param)
+{
+    if (!handled())
+        return ;
+
+    try
+    {
+        if (!setSQLParams(sql, param))
+            return ;
+
+        if (Query)
+        {
+            delete Query;
+            Query = NULL;
+        }
+        if (connection().provider() == "MySQL")
+        {
+            setRootIsDecorated(false);
+            setSorting(0);
+            toResultView::query(QString::fromLatin1("EXPLAIN ") + toSQLStripBind(sql), param);
+            return ;
+        }
+
+        toQList::iterator cp = ((toQList &)param).begin();
+        if (cp != ((toQList &)param).end())
+            User = *cp;
+        else
+            User = QString::null;
+
+        oracleSetup();
+
+        QString planTable = toConfigurationSingle::Instance().globalConfig(CONF_PLAN_TABLE, DEFAULT_PLAN_TABLE);
+
+        Statements.clear();
+        if (sql.startsWith(QString::fromLatin1("SAVED:")))
+        {
+            Ident = sql.mid(6);
+            toQList par;
+            Query = new toNoBlockQuery(connection(), toQuery::Background,
+                                       toSQL::string(SQLViewPlan, connection()).
+                                       arg(planTable).arg(Ident),
+                                       par);
+            Reading = true;
+            LastTop = NULL;
+            Parents.clear();
+            Last.clear();
+            TopItem = new toResultViewItem(this, NULL, QString::fromLatin1("DML"));
+            TopItem->setText(1, QString::fromLatin1("Saved plan"));
+        }
+        else
+        {
+            TopItem = NULL;
+            std::list<toSQLParse::statement> ret = toSQLParse::parse(sql);
+            addStatements(ret);
+            oracleNext();
+        }
+    }
+    catch (const QString &str)
+    {
+        checkException(str);
+    }
+}
+
+void toResultPlan::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            if (!Reading)
+            {
+                toQList par;
+                delete Query;
+                Query = NULL;
+                Query = new toNoBlockQuery(connection(), toQuery::Normal,
+                                           toSQL::string(SQLViewPlan, connection()).
+                                           arg(toConfigurationSingle::Instance().globalConfig(CONF_PLAN_TABLE, DEFAULT_PLAN_TABLE)).
+                                           arg(Ident), par);
+                Reading = true;
+            }
+            else
+            {
+                while (Query->poll() && !Query->eof())
+                {
+                    QString id = Query->readValueNull();
+                    QString parentid = Query->readValueNull();
+                    QString operation = Query->readValueNull();
+                    QString options = Query->readValueNull();
+                    QString object = Query->readValueNull();
+                    QString optimizer = Query->readValueNull();
+                    QString cost = Query->readValueNull();
+                    QString iocost = Query->readValueNull();
+                    QString bytes = Query->readValueNull().toSIsize();
+                    QString cardinality = Query->readValueNull();
+                    QString startpartition = Query->readValueNull();
+                    QString endpartition = Query->readValueNull();
+                    QString tempspace = Query->readValueNull().toSIsize();
+                    QString time = Query->readValueNull();
+
+                    toResultViewItem *item;
+                    if (parentid && Parents[parentid])
+                    {
+                        item = new toResultViewItem(Parents[parentid], Last[parentid]);
+                        setOpen(Parents[parentid], true);
+                        Last[parentid] = item;
+                    }
+                    else
+                    {
+                        item = new toResultViewItem(TopItem, LastTop);
+                        LastTop = item;
+                    }
+
+                    QString cpupct = NULL;
+
+                    if (!cost.isEmpty()) {
+
+                        double pct = 100;
+
+                        if (cost.toDouble() > 0) {
+                            pct = 100 - (iocost.toDouble() / cost.toDouble() * 100);
+                        }
+
+                        cpupct.setNum(pct, 'f', 2);
+                    }
+
+                    if (!time.isEmpty()) {
+
+                        double seconds = time.toDouble();
+
+                        int hours = (int) (seconds / 3600);
+                        int mins = (int) (( seconds - hours * 3600) / 60);
+                        int secs = (int) seconds - (hours * 3600 + mins * 60);
+
+                        time.sprintf("%d:%02d:%02d", hours, mins, secs);
+                    }
+
+                    item->setText(0, id);
+                    item->setText(1, operation);
+                    item->setText(2, options);
+                    item->setText(3, object);
+                    item->setText(4, optimizer);
+                    item->setText(5, cost);
+                    item->setText(6, cpupct);
+                    item->setText(7, bytes);
+                    item->setText(8, cardinality);
+                    item->setText(9, tempspace);
+                    item->setText(10, time);
+                    item->setText(11, startpartition);
+                    item->setText(12, endpartition);
+                    Parents[id] = item;
+                }
+                if (Query->eof())
+                {
+                    delete Query;
+                    Query = NULL;
+                    QString chkPoint = toConfigurationSingle::Instance().globalConfig(CONF_PLAN_CHECKPOINT, DEFAULT_PLAN_CHECKPOINT);
+                    if (!sql().startsWith(QString::fromLatin1("SAVED:")))
+                    {
+                        if (toConfigurationSingle::Instance().globalConfig(CONF_KEEP_PLANS, "").isEmpty())
+                            connection().execute(QString::fromLatin1("ROLLBACK TO SAVEPOINT %1").arg(chkPoint));
+                        else
+                            toMainWidget()->setNeedCommit(connection());
+                    }
+                    oracleNext();
+                }
+            }
+        }
+    }
+    catch (const QString &str)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        checkException(str);
+    }
+}
+
+void toResultPlan::checkException(const QString &str)
+{
+    try
+    {
+        if (str.startsWith(QString::fromLatin1("ORA-02404")))
+        {
+            QString planTable = toConfigurationSingle::Instance().globalConfig(CONF_PLAN_TABLE, DEFAULT_PLAN_TABLE);
+            int ret = TOMessageBox::warning(this,
+                                            tr("Plan table doesn't exist"),
+                                            tr("Specified plan table %1 didn't exist.\n"
+                                               "Should TOra try to create it?").arg(planTable),
+                                            tr("&Yes"), tr("&No"), QString::null, 0, 1);
+            if (ret == 0)
+            {
+                connection().execute(toSQL::string(toSQL::TOSQL_CREATEPLAN,
+                                                   connection()).arg(planTable));
+                QString t = sql();
+                setSQL(QString::null);
+                query(t, params());
+            }
+        }
+        else
+            toStatusMessage(str);
+    }
+    TOCATCH
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultplan.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultplan.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultplan.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,104 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTPLAN_H
+#define TORESULTPLAN_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "tosqlparse.h"
+#include "toresultview.h"
+
+#include <map>
+#include <stdio.h>
+
+class toNoBlockQuery;
+
+/** This widget displays the execution plan of a statement. The statement
+ * is identified by the first parameter which should be the address as gotten
+ * from the @ref toSQLToAddress function.
+ */
+
+class toResultPlan : public toResultView
+{
+    Q_OBJECT
+
+    QString Ident;
+    std::map <QString, QListViewItem *> Parents;
+    std::map <QString, QListViewItem *> Last;
+    std::list<QString> Statements;
+    QListViewItem *TopItem;
+    QListViewItem *LastTop;
+    bool Reading;
+    toNoBlockQuery *Query;
+    toBackground Poll;
+    QString User;
+    void checkException(const QString &);
+    void oracleSetup(void);
+
+    void oracleNext(void);
+    void addStatements(std::list<toSQLParse::statement> &stats);
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultPlan(QWidget *parent, const char *name = NULL);
+
+    /** Destruct object
+     */
+    ~toResultPlan();
+
+    /** Reimplemented for internal reasons. If you prepend "SAVED:" a saved plan is read
+     * with the identified_by set to the string following the initial "SAVED:" string.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+    /** Reimplemented for internal reasons.
+     */
+    void query(const QString &sql)
+    {
+        toQList p;
+        query(sql, p);
+    }
+    /** Support Oracle
+     */
+    virtual bool canHandle(toConnection &conn);
+private slots:
+    void poll();
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultreferences.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultreferences.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultreferences.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,228 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultreferences.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include "toresultreferences.moc"
+
+toResultReferences::toResultReferences(QWidget *parent, const char *name)
+        : toResultView(false, false, parent, name)
+{
+    setReadAll(true);
+    addColumn(tr("Owner"));
+    addColumn(tr("Object"));
+    addColumn(tr("Constraint"));
+    addColumn(tr("Condition"));
+    addColumn(tr("Enabled"));
+    addColumn(tr("Delete Rule"));
+    setSQLName(QString::fromLatin1("toResultReferences"));
+
+    Query = NULL;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+toResultReferences::~toResultReferences()
+{
+    delete Query;
+}
+
+static toSQL SQLConsColumns("toResultReferences:ForeignColumns",
+                            "SELECT Column_Name FROM sys.All_Cons_Columns\n"
+                            " WHERE Owner = :f1<char[101]> AND Constraint_Name = :f2<char[101]>\n"
+                            " ORDER BY Position",
+                            "Get columns of foreign constraint, must return same number of cols");
+
+QString toResultReferences::constraintCols(const QString &conOwner, const QString &conName)
+{
+    toQuery query(connection(), SQLConsColumns, conOwner, conName);
+
+    QString ret;
+    while (!query.eof())
+    {
+        QString value = query.readValue();
+        if (!ret.isEmpty())
+            ret.append(QString::fromLatin1(","));
+        ret.append(value);
+    }
+    return ret;
+}
+
+static toSQL SQLConstraints("toResultReferences:References",
+                            "SELECT Owner,\n"
+                            "       Table_Name,\n"
+                            "       Constraint_Name,\n"
+                            "       R_Owner,\n"
+                            "       R_Constraint_Name,\n"
+                            "       Status,\n"
+                            "       Delete_Rule\n"
+                            "  FROM sys.all_constraints a\n"
+                            " WHERE constraint_type = 'R'\n"
+                            "   AND (r_owner,r_constraint_name) IN (SELECT b.owner,b.constraint_name\n"
+                            "                                         FROM sys.all_constraints b\n"
+                            "                                        WHERE b.OWNER = :owner<char[101]>\n"
+                            "                                          AND b.TABLE_NAME = :tab<char[101]>)\n"
+                            " ORDER BY Constraint_Name",
+                            "List the references from foreign constraints to specified table, must return same columns");
+static toSQL SQLDependencies("toResultReferences:Dependencies",
+                             "SELECT owner,name,type||' '||dependency_type\n"
+                             "  FROM sys.all_dependencies\n"
+                             " WHERE referenced_owner = :owner<char[101]>\n"
+                             "   AND referenced_name = :tab<char[101]>\n"
+                             " ORDER BY owner,type,name",
+                             "List the dependencies from other objects to this object, must return same number of columns",
+                             "0800");
+static toSQL SQLDependencies7("toResultReferences:Dependencies",
+                              "SELECT owner,name,type\n"
+                              "  FROM sys.all_dependencies\n"
+                              " WHERE referenced_owner = :owner<char[101]>\n"
+                              "   AND referenced_name = :tab<char[101]>\n"
+                              " ORDER BY owner,type,name",
+                              "",
+                              "0703");
+
+void toResultReferences::query(const QString &, const toQList &param)
+{
+    if (!handled())
+        return ;
+
+    toQList::iterator cp = ((toQList &)param).begin();
+    if (cp != ((toQList &)param).end())
+        Owner = *cp;
+    cp++;
+    if (cp != ((toQList &)param).end())
+        TableName = (*cp);
+
+    if (Query)
+    {
+        delete Query;
+        Query = NULL;
+    }
+
+    clear();
+
+    try
+    {
+        toQList par;
+        par.insert(par.end(), Owner);
+        par.insert(par.end(), TableName);
+        Query = new toNoBlockQuery(connection(), toQuery::Background,
+                                   toSQL::string(SQLConstraints, connection()), par);
+        Dependencies = false;
+        LastItem = NULL;
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+void toResultReferences::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            if (!Dependencies)
+            {
+                while (Query->poll() && !Query->eof())
+                {
+                    LastItem = new toResultViewItem(this, LastItem, QString::null);
+
+                    QString consOwner(Query->readValue());
+                    LastItem->setText(1, Query->readValue());
+                    QString consName(Query->readValue());
+                    QString colNames(constraintCols(Owner, consName));
+                    LastItem->setText(0, consOwner);
+                    LastItem->setText(2, consName);
+                    QString rConsOwner(Query->readValue());
+                    QString rConsName(Query->readValue());
+                    LastItem->setText(4, Query->readValue());
+                    QString Condition;
+
+                    Condition = tr("foreign key (%1) references %2.%3(%4)").
+                                arg(colNames).arg(rConsOwner).arg(TableName).arg(constraintCols(rConsOwner, rConsName));
+
+                    LastItem->setText(3, Condition);
+                    LastItem->setText(5, Query->readValue());
+                }
+                if (Query->eof())
+                {
+                    delete Query;
+                    Query = NULL;
+                    toQList par;
+                    par.insert(par.end(), Owner);
+                    par.insert(par.end(), TableName);
+                    Query = new toNoBlockQuery(connection(), toQuery::Background,
+                                               toSQL::string(SQLDependencies, connection()),
+                                               par);
+                    Dependencies = true;
+                }
+            }
+            else
+            {
+                while (Query->poll() && !Query->eof())
+                {
+                    LastItem = new QListViewItem(this, LastItem, QString::null);
+                    LastItem->setText(0, Query->readValue());
+                    LastItem->setText(1, Query->readValue());
+                    LastItem->setText(3, Query->readValue());
+                    LastItem->setText(4, tr("DEPENDENCY"));
+                }
+                if (Query->eof())
+                {
+                    delete Query;
+                    Query = NULL;
+                    Poll.stop();
+                }
+            }
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultreferences.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultreferences.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultreferences.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,91 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTREFERENCES_H
+#define TORESULTREFERENCES_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+/** This widget displays information about other tables that references this one.
+ * The table is specified by the first and second parameter in the query. The sql is not
+ * used in the query.
+ */
+
+class toResultReferences : public toResultView
+{
+    Q_OBJECT
+
+    QString Owner;
+    QString TableName;
+    bool Dependencies;
+    toBackground Poll;
+    toNoBlockQuery *Query;
+    QListViewItem *LastItem;
+
+    /** Get columns for a constraints.
+     * @param conOwner Owner of constraint.
+     * @param conName Name of constraint.
+     * @return String with column names separated by a ',' character.
+     */
+    QString constraintCols(const QString &conOwner, const QString &conName);
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultReferences(QWidget *parent, const char *name = NULL);
+    /** Destruct object
+     */
+    ~toResultReferences();
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+    /** Support Oracle
+     */
+    virtual bool canHandle(toConnection &conn)
+    {
+        return toIsOracle(conn);
+    }
+private slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultresources.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultresources.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultresources.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,62 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTRESOURCES_H
+#define TORESULTRESOURCES_H
+
+#include "config.h"
+#include "toresultitem.h"
+#include "tosql.h"
+
+#define TOSQL_RESULTRESOURCE
+
+/** This widget displays information about resources of a query. The statement
+ * is identified by the first parameter which should be the address as gotten
+ * from the @ref toSQLToAddress function.
+ */
+
+class toResultResources : public toResultItem
+{
+public:
+    /** Create the widget.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultResources(QWidget *parent, const char *name = NULL); // Implemented in toresultitem.cpp
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultstats.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultstats.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultstats.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,344 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultstats.h"
+#include "tosql.h"
+
+#include "toresultstats.moc"
+
+toResultStats::toResultStats(bool onlyChanged, int ses, QWidget *parent,
+                             const char *name)
+        : toResultView(false, false, parent, name), OnlyChanged(onlyChanged)
+{
+    if (!handled())
+        return ;
+
+    SessionID = ses;
+    setSQLName(QString::fromLatin1("toResultStats"));
+    System = false;
+    setup();
+}
+
+bool toResultStats::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn);
+}
+
+toResultStats::~toResultStats()
+{
+    delete Query;
+    delete SessionIO;
+}
+
+static toSQL SQLSession("toResultStats:Session",
+                        "SELECT MIN(SID) FROM V$MYSTAT",
+                        "Get session id of current session");
+
+toResultStats::toResultStats(bool onlyChanged, QWidget *parent,
+                             const char *name)
+        : toResultView(false, false, parent, name), OnlyChanged(onlyChanged)
+{
+    if (!handled())
+        return ;
+
+    try
+    {
+        toQuery query(connection(), SQLSession);
+        SessionID = query.readValue().toInt();
+    }
+    catch (...)
+    {
+        SessionID = -1;
+    }
+    System = false;
+
+    setup();
+}
+
+toResultStats::toResultStats(QWidget *parent, const char *name)
+        : toResultView(false, false, parent, name), OnlyChanged(false)
+{
+    if (!handled())
+        return ;
+
+    System = true;
+    setup();
+}
+
+void toResultStats::setup(void)
+{
+    for (int i = 0;i < TO_STAT_MAX;i++)
+        LastValues[i] = 0;
+
+    addColumn(tr("Name"));
+    if (!OnlyChanged)
+        addColumn(tr("Value"));
+    addColumn(tr("Delta"));
+    setSorting(0);
+
+    setColumnAlignment(1, AlignRight);
+    setColumnAlignment(2, AlignRight);
+
+    Query = SessionIO = NULL;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+static toSQL SQLStatistics("toResultStats:Statistics",
+                           "SELECT Statistic#,Value FROM V$SesStat WHERE SID = :f1<int>",
+                           "Get statistics for session, must have same number of columns");
+static toSQL SQLSessionIO("toResultStats:SessionIO",
+                          "SELECT Block_Gets \"block gets\",\n"
+                          "       Block_Changes \"block changes\",\n"
+                          "       Consistent_Changes \"consistent changes\"\n"
+                          "  FROM v$sess_io\n"
+                          " WHERE SID = :f1<int>",
+                          "Get session IO, must have same binds");
+static toSQL SQLSystemStatistics("toResultStats:SystemStatistics",
+                                 "SELECT Statistic#,Value FROM v$sysstat",
+                                 "Get system statistics, must have same number of columns");
+
+void toResultStats::resetStats(void)
+{
+    if (!handled())
+        return ;
+
+    toBusy busy;
+    try
+    {
+        toConnection &conn = connection();
+        toQList args;
+        if (!System)
+            args.insert(args.end(), SessionID);
+        toQuery query(conn, System ? SQLSystemStatistics : SQLStatistics, args);
+        while (!query.eof())
+        {
+            int id;
+            double value;
+            id = query.readValue().toInt();
+            value = query.readValue().toDouble();
+            id += TO_STAT_BLOCKS;
+            if (id < TO_STAT_MAX + TO_STAT_BLOCKS)
+                LastValues[id] = value;
+        }
+        if (!System)
+        {
+            toQuery queryio(conn, SQLSessionIO, args);
+            int id = 0;
+            while (!queryio.eof())
+            {
+                double value;
+                value = queryio.readValue().toDouble();
+                LastValues[id] = value;
+                id++;
+            }
+        }
+    }
+    TOCATCH
+}
+
+void toResultStats::changeSession(toQuery &query)
+{
+    if (!handled())
+        return ;
+
+    if (System)
+        throw tr("Can't change session on system statistics");
+    try
+    {
+        toQList args;
+        query.execute(SQLSession, args);
+        SessionID = query.readValue().toInt();
+        emit sessionChanged(SessionID);
+        emit sessionChanged(QString::number(SessionID));
+        resetStats();
+        refreshStats(true);
+    }
+    TOCATCH
+}
+
+void toResultStats::changeSession(int ses)
+{
+    if (!handled())
+        return ;
+
+    if (System)
+        throw tr("Can't change session on system statistics");
+    if (SessionID != ses)
+    {
+        SessionID = ses;
+        emit sessionChanged(SessionID);
+        emit sessionChanged(QString::number(SessionID));
+        resetStats();
+    }
+    refreshStats();
+}
+
+static toSQL SQLStatisticName("toResultStats:StatisticName",
+                              "SELECT b.Name,a.Statistic#,a.Value\n"
+                              "  FROM V$SesStat a,V$StatName b\n"
+                              " WHERE a.SID = :f1<int> AND a.statistic# = b.statistic#\n",
+                              "Get statistics and their names for session, must have same number of columns");
+static toSQL SQLSystemStatisticName("toResultStats:SystemStatisticName",
+                                    "SELECT Name,Statistic#,Value\n"
+                                    "  FROM v$sysstat\n",
+                                    "Get statistics and their names for system statistics, must have same number of columns");
+
+void toResultStats::addValue(bool reset, int id, const QString &name, double value)
+{
+    QString delta;
+    QString absVal;
+
+    if (value != 0)
+    {
+        absVal.sprintf("%.15g", value);
+        if (id < TO_STAT_MAX + TO_STAT_BLOCKS)
+        {
+            delta.sprintf("%.15g", value - LastValues[id]);
+            if (value != LastValues[id] || !OnlyChanged)
+            {
+                toResultViewItem *item = new toResultViewItem(this, NULL);
+                if (reset)
+                    LastValues[id] = value;
+                item->setText(0, name);
+                if (OnlyChanged)
+                    item->setText(1, delta);
+                else
+                {
+                    item->setText(1, absVal);
+                    item->setText(2, delta);
+                }
+                item->setText(3, QString::number(++Row));
+            }
+        }
+    }
+}
+
+void toResultStats::refreshStats(bool reset)
+{
+    if (!handled() || Query || SessionIO)
+        return ;
+
+    try
+    {
+        clear();
+        Row = 0;
+        toConnection &conn = connection();
+        toQList args;
+        if (!System)
+            args.insert(args.end(), SessionID);
+        Query = new toNoBlockQuery(conn,
+                                   toQuery::Background,
+                                   toSQL::string(System ? SQLSystemStatisticName : SQLStatisticName,
+                                                 connection()),
+                                   args);
+        if (!System)
+            SessionIO = new toNoBlockQuery(conn, toQuery::Background,
+                                           toSQL::string(SQLSessionIO, connection()),
+                                           args);
+        Poll.start(100);
+        Reset = reset;
+
+    }
+    TOCATCH
+}
+
+void toResultStats::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        bool done = true;
+
+        if (Query && Query->poll())
+        {
+            while (Query->poll() && !Query->eof())
+            {
+                QString name = Query->readValue();
+                int id = Query->readValue().toInt();
+                double value = Query->readValue().toDouble();
+                addValue(Reset, id, name, value);
+            }
+
+            if (Query->eof())
+            {
+                delete Query;
+                Query = NULL;
+            }
+            else
+                done = false;
+        }
+        else if (Query)
+            done = false;
+
+        if (SessionIO && SessionIO->poll())
+        {
+            int id = 0;
+            toQDescList description = SessionIO->describe();
+            toQDescList::iterator i = description.begin();
+            while (!SessionIO->eof())
+            {
+                addValue(Reset, id, (*i).Name, SessionIO->readValue().toDouble());
+                id++;
+                if (i == description.end())
+                    i = description.begin();
+                else
+                    i++;
+            }
+            delete SessionIO;
+            SessionIO = NULL;
+        }
+        else if (SessionIO)
+            done = false;
+
+        if (done)
+            Poll.stop();
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        delete SessionIO;
+        SessionIO = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultstats.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultstats.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultstats.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,140 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTSTATS_H
+#define TORESULTSTATS_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toresultview.h"
+
+class toNoBlockQuery;
+
+#define TO_STAT_BLOCKS 10
+#define TO_STAT_MAX 500
+
+/** This widget will displays information about statistics in either a database or a session.
+ */
+
+class toResultStats : public toResultView
+{
+    Q_OBJECT
+    /** Session ID to get statistics for.
+     */
+    int SessionID;
+    /** Number of rows of statistics
+     */
+    int Row;
+    /** Get information about if only changed items are to be displayed.
+     */
+    bool OnlyChanged;
+    /** Display system statistics.
+     */
+    bool System;
+    /** Last read values, used to calculate delta values.
+     */
+    double LastValues[TO_STAT_MAX + TO_STAT_BLOCKS];
+
+    bool Reset;
+    toNoBlockQuery *Query;
+    toNoBlockQuery *SessionIO;
+    toBackground Poll;
+
+    /** Setup widget.
+     */
+    void setup();
+    /** Add value
+     */
+    void addValue(bool reset, int id, const QString &name, double value);
+public:
+    /** Create statistics widget for session statistics.
+     * @param OnlyChanged Only display changed items.
+     * @param ses Session ID to display info about.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultStats(bool OnlyChanged, int ses, QWidget *parent, const char *name = NULL);
+    /** Create statistics widget for the current session statistics.
+     * @param OnlyChanged Only display changed items.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultStats(bool OnlyChanged, QWidget *parent, const char *name = NULL);
+    /** Create statistics widget for the current database statistics.
+     * @param parent Parent widget.
+     * @param name Name of widget.
+     */
+    toResultStats(QWidget *parent, const char *name = NULL);
+
+    /** Destroy object.
+     */
+    ~toResultStats();
+
+    /** Reset statistics. Read in last values without updating widget data.
+     */
+    void resetStats(void);
+    /** Change the session that the current query will run on.
+     * @param query Query to check connection for.
+     */
+    void changeSession(toQuery &conn);
+    /** Change session to specified id.
+     * @param ses Session ID to change to.
+     */
+    void changeSession(int ses);
+    /** Support Oracle
+     */
+    virtual bool canHandle(toConnection &conn);
+signals:
+    /** Emitted when session is changed.
+     * @param ses New session ID.
+     */
+    void sessionChanged(int ses);
+    /** Emitted when session is changed.
+     * @param ses New session ID as string.
+     */
+    void sessionChanged(const QString &);
+public slots:
+    /** Update the statistics.
+     * @param reset Set delta to current values. This means that the next time this widget
+     *              is updated the delta will be from the new values.
+     */
+    void refreshStats(bool reset = true);
+private slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultstorage.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultstorage.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultstorage.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1024 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "toresultlong.h"
+#include "toresultstorage.h"
+#include "tosql.h"
+#include "totool.h"
+
+#include <qheader.h>
+#include <qpainter.h>
+
+#include "toresultstorage.moc"
+
+class toResultStorageItem : public toResultViewItem
+{
+    bool AvailableGraph;
+public:
+    toResultStorageItem(bool available, QListView *parent, QListViewItem *after,
+                        const QString &buf = QString::null)
+            : toResultViewItem(parent, after, buf), AvailableGraph(available)
+    { }
+    toResultStorageItem(bool available, QListViewItem *parent, QListViewItem *after,
+                        const QString &buf = QString::null)
+            : toResultViewItem(parent, after, buf), AvailableGraph(available)
+    { }
+    virtual void paintCell(QPainter * p, const QColorGroup & cg, int column, int width, int align)
+    {
+        if (column == 8)
+        {
+            QString ct = text(column);
+            if (ct.isEmpty())
+            {
+                QListViewItem::paintCell(p, cg, column, width, align);
+                return ;
+            }
+            ct = ct.left(ct.length() - 1); // Strip last %
+            double total = text(7).toDouble();
+            double user = text(5).toDouble();
+            double free = text(6).toDouble();
+            if (total < user || !AvailableGraph)
+                total = user;
+
+            QString t;
+
+            user /= total;
+            free /= total;
+            if (AvailableGraph)
+                t.sprintf("%0.1f / %0.1f %%", free*100, (total - user) / total*100);
+            else
+                t.sprintf("%0.1f %%", free*100);
+            p->fillRect(0, 0, int((user - free)*width), height(),
+                        QBrush(red));
+            p->fillRect(int((user - free)*width), 0, int(user*width), height(),
+                        QBrush(blue));
+            if (AvailableGraph)
+                p->fillRect(int(user*width), 0, width, height(),
+                            QBrush(green));
+
+            QPen pen(white);
+            p->setPen(pen);
+            p->drawText(0, 0, width, height(), AlignCenter, t);
+        }
+        else if (column == 9)
+        {
+            QString ct = text(column);
+            if (ct.isEmpty())
+            {
+                QListViewItem::paintCell(p, cg, column, width, align);
+                return ;
+            }
+            ct = ct.left(ct.length() - 1); // Strip last %
+            double val = ct.toDouble();
+
+            p->fillRect(0, 0, int(val*width / 100), height(), QBrush(blue));
+            p->fillRect(int(val*width / 100), 0, width, height(),
+                        QBrush(isSelected() ? cg.highlight() : cg.base()));
+
+            QPen pen(isSelected() ? cg.highlightedText() : cg.foreground());
+            p->setPen(pen);
+            p->drawText(0, 0, width, height(), AlignCenter, text(column));
+        }
+        else
+        {
+            QListViewItem::paintCell(p, cg, column, width, align);
+        }
+    }
+};
+
+bool toResultStorage::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn);
+}
+
+toResultStorage::toResultStorage(bool available, QWidget *parent, const char *name)
+        : toResultView(false, false, parent, name), AvailableGraph(available)
+{
+    Unit = toConfigurationSingle::Instance().globalConfig(CONF_SIZE_UNIT, DEFAULT_SIZE_UNIT);
+    setAllColumnsShowFocus(true);
+    setSorting(0);
+    setRootIsDecorated(true);
+    addColumn(tr("Name"));
+    addColumn(tr("Status"));
+    addColumn(tr("Information"));
+    addColumn(tr("Contents"));
+    addColumn(tr("Logging"));
+    addColumn(tr("Size (%1)").arg(Unit));
+    addColumn(tr("Free (%1)").arg(Unit));
+    addColumn(tr("Autoextend (%1)").arg(Unit));
+    if (available)
+        addColumn(tr("Used/Free/Autoextend"));
+    else
+        addColumn(tr("Available"));
+    addColumn(tr("Coalesced"));
+    addColumn(tr("Max free (%1)").arg(Unit));
+    addColumn(tr("Free fragments"));
+    setSQLName(tr("toResultStorage"));
+
+    setColumnAlignment(5, AlignRight);
+    setColumnAlignment(6, AlignRight);
+    setColumnAlignment(7, AlignRight);
+    setColumnAlignment(8, AlignCenter);
+    setColumnAlignment(9, AlignCenter);
+    setColumnAlignment(10, AlignRight);
+    setColumnAlignment(11, AlignRight);
+
+    ShowCoalesced = false;
+    OnlyFiles = false;
+
+    Tablespaces = Files = NULL;
+
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+toResultStorage::~toResultStorage()
+{
+    delete Tablespaces;
+    delete Files;
+}
+
+static toSQL SQLShowCoalesced("toResultStorage:ShowCoalesced",
+                              "SELECT d.tablespace_name, \n"
+                              "       d.status,\n"
+                              "       d.extent_management,\n"
+                              "       d.contents,\n"
+                              "       d.logging,\n"
+                              "       TO_CHAR(ROUND(NVL(a.bytes / b.unit, 0),2)),\n"
+                              "       TO_CHAR(ROUND(NVL(f.bytes,0) / b.unit,2)), \n"
+                              "       TO_CHAR(ROUND(NVL(a.maxbytes / b.unit, 0),2)),\n"
+                              "       '-',\n"
+                              "       TO_CHAR(ROUND(f.percent_extents_coalesced,1))||'%',\n"
+                              "       '-',\n"
+                              "       TO_CHAR(f.total_extents)\n"
+                              "  FROM sys.dba_tablespaces d,\n"
+                              "       (select tablespace_name, sum(bytes) bytes, sum(maxbytes) maxbytes from sys.dba_data_files group by tablespace_name) a,\n"
+                              "       (select tablespace_name, total_bytes bytes, total_extents, percent_extents_coalesced from sys.dba_free_space_coalesced) f,\n"
+                              "       (select :unt<int> unit from sys.dual) b\n"
+                              " WHERE d.tablespace_name = a.tablespace_name(+)\n"
+                              "   AND d.tablespace_name = f.tablespace_name(+)\n"
+                              "   AND NOT (d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')\n"
+                              " UNION ALL\n"
+                              "SELECT d.tablespace_name, \n"
+                              "       d.status,\n"
+                              "       d.extent_management,\n"
+                              "       d.contents,\n"
+                              "       d.logging,\n"
+                              "       TO_CHAR(ROUND(NVL(a.bytes / b.unit, 0),2)),\n"
+                              "       TO_CHAR(ROUND(NVL(f.bytes,0) / b.unit,2)),\n"
+                              "       TO_CHAR(ROUND(NVL(a.maxbytes / b.unit, 0),2)),\n"
+                              "       '-',\n"
+                              "       '-',\n"
+                              "       TO_CHAR(ROUND(NVL(f.maxbytes,0) / b.unit,2)), \n"
+                              "       TO_CHAR(f.total_extents)\n"
+                              "  FROM sys.dba_tablespaces d,\n"
+                              "       (select tablespace_name, sum(bytes) bytes, sum(maxbytes) maxbytes from sys.dba_temp_files group by tablespace_name) a,\n"
+                              "       (select tablespace_name, nvl(sum(bytes_cached),0) bytes, count(1) total_extents,nvl(max(bytes_cached),0) maxbytes from v$temp_extent_pool group by tablespace_name) f,\n"
+                              "       (select :unt<int> unit from sys.dual) b\n"
+                              " WHERE d.tablespace_name = a.tablespace_name(+)\n"
+                              "   AND d.tablespace_name = f.tablespace_name(+)\n"
+                              "   AND d.extent_management = 'LOCAL'\n"
+                              "   AND d.contents = 'TEMPORARY'",
+                              "Display storage usage of database. This includes the coalesced columns which may make the query sluggish on some DB:s. "
+                              "All columns must be present in output (Should be 12)",
+                              "0801");
+
+static toSQL SQLShowCoalesced8("toResultStorage:ShowCoalesced",
+                               "SELECT d.tablespace_name, \n"
+                               "       d.status,\n"
+                               "       ' ',\n"
+                               "       d.contents,\n"
+                               "       d.logging,\n"
+                               "       TO_CHAR(ROUND(NVL(a.bytes / b.unit, 0),2)),\n"
+                               "       TO_CHAR(ROUND(NVL(f.bytes,0) / b.unit,2)), \n"
+                               "       TO_CHAR(ROUND(NVL(a.maxbytes / b.unit, 0),2)),\n"
+                               "       '-',\n"
+                               "       TO_CHAR(ROUND(f.percent_extents_coalesced,1))||'%',\n"
+                               "       '-',\n"
+                               "       TO_CHAR(f.total_extents)\n"
+                               "  FROM sys.dba_tablespaces d,\n"
+                               "       (select tablespace_name, sum(bytes) bytes, sum(maxbytes) maxbytes from sys.dba_data_files group by tablespace_name) a,\n"
+                               "       (select tablespace_name, total_bytes bytes, total_extents, percent_extents_coalesced from sys.dba_free_space_coalesced) f,\n"
+                               "       (select :unt<int> unit from sys.dual) b\n"
+                               " WHERE d.tablespace_name = a.tablespace_name(+)\n"
+                               "   AND d.tablespace_name = f.tablespace_name(+)\n"
+                               " ORDER BY d.tablespace_name",
+                               "",
+                               "0800");
+
+static toSQL SQLShowCoalesced7("toResultStorage:ShowCoalesced",
+                               "SELECT d.tablespace_name, \n"
+                               "       d.status,\n"
+                               "       ' ',\n"
+                               "       d.contents,\n"
+                               "       'N/A',\n"
+                               "       TO_CHAR(ROUND(NVL(a.bytes / b.unit, 0),2)),\n"
+                               "       TO_CHAR(ROUND(NVL(f.bytes,0) / b.unit,2)), \n"
+                               "       '-',\n"
+                               "       '-',\n"
+                               "       TO_CHAR(ROUND(f.percent_extents_coalesced,1))||'%',\n"
+                               "       '-',\n"
+                               "       TO_CHAR(f.total_extents)\n"
+                               "  FROM sys.dba_tablespaces d,\n"
+                               "       (select tablespace_name, sum(bytes) bytes from sys.dba_data_files group by tablespace_name) a,\n"
+                               "       (select tablespace_name, total_bytes bytes, total_extents, percent_extents_coalesced from sys.dba_free_space_coalesced) f,\n"
+                               "       (select :unt<int> unit from sys.dual) b\n"
+                               " WHERE d.tablespace_name = a.tablespace_name(+)\n"
+                               "   AND d.tablespace_name = f.tablespace_name(+)\n"
+                               " ORDER BY d.tablespace_name",
+                               "",
+                               "0703");
+
+static toSQL SQLNoShowCoalesced("toResultStorage:NoCoalesced",
+                                "SELECT d.tablespace_name, \n"
+                                "       d.status,\n"
+                                "       d.extent_management,\n"
+                                "       d.contents,\n"
+                                "       d.logging,\n"
+                                "       TO_CHAR(ROUND(NVL(a.bytes / b.unit, 0),2)),\n"
+                                "       TO_CHAR(ROUND(NVL(f.bytes,0) / b.unit,2)), \n"
+                                "       TO_CHAR(ROUND(NVL(a.maxbytes / b.unit, 0),2)),\n"
+                                "       '-',\n"
+                                "       '-',\n"
+                                "       TO_CHAR(ROUND(NVL(f.maxbytes,0) / b.unit,2)), \n"
+                                "       TO_CHAR(f.total_extents)\n"
+                                "  FROM sys.dba_tablespaces d,\n"
+                                "       (select tablespace_name, sum(bytes) bytes, sum(maxbytes) maxbytes from sys.dba_data_files group by tablespace_name) a,\n"
+                                "       (select tablespace_name, NVL(sum(bytes),0) bytes, count(1) total_extents, NVL(max(bytes),0) maxbytes from sys.dba_free_space group by tablespace_name) f,\n"
+                                "       (select :unt<int> unit from sys.dual) b\n"
+                                " WHERE d.tablespace_name = a.tablespace_name(+)\n"
+                                "   AND d.tablespace_name = f.tablespace_name(+)\n"
+                                "   AND NOT (d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')\n"
+                                " UNION ALL\n"
+                                "SELECT d.tablespace_name, \n"
+                                "       d.status,\n"
+                                "       d.extent_management,\n"
+                                "       d.contents,\n"
+                                "       d.logging,\n"
+                                "       TO_CHAR(ROUND(NVL(a.bytes / b.unit, 0),2)),\n"
+                                "       TO_CHAR(ROUND(NVL(f.bytes,0) / b.unit,2)),\n"
+                                "       TO_CHAR(ROUND(NVL(a.maxbytes / b.unit, 0),2)),\n"
+                                "       '-',\n"
+                                "       '-',\n"
+                                "       TO_CHAR(ROUND(NVL(f.maxbytes,0) / b.unit,2)), \n"
+                                "       TO_CHAR(f.total_extents)\n"
+                                "  FROM sys.dba_tablespaces d,\n"
+                                "       (select tablespace_name, sum(bytes) bytes, sum(maxbytes) maxbytes from sys.dba_temp_files group by tablespace_name) a,\n"
+                                "       (select tablespace_name, NVL(sum(bytes_cached),0) bytes, count(1) total_extents, NVL(max(bytes_cached),0) maxbytes from v$temp_extent_pool group by tablespace_name) f,\n"
+                                "       (select :unt<int> unit from sys.dual) b\n"
+                                " WHERE d.tablespace_name = a.tablespace_name(+)\n"
+                                "   AND d.tablespace_name = f.tablespace_name(+)\n"
+                                "   AND d.extent_management = 'LOCAL'\n"
+                                "   AND d.contents = 'TEMPORARY'",
+                                "Display storage usage of database. This does not include the coalesced columns which may make the query sluggish on some DB:s. "
+                                "All columns must be present in output (Should be 12)",
+                                "0801");
+
+static toSQL SQLNoShowCoalesced8("toResultStorage:NoCoalesced",
+                                 "SELECT d.tablespace_name, \n"
+                                 "       d.status,\n"
+                                 "       ' ',\n"
+                                 "       d.contents,\n"
+                                 "       d.logging,\n"
+                                 "       TO_CHAR(ROUND(NVL(a.bytes / b.unit, 0),2)),\n"
+                                 "       TO_CHAR(ROUND(NVL(f.bytes,0) / b.unit,2)), \n"
+                                 "       TO_CHAR(ROUND(NVL(a.maxbytes / b.unit, 0),2)),\n"
+                                 "       '-',\n"
+                                 "       '-',\n"
+                                 "       TO_CHAR(ROUND(NVL(f.maxbytes,0) / b.unit,2)), \n"
+                                 "       TO_CHAR(f.total_extents)\n"
+                                 "  FROM sys.dba_tablespaces d,\n"
+                                 "       (select tablespace_name, sum(bytes) bytes, sum(maxbytes) maxbytes from sys.dba_data_files group by tablespace_name) a,\n"
+                                 "       (select tablespace_name, NVL(sum(bytes),0) bytes, count(1) total_extents, NVL(max(bytes),0) maxbytes from sys.dba_free_space group by tablespace_name) f,\n"
+                                 "       (select :unt<int> unit from sys.dual) b\n"
+                                 " WHERE d.tablespace_name = a.tablespace_name(+)\n"
+                                 "   AND d.tablespace_name = f.tablespace_name(+)\n"
+                                 " ORDER BY d.tablespace_name",
+                                 "",
+                                 "0800");
+
+static toSQL SQLNoShowCoalesced7("toResultStorage:NoCoalesced",
+                                 "SELECT d.tablespace_name, \n"
+                                 "       d.status,\n"
+                                 "       ' ',\n"
+                                 "       d.contents,\n"
+                                 "       'N/A',\n"
+                                 "       TO_CHAR(ROUND(NVL(a.bytes / b.unit, 0),2)),\n"
+                                 "       TO_CHAR(ROUND(NVL(f.bytes,0) / b.unit,2)), \n"
+                                 "       '-',\n"
+                                 "       '-',\n"
+                                 "       '-',\n"
+                                 "       TO_CHAR(ROUND(NVL(f.maxbytes,0) / b.unit,2)), \n"
+                                 "       TO_CHAR(f.total_extents)\n"
+                                 "  FROM sys.dba_tablespaces d,\n"
+                                 "       (select tablespace_name, sum(bytes) bytes from sys.dba_data_files group by tablespace_name) a,\n"
+                                 "       (select tablespace_name, NVL(sum(bytes),0) bytes, count(1) total_extents, NVL(max(bytes),0) maxbytes from sys.dba_free_space group by tablespace_name) f,\n"
+                                 "       (select :unt<int> unit from sys.dual) b\n"
+                                 " WHERE d.tablespace_name = a.tablespace_name(+)\n"
+                                 "   AND d.tablespace_name = f.tablespace_name(+)\n"
+                                 " ORDER BY d.tablespace_name",
+                                 "",
+                                 "0703");
+
+static toSQL SQLDatafile("toResultStorage:Datafile",
+                         "SELECT d.tablespace_name,\n"
+                         "       v.name,\n"
+                         "       v.status,\n"
+                         "       v.enabled,\n"
+                         "         ' ',\n"
+                         "         ' ',\n"
+                         "       to_char(round(d.bytes/b.unit,2)),\n"
+                         "       to_char(round(s.bytes/b.unit,2)),\n"
+                         "       to_char(round(d.maxbytes/b.unit,2)),\n"
+                         "       '-',\n"
+                         "       ' ',\n"
+                         "       to_char(round(s.maxbytes/b.unit,2)),\n"
+                         "       to_char(s.num),\n"
+                         "       NULL,\n" // Used to fill in tablespace name
+                         "       v.file#\n"
+                         "  FROM sys.dba_data_files d,\n"
+                         "       v$datafile v,\n"
+                         "       (SELECT file_id, NVL(SUM(bytes),0) bytes, COUNT(1) num, NVL(MAX(bytes),0) maxbytes FROM sys.dba_free_space  GROUP BY file_id) s,\n"
+                         "       (select :unt<int> unit from sys.dual) b\n"
+                         " WHERE (s.file_id (+)= d.file_id)\n"
+                         "   AND (d.file_name = v.name)\n"
+                         " UNION ALL\n"
+                         "SELECT d.tablespace_name,\n"
+                         "       v.name,\n"
+                         "       v.status,\n"
+                         "       v.enabled,\n"
+                         "       ' ',\n"
+                         "       ' ',\n"
+                         "       to_char(round(d.bytes/b.unit,2)),\n"
+                         "       to_char(round((d.user_bytes-t.bytes_cached)/b.unit,2)),\n"
+                         "       to_char(round(d.maxbytes/b.unit,2)),\n"
+                         "       '-',\n"
+                         "       ' ',\n"
+                         "       ' ',\n"
+                         "       '1',\n"
+                         "       NULL,\n" // Used to fill in tablespace name
+                         "       v.file#\n" // Needed by toStorage to work
+                         "  FROM sys.dba_temp_files d,\n"
+                         "       v$tempfile v,\n"
+                         "       v$temp_extent_pool t,\n"
+                         "       (select :unt<int> unit from sys.dual) b\n"
+                         " WHERE (t.file_id (+)= d.file_id)\n"
+                         "   AND (d.file_id = v.file#)",
+                         "Display information about a datafile in a tablespace. "
+                         "All columns must be present in the output (Should be 14)",
+                         "0801");
+
+static toSQL SQLDatafile8("toResultStorage:Datafile",
+                          "SELECT d.tablespace_name,\n"
+                          "       v.name,\n"
+                          "       v.status,\n"
+                          "       v.enabled,\n"
+                          "       ' ',\n"
+                          "       ' ',\n"
+                          "       to_char(round(d.bytes/b.unit,2)),\n"
+                          "       to_char(round(s.bytes/b.unit,2)),\n"
+                          "       to_char(round(d.maxbytes/b.unit,2)),\n"
+                          "       '-',\n"
+                          "       ' ',\n"
+                          "       to_char(round(s.maxbytes/b.unit,2)),\n"
+                          "       to_char(s.num),\n"
+                          "       NULL,\n"
+                          "       v.file#\n"
+                          "  FROM sys.dba_data_files d,\n"
+                          "       v$datafile v,\n"
+                          "       (SELECT file_id, NVL(SUM(bytes),0) bytes, COUNT(1) num,NVL(MAX(bytes),0) maxbytes FROM sys.dba_free_space  GROUP BY file_id) s,\n"
+                          "       (select :unt<int> unit from sys.dual) b\n"
+                          " WHERE (s.file_id (+)= d.file_id)\n"
+                          "   AND (d.file_name = v.name)",
+                          "",
+                          "0800");
+
+static toSQL SQLDatafile7("toResultStorage:Datafile",
+                          "SELECT  d.tablespace_name,\n"
+                          "    v.name,\n"
+                          "    v.status,\n"
+                          "    v.enabled,\n"
+                          "    ' ',\n"
+                          "    ' ',\n"
+                          "        to_char(round(d.bytes/b.unit,2)),\n"
+                          "        to_char(round(s.bytes/b.unit,2)),\n"
+                          "        '-',\n"
+                          "        '-',\n"
+                          "    ' ',\n"
+                          "        to_char(round(s.maxbytes/b.unit,2)),\n"
+                          "    to_char(s.num),\n"
+                          "        NULL,\n"
+                          "        v.file#\n"
+                          "  FROM  sys.dba_data_files d,\n"
+                          "    v$datafile v,\n"
+                          "    (SELECT file_id, NVL(SUM(bytes),0) bytes, COUNT(1) num,NVL(MAX(bytes),0) maxbytes FROM sys.dba_free_space  GROUP BY file_id) s,\n"
+                          "        (select :unt<int> unit from sys.dual) b\n"
+                          " WHERE  (s.file_id (+)= d.file_id)\n"
+                          "   AND  (d.file_name = v.name)",
+                          "",
+                          "0703");
+
+#define FILECOLUMNS 14
+#define COLUMNS (FILECOLUMNS-2)
+
+void toResultStorage::saveSelected(void)
+{
+    QListViewItem *item = selectedItem();
+    if (item)
+    {
+        if (item->parent() || OnlyFiles)
+        {
+            CurrentSpace = item->text(COLUMNS);
+            CurrentFile = item->text(0);
+        }
+        else
+        {
+            CurrentSpace = item->text(0);
+            CurrentFile = QString::null;
+        }
+    }
+}
+
+
+void toResultStorage::query(void)
+{
+    if (!handled() || Tablespaces || Files)
+        return ;
+
+    try
+    {
+        saveSelected();
+        clear();
+
+        toConnection &conn = connection();
+
+        toQList args;
+        toPush(args, toQValue(toSizeDecode(Unit)));
+
+        TablespaceValues.clear();
+        FileValues.clear();
+
+        Tablespaces = new toNoBlockQuery(conn, toQuery::Background,
+                                         toSQL::string(ShowCoalesced ? SQLShowCoalesced : SQLNoShowCoalesced, connection()), args);
+        Files = NULL;
+        Files = new toNoBlockQuery(conn, toQuery::Background,
+                                   toSQL::string(SQLDatafile, connection()), args);
+
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+void toResultStorage::updateList(void)
+{
+    clear();
+    if (!OnlyFiles)
+    {
+        for (std::list<QString>::iterator j = TablespaceValues.begin();j != TablespaceValues.end();)
+        {
+            QListViewItem *tablespace = new toResultStorageItem(AvailableGraph, this, NULL);
+            for (int i = 0;i < COLUMNS && j != TablespaceValues.end();i++, j++)
+                tablespace->setText(i, *j);
+
+            if (CurrentSpace == tablespace->text(0))
+            {
+                if (CurrentFile.isEmpty())
+                    setSelected(tablespace, true);
+            }
+        }
+    }
+
+    for (std::list<QString>::iterator k = FileValues.begin();k != FileValues.end();)
+    {
+        QString name = *k;
+        k++;
+
+        QListViewItem *file;
+        QListViewItem *tablespace = NULL;
+        if (OnlyFiles)
+        {
+            file = new toResultStorageItem(AvailableGraph, this, NULL);
+        }
+        else
+        {
+            for (tablespace = firstChild();tablespace && tablespace->text(0) != name;tablespace = tablespace->nextSibling())
+                ;
+            if (!tablespace)
+            {
+                if (Files)
+                    break;
+                else
+                    throw tr("Couldn't find tablespace parent %1 for datafile").arg(name);
+            }
+            file = new toResultStorageItem(AvailableGraph, tablespace, NULL);
+        }
+        for (int i = 0;i < FILECOLUMNS && k != FileValues.end();i++, k++)
+            file->setText(i, *k);
+
+        file->setText(COLUMNS, name);
+        if (CurrentSpace == file->text(COLUMNS) &&
+                CurrentFile == file->text(0))
+        {
+            if (tablespace)
+                tablespace->setOpen(true);
+            setSelected(file, true);
+        }
+    }
+}
+
+void toResultStorage::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Tablespaces && Tablespaces->poll())
+        {
+            int cols = Tablespaces->describe().size();
+            while (Tablespaces->poll() && !Tablespaces->eof())
+            {
+                for (int i = 0;i < cols && !Tablespaces->eof();i++)
+                    toPush(TablespaceValues, QString(Tablespaces->readValue()));
+            }
+            updateList();
+            if (Tablespaces->eof())
+            {
+                delete Tablespaces;
+                Tablespaces = NULL;
+            }
+        }
+
+        if (Files && Files->poll())
+        {
+            int cols = Files->describe().size();
+            while (Files->poll() && !Files->eof())
+            {
+                for (int i = 0;i < cols && !Files->eof();i++)
+                    toPush(FileValues, QString(Files->readValue()));
+            }
+            if (Files->eof())
+            {
+                delete Files;
+                Files = NULL;
+            }
+        }
+
+        if (Tablespaces == NULL && Files == NULL)
+        {
+            updateList();
+            Poll.stop();
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Tablespaces;
+        Tablespaces = NULL;
+        delete Files;
+        Files = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}
+
+QString toResultStorage::currentTablespace(void)
+{
+    QListViewItem *item = selectedItem();
+    if (!item)
+        throw tr("No tablespace selected");
+    QString name;
+    if (item->parent() || OnlyFiles)
+        name = item->text(COLUMNS);
+    else
+        name = item->text(0);
+    if (name.isEmpty())
+        throw tr("Weird, empty tablespace name");
+    return name;
+}
+
+QString toResultStorage::currentFilename(void)
+{
+    QListViewItem *item = selectedItem();
+    if (!item || (!item->parent() && !OnlyFiles))
+        throw tr("No file selected");
+    QString name = item->text(0);
+    return name;
+}
+
+void toResultStorage::setOnlyFiles(bool only)
+{
+    saveSelected();
+    if (only && !OnlyFiles)
+    {
+        addColumn(tr("Tablespace"));
+        setRootIsDecorated(false);
+    }
+    else if (!only && OnlyFiles)
+    {
+        removeColumn(columns() - 1);
+        setRootIsDecorated(true);
+    }
+    OnlyFiles = only;
+    updateList();
+}
+
+toStorageExtent::extentName::extentName(const QString &owner, const QString &table,
+                                        const QString &partition, int size)
+        : Owner(owner), Table(table), Partition(partition)
+{
+    Size = size;
+}
+
+bool toStorageExtent::extentName::operator < (const toStorageExtent::extentName &ext) const
+{
+    if (Owner < ext.Owner)
+        return true;
+    if (Owner > ext.Owner)
+        return false;
+    if (Table < ext.Table)
+        return true;
+    if (Table > ext.Table)
+        return false;
+    if (Partition < ext.Partition)
+        return true;
+    return false;
+}
+
+bool toStorageExtent::extentName::operator == (const toStorageExtent::extentName &ext) const
+{
+    return Owner == ext.Owner && Table == ext.Table && (Partition == ext.Partition || ext.Partition.isNull());
+}
+
+toStorageExtent::extent::extent(const QString &owner, const QString &table,
+                                const QString &partition,
+                                int file, int block, int size)
+        : extentName(owner, table, partition, size)
+{
+    File = file;
+    Block = block;
+}
+
+bool toStorageExtent::extent::operator < (const toStorageExtent::extent &ext) const
+{
+    if (File < ext.File)
+        return true;
+    if (File > ext.File)
+        return false;
+    if (Block < ext.Block)
+        return true;
+    return false;
+}
+
+bool toStorageExtent::extent::operator == (const toStorageExtent::extent &ext) const
+{
+    return Owner == ext.Owner && Table == ext.Table && Partition == ext.Partition &&
+           File == ext.File && Block == ext.Block && Size == ext.Size;
+}
+
+toStorageExtent::toStorageExtent(QWidget *parent, const char *name)
+        : QWidget(parent, name)
+{
+    setBackgroundColor(Qt::white);
+}
+
+void toStorageExtent::highlight(const QString &owner, const QString &table,
+                                const QString &partition)
+{
+    Highlight.Owner = owner;
+    Highlight.Table = table;
+    Highlight.Partition = partition;
+    update();
+}
+
+static toSQL SQLObjectsFile("toStorageExtent:ObjectsFile",
+                            "SELECT owner,\n"
+                            "       segment_name,\n"
+                            "       partition_name,\n"
+                            "       file_id,\n"
+                            "       block_id,\n"
+                            "       blocks\n"
+                            "  FROM sys.dba_extents\n"
+                            " WHERE tablespace_name = :tab<char[101]>\n"
+                            "   AND file_id = :fil<int>",
+                            "Get objects in a datafile, must have same columns and binds",
+                            "0800");
+
+static toSQL SQLObjectsFile7("toStorageExtent:ObjectsFile",
+                             "SELECT owner,\n"
+                             "       segment_name,\n"
+                             "       NULL,\n"
+                             "       file_id,\n"
+                             "       block_id,\n"
+                             "       blocks\n"
+                             "  FROM sys.dba_extents\n"
+                             " WHERE tablespace_name = :tab<char[101]>\n"
+                             "   AND file_id = :fil<int>",
+                             "",
+                             "0703");
+
+static toSQL SQLObjectsTablespace("toStorageExtent:ObjectsTablespace",
+                                  "SELECT owner,\n"
+                                  "       segment_name,\n"
+                                  "       partition_name,\n"
+                                  "       file_id,\n"
+                                  "       block_id,\n"
+                                  "       blocks\n"
+                                  "  FROM sys.dba_extents WHERE tablespace_name = :tab<char[101]>",
+                                  "Get objects in a tablespace, must have same columns and binds",
+                                  "0800");
+
+static toSQL SQLObjectsTablespace7("toStorageExtent:ObjectsTablespace",
+                                   "SELECT owner,\n"
+                                   "       segment_name,\n"
+                                   "       NULL,\n"
+                                   "       file_id,\n"
+                                   "       block_id,\n"
+                                   "       blocks\n"
+                                   "  FROM sys.dba_extents WHERE tablespace_name = :tab<char[101]>",
+                                   "",
+                                   "0703");
+
+static toSQL SQLTableTablespace("toStorageExtent:TableTablespace",
+                                "SELECT MAX(tablespace_name)\n"
+                                "  FROM (SELECT tablespace_name FROM sys.all_all_tables\n"
+                                "         WHERE owner = :own<char[101]> AND table_name = :tab<char[101]>\n"
+                                "        UNION\n"
+                                "        SELECT i.tablespace_name\n"
+                                "          FROM sys.all_indexes i,\n"
+                                "               sys.all_constraints c,\n"
+                                "               sys.all_all_tables t\n"
+                                "         WHERE t.owner = :own<char[101]> AND t.table_name = :tab<char[101]>\n"
+                                "           AND i.table_name = t.table_name AND i.owner = t.owner\n"
+                                "           AND c.constraint_name = i.index_name AND c.owner = i.owner\n"
+                                "           AND c.constraint_type = 'P')",
+                                "Get the tablespace of a table");
+
+static toSQL SQLTableTablespace7("toStorageExtent:TableTablespace",
+                                 "SELECT tablespace_name FROM sys.all_tables\n"
+                                 " WHERE owner = :own<char[101]> AND table_name = :tab<char[101]>",
+                                 "",
+                                 "0703");
+
+static toSQL SQLFileBlocks("toStorageExtent:FileSize",
+                           "SELECT file_id,blocks FROM sys.dba_data_files\n"
+                           " WHERE tablespace_name = :tab<char[101]>\n"
+                           "   AND file_id = :fil<int>\n"
+                           " ORDER BY file_id",
+                           "Get blocks for datafiles, must have same columns and binds");
+
+static toSQL SQLTablespaceBlocks("toStorageExtent:TablespaceSize",
+                                 "SELECT file_id,blocks FROM sys.dba_data_files\n"
+                                 " WHERE tablespace_name = :tab<char[101]>"
+                                 " ORDER BY file_id",
+                                 "Get blocks for tablespace datafiles, must have same columns and binds");
+
+void toStorageExtent::setTablespace(const QString &tablespace)
+{
+    try
+    {
+        if (Tablespace == tablespace)
+            return ;
+        Tablespace = tablespace;
+        toBusy busy;
+        Extents.clear();
+        FileOffset.clear();
+        toQuery query(toCurrentConnection(this), SQLObjectsTablespace, tablespace);
+        extent cur;
+        while (!query.eof())
+        {
+            cur.Owner = query.readValueNull();
+            cur.Table = query.readValueNull();
+            cur.Partition = query.readValueNull();
+            cur.File = query.readValueNull().toInt();
+            cur.Block = query.readValueNull().toInt();
+            cur.Size = query.readValueNull().toInt();
+            toPush(Extents, cur);
+        }
+        toQuery blocks(toCurrentConnection(this), SQLTablespaceBlocks, tablespace);
+        Total = 0;
+        while (!blocks.eof())
+        {
+            int id = blocks.readValueNull().toInt();
+            FileOffset[id] = Total;
+            Total += blocks.readValueNull().toInt();
+        }
+    }
+    TOCATCH
+    Extents.sort();
+    update();
+}
+
+void toStorageExtent::setFile(const QString &tablespace, int file)
+{
+    try
+    {
+        toBusy busy;
+        Extents.clear();
+        FileOffset.clear();
+        toQuery query(toCurrentConnection(this), SQLObjectsFile, tablespace, QString::number(file));
+        extent cur;
+        while (!query.eof())
+        {
+            cur.Owner = query.readValueNull();
+            cur.Table = query.readValueNull();
+            cur.Partition = query.readValueNull();
+            cur.File = query.readValueNull().toInt();
+            cur.Block = query.readValueNull().toInt();
+            cur.Size = query.readValueNull().toInt();
+            toPush(Extents, cur);
+        }
+        toQuery blocks(toCurrentConnection(this), SQLFileBlocks, tablespace, QString::number(file));
+        Total = 0;
+        while (!blocks.eof())
+        {
+            int id = blocks.readValueNull().toInt();
+            FileOffset[id] = Total;
+            Total += blocks.readValueNull().toInt();
+        }
+    }
+    TOCATCH
+    Extents.sort();
+    update();
+}
+
+void toStorageExtent::paintEvent(QPaintEvent *)
+{
+    QPainter paint(this);
+    if ( FileOffset.empty() )
+        return ;
+    QFontMetrics fm = paint.fontMetrics();
+
+    int offset = 2 * fm.lineSpacing();
+    double lineblocks = Total / (height() - offset - FileOffset.size() + 1);
+
+    paint.fillRect(0, 0, width(), offset, colorGroup().background());
+    paint.drawText(0, 0, width(), offset, AlignLeft | AlignTop, tr("Files: %1").arg(FileOffset.size()));
+    paint.drawText(0, 0, width(), offset, AlignRight | AlignTop, tr("Extents: %1").arg(Extents.size()));
+    if (Tablespace)
+        paint.drawText(0, 0, width(), offset, AlignCenter | AlignTop, tr("Tablespace: %1").arg(Tablespace));
+    paint.drawText(0, 0, width(), offset, AlignLeft | AlignBottom, tr("Blocks: %1").arg(Total));
+    paint.drawText(0, 0, width(), offset, AlignRight | AlignBottom, tr("Blocks/line: %1").arg(int(lineblocks)));
+
+    for (std::list<extent>::iterator i = Extents.begin();i != Extents.end();i++)
+    {
+        QColor col = Qt::green;
+        if (extentName(*i) == Highlight)
+            col = Qt::red;
+        int fileo = 0;
+        for (std::map<int, int>::iterator j = FileOffset.begin();j != FileOffset.end();j++, fileo++)
+            if ((*j).first == (*i).File)
+                break;
+        int block = FileOffset[(*i).File] + (*i).Block;
+
+        int y1 = int(block / lineblocks);
+        int x1 = int((block / lineblocks - y1) * width());
+        block += (*i).Size;
+        int y2 = int(block / lineblocks);
+        int x2 = int((block / lineblocks - y2) * width());
+        paint.setPen(col);
+        if (y1 != y2)
+        {
+            paint.drawLine(x1, y1 + offset + fileo, width() - 1, y1 + offset + fileo);
+            paint.drawLine(0, y2 + offset + fileo, x2 - 1, y2 + offset + fileo);
+            if (y1 + 1 != y2)
+                paint.fillRect(0, y1 + 1 + offset + fileo, width(), y2 - y1 - 1, col);
+        }
+        else
+            paint.drawLine(x1, y1 + offset + fileo, x2, y2 + offset + fileo);
+    }
+    std::map<int, int>::iterator j = FileOffset.begin();
+    j++;
+    paint.setPen(Qt::black);
+    int fileo = offset;
+    while (j != FileOffset.end())
+    {
+        int block = (*j).second;
+        int y1 = int(block / lineblocks);
+        int x1 = int((block / lineblocks - y1) * width());
+        paint.drawLine(x1, y1 + fileo, width() - 1, y1 + fileo);
+        if (x1 != 0)
+            paint.drawLine(0, y1 + 1 + fileo, x1 - 1, y1 + fileo + 1);
+        j++;
+        fileo++;
+    }
+}
+
+
+std::list<toStorageExtent::extentTotal> toStorageExtent::objects(void)
+{
+    std::list<extentTotal> ret;
+
+    for (std::list<extent>::iterator i = Extents.begin();i != Extents.end();i++)
+    {
+        bool dup = false;
+        for (std::list<extentTotal>::iterator j = ret.begin();j != ret.end();j++)
+        {
+            if ((*j) == (*i))
+            {
+                (*j).Size += (*i).Size;
+                (*j).Extents++;
+                dup = true;
+                break;
+            }
+        }
+        if (!dup)
+            toPush(ret, extentTotal((*i).Owner, (*i).Table, (*i).Partition, (*i).Size));
+    }
+
+    ret.sort();
+
+    return ret;
+}
+
+static toSQL SQLListExtents("toResultStorage:ListExtents",
+                            "SELECT * \n"
+                            "  FROM SYS.DBA_EXTENTS WHERE OWNER = :f1<char[101]> AND SEGMENT_NAME = :f2<char[101]>\n"
+                            " ORDER BY extent_id",
+                            "List the extents of a table in a schema.",
+                            "" ,
+                            "Oracle");
+
+toResultExtent::toResultExtent(QWidget *parent, const char *name)
+        : QSplitter(Vertical, parent, name)
+{
+    Graph = new toStorageExtent(this);
+    List = new toResultLong(this);
+    List->setSQL(SQLListExtents);
+
+    QValueList<int> sizes = QSplitter::sizes();
+    sizes[0] = 400;
+    sizes[1] = 200;
+    setSizes(sizes);
+}
+
+bool toResultExtent::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn);
+}
+
+void toResultExtent::query(const QString &sql, const toQList &params)
+{
+    try
+    {
+        if (!handled())
+            return ;
+
+        if (!setSQLParams(sql, params))
+            return ;
+
+        toQList::const_iterator i = params.begin();
+        if (i == params.end())
+            return ;
+        QString owner = (*i);
+
+        i++;
+        if (i == params.end())
+            return ;
+        QString table = (*i);
+
+        List->changeParams(owner, table);
+
+        toQList res = toQuery::readQueryNull(connection(), SQLTableTablespace, owner, table);
+
+        Graph->setTablespace(toShift(res));
+        Graph->highlight(owner, table, QString::null);
+    }
+    TOCATCH
+}

Added: kde-extras/tora/branches/upstream/current/src/toresultstorage.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultstorage.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultstorage.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,182 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTSTORAGE_H
+#define TORESULTSTORAGE_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toresultview.h"
+
+#include <qsplitter.h>
+
+class toNoBlockQuery;
+
+class toStorageExtent : public QWidget
+{
+    Q_OBJECT
+
+public:
+    struct extentName
+    {
+        QString Owner;
+        QString Table;
+        QString Partition;
+        int Size;
+
+        extentName(void)
+        {
+            Size = 0;
+        }
+        extentName(const QString &owner, const QString &table, const QString &partition, int size);
+        bool operator < (const extentName &) const;
+        bool operator == (const extentName &) const;
+    };
+
+struct extentTotal : public extentName
+    {
+        int Extents;
+        extentTotal(const QString &owner, const QString &table, const QString &partition, int size)
+                : extentName(owner, table, partition, size)
+        {
+            Extents = 1;
+        }
+    };
+
+struct extent : public extentName
+    {
+        int File;
+        int Block;
+
+        extent(void)
+        {
+            File = Block = 0;
+        }
+        extent(const QString &owner, const QString &table, const QString &partition,
+               int file, int block, int size);
+        bool operator < (const extent &) const;
+        bool operator == (const extent &) const;
+    };
+private:
+    std::list<extent> Extents;
+    extentName Highlight;
+    QString Tablespace;
+
+    std::map<int, int> FileOffset;
+    int Total;
+public:
+    toStorageExtent(QWidget *parent, const char *name = NULL);
+    void highlight(const QString &owner, const QString &table, const QString &partition);
+
+    void setTablespace(const QString &tablespace);
+    void setFile(const QString &tablespace, int file);
+
+    std::list<extentTotal> objects(void);
+protected:
+    virtual void paintEvent(QPaintEvent *);
+};
+
+class toResultLong;
+
+class toResultExtent : public QSplitter, public toResult
+{
+    Q_OBJECT
+
+    toStorageExtent *Graph;
+    toResultLong *List;
+public:
+    toResultExtent(QWidget *parent, const char *name = NULL);
+
+    /** Support Oracle
+     */
+    virtual bool canHandle(toConnection &conn);
+public slots:
+    /** Perform a query.
+     * @param sql Execute an SQL statement.
+     * @param params Parameters needed as input to execute statement.
+     */
+    virtual void query(const QString &sql, const toQList &params);
+};
+
+class toResultStorage : public toResultView
+{
+    Q_OBJECT
+
+    bool ShowCoalesced;
+    QString Unit;
+    toBackground Poll;
+
+    toNoBlockQuery *Tablespaces;
+    toNoBlockQuery *Files;
+
+    bool OnlyFiles;
+    bool AvailableGraph;
+    std::list<QString> TablespaceValues;
+    std::list<QString> FileValues;
+
+    QString CurrentSpace;
+    QString CurrentFile;
+
+    void saveSelected(void);
+    void updateList(void);
+public:
+    toResultStorage(bool availableGraph, QWidget *parent, const char *name = NULL);
+    ~toResultStorage();
+
+    void showCoalesced(bool shw)
+    {
+        ShowCoalesced = shw;
+    }
+
+    void setOnlyFiles(bool only);
+    bool onlyFiles(void) const
+    {
+        return OnlyFiles;
+    }
+
+    QString currentTablespace(void);
+    QString currentFilename(void);
+    /** Support Oracle
+     */
+    virtual bool canHandle(toConnection &conn);
+public slots:
+    virtual void query(void);
+private slots:
+    void poll(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toresultview.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultview.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultview.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1580 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "tolistviewformatter.h"
+#include "tolistviewformatterfactory.h"
+#include "tolistviewformatteridentifier.h"
+#include "tomain.h"
+#include "tomemoeditor.h"
+#include "toparamget.h"
+#include "toresultlistformatui.h"
+#include "toresultview.h"
+#include "tosearchreplace.h"
+#include "tosql.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#include <kfiledialog.h>
+#endif
+#ifdef TO_HAS_KPRINT
+#include <kprinter.h>
+#endif
+
+#include <qapplication.h>
+#include <qclipboard.h>
+#include <qcombobox.h>
+#include <qdragobject.h>
+#include <qfiledialog.h>
+#include <qheader.h>
+#include <qlineedit.h>
+#include <qmessagebox.h>
+#include <qpaintdevicemetrics.h>
+#include <qpainter.h>
+#include <qpalette.h>
+#include <qpopupmenu.h>
+#include <qprinter.h>
+#include <qregexp.h>
+#include <qstyle.h>
+#include <qtooltip.h>
+#include <qworkspace.h>
+
+
+#include "toresultlistformatui.moc"
+#include "toresultview.moc"
+
+static int MaxColDisp;
+static bool Gridlines;
+
+void toResultViewMLine::setText (int col, const QString &text)
+{
+    toResultViewItem::setText(col, text);
+    int pos = 0;
+    int lines = 0;
+    do
+    {
+        pos = text.find(QString::fromLatin1("\n"), pos);
+        lines++;
+        pos++;
+    }
+    while (pos > 0);
+    if (lines > Lines)
+        Lines = lines;
+}
+
+void toResultViewMLine::setText (int col, const toQValue &text)
+{
+    if (text.isDouble())
+        toResultViewItem::setText(col, text);
+    setText(col, QString(text));
+}
+
+void toResultViewMLine::setup(void)
+{
+    toResultViewItem::setup();
+    int margin = listView()->itemMargin() * 2 + 1;
+    setHeight((listView()->fontMetrics().height() + 1)*Lines + margin);
+}
+
+void toResultViewMLine::paintCell(QPainter *pnt, const QColorGroup & cg,
+                                  int column, int width, int alignment)
+{
+    toResultViewItem::paintCell(pnt, cg, column,
+                                std::max(QListViewItem::width(pnt->fontMetrics(), listView(), column), width),
+                                alignment);
+    if (Gridlines)
+    {
+        pnt->setPen(gray);
+        pnt->drawLine(width - 1, 0, width - 1, height());
+        pnt->drawLine(0, height() - 1, width - 1, height() - 1);
+    }
+}
+
+static int TextWidth(const QFontMetrics &fm, const QString &str)
+{
+    int lpos = 0;
+    int pos = 0;
+    int maxWidth = 0;
+    do
+    {
+        pos = str.find(QString::fromLatin1("\n"), lpos);
+        QRect bounds = fm.boundingRect(str.mid(lpos, pos - lpos));
+        if (bounds.width() > maxWidth)
+            maxWidth = bounds.width();
+        lpos = pos + 1;
+    }
+    while (pos >= 0);
+    return maxWidth;
+}
+
+int toResultViewMLine::realWidth(const QFontMetrics &fm, const QListView *top, int column, const QString &txt) const
+{
+    if (!MaxColDisp)
+    {
+        MaxColDisp = toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_DISP, DEFAULT_MAX_COL_DISP).toInt();
+        Gridlines = !toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_GRIDLINES, DEFAULT_DISPLAY_GRIDLINES).isEmpty();
+    }
+    QString t = text(column);
+    if (t.isNull())
+        t = txt;
+    return std::min(TextWidth(fm, t), MaxColDisp) + top->itemMargin()*2 - fm.minLeftBearing() - fm.minRightBearing() + 1;
+}
+
+QString toResultViewItem::firstText(int col) const
+{
+    if (col >= ColumnCount)
+        return QString::null;
+    QString txt = ColumnData[col].Data;
+    int pos = txt.find('\n');
+    if (pos != -1)
+        return txt.mid(0, pos) + "...";
+    return txt;
+}
+
+QString toResultViewItem::text(int col) const
+{
+    if (col >= ColumnCount)
+        return QString::null;
+    if (ColumnData[col].Type == keyData::Number)
+        return QListViewItem::text(col);
+    return firstText(col);
+}
+
+int toResultViewItem::realWidth(const QFontMetrics &fm, const QListView *top, int column, const QString &txt) const
+{
+    if (!MaxColDisp)
+    {
+        MaxColDisp = toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_DISP, DEFAULT_MAX_COL_DISP).toInt();
+        Gridlines = !toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_GRIDLINES, DEFAULT_DISPLAY_GRIDLINES).isEmpty();
+    }
+    QString t = text(column);
+    if (t.isNull())
+        t = txt;
+    QRect bounds = fm.boundingRect(t);
+    return std::min(bounds.width(), MaxColDisp) + top->itemMargin()*2 - fm.minLeftBearing() - fm.minRightBearing() + 1;
+}
+
+void toResultViewItem::paintCell(QPainter * p, const QColorGroup & cg, int column, int width, int align)
+{
+    // null related background handling
+    QColorGroup colNull(cg);
+    if ((toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY, "").isEmpty() && text(column) == "{null}")
+         || text(column).isNull())
+    {
+        QColor nullColor;
+        nullColor.setNamedColor(toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY_COLOR, "#f2ffbc"));
+        colNull.setColor(QColorGroup::Base, nullColor);
+    }
+
+    QListViewItem::paintCell(p, colNull, column, width, align);
+    toResultView *view = dynamic_cast<toResultView *>(listView());
+    if (view && (itemBelow() == NULL || itemBelow()->itemBelow() == NULL))
+        view->addItem();
+    if (Gridlines)
+    {
+        p->setPen(gray);
+        p->drawLine(width - 1, 0, width - 1, height());
+        p->drawLine(0, height() - 1, width - 1, height() - 1);
+    }
+}
+
+#define ALLOC_SIZE 10
+
+void toResultViewItem::setText (int col, const QString &txt)
+{
+    if (txt != text(col))
+    {
+        if (col >= ColumnCount || !ColumnData)
+        {
+            int ns = (col + ALLOC_SIZE) / ALLOC_SIZE * ALLOC_SIZE;
+            keyData *nd = new keyData[ns];
+            int i;
+            for (i = 0;i < ColumnCount;i++)
+                nd[i] = ColumnData[i];
+            while (i < ns)
+            {
+                nd[i].Width = 0;
+                nd[i].Type = keyData::String;
+                i++;
+            }
+            delete[] ColumnData;
+            ColumnData = nd;
+            ColumnCount = ns;
+        }
+
+        static QRegExp number(QString::fromLatin1("^-?\\d*\\.?\\d+E?-?\\d*.?.?$"));
+
+        ColumnData[col].Data = txt;
+
+        if (txt == "N/A")
+        {
+            ColumnData[col].Type = keyData::String;
+            ColumnData[col].KeyAsc = "\xff";
+            ColumnData[col].KeyDesc = "\x00";
+        }
+        else if (number.match(txt) >= 0)
+        {
+            ColumnData[col].Type = keyData::Number;
+
+            static char buf[100];
+            double val = txt.toFloat();
+            if (val < 0)
+                sprintf(buf, "\x01%015.5f", val);
+            else
+                sprintf(buf, "%015.5f", val);
+            ColumnData[col].KeyAsc = ColumnData[col].KeyDesc = QString::fromLatin1(buf);
+        }
+        else
+        {
+            ColumnData[col].Type = keyData::String;
+            ColumnData[col].KeyAsc = ColumnData[col].KeyDesc = ColumnData[col].Data;
+        }
+        ColumnData[col].Width = realWidth(listView()->fontMetrics(), listView(), col, txt);
+    }
+    QListViewItem::setText(col, firstText(col));
+}
+
+void toResultViewItem::setText (int col, const toQValue &text)
+{
+    setText(col, QString(text));
+    if (text.isDouble())
+        ColumnData[col].Data = QString::number(text.toDouble());
+}
+
+toResultViewCheck::toResultViewCheck(QListView *parent, QListViewItem *after, const QString &text, QCheckListItem::Type type)
+#if QT_VERSION >= 0x030100
+        :
+        QCheckListItem(parent, after, QString::null, type)
+{
+#else
+        :
+        QCheckListItem(parent, QString::null, type)
+{
+    moveItem(after);
+#endif
+
+    ColumnData = NULL;
+    ColumnCount = 0;
+    if (!text.isNull())
+        setText(0, text);
+}
+
+toResultViewCheck::toResultViewCheck(QListViewItem *parent, QListViewItem *after, const QString &text, QCheckListItem::Type type)
+#if QT_VERSION >= 0x030100
+        :
+        QCheckListItem(parent, after, QString::null, type)
+{
+#else
+        :
+        QCheckListItem(parent, QString::null, type)
+{
+    moveItem(after);
+#endif
+
+    ColumnData = NULL;
+    ColumnCount = 0;
+    if (!text.isNull())
+        setText(0, text);
+}
+
+void toResultViewCheck::setText (int col, const QString &txt)
+{
+    if (txt != text(col))
+    {
+        if (col >= ColumnCount || !ColumnData)
+        {
+            int ns = (col + ALLOC_SIZE) / ALLOC_SIZE * ALLOC_SIZE;
+            keyData *nd = new keyData[ns];
+            int i;
+            for (i = 0;i < ColumnCount;i++)
+                nd[i] = ColumnData[i];
+            while (i < ns)
+            {
+                nd[i].Width = 0;
+                nd[i].Type = keyData::String;
+                i++;
+            }
+            delete[] ColumnData;
+            ColumnData = nd;
+            ColumnCount = ns;
+        }
+
+        static QRegExp number(QString::fromLatin1("^\\d*\\.?\\d+E?-?\\d*.?.?$"));
+
+        ColumnData[col].Data = txt;
+
+        if (txt == "N/A")
+        {
+            ColumnData[col].Type = keyData::String;
+            ColumnData[col].KeyAsc = "\xff";
+            ColumnData[col].KeyDesc = "\x00";
+        }
+        else if (number.match(txt) >= 0)
+        {
+            ColumnData[col].Type = keyData::Number;
+
+            static char buf[100];
+            double val = txt.toFloat();
+            if (val < 0)
+                sprintf(buf, "\x01%015.5f", val);
+            else
+                sprintf(buf, "%015.5f", val);
+            ColumnData[col].KeyAsc = ColumnData[col].KeyDesc = QString::fromLatin1(buf);
+        }
+        else
+        {
+            ColumnData[col].Type = keyData::String;
+            ColumnData[col].KeyAsc = ColumnData[col].KeyDesc = ColumnData[col].Data;
+        }
+        ColumnData[col].Width = realWidth(listView()->fontMetrics(), listView(), col, txt);
+    }
+    QCheckListItem::setText(col, firstText(col));
+}
+
+void toResultViewCheck::setText (int col, const toQValue &text)
+{
+    setText(col, QString(text));
+    if (text.isDouble())
+        ColumnData[col].Data = QString::number(text.toDouble());
+}
+
+void toResultViewMLCheck::setText (int col, const QString &text)
+{
+    toResultViewCheck::setText(col, text);
+    int pos = 0;
+    int lines = 0;
+    do
+    {
+        pos = text.find(QString::fromLatin1("\n"), pos);
+        lines++;
+        pos++;
+    }
+    while (pos > 0);
+    if (lines > Lines)
+        Lines = lines;
+}
+
+void toResultViewMLCheck::setText (int col, const toQValue &text)
+{
+    if (text.isDouble())
+        toResultViewCheck::setText(col, text);
+    setText(col, QString(text));
+}
+
+void toResultViewMLCheck::setup(void)
+{
+    toResultViewCheck::setup();
+    int margin = listView()->itemMargin() * 2;
+    setHeight((listView()->fontMetrics().height() + 1)*Lines + margin);
+}
+
+void toResultViewMLCheck::paintCell (QPainter *pnt, const QColorGroup & cg,
+                                     int column, int width, int alignment)
+{
+    toResultViewCheck::paintCell(pnt, cg, column,
+                                 std::max(QCheckListItem::width(pnt->fontMetrics(), listView(), column), width),
+                                 alignment);
+}
+
+int toResultViewMLCheck::realWidth(const QFontMetrics &fm, const QListView *top, int column, const QString &txt) const
+{
+    if (!MaxColDisp)
+    {
+        MaxColDisp = toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_DISP, DEFAULT_MAX_COL_DISP).toInt();
+        Gridlines = !toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_GRIDLINES, DEFAULT_DISPLAY_GRIDLINES).isEmpty();
+    }
+    QString t = text(column);
+    if (t.isNull())
+        t = txt;
+    int wx = top->itemMargin() * 2 - fm.minLeftBearing() - fm.minRightBearing() + 1;
+    if (column == 0)
+#if QT_VERSION >= 0x030100
+
+        wx += top->style().pixelMetric(QStyle::PM_CheckListButtonSize) + 4 + top->itemMargin();
+#else
+
+        wx += 20;
+#endif
+
+    return std::min(TextWidth(fm, t), MaxColDisp) + wx;
+}
+
+int toResultViewCheck::realWidth(const QFontMetrics &fm, const QListView *top, int column, const QString &txt) const
+{
+    if (!MaxColDisp)
+    {
+        MaxColDisp = toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_DISP, DEFAULT_MAX_COL_DISP).toInt();
+        Gridlines = !toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_GRIDLINES, DEFAULT_DISPLAY_GRIDLINES).isEmpty();
+    }
+    QString t = text(column);
+    if (t.isNull())
+        t = txt;
+    QRect bounds = fm.boundingRect(t);
+    int wx = top->itemMargin() * 2 - fm.minLeftBearing() - fm.minRightBearing() + 1;
+    if (column == 0)
+#if QT_VERSION >= 0x030100
+
+        wx += top->style().pixelMetric(QStyle::PM_CheckListButtonSize) + 4 + top->itemMargin();
+#else
+
+        wx += 20;
+#endif
+
+    return std::min(bounds.width(), MaxColDisp) + wx;
+}
+
+
+void toResultViewCheck::paintCell(QPainter * p, const QColorGroup & cg, int column, int width, int align)
+{
+    QCheckListItem::paintCell(p, cg, column, width, align);
+    toResultView *view = dynamic_cast<toResultView *>(listView());
+    if (view && (itemBelow() == NULL || itemBelow()->itemBelow() == NULL))
+        view->addItem();
+}
+
+QString toResultViewCheck::text(int col) const
+{
+    if (col >= ColumnCount)
+        return QString::null;
+    if (ColumnData[col].Type == keyData::Number)
+        return QCheckListItem::text(col);
+    return firstText(col);
+}
+
+QString toResultViewCheck::firstText(int col) const
+{
+    if (col >= ColumnCount)
+        return QString::null;
+    QString txt = ColumnData[col].Data;
+    int pos = txt.find('\n');
+    if (pos != -1)
+        return txt.mid(0, pos) + "...";
+    return txt;
+}
+
+class toListTip : public QToolTip
+{
+private:
+    toListView *List;
+public:
+    toListTip(toListView *parent)
+            : QToolTip(parent->viewport())
+    {
+        List = parent;
+    }
+
+    virtual void maybeTip(const QPoint &p)
+    {
+        QListViewItem *item = List->itemAt(p);
+        toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(item);
+        toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item);
+        if (item)
+        {
+            int col = List->header()->sectionAt(List->viewportToContents(p).x());
+            QPoint t(List->header()->sectionPos(col), 0);
+            int pos = List->contentsToViewport(t).x();
+            int width = List->header()->sectionSize(col);
+            QString key;
+
+            QString text = item->text(col);
+            if (resItem)
+                key = resItem->tooltip(col);
+            else if (chkItem)
+                key = chkItem->tooltip(col);
+            else
+                key = text;
+            int textWidth = TextWidth(List->fontMetrics(), text) + List->itemMargin() * 2 -
+                            List->fontMetrics().minLeftBearing() - List->fontMetrics().minRightBearing() + 1;
+            if (key != text ||
+                    width < textWidth)
+            {
+                QRect itemRect = List->itemRect(item);
+                itemRect.setLeft(pos);
+                itemRect.setRight(pos + width);
+                tip(itemRect, key);
+            }
+        }
+    }
+};
+
+toListView::toListView(QWidget *parent, const char *name, WFlags f)
+        : QListView(parent, name, f),
+        toEditWidget(false, true, true,
+                     false, false,
+                     false, false, false,
+                     true, true, false)
+{
+    FirstSearch = false;
+    setTreeStepSize(15);
+    setSelectionMode(Extended);
+    setAllColumnsShowFocus(true);
+    AllTip = new toListTip(this);
+#if 0
+
+    setShowSortIndicator(true);
+#endif
+
+    setSorting( -1);
+    Menu = NULL;
+    connect(this, SIGNAL(rightButtonPressed(QListViewItem *, const QPoint &, int)),
+            this, SLOT(displayMenu(QListViewItem *, const QPoint &, int)));
+    QString str = toConfigurationSingle::Instance().globalConfig(CONF_LIST, "");
+    if (!str.isEmpty())
+    {
+        QFont font(toStringToFont(str));
+        setFont(font);
+    }
+    LastMove = QPoint( -1, -1);
+}
+
+toListView::~toListView()
+{
+    delete AllTip;
+    AllTip = 0;
+}
+
+void toListView::contentsMouseDoubleClickEvent (QMouseEvent *e)
+{
+    QPoint p = e->pos();
+    int col = header()->sectionAt(p.x());
+    QListViewItem *item = itemAt(contentsToViewport(p));
+    toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(item);
+    toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item);
+    QClipboard *clip = qApp->clipboard();
+    if (resItem)
+        clip->setText(resItem->allText(col));
+    else if (chkItem)
+        clip->setText(chkItem->allText(col));
+    else if (item)
+        clip->setText(item->text(col));
+
+    QHeader *head = header();
+    for (int i = 0;i < columns();i++)
+    {
+        QString str;
+        if (resItem)
+            str = resItem->allText(i);
+        else if (chkItem)
+            str = chkItem->allText(col);
+        else if (item)
+            str = item->text(i);
+
+        try
+        {
+            toParamGet::setDefault(toCurrentConnection(this),
+                                   head->label(i).lower(), toUnnull(str));
+        }
+        catch (...)
+        {}
+    }
+
+    QListView::contentsMouseDoubleClickEvent(e);
+}
+
+void toListView::contentsMouseMoveEvent (QMouseEvent *e)
+{
+    if (e->state() == LeftButton &&
+            e->stateAfter() == LeftButton &&
+            LastMove.x() > 0 &&
+            LastMove != e->pos())
+    {
+        QPoint p = e->pos();
+        int col = header()->sectionAt(p.x());
+        QListViewItem *item = itemAt(contentsToViewport(p));
+        toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(item);
+        toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item);
+        QString str;
+        if (resItem)
+            str = resItem->allText(col);
+        else if (chkItem)
+            str = chkItem->allText(col);
+        else if (item)
+            str = item->text(col);
+        if (str.length())
+        {
+            QDragObject *d = new QTextDrag(str, this);
+            d->dragCopy();
+        }
+    }
+    else
+    {
+        LastMove = e->pos();
+        QListView::contentsMouseMoveEvent(e);
+    }
+}
+
+void toListView::contentsMousePressEvent(QMouseEvent *e)
+{
+    LastMove = QPoint( -1, -1);
+    QListView::contentsMousePressEvent(e);
+}
+
+void toListView::contentsMouseReleaseEvent(QMouseEvent *e)
+{
+    LastMove = QPoint( -1, -1);
+    QListView::contentsMouseReleaseEvent(e);
+}
+
+QListViewItem *toListView::printPage(TOPrinter *printer, QPainter *painter, QListViewItem *top, int &column, int &level, int pageNo, bool paint)
+{
+    QPaintDeviceMetrics wmetr(this);
+    QPaintDeviceMetrics metrics(printer);
+
+    double wpscalex = (double(metrics.width()) * wmetr.widthMM() / metrics.widthMM() / wmetr.width());
+    double wpscaley = (double(metrics.height()) * wmetr.heightMM() / metrics.heightMM() / wmetr.height());
+
+    painter->save();
+    QFont font = painter->font();
+    font.setPointSizeFloat(font.pointSizeFloat() / std::max(wpscalex, wpscaley));
+    painter->setFont(font);
+
+    painter->scale(wpscalex, wpscaley);
+
+    double mwidth = metrics.width() / wpscalex;
+    double mheight = metrics.height() / wpscaley;
+    double x = 0;
+    if (paint)
+    {
+        QString numPage(tr("Page: %1").arg(pageNo));
+        painter->drawText(0, int(metrics.height() / wpscaley) - header()->height(), int(metrics.width() / wpscalex),
+                          header()->height(),
+                          SingleLine | AlignRight | AlignVCenter,
+                          numPage);
+        painter->drawText(0, int(metrics.height() / wpscaley) - header()->height(), int(metrics.width() / wpscalex),
+                          header()->height(),
+                          SingleLine | AlignHCenter | AlignVCenter,
+                          middleString());
+        painter->drawText(0, int(metrics.height() / wpscaley) - header()->height(), int(metrics.width() / wpscalex),
+                          header()->height(),
+                          SingleLine | AlignLeft | AlignVCenter,
+                          sqlName());
+        painter->drawLine(0, header()->height() - 1, int(mwidth), header()->height() - 1);
+    }
+    font = toListView::font();
+    font.setPointSizeFloat(font.pointSizeFloat() / std::max(wpscalex, wpscaley));
+    painter->setFont(font);
+
+    for (int i = column;i < columns();i++)
+    {
+        double width = columnWidth(i);
+        if (width + x >= mwidth)
+        {
+            if (i == column)
+                width = mwidth - x - 1;
+            else
+                break;
+        }
+        if (paint)
+            painter->drawText(int(x), 0, int(width),
+                              header()->height(),
+                              SingleLine | AlignLeft | AlignVCenter, header()->label(i));
+        x += width;
+    }
+    if (paint)
+        painter->translate(0, header()->height());
+
+    double y = (header()->height() + 1) + header()->height();
+    int curLevel = level;
+    int tree = rootIsDecorated() ? treeStepSize() : 0;
+    int newCol = -1;
+    QListViewItem *item = top;
+    while (item && (y < mheight || item == top))
+    {
+        if (column == 0)
+            x = curLevel;
+        else
+            x = 0;
+        painter->translate(x, 0);
+        for (int i = column;i < columns();i++)
+        {
+            double width = columnWidth(i);
+            if (width + x >= mwidth)
+            {
+                if (i == column)
+                    width = mwidth - x - 1;
+                else
+                {
+                    newCol = i;
+                    break;
+                }
+            }
+            if (i == 0)
+                width -= curLevel;
+            if (paint)
+            {
+                item->setSelected(false);
+                item->paintCell(painter, qApp->palette().active(), i, int(width), columnAlignment(i));
+                painter->translate(width, 0);
+            }
+            x += width;
+        }
+        if (paint)
+            painter->translate( -x, item->height());
+        y += item->height();
+        if (item->firstChild())
+        {
+            item = item->firstChild();
+            curLevel += tree;
+        }
+        else if (item->nextSibling())
+            item = item->nextSibling();
+        else
+        {
+            do
+            {
+                item = item->parent();
+                curLevel -= tree;
+            }
+            while (item && !item->nextSibling());
+            if (item)
+                item = item->nextSibling();
+        }
+    }
+    if (paint)
+        painter->drawLine(0, 0, int(mwidth), 0);
+    painter->restore();
+    if (newCol >= 0)
+    {
+        column = newCol;
+        return top;
+    }
+    column = 0;
+    level = curLevel;
+    return item;
+}
+
+void toListView::editPrint(void)
+{
+    TOPrinter printer;
+
+    std::map<int, int> PageColumns;
+    std::map<int, QListViewItem *> PageItems;
+
+    int column = 0;
+    int tree = rootIsDecorated() ? treeStepSize() : 0;
+    int page = 1;
+    PageColumns[1] = 0;
+    QListViewItem *item = PageItems[1] = firstChild();
+
+    printer.setCreator(tr(TOAPPNAME));
+    QPainter painter(&printer);
+
+    while ((item = printPage(&printer, &painter, item, column, tree, page++, false)))
+    {
+        PageColumns[page] = column;
+        PageItems[page] = item;
+    }
+
+    printer.setMinMax(1, page - 1);
+    printer.setFromTo(1, page - 1);
+    if (printer.setup())
+    {
+#ifdef TO_KDE
+        QValueList<int> pages = printer.pageList();
+#else
+
+        QValueList<int> pages;
+        for (int i = printer.fromPage();i <= printer.toPage() || (printer.toPage() == 0 && i < page);i++)
+            pages += i;
+#endif
+
+        for (QValueList<int>::iterator pageit = pages.begin();pageit != pages.end();pageit++)
+        {
+            page = *pageit;
+            item = PageItems[page];
+            column = PageColumns[page];
+
+            printPage(&printer, &painter, item, column, tree, page, true);
+            printer.newPage();
+            painter.resetXForm();
+            qApp->processEvents();
+            QString str = tr("Printing page %1").arg(page);
+            toStatusMessage(str, false, false);
+        }
+        painter.end();
+        toStatusMessage(tr("Done printing"), false, false);
+    }
+}
+
+void toListView::setDisplayMenu(QPopupMenu *m)
+{
+    if (Menu)
+        delete Menu;
+    Menu = m;
+}
+
+#define TORESULT_COPY_FIELD     1
+#define TORESULT_COPY_SEL 2
+#define TORESULT_COPY_SEL_HEAD 3
+#define TORESULT_MEMO      4
+#define TORESULT_SQL       5
+#define TORESULT_READ_ALL  6
+#define TORESULT_EXPORT    7
+#define TORESULT_SELECT_ALL 8
+#define TORESULT_COPY_TRANS 9
+#define TORESULT_LEFT  10
+#define TORESULT_CENTER  11
+#define TORESULT_RIGHT  12
+
+void toListView::displayMenu(QListViewItem *item, const QPoint &p, int col)
+{
+    if (item)
+    {
+        if (!Menu)
+        {
+            Menu = new QPopupMenu(this);
+            Menu->insertItem(tr("Display in editor..."), TORESULT_MEMO);
+
+            QPopupMenu *just = new QPopupMenu(this);
+            just->insertItem(tr("Left"), TORESULT_LEFT);
+            just->insertItem(tr("Center"), TORESULT_CENTER);
+            just->insertItem(tr("Right"), TORESULT_RIGHT);
+            Menu->insertItem(tr("Alignment"), just);
+            connect(just, SIGNAL(activated(int)), this, SLOT(menuCallback(int)));
+
+            Menu->insertSeparator();
+            Menu->insertItem(tr("&Copy field"), TORESULT_COPY_FIELD);
+            if (selectionMode() == Multi || selectionMode() == Extended)
+            {
+                Menu->insertItem(tr("Copy selection"), TORESULT_COPY_SEL);
+                Menu->insertItem(tr("Copy selection with header"), TORESULT_COPY_SEL_HEAD);
+            }
+            Menu->insertItem(tr("Copy transposed"), TORESULT_COPY_TRANS);
+            if (selectionMode() == Multi || selectionMode() == Extended)
+            {
+                Menu->insertSeparator();
+                Menu->insertItem(tr("Select all"), TORESULT_SELECT_ALL);
+            }
+            Menu->insertSeparator();
+            Menu->insertItem(tr("Export to file..."), TORESULT_EXPORT);
+            if (!Name.isEmpty())
+            {
+                Menu->insertSeparator();
+                Menu->insertItem(tr("Edit SQL..."), TORESULT_SQL);
+            }
+            connect(Menu, SIGNAL(activated(int)), this, SLOT(menuCallback(int)));
+            addMenues(Menu);
+            emit displayMenu(Menu);
+        }
+        MenuItem = item;
+        MenuColumn = col;
+        Menu->popup(p);
+    }
+}
+
+void toListView::displayMemo(void)
+{
+    QString str = menuText();
+    if (!str.isEmpty())
+        new toMemoEditor(this, str, 0, MenuColumn);
+}
+
+void toListView::menuCallback(int cmd)
+{
+    switch (cmd)
+    {
+    case TORESULT_COPY_FIELD:
+        {
+            QClipboard *clip = qApp->clipboard();
+            clip->setText(menuText());
+        }
+        break;
+    case TORESULT_COPY_SEL:
+        try
+        {
+            QString str = exportAsText(false, true);
+            QClipboard *clip = qApp->clipboard();
+            QTextDrag *drag = new QTextDrag(str);
+            drag->setSubtype("html");
+            clip->setData(drag);
+        }
+        TOCATCH
+        break;
+    case TORESULT_LEFT:
+        setColumnAlignment(MenuColumn, AlignLeft);
+        break;
+    case TORESULT_CENTER:
+        setColumnAlignment(MenuColumn, AlignCenter);
+        break;
+    case TORESULT_RIGHT:
+        setColumnAlignment(MenuColumn, AlignRight);
+        break;
+    case TORESULT_COPY_SEL_HEAD:
+        try
+        {
+            QString str = exportAsText(true, true);
+            QClipboard *clip = qApp->clipboard();
+            QTextDrag *drag = new QTextDrag(str);
+            drag->setSubtype("html");
+            clip->setData(drag);
+        }
+        TOCATCH
+        break;
+    case TORESULT_SELECT_ALL:
+        selectAll(true);
+        break;
+    case TORESULT_MEMO:
+        displayMemo();
+        break;
+    case TORESULT_COPY_TRANS:
+        copyTransposed();
+        break;
+    case TORESULT_SQL:
+        toMainWidget()->editSQL(Name);
+        break;
+    case TORESULT_EXPORT:
+        editSave(false);
+        break;
+    }
+}
+
+QString toListView::menuText(void)
+{
+    toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(MenuItem);
+    toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(MenuItem);
+    QString str;
+    if (resItem)
+        str = resItem->allText(MenuColumn);
+    else if (chkItem)
+        str = chkItem->allText(MenuColumn);
+    else if (MenuItem)
+        str = MenuItem->text(MenuColumn);
+    return str;
+}
+
+void toListView::focusInEvent (QFocusEvent *e)
+{
+    receivedFocus();
+    QListView::focusInEvent(e);
+}
+
+bool toListView::searchNext(toSearchReplace *search)
+{
+    QListViewItem *item = currentItem();
+
+    bool first = FirstSearch;
+    FirstSearch = false;
+
+    for (QListViewItem *next = NULL;item;item = next)
+    {
+        if (!first)
+            first = true;
+        else
+        {
+            for (int i = 0;i < columns();i++)
+            {
+                int pos = 0;
+                int endPos = 0;
+
+                toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(item);
+                toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item);
+                QString txt;
+                if (resItem)
+                    txt = resItem->allText(i);
+                else if (chkItem)
+                    txt = chkItem->allText(i);
+                else if (item)
+                    txt = item->text(i);
+
+                if (search->findString(item->text(0), pos, endPos))
+                {
+                    setCurrentItem(item);
+                    return true;
+                }
+            }
+        }
+
+        if (item->firstChild())
+            next = item->firstChild();
+        else if (item->nextSibling())
+            next = item->nextSibling();
+        else
+        {
+            next = item;
+            do
+            {
+                next = next->parent();
+            }
+            while (next && !next->nextSibling());
+            if (next)
+                next = next->nextSibling();
+        }
+    }
+    return false;
+}
+
+toListView *toListView::copyTransposed(void)
+{
+    toListView *lst = new toListView(toMainWidget()->workspace());
+    lst->setWFlags(lst->getWFlags() | WDestructiveClose);
+    lst->Name = Name;
+
+    QListViewItem *next = NULL;
+    for (int i = 1;i < columns();i++)
+    {
+        next = new toResultViewItem(lst, next);
+        next->setText(0, header()->label(i));
+    }
+
+    next = NULL;
+    int col = 1;
+    lst->addColumn(header()->label(0));
+    for (QListViewItem *item = firstChild();item;item = next)
+    {
+
+        lst->addColumn(item->text(0));
+        QListViewItem *ci = lst->firstChild();
+        for (int i = 1;i < columns() && ci;i++)
+        {
+            ci->setText(col, item->text(i));
+            ci = ci->nextSibling();
+        }
+
+        if (item->firstChild())
+        {
+            next = item->firstChild();
+        }
+        else if (item->nextSibling())
+            next = item->nextSibling();
+        else
+        {
+            next = item;
+            do
+            {
+                next = next->parent();
+            }
+            while (next && !next->nextSibling());
+            if (next)
+                next = next->nextSibling();
+        }
+        col++;
+    }
+    lst->setCaption(Name);
+    lst->show();
+    toMainWidget()->windowsMenu();
+    return lst;
+}
+
+bool toListView::editSave(bool)
+{
+    try
+    {
+        QString delimiter;
+        QString separator;
+        int type = exportType(separator, delimiter);
+
+        QString nam;
+        switch (type)
+        {
+        case - 1:
+            return false;
+        default:
+            nam = "*.txt";
+            break;
+        case 2:
+            nam = "*.csv";
+            break;
+        case 3:
+            nam = "*.html";
+            break;
+        case 4:
+            nam = "*.sql";
+            break;
+        }
+
+        QString filename = toSaveFilename(QString::null, nam, this);
+        if (filename.isEmpty())
+            return false;
+
+        return toWriteFile(filename, exportAsText(true, false, type, separator, delimiter));
+    }
+    TOCATCH
+    return false;
+}
+
+void toListView::addMenues(QPopupMenu *)
+{}
+
+bool toListView::searchCanReplace(bool)
+{
+    return false;
+}
+
+int toListView::exportType(QString &separator, QString &delimiter)
+{
+    toResultListFormat format(this, NULL);
+    if (!format.exec())
+        return -1;
+
+    format.saveDefault();
+
+    separator = format.Separator->text();
+    delimiter = format.Delimiter->text();
+
+    return format.Format->currentItem();
+
+}
+
+
+QString toListView::exportAsText(bool tincludeHeader, bool tonlySelection, int type,
+                                 const QString &tsep, const QString &tdel)
+{
+    QString result;
+
+    includeHeader = tincludeHeader;
+    onlySelection = tonlySelection;
+    sep = tsep;
+    del = tdel;
+
+    if (type < 0)
+        type = exportType(sep, del);
+    if (type < 0)
+        throw QString::null;
+
+    std::auto_ptr<toListViewFormatter> pFormatter ( toListViewFormatterFactory::Instance().CreateObject(type) );
+    result =  pFormatter->getFormattedString(*this);
+
+    return result;
+}
+
+void toListView::exportData(std::map<QCString, QString> &ret, const QCString &prefix)
+{
+    int id = 0;
+    for (int i = 0;i < columns();i++)
+    {
+        id++;
+        ret[prefix + ":Labels:" + QString::number(id).latin1()] = header()->label(i);
+    }
+    std::map<QListViewItem *, int> itemMap;
+    QListViewItem *next = NULL;
+    id = 0;
+    if (rootIsDecorated())
+        ret[prefix + ":Decorated"] = QString::fromLatin1("Yes");
+    for (QListViewItem *item = firstChild();item;item = next)
+    {
+        id++;
+        QCString nam = prefix;
+        nam += ":Items:";
+        nam += QString::number(id).latin1();
+        nam += ":";
+        itemMap[item] = id;
+        if (item->parent())
+            ret[nam + "Parent"] = QString::number(itemMap[item->parent()]);
+        else
+            ret[nam + "Parent"] = QString::fromLatin1("0");
+        if (item->isOpen())
+            ret[nam + "Open"] = QString::fromLatin1("Yes");
+        for (int i = 0;i < columns();i++)
+        {
+            toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(item);
+            toResultViewCheck *chkItem = dynamic_cast<toResultViewCheck *>(item);
+            QString val;
+            if (resItem)
+                val = resItem->allText(i);
+            else if (chkItem)
+                val = resItem->allText(i);
+            else
+                val = item->text(i);
+            ret[nam + QString::number(i).latin1()] = val;
+        }
+
+        if (item->firstChild())
+            next = item->firstChild();
+        else if (item->nextSibling())
+            next = item->nextSibling();
+        else
+        {
+            next = item;
+            do
+            {
+                next = next->parent();
+            }
+            while (next && !next->nextSibling());
+            if (next)
+                next = next->nextSibling();
+        }
+    }
+}
+
+void toListView::importData(std::map<QCString, QString> &ret, const QCString &prefix)
+{
+    int id;
+    std::map<QCString, QString>::iterator i;
+    clear();
+
+    id = 1;
+    while ((i = ret.find(prefix + ":Labels:" + QString::number(id).latin1())) != ret.end())
+    {
+        addColumn((*i).second);
+        id++;
+    }
+
+    setRootIsDecorated(ret.find(prefix + ":Decorated") != ret.end());
+    setSorting(0);
+
+    std::map<int, QListViewItem *> itemMap;
+
+    id = 1;
+    while ((i = ret.find(prefix + ":Items:" + QString::number(id).latin1() + ":Parent")) != ret.end())
+    {
+        QCString nam = prefix + ":Items:" + QString::number(id).latin1() + ":";
+        int parent = (*i).second.toInt();
+        toResultViewItem *item;
+        if (parent)
+            item = new toResultViewItem(itemMap[parent], NULL);
+        else
+            item = new toResultViewItem(this, NULL);
+        if (!ret[nam + "Open"].isEmpty())
+            item->setOpen(true);
+        itemMap[id] = item;
+        for (int j = 0;j < columns();j++)
+            item->setText(j, ret[nam + QString::number(j).latin1()]);
+        id++;
+    }
+}
+
+bool toResultView::eof(void)
+{
+    return !Query || Query->eof();
+}
+
+QString toResultView::middleString()
+{
+    try
+    {
+        return connection().description();
+    }
+    catch (...)
+    {
+        return QString::null;
+    }
+}
+
+void toResultView::setup(bool readable, bool dispCol)
+{
+    Query = NULL;
+    ReadableColumns = readable;
+    NumberColumn = dispCol;
+    SortConnected = false;
+    if (NumberColumn)
+    {
+        addColumn(QString::fromLatin1("#"));
+        setColumnAlignment(0, AlignRight);
+    }
+    Filter = NULL;
+    readAllEnabled(true);
+    ReadAll = false;
+    SortColumn = -2;
+    SortAscending = true;
+}
+
+toResultView::toResultView(bool readable, bool dispCol, QWidget *parent, const char *name, WFlags f)
+        : toListView(parent, name, f)
+{
+    setup(readable, dispCol);
+}
+
+toResultView::toResultView(QWidget *parent, const char *name, WFlags f)
+        : toListView(parent, name, f)
+{
+    setup(false, true);
+}
+
+#define STOP_RESIZE_ROW 500
+
+QListViewItem *toResultView::createItem(QListViewItem *last, const QString &str)
+{
+    if (childCount() == STOP_RESIZE_ROW && resizeMode() == QListView::NoColumn)
+        for (int i = 0;i < columns();i++)
+            setColumnWidthMode(i, Manual);
+
+    return new toResultViewItem(this, last, str);
+}
+
+void toResultView::addItem(void)
+{
+    MaxColDisp = toConfigurationSingle::Instance().globalConfig(CONF_MAX_COL_DISP, DEFAULT_MAX_COL_DISP).toInt();
+    Gridlines = !toConfigurationSingle::Instance().globalConfig(CONF_DISPLAY_GRIDLINES, DEFAULT_DISPLAY_GRIDLINES).isEmpty();
+
+    try
+    {
+        if (Query && !Query->eof())
+        {
+            RowNumber++;
+            int disp = 0;
+            QListViewItem *last = LastItem;
+            LastItem = createItem(LastItem, QString::null);
+            if (NumberColumn)
+            {
+                LastItem->setText(0, QString::number(RowNumber));
+                disp = 1;
+            }
+            else
+                LastItem->setText(columns(), QString::number(RowNumber));
+            for (int j = 0;(j < Query->columns() || j == 0) && !Query->eof();j++)
+                LastItem->setText(j + disp, Query->readValue());
+            if (Filter && !Filter->check(LastItem))
+            {
+                delete LastItem;
+                LastItem = last;
+                RowNumber--;
+            }
+        }
+    }
+    TOCATCH
+}
+
+void toResultView::query(const QString &sql, const toQList &param)
+{
+    if (!handled())
+        return ;
+
+    if (!setSQLParams(sql, param))
+        return ;
+
+    delete Query;
+    Query = NULL;
+    LastItem = NULL;
+    RowNumber = 0;
+
+    clear();
+    while (columns() > 0)
+    {
+        removeColumn(0);
+    }
+    if (NumberColumn)
+    {
+        addColumn(QString::fromLatin1("#"));
+        setColumnAlignment(0, AlignRight);
+    }
+
+    if (Filter)
+        Filter->startingQuery();
+
+    try
+    {
+        Query = new toQuery(connection(), sql, param);
+        
+        //printf("Query: %s \n", (const char*) Query->sql);
+        toQDescList description = Query->describe();
+
+        bool hidden = false;
+
+        for (toQDescList::iterator i = description.begin();i != description.end();i++)
+        {
+            QString name = (*i).Name;
+            if (ReadableColumns)
+                toReadableColumn(name);
+
+            if (name.length() > 0 && name.at(0) != ' ')
+            {
+                if (hidden)
+                    throw tr("Can only hide last column in query");
+                if (name.at(0) == '-')
+                {
+                    addColumn(toTranslateMayby(sqlName(), name.right(name.length() - 1)));
+                    setColumnAlignment(columns() - 1, AlignRight);
+                }
+                else
+                {
+                    addColumn(toTranslateMayby(sqlName(), name));
+                    if ((*i).AlignRight)
+                        setColumnAlignment(columns() - 1, AlignRight);
+                }
+            }
+            else
+                hidden = true;
+        }
+        if (resizeMode() != QListView::NoColumn)
+            setResizeMode(resizeMode());
+
+        if (NumberColumn)
+            setSorting(0);
+        else
+            setSorting(Query->columns());
+
+        int MaxNumber = toConfigurationSingle::Instance().globalConfig(CONF_MAX_NUMBER, DEFAULT_MAX_NUMBER).toInt();
+        for (int j = 0;j < MaxNumber && !Query->eof();j++)
+            addItem();
+        if (ReadAll || MaxNumber < 0)
+            editReadAll();
+    }
+    TOCATCH
+    updateContents();
+}
+
+void toResultView::editReadAll(void)
+{
+    if (!ReadAll)
+        toStatusMessage(tr("Reading all entries"), false, false);
+    int i = 0;
+    while (!eof())
+    {
+        addItem();
+        i++;
+        if (i % 100 == 0)
+            qApp->processEvents();
+    }
+}
+
+toResultView::~toResultView()
+{
+    delete Query;
+    delete Filter;
+}
+
+void toResultView::keyPressEvent(QKeyEvent *e)
+{
+    if (e->key() == Key_PageDown)
+    {
+        QListViewItem *item = firstChild();
+        if (item && !eof() && item->height())
+        {
+            int num = visibleHeight() / item->height();
+            while (num > 0)
+            {
+                addItem();
+                num--;
+            }
+        }
+    }
+    QListView::keyPressEvent(e);
+}
+
+void toResultView::addMenues(QPopupMenu *menu)
+{
+    menu->insertSeparator();
+    menu->insertItem(tr("Read All"), TORESULT_READ_ALL);
+}
+
+void toResultView::menuCallback(int cmd)
+{
+    if (cmd == TORESULT_READ_ALL)
+        editReadAll();
+    else
+    {
+        if (cmd == TORESULT_EXPORT)
+            editReadAll();
+        toListView::menuCallback(cmd);
+    }
+}
+
+int toResultView::queryColumns(void) const
+{
+    return Query ? Query->columns() : 0;
+}
+
+void toResultView::setSorting(int col, bool asc)
+{
+    if (col == SortColumn && asc == SortAscending)
+        return ;
+    SortColumn = col;
+    SortAscending = asc;
+    if (((col == 0 && NumberColumn) || (col == columns() && !NumberColumn)) && asc == true)
+    {
+        col = -1;
+        toListView::setSorting(0, true);
+        sort();
+        QTimer::singleShot(1, this, SLOT(checkHeading()));
+    }
+    else if (SortConnected)
+    {
+        SortConnected = false;
+        disconnect(header(), SIGNAL(clicked(int)), this, SLOT(headingClicked(int)));
+    }
+    toListView::setSorting(col, asc);
+}
+
+void toResultView::headingClicked(int col)
+{
+    if (col == SortColumn)
+        setSorting(col, !SortAscending);
+    else
+        setSorting(col, true);
+}
+
+void toResultView::checkHeading(void)
+{
+    SortConnected = true;
+    connect(header(), SIGNAL(clicked(int)), this, SLOT(headingClicked(int)));
+}
+
+void toResultView::refresh(void)
+{
+    int lastSort = SortColumn;
+    bool lastAsc = SortAscending;
+    toResult::refresh();
+    if (lastSort >= 0)
+        setSorting(lastSort, lastAsc);
+}
+
+toResultListFormat::toResultListFormat(QWidget *parent, const char *name)
+        : toResultListFormatUI(parent, name, true)
+{
+    Format->insertItem(tr("Text"));
+    Format->insertItem(tr("Tab delimited"));
+    Format->insertItem(tr("CSV"));
+    Format->insertItem(tr("HTML"));
+    Format->insertItem(tr("SQL"));
+    int num = toConfigurationSingle::Instance().globalConfig(CONF_DEFAULT_FORMAT, "").toInt();
+    Format->setCurrentItem(num);
+    formatChanged(num);
+
+    Delimiter->setText(toConfigurationSingle::Instance().globalConfig(CONF_CSV_DELIMITER, DEFAULT_CSV_DELIMITER));
+    Separator->setText(toConfigurationSingle::Instance().globalConfig(CONF_CSV_SEPARATOR, DEFAULT_CSV_SEPARATOR));
+}
+
+void toResultListFormat::formatChanged(int pos)
+{
+    Separator->setEnabled(pos == 2);
+    Delimiter->setEnabled(pos == 2);
+}
+
+void toResultListFormat::saveDefault(void)
+{
+    toConfigurationSingle::Instance().globalSetConfig(CONF_CSV_DELIMITER, Delimiter->text());
+    toConfigurationSingle::Instance().globalSetConfig(CONF_CSV_SEPARATOR, Separator->text());
+    toConfigurationSingle::Instance().globalSetConfig(CONF_DEFAULT_FORMAT, QString::number(Format->currentItem()));
+}
+
+void toResultFilter::exportData(std::map<QCString, QString> &, const QCString &)
+{}
+
+void toResultFilter::importData(std::map<QCString, QString> &, const QCString &)
+{}

Added: kde-extras/tora/branches/upstream/current/src/toresultview.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toresultview.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toresultview.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,942 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TORESULTVIEW_H
+#define TORESULTVIEW_H
+
+#include "config.h"
+#include "toeditwidget.h"
+#include "toresult.h"
+#include "toresultlistformatui.h"
+
+#include <qlistview.h>
+
+#include <map>
+#include <algorithm>
+
+class QListViewItem;
+class QPopupMenu;
+class TOPrinter;
+class toListTip;
+class toQuery;
+class toResultCols;
+class toResultView;
+class toSQL;
+class toSearchReplace;
+
+/** Baseclass for filters to apply to the @ref toResultView to filter out
+ * rows that you don't want to add as items to the list.
+ */
+class toResultFilter
+{
+public:
+    toResultFilter()
+    { }
+    virtual ~toResultFilter()
+    { }
+    virtual void startingQuery(void)
+    { }
+    /** This function can inspect the item to be added and decide if it is
+     * valid for adding or not.
+     * @param item Item to inspect.
+     * @return If false is returned the item isn't added.
+     */
+    virtual bool check(const QListViewItem *item) = 0;
+    /** Create a copy of this filter.
+     * @return A newly created copy of this filter.
+     */
+    virtual toResultFilter *clone(void) = 0;
+    /** Export data to a map.
+     * @param data A map that can be used to recreate the data of a chart.
+     * @param prefix Prefix to add to the map.
+     */
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Import data
+     * @param data Data to read from a map.
+     * @param prefix Prefix to read data from.
+     */
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+};
+
+/** An item to display in a toListView or toResultView. They differ from normal
+ * QListViewItems in that they can have a tooltip and actually contain more text
+ * than is displayed in the cell of the listview.
+ */
+class toResultViewItem : public QListViewItem
+{
+    struct keyData
+    {
+        QString Data;
+        QString KeyAsc;
+        QString KeyDesc;
+        int Width;
+        enum { String, Number } Type;
+    };
+    int ColumnCount;
+    keyData *ColumnData;
+    QString firstText(int col) const;
+protected:
+    virtual int realWidth(const QFontMetrics &fm, const QListView *top, int column, const QString &txt) const;
+public:
+    /** Create a new item.
+     * @param parent Parent list view.
+     * @param after Insert after this item.
+     * @param buffer String to set as first column
+     */
+    toResultViewItem(QListView *parent, QListViewItem *after, const QString &buf = QString::null)
+            : QListViewItem(parent, after, QString::null)
+    {
+        ColumnData = NULL;
+        ColumnCount = 0;
+        if (buf)
+            setText(0, buf);
+    }
+    /** Create a new item.
+     * @param parent Parent to this item.
+     * @param after Insert after this item.
+     * @param buffer String to set as first column
+     */
+    toResultViewItem(QListViewItem *parent, QListViewItem *after, const QString &buf = QString::null)
+            : QListViewItem(parent, after, QString::null)
+    {
+        ColumnData = NULL;
+        ColumnCount = 0;
+        if (buf)
+            setText(0, buf);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual ~toResultViewItem()
+    {
+        delete[] ColumnData;
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void setText (int col, const QString &txt);
+    /** Set from database.
+     */
+    virtual void setText (int col, const toQValue &val);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void paintCell(QPainter * p, const QColorGroup & cg, int column, int width, int align);
+    /** Reimplemented for internal reasons.
+     */
+    virtual QString text(int col) const;
+    /** String to sort the data on. This is reimplemented so that numbers are sorted as numbers
+     * and not as strings.
+     * @param col Column
+     * @param asc Wether to sort ascending or not.
+     */
+    virtual QString key(int col, bool asc) const
+    {
+        if (col >= ColumnCount)
+            return QString::null;
+        return asc ? ColumnData[col].KeyAsc : ColumnData[col].KeyDesc;
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual int width(const QFontMetrics &, const QListView *, int col) const
+    {
+        if (col >= ColumnCount)
+            return 0;
+        return ColumnData[col].Width;
+    }
+    /** Get all text for this item. This is used for copying, drag & drop and memo editing etc.
+     * @param col Column.
+     * @return All of the text.
+     */
+    virtual QString allText(int col) const
+    {
+        if (col >= ColumnCount)
+            return QString::null;
+        return ColumnData[col].Data;
+    }
+    /** Get the text to be displayed as tooltip for this item.
+     * @param col Column.
+     * @return The text to display as tooltip.
+     */
+    virtual QString tooltip(int col) const
+    {
+        return allText(col);
+    }
+};
+
+/** This item expands the height to commodate all lines in the input buffer.
+ */
+class toResultViewMLine : public toResultViewItem
+{
+private:
+    /** Number of lines in the largest row.
+     */
+    int Lines;
+protected:
+    virtual int realWidth(const QFontMetrics &fm, const QListView *top, int column, const QString &txt) const;
+public:
+    /** Create a new item.
+     * @param parent Parent list view.
+     * @param after Insert after this item.
+     * @param buffer String to set as first column
+     */
+    toResultViewMLine(QListView *parent, QListViewItem *after, const QString &buf = QString::null)
+            : toResultViewItem(parent, after, QString::null)
+    {
+        Lines = 1;
+        if (buf)
+            setText(0, buf);
+    }
+    /** Create a new item.
+     * @param parent Parent to this item.
+     * @param after Insert after this item.
+     * @param buffer String to set as first column
+     */
+    toResultViewMLine(QListViewItem *parent, QListViewItem *after, const QString &buf = QString::null)
+            : toResultViewItem(parent, after, QString::null)
+    {
+        Lines = 1;
+        if (buf)
+            setText(0, buf);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void setText (int, const QString &);
+    /** Set from database.
+     */
+    virtual void setText (int col, const toQValue &val);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void setup(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual QString text(int col) const
+    {
+        return toResultViewItem::allText(col);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void paintCell (QPainter *pnt, const QColorGroup & cg, int column, int width, int alignment);
+};
+
+/** An item to display in a toListView or toResultView. They differ from normal
+ * QListViewItems in that they can have a tooltip and actually contain more text
+ * than is displayed in the cell of the listview.
+ */
+class toResultViewCheck : public QCheckListItem
+{
+    struct keyData
+    {
+        QString Data;
+        QString KeyAsc;
+        QString KeyDesc;
+        int Width;
+        enum { String, Number } Type;
+    };
+    int ColumnCount;
+    keyData *ColumnData;
+protected:
+    virtual int realWidth(const QFontMetrics &fm, const QListView *top, int column, const QString &txt) const;
+    QString firstText(int col) const;
+public:
+    /** Create a new item.
+     * @param parent Parent list view.
+     * @param text Text of first column.
+     * @param type Type of check on this item.
+     */
+    toResultViewCheck(QListView *parent, const QString &text, QCheckListItem::Type type = Controller)
+            : QCheckListItem(parent, QString::null, type)
+    {
+        ColumnData = NULL;
+        ColumnCount = 0;
+        if (!text.isNull())
+            setText(0, text);
+    }
+    /** Create a new item.
+     * @param parent Parent item.
+     * @param text Text of first column.
+     * @param type Type of check on this item.
+     */
+    toResultViewCheck(QListViewItem *parent, const QString &text, QCheckListItem::Type type = Controller)
+            : QCheckListItem(parent, QString::null, type)
+    {
+        ColumnData = NULL;
+        ColumnCount = 0;
+        if (!text.isNull())
+            setText(0, text);
+    }
+    /** Create a new item.
+     * @param parent Parent list view.
+     * @param after After last item.
+     * @param text Text of first column.
+     * @param type Type of check on this item.
+     */
+    toResultViewCheck(QListView *parent, QListViewItem *after, const QString &text, QCheckListItem::Type type = Controller);
+    /** Create a new item.
+     * @param parent Parent item.
+     * @param after After last item.
+     * @param text Text of first column.
+     * @param type Type of check on this item.
+     */
+    toResultViewCheck(QListViewItem *parent, QListViewItem *after, const QString &text, QCheckListItem::Type type = Controller);
+    /** Reimplemented for internal reasons.
+     */
+    virtual ~toResultViewCheck()
+    {
+        delete[] ColumnData;
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void setText (int col, const QString &txt);
+    /** Set from database.
+     */
+    virtual void setText (int col, const toQValue &val);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void paintCell(QPainter * p, const QColorGroup & cg, int column, int width, int align);
+    /** Reimplemented for internal reasons.
+     */
+    virtual QString text(int col) const;
+    /** String to sort the data on. This is reimplemented so that numbers are sorted as numbers
+     * and not as strings.
+     * @param col Column
+     * @param asc Wether to sort ascending or not.
+     */
+    /** String to sort the data on. This is reimplemented so that numbers are sorted as numbers
+     * and not as strings.
+     * @param col Column
+     * @param asc Wether to sort ascending or not.
+     */
+    virtual QString key(int col, bool asc) const
+    {
+        if (col >= ColumnCount)
+            return QString::null;
+        return asc ? ColumnData[col].KeyAsc : ColumnData[col].KeyDesc;
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual int width(const QFontMetrics &, const QListView *, int col) const
+    {
+        if (col >= ColumnCount)
+            return 0;
+        return ColumnData[col].Width;
+    }
+    /** Get all text for this item. This is used for copying, drag & drop and memo editing etc.
+     * @param col Column.
+     * @return All of the text.
+     */
+    virtual QString allText(int col) const
+    {
+        if (col >= ColumnCount)
+            return QString::null;
+        return ColumnData[col].Data;
+    }
+    /** Get the text to be displayed as tooltip for this item.
+     * @param col Column.
+     * @return The text to display as tooltip.
+     */
+    virtual QString tooltip(int col) const
+    {
+        return allText(col);
+    }
+};
+
+/** This item expands the height to commodate all lines in the input buffer.
+ */
+class toResultViewMLCheck : public toResultViewCheck
+{
+private:
+    /** Number of lines in the largest row.
+     */
+    int Lines;
+protected:
+    virtual int realWidth(const QFontMetrics &fm, const QListView *top, int column, const QString &txt) const;
+public:
+    /** Create a new item.
+     * @param parent Parent list view.
+     * @param text Text of first column.
+     * @param type Type of check on this item.
+     */
+    toResultViewMLCheck(QListView *parent, const QString &text, QCheckListItem::Type type = Controller)
+            : toResultViewCheck(parent, QString::null, type)
+    {
+        Lines = 1;
+        if (!text.isNull())
+            setText(0, text);
+    }
+    /** Create a new item.
+     * @param parent Parent item.
+     * @param text Text of first column.
+     * @param type Type of check on this item.
+     */
+    toResultViewMLCheck(QListViewItem *parent, const QString &text, QCheckListItem::Type type = Controller)
+            : toResultViewCheck(parent, QString::null, type)
+    {
+        Lines = 1;
+        if (!text.isNull())
+            setText(0, text);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void setup(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void setText (int, const QString &);
+    /** Set from database.
+     */
+    virtual void setText (int col, const toQValue &val);
+    /** Reimplemented for internal reasons.
+     */
+    virtual QString text(int col) const
+    {
+        return toResultViewCheck::allText(col);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void paintCell (QPainter *pnt, const QColorGroup & cg, int column, int width, int alignment);
+};
+
+/**
+ * The TOra implementation of a listview which offers a few extra goodies to the baseclass.
+ * First of all tooltip which can display contents that doesn't fit in the list, printing,
+ * integration into toMain with Edit menu etc, drag & drop, export as file, display item
+ * as memo and context menu.
+ */
+class toListView : public QListView, public toEditWidget
+{
+    Q_OBJECT
+
+    bool FirstSearch;
+
+    /** Name of this list, used primarily when printing. Also used to be able to edit
+     * SQL displayed in @ref toResultView.
+     */
+    QString Name;
+    /** Used to display tip on fields.
+     */
+    toListTip *AllTip;
+    /** Item selected when popup menu displayed.
+     */
+    QListViewItem *MenuItem;
+    /** Column of item selected when popup menu displayed.
+     */
+    int MenuColumn;
+    /** Popup menu if available.
+     */
+    QPopupMenu *Menu;
+    /** Last move, used to determine if drag has started.
+     */
+    QPoint LastMove;
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void contentsMouseDoubleClickEvent (QMouseEvent *e);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void contentsMousePressEvent(QMouseEvent *e);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void contentsMouseReleaseEvent(QMouseEvent *e);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void contentsMouseMoveEvent (QMouseEvent *e);
+
+    /** Used to print one page of the list.
+     * @param printer Printer to print to.
+     * @param painter Painter to print page to.
+     * @param top Item at top of page.
+     * @param column Column to start printing at. Will be changed to where you are when done.
+     * @param level The indentation level of the top item.
+     * @param pageNo Page number.
+     * @param paint If just testing to determine how many pages are needed set this to false.
+     * @return The next item to print to (Pass as top to this function).
+     */
+    virtual QListViewItem *printPage(TOPrinter *printer, QPainter *painter, QListViewItem *top,
+                                     int &column, int &level, int pageNo, bool paint = true);
+    int exportType(QString &separator, QString &delimiter);
+
+    QString owner;
+    QString objectName;
+
+    bool includeHeader;
+    bool onlySelection;
+    QString sep;
+    QString del;
+
+public:
+     bool getIncludeHeader(){return includeHeader;};
+     bool getOnlySelection(){return onlySelection;};
+     QString getSep(){return sep;};
+     QString getDel(){return del;};
+
+    /** Create new list view.
+     * @param parent Parent of list.
+     * @param name Name of list.
+     * @param f Widget flags.
+     */
+    toListView(QWidget *parent, const char *name = NULL, WFlags f = 0);
+    virtual ~toListView();
+
+    /** Get SQL name of list.
+     */
+    virtual QString sqlName(void)
+    {
+        return Name;
+    }
+    /** Set SQL name of list.
+     */
+    virtual void setSQLName(const QString &name)
+    {
+        Name = name;
+    }
+
+    /** Set owner
+     * introduced to get type information for fields
+     */
+    virtual void setOwner(QString const & tOwner)
+    {
+        owner = tOwner;
+    }
+
+
+    /** Set object name 
+     * introduced to get type information for fields
+     */
+    virtual void setObjectName(QString const & tObjectName)
+    {
+        objectName = tObjectName;
+    }
+
+    /** Get owner
+     * introduced to get type information for fields
+     */
+    virtual QString getOwner()
+    {
+        return owner;
+    }
+
+
+    /** Get object name 
+     * introduced to get type information for fields
+     */
+    virtual QString getObjectName()
+    {
+        return objectName;
+    }
+
+    /** Get the whole text for the item and column selected when menu was poped up.
+     */
+    QString menuText(void);
+
+    /** Print this list
+     */
+    virtual void editPrint(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void focusInEvent (QFocusEvent *e);
+    /** The string to be displayed in the middle of the footer when printing.
+     * @return String to be placed in middle.
+     */
+    virtual QString middleString()
+    {
+        return QString::null;
+    }
+    /** Adds option to add menues to the popup menu before it is displayed.
+     * @param menu Menu to add entries to.
+     */
+    virtual void addMenues(QPopupMenu *menu);
+    /** Export list as a string.
+     * @param includeHeader Include header.
+     * @param onlySelection Only include selection.
+     * @param type Format of exported list.
+     * @param separator Separator for CSV format.
+     * @param delimiter Delimiter for CSV format.
+     */
+    virtual QString exportAsText(bool includeHeader, bool onlySelection, int type = -1, const QString &separator = ";", const QString &delimiter = "\"");
+    /** Export list as file.
+     */
+    virtual bool editSave(bool ask);
+
+    /** Select all contents.
+     */
+    virtual void editSelectAll(void)
+    {
+        selectAll(true);
+    }
+
+    /** Move to top of data
+     */
+    virtual void searchTop(void)
+    {
+        if (firstChild())
+            setCurrentItem(firstChild());
+        FirstSearch = true;
+    }
+    /** Search for next entry
+     * @return True if found, should select the found text.
+     */
+    virtual bool searchNext(toSearchReplace *search);
+    /** Check if data can be modified by search
+     * @param all If true can replace all, otherwise can replace right now.
+     */
+    virtual bool searchCanReplace(bool all);
+
+    /** Export data to a map.
+     * @param data A map that can be used to recreate the data of a chart.
+     * @param prefix Prefix to add to the map.
+     */
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Import data
+     * @param data Data to read from a map.
+     * @param prefix Prefix to read data from.
+     */
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Create transposed copy of list
+     * @return Pointer to newly allocated transposed listview.
+     */
+    virtual toListView *copyTransposed(void);
+signals:
+    /** Called before the menu is displayed so that you can add items to it before it is shown.
+     * @param menu Pointer to the menu about to be shown.
+     */
+    void displayMenu(QPopupMenu *menu);
+public slots:
+    /** set the popup menu --> see displayMenu()
+     * @param item Item to display.
+     */
+    virtual void setDisplayMenu(QPopupMenu *item);
+    /** Display the menu at the given point and column.
+     * @param item Item to display.
+     * @param pnt Point to display menu at.
+     * @param col Column to display menu for.
+     */
+    virtual void displayMenu(QListViewItem *item, const QPoint &pnt, int col);
+    /** Display memo of selected menu column
+     */
+    virtual void displayMemo(void);
+protected slots:
+    /** Callback when menu is selected. If you override this make sure you
+     * call the parents function when you have parsed your entries.
+     * @param id ID of the menu item selected.
+     */
+    virtual void menuCallback(int id);
+};
+
+/**
+ * This class defines a list which displays the result of a query.
+ *
+ * One special thing to know about this class is that columns at the end in which the
+ * description start with a '-' characters are not displayed.
+ */
+
+class toResultView : public toListView, public toResult
+{
+    Q_OBJECT
+
+    int SortColumn;
+    bool SortAscending;
+    bool SortConnected;
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void keyPressEvent (QKeyEvent * e);
+protected:
+    /** Connection to execute statement on.
+     */
+    toQuery *Query;
+    /** Last added item.
+     */
+    QListViewItem *LastItem;
+
+    /** Number of rows in list.
+     */
+    int RowNumber;
+    /** If column names are to be made more readable.
+     */
+    bool ReadableColumns;
+    /** Wether to display first number column or not.
+     */
+    bool NumberColumn;
+    /** If all the available data should be read at once.
+     */
+    bool ReadAll;
+    /** Input filter if any.
+     */
+    toResultFilter *Filter;
+
+    /** Setup the list.
+     * @param readable Wether to display first number column or not.
+     * @param dispCol Wether to display first number column or not.
+     */
+    void setup(bool readable, bool dispCol);
+
+    /** Check if end of query is detected yet or not.
+     */
+    virtual bool eof(void);
+
+public:
+    /** Create list.
+     * @param readable Indicate if columns are to be made more readable. This means that the
+     * descriptions are capitalised and '_' are converted to ' '.
+     * @param numCol If number column is to be displayed.
+     * @param parent Parent of list.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toResultView(bool readable, bool numCol, QWidget *parent, const char *name = NULL, WFlags f = 0);
+    /** Create list. The columns are not readable and the number column is displayed.
+     * @param parent Parent of list.
+     * @param name Name of widget.
+     * @param f Widget flags.
+     */
+    toResultView(QWidget *parent, const char *name = NULL, WFlags f = 0);
+    ~toResultView();
+
+    /** Set the read all flag.
+     * @param all New value of flag.
+     */
+    void setReadAll(bool all)
+    {
+        ReadAll = all;
+    }
+
+    /** Get read all flag
+     * @return Value of read all flag.
+     */
+    virtual void editReadAll(void);
+
+    /** Get the number of columns in query.
+     * @return Columns in query.
+     */
+    int queryColumns() const;
+
+    /** Get the query used to execute this.
+     */
+    toQuery *query()
+    {
+        return Query;
+    }
+
+    /** Set a filter to this list.
+     * @param filter The new filter or NULL if no filter is to be used.
+     */
+    void setFilter(toResultFilter *filter)
+    {
+        Filter = filter;
+    }
+    /** Get the current filter.
+     * @return Current filter or NULL if no filter.
+     */
+    toResultFilter *filter(void)
+    {
+        return Filter;
+    }
+
+    /** Get number column flag.
+     * @return Wether or not the numbercolumn is displayed.
+     */
+    bool numberColumn() const
+    {
+        return NumberColumn;
+    }
+    /** Set number column flag. Don't change this while a query is running. Observe
+     * that not all descendants of this class support changing this on the fly. The base
+     * class and @ref toResultLong does though.
+     * @param val New value of number column.
+     */
+    void setNumberColumn(bool val)
+    {
+        NumberColumn = val;
+    }
+
+    /** Get readable column flag.
+     * @return Wether or not the readable column names.
+     */
+    bool readableColumn() const
+    {
+        return ReadableColumns;
+    }
+    /** Set readable column flag.
+     */
+    void setReadableColumns(bool val)
+    {
+        ReadableColumns = val;
+    }
+
+    /** Create a new item in this list. Can be used if a special kind of item is wanted
+     * in the list. The rest of the columns will be filled with setText.
+     * @param last Where to insert the item.
+     * @param str String to set first column to.
+     * @return Allocated item.
+     */
+    virtual QListViewItem *createItem(QListViewItem *last, const QString &str);
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void query(const QString &sql, const toQList &param);
+
+    /** Get SQL name of list.
+     */
+    virtual QString sqlName(void)
+    {
+        return toListView::sqlName();
+    }
+    /** Set SQL name of list.
+     */
+    virtual void setSQLName(const QString &name)
+    {
+        toListView::setSQLName(name);
+    }
+
+    // Why are these needed?
+#if 1
+    /** Set the SQL statement of this list
+     * @param sql String containing statement.
+     */
+    void setSQL(const QString &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set the SQL statement of this list. This will also affect @ref Name.
+     * @param sql SQL containing statement.
+     */
+    void setSQL(const toSQL &sql)
+    {
+        toResult::setSQL(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const QString &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql)
+    {
+        toResult::query(sql);
+    }
+    /** Set new SQL and run query.
+     * @param sql New sql.
+     * @see setSQL
+     */
+    void query(const toSQL &sql, toQList &par)
+    {
+        toResult::query(sql, par);
+    }
+#endif
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editPrint(void)
+    {
+        editReadAll();
+        toListView::editPrint();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual QString middleString();
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void addMenues(QPopupMenu *);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void setSorting(int col, bool asc = true);
+    /** Reimplemented for internal reasons.
+     */
+    virtual int sortColumn() const
+    {
+        return SortColumn;
+    }
+public slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void refresh(void);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1)
+    {
+        toResult::changeParams(Param1);
+    }
+    /** Reimplemented For internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2)
+    {
+        toResult::changeParams(Param1, Param2);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void changeParams(const QString &Param1, const QString &Param2, const QString &Param3)
+    {
+        toResult::changeParams(Param1, Param2, Param3);
+    }
+    /** Try to add an item to the list if available.
+     */
+    virtual void addItem(void);
+    /** Handle any connection by default
+     */
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+private slots:
+    void headingClicked(int col);
+    void checkHeading(void);
+protected slots:
+    /** Reimplemented for internal reasons.
+     */
+    virtual void menuCallback(int);
+};
+
+/***
+ * Used internally by toListView.
+ * @internal
+ */
+
+class toResultListFormat : public toResultListFormatUI
+{
+    Q_OBJECT
+public:
+    toResultListFormat(QWidget *parent, const char *name);
+    void saveDefault(void);
+public slots:
+    virtual void formatChanged(int pos);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/torollback.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/torollback.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/torollback.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,963 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tohelp.h"
+#include "tomain.h"
+#include "tomemoeditor.h"
+#include "toresultitem.h"
+#include "toresultlong.h"
+#include "toresultview.h"
+#include "torollback.h"
+#include "tosgastatement.h"
+#include "tosql.h"
+#include "tostoragedefinition.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <list>
+
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qgroupbox.h>
+#include <qheader.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qlistview.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qpainter.h>
+#include <qpopupmenu.h>
+#include <qpushbutton.h>
+#include <qregexp.h>
+#include <qsplitter.h>
+#include <qtabwidget.h>
+#include <qtimer.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qvariant.h>
+#include <qwhatsthis.h>
+#include <qwidget.h>
+#include <qworkspace.h>
+
+#include "torollback.moc"
+#include "torollbackdialogui.moc"
+
+#include "icons/addrollback.xpm"
+#include "icons/offline.xpm"
+#include "icons/online.xpm"
+#include "icons/refresh.xpm"
+#include "icons/torollback.xpm"
+#include "icons/trash.xpm"
+
+#define CONF_NO_EXEC    "NoExec"
+#define CONF_NEED_READ  "NeedRead"
+#define CONF_NEED_TWO   "NeedTwo"
+#define CONF_ALIGN_LEFT "AlignLeft"
+#define CONF_OLD_ENABLE "OldEnable"
+
+class toRollbackPrefs : public QGroupBox, public toSettingTab
+{
+    QCheckBox *OldEnable;
+    QCheckBox *NoExec;
+    QCheckBox *NeedRead;
+    QCheckBox *NeedTwo;
+    QCheckBox *AlignLeft;
+
+    toTool *Tool;
+
+public:
+    toRollbackPrefs(toTool *tool, QWidget* parent = 0, const char* name = 0);
+    virtual void saveSetting(void);
+};
+
+toRollbackPrefs::toRollbackPrefs(toTool *tool, QWidget* parent, const char* name)
+        : QGroupBox(1, Horizontal, parent, name), toSettingTab("rollback.html#options"), Tool(tool)
+{
+    setTitle(qApp->translate("toRollbackPrefs", "Rollback Tool" ));
+
+    OldEnable = new QCheckBox(this, "OldEnable");
+    OldEnable->setText(qApp->translate("toRollbackPrefs", "&Enable snapshot too old detection." ));
+    QToolTip::add
+        (OldEnable, qApp->translate("toRollbackPrefs", "Enable snapshot too old detection, will put load on large databases."));
+
+    AlignLeft = new QCheckBox(this, "AlignLeft");
+    AlignLeft->setText(qApp->translate("toRollbackPrefs", "&Disregard start extent." ));
+    AlignLeft->setEnabled(false);
+    connect(OldEnable, SIGNAL(toggled(bool)), AlignLeft, SLOT(setEnabled(bool)));
+    QToolTip::add
+        (AlignLeft, qApp->translate("toRollbackPrefs", "Always start from the left border when displaying extent usage."));
+
+    NoExec = new QCheckBox(this, "NoCopy");
+    NoExec->setText(qApp->translate("toRollbackPrefs", "&Restart reexecuted statements" ));
+    NoExec->setEnabled(false);
+    connect(OldEnable, SIGNAL(toggled(bool)), NoExec, SLOT(setEnabled(bool)));
+    QToolTip::add
+        (NoExec, qApp->translate("toRollbackPrefs", "Start statements again that have been reexecuted."));
+
+    NeedRead = new QCheckBox(this, "Needread");
+    NeedRead->setText(qApp->translate("toRollbackPrefs", "&Must read buffers" ));
+    NeedRead->setEnabled(false);
+    connect(OldEnable, SIGNAL(toggled(bool)), NeedRead, SLOT(setEnabled(bool)));
+    QToolTip::add
+        (NeedRead, qApp->translate("toRollbackPrefs", "Don't display statements that have not read buffers."));
+
+    NeedTwo = new QCheckBox(this, "NeedTwo");
+    NeedTwo->setText(qApp->translate("toRollbackPrefs", "&Exclude first appearance" ));
+    NeedTwo->setEnabled(false);
+    connect(OldEnable, SIGNAL(toggled(bool)), NeedTwo, SLOT(setEnabled(bool)));
+    QToolTip::add
+        (NeedTwo, qApp->translate("toRollbackPrefs", "A statement must be visible at least two consecutive polls to be displayed."));
+
+    if (!tool->config(CONF_OLD_ENABLE, "").isEmpty())
+        OldEnable->setChecked(true);
+    if (!tool->config(CONF_NO_EXEC, "Yes").isEmpty())
+        NoExec->setChecked(true);
+    if (!tool->config(CONF_NEED_READ, "Yes").isEmpty())
+        NeedRead->setChecked(true);
+    if (!tool->config(CONF_NEED_TWO, "Yes").isEmpty())
+        NeedTwo->setChecked(true);
+    if (!tool->config(CONF_ALIGN_LEFT, "Yes").isEmpty())
+        AlignLeft->setChecked(true);
+}
+
+void toRollbackPrefs::saveSetting(void)
+{
+    Tool->setConfig(CONF_NO_EXEC, NoExec->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_NEED_READ, NeedRead->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_NEED_TWO, NeedTwo->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_ALIGN_LEFT, AlignLeft->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_OLD_ENABLE, OldEnable->isChecked() ? "Yes" : "");
+}
+
+class toRollbackTool : public toTool
+{
+protected:
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(torollback_xpm);
+    }
+public:
+    toRollbackTool()
+            : toTool(220, "Rollback Segments")
+    { }
+    virtual const char *menuItem()
+    {
+        return "Rollback Segments";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        return new toRollback(parent, connection);
+    }
+    virtual QWidget *configurationTab(QWidget *parent)
+    {
+        return new toRollbackPrefs(this, parent);
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toRollbackTool RollbackTool;
+
+static toSQL SQLTablespace("toRollbackDialog:TablespaceName",
+                           "select tablespace_name from sys.dba_tablespaces order by tablespace_name",
+                           "Get a list of tablespace names, should only have one column and same binds");
+
+toRollbackDialog::toRollbackDialog(toConnection &Connection, QWidget* parent, const char* name)
+        : toRollbackDialogUI(parent, name, true)
+{
+    toHelp::connectDialog(this);
+
+    try
+    {
+        toQuery q(Connection, SQLTablespace);
+        while (!q.eof())
+            Tablespace->insertItem(q.readValue());
+    }
+    catch (...)
+    {}
+    connect(Tablespace, SIGNAL(textChanged(const QString &)),
+            this, SLOT(valueChanged(const QString &)));
+
+    Storage = new toStorageDefinition(DialogTabs);
+    Storage->forRollback(true);
+    DialogTabs->addTab(Storage, tr("Storage"));
+
+    OkButton->setEnabled(false);
+}
+
+std::list<QString> toRollbackDialog::sql(void)
+{
+    QString str(QString::fromLatin1("CREATE "));
+    if (Public->isChecked())
+        str.append(QString::fromLatin1("PUBLIC "));
+    str.append(QString::fromLatin1("ROLLBACK SEGMENT \""));
+    str.append(Name->text());
+    str.append(QString::fromLatin1("\" TABLESPACE \""));
+    str.append(Tablespace->currentText());
+    str.append(QString::fromLatin1("\""));
+    std::list<QString> lst = Storage->sql();
+    for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+    {
+        str += QString::fromLatin1(" ");
+        str += *i;
+    }
+    std::list<QString> ret;
+    toPush(ret, str);
+    return ret;
+}
+
+void toRollbackDialog::displaySQL(void)
+{
+    std::list<QString> lines = sql();
+    QString res;
+    for (std::list<QString>::iterator i = lines.begin();i != lines.end();i++)
+    {
+        res += *i;
+        res += QString::fromLatin1(";\n");
+    }
+    if (res.length() > 0)
+    {
+        toMemoEditor memo(this, res, -1, -1, true, true);
+        memo.exec();
+    }
+    else
+        toStatusMessage(tr("No changes made"), false, false);
+}
+
+void toRollbackDialog::valueChanged(const QString &)
+{
+    if (Name->text().isEmpty() ||
+            Tablespace->currentText().isEmpty())
+        OkButton->setEnabled(false);
+    else
+        OkButton->setEnabled(true);
+}
+
+#define MIN_HEIGHT 4
+#define TRANSCOL 17
+
+static bool BarsAlignLeft = true;
+
+static void PaintBars(QListViewItem *item, QPainter *p, const QColorGroup & cg,
+                      int width, std::list<double> &val, std::list<double> &maxExt, std::list<double> &curExt)
+{
+    if ( val.empty() )
+    {
+        p->fillRect(0, 0, width, item->height(),
+                    QBrush(item->isSelected() ? cg.highlight() : cg.base()));
+    }
+    else
+    {
+        int num = 0;
+        int lastHeight = 0;
+
+        std::list<double>::iterator j = curExt.begin();
+        std::list<double>::iterator k = maxExt.begin();
+        for (std::list<double>::iterator i = val.begin();
+                i != val.end() && j != curExt.end() && k != maxExt.end();
+                i++, j++, k++)
+        {
+            num++;
+
+            QBrush bg(item->isSelected() ? cg.highlight() : cg.base());
+            QBrush fg(num % 2 ? Qt::blue : Qt::red);
+
+            double start = (*i);
+            double end = (*j);
+
+            if (BarsAlignLeft)
+            {
+                end -= start;
+                start = 0;
+                if (end < 0)
+                    end += (*k);
+            }
+
+            int height = item->height() * num / val.size();
+            int pos = int(start * width / (*k));
+            int posEnd = int(end * width / (*k));
+
+            if (start > end)
+            {
+                p->fillRect(0, lastHeight, posEnd, height, fg);
+                p->fillRect(posEnd, lastHeight, pos, height, bg);
+                p->fillRect(pos, lastHeight, width, height, fg);
+            }
+            else
+            {
+                p->fillRect(0, lastHeight, pos, height, bg);
+                p->fillRect(pos, lastHeight, posEnd, height, fg);
+                p->fillRect(posEnd, lastHeight, width, height, bg);
+            }
+            lastHeight = height;
+        }
+    }
+}
+
+static toSQL SQLRollback("toRollback:Information",
+                         "SELECT a.segment_name \"Segment\",\n"
+                         "       a.owner \"Owner\",\n"
+                         "       a.tablespace_name \"Tablespace\",\n"
+                         "       a.status \"Status\",\n"
+                         "       b.xacts \"-Transactions\",\n"
+                         "       ROUND ( a.initial_extent / :unit<char[100]>,\n"
+                         "        3 ) \"-Initial (MB)\",\n"
+                         "       ROUND ( a.next_extent / :unit<char[100]>,\n"
+                         "        3 ) \"-Next (MB)\",\n"
+                         "       a.pct_increase \"-PCT Increase\",\n"
+                         "       ROUND ( b.rssize / :unit<char[100]>,\n"
+                         "        3 ) \"-Current (MB)\",\n"
+                         "       ROUND ( b.optsize / :unit<char[100]>,\n"
+                         "        3 ) \"-Optimal (MB)\",\n"
+                         "       ROUND ( b.aveactive / :unit<char[100]>,\n"
+                         "        3 ) \"-Used (MB)\",\n"
+                         "       b.EXTENTS \"-Extents\",\n"
+                         "       b.CurExt \"-Current\",\n"
+                         "       b.CurBlk \"-Block\",\n"
+                         "       b.gets \"-Reads\",\n"
+                         "       ROUND ( ( b.gets - b.waits ) * 100 / b.gets,\n"
+                         "        2 ) || '%' \"-Hitrate\",\n"
+                         "       a.segment_id \" USN\"\n"
+                         "  FROM sys.dba_rollback_segs a,\n"
+                         "       v$rollstat b\n"
+                         " WHERE a.segment_id = b.usn ( + )\n"
+                         " ORDER BY a.segment_name",
+                         "Get information about rollback segments.");
+
+static toSQL SQLStartExt("toRollback:StartExtent",
+                         "select to_char(b.start_uext)\n"
+                         "  from v$transaction b\n"
+                         " where b.xidusn = :f1<char[40]>",
+                         "Get information about current extent in rollback of transactions");
+
+class toRollbackView : public toResultView
+{
+public:
+class rollbackItem : public toResultViewItem
+    {
+    public:
+        rollbackItem(QListView *parent, QListViewItem *after, const QString &buf = QString::null)
+                : toResultViewItem(parent, after, buf)
+        { }
+        virtual void paintCell (QPainter *pnt, const QColorGroup & cg,
+                                int column, int width, int alignment)
+        {
+            if (column == 4)
+            {
+                std::list<double> items;
+                std::list<double> curExt;
+                std::list<double> maxExt;
+                for (int i = TRANSCOL;!text(i).isEmpty();i++)
+                {
+                    items.insert(items.end(), text(i).toDouble());
+                    curExt.insert(curExt.end(), text(12).toDouble());
+                    maxExt.insert(maxExt.end(), text(11).toDouble());
+                }
+                PaintBars(this, pnt, cg, width, items,
+                          maxExt, curExt);
+                QPen pen(isSelected() ? cg.highlightedText() : cg.foreground());
+                pnt->setPen(pen);
+                pnt->drawText(0, 0, width, height(), AlignRight, text(column));
+            }
+            else
+                toResultViewItem::paintCell(pnt, cg, column, width, alignment);
+        }
+
+        virtual void setup(void)
+        {
+            toResultViewItem::setup();
+
+            int i;
+            for (i = TRANSCOL;!text(i).isEmpty();i++)
+                ;
+            setHeight(std::max(toResultViewItem::height(), MIN_HEIGHT*(i - TRANSCOL)));
+        }
+    };
+
+    virtual QListViewItem *createItem(QListViewItem *last, const QString &str)
+    {
+        return new rollbackItem(this, last, str);
+    }
+
+    toRollbackView(QWidget *parent)
+            : toResultView(false, false, parent)
+    {
+        setSQL(SQLRollback);
+    }
+    virtual void query(const QString &sql, const toQList &)
+    {
+        QString unit = toConfigurationSingle::Instance().globalConfig(CONF_SIZE_UNIT, DEFAULT_SIZE_UNIT);
+
+        toQList par;
+        par.insert(par.end(), QString::number(toSizeDecode(unit)));
+        toResultView::query(sql, (const toQList &)par);
+        QRegExp repl(QString::fromLatin1("(MB)"));
+        QString res = QString::fromLatin1("(");
+        res += unit;
+        res += QString::fromLatin1(")");
+        for (int i = 0;i < columns();i++)
+        {
+            QString str = header()->label(i);
+            str.replace(repl, res);
+            header()->setLabel(i, str);
+        }
+        try
+        {
+            toQuery trx(connection());
+            for (QListViewItem *i = firstChild();i;i = i->nextSibling())
+            {
+                toQList args;
+                toPush(args, toQValue(QString(i->text(TRANSCOL - 1))));
+                trx.execute(SQLStartExt, args);
+                for (int j = TRANSCOL;!trx.eof();j++)
+                    i->setText(j, trx.readValueNull());
+            }
+        }
+        TOCATCH
+    }
+};
+
+static toSQL SQLStatementInfo("toRollback:StatementInfo",
+                              "SELECT TO_CHAR(SYSDATE),\n"
+                              "       a.User_Name,\n"
+                              "       a.SQL_Text,\n"
+                              "       a.Address||':'||a.Hash_Value,\n"
+                              "       TO_CHAR(SUM(b.Executions)),\n"
+                              "       TO_CHAR(SUM(b.Buffer_Gets))\n"
+                              "  FROM v$open_cursor a,v$sql b\n"
+                              " WHERE a.Address = b.Address AND a.Hash_Value = b.Hash_Value\n"
+                              " GROUP BY TO_CHAR(SYSDATE),a.user_name,a.sql_text,a.address||':'||a.hash_value",
+                              "Get information about statements in SGA. All columns must "
+                              "be in exactly the same order.");
+static toSQL SQLCurrentExtent("toRollback:CurrentExtent",
+                              "select b.Extents,\n"
+                              "       b.CurExt+b.CurBlk/c.Blocks\n"
+                              "  from sys.dba_rollback_segs a,v$rollstat b,sys.dba_extents c\n"
+                              " where a.segment_id = b.usn\n"
+                              "   and a.owner = c.owner\n"
+                              "   and a.segment_name = c.segment_name\n"
+                              "   and c.segment_type = 'ROLLBACK'\n"
+                              "   and b.curext = c.extent_id\n"
+                              " order by a.segment_name",
+                              "Get current extent (And fraction of) of rollback segments, "
+                              "columns must be in exactly the same order");
+
+class toRollbackOpen : public toResultView
+{
+    struct statementData
+    {
+        std::list<double> OpenExt;
+        QString Opened;
+        int Executed;
+        int BufferGets;
+        int Shown;
+    };
+
+    typedef std::map<QString, statementData> statements;
+    statements Statements;
+    int NumExtents;
+    std::list<double> CurExt;
+    std::list<double> MaxExt;
+public:
+class openItem : public toResultViewItem
+    {
+        toRollbackOpen *parent(void)
+        {
+            return (toRollbackOpen *)listView();
+        }
+    public:
+        openItem(QListView *parent, QListViewItem *after, const QString &buf = QString::null)
+                : toResultViewItem(parent, after, buf)
+        { }
+        virtual void paintCell (QPainter *pnt, const QColorGroup & cg,
+                                int column, int width, int alignment)
+        {
+            if (column == 2)
+            {
+                QString address = text(4);
+                std::list<double> &StartExt = parent()->Statements[address].OpenExt;
+                PaintBars(this, pnt, cg, width, StartExt, parent()->MaxExt, parent()->CurExt);
+            }
+            else
+                toResultViewItem::paintCell(pnt, cg, column, width, alignment);
+        }
+
+        virtual int width(const QFontMetrics &fm, const QListView *top, int column) const
+        {
+            if (column == 2)
+                return 100;
+            else
+                return toResultViewItem::width(fm, top, column);
+        }
+
+        virtual void setup(void)
+        {
+            QString address = text(3);
+            statementData &data = parent()->Statements[address];
+            toResultViewItem::setup();
+            setHeight(std::max(toResultViewItem::height(), int(MIN_HEIGHT*data.OpenExt.size())));
+        }
+    };
+
+    friend class openItem;
+
+    virtual QListViewItem *createItem(QListViewItem *last, const QString &str)
+    {
+        return new openItem(this, last, str);
+    }
+
+    toRollbackOpen(QWidget *parent)
+            : toResultView(false, false, parent)
+    {
+        addColumn(qApp->translate("toRollbackOpen", "Started"));
+        addColumn(qApp->translate("toRollbackOpen", "User"));
+        addColumn(qApp->translate("toRollbackOpen", "Snapshot"));
+        addColumn(qApp->translate("toRollbackOpen", "SQL"));
+        setSorting(0);
+        NumExtents = 0;
+        setSQLName(QString::fromLatin1("toRollbackOpen"));
+    }
+    virtual void query(const QString &, const toQList &)
+    {
+        try
+        {
+            clear();
+            toConnection &conn = connection();
+            toBusy busy;
+            toQuery sql(conn, SQLStatementInfo);
+            QListViewItem *last = NULL;
+            while (!sql.eof())
+            {
+                QListViewItem *item = createItem(last, QString::null);
+                last = item;
+                item->setText(0, sql.readValue());
+                item->setText(1, sql.readValue());
+                item->setText(3, sql.readValue());
+                item->setText(4, sql.readValue());
+                item->setText(5, sql.readValue());
+                item->setText(6, sql.readValue());
+            }
+
+            toQuery rlb(conn, SQLCurrentExtent);
+
+            CurExt.clear();
+            MaxExt.clear();
+
+            int num = 0;
+            while (!rlb.eof())
+            {
+                MaxExt.insert(MaxExt.end(), rlb.readValue().toDouble());
+                CurExt.insert(CurExt.end(), rlb.readValue().toDouble());
+                num++;
+            }
+            statementData data;
+            data.Shown = 0;
+            data.OpenExt = CurExt;
+            if (num != NumExtents)
+            {
+                Statements.clear();
+                NumExtents = num;
+            }
+
+            bool noExec = true;
+            bool needRead = true;
+            bool needTwo = true;
+            if (RollbackTool.config(CONF_NO_EXEC, "Yes").isEmpty())
+                noExec = false;
+            if (RollbackTool.config(CONF_NEED_READ, "Yes").isEmpty())
+                needRead = false;
+            if (RollbackTool.config(CONF_NEED_TWO, "Yes").isEmpty())
+                needTwo = false;
+
+            std::map<QString, int> Exists;
+            for (QListViewItem *i = firstChild();i;)
+            {
+                QString address = i->text(4);
+                Exists[address] = 1;
+                statements::iterator j = Statements.find(address);
+                int exec = i->text(5).toInt();
+                int bufget = i->text(6).toInt();
+                if (j == Statements.end() ||
+                        ((*j).second.Executed != exec && noExec))
+                {
+                    data.Opened = i->text(0);
+                    data.Executed = exec;
+                    data.BufferGets = bufget;
+                    Statements[address] = data;
+                    QListViewItem *next = i->nextSibling();
+                    if (needTwo)
+                        delete i;
+                    i = next;
+                }
+                else if ((*j).second.BufferGets == bufget && needRead)
+                { // Don't reset, just don't show
+                    QListViewItem *next = i->nextSibling();
+                    delete i;
+                    i = next;
+                }
+                else
+                {
+                    i->setText(0, (*j).second.Opened);
+                    i = i->nextSibling();
+                    (*j).second.BufferGets = bufget;
+                }
+            }
+            sort();
+
+            // Erase unused
+
+            for (statements::iterator j = Statements.begin();j != Statements.end();j++)
+            {
+                if (Exists.find((*j).first) == Exists.end())
+                {
+                    Statements.erase((*j).first);
+                    j = Statements.begin();
+                }
+            }
+        }
+        TOCATCH
+    }
+};
+
+toSQL SQLTransactionUsers("toRollback:TransactionUsers",
+                          "select r.name \"Rollback Seg\",\n"
+                          "       s.sid \"Session ID\",\n"
+                          "       s.osuser \"Os User\",\n"
+                          "       s.username \"Oracle User\"\n"
+                          "from v$rollname r, v$session s, v$lock l\n"
+                          "where l.type = 'TX'\n"
+                          "and s.sid = l.sid\n"
+                          "and r.usn = trunc(l.id1/65536)",
+                          "Get users currently having open transactions");
+
+toRollback::toRollback(QWidget *main, toConnection &connection)
+        : toToolWidget(RollbackTool, "rollback.html", main, connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Rollback analyzer"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Update segment list"),
+                    tr("Update segment list"),
+                    this, SLOT(refresh(void)),
+                    toolbar);
+    toolbar->addSeparator();
+
+    QToolButton *enableOld = new QToolButton(toolbar);
+    enableOld->setToggleButton(true);
+    enableOld->setIconSet(QIconSet(QPixmap(const_cast<const char**>(torollback_xpm))));
+    connect(enableOld, SIGNAL(toggled(bool)), this, SLOT(enableOld(bool)));
+    QToolTip::add
+        (enableOld, tr("Enable snapshot too old detection."));
+    toolbar->addSeparator();
+
+    OnlineButton = new QToolButton(QPixmap(const_cast<const char**>(online_xpm)),
+                                   tr("Take segment online"),
+                                   tr("Take segment online"),
+                                   this, SLOT(online(void)),
+                                   toolbar);
+    OnlineButton->setEnabled(false);
+    OfflineButton = new QToolButton(QPixmap(const_cast<const char**>(offline_xpm)),
+                                    tr("Take segment offline"),
+                                    tr("Take segment offline"),
+                                    this, SLOT(offline(void)),
+                                    toolbar);
+    OfflineButton->setEnabled(false);
+    toolbar->addSeparator();
+
+    new QToolButton(QPixmap(const_cast<const char**>(addrollback_xpm)),
+                    tr("Create new rollback segment"),
+                    tr("Create new rollback segment"),
+                    this, SLOT(addSegment(void)),
+                    toolbar);
+    DropButton = new QToolButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                                 tr("Drop segment"),
+                                 tr("Drop segment"),
+                                 this, SLOT(dropSegment(void)),
+                                 toolbar);
+    DropButton->setEnabled(false);
+    toolbar->addSeparator();
+
+    new QLabel(tr("Refresh") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    connect(Refresh = toRefreshCreate(toolbar, TO_KDE_TOOLBAR_WIDGET),
+            SIGNAL(activated(const QString &)), this, SLOT(changeRefresh(const QString &)));
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    QSplitter *splitter = new QSplitter(Vertical, this);
+    Segments = new toRollbackView(splitter);
+    Segments->setSelectionMode(QListView::Single);
+    connect(Segments, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeItem(QListViewItem *)));
+
+    QTabWidget *tab = new QTabWidget(splitter, "TabWidget");
+    TransactionUsers = new toResultLong(false, false, toQuery::Background, tab);
+    tab->addTab(TransactionUsers, tr("Transaction Users"));
+    TransactionUsers->setSQL(SQLTransactionUsers);
+
+    QSplitter *horsplit = new QSplitter(Horizontal, splitter);
+    tab->addTab(horsplit, tr("Open Cursors"));
+
+    Statements = new toRollbackOpen(horsplit);
+    Statements->setSelectionMode(QListView::Single);
+    connect(Statements, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeStatement(QListViewItem *)));
+    CurrentStatement = new toSGAStatement(horsplit);
+
+    try
+    {
+        connect(timer(), SIGNAL(timeout(void)), this, SLOT(refresh(void)));
+        toRefreshParse(timer(), toConfigurationSingle::Instance().globalConfig(CONF_REFRESH, DEFAULT_REFRESH));
+    }
+    TOCATCH
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    if (!RollbackTool.config(CONF_OLD_ENABLE, "").isEmpty())
+        enableOld->setOn(true);
+    else
+        Statements->setEnabled(false);
+
+    refresh();
+
+    setFocusProxy(Segments);
+}
+
+#define TO_ID_ONLINE  (toMain::TO_TOOL_MENU_ID+ 0)
+#define TO_ID_OFFLINE  (toMain::TO_TOOL_MENU_ID+ 1)
+#define TO_ID_CREATE  (toMain::TO_TOOL_MENU_ID+ 2)
+#define TO_ID_DROP  (toMain::TO_TOOL_MENU_ID+ 3)
+
+void toRollback::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Rollback|Refresh")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(online_xpm)), tr("Online"),
+                                 this, SLOT(online(void)), 0, TO_ID_ONLINE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(offline_xpm)), tr("Offline"),
+                                 this, SLOT(offline(void)), 0, TO_ID_OFFLINE);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(addrollback_xpm)), tr("Create segment..."),
+                                 this, SLOT(addSegment(void)), 0, TO_ID_CREATE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(trash_xpm)), tr("Drop segment"),
+                                 this, SLOT(dropSegment(void)), 0, TO_ID_DROP);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(tr("&Change Refresh"), Refresh, SLOT(setFocus(void)),
+                                 toKeySequence(tr("Alt+R", "Rollback|Change refresh")));
+            toMainWidget()->menuBar()->insertItem(tr("&Rollback"), ToolMenu, -1, toToolMenuIndex());
+            ToolMenu->setItemEnabled(TO_ID_ONLINE, OnlineButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_OFFLINE, OfflineButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_DROP, DropButton->isEnabled());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+void toRollback::refresh(void)
+{
+    BarsAlignLeft = !RollbackTool.config(CONF_ALIGN_LEFT, "Yes").isEmpty();
+
+    QListViewItem *item = Segments->selectedItem();
+    QString current;
+    if (item)
+        current = item->text(TRANSCOL - 1);
+    Segments->refresh();
+    if (!current.isEmpty())
+        for (item = Segments->firstChild();item;item = item->nextSibling())
+            if (item->text(TRANSCOL - 1) == current)
+            {
+                Segments->setSelected(item, true);
+                break;
+            }
+    if (Statements->isEnabled())
+    {
+        item = Statements->selectedItem();
+        if (item)
+            current = item->text(4);
+        else
+            current = "";
+        Statements->refresh();
+        if (!current.isEmpty())
+            for (item = Statements->firstChild();item;item = item->nextSibling())
+                if (item->text(4) == current)
+                {
+                    Statements->setSelected(item, true);
+                    break;
+                }
+    }
+    TransactionUsers->refresh();
+}
+
+void toRollback::changeStatement(QListViewItem *item)
+{
+    if (item)
+        CurrentStatement->changeAddress(item->text(4));
+}
+
+void toRollback::changeItem(QListViewItem *item)
+{
+    if (item)
+    {
+        if (item->text(3) == QString::fromLatin1("OFFLINE"))
+            OfflineButton->setEnabled(false);
+        else
+            OfflineButton->setEnabled(true);
+        if (item->text(3) == QString::fromLatin1("ONLINE"))
+            OnlineButton->setEnabled(false);
+        else
+            OnlineButton->setEnabled(true);
+    }
+    else
+    {
+        OnlineButton->setEnabled(false);
+        OfflineButton->setEnabled(false);
+    }
+    DropButton->setEnabled(item);
+    ToolMenu->setItemEnabled(TO_ID_ONLINE, OnlineButton->isEnabled());
+    ToolMenu->setItemEnabled(TO_ID_OFFLINE, OfflineButton->isEnabled());
+    ToolMenu->setItemEnabled(TO_ID_DROP, DropButton->isEnabled());
+}
+
+void toRollback::changeRefresh(const QString &str)
+{
+    try
+    {
+        toRefreshParse(timer(), str);
+    }
+    TOCATCH
+}
+
+QString toRollback::currentSegment(void)
+{
+    QListViewItem *item = Segments->selectedItem();
+    if (!item)
+        throw tr("No segment selected");
+    return item->text(0);
+}
+
+void toRollback::addSegment(void)
+{
+    try
+    {
+        toRollbackDialog newSegment(connection(), this);
+        if (newSegment.exec())
+        {
+            std::list<QString> sql = newSegment.sql();
+            for (std::list<QString>::iterator i = sql.begin();i != sql.end();i++)
+                connection().execute(*i);
+            refresh();
+        }
+    }
+    TOCATCH
+}
+
+void toRollback::offline(void)
+{
+    try
+    {
+        QString str;
+        str = QString::fromLatin1("ALTER ROLLBACK SEGMENT \"");
+        str.append(currentSegment());
+        str.append(QString::fromLatin1("\" OFFLINE"));
+        connection().execute(str);
+        refresh();
+    }
+    TOCATCH
+}
+
+void toRollback::dropSegment(void)
+{
+    try
+    {
+        if (TOMessageBox::warning(this,
+                                  tr("Drop rollback segment"),
+                                  tr("Are you sure you want to drop the segment %1.").arg(currentSegment()),
+                                  tr("&Drop"),
+                                  tr("Cancel")) == 0)
+        {
+            QString str;
+            str = QString::fromLatin1("DROP ROLLBACK SEGMENT \"");
+            str.append(currentSegment());
+            str.append(QString::fromLatin1("\""));
+            connection().execute(str);
+            refresh();
+        }
+    }
+    TOCATCH
+}
+
+void toRollback::online(void)
+{
+    try
+    {
+        QString str;
+        str = QString::fromLatin1("ALTER ROLLBACK SEGMENT \"");
+        str.append(currentSegment());
+        str.append(QString::fromLatin1("\" ONLINE"));
+        connection().execute(str);
+        refresh();
+    }
+    TOCATCH
+}
+
+void toRollback::enableOld(bool ena)
+{
+    Statements->setEnabled(ena);
+}

Added: kde-extras/tora/branches/upstream/current/src/torollback.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/torollback.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/torollback.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,111 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSGATRACE_H
+#define TOSGATRACE_H
+
+#include "config.h"
+#include "torollbackdialogui.h"
+#include "totool.h"
+
+#include <qdialog.h>
+
+#include <algorithm>
+
+class QComboBox;
+class QPopupMenu;
+class toConnection;
+class toResultItem;
+class toResultView;
+class toSGAStatement;
+class toStorageDefinition;
+class toResultLong;
+
+class toRollbackDialog : public toRollbackDialogUI
+{
+    Q_OBJECT
+
+    toStorageDefinition *Storage;
+
+public:
+    toRollbackDialog(toConnection &conn, QWidget *parent = 0, const char *name = 0);
+
+    std::list<QString> sql(void);
+
+public slots:
+    void valueChanged(const QString &str);
+    void displaySQL(void);
+};
+
+class toRollback : public toToolWidget
+{
+    Q_OBJECT
+
+    toResultView *Segments;
+    toResultView *Statements;
+
+    QWidget *CurrentTab;
+
+    toSGAStatement *CurrentStatement;
+    toResultLong *TransactionUsers;
+
+    QToolButton *OnlineButton;
+    QToolButton *OfflineButton;
+    QToolButton *DropButton;
+
+    QPopupMenu *ToolMenu;
+    QComboBox *Refresh;
+
+    QString currentSegment(void);
+
+public:
+    toRollback(QWidget *parent, toConnection &connection);
+public slots:
+    void changeStatement(QListViewItem *item);
+    void changeItem(QListViewItem *item);
+    void changeRefresh(const QString &str);
+
+    void enableOld(bool);
+    void refresh(void);
+    void online(void);
+    void offline(void);
+    void addSegment(void);
+    void dropSegment(void);
+    void windowActivated(QWidget *widget);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/torollbackdialogui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/torollbackdialogui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/torollbackdialogui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,180 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'torollbackdialogui.ui'
+**
+** Created: Tue Sep 18 08:21:23 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "torollbackdialogui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qtoolbutton.h>
+#include <qtabwidget.h>
+#include <qwidget.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qcombobox.h>
+#include <qlineedit.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+static const char* const image0_data[] = { 
+"16 16 14 1",
+". c None",
+"# c #000000",
+"i c #181841",
+"e c #20205a",
+"k c #202462",
+"c c #292873",
+"l c #292c7b",
+"h c #313083",
+"b c #393cac",
+"d c #4140b4",
+"f c #4a4ccd",
+"j c #5a59f6",
+"g c #5a5df6",
+"a c #5a5dff",
+"................",
+".###..###..##...",
+"#..#.#..#..#....",
+"##...#...#.#....",
+"..#..#####.#....",
+"...#.#aab#.#....",
+"#..##cdaef##..#.",
+".##.#ghiha#####.",
+"....#aajkl#.....",
+".....#aaa#......",
+"......#####.....",
+".........###....",
+"..........###...",
+"...........##...",
+"................",
+"................"};
+
+
+/*
+ *  Constructs a toRollbackDialogUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toRollbackDialogUI::toRollbackDialogUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl ),
+      image0( (const char **) image0_data )
+{
+    if ( !name )
+	setName( "toRollbackDialogUI" );
+    toRollbackDialogUILayout = new QGridLayout( this, 1, 1, 11, 6, "toRollbackDialogUILayout"); 
+
+    ToolButton1 = new QToolButton( this, "ToolButton1" );
+    ToolButton1->setPixmap( image0 );
+
+    toRollbackDialogUILayout->addWidget( ToolButton1, 3, 2 );
+
+    DialogTabs = new QTabWidget( this, "DialogTabs" );
+
+    DefaultPage = new QWidget( DialogTabs, "DefaultPage" );
+    DefaultPageLayout = new QGridLayout( DefaultPage, 1, 1, 11, 6, "DefaultPageLayout"); 
+
+    Public = new QCheckBox( DefaultPage, "Public" );
+    Public->setChecked( TRUE );
+
+    DefaultPageLayout->addWidget( Public, 4, 0 );
+
+    TextLabel1 = new QLabel( DefaultPage, "TextLabel1" );
+
+    DefaultPageLayout->addWidget( TextLabel1, 0, 0 );
+
+    Tablespace = new QComboBox( FALSE, DefaultPage, "Tablespace" );
+
+    DefaultPageLayout->addWidget( Tablespace, 3, 0 );
+
+    Name = new QLineEdit( DefaultPage, "Name" );
+
+    DefaultPageLayout->addWidget( Name, 1, 0 );
+
+    TextLabel2 = new QLabel( DefaultPage, "TextLabel2" );
+
+    DefaultPageLayout->addWidget( TextLabel2, 2, 0 );
+    Spacer3 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    DefaultPageLayout->addItem( Spacer3, 5, 0 );
+    DialogTabs->insertTab( DefaultPage, QString::fromLatin1("") );
+
+    toRollbackDialogUILayout->addMultiCellWidget( DialogTabs, 0, 3, 0, 0 );
+
+    OkButton = new QPushButton( this, "OkButton" );
+    OkButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)4, (QSizePolicy::SizeType)0, 0, 0, OkButton->sizePolicy().hasHeightForWidth() ) );
+    OkButton->setDefault( TRUE );
+
+    toRollbackDialogUILayout->addMultiCellWidget( OkButton, 0, 0, 1, 2 );
+
+    PushButton2 = new QPushButton( this, "PushButton2" );
+    PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)4, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) );
+
+    toRollbackDialogUILayout->addMultiCellWidget( PushButton2, 1, 1, 1, 2 );
+    Spacer2 = new QSpacerItem( 71, 20, QSizePolicy::Maximum, QSizePolicy::Minimum );
+    toRollbackDialogUILayout->addItem( Spacer2, 3, 1 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toRollbackDialogUILayout->addItem( Spacer1, 2, 2 );
+    languageChange();
+    resize( QSize(556, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( OkButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( ToolButton1, SIGNAL( clicked() ), this, SLOT( displaySQL(void) ) );
+    connect( Name, SIGNAL( textChanged(const QString&) ), this, SLOT( valueChanged(const QString &) ) );
+
+    // tab order
+    setTabOrder( DialogTabs, OkButton );
+    setTabOrder( OkButton, PushButton2 );
+
+    // buddies
+    TextLabel1->setBuddy( Name );
+    TextLabel2->setBuddy( Tablespace );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toRollbackDialogUI::~toRollbackDialogUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toRollbackDialogUI::languageChange()
+{
+    setCaption( tr( "Modify tablespace" ) );
+    ToolButton1->setText( QString::null );
+    QToolTip::add( ToolButton1, tr( "Display the SQL used to generate the specified object" ) );
+    Public->setText( tr( "&Public" ) );
+    QToolTip::add( Public, tr( "If this should be a publicly available rollback segment" ) );
+    TextLabel1->setText( tr( "&Name" ) );
+    TextLabel2->setText( tr( "&Tablespace" ) );
+    DialogTabs->changeTab( DefaultPage, tr( "Rollback Segment" ) );
+    OkButton->setText( tr( "&Ok" ) );
+    PushButton2->setText( tr( "Cancel" ) );
+}
+
+void toRollbackDialogUI::displaySQL()
+{
+    qWarning( "toRollbackDialogUI::displaySQL(): Not implemented yet" );
+}
+
+void toRollbackDialogUI::valueChanged(const QString&)
+{
+    qWarning( "toRollbackDialogUI::valueChanged(const QString&): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/torollbackdialogui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/torollbackdialogui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/torollbackdialogui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'torollbackdialogui.ui'
+**
+** Created: Tue Sep 18 08:21:23 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOROLLBACKDIALOGUI_H
+#define TOROLLBACKDIALOGUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QToolButton;
+class QTabWidget;
+class QWidget;
+class QCheckBox;
+class QLabel;
+class QComboBox;
+class QLineEdit;
+class QPushButton;
+
+class toRollbackDialogUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toRollbackDialogUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toRollbackDialogUI();
+
+    QToolButton* ToolButton1;
+    QTabWidget* DialogTabs;
+    QWidget* DefaultPage;
+    QCheckBox* Public;
+    QLabel* TextLabel1;
+    QComboBox* Tablespace;
+    QLineEdit* Name;
+    QLabel* TextLabel2;
+    QPushButton* OkButton;
+    QPushButton* PushButton2;
+
+public slots:
+    virtual void displaySQL(void);
+    virtual void valueChanged(const QString &);
+
+protected:
+    QGridLayout* toRollbackDialogUILayout;
+    QSpacerItem* Spacer2;
+    QSpacerItem* Spacer1;
+    QGridLayout* DefaultPageLayout;
+    QSpacerItem* Spacer3;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOROLLBACKDIALOGUI_H

Added: kde-extras/tora/branches/upstream/current/src/torollbackdialogui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/torollbackdialogui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/torollbackdialogui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,285 @@
+<!DOCTYPE UI><UI>
+<class>toRollbackDialogUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toRollbackDialogUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>556</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Modify tablespace</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="3"  column="2" >
+            <class>QToolButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ToolButton1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string></string>
+            </property>
+            <property stdset="1">
+                <name>pixmap</name>
+                <pixmap>image0</pixmap>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Display the SQL used to generate the specified object</string>
+            </property>
+        </widget>
+        <widget row="0"  column="0"  rowspan="4"  colspan="1" >
+            <class>QTabWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>DialogTabs</cstring>
+            </property>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>DefaultPage</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>Rollback Segment</string>
+                </attribute>
+                <grid>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget row="4"  column="0" >
+                        <class>QCheckBox</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Public</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>&amp;Public</string>
+                        </property>
+                        <property stdset="1">
+                            <name>checked</name>
+                            <bool>true</bool>
+                        </property>
+                        <property>
+                            <name>toolTip</name>
+                            <string>If this should be a publicly available rollback segment</string>
+                        </property>
+                    </widget>
+                    <widget row="0"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel1</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>&amp;Name</string>
+                        </property>
+                        <property>
+                            <name>buddy</name>
+                            <cstring>Name</cstring>
+                        </property>
+                    </widget>
+                    <widget row="3"  column="0" >
+                        <class>QComboBox</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Tablespace</cstring>
+                        </property>
+                    </widget>
+                    <widget row="1"  column="0" >
+                        <class>QLineEdit</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Name</cstring>
+                        </property>
+                    </widget>
+                    <widget row="2"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel2</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>&amp;Tablespace</string>
+                        </property>
+                        <property>
+                            <name>buddy</name>
+                            <cstring>Tablespace</cstring>
+                        </property>
+                    </widget>
+                    <spacer row="5"  column="0" >
+                        <property>
+                            <name>name</name>
+                            <cstring>Spacer3</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>orientation</name>
+                            <enum>Vertical</enum>
+                        </property>
+                        <property stdset="1">
+                            <name>sizeType</name>
+                            <enum>Expanding</enum>
+                        </property>
+                        <property>
+                            <name>sizeHint</name>
+                            <size>
+                                <width>20</width>
+                                <height>20</height>
+                            </size>
+                        </property>
+                    </spacer>
+                </grid>
+            </widget>
+        </widget>
+        <widget row="0"  column="1"  rowspan="1"  colspan="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>OkButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>4</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="1"  column="1"  rowspan="1"  colspan="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton2</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>4</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <spacer row="3"  column="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Maximum</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>71</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <spacer row="2"  column="2" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="575">789c6d90cf6e83300c87ef3c45446e684a13081434f51136ed3869dac11828f4cf2a6ddd619af6eeebcf848ab25921f2f7c5d88455a29e9f1e54b28a3ece741e58714fef2a693e8fc7af97d7cd7714bb426179e5e2bb28368ad5e3e9ad45ae2fb9b612c001e84a577aa96c81a94d6d4ec07d405fa44016acd2729d010f01795d037b60e6325bca692d58654c0c6c80de795b7b6027489eb901ee8039e5555700b7019b11e98a9d5c6711e2b4d666da82436e64c30a0ed9f85cdd5881983b5410d5332755dc50dbc99869aed1db7ee8696c307ddfe5d5ddfea0cdac9f48d2e6d685c1b7ce84ab2c5c908b7ff09ffbdb6f723ff7d12f66576feb</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>OkButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toRollbackDialogUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>toRollbackDialogUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>ToolButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toRollbackDialogUI</receiver>
+        <slot>displaySQL(void)</slot>
+    </connection>
+    <connection>
+        <sender>Name</sender>
+        <signal>textChanged(const QString&amp;)</signal>
+        <receiver>toRollbackDialogUI</receiver>
+        <slot>valueChanged(const QString &amp;)</slot>
+    </connection>
+    <slot access="public">displaySQL(void)</slot>
+    <slot access="public">valueChanged(const QString &amp;)</slot>
+</connections>
+<tabstops>
+    <tabstop>DialogTabs</tabstop>
+    <tabstop>OkButton</tabstop>
+    <tabstop>PushButton2</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/toscript.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toscript.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toscript.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1209 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toextract.h"
+#include "tofilesize.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "toreport.h"
+#include "toresultview.h"
+#include "toscript.h"
+#include "toscriptui.h"
+#include "tosql.h"
+#include "totextview.h"
+#include "totool.h"
+#include "toworksheet.h"
+
+#ifdef TO_HAS_KPRINT
+#include <kfiledialog.h>
+#endif
+
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qdir.h>
+#include <qfiledialog.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qmessagebox.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qregexp.h>
+#include <qspinbox.h>
+#include <qsplitter.h>
+#include <qtabwidget.h>
+#include <qtextview.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+
+#include "toscript.moc"
+#include "toscriptui.moc"
+
+#include "icons/execute.xpm"
+#include "icons/toscript.xpm"
+
+static toSQL SQLObjectListMySQL("toScript:ExtractObject",
+                                "TOAD 1,0,0 SHOW DATABASES",
+                                "Extract objects available to extract from the database, "
+                                "should have same columns",
+                                "3.23",
+                                "MySQL");
+
+static toSQL SQLObjectList("toScript:ExtractObject",
+                           "SELECT *\n"
+                           "  FROM (SELECT 'TABLESPACE',tablespace_name,NULL\n"
+                           "   FROM sys.dba_tablespaces\n"
+                           " UNION\n"
+                           " SELECT 'ROLE',role,NULL\n"
+                           "   FROM sys.dba_roles\n"
+                           " UNION\n"
+                           " SELECT 'PUBLIC',NULL,NULL\n"
+                           "   FROM dual\n"
+                           " UNION\n"
+                           " SELECT username,NULL,NULL\n"
+                           "   FROM sys.all_users)\n"
+                           "  ORDER BY 1,2,3",
+                           "",
+                           "0801");
+
+static toSQL SQLUserObjectList("toScript:UserExtractObject",
+                               "SELECT owner,object_type,object_name\n"
+                               "  FROM sys.all_objects\n"
+                               " WHERE object_type IN ('VIEW','TABLE','TYPE','SEQUENCE','PACKAGE',\n"
+                               "                'PACKAGE BODY','FUNCTION','PROCEDURE')\n"
+                               " ORDER BY 1,2,3",
+                               "Extract objects available to extract from the database if you "
+                               "don't have admin access, should have same columns");
+
+static toSQL SQLPublicSynonymList("toScript:PublicSynonyms",
+                                  "SELECT synonym_name\n"
+                                  "  FROM sys.all_synonyms WHERE owner = 'PUBLIC'\n"
+                                  " ORDER BY 1",
+                                  "Extract all public synonyms from database");
+
+static toSQL SQLUserObjectsMySQL("toScript:UserObjects",
+                                 "SHOW TABLES FROM :own<noquote>",
+                                 "Get the objects available for a user, must have same columns and binds",
+                                 "3.23",
+                                 "MySQL");
+
+static toSQL SQLUserObjects("toScript:UserObjects",
+                            "SELECT *\n"
+                            "  FROM (SELECT 'DATABASE LINK',db_link\n"
+                            "          FROM sys.all_db_links\n"
+                            "         WHERE owner = :own<char[101]>\n"
+                            "        UNION\n"
+                            "        SELECT object_type,object_name\n"
+                            "          FROM sys.all_objects\n"
+                            "         WHERE object_type IN ('VIEW','TYPE','SEQUENCE','PACKAGE',\n"
+                            "                               'PACKAGE BODY','FUNCTION','PROCEDURE','TRIGGER')\n"
+                            "           AND owner = :own<char[101]>\n"
+                            "         UNION\n"
+                            "        SELECT 'TABLE',table_name\n"
+                            "          FROM sys.all_tables\n"
+                            "         WHERE temporary != 'Y' AND secondary = 'N' AND iot_name IS NULL\n"
+                            "           AND owner = :own<char[101]>\n"
+                            "        UNION\n"
+                            "        SELECT 'MATERIALIZED TABLE',mview_name AS object\n"
+                            "          FROM sys.all_mviews\n"
+                            "         WHERE owner = :own<char[101]>)\n"
+                            " ORDER BY 1,2",
+                            "");
+
+static toSQL SQLUserObjects7("toScript:UserObjects",
+                             "SELECT *\n"
+                             "  FROM (SELECT 'DATABASE LINK',db_link\n"
+                             "          FROM sys.all_db_links\n"
+                             "         WHERE owner = :own<char[101]>\n"
+                             "        UNION\n"
+                             "        SELECT object_type,object_name\n"
+                             "          FROM sys.all_objects\n"
+                             "         WHERE object_type IN ('VIEW','TYPE','SEQUENCE','PACKAGE',\n"
+                             "                               'PACKAGE BODY','FUNCTION','PROCEDURE','TRIGGER')\n"
+                             "           AND owner = :own<char[101]>\n"
+                             "         UNION\n"
+                             "        SELECT 'TABLE',table_name\n"
+                             "          FROM sys.all_tables\n"
+                             "         WHERE temporary != 'Y' AND secondary = 'N'\n"
+                             "           AND owner = :own<char[101]>\n"
+                             "        UNION\n"
+                             "        SELECT 'MATERIALIZED TABLE',mview_name AS object\n"
+                             "          FROM sys.all_mviews\n"
+                             "         WHERE owner = :own<char[101]>)\n"
+                             " ORDER BY 1,2",
+                             "",
+                             "0703");
+
+static toSQL SQLSchemasMySQL("toScript:ExtractSchema",
+                             "SHOW DATABASES",
+                             "Get usernames available in database, must have same columns",
+                             "3.23",
+                             "MySQL");
+
+static toSQL SQLSchemas("toScript:ExtractSchema",
+                        "SELECT username FROM sys.all_users ORDER BY username",
+                        "");
+
+class toScriptTool : public toTool
+{
+protected:
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(toscript_xpm);
+    }
+public:
+    toScriptTool()
+            : toTool(310, "DB Extraction/Compare/Search")
+    { }
+    virtual const char *menuItem()
+    {
+        return "DB Extraction/Compare/Search";
+    }
+    virtual const char *toolbarTip()
+    {
+        return "DB or schema extraction, compare and search";
+    }
+    virtual bool canHandle(toConnection &conn)
+    {
+        try
+        {
+            return toExtract::canHandle(conn) && !toSQL::string(SQLObjectList, conn).isEmpty();
+        }
+        catch (...)
+        {
+            return false;
+        }
+    }
+    virtual QWidget *toolWindow(QWidget *main, toConnection &connection)
+    {
+        return new toScript(main, connection);
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toScriptTool ScriptTool;
+
+toScript::toScript(QWidget *parent, toConnection &connection)
+        : toToolWidget(ScriptTool, "script.html", parent, connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Extraction and Compare"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(execute_xpm)),
+                    tr("Perform defined extraction"),
+                    tr("Perform defined extraction"),
+                    this, SLOT(execute(void)),
+                    toolbar);
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    ScriptUI = new toScriptUI(this);
+
+    QSplitter *hsplitter = new QSplitter(Horizontal, ScriptUI->DifferenceTab);
+    QVBox *box = new QVBox(ScriptUI->ResultTab);
+    Worksheet = new toWorksheet(box, connection);
+    SearchList = new toListView(box);
+    SearchList->addColumn(tr("Search result"));
+    SearchList->setRootIsDecorated(true);
+    SearchList->setSorting(0);
+    SearchList->hide();
+    Report = new toTextView(box);
+    Report->hide();
+
+    DropList = new toListView(hsplitter);
+    DropList->addColumn(tr("Dropped"));
+    DropList->setRootIsDecorated(true);
+    DropList->setSorting(0);
+    CreateList = new toListView(hsplitter);
+    CreateList->addColumn(tr("Created"));
+    CreateList->setRootIsDecorated(true);
+    CreateList->setSorting(0);
+    ScriptUI->Tabs->setTabEnabled(ScriptUI->ResultTab, false);
+    ScriptUI->Tabs->setTabEnabled(ScriptUI->DifferenceTab, false);
+
+    connect(SearchList, SIGNAL(clicked(QListViewItem *)), this, SLOT(keepOn(QListViewItem *)));
+    connect(DropList, SIGNAL(clicked(QListViewItem *)), this, SLOT(keepOn(QListViewItem *)));
+    connect(CreateList, SIGNAL(clicked(QListViewItem *)), this, SLOT(keepOn(QListViewItem *)));
+
+    QGridLayout *layout = new QGridLayout(ScriptUI->ResultTab);
+    layout->addWidget(box, 0, 0);
+    layout = new QGridLayout(ScriptUI->DifferenceTab);
+    layout->addWidget(hsplitter, 0, 0);
+
+    ScriptUI->Initial->setTitle(tr("&Initial"));
+    ScriptUI->Limit->setTitle(tr("&Limit"));
+    ScriptUI->Next->setTitle(tr("&Next"));
+    connect(ScriptUI->ModeGroup, SIGNAL(clicked(int)), this, SLOT(changeMode(int)));
+    ScriptUI->Tabs->setTabEnabled(ScriptUI->ResizeTab, false);
+    ScriptUI->SourceObjects->setSorting(0);
+    ScriptUI->SourceObjects->setResizeMode(QListView::AllColumns);
+    ScriptUI->DestinationObjects->setSorting(0);
+    ScriptUI->DestinationObjects->setResizeMode(QListView::AllColumns);
+
+    // Remove when migrate and resize is implemented
+#if 1
+
+    ScriptUI->Migrate->hide();
+#endif
+
+    int def = 0;
+    std::list<QString> cons = toMainWidget()->connections();
+    int i = 0;
+    while (cons.size() > 0)
+    {
+        QString str = toShift(cons);
+        if (str == connection.description() && def == 0)
+            def = i;
+        i++;
+        ScriptUI->SourceConnection->insertItem(str);
+        ScriptUI->DestinationConnection->insertItem(str);
+    }
+    ScriptUI->SourceConnection->setCurrentItem(def);
+    changeSource(def);
+    changeDestination(def);
+    ScriptUI->DestinationConnection->setCurrentItem(def);
+
+    connect(ScriptUI->AddButton, SIGNAL(clicked()), this, SLOT(newSize()));
+    connect(ScriptUI->Remove, SIGNAL(clicked()), this, SLOT(removeSize()));
+
+    connect(ScriptUI->SourceConnection, SIGNAL(activated(int)), this, SLOT(changeSource(int)));
+    connect(ScriptUI->DestinationConnection, SIGNAL(activated(int)), this, SLOT(changeDestination(int)));
+    connect(ScriptUI->SourceSchema, SIGNAL(activated(int)), this, SLOT(changeSourceSchema(int)));
+    connect(ScriptUI->DestinationSchema, SIGNAL(activated(int)), this, SLOT(changeDestinationSchema(int)));
+    connect(ScriptUI->SourceObjects, SIGNAL(clicked(QListViewItem *)), this, SLOT(objectClicked(QListViewItem *)));
+    connect(ScriptUI->DestinationObjects, SIGNAL(clicked(QListViewItem *)), this, SLOT(objectClicked(QListViewItem *)));
+    connect(ScriptUI->Browse, SIGNAL(clicked()), this, SLOT(browseFile()));
+
+    connect(ScriptUI->SourceObjects, SIGNAL(expanded(QListViewItem *)),
+            this, SLOT(expandSource(QListViewItem *)));
+    connect(ScriptUI->DestinationObjects, SIGNAL(expanded(QListViewItem *)),
+            this, SLOT(expandDestination(QListViewItem *)));
+
+    connect(toMainWidget(), SIGNAL(addedConnection(const QString &)),
+            this, SLOT(addConnection(const QString &)));
+    connect(toMainWidget(), SIGNAL(removedConnection(const QString &)),
+            this, SLOT(delConnection(const QString &)));
+
+    ScriptUI->Schema->setCurrentItem(0);
+    setFocusProxy(ScriptUI->Tabs);
+}
+
+void toScript::delConnection(const QString &name)
+{
+    for (int i = 0;i < ScriptUI->SourceConnection->count();i++)
+    {
+        if (ScriptUI->SourceConnection->text(i) == name)
+        {
+            ScriptUI->SourceConnection->removeItem(i);
+            break;
+        }
+    }
+    for (int j = 0;j < ScriptUI->DestinationConnection->count();j++)
+    {
+        if (ScriptUI->DestinationConnection->text(j) == name)
+        {
+            ScriptUI->DestinationConnection->removeItem(j);
+            break;
+        }
+    }
+}
+
+void toScript::addConnection(const QString &name)
+{
+    ScriptUI->SourceConnection->insertItem(name);
+    ScriptUI->DestinationConnection->insertItem(name);
+}
+
+toScript::~toScript()
+{}
+
+std::list<QString> toScript::createObjectList(QListView *source)
+{
+    std::list<QString> lst;
+
+    std::list<QString> otherGlobal;
+    std::list<QString> profiles;
+    std::list<QString> roles;
+    std::list<QString> tableSpace;
+    std::list<QString> tables;
+    std::list<QString> userOther;
+    std::list<QString> userViews;
+    std::list<QString> users;
+
+    QListViewItem *next = NULL;
+    for (QListViewItem *item = source->firstChild();item;item = next)
+    {
+        toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(item);
+
+        if (chk && chk->isEnabled())
+        {
+            QString name = chk->text(0);
+            QString type = chk->text(1);
+            QString user = chk->text(2);
+            if (!user.isEmpty())
+            {
+                if (chk->isOn() && chk->isEnabled())
+                {
+                    QString line;
+                    if (type == QString::fromLatin1("TABLE"))
+                    {
+                        line = user;
+                        line += QString::fromLatin1(".");
+                        line += name;
+                        toPush(tables, line);
+                    }
+                    else
+                    {
+                        line = type;
+                        line += QString::fromLatin1(":");
+                        line += user;
+                        line += QString::fromLatin1(".");
+                        line += name;
+                        if (type == QString::fromLatin1("VIEW"))
+                            toPush(userViews, line);
+                        else
+                            toPush(userOther, line);
+                    }
+                }
+            }
+            else if (!type.isEmpty())
+            {
+                if (chk->isOn() && chk->isEnabled())
+                {
+                    QString line = type;
+                    line += QString::fromLatin1(":");
+                    line += name;
+                    if (type == QString::fromLatin1("TABLESPACE"))
+                        toPush(tableSpace, line);
+                    else if (type == QString::fromLatin1("PROFILE"))
+                        toPush(profiles, line);
+                    else if (type == QString::fromLatin1("ROLE"))
+                        toPush(roles, name);
+                    else if (type == QString::fromLatin1("USER"))
+                        toPush(users, name);
+                    else
+                        toPush(otherGlobal, line);
+                }
+            }
+        }
+
+        if (item->firstChild() && chk && chk->isEnabled())
+            next = item->firstChild();
+        else if (item->nextSibling())
+            next = item->nextSibling();
+        else
+        {
+            next = item;
+            do
+            {
+                next = next->parent();
+            }
+            while (next && !next->nextSibling());
+            if (next)
+                next = next->nextSibling();
+        }
+    }
+
+    if (ScriptUI->IncludeDDL->isChecked())
+    {
+        lst.insert(lst.end(), tableSpace.begin(), tableSpace.end());
+        lst.insert(lst.end(), profiles.begin(), profiles.end());
+        lst.insert(lst.end(), otherGlobal.begin(), otherGlobal.end());
+        for_each(roles.begin(), roles.end(), PrefixString(lst, QString::fromLatin1("ROLE:")));
+        for_each(users.begin(), users.end(), PrefixString(lst, QString::fromLatin1("USER:")));
+        for_each(tables.begin(), tables.end(), PrefixString(lst, QString::fromLatin1("TABLE FAMILY:")));
+        lst.insert(lst.end(), userViews.begin(), userViews.end());
+        lst.insert(lst.end(), userOther.begin(), userOther.end());
+    }
+    for_each(tables.begin(), tables.end(), PrefixString(lst, QString::fromLatin1("TABLE CONTENTS:")));
+    if (ScriptUI->IncludeDDL->isChecked())
+    {
+        for_each(tables.begin(), tables.end(), PrefixString(lst, QString::fromLatin1("TABLE REFERENCES:")));
+        for_each(roles.begin(), roles.end(), PrefixString(lst, QString::fromLatin1("ROLE GRANTS:")));
+        for_each(users.begin(), users.end(), PrefixString(lst, QString::fromLatin1("USER GRANTS:")));
+    }
+    return lst;
+}
+
+void toScript::execute(void)
+{
+    try
+    {
+        int mode;
+        if (ScriptUI->Compare->isChecked())
+            mode = 0;
+        else if (ScriptUI->Extract->isChecked())
+            mode = 1;
+        else if (ScriptUI->Migrate->isChecked())
+            mode = 2;
+        else if (ScriptUI->Search->isChecked())
+            mode = 3;
+        else if (ScriptUI->Report->isChecked())
+            mode = 4;
+        else
+        {
+            toStatusMessage(tr("No mode selected"));
+            return ;
+        }
+
+        std::list<QString> sourceObjects = createObjectList(ScriptUI->SourceObjects);
+
+        std::list<QString> sourceDescription;
+        std::list<QString> destinationDescription;
+        QString script;
+
+        toExtract source(toMainWidget()->connection(ScriptUI->SourceConnection->currentText()), this);
+        setupExtract(source);
+        switch (mode)
+        {
+        case 1:
+            if (ScriptUI->OutputTab->isChecked())
+                script += source.create(sourceObjects);
+            else if (ScriptUI->OutputFile->isChecked())
+            {
+                if (ScriptUI->Filename->text().isEmpty())
+                    throw tr("No filename specified");
+
+                QFile file(ScriptUI->Filename->text());
+                if (file.exists())
+                {
+                    if (TOMessageBox::warning(this, tr("Write over file?"),
+                                              tr("The file %1 already exists,\nare you sure you want to continue and write over it?").arg(ScriptUI->Filename->text()),
+                                              tr("&Yes"), tr("&Cancel"), QString::null, 0) != 0)
+                    {
+                        return ;
+                    }
+                }
+                file.open(IO_WriteOnly);
+
+                if (file.status() != IO_Ok)
+                    throw tr("Couldn't open file %1").arg(file.name());
+
+                QTextStream stream(&file);
+                source.create(stream, sourceObjects);
+
+                if (file.status() != IO_Ok)
+                    throw tr("Error writing to file %1").arg(file.name());
+
+                script = tr("-- Script generated to file %1 successfully").arg(ScriptUI->Filename->text());
+            }
+            else if (ScriptUI->OutputDir->isChecked())
+            {
+                if (ScriptUI->Filename->text().isEmpty())
+                    throw tr("No filename specified");
+
+                QFile file(ScriptUI->Filename->text() + QDir::separator() + "script.sql");
+                file.open(IO_WriteOnly);
+
+                if (file.status() != IO_Ok)
+                    throw QString(tr("Couldn't open file %1")).arg(file.name());
+
+                QTextStream stream(&file);
+
+                stream << tr("rem Master script for DDL reverse engineering by TOra\n"
+                             "\n");
+
+                QFile pfile(ScriptUI->Filename->text() + QDir::separator() + "script.tpr");
+                pfile.open(IO_WriteOnly);
+
+                if (pfile.status() != IO_Ok)
+                    throw QString(tr("Couldn't open file %1")).arg(pfile.name());
+
+                QTextStream pstream(&pfile);
+
+                QRegExp repl("\\W+");
+                for (std::list<QString>::iterator i = sourceObjects.begin();i != sourceObjects.end();i++)
+                {
+                    std::list<QString> t;
+                    t.insert(t.end(), *i);
+                    QString fn = *i;
+                    fn.replace(repl, "_");
+                    fn += ".sql";
+                    stream << "@" << fn << "\n";
+
+                    QFile tf(ScriptUI->Filename->text() + QDir::separator() + fn);
+                    tf.open(IO_WriteOnly);
+                    pstream << tf.name() << "\n";
+
+                    if (tf.status() != IO_Ok)
+                        throw QString(tr("Couldn't open file %1")).arg(tf.name());
+
+                    QTextStream ts(&tf);
+                    source.create(ts, t);
+
+                    if (tf.status() != IO_Ok)
+                        throw QString(tr("Error writing to file %1")).arg(tf.name());
+
+
+                    script = tr("-- Scripts generate to directory %1 successfully").arg(ScriptUI->Filename->text());
+                    ;
+                }
+
+                if (file.status() != IO_Ok)
+                    throw QString(tr("Error writing to file %1")).arg(file.name());
+                if (pfile.status() != IO_Ok)
+                    throw QString(tr("Error writing to file %1")).arg(pfile.name());
+            }
+            break;
+        case 0:
+        case 2:
+        case 3:
+        case 4:
+            sourceDescription = source.describe(sourceObjects);
+            break;
+        }
+
+        if (ScriptUI->Destination->isEnabled())
+        {
+            std::list<QString> destinationObjects = createObjectList(ScriptUI->DestinationObjects);
+            toExtract destination(toMainWidget()->connection(ScriptUI->
+                                  DestinationConnection->
+                                  currentText()), this);
+            setupExtract(destination);
+            switch (mode)
+            {
+            case 0:
+            case 2:
+                destinationDescription = destination.describe(destinationObjects);
+                break;
+            case 1:
+            case 3:
+                throw tr("Destination shouldn't be enabled now, internal error");
+            }
+
+            std::list<QString> drop;
+            std::list<QString> create;
+
+            toExtract::srcDst2DropCreate(sourceDescription, destinationDescription,
+                                         drop, create);
+            sourceDescription = drop;
+            destinationDescription = create;
+        }
+        ScriptUI->Tabs->setTabEnabled(ScriptUI->ResultTab, mode == 1 || mode == 2 || mode == 3 || mode == 4);
+        ScriptUI->Tabs->setTabEnabled(ScriptUI->DifferenceTab, mode == 0 || mode == 2);
+        if (!script.isEmpty())
+        {
+            Worksheet->editor()->setText(script);
+            Worksheet->editor()->setFilename(QString::null);
+            Worksheet->editor()->setModified(true);
+        }
+        if (mode == 3)
+        {
+            Worksheet->hide();
+            Report->hide();
+            SearchList->show();
+            QRegExp re(ScriptUI->SearchWord->text(), false);
+            QStringList words(QStringList::split(QRegExp(QString::fromLatin1(" ")),
+                                                 ScriptUI->SearchWord->text().
+                                                 upper().simplifyWhiteSpace()));
+            QString word = ScriptUI->SearchWord->text().upper();
+            int searchMode = 0;
+            if (ScriptUI->AllWords->isChecked())
+                searchMode = 1;
+            else if (ScriptUI->AnyWords->isChecked())
+                searchMode = 2;
+            else if (ScriptUI->RegExp->isChecked())
+                searchMode = 3;
+            else if (ScriptUI->ExactMatch->isChecked())
+                searchMode = 4;
+            std::list<QString> result;
+            for (std::list<QString>::iterator i = sourceDescription.begin();
+                    i != sourceDescription.end();
+                    i++)
+            {
+                QStringList ctx = QStringList::split(QString::fromLatin1("\01"), (*i).upper());
+                switch (searchMode)
+                {
+                case 1:
+                case 2:
+                    {
+                        unsigned int count = 0;
+                        for (unsigned int k = 0;k < words.count();k++)
+                        {
+                            QString s = words[k];
+                            if (ctx.last().contains(s))
+                                count++;
+                        }
+                        if ((searchMode == 2 && count > 0) || (searchMode == 1 && count == words.count()))
+                            result.insert(result.end(), *i);
+                    }
+                    break;
+                case 4:
+                    if (ctx.last() == word)
+                        result.insert(result.end(), *i);
+                    break;
+                case 3:
+                    if (re.match(ctx.last()) >= 0)
+                        result.insert(result.end(), *i);
+                    break;
+                }
+            }
+            fillDifference(result, SearchList);
+        }
+        else if (mode == 4)
+        {
+            Worksheet->hide();
+            SearchList->hide();
+            Report->show();
+            QString res = toGenerateReport(source.connection(), sourceDescription);
+            Report->setText(res);
+            if (ScriptUI->OutputFile->isChecked())
+            {
+                if (ScriptUI->Filename->text().isEmpty())
+                    toStatusMessage(tr("No filename specified"));
+                else
+                {
+                    QFile file(ScriptUI->Filename->text());
+                    file.open(IO_WriteOnly);
+
+                    if (file.status() != IO_Ok)
+                        toStatusMessage(tr("Couldn't open file %1").arg(file.name()));
+                    else
+                    {
+                        QTextStream stream(&file);
+                        stream << res;
+
+                        if (file.status() != IO_Ok)
+                            toStatusMessage(tr("Error writing to file %1").arg(file.name()));
+                    }
+                }
+            }
+        }
+        else
+        {
+            Worksheet->show();
+            SearchList->hide();
+            Report->hide();
+            fillDifference(sourceDescription, DropList);
+            fillDifference(destinationDescription, CreateList);
+        }
+        if (mode == 0)
+            ScriptUI->Tabs->showPage(ScriptUI->DifferenceTab);
+        else
+            ScriptUI->Tabs->showPage(ScriptUI->ResultTab);
+    }
+    TOCATCH
+}
+
+void toScript::fillDifference(std::list<QString> &objects, QListView *view)
+{
+    view->clear();
+    QListViewItem *last = NULL;
+    int lastLevel = 0;
+    QStringList lstCtx;
+    for (std::list<QString>::iterator i = objects.begin();i != objects.end();i++)
+    {
+        //    printf("Adding %s\n",(const char *)*i);
+        QStringList ctx = QStringList::split(QString::fromLatin1("\01"), *i);
+        if (last)
+        {
+            while (last && lastLevel >= int(ctx.count()))
+            {
+                last = last->parent();
+                lastLevel--;
+            }
+            while (last && lastLevel >= 0 && !toCompareLists(lstCtx, ctx, (unsigned int)lastLevel))
+            {
+                last = last->parent();
+                lastLevel--;
+            }
+        }
+        if (lastLevel < 0)
+            throw tr("Internal error, lastLevel < 0");
+        while (lastLevel < int(ctx.count()) - 1)
+        {
+            if (last)
+                last = new toResultViewMLine(last, NULL, ctx[lastLevel]);
+            else
+                last = new toResultViewMLine(view, NULL, ctx[lastLevel]);
+            lastLevel++;
+        }
+        QCheckListItem *item;
+        if (last)
+            item = new toResultViewMLCheck(last, ctx[lastLevel], QCheckListItem::CheckBox);
+        else
+            item = new toResultViewMLCheck(view, ctx[lastLevel], QCheckListItem::CheckBox);
+        last = item;
+        item->setOn(true);
+        lstCtx = ctx;
+        lastLevel++;
+    }
+}
+
+void toScript::changeConnection(int, bool source)
+{
+    try
+    {
+        QListView *sourceL = NULL;
+        QListView *destinationL = NULL;
+        if (ScriptUI->SourceConnection->currentText() ==
+                ScriptUI->DestinationConnection->currentText())
+        {
+            if (source)
+            {
+                destinationL = ScriptUI->SourceObjects;
+                sourceL = ScriptUI->DestinationObjects;
+            }
+            else
+            {
+                sourceL = ScriptUI->SourceObjects;
+                destinationL = ScriptUI->DestinationObjects;
+            }
+        }
+        if (sourceL && destinationL && sourceL->firstChild())
+        {
+            destinationL->clear();
+            QListViewItem *next = NULL;
+            QListViewItem *parent = NULL;
+            for (QListViewItem *item = sourceL->firstChild();item;item = next)
+            {
+                QListViewItem * lastParent = parent;
+                if (!parent)
+                {
+                    parent = new toResultViewCheck(destinationL, item->text(0),
+                                                   QCheckListItem::CheckBox);
+                    parent->setExpandable(true);
+                }
+                else
+                    parent = new toResultViewCheck(parent, item->text(0),
+                                                   QCheckListItem::CheckBox);
+                parent->setText(1, item->text(1));
+                parent->setText(2, item->text(2));
+                if (item->firstChild())
+                    next = item->firstChild();
+                else if (item->nextSibling())
+                {
+                    next = item->nextSibling();
+                    parent = lastParent;
+                }
+                else
+                {
+                    next = item;
+                    parent = lastParent;
+                    do
+                    {
+                        next = next->parent();
+                        if (parent)
+                            parent = parent->parent();
+                    }
+                    while (next && !next->nextSibling());
+                    if (next)
+                        next = next->nextSibling();
+                }
+            }
+            return ;
+        }
+        (source ? ScriptUI->SourceObjects : ScriptUI->DestinationObjects)->clear();
+        (source ? ScriptUI->SourceSchema : ScriptUI->DestinationSchema)->clear();
+        (source ? ScriptUI->SourceSchema : ScriptUI->DestinationSchema)->insertItem(tr("All"));
+        toConnection &conn = toMainWidget()->connection((source ?
+                             ScriptUI->SourceConnection :
+                             ScriptUI->DestinationConnection)
+                             ->currentText());
+        toQList object;
+        try
+        {
+            object = toQuery::readQueryNull(conn, SQLObjectList);
+        }
+        catch (...)
+        {
+            object = toQuery::readQueryNull(conn, SQLUserObjectList);
+        }
+        toQList schema = toQuery::readQuery(conn, SQLSchemas);
+        while (schema.size() > 0)
+        {
+            QString str = toShift(schema);
+            (source ? ScriptUI->SourceSchema : ScriptUI->DestinationSchema)->insertItem(str);
+        }
+        QListViewItem *lastTop = NULL;
+        QListViewItem *lastFirst = NULL;
+        while (object.size() > 0)
+        {
+            QString top = toShift(object);
+            QString first = toShift(object);
+            QString second = toShift(object);
+
+            if (top != (lastTop ? lastTop->text(0) : QString::null))
+            {
+                lastFirst = NULL;
+                lastTop = new toResultViewCheck((source ?
+                                                 ScriptUI->SourceObjects :
+                                                 ScriptUI->DestinationObjects),
+                                                top, QCheckListItem::CheckBox);
+                lastTop->setExpandable(true);
+                if (!second.isEmpty() || first.isEmpty())
+                    lastTop->setText(1, QString::fromLatin1("DATABASE"));
+            }
+            if (first != (lastFirst ? lastFirst->text(0) : QString::null) && !first.isEmpty())
+            {
+                lastFirst = new toResultViewCheck(lastTop, first, QCheckListItem::CheckBox);
+                if (second.isEmpty())
+                    lastFirst->setText(1, top);
+            }
+            if (!second.isEmpty() && lastFirst)
+            {
+                QListViewItem *item = new toResultViewCheck(lastFirst, second, QCheckListItem::CheckBox);
+                item->setText(1, first);
+                item->setText(2, top);
+            }
+        }
+    }
+    TOCATCH
+}
+
+void toScript::readOwnerObjects(QListViewItem *item, toConnection &conn)
+{
+    if (!item->parent() && !item->firstChild())
+    {
+        try
+        {
+            QListViewItem *lastFirst = NULL;
+            QString top = item->text(0);
+            toQuery object(conn, SQLUserObjects, top);
+
+            while (!object.eof())
+            {
+                QString first = object.readValueNull();
+                QString second;
+                if (object.columns() > 1)
+                    second = object.readValueNull();
+                else
+                {
+                    second = first;
+                    first = "TABLE";
+                }
+
+                if (first != (lastFirst ? lastFirst->text(0) : QString::null) && !first.isEmpty())
+                {
+                    lastFirst = new toResultViewCheck(item, first, QCheckListItem::CheckBox);
+                    if (second.isEmpty())
+                        lastFirst->setText(1, top);
+                }
+                if (!second.isEmpty() && lastFirst)
+                {
+                    QListViewItem *item = new toResultViewCheck(lastFirst, second, QCheckListItem::CheckBox);
+                    item->setText(1, first);
+                    item->setText(2, top);
+                }
+            }
+
+            if (top == QString::fromLatin1("PUBLIC"))
+            {
+                toQList object = toQuery::readQueryNull(conn, SQLPublicSynonymList);
+                QListViewItem *topItem = new toResultViewCheck(item, QString::fromLatin1("SYNONYM"), QCheckListItem::CheckBox);
+                while (object.size() > 0)
+                {
+                    QListViewItem *item = new toResultViewCheck(topItem, toShift(object),
+                                          QCheckListItem::CheckBox);
+                    item->setText(1, QString::fromLatin1("SYNONYM"));
+                    item->setText(2, top);
+                }
+            }
+        }
+        TOCATCH
+    }
+}
+
+void toScript::changeMode(int mode)
+{
+    if (mode < 0 || mode > 4)
+        return ;
+
+    if (mode == 0 || mode == 2)
+        ScriptUI->Destination->setEnabled(true);
+    else if (mode == 1 || mode == 3 || mode == 4)
+        ScriptUI->Destination->setEnabled(false);
+
+    if (mode == 1 || mode == 2)
+        ScriptUI->Tabs->setTabEnabled(ScriptUI->ResizeTab, true);
+    else if (mode == 0 || mode == 3 || mode == 4)
+        ScriptUI->Tabs->setTabEnabled(ScriptUI->ResizeTab, false);
+
+    ScriptUI->IncludeContent->setEnabled(mode == 1);
+    ScriptUI->CommitDistance->setEnabled(mode == 1);
+
+    if (mode == 1 || mode == 2)
+    {
+        ScriptUI->IncludeHeader->setEnabled(true);
+        ScriptUI->IncludePrompt->setEnabled(true);
+    }
+    else if (mode == 0 || mode == 3 || mode == 4)
+    {
+        ScriptUI->IncludeHeader->setEnabled(false);
+        ScriptUI->IncludePrompt->setEnabled(false);
+    }
+
+    if (mode == 0 || mode == 2 || mode == 3 || mode == 4)
+    {
+        ScriptUI->IncludeDDL->setEnabled(false);
+        ScriptUI->IncludeDDL->setChecked(true);
+    }
+    else if (mode == 1)
+        ScriptUI->IncludeDDL->setEnabled(true);
+
+    ScriptUI->OutputGroup->setEnabled(mode == 1 || mode == 2 || mode == 4);
+
+    ScriptUI->IncludeConstraints->setEnabled(ScriptUI->IncludeDDL->isChecked());
+    ScriptUI->IncludeIndexes->setEnabled(ScriptUI->IncludeDDL->isChecked());
+    ScriptUI->IncludeGrants->setEnabled(ScriptUI->IncludeDDL->isChecked());
+    ScriptUI->IncludeStorage->setEnabled(ScriptUI->IncludeDDL->isChecked() && mode != 3);
+    ScriptUI->IncludeParallell->setEnabled(ScriptUI->IncludeDDL->isChecked() && mode != 3);
+    ScriptUI->IncludePartition->setEnabled(ScriptUI->IncludeDDL->isChecked() && mode != 3);
+    ScriptUI->IncludeCode->setEnabled(ScriptUI->IncludeDDL->isChecked());
+    ScriptUI->IncludeComment->setEnabled(ScriptUI->IncludeDDL->isChecked());
+}
+
+void toScript::keepOn(QListViewItem *parent)
+{
+    if (!parent)
+        return ;
+    toResultViewCheck *pchk = dynamic_cast<toResultViewCheck *>(parent);
+    if (!pchk)
+        return ;
+    pchk->setOn(true);
+}
+
+void toScript::objectClicked(QListViewItem *parent)
+{
+    if (!parent)
+        return ;
+    toResultViewCheck *pchk = dynamic_cast<toResultViewCheck *>(parent);
+    if (!pchk)
+        return ;
+    if (!parent->parent() && !parent->firstChild())
+    {
+        if (parent->listView() == ScriptUI->SourceObjects)
+            expandSource(parent);
+        else if (parent->listView() == ScriptUI->DestinationObjects)
+            expandDestination(parent);
+    }
+    bool on = pchk->isOn();
+    QListViewItem *next = NULL;
+    for (QListViewItem *item = parent->firstChild();item;item = next)
+    {
+        toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(item);
+        if (chk)
+            chk->setOn(on);
+
+        if (item->firstChild())
+            next = item->firstChild();
+        else if (item->nextSibling())
+            next = item->nextSibling();
+        else
+        {
+            next = item;
+            do
+            {
+                next = next->parent();
+                if (next == parent)
+                    return ;
+            }
+            while (next && !next->nextSibling());
+            if (next)
+                next = next->nextSibling();
+        }
+    }
+}
+
+void toScript::changeSchema(int, bool source)
+{
+    QString src = (source ? ScriptUI->SourceSchema : ScriptUI->DestinationSchema)->currentText();
+    for (QListViewItem *parent = (source ?
+                                  ScriptUI->SourceObjects :
+                                  ScriptUI->DestinationObjects)->firstChild();
+            parent;
+            parent = parent->nextSibling())
+    {
+        toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(parent);
+        if (chk)
+        {
+            bool ena = ((src == chk->text(0)) || (src == QString::fromLatin1("All")));
+
+            QListViewItem *next = NULL;
+            for (QListViewItem *item = parent;item;item = next)
+            {
+                chk = dynamic_cast<toResultViewCheck *>(item);
+                if (chk)
+                {
+                    chk->setEnabled(ena);
+                    (source ? ScriptUI->SourceObjects : ScriptUI->DestinationObjects)->repaintItem(chk);
+                }
+
+                if (item->firstChild())
+                    next = item->firstChild();
+                else if (item->nextSibling() && item->nextSibling()->depth())
+                    next = item->nextSibling();
+                else
+                {
+                    next = item;
+                    do
+                    {
+                        next = next->parent();
+                        if (next == parent)
+                            break;
+                    }
+                    while (next && !next->nextSibling());
+                    if (next == parent)
+                        break;
+                    if (next)
+                        next = next->nextSibling();
+                }
+            }
+
+        }
+    }
+}
+
+void toScript::newSize(void)
+{
+    QString init = ScriptUI->Initial->sizeString();
+    QString next = ScriptUI->Next->sizeString();
+    QString max = ScriptUI->Limit->sizeString();
+    QString maxNum;
+    maxNum.sprintf("%010d", ScriptUI->Limit->value());
+
+    for (QListViewItem *item = ScriptUI->Sizes->firstChild();item;item = item->nextSibling())
+        if (max == item->text(0))
+        {
+            toStatusMessage(tr("Replacing existing size with new"), false, false);
+            delete item;
+            break;
+        }
+
+    new QListViewItem(ScriptUI->Sizes, max, init, next, maxNum);
+    ScriptUI->Sizes->setSorting(3);
+}
+
+void toScript::removeSize(void)
+{
+    QListViewItem *item = ScriptUI->Sizes->selectedItem();
+    if (item)
+        delete item;
+}
+
+void toScript::setupExtract(toExtract &extr)
+{
+    extr.setCode (ScriptUI->IncludeCode->isEnabled() &&
+                  ScriptUI->IncludeCode->isChecked() );
+    extr.setComments (ScriptUI->IncludeComment->isEnabled() &&
+                      ScriptUI->IncludeComment->isChecked() );
+    extr.setConstraints(ScriptUI->IncludeConstraints->isEnabled() &&
+                        ScriptUI->IncludeConstraints->isChecked());
+    extr.setContents (ScriptUI->IncludeContent->isEnabled() &&
+                      ScriptUI->IncludeContent->isChecked() ,
+                      ScriptUI->CommitDistance->value() );
+    extr.setGrants (ScriptUI->IncludeGrants->isEnabled() &&
+                    ScriptUI->IncludeGrants->isChecked() );
+    extr.setHeading (ScriptUI->IncludeHeader->isEnabled() &&
+                     ScriptUI->IncludeHeader->isChecked() );
+    extr.setIndexes (ScriptUI->IncludeIndexes->isEnabled() &&
+                     ScriptUI->IncludeIndexes->isChecked() );
+    extr.setParallel (ScriptUI->IncludeParallell->isEnabled() &&
+                      ScriptUI->IncludeParallell->isChecked() );
+    extr.setPartition (ScriptUI->IncludePartition->isEnabled() &&
+                       ScriptUI->IncludePartition->isChecked() );
+    extr.setPrompt (ScriptUI->IncludePrompt->isEnabled() &&
+                    ScriptUI->IncludePrompt->isChecked() );
+    extr.setStorage (ScriptUI->IncludeStorage->isEnabled() &&
+                     ScriptUI->IncludeStorage->isChecked() );
+
+    if (ScriptUI->Schema->currentText() == tr("Same"))
+        extr.setSchema(QString::fromLatin1("1"));
+    else if (ScriptUI->Schema->currentText() == tr("None"))
+        extr.setSchema(QString::null);
+    else
+        extr.setSchema(ScriptUI->Schema->currentText());
+
+    if (ScriptUI->DontResize->isChecked())
+        extr.setResize(QString::null);
+    else if (ScriptUI->AutoResize->isChecked())
+        extr.setResize(QString::fromLatin1("1"));
+    else
+    {
+        QString siz;
+        for (QListViewItem *item = ScriptUI->Sizes->firstChild();item;item = item->nextSibling())
+        {
+            siz += item->text(0);
+            siz += QString::fromLatin1(":");
+            siz += item->text(1);
+            siz += QString::fromLatin1(":");
+            siz += item->text(2);
+            if (item->nextSibling())
+                siz += QString::fromLatin1(":");
+        }
+        extr.setResize(siz);
+    }
+}
+
+void toScript::expandSource(QListViewItem *item)
+{
+    try
+    {
+        if (item)
+            readOwnerObjects(item,
+                             toMainWidget()->connection(ScriptUI->SourceConnection->currentText()));
+    }
+    TOCATCH
+}
+
+void toScript::expandDestination(QListViewItem *item)
+{
+    try
+    {
+        if (item)
+            readOwnerObjects(item,
+                             toMainWidget()->connection(ScriptUI->DestinationConnection->currentText()));
+    }
+    TOCATCH
+}
+
+void toScript::browseFile(void)
+{
+    if (ScriptUI->OutputFile->isChecked())
+    {
+        QString f = toOpenFilename(QString::null, QString::null, this);
+        if (!f.isEmpty())
+            ScriptUI->Filename->setText(f);
+    }
+    else if (ScriptUI->OutputDir->isChecked())
+    {
+        QString f = TOFileDialog::getExistingDirectory(QString::null, this);
+        if (!f.isEmpty())
+            ScriptUI->Filename->setText(f);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/toscript.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toscript.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toscript.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,126 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSCRIPT_H
+#define TOSCRIPT_H
+
+#include "config.h"
+#include "tohelp.h"
+#include "toscriptui.h"
+
+#include <list>
+#include <algorithm>
+
+class QTextView;
+class toConnection;
+class toExtract;
+class toListView;
+class toScriptUI;
+class toWorksheet;
+
+class toScript : public toToolWidget
+{
+    Q_OBJECT
+
+    toScriptUI *ScriptUI;
+    toWorksheet *Worksheet;
+    toListView *DropList;
+    toListView *CreateList;
+    toListView *SearchList;
+    QTextView *Report;
+
+    void setupExtract(toExtract &);
+    void changeConnection(int, bool source);
+    void changeSchema(int, bool source);
+    std::list<QString> createObjectList(QListView *);
+    void fillDifference(std::list<QString> &objects, QListView *list);
+    void readOwnerObjects(QListViewItem *item, toConnection &conn);
+
+    struct PrefixString
+    {
+public:
+        PrefixString(std::list<QString> & l, QString s);
+        void operator()(QString& tmp);
+private:
+        std::list<QString> & _l;
+        QString _s;
+    };
+
+public:
+    toScript(QWidget *parent, toConnection &connection);
+    virtual ~toScript();
+
+public slots:
+    void execute(void);
+    void changeMode(int);
+    void changeSource(int val)
+    {
+        changeConnection(val, true);
+    }
+    void changeDestination(int val)
+    {
+        changeConnection(val, false);
+    }
+    void keepOn(QListViewItem *item);
+    void objectClicked(QListViewItem *item);
+    void changeSourceSchema(int val)
+    {
+        changeSchema(val, true);
+    }
+    void changeDestinationSchema(int val)
+    {
+        changeSchema(val, false);
+    }
+    void newSize(void);
+    void removeSize(void);
+    void browseFile(void);
+
+    void expandSource(QListViewItem *item);
+    void expandDestination(QListViewItem *item);
+    void addConnection(const QString &name);
+    void delConnection(const QString &name);
+};
+
+inline void toScript::PrefixString::operator()(QString& txt)
+{
+    _l.push_back(_s + txt);
+}
+
+inline toScript::PrefixString::PrefixString(std::list<QString> & l, QString s) : _l(l), _s(s)
+{}
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toscriptui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toscriptui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toscriptui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,588 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'toscriptui.ui'
+**
+** Created: Tue Sep 18 08:21:23 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "toscriptui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qtabwidget.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qcombobox.h>
+#include <qheader.h>
+#include <qlistview.h>
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+#include <qcheckbox.h>
+#include <qframe.h>
+#include <qspinbox.h>
+#include <qlineedit.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "tofilesize.h"
+
+/*
+ *  Constructs a toScriptUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toScriptUI::toScriptUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toScriptUI" );
+    setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)5, 0, 0, sizePolicy().hasHeightForWidth() ) );
+    toScriptUILayout = new QGridLayout( this, 1, 1, 0, 6, "toScriptUILayout"); 
+
+    Tabs = new QTabWidget( this, "Tabs" );
+
+    tab = new QWidget( Tabs, "tab" );
+    tabLayout = new QGridLayout( tab, 1, 1, -1, -1, "tabLayout"); 
+
+    Destination = new QGroupBox( tab, "Destination" );
+    Destination->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, Destination->sizePolicy().hasHeightForWidth() ) );
+    Destination->setColumnLayout(0, Qt::Vertical );
+    Destination->layout()->setSpacing( 6 );
+    Destination->layout()->setMargin( 11 );
+    DestinationLayout = new QGridLayout( Destination->layout() );
+    DestinationLayout->setAlignment( Qt::AlignTop );
+
+    TextLabel2_4 = new QLabel( Destination, "TextLabel2_4" );
+
+    DestinationLayout->addWidget( TextLabel2_4, 0, 0 );
+
+    TextLabel2_2_3 = new QLabel( Destination, "TextLabel2_2_3" );
+
+    DestinationLayout->addWidget( TextLabel2_2_3, 2, 0 );
+
+    DestinationConnection = new QComboBox( FALSE, Destination, "DestinationConnection" );
+
+    DestinationLayout->addWidget( DestinationConnection, 1, 0 );
+
+    DestinationSchema = new QComboBox( FALSE, Destination, "DestinationSchema" );
+
+    DestinationLayout->addWidget( DestinationSchema, 3, 0 );
+
+    DestinationObjects = new QListView( Destination, "DestinationObjects" );
+    DestinationObjects->addColumn( tr( "Objects" ) );
+    DestinationObjects->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, DestinationObjects->sizePolicy().hasHeightForWidth() ) );
+    DestinationObjects->setRootIsDecorated( TRUE );
+
+    DestinationLayout->addWidget( DestinationObjects, 5, 0 );
+
+    TextLabel1_2 = new QLabel( Destination, "TextLabel1_2" );
+    TextLabel1_2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)4, 0, 0, TextLabel1_2->sizePolicy().hasHeightForWidth() ) );
+
+    DestinationLayout->addWidget( TextLabel1_2, 4, 0 );
+
+    tabLayout->addMultiCellWidget( Destination, 0, 2, 2, 2 );
+
+    ModeGroup = new QButtonGroup( tab, "ModeGroup" );
+    ModeGroup->setColumnLayout(0, Qt::Vertical );
+    ModeGroup->layout()->setSpacing( 6 );
+    ModeGroup->layout()->setMargin( 11 );
+    ModeGroupLayout = new QGridLayout( ModeGroup->layout() );
+    ModeGroupLayout->setAlignment( Qt::AlignTop );
+
+    Compare = new QRadioButton( ModeGroup, "Compare" );
+    Compare->setChecked( TRUE );
+    ModeGroup->insert( Compare, 0 );
+
+    ModeGroupLayout->addWidget( Compare, 0, 0 );
+
+    Extract = new QRadioButton( ModeGroup, "Extract" );
+    Extract->setChecked( FALSE );
+    ModeGroup->insert( Extract, 1 );
+
+    ModeGroupLayout->addWidget( Extract, 1, 0 );
+
+    IncludeCode = new QCheckBox( ModeGroup, "IncludeCode" );
+    IncludeCode->setChecked( TRUE );
+    ModeGroup->insert( IncludeCode, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludeCode, 7, 7, 2, 3 );
+
+    IncludeStorage = new QCheckBox( ModeGroup, "IncludeStorage" );
+    IncludeStorage->setChecked( TRUE );
+    ModeGroup->insert( IncludeStorage, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludeStorage, 4, 4, 2, 3 );
+
+    IncludeParallell = new QCheckBox( ModeGroup, "IncludeParallell" );
+    IncludeParallell->setChecked( TRUE );
+    ModeGroup->insert( IncludeParallell, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludeParallell, 5, 5, 2, 3 );
+
+    IncludePartition = new QCheckBox( ModeGroup, "IncludePartition" );
+    IncludePartition->setChecked( TRUE );
+    ModeGroup->insert( IncludePartition, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludePartition, 6, 6, 2, 3 );
+
+    IncludeIndexes = new QCheckBox( ModeGroup, "IncludeIndexes" );
+    IncludeIndexes->setChecked( TRUE );
+    ModeGroup->insert( IncludeIndexes, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludeIndexes, 2, 2, 2, 3 );
+
+    IncludeComment = new QCheckBox( ModeGroup, "IncludeComment" );
+    IncludeComment->setEnabled( TRUE );
+    IncludeComment->setChecked( TRUE );
+    ModeGroup->insert( IncludeComment, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludeComment, 8, 8, 2, 3 );
+
+    IncludeGrants = new QCheckBox( ModeGroup, "IncludeGrants" );
+    IncludeGrants->setChecked( TRUE );
+    ModeGroup->insert( IncludeGrants, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludeGrants, 3, 3, 2, 3 );
+
+    IncludeConstraints = new QCheckBox( ModeGroup, "IncludeConstraints" );
+    IncludeConstraints->setChecked( TRUE );
+    ModeGroup->insert( IncludeConstraints, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludeConstraints, 1, 1, 2, 3 );
+
+    IncludeDDL = new QCheckBox( ModeGroup, "IncludeDDL" );
+    IncludeDDL->setEnabled( FALSE );
+    IncludeDDL->setChecked( TRUE );
+    ModeGroup->insert( IncludeDDL, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludeDDL, 0, 0, 2, 3 );
+
+    Search = new QRadioButton( ModeGroup, "Search" );
+    ModeGroup->insert( Search, 3 );
+
+    ModeGroupLayout->addWidget( Search, 2, 0 );
+
+    Line3 = new QFrame( ModeGroup, "Line3" );
+    Line3->setFrameStyle( QFrame::VLine | QFrame::Sunken );
+
+    ModeGroupLayout->addMultiCellWidget( Line3, 0, 14, 1, 1 );
+    Spacer10_2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    ModeGroupLayout->addMultiCell( Spacer10_2, 5, 14, 0, 0 );
+
+    Migrate = new QRadioButton( ModeGroup, "Migrate" );
+    Migrate->setEnabled( TRUE );
+    Migrate->setChecked( FALSE );
+    ModeGroup->insert( Migrate, 2 );
+
+    ModeGroupLayout->addWidget( Migrate, 3, 0 );
+
+    Report = new QRadioButton( ModeGroup, "Report" );
+    Report->setEnabled( TRUE );
+    Report->setChecked( FALSE );
+    ModeGroup->insert( Report, 4 );
+
+    ModeGroupLayout->addWidget( Report, 4, 0 );
+
+    IncludePrompt = new QCheckBox( ModeGroup, "IncludePrompt" );
+    IncludePrompt->setEnabled( FALSE );
+    IncludePrompt->setFocusPolicy( QCheckBox::NoFocus );
+    IncludePrompt->setChecked( FALSE );
+    ModeGroup->insert( IncludePrompt, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludePrompt, 9, 9, 2, 3 );
+    Spacer9_2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    ModeGroupLayout->addItem( Spacer9_2, 14, 2 );
+
+    IncludeHeader = new QCheckBox( ModeGroup, "IncludeHeader" );
+    IncludeHeader->setEnabled( FALSE );
+    IncludeHeader->setChecked( TRUE );
+    ModeGroup->insert( IncludeHeader, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludeHeader, 10, 10, 2, 3 );
+
+    Schema = new QComboBox( FALSE, ModeGroup, "Schema" );
+    Schema->setEditable( TRUE );
+    Schema->setDuplicatesEnabled( FALSE );
+
+    ModeGroupLayout->addWidget( Schema, 13, 3 );
+
+    TextLabel3 = new QLabel( ModeGroup, "TextLabel3" );
+
+    ModeGroupLayout->addWidget( TextLabel3, 13, 2 );
+
+    IncludeContent = new QCheckBox( ModeGroup, "IncludeContent" );
+    IncludeContent->setEnabled( FALSE );
+    IncludeContent->setFocusPolicy( QCheckBox::NoFocus );
+    IncludeContent->setChecked( FALSE );
+    ModeGroup->insert( IncludeContent, 10 );
+
+    ModeGroupLayout->addMultiCellWidget( IncludeContent, 11, 11, 2, 3 );
+
+    TextLabel1_3 = new QLabel( ModeGroup, "TextLabel1_3" );
+
+    ModeGroupLayout->addWidget( TextLabel1_3, 12, 2 );
+
+    CommitDistance = new QSpinBox( ModeGroup, "CommitDistance" );
+    CommitDistance->setEnabled( FALSE );
+    CommitDistance->setMaxValue( 1000000 );
+
+    ModeGroupLayout->addWidget( CommitDistance, 12, 3 );
+
+    tabLayout->addWidget( ModeGroup, 0, 0 );
+
+    SearchGroup = new QButtonGroup( tab, "SearchGroup" );
+    SearchGroup->setEnabled( FALSE );
+    SearchGroup->setColumnLayout(0, Qt::Vertical );
+    SearchGroup->layout()->setSpacing( 6 );
+    SearchGroup->layout()->setMargin( 11 );
+    SearchGroupLayout = new QGridLayout( SearchGroup->layout() );
+    SearchGroupLayout->setAlignment( Qt::AlignTop );
+
+    SearchWord = new QLineEdit( SearchGroup, "SearchWord" );
+
+    SearchGroupLayout->addMultiCellWidget( SearchWord, 2, 2, 0, 1 );
+
+    AnyWords = new QRadioButton( SearchGroup, "AnyWords" );
+    AnyWords->setChecked( TRUE );
+    SearchGroup->insert( AnyWords, 2 );
+
+    SearchGroupLayout->addWidget( AnyWords, 0, 0 );
+
+    AllWords = new QRadioButton( SearchGroup, "AllWords" );
+    AllWords->setFocusPolicy( QRadioButton::NoFocus );
+    AllWords->setChecked( FALSE );
+    SearchGroup->insert( AllWords, 1 );
+
+    SearchGroupLayout->addWidget( AllWords, 0, 1 );
+
+    RegExp = new QRadioButton( SearchGroup, "RegExp" );
+    RegExp->setFocusPolicy( QRadioButton::NoFocus );
+    RegExp->setChecked( FALSE );
+    SearchGroup->insert( RegExp, 3 );
+
+    SearchGroupLayout->addWidget( RegExp, 1, 1 );
+
+    ExactMatch = new QRadioButton( SearchGroup, "ExactMatch" );
+    ExactMatch->setFocusPolicy( QRadioButton::NoFocus );
+    SearchGroup->insert( ExactMatch, 4 );
+
+    SearchGroupLayout->addWidget( ExactMatch, 1, 0 );
+
+    tabLayout->addWidget( SearchGroup, 2, 0 );
+
+    GroupBox2 = new QGroupBox( tab, "GroupBox2" );
+    GroupBox2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, GroupBox2->sizePolicy().hasHeightForWidth() ) );
+    GroupBox2->setColumnLayout(0, Qt::Vertical );
+    GroupBox2->layout()->setSpacing( 6 );
+    GroupBox2->layout()->setMargin( 11 );
+    GroupBox2Layout = new QGridLayout( GroupBox2->layout() );
+    GroupBox2Layout->setAlignment( Qt::AlignTop );
+
+    TextLabel2 = new QLabel( GroupBox2, "TextLabel2" );
+
+    GroupBox2Layout->addWidget( TextLabel2, 0, 0 );
+
+    TextLabel2_2 = new QLabel( GroupBox2, "TextLabel2_2" );
+
+    GroupBox2Layout->addWidget( TextLabel2_2, 2, 0 );
+
+    SourceConnection = new QComboBox( FALSE, GroupBox2, "SourceConnection" );
+
+    GroupBox2Layout->addWidget( SourceConnection, 1, 0 );
+
+    SourceSchema = new QComboBox( FALSE, GroupBox2, "SourceSchema" );
+
+    GroupBox2Layout->addWidget( SourceSchema, 3, 0 );
+
+    SourceObjects = new QListView( GroupBox2, "SourceObjects" );
+    SourceObjects->addColumn( tr( "Objects" ) );
+    SourceObjects->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, SourceObjects->sizePolicy().hasHeightForWidth() ) );
+    SourceObjects->setRootIsDecorated( TRUE );
+
+    GroupBox2Layout->addWidget( SourceObjects, 5, 0 );
+
+    TextLabel1 = new QLabel( GroupBox2, "TextLabel1" );
+    TextLabel1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)4, 0, 0, TextLabel1->sizePolicy().hasHeightForWidth() ) );
+
+    GroupBox2Layout->addWidget( TextLabel1, 4, 0 );
+
+    tabLayout->addMultiCellWidget( GroupBox2, 0, 2, 1, 1 );
+
+    OutputGroup = new QButtonGroup( tab, "OutputGroup" );
+    OutputGroup->setEnabled( FALSE );
+    OutputGroup->setColumnLayout(0, Qt::Vertical );
+    OutputGroup->layout()->setSpacing( 6 );
+    OutputGroup->layout()->setMargin( 11 );
+    OutputGroupLayout = new QGridLayout( OutputGroup->layout() );
+    OutputGroupLayout->setAlignment( Qt::AlignTop );
+
+    OutputTab = new QRadioButton( OutputGroup, "OutputTab" );
+    OutputTab->setChecked( TRUE );
+    OutputGroup->insert( OutputTab, 1 );
+
+    OutputGroupLayout->addWidget( OutputTab, 0, 0 );
+
+    OutputDir = new QRadioButton( OutputGroup, "OutputDir" );
+    OutputDir->setFocusPolicy( QRadioButton::NoFocus );
+    OutputGroup->insert( OutputDir, 3 );
+
+    OutputGroupLayout->addWidget( OutputDir, 0, 2 );
+
+    OutputFile = new QRadioButton( OutputGroup, "OutputFile" );
+    OutputFile->setFocusPolicy( QRadioButton::NoFocus );
+
+    OutputGroupLayout->addWidget( OutputFile, 0, 1 );
+
+    Layout1 = new QHBoxLayout( 0, 0, 6, "Layout1"); 
+
+    Filename = new QLineEdit( OutputGroup, "Filename" );
+    Filename->setEnabled( FALSE );
+    Layout1->addWidget( Filename );
+
+    Browse = new QPushButton( OutputGroup, "Browse" );
+    Browse->setEnabled( FALSE );
+    Layout1->addWidget( Browse );
+
+    OutputGroupLayout->addMultiCellLayout( Layout1, 1, 1, 0, 2 );
+
+    tabLayout->addWidget( OutputGroup, 1, 0 );
+    Tabs->insertTab( tab, QString::fromLatin1("") );
+
+    ResizeTab = new QWidget( Tabs, "ResizeTab" );
+    ResizeTabLayout = new QGridLayout( ResizeTab, 1, 1, 11, 6, "ResizeTabLayout"); 
+
+    ButtonGroup2_2 = new QButtonGroup( ResizeTab, "ButtonGroup2_2" );
+    ButtonGroup2_2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)4, 0, 0, ButtonGroup2_2->sizePolicy().hasHeightForWidth() ) );
+    ButtonGroup2_2->setColumnLayout(0, Qt::Vertical );
+    ButtonGroup2_2->layout()->setSpacing( 6 );
+    ButtonGroup2_2->layout()->setMargin( 11 );
+    ButtonGroup2_2Layout = new QGridLayout( ButtonGroup2_2->layout() );
+    ButtonGroup2_2Layout->setAlignment( Qt::AlignTop );
+
+    DontResize = new QRadioButton( ButtonGroup2_2, "DontResize" );
+    DontResize->setChecked( TRUE );
+
+    ButtonGroup2_2Layout->addWidget( DontResize, 0, 0 );
+
+    AutoResize = new QRadioButton( ButtonGroup2_2, "AutoResize" );
+
+    ButtonGroup2_2Layout->addWidget( AutoResize, 0, 1 );
+
+    CustomResize = new QRadioButton( ButtonGroup2_2, "CustomResize" );
+
+    ButtonGroup2_2Layout->addWidget( CustomResize, 0, 2 );
+
+    ResizeTabLayout->addWidget( ButtonGroup2_2, 0, 0 );
+
+    Frame4 = new QFrame( ResizeTab, "Frame4" );
+    Frame4->setEnabled( FALSE );
+    Frame4->setFrameShape( QFrame::StyledPanel );
+    Frame4->setFrameShadow( QFrame::Raised );
+    Frame4Layout = new QGridLayout( Frame4, 1, 1, 11, 6, "Frame4Layout"); 
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    Frame4Layout->addItem( Spacer2, 3, 0 );
+
+    Sizes = new QListView( Frame4, "Sizes" );
+    Sizes->addColumn( tr( "Limit" ) );
+    Sizes->addColumn( tr( "Initial" ) );
+    Sizes->addColumn( tr( "Next" ) );
+    Sizes->setAllColumnsShowFocus( TRUE );
+
+    Frame4Layout->addMultiCellWidget( Sizes, 0, 3, 2, 3 );
+
+    Limit = new toFilesize( Frame4, "Limit" );
+    Limit->setFocusPolicy( toFilesize::TabFocus );
+
+    Frame4Layout->addMultiCellWidget( Limit, 0, 0, 0, 1 );
+
+    Initial = new toFilesize( Frame4, "Initial" );
+    Initial->setFocusPolicy( toFilesize::TabFocus );
+
+    Frame4Layout->addMultiCellWidget( Initial, 1, 1, 0, 1 );
+
+    Next = new toFilesize( Frame4, "Next" );
+    Next->setFocusPolicy( toFilesize::TabFocus );
+
+    Frame4Layout->addMultiCellWidget( Next, 2, 2, 0, 1 );
+
+    AddButton = new QPushButton( Frame4, "AddButton" );
+    AddButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, AddButton->sizePolicy().hasHeightForWidth() ) );
+    AddButton->setDefault( TRUE );
+
+    Frame4Layout->addWidget( AddButton, 4, 1 );
+
+    Remove = new QPushButton( Frame4, "Remove" );
+    Remove->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, Remove->sizePolicy().hasHeightForWidth() ) );
+
+    Frame4Layout->addWidget( Remove, 4, 3 );
+    Spacer9 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Minimum );
+    Frame4Layout->addItem( Spacer9, 4, 0 );
+    Spacer10 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    Frame4Layout->addItem( Spacer10, 4, 2 );
+
+    ResizeTabLayout->addWidget( Frame4, 1, 0 );
+    Tabs->insertTab( ResizeTab, QString::fromLatin1("") );
+
+    ResultTab = new QWidget( Tabs, "ResultTab" );
+    Tabs->insertTab( ResultTab, QString::fromLatin1("") );
+
+    DifferenceTab = new QWidget( Tabs, "DifferenceTab" );
+    Tabs->insertTab( DifferenceTab, QString::fromLatin1("") );
+
+    toScriptUILayout->addWidget( Tabs, 0, 0 );
+    languageChange();
+    resize( QSize(888, 791).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( CustomResize, SIGNAL( toggled(bool) ), Frame4, SLOT( setEnabled(bool) ) );
+    connect( Search, SIGNAL( toggled(bool) ), Schema, SLOT( setDisabled(bool) ) );
+    connect( IncludeDDL, SIGNAL( toggled(bool) ), IncludeConstraints, SLOT( setEnabled(bool) ) );
+    connect( IncludeDDL, SIGNAL( toggled(bool) ), IncludeIndexes, SLOT( setEnabled(bool) ) );
+    connect( IncludeDDL, SIGNAL( toggled(bool) ), IncludeGrants, SLOT( setEnabled(bool) ) );
+    connect( IncludeDDL, SIGNAL( toggled(bool) ), IncludeStorage, SLOT( setEnabled(bool) ) );
+    connect( IncludeDDL, SIGNAL( toggled(bool) ), IncludeParallell, SLOT( setEnabled(bool) ) );
+    connect( IncludeDDL, SIGNAL( toggled(bool) ), IncludeComment, SLOT( setEnabled(bool) ) );
+    connect( IncludeDDL, SIGNAL( toggled(bool) ), IncludeCode, SLOT( setEnabled(bool) ) );
+    connect( IncludeDDL, SIGNAL( toggled(bool) ), IncludePartition, SLOT( setEnabled(bool) ) );
+    connect( Search, SIGNAL( toggled(bool) ), SearchGroup, SLOT( setEnabled(bool) ) );
+    connect( OutputTab, SIGNAL( toggled(bool) ), Filename, SLOT( setDisabled(bool) ) );
+    connect( OutputTab, SIGNAL( toggled(bool) ), Browse, SLOT( setDisabled(bool) ) );
+    connect( Extract, SIGNAL( toggled(bool) ), OutputDir, SLOT( setEnabled(bool) ) );
+    connect( IncludeContent, SIGNAL( toggled(bool) ), CommitDistance, SLOT( setEnabled(bool) ) );
+
+    // tab order
+    setTabOrder( Tabs, Compare );
+    setTabOrder( Compare, IncludeDDL );
+    setTabOrder( IncludeDDL, IncludeConstraints );
+    setTabOrder( IncludeConstraints, IncludeIndexes );
+    setTabOrder( IncludeIndexes, IncludeGrants );
+    setTabOrder( IncludeGrants, IncludeStorage );
+    setTabOrder( IncludeStorage, IncludeParallell );
+    setTabOrder( IncludeParallell, IncludePartition );
+    setTabOrder( IncludePartition, IncludeCode );
+    setTabOrder( IncludeCode, IncludeComment );
+    setTabOrder( IncludeComment, IncludeContent );
+    setTabOrder( IncludeContent, IncludePrompt );
+    setTabOrder( IncludePrompt, IncludeHeader );
+    setTabOrder( IncludeHeader, Schema );
+    setTabOrder( Schema, OutputTab );
+    setTabOrder( OutputTab, Filename );
+    setTabOrder( Filename, Browse );
+    setTabOrder( Browse, AnyWords );
+    setTabOrder( AnyWords, SearchWord );
+    setTabOrder( SearchWord, SourceConnection );
+    setTabOrder( SourceConnection, SourceSchema );
+    setTabOrder( SourceSchema, SourceObjects );
+    setTabOrder( SourceObjects, DestinationConnection );
+    setTabOrder( DestinationConnection, DestinationSchema );
+    setTabOrder( DestinationSchema, DestinationObjects );
+    setTabOrder( DestinationObjects, OutputFile );
+    setTabOrder( OutputFile, DontResize );
+    setTabOrder( DontResize, AutoResize );
+    setTabOrder( AutoResize, CustomResize );
+    setTabOrder( CustomResize, Limit );
+    setTabOrder( Limit, Initial );
+    setTabOrder( Initial, Next );
+    setTabOrder( Next, Sizes );
+    setTabOrder( Sizes, AddButton );
+    setTabOrder( AddButton, Remove );
+    setTabOrder( Remove, ExactMatch );
+    setTabOrder( ExactMatch, RegExp );
+    setTabOrder( RegExp, Extract );
+    setTabOrder( Extract, Migrate );
+    setTabOrder( Migrate, AllWords );
+    setTabOrder( AllWords, OutputDir );
+
+    // buddies
+    TextLabel1_2->setBuddy( DestinationObjects );
+    TextLabel1->setBuddy( SourceObjects );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toScriptUI::~toScriptUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toScriptUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    Destination->setTitle( tr( "&Destination" ) );
+    TextLabel2_4->setText( tr( "Connection" ) );
+    TextLabel2_2_3->setText( tr( "Schema" ) );
+    DestinationSchema->clear();
+    DestinationSchema->insertItem( tr( "All" ) );
+    DestinationObjects->header()->setLabel( 0, tr( "Objects" ) );
+    TextLabel1_2->setText( tr( "&Include objects" ) );
+    ModeGroup->setTitle( tr( "&Options" ) );
+    Compare->setText( tr( "Compare" ) );
+    QToolTip::add( Compare, tr( "Compare two databases or schemas" ) );
+    Extract->setText( tr( "Extract" ) );
+    QToolTip::add( Extract, tr( "Extract script to recreate database objects." ) );
+    IncludeCode->setText( tr( "Include code specification" ) );
+    IncludeStorage->setText( tr( "Include storage specification" ) );
+    IncludeParallell->setText( tr( "Include parallel specification" ) );
+    IncludePartition->setText( tr( "Include partition specification" ) );
+    IncludeIndexes->setText( tr( "Include indexes" ) );
+    IncludeComment->setText( tr( "Include comments" ) );
+    IncludeGrants->setText( tr( "Include grants" ) );
+    IncludeConstraints->setText( tr( "Include constraints" ) );
+    IncludeDDL->setText( tr( "Include DDL" ) );
+    Search->setText( tr( "Search" ) );
+    Migrate->setText( tr( "Migrate" ) );
+    QToolTip::add( Migrate, tr( "Create database scripts to convert schema or database from source to destination" ) );
+    Report->setText( tr( "Report" ) );
+    QToolTip::add( Report, tr( "Create database scripts to convert schema or database from source to destination" ) );
+    IncludePrompt->setText( tr( "Generate prompts" ) );
+    QToolTip::add( IncludePrompt, tr( "Generate prompts to display progress in SQLPlus" ) );
+    IncludeHeader->setText( tr( "Generate header" ) );
+    QToolTip::add( IncludeHeader, tr( "Generate header at the top of the script" ) );
+    Schema->clear();
+    Schema->insertItem( tr( "Same" ) );
+    Schema->insertItem( tr( "None" ) );
+    TextLabel3->setText( tr( "Generated schema" ) );
+    QToolTip::add( TextLabel3, tr( "Select the schema to generate in script" ) );
+    IncludeContent->setText( tr( "Include content of tables" ) );
+    TextLabel1_3->setText( tr( "Commit distance" ) );
+    QToolTip::add( TextLabel1_3, tr( "The number of insertstatements to make between each commit (0 means whole table)" ) );
+    SearchGroup->setTitle( tr( "&Search" ) );
+    AnyWords->setText( tr( "Contain any words" ) );
+    AllWords->setText( tr( "Contain all words" ) );
+    RegExp->setText( tr( "RegExp" ) );
+    ExactMatch->setText( tr( "Exact match" ) );
+    GroupBox2->setTitle( tr( "&Source" ) );
+    TextLabel2->setText( tr( "Connection" ) );
+    TextLabel2_2->setText( tr( "Schema" ) );
+    SourceSchema->clear();
+    SourceSchema->insertItem( tr( "All" ) );
+    SourceObjects->header()->setLabel( 0, tr( "Objects" ) );
+    TextLabel1->setText( tr( "&Include objects" ) );
+    OutputGroup->setTitle( tr( "Output" ) );
+    OutputTab->setText( tr( "Output tab" ) );
+    OutputDir->setText( tr( "Output dir" ) );
+    QToolTip::add( OutputDir, tr( "Output to directory so that each object is placed in a different file." ) );
+    OutputFile->setText( tr( "Output file" ) );
+    Browse->setText( tr( "Browse" ) );
+    Tabs->changeTab( tab, tr( "Configuration" ) );
+    ButtonGroup2_2->setTitle( tr( "Script Resize" ) );
+    DontResize->setText( tr( "Don't resize" ) );
+    AutoResize->setText( tr( "Auto resize" ) );
+    CustomResize->setText( tr( "Custom resize" ) );
+    Sizes->header()->setLabel( 0, tr( "Limit" ) );
+    Sizes->header()->setLabel( 1, tr( "Initial" ) );
+    Sizes->header()->setLabel( 2, tr( "Next" ) );
+    AddButton->setText( tr( "&Add" ) );
+    Remove->setText( tr( "&Remove" ) );
+    Tabs->changeTab( ResizeTab, tr( "Resize" ) );
+    Tabs->changeTab( ResultTab, tr( "Result" ) );
+    Tabs->changeTab( DifferenceTab, tr( "Difference" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/toscriptui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toscriptui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toscriptui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,136 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'toscriptui.ui'
+**
+** Created: Tue Sep 18 08:21:23 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSCRIPTUI_H
+#define TOSCRIPTUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toFilesize;
+class QTabWidget;
+class QGroupBox;
+class QLabel;
+class QComboBox;
+class QListView;
+class QListViewItem;
+class QButtonGroup;
+class QRadioButton;
+class QCheckBox;
+class QFrame;
+class QSpinBox;
+class QLineEdit;
+class QPushButton;
+
+class toScriptUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toScriptUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toScriptUI();
+
+    QTabWidget* Tabs;
+    QWidget* tab;
+    QGroupBox* Destination;
+    QLabel* TextLabel2_4;
+    QLabel* TextLabel2_2_3;
+    QComboBox* DestinationConnection;
+    QComboBox* DestinationSchema;
+    QListView* DestinationObjects;
+    QLabel* TextLabel1_2;
+    QButtonGroup* ModeGroup;
+    QRadioButton* Compare;
+    QRadioButton* Extract;
+    QCheckBox* IncludeCode;
+    QCheckBox* IncludeStorage;
+    QCheckBox* IncludeParallell;
+    QCheckBox* IncludePartition;
+    QCheckBox* IncludeIndexes;
+    QCheckBox* IncludeComment;
+    QCheckBox* IncludeGrants;
+    QCheckBox* IncludeConstraints;
+    QCheckBox* IncludeDDL;
+    QRadioButton* Search;
+    QFrame* Line3;
+    QRadioButton* Migrate;
+    QRadioButton* Report;
+    QCheckBox* IncludePrompt;
+    QCheckBox* IncludeHeader;
+    QComboBox* Schema;
+    QLabel* TextLabel3;
+    QCheckBox* IncludeContent;
+    QLabel* TextLabel1_3;
+    QSpinBox* CommitDistance;
+    QButtonGroup* SearchGroup;
+    QLineEdit* SearchWord;
+    QRadioButton* AnyWords;
+    QRadioButton* AllWords;
+    QRadioButton* RegExp;
+    QRadioButton* ExactMatch;
+    QGroupBox* GroupBox2;
+    QLabel* TextLabel2;
+    QLabel* TextLabel2_2;
+    QComboBox* SourceConnection;
+    QComboBox* SourceSchema;
+    QListView* SourceObjects;
+    QLabel* TextLabel1;
+    QButtonGroup* OutputGroup;
+    QRadioButton* OutputTab;
+    QRadioButton* OutputDir;
+    QRadioButton* OutputFile;
+    QLineEdit* Filename;
+    QPushButton* Browse;
+    QWidget* ResizeTab;
+    QButtonGroup* ButtonGroup2_2;
+    QRadioButton* DontResize;
+    QRadioButton* AutoResize;
+    QRadioButton* CustomResize;
+    QFrame* Frame4;
+    QListView* Sizes;
+    toFilesize* Limit;
+    toFilesize* Initial;
+    toFilesize* Next;
+    QPushButton* AddButton;
+    QPushButton* Remove;
+    QWidget* ResultTab;
+    QWidget* DifferenceTab;
+
+protected:
+    QGridLayout* toScriptUILayout;
+    QGridLayout* tabLayout;
+    QGridLayout* DestinationLayout;
+    QGridLayout* ModeGroupLayout;
+    QSpacerItem* Spacer10_2;
+    QSpacerItem* Spacer9_2;
+    QGridLayout* SearchGroupLayout;
+    QGridLayout* GroupBox2Layout;
+    QGridLayout* OutputGroupLayout;
+    QHBoxLayout* Layout1;
+    QGridLayout* ResizeTabLayout;
+    QGridLayout* ButtonGroup2_2Layout;
+    QGridLayout* Frame4Layout;
+    QSpacerItem* Spacer2;
+    QSpacerItem* Spacer9;
+    QSpacerItem* Spacer10;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOSCRIPTUI_H

Added: kde-extras/tora/branches/upstream/current/src/toscriptui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toscriptui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toscriptui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1570 @@
+<!DOCTYPE UI><UI>
+<class>toScriptUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toScriptUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>888</width>
+            <height>791</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>sizePolicy</name>
+        <sizepolicy>
+            <hsizetype>1</hsizetype>
+            <vsizetype>5</vsizetype>
+        </sizepolicy>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <property>
+        <name>layoutMargin</name>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>0</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0" >
+            <class>QTabWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Tabs</cstring>
+            </property>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>tab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>Configuration</string>
+                </attribute>
+                <grid>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>-1</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>-1</number>
+                    </property>
+                    <widget row="0"  column="2"  rowspan="3"  colspan="1" >
+                        <class>QGroupBox</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Destination</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>sizePolicy</name>
+                            <sizepolicy>
+                                <hsizetype>5</hsizetype>
+                                <vsizetype>7</vsizetype>
+                            </sizepolicy>
+                        </property>
+                        <property stdset="1">
+                            <name>title</name>
+                            <string>&amp;Destination</string>
+                        </property>
+                        <grid>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>11</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <widget row="0"  column="0" >
+                                <class>QLabel</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>TextLabel2_4</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Connection</string>
+                                </property>
+                            </widget>
+                            <widget row="2"  column="0" >
+                                <class>QLabel</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>TextLabel2_2_3</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Schema</string>
+                                </property>
+                            </widget>
+                            <widget row="1"  column="0" >
+                                <class>QComboBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>DestinationConnection</cstring>
+                                </property>
+                            </widget>
+                            <widget row="3"  column="0" >
+                                <class>QComboBox</class>
+                                <item>
+                                    <property>
+                                        <name>text</name>
+                                        <string>All</string>
+                                    </property>
+                                </item>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>DestinationSchema</cstring>
+                                </property>
+                            </widget>
+                            <widget row="5"  column="0" >
+                                <class>QListView</class>
+                                <column>
+                                    <property>
+                                        <name>text</name>
+                                        <string>Objects</string>
+                                    </property>
+                                    <property>
+                                        <name>clickable</name>
+                                        <bool>true</bool>
+                                    </property>
+                                    <property>
+                                        <name>resizeable</name>
+                                        <bool>true</bool>
+                                    </property>
+                                </column>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>DestinationObjects</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizePolicy</name>
+                                    <sizepolicy>
+                                        <hsizetype>7</hsizetype>
+                                        <vsizetype>7</vsizetype>
+                                    </sizepolicy>
+                                </property>
+                                <property stdset="1">
+                                    <name>rootIsDecorated</name>
+                                    <bool>true</bool>
+                                </property>
+                            </widget>
+                            <widget row="4"  column="0" >
+                                <class>QLabel</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>TextLabel1_2</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizePolicy</name>
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>4</vsizetype>
+                                    </sizepolicy>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>&amp;Include objects</string>
+                                </property>
+                                <property>
+                                    <name>buddy</name>
+                                    <cstring>DestinationObjects</cstring>
+                                </property>
+                            </widget>
+                        </grid>
+                    </widget>
+                    <widget row="0"  column="0" >
+                        <class>QButtonGroup</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>ModeGroup</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>title</name>
+                            <string>&amp;Options</string>
+                        </property>
+                        <grid>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>11</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <widget row="0"  column="0" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Compare</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Compare</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>0</number>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>Compare two databases or schemas</string>
+                                </property>
+                            </widget>
+                            <widget row="1"  column="0" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Extract</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Extract</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>1</number>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>Extract script to recreate database objects.</string>
+                                </property>
+                            </widget>
+                            <widget row="7"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludeCode</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Include code specification</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                            </widget>
+                            <widget row="4"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludeStorage</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Include storage specification</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                            </widget>
+                            <widget row="5"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludeParallell</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Include parallel specification</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                            </widget>
+                            <widget row="6"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludePartition</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Include partition specification</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                            </widget>
+                            <widget row="2"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludeIndexes</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Include indexes</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                            </widget>
+                            <widget row="8"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludeComment</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>enabled</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Include comments</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                            </widget>
+                            <widget row="3"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludeGrants</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Include grants</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                            </widget>
+                            <widget row="1"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludeConstraints</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Include constraints</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                            </widget>
+                            <widget row="0"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludeDDL</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>enabled</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Include DDL</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                            </widget>
+                            <widget row="2"  column="0" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Search</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Search</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>3</number>
+                                </property>
+                            </widget>
+                            <widget row="0"  column="1"  rowspan="15"  colspan="1" >
+                                <class>Line</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Line3</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>orientation</name>
+                                    <enum>Vertical</enum>
+                                </property>
+                            </widget>
+                            <spacer row="5"  column="0"  rowspan="10"  colspan="1" >
+                                <property>
+                                    <name>name</name>
+                                    <cstring>Spacer10_2</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>orientation</name>
+                                    <enum>Vertical</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizeType</name>
+                                    <enum>Expanding</enum>
+                                </property>
+                                <property>
+                                    <name>sizeHint</name>
+                                    <size>
+                                        <width>20</width>
+                                        <height>20</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                            <widget row="3"  column="0" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Migrate</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>enabled</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Migrate</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>2</number>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>Create database scripts to convert schema or database from source to destination</string>
+                                </property>
+                            </widget>
+                            <widget row="4"  column="0" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Report</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>enabled</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Report</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>4</number>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>Create database scripts to convert schema or database from source to destination</string>
+                                </property>
+                            </widget>
+                            <widget row="9"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludePrompt</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>enabled</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>focusPolicy</name>
+                                    <enum>NoFocus</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Generate prompts</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>Generate prompts to display progress in SQLPlus</string>
+                                </property>
+                            </widget>
+                            <spacer row="14"  column="2" >
+                                <property>
+                                    <name>name</name>
+                                    <cstring>Spacer9_2</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>orientation</name>
+                                    <enum>Vertical</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizeType</name>
+                                    <enum>Expanding</enum>
+                                </property>
+                                <property>
+                                    <name>sizeHint</name>
+                                    <size>
+                                        <width>20</width>
+                                        <height>20</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                            <widget row="10"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludeHeader</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>enabled</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Generate header</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>Generate header at the top of the script</string>
+                                </property>
+                            </widget>
+                            <widget row="13"  column="3" >
+                                <class>QComboBox</class>
+                                <item>
+                                    <property>
+                                        <name>text</name>
+                                        <string>Same</string>
+                                    </property>
+                                </item>
+                                <item>
+                                    <property>
+                                        <name>text</name>
+                                        <string>None</string>
+                                    </property>
+                                </item>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Schema</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>editable</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>duplicatesEnabled</name>
+                                    <bool>false</bool>
+                                </property>
+                            </widget>
+                            <widget row="13"  column="2" >
+                                <class>QLabel</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>TextLabel3</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Generated schema</string>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>Select the schema to generate in script</string>
+                                </property>
+                            </widget>
+                            <widget row="11"  column="2"  rowspan="1"  colspan="2" >
+                                <class>QCheckBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>IncludeContent</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>enabled</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>focusPolicy</name>
+                                    <enum>NoFocus</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Include content of tables</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>10</number>
+                                </property>
+                            </widget>
+                            <widget row="12"  column="2" >
+                                <class>QLabel</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>TextLabel1_3</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Commit distance</string>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>The number of insertstatements to make between each commit (0 means whole table)</string>
+                                </property>
+                            </widget>
+                            <widget row="12"  column="3" >
+                                <class>QSpinBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>CommitDistance</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>enabled</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>maxValue</name>
+                                    <number>1000000</number>
+                                </property>
+                            </widget>
+                        </grid>
+                    </widget>
+                    <widget row="2"  column="0" >
+                        <class>QButtonGroup</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>SearchGroup</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>enabled</name>
+                            <bool>false</bool>
+                        </property>
+                        <property stdset="1">
+                            <name>title</name>
+                            <string>&amp;Search</string>
+                        </property>
+                        <grid>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>11</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <widget row="2"  column="0"  rowspan="1"  colspan="2" >
+                                <class>QLineEdit</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>SearchWord</cstring>
+                                </property>
+                            </widget>
+                            <widget row="0"  column="0" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>AnyWords</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Contain any words</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>2</number>
+                                </property>
+                            </widget>
+                            <widget row="0"  column="1" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>AllWords</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>focusPolicy</name>
+                                    <enum>NoFocus</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Contain all words</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>1</number>
+                                </property>
+                            </widget>
+                            <widget row="1"  column="1" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>RegExp</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>focusPolicy</name>
+                                    <enum>NoFocus</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>RegExp</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>false</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>3</number>
+                                </property>
+                            </widget>
+                            <widget row="1"  column="0" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>ExactMatch</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>focusPolicy</name>
+                                    <enum>NoFocus</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Exact match</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>4</number>
+                                </property>
+                            </widget>
+                        </grid>
+                    </widget>
+                    <widget row="0"  column="1"  rowspan="3"  colspan="1" >
+                        <class>QGroupBox</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>GroupBox2</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>sizePolicy</name>
+                            <sizepolicy>
+                                <hsizetype>5</hsizetype>
+                                <vsizetype>7</vsizetype>
+                            </sizepolicy>
+                        </property>
+                        <property stdset="1">
+                            <name>title</name>
+                            <string>&amp;Source</string>
+                        </property>
+                        <grid>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>11</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <widget row="0"  column="0" >
+                                <class>QLabel</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>TextLabel2</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Connection</string>
+                                </property>
+                            </widget>
+                            <widget row="2"  column="0" >
+                                <class>QLabel</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>TextLabel2_2</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Schema</string>
+                                </property>
+                            </widget>
+                            <widget row="1"  column="0" >
+                                <class>QComboBox</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>SourceConnection</cstring>
+                                </property>
+                            </widget>
+                            <widget row="3"  column="0" >
+                                <class>QComboBox</class>
+                                <item>
+                                    <property>
+                                        <name>text</name>
+                                        <string>All</string>
+                                    </property>
+                                </item>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>SourceSchema</cstring>
+                                </property>
+                            </widget>
+                            <widget row="5"  column="0" >
+                                <class>QListView</class>
+                                <column>
+                                    <property>
+                                        <name>text</name>
+                                        <string>Objects</string>
+                                    </property>
+                                    <property>
+                                        <name>clickable</name>
+                                        <bool>true</bool>
+                                    </property>
+                                    <property>
+                                        <name>resizeable</name>
+                                        <bool>true</bool>
+                                    </property>
+                                </column>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>SourceObjects</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizePolicy</name>
+                                    <sizepolicy>
+                                        <hsizetype>7</hsizetype>
+                                        <vsizetype>7</vsizetype>
+                                    </sizepolicy>
+                                </property>
+                                <property stdset="1">
+                                    <name>rootIsDecorated</name>
+                                    <bool>true</bool>
+                                </property>
+                            </widget>
+                            <widget row="4"  column="0" >
+                                <class>QLabel</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>TextLabel1</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizePolicy</name>
+                                    <sizepolicy>
+                                        <hsizetype>1</hsizetype>
+                                        <vsizetype>4</vsizetype>
+                                    </sizepolicy>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>&amp;Include objects</string>
+                                </property>
+                                <property>
+                                    <name>buddy</name>
+                                    <cstring>SourceObjects</cstring>
+                                </property>
+                            </widget>
+                        </grid>
+                    </widget>
+                    <widget row="1"  column="0" >
+                        <class>QButtonGroup</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>OutputGroup</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>enabled</name>
+                            <bool>false</bool>
+                        </property>
+                        <property stdset="1">
+                            <name>title</name>
+                            <string>Output</string>
+                        </property>
+                        <grid>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>11</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <widget row="0"  column="0" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>OutputTab</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Output tab</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>1</number>
+                                </property>
+                            </widget>
+                            <widget row="0"  column="2" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>OutputDir</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>focusPolicy</name>
+                                    <enum>NoFocus</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Output dir</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>buttonGroupId</name>
+                                    <number>3</number>
+                                </property>
+                                <property>
+                                    <name>toolTip</name>
+                                    <string>Output to directory so that each object is placed in a different file.</string>
+                                </property>
+                            </widget>
+                            <widget row="0"  column="1" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>OutputFile</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>focusPolicy</name>
+                                    <enum>NoFocus</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Output file</string>
+                                </property>
+                            </widget>
+                            <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+                                <class>QLayoutWidget</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Layout1</cstring>
+                                </property>
+                                <hbox>
+                                    <property stdset="1">
+                                        <name>margin</name>
+                                        <number>0</number>
+                                    </property>
+                                    <property stdset="1">
+                                        <name>spacing</name>
+                                        <number>6</number>
+                                    </property>
+                                    <widget>
+                                        <class>QLineEdit</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>Filename</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>enabled</name>
+                                            <bool>false</bool>
+                                        </property>
+                                    </widget>
+                                    <widget>
+                                        <class>QPushButton</class>
+                                        <property stdset="1">
+                                            <name>name</name>
+                                            <cstring>Browse</cstring>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>enabled</name>
+                                            <bool>false</bool>
+                                        </property>
+                                        <property stdset="1">
+                                            <name>text</name>
+                                            <string>Browse</string>
+                                        </property>
+                                    </widget>
+                                </hbox>
+                            </widget>
+                        </grid>
+                    </widget>
+                </grid>
+            </widget>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>ResizeTab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>Resize</string>
+                </attribute>
+                <grid>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget row="0"  column="0" >
+                        <class>QButtonGroup</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>ButtonGroup2_2</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>sizePolicy</name>
+                            <sizepolicy>
+                                <hsizetype>5</hsizetype>
+                                <vsizetype>4</vsizetype>
+                            </sizepolicy>
+                        </property>
+                        <property stdset="1">
+                            <name>title</name>
+                            <string>Script Resize</string>
+                        </property>
+                        <grid>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>11</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <widget row="0"  column="0" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>DontResize</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Don't resize</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>checked</name>
+                                    <bool>true</bool>
+                                </property>
+                            </widget>
+                            <widget row="0"  column="1" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>AutoResize</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Auto resize</string>
+                                </property>
+                            </widget>
+                            <widget row="0"  column="2" >
+                                <class>QRadioButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>CustomResize</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>Custom resize</string>
+                                </property>
+                            </widget>
+                        </grid>
+                    </widget>
+                    <widget row="1"  column="0" >
+                        <class>QFrame</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Frame4</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>enabled</name>
+                            <bool>false</bool>
+                        </property>
+                        <property stdset="1">
+                            <name>frameShape</name>
+                            <enum>StyledPanel</enum>
+                        </property>
+                        <property stdset="1">
+                            <name>frameShadow</name>
+                            <enum>Raised</enum>
+                        </property>
+                        <grid>
+                            <property stdset="1">
+                                <name>margin</name>
+                                <number>11</number>
+                            </property>
+                            <property stdset="1">
+                                <name>spacing</name>
+                                <number>6</number>
+                            </property>
+                            <spacer row="3"  column="0" >
+                                <property>
+                                    <name>name</name>
+                                    <cstring>Spacer2</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>orientation</name>
+                                    <enum>Vertical</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizeType</name>
+                                    <enum>Expanding</enum>
+                                </property>
+                                <property>
+                                    <name>sizeHint</name>
+                                    <size>
+                                        <width>20</width>
+                                        <height>20</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                            <widget row="0"  column="2"  rowspan="4"  colspan="2" >
+                                <class>QListView</class>
+                                <column>
+                                    <property>
+                                        <name>text</name>
+                                        <string>Limit</string>
+                                    </property>
+                                    <property>
+                                        <name>clickable</name>
+                                        <bool>true</bool>
+                                    </property>
+                                    <property>
+                                        <name>resizeable</name>
+                                        <bool>true</bool>
+                                    </property>
+                                </column>
+                                <column>
+                                    <property>
+                                        <name>text</name>
+                                        <string>Initial</string>
+                                    </property>
+                                    <property>
+                                        <name>clickable</name>
+                                        <bool>true</bool>
+                                    </property>
+                                    <property>
+                                        <name>resizeable</name>
+                                        <bool>true</bool>
+                                    </property>
+                                </column>
+                                <column>
+                                    <property>
+                                        <name>text</name>
+                                        <string>Next</string>
+                                    </property>
+                                    <property>
+                                        <name>clickable</name>
+                                        <bool>true</bool>
+                                    </property>
+                                    <property>
+                                        <name>resizeable</name>
+                                        <bool>true</bool>
+                                    </property>
+                                </column>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Sizes</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>allColumnsShowFocus</name>
+                                    <bool>true</bool>
+                                </property>
+                            </widget>
+                            <widget row="0"  column="0"  rowspan="1"  colspan="2" >
+                                <class>toFilesize</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Limit</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>focusPolicy</name>
+                                    <enum>TabFocus</enum>
+                                </property>
+                            </widget>
+                            <widget row="1"  column="0"  rowspan="1"  colspan="2" >
+                                <class>toFilesize</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Initial</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>focusPolicy</name>
+                                    <enum>TabFocus</enum>
+                                </property>
+                            </widget>
+                            <widget row="2"  column="0"  rowspan="1"  colspan="2" >
+                                <class>toFilesize</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Next</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>focusPolicy</name>
+                                    <enum>TabFocus</enum>
+                                </property>
+                            </widget>
+                            <widget row="4"  column="1" >
+                                <class>QPushButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>AddButton</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizePolicy</name>
+                                    <sizepolicy>
+                                        <hsizetype>0</hsizetype>
+                                        <vsizetype>0</vsizetype>
+                                    </sizepolicy>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>&amp;Add</string>
+                                </property>
+                                <property stdset="1">
+                                    <name>default</name>
+                                    <bool>true</bool>
+                                </property>
+                            </widget>
+                            <widget row="4"  column="3" >
+                                <class>QPushButton</class>
+                                <property stdset="1">
+                                    <name>name</name>
+                                    <cstring>Remove</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizePolicy</name>
+                                    <sizepolicy>
+                                        <hsizetype>0</hsizetype>
+                                        <vsizetype>0</vsizetype>
+                                    </sizepolicy>
+                                </property>
+                                <property stdset="1">
+                                    <name>text</name>
+                                    <string>&amp;Remove</string>
+                                </property>
+                            </widget>
+                            <spacer row="4"  column="0" >
+                                <property>
+                                    <name>name</name>
+                                    <cstring>Spacer9</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>orientation</name>
+                                    <enum>Horizontal</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizeType</name>
+                                    <enum>Minimum</enum>
+                                </property>
+                                <property>
+                                    <name>sizeHint</name>
+                                    <size>
+                                        <width>20</width>
+                                        <height>20</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                            <spacer row="4"  column="2" >
+                                <property>
+                                    <name>name</name>
+                                    <cstring>Spacer10</cstring>
+                                </property>
+                                <property stdset="1">
+                                    <name>orientation</name>
+                                    <enum>Horizontal</enum>
+                                </property>
+                                <property stdset="1">
+                                    <name>sizeType</name>
+                                    <enum>Expanding</enum>
+                                </property>
+                                <property>
+                                    <name>sizeHint</name>
+                                    <size>
+                                        <width>20</width>
+                                        <height>20</height>
+                                    </size>
+                                </property>
+                            </spacer>
+                        </grid>
+                    </widget>
+                </grid>
+            </widget>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>ResultTab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>Result</string>
+                </attribute>
+            </widget>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>DifferenceTab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>Difference</string>
+                </attribute>
+            </widget>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toFilesize</class>
+        <header location="local">tofilesize.h</header>
+        <sizehint>
+            <width>200</width>
+            <height>40</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>1</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+        <signal>valueChanged(void)</signal>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>CustomResize</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Frame4</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>Search</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Schema</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>IncludeDDL</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>IncludeConstraints</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>IncludeDDL</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>IncludeIndexes</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>IncludeDDL</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>IncludeGrants</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>IncludeDDL</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>IncludeStorage</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>IncludeDDL</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>IncludeParallell</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>IncludeDDL</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>IncludeComment</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>IncludeDDL</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>IncludeCode</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>IncludeDDL</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>IncludePartition</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>Search</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>SearchGroup</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>OutputTab</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Filename</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>OutputTab</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Browse</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>Extract</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>OutputDir</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>IncludeContent</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>CommitDistance</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>Tabs</tabstop>
+    <tabstop>Compare</tabstop>
+    <tabstop>IncludeDDL</tabstop>
+    <tabstop>IncludeConstraints</tabstop>
+    <tabstop>IncludeIndexes</tabstop>
+    <tabstop>IncludeGrants</tabstop>
+    <tabstop>IncludeStorage</tabstop>
+    <tabstop>IncludeParallell</tabstop>
+    <tabstop>IncludePartition</tabstop>
+    <tabstop>IncludeCode</tabstop>
+    <tabstop>IncludeComment</tabstop>
+    <tabstop>IncludeContent</tabstop>
+    <tabstop>IncludePrompt</tabstop>
+    <tabstop>IncludeHeader</tabstop>
+    <tabstop>Schema</tabstop>
+    <tabstop>OutputTab</tabstop>
+    <tabstop>Filename</tabstop>
+    <tabstop>Browse</tabstop>
+    <tabstop>AnyWords</tabstop>
+    <tabstop>SearchWord</tabstop>
+    <tabstop>SourceConnection</tabstop>
+    <tabstop>SourceSchema</tabstop>
+    <tabstop>SourceObjects</tabstop>
+    <tabstop>DestinationConnection</tabstop>
+    <tabstop>DestinationSchema</tabstop>
+    <tabstop>DestinationObjects</tabstop>
+    <tabstop>OutputFile</tabstop>
+    <tabstop>DontResize</tabstop>
+    <tabstop>AutoResize</tabstop>
+    <tabstop>CustomResize</tabstop>
+    <tabstop>Limit</tabstop>
+    <tabstop>Initial</tabstop>
+    <tabstop>Next</tabstop>
+    <tabstop>Sizes</tabstop>
+    <tabstop>AddButton</tabstop>
+    <tabstop>Remove</tabstop>
+    <tabstop>ExactMatch</tabstop>
+    <tabstop>RegExp</tabstop>
+    <tabstop>Extract</tabstop>
+    <tabstop>Migrate</tabstop>
+    <tabstop>AllWords</tabstop>
+    <tabstop>OutputDir</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tosearchreplace.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosearchreplace.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosearchreplace.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,187 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tohelp.h"
+#include "tomain.h"
+#include "tomarkedtext.h"
+#include "tosearchreplace.h"
+
+#include <qaccel.h>
+#include <qcheckbox.h>
+#include <qmultilineedit.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qregexp.h>
+
+#include "tosearchreplace.moc"
+#include "tosearchreplaceui.moc"
+
+toSearchReplace::toSearchReplace(QWidget *parent)
+        : toSearchReplaceUI(parent, "SearchReplace"), toHelpContext(QString::fromLatin1("searchreplace.html"))
+{
+    QAccel *a = new QAccel(this);
+    a->connectItem(a->insertItem(toKeySequence(tr("F1", "Search|Help"))),
+                   this,
+                   SLOT(displayHelp()));
+    Replace->setAccel( QKeySequence(tr("Ctrl+Shift+R", "Edit|Replace")) );
+    toEditWidget::addHandler(this);
+    receivedFocus(toMainWidget()->editWidget());
+}
+
+void toSearchReplace::displayHelp(void)
+{
+    toHelp::displayHelp();
+}
+
+void toSearchReplace::receivedFocus(toEditWidget *widget)
+{
+    Target = widget;
+    bool anySearch = Target && Target->searchEnabled();
+    Search->setEnabled(anySearch);
+    SearchNext->setEnabled(anySearch);
+    Replace->setEnabled(Target && Target->searchCanReplace(false));
+    ReplaceAll->setEnabled(Target && Target->searchCanReplace(true));
+}
+
+void toSearchReplace::search(void)
+{
+    if (Target)
+    {
+        Target->searchTop();
+        searchNext();
+    }
+}
+
+void toSearchReplace::searchNext(void)
+{
+    if (Target)
+    {
+        if (Target->searchNext(this))
+        {
+            Replace->setEnabled(Target->searchCanReplace(false));
+            ReplaceAll->setEnabled(Target->searchCanReplace(true));
+        }
+        else
+        {
+            toStatusMessage(tr("No more matches found"), false, false);
+            Replace->setEnabled(false);
+            ReplaceAll->setEnabled(false);
+        }
+    }
+}
+
+void toSearchReplace::replace(void)
+{
+    if (Target && Target->searchCanReplace(false))
+    {
+        Target->searchReplace(ReplaceText->text());
+        searchNext();
+    }
+}
+
+void toSearchReplace::replaceAll(void)
+{
+    if (Target && Target->searchCanReplace(true))
+    {
+        while (Target->searchCanReplace(false))
+        {
+            Target->searchReplace(ReplaceText->text());
+            searchNext();
+        }
+    }
+}
+
+void toSearchReplace::show()
+{
+    SearchText->setFocus();
+    SearchText->selectAll();
+    toSearchReplaceUI::show();
+}
+
+
+bool toSearchReplace::findString(const QString &text, int &pos, int &endPos)
+{
+    bool ok;
+    int found;
+    int foundLen;
+    QString searchText = SearchText->text();
+    do
+    {
+        ok = true;
+        if (Exact->isOn())
+        {
+            found = text.find(searchText, pos, !IgnoreCase->isOn());
+            foundLen = searchText.length();
+        }
+        else
+        {
+            QRegExp re(searchText, !IgnoreCase->isOn(), false);
+            found = re.match(text, pos, &foundLen, false);
+        }
+        if (found == -1)
+        {
+            return false;
+        }
+        if (WholeWord->isOn())
+        {
+            if (found != 0 && !text[found].isSpace())
+                ok = false;
+            if (found + foundLen != int(text.length()) && !text[found + foundLen].isSpace())
+                ok = false;
+            pos = found + 1;
+        }
+    }
+    while (!ok);
+
+    pos = found;
+    endPos = found + foundLen;
+    return true;
+}
+
+void toSearchReplace::searchChanged(void)
+{
+    bool ena = SearchText->text().length() > 0;
+    SearchNext->setEnabled(ena);
+    Search->setEnabled(ena);
+}
+
+bool toSearchReplace::searchNextAvailable(void)
+{
+    return SearchNext->isEnabled();
+}

Added: kde-extras/tora/branches/upstream/current/src/tosearchreplace.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosearchreplace.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosearchreplace.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,80 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSEARCHREPLACE_H
+#define TOSEARCHREPLACE_H
+
+#include "config.h"
+#include "tosearchreplaceui.h"
+#include "tohelp.h"
+#include "toeditwidget.h"
+
+class toListView;
+class toMarkedText;
+class toResultContentEditor;
+
+class toSearchReplace : public toSearchReplaceUI, public toHelpContext, public toEditWidget::editHandler
+{
+    Q_OBJECT
+
+    toEditWidget *Target;
+public:
+    toSearchReplace(QWidget *parent);
+    ~toSearchReplace()
+    {
+        toEditWidget::delHandler(this);
+    }
+
+    virtual void show();
+    bool findString(const QString &text, int &pos, int &endPos);
+    virtual void receivedFocus(toEditWidget *widget);
+    virtual void lostFocus(toEditWidget *)
+    {
+        receivedFocus(NULL);
+    }
+    bool searchNextAvailable(void);
+public slots:
+    virtual void searchNext();
+private slots:
+    virtual void replaceAll();
+    virtual void replace();
+    virtual void search();
+    virtual void searchChanged();
+    virtual void displayHelp();
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,214 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tosearchreplaceui.ui'
+**
+** Created: Tue Sep 18 08:21:29 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tosearchreplaceui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qframe.h>
+#include <qbuttongroup.h>
+#include <qmultilineedit.h>
+#include <qradiobutton.h>
+#include <qcheckbox.h>
+#include <qgroupbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toSearchReplaceUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toSearchReplaceUI::toSearchReplaceUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toSearchReplaceUI" );
+    toSearchReplaceUILayout = new QGridLayout( this, 1, 1, 11, 6, "toSearchReplaceUILayout"); 
+
+    Search = new QPushButton( this, "Search" );
+    Search->setEnabled( FALSE );
+    Search->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, Search->sizePolicy().hasHeightForWidth() ) );
+
+    toSearchReplaceUILayout->addWidget( Search, 0, 2 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toSearchReplaceUILayout->addItem( Spacer1, 5, 2 );
+
+    SearchNext = new QPushButton( this, "SearchNext" );
+    SearchNext->setEnabled( FALSE );
+    SearchNext->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, SearchNext->sizePolicy().hasHeightForWidth() ) );
+
+    toSearchReplaceUILayout->addWidget( SearchNext, 1, 2 );
+
+    Replace = new QPushButton( this, "Replace" );
+    Replace->setEnabled( FALSE );
+    Replace->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, Replace->sizePolicy().hasHeightForWidth() ) );
+
+    toSearchReplaceUILayout->addWidget( Replace, 2, 2 );
+
+    ReplaceAll = new QPushButton( this, "ReplaceAll" );
+    ReplaceAll->setEnabled( FALSE );
+    ReplaceAll->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, ReplaceAll->sizePolicy().hasHeightForWidth() ) );
+
+    toSearchReplaceUILayout->addWidget( ReplaceAll, 3, 2 );
+
+    Close = new QPushButton( this, "Close" );
+    Close->setEnabled( TRUE );
+    Close->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, Close->sizePolicy().hasHeightForWidth() ) );
+
+    toSearchReplaceUILayout->addWidget( Close, 4, 2 );
+
+    Line1 = new QFrame( this, "Line1" );
+    Line1->setFrameShape( QFrame::VLine );
+    Line1->setFrameShadow( QFrame::Sunken );
+    Line1->setFrameShape( QFrame::VLine );
+
+    toSearchReplaceUILayout->addMultiCellWidget( Line1, 0, 5, 1, 1 );
+
+    Frame3 = new QFrame( this, "Frame3" );
+    Frame3->setFrameShape( QFrame::NoFrame );
+    Frame3->setFrameShadow( QFrame::Raised );
+    Frame3Layout = new QVBoxLayout( Frame3, 0, 6, "Frame3Layout"); 
+
+    ButtonGroup1 = new QButtonGroup( Frame3, "ButtonGroup1" );
+    ButtonGroup1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, 0, 0, ButtonGroup1->sizePolicy().hasHeightForWidth() ) );
+    ButtonGroup1->setColumnLayout(0, Qt::Vertical );
+    ButtonGroup1->layout()->setSpacing( 6 );
+    ButtonGroup1->layout()->setMargin( 11 );
+    ButtonGroup1Layout = new QGridLayout( ButtonGroup1->layout() );
+    ButtonGroup1Layout->setAlignment( Qt::AlignTop );
+
+    SearchText = new QMultiLineEdit( ButtonGroup1, "SearchText" );
+
+    ButtonGroup1Layout->addMultiCellWidget( SearchText, 0, 0, 0, 2 );
+
+    Exact = new QRadioButton( ButtonGroup1, "Exact" );
+    Exact->setChecked( TRUE );
+
+    ButtonGroup1Layout->addWidget( Exact, 1, 0 );
+
+    WholeWord = new QCheckBox( ButtonGroup1, "WholeWord" );
+
+    ButtonGroup1Layout->addWidget( WholeWord, 2, 0 );
+
+    IgnoreCase = new QCheckBox( ButtonGroup1, "IgnoreCase" );
+
+    ButtonGroup1Layout->addWidget( IgnoreCase, 2, 1 );
+
+    RegExp = new QRadioButton( ButtonGroup1, "RegExp" );
+
+    ButtonGroup1Layout->addWidget( RegExp, 1, 1 );
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    ButtonGroup1Layout->addItem( Spacer2, 1, 2 );
+    Frame3Layout->addWidget( ButtonGroup1 );
+
+    GroupBox1 = new QGroupBox( Frame3, "GroupBox1" );
+    GroupBox1->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)5, 0, 0, GroupBox1->sizePolicy().hasHeightForWidth() ) );
+    GroupBox1->setColumnLayout(0, Qt::Vertical );
+    GroupBox1->layout()->setSpacing( 6 );
+    GroupBox1->layout()->setMargin( 11 );
+    GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
+    GroupBox1Layout->setAlignment( Qt::AlignTop );
+
+    ReplaceText = new QMultiLineEdit( GroupBox1, "ReplaceText" );
+
+    GroupBox1Layout->addWidget( ReplaceText, 0, 0 );
+    Frame3Layout->addWidget( GroupBox1 );
+
+    toSearchReplaceUILayout->addMultiCellWidget( Frame3, 0, 5, 0, 0 );
+    languageChange();
+    resize( QSize(570, 228).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( Close, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( Search, SIGNAL( clicked() ), this, SLOT( search() ) );
+    connect( SearchNext, SIGNAL( clicked() ), this, SLOT( searchNext() ) );
+    connect( ReplaceAll, SIGNAL( clicked() ), this, SLOT( replaceAll() ) );
+    connect( SearchText, SIGNAL( textChanged() ), this, SLOT( searchChanged() ) );
+    connect( Replace, SIGNAL( clicked() ), this, SLOT( replace() ) );
+
+    // tab order
+    setTabOrder( SearchText, Exact );
+    setTabOrder( Exact, RegExp );
+    setTabOrder( RegExp, WholeWord );
+    setTabOrder( WholeWord, IgnoreCase );
+    setTabOrder( IgnoreCase, ReplaceText );
+    setTabOrder( ReplaceText, Search );
+    setTabOrder( Search, SearchNext );
+    setTabOrder( SearchNext, Replace );
+    setTabOrder( Replace, ReplaceAll );
+    setTabOrder( ReplaceAll, Close );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toSearchReplaceUI::~toSearchReplaceUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toSearchReplaceUI::languageChange()
+{
+    setCaption( tr( "Search & Replace" ) );
+    Search->setText( tr( "&Search Top" ) );
+    SearchNext->setText( tr( "Search &Next" ) );
+    Replace->setText( tr( "&Replace" ) );
+    ReplaceAll->setText( tr( "Replace &All" ) );
+    Close->setText( tr( "Close" ) );
+    ButtonGroup1->setTitle( tr( "Search" ) );
+    Exact->setText( tr( "Exact" ) );
+    QToolTip::add( Exact, tr( "Match text exactly as written" ) );
+    WholeWord->setText( tr( "Match Word" ) );
+    QToolTip::add( WholeWord, tr( "Only match whole words" ) );
+    IgnoreCase->setText( tr( "Ignore Case" ) );
+    QToolTip::add( IgnoreCase, tr( "Only match whole words" ) );
+    RegExp->setText( tr( "RegExp" ) );
+    QToolTip::add( RegExp, tr( "Use RegExp semantics for matching (See Qt documentation)" ) );
+    GroupBox1->setTitle( tr( "Replace" ) );
+}
+
+void toSearchReplaceUI::displayHelp()
+{
+    qWarning( "toSearchReplaceUI::displayHelp(): Not implemented yet" );
+}
+
+void toSearchReplaceUI::replace()
+{
+    qWarning( "toSearchReplaceUI::replace(): Not implemented yet" );
+}
+
+void toSearchReplaceUI::replaceAll()
+{
+    qWarning( "toSearchReplaceUI::replaceAll(): Not implemented yet" );
+}
+
+void toSearchReplaceUI::search()
+{
+    qWarning( "toSearchReplaceUI::search(): Not implemented yet" );
+}
+
+void toSearchReplaceUI::searchChanged()
+{
+    qWarning( "toSearchReplaceUI::searchChanged(): Not implemented yet" );
+}
+
+void toSearchReplaceUI::searchNext()
+{
+    qWarning( "toSearchReplaceUI::searchNext(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,73 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tosearchreplaceui.ui'
+**
+** Created: Tue Sep 18 08:21:29 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSEARCHREPLACEUI_H
+#define TOSEARCHREPLACEUI_H
+
+#include <qvariant.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QPushButton;
+class QFrame;
+class QButtonGroup;
+class QMultiLineEdit;
+class QRadioButton;
+class QCheckBox;
+class QGroupBox;
+
+class toSearchReplaceUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toSearchReplaceUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toSearchReplaceUI();
+
+    QPushButton* Search;
+    QPushButton* SearchNext;
+    QPushButton* Replace;
+    QPushButton* ReplaceAll;
+    QPushButton* Close;
+    QFrame* Line1;
+    QFrame* Frame3;
+    QButtonGroup* ButtonGroup1;
+    QMultiLineEdit* SearchText;
+    QRadioButton* Exact;
+    QCheckBox* WholeWord;
+    QCheckBox* IgnoreCase;
+    QRadioButton* RegExp;
+    QGroupBox* GroupBox1;
+    QMultiLineEdit* ReplaceText;
+
+public slots:
+    virtual void displayHelp();
+    virtual void replace();
+    virtual void replaceAll();
+    virtual void search();
+    virtual void searchChanged();
+    virtual void searchNext();
+
+protected:
+    QGridLayout* toSearchReplaceUILayout;
+    QSpacerItem* Spacer1;
+    QVBoxLayout* Frame3Layout;
+    QGridLayout* ButtonGroup1Layout;
+    QSpacerItem* Spacer2;
+    QGridLayout* GroupBox1Layout;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOSEARCHREPLACEUI_H

Added: kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosearchreplaceui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,368 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>toSearchReplaceUI</class>
+<widget class="QDialog">
+    <property name="name">
+        <cstring>toSearchReplaceUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>570</width>
+            <height>228</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>Search &amp; Replace</string>
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>11</number>
+        </property>
+        <property name="spacing">
+            <number>6</number>
+        </property>
+        <widget class="QPushButton" row="0" column="2">
+            <property name="name">
+                <cstring>Search</cstring>
+            </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="text">
+                <string>&amp;Search Top</string>
+            </property>
+        </widget>
+        <spacer row="5" column="2">
+            <property name="name">
+                <cstring>Spacer1</cstring>
+            </property>
+            <property name="orientation">
+                <enum>Vertical</enum>
+            </property>
+            <property name="sizeType">
+                <enum>Expanding</enum>
+            </property>
+            <property name="sizeHint">
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget class="QPushButton" row="1" column="2">
+            <property name="name">
+                <cstring>SearchNext</cstring>
+            </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="text">
+                <string>Search &amp;Next</string>
+            </property>
+        </widget>
+        <widget class="QPushButton" row="2" column="2">
+            <property name="name">
+                <cstring>Replace</cstring>
+            </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="text">
+                <string>&amp;Replace</string>
+            </property>
+        </widget>
+        <widget class="QPushButton" row="3" column="2">
+            <property name="name">
+                <cstring>ReplaceAll</cstring>
+            </property>
+            <property name="enabled">
+                <bool>false</bool>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="text">
+                <string>Replace &amp;All</string>
+            </property>
+        </widget>
+        <widget class="QPushButton" row="4" column="2">
+            <property name="name">
+                <cstring>Close</cstring>
+            </property>
+            <property name="enabled">
+                <bool>true</bool>
+            </property>
+            <property name="sizePolicy">
+                <sizepolicy>
+                    <hsizetype>1</hsizetype>
+                    <vsizetype>0</vsizetype>
+                    <horstretch>0</horstretch>
+                    <verstretch>0</verstretch>
+                </sizepolicy>
+            </property>
+            <property name="text">
+                <string>Close</string>
+            </property>
+        </widget>
+        <widget class="Line" row="0" column="1" rowspan="6" colspan="1">
+            <property name="name">
+                <cstring>Line1</cstring>
+            </property>
+            <property name="frameShape">
+                <enum>VLine</enum>
+            </property>
+            <property name="frameShadow">
+                <enum>Sunken</enum>
+            </property>
+            <property name="orientation">
+                <enum>Vertical</enum>
+            </property>
+        </widget>
+        <widget class="QFrame" row="0" column="0" rowspan="6" colspan="1">
+            <property name="name">
+                <cstring>Frame3</cstring>
+            </property>
+            <property name="frameShape">
+                <enum>NoFrame</enum>
+            </property>
+            <property name="frameShadow">
+                <enum>Raised</enum>
+            </property>
+            <property name="layoutMargin" stdset="0">
+            </property>
+            <vbox>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>0</number>
+                </property>
+                <property name="spacing">
+                    <number>6</number>
+                </property>
+                <widget class="QButtonGroup">
+                    <property name="name">
+                        <cstring>ButtonGroup1</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>5</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="title">
+                        <string>Search</string>
+                    </property>
+                    <grid>
+                        <property name="name">
+                            <cstring>unnamed</cstring>
+                        </property>
+                        <property name="margin">
+                            <number>11</number>
+                        </property>
+                        <property name="spacing">
+                            <number>6</number>
+                        </property>
+                        <widget class="QMultiLineEdit" row="0" column="0" rowspan="1" colspan="3">
+                            <property name="name">
+                                <cstring>SearchText</cstring>
+                            </property>
+                        </widget>
+                        <widget class="QRadioButton" row="1" column="0">
+                            <property name="name">
+                                <cstring>Exact</cstring>
+                            </property>
+                            <property name="text">
+                                <string>Exact</string>
+                            </property>
+                            <property name="checked">
+                                <bool>true</bool>
+                            </property>
+                            <property name="toolTip" stdset="0">
+                                <string>Match text exactly as written</string>
+                            </property>
+                        </widget>
+                        <widget class="QCheckBox" row="2" column="0">
+                            <property name="name">
+                                <cstring>WholeWord</cstring>
+                            </property>
+                            <property name="text">
+                                <string>Match Word</string>
+                            </property>
+                            <property name="toolTip" stdset="0">
+                                <string>Only match whole words</string>
+                            </property>
+                        </widget>
+                        <widget class="QCheckBox" row="2" column="1">
+                            <property name="name">
+                                <cstring>IgnoreCase</cstring>
+                            </property>
+                            <property name="text">
+                                <string>Ignore Case</string>
+                            </property>
+                            <property name="toolTip" stdset="0">
+                                <string>Only match whole words</string>
+                            </property>
+                        </widget>
+                        <widget class="QRadioButton" row="1" column="1">
+                            <property name="name">
+                                <cstring>RegExp</cstring>
+                            </property>
+                            <property name="text">
+                                <string>RegExp</string>
+                            </property>
+                            <property name="toolTip" stdset="0">
+                                <string>Use RegExp semantics for matching (See Qt documentation)</string>
+                            </property>
+                        </widget>
+                        <spacer row="1" column="2">
+                            <property name="name">
+                                <cstring>Spacer2</cstring>
+                            </property>
+                            <property name="orientation">
+                                <enum>Horizontal</enum>
+                            </property>
+                            <property name="sizeType">
+                                <enum>Expanding</enum>
+                            </property>
+                            <property name="sizeHint">
+                                <size>
+                                    <width>20</width>
+                                    <height>20</height>
+                                </size>
+                            </property>
+                        </spacer>
+                    </grid>
+                </widget>
+                <widget class="QGroupBox">
+                    <property name="name">
+                        <cstring>GroupBox1</cstring>
+                    </property>
+                    <property name="sizePolicy">
+                        <sizepolicy>
+                            <hsizetype>5</hsizetype>
+                            <vsizetype>5</vsizetype>
+                            <horstretch>0</horstretch>
+                            <verstretch>0</verstretch>
+                        </sizepolicy>
+                    </property>
+                    <property name="title">
+                        <string>Replace</string>
+                    </property>
+                    <grid>
+                        <property name="name">
+                            <cstring>unnamed</cstring>
+                        </property>
+                        <property name="margin">
+                            <number>11</number>
+                        </property>
+                        <property name="spacing">
+                            <number>6</number>
+                        </property>
+                        <widget class="QMultiLineEdit" row="0" column="0">
+                            <property name="name">
+                                <cstring>ReplaceText</cstring>
+                            </property>
+                        </widget>
+                    </grid>
+                </widget>
+            </vbox>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>Close</sender>
+        <signal>clicked()</signal>
+        <receiver>toSearchReplaceUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>Search</sender>
+        <signal>clicked()</signal>
+        <receiver>toSearchReplaceUI</receiver>
+        <slot>search()</slot>
+    </connection>
+    <connection>
+        <sender>SearchNext</sender>
+        <signal>clicked()</signal>
+        <receiver>toSearchReplaceUI</receiver>
+        <slot>searchNext()</slot>
+    </connection>
+    <connection>
+        <sender>ReplaceAll</sender>
+        <signal>clicked()</signal>
+        <receiver>toSearchReplaceUI</receiver>
+        <slot>replaceAll()</slot>
+    </connection>
+    <connection>
+        <sender>SearchText</sender>
+        <signal>textChanged()</signal>
+        <receiver>toSearchReplaceUI</receiver>
+        <slot>searchChanged()</slot>
+    </connection>
+    <connection>
+        <sender>Replace</sender>
+        <signal>clicked()</signal>
+        <receiver>toSearchReplaceUI</receiver>
+        <slot>replace()</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>SearchText</tabstop>
+    <tabstop>Exact</tabstop>
+    <tabstop>RegExp</tabstop>
+    <tabstop>WholeWord</tabstop>
+    <tabstop>IgnoreCase</tabstop>
+    <tabstop>ReplaceText</tabstop>
+    <tabstop>Search</tabstop>
+    <tabstop>SearchNext</tabstop>
+    <tabstop>Replace</tabstop>
+    <tabstop>ReplaceAll</tabstop>
+    <tabstop>Close</tabstop>
+</tabstops>
+<slots>
+    <slot>displayHelp()</slot>
+    <slot>replace()</slot>
+    <slot>replaceAll()</slot>
+    <slot>search()</slot>
+    <slot>searchChanged()</slot>
+    <slot>searchNext()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tosecurity.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurity.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurity.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1891 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tofilesize.h"
+#include "tomain.h"
+#include "tomemoeditor.h"
+#include "toresultview.h"
+#include "tosecurity.h"
+#include "tosql.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qpopupmenu.h>
+#include <qradiobutton.h>
+#include <qsplitter.h>
+#include <qstringlist.h>
+#include <qtabwidget.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qvalidator.h>
+#include <qworkspace.h>
+
+#include "tosecurity.moc"
+#include "tosecurityquotaui.moc"
+#include "tosecurityroleui.moc"
+#include "tosecurityuserui.moc"
+
+#include "icons/addrole.xpm"
+#include "icons/adduser.xpm"
+#include "icons/commit.xpm"
+#include "icons/copyuser.xpm"
+#include "icons/refresh.xpm"
+#include "icons/sql.xpm"
+#include "icons/tosecurity.xpm"
+#include "icons/trash.xpm"
+
+static toSQL SQLUserInfo("toSecurity:UserInfo",
+                         "SELECT Account_Status,\n"
+                         "       Password,\n"
+                         "       External_Name,\n"
+                         "       Profile,\n"
+                         "       Default_Tablespace,\n"
+                         "       Temporary_Tablespace\n"
+                         "  FROM sys.DBA_Users\n"
+                         " WHERE UserName = :f1<char[100]>",
+                         "Get information about a user, must have same columns and same binds.");
+
+static toSQL SQLUserInfo7("toSecurity:UserInfo",
+                          "SELECT 'OPEN',\n"
+                          "       Password,\n"
+                          "       NULL,\n"
+                          "       Profile,\n"
+                          "       Default_Tablespace,\n"
+                          "       Temporary_Tablespace\n"
+                          "  FROM sys.DBA_Users\n"
+                          " WHERE UserName = :f1<char[100]>",
+                          "",
+                          "0703");
+
+static toSQL SQLRoleInfo("toSecurity:RoleInfo",
+                         "SELECT Role,Password_required FROM sys.DBA_Roles WHERE Role = :f1<char[101]>",
+                         "Get information about a role, must have same columns and same binds.");
+
+static toSQL SQLProfiles("toSecurity:Profiles",
+                         "SELECT DISTINCT Profile FROM sys.DBA_Profiles ORDER BY Profile",
+                         "Get profiles available.");
+
+static toSQL SQLTablespace("toSecurity:Tablespaces",
+                           "SELECT DISTINCT Tablespace_Name FROM sys.DBA_Tablespaces"
+                           " ORDER BY Tablespace_Name",
+                           "Get tablespaces available.");
+
+static toSQL SQLRoles("toSecurity:Roles",
+                      "SELECT Role FROM sys.Dba_Roles ORDER BY Role",
+                      "Get roles available in DB, should return one entry");
+
+static toSQL SQLListSystem("toSecurity:ListSystemPrivs",
+                           "SELECT a.name\n"
+                           "  FROM system_privilege_map a,\n"
+                           "       v$enabledprivs b\n"
+                           " WHERE b.priv_number = a.privilege\n"
+                           " ORDER BY a.name",
+                           "Get name of available system privileges");
+
+static toSQL SQLQuota("toSecurity:Quota",
+                      "SELECT Tablespace_name,\n"
+                      "       Bytes,\n"
+                      "       Max_bytes\n"
+                      "  FROM sys.DBA_TS_Quotas\n"
+                      " WHERE Username = :f1<char[200]>\n"
+                      " ORDER BY Tablespace_name",
+                      "Get information about what quotas the user has, "
+                      "must have same columns and same binds.");
+
+static toSQL SQLSystemGrant("toSecurity:SystemGrant",
+                            "SELECT privilege, NVL(admin_option,'NO') FROM sys.dba_sys_privs WHERE grantee = :f1<char[100]>",
+                            "Get information about the system privileges a user has, should have same bindings and columns");
+
+static toSQL SQLObjectPrivs("toSecurity:ObjectPrivs",
+                            "SELECT DECODE(:type<char[100]>,'FUNCTION','EXECUTE',\n"
+                            "          'LIBRARY','EXECUTE',\n"
+                            "          'PACKAGE','EXECUTE',\n"
+                            "          'PROCEDURE','EXECUTE',\n"
+                            "          'SEQUENCE','ALTER,SELECT',\n"
+                            "          'TABLE','ALTER,DELETE,INDEX,INSERT,REFERENCES,SELECT,UPDATE',\n"
+                            "          'TYPE','EXECUTE',\n"
+                            "          'VIEW','DELETE,SELECT,INSERT,UPDATE',\n"
+                            "          'OPERATOR','EXECUTE',\n"
+                            "          'DIRECTORY','READ',\n"
+                            "          NULL) FROM sys.DUAL",
+                            "Takes a type as parameter and return ',' separated list of privileges");
+
+static toSQL SQLObjectGrant("toSecurity:ObjectGrant",
+                            "SELECT owner,\n"
+                            "       table_name,\n"
+                            "       privilege,\n"
+                            "       grantable\n"
+                            "  FROM sys.dba_tab_privs\n"
+                            " WHERE grantee = :f1<char[100]>",
+                            "Get the privilege on objects for a user or role, "
+                            "must have same columns and binds");
+
+static toSQL SQLRoleGrant("toSecurity:RoleGrant",
+                          "SELECT granted_role,\n"
+                          "       admin_option,\n"
+                          "       default_role\n"
+                          "  FROM sys.dba_role_privs\n"
+                          " WHERE grantee = :f1<char[100]>",
+                          "Get the roles granted to a user or role, "
+                          "must have same columns and binds");
+
+class toSecurityTool : public toTool
+{
+protected:
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(tosecurity_xpm);
+    }
+public:
+    toSecurityTool()
+            : toTool(40, "Security Manager")
+    { }
+    virtual const char *menuItem()
+    {
+        return "Security Manager";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        return new toSecurity(parent, connection);
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toSecurityTool SecurityTool;
+
+class toSecurityQuota : public toSecurityQuotaUI
+{
+    QListViewItem *CurrentItem;
+    void clearItem(QListViewItem *item);
+    virtual void changeTablespace(void);
+    virtual void changeSize(void);
+public:
+    toSecurityQuota(QWidget *parent);
+    void changeUser(const QString &);
+    QString sql(void);
+    void clear(void);
+    void update(void);
+};
+
+void toSecurityQuota::changeSize(void)
+{
+    if (CurrentItem)
+    {
+        if (Value->isChecked())
+        {
+            QString siz;
+            siz.sprintf("%.0f KB", double(Size->value()));
+            CurrentItem->setText(1, siz);
+        }
+        else if (None->isChecked())
+        {
+            CurrentItem->setText(1, qApp->translate("toSecurityQuota", "None"));
+        }
+        else if (Unlimited->isChecked())
+        {
+            CurrentItem->setText(1, qApp->translate("toSecurityQuota", "Unlimited"));
+        }
+    }
+    else
+        SizeGroup->setEnabled(false);
+}
+
+toSecurityQuota::toSecurityQuota(QWidget *parent)
+        : toSecurityQuotaUI(parent)
+{
+    CurrentItem = NULL;
+    update();
+}
+
+void toSecurityQuota::update(void)
+{
+    Tablespaces->clear();
+    try
+    {
+        toQuery tablespaces(toCurrentConnection(this), SQLTablespace);
+        QListViewItem *item = NULL;
+        while (!tablespaces.eof())
+        {
+            item = new toResultViewItem(Tablespaces, item, tablespaces.readValue());
+            item->setText(1, qApp->translate("toSecurityQuota", "None"));
+            item->setText(3, qApp->translate("toSecurityQuota", "None"));
+        }
+    }
+    TOCATCH
+}
+
+void toSecurityQuota::clearItem(QListViewItem *item)
+{
+    item->setText(1, qApp->translate("toSecurityQuota", "None"));
+    item->setText(2, QString::null);
+    item->setText(3, qApp->translate("toSecurityQuota", "None"));
+}
+
+void toSecurityQuota::clear(void)
+{
+    for (QListViewItem *item = Tablespaces->firstChild();item;item = item->nextSibling())
+        item->setText(3, qApp->translate("toSecurityQuota", "None"));
+}
+
+void toSecurityQuota::changeUser(const QString &user)
+{
+    Tablespaces->show();
+    SizeGroup->show();
+    Disabled->hide(); // Do we really have to bother about this?
+
+    Tablespaces->clearSelection();
+    QListViewItem *item = Tablespaces->firstChild();
+    if (!user.isEmpty())
+    {
+        try
+        {
+            toQuery quota(toCurrentConnection(this), SQLQuota, user);
+            while (!quota.eof())
+            {
+                double maxQuota;
+                double usedQuota;
+                QString tbl(quota.readValue());
+                while (item && item->text(0) != tbl)
+                {
+                    clearItem(item);
+                    item = item->nextSibling();
+                }
+                usedQuota = quota.readValue().toDouble();
+                maxQuota = quota.readValue().toDouble();
+                if (item)
+                {
+                    QString usedStr;
+                    QString maxStr;
+                    usedStr.sprintf("%.0f KB", usedQuota / 1024);
+                    if (maxQuota < 0)
+                        maxStr = qApp->translate("toSecurityQuota", "Unlimited");
+                    else if (maxQuota == 0)
+                        maxStr = qApp->translate("toSecurityQuota", "None");
+                    else
+                    {
+                        maxStr.sprintf("%.0f KB", maxQuota / 1024);
+                    }
+                    item->setText(1, maxStr);
+                    item->setText(2, usedStr);
+                    item->setText(3, maxStr);
+                    item = item->nextSibling();
+                }
+            }
+        }
+        TOCATCH
+    }
+    while (item)
+    {
+        clearItem(item);
+        item = item->nextSibling();
+    }
+    SizeGroup->setEnabled(false);
+    CurrentItem = NULL;
+}
+
+void toSecurityQuota::changeTablespace(void)
+{
+    CurrentItem = Tablespaces->selectedItem();
+    if (CurrentItem)
+    {
+        QString siz = CurrentItem->text(1);
+        if (siz == qApp->translate("toSecurityQuota", "None"))
+            None->setChecked(true);
+        else if (siz == qApp->translate("toSecurityQuota", "Unlimited"))
+            Unlimited->setChecked(true);
+        else
+        {
+            Value->setChecked(true);
+            Size->setValue(siz.toInt());
+        }
+    }
+    SizeGroup->setEnabled(true);
+}
+
+QString toSecurityQuota::sql(void)
+{
+    QString ret;
+    for (QListViewItem *item = Tablespaces->firstChild();item;item = item->nextSibling())
+    {
+        if (item->text(1) != item->text(3))
+        {
+            QString siz = item->text(1);
+            if (siz.right(2) == QString::fromLatin1("KB"))
+                siz.truncate(siz.length() - 1);
+            else if (siz == qApp->translate("toSecurityQuota", "None"))
+                siz = QString::fromLatin1("0 K");
+            else if (siz == qApp->translate("toSecurityQuota", "Unlimited"))
+                siz = QString::fromLatin1("UNLIMITED");
+            ret += QString::fromLatin1(" QUOTA ");
+            ret += siz;
+            ret += QString::fromLatin1(" ON ");
+            ret += item->text(0);
+        }
+    }
+    return ret;
+}
+
+class toSecurityUpper : public QValidator
+{
+public:
+    toSecurityUpper(QWidget *parent)
+            : QValidator(parent)
+    { }
+    virtual State validate(QString &str, int &) const
+    {
+        str = str.upper();
+        return Acceptable;
+    }
+};
+
+class toSecurityUser : public toSecurityUserUI
+{
+    toConnection &Connection;
+
+    toSecurityQuota *Quota;
+    enum {
+        password,
+        global,
+        external
+    } AuthType;
+    QString OrgProfile;
+    QString OrgDefault;
+    QString OrgTemp;
+    QString OrgGlobal;
+    QString OrgPassword;
+
+    bool OrgLocked;
+    bool OrgExpired;
+public:
+    toSecurityUser(toSecurityQuota *quota, toConnection &conn, QWidget *parent);
+    void clear(bool all = true);
+    void changeUser(const QString &);
+    QString name(void)
+    {
+        return Name->text();
+    }
+    QString sql(void);
+};
+
+QString toSecurityUser::sql(void)
+{
+    QString extra;
+    if (Authentication->currentPage() == PasswordTab)
+    {
+        if (Password->text() != Password2->text())
+        {
+            switch (TOMessageBox::warning(this,
+                                          qApp->translate("toSecurityUser", "Passwords don't match"),
+                                          qApp->translate("toSecurityUser", "The two versions of the password doesn't match"),
+                                          qApp->translate("toSecurityUser", "Don't save"),
+                                          qApp->translate("toSecurityUser", "Cancel")))
+            {
+            case 0:
+                return QString::null;
+            case 1:
+                throw qApp->translate("toSecurityUser", "Passwords don't match");
+            }
+        }
+        if (Password->text() != OrgPassword)
+        {
+            extra = QString::fromLatin1(" IDENTIFIED BY \"");
+            extra += Password->text();
+            extra += QString::fromLatin1("\"");
+        }
+        if (OrgExpired != ExpirePassword->isChecked())
+        {
+            if (ExpirePassword->isChecked())
+                extra += QString::fromLatin1(" PASSWORD EXPIRE");
+        }
+    }
+    else if (Authentication->currentPage() == GlobalTab)
+    {
+        if (OrgGlobal != GlobalName->text())
+        {
+            extra = QString::fromLatin1(" IDENTIFIED GLOBALLY AS '");
+            extra += GlobalName->text();
+            extra += QString::fromLatin1("'");
+        }
+    }
+    else if ((AuthType != external) && (Authentication->currentPage() == ExternalTab))
+        extra = QString::fromLatin1(" IDENTIFIED EXTERNALLY");
+
+    if (OrgProfile != Profile->currentText())
+    {
+        extra += QString::fromLatin1(" PROFILE \"");
+        extra += Profile->currentText();
+        extra += QString::fromLatin1("\"");
+    }
+    if (OrgDefault != DefaultSpace->currentText())
+    {
+        extra += QString::fromLatin1(" DEFAULT TABLESPACE \"");
+        extra += DefaultSpace->currentText();
+        extra += QString::fromLatin1("\"");
+    }
+    if (OrgTemp != TempSpace->currentText())
+    {
+        extra += QString::fromLatin1(" TEMPORARY TABLESPACE \"");
+        extra += TempSpace->currentText();
+        extra += QString::fromLatin1("\"");
+    }
+    if (OrgLocked != Locked->isChecked())
+    {
+        extra += QString::fromLatin1(" ACCOUNT ");
+        if (Locked->isChecked())
+            extra += QString::fromLatin1("LOCK");
+        else
+            extra += QString::fromLatin1("UNLOCK");
+    }
+    extra += Quota->sql();
+
+    QString sql;
+    if (Name->isEnabled())
+    {
+        if (Name->text().isEmpty())
+            return QString::null;
+        sql = QString::fromLatin1("CREATE ");
+    }
+    else
+    {
+        if (extra.isEmpty())
+            return QString::null;
+        sql = QString::fromLatin1("ALTER ");
+    }
+    sql += QString::fromLatin1("USER \"");
+    sql += Name->text();
+    sql += QString::fromLatin1("\"");
+    sql += extra;
+    return sql;
+}
+
+toSecurityUser::toSecurityUser(toSecurityQuota *quota, toConnection &conn, QWidget *parent)
+        : toSecurityUserUI(parent), Connection(conn), Quota(quota)
+{
+    Name->setValidator(new toSecurityUpper(Name));
+    setFocusProxy(Name);
+    try
+    {
+        toQuery profiles(Connection, SQLProfiles);
+        while (!profiles.eof())
+            Profile->insertItem(profiles.readValue());
+
+        toQuery tablespaces(Connection,
+                            SQLTablespace);
+        while (!tablespaces.eof())
+        {
+            QString buf = tablespaces.readValue();
+            DefaultSpace->insertItem(buf);
+            TempSpace->insertItem(buf);
+        }
+    }
+    TOCATCH
+}
+
+void toSecurityUser::clear(bool all)
+{
+    Name->setText(QString::null);
+    Password->setText(QString::null);
+    Password2->setText(QString::null);
+    GlobalName->setText(QString::null);
+    if (all)
+    {
+        Profile->setCurrentItem(0);
+        Authentication->showPage(PasswordTab);
+        ExpirePassword->setChecked(false);
+        ExpirePassword->setEnabled(true);
+        TempSpace->setCurrentItem(0);
+        DefaultSpace->setCurrentItem(0);
+        Locked->setChecked(false);
+    }
+
+    OrgProfile = OrgDefault = OrgTemp = OrgGlobal = QString::null;
+    AuthType = password;
+    Name->setEnabled(true);
+    OrgLocked = OrgExpired = false;
+}
+
+void toSecurityUser::changeUser(const QString &user)
+{
+    clear();
+    try
+    {
+        toQuery query(Connection, SQLUserInfo, user);
+        if (!query.eof())
+        {
+            Name->setEnabled(false);
+            Name->setText(user);
+
+            QString str(query.readValue());
+            if (str.startsWith(QString::fromLatin1("EXPIRED")))
+            {
+                ExpirePassword->setChecked(true);
+                ExpirePassword->setEnabled(false);
+                OrgExpired = true;
+            }
+            else if (str.startsWith(QString::fromLatin1("LOCKED")))
+            {
+                Locked->setChecked(true);
+                OrgLocked = true;
+            }
+
+            OrgPassword = query.readValue();
+            QString pass = query.readValue();
+            if (OrgPassword == QString::fromLatin1("GLOBAL"))
+            {
+                OrgPassword = QString::null;
+                Authentication->showPage(GlobalTab);
+                OrgGlobal = pass;
+                GlobalName->setText(OrgGlobal);
+                AuthType = global;
+            }
+            else if (OrgPassword == QString::fromLatin1("EXTERNAL"))
+            {
+                OrgPassword = QString::null;
+                Authentication->showPage(ExternalTab);
+                AuthType = external;
+            }
+            else
+            {
+                Password->setText(OrgPassword);
+                Password2->setText(OrgPassword);
+                AuthType = password;
+            }
+
+            {
+                str = query.readValue();
+                for (int i = 0;i < Profile->count();i++)
+                {
+                    if (Profile->text(i) == str)
+                    {
+                        Profile->setCurrentItem(i);
+                        OrgProfile = str;
+                        break;
+                    }
+                }
+            }
+
+            {
+                str = query.readValue();
+                for (int i = 0;i < DefaultSpace->count();i++)
+                {
+                    if (DefaultSpace->text(i) == str)
+                    {
+                        DefaultSpace->setCurrentItem(i);
+                        OrgDefault = str;
+                        break;
+                    }
+                }
+            }
+
+            {
+                str = query.readValue();
+                for (int i = 0;i < TempSpace->count();i++)
+                {
+                    if (TempSpace->text(i) == str)
+                    {
+                        TempSpace->setCurrentItem(i);
+                        OrgTemp = str;
+                        break;
+                    }
+                }
+            }
+        }
+    }
+    TOCATCH
+}
+
+class toSecurityRole : public toSecurityRoleUI
+{
+    toConnection &Connection;
+    toSecurityQuota *Quota;
+    enum {
+        password,
+        global,
+        external,
+        none
+    } AuthType;
+public:
+    toSecurityRole(toSecurityQuota *quota, toConnection &conn, QWidget *parent)
+            : toSecurityRoleUI(parent), Connection(conn), Quota(quota)
+    {
+        Name->setValidator(new toSecurityUpper(Name));
+        setFocusProxy(Name);
+    }
+    void clear(void);
+    void changeRole(const QString &);
+    QString sql(void);
+    QString name(void)
+    {
+        return Name->text();
+    }
+};
+
+QString toSecurityRole::sql(void)
+{
+    QString extra;
+    if (Authentication->currentPage() == PasswordTab)
+    {
+        if (Password->text() != Password2->text())
+        {
+            switch (TOMessageBox::warning(this,
+                                          qApp->translate("toSecurityRole", "Passwords don't match"),
+                                          qApp->translate("toSecurityRole", "The two versions of the password doesn't match"),
+                                          qApp->translate("toSecurityRole", "Don't save"),
+                                          qApp->translate("toSecurityRole", "Cancel")))
+            {
+            case 0:
+                return QString::null;
+            case 1:
+                throw qApp->translate("toSecurityRole", "Passwords don't match");
+            }
+        }
+        if (Password->text().length() > 0)
+        {
+            extra = QString::fromLatin1(" IDENTIFIED BY \"");
+            extra += Password->text();
+            extra += QString::fromLatin1("\"");
+        }
+    }
+    else if ((AuthType != global) && (Authentication->currentPage() == GlobalTab))
+        extra = QString::fromLatin1(" IDENTIFIED GLOBALLY");
+    else if ((AuthType != external) && (Authentication->currentPage() == ExternalTab))
+        extra = QString::fromLatin1(" IDENTIFIED EXTERNALLY");
+    else if ((AuthType != none) && (Authentication->currentPage() == NoneTab))
+        extra = QString::fromLatin1(" NOT IDENTIFIED");
+    extra += Quota->sql();
+    QString sql;
+    if (Name->isEnabled())
+    {
+        if (Name->text().isEmpty())
+            return QString::null;
+        sql = QString::fromLatin1("CREATE ");
+    }
+    else
+    {
+        if (extra.isEmpty())
+            return QString::null;
+        sql = QString::fromLatin1("ALTER ");
+    }
+    sql += QString::fromLatin1("ROLE \"");
+    sql += Name->text();
+    sql += QString::fromLatin1("\"");
+    sql += extra;
+    return sql;
+}
+
+void toSecurityRole::clear(void)
+{
+    Name->setText(QString::null);
+    Name->setEnabled(true);
+}
+
+void toSecurityRole::changeRole(const QString &role)
+{
+    try
+    {
+        toQuery query(Connection, SQLRoleInfo, role);
+        Password->setText(QString::null);
+        Password2->setText(QString::null);
+        if (!query.eof())
+        {
+            Name->setText(role);
+            Name->setEnabled(false);
+
+            QString str(query.readValue());
+            if (str == QString::fromLatin1("YES"))
+            {
+                AuthType = password;
+                Authentication->showPage(PasswordTab);
+            }
+            else if (str == QString::fromLatin1("GLOBAL"))
+            {
+                AuthType = global;
+                Authentication->showPage(GlobalTab);
+            }
+            else if (str == QString::fromLatin1("EXTERNAL"))
+            {
+                AuthType = external;
+                Authentication->showPage(ExternalTab);
+            }
+            else
+            {
+                AuthType = none;
+                Authentication->showPage(NoneTab);
+            }
+        }
+        else
+        {
+            Name->setText(QString::null);
+            Name->setEnabled(true);
+            AuthType = none;
+            Authentication->showPage(NoneTab);
+        }
+    }
+    TOCATCH
+}
+
+class toSecurityPage : public QVBox
+{
+    toSecurityRole *Role;
+    toSecurityUser *User;
+public:
+    toSecurityPage(toSecurityQuota *quota, toConnection &conn, QWidget *parent)
+            : QVBox(parent)
+    {
+        Role = new toSecurityRole(quota, conn, this);
+        Role->hide();
+        User = new toSecurityUser(quota, conn, this);
+        setFocusProxy(User);
+    }
+    void changePage(const QString &nam, bool user)
+    {
+        if (user)
+        {
+            Role->hide();
+            User->show();
+            User->changeUser(nam);
+            setFocusProxy(User);
+        }
+        else
+        {
+            User->hide();
+            Role->show();
+            Role->changeRole(nam);
+            setFocusProxy(Role);
+        }
+    }
+    QString name(void)
+    {
+        if (User->isHidden())
+            return Role->name();
+        else
+            return User->name();
+    }
+    void clear(void)
+    {
+        if (User->isHidden())
+            Role->clear();
+        else
+            User->clear(false);
+    }
+    bool user(void)
+    {
+        if (User->isHidden())
+            return false;
+        return true;
+    }
+    QString sql(void)
+    {
+        if (User->isHidden())
+            return Role->sql();
+        else
+            return User->sql();
+    }
+};
+
+toSecurityObject::toSecurityObject(QWidget *parent)
+        : toListView(parent)
+{
+    addColumn(tr("Object"));
+    setRootIsDecorated(true);
+    update();
+    setSorting(0);
+    connect(this, SIGNAL(clicked(QListViewItem *)), this, SLOT(changed(QListViewItem *)));
+}
+
+
+void toSecurityObject::update(void)
+{
+    clear();
+    try
+    {
+        QString oType;
+        QString oOwner;
+        QString oName;
+        std::list<toConnection::objectName> &objectList = toCurrentConnection(this).objects(true);
+        std::map<QString, QStringList> TypeOptions;
+        toQuery typelst(toCurrentConnection(this));
+        QListViewItem *typeItem = NULL;
+        QListViewItem *ownerItem = NULL;
+        QListViewItem *nameItem = NULL;
+        QStringList Options;
+        for (std::list<toConnection::objectName>::iterator i = objectList.begin();i != objectList.end();i++)
+        {
+            QString type = (*i).Type;
+            QString owner = (*i).Owner;
+            QString name = (*i).Name;
+            if (owner != oOwner)
+            {
+                oType = oName = QString::null;
+                typeItem = nameItem = NULL;
+                oOwner = owner;
+                ownerItem = new toResultViewItem(this, ownerItem, owner);
+            }
+            if (type != oType)
+            {
+                oName = QString::null;
+                nameItem = NULL;
+                oType = type;
+                if (TypeOptions.find(type) == TypeOptions.end())
+                {
+                    toQList args;
+                    toPush(args, toQValue(type));
+                    typelst.execute(SQLObjectPrivs, args);
+                    Options = QStringList::split(QString::fromLatin1(","), typelst.readValue());
+                    TypeOptions[type] = Options;
+                }
+                else
+                    Options = TypeOptions[type];
+
+                if (Options.count() > 0)
+                {
+                    for (typeItem = ownerItem->firstChild();typeItem;typeItem = typeItem->nextSibling())
+                    {
+                        if (typeItem->text(0) == type)
+                            break;
+                    }
+                    if (!typeItem)
+                        typeItem = new toResultViewItem(ownerItem, typeItem, type);
+                }
+            }
+            if (Options.count() > 0)
+            {
+                nameItem = new toResultViewItem(typeItem, nameItem, name);
+                for (QStringList::Iterator i = Options.begin();i != Options.end();i++)
+                {
+                    QListViewItem *item = new toResultViewCheck(nameItem, *i, QCheckListItem::CheckBox);
+                    item->setText(2, name);
+                    item->setText(3, owner);
+                    new toResultViewCheck(item, tr("Admin"), QCheckListItem::CheckBox);
+                }
+            }
+        }
+    }
+    TOCATCH
+}
+
+void toSecurityObject::eraseUser(bool all)
+{
+    QListViewItem *next = NULL;
+    for (QListViewItem *item = firstChild();item;item = next)
+    {
+        toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(item);
+        if (chk)
+        {
+            if (all)
+                chk->setOn(false);
+            chk->setText(1, QString::null);
+        }
+        if (all)
+            item->setOpen(false);
+        if (item->firstChild())
+            next = item->firstChild();
+        else if (item->nextSibling())
+            next = item->nextSibling();
+        else
+        {
+            next = item;
+            do
+            {
+                next = next->parent();
+            }
+            while (next && !next->nextSibling());
+            if (next)
+                next = next->nextSibling();
+        }
+    }
+}
+
+void toSecurityObject::changeUser(const QString &user)
+{
+    bool open = true;
+    eraseUser();
+    try
+    {
+        std::map<QString, std::map<QString, std::map<QString, QString> > > privs;
+        toQuery grant(toCurrentConnection(this), SQLObjectGrant, user);
+        QString yes = "YES";
+        QString admstr = "ADMIN";
+        QString normalstr = "normal";
+        while (!grant.eof())
+        {
+            QString owner(grant.readValue());
+            QString object(grant.readValue());
+            QString priv(grant.readValue());
+            QString admin(grant.readValue());
+
+            ((privs[owner])[object])[priv] = (admin == yes ? admstr : normalstr);
+        }
+
+        for (QListViewItem *ownerItem = firstChild();ownerItem;ownerItem = ownerItem->nextSibling())
+        {
+            for (QListViewItem * tmpitem = ownerItem->firstChild();tmpitem;tmpitem = tmpitem->nextSibling())
+            {
+                for (QListViewItem * object = tmpitem->firstChild();object;object = object->nextSibling())
+                {
+                    for (QListViewItem * type = object->firstChild();type;type = type->nextSibling())
+                    {
+                        QString t = ((privs[ownerItem->text(0)])[object->text(0)])[type->text(0)];
+                        if (!t.isNull())
+                        {
+                            toResultViewCheck *chk = dynamic_cast<toResultViewCheck *>(type);
+                            if (chk)
+                            {
+                                chk->setText(1, tr("ON"));
+                                chk->setOn(true);
+                                if (t == admstr)
+                                {
+                                    toResultViewCheck *chld = dynamic_cast<toResultViewCheck *>(type->firstChild());
+                                    if (chld)
+                                    {
+                                        chld->setText(1, tr("ON"));
+                                        chld->setOn(true);
+                                        if (open)
+                                            chk->setOpen(true);
+                                    }
+                                }
+                            }
+                            if (open)
+                                for (QListViewItem *par = chk->parent();par;par = par->parent())
+                                    par->setOpen(true);
+                        }
+                    }
+                }
+            }
+        }
+    }
+    TOCATCH
+}
+
+void toSecurityObject::sql(const QString &user, std::list<QString> &sqlLst)
+{
+    QListViewItem *next = NULL;
+    for (QListViewItem *item = firstChild();item;item = next)
+    {
+        toResultViewCheck * check = dynamic_cast<toResultViewCheck *>(item);
+        toResultViewCheck *chld = dynamic_cast<toResultViewCheck *>(item->firstChild());
+        if (check)
+        {
+            QString sql;
+            QString what = item->text(0);
+            what += QString::fromLatin1(" ON \"");
+            what += item->text(3);
+            what += QString::fromLatin1("\".\"");
+            what += item->text(2);
+            what += QString::fromLatin1("\" ");
+            if (chld && chld->isOn() && chld->text(1).isEmpty())
+            {
+                sql = QString::fromLatin1("GRANT ");
+                sql += what;
+                sql += QString::fromLatin1("TO \"");
+                sql += user;
+                sql += QString::fromLatin1("\" WITH GRANT OPTION");
+                sqlLst.insert(sqlLst.end(), sql);
+            }
+            else if (check->isOn() && !item->text(1).isEmpty())
+            {
+                if (chld && !chld->isOn() && !chld->text(1).isEmpty())
+                {
+                    sql = QString::fromLatin1("REVOKE ");
+                    sql += what;
+                    sql += QString::fromLatin1("FROM \"");
+                    sql += user;
+                    sql += QString::fromLatin1("\"");
+                    sqlLst.insert(sqlLst.end(), sql);
+
+                    sql = QString::fromLatin1("GRANT ");
+                    sql += what;
+                    sql += QString::fromLatin1("TO \"");
+                    sql += user;
+                    sql += QString::fromLatin1("\"");
+                    sqlLst.insert(sqlLst.end(), sql);
+                }
+            }
+            else if (check->isOn() && item->text(1).isEmpty())
+            {
+                sql = QString::fromLatin1("GRANT ");
+                sql += what;
+                sql += QString::fromLatin1("TO \"");
+                sql += user;
+                sql += QString::fromLatin1("\"");
+                sqlLst.insert(sqlLst.end(), sql);
+            }
+            else if (!check->isOn() && !item->text(1).isEmpty())
+            {
+                sql = QString::fromLatin1("REVOKE ");
+                sql += what;
+                sql += QString::fromLatin1("FROM \"");
+                sql += user;
+                sql += QString::fromLatin1("\"");
+                sqlLst.insert(sqlLst.end(), sql);
+            }
+        }
+        if (!check && item->firstChild())
+            next = item->firstChild();
+        else if (item->nextSibling())
+            next = item->nextSibling();
+        else
+        {
+            next = item;
+            do
+            {
+                next = next->parent();
+            }
+            while (next && !next->nextSibling());
+            if (next)
+                next = next->nextSibling();
+        }
+    }
+}
+
+void toSecurityObject::changed(QListViewItem *org)
+{
+    toResultViewCheck *item = dynamic_cast<toResultViewCheck *>(org);
+    if (item)
+    {
+        if (item->isOn())
+        {
+            item = dynamic_cast<toResultViewCheck *>(item->parent());
+            if (item)
+                item->setOn(true);
+        }
+        else
+        {
+            item = dynamic_cast<toResultViewCheck *>(item->firstChild());
+            if (item)
+                item->setOn(false);
+        }
+    }
+}
+
+toSecuritySystem::toSecuritySystem(QWidget *parent)
+        : toListView(parent)
+{
+    addColumn(tr("Privilege name"));
+    setRootIsDecorated(true);
+    update();
+    setSorting(0);
+    connect(this, SIGNAL(clicked(QListViewItem *)), this, SLOT(changed(QListViewItem *)));
+}
+
+void toSecuritySystem::update(void)
+{
+    clear();
+    try
+    {
+        toQuery priv(toCurrentConnection(this), SQLListSystem);
+        while (!priv.eof())
+        {
+            toResultViewCheck *item = new toResultViewCheck(this, priv.readValue(),
+                                      QCheckListItem::CheckBox);
+            new toResultViewCheck(item, tr("Admin"), QCheckListItem::CheckBox);
+        }
+    }
+    TOCATCH
+}
+
+void toSecuritySystem::sql(const QString &user, std::list<QString> &sqlLst)
+{
+    for (QListViewItem *item = firstChild();item;item = item->nextSibling())
+    {
+        QString sql;
+        toResultViewCheck *check = dynamic_cast<toResultViewCheck *>(item);
+        toResultViewCheck *chld = dynamic_cast<toResultViewCheck *>(item->firstChild());
+        if (chld && chld->isOn() && chld->text(1).isEmpty())
+        {
+            sql = QString::fromLatin1("GRANT ");
+            sql += item->text(0);
+            sql += QString::fromLatin1(" TO \"");
+            sql += user;
+            sql += QString::fromLatin1("\" WITH ADMIN OPTION");
+            sqlLst.insert(sqlLst.end(), sql);
+        }
+        else if (check->isOn() && !item->text(1).isEmpty())
+        {
+            if (chld && !chld->isOn() && !chld->text(1).isEmpty())
+            {
+                sql = QString::fromLatin1("REVOKE ");
+                sql += item->text(0);
+                sql += QString::fromLatin1(" FROM \"");
+                sql += user;
+                sql += QString::fromLatin1("\"");
+                sqlLst.insert(sqlLst.end(), sql);
+
+                sql = QString::fromLatin1("GRANT ");
+                sql += item->text(0);
+                sql += QString::fromLatin1(" TO \"");
+                sql += user;
+                sql += QString::fromLatin1("\"");
+                sqlLst.insert(sqlLst.end(), sql);
+            }
+        }
+        else if (check->isOn() && item->text(1).isEmpty())
+        {
+            sql = QString::fromLatin1("GRANT ");
+            sql += item->text(0);
+            sql += QString::fromLatin1(" TO \"");
+            sql += user;
+            sql += QString::fromLatin1("\"");
+            sqlLst.insert(sqlLst.end(), sql);
+        }
+        else if (!check->isOn() && !item->text(1).isEmpty())
+        {
+            sql = QString::fromLatin1("REVOKE ");
+            sql += item->text(0);
+            sql += QString::fromLatin1(" FROM \"");
+            sql += user;
+            sql += QString::fromLatin1("\"");
+            sqlLst.insert(sqlLst.end(), sql);
+        }
+    }
+}
+
+void toSecuritySystem::changed(QListViewItem *org)
+{
+    toResultViewCheck *item = dynamic_cast<toResultViewCheck *>(org);
+    if (item)
+    {
+        if (item->isOn())
+        {
+            item = dynamic_cast<toResultViewCheck *>(item->parent());
+            if (item)
+                item->setOn(true);
+        }
+        else
+        {
+            item = dynamic_cast<toResultViewCheck *>(item->firstChild());
+            if (item)
+                item->setOn(false);
+        }
+    }
+}
+
+void toSecuritySystem::eraseUser(bool all)
+{
+    for (QListViewItem *item = firstChild();item;item = item->nextSibling())
+    {
+        toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(item);
+        if (chk && all)
+            chk->setOn(false);
+        item->setText(1, QString::null);
+        for (QListViewItem *chld = item->firstChild();chld;chld = chld->nextSibling())
+        {
+            chld->setText(1, QString::null);
+            toResultViewCheck *chk = dynamic_cast<toResultViewCheck *>(chld);
+            if (chk && all)
+                chk->setOn(false);
+        }
+    }
+}
+
+void toSecuritySystem::changeUser(const QString &user)
+{
+    eraseUser();
+    try
+    {
+        toQuery query(toCurrentConnection(this), SQLSystemGrant, user);
+        while (!query.eof())
+        {
+            QString str = query.readValue();
+            QString admin = query.readValue();
+            for (QListViewItem *item = firstChild();item;item = item->nextSibling())
+            {
+                if (item->text(0) == str)
+                {
+                    toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(item);
+                    if (chk)
+                        chk->setOn(true);
+                    item->setText(1, tr("ON"));
+                    if (admin != tr("NO") && item->firstChild())
+                    {
+                        chk = dynamic_cast<toResultViewCheck *>(item->firstChild());
+                        if (chk)
+                            chk->setOn(true);
+                        if (chk->parent())
+                            chk->parent()->setOpen(true);
+                        item->firstChild()->setText(1, tr("ON"));
+                    }
+                    break;
+                }
+            }
+        }
+    }
+    TOCATCH
+}
+
+toSecurityRoleGrant::toSecurityRoleGrant(QWidget *parent)
+        : toListView(parent)
+{
+    addColumn(tr("Role name"));
+    setRootIsDecorated(true);
+    update();
+    setSorting(0);
+    connect(this, SIGNAL(clicked(QListViewItem *)), this, SLOT(changed(QListViewItem *)));
+}
+
+void toSecurityRoleGrant::update(void)
+{
+    clear();
+    try
+    {
+        toQuery priv(toCurrentConnection(this), SQLRoles);
+        while (!priv.eof())
+        {
+            toResultViewCheck *item = new toResultViewCheck(this, priv.readValue(), QCheckListItem::CheckBox);
+            new toResultViewCheck(item, tr("Admin"), QCheckListItem::CheckBox);
+            new toResultViewCheck(item, tr("Default"), QCheckListItem::CheckBox);
+        }
+    }
+    TOCATCH
+}
+
+QCheckListItem *toSecurityRoleGrant::findChild(QListViewItem *parent, const QString &name)
+{
+    for (QListViewItem *item = parent->firstChild();item;item = item->nextSibling())
+    {
+        if (item->text(0) == name)
+        {
+            toResultViewCheck * ret = dynamic_cast<toResultViewCheck *>(item);
+            if (ret->isEnabled())
+                return ret;
+            else
+                return NULL;
+        }
+    }
+    return NULL;
+}
+
+void toSecurityRoleGrant::sql(const QString &user, std::list<QString> &sqlLst)
+{
+    bool any = false;
+    bool chg = false;
+    QString except;
+    QString sql;
+    for (QListViewItem *item = firstChild();item;item = item->nextSibling())
+    {
+        toResultViewCheck * check = dynamic_cast<toResultViewCheck *>(item);
+        QCheckListItem *chld = findChild(item, tr("Admin"));
+        QCheckListItem *def = findChild(item, tr("Default"));
+        if (def && check)
+        {
+            if (!def->isOn() && check->isOn())
+            {
+                if (!except.isEmpty())
+                    except += QString::fromLatin1(",\"");
+                else
+                    except += QString::fromLatin1(" EXCEPT \"");
+                except += item->text(0);
+                except += QString::fromLatin1("\"");
+            }
+            else if (check->isOn() && def->isOn())
+                any = true;
+            if (def->isOn() == def->text(1).isEmpty())
+                chg = true;
+        }
+        if (chld && chld->isOn() && chld->text(1).isEmpty())
+        {
+            if (check->isOn() && !item->text(1).isEmpty())
+            {
+                sql = QString::fromLatin1("REVOKE \"");
+                sql += item->text(0);
+                sql += QString::fromLatin1("\" FROM \"");
+                sql += user;
+                sql += QString::fromLatin1("\"");
+                sqlLst.insert(sqlLst.end(), sql);
+            }
+            sql = QString::fromLatin1("GRANT \"");
+            sql += item->text(0);
+            sql += QString::fromLatin1("\" TO \"");
+            sql += user;
+            sql += QString::fromLatin1("\" WITH ADMIN OPTION");
+            sqlLst.insert(sqlLst.end(), sql);
+            chg = true;
+        }
+        else if (check->isOn() && !item->text(1).isEmpty())
+        {
+            if (chld && !chld->isOn() && !chld->text(1).isEmpty())
+            {
+                sql = QString::fromLatin1("REVOKE \"");
+                sql += item->text(0);
+                sql += QString::fromLatin1("\" FROM \"");
+                sql += user;
+                sql += QString::fromLatin1("\"");
+                sqlLst.insert(sqlLst.end(), sql);
+
+                sql = QString::fromLatin1("GRANT \"");
+                sql += item->text(0);
+                sql += QString::fromLatin1("\" TO \"");
+                sql += user;
+                sql += QString::fromLatin1("\"");
+                sqlLst.insert(sqlLst.end(), sql);
+                chg = true;
+            }
+        }
+        else if (check->isOn() && item->text(1).isEmpty())
+        {
+            sql = QString::fromLatin1("GRANT \"");
+            sql += item->text(0);
+            sql += QString::fromLatin1("\" TO \"");
+            sql += user;
+            sql += QString::fromLatin1("\"");
+            sqlLst.insert(sqlLst.end(), sql);
+            chg = true;
+        }
+        else if (!check->isOn() && !item->text(1).isEmpty())
+        {
+            sql = QString::fromLatin1("REVOKE \"");
+            sql += item->text(0);
+            sql += QString::fromLatin1("\" FROM \"");
+            sql += user;
+            sql += QString::fromLatin1("\"");
+            sqlLst.insert(sqlLst.end(), sql);
+            chg = true;
+        }
+    }
+    if (chg)
+    {
+        sql = QString::fromLatin1("ALTER USER \"");
+        sql += user;
+        sql += QString::fromLatin1("\" DEFAULT ROLE ");
+        if (any)
+        {
+            sql += QString::fromLatin1("ALL");
+            sql += except;
+        }
+        else
+            sql += QString::fromLatin1("NONE");
+        sqlLst.insert(sqlLst.end(), sql);
+    }
+}
+
+void toSecurityRoleGrant::changed(QListViewItem *org)
+{
+    toResultViewCheck *item = dynamic_cast<toResultViewCheck *>(org);
+    if (item)
+    {
+        if (item->isOn())
+        {
+            QCheckListItem *chld = findChild(item, tr("Default"));
+            if (chld)
+                chld->setOn(true);
+            item = dynamic_cast<toResultViewCheck *>(item->parent());
+            if (item)
+                item->setOn(true);
+        }
+        else
+        {
+            for (QListViewItem *item = firstChild();item;item = item->nextSibling())
+            {
+                toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(item->firstChild());
+                if (chk)
+                    chk->setOn(false);
+            }
+        }
+    }
+}
+
+void toSecurityRoleGrant::eraseUser(bool user, bool all)
+{
+    for (QListViewItem *item = firstChild();item;item = item->nextSibling())
+    {
+        toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(item);
+        if (chk && all)
+            chk->setOn(false);
+        item->setText(1, QString::null);
+        for (QListViewItem *chld = item->firstChild();chld;chld = chld->nextSibling())
+        {
+            chld->setText(1, QString::null);
+            toResultViewCheck *chk = dynamic_cast<toResultViewCheck *>(chld);
+            if (chk)
+            {
+                if (all)
+                {
+                    chk->setOn(false);
+                    if (chk->text(0) == tr("Default"))
+                        chk->setEnabled(user);
+                }
+            }
+        }
+    }
+}
+
+void toSecurityRoleGrant::changeUser(bool user, const QString &username)
+{
+    eraseUser(user);
+    try
+    {
+        toQuery query(toCurrentConnection(this), SQLRoleGrant, username);
+        while (!query.eof())
+        {
+            QString str = query.readValue();
+            QString admin = query.readValue();
+            QString def = query.readValue();
+            for (QListViewItem *item = firstChild();item;item = item->nextSibling())
+            {
+                if (item->text(0) == str)
+                {
+                    QCheckListItem * chk = dynamic_cast<toResultViewCheck *>(item);
+                    if (chk)
+                        chk->setOn(true);
+                    item->setText(1, tr("ON"));
+                    chk = findChild(item, tr("Admin"));
+                    if (admin == tr("YES") && chk)
+                    {
+                        chk->setOn(true);
+                        chk->setText(1, tr("ON"));
+                        if (chk->parent())
+                            chk->parent()->setOpen(true);
+                    }
+                    chk = findChild(item, tr("Default"));
+                    if (def == tr("YES") && chk)
+                    {
+                        chk->setOn(true);
+                        chk->setText(1, tr("ON"));
+                        if (chk->parent())
+                            chk->parent()->setOpen(true);
+                    }
+                    break;
+                }
+            }
+        }
+    }
+    TOCATCH
+}
+
+toSecurity::toSecurity(QWidget *main, toConnection &connection)
+        : toToolWidget(SecurityTool, "security.html", main, connection)
+{
+    toBusy busy;
+
+    QToolBar *toolbar = toAllocBar(this, tr("Security manager"));
+    toolbar->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Update user and role list"),
+                    tr("Update user and role list"),
+                    this, SLOT(refresh(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(commit_xpm)),
+                    tr("Save changes"),
+                    tr("Save changes"),
+                    this, SLOT(saveChanges(void)),
+                    toolbar);
+    DropButton = new QToolButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                                 tr("Remove user/role"),
+                                 tr("Remove user/role"),
+                                 this, SLOT(drop(void)),
+                                 toolbar);
+    DropButton->setEnabled(false);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(adduser_xpm)),
+                    tr("Add new user"),
+                    tr("Add new user"),
+                    this, SLOT(addUser(void)),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(addrole_xpm)),
+                    tr("Add new role"),
+                    tr("Add new role"),
+                    this, SLOT(addRole(void)),
+                    toolbar);
+    CopyButton = new QToolButton(QPixmap(const_cast<const char**>(copyuser_xpm)),
+                                 tr("Copy current user or role"),
+                                 tr("Copy current user or role"),
+                                 this, SLOT(copy(void)),
+                                 toolbar);
+    CopyButton->setEnabled(false);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(sql_xpm)),
+                    tr("Display SQL needed to make current changes"),
+                    tr("Display SQL needed to make current changes"),
+                    this, SLOT(displaySQL(void)),
+                    toolbar);
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    QSplitter *splitter = new QSplitter(Horizontal, this);
+    UserList = new toListView(splitter);
+    UserList->addColumn(tr("Users/Roles"));
+    UserList->setSQLName(QString::fromLatin1("toSecurity:Users/Roles"));
+    UserList->setRootIsDecorated(true);
+    UserList->setSelectionMode(QListView::Single);
+    Tabs = new QTabWidget(splitter);
+    Quota = new toSecurityQuota(Tabs);
+    General = new toSecurityPage(Quota, connection, Tabs);
+    Tabs->addTab(General, tr("&General"));
+    RoleGrant = new toSecurityRoleGrant(Tabs);
+    Tabs->addTab(RoleGrant, tr("&Roles"));
+    SystemGrant = new toSecuritySystem(Tabs);
+    Tabs->addTab(SystemGrant, tr("&System Privileges"));
+    ObjectGrant = new toSecurityObject(Tabs);
+    Tabs->addTab(ObjectGrant, tr("&Object Privileges"));
+    Tabs->addTab(Quota, tr("&Quota"));
+    UserList->setSelectionMode(QListView::Single);
+    connect(UserList, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeUser(QListViewItem *)));
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+    refresh();
+    connect(this, SIGNAL(connectionChange()),
+            this, SLOT(refresh()));
+    setFocusProxy(Tabs);
+}
+
+#define TO_ID_COPY  (toMain::TO_TOOL_MENU_ID+ 0)
+#define TO_ID_DROP  (toMain::TO_TOOL_MENU_ID+ 1)
+
+void toSecurity::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Security|Refresh")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(commit_xpm)), tr("&Save changes"),
+                                 this, SLOT(saveChanges()),
+                                 toKeySequence(tr("Ctrl+Return", "Security|Save changes")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(trash_xpm)), tr("&Remove user/role"),
+                                 this, SLOT(drop()), 0, TO_ID_DROP);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(adduser_xpm)), tr("Add &user"),
+                                 this, SLOT(addUser()),
+                                 toKeySequence(tr("Ctrl+Shift+U", "Security|Add user")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(addrole_xpm)), tr("Add &role"),
+                                 this, SLOT(addRole()),
+                                 toKeySequence(tr("Ctrl+Shift+R", "Security|Add role")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(copyuser_xpm)), tr("&Copy current"),
+                                 this, SLOT(copy()),
+                                 toKeySequence(tr("Ctrl+Shift+O", "Security|Copy current")), TO_ID_COPY);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(sql_xpm)), tr("Display SQL..."),
+                                 this, SLOT(displaySQL()),
+                                 toKeySequence(tr("F4", "Security|Display SQL")));
+            toMainWidget()->menuBar()->insertItem(tr("&Security"), ToolMenu, -1, toToolMenuIndex());
+            ToolMenu->setItemEnabled(TO_ID_DROP, DropButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_COPY, CopyButton->isEnabled());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+void toSecurity::displaySQL(void)
+{
+    std::list<QString> lines = sql();
+    QString res;
+    for (std::list<QString>::iterator i = lines.begin();i != lines.end();i++)
+    {
+        res += *i;
+        res += QString::fromLatin1(";\n");
+    }
+    if (res.length() > 0)
+        new toMemoEditor(this, res, -1, -1, true);
+    else
+        toStatusMessage(tr("No changes made"));
+}
+
+std::list<QString> toSecurity::sql(void)
+{
+    std::list<QString> ret;
+    try
+    {
+        QString tmp = General->sql();
+        if (!tmp.isEmpty())
+            ret.insert(ret.end(), tmp);
+        QString name = General->name();
+        if (!name.isEmpty())
+        {
+            SystemGrant->sql(name, ret);
+            ObjectGrant->sql(name, ret);
+            RoleGrant->sql(name, ret);
+        }
+    }
+    catch (const QString &str)
+    {
+        toStatusMessage(str);
+        std::list<QString> empty;
+        return empty;
+    }
+
+    return ret;
+}
+
+void toSecurity::changeUser(bool ask)
+{
+    if (ask)
+    {
+        try
+        {
+            std::list<QString> sqlList = sql();
+            if (sqlList.size() != 0)
+            {
+                switch (TOMessageBox::warning(this,
+                                              tr("Save changes?"),
+                                              tr("Save the changes made to this user?"),
+                                              tr("Save"), tr("Discard"), tr("Cancel")))
+                {
+                case 0:
+                    saveChanges();
+                    return ;
+                case 1:
+                    break;
+                case 2:
+                    return ;
+                }
+            }
+        }
+        catch (const QString &str)
+        {
+            toStatusMessage(str);
+            return ;
+        }
+    }
+
+    try
+    {
+        QString sel;
+        QListViewItem *item = UserList->selectedItem();
+        if (item)
+        {
+            toBusy busy;
+            UserID = item->text(1);
+            DropButton->setEnabled(item->parent());
+            CopyButton->setEnabled(item->parent());
+            if (ToolMenu)
+            {
+                ToolMenu->setItemEnabled(TO_ID_DROP, DropButton->isEnabled());
+                ToolMenu->setItemEnabled(TO_ID_COPY, CopyButton->isEnabled());
+            }
+
+            if (UserID[4].latin1() != ':')
+                throw tr("Invalid security ID");
+            bool user = false;
+            if (UserID.startsWith(QString::fromLatin1("USER")))
+                user = true;
+            QString username = UserID.right(UserID.length() - 5);
+            General->changePage(username, user);
+            Quota->changeUser(username);
+            Tabs->setTabEnabled(Quota, user);
+            RoleGrant->changeUser(user, username);
+            SystemGrant->changeUser(username);
+            ObjectGrant->changeUser(username);
+        }
+    }
+    TOCATCH
+}
+
+void toSecurity::refresh(void)
+{
+    toBusy busy;
+    disconnect(UserList, SIGNAL(selectionChanged(QListViewItem *)),
+               this, SLOT(changeUser(QListViewItem *)));
+    SystemGrant->update();
+    RoleGrant->update();
+    ObjectGrant->update();
+    Quota->update();
+    UserList->clear();
+    try
+    {
+        QListViewItem *parent = new toResultViewItem(UserList, NULL, QString::fromLatin1("Users"));
+        parent->setText(1, QString::fromLatin1("USER:"));
+        parent->setOpen(true);
+        toQuery user(connection(), toSQL::string(toSQL::TOSQL_USERLIST, connection()));
+        QListViewItem *item = NULL;
+        while (!user.eof())
+        {
+            QString tmp = user.readValue();
+            QString id = QString::fromLatin1("USER:");
+            id += tmp;
+            item = new toResultViewItem(parent, item, tmp);
+            item->setText(1, id);
+            if (id == UserID)
+                UserList->setSelected(item, true);
+        }
+        parent = new toResultViewItem(UserList, parent, tr("Roles"));
+        parent->setText(1, QString::fromLatin1("ROLE:"));
+        parent->setOpen(true);
+        toQuery roles(connection(), SQLRoles);
+        item = NULL;
+        while (!roles.eof())
+        {
+            QString tmp = roles.readValue();
+            QString id = QString::fromLatin1("ROLE:");
+            id += tmp;
+            item = new toResultViewItem(parent, item, tmp);
+            item->setText(1, id);
+            if (id == UserID)
+                UserList->setSelected(item, true);
+        }
+    }
+    TOCATCH
+    connect(UserList, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeUser(QListViewItem *)));
+}
+
+void toSecurity::saveChanges()
+{
+    std::list<QString> sqlList = sql();
+    for (std::list<QString>::iterator i = sqlList.begin();i != sqlList.end();i++)
+    {
+        try
+        {
+            connection().execute(*i);
+        }
+        TOCATCH
+    }
+    if (General->user())
+        UserID = QString::fromLatin1("USER:");
+    else
+        UserID = QString::fromLatin1("ROLE:");
+    UserID += General->name();
+    refresh();
+    changeUser(false);
+}
+
+void toSecurity::drop()
+{
+    if (UserID.length() > 5)
+    {
+        QString str = QString::fromLatin1("DROP ");
+        if (General->user())
+            str += QString::fromLatin1("USER");
+        else
+            str += QString::fromLatin1("ROLE");
+        str += QString::fromLatin1(" \"");
+        str += UserID.right(UserID.length() - 5);
+        str += QString::fromLatin1("\"");
+        try
+        {
+            connection().execute(str);
+            refresh();
+            changeUser(false);
+        }
+        catch (...)
+        {
+            switch (TOMessageBox::warning(this,
+                                          tr("Are you sure?"),
+                                          tr("The user still owns objects, add the cascade option?"),
+                                          tr("Yes"), tr("No")))
+            {
+            case 0:
+                str += QString::fromLatin1(" CASCADE");
+                try
+                {
+                    connection().execute(str);
+                    refresh();
+                    changeUser(false);
+                }
+                TOCATCH
+                return ;
+            case 1:
+                break;
+            }
+        }
+    }
+}
+
+void toSecurity::addUser(void)
+{
+    for (QListViewItem *item = UserList->firstChild();item;item = item->nextSibling())
+        if (item->text(1) == QString::fromLatin1("USER:"))
+        {
+            UserList->clearSelection();
+            UserList->setCurrentItem(item);
+            Tabs->showPage(General);
+            General->setFocus();
+            break;
+        }
+}
+
+void toSecurity::addRole(void)
+{
+    for (QListViewItem *item = UserList->firstChild();item;item = item->nextSibling())
+        if (item->text(1) == QString::fromLatin1("ROLE:"))
+        {
+            UserList->clearSelection();
+            UserList->setCurrentItem(item);
+            Tabs->showPage(General);
+            General->setFocus();
+            break;
+        }
+}
+
+void toSecurity::copy(void)
+{
+    General->clear();
+    SystemGrant->eraseUser(false);
+    RoleGrant->eraseUser(General->user(), false);
+    ObjectGrant->eraseUser(false);
+    Quota->clear();
+    if (General->user())
+        UserID = QString::fromLatin1("USER:");
+    else
+        UserID = QString::fromLatin1("ROLE:");
+    for (QListViewItem *item = UserList->firstChild();item;item = item->nextSibling())
+        if (item->text(1) == UserID)
+        {
+            disconnect(UserList, SIGNAL(selectionChanged(QListViewItem *)),
+                       this, SLOT(changeUser(QListViewItem *)));
+            UserList->clearSelection();
+            UserList->setCurrentItem(item);
+            connect(UserList, SIGNAL(selectionChanged(QListViewItem *)),
+                    this, SLOT(changeUser(QListViewItem *)));
+            break;
+        }
+}

Added: kde-extras/tora/branches/upstream/current/src/tosecurity.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurity.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurity.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,147 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSECURITY_H
+#define TOSECURITY_H
+
+#include "config.h"
+#include "totool.h"
+
+#include <list>
+
+class QPopupMenu;
+class QTabWidget;
+class QToolButton;
+class toConnection;
+class toListView;
+class toSecurityPage;
+class toSecurityQuota;
+
+class toSecuritySystem : public toListView
+{
+    Q_OBJECT
+
+public:
+    toSecuritySystem(QWidget *parent);
+    void changeUser(const QString &);
+    void eraseUser(bool all = true);
+    void sql(const QString &user, std::list<QString> &sql);
+    void update(void);
+public slots:
+    virtual void changed(QListViewItem *item);
+};
+
+class toSecurityRoleGrant : public toListView
+{
+    Q_OBJECT
+
+    QCheckListItem *findChild(QListViewItem *parent, const QString &name);
+public:
+    toSecurityRoleGrant(QWidget *parent);
+    void changeUser(bool user, const QString &);
+    void sql(const QString &user, std::list<QString> &sql);
+    void eraseUser(bool user, bool all = true);
+    void update(void);
+public slots:
+    virtual void changed(QListViewItem *item);
+};
+
+class toSecurityObject : public toListView
+{
+    Q_OBJECT
+
+public:
+    toSecurityObject(QWidget *parent);
+    void changeUser(const QString &);
+    void sql(const QString &user, std::list<QString> &sql);
+    void eraseUser(bool all = true);
+    void update(void);
+public slots:
+    virtual void changed(QListViewItem *item);
+};
+
+class toSecurity : public toToolWidget
+{
+    Q_OBJECT
+
+    struct privilege
+    {
+        QString Owner;
+        QString Object;
+        QString Access;
+        QString Value;
+        bool Admin;
+        privilege(const QString &owner, const QString &object, const QString &access,
+                  const QString &value, bool admin)
+                : Owner(owner), Object(object), Access(access), Value(value), Admin(admin)
+        { }
+    }
+    ;
+
+    QString UserID;
+
+    QPopupMenu *ToolMenu;
+    toListView *UserList;
+    toSecuritySystem *SystemGrant;
+    toSecurityRoleGrant *RoleGrant;
+    toSecurityObject *ObjectGrant;
+    toSecurityPage *General;
+    toSecurityQuota *Quota;
+    QToolButton *DropButton;
+    QToolButton *CopyButton;
+    QTabWidget *Tabs;
+    std::list<QString> sql(void);
+public:
+    toSecurity(QWidget *parent, toConnection &connection);
+    virtual void changeUser(bool);
+
+public slots:
+    virtual void refresh(void);
+    virtual void changeUser(QListViewItem *)
+    {
+        changeUser(true);
+    }
+    virtual void saveChanges(void);
+    virtual void addUser(void);
+    virtual void addRole(void);
+    virtual void drop(void);
+    virtual void copy(void);
+    virtual void displaySQL(void);
+    virtual void windowActivated(QWidget *widget);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,127 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tosecurityquotaui.ui'
+**
+** Created: Tue Sep 18 08:21:24 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tosecurityquotaui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qheader.h>
+#include <qlistview.h>
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "tofilesize.h"
+
+/*
+ *  Constructs a toSecurityQuotaUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toSecurityQuotaUI::toSecurityQuotaUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toSecurityQuotaUI" );
+    toSecurityQuotaUILayout = new QGridLayout( this, 1, 1, 0, 0, "toSecurityQuotaUILayout"); 
+
+    Tablespaces = new QListView( this, "Tablespaces" );
+    Tablespaces->addColumn( tr( "Tablespace" ) );
+    Tablespaces->addColumn( tr( "Quota Size" ) );
+    Tablespaces->addColumn( tr( "Used Size" ) );
+    Tablespaces->setAllColumnsShowFocus( TRUE );
+
+    toSecurityQuotaUILayout->addWidget( Tablespaces, 1, 0 );
+
+    SizeGroup = new QButtonGroup( this, "SizeGroup" );
+    SizeGroup->setEnabled( FALSE );
+    SizeGroup->setLineWidth( 0 );
+    SizeGroup->setColumnLayout(0, Qt::Vertical );
+    SizeGroup->layout()->setSpacing( 6 );
+    SizeGroup->layout()->setMargin( 0 );
+    SizeGroupLayout = new QGridLayout( SizeGroup->layout() );
+    SizeGroupLayout->setAlignment( Qt::AlignTop );
+
+    Size = new toFilesize( SizeGroup, "Size" );
+    Size->setFocusPolicy( toFilesize::TabFocus );
+
+    SizeGroupLayout->addMultiCellWidget( Size, 1, 1, 0, 2 );
+
+    Unlimited = new QRadioButton( SizeGroup, "Unlimited" );
+
+    SizeGroupLayout->addWidget( Unlimited, 0, 2 );
+
+    None = new QRadioButton( SizeGroup, "None" );
+
+    SizeGroupLayout->addWidget( None, 0, 1 );
+
+    Value = new QRadioButton( SizeGroup, "Value" );
+    Value->setChecked( TRUE );
+
+    SizeGroupLayout->addWidget( Value, 0, 0 );
+
+    toSecurityQuotaUILayout->addWidget( SizeGroup, 2, 0 );
+
+    Disabled = new QLabel( this, "Disabled" );
+    Disabled->setAlignment( int( QLabel::AlignCenter ) );
+
+    toSecurityQuotaUILayout->addWidget( Disabled, 0, 0 );
+    languageChange();
+    resize( QSize(682, 596).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( Value, SIGNAL( toggled(bool) ), Size, SLOT( setEnabled(bool) ) );
+    connect( Tablespaces, SIGNAL( selectionChanged() ), this, SLOT( changeTablespace(void) ) );
+    connect( SizeGroup, SIGNAL( clicked(int) ), this, SLOT( changeSize(void) ) );
+    connect( Size, SIGNAL( valueChanged(void) ), this, SLOT( changeSize(void) ) );
+
+    // tab order
+    setTabOrder( Tablespaces, Value );
+    setTabOrder( Value, None );
+    setTabOrder( None, Unlimited );
+    setTabOrder( Unlimited, Size );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toSecurityQuotaUI::~toSecurityQuotaUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toSecurityQuotaUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    Tablespaces->header()->setLabel( 0, tr( "Tablespace" ) );
+    Tablespaces->header()->setLabel( 1, tr( "Quota Size" ) );
+    Tablespaces->header()->setLabel( 2, tr( "Used Size" ) );
+    SizeGroup->setTitle( QString::null );
+    Unlimited->setText( tr( "&Unlimited" ) );
+    None->setText( tr( "&None" ) );
+    Value->setText( tr( "&Value" ) );
+    Disabled->setText( tr( "Belongs to Resource group or has unlimited tablespace privilege" ) );
+}
+
+void toSecurityQuotaUI::changeTablespace()
+{
+    qWarning( "toSecurityQuotaUI::changeTablespace(): Not implemented yet" );
+}
+
+void toSecurityQuotaUI::changeSize()
+{
+    qWarning( "toSecurityQuotaUI::changeSize(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,60 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tosecurityquotaui.ui'
+**
+** Created: Tue Sep 18 08:21:24 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSECURITYQUOTAUI_H
+#define TOSECURITYQUOTAUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toFilesize;
+class QListView;
+class QListViewItem;
+class QButtonGroup;
+class QRadioButton;
+class QLabel;
+
+class toSecurityQuotaUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toSecurityQuotaUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toSecurityQuotaUI();
+
+    QListView* Tablespaces;
+    QButtonGroup* SizeGroup;
+    toFilesize* Size;
+    QRadioButton* Unlimited;
+    QRadioButton* None;
+    QRadioButton* Value;
+    QLabel* Disabled;
+
+public slots:
+    virtual void changeTablespace(void);
+    virtual void changeSize(void);
+
+protected:
+    QGridLayout* toSecurityQuotaUILayout;
+    QGridLayout* SizeGroupLayout;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOSECURITYQUOTAUI_H

Added: kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurityquotaui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,251 @@
+<!DOCTYPE UI><UI>
+<class>toSecurityQuotaUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toSecurityQuotaUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>682</width>
+            <height>596</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <property>
+        <name>layoutMargin</name>
+    </property>
+    <property>
+        <name>layoutSpacing</name>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>0</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>0</number>
+        </property>
+        <widget row="1"  column="0" >
+            <class>QListView</class>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Tablespace</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Quota Size</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Used Size</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Tablespaces</cstring>
+            </property>
+            <property stdset="1">
+                <name>allColumnsShowFocus</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="2"  column="0" >
+            <class>QButtonGroup</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>SizeGroup</cstring>
+            </property>
+            <property stdset="1">
+                <name>enabled</name>
+                <bool>false</bool>
+            </property>
+            <property stdset="1">
+                <name>lineWidth</name>
+                <number>0</number>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string></string>
+            </property>
+            <property>
+                <name>layoutMargin</name>
+            </property>
+            <property>
+                <name>layoutSpacing</name>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>0</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+                    <class>toFilesize</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Size</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>focusPolicy</name>
+                        <enum>TabFocus</enum>
+                    </property>
+                </widget>
+                <widget row="0"  column="2" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Unlimited</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Unlimited</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="1" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>None</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;None</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Value</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Value</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget row="0"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Disabled</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Belongs to Resource group or has unlimited tablespace privilege</string>
+            </property>
+            <property stdset="1">
+                <name>alignment</name>
+                <set>AlignCenter</set>
+            </property>
+            <property>
+                <name>hAlign</name>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toFilesize</class>
+        <header location="local">tofilesize.h</header>
+        <sizehint>
+            <width>40</width>
+            <height>40</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>1</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+        <signal>valueChanged(void)</signal>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>Value</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>Size</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>Tablespaces</sender>
+        <signal>selectionChanged()</signal>
+        <receiver>toSecurityQuotaUI</receiver>
+        <slot>changeTablespace(void)</slot>
+    </connection>
+    <connection>
+        <sender>SizeGroup</sender>
+        <signal>clicked(int)</signal>
+        <receiver>toSecurityQuotaUI</receiver>
+        <slot>changeSize(void)</slot>
+    </connection>
+    <connection>
+        <sender>Size</sender>
+        <signal>valueChanged(void)</signal>
+        <receiver>toSecurityQuotaUI</receiver>
+        <slot>changeSize(void)</slot>
+    </connection>
+    <slot access="public">changeTablespace(void)</slot>
+    <slot access="public">changeSize(void)</slot>
+</connections>
+<tabstops>
+    <tabstop>Tablespaces</tabstop>
+    <tabstop>Value</tabstop>
+    <tabstop>None</tabstop>
+    <tabstop>Unlimited</tabstop>
+    <tabstop>Size</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tosecurityroleui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurityroleui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurityroleui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,130 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tosecurityroleui.ui'
+**
+** Created: Tue Sep 18 08:21:24 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tosecurityroleui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qtabwidget.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toSecurityRoleUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toSecurityRoleUI::toSecurityRoleUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toSecurityRoleUI" );
+    toSecurityRoleUILayout = new QGridLayout( this, 1, 1, 11, 6, "toSecurityRoleUILayout"); 
+
+    Name = new QLineEdit( this, "Name" );
+
+    toSecurityRoleUILayout->addWidget( Name, 0, 1 );
+
+    NameLabel = new QLabel( this, "NameLabel" );
+
+    toSecurityRoleUILayout->addWidget( NameLabel, 0, 0 );
+
+    Authentication = new QTabWidget( this, "Authentication" );
+    Authentication->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, 0, 0, Authentication->sizePolicy().hasHeightForWidth() ) );
+
+    PasswordTab = new QWidget( Authentication, "PasswordTab" );
+    PasswordTabLayout = new QGridLayout( PasswordTab, 1, 1, 11, 6, "PasswordTabLayout"); 
+
+    TextLabel4 = new QLabel( PasswordTab, "TextLabel4" );
+
+    PasswordTabLayout->addWidget( TextLabel4, 0, 0 );
+
+    Password = new QLineEdit( PasswordTab, "Password" );
+    Password->setEchoMode( QLineEdit::Password );
+
+    PasswordTabLayout->addWidget( Password, 0, 1 );
+
+    Password2 = new QLineEdit( PasswordTab, "Password2" );
+    Password2->setEchoMode( QLineEdit::Password );
+
+    PasswordTabLayout->addWidget( Password2, 1, 1 );
+
+    TextLabel4_2 = new QLabel( PasswordTab, "TextLabel4_2" );
+
+    PasswordTabLayout->addWidget( TextLabel4_2, 1, 0 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    PasswordTabLayout->addItem( Spacer1, 1, 2 );
+    Authentication->insertTab( PasswordTab, QString::fromLatin1("") );
+
+    ExternalTab = new QWidget( Authentication, "ExternalTab" );
+    ExternalTabLayout = new QGridLayout( ExternalTab, 1, 1, 11, 6, "ExternalTabLayout"); 
+
+    TextLabel3 = new QLabel( ExternalTab, "TextLabel3" );
+
+    ExternalTabLayout->addWidget( TextLabel3, 0, 0 );
+    Authentication->insertTab( ExternalTab, QString::fromLatin1("") );
+
+    GlobalTab = new QWidget( Authentication, "GlobalTab" );
+    GlobalTabLayout = new QGridLayout( GlobalTab, 1, 1, 11, 6, "GlobalTabLayout"); 
+
+    TextLabel3_2 = new QLabel( GlobalTab, "TextLabel3_2" );
+
+    GlobalTabLayout->addWidget( TextLabel3_2, 0, 0 );
+    Authentication->insertTab( GlobalTab, QString::fromLatin1("") );
+
+    NoneTab = new QWidget( Authentication, "NoneTab" );
+    NoneTabLayout = new QGridLayout( NoneTab, 1, 1, 11, 6, "NoneTabLayout"); 
+
+    TextLabel1 = new QLabel( NoneTab, "TextLabel1" );
+
+    NoneTabLayout->addWidget( TextLabel1, 0, 0 );
+    Authentication->insertTab( NoneTab, QString::fromLatin1("") );
+
+    toSecurityRoleUILayout->addMultiCellWidget( Authentication, 1, 1, 0, 1 );
+    Spacer1_2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toSecurityRoleUILayout->addItem( Spacer1_2, 2, 1 );
+    languageChange();
+    resize( QSize(576, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // buddies
+    NameLabel->setBuddy( Name );
+    TextLabel4->setBuddy( Password );
+    TextLabel4_2->setBuddy( Password2 );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toSecurityRoleUI::~toSecurityRoleUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toSecurityRoleUI::languageChange()
+{
+    setCaption( tr( "Form2" ) );
+    NameLabel->setText( tr( "&Name" ) );
+    TextLabel4->setText( tr( "Enter Password" ) );
+    TextLabel4_2->setText( tr( "Confirm Password" ) );
+    Authentication->changeTab( PasswordTab, tr( "&Password" ) );
+    TextLabel3->setText( tr( "Role authenticated by the operating system" ) );
+    Authentication->changeTab( ExternalTab, tr( "&External" ) );
+    TextLabel3_2->setText( tr( "Role authenticated globally" ) );
+    Authentication->changeTab( GlobalTab, tr( "&Global" ) );
+    TextLabel1->setText( tr( "No password required for role" ) );
+    Authentication->changeTab( NoneTab, tr( "None" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tosecurityroleui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurityroleui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurityroleui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,61 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tosecurityroleui.ui'
+**
+** Created: Tue Sep 18 08:21:24 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSECURITYROLEUI_H
+#define TOSECURITYROLEUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QLineEdit;
+class QLabel;
+class QTabWidget;
+
+class toSecurityRoleUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toSecurityRoleUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toSecurityRoleUI();
+
+    QLineEdit* Name;
+    QLabel* NameLabel;
+    QTabWidget* Authentication;
+    QWidget* PasswordTab;
+    QLabel* TextLabel4;
+    QLineEdit* Password;
+    QLineEdit* Password2;
+    QLabel* TextLabel4_2;
+    QWidget* ExternalTab;
+    QLabel* TextLabel3;
+    QWidget* GlobalTab;
+    QLabel* TextLabel3_2;
+    QWidget* NoneTab;
+    QLabel* TextLabel1;
+
+protected:
+    QGridLayout* toSecurityRoleUILayout;
+    QSpacerItem* Spacer1_2;
+    QGridLayout* PasswordTabLayout;
+    QSpacerItem* Spacer1;
+    QGridLayout* ExternalTabLayout;
+    QGridLayout* GlobalTabLayout;
+    QGridLayout* NoneTabLayout;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOSECURITYROLEUI_H

Added: kde-extras/tora/branches/upstream/current/src/tosecurityroleui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurityroleui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurityroleui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,280 @@
+<!DOCTYPE UI><UI>
+<class>toSecurityRoleUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toSecurityRoleUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>576</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form2</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="1" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Name</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>NameLabel</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Name</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Name</cstring>
+            </property>
+        </widget>
+        <widget row="1"  column="0"  rowspan="1"  colspan="2" >
+            <class>QTabWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Authentication</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>7</hsizetype>
+                    <vsizetype>1</vsizetype>
+                </sizepolicy>
+            </property>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>PasswordTab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>&amp;Password</string>
+                </attribute>
+                <grid>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget row="0"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel4</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>Enter Password</string>
+                        </property>
+                        <property>
+                            <name>buddy</name>
+                            <cstring>Password</cstring>
+                        </property>
+                    </widget>
+                    <widget row="0"  column="1" >
+                        <class>QLineEdit</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Password</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>echoMode</name>
+                            <enum>Password</enum>
+                        </property>
+                    </widget>
+                    <widget row="1"  column="1" >
+                        <class>QLineEdit</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Password2</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>echoMode</name>
+                            <enum>Password</enum>
+                        </property>
+                    </widget>
+                    <widget row="1"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel4_2</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>Confirm Password</string>
+                        </property>
+                        <property>
+                            <name>buddy</name>
+                            <cstring>Password2</cstring>
+                        </property>
+                    </widget>
+                    <spacer row="1"  column="2" >
+                        <property>
+                            <name>name</name>
+                            <cstring>Spacer1</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>orientation</name>
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property stdset="1">
+                            <name>sizeType</name>
+                            <enum>Expanding</enum>
+                        </property>
+                        <property>
+                            <name>sizeHint</name>
+                            <size>
+                                <width>20</width>
+                                <height>20</height>
+                            </size>
+                        </property>
+                    </spacer>
+                </grid>
+            </widget>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>ExternalTab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>&amp;External</string>
+                </attribute>
+                <grid>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget row="0"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel3</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>Role authenticated by the operating system</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>GlobalTab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>&amp;Global</string>
+                </attribute>
+                <grid>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget row="0"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel3_2</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>Role authenticated globally</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>NoneTab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>None</string>
+                </attribute>
+                <grid>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget row="0"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel1</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>No password required for role</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+        </widget>
+        <spacer row="2"  column="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tosecurityuserui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurityuserui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurityuserui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,192 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tosecurityuserui.ui'
+**
+** Created: Tue Sep 18 08:21:24 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tosecurityuserui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qlabel.h>
+#include <qcombobox.h>
+#include <qlineedit.h>
+#include <qtabwidget.h>
+#include <qcheckbox.h>
+#include <qframe.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "toeditwidget.h"
+
+/*
+ *  Constructs a toSecurityUserUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toSecurityUserUI::toSecurityUserUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toSecurityUserUI" );
+    toSecurityUserUILayout = new QGridLayout( this, 1, 1, 11, 6, "toSecurityUserUILayout"); 
+
+    NameLabel = new QLabel( this, "NameLabel" );
+
+    toSecurityUserUILayout->addWidget( NameLabel, 0, 0 );
+
+    ProfileLabel = new QLabel( this, "ProfileLabel" );
+
+    toSecurityUserUILayout->addWidget( ProfileLabel, 0, 3 );
+
+    Profile = new QComboBox( FALSE, this, "Profile" );
+
+    toSecurityUserUILayout->addMultiCellWidget( Profile, 0, 0, 4, 5 );
+
+    Name = new QLineEdit( this, "Name" );
+
+    toSecurityUserUILayout->addMultiCellWidget( Name, 0, 0, 1, 2 );
+    Spacer4 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toSecurityUserUILayout->addItem( Spacer4, 6, 3 );
+
+    Authentication = new QTabWidget( this, "Authentication" );
+    Authentication->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, 0, 0, Authentication->sizePolicy().hasHeightForWidth() ) );
+
+    PasswordTab = new QWidget( Authentication, "PasswordTab" );
+    PasswordTabLayout = new QGridLayout( PasswordTab, 1, 1, 11, 6, "PasswordTabLayout"); 
+
+    TextLabel4 = new QLabel( PasswordTab, "TextLabel4" );
+
+    PasswordTabLayout->addWidget( TextLabel4, 0, 0 );
+
+    Password = new QLineEdit( PasswordTab, "Password" );
+    Password->setEchoMode( QLineEdit::Password );
+
+    PasswordTabLayout->addWidget( Password, 0, 1 );
+
+    Password2 = new QLineEdit( PasswordTab, "Password2" );
+    Password2->setEchoMode( QLineEdit::Password );
+
+    PasswordTabLayout->addWidget( Password2, 1, 1 );
+
+    TextLabel4_2 = new QLabel( PasswordTab, "TextLabel4_2" );
+
+    PasswordTabLayout->addWidget( TextLabel4_2, 1, 0 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    PasswordTabLayout->addItem( Spacer1, 1, 2 );
+
+    ExpirePassword = new QCheckBox( PasswordTab, "ExpirePassword" );
+
+    PasswordTabLayout->addWidget( ExpirePassword, 2, 0 );
+    Authentication->insertTab( PasswordTab, QString::fromLatin1("") );
+
+    ExternalTab = new QWidget( Authentication, "ExternalTab" );
+    ExternalTabLayout = new QGridLayout( ExternalTab, 1, 1, 11, 6, "ExternalTabLayout"); 
+
+    TextLabel3 = new QLabel( ExternalTab, "TextLabel3" );
+
+    ExternalTabLayout->addWidget( TextLabel3, 0, 0 );
+    Authentication->insertTab( ExternalTab, QString::fromLatin1("") );
+
+    GlobalTab = new QWidget( Authentication, "GlobalTab" );
+    GlobalTabLayout = new QGridLayout( GlobalTab, 1, 1, 11, 6, "GlobalTabLayout"); 
+
+    GlobalName = new QLineEdit( GlobalTab, "GlobalName" );
+
+    GlobalTabLayout->addWidget( GlobalName, 1, 0 );
+
+    TextLabel1 = new QLabel( GlobalTab, "TextLabel1" );
+
+    GlobalTabLayout->addWidget( TextLabel1, 0, 0 );
+    Spacer5 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    GlobalTabLayout->addItem( Spacer5, 2, 0 );
+    Authentication->insertTab( GlobalTab, QString::fromLatin1("") );
+
+    toSecurityUserUILayout->addMultiCellWidget( Authentication, 1, 1, 0, 5 );
+
+    TextLabel6_2 = new QLabel( this, "TextLabel6_2" );
+
+    toSecurityUserUILayout->addMultiCellWidget( TextLabel6_2, 3, 3, 3, 4 );
+
+    Locked = new QCheckBox( this, "Locked" );
+
+    toSecurityUserUILayout->addMultiCellWidget( Locked, 5, 5, 0, 5 );
+
+    TempSpace = new QComboBox( FALSE, this, "TempSpace" );
+
+    toSecurityUserUILayout->addWidget( TempSpace, 3, 5 );
+
+    Line1 = new QFrame( this, "Line1" );
+    Line1->setFrameStyle( QFrame::HLine | QFrame::Sunken );
+
+    toSecurityUserUILayout->addMultiCellWidget( Line1, 4, 4, 0, 5 );
+
+    TextLabel6 = new QLabel( this, "TextLabel6" );
+
+    toSecurityUserUILayout->addMultiCellWidget( TextLabel6, 3, 3, 0, 1 );
+
+    DefaultSpace = new QComboBox( FALSE, this, "DefaultSpace" );
+
+    toSecurityUserUILayout->addWidget( DefaultSpace, 3, 2 );
+
+    Line2 = new QFrame( this, "Line2" );
+    Line2->setFrameStyle( QFrame::HLine | QFrame::Sunken );
+
+    toSecurityUserUILayout->addMultiCellWidget( Line2, 2, 2, 0, 5 );
+    languageChange();
+    resize( QSize(560, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // tab order
+    setTabOrder( Name, Profile );
+    setTabOrder( Profile, Authentication );
+    setTabOrder( Authentication, Password );
+    setTabOrder( Password, Password2 );
+    setTabOrder( Password2, ExpirePassword );
+    setTabOrder( ExpirePassword, GlobalName );
+    setTabOrder( GlobalName, DefaultSpace );
+    setTabOrder( DefaultSpace, TempSpace );
+    setTabOrder( TempSpace, Locked );
+
+    // buddies
+    NameLabel->setBuddy( Name );
+    ProfileLabel->setBuddy( Profile );
+    TextLabel4->setBuddy( Password );
+    TextLabel4_2->setBuddy( Password2 );
+    TextLabel1->setBuddy( GlobalName );
+    TextLabel6_2->setBuddy( TempSpace );
+    TextLabel6->setBuddy( DefaultSpace );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toSecurityUserUI::~toSecurityUserUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toSecurityUserUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    NameLabel->setText( tr( "&Name" ) );
+    ProfileLabel->setText( tr( "P&rofile" ) );
+    TextLabel4->setText( tr( "Enter Password" ) );
+    TextLabel4_2->setText( tr( "Confirm Password" ) );
+    ExpirePassword->setText( tr( "Expire Password" ) );
+    Authentication->changeTab( PasswordTab, tr( "&Password" ) );
+    TextLabel3->setText( tr( "User authenticated by the operating system" ) );
+    Authentication->changeTab( ExternalTab, tr( "&External" ) );
+    TextLabel1->setText( tr( "&X.500 External Name" ) );
+    Authentication->changeTab( GlobalTab, tr( "&Global" ) );
+    TextLabel6_2->setText( tr( "&Temporary Tablespace" ) );
+    Locked->setText( tr( "&Account Locked" ) );
+    TextLabel6->setText( tr( "&Default Tablespace" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tosecurityuserui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurityuserui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurityuserui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,73 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tosecurityuserui.ui'
+**
+** Created: Tue Sep 18 08:21:24 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSECURITYUSERUI_H
+#define TOSECURITYUSERUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QLabel;
+class QComboBox;
+class QLineEdit;
+class QTabWidget;
+class QCheckBox;
+class QFrame;
+
+class toSecurityUserUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toSecurityUserUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toSecurityUserUI();
+
+    QLabel* NameLabel;
+    QLabel* ProfileLabel;
+    QComboBox* Profile;
+    QLineEdit* Name;
+    QTabWidget* Authentication;
+    QWidget* PasswordTab;
+    QLabel* TextLabel4;
+    QLineEdit* Password;
+    QLineEdit* Password2;
+    QLabel* TextLabel4_2;
+    QCheckBox* ExpirePassword;
+    QWidget* ExternalTab;
+    QLabel* TextLabel3;
+    QWidget* GlobalTab;
+    QLineEdit* GlobalName;
+    QLabel* TextLabel1;
+    QLabel* TextLabel6_2;
+    QCheckBox* Locked;
+    QComboBox* TempSpace;
+    QFrame* Line1;
+    QLabel* TextLabel6;
+    QComboBox* DefaultSpace;
+    QFrame* Line2;
+
+protected:
+    QGridLayout* toSecurityUserUILayout;
+    QSpacerItem* Spacer4;
+    QGridLayout* PasswordTabLayout;
+    QSpacerItem* Spacer1;
+    QGridLayout* ExternalTabLayout;
+    QGridLayout* GlobalTabLayout;
+    QSpacerItem* Spacer5;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOSECURITYUSERUI_H

Added: kde-extras/tora/branches/upstream/current/src/tosecurityuserui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosecurityuserui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosecurityuserui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,403 @@
+<!DOCTYPE UI><UI>
+<class>toSecurityUserUI</class>
+<include location="local">toeditwidget.h</include>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toSecurityUserUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>560</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>NameLabel</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Name</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Name</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="3" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ProfileLabel</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>P&amp;rofile</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Profile</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="4"  rowspan="1"  colspan="2" >
+            <class>QComboBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Profile</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="1"  rowspan="1"  colspan="2" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Name</cstring>
+            </property>
+        </widget>
+        <spacer row="6"  column="3" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer4</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="1"  column="0"  rowspan="1"  colspan="6" >
+            <class>QTabWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Authentication</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>7</hsizetype>
+                    <vsizetype>1</vsizetype>
+                </sizepolicy>
+            </property>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>PasswordTab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>&amp;Password</string>
+                </attribute>
+                <grid>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget row="0"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel4</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>Enter Password</string>
+                        </property>
+                        <property>
+                            <name>buddy</name>
+                            <cstring>Password</cstring>
+                        </property>
+                    </widget>
+                    <widget row="0"  column="1" >
+                        <class>QLineEdit</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Password</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>echoMode</name>
+                            <enum>Password</enum>
+                        </property>
+                    </widget>
+                    <widget row="1"  column="1" >
+                        <class>QLineEdit</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>Password2</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>echoMode</name>
+                            <enum>Password</enum>
+                        </property>
+                    </widget>
+                    <widget row="1"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel4_2</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>Confirm Password</string>
+                        </property>
+                        <property>
+                            <name>buddy</name>
+                            <cstring>Password2</cstring>
+                        </property>
+                    </widget>
+                    <spacer row="1"  column="2" >
+                        <property>
+                            <name>name</name>
+                            <cstring>Spacer1</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>orientation</name>
+                            <enum>Horizontal</enum>
+                        </property>
+                        <property stdset="1">
+                            <name>sizeType</name>
+                            <enum>Expanding</enum>
+                        </property>
+                        <property>
+                            <name>sizeHint</name>
+                            <size>
+                                <width>20</width>
+                                <height>20</height>
+                            </size>
+                        </property>
+                    </spacer>
+                    <widget row="2"  column="0" >
+                        <class>QCheckBox</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>ExpirePassword</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>Expire Password</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>ExternalTab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>&amp;External</string>
+                </attribute>
+                <grid>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget row="0"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel3</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>User authenticated by the operating system</string>
+                        </property>
+                    </widget>
+                </grid>
+            </widget>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>GlobalTab</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>&amp;Global</string>
+                </attribute>
+                <grid>
+                    <property stdset="1">
+                        <name>margin</name>
+                        <number>11</number>
+                    </property>
+                    <property stdset="1">
+                        <name>spacing</name>
+                        <number>6</number>
+                    </property>
+                    <widget row="1"  column="0" >
+                        <class>QLineEdit</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>GlobalName</cstring>
+                        </property>
+                    </widget>
+                    <widget row="0"  column="0" >
+                        <class>QLabel</class>
+                        <property stdset="1">
+                            <name>name</name>
+                            <cstring>TextLabel1</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>text</name>
+                            <string>&amp;X.500 External Name</string>
+                        </property>
+                        <property>
+                            <name>buddy</name>
+                            <cstring>GlobalName</cstring>
+                        </property>
+                    </widget>
+                    <spacer row="2"  column="0" >
+                        <property>
+                            <name>name</name>
+                            <cstring>Spacer5</cstring>
+                        </property>
+                        <property stdset="1">
+                            <name>orientation</name>
+                            <enum>Vertical</enum>
+                        </property>
+                        <property stdset="1">
+                            <name>sizeType</name>
+                            <enum>Expanding</enum>
+                        </property>
+                        <property>
+                            <name>sizeHint</name>
+                            <size>
+                                <width>20</width>
+                                <height>20</height>
+                            </size>
+                        </property>
+                    </spacer>
+                </grid>
+            </widget>
+        </widget>
+        <widget row="3"  column="3"  rowspan="1"  colspan="2" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel6_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Temporary Tablespace</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>TempSpace</cstring>
+            </property>
+        </widget>
+        <widget row="5"  column="0"  rowspan="1"  colspan="6" >
+            <class>QCheckBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Locked</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Account Locked</string>
+            </property>
+        </widget>
+        <widget row="3"  column="5" >
+            <class>QComboBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TempSpace</cstring>
+            </property>
+        </widget>
+        <widget row="4"  column="0"  rowspan="1"  colspan="6" >
+            <class>Line</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Line1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+        </widget>
+        <widget row="3"  column="0"  rowspan="1"  colspan="2" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel6</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Default Tablespace</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>DefaultSpace</cstring>
+            </property>
+        </widget>
+        <widget row="3"  column="2" >
+            <class>QComboBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>DefaultSpace</cstring>
+            </property>
+        </widget>
+        <widget row="2"  column="0"  rowspan="1"  colspan="6" >
+            <class>Line</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Line2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<tabstops>
+    <tabstop>Name</tabstop>
+    <tabstop>Profile</tabstop>
+    <tabstop>Authentication</tabstop>
+    <tabstop>Password</tabstop>
+    <tabstop>Password2</tabstop>
+    <tabstop>ExpirePassword</tabstop>
+    <tabstop>GlobalName</tabstop>
+    <tabstop>DefaultSpace</tabstop>
+    <tabstop>TempSpace</tabstop>
+    <tabstop>Locked</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tosession.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosession.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosession.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,713 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "toresultbar.h"
+#include "toresultcombo.h"
+#include "toresultlock.h"
+#include "toresultlong.h"
+#include "toresultstats.h"
+#include "toresultview.h"
+#include "tosession.h"
+#include "tosgastatement.h"
+#include "tosgatrace.h"
+#include "tosql.h"
+#include "totool.h"
+#include "towaitevents.h"
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qpopupmenu.h>
+#include <qsplitter.h>
+#include <qtimer.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qworkspace.h>
+#include <qworkspace.h>
+
+#include "tosession.moc"
+
+#include "icons/add.xpm"
+#include "icons/clock.xpm"
+#include "icons/kill.xpm"
+#include "icons/minus.xpm"
+#include "icons/noclock.xpm"
+#include "icons/refresh.xpm"
+#include "icons/tosession.xpm"
+#include "icons/filter.xpm"
+
+class toSessionTool : public toTool
+{
+protected:
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(tosession_xpm);
+    }
+public:
+    toSessionTool()
+            : toTool(210, "Sessions")
+    { }
+    virtual const char *menuItem()
+    {
+        return "Sessions";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        if (toIsOracle(connection))
+            return new toSession(parent, connection);
+#ifdef TOSESSIONMYSQL_H
+
+        else if (toIsMySQL(connection))
+            return new toSessionMySQL(*this, parent, connection);
+#endif
+
+        return NULL;
+    }
+    virtual bool canHandle(toConnection &conn)
+    {
+        return toIsOracle(conn)
+#ifdef TOSESSIONMYSQL_H
+               || toIsMySQL(conn)
+#endif
+               ;
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toSessionTool SessionTool;
+
+static toSQL SQLConnectInfo("toSession:ConnectInfo",
+                            "select authentication_type,osuser,network_service_banner\n"
+                            "  from v$session_connect_info where sid = :f1<char[101]>",
+                            "Get connection info for a session");
+static toSQL SQLLockedObject("toSession:LockedObject",
+                             "select b.Object_Name \"Object Name\",\n"
+                             "       b.Object_Type \"Type\",\n"
+                             "       DECODE(a.locked_mode,0,'None',1,'Null',2,'Row-S',\n"
+                             "                            3,'Row-X',4,'Share',5,'S/Row-X',\n"
+                             "                            6,'Exclusive',a.Locked_Mode) \"Locked Mode\"\n"
+                             "  from v$locked_object a,sys.all_objects b\n"
+                             " where a.object_id = b.object_id\n"
+                             "   and a.session_id = :f1<char[101]>",
+                             "Display info about objects locked by this session");
+static toSQL SQLOpenCursors("toSession:OpenCursor",
+                            "select SQL_Text \"SQL\", Address||':'||Hash_Value \" Address\"\n"
+                            "  from v$open_cursor where sid = :f1<char[101]>",
+                            "Display open cursors of this session");
+static toSQL SQLSessionWait(TO_SESSION_WAIT,
+                            "select sysdate,\n"
+                            "       cpu*10 \"CPU\",\n"
+                            "       parallel*10 \"Parallel execution\",\n"
+                            "       filewrite*10 \"DB File Write\",\n"
+                            "       writecomplete*10 \"Write Complete\",\n"
+                            "       fileread*10 \"DB File Read\",\n"
+                            "       singleread*10 \"DB Single File Read\",\n"
+                            "       control*10 \"Control File I/O\",\n"
+                            "       direct*10 \"Direct I/O\",\n"
+                            "       log*10 \"Log file\",\n"
+                            "       net*10 \"SQL*Net\",\n"
+                            "       (total-parallel-filewrite-writecomplete-fileread-singleread-control-direct-log-net)*10 \"Other\"\n"
+                            "  from (select SUM(DECODE(SUBSTR(event,1,2),'PX',time_waited,0))-SUM(DECODE(event,'PX Idle Wait',time_waited,0)) parallel,\n"
+                            "               SUM(DECODE(event,'db file parallel write',time_waited,'db file single write',time_waited,0)) filewrite,\n"
+                            "               SUM(DECODE(event,'write complete waits',time_waited,NULL)) writecomplete,\n"
+                            "               SUM(DECODE(event,'db file parallel read',time_waited,'db file sequential read',time_waited,0)) fileread,\n"
+                            "               SUM(DECODE(event,'db file scattered read',time_waited,0)) singleread,\n"
+                            "               SUM(DECODE(SUBSTR(event,1,12),'control file',time_waited,0)) control,\n"
+                            "               SUM(DECODE(SUBSTR(event,1,11),'direct path',time_waited,0)) direct,\n"
+                            "               SUM(DECODE(SUBSTR(event,1,3),'log',time_waited,0)) log,\n"
+                            "               SUM(DECODE(SUBSTR(event,1,7),'SQL*Net',time_waited,0))-SUM(DECODE(event,'SQL*Net message from client',time_waited,0)) net,\n"
+                            "      SUM(DECODE(event,'PX Idle Wait',0,'SQL*Net message from client',0,time_waited)) total\n"
+                            "          from v$session_event where sid in (select b.sid from v$session a,v$session b where a.sid = :f1<char[101]> and a.audsid = b.audsid)),\n"
+                            "       (select value*10 cpu from v$sesstat a\n"
+                            "         where statistic# = 12 and a.sid in (select b.sid from v$session a,v$session b where a.sid = :f1<char[101]> and a.audsid = b.audsid))",
+                            "Used to generate chart for session wait time.");
+static toSQL SQLSessionIO(TO_SESSION_IO,
+                          "select sysdate,\n"
+                          "       sum(block_gets) \"Block gets\",\n"
+                          "       sum(consistent_gets) \"Consistent gets\",\n"
+                          "       sum(physical_reads) \"Physical reads\",\n"
+                          "       sum(block_changes) \"Block changes\",\n"
+                          "       sum(consistent_changes) \"Consistent changes\"\n"
+                          "  from v$sess_io where sid in (select b.sid from v$session a,v$session b where a.sid = :f1<char[101]> and a.audsid = b.audsid)",
+                          "Display chart of session generated I/O");
+
+static toSQL SQLAccessedObjects("toSession:AccessedObjects",
+                                "SELECT owner,\n"
+                                "       OBJECT,\n"
+                                "       TYPE FROM v$access\n"
+                                " WHERE sid=:f1<CHAR [101]>\n"
+                                " ORDER BY owner,\n"
+                                "   OBJECT,\n"
+                                "   TYPE",
+                                "Which objects are accessed by the current session");
+
+static toSQL SQLSessions("toSession:ListSession",
+                         "SELECT a.Sid \"-Id\",\n"
+                         "       a.Serial# \"-Serial#\",\n"
+                         "       a.SchemaName \"Schema\",\n"
+                         "       a.Status \"Status\",\n"
+                         "       a.Server \"Server\",\n"
+                         "       a.OsUser \"Osuser\",\n"
+                         "       a.Machine \"Machine\",\n"
+                         "       a.Program \"Program\",\n"
+                         "       a.Type \"Type\",\n"
+                         "       a.Module \"Module\",\n"
+                         "       a.Action \"Action\",\n"
+                         "       a.Client_Info \"Client Info\",\n"
+                         "       b.Block_Gets \"-Block Gets\",\n"
+                         "       b.Consistent_Gets \"-Consistent Gets\",\n"
+                         "       b.Physical_Reads \"-Physical Reads\",\n"
+                         "       b.Block_Changes \"-Block Changes\",\n"
+                         "       b.Consistent_Changes \"-Consistent Changes\",\n"
+                         "       c.Value*10 \"-CPU (ms)\",\n"
+                         "       a.last_call_et \"Last SQL\",\n"
+                         "       a.Process \"-Client PID\",\n"
+                         "       e.SPid \"-Server PID\",\n"
+                         "       d.sql_text \"Current statement\",\n"
+                         "       a.SQL_Address||':'||a.SQL_Hash_Value \" SQL Address\",\n"
+                         "       a.Prev_SQL_Addr||':'||a.Prev_Hash_Value \" Prev SQl Address\"\n"
+                         "  FROM v$session a,\n"
+                         "       v$sess_io b,\n"
+                         "       v$sesstat c,\n"
+                         "       v$sql d,\n"
+                         "       v$process e\n"
+                         " WHERE a.sid = b.sid(+)\n"
+                         "   AND a.sid = c.sid(+) AND (c.statistic# = 12 OR c.statistic# IS NULL)\n"
+                         "   AND a.sql_address = d.address(+) AND a.sql_hash_value = d.hash_value(+)\n"
+                         "   AND (d.child_number = 0 OR d.child_number IS NULL)\n"
+                         "   AND a.paddr = e.addr(+)\n"
+                         "%1 ORDER BY a.Sid",
+                         "List sessions, must have same number of culumns and the first and last 2 must be the same");
+
+toSession::toSession(QWidget *main, toConnection &connection)
+        : toToolWidget(SessionTool, "session.html", main, connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Session manager"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Update sessionlist"),
+                    tr("Update sessionlist"),
+                    this, SLOT(refresh(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    Select = new toResultCombo(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Select->setSelected(tr("Only active users"));
+    Select->additionalItem(tr("Only active users"));
+    Select->additionalItem(tr("All"));
+    Select->additionalItem(tr("No background"));
+    Select->additionalItem(tr("No system"));
+    Select->query(toSQL::sql(toSQL::TOSQL_USERLIST));
+
+    connect(Select, SIGNAL(activated(int)), this, SLOT(refresh()));
+
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(clock_xpm)),
+                    tr("Enable timed statistics"),
+                    tr("Enable timed statistics"),
+                    this, SLOT(enableStatistics(void)),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(noclock_xpm)),
+                    tr("Disable timed statistics"),
+                    tr("Disable timed statistics"),
+                    this, SLOT(disableStatistics(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(kill_xpm)),
+                    tr("Disconnect selected session"),
+                    tr("Disconnect selected session"),
+                    this, SLOT(disconnectSession(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    new QLabel(tr("Refresh") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    connect(Refresh = toRefreshCreate(toolbar, TO_KDE_TOOLBAR_WIDGET), SIGNAL(activated(const QString &)), this, SLOT(changeRefresh(const QString &)));
+    toolbar->addSeparator();
+
+    QToolButton *btn = new QToolButton(toolbar);
+    btn->setToggleButton(true);
+    btn->setIconSet(QPixmap(const_cast<const char**>(filter_xpm)));
+    connect(btn, SIGNAL(toggled(bool)), this, SLOT(excludeSelection(bool)));
+    QToolTip::add
+        (btn, tr("Exclude selected sessions"));
+    new QToolButton(QPixmap(const_cast<const char**>(add_xpm)),
+                    tr("Select all sessions"),
+                    tr("Select all sessions"),
+                    this, SLOT(selectAll(void)),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(minus_xpm)),
+                    tr("Deselect all sessions"),
+                    tr("Deselect all sessions"),
+                    this, SLOT(selectNone(void)),
+                    toolbar);
+
+    toolbar->setStretchableWidget(Total = new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    Total->setAlignment(AlignRight | AlignVCenter | ExpandTabs);
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    QSplitter *splitter = new QSplitter(Vertical, this);
+    Sessions = new toSessionList(splitter);
+
+    QValueList<int> list;
+    list.append(75);
+    splitter->setSizes(list);
+
+    Sessions->setReadAll(true);
+    connect(Sessions, SIGNAL(done()), this, SLOT(done()));
+
+    ResultTab = new QTabWidget(splitter);
+
+    CurrentStatement = new toSGAStatement(ResultTab);
+    ResultTab->addTab(CurrentStatement, tr("Current Statement"));
+
+    QString sql = toSQL::string(TOSQL_LONGOPS, connection);
+    sql += " AND b.sid = :sid<char[101]> AND b.serial# = :ser<char[101]>";
+    LongOps = new toResultLong(true, false, toQuery::Background, ResultTab);
+    LongOps->setSQL(sql);
+    ResultTab->addTab(LongOps, tr("Long ops"));
+
+    StatisticSplitter = new QSplitter(Horizontal, ResultTab);
+    SessionStatistics = new toResultStats(false, 0, StatisticSplitter);
+    WaitBar = new toResultBar(StatisticSplitter);
+    WaitBar->setSQL(SQLSessionWait);
+    WaitBar->setTitle(tr("Session wait states"));
+    WaitBar->setYPostfix(QString::fromLatin1("ms/s"));
+    IOBar = new toResultBar(StatisticSplitter);
+    IOBar->setSQL(SQLSessionIO);
+    IOBar->setTitle(tr("Session I/O"));
+    IOBar->setYPostfix(QString::fromLatin1("blocks/s"));
+    ResultTab->addTab(StatisticSplitter, tr("Statistics"));
+
+    Waits = new toWaitEvents(0, ResultTab, "waits");
+    ResultTab->addTab(Waits, tr("Wait events"));
+
+    ConnectInfo = new toResultLong(true, false, toQuery::Background, ResultTab);
+    ConnectInfo->setSQL(SQLConnectInfo);
+    ResultTab->addTab(ConnectInfo, tr("Connect Info"));
+    PendingLocks = new toResultLock(ResultTab);
+    ResultTab->addTab(PendingLocks, tr("Pending Locks"));
+    LockedObjects = new toResultLong(false, false, toQuery::Background, ResultTab);
+    ResultTab->addTab(LockedObjects, tr("Locked Objects"));
+    LockedObjects->setSQL(SQLLockedObject);
+    AccessedObjects = new toResultLong(false, false, toQuery::Background, ResultTab);
+    AccessedObjects->setSQL(SQLAccessedObjects);
+    ResultTab->addTab(AccessedObjects, tr("Accessing"));
+
+    PreviousStatement = new toSGAStatement(ResultTab);
+    ResultTab->addTab(PreviousStatement, tr("Previous Statement"));
+
+    OpenSplitter = new QSplitter(Horizontal, ResultTab);
+    ResultTab->addTab(OpenSplitter, tr("Open Cursors"));
+    OpenCursors = new toResultLong(false, true, toQuery::Background, OpenSplitter);
+    OpenCursors->setSQL(SQLOpenCursors);
+    OpenStatement = new toSGAStatement(OpenSplitter);
+
+    Sessions->setSelectionMode(QListView::Single);
+    OpenCursors->setSelectionMode(QListView::Single);
+    connect(Sessions, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeItem(QListViewItem *)));
+    connect(OpenCursors, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeCursor(QListViewItem *)));
+    connect(ResultTab, SIGNAL(currentChanged(QWidget *)),
+            this, SLOT(changeTab(QWidget *)));
+
+    try
+    {
+        connect(timer(), SIGNAL(timeout(void)), this, SLOT(refreshTabs(void)));
+        toRefreshParse(timer());
+    }
+    TOCATCH
+    CurrentTab = StatisticSplitter;
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+    refresh();
+
+    setFocusProxy(Sessions);
+}
+
+bool toSession::canHandle(toConnection &conn)
+{
+    return toIsOracle(conn);
+}
+
+void toSession::excludeSelection(bool tgl)
+{
+    toSessionList::sessionFilter *filt = dynamic_cast<toSessionList::sessionFilter *>(Sessions->filter());
+    if (filt)
+    {
+        filt->setShow(!tgl);
+        refresh();
+    }
+}
+
+void toSession::selectAll(void)
+{
+    for (QListViewItem *item = Sessions->firstChild();item;item = item->nextSibling())
+    {
+        toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(item);
+        if (chk)
+            chk->setOn(true);
+    }
+}
+
+void toSession::selectNone(void)
+{
+    for (QListViewItem *item = Sessions->firstChild();item;item = item->nextSibling())
+    {
+        toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(item);
+        if (chk)
+            chk->setOn(false);
+    }
+}
+
+QListViewItem *toSessionList::createItem(QListViewItem *last, const QString &str)
+{
+    sessionFilter *filt = dynamic_cast<sessionFilter *>(filter());
+    if (filt && filt->show())
+        return new toResultViewCheck(this, last, str, QCheckListItem::CheckBox);
+    else
+        return new toResultViewItem(this, last, str);
+}
+
+void toSessionList::updateFilter()
+{
+    sessionFilter *filt = dynamic_cast<sessionFilter *>(filter());
+    if (filt)
+        filt->updateList(this);
+}
+
+bool toSessionList::sessionFilter::check(const QListViewItem *item)
+{
+    if (!OnlyDatabase.isEmpty())
+    {
+        if (OnlyDatabase == "/")
+        {
+            if (item->text(4) == "Sleep")
+                return false;
+        }
+        else if (OnlyDatabase != item->text(3))
+            return false;
+    }
+
+    sessionID serial(item->text(0).toInt(), item->text(1).toInt());
+    bool checked = false;
+    for (std::list<sessionID>::iterator i = Serials.begin();i != Serials.end();i++)
+        if ((*i) == serial)
+        {
+            checked = true;
+            break;
+        }
+    const toResultViewCheck *chk = dynamic_cast<const toResultViewCheck *>(item);
+    if (chk)
+    {
+        const_cast<toResultViewCheck *>(chk)->setOn(checked);
+        return true;
+    }
+    return !checked;
+}
+
+void toSessionList::sessionFilter::updateList(toResultLong *lst)
+{
+    bool first = true;
+    for (QListViewItem *item = lst->firstChild();item;item = item->nextSibling())
+    {
+        toResultViewCheck * chk = dynamic_cast<toResultViewCheck *>(item);
+        if (chk)
+        {
+            if (first)
+            {
+                Serials.clear();
+                first = false;
+            }
+            if (chk->isOn())
+                Serials.insert(Serials.end(), sessionID(item->text(0).toInt(), item->text(1).toInt()));
+        }
+    }
+}
+
+void toSession::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Session|Refresh")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(clock_xpm)), tr("Enable timed statistics"),
+                                 this, SLOT(enableStatistics(void)));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(noclock_xpm)), tr("Disable timed statistics"),
+                                 this, SLOT(disableStatistics(void)));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(kill_xpm)), tr("Disconnect session"),
+                                 this, SLOT(disconnectSession(void)));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(tr("&Change Refresh"), Refresh, SLOT(setFocus(void)),
+                                 toKeySequence(tr("Alt+R", "Session|Change refresh")));
+            toMainWidget()->menuBar()->insertItem(tr("&Session"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+void toSession::refresh(void)
+{
+    try
+    {
+        QListViewItem *item = Sessions->selectedItem();
+        if (item)
+        {
+            Session = item->text(0);
+            Serial = item->text(1);
+        }
+        else
+            Session = Serial = QString::null;
+        QString sql = toSQL::string(SQLSessions, connection());
+        QString extra;
+        if (Select->currentItem() == 0)
+            extra = "   AND a.Type != 'BACKGROUND' AND a.Status != 'INACTIVE'\n";
+        else if (Select->currentItem() == 1)
+            ; // Do nothing
+        else if (Select->currentItem() == 2)
+            extra = "   AND a.Type != 'BACKGROUND'\n";
+        else if (Select->currentItem() == 3)
+            extra = "   AND a.SchemaName NOT IN ('SYS','SYSTEM')\n";
+        else
+            extra = "   AND a.SchemaName = '" + Select->currentText() + "'\n";
+        Sessions->setSQL(sql.arg(extra));
+        Sessions->refresh();
+    }
+    TOCATCH
+}
+
+void toSession::done(void)
+{
+    int system = 0, total = 0, active = 0;
+    for (QListViewItem *item = Sessions->firstChild();item;item = item->nextSibling())
+    {
+        if (item->text(0) == Session &&
+                item->text(1) == Serial)
+        {
+            Sessions->setSelected(item, true);
+        }
+        total++;
+        if (item->text(8) != "USER")
+            system++;
+        else if (item->text(3) == "ACTIVE")
+            active++;
+    }
+    Total->setText(QString("Total <B>%1</B> (Active <B>%3</B>, System <B>%2</B>)").arg(total).arg(system).arg(active));
+}
+
+void toSession::enableStatistics(bool enable)
+{
+    QString sql;
+    if (enable)
+        sql = QString::fromLatin1("ALTER SYSTEM SET TIMED_STATISTICS = TRUE");
+    else
+        sql = QString::fromLatin1("ALTER SYSTEM SET TIMED_STATISTICS = FALSE");
+    try
+    {
+        connection().execute(sql);
+    }
+    catch (...)
+    {
+        toStatusMessage(tr("No access to timed statistics flags"));
+    }
+}
+
+void toSession::changeTab(QWidget *tab)
+{
+    if (tab != CurrentTab)
+    {
+        CurrentTab = tab;
+        QListViewItem *item = Sessions->selectedItem();
+        if (item)
+        {
+            if (CurrentTab == StatisticSplitter)
+            {
+                int ses = item->text(0).toInt();
+                try
+                {
+                    SessionStatistics->changeSession(ses);
+                }
+                TOCATCH
+            }
+            else if (CurrentTab == ConnectInfo)
+            {
+                ConnectInfo->clearParams();
+                ConnectInfo->changeParams(item->text(0));
+            }
+            else if (CurrentTab == LongOps)
+            {
+                LongOps->clearParams();
+                LongOps->changeParams(item->text(0), item->text(1));
+            }
+            else if (CurrentTab == PendingLocks)
+            {
+                PendingLocks->clearParams();
+                PendingLocks->query(item->text(0));
+            }
+            else if (CurrentTab == OpenSplitter)
+            {
+                QListViewItem *openitem = OpenCursors->currentItem();
+                QString address;
+                if (openitem)
+                    address = openitem->text(2);
+                OpenCursors->clearParams();
+                OpenCursors->changeParams(item->text(0));
+                if (!address.isEmpty())
+                    for (openitem = OpenCursors->firstChild();
+                            openitem;openitem = openitem->nextSibling())
+                        if (address == openitem->text(2))
+                        {
+                            OpenCursors->setSelected(item, true);
+                            break;
+                        }
+            }
+            else if (CurrentTab == CurrentStatement)
+            {
+                CurrentStatement->changeAddress(item->text(Sessions->columns() + 0));
+            }
+            else if (CurrentTab == AccessedObjects)
+            {
+                AccessedObjects->clearParams();
+                AccessedObjects->changeParams(item->text(0));
+            }
+            else if (CurrentTab == LockedObjects)
+            {
+                LockedObjects->clearParams();
+                LockedObjects->changeParams(item->text(0));
+            }
+            else if (CurrentTab == PreviousStatement)
+            {
+                PreviousStatement->changeAddress(item->text(Sessions->columns() + 1));
+            }
+        }
+    }
+}
+
+void toSession::changeCursor(QListViewItem *item)
+{
+    if (item)
+        OpenStatement->changeAddress(item->text(2));
+}
+
+void toSession::disconnectSession(void)
+{
+    QListViewItem *item = Sessions->selectedItem();
+    if (item)
+    {
+        QString sess = QString::fromLatin1("'");
+        sess.append(item->text(0));
+        sess.append(QString::fromLatin1(","));
+        sess.append(item->text(1));
+        sess.append(QString::fromLatin1("'"));
+        QString str(tr("Let current transaction finish before disconnecting session?"));
+        QString sql;
+        switch (TOMessageBox::warning(this, tr("Commit work?"), str, tr("&Yes"), tr("&No"), tr("Cancel")))
+        {
+        case 0:
+            sql = QString::fromLatin1("ALTER SYSTEM DISCONNECT SESSION ");
+            sql.append(sess);
+            sql.append(QString::fromLatin1(" POST_TRANSACTION"));
+            break;
+        case 1:
+            sql = QString::fromLatin1("ALTER SYSTEM KILL SESSION ");
+            sql.append(sess);
+            break;
+        case 2:
+            return ;
+        }
+        try
+        {
+            connection().execute(sql);
+        }
+        TOCATCH
+    }
+}
+
+void toSession::changeRefresh(const QString &str)
+{
+    try
+    {
+        toRefreshParse(timer(), str);
+    }
+    TOCATCH
+}
+
+void toSession::changeItem(QListViewItem *item)
+{
+    if (item && LastSession != item->text(0))
+    {
+        if (!item->text(0).isEmpty())
+        {
+            WaitBar->changeParams(item->text(0));
+            IOBar->changeParams(item->text(0));
+            Waits->setSession(item->text(0).toInt());
+        }
+        LastSession = item->text(0);
+    }
+    QWidget *t = CurrentTab;
+    CurrentTab = NULL;
+    changeTab(t);
+}
+
+void toSession::refreshTabs(void)
+{
+    QListViewItem *item = Sessions->selectedItem();
+    if (item)
+        changeItem(item);
+}

Added: kde-extras/tora/branches/upstream/current/src/tosession.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosession.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosession.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,198 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSESSION_H
+#define TOSESSION_H
+
+#include "config.h"
+#include "totool.h"
+#include "toresultlong.h"
+
+#include <list>
+
+class QComboBox;
+class QListViewItem;
+class QSplitter;
+class QTabWidget;
+class toConnection;
+class toMain;
+class toPopupMenu;
+class toResultBar;
+class toResultCombo;
+class toResultLock;
+class toResultStats;
+class toSGAStatement;
+class toWaitEvents;
+
+#define TO_SESSION_WAIT "toSession:SessionWait"
+#define TO_SESSION_IO   "toSession:SessionIO"
+
+class toSessionList : public toResultLong
+{
+public:
+class sessionFilter : public toResultFilter
+    {
+        struct sessionID
+        {
+            int Session;
+            int Serial;
+            sessionID(int session, int serial)
+            {
+                Session = session;
+                Serial = serial;
+            }
+            bool operator == (const sessionID &ses) const
+            {
+                return Session == ses.Session && Serial == ses.Serial;
+            }
+        };
+        std::list<sessionID> Serials;
+        bool Show;
+        QString OnlyDatabase;
+    public:
+
+        sessionFilter()
+        {
+            Show = true;
+        }
+        sessionFilter(const std::list<sessionID> &serials, bool show)
+        {
+            Serials = serials;
+            Show = show;
+        }
+        virtual bool check(const QListViewItem *item);
+        virtual toResultFilter *clone(void)
+        {
+            return new sessionFilter(Serials, Show);
+        }
+        void setShow(bool show)
+        {
+            Show = show;
+        }
+        bool show()
+        {
+            return Show;
+        }
+        void onlyDatabase(const QString &db)
+        {
+            OnlyDatabase = db;
+        }
+        void updateList(toResultLong *lst);
+    };
+    toSessionList(QWidget *parent)
+            : toResultLong(false, false, toQuery::Background, parent)
+    {
+        setFilter(new sessionFilter);
+    }
+    virtual QListViewItem *createItem(QListViewItem *last, const QString &str);
+    void updateFilter(void);
+    virtual void refresh(void)
+    {
+        updateFilter();
+        toResultLong::refresh();
+    }
+};
+
+class toSession : public toToolWidget
+{
+    Q_OBJECT
+
+    toResultLong *Sessions;
+    QTabWidget *ResultTab;
+
+    QWidget *CurrentTab;
+
+    toResultCombo *Select;
+
+    toSGAStatement *CurrentStatement;
+    toSGAStatement *PreviousStatement;
+    toResultStats *SessionStatistics;
+    toResultLong *LongOps;
+    toResultLong *ConnectInfo;
+    toResultLong *LockedObjects;
+    toResultLock *PendingLocks;
+    toResultLong *AccessedObjects;
+    toResultBar *WaitBar;
+    toResultBar *IOBar;
+    toWaitEvents *Waits;
+    QSplitter *OpenSplitter;
+    QSplitter *StatisticSplitter;
+    toSGAStatement *OpenStatement;
+    toResultLong *OpenCursors;
+    QString LastSession;
+    QPopupMenu *ToolMenu;
+    QComboBox *Refresh;
+    QLabel *Total;
+
+    QString Session;
+    QString Serial;
+
+    void updateSchemas(void);
+    void enableStatistics(bool enable);
+
+public:
+    toSession(QWidget *parent, toConnection &connection);
+
+    virtual bool canHandle(toConnection &conn);
+public slots:
+    void changeTab(QWidget *tab);
+    void changeItem(QListViewItem *item);
+    void changeCursor(QListViewItem *item);
+    void changeRefresh(const QString &str);
+    void refresh(void);
+    void refreshTabs(void);
+    void enableStatistics(void)
+    {
+        enableStatistics(true);
+    }
+    void disableStatistics(void)
+    {
+        enableStatistics(false);
+    }
+    void disconnectSession(void);
+    void windowActivated(QWidget *widget);
+    void done(void);
+    void excludeSelection(bool);
+    void selectAll(void);
+    void selectNone(void);
+};
+
+#ifdef TOEXTENDED_MYSQL
+#include "tosessionmysql.h"
+#endif
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tosgastatement.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosgastatement.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosgastatement.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,120 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "toconf.h"
+#include "toresultfield.h"
+#include "toresultplan.h"
+#include "toresultplan.h"
+#include "toresultresources.h"
+#include "toresultview.h"
+#include "tosgastatement.h"
+#include "tosgatrace.h"
+#include "tosqlparse.h"
+#include "totool.h"
+
+#include "tosgastatement.moc"
+
+void toSGAStatement::viewResources(void)
+{
+    try
+    {
+        Resources->changeParams(Address);
+    }
+    catch (...)
+    {
+        toStatusMessage(tr("Couldn't find SQL statement in SGA"), false, false);
+    }
+}
+
+static toSQL SQLParsingSchema("toSGAStatement:ParsingSchema",
+                              "SELECT username\n"
+                              "  FROM v$sql a,\n"
+                              "       all_users b\n"
+                              " WHERE b.user_id = a.parsing_schema_id\n"
+                              "   AND a.address || ':' || a.hash_value = :f1<char[101]> AND a.child_number = 0",
+                              "Get the schema that parsed a statement");
+
+toSGAStatement::toSGAStatement(QWidget *parent)
+        : QTabWidget(parent)
+{
+    SQLText = new toResultField(this);
+    addTab(SQLText, tr("SQL"));
+    Plan = new toResultPlan(this);
+    addTab(Plan, tr("Execution plan"));
+    Resources = new toResultResources(this);
+    addTab(Resources, tr("Information"));
+    connect(this, SIGNAL(currentChanged(QWidget *)),
+            this, SLOT(changeTab(QWidget *)));
+    CurrentTab = SQLText;
+}
+
+void toSGAStatement::changeTab(QWidget *widget)
+{
+    try
+    {
+        CurrentTab = widget;
+        if (!Address.isEmpty())
+        {
+            if (CurrentTab == SQLText)
+            {
+                if (!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_INDENT_RO, "Yes").isEmpty())
+                    SQLText->setText(toSQLParse::indent(toSQLString(toCurrentConnection(this),
+                                                        Address)));
+                else
+                    SQLText->setText(toSQLString(toCurrentConnection(this), Address));
+            }
+            else if (CurrentTab == Plan)
+            {
+                Plan->query(toSQLString(toCurrentConnection(this), Address),
+                            toQuery::readQuery(toCurrentConnection(this),
+                                               SQLParsingSchema, Address));
+            }
+            else if (CurrentTab == Resources)
+                viewResources();
+        }
+    }
+    TOCATCH
+}
+
+void toSGAStatement::changeAddress(const QString &str)
+{
+    Address = str;
+    changeTab(CurrentTab);
+}

Added: kde-extras/tora/branches/upstream/current/src/tosgastatement.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosgastatement.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosgastatement.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,100 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSGASTATEMENT_H
+#define TOSGASTATEMENT_H
+
+#include "config.h"
+
+#include <qtabwidget.h>
+
+class QComboBox;
+class QTabWidget;
+class toResultField;
+class toResultItem;
+class toResultPlan;
+class toResultView;
+
+/** This widget displays information about a statement in the Oracle SGA. To get an
+ * address use the @ref toSQLToAddress function.
+ */
+
+class toSGAStatement : public QTabWidget
+{
+    Q_OBJECT
+    /** The SQL run.
+     */
+    toResultField *SQLText;
+    /** Tab widget
+     */
+    QWidget *CurrentTab;
+    /** Resources used by the statement.
+     */
+    toResultItem *Resources;
+    /** Address of the statement.
+     */
+    QString Address;
+    /** Execution plan of the statement.
+     */
+    toResultPlan *Plan;
+
+    /** Display resources of statement.
+     */
+    void viewResources(void);
+private slots:
+    /** Change the displayed tab.
+     */
+    void changeTab(QWidget *widget);
+public:
+    /** Create widget.
+     * @param parent Parent widget.
+     */
+    toSGAStatement(QWidget *parent);
+public slots:
+    /** Display another statement.
+     * @param address Address of the statement to display.
+     */
+    virtual void changeAddress(const QString &address);
+    /** Update the contents of this widget.
+     */
+    void refresh(void)
+    {
+        changeTab(CurrentTab);
+    }
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tosgatrace.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosgatrace.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosgatrace.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,425 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "toresultcombo.h"
+#include "toresultlong.h"
+#include "toresultresources.h"
+#include "toresultview.h"
+#include "tosgastatement.h"
+#include "tosgatrace.h"
+#include "tosql.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qmainwindow.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qpixmap.h>
+#include <qpopupmenu.h>
+#include <qsplitter.h>
+#include <qtabwidget.h>
+#include <qtimer.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qworkspace.h>
+
+#include "tosgatrace.moc"
+
+#include "icons/refresh.xpm"
+#include "icons/tosgatrace.xpm"
+
+#define CONF_AUTO_UPDATE    "AutoUpdate"
+
+class toSGATracePrefs : public QGroupBox, public toSettingTab
+{
+    QCheckBox* AutoUpdate;
+    toTool *Tool;
+
+public:
+    toSGATracePrefs(toTool *tool, QWidget* parent = 0, const char* name = 0)
+            : QGroupBox(1, Horizontal, parent, name), toSettingTab("trace.html"), Tool(tool)
+    {
+        setTitle(qApp->translate("toSGATracePrefs", "SGA Trace"));
+
+        AutoUpdate = new QCheckBox(this, "AutoRefresh");
+        AutoUpdate->setText(qApp->translate("toSGATracePrefs", "&Auto update"));
+        QToolTip::add
+            (AutoUpdate, qApp->translate("toSGATracePrefs", "Update automatically after change of schema."));
+
+        if (!Tool->config(CONF_AUTO_UPDATE, "Yes").isEmpty())
+            AutoUpdate->setChecked(true);
+    }
+    virtual void saveSetting(void)
+    {
+        if (AutoUpdate->isChecked())
+            Tool->setConfig(CONF_AUTO_UPDATE, "Yes");
+        else
+            Tool->setConfig(CONF_AUTO_UPDATE, "");
+    }
+};
+
+class toSGATraceTool : public toTool
+{
+protected:
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(tosgatrace_xpm);
+    }
+public:
+    toSGATraceTool()
+            : toTool(230, "SGA Trace")
+    { }
+    virtual const char *menuItem()
+    {
+        return "SGA Trace";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        return new toSGATrace(parent, connection);
+    }
+    virtual QWidget *configurationTab(QWidget *parent)
+    {
+        return new toSGATracePrefs(this, parent);
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toSGATraceTool SGATraceTool;
+
+toSGATrace::toSGATrace(QWidget *main, toConnection &connection)
+        : toToolWidget(SGATraceTool, "trace.html", main, connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("SGA trace"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Fetch statements in SGA"),
+                    tr("Fetch statements in SGA"),
+                    this, SLOT(refresh(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    new QLabel(tr("Schema") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Schema = new toResultCombo(toolbar);
+    Schema->additionalItem(tr("Any"));
+    Schema->setSelected(connection.user().upper());
+    Schema->query(toSQL::sql(toSQL::TOSQL_USERLIST));
+
+    connect(Schema, SIGNAL(activated(const QString &)), this, SLOT(changeSchema(const QString &)));
+
+    toolbar->addSeparator();
+    new QLabel(tr("Refresh") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    connect(Refresh = toRefreshCreate(toolbar, TO_KDE_TOOLBAR_WIDGET),
+            SIGNAL(activated(const QString &)), this, SLOT(changeRefresh(const QString &)));
+
+    toolbar->addSeparator();
+    new QLabel(tr("Type") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Type = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Type->insertItem(tr("SGA"));
+    Type->insertItem(tr("Long operations"));
+
+    toolbar->addSeparator();
+    new QLabel(tr("Selection") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Limit = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Limit->insertItem(tr("All"));
+    Limit->insertItem(tr("Unfinished"));
+    Limit->insertItem(tr("1 execution, 1 parse"));
+    Limit->insertItem(tr("Top executions"));
+    Limit->insertItem(tr("Top sorts"));
+    Limit->insertItem(tr("Top diskreads"));
+    Limit->insertItem(tr("Top buffergets"));
+    Limit->insertItem(tr("Top rows"));
+    Limit->insertItem(tr("Top sorts/exec"));
+    Limit->insertItem(tr("Top diskreads/exec"));
+    Limit->insertItem(tr("Top buffergets/exec"));
+    Limit->insertItem(tr("Top rows/exec"));
+    Limit->insertItem(tr("Top buffers/row"));
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    QSplitter *splitter = new QSplitter(Vertical, this);
+
+    Trace = new toResultLong(false, false, toQuery::Background, splitter);
+
+    QValueList<int> list;
+    list.append(75);
+    splitter->setSizes(list);
+
+    Trace->setReadAll(true);
+    Statement = new toSGAStatement(splitter);
+
+    Trace->setSelectionMode(QListView::Single);
+    connect(Trace, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeItem(QListViewItem *)));
+    CurrentSchema = connection.user().upper();
+    updateSchemas();
+
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    try
+    {
+        connect(timer(), SIGNAL(timeout(void)), this, SLOT(refresh(void)));
+        toRefreshParse(timer(), toConfigurationSingle::Instance().globalConfig(CONF_REFRESH, DEFAULT_REFRESH));
+    }
+    TOCATCH
+
+    setFocusProxy(Trace);
+}
+
+void toSGATrace::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "SGA Trace|Refresh")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(tr("Change &schema"),
+                                 Schema, SLOT(setFocus()),
+                                 toKeySequence(tr("Alt+S", "SGA Trace|Change schema")));
+            ToolMenu->insertItem(tr("Change &refresh"),
+                                 Refresh, SLOT(setFocus(void)),
+                                 toKeySequence(tr("Alt+R", "SGA Trace|Change refresh")));
+            ToolMenu->insertItem(tr("Change t&ype"),
+                                 Type, SLOT(setFocus()),
+                                 toKeySequence(tr("Alt+Y", "SGA Trace|Change type")));
+            toMainWidget()->menuBar()->insertItem(tr("&SGA Trace"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+void toSGATrace::changeRefresh(const QString &str)
+{
+    try
+    {
+        toRefreshParse(timer(), str);
+    }
+    TOCATCH
+}
+
+#define LARGE_BUFFER 4096
+
+void toSGATrace::changeSchema(const QString &str)
+{
+    if (str != tr("Any"))
+        CurrentSchema = str;
+    else
+        CurrentSchema = QString::null;
+    if (!SGATraceTool.config(CONF_AUTO_UPDATE, "Yes").isEmpty())
+        refresh();
+}
+
+static toSQL SQLSGATrace("toSGATrace:SGATrace",
+                         "SELECT a.SQL_Text \"SQL Text\",\n"
+                         "       a.First_Load_Time \"First Load Time\",\n"
+                         "       b.username \"Parsing Schema\",\n"
+                         "       a.Parse_Calls \"Parse Calls\",\n"
+                         "       a.Executions \"Executions\",\n"
+                         "       a.Sorts \"Sorts\",\n"
+                         "       a.Disk_Reads \"Disk Reads\",\n"
+                         "       a.Buffer_Gets \"Buffer Gets\",\n"
+                         "       a.Rows_Processed \"Rows\",\n"
+                         "       DECODE(a.Executions,0,'N/A',ROUND(a.Sorts/a.Executions,3)) \"Sorts/Exec\",\n"
+                         "       DECODE(a.Executions,0,'N/A',ROUND(a.Disk_Reads/a.Executions,3)) \"Disk/Exec\",\n"
+                         "       DECODE(a.Executions,0,'N/A',ROUND(a.Buffer_Gets/a.Executions,3)) \"Buffers/Exec\",\n"
+                         "       DECODE(a.Executions,0,'N/A',ROUND(a.Rows_Processed/a.Executions,3)) \"Rows/Exec\",\n"
+                         "       DECODE(a.Rows_Processed,0,'N/A',ROUND(a.Sorts/a.Rows_Processed,3)) \"Sorts/Rows\",\n"
+                         "       DECODE(a.Rows_Processed,0,'N/A',ROUND(a.Disk_Reads/a.Rows_Processed,3)) \"Disk/Rows\",\n"
+                         "       DECODE(a.Rows_Processed,0,'N/A',ROUND(a.Buffer_Gets/a.Rows_Processed,3)) \"Buffers/Rows\",\n"
+                         "       a.Address||':'||a.Hash_Value \" \"\n"
+                         "  from v$sqlarea a,\n"
+                         "       sys.all_users b\n"
+                         " where a.parsing_user_id = b.user_id",
+                         "Display the contents of the SGA stack. Must have one hidden column "
+                         "with SGA address at the end and a table name 'b' with a column username and must accept \"and ...\" clauses at end.");
+
+static toSQL SQLLongOps(TOSQL_LONGOPS,
+                        "SELECT b.opname \"Type\",\n"
+                        "       a.SQL_Text \"SQL Text\",\n"
+                        "       b.start_time \"Start Time\",\n"
+                        "       b.sofar||'/'||b.totalwork \"Completed/Total\",\n"
+                        "       b.elapsed_seconds||'/'||(b.elapsed_seconds+b.time_remaining) \"Completed/Total Time\",\n"
+                        "       b.username \"Parsing Schema\",\n"
+                        "       a.Parse_Calls \"Parse Calls\",\n"
+                        "       a.Executions \"Executions\",\n"
+                        "       a.Sorts \"Sorts\",\n"
+                        "       a.Disk_Reads \"Disk Reads\",\n"
+                        "       a.Buffer_Gets \"Buffer Gets\",\n"
+                        "       a.Rows_Processed \"Rows\",\n"
+                        "       DECODE(a.Executions,0,'N/A',ROUND(a.Sorts/a.Executions,3)) \"Sorts/Exec\",\n"
+                        "       DECODE(a.Executions,0,'N/A',ROUND(a.Disk_Reads/a.Executions,3)) \"Disk/Exec\",\n"
+                        "       DECODE(a.Executions,0,'N/A',ROUND(a.Buffer_Gets/a.Executions,3)) \"Buffers/Exec\",\n"
+                        "       DECODE(a.Executions,0,'N/A',ROUND(a.Rows_Processed/a.Executions,3)) \"Rows/Exec\",\n"
+                        "       DECODE(a.Rows_Processed,0,'N/A',ROUND(a.Sorts/a.Rows_Processed,3)) \"Sorts/Rows\",\n"
+                        "       DECODE(a.Rows_Processed,0,'N/A',ROUND(a.Disk_Reads/a.Rows_Processed,3)) \"Disk/Rows\",\n"
+                        "       DECODE(a.Rows_Processed,0,'N/A',ROUND(a.Buffer_Gets/a.Rows_Processed,3)) \"Buffers/Rows\",\n"
+                        "       b.SQL_Address||':'||b.SQL_Hash_Value \" \"\n"
+                        "  from v$sqlarea a,\n"
+                        "       v$session_longops b\n"
+                        " where b.sql_address = a.address(+)\n"
+                        "   and b.sql_hash_value = a.hash_value(+)\n"
+                        "   and b.opname is not null",
+                        "Display the contents of long the long operations list. Must have a hidden column "
+                        "with SGA address at the end and a table name 'b' with a column username and sid "
+                        "and must accept \"and ...\" clauses at end.");
+
+void toSGATrace::refresh(void)
+{
+    try
+    {
+        updateSchemas();
+
+        QString select;
+        switch (Type->currentItem())
+        {
+        case 0:
+            select = toSQL::string(SQLSGATrace, connection());
+            break;
+        case 1:
+            select = toSQL::string(SQLLongOps, connection());
+            break;
+        default:
+            toStatusMessage(tr("Unknown type of trace"));
+            return ;
+        }
+        if (!CurrentSchema.isEmpty())
+            select.append(QString::fromLatin1("\n   and b.username = :f1<char[101]>"));
+
+        QString order;
+        switch (Limit->currentItem())
+        {
+        case 0:
+            break;
+        case 1:
+            if (Type->currentItem() == 1)
+                select += QString::fromLatin1("\n   and b.sofar != b.totalwork");
+            else
+                toStatusMessage(tr("Unfinished is only available for long operations"));
+            break;
+        case 2:
+            select += QString::fromLatin1("\n   and a.executions = 1 and a.parse = 1");
+            break;
+        case 3:
+            order = QString::fromLatin1("a.Executions");
+            break;
+        case 4:
+            order = QString::fromLatin1("a.Sorts");
+            break;
+        case 5:
+            order = QString::fromLatin1("a.Disk_Reads");
+            break;
+        case 6:
+            order = QString::fromLatin1("a.Buffer_Gets");
+            break;
+        case 7:
+            order = QString::fromLatin1("a.Rows_Processed");
+            break;
+        case 8:
+            order = QString::fromLatin1("DECODE(a.Executions,0,0,a.Sorts/a.Executions)");
+            break;
+        case 9:
+            order = QString::fromLatin1("DECODE(a.Executions,0,0,a.Disk_Reads/a.Executions)");
+            break;
+        case 10:
+            order = QString::fromLatin1("DECODE(a.Executions,0,0,a.Buffer_Gets/a.Executions)");
+            break;
+        case 11:
+            order = QString::fromLatin1("DECODE(a.Executions,0,0,a.Rows_Processed/a.Executions)");
+            break;
+        case 12:
+            order = QString::fromLatin1("DECODE(a.Rows_Processed,0,0,a.Buffer_Gets/a.Rows_Processed)");
+            break;
+        default:
+            toStatusMessage(tr("Unknown selection"));
+            break;
+        }
+
+        if (!order.isEmpty())
+            select = QString::fromLatin1("SELECT * FROM (\n") + select +
+                     QString::fromLatin1("\n ORDER BY " + order + " DESC)\n WHERE ROWNUM < 20");
+
+        Trace->setSQL(QString::null);
+        if (!CurrentSchema.isEmpty())
+        {
+            toQList p;
+            p.insert(p.end(), CurrentSchema);
+            Trace->query(select, p);
+        }
+        else
+            Trace->query(select);
+
+        Statement->refresh();
+    }
+    TOCATCH
+}
+
+void toSGATrace::updateSchemas(void)
+{
+    try
+    {
+        Schema->refresh();
+    }
+    TOCATCH
+}
+
+void toSGATrace::changeItem(QListViewItem *item)
+{
+    if (item)
+        Statement->changeAddress(item->text(Trace->columns()));
+}

Added: kde-extras/tora/branches/upstream/current/src/tosgatrace.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosgatrace.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosgatrace.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,86 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSGATRACE_H
+#define TOSGATRACE_H
+
+#include "config.h"
+#include "totool.h"
+
+#include <qstring.h>
+
+#define TOSQL_LONGOPS "toSGATrace:LongOps"
+
+class QComboBox;
+class QListViewItem;
+class QPopupMenu;
+class QTabWidget;
+class toConnection;
+class toMain;
+class toResultCombo;
+class toResultLong;
+class toSGAStatement;
+class toTool;
+
+class toSGATrace : public toToolWidget
+{
+    Q_OBJECT
+
+    toResultLong *Trace;
+    QTabWidget *ResultTab;
+    toResultCombo *Schema;
+    QComboBox *Type;
+    QComboBox *Refresh;
+    QComboBox *Limit;
+    QPopupMenu *ToolMenu;
+
+    toSGAStatement *Statement;
+    QString CurrentSchema;
+
+    void updateSchemas(void);
+
+public:
+    toSGATrace(QWidget *parent, toConnection &connection);
+public slots:
+    void changeSchema(const QString &str);
+    void changeItem(QListViewItem *item);
+    void changeRefresh(const QString &str);
+    void refresh(void);
+    void windowActivated(QWidget *widget);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tosmtp.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosmtp.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosmtp.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,165 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tosmtp.h"
+
+#include <qapplication.h>
+#include <qdns.h>
+#include <qmessagebox.h>
+#include <qregexp.h>
+#include <qsocket.h>
+#include <qtextstream.h>
+#include <qtimer.h>
+
+#include "tosmtp.moc"
+
+toSMTP::toSMTP(const QString &from, const QString &to,
+               const QString &subject, const QString &body)
+{
+    Socket = new QSocket( this );
+    connect(Socket, SIGNAL(readyRead()),
+            this, SLOT( readyRead()));
+    connect(Socket, SIGNAL(connected()),
+            this, SLOT(connected()));
+
+    Stream = 0;
+    MXLookup = new QDns(to.mid(to.find('@') + 1), QDns::Mx);
+    connect(MXLookup, SIGNAL(resultsReady()),
+            this, SLOT(dnsLookupHelper()) );
+
+    Message = QString::fromLatin1("From: ") + from +
+              QString::fromLatin1("\nTo: ") + to +
+              QString::fromLatin1("\nSubject: ") + subject +
+              QString::fromLatin1("\n\n") + body + "\n";
+    Message.replace(QRegExp(QString::fromLatin1("\n")),
+                    QString::fromLatin1("\r\n"));
+    Message.replace(QRegExp(QString::fromLatin1("\r\n.\r\n")),
+                    QString::fromLatin1("\r\n..\r\n"));
+
+    From = from;
+    Recipient = to;
+
+    State = Init;
+}
+
+toSMTP::~toSMTP()
+{
+    delete Stream;
+    delete Socket;
+}
+
+void toSMTP::dnsLookupHelper()
+{
+    QValueList<QDns::MailServer> s = MXLookup->mailServers();
+    if (s.isEmpty() && MXLookup->isWorking())
+        return ;
+
+    toStatusMessage(tr("Connecting to %1").arg(s.first().name), false, false);
+
+    Socket->connectToHost(s.first().name, 25);
+    Stream = new QTextStream(Socket);
+}
+
+void toSMTP::connected()
+{
+    toStatusMessage(tr("Connected to %1" ).arg(Socket->peerName()), false, false);
+}
+
+void toSMTP::readyRead()
+{
+    // SMTP is line-oriented
+    if (!Socket->canReadLine())
+        return ;
+
+    QString responseLine;
+    do
+    {
+        responseLine = Socket->readLine();
+        Response += responseLine;
+    }
+    while (Socket->canReadLine() && responseLine[3] != ' ');
+    responseLine.truncate(3);
+
+    if (State == Init && responseLine[0] == '2')
+    {
+        // banner was okay, let's go on
+        *Stream << "HELO there\r\n";
+        State = Mail;
+    }
+    else if (State == Mail && responseLine[0] == '2')
+    {
+        // HELO response was okay (well, it has to be)
+        *Stream << "MAIL FROM: <" << From << ">\r\n";
+        State = Rcpt;
+    }
+    else if (State == Rcpt && responseLine[0] == '2')
+    {
+        *Stream << "RCPT TO: <" << Recipient << ">\r\n";
+        State = Data;
+    }
+    else if (State == Data && responseLine[0] == '2')
+    {
+        *Stream << "DATA\r\n";
+        State = Body;
+    }
+    else if (State == Body && responseLine[0] == '3')
+    {
+        *Stream << Message << ".\r\n";
+        State = Quit;
+    }
+    else if (State == Quit && responseLine[0] == '2')
+    {
+        *Stream << "QUIT\r\n";
+        // here, we just close.
+        State = Close;
+        toStatusMessage(tr("Message sent"), false, false);
+    }
+    else if (State == Close)
+    {
+        delete this;
+    }
+    else
+    {
+        toStatusMessage(tr("Unexpected reply from SMTP server:\n\n") +
+                        Response);
+        State = Close;
+    }
+
+    Response = "";
+}

Added: kde-extras/tora/branches/upstream/current/src/tosmtp.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosmtp.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosmtp.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,97 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSMTP_H
+#define TOSMTP_H
+
+#include "config.h"
+
+#include <qobject.h>
+#include <qstring.h>
+
+class QDns;
+class QSocket;
+class QTextStream;
+
+// Adapted from Qt smtp example.
+
+/** Used to send mail asyncronously. Just create an instance and forget it.
+ * It will delete itself when done.
+ */
+
+class toSMTP : public QObject
+{
+    Q_OBJECT
+
+public:
+    /** Send an email.
+     * @param from From field of email.
+     * @param to To field of email header.
+     * @param subject Subject of mail.
+     * @param body Body of email message.
+     */
+    toSMTP(const QString &from, const QString &to,
+           const QString &subject, const QString &body);
+    ~toSMTP();
+
+private slots:
+    void dnsLookupHelper();
+    void readyRead();
+    void connected();
+
+private:
+    enum state {
+        Init,
+        Mail,
+        Rcpt,
+        Data,
+        Body,
+        Quit,
+        Close
+    };
+
+    QString Message;
+    QString From;
+    QString Recipient;
+    QSocket *Socket;
+    QTextStream *Stream;
+    int State;
+    QString Response;
+    QDns * MXLookup;
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tosplash.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosplash.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosplash.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "tosplash.h"
+
+#include <qpixmap.h>
+#include <qlabel.h>
+#include <qapplication.h>
+#include <qprogressbar.h>
+
+#include "icons/largelogo.xpm"
+
+toSplash::toSplash(QWidget *parent, const char *name, WFlags f)
+        : QVBox(parent, name, f)
+{
+    QMimeSourceFactory::defaultFactory()->setPixmap(QString::fromLatin1("largelogo.xpm"),
+            QPixmap(const_cast<const char**>(largelogo_xpm)));
+
+    setBackgroundColor(white);
+    QLabel *logo = new QLabel(this, "Logo");
+    logo->setBackgroundColor(white);
+    logo->setPixmap(QPixmap(const_cast<const char**>(largelogo_xpm)));
+    Label = new QLabel(tr("Loading plugins"), this);
+    Label->setBackgroundColor(white);
+    Progress = new QProgressBar(this, "Progress");
+
+    QWidget *d = QApplication::desktop();
+    move((d->width() - width()) / 2, (d->height() - height()) / 2);
+}
+
+toSplash::~toSplash()
+{
+    QMimeSourceFactory::defaultFactory()->setPixmap(QString::fromLatin1("largelogo.xpm"), 0);
+}

Added: kde-extras/tora/branches/upstream/current/src/tosplash.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosplash.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosplash.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,68 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+
+#ifndef TOSPLASH_H
+#define TOSPLASH_H
+
+#include <qvbox.h>
+
+class QLabel;
+class QProgressBar;
+
+class toSplash : public QVBox
+{
+    QProgressBar *Progress;
+    QLabel *Label;
+public:
+    toSplash(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
+    ~toSplash();
+    QLabel* label(void);
+    QProgressBar* progress(void);
+};
+
+inline QLabel* toSplash::label(void)
+{
+    return Label;
+}
+
+inline QProgressBar* toSplash::progress(void)
+{
+    return Progress;
+}
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tosql.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosql.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosql.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,400 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "tosql.h"
+
+#include <qapplication.h>
+#include <qfile.h>
+#include <qregexp.h>
+
+// A little magic to get lrefresh to work and get a check on qApp
+
+#undef QT_TRANSLATE_NOOP
+#define QT_TRANSLATE_NOOP(x,y) QTRANS(x,y)
+
+toSQL::sqlMap *toSQL::Definitions;
+const char * const toSQL::TOSQL_USERLIST = "Global:UserList";
+const char * const toSQL::TOSQL_CREATEPLAN = "Global:CreatePlan";
+
+toSQL::toSQL(const QCString &name,
+             const QString &sql,
+             const QString &description,
+             const QCString &ver,
+             const QCString &provider)
+        : Name(name)
+{
+    updateSQL(name, sql, description, ver, provider, false);
+}
+
+toSQL::toSQL(const QCString &name)
+        : Name(name)
+{}
+
+void toSQL::allocCheck(void)
+{
+    if (!Definitions)
+        Definitions = new sqlMap;
+}
+
+bool toSQL::updateSQL(const QCString &name,
+                      const QString &sql,
+                      const QString &description,
+                      const QCString &ver,
+                      const QCString &provider,
+                      bool modified)
+{
+#ifdef TO_NO_ORACLE
+    if (provider == "Oracle")
+        return false;
+#endif
+
+    version def(provider, ver, sql, modified);
+
+    allocCheck();
+    sqlMap::iterator i = Definitions->find(name);
+    if (i == Definitions->end())
+    {
+        if (description.isEmpty())
+        {
+            fprintf(stderr, "ERROR:Tried add new version to unknown SQL (%s)\n", (const char *)name);
+            return false;
+        }
+        definition newDef;
+        newDef.Modified = modified;
+        newDef.Description = description;
+        if (!sql.isNull())
+        {
+            std::list<version> &cl = newDef.Versions;
+            cl.insert(cl.end(), def);
+        }
+        (*Definitions)[name] = newDef;
+        return true;
+    }
+    else
+    {
+        if (!description.isEmpty())
+        {
+            if ((*i).second.Description != description)
+            {
+                (*i).second.Description = description;
+                (*i).second.Modified = modified;
+            }
+            if (!modified)
+                fprintf(stderr, "ERROR:Overwrite description of nonmodified (%s)\n", (const char *)name);
+        }
+        std::list<version> &cl = (*i).second.Versions;
+        for (std::list<version>::iterator j = cl.begin();j != cl.end();j++)
+        {
+            if ((*j).Provider == provider && (*j).Version == ver)
+            {
+                if (!sql.isNull())
+                {
+                    (*j) = def;
+                    if (def.SQL != (*j).SQL)
+                        (*j).Modified = modified;
+                }
+                return false;
+            }
+            else if ((*j).Provider > provider.data() ||
+                     ((*j).Provider == provider && (*j).Version > ver.data()))
+            {
+                if (!sql.isNull())
+                    cl.insert(j, def);
+                return true;
+            }
+        }
+        cl.insert(cl.end(), def);
+        return true;
+    }
+}
+
+bool toSQL::deleteSQL(const QCString &name,
+                      const QCString &ver,
+                      const QCString &provider)
+{
+    allocCheck();
+    sqlMap::iterator i = Definitions->find(name);
+    if (i == Definitions->end())
+    {
+        return false;
+    }
+    else
+    {
+        std::list<version> &cl = (*i).second.Versions;
+        for (std::list<version>::iterator j = cl.begin();j != cl.end();j++)
+        {
+            if ((*j).Version == ver && (*j).Provider == provider)
+            {
+                cl.erase(j);
+                if ( cl.empty() )
+                    Definitions->erase(i);
+                return true;
+            }
+            else if ((*j).Provider > provider.data() ||
+                     ((*j).Provider == provider && (*j).Version > ver.data()))
+            {
+                return false;
+            }
+        }
+        return false;
+    }
+}
+
+toSQL toSQL::sql(const QCString &name)
+{
+    allocCheck();
+    sqlMap::iterator i = Definitions->find(name);
+    if (i != Definitions->end())
+        return name;
+    throw qApp->translate("toSQL", "Tried to get unknown SQL (%1)").arg(name);
+}
+
+QString toSQL::string(const QCString &name,
+                      const toConnection &conn)
+{
+    allocCheck();
+    QCString ver = conn.version();
+    QCString prov = conn.provider();
+
+    bool quit = false;
+
+    sqlMap::iterator i = Definitions->find(name);
+    if (i != Definitions->end())
+    {
+        do
+        {
+            if (prov == "Any")
+                quit = true;
+            QString *sql = NULL;
+            std::list<version> &cl = (*i).second.Versions;
+            for (std::list<version>::iterator j = cl.begin();j != cl.end();j++)
+            {
+                if ((*j).Provider == prov)
+                {
+                    if ((*j).Version <= ver.data() || !sql)
+                    {
+                        sql = &(*j).SQL;
+                    }
+                    if ((*j).Version >= ver.data())
+                        return *sql;
+                }
+            }
+            if (sql)
+                return *sql;
+
+            prov = "Any";
+        }
+        while (!quit);
+    }
+
+    throw qApp->translate("toSQL", "Tried to get unknown SQL (%1)").arg(name);
+}
+
+bool toSQL::saveSQL(const QString &filename, bool all)
+{
+    allocCheck();
+    QCString data;
+
+    QRegExp backslash(QString::fromLatin1("\\"));
+    QRegExp newline(QString::fromLatin1("\n"));
+    for (sqlMap::iterator i = Definitions->begin();i != Definitions->end();i++)
+    {
+        QCString str;
+        definition &def = (*i).second;
+        QCString name = (*i).first;
+        if (def.Modified || all)
+        {
+            QCString line = name;
+            line += "=";
+            QString t = def.Description;
+            t.replace(backslash, QString::fromLatin1("\\\\"));
+            t.replace(newline, QString::fromLatin1("\\n"));
+            line += t;
+            str = line;
+            str += "\n";
+        }
+        for (std::list<version>::iterator j = def.Versions.begin();j != def.Versions.end();j++)
+        {
+            version &ver = (*j);
+            if (ver.Modified || all)
+            {
+                QCString line = name;
+                line += "[";
+                line += ver.Version;
+                line += "][";
+                line += ver.Provider;
+                line += "]=";
+                QString t = ver.SQL;
+                t.replace(backslash, QString::fromLatin1("\\\\"));
+                t.replace(newline, QString::fromLatin1("\\n"));
+                line += t;
+                str += line;
+                str += "\n";
+            }
+        }
+        data += str;
+    }
+    return toWriteFile(filename, data);
+}
+
+void toSQL::loadSQL(const QString &filename)
+{
+    allocCheck();
+    QCString data = toReadFile(filename);
+
+    int size = data.length();
+    int pos = 0;
+    int bol = 0;
+    int endtag = -1;
+    int provtag = -1;
+    int vertag = -1;
+    int wpos = 0;
+    while (pos < size)
+    {
+        switch (data[pos])
+        {
+        case '\n':
+            if (endtag == -1)
+                throw QT_TRANSLATE_NOOP("toSQL", "Malformed tag in config file. Missing = on row.");
+            data[wpos] = 0;
+            {
+                QCString nam = ((const char *)data) + bol;
+                QString val(QString::fromUtf8(((const char *)data) + endtag + 1));
+                QCString ver;
+                QCString prov;
+                if (vertag >= 0)
+                {
+                    ver = ((const char *)data) + vertag + 1;
+                    if (provtag >= 0)
+                        prov = ((const char *)data) + provtag + 1;
+                    updateSQL(nam, val, QString::null, ver, prov, true);
+                }
+                else
+                    updateSQL(nam, QString::null, val, "", "", true);
+            }
+            bol = pos + 1;
+            provtag = vertag = endtag = -1;
+            wpos = pos;
+            break;
+        case '=':
+            if (endtag == -1)
+            {
+                endtag = pos;
+                data[wpos] = 0;
+                wpos = pos;
+            }
+            else
+                data[wpos] = data[pos];
+            break;
+        case '[':
+            if (endtag == -1)
+            {
+                if (vertag >= 0)
+                {
+                    if (provtag >= 0)
+                        throw QT_TRANSLATE_NOOP("toSQL", "Malformed line in SQL dictionary file. Two '[' before '='");
+                    provtag = pos;
+                }
+                else
+                    vertag = pos;
+                data[wpos] = 0;
+                wpos = pos;
+            }
+            else
+                data[wpos] = data[pos];
+            break;
+        case ']':
+            if (endtag == -1)
+            {
+                data[wpos] = 0;
+                wpos = pos;
+            }
+            else
+                data[wpos] = data[pos];
+            break;
+        case '\\':
+            pos++;
+            switch (data[pos])
+            {
+            case 'n':
+                data[wpos] = '\n';
+                break;
+            case '\\':
+                if (endtag >= 0)
+                    data[wpos] = '\\';
+                else
+                    data[wpos] = ':';
+                break;
+            default:
+                throw QT_TRANSLATE_NOOP("toSQL", "Unknown escape character in string (Only \\\\ and \\n recognised)");
+            }
+            break;
+        default:
+            data[wpos] = data[pos];
+        }
+        wpos++;
+        pos++;
+    }
+}
+
+std::list<QCString> toSQL::range(const QCString &startWith)
+{
+    std::list<QCString> ret;
+    for (sqlMap::iterator i = Definitions->begin();i != Definitions->end();i++)
+    {
+        if ((*i).first > startWith.data() || startWith.isNull())
+        {
+            if ((*i).first.mid(0, startWith.length()) == startWith || startWith.isNull())
+                ret.insert(ret.end(), (*i).first);
+            else
+                return ret;
+        }
+    }
+    return ret;
+}
+
+QString toSQL::description(const QCString &name)
+{
+    allocCheck();
+    sqlMap::iterator i = Definitions->find(name);
+    if (i != Definitions->end())
+        return (*i).second.Description;
+    throw qApp->translate("toSQL", "Tried to get unknown SQL (%1)").arg(name);
+}

Added: kde-extras/tora/branches/upstream/current/src/tosql.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosql.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosql.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,299 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSQL_H
+#define TOSQL_H
+
+#include "config.h"
+
+#include <map>
+#include <list>
+
+#include <qstring.h>
+
+class toConnection;
+
+/**
+ * This class handles an abstraction of SQL statements used by TOra to extract
+ * information and manipulate data. This is usefull in two ways, first off you
+ * can edit the strings using a handy editor inside TOra if you find bugs. Also
+ * you can use different statements for different Oracle versions. You can also
+ * add support for new versions of Oracle without any need for recompilation or
+ * programming knowledge.
+ *
+ * All information about SQL statements are stored in one global static map which
+ * contains a name, a description and one or several statements connected to one
+ * Oracle version.
+ *
+ * To determine which SQL to use the statement with the highest
+ * version not above the current connection is used. If no statements below or
+ * equal to the current version is available the lowest available is used.
+ *
+ * All strings are specific for a given database provider. No attempt to use
+ * strings from other providers will be made.
+ */
+
+class toSQL
+{
+public:
+    /**
+     * Contains a statement with it's version.
+     */
+    struct version
+    {
+        /**
+         * The provider this version is made for.
+         */
+        QCString Provider;
+        /**
+         * Version string
+         */
+        QCString Version;
+        /**
+         * SQL statement
+         */
+        QString SQL;
+        /** An indication if this SQL has been modified after startup and thus needs to be
+         * saved to disk to retain.
+         */
+        bool Modified;
+        /** Create a new version
+         * @param provider Provider
+         * @param ver Version
+         * @param sql Statement
+         * @param modified Wether it is modified or not.
+         */
+        version(const QCString &provider, const QCString &ver, const QString &sql, bool modified = false)
+                : Provider(provider), Version(ver), SQL(sql), Modified(modified)
+        { }
+    }
+    ;
+
+    /**
+     * Definition of one toSQL statement with its description and versions.
+     */
+    struct definition
+    {
+        /** Description of what this statement is supposed to do.
+         */
+        QString Description;
+        /** Indication of wether this description is changed or not and needs to be saved
+         * to disk to retain.
+         */
+        bool Modified;
+        /** List of the different versions of the statement.
+         */
+        std::list<version> Versions;
+    };
+
+    /** Type of map of statement names to statement definitions.
+     */
+    typedef std::map<QCString, definition> sqlMap;
+private:
+    /** Map of statement names to statement definitions for each provider.
+     */
+    static sqlMap *Definitions;
+
+    /** Name of this SQL statement
+     */
+    QCString Name;
+
+    /** Internal constructor used by some of the internal functions. Creates an
+     * SQL statement with a name but without an entry in the @ref Definitions map.
+     */
+    toSQL(const QCString &name);
+
+    /** Check that @ref Definitions are allocated, if not allocate it.
+     */
+    static void allocCheck(void);
+public:
+    /** Name of the SQL to get a userlist
+     */
+    static const char * const TOSQL_USERLIST;
+    /** Name of the SQL to create a plan table
+     */
+    static const char * const TOSQL_CREATEPLAN;
+    /** Update the map with new information.
+     * @param name Name of this SQL statement.
+     * @param sql Statement to execute for this SQL.
+     * @param description Description of this SQL.
+     * @param ver Version of database this statement is meant for.
+     * @param provider Database provider this string is used for.
+     * @param modified Wether this is a modification or an addition to the map.
+     * @return True if a new statement was saved, otherwise false.
+     */
+    static bool updateSQL(const QCString &name,
+                          const QString &sql,
+                          const QString &description,
+                          const QCString &ver = "8.1",
+                          const QCString &provider = "Oracle",
+                          bool modified = true);
+
+    /** Remove an SQL statement from a map. If the last version is removed
+     * from a statement it's definition is also removed.
+     * @param name Name to remove.
+     * @param ver Version to remove.
+     * @param provider Provider to delete.
+     * @return True if a version was found to be removed.
+     */
+    static bool deleteSQL(const QCString &name,
+                          const QCString &ver,
+                          const QCString &provider = "Oracle");
+
+    /** Get the statement of an SQL.
+     * @param name Name of statement.
+     * @param conn Connection to get version from.
+     * @return String containing the statement.
+     * @exception QString with description of problem fetching string.
+     */
+    static QString string(const QCString &name, const toConnection &conn);
+    /** Get the statement of an SQL.
+     * @param sqlDef SQL to get name of statement from.
+     * @param conn Connection to get version from.
+     * @return String containing the statement.
+     * @exception QString with description of problem fetching string.
+     */
+    static QString string(const toSQL &sqldef, const toConnection &conn)
+    {
+        return string(sqldef.Name, conn);
+    }
+
+    /** Get description of an SQL.
+     * @param name Name of SQL to get name from..
+     * @return String containing description.
+     * @exception QString with description of problem fetching string.
+     */
+    static QString description(const QCString &name);
+    /** Get description of an SQL.
+     * @param sqlDef SQL to get name of statement from.
+     * @return String containing description.
+     * @exception QString with description of problem fetching string.
+     */
+    static QString description(const toSQL &sql)
+    {
+        return description(sql.Name);
+    }
+
+    /** Get the statement of an SQL.
+     * @param name Name of statement.
+     * @param conn Connection to get version from.
+     * @return String containing the statement.
+     * @exception QString with description of problem fetching string.
+     */
+    static QCString sql(const QCString &name, const toConnection &conn)
+    {
+        return string(name, conn).utf8();
+    }
+    /** Get the statement of an SQL.
+     * @param sqlDef SQL to get name of statement from.
+     * @param conn Connection to get version from.
+     * @return String containing the statement.
+     * @exception QString with description of problem fetching string.
+     */
+    static QCString sql(const toSQL &sqldef, const toConnection &conn)
+    {
+        return sql(sqldef.Name, conn);
+    }
+
+    /** Get an SQL from a specified name.
+     * @param name Name to get SQL for.
+     * @return a toSQL object for given name.
+     */
+    static toSQL sql(const QCString &name);
+
+    /**
+     * Get all defined names that start with a given substring.
+     * @param startWith The string that the name should start with.
+     * @return A list of names available.
+     */
+    static std::list<QCString> range(const QCString &startWith);
+
+    /** Save SQL definitions to file.
+     * @param file Filename to save to.
+     * @param all If true all statements will be saved, otherwised only modified are saved.
+     * @return True if saved successfully.
+     */
+    static bool saveSQL(const QString &file, bool all = false);
+    /** Load definitions from file.
+     * @param file Filename to load from.
+     * @exceptions QString describing the problem loading.
+     */
+    static void loadSQL(const QString &file);
+
+    /** Get the entire map of SQL definitions
+     * @return A reference to the map of definitions.
+     */
+    static const sqlMap &definitions(void)
+    {
+        allocCheck();
+        return *Definitions;
+    }
+
+    /** Get the statement of an SQL.
+     * @param conn Connection to get version from.
+     * @return String containing the statement.
+     */
+    const QString operator () (const toConnection &conn) const
+    {
+        return string(Name, conn);
+    }
+
+    /** Get name of this SQL.
+     * @return Name.
+     */
+    const QCString &name(void) const
+    {
+        return Name;
+    }
+
+    /** Create a new SQL. Observe that the only thing this does is insert the supplied
+     * information into the definition map, deleting the SQL will not the information from
+     * the defitinion map. Only one description can be made for each statement name.
+     * @param name Name of SQL.
+     * @param sql Statement of this SQL.
+     * @param description Description of statement.
+     * @param ver Version this statement applies to.
+     * @param provider Provider this string is for.
+     */
+    toSQL(const QCString &name,
+          const QString &sql,
+          const QString &description = "",
+          const QCString &ver = "8.1",
+          const QCString &provider = "Oracle");
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tosqledit.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosqledit.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosqledit.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,633 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "toresultview.h"
+#include "tosql.h"
+#include "tosqledit.h"
+#include "totool.h"
+#include "toworksheet.h"
+
+#ifdef TO_KDE
+#include <kfiledialog.h>
+#endif
+
+#include <qcombobox.h>
+#include <qfiledialog.h>
+#include <qfileinfo.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qlistview.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qpopupmenu.h>
+#include <qsplitter.h>
+#include <qstring.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qworkspace.h>
+
+#include "tosqledit.moc"
+
+#include "icons/add.xpm"
+#include "icons/commit.xpm"
+#include "icons/fileopen.xpm"
+#include "icons/filesave.xpm"
+#include "icons/tosqledit.xpm"
+#include "icons/trash.xpm"
+
+class toSQLEditTool : public toTool
+{
+protected:
+    QWidget * Window;
+
+public:
+    toSQLEditTool()
+            : toTool(920, "SQL Dictionary Editor")
+    {
+        Window = NULL;
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        if (Window)
+            Window->show();
+        else
+            Window = new toSQLEdit(parent, connection);
+
+        Window->raise();
+        Window->setFocus();
+        Window->setIcon(QPixmap(const_cast<const char**>(tosqledit_xpm)));
+        return Window;
+    }
+    virtual void customSetup(int toolid)
+    {
+        toMainWidget()->editMenu()->insertSeparator();
+        toMainWidget()->editMenu()->insertItem(QPixmap(const_cast<const char**>(tosqledit_xpm)),
+                                               qApp->translate("toSQLEditTool", "&Edit SQL..."), toolid);
+        toMainWidget()->registerSQLEditor(toolid);
+    }
+    void closeWindow(void)
+    {
+        Window = NULL;
+    }
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toSQLEditTool SQLEditTool;
+
+void toSQLEdit::updateStatements(const QString &sel)
+{
+    Statements->clear();
+    toSQL::sqlMap sql = toSQL::definitions();
+
+    QListViewItem *head = NULL;
+    QListViewItem *item = NULL;
+
+    for (toSQL::sqlMap::iterator pos = sql.begin();pos != sql.end();pos++)
+    {
+        QString str = (*pos).first;
+        int i = str.find(QString::fromLatin1(":"));
+        if (i >= 0)
+        {
+            if (!head || head->text(0) != str.left(i))
+            {
+                head = new QListViewItem(Statements, str.left(i));
+                head->setSelectable(false);
+            }
+            item = new QListViewItem(head, str.right(str.length() - i - 1));
+            if (sel == str)
+            {
+                Statements->setSelected(item, true);
+                Statements->setCurrentItem(item);
+                Statements->setOpen(head, true);
+            }
+        }
+        else
+        {
+            head = new QListViewItem(Statements, head, str);
+            if (sel == str)
+            {
+                Statements->setSelected(head, true);
+                Statements->setCurrentItem(item);
+            }
+        }
+    }
+}
+
+toSQLEdit::toSQLEdit(QWidget *main, toConnection &connection)
+        : toToolWidget(SQLEditTool, "sqledit.html", main, connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("SQL editor"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(fileopen_xpm)),
+                    tr("Load SQL dictionary file"),
+                    tr("Load SQL dictionary file"),
+                    this, SLOT(loadSQL()),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(filesave_xpm)),
+                    tr("Save modified SQL to dictionary file"),
+                    tr("Save modified SQL to dictionary file"),
+                    this, SLOT(saveSQL()),
+                    toolbar);
+    toolbar->addSeparator();
+    CommitButton = new QToolButton(QPixmap(const_cast<const char**>(commit_xpm)),
+                                   tr("Save this entry in the dictionary"),
+                                   tr("Save this entry in the dictionary"),
+                                   this, SLOT(commitChanges()),
+                                   toolbar);
+    TrashButton = new QToolButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                                  tr("Delete this version from the SQL dictionary"),
+                                  tr("Delete this version from the SQL dictionary"),
+                                  this, SLOT(deleteVersion()),
+                                  toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(add_xpm)),
+                    tr("Start new SQL definition"),
+                    tr("Start new SQL definition"),
+                    this, SLOT(newSQL()),
+                    toolbar);
+    CommitButton->setEnabled(true);
+    TrashButton->setEnabled(false);
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    QSplitter *splitter = new QSplitter(Horizontal, this);
+    Statements = new toListView(splitter);
+    Statements->setRootIsDecorated(true);
+    Statements->addColumn(tr("Text Name"));
+    Statements->setSorting(0);
+    Statements->setSelectionMode(QListView::Single);
+    QVBox *vbox = new QVBox(splitter);
+
+    QHBox *hbox = new QHBox(vbox);
+    new QLabel(tr("Name") + " ", hbox);
+    Name = new QLineEdit(hbox);
+    new QLabel(" " + tr("Database") + " ", hbox);
+    Version = new QComboBox(hbox);
+    Version->setEditable(true);
+    Version->setDuplicatesEnabled(false);
+    LastVersion = connection.provider() + ":Any";
+    Version->insertItem(LastVersion);
+
+    QFrame *line = new QFrame(vbox);
+    line->setFrameStyle(QFrame::HLine | QFrame::Sunken);
+    new QLabel(tr("Description"), vbox);
+    splitter = new QSplitter(Vertical, vbox);
+    Description = new toMarkedText(splitter);
+    Editor = new toWorksheet(splitter, connection, false);
+
+    connectList(true);
+    connect(Version, SIGNAL(activated(const QString &)), this, SLOT(changeVersion(const QString &)));
+    connect(toMainWidget(), SIGNAL(sqlEditor(const QString &)), this, SLOT(editSQL(const QString &)));
+
+    updateStatements();
+
+    setFocusProxy(Statements);
+}
+
+void toSQLEdit::connectList(bool conn)
+{
+    if (conn)
+        connect(Statements, SIGNAL(selectionChanged(void)), this, SLOT(selectionChanged(void)));
+    else
+        disconnect(Statements, SIGNAL(selectionChanged(void)), this, SLOT(selectionChanged(void)));
+}
+
+toSQLEdit::~toSQLEdit()
+{
+    SQLEditTool.closeWindow();
+    toSQL::saveSQL(toConfigurationSingle::Instance().globalConfig(CONF_SQL_FILE, DEFAULT_SQL_FILE));
+}
+
+void toSQLEdit::loadSQL(void)
+{
+    try
+    {
+        QString filename = toOpenFilename(QString::null, QString::null, this);
+        if (!filename.isEmpty())
+        {
+            toSQL::loadSQL(filename);
+            Filename = filename;
+        }
+    }
+    TOCATCH
+}
+
+void toSQLEdit::saveSQL(void)
+{
+    QString filename = toSaveFilename(QString::null, QString::null, this);
+    if (!filename.isEmpty())
+    {
+        Filename = filename;
+        toSQL::saveSQL(filename);
+    }
+}
+
+void toSQLEdit::deleteVersion(void)
+{
+    QCString provider;
+    QCString version;
+    if (!splitVersion(Version->currentText(), provider, version))
+        return ;
+
+    try
+    {
+        toSQL::deleteSQL(Name->text().latin1(), version, provider);
+        Version->removeItem(Version->currentItem());
+
+        if (Version->count() == 0)
+        {
+            QListViewItem *item = toFindItem(Statements, Name->text());
+            if (item)
+            {
+                connectList(false);
+                delete item;
+                connectList(true);
+            }
+            newSQL();
+        }
+        else
+            selectionChanged(QString::fromLatin1(connection().provider() + ":" + connection().version()));
+    }
+    TOCATCH
+}
+
+bool toSQLEdit::close(bool del)
+{
+    if (checkStore(false))
+        return QVBox::close(del);
+    return false;
+}
+
+bool toSQLEdit::splitVersion(const QString &split, QCString &provider, QCString &version)
+{
+    int found = split.find(QString::fromLatin1(":"));
+    if (found < 0)
+    {
+        TOMessageBox::warning(this, tr("Wrong format of version"),
+                              tr("Should be database provider:version."),
+                              tr("&Ok"));
+        return false;
+    }
+    provider = split.mid(0, found).latin1();
+    if (provider.length() == 0)
+    {
+        TOMessageBox::warning(this, tr("Wrong format of version"),
+                              tr("Should be database provider:version. Can't start with :."),
+                              tr("&Ok"));
+        return false;
+    }
+    version = split.mid(found + 1).latin1();
+    if (version.length() == 0)
+    {
+        TOMessageBox::warning(this, tr("Wrong format of version"),
+                              tr("Should be database provider:version. Can't end with the first :."),
+                              tr("&Ok"));
+        return false;
+    }
+    return true;
+}
+
+void toSQLEdit::commitChanges(bool changeSelected)
+{
+    QCString provider;
+    QCString version;
+    if (!splitVersion(Version->currentText(), provider, version))
+        return ;
+    QString name = Name->text();
+    QListViewItem *item = toFindItem(Statements, name);
+    if (!item)
+    {
+        int i = name.find(QString::fromLatin1(":"));
+        if (i >= 0)
+        {
+            item = toFindItem(Statements, name.mid(0, i));
+            if (!item)
+                item = new QListViewItem(Statements, name.mid(0, i));
+            item = new QListViewItem(item, name.mid(i + 1));
+        }
+        else
+            item = new QListViewItem(Statements, name);
+    }
+    connectList(false);
+    if (changeSelected)
+    {
+        Statements->setSelected(item, true);
+        Statements->setCurrentItem(item);
+        if (item->parent() && !item->parent()->isOpen())
+            item->parent()->setOpen(true);
+    }
+    connectList(true);
+    if (Description->text().isEmpty())
+    {
+        TOMessageBox::warning(this, tr("Missing description"),
+                              tr("No description filled in. This is necessary to save SQL."
+                                 " Adding undescribed as description."),
+                              tr("&Ok"));
+        Description->setText(tr("Undescribed"));
+    }
+    toSQL::updateSQL(name.latin1(),
+                     Editor->editor()->text(),
+                     Description->text(),
+                     version,
+                     provider);
+    TrashButton->setEnabled(true);
+    CommitButton->setEnabled(true);
+
+    bool update = Name->isModified();
+
+
+    Name->setEdited(false);
+    Description->setModified(false);
+    Editor->editor()->setModified(false);
+    LastVersion = Version->currentText();
+    if (update)
+        updateStatements(Name->text());
+    Statements->setFocus();
+}
+
+bool toSQLEdit::checkStore(bool justVer)
+{
+    if ((Name->isModified() ||
+            Editor->editor()->isModified() ||
+            (!justVer && Version->currentText() != LastVersion) ||
+            Description->isModified()) &&
+            Version->currentText().length() > 0)
+    {
+        switch (TOMessageBox::information(this, tr("Modified SQL dictionary"),
+                                          tr("Save changes into the SQL dictionary"),
+                                          tr("&Yes"), tr("&No"), tr("Cancel"), 0, 2))
+        {
+        case 0:
+            commitChanges(false);
+            break;
+        case 1:
+            Name->setEdited(false);
+            Description->setModified(false);
+            Editor->editor()->setModified(false);
+            LastVersion = Version->currentText();
+            return true;
+        case 2:
+            return false;
+        }
+    }
+    return true;
+}
+
+void toSQLEdit::changeVersion(const QString &ver)
+{
+    if (!Editor->editor()->isModified() || checkStore(true))
+    {
+        selectionChanged(ver);
+        if (Version->currentText() != ver)
+        {
+            Version->insertItem(ver);
+            Version->lineEdit()->setText(ver);
+        }
+    }
+}
+
+void toSQLEdit::selectionChanged(void)
+{
+    try
+    {
+        if (checkStore(false))
+            selectionChanged(QString::fromLatin1(connection().provider() + ":" + connection().version()));
+    }
+    TOCATCH
+}
+
+void toSQLEdit::changeSQL(const QString &name, const QString &maxver)
+{
+    toSQL::sqlMap sql = toSQL::definitions();
+    Name->setText(name);
+    Name->setEdited(false);
+
+    QListViewItem *item = toFindItem(Statements, name);
+    if (item)
+    {
+        connectList(false);
+        Statements->setSelected(item, true);
+        Statements->setCurrentItem(item);
+        if (item->parent() && !item->parent()->isOpen())
+            item->parent()->setOpen(true);
+        connectList(true);
+    }
+
+    Version->clear();
+    LastVersion = "";
+    if (sql.find(name.latin1()) != sql.end())
+    {
+        toSQL::definition &def = sql[name.latin1()];
+        std::list<toSQL::version> &ver = def.Versions;
+
+        Description->setText(def.Description);
+        Description->setModified(false);
+
+        std::list<toSQL::version>::iterator j = ver.end();
+        int ind = 0;
+        for (std::list<toSQL::version>::iterator i = ver.begin();i != ver.end();i++)
+        {
+            QString str = (*i).Provider;
+            str += QString::fromLatin1(":");
+            str += (*i).Version;
+            Version->insertItem(str);
+            if (str <= maxver || j == ver.end())
+            {
+                j = i;
+                LastVersion = str;
+                ind = Version->count() - 1;
+            }
+        }
+        if (j != ver.end())
+        {
+            Editor->editor()->setText((*j).SQL);
+            TrashButton->setEnabled(true);
+            CommitButton->setEnabled(true);
+            Version->setCurrentItem(ind);
+        }
+    }
+    else
+    {
+        Description->clear();
+        Editor->editor()->clear();
+        TrashButton->setEnabled(false);
+        CommitButton->setEnabled(true);
+    }
+    if (LastVersion.isEmpty())
+    {
+        LastVersion = QString::fromLatin1("Any:Any");
+        Version->insertItem(LastVersion);
+    }
+    Editor->editor()->setModified(false);
+}
+
+void toSQLEdit::selectionChanged(const QString &maxver)
+{
+    try
+    {
+        QListViewItem *item = Statements->selectedItem();
+        if (item)
+        {
+            QString name = item->text(0);
+            while (item->parent())
+            {
+                item = item->parent();
+                name.prepend(QString::fromLatin1(":"));
+                name.prepend(item->text(0));
+            }
+            changeSQL(name, maxver);
+        }
+    }
+    TOCATCH
+}
+
+void toSQLEdit::editSQL(const QString &nam)
+{
+    try
+    {
+        if (checkStore(false))
+            changeSQL(nam, QString::fromLatin1(connection().provider() + ":" + connection().version()));
+    }
+    TOCATCH
+}
+
+void toSQLEdit::newSQL(void)
+{
+    if (checkStore(false))
+    {
+        QString name = Name->text();
+        int found = name.find(QString::fromLatin1(":"));
+        if (found < 0)
+            name = QString::null;
+        else
+            name = name.mid(0, found + 1);
+        try
+        {
+            changeSQL(name, QString::fromLatin1(connection().provider() + ":Any"));
+        }
+        TOCATCH
+    }
+}
+
+static toSQLTemplate SQLTemplate;
+
+toSQLTemplateItem::toSQLTemplateItem(QListView *parent)
+        : toTemplateItem(SQLTemplate, parent, qApp->translate("toSQL", "SQL Dictionary"))
+{
+    setExpandable(true);
+}
+
+static QString JustLast(const QCString &str)
+{
+    int pos = str.findRev(":");
+    if (pos >= 0)
+        return QString::fromLatin1(str.mid(pos + 1));
+    return QString::fromLatin1(str);
+}
+
+toSQLTemplateItem::toSQLTemplateItem(toSQLTemplateItem *parent,
+                                     const QCString &name)
+        : toTemplateItem(parent, JustLast(name))
+{
+    Name = name;
+    std::list<QCString> def = toSQL::range(Name + ":");
+    if (def.begin() != def.end())
+        setExpandable(true);
+}
+
+void toSQLTemplateItem::expand(void)
+{
+    std::list<QCString> def;
+    if (Name.isEmpty())
+        def = toSQL::range(Name);
+    else
+        def = toSQL::range(Name + ":");
+    QCString last;
+    for (std::list<QCString>::iterator sql = def.begin();sql != def.end();sql++)
+    {
+        QCString name = *sql;
+        if (!Name.isEmpty())
+            name = name.mid(Name.length() + 1);
+        if (name.find(":") != -1)
+            name = name.mid(0, name.find(":"));
+        if (name != last)
+        {
+            if (Name.isEmpty())
+                new toSQLTemplateItem(this, name);
+            else
+                new toSQLTemplateItem(this, Name + ":" + name);
+            last = name;
+        }
+    }
+}
+
+QString toSQLTemplateItem::allText(int) const
+{
+    try
+    {
+        toSQL::sqlMap defs = toSQL::definitions();
+        if (defs.find(Name) == defs.end())
+            return QString::null;
+        return toSQL::string(Name, toMainWidget()->currentConnection()) + ";";
+    }
+    catch (...)
+    {
+        return QString::null;
+    }
+}
+
+void toSQLTemplateItem::collapse(void)
+{
+    while (firstChild())
+        delete firstChild();
+}
+
+QWidget *toSQLTemplateItem::selectedWidget(QWidget *parent)
+{
+    toHighlightedText *widget = new toHighlightedText(parent);
+    widget->setReadOnly(true);
+    widget->setText(allText(0));
+    return widget;
+}

Added: kde-extras/tora/branches/upstream/current/src/tosqledit.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosqledit.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosqledit.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,121 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSQLEDIT_H
+#define TOSQLEDIT_H
+
+#include "config.h"
+#include "totemplate.h"
+#include "totool.h"
+
+class QComboBox;
+class QLineEdit;
+class QListView;
+class QToolButton;
+class toMarkedText;
+class toWorksheet;
+
+class toSQLEdit : public toToolWidget
+{
+    Q_OBJECT
+
+    QListView *Statements;
+    QLineEdit *Name;
+    toMarkedText *Description;
+    QComboBox *Version;
+    toWorksheet *Editor;
+    QToolButton *TrashButton;
+    QToolButton *CommitButton;
+    QString LastVersion;
+    QString Filename;
+
+    bool splitVersion(const QString &split, QCString &provider, QCString &version);
+    void connectList(bool connect);
+protected:
+    void updateStatements(const QString &def = QString::null);
+
+    bool checkStore(bool);
+    virtual bool close(bool del);
+
+    void selectionChanged(const QString &ver);
+    void changeSQL(const QString &name, const QString &ver);
+public:
+    toSQLEdit(QWidget *parent, toConnection &connection);
+    virtual ~toSQLEdit();
+    void commitChanges(bool);
+
+public slots:
+    void loadSQL(void);
+    void saveSQL(void);
+    void deleteVersion(void);
+    void selectionChanged(void);
+    void changeVersion(const QString &);
+    void commitChanges(void)
+    {
+        commitChanges(true);
+    }
+    void editSQL(const QString &);
+    void newSQL();
+};
+
+class toSQLTemplateItem : public toTemplateItem
+{
+    QCString Name;
+public:
+    toSQLTemplateItem(QListView *parent);
+    toSQLTemplateItem(toSQLTemplateItem *parent,
+                      const QCString &name);
+    virtual void expand(void);
+    virtual void collapse(void);
+    virtual QWidget *selectedWidget(QWidget *parent);
+
+    virtual QString allText(int col) const;
+};
+
+class toSQLTemplate : public toTemplateProvider
+{
+public:
+    toSQLTemplate()
+            : toTemplateProvider("SQL Dictionary")
+    { }
+    virtual void insertItems(QListView *parent, QToolBar *)
+    {
+        new toSQLTemplateItem(parent);
+    }
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tosqlparse.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosqlparse.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosqlparse.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1560 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconnection.h"
+#include "tohighlightedtext.h"
+#include "tosqlparse.h"
+
+#include <qapplication.h>
+#include <qstringlist.h>
+
+#ifdef TOPARSE_DEBUG
+
+#include <stdio.h>
+
+bool toMonolithic(void)
+{
+    return false;
+}
+
+void printStatement(toSQLParse::statement &stat, int level)
+{
+    for (int i = 0;i < level;i++)
+        printf(" ");
+
+    switch (stat.Type)
+    {
+    case toSQLParse::statement::Block:
+        printf("Block:");
+        break;
+    case toSQLParse::statement::Statement:
+        printf("Statement:");
+        break;
+    case toSQLParse::statement::List:
+        printf("List:");
+        break;
+    case toSQLParse::statement::Keyword:
+        printf("Keyword:");
+        break;
+    case toSQLParse::statement::Token:
+        printf("Token:");
+        break;
+    case toSQLParse::statement::Raw:
+        printf("Raw:");
+        break;
+    }
+    printf("%s (%d)\n", (const char *)stat.String, stat.Line);
+    if (!stat.Comment.isNull())
+    {
+        for (int i = 0;i < level;i++)
+            printf(" ");
+        printf("Comment:%s\n", (const char *)stat.Comment);
+    }
+    for (std::list<toSQLParse::statement>::iterator i = stat.subTokens().begin();
+            i != stat.subTokens().end();
+            i++)
+        printStatement(*i, level + 1);
+}
+
+int main(int argc, char **argv)
+{
+    QString res = "\n"
+                  "create table test ( col varchar(12) );\n"
+                  "insert into prova3 (prova)\n"
+                  "values ('This insert contains a ''\n"
+                  "and now it goes to new line');\n"
+                  "create or replace PROCEDURE prova1\n"
+                  "is\n"
+                  "v_tmp NUMBER(1);\n"
+                  "begin\n"
+                  "begin\n"
+                  "select 0 into v_tmp from dual;\n"
+                  "exception\n"
+                  "when 1 = 1 then\n"
+                  "    v_tmp := 'Dadum';\n"
+                  "when others then\n"
+                  "if sqlcode=0 then\n"
+                  "null;\n"
+                  "else\n"
+                  "null;\n"
+                  "end if;\n"
+                  "end;\n"
+                  "\n"
+                  "if v_tmp=0 then\n"
+                  "null;\n"
+                  "end if;\n"
+                  "end;"
+                  "comment on column prova1.prova1 is 'This comment is\n"
+                  "on more than one line';\n"
+                  "PACKAGE oasSIMActivation AS\n"
+                  " FUNCTION ParseCommand(Command VARCHAR2,inICC VARCHAR2,Param VARCHAR2) RETURN VARCHAR2;\n"
+                  "\n"
+                  " PROCEDURE InsertActions(inCommandType VARCHAR2,\n"
+                  "    Sim oasSIM%ROWTYPE,\n"
+                  "    inParam VARCHAR2);\n"
+                  "\n"
+                  " PROCEDURE InsertActions(CommandType VARCHAR2,\n"
+                  "    inICC VARCHAR2,\n"
+                  "    inParam VARCHAR2);\n"
+                  "\n"
+                  " PROCEDURE InsertActions(inCommandType VARCHAR2,\n"
+                  "    Service oasService%ROWTYPE);\n"
+                  "\n"
+                  " PROCEDURE InsertActions(CommandType VARCHAR2,\n"
+                  "    inCustomerID NUMBER,\n"
+                  "    inSubID NUMBER,\n"
+                  "    inServiceType VARCHAR2,\n"
+                  "    Param VARCHAR2);\n"
+                  "END;\n"
+                  "DECLARE\n"
+                  "grade CHAR(1);\n"
+                  "appraisal VARCHAR2(20);\n"
+                  "BEGIN\n"
+                  "CASE grade\n"
+                  "WHEN 'A' THEN 'Excellent'\n"
+                  "WHEN 'B' THEN 'Very Good'\n"
+                  "WHEN 'C' THEN 'Good'\n"
+                  "WHEN 'D' THEN 'Fair'\n"
+                  "WHEN 'F' THEN 'Poor'\n"
+                  "ELSE 'No such grade'\n"
+                  "END;\n"
+                  "IF appraisal IS NULL THEN\n"
+                  "NULL;\n"
+                  "END IF;\n"
+                  "END;\n"
+                  "\n"
+                  "BEGIN\n"
+                  "IF 1 == 1 THEN\n"
+                  "NULL;\n"
+                  "END IF;\n"
+                  "IF appraisal IS NULL THEN\n"
+                  "NULL;\n"
+                  "ELSE\n"
+                  "SELECT CASE WHEN dummy='X' THEN 'A' ELSE 'B' END,  2 FROM dual;\n"
+                  "END IF;\n"
+                  "END;\n"
+                  "\n"
+                  "select count(case when dummy = 'Y' then dummy\n"
+                  "             else null end) as tot_str\n"
+                  "from dual;\n"
+                  "\n"
+                  "SET TRANSACTION READ ONLY\n"
+                  "\n"
+                  "PROMPT Hello\n"
+                  "\n"
+                  "/* Test comment\n"
+                  "*/\n"
+                  "INSERT INTO cdrProcess(ProcessID,\n"
+                  "         StartDate,\n"
+                  "         EnvDate,\n"
+                  "         ProgramID,\n"
+                  "         OSUser,\n"
+                  "         SystemUser,\n"
+                  "         ExecName,\n"
+                  "         ExecVersion,\n"
+                  "         ExecParameters,\n"
+                  "         HostName)\n"
+                  "VALUES (:1,\n"
+                  " SYSDATE,\n"
+                  " SYSDATE,\n"
+                  " :2,\n"
+                  " :3,\n"
+                  " :4,\n"
+                  " :5,\n"
+                  " :6,\n"
+                  " :7,\n"
+                  " :8);\n"
+                  "\n"
+                  "CREATE or REPLACE Procedure TEST_SPR\n"
+                  "(\n"
+                  "    IN_TICKET_NUM   IN  VARCHAR2\n"
+                  ")\n"
+                  "IS\n"
+                  "\n"
+                  "BEGIN\n"
+                  "\n"
+                  "BEGIN\n"
+                  "\n"
+                  "for cur_rec in (select emp_id from employees) loop\n"
+                  "\n"
+                  " update employees set emp_id = emp_id + 1\n"
+                  " where emp_id = cur_rec.emp_id;\n"
+                  " commit;\n"
+                  "end loop;\n"
+                  " \n"
+                  "END;\n"
+                  "END TEST_SPR;\n"
+                  "\n"
+                  "SELECT owner,\n"
+                  "       OBJECT,\n"
+                  "       TYPE FROM v$access\n"
+                  " WHERE sid=:f1<char[101]>\n"
+                  " ORDER BY owner,\n"
+                  "   OBJECT,\n"
+                  "   TYPE;\n"
+                  "\n"
+                  "CREATE TABLE ess.EssCalLog (\n"
+                  "        CalID  CHAR(5) NOT NULL,  -- Calender type\n"
+                  " SeqID  NUMBER(8) NOT NULL,\n"
+                  " ActStt  CHAR(1) NOT NULL\n"
+                  "  CONSTRAINT EssCalLog_CK_ActStt CHECK (ActStt IN ('A','D') ),\n"
+                  " LogRun  CHAR(1) NOT NULL  -- Should runs of this type be logged\n"
+                  "  CONSTRAINT EssCalLog_CK_LogRun CHECK (LogRun IN ('Y','N') ),\n"
+                  " PrcID  NUMBER(8) NOT NULL\n"
+                  "  CONSTRAINT EssCalDay_FK_PrcID REFERENCES ess.EssPrc(PrcID),\n"
+                  " Dsc  VARCHAR2(4000) NOT NULL, -- Description of this type\n"
+                  " CONSTRAINT EssCal_PK PRIMARY KEY (CalID,SeqID)\n"
+                  "  USING INDEX TABLESPACE Index02 -- A Comment\n"
+                  ");\n"
+                  "-- Another comment\n"
+                  "\n"
+                  "CREATE OR REPLACE procedure spTuxGetAccData (oRet                        OUT  NUMBER,\n"
+                  "          oNumSwt                     OUT  NUMBER)\n"
+                  "IS\n"
+                  "  vYear  CHAR(4);\n"
+                  "BEGIN\n"
+                  "    <<label>>\n"
+                  "    DECLARE\n"
+                  "      oTrdStt NUMBER;\n"
+                  "    BEGIN\n"
+                  "      oTrdStt := 0;\n"
+                  "    END;\n"
+                  "\n"
+                  "    EXCEPTION\n"
+                  "        WHEN VALUE_ERROR THEN\n"
+                  "     oRet := 3;\n"
+                  " WHEN NO_DATA_FOUND THEN\n"
+                  "     oRet := 2;\n"
+                  " WHEN OTHERS THEN\n"
+                  "     oRet := 1;\n"
+                  "END;\n"
+                  "CREATE OR REPLACE procedure spTuxGetAccData as\n"
+                  "  vYear  CHAR(4);\n"
+                  "begin\n"
+                  "  null;\n"
+                  "end;\n"
+                  "-------------------------------------------------------------------\n"
+                  "--    EssCal, Current calendar view\n"
+                  "\n"
+                  "CREATE VIEW ess.EssCal AS\n"
+                  "        SELECT CalID,\n"
+                  "        LogRun,\n"
+                  "        PrcID,\n"
+                  "        Dsc\n"
+                  "   FROM ess.EssCalLog a\n"
+                  "  WHERE SeqID = (SELECT MAX(aa.SeqID) FROM EssCalLog aa WHERE aa.CalID = a.CalID)\n"
+                  "    AND ActStt = 'A';\n"
+                  "\n"
+                  "    /* A little comment\n"
+                  "     */\n"
+                  "    SELECT /*+\n"
+                  "FULL(a)\n"
+                  "*/ a.TskCod TskCod -- Test comment\n"
+                  "      ,a.CreEdt CreEdt,\n"
+                  "       a.TspActOprID /* One comment OprID */ , -- Another comment\n"
+                  "       COUNT(1) Tot,\n"
+                  "       COUNT(a.TspActOprID) Lft,\n"
+                  "       b.TraCod TraCod,\n"
+                  "       SUM(b.FinAmt) FinAmt,\n"
+                  "       TraCod\n"
+                  "  FROM EssTsk a,EssTra b\n"
+                  " WHERE ((a.TspActOprID = 'Test') OR a.TspActOprID IS NULL)\n"
+                  "   AND DECODE(a.TspActOprID,NULL,NULL,a.TskID) = b.TskID(+)\n"
+                  " GROUP BY a.TskCod,a.CreEdt,a.TspActOprID,b.TraCod\n"
+                  "HAVING COUNT(a.TspActOprID) > 0;\n"
+                  "SELECT a.Sid \"-Id\",\n"
+                  "       a.Serial# \"-Serial#\",\n"
+                  "       a.SchemaName \"Schema\",\n"
+                  "       a.Status \"Status\",\n"
+                  "       a.Server \"Server\",\n"
+                  "       a.OsUser \"Osuser\",\n"
+                  "       a.Machine \"Machine\",\n"
+                  "       a.Program \"Program\",\n"
+                  "       a.Type \"Type\",\n"
+                  "       a.Module \"Module\",\n"
+                  "       a.Action \"Action\",\n"
+                  "       a.Client_Info \"Client Info\",\n"
+                  "       b.Block_Gets \"-Block Gets\",\n"
+                  "       b.Consistent_Gets \"-Consistent Gets\",\n"
+                  "       b.Physical_Reads \"-Physical Reads\",\n"
+                  "       b.Block_Changes \"-Block Changes\",\n"
+                  "       b.Consistent_Changes \"-Consistent Changes\",\n"
+                  "       c.Value*10 \"-CPU (ms)\",\n"
+                  "       a.Process \"-Process\",\n"
+                  "       a.SQL_Address||':'||SQL_Hash_Value \" SQL Address\",\n"
+                  "       a.Prev_SQL_Addr||':'||Prev_Hash_Value \" Prev SQl Address\"\n"
+                  "  FROM v$session a,\n"
+                  "       v$sess_io b,\n"
+                  "       v$sesstat c\n"
+                  " WHERE a.sid = b.sid(+)\n"
+                  "   AND a.sid = c.sid(+) AND (c.statistic# = 12 OR c.statistic# IS NULL)\n"
+                  " ORDER BY a.Sid;\n"
+                  "select a.TskCod TskCod,\n"
+                  "       count(1) Tot\n"
+                  "  from (select * from EssTsk where PrsID >= '1940') ,EssTra b\n"
+                  " where decode(a.TspActOprID,NULL,NULL,a.PrsID)+5 = b.PrsID(+)\n"
+                  " group by a.TskCod,a.CreEdt,a.TspActOprID,b.TraCod\n"
+                  "having count(a.TspActOprID) > 0;\n"
+                  "\n"
+                  "CREATE OR REPLACE procedure spTuxGetAccData (oRet OUT  NUMBER)\n"
+                  "AS\n"
+                  "  vYear  CHAR(4);\n"
+                  "BEGIN\n"
+                  "    DECLARE\n"
+                  "      oTrdStt NUMBER;\n"
+                  "    BEGIN\n"
+                  "      oTrdStt := 0;\n"
+                  "    END;\n"
+                  "    EXCEPTION\n"
+                  "        WHEN VALUE_ERROR THEN\n"
+                  "     oRet := 3;\n"
+                  "END;"
+#if 0
+
+#endif
+                  ;
+
+    QApplication test(argc, argv);
+    toMarkedText text(NULL);
+    text.setText(res);
+
+    {
+        toSQLParse::editorTokenizer tokens(&text);
+
+        std::list<toSQLParse::statement> stat = toSQLParse::parse(tokens);
+
+        for (std::list<toSQLParse::statement>::iterator i = stat.begin();i != stat.end();i++)
+        {
+            printStatement(*i, 1);
+        }
+    }
+
+    QString firstparse = toSQLParse::indent(res);
+    QString secondparse = toSQLParse::indent(firstparse);
+
+    printf("First\n\n%s\n", (const char *)firstparse);
+
+    if (firstparse != secondparse)
+    {
+        printf("Reparse doesn't match\n");
+        printf("Second\n\n%s\n", (const char *)secondparse);
+    }
+
+    return 0;
+}
+
+#endif
+
+toSQLParse::statement::statement(type ntype, const QString &token, int cline)
+        : Type(ntype), String(token), Line(cline)
+{
+    SubTokens = NULL;
+}
+
+std::list<toSQLParse::statement> &toSQLParse::statement::subTokens(void)
+{
+    if (!SubTokens)
+        SubTokens = new std::list<statement>;
+    return *SubTokens;
+}
+
+toSQLParse::statement::~statement()
+{
+    delete SubTokens;
+}
+
+toSQLParse::statement::statement(const statement &stat)
+{
+    Type = stat.Type;
+    String = stat.String;
+    Comment = stat.Comment;
+    Line = stat.Line;
+    if (stat.SubTokens)
+    {
+        SubTokens = new std::list<statement>;
+        (*SubTokens) = (*stat.SubTokens);
+    }
+    else
+        SubTokens = NULL;
+}
+
+const toSQLParse::statement &toSQLParse::statement::operator = (const statement &stat)
+{
+    Type = stat.Type;
+    String = stat.String;
+    Comment = stat.Comment;
+    Line = stat.Line;
+    delete SubTokens;
+    if (stat.SubTokens)
+    {
+        SubTokens = new std::list<statement>;
+        (*SubTokens) = (*stat.SubTokens);
+    }
+    else
+        SubTokens = NULL;
+    return *this;
+}
+
+bool toSQLParse::statement::operator == (const statement &stat) const
+{
+    if (Type != stat.Type ||
+            Comment != stat.Comment ||
+            String != stat.String)
+        return false;
+    if (SubTokens)
+    {
+        if (!stat.SubTokens && SubTokens->begin() != SubTokens->end())
+            return false;
+        if ((*SubTokens) != (*stat.SubTokens))
+            return false;
+    }
+    else if (stat.SubTokens && stat.SubTokens->begin() != stat.SubTokens->end())
+        return false;
+    return true;
+}
+
+static const char *Operators[] =
+    {":=",
+     "=>",
+     "||",
+     "**",
+     "<<",
+     ">>",
+     "..",
+     "<>",
+     "!=",
+     "~=",
+     "^=",
+     "<=",
+     ">=",
+     NULL
+    };
+
+QString toSQLParse::stringTokenizer::getToken(bool forward, bool comments)
+{
+    QChar c;
+    QChar nc;
+    QChar endString;
+
+    enum {
+        space,
+        any,
+        identifier,
+        string,
+        comment,
+        label,
+        bindOpen,
+        bindClose
+    } state = space;
+
+    QString token;
+
+    int inc = forward ? 1 : -1;
+
+    while ((forward && Offset < int(String.length())) || (!forward && Offset >= 1))
+    {
+        if (!forward)
+            Offset--;
+        c = String[Offset];
+        if (c == '\n')
+            Line++;
+        if ((forward && Offset < int(String.length() - 1)) || (!forward && Offset > 0))
+            nc = String[Offset + inc];
+        else
+            nc = '\n';
+        if (state == space)
+        {
+            if (forward && c == '-' && nc == '-')
+            {
+                int spos = Offset;
+                if (forward)
+                    for (Offset++;Offset < int(String.length()) && String[Offset] != '\n';Offset++)
+                        ;
+                if (comments)
+                    return String.mid(spos, Offset - spos);
+                continue;
+            }
+            if (c == '/' && nc == '*')
+                state = comment;
+            else if ((forward && c == '<' && nc == '<') ||
+                     (!forward && c == '>' && nc == '>'))
+                state = label;
+            else if (!c.isSpace())
+                state = any;
+        }
+
+        if (forward)
+            Offset++;
+
+        if (state != space)
+        {
+            if (forward)
+                token += c;
+            else
+                token.prepend(c);
+            switch (state)
+            {
+            case comment:
+                if (c == '*' && nc == '/')
+                {
+                    if (forward)
+                        token += nc;
+                    else
+                        token.prepend(nc);
+                    Offset += inc;
+                    if (comments)
+                        return token;
+                    else
+                    {
+                        state = space;
+                        token = QString::null;
+                    }
+                }
+                break;
+            case label:
+                if ((forward && c == '>' && nc == '>') ||
+                        (!forward && c == '<' && nc == '<'))
+                {
+                    if (forward)
+                        token += nc;
+                    else
+                        token.prepend(nc);
+                    Offset += inc;
+                    return token;
+                }
+                break;
+            case space:
+                break;
+            case bindOpen:
+                if (!toIsIdent(nc))
+                {
+                    if (nc == '<')
+                        state = bindClose;
+                    else
+                        return token;
+                }
+                break;
+            case bindClose:
+                if (c == '>')
+                    return token;
+                break;
+            case any:
+                if (c == ':' && toIsIdent(nc))
+                {
+                    state = bindOpen;
+                }
+                else if (toIsIdent(c))
+                {
+                    if (!toIsIdent(nc))
+                        return token;
+                    state = identifier;
+                }
+                else if (c == '\'' || c == analyzer().quoteCharacter())
+                {
+                    endString = c;
+                    state = string;
+                }
+                else
+                {
+                    for (int i = 0;Operators[i];i++)
+                    {
+                        if ((forward && c == Operators[i][0] && nc == Operators[i][1]) ||
+                                (!forward && nc == Operators[i][0] && c == Operators[i][1]))
+                        {
+                            if (forward)
+                                token += nc;
+                            else
+                                token.prepend(nc);
+                            Offset += inc;
+                            break;
+                        }
+                    }
+                    return token;
+                }
+                break;
+            case identifier:
+                if (!toIsIdent(nc))
+                    return token;
+                break;
+            case string:
+                if (c == endString)
+                {
+                    if (nc == endString)
+                    {
+                        if (forward)
+                        {
+                            token += nc;
+                            Offset++;
+                        }
+                        else
+                        {
+                            token.prepend(nc);
+                            Offset--;
+                        }
+                    }
+                    else
+                        return token;
+                }
+                break;
+            }
+        }
+    }
+    return token;
+}
+
+QString toSQLParse::stringTokenizer::remaining(bool eol)
+{
+    QString ret;
+    if (eol)
+    {
+        int pos = String.find('\n', Offset);
+        if (pos < 0)
+            pos = Offset;
+        ret = String.mid(Offset, pos - Offset);
+        Offset = pos;
+    }
+    else
+    {
+        ret = String.mid(Offset);
+        Offset = String.length();
+    }
+    return ret;
+}
+
+toSQLParse::editorTokenizer::editorTokenizer(toMarkedText *editor, int offset, int line)
+        : tokenizer(offset, line)
+{
+    Editor = editor;
+    toHighlightedText *text = dynamic_cast<toHighlightedText *>(editor);
+    if (text)
+        setAnalyzer(text->analyzer());
+}
+
+QString toSQLParse::editorTokenizer::getToken(bool forward, bool comments)
+{
+    bool first = true;
+    while (Line < int(Editor->lines()) && Line >= 0)
+    {
+        QString line = Editor->text(Line);
+        if (!first)
+        {
+            if (forward)
+                Offset = 0;
+            else
+                Offset = line.length();
+        }
+        stringTokenizer token(line, analyzer(), Offset, forward);
+        QString ret = token.getToken(forward, true);
+        Offset = token.offset();
+
+        if (!ret.isNull())
+        {
+            if (forward)
+            {
+                QString end;
+                if (ret.startsWith(("/*")) &&
+                        (ret.at(ret.length() - 2) != '*' ||
+                         ret.at(ret.length() - 1) != '/'))
+                {
+                    end = ("*/");
+                }
+                else if (ret.startsWith("'") && ((ret.contains("'") % 2) != 0 || ret.at(ret.length() - 1) != '\''))
+                {
+                    end = ("'");
+                }
+                else if (ret.startsWith(analyzer().quoteCharacter()) &&
+                         ((ret.contains(analyzer().quoteCharacter()) % 2) != 0 || ret.at(ret.length() - 1) != analyzer().quoteCharacter()))
+                {
+                    end = analyzer().quoteCharacter();
+                }
+                if (!end.isNull())
+                {
+                    for (Line++;
+                            Line < int(Editor->lines()) && (Offset = Editor->text(Line).find(end)) < 0;
+                            Line++)
+                        ret += ("\n") + Editor->text(Line);
+                    if (Line < int(Editor->lines()))
+                    {
+                        ret += ("\n") + Editor->text(Line).mid(0, Offset + end.length());
+                        Offset += end.length();
+                    }
+                }
+            }
+            else
+            {
+                QString end;
+                if (ret.length() >= 2 &&
+                        ret.at(ret.length() - 2) == '*' &&
+                        ret.at(ret.length() - 1) == '/' &&
+                        !ret.startsWith(("/*")))
+                {
+                    end = ("/*");
+                }
+                else if ((ret.length() >= 1 && ret.at(ret.length() - 1) == '\'') &&
+                         (ret.length() < 2 || ret[0] != '\''))
+                {
+                    end = ("\'");
+                }
+                else if ((ret.length() >= 1 && ret.at(ret.length() - 1) == analyzer().quoteCharacter()) &&
+                         (ret.length() < 2 || ret.at(0) != analyzer().quoteCharacter()))
+                {
+                    end = analyzer().quoteCharacter();
+                }
+                if (!end.isNull())
+                {
+                    for (Line--;
+                            Line >= 0 && (Offset = Editor->text(Line).findRev(end)) < 0;
+                            Line--)
+                        ret.prepend(Editor->text(Line) + ("\n"));
+                    if (Line >= 0)
+                    {
+                        QString str = Editor->text(Line);
+                        ret.prepend(str.mid(Offset, str.length() - Offset) + ("\n"));
+                    }
+                }
+            }
+            if (comments || (!ret.startsWith(("/*")) && !ret.startsWith(("--")) && !ret.startsWith("//")))
+                return ret;
+            else
+            {
+                first = true;
+                continue;
+            }
+        }
+        Line += (forward ? 1 : -1);
+        first = false;
+    }
+    return QString::null;
+}
+
+QString toSQLParse::editorTokenizer::remaining(bool eol)
+{
+    if (Line >= Editor->lines())
+        return QString::null;
+    if (!eol)
+    {
+        QStringList rows;
+        rows << Editor->text(Line).mid(Offset);
+        for (int i = Line;i < Editor->lines();i++)
+            rows << Editor->text(i);
+        Line = Editor->lines();
+        Offset = 0;
+        return rows.join(("\n"));
+    }
+    else
+    {
+        QString line = Editor->text(Line);
+        QString ret = line.mid(offset());
+        Offset = line.length();
+        return ret;
+    }
+}
+
+toSQLParse::statement toSQLParse::parseStatement(tokenizer &tokens, bool declare, bool lst)
+{
+    statement ret(statement::Statement);
+
+    toSyntaxAnalyzer &syntax = tokens.analyzer();
+
+    QString first;
+    QString realfirst;
+    bool nokey = false;
+    bool block = false;
+    for (QString token = tokens.getToken(true, true);
+            !token.isNull();
+            token = tokens.getToken(true, true))
+    {
+        QString upp = token.upper();
+#ifdef TOPARSE_DEBUG
+
+        printf("%s (%d)\n", (const char*)token, tokens.line());
+#endif
+
+        if (first.isNull() && !token.startsWith(("/*")) && !token.startsWith("--") && !token.startsWith("//"))
+            realfirst = first = upp;
+
+        if (upp == ("PROCEDURE") ||
+                upp == ("FUNCTION") ||
+                upp == ("PACKAGE"))
+            block = true;
+
+        if (upp == ("SELF"))
+            block = false;
+
+        if (first != ("END") && ((first == ("IF") && upp == ("THEN")) ||
+                                 upp == ("LOOP") ||
+                                 upp == ("DO") ||
+                                 (syntax.declareBlock() && upp == ("DECLARE")) ||
+                                 (block && upp == ("AS")) ||
+                                 (block && upp == ("IS")) ||
+                                 ((!declare || block) && upp == ("BEGIN"))))
+        {
+            block = false;
+            statement blk(statement::Block);
+            ret.subTokens().insert(ret.subTokens().end(), statement(statement::Keyword, token, tokens.line()));
+            blk.subTokens().insert(blk.subTokens().end(), ret);
+            statement cur(statement::Statement);
+            bool dcl = (upp == ("DECLARE") || upp == ("IS") || upp == ("AS"));
+            do
+            {
+                cur = parseStatement(tokens, dcl, false);
+                if (cur.Type == statement::List)
+                    toStatusMessage(qApp->translate("toSQLparse", "Unbalanced parenthesis (Too many ')')"));
+                blk.subTokens().insert(blk.subTokens().end(), cur);
+                if (cur.subTokens().begin() != cur.subTokens().end() &&
+                        (*(cur.subTokens().begin())).String.upper() == ("BEGIN"))
+                    dcl = false;
+            }
+            while (cur.subTokens().begin() != cur.subTokens().end() &&
+                    (*cur.subTokens().begin()).String.upper() != ("END"));
+            return blk;
+        }
+        else if (((first == "IF" && upp == "THEN") ||
+                  (first == "WHEN" && upp == "THEN") ||
+                  (first == "ELSIF" && upp == "THEN") ||
+                  upp == ("BEGIN") ||
+                  upp == ("EXCEPTION") ||
+                  first == ("ELSE")) && !lst)
+        {
+            ret.subTokens().insert(ret.subTokens().end(), statement(statement::Keyword, token, tokens.line()));
+            return ret;
+        }
+        else if (first == ("ASSIGN") ||
+                 first == ("SET") ||
+                 first == ("PROMPT") ||
+                 first == ("COLUMN") ||
+                 first == ("SPOOL") ||
+                 first == ("STORE") ||
+                 first == ("REMARK") ||
+                 first == ("REM"))
+        {
+            ret.subTokens().insert(ret.subTokens().end(), statement(statement::Keyword, token, tokens.line()));
+            int line = tokens.line();
+            int offset = tokens.offset();
+            for (QString tmp = tokens.getToken(true, true);line == tokens.line();tmp = tokens.getToken(true, true))
+                ret.subTokens().insert(ret.subTokens().end(), statement(statement::Token, tmp, line));
+            tokens.setLine(line);
+            tokens.setOffset(offset);
+            tokens.remaining(true);
+            return ret;
+        }
+        else if (upp == (",") ||
+                 (syntax.reservedWord(upp) &&
+                  upp != ("NOT") &&
+                  upp != ("IS") &&
+                  upp != ("LIKE") &&
+                  upp != ("IN") &&
+                  upp != ("ELSE") &&
+                  upp != ("ELSIF") &&
+                  upp != ("END") &&
+                  upp != ("BETWEEN") &&
+                  upp != ("ASC") &&
+                  upp != ("DESC") &&
+                  upp != ("NULL")) && !nokey)
+        {
+            ret.subTokens().insert(ret.subTokens().end(), statement(statement::Keyword, token, tokens.line()));
+            nokey = false;
+        }
+        else if (upp == ("("))
+        {
+            ret.subTokens().insert(ret.subTokens().end(), statement(statement::Token, token, tokens.line()));
+            statement lst = parseStatement(tokens, false, true);
+            statement t = toPop(lst.subTokens());
+            if (lst.Type != statement::List)
+                toStatusMessage(qApp->translate("toSQLparse", "Unbalanced parenthesis (Too many '(')"));
+            nokey = false;
+            if (first == ("CREATE") && !block)
+            {
+                statement end = parseStatement(tokens, false, true);
+                statement blk(statement::Block);
+                blk.subTokens().insert(blk.subTokens().end(), ret);
+                blk.subTokens().insert(blk.subTokens().end(), lst);
+                end.subTokens().insert(end.subTokens().begin(), t);
+                blk.subTokens().insert(blk.subTokens().end(), end);
+                return blk;
+            }
+            else
+            {
+                ret.subTokens().insert(ret.subTokens().end(), lst);
+                ret.subTokens().insert(ret.subTokens().end(), t);
+            }
+        }
+        else if (upp == (")"))
+        {
+            ret.Type = statement::List;
+            ret.subTokens().insert(ret.subTokens().end(), statement(statement::Token, token, tokens.line()));
+            return ret;
+        }
+        else if (upp == (";"))
+        {
+            ret.subTokens().insert(ret.subTokens().end(), statement(statement::Token, token, tokens.line()));
+            return ret;
+        }
+        else if (upp.startsWith(("/*+")) || upp.startsWith(("--+")))
+        {
+            QString com = token;
+            if (com.startsWith(("--+")))
+                com = ("/*+ ") + com.mid(3) + (" */");
+            ret.subTokens().insert(ret.subTokens().end(), statement(statement::Token,
+                                   com.simplifyWhiteSpace(), tokens.line()));
+        }
+        else if (upp.startsWith(("/*")) || upp.startsWith(("--")) || upp.startsWith("//"))
+        {
+            if ( ret.subTokens().empty() )
+            {
+                if (ret.Comment.isNull())
+                    ret.Comment = token;
+                else
+                    ret.Comment += ("\n") + token;
+            }
+            else
+            {
+                QString &com = (*ret.subTokens().rbegin()).Comment;
+                if (com.isEmpty())
+                    com = token;
+                else
+                    com += ("\n") + token;
+            }
+        }
+        else
+        {
+            ret.subTokens().insert(ret.subTokens().end(), statement(statement::Token, token, tokens.line()));
+            nokey = (token == ("."));
+        }
+        if (upp == ("AS") || upp == ("IS"))
+            first = upp;
+        else if (first == ("IS") && upp == ("NULL"))
+            first = realfirst;
+    }
+    return ret;
+}
+
+std::list<toSQLParse::statement> toSQLParse::parse(tokenizer &tokens)
+{
+    std::list<toSQLParse::statement> ret;
+    statement cur(statement::Statement);
+    for (cur = parseStatement(tokens, false, false);
+            cur.subTokens().begin() != cur.subTokens().end();
+            cur = parseStatement(tokens, false, false))
+    {
+        if (cur.Type == statement::List)
+            toStatusMessage(qApp->translate("toSQLparse", "Unbalanced parenthesis (Too many ')')"));
+        ret.insert(ret.end(), cur);
+    }
+    QString str = tokens.remaining(false);
+    if (!str.isEmpty())
+        ret.insert(ret.end(), statement(statement::Raw,
+                                        str, tokens.line()));
+    return ret;
+}
+
+toSQLParse::statement toSQLParse::parseStatement(tokenizer &tokens)
+{
+    statement cur(statement::Statement);
+    cur = parseStatement(tokens, false, false);
+    if (cur.Type == statement::List)
+        toStatusMessage(qApp->translate("toSQLparse", "Unbalanced parenthesis (Too many ')')"));
+    return cur;
+}
+
+int toSQLParse::countIndent(const QString &txt, int &chars)
+{
+    int level = 0;
+    while (txt[chars].isSpace() && chars < int(txt.length()))
+    {
+        char c = txt[chars].latin1();
+        if (c == '\n')
+            level = 0;
+        else if (c == ' ')
+            level++;
+        else if (c == '\t')
+            level = (level / toMarkedText::defaultTabWidth() + 1) * toMarkedText::defaultTabWidth();
+        chars++;
+    }
+    return level;
+}
+
+toSQLParse::settings toSQLParse::Settings = {true,
+        false,
+        false,
+        false,
+        true,
+        true,
+        true,
+        4,
+        60};
+
+QString toSQLParse::indentString(int level)
+{
+    QString ret;
+    if (Settings.ExpandSpaces)
+    {
+        for (int i = 0;i < level / 8;i++)
+            ret += ("\t");
+        for (int j = 0;j < level % 8;j++)
+            ret += (" ");
+    }
+    else
+        for (int j = 0;j < level;j++)
+            ret += (" ");
+    return ret;
+}
+
+static int CurrentColumn(const QString &txt)
+{
+    int pos = txt.findRev(("\n"));
+    if (pos < 0)
+        pos = 0;
+    else
+        pos++;
+
+    int level = 0;
+    while (pos < int(txt.length()))
+    {
+        char c = txt[pos].latin1();
+        if (c == '\n')
+            level = 0;
+        else if (c == '\t')
+            level = (level / toMarkedText::defaultTabWidth() + 1) * toMarkedText::defaultTabWidth();
+        else
+            level++;
+        pos++;
+    }
+    return level;
+
+}
+
+static QString IndentComment(int level, int current, const QString &comment, bool endNl)
+{
+    bool nl = true;
+    QString ret;
+    if (comment.length())
+    {
+        if (level <= current && (level || current))
+        {
+            ret += ("\n");
+            current = 0;
+        }
+        for (unsigned int i = 0;i < comment.length();i++)
+        {
+            if (!nl || !comment.at(i).isSpace())
+            {
+                if (nl)
+                {
+                    if (current == 0)
+                        ret += toSQLParse::indentString(level);
+                    else
+                    {
+                        while (current < level)
+                        {
+                            ret += (" ");
+                            current++;
+                        }
+                    }
+                    if (comment.at(i) == ("*"))
+                    {
+                        ret += (" ");
+                        current++;
+                    }
+                    nl = false;
+                }
+                ret += comment.at(i);
+                if (comment.at(i) == '\n')
+                {
+                    current = 0;
+                    nl = true;
+                }
+                else
+                    nl = false;
+            }
+        }
+        if (!nl)
+            ret += ("\n");
+    }
+    else if (endNl)
+    {
+        ret = ("\n");
+    }
+    return ret;
+}
+
+static QString AddComment(const QString &old, const QString &comment)
+{
+    QString ret = old;
+    if (!ret.isEmpty() && !comment.isEmpty())
+        ret += ("\n");
+    ret += comment;
+    return ret;
+}
+
+QString toSQLParse::indentStatement(statement &stat, int level)
+{
+    return indentStatement(stat, level, toSyntaxAnalyzer::defaultAnalyzer());
+}
+
+QString toSQLParse::indentStatement(statement &stat, toConnection &conn, int level)
+{
+    return indentStatement(stat, level, conn.analyzer());
+}
+
+QString toSQLParse::indentStatement(statement &stat, int level, toSyntaxAnalyzer &syntax)
+{
+    QString ret;
+
+    switch (stat.Type)
+    {
+    default:
+        throw qApp->translate("toSQLparse", "Internal error in toSQLParse, should never get here");
+    case statement::Block:
+        {
+            ret = IndentComment(level, 0, stat.Comment, false);
+            int exc = 0;
+            for (std::list<toSQLParse::statement>::iterator i = stat.subTokens().begin();
+                    i != stat.subTokens().end();
+                    i++)
+            {
+                int add
+                    = 0;
+                std::list<toSQLParse::statement>::iterator j = i;
+                j++;
+                if (i != stat.subTokens().begin() &&
+                        j != stat.subTokens().end())
+                    add
+                        = Settings.IndentLevel;
+                else
+                    exc = 0;
+
+                QString t;
+                if ((*i).subTokens().begin() != (*i).subTokens().
+                        end())
+                    t = (*(*i).subTokens().begin()).String.upper();
+                if (t == ("BEGIN") || t == ("WHEN") || t == ("ELSE") || t == ("ELSIF"))
+                    add
+                        = 0;
+                if ((*i).Type == statement::List)
+                    ret += indentString(level + add
+                                            + exc);
+                ret += indentStatement(*i, level + add
+                                           + exc, syntax);
+                if ((*i).Type == statement::List)
+                {
+                    int i;
+                    for (i = ret.length() - 1;i >= 0 && ret[i].isSpace();i--)
+                        ;
+                    ret = ret.mid(0, std::max(i + 1, 0));
+                    ret += ("\n");
+                    ret += indentString(level + exc);
+                }
+                if (t == ("EXCEPTION"))
+                    exc = Settings.IndentLevel * 2;
+            }
+            if (Settings.EndBlockNewline && level != 0)
+                ret += ("\n");
+        }
+        break;
+    case statement::List:
+    case statement::Statement:
+        int maxlev = 0;
+        int maxlevorig = 0;
+        bool useMaxLev = false;
+        bool any = true;
+        int current;
+        bool first;
+        bool noKeyBreak = false;
+        bool lineList = false;
+        QString comment;
+        if (stat.Type == statement::Statement)
+        {
+            ret = IndentComment(level, 0, stat.Comment, false);
+            useMaxLev = true;
+            first = true;
+            current = 0;
+        }
+        else
+        {
+            for (std::list<toSQLParse::statement>::iterator i = stat.subTokens().begin();
+                    i != stat.subTokens().end();)
+            {
+                if ((*i).Type != statement::Keyword)
+                    noKeyBreak = true;
+                else
+                    useMaxLev = true;
+                break;
+            }
+            current = level;
+            first = true;
+        }
+        if (useMaxLev)
+        {
+            int count = 0;
+            for (std::list<toSQLParse::statement>::iterator i = stat.subTokens().begin();
+                    i != stat.subTokens().end();
+                    i++)
+            {
+                if (any)
+                {
+                    QString upp = (*i).String.upper();
+                    if ((*i).Type == statement::Keyword &&
+                            upp != ("LOOP") &&
+                            upp != ("DO") &&
+                            upp != ("THEN") &&
+                            upp != ("AS") &&
+                            upp != ("IS"))
+                    {
+                        if (int((*i).String.length()) + 1 > maxlev)
+                            maxlev = (*i).String.length() + 1;
+                        count++;
+                        any = false;
+                    }
+                    else if (i == stat.subTokens().begin())
+                    {
+                        noKeyBreak = true;
+                        break;
+                    }
+                }
+                else if ((*i).Type == statement::Token)
+                    any = true;
+                if ((*i).Type == statement::List)
+                    count++;
+            }
+            if (count <= 1 && maxlev > 0)
+                maxlev--;
+            maxlevorig = maxlev;
+            any = true;
+        }
+
+        for (std::list<toSQLParse::statement>::iterator i = stat.subTokens().begin();
+                i != stat.subTokens().end();
+                i++)
+        {
+            comment = AddComment(comment, (*i).Comment);
+            QString upp = (*i).String.upper();
+#ifdef TOPARSE_DEBUG
+
+            printf("%s\n", (const char*)(*i).String.latin1());
+#endif
+
+            if ((*i).Type == statement::List)
+            {
+                if (Settings.OperatorSpace)
+                {
+                    ret += (" ");
+                    current++;
+                }
+                QString t = indentStatement(*i, current, syntax);
+                if (t.find(("\n")) >= 0)
+                    current = CurrentColumn(t);
+                else
+                    current += CurrentColumn(t);
+                ret += t;
+                any = true;
+            }
+            else if ((*i).String == (","))
+            {
+                if (Settings.CommaBefore)
+                {
+                    ret += IndentComment(Settings.CommentColumn, current, comment, true);
+                    comment = QString::null;
+                    ret += indentString(level + maxlev - (Settings.OperatorSpace ? 2 : 1));
+                    ret += (",");
+                }
+                else
+                {
+                    ret += (",");
+                    ret += IndentComment(Settings.CommentColumn, current + 1, comment, true);
+                    comment = QString::null;
+                    ret += indentString(level + maxlev);
+                }
+                current = level + maxlev;
+                any = false;
+                lineList = true;
+            }
+            else if ((*i).Type == statement::Keyword && (upp == ("LOOP") ||
+                     upp == ("DO") ||
+                     upp == ("THEN") ||
+                     upp == ("AS") ||
+                     upp == ("IS")))
+            {
+                if (!Settings.BlockOpenLine)
+                {
+                    if (ret.length() > 0)
+                    {
+                        if (toIsIdent(ret.at(ret.length() - 1)) ||
+                                ret.at(ret.length() - 1) == syntax.quoteCharacter() ||
+                                ret.at(ret.length() - 1) == '\'' ||
+                                Settings.OperatorSpace)
+                        {
+                            ret += (" ");
+                            current++;
+                        }
+                    }
+                    ret += Settings.KeywordUpper ? (*i).String.upper() : (*i).String;
+                    current += (*i).String.length();
+                }
+                else
+                {
+                    ret += IndentComment(Settings.CommentColumn, current, comment, true);
+                    comment = QString::null;
+                    ret += indentString(level);
+                    ret += Settings.KeywordUpper ? (*i).String.upper() : (*i).String;
+                    current = level + (*i).String.length();
+                }
+                any = false;
+            }
+            else if (any && (*i).Type == statement::Keyword && !noKeyBreak)
+            {
+                if (first)
+                    first = false;
+                else
+                {
+                    ret += IndentComment(Settings.CommentColumn, current, comment, true);
+                    current = 0;
+                    comment = QString::null;
+                }
+                if (current == 0)
+                {
+                    ret += indentString(level);
+                    current = level;
+                }
+                else
+                    while (current < level)
+                    {
+                        ret += (" ");
+                        current++;
+                    }
+                maxlev = maxlevorig;
+                QString word = Settings.KeywordUpper ? (*i).String.upper() : (*i).String;
+                if (ret.length())
+                {
+                    ret += QString("%1").arg(word,
+                                             Settings.RightSeparator ? maxlev - 1 : 1 - maxlev);
+                    current = level + std::max(int(word.length()), maxlev - 1);
+                }
+                else
+                {
+                    ret += word;
+                    current = level + word.length();
+                }
+                any = false;
+                lineList = false;
+            }
+            else
+            {
+                QString t = (*i).String;
+                bool add
+                    = false;
+                if ((*i).Type == statement::Keyword)
+                {
+                    if (!lineList &&
+                            !any &&
+                            (*i).Type == statement::Keyword &&
+                            !noKeyBreak &&
+                            upp == ("BY"))
+                        add
+                            = true;
+                }
+                else
+                {
+                    any = true;
+                }
+                if (syntax.reservedWord(upp) && Settings.KeywordUpper)
+                    t = upp;
+
+                int extra;
+                if (first)
+                {
+                    first = false;
+                    any = false;
+                    extra = 0;
+                }
+                else
+                {
+                    if (ret.length() > 0 &&
+                            !ret.at(ret.length() - 1).isSpace() &&
+                            (Settings.OperatorSpace || ((toIsIdent(t[0]) ||
+                                                         t[0] == syntax.quoteCharacter() || t[0] == '\'') &&
+                                                        (toIsIdent(ret.at(ret.length() - 1)) ||
+                                                         ret.at(ret.length() - 1) == syntax.quoteCharacter() ||
+                                                         ret.at(ret.length() - 1) == '\'')
+                                                       )
+                            )
+                       )
+                    {
+                        if (t != (";") &&
+                                t != (".") &&
+                                ret.at(ret.length() - 1) != '.' &&
+                                current != 0)
+                        {
+                            current++;
+                            ret += (" ");
+                        }
+                    }
+                    else if (ret.length() > 2 && ret.at(ret.length() - 2) == '*' && ret.at(ret.length() - 1) == '/')
+                    {
+                        current++;
+                        ret += (" ");
+                    }
+                    extra = maxlev;
+                }
+                if (current < level + maxlev)
+                {
+                    if (current == 0)
+                        ret += indentString(level + maxlev);
+                    else
+                        while (current < level + maxlev)
+                        {
+                            ret += (" ");
+                            current++;
+                        }
+                    current = level + maxlev;
+                }
+                ret += t;
+                current += t.length();
+                if (t.startsWith(("<<")))
+                {
+                    ret += ("\n");
+                    current = 0;
+                }
+
+                if (add
+                   )
+                    maxlev += t.length() + 1;
+            }
+        }
+        if (stat.Type == statement::Statement)
+        {
+            ret += IndentComment(Settings.CommentColumn, current, comment, true);
+            comment = QString::null;
+            if (Settings.EndBlockNewline &&
+                    level == 0 &&
+                    stat.subTokens().begin() != stat.subTokens().end() &&
+                    (*stat.subTokens().rbegin()).String == (";"))
+                ret += ("\n");
+        }
+        else if (!comment.isEmpty())
+        {
+            ret += IndentComment(Settings.CommentColumn, current, comment, true);
+            comment = QString::null;
+            ret += indentString(level - (Settings.OperatorSpace ? 2 : 1));
+        }
+        break;
+    }
+    return ret;
+}
+
+QString toSQLParse::indent(const QString &str)
+{
+    return indent(str, toSyntaxAnalyzer::defaultAnalyzer());
+}
+
+QString toSQLParse::indent(const QString &str, toConnection &conn)
+{
+    return indent(str, conn.analyzer());
+}
+
+QString toSQLParse::indent(std::list<statement> &stat)
+{
+    return indent(stat, toSyntaxAnalyzer::defaultAnalyzer());
+}
+
+QString toSQLParse::indent(std::list<statement> &stat, toConnection &conn)
+{
+    return indent(stat, conn.analyzer());
+}
+
+QString toSQLParse::indent(const QString &str, toSyntaxAnalyzer &syntax)
+{
+    stringTokenizer tokenizer(str, syntax);
+    std::list<toSQLParse::statement> blk = parse(tokenizer);
+    int pos = 0;
+    int level = countIndent(str, pos);
+
+    QString ret;
+    for (std::list<toSQLParse::statement>::iterator i = blk.begin();
+            i != blk.end();
+            i++)
+    {
+        ret += indentStatement(*i, level, syntax);
+    }
+    pos = ret.length();
+    while (pos > 0 && ret[pos - 1].isSpace())
+    {
+        pos--;
+    }
+    return ret.mid(0, pos) + ("\n");
+}
+
+QString toSQLParse::indent(std::list<statement> &stat, toSyntaxAnalyzer &syntax)
+{
+    int pos = 0;
+
+    QString ret;
+    for (std::list<toSQLParse::statement>::iterator i = stat.begin();
+            i != stat.end();
+            i++)
+    {
+        ret += indentStatement(*i, 0, syntax);
+    }
+    pos = ret.length();
+    while (pos > 0 && ret[pos - 1].isSpace())
+    {
+        pos--;
+    }
+    return ret.mid(0, pos) + ("\n");
+}
+
+std::list<toSQLParse::statement> toSQLParse::parse(const QString &str, toConnection &conn)
+{
+    stringTokenizer tokenizer(str, conn.analyzer());
+    return parse(tokenizer);
+}
+
+toSQLParse::statement toSQLParse::parseStatement(toSQLParse::tokenizer &tokens, toConnection &conn)
+{
+    tokens.setAnalyzer(conn.analyzer());
+    return parseStatement(tokens);
+}
+
+toSyntaxAnalyzer &toSQLParse::tokenizer::analyzer()
+{
+    if (Analyzer)
+        return *Analyzer;
+    else
+        return toSyntaxAnalyzer::defaultAnalyzer();
+}

Added: kde-extras/tora/branches/upstream/current/src/tosqlparse.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosqlparse.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosqlparse.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,394 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSQLPARSE_H
+#define TOSQLPARSE_H
+
+#include "config.h"
+
+#include <list>
+#include <algorithm>
+#include <qstring.h>
+
+class toConnection;
+class toMarkedText;
+class toSyntaxAnalyzer;
+
+/** A bunch of functions to parse and indent SQL text.
+ */
+
+class toSQLParse
+{
+public:
+    struct settings
+    {
+        bool ExpandSpaces;
+        bool CommaBefore;
+        bool BlockOpenLine;
+        bool OperatorSpace;
+        bool KeywordUpper;
+        bool RightSeparator;
+        bool EndBlockNewline;
+        int IndentLevel;
+        int CommentColumn;
+    };
+
+    /** Structure the statement is parsed into.
+     */
+    class statement
+    {
+        /** Subtokens to this token.
+         */
+        std::list<statement> *SubTokens;
+    public:
+        /** Type of this token.
+         */
+        enum type {
+            /** Start of block.
+             */
+            Block,
+            /** Start of statement.
+             */
+            Statement,
+            /** Sub list
+             */
+            List,
+            /** Parameter of statement.
+             */
+            Keyword,
+            /** Another token of whatever it is detected in.
+             */
+            Token,
+            /** Unparsed data
+             */
+            Raw
+            /** Type of token.
+             */
+        } Type;
+        /** Was there a comment attached to this token
+         */
+        QString Comment;
+        /** The actual token.
+         */
+        QString String;
+        /** The original line of the token (0 is first line)
+         */
+        int Line;
+        /** Create statement
+         */
+        statement(type ntype = Token, const QString &token = QString::null, int cline = -1);
+        /** Allocate subtokens if not available and return reference to subtokens
+         */
+        std::list<statement> &subTokens();
+        /** Copy constructor
+         */
+        statement(const statement &);
+        /** Copy operator
+         */
+        const statement &operator = (const statement &);
+        /** Equality operator. Does not include the line for comparison.
+         */
+        bool operator == (const statement &) const;
+        /** Non rquality operator. Does not include the line for comparison.
+         */
+        bool operator != (const statement &stat) const
+        {
+            return !((*this) == stat);
+        }
+        /** Destroy statement
+         */
+        ~statement();
+    };
+
+    /** Abstract class to define a source of tokens for the parser.
+     */
+    class tokenizer
+    {
+    private:
+        toSyntaxAnalyzer *Analyzer;
+    protected:
+        int Offset;
+        int Line;
+    public:
+        /** Create a tokenizer. Optionally specify which line and offset to start at.
+         */
+        tokenizer(int offset = 0, int line = 0)
+        {
+            Line = line;
+            Offset = offset;
+            Analyzer = NULL;
+        }
+        /** Create a tokenizer. Optionally specify which line and offset to start at.
+         */
+        tokenizer(toSyntaxAnalyzer &analyzer, int offset = 0, int line = 0)
+        {
+            Line = line;
+            Offset = offset;
+            Analyzer = &analyzer;
+        }
+        virtual ~tokenizer()
+        { }
+        /** Get a token from the string.
+         * @param forward Go forward or backwards to get next token.
+         * @param comment Include comments as tokens.
+         */
+        virtual QString getToken(bool forward = true, bool comment = false) = 0;
+        /** Specify the syntax analyzer to use for the tokanizer
+         * @param analyzer
+         */
+        virtual void setAnalyzer(toSyntaxAnalyzer &analyzer)
+        {
+            Analyzer = &analyzer;
+        }
+        virtual toSyntaxAnalyzer &analyzer();
+        /** Get the current line of the tokenizer. A line is defined by a \n character
+         */
+        virtual int line(void)
+        {
+            return Line;
+        }
+        /** Current offset of the tokenizer (Should point to the character after the last token in the specified direction)
+         */
+        virtual int offset(void)
+        {
+            return Offset;
+        }
+        /** Set a new offset of tokenzer.
+         */
+        virtual void setOffset(int offset)
+        {
+            Offset = offset;
+        }
+        /** Set new current line of tokenizer.
+         * This will not affect the current position of the tokenizer.
+         */
+        virtual void setLine(int line)
+        {
+            Line = line;
+        }
+        /** Get the data remaining after the current position.
+         * @param eol If true end of line, otherwise end of tokenizer.
+         */
+        virtual QString remaining(bool eol) = 0;
+    };
+
+    /** Tokenizer class which gets tokens from a string.
+     */
+class stringTokenizer : public tokenizer
+    {
+        QString String;
+    public:
+        stringTokenizer(const QString &str, int offset = 0, int line = 0)
+                : tokenizer(offset, line)
+        {
+            String = str;
+        }
+        stringTokenizer(const QString &str, toSyntaxAnalyzer &analyzer, int offset = 0, int line = 0)
+                : tokenizer(analyzer, offset, line)
+        {
+            String = str;
+        }
+        /** Get a token from the string.
+         * @param forward Go forward or backwards to get next token.
+         * @param comment Include comments as tokens.
+         */
+        virtual QString getToken(bool forward = true, bool comment = false);
+        /** Get the data remaining after the current position.
+         * @param eol If true end of line, otherwise end of tokenizer.
+         */
+        virtual QString remaining(bool eol);
+    };
+
+    /** Tokenizer class which gets tokens from an editor.
+     */
+class editorTokenizer : public tokenizer
+    {
+        toMarkedText *Editor;
+    public:
+        /** Create a tokenizer which takes its input from an editor.
+         * @param editor The editor to read from. Observe that if this
+         * is a syntax highlighted editor the syntax analyzer is used
+         * that is used for the editor.
+         */
+        editorTokenizer(toMarkedText *editor, int offset = 0, int line = 0);
+        /** Get a token from the string.
+         * @param forward Go forward or backwards to get next token.
+         * @param comment Include comments as tokens.
+         */
+        virtual QString getToken(bool forward = true, bool comment = false);
+        /** Get the data remaining after the current position.
+         * @param eol If true end of line, otherwise end of tokenizer.
+         */
+        virtual QString remaining(bool eol);
+    };
+
+    /** Parse a string.
+     * @param tokens Tokenizer provider to generate parsed tree from.
+     * @return Parsed statement tree.
+     */
+    static std::list<statement> parse(tokenizer &tokens);
+    /** Parse a string.
+     * @param str String to parse.
+     * @return Parsed statement tree.
+     */
+    static std::list<statement> parse(const QString &str)
+    {
+        stringTokenizer tokens(str);
+        return parse(tokens);
+    }
+    /** Parse a string.
+     * @param str String to parse.
+     * @param conn Connection to determine SQL dialect. (For future use)
+     * @return Parsed statement tree.
+     */
+    static std::list<statement> parse(const QString &str, toConnection &conn);
+
+    /** Get one statement (or block) from the root of an editor or string.
+     * @param tokens Tokenizer to get tokens from.
+     * @param conn Connection to determine SQL dialog. (For future use)
+     */
+    static statement parseStatement(tokenizer &tokens);
+    /** Get one statement (or block) from the root of an editor or string.
+     * @param str Tokenizer to get tokens from.
+     * @param conn Connection to determine SQL dialog. (For future use)
+     */
+    static statement parseStatement(const QString &str)
+    {
+        stringTokenizer tokens(str);
+        return parseStatement(tokens);
+    }
+    /** Get one statement (or block) from the root of an editor or string.
+     * @param tokens Tokenizer to get tokens from.
+     * @param conn Connection to determine SQL dialog. (For future use)
+     */
+    static statement parseStatement(tokenizer &tokens, toConnection &conn);
+    /** Get one statement (or block) from the root of an editor or string.
+     * @param str Tokenizer to get tokens from.
+     * @param conn Connection to determine SQL dialog. (For future use)
+     */
+    static statement parseStatement(const QString &str, toConnection &conn)
+    {
+        stringTokenizer tokens(str);
+        return parseStatement(tokens, conn);
+    }
+
+    /** Indent a string.
+     * @param str String to indent.
+     * @return An indented string.
+     */
+    static QString indent(const QString &str);
+    /** Indent a parse statement structure into a string.
+     * @param stat Statement to indent.
+     * @param level Initial indentation level to use.
+     * @param syntax The syntax analyzer to use.
+     * @return A string with the indented statement.
+     */
+    static QString indentStatement(statement &stat, toConnection &conn, int level = 0);
+    /** Indent a parse statement structure into a string.
+     * @param stat Statement to indent.
+     * @param level Initial indentation level to use.
+     * @return A string with the indented statement.
+     */
+    static QString indentStatement(statement &stat, int level = 0);
+    /** Indent a string.
+     * @param str String to indent.
+     * @param conn Connection to determine SQL dialect. (For future use)
+     * @return An indented string.
+     */
+    static QString indent(const QString &str, toConnection &conn);
+
+    /** Create an indentation string.
+     * @param level Number of characters to indent.
+     */
+    static QString indentString(int level);
+
+    /** Indent a string.
+     * @param str List of statements
+     * @param conn Connection to determine SQL dialect. (For future use)
+     * @return An indented string.
+     */
+    static QString indent(std::list<statement> &stat, toConnection &conn);
+    /** Indent a string.
+     * @param stat List of statements
+     * @return An indented string.
+     */
+    static QString indent(std::list<statement> &stat);
+
+    /** Count indentation level of a string.
+     * @param str String to check.
+     * @param chars Position in string.
+     */
+    static int countIndent(const QString &str, int &chars);
+    /** Indent a string.
+     * @param str String to indent.
+     * @param syntax Syntax analyzer to determine SQL dialect. (For future use)
+     * @return An indented string.
+     */
+    static QString indent(const QString &str, toSyntaxAnalyzer &syntax);
+    /** Indent a string.
+     * @param stat List of statements
+     * @param syntax Syntax analyzer to determine SQL dialect. (For future use)
+     * @return An indented string.
+     */
+    static QString indent(std::list<statement> &stat, toSyntaxAnalyzer &syntax);
+private:
+    static settings Settings;
+    static statement parseStatement(tokenizer &tokens,
+                                    bool declare, bool lst);
+    /** Indent a parse statement structure into a string.
+     * @param stat Statement to indent.
+     * @param level Initial indentation level to use.
+     * @param syntax The syntax analyzer to use.
+     * @return A string with the indented statement.
+     */
+    static QString indentStatement(statement &stat, int level, toSyntaxAnalyzer &conn);
+public:
+    /** Get current settings.
+     */
+    static settings getSetting(void)
+    {
+        return Settings;
+    }
+    /** Get current settings.
+     */
+    static void setSetting(const settings &setting)
+    {
+        Settings = setting;
+    }
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tostorage.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostorage.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostorage.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1404 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tofilesize.h"
+#include "tohelp.h"
+#include "tomain.h"
+#include "tomemoeditor.h"
+#include "toresultstorage.h"
+#include "tosql.h"
+#include "tostorage.h"
+#include "tostoragedefinition.h"
+#include "tostorageprefsui.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#include <kfiledialog.h>
+#include <kmenubar.h>
+#endif
+
+#include <qcheckbox.h>
+#include <qfiledialog.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qpainter.h>
+#include <qpopupmenu.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qregexp.h>
+#include <qspinbox.h>
+#include <qsplitter.h>
+#include <qtabwidget.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qworkspace.h>
+
+#include "tostorage.moc"
+#include "tostoragedatafileui.moc"
+#include "tostoragedialogui.moc"
+#include "tostorageprefsui.moc"
+#include "tostoragetablespaceui.moc"
+#include "todroptablespaceui.moc"
+
+#include "icons/addfile.xpm"
+#include "icons/addtablespace.xpm"
+#include "icons/droptablespace.xpm"
+#include "icons/coalesce.xpm"
+#include "icons/eraselog.xpm"
+#include "icons/logging.xpm"
+#include "icons/modfile.xpm"
+#include "icons/modtablespace.xpm"
+#include "icons/movefile.xpm"
+#include "icons/offline.xpm"
+#include "icons/online.xpm"
+#include "icons/readtablespace.xpm"
+#include "icons/refresh.xpm"
+#include "icons/storageextents.xpm"
+#include "icons/tostorage.xpm"
+#include "icons/writetablespace.xpm"
+
+#define CONF_DISP_TABLESPACES "DispTablespaces"
+#define CONF_DISP_COALESCED "DispCoalesced"
+#define CONF_DISP_EXTENTS "DispExtents"
+#define CONF_DISP_AVAILABLEGRAPH "AvailableGraph"
+
+class toStoragePrefs : public toStoragePrefsUI, public toSettingTab
+{
+    toTool *Tool;
+
+public:
+    toStoragePrefs(toTool *tool, QWidget* parent = 0, const char* name = 0);
+    virtual void saveSetting(void);
+};
+
+toStoragePrefs::toStoragePrefs(toTool *tool, QWidget* parent, const char* name)
+        : toStoragePrefsUI(parent, name), toSettingTab("storage.html"), Tool(tool)
+{
+    DispCoalesced->setChecked(!tool->config(CONF_DISP_COALESCED, "").isEmpty());
+    DispExtents->setChecked(!tool->config(CONF_DISP_EXTENTS, "").isEmpty());
+    DispTablespaces->setChecked(!tool->config(CONF_DISP_TABLESPACES, "Yes").isEmpty());
+    DispAvailableGraph->setChecked(!tool->config(CONF_DISP_AVAILABLEGRAPH, "Yes").isEmpty());
+}
+
+void toStoragePrefs::saveSetting(void)
+{
+    Tool->setConfig(CONF_DISP_COALESCED, DispCoalesced->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_DISP_EXTENTS, DispExtents->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_DISP_TABLESPACES, DispTablespaces->isChecked() ? "Yes" : "");
+    Tool->setConfig(CONF_DISP_AVAILABLEGRAPH, DispAvailableGraph->isChecked() ? "Yes" : "");
+}
+
+class toStorageTool : public toTool
+{
+protected:
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(tostorage_xpm);
+    }
+public:
+    toStorageTool()
+            : toTool(50, "Storage Manager")
+    { }
+    virtual const char *menuItem()
+    {
+        return "Storage Manager";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        return new toStorage(parent, connection);
+    }
+    virtual QWidget *configurationTab(QWidget *parent)
+    {
+        return new toStoragePrefs(this, parent);
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+toDropTablespace::toDropTablespace(QWidget* parent, const char* name, WFlags fl)
+        : toDropTablespaceUI(parent, name, fl)
+{
+  if (!name)
+        setName("toDropTablespace");
+}
+
+std::list<QString> toDropTablespace::sql(){
+  std::list<QString> ret;
+  if(IncludingObjectsCheck->isChecked()){
+    toPush(ret, QString::fromLatin1("INCLUDING CONTENTS "));
+    if(dataFileCheck->isChecked())
+      toPush(ret, QString::fromLatin1("AND DATAFILES "));
+    if(CascadeCheck->isChecked())
+      toPush(ret, QString::fromLatin1("CASCADE CONSTRAINTS "));
+  }else
+    toPush(ret, QString::fromLatin1(""));
+  return ret;
+}
+
+
+
+toStorageTablespace::toStorageTablespace(QWidget* parent, const char* name, WFlags fl)
+        : toStorageTablespaceUI(parent, name, fl)
+{
+    Modify = false;
+    if (!name)
+        setName("toStorageTablespace");
+    MinimumExtent->setTitle(tr("&Minimum Extent"));
+    LocalUniform->setTitle(tr("Extent &Size"));
+    LocalUniform->setValue(1024);
+}
+
+void toStorageTablespace::permanentToggle(bool val)
+{
+    try
+    {
+        if (toCurrentConnection(this).version() >= "08")
+        {
+            emit tempFile(!val && !Dictionary->isChecked());
+            return ;
+        }
+        if (!val)
+            Dictionary->setChecked(true);
+        LocalAuto->setEnabled(val);
+        LocalSelect->setEnabled(val);
+    }
+    TOCATCH
+}
+
+void toStorageTablespace::dictionaryToggle(bool val)
+{
+    try
+    {
+        if (toCurrentConnection(this).version() < "08")
+            Permanent->setEnabled(val);
+        else
+            emit tempFile(!Permanent->isChecked() && !val);
+        DefaultStorage->setEnabled(val);
+        emit allowStorage(val);
+    }
+    TOCATCH
+}
+
+void toStorageTablespace::allowDefault(bool val)
+{
+    LocalAuto->setEnabled(!val);
+    LocalSelect->setEnabled(!val);
+    emit allowStorage(val);
+}
+
+bool toStorageTablespace::allowStorage(void)
+{
+    return DefaultStorage->isChecked();
+}
+
+void toStorageTablespace::uniformToggle(bool val)
+{
+    LocalUniform->setEnabled(val);
+}
+
+std::list<QString> toStorageTablespace::sql()
+{
+    std::list<QString> ret;
+    QString str;
+    if (ExtentGroup->isEnabled() && Dictionary->isChecked())
+        toPush(ret, QString::fromLatin1("MINIMUM EXTENT ") + MinimumExtent->sizeString());
+
+    if (Logging->isChecked() != LoggingOrig || !Modify)
+    {
+        if (Logging->isChecked())
+            str = QString::fromLatin1("LOGGING");
+        else
+            str = QString::fromLatin1("NOLOGGING");
+        toPush(ret, str);
+    }
+    if (Online->isChecked() != OnlineOrig || !Modify)
+    {
+        if (Online->isChecked())
+            str = QString::fromLatin1("ONLINE");
+        else
+            str = QString::fromLatin1("OFFLINE");
+        toPush(ret, str);
+    }
+    if (Permanent->isChecked() != PermanentOrig || !Modify)
+    {
+        if (Permanent->isChecked())
+            str = QString::fromLatin1("PERMANENT");
+        else
+            str = QString::fromLatin1("TEMPORARY");
+        toPush(ret, str);
+    }
+    if (ExtentGroup->isEnabled())
+    {
+        str = QString::fromLatin1("EXTENT MANAGEMENT ");
+        if (Dictionary->isChecked())
+            str.append(QString::fromLatin1("DICTIONARY"));
+        else
+        {
+            str.append(QString::fromLatin1("LOCAL "));
+            if (LocalAuto->isChecked())
+                str.append(QString::fromLatin1("AUTOALLOCATE"));
+            else
+            {
+                str.append(QString::fromLatin1("UNIFORM SIZE "));
+                str.append(LocalUniform->sizeString());
+            }
+        }
+        toPush(ret, str);
+    }
+    return ret;
+}
+
+toStorageDatafile::toStorageDatafile(bool temp, bool dispName, QWidget* parent, const char* name, WFlags fl)
+        : toStorageDatafileUI(parent, name, fl), Tempfile(temp)
+{
+    Modify = false;
+    InitialSizeOrig = NextSizeOrig = MaximumSizeOrig = 0;
+
+    if (!name)
+        setName("DataFile");
+    setCaption(tr("Create datafile"));
+
+    if (!dispName)
+    {
+        Name->hide();
+        NameLabel->hide();
+        Filename->setFocus();
+    }
+    else
+        Name->setFocus();
+
+    InitialSize->setTitle(tr("&Size"));
+    NextSize->setTitle(tr("&Next"));
+    MaximumSize->setTitle(tr("&Maximum size"));
+}
+
+std::list<QString> toStorageDatafile::sql(void)
+{
+    std::list<QString> ret;
+    if (!Modify)
+    {
+        QString str;
+        if (Tempfile)
+            str = QString::fromLatin1("TEMPFILE '");
+        else
+            str = QString::fromLatin1("DATAFILE '");
+        QString filename(Filename->text());
+        filename.replace(QRegExp(QString::fromLatin1("'")), QString::fromLatin1("''"));
+        str.append(filename);
+        str.append(QString::fromLatin1("' SIZE "));
+        str.append(InitialSize->sizeString());
+        str.append(QString::fromLatin1(" REUSE AUTOEXTEND "));
+        if (AutoExtend->isChecked())
+        {
+            str.append(QString::fromLatin1("ON NEXT "));
+            str.append(NextSize->sizeString());
+            str.append(QString::fromLatin1(" MAXSIZE "));
+            if (UnlimitedMax->isChecked())
+                str.append(QString::fromLatin1("UNLIMITED"));
+            else
+            {
+                str.append(MaximumSize->sizeString());
+            }
+        }
+        else
+            str.append(QString::fromLatin1("OFF"));
+        toPush(ret, str);
+    }
+    else
+    {
+        QString str;
+        if (Filename->text() != FilenameOrig)
+        {
+            str = QString::fromLatin1("RENAME FILE '");
+            str += FilenameOrig;
+            str += QString::fromLatin1("' TO '");
+            str += Filename->text();
+            str += "'";
+            toPush(ret, str);
+        }
+        if (InitialSize->value() != InitialSizeOrig)
+        {
+            if (Tempfile)
+                str = QString::fromLatin1("TEMPFILE '");
+            else
+                str = QString::fromLatin1("DATAFILE '");
+            str += Filename->text();
+            str += QString::fromLatin1("' RESIZE ");
+            str += InitialSize->sizeString();
+            toPush(ret, str);
+        }
+        if (Tempfile)
+            str = QString::fromLatin1("TEMPFILE '");
+        else
+            str = QString::fromLatin1("DATAFILE '");
+        str += Filename->text();
+        str += QString::fromLatin1("' AUTOEXTEND ");
+        if (AutoExtend->isChecked())
+        {
+            str.append(QString::fromLatin1("ON NEXT "));
+            str.append(NextSize->sizeString());
+            str.append(QString::fromLatin1(" MAXSIZE "));
+            if (UnlimitedMax->isChecked())
+                str.append(QString::fromLatin1("UNLIMITED"));
+            else
+            {
+                str.append(MaximumSize->sizeString());
+            }
+        }
+        else
+            str.append(QString::fromLatin1("OFF"));
+        toPush(ret, str);
+    }
+    return ret;
+}
+
+void toStorageDatafile::browseFile(void)
+{
+    QString str = TOFileDialog::getSaveFileName(Filename->text(), QString::fromLatin1("*.dbf"), this);
+    if (!str.isEmpty())
+        Filename->setText(str);
+}
+
+void toStorageDatafile::autoExtend(bool val)
+{
+    MaximumSize->setEnabled(!UnlimitedMax->isChecked());
+    UnlimitedMax->setEnabled(val);
+    NextSize->setEnabled(val);
+}
+
+void toStorageDatafile::maximumSize(bool val)
+{
+    MaximumSize->setEnabled(!val);
+}
+
+QString toStorageDatafile::getName(void)
+{
+    if (!Name)
+        throw tr("No name available");
+    return Name->text();
+}
+
+void toStorageDatafile::valueChanged(const QString &)
+{
+    if ((Name->isHidden() || !Name->text().isEmpty()) &&
+            !Filename->text().isEmpty())
+        emit validContent(true);
+    else
+        emit validContent(false);
+}
+
+void toStorageDialog::Setup(void)
+{
+    DialogTab->removePage(DefaultPage);
+    toHelp::connectDialog(this);
+}
+
+static toSQL SQLTablespaceInfo("toStorage:TablespaceInfo",
+                               "SELECT min_extlen/1024,\n"
+                               "       extent_management,\n"
+                               "       contents,\n"
+                               "       logging,\n"
+                               "       status,\n"
+                               "       initial_extent/1024,\n"
+                               "       next_extent/1024,\n"
+                               "       min_extents,\n"
+                               "       max_extents,\n"
+                               "       pct_increase\n"
+                               "  FROM sys.dba_tablespaces\n"
+                               " WHERE tablespace_name = :nam<char[70]>",
+                               "Get information about a tablespace for the modify dialog, "
+                               "must have same columns and bindings");
+
+toStorageDialog::toStorageDialog(const QString &tablespace, QWidget *parent, bool drop)
+        : toStorageDialogUI(parent, "Storage Dialog", true)
+{
+    Setup();
+    OkButton->setEnabled(false);
+
+    if (!tablespace.isNull())
+    {
+      TablespaceOrig = tablespace;
+      if(!drop){
+        try
+        {
+            toQList result;
+            result = toQuery::readQuery(toCurrentConnection(this),
+                                        SQLTablespaceInfo, tablespace);
+            if (result.size() != 10)
+                throw tr("Invalid response from query");
+
+            toShift(result);
+            QString dict = toShift(result);
+            QString temp = toShift(result);
+
+            Mode = NewDatafile;
+            setCaption(tr("Add datafile"));
+            Tablespace = NULL;
+            Default = NULL;
+            Drop = NULL;
+            Datafile = new toStorageDatafile(dict != QString::fromLatin1("DICTIONARY") &&
+                                             temp != QString::fromLatin1("PERMANENT"), false, DialogTab);
+            DialogTab->addTab(Datafile, tr("Datafile"));
+            connect(Datafile, SIGNAL(validContent(bool)), this, SLOT(validContent(bool)));
+        }
+        TOCATCH
+      }else{
+        Mode = DropTablespace;
+        Tablespace = NULL;
+        Default = NULL;
+        Datafile=NULL;
+        Drop=new toDropTablespace(DialogTab);
+        DialogTab->addTab(Datafile, tr("Drop Tablespace"));
+        setCaption(tr("Drop Tablespace"));
+        connect(Drop, SIGNAL(validContent(bool)), this, SLOT(validContent(bool)));
+        emit validContent(true);
+      }
+    }
+    else
+    {
+        Mode = NewTablespace;
+        setCaption(tr("Add tablespace"));
+        Datafile = new toStorageDatafile(false, true, DialogTab);
+        DialogTab->addTab(Datafile, tr("Datafile"));
+        Tablespace = new toStorageTablespace(DialogTab);
+        DialogTab->addTab(Tablespace, tr("Tablespace"));
+        Default = new toStorageDefinition(DialogTab);
+        DialogTab->addTab(Default, tr("Default Storage"));
+        Default->setEnabled(false);
+        connect(Tablespace, SIGNAL(allowStorage(bool)), this, SLOT(allowStorage(bool)));
+        connect(Tablespace, SIGNAL(tempFile(bool)), Datafile, SLOT(setTempFile(bool)));
+        connect(Datafile, SIGNAL(validContent(bool)), this, SLOT(validContent(bool)));
+    }
+    
+}
+
+toStorageDialog::toStorageDialog(toConnection &conn, const QString &tablespace, QWidget *parent)
+        : toStorageDialogUI(parent, "Storage Dialog", true)
+{
+    Setup();
+    try
+    {
+        Mode = ModifyTablespace;
+        Datafile = NULL;
+        Tablespace = new toStorageTablespace(DialogTab);
+        DialogTab->addTab(Tablespace, tr("Tablespace"));
+        Default = new toStorageDefinition(DialogTab);
+        DialogTab->addTab(Default, tr("Default Storage"));
+        connect(Tablespace, SIGNAL(allowStorage(bool)), this, SLOT(allowStorage(bool)));
+
+        toQList result = toQuery::readQuery(conn, SQLTablespaceInfo, tablespace);
+        if (result.size() != 10)
+            throw tr("Invalid response from query");
+        Tablespace->MinimumExtent->setValue(toShift(result).toInt());
+
+        TablespaceOrig = tablespace;
+        Tablespace->Modify = true;
+        Default->setEnabled(false);
+        if (toShift(result).toString() == "DICTIONARY")
+            Tablespace->Dictionary->setChecked(true);
+        else
+        {
+            Tablespace->DefaultStorage->setEnabled(false);
+            Tablespace->LocalAuto->setChecked(true);
+        }
+        Tablespace->ExtentGroup->setEnabled(false);
+
+        Tablespace->Permanent->setChecked(toShift(result).toString() == "PERMANENT");
+        Tablespace->Logging->setChecked(toShift(result).toString() == "LOGGING");
+        Tablespace->Online->setChecked(toShift(result).toString() == "ONLINE");
+        Tablespace->OnlineOrig = Tablespace->Online->isChecked();
+        Tablespace->PermanentOrig = Tablespace->Permanent->isChecked();
+        Tablespace->LoggingOrig = Tablespace->Logging->isChecked();
+
+        Default->InitialSize->setValue(toShift(result).toInt());
+        Default->NextSize->setValue(toShift(result).toInt());
+        Default->InitialExtent->setValue(toShift(result).toInt());
+        int num = toShift(result).toInt();
+        if (num == 0)
+            Default->UnlimitedExtent->setChecked(true);
+        else
+            Default->MaximumExtent->setValue(num);
+        Default->PCTIncrease->setValue(toShift(result).toInt());
+    }
+    catch (const QString &str)
+    {
+        toStatusMessage(str);
+        reject();
+    }
+}
+
+static toSQL SQLDatafileInfo("toStorage:DatafileInfo",
+                             "SELECT bytes/1024,\n"
+                             "       autoextensible,\n"
+                             "       bytes/blocks*increment_by/1024,\n"
+                             "       maxbytes/1024\n"
+                             "  FROM (SELECT bytes,autoextensible,blocks,increment_by,maxbytes,file_name,tablespace_name\n"
+			     "        FROM sys.dba_data_files\n"
+			     "          UNION\n"
+			     "        SELECT bytes,autoextensible,blocks,increment_by,maxbytes,file_name,tablespace_name\n"
+			     "        FROM sys.dba_temp_files)\n"
+                             " WHERE tablespace_name = :nam<char[70]>"
+                             "   AND file_name = :fil<char[1500]>",
+                             "Get information about a datafile for the modify dialog, "
+                             "must have same columns and bindings",
+                             "0801");
+
+static toSQL SQLDatafileInfo8("toStorage:DatafileInfo",
+                              "SELECT bytes/1024,\n"
+                              "       autoextensible,\n"
+                              "       bytes/blocks*increment_by/1024,\n"
+                              "       maxbytes/1024\n"
+                              "  FROM SELECT * sys.dba_data_files\n"
+                              " WHERE tablespace_name = :nam<char[70]>"
+                              "   AND file_name = :fil<char[1500]>",
+                              "",
+                              "0800");
+
+toStorageDialog::toStorageDialog(toConnection &conn, const QString &tablespace,
+                                 const QString &filename, QWidget *parent)
+        : toStorageDialogUI(parent, "Storage Dialog", true)
+{
+    Setup();
+    try
+    {
+        Mode = ModifyDatafile;
+
+        toQList result;
+        result = toQuery::readQuery(toCurrentConnection(this),
+                                    SQLTablespaceInfo, tablespace);
+        if (result.size() != 10)
+            throw tr("Invalid response from query");
+
+        toShift(result);
+        QString dict = toShift(result);
+        QString temp = toShift(result);
+
+        Datafile = new toStorageDatafile(dict != QString::fromLatin1("DICTIONARY") &&
+                                         temp != QString::fromLatin1("PERMANENT") &&
+                                         temp != QString::fromLatin1("UNDO"), true, DialogTab);
+        DialogTab->addTab(Datafile, tr("Datafile"));
+        setCaption(tr("Modify datafile"));
+        Tablespace = NULL;
+        Default = NULL;
+
+        result = toQuery::readQuery(conn, SQLDatafileInfo, tablespace, filename);
+
+        if (result.size() != 4)
+            throw tr("Invalid response from query (Wanted 4, got %1 entries) for %2.%3").
+            arg(result.size()).arg(tablespace).arg(filename);
+        Datafile->Name->setText(tablespace);
+        Datafile->Name->setEnabled(false);
+        Datafile->Modify = true;
+        Datafile->FilenameOrig = filename;
+        Datafile->Filename->setText(filename);
+        Datafile->InitialSize->setValue(Datafile->InitialSizeOrig = toShift(result).toInt());
+        if (toShift(result) != QString::fromLatin1("NO"))
+        {
+            Datafile->AutoExtend->setChecked(true);
+            Datafile->NextSize->setValue(Datafile->NextSizeOrig = toShift(result).toInt());
+        }
+        else
+        {
+            Datafile->NextSizeOrig = 0;
+        }
+
+        int num = toShift(result).toInt();
+        if (num == 0)
+        {
+            Datafile->UnlimitedMax->setChecked(true);
+            Datafile->MaximumSize->setEnabled(false);
+        }
+        else
+        {
+            Datafile->UnlimitedMax->setChecked(false);
+            Datafile->MaximumSize->setValue(num);
+        }
+        Datafile->MaximumSizeOrig = num;
+    }
+    catch (const QString &str)
+    {
+        toStatusMessage(str);
+        reject();
+    }
+}
+
+void toStorageDialog::validContent(bool val)
+{
+    OkButton->setEnabled(val);
+}
+
+void toStorageDialog::allowStorage(bool val)
+{
+    Default->setEnabled(val);
+}
+
+void toStorageDialog::displaySQL(void)
+{
+    std::list<QString> lines = sql();
+    QString res;
+    for (std::list<QString>::iterator i = lines.begin();i != lines.end();i++)
+    {
+        res += *i;
+        res += QString::fromLatin1(";\n");
+    }
+    if (res.length() > 0)
+    {
+        toMemoEditor memo(this, res, -1, -1, true, true);
+        memo.exec();
+    }
+    else
+        toStatusMessage(tr("No changes made"));
+}
+
+std::list<QString> toStorageDialog::sql(void)
+{
+    try
+    {
+        std::list<QString> ret;
+        switch (Mode)
+        {
+        case DropTablespace:
+          {
+            QString start = QString::fromLatin1("DROP TABLESPACE \"");
+            start += TablespaceOrig;
+            start += QString::fromLatin1("\" ");
+            if(Drop){
+              std::list<QString> lst = Drop->sql();
+              for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++){
+                start += QString::fromLatin1(" ");
+                start += *i;
+              }
+            }
+            toPush(ret, start);
+          }
+          break;
+        case ModifyDatafile:
+            {
+                QString start = QString::fromLatin1("ALTER DATABASE ");
+                std::list<QString> lst = Datafile->sql();
+                for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                {
+                    QString t = start;
+                    t += *i;
+                    toPush(ret, t);
+                }
+            }
+            break;
+        case ModifyTablespace:
+            {
+                QString start = QString::fromLatin1("ALTER TABLESPACE \"");
+                start += TablespaceOrig;
+                start += QString::fromLatin1("\" ");
+                std::list<QString> lst = Tablespace->sql();
+                for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                {
+                    QString t = start;
+                    t += *i;
+                    toPush(ret, t);
+                }
+                if (Tablespace->allowStorage())
+                {
+                    start += QString::fromLatin1("DEFAULT ");
+                    std::list<QString> lst = Default->sql();
+                    for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                    {
+                        QString t = start;
+                        t += *i;
+                        toPush(ret, t);
+                    }
+                }
+            }
+            break;
+        case NewDatafile:
+            {
+                QString start = QString::fromLatin1("ALTER TABLESPACE \"");
+                start += TablespaceOrig;
+                start += QString::fromLatin1("\" ADD ");
+                std::list<QString> lst = Datafile->sql();
+                for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                {
+                    start += QString::fromLatin1(" ");
+                    start += *i;
+                }
+                toPush(ret, start);
+            }
+            break;
+        case NewTablespace:
+            {
+                QString start = QString::fromLatin1("CREATE TABLESPACE \"");
+                start += Datafile->getName().upper();
+                start += QString::fromLatin1("\" ");
+                std::list<QString> lst = Datafile->sql();
+                {
+                    for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                    {
+                        start += QString::fromLatin1(" ");
+                        start += *i;
+                    }
+                }
+                lst = Tablespace->sql();
+                for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                {
+                    start += QString::fromLatin1(" ");
+                    start += *i;
+                }
+                if (Tablespace->allowStorage())
+                {
+                    start += QString::fromLatin1(" DEFAULT");
+                    lst = Default->sql();
+                    for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                    {
+                        start += QString::fromLatin1(" ");
+                        start += *i;
+                    }
+                }
+                toPush(ret, start);
+            }
+        }
+        return ret;
+    }
+    catch (const QString &str)
+    {
+        toStatusMessage(str);
+        std::list<QString> ret;
+        return ret;
+    }
+}
+
+static toStorageTool StorageTool;
+
+toStorage::toStorage(QWidget *main, toConnection &connection)
+        : toToolWidget(StorageTool, "storage.html", main, connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Storage manager"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Update"),
+                    tr("Update"),
+                    this, SLOT(refresh(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    ExtentButton = new QToolButton(toolbar);
+    ExtentButton->setToggleButton(true);
+    ExtentButton->setIconSet(QIconSet(QPixmap(const_cast<const char**>(storageextents_xpm))));
+    bool extents = !StorageTool.config(CONF_DISP_EXTENTS, "").isEmpty();
+    if (extents)
+        ExtentButton->setOn(true);
+    connect(ExtentButton, SIGNAL(toggled(bool)), this, SLOT(showExtent(bool)));
+    QToolTip::add
+        (ExtentButton, tr("Show extent view."));
+
+    TablespaceButton = new QToolButton(toolbar);
+    TablespaceButton->setToggleButton(true);
+    TablespaceButton->setIconSet(QIconSet(QPixmap(const_cast<const char**>(tostorage_xpm))));
+    bool tablespaces = !StorageTool.config(CONF_DISP_TABLESPACES, "Yes").isEmpty();
+    if (tablespaces)
+        TablespaceButton->setOn(true);
+    connect(TablespaceButton, SIGNAL(toggled(bool)), this, SLOT(showTablespaces(bool)));
+    QToolTip::add
+        (TablespaceButton, tr("Show tablespaces or just datafiles."));
+
+    toolbar->addSeparator();
+
+    OnlineButton = new QToolButton(QPixmap(const_cast<const char**>(online_xpm)),
+                                   tr("Take tablespace online"),
+                                   tr("Take tablespace online"),
+                                   this, SLOT(online(void)),
+                                   toolbar);
+    OfflineButton = new QToolButton(QPixmap(const_cast<const char**>(offline_xpm)),
+                                    tr("Take tablespace offline"),
+                                    tr("Take tablespace offline"),
+                                    this, SLOT(offline(void)),
+                                    toolbar);
+    toolbar->addSeparator();
+    LoggingButton = new QToolButton(QPixmap(const_cast<const char**>(logging_xpm)),
+                                    tr("Set tablespace default to logging"),
+                                    tr("Set tablespace default to logging"),
+                                    this, SLOT(logging(void)),
+                                    toolbar);
+    EraseLogButton = new QToolButton(QPixmap(const_cast<const char**>(eraselog_xpm)),
+                                     tr("Set tablespace default to no logging"),
+                                     tr("Set tablespace default to no logging"),
+                                     this, SLOT(noLogging(void)),
+                                     toolbar);
+    toolbar->addSeparator();
+    ReadWriteButton = new QToolButton(QPixmap(const_cast<const char**>(writetablespace_xpm)),
+                                      tr("Allow read write access to tablespace"),
+                                      tr("Allow read write access to tablespace"),
+                                      this, SLOT(readWrite(void)),
+                                      toolbar);
+    ReadOnlyButton = new QToolButton(QPixmap(const_cast<const char**>(readtablespace_xpm)),
+                                     tr("Set tablespace to read only"),
+                                     tr("Set tablespace to read only"),
+                                     this, SLOT(readOnly(void)),
+                                     toolbar);
+    toolbar->addSeparator();
+    ModTablespaceButton = new QToolButton(QPixmap(const_cast<const char**>(modtablespace_xpm)),
+                                          tr("Modify tablespace"),
+                                          tr("Modify tablespace"),
+                                          this, SLOT(modifyTablespace(void)),
+                                          toolbar);
+    DropTablespaceButton=new QToolButton(QPixmap(const_cast<const char**>(droptablespace_xpm)),
+                    tr("Drop tablespace"),
+                    tr("Drop tablespace"),
+                    this, SLOT(dropTablespace(void)),
+                    toolbar);
+    ModFileButton = new QToolButton(QPixmap(const_cast<const char**>(modfile_xpm)),
+                                    tr("Modify file"),
+                                    tr("Modify file"),
+                                    this, SLOT(modifyDatafile(void)),
+                                    toolbar);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(addtablespace_xpm)),
+                    tr("Create new tablespace"),
+                    tr("Create new tablespace"),
+                    this, SLOT(newTablespace(void)),
+                    toolbar);
+    
+    NewFileButton = new QToolButton(QPixmap(const_cast<const char**>(addfile_xpm)),
+                                    tr("Add datafile to tablespace"),
+                                    tr("Add datafile to tablespace"),
+                                    this, SLOT(newDatafile(void)),
+                                    toolbar);
+    toolbar->addSeparator();
+    CoalesceButton = new QToolButton(QPixmap(const_cast<const char**>(coalesce_xpm)),
+                                     tr("Coalesce tablespace"),
+                                     tr("Coalesce tablespace"),
+                                     this, SLOT(coalesce(void)),
+                                     toolbar);
+    MoveFileButton = new QToolButton(QPixmap(const_cast<const char**>(movefile_xpm)),
+                                     tr("Move datafile"),
+                                     tr("Move datafile"),
+                                     this, SLOT(moveFile(void)),
+                                     toolbar);
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    QSplitter *splitter = new QSplitter(Vertical, this);
+    Storage = new toResultStorage(!StorageTool.config(CONF_DISP_AVAILABLEGRAPH, "Yes").isEmpty(),
+                                  splitter);
+    ExtentParent = new QSplitter(Horizontal, splitter);
+    Objects = new toListView(ExtentParent);
+    Objects->addColumn(tr("Owner"));
+    Objects->addColumn(tr("Object"));
+    Objects->addColumn(tr("Partition"));
+    Objects->addColumn(tr("Extents"));
+    Objects->addColumn(tr("Blocks"));
+    Objects->setColumnAlignment(3, AlignRight);
+    Objects->setColumnAlignment(4, AlignRight);
+    Objects->setSorting(0);
+    Objects->setShowSortIndicator(TRUE);
+
+    Extents = new toStorageExtent(ExtentParent);
+    Objects->setSelectionMode(QListView::Single);
+    Storage->setSelectionMode(QListView::Single);
+    connect(Objects, SIGNAL(selectionChanged(void)), this, SLOT(selectObject(void)));
+
+    if (!extents)
+        ExtentParent->hide();
+
+    if (!tablespaces)
+        Storage->setOnlyFiles(true);
+
+    connect(Storage, SIGNAL(selectionChanged(void)), this, SLOT(selectionChanged(void)));
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    refresh();
+    selectionChanged();
+    setFocusProxy(Storage);
+}
+
+#define TO_ID_ONLINE  (toMain::TO_TOOL_MENU_ID+ 0)
+#define TO_ID_OFFLINE  (toMain::TO_TOOL_MENU_ID+ 1)
+#define TO_ID_LOGGING  (toMain::TO_TOOL_MENU_ID+ 2)
+#define TO_ID_NOLOGGING  (toMain::TO_TOOL_MENU_ID+ 3)
+#define TO_ID_READ_WRITE (toMain::TO_TOOL_MENU_ID+ 4)
+#define TO_ID_READ_ONLY  (toMain::TO_TOOL_MENU_ID+ 5)
+#define TO_ID_MODIFY_TABLESPACE (toMain::TO_TOOL_MENU_ID+ 6)
+#define TO_ID_MODIFY_DATAFILE (toMain::TO_TOOL_MENU_ID+ 7)
+#define TO_ID_NEW_TABLESPACE (toMain::TO_TOOL_MENU_ID+ 8)
+#define TO_ID_ADD_DATAFILE (toMain::TO_TOOL_MENU_ID+ 9)
+#define TO_ID_COALESCE  (toMain::TO_TOOL_MENU_ID+ 10)
+#define TO_ID_MOVE_FILE  (toMain::TO_TOOL_MENU_ID+ 11)
+#define TO_ID_DROP_TABLESPACE (toMain::TO_TOOL_MENU_ID+ 12)
+
+void toStorage::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Storage|Refresh")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(online_xpm)), tr("Tablespace online"),
+                                 this, SLOT(online()), 0, TO_ID_ONLINE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(offline_xpm)), tr("Tablespace offline"),
+                                 this, SLOT(offline()), 0, TO_ID_OFFLINE);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(logging_xpm)), tr("Default logging"),
+                                 this, SLOT(logging()), 0, TO_ID_LOGGING);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(eraselog_xpm)), tr("Default not logging"),
+                                 this, SLOT(noLogging()), 0, TO_ID_NOLOGGING);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(writetablespace_xpm)), tr("Read write access"),
+                                 this, SLOT(readWrite()), 0, TO_ID_READ_WRITE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(readtablespace_xpm)), tr("Read only access"),
+                                 this, SLOT(readOnly()), 0, TO_ID_READ_ONLY);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(droptablespace_xpm)), tr("Drop tablespace..."),
+                                 this, SLOT(dropTablespace()), 0, TO_ID_DROP_TABLESPACE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(modtablespace_xpm)), tr("Modify tablespace..."),
+                                 this, SLOT(modifyTablespace()), 0, TO_ID_MODIFY_TABLESPACE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(modfile_xpm)), tr("Modify datafile..."),
+                                 this, SLOT(modifyDatafile()), 0, TO_ID_MODIFY_DATAFILE);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(addtablespace_xpm)), tr("New tablespace..."),
+                                 this, SLOT(newTablespace()), 0, TO_ID_NEW_TABLESPACE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(addfile_xpm)), tr("Add datafile..."),
+                                 this, SLOT(newDatafile()), 0, TO_ID_ADD_DATAFILE);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(coalesce_xpm)), tr("Coalesce tablespace"),
+                                 this, SLOT(coalesce()), 0, TO_ID_COALESCE);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(movefile_xpm)), tr("Move datafile..."),
+                                 this, SLOT(moveFile()), 0, TO_ID_MOVE_FILE);
+
+            toMainWidget()->menuBar()->insertItem(tr("&Storage"), ToolMenu, -1, toToolMenuIndex());
+
+            ToolMenu->setItemEnabled(TO_ID_ONLINE, OnlineButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_OFFLINE, OfflineButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_LOGGING, LoggingButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_NOLOGGING, EraseLogButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_READ_WRITE, ReadWriteButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_READ_ONLY, ReadOnlyButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_MODIFY_TABLESPACE,
+                                     ModTablespaceButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_DROP_TABLESPACE,
+                                     DropTablespaceButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_MODIFY_DATAFILE,
+                                     ModFileButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_ADD_DATAFILE, NewFileButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_COALESCE, CoalesceButton->isEnabled());
+            ToolMenu->setItemEnabled(TO_ID_MOVE_FILE, MoveFileButton->isEnabled());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+void toStorage::refresh(void)
+{
+    Storage->showCoalesced(!StorageTool.config(CONF_DISP_COALESCED, "").isEmpty());
+    Storage->query();
+}
+
+void toStorage::coalesce(void)
+{
+    try
+    {
+        QString str;
+        str = QString::fromLatin1("ALTER TABLESPACE \"");
+        str.append(Storage->currentTablespace());
+        str.append(QString::fromLatin1("\" COALESCE"));
+        connection().execute(str);
+        refresh();
+    }
+    TOCATCH
+}
+
+void toStorage::online(void)
+{
+    try
+    {
+        QString str;
+        str = QString::fromLatin1("ALTER TABLESPACE \"");
+        str.append(Storage->currentTablespace());
+        str.append(QString::fromLatin1("\" ONLINE"));
+        connection().execute(str);
+        refresh();
+    }
+    TOCATCH
+}
+
+void toStorage::logging(void)
+{
+    try
+    {
+        QString str;
+        str = QString::fromLatin1("ALTER TABLESPACE \"");
+        str.append(Storage->currentTablespace());
+        str.append(QString::fromLatin1("\" LOGGING"));
+        connection().execute(str);
+        refresh();
+    }
+    TOCATCH
+}
+
+void toStorage::noLogging(void)
+{
+    try
+    {
+        QString str;
+        str = QString::fromLatin1("ALTER TABLESPACE \"");
+        str.append(Storage->currentTablespace());
+        str.append(QString::fromLatin1("\" NOLOGGING"));
+        connection().execute(str);
+        refresh();
+    }
+    TOCATCH
+}
+
+void toStorage::readOnly(void)
+{
+    try
+    {
+        QString str;
+        str = QString::fromLatin1("ALTER TABLESPACE \"");
+        ;
+        str.append(Storage->currentTablespace());
+        str.append(QString::fromLatin1("\" READ ONLY"));
+        connection().execute(str);
+        refresh();
+    }
+    TOCATCH
+}
+
+void toStorage::readWrite(void)
+{
+    try
+    {
+        QString str;
+        str = QString::fromLatin1("ALTER TABLESPACE \"");
+        str.append(Storage->currentTablespace());
+        str.append(QString::fromLatin1("\" READ WRITE"));
+        connection().execute(str);
+        refresh();
+    }
+    TOCATCH
+}
+
+void toStorage::offline(void)
+{
+    try
+    {
+        QString reason;
+        QString dsc = tr("Select mode to take tablespace %1 offline.").arg(Storage->currentTablespace());
+        switch (TOMessageBox::information(this,
+                                          tr("Tablespace offline"),
+                                          dsc,
+                                          tr("Normal"), tr("Temporary"), tr("Cancel")))
+        {
+        case 0:
+            reason = QString::fromLatin1("NORMAL");
+            break;
+        case 1:
+            reason = QString::fromLatin1("TEMPORARY");
+            break;
+        default:
+            return ;
+        }
+        QString str;
+        str = QString::fromLatin1("ALTER TABLESPACE \"");
+        str.append(Storage->currentTablespace());
+        str.append(QString::fromLatin1("\" OFFLINE "));
+        str.append(reason);
+        connection().execute(str);
+        refresh();
+    }
+    TOCATCH
+}
+
+void toStorage::selectionChanged(void)
+{
+    OfflineButton->setEnabled(false);
+    OnlineButton->setEnabled(false);
+    CoalesceButton->setEnabled(false);
+    LoggingButton->setEnabled(false);
+    EraseLogButton->setEnabled(false);
+    ModTablespaceButton->setEnabled(false);
+    DropTablespaceButton->setEnabled(false);
+    NewFileButton->setEnabled(false);
+    MoveFileButton->setEnabled(false);
+    ModFileButton->setEnabled(false);
+    ReadOnlyButton->setEnabled(false);
+    ReadWriteButton->setEnabled(false);
+
+    QListViewItem *item = Storage->selectedItem();
+    if (item)
+    {
+        if (item->parent() || Storage->onlyFiles())
+        {
+            if (!ExtentParent->isHidden())
+                Extents->setFile(item->text(12), item->text(13).toInt());
+            item = item->parent();
+            MoveFileButton->setEnabled(true);
+            ModFileButton->setEnabled(true);
+        }
+        else if (!ExtentParent->isHidden())
+            Extents->setTablespace(item->text(0));
+
+        if (!ExtentParent->isHidden())
+        {
+            std::list<toStorageExtent::extentTotal> obj = Extents->objects();
+            QListViewItem *objItem = NULL;
+            Objects->clear();
+            for (std::list<toStorageExtent::extentTotal>::iterator i = obj.begin();i != obj.end();i++)
+            {
+                objItem = new toResultViewItem(Objects, objItem, (*i).Owner);
+                objItem->setText(1, (*i).Table);
+                objItem->setText(2, (*i).Partition);
+                objItem->setText(3, QString::number((*i).Extents));
+                objItem->setText(4, QString::number((*i).Size));
+            }
+        }
+
+        if (item)
+        {
+            QListViewItem *child = item->firstChild();
+            if (!child)
+            {
+                OnlineButton->setEnabled(true);
+                OfflineButton->setEnabled(true);
+                ReadWriteButton->setEnabled(true);
+                ReadOnlyButton->setEnabled(true);
+            }
+            else
+            {
+                if (child->text(1) == QString::fromLatin1("OFFLINE"))
+                    OnlineButton->setEnabled(true);
+                else if (child->text(1) == QString::fromLatin1("ONLINE"))
+                {
+                    OfflineButton->setEnabled(true);
+                    if (child->text(2) == QString::fromLatin1("READ ONLY"))
+                        ReadWriteButton->setEnabled(true);
+                    else
+                        ReadOnlyButton->setEnabled(true);
+                }
+            }
+            if (item->text(4) == QString::fromLatin1("LOGGING"))
+                EraseLogButton->setEnabled(true);
+            else
+                LoggingButton->setEnabled(true);
+
+            if (item->text(10) != QString::fromLatin1("100%"))
+                CoalesceButton->setEnabled(true);
+        }
+        NewFileButton->setEnabled(true);
+        ModTablespaceButton->setEnabled(true);
+        DropTablespaceButton->setEnabled(true);
+    }
+    if (ToolMenu)
+    {
+        ToolMenu->setItemEnabled(TO_ID_ONLINE, OnlineButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_OFFLINE, OfflineButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_LOGGING, LoggingButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_NOLOGGING, EraseLogButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_READ_WRITE, ReadWriteButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_READ_ONLY, ReadOnlyButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_MODIFY_TABLESPACE,
+                                 ModTablespaceButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_DROP_TABLESPACE,
+                                 DropTablespaceButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_MODIFY_DATAFILE,
+                                 ModFileButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_ADD_DATAFILE, NewFileButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_COALESCE, CoalesceButton->isEnabled());
+        ToolMenu->setItemEnabled(TO_ID_MOVE_FILE, MoveFileButton->isEnabled());
+    }
+}
+
+void toStorage::newDatafile(void)
+{
+    try
+    {
+        toStorageDialog newFile(Storage->currentTablespace(), this);
+
+        if (newFile.exec())
+        {
+            std::list<QString> lst = newFile.sql();
+            for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                connection().execute(*i);
+
+            refresh();
+        }
+    }
+    TOCATCH
+}
+
+void toStorage::newTablespace(void)
+{
+    try
+    {
+        toStorageDialog newSpace(QString::null, this);
+
+        if (newSpace.exec())
+        {
+            std::list<QString> lst = newSpace.sql();
+            for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                connection().execute(*i);
+
+            refresh();
+        }
+    }
+    TOCATCH
+}
+
+void toStorage::dropTablespace(void)
+{
+    try
+    {
+        toStorageDialog dropSpace(Storage->currentTablespace(), this,true);
+
+        if (dropSpace.exec())
+        {
+            std::list<QString> lst = dropSpace.sql();
+            for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                connection().execute(*i);
+
+            refresh();
+        }
+    }
+    TOCATCH
+}
+
+void toStorage::modifyTablespace(void)
+{
+    try
+    {
+        toStorageDialog modifySpace(connection(), Storage->currentTablespace(), this);
+
+        if (modifySpace.exec())
+        {
+            std::list<QString> lst = modifySpace.sql();
+            for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                connection().execute(*i);
+
+            refresh();
+        }
+    }
+    TOCATCH
+}
+
+void toStorage::modifyDatafile(void)
+{
+    try
+    {
+        toStorageDialog modifySpace(connection(), Storage->currentTablespace(),
+                                    Storage->currentFilename(), this);
+
+        if (modifySpace.exec())
+        {
+            std::list<QString> lst = modifySpace.sql();
+            for (std::list<QString>::iterator i = lst.begin();i != lst.end();i++)
+                connection().execute(*i);
+
+            refresh();
+        }
+    }
+    TOCATCH
+}
+
+void toStorage::moveFile(void)
+{
+    try
+    {
+        QString orig = Storage->currentFilename();
+        QString file = TOFileDialog::getSaveFileName(orig, QString::fromLatin1("*.dbf"), this);
+        if (!file.isEmpty() && file != orig)
+        {
+            QString str;
+            str = QString::fromLatin1("ALTER TABLESPACE \"");
+            str.append(Storage->currentTablespace());
+            str.append(QString::fromLatin1("\" RENAME DATAFILE '"));
+            orig.replace(QRegExp(QString::fromLatin1("'")), QString::fromLatin1("''"));
+            file.replace(QRegExp(QString::fromLatin1("'")), QString::fromLatin1("''"));
+            str.append(orig);
+            str.append(QString::fromLatin1("' TO '"));
+            str.append(file);
+            str.append(QString::fromLatin1("'"));
+            connection().execute(str);
+            refresh();
+        }
+    }
+    TOCATCH
+}
+
+void toStorage::selectObject(void)
+{
+    QListViewItem *item = Objects->selectedItem();
+    if (item)
+    {
+        toResultViewItem *res = dynamic_cast<toResultViewItem *>(item);
+        if (res)
+            Extents->highlight(res->allText(0), res->allText(1), res->allText(2));
+    }
+}
+
+void toStorage::showExtent(bool ena)
+{
+    if (ena)
+    {
+        ExtentParent->show();
+        selectionChanged();
+    }
+    else
+    {
+        ExtentParent->hide();
+    }
+}
+
+void toStorage::showTablespaces(bool tab)
+{
+    Storage->setOnlyFiles(!tab);
+}

Added: kde-extras/tora/branches/upstream/current/src/tostorage.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostorage.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostorage.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,226 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSTORAGE_H
+#define TOSTORAGE_H
+
+#include "config.h"
+#include "tostoragedatafileui.h"
+#include "tostoragedialogui.h"
+#include "tostoragetablespaceui.h"
+#include "todroptablespaceui.h"
+#include "totool.h"
+
+#include <list>
+
+#include <qdialog.h>
+
+class QCheckBox;
+class QGroupBox;
+class QLabel;
+class QLineEdit;
+class QPopupMenu;
+class QPushButton;
+class QRadioButton;
+class QSpinBox;
+class QSplitter;
+class QTabWidget;
+class toConnection;
+class toFilesize;
+class toResultStorage;
+class toResultView;
+class toStorageDefinition;
+class toStorageDialog;
+
+class toStorageTablespace : public toStorageTablespaceUI
+{
+    Q_OBJECT
+
+    bool Modify;
+    bool LoggingOrig;
+    bool OnlineOrig;
+    bool PermanentOrig;
+
+public:
+    toStorageTablespace(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+
+    std::list<QString> sql(void);
+    bool allowStorage(void);
+
+    friend class toStorageDialog;
+signals:
+    void allowStorage(bool);
+    void tempFile(bool);
+
+public slots:
+    virtual void permanentToggle(bool);
+    virtual void dictionaryToggle(bool);
+    virtual void uniformToggle(bool);
+    virtual void allowDefault(bool);
+};
+
+class toDropTablespace : public toDropTablespaceUI
+{
+   Q_OBJECT
+public:
+  toDropTablespace(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+  std::list<QString> sql(void);
+signals:
+    void validContent(bool);
+};
+
+class toStorageDatafile : public toStorageDatafileUI
+{
+    Q_OBJECT
+
+    bool Modify;
+    int InitialSizeOrig;
+    int NextSizeOrig;
+    int MaximumSizeOrig;
+    QString FilenameOrig;
+    bool Tempfile;
+
+public:
+    toStorageDatafile(bool tempFile, bool dispName,
+                      QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+
+    QString getName(void);
+    std::list<QString> sql();
+
+    friend class toStorageDialog;
+signals:
+    void validContent(bool);
+
+public slots:
+    virtual void browseFile(void);
+    virtual void autoExtend(bool);
+    virtual void setTempFile(bool temp)
+    {
+        Tempfile = temp;
+    }
+
+    virtual void maximumSize(bool);
+    virtual void valueChanged(const QString &);
+};
+
+class toStorageDialog : public toStorageDialogUI
+{
+    Q_OBJECT
+    enum {
+        NewTablespace,
+        NewDatafile,
+        ModifyTablespace,
+        ModifyDatafile,
+        DropTablespace
+    } Mode;
+    QString TablespaceOrig;
+    void Setup(void);
+public:
+    toStorageDatafile *Datafile;
+    toStorageTablespace *Tablespace;
+    toStorageDefinition *Default;
+    toDropTablespace *Drop;
+
+    toStorageDialog(toConnection &conn, const QString &Tablespace, QWidget *parent);
+    toStorageDialog(toConnection &conn, const QString &Tablespace,
+                    const QString &file, QWidget *parent);
+    toStorageDialog(const QString &tablespace, QWidget *parent, bool drop = false);
+
+    std::list<QString> sql(void);
+public slots:
+    void validContent(bool val);
+    void allowStorage(bool val);
+    virtual void displaySQL(void);
+};
+
+class toStorage : public toToolWidget
+{
+    Q_OBJECT
+
+    toResultStorage *Storage;
+
+    toListView *Objects;
+    toStorageExtent *Extents;
+    QSplitter *ExtentParent;
+
+    QPopupMenu *ToolMenu;
+    QToolButton *OnlineButton;
+    QToolButton *OfflineButton;
+    QToolButton *CoalesceButton;
+    QToolButton *LoggingButton;
+    QToolButton *EraseLogButton;
+    QToolButton *ModTablespaceButton;
+    QToolButton *ReadOnlyButton;
+    QToolButton *ReadWriteButton;
+    QToolButton *NewFileButton;
+    QToolButton *MoveFileButton;
+    QToolButton *ModFileButton;
+    QToolButton *ExtentButton;
+    QToolButton *TablespaceButton;
+    QToolButton *DropTablespaceButton;
+public:
+    toStorage(QWidget *parent, toConnection &connection);
+
+public slots:
+    void refresh(void);
+
+    void coalesce(void);
+
+    void online(void);
+    void offline(void);
+
+    void logging(void);
+    void noLogging(void);
+
+    void readWrite(void);
+    void readOnly(void);
+
+    void newDatafile(void);
+    void newTablespace(void);
+    void modifyTablespace(void);
+    void modifyDatafile(void);
+    void moveFile(void);
+    void dropTablespace(void);
+
+    void showExtent(bool);
+    void showTablespaces(bool);
+    void selectionChanged(void);
+    void selectObject(void);
+    void windowActivated(QWidget *widget);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,144 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tostoragedatafileui.ui'
+**
+** Created: Tue Sep 18 08:21:25 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tostoragedatafileui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qgroupbox.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "tofilesize.h"
+
+/*
+ *  Constructs a toStorageDatafileUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toStorageDatafileUI::toStorageDatafileUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toStorageDatafileUI" );
+    toStorageDatafileUILayout = new QGridLayout( this, 1, 1, 11, 6, "toStorageDatafileUILayout"); 
+
+    NameLabel = new QLabel( this, "NameLabel" );
+
+    toStorageDatafileUILayout->addMultiCellWidget( NameLabel, 0, 0, 0, 2 );
+
+    Name = new QLineEdit( this, "Name" );
+
+    toStorageDatafileUILayout->addMultiCellWidget( Name, 1, 1, 0, 2 );
+
+    TextLabel1_2 = new QLabel( this, "TextLabel1_2" );
+
+    toStorageDatafileUILayout->addWidget( TextLabel1_2, 2, 0 );
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+
+    toStorageDatafileUILayout->addWidget( PushButton1, 3, 2 );
+
+    Filename = new QLineEdit( this, "Filename" );
+
+    toStorageDatafileUILayout->addWidget( Filename, 3, 0 );
+
+    InitialSize = new toFilesize( this, "InitialSize" );
+
+    toStorageDatafileUILayout->addMultiCellWidget( InitialSize, 4, 4, 0, 2 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toStorageDatafileUILayout->addItem( Spacer1, 7, 1 );
+
+    AutoExtendGroup = new QGroupBox( this, "AutoExtendGroup" );
+    AutoExtendGroup->setColumnLayout(0, Qt::Vertical );
+    AutoExtendGroup->layout()->setSpacing( 6 );
+    AutoExtendGroup->layout()->setMargin( 11 );
+    AutoExtendGroupLayout = new QGridLayout( AutoExtendGroup->layout() );
+    AutoExtendGroupLayout->setAlignment( Qt::AlignTop );
+
+    AutoExtend = new QCheckBox( AutoExtendGroup, "AutoExtend" );
+
+    AutoExtendGroupLayout->addWidget( AutoExtend, 0, 0 );
+
+    UnlimitedMax = new QCheckBox( AutoExtendGroup, "UnlimitedMax" );
+    UnlimitedMax->setEnabled( FALSE );
+
+    AutoExtendGroupLayout->addWidget( UnlimitedMax, 2, 0 );
+
+    MaximumSize = new toFilesize( AutoExtendGroup, "MaximumSize" );
+    MaximumSize->setEnabled( FALSE );
+
+    AutoExtendGroupLayout->addWidget( MaximumSize, 3, 0 );
+
+    NextSize = new toFilesize( AutoExtendGroup, "NextSize" );
+    NextSize->setEnabled( FALSE );
+
+    AutoExtendGroupLayout->addWidget( NextSize, 1, 0 );
+
+    toStorageDatafileUILayout->addMultiCellWidget( AutoExtendGroup, 6, 6, 0, 2 );
+    languageChange();
+    resize( QSize(580, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( AutoExtend, SIGNAL( toggled(bool) ), this, SLOT( autoExtend(bool) ) );
+    connect( UnlimitedMax, SIGNAL( toggled(bool) ), this, SLOT( maximumSize(bool) ) );
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( browseFile() ) );
+    connect( Filename, SIGNAL( textChanged(const QString&) ), this, SLOT( valueChanged(const QString &) ) );
+
+    // buddies
+    NameLabel->setBuddy( Name );
+    TextLabel1_2->setBuddy( Name );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toStorageDatafileUI::~toStorageDatafileUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toStorageDatafileUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    NameLabel->setText( tr( "&Tablespace name" ) );
+    TextLabel1_2->setText( tr( "&Filename" ) );
+    PushButton1->setText( tr( "&Browse" ) );
+    AutoExtendGroup->setTitle( tr( "Auto extend" ) );
+    AutoExtend->setText( tr( "&Auto extend datafile" ) );
+    UnlimitedMax->setText( tr( "&Unlimited max size" ) );
+}
+
+void toStorageDatafileUI::browseFile()
+{
+    qWarning( "toStorageDatafileUI::browseFile(): Not implemented yet" );
+}
+
+void toStorageDatafileUI::autoExtend(bool)
+{
+    qWarning( "toStorageDatafileUI::autoExtend(bool): Not implemented yet" );
+}
+
+void toStorageDatafileUI::maximumSize(bool)
+{
+    qWarning( "toStorageDatafileUI::maximumSize(bool): Not implemented yet" );
+}
+
+void toStorageDatafileUI::valueChanged(const QString&)
+{
+    qWarning( "toStorageDatafileUI::valueChanged(const QString&): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,67 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tostoragedatafileui.ui'
+**
+** Created: Tue Sep 18 08:21:25 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSTORAGEDATAFILEUI_H
+#define TOSTORAGEDATAFILEUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toFilesize;
+class QLabel;
+class QLineEdit;
+class QPushButton;
+class QGroupBox;
+class QCheckBox;
+
+class toStorageDatafileUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toStorageDatafileUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toStorageDatafileUI();
+
+    QLabel* NameLabel;
+    QLineEdit* Name;
+    QLabel* TextLabel1_2;
+    QPushButton* PushButton1;
+    QLineEdit* Filename;
+    toFilesize* InitialSize;
+    QGroupBox* AutoExtendGroup;
+    QCheckBox* AutoExtend;
+    QCheckBox* UnlimitedMax;
+    toFilesize* MaximumSize;
+    toFilesize* NextSize;
+
+public slots:
+    virtual void browseFile();
+    virtual void autoExtend(bool);
+    virtual void maximumSize(bool);
+    virtual void valueChanged(const QString &);
+
+protected:
+    QGridLayout* toStorageDatafileUILayout;
+    QSpacerItem* Spacer1;
+    QGridLayout* AutoExtendGroupLayout;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOSTORAGEDATAFILEUI_H

Added: kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedatafileui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,238 @@
+<!DOCTYPE UI><UI>
+<class>toStorageDatafileUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toStorageDatafileUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>580</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>NameLabel</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Tablespace name</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Name</cstring>
+            </property>
+        </widget>
+        <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Name</cstring>
+            </property>
+        </widget>
+        <widget row="2"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Filename</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Name</cstring>
+            </property>
+        </widget>
+        <widget row="3"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Browse</string>
+            </property>
+        </widget>
+        <widget row="3"  column="0" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Filename</cstring>
+            </property>
+        </widget>
+        <widget row="4"  column="0"  rowspan="1"  colspan="3" >
+            <class>toFilesize</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>InitialSize</cstring>
+            </property>
+        </widget>
+        <spacer row="7"  column="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="6"  column="0"  rowspan="1"  colspan="3" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>AutoExtendGroup</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Auto extend</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>AutoExtend</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Auto extend datafile</string>
+                    </property>
+                </widget>
+                <widget row="2"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>UnlimitedMax</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>false</bool>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Unlimited max size</string>
+                    </property>
+                </widget>
+                <widget row="3"  column="0" >
+                    <class>toFilesize</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>MaximumSize</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>false</bool>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>toFilesize</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>NextSize</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>false</bool>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toFilesize</class>
+        <header location="local">tofilesize.h</header>
+        <sizehint>
+            <width>200</width>
+            <height>40</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>1</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+        <signal>valueChanged(void)</signal>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>AutoExtend</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toStorageDatafileUI</receiver>
+        <slot>autoExtend(bool)</slot>
+    </connection>
+    <connection>
+        <sender>UnlimitedMax</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toStorageDatafileUI</receiver>
+        <slot>maximumSize(bool)</slot>
+    </connection>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toStorageDatafileUI</receiver>
+        <slot>browseFile()</slot>
+    </connection>
+    <connection>
+        <sender>Filename</sender>
+        <signal>textChanged(const QString&amp;)</signal>
+        <receiver>toStorageDatafileUI</receiver>
+        <slot>valueChanged(const QString &amp;)</slot>
+    </connection>
+    <slot access="public">browseFile()</slot>
+    <slot access="public">autoExtend(bool)</slot>
+    <slot access="public">maximumSize(bool)</slot>
+    <slot access="public">valueChanged(const QString &amp;)</slot>
+</connections>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tostoragedefinition.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedefinition.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedefinition.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,100 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include <qtooltip.h>
+#include <qgroupbox.h>
+#include <qframe.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qspinbox.h>
+#include <qgroupbox.h>
+
+#include "tofilesize.h"
+#include "tostoragedefinition.h"
+
+#include "tostoragedefinitionui.moc"
+
+toStorageDefinition::toStorageDefinition(QWidget* parent, const char* name, WFlags fl)
+        : toStorageDefinitionUI(parent, name, fl)
+{
+    InitialSize->setTitle(tr("&Initial size"));
+    InitialSize->setValue(50);
+
+    NextSize->setTitle(tr("&Next size"));
+    NextSize->setValue(50);
+
+    OptimalSize->setTitle(tr("&Size"));
+    OptimalSize->setEnabled(false);
+}
+
+std::list<QString> toStorageDefinition::sql(void)
+{
+    QString str(QString::fromLatin1("STORAGE (INITIAL "));
+    str.append(InitialSize->sizeString());
+    str.append(QString::fromLatin1(" NEXT "));
+    str.append(NextSize->sizeString());
+    str.append(QString::fromLatin1(" MINEXTENTS "));
+    str.append(InitialExtent->text());
+    str.append(QString::fromLatin1(" MAXEXTENTS "));
+    if (UnlimitedExtent->isChecked())
+        str.append(QString::fromLatin1("UNLIMITED"));
+    else
+        str.append(MaximumExtent->text());
+    if (!Optimal->isEnabled())
+    {
+        str.append(QString::fromLatin1(" PCTINCREASE "));
+        str.append(PCTIncrease->text());
+    }
+
+    if (!OptimalNull->isChecked())
+    {
+        str.append(QString::fromLatin1(" OPTIMAL "));
+        str.append(OptimalSize->sizeString());
+    }
+    str.append(QString::fromLatin1(")"));
+    std::list<QString> ret;
+    ret.insert(ret.end(), str);
+    return ret;
+}
+
+void toStorageDefinition::forRollback(bool val)
+{
+    Optimal->setEnabled(val);
+    PCTIncrease->setEnabled(!val);
+    InitialExtent->setMinValue(2);
+    InitialExtent->setValue(4);
+}

Added: kde-extras/tora/branches/upstream/current/src/tostoragedefinition.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedefinition.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedefinition.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,69 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSTORAGEDEFINITION_H
+#define TOSTORAGEDEFINITION_H
+
+#include "config.h"
+#include "tostoragedefinitionui.h"
+
+#include <list>
+
+#include <qwidget.h>
+
+class QCheckBox;
+class QFrame;
+class QGroupBox;
+class QGroupBox;
+class QLabel;
+class QSpinBox;
+class toFilesize;
+class toStorageDialog;
+
+class toStorageDefinition : public toStorageDefinitionUI
+{
+public:
+    toStorageDefinition(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+
+    void forRollback(bool val);
+
+    std::list<QString> sql(void);
+
+    friend class toStorageDialog;
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,156 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tostoragedefinitionui.ui'
+**
+** Created: Tue Sep 18 08:21:25 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tostoragedefinitionui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qgroupbox.h>
+#include <qframe.h>
+#include <qspinbox.h>
+#include <qlabel.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "tofilesize.h"
+
+/*
+ *  Constructs a toStorageDefinitionUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toStorageDefinitionUI::toStorageDefinitionUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toStorageDefinitionUI" );
+    toStorageDefinitionUILayout = new QGridLayout( this, 1, 1, 11, 6, "toStorageDefinitionUILayout"); 
+
+    InitialSize = new toFilesize( this, "InitialSize" );
+
+    toStorageDefinitionUILayout->addMultiCellWidget( InitialSize, 0, 0, 0, 1 );
+
+    GroupBox1 = new QGroupBox( this, "GroupBox1" );
+    GroupBox1->setColumnLayout(0, Qt::Vertical );
+    GroupBox1->layout()->setSpacing( 6 );
+    GroupBox1->layout()->setMargin( 11 );
+    GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
+    GroupBox1Layout->setAlignment( Qt::AlignTop );
+
+    Line1 = new QFrame( GroupBox1, "Line1" );
+    Line1->setFrameStyle( QFrame::VLine | QFrame::Sunken );
+
+    GroupBox1Layout->addMultiCellWidget( Line1, 0, 2, 1, 1 );
+
+    InitialExtent = new QSpinBox( GroupBox1, "InitialExtent" );
+    InitialExtent->setMaxValue( 2147483647 );
+    InitialExtent->setMinValue( 1 );
+    InitialExtent->setValue( 1 );
+
+    GroupBox1Layout->addWidget( InitialExtent, 2, 0 );
+
+    MaximumExtent = new QSpinBox( GroupBox1, "MaximumExtent" );
+    MaximumExtent->setEnabled( FALSE );
+    MaximumExtent->setMaxValue( 2147483647 );
+    MaximumExtent->setMinValue( 1 );
+    MaximumExtent->setValue( 1 );
+
+    GroupBox1Layout->addWidget( MaximumExtent, 2, 2 );
+
+    TextLabel1 = new QLabel( GroupBox1, "TextLabel1" );
+
+    GroupBox1Layout->addWidget( TextLabel1, 1, 2 );
+
+    TextLabel2 = new QLabel( GroupBox1, "TextLabel2" );
+
+    GroupBox1Layout->addWidget( TextLabel2, 1, 0 );
+
+    UnlimitedExtent = new QCheckBox( GroupBox1, "UnlimitedExtent" );
+    UnlimitedExtent->setChecked( TRUE );
+
+    GroupBox1Layout->addWidget( UnlimitedExtent, 0, 2 );
+
+    toStorageDefinitionUILayout->addMultiCellWidget( GroupBox1, 2, 2, 0, 1 );
+
+    NextSize = new toFilesize( this, "NextSize" );
+
+    toStorageDefinitionUILayout->addMultiCellWidget( NextSize, 1, 1, 0, 1 );
+
+    Optimal = new QGroupBox( this, "Optimal" );
+    Optimal->setColumnLayout(0, Qt::Vertical );
+    Optimal->layout()->setSpacing( 6 );
+    Optimal->layout()->setMargin( 11 );
+    OptimalLayout = new QGridLayout( Optimal->layout() );
+    OptimalLayout->setAlignment( Qt::AlignTop );
+
+    OptimalNull = new QCheckBox( Optimal, "OptimalNull" );
+    OptimalNull->setChecked( TRUE );
+
+    OptimalLayout->addWidget( OptimalNull, 0, 0 );
+
+    OptimalSize = new toFilesize( Optimal, "OptimalSize" );
+
+    OptimalLayout->addWidget( OptimalSize, 1, 0 );
+
+    toStorageDefinitionUILayout->addMultiCellWidget( Optimal, 3, 3, 0, 1 );
+
+    TextLabel3 = new QLabel( this, "TextLabel3" );
+
+    toStorageDefinitionUILayout->addWidget( TextLabel3, 4, 0 );
+
+    PCTIncrease = new QSpinBox( this, "PCTIncrease" );
+    PCTIncrease->setMaxValue( 1000 );
+    PCTIncrease->setLineStep( 10 );
+
+    toStorageDefinitionUILayout->addWidget( PCTIncrease, 4, 1 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toStorageDefinitionUILayout->addMultiCell( Spacer1, 5, 5, 0, 1 );
+    languageChange();
+    resize( QSize(596, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( UnlimitedExtent, SIGNAL( toggled(bool) ), MaximumExtent, SLOT( setDisabled(bool) ) );
+    connect( OptimalNull, SIGNAL( toggled(bool) ), OptimalSize, SLOT( setDisabled(bool) ) );
+
+    // buddies
+    TextLabel1->setBuddy( MaximumExtent );
+    TextLabel2->setBuddy( InitialSize );
+    TextLabel3->setBuddy( PCTIncrease );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toStorageDefinitionUI::~toStorageDefinitionUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toStorageDefinitionUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    QToolTip::add( this, tr( "Optimal allocation of extents. Will free unused extents down to specified value" ) );
+    GroupBox1->setTitle( tr( "&Extents" ) );
+    TextLabel1->setText( tr( "&Maximum extents" ) );
+    QToolTip::add( TextLabel1, tr( "Maximum number of extents to allocate for an object" ) );
+    TextLabel2->setText( tr( "&Initial size" ) );
+    QToolTip::add( TextLabel2, tr( "Number of extents to initially allocate" ) );
+    UnlimitedExtent->setText( tr( "&Unlimited extents" ) );
+    QToolTip::add( UnlimitedExtent, tr( "No limit to the number of extents to allocate if needed" ) );
+    Optimal->setTitle( tr( "&Optimal size" ) );
+    OptimalNull->setText( tr( "&No optimal size" ) );
+    TextLabel3->setText( tr( "&Default PCT increase" ) );
+    QToolTip::add( TextLabel3, tr( "Default increase in size of next allocated extent. A size of 0 will prevent background coalesce of free space" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,65 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tostoragedefinitionui.ui'
+**
+** Created: Tue Sep 18 08:21:25 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSTORAGEDEFINITIONUI_H
+#define TOSTORAGEDEFINITIONUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toFilesize;
+class QGroupBox;
+class QFrame;
+class QSpinBox;
+class QLabel;
+class QCheckBox;
+
+class toStorageDefinitionUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toStorageDefinitionUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toStorageDefinitionUI();
+
+    toFilesize* InitialSize;
+    QGroupBox* GroupBox1;
+    QFrame* Line1;
+    QSpinBox* InitialExtent;
+    QSpinBox* MaximumExtent;
+    QLabel* TextLabel1;
+    QLabel* TextLabel2;
+    QCheckBox* UnlimitedExtent;
+    toFilesize* NextSize;
+    QGroupBox* Optimal;
+    QCheckBox* OptimalNull;
+    toFilesize* OptimalSize;
+    QLabel* TextLabel3;
+    QSpinBox* PCTIncrease;
+
+protected:
+    QGridLayout* toStorageDefinitionUILayout;
+    QSpacerItem* Spacer1;
+    QGridLayout* GroupBox1Layout;
+    QGridLayout* OptimalLayout;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOSTORAGEDEFINITIONUI_H

Added: kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedefinitionui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,317 @@
+<!DOCTYPE UI><UI>
+<class>toStorageDefinitionUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toStorageDefinitionUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>596</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <property>
+        <name>toolTip</name>
+        <string>Optimal allocation of extents. Will free unused extents down to specified value</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0"  rowspan="1"  colspan="2" >
+            <class>toFilesize</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>InitialSize</cstring>
+            </property>
+        </widget>
+        <widget row="2"  column="0"  rowspan="1"  colspan="2" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>GroupBox1</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>&amp;Extents</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="1"  rowspan="3"  colspan="1" >
+                    <class>Line</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Line1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                </widget>
+                <widget row="2"  column="0" >
+                    <class>QSpinBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>InitialExtent</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>maxValue</name>
+                        <number>2147483647</number>
+                    </property>
+                    <property stdset="1">
+                        <name>minValue</name>
+                        <number>1</number>
+                    </property>
+                    <property stdset="1">
+                        <name>value</name>
+                        <number>1</number>
+                    </property>
+                </widget>
+                <widget row="2"  column="2" >
+                    <class>QSpinBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>MaximumExtent</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>false</bool>
+                    </property>
+                    <property stdset="1">
+                        <name>maxValue</name>
+                        <number>2147483647</number>
+                    </property>
+                    <property stdset="1">
+                        <name>minValue</name>
+                        <number>1</number>
+                    </property>
+                    <property stdset="1">
+                        <name>value</name>
+                        <number>1</number>
+                    </property>
+                </widget>
+                <widget row="1"  column="2" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Maximum extents</string>
+                    </property>
+                    <property>
+                        <name>buddy</name>
+                        <cstring>MaximumExtent</cstring>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Maximum number of extents to allocate for an object</string>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Initial size</string>
+                    </property>
+                    <property>
+                        <name>buddy</name>
+                        <cstring>InitialSize</cstring>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Number of extents to initially allocate</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="2" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>UnlimitedExtent</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Unlimited extents</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>No limit to the number of extents to allocate if needed</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget row="1"  column="0"  rowspan="1"  colspan="2" >
+            <class>toFilesize</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>NextSize</cstring>
+            </property>
+        </widget>
+        <widget row="3"  column="0"  rowspan="1"  colspan="2" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Optimal</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>&amp;Optimal size</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>OptimalNull</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;No optimal size</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>toFilesize</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>OptimalSize</cstring>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget row="4"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel3</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Default PCT increase</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>PCTIncrease</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Default increase in size of next allocated extent. A size of 0 will prevent background coalesce of free space</string>
+            </property>
+        </widget>
+        <widget row="4"  column="1" >
+            <class>QSpinBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PCTIncrease</cstring>
+            </property>
+            <property stdset="1">
+                <name>maxValue</name>
+                <number>1000</number>
+            </property>
+            <property stdset="1">
+                <name>lineStep</name>
+                <number>10</number>
+            </property>
+        </widget>
+        <spacer row="5"  column="0"  rowspan="1"  colspan="2" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toFilesize</class>
+        <header location="local">tofilesize.h</header>
+        <sizehint>
+            <width>200</width>
+            <height>40</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>1</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+        <signal>valueChanged(void)</signal>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>UnlimitedExtent</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>MaximumExtent</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>OptimalNull</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>OptimalSize</receiver>
+        <slot>setDisabled(bool)</slot>
+    </connection>
+</connections>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tostoragedialogui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedialogui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedialogui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,138 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tostoragedialogui.ui'
+**
+** Created: Tue Sep 18 08:21:25 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tostoragedialogui.h"
+
+#include <qvariant.h>
+#include <qtoolbutton.h>
+#include <qtabwidget.h>
+#include <qwidget.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+static const char* const image0_data[] = { 
+"16 16 14 1",
+". c None",
+"# c #000000",
+"i c #181841",
+"e c #20205a",
+"k c #202462",
+"c c #292873",
+"l c #292c7b",
+"h c #313083",
+"b c #393cac",
+"d c #4140b4",
+"f c #4a4ccd",
+"j c #5a59f6",
+"g c #5a5df6",
+"a c #5a5dff",
+"................",
+".###..###..##...",
+"#..#.#..#..#....",
+"##...#...#.#....",
+"..#..#####.#....",
+"...#.#aab#.#....",
+"#..##cdaef##..#.",
+".##.#ghiha#####.",
+"....#aajkl#.....",
+".....#aaa#......",
+"......#####.....",
+".........###....",
+"..........###...",
+"...........##...",
+"................",
+"................"};
+
+
+/*
+ *  Constructs a toStorageDialogUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toStorageDialogUI::toStorageDialogUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl ),
+      image0( (const char **) image0_data )
+{
+    if ( !name )
+	setName( "toStorageDialogUI" );
+    toStorageDialogUILayout = new QGridLayout( this, 1, 1, 11, 6, "toStorageDialogUILayout"); 
+
+    ToolButton1 = new QToolButton( this, "ToolButton1" );
+    ToolButton1->setPixmap( image0 );
+
+    toStorageDialogUILayout->addWidget( ToolButton1, 3, 2 );
+
+    DialogTab = new QTabWidget( this, "DialogTab" );
+
+    DefaultPage = new QWidget( DialogTab, "DefaultPage" );
+    DialogTab->insertTab( DefaultPage, QString::fromLatin1("") );
+
+    toStorageDialogUILayout->addMultiCellWidget( DialogTab, 0, 3, 0, 0 );
+
+    OkButton = new QPushButton( this, "OkButton" );
+    OkButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)4, (QSizePolicy::SizeType)0, 0, 0, OkButton->sizePolicy().hasHeightForWidth() ) );
+    OkButton->setDefault( TRUE );
+
+    toStorageDialogUILayout->addMultiCellWidget( OkButton, 0, 0, 1, 2 );
+
+    PushButton2 = new QPushButton( this, "PushButton2" );
+    PushButton2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)4, (QSizePolicy::SizeType)0, 0, 0, PushButton2->sizePolicy().hasHeightForWidth() ) );
+
+    toStorageDialogUILayout->addMultiCellWidget( PushButton2, 1, 1, 1, 2 );
+    Spacer2 = new QSpacerItem( 71, 20, QSizePolicy::Maximum, QSizePolicy::Minimum );
+    toStorageDialogUILayout->addItem( Spacer2, 3, 1 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toStorageDialogUILayout->addItem( Spacer1, 2, 2 );
+    languageChange();
+    resize( QSize(576, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( OkButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( ToolButton1, SIGNAL( clicked() ), this, SLOT( displaySQL(void) ) );
+
+    // tab order
+    setTabOrder( DialogTab, OkButton );
+    setTabOrder( OkButton, PushButton2 );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toStorageDialogUI::~toStorageDialogUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toStorageDialogUI::languageChange()
+{
+    setCaption( tr( "Modify tablespace" ) );
+    ToolButton1->setText( QString::null );
+    QToolTip::add( ToolButton1, tr( "Display the SQL used to generate the specified object" ) );
+    DialogTab->changeTab( DefaultPage, tr( "Tab 2" ) );
+    OkButton->setText( tr( "&Ok" ) );
+    PushButton2->setText( tr( "Cancel" ) );
+}
+
+void toStorageDialogUI::displaySQL()
+{
+    qWarning( "toStorageDialogUI::displaySQL(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tostoragedialogui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedialogui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedialogui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,56 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tostoragedialogui.ui'
+**
+** Created: Tue Sep 18 08:21:25 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSTORAGEDIALOGUI_H
+#define TOSTORAGEDIALOGUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QToolButton;
+class QTabWidget;
+class QWidget;
+class QPushButton;
+
+class toStorageDialogUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toStorageDialogUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toStorageDialogUI();
+
+    QToolButton* ToolButton1;
+    QTabWidget* DialogTab;
+    QWidget* DefaultPage;
+    QPushButton* OkButton;
+    QPushButton* PushButton2;
+
+public slots:
+    virtual void displaySQL(void);
+
+protected:
+    QGridLayout* toStorageDialogUILayout;
+    QSpacerItem* Spacer2;
+    QSpacerItem* Spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOSTORAGEDIALOGUI_H

Added: kde-extras/tora/branches/upstream/current/src/tostoragedialogui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragedialogui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragedialogui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,184 @@
+<!DOCTYPE UI><UI>
+<class>toStorageDialogUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toStorageDialogUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>576</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Modify tablespace</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="3"  column="2" >
+            <class>QToolButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ToolButton1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string></string>
+            </property>
+            <property stdset="1">
+                <name>pixmap</name>
+                <pixmap>image0</pixmap>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Display the SQL used to generate the specified object</string>
+            </property>
+        </widget>
+        <widget row="0"  column="0"  rowspan="4"  colspan="1" >
+            <class>QTabWidget</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>DialogTab</cstring>
+            </property>
+            <widget>
+                <class>QWidget</class>
+                <property stdset="1">
+                    <name>name</name>
+                    <cstring>DefaultPage</cstring>
+                </property>
+                <attribute>
+                    <name>title</name>
+                    <string>Tab 2</string>
+                </attribute>
+            </widget>
+        </widget>
+        <widget row="0"  column="1"  rowspan="1"  colspan="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>OkButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>4</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="1"  column="1"  rowspan="1"  colspan="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton2</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>4</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <spacer row="3"  column="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Maximum</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>71</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <spacer row="2"  column="2" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="575">789c6d90cf6e83300c87ef3c45446e684a13081434f51136ed3869dac11828f4cf2a6ddd619af6eeebcf848ab25921f2f7c5d88455a29e9f1e54b28a3ece741e58714fef2a693e8fc7af97d7cd7714bb426179e5e2bb28368ad5e3e9ad45ae2fb9b612c001e84a577aa96c81a94d6d4ec07d405fa44016acd2729d010f01795d037b60e6325bca692d58654c0c6c80de795b7b6027489eb901ee8039e5555700b7019b11e98a9d5c6711e2b4d666da82436e64c30a0ed9f85cdd5881983b5410d5332755dc50dbc99869aed1db7ee8696c307ddfe5d5ddfea0cdac9f48d2e6d685c1b7ce84ab2c5c908b7ff09ffbdb6f723ff7d12f66576feb</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>OkButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toStorageDialogUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>toStorageDialogUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>ToolButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toStorageDialogUI</receiver>
+        <slot>displaySQL(void)</slot>
+    </connection>
+    <slot access="public">displaySQL(void)</slot>
+</connections>
+<tabstops>
+    <tabstop>DialogTab</tabstop>
+    <tabstop>OkButton</tabstop>
+    <tabstop>PushButton2</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tostorageprefsui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostorageprefsui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostorageprefsui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,85 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tostorageprefsui.ui'
+**
+** Created: Tue Sep 18 08:21:25 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tostorageprefsui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qbuttongroup.h>
+#include <qcheckbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toStoragePrefsUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toStoragePrefsUI::toStoragePrefsUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toStoragePrefsUI" );
+    toStoragePrefsUILayout = new QGridLayout( this, 1, 1, 11, 6, "toStoragePrefsUILayout"); 
+
+    ButtonGroup1 = new QButtonGroup( this, "ButtonGroup1" );
+    ButtonGroup1->setColumnLayout(0, Qt::Vertical );
+    ButtonGroup1->layout()->setSpacing( 6 );
+    ButtonGroup1->layout()->setMargin( 11 );
+    ButtonGroup1Layout = new QGridLayout( ButtonGroup1->layout() );
+    ButtonGroup1Layout->setAlignment( Qt::AlignTop );
+
+    DispCoalesced = new QCheckBox( ButtonGroup1, "DispCoalesced" );
+
+    ButtonGroup1Layout->addWidget( DispCoalesced, 0, 0 );
+
+    DispExtents = new QCheckBox( ButtonGroup1, "DispExtents" );
+
+    ButtonGroup1Layout->addWidget( DispExtents, 1, 0 );
+
+    DispTablespaces = new QCheckBox( ButtonGroup1, "DispTablespaces" );
+
+    ButtonGroup1Layout->addWidget( DispTablespaces, 2, 0 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    ButtonGroup1Layout->addItem( Spacer1, 4, 0 );
+
+    DispAvailableGraph = new QCheckBox( ButtonGroup1, "DispAvailableGraph" );
+
+    ButtonGroup1Layout->addWidget( DispAvailableGraph, 3, 0 );
+
+    toStoragePrefsUILayout->addWidget( ButtonGroup1, 0, 0 );
+    languageChange();
+    resize( QSize(588, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toStoragePrefsUI::~toStoragePrefsUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toStoragePrefsUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    ButtonGroup1->setTitle( tr( "Storage Manager" ) );
+    DispCoalesced->setText( tr( "&Display coalesced column" ) );
+    DispExtents->setText( tr( "Display object &extents" ) );
+    QToolTip::add( DispExtents, tr( "Display object and extent list on startup." ) );
+    DispTablespaces->setText( tr( "Display tablespaces or just datafiles." ) );
+    QToolTip::add( DispTablespaces, tr( "Display tablespaces or just datafiles." ) );
+    DispAvailableGraph->setText( tr( "Display graph of autoextend information instead of just free space." ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tostorageprefsui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostorageprefsui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostorageprefsui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,47 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tostorageprefsui.ui'
+**
+** Created: Tue Sep 18 08:21:25 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSTORAGEPREFSUI_H
+#define TOSTORAGEPREFSUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QButtonGroup;
+class QCheckBox;
+
+class toStoragePrefsUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toStoragePrefsUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toStoragePrefsUI();
+
+    QButtonGroup* ButtonGroup1;
+    QCheckBox* DispCoalesced;
+    QCheckBox* DispExtents;
+    QCheckBox* DispTablespaces;
+    QCheckBox* DispAvailableGraph;
+
+protected:
+    QGridLayout* toStoragePrefsUILayout;
+    QGridLayout* ButtonGroup1Layout;
+    QSpacerItem* Spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOSTORAGEPREFSUI_H

Added: kde-extras/tora/branches/upstream/current/src/tostorageprefsui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostorageprefsui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostorageprefsui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,130 @@
+<!DOCTYPE UI><UI>
+<class>toStoragePrefsUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toStoragePrefsUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>588</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <property>
+        <name>layoutMargin</name>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0" >
+            <class>QButtonGroup</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ButtonGroup1</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Storage Manager</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>DispCoalesced</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Display coalesced column</string>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>DispExtents</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Display object &amp;extents</string>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Display object and extent list on startup.</string>
+                    </property>
+                </widget>
+                <widget row="2"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>DispTablespaces</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Display tablespaces or just datafiles.</string>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Display tablespaces or just datafiles.</string>
+                    </property>
+                </widget>
+                <spacer row="4"  column="0" >
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget row="3"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>DispAvailableGraph</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Display graph of autoextend information instead of just free space.</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+    </grid>
+</widget>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,157 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tostoragetablespaceui.ui'
+**
+** Created: Tue Sep 18 08:21:25 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tostoragetablespaceui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qbuttongroup.h>
+#include <qcheckbox.h>
+#include <qradiobutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "tofilesize.h"
+
+/*
+ *  Constructs a toStorageTablespaceUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toStorageTablespaceUI::toStorageTablespaceUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toStorageTablespaceUI" );
+    toStorageTablespaceUILayout = new QGridLayout( this, 1, 1, 11, 6, "toStorageTablespaceUILayout"); 
+
+    MinimumExtent = new toFilesize( this, "MinimumExtent" );
+
+    toStorageTablespaceUILayout->addWidget( MinimumExtent, 0, 0 );
+
+    ButtonGroup1 = new QButtonGroup( this, "ButtonGroup1" );
+    ButtonGroup1->setColumnLayout(0, Qt::Vertical );
+    ButtonGroup1->layout()->setSpacing( 6 );
+    ButtonGroup1->layout()->setMargin( 11 );
+    ButtonGroup1Layout = new QGridLayout( ButtonGroup1->layout() );
+    ButtonGroup1Layout->setAlignment( Qt::AlignTop );
+
+    Logging = new QCheckBox( ButtonGroup1, "Logging" );
+    Logging->setChecked( TRUE );
+
+    ButtonGroup1Layout->addWidget( Logging, 0, 0 );
+
+    Online = new QCheckBox( ButtonGroup1, "Online" );
+    Online->setChecked( TRUE );
+
+    ButtonGroup1Layout->addWidget( Online, 2, 0 );
+
+    Permanent = new QCheckBox( ButtonGroup1, "Permanent" );
+    Permanent->setChecked( TRUE );
+
+    ButtonGroup1Layout->addWidget( Permanent, 1, 0 );
+
+    DefaultStorage = new QCheckBox( ButtonGroup1, "DefaultStorage" );
+
+    ButtonGroup1Layout->addWidget( DefaultStorage, 3, 0 );
+
+    toStorageTablespaceUILayout->addWidget( ButtonGroup1, 1, 0 );
+
+    ExtentGroup = new QButtonGroup( this, "ExtentGroup" );
+    ExtentGroup->setColumnLayout(0, Qt::Vertical );
+    ExtentGroup->layout()->setSpacing( 6 );
+    ExtentGroup->layout()->setMargin( 11 );
+    ExtentGroupLayout = new QGridLayout( ExtentGroup->layout() );
+    ExtentGroupLayout->setAlignment( Qt::AlignTop );
+
+    Dictionary = new QRadioButton( ExtentGroup, "Dictionary" );
+    Dictionary->setChecked( TRUE );
+
+    ExtentGroupLayout->addWidget( Dictionary, 0, 0 );
+
+    LocalAuto = new QRadioButton( ExtentGroup, "LocalAuto" );
+
+    ExtentGroupLayout->addWidget( LocalAuto, 1, 0 );
+
+    LocalSelect = new QRadioButton( ExtentGroup, "LocalSelect" );
+    LocalSelect->setEnabled( TRUE );
+
+    ExtentGroupLayout->addWidget( LocalSelect, 2, 0 );
+
+    LocalUniform = new toFilesize( ExtentGroup, "LocalUniform" );
+    LocalUniform->setEnabled( FALSE );
+
+    ExtentGroupLayout->addWidget( LocalUniform, 3, 0 );
+
+    toStorageTablespaceUILayout->addWidget( ExtentGroup, 2, 0 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toStorageTablespaceUILayout->addItem( Spacer1, 3, 0 );
+    languageChange();
+    resize( QSize(592, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( DefaultStorage, SIGNAL( toggled(bool) ), this, SLOT( allowDefault(bool) ) );
+    connect( Permanent, SIGNAL( toggled(bool) ), this, SLOT( permanentToggle(bool) ) );
+    connect( Dictionary, SIGNAL( toggled(bool) ), this, SLOT( dictionaryToggle(bool) ) );
+    connect( LocalSelect, SIGNAL( toggled(bool) ), this, SLOT( uniformToggle(bool) ) );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toStorageTablespaceUI::~toStorageTablespaceUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toStorageTablespaceUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    ButtonGroup1->setTitle( tr( "&Options" ) );
+    Logging->setText( tr( "&Logging" ) );
+    QToolTip::add( Logging, tr( "Should objects created in this tablespace be logging by default" ) );
+    Online->setText( tr( "&Online" ) );
+    QToolTip::add( Online, tr( "Should tablespace be online at the time of creation" ) );
+    Permanent->setText( tr( "&Permanent" ) );
+    QToolTip::add( Permanent, tr( "Should objects in this tablespace be permanent after the end of the session" ) );
+    DefaultStorage->setText( tr( "&Default storage" ) );
+    QToolTip::add( DefaultStorage, tr( "Specify default storage clause (In separate tab)" ) );
+    ExtentGroup->setTitle( tr( "&Extent allocation" ) );
+    Dictionary->setText( tr( "&Dictionary" ) );
+    QToolTip::add( Dictionary, tr( "Manage tablespace extents using dictionary tables" ) );
+    LocalAuto->setText( tr( "Local &autoallocation" ) );
+    QToolTip::add( LocalAuto, tr( "Specify how space is allocated in the tablespace" ) );
+    LocalSelect->setText( tr( "Local &uniform" ) );
+    QToolTip::add( LocalSelect, tr( "The tablespace is locally managed with fixed extent sizes of specified size" ) );
+}
+
+void toStorageTablespaceUI::permanentToggle(bool)
+{
+    qWarning( "toStorageTablespaceUI::permanentToggle(bool): Not implemented yet" );
+}
+
+void toStorageTablespaceUI::dictionaryToggle(bool)
+{
+    qWarning( "toStorageTablespaceUI::dictionaryToggle(bool): Not implemented yet" );
+}
+
+void toStorageTablespaceUI::uniformToggle(bool)
+{
+    qWarning( "toStorageTablespaceUI::uniformToggle(bool): Not implemented yet" );
+}
+
+void toStorageTablespaceUI::allowDefault(bool)
+{
+    qWarning( "toStorageTablespaceUI::allowDefault(bool): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,66 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tostoragetablespaceui.ui'
+**
+** Created: Tue Sep 18 08:21:25 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSTORAGETABLESPACEUI_H
+#define TOSTORAGETABLESPACEUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toFilesize;
+class QButtonGroup;
+class QCheckBox;
+class QRadioButton;
+
+class toStorageTablespaceUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toStorageTablespaceUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toStorageTablespaceUI();
+
+    toFilesize* MinimumExtent;
+    QButtonGroup* ButtonGroup1;
+    QCheckBox* Logging;
+    QCheckBox* Online;
+    QCheckBox* Permanent;
+    QCheckBox* DefaultStorage;
+    QButtonGroup* ExtentGroup;
+    QRadioButton* Dictionary;
+    QRadioButton* LocalAuto;
+    QRadioButton* LocalSelect;
+    toFilesize* LocalUniform;
+
+public slots:
+    virtual void permanentToggle(bool);
+    virtual void dictionaryToggle(bool);
+    virtual void uniformToggle(bool);
+    virtual void allowDefault(bool);
+
+protected:
+    QGridLayout* toStorageTablespaceUILayout;
+    QSpacerItem* Spacer1;
+    QGridLayout* ButtonGroup1Layout;
+    QGridLayout* ExtentGroupLayout;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOSTORAGETABLESPACEUI_H

Added: kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tostoragetablespaceui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,292 @@
+<!DOCTYPE UI><UI>
+<class>toStorageTablespaceUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toStorageTablespaceUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>592</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0" >
+            <class>toFilesize</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>MinimumExtent</cstring>
+            </property>
+        </widget>
+        <widget row="1"  column="0" >
+            <class>QButtonGroup</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ButtonGroup1</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>&amp;Options</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Logging</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Logging</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Should objects created in this tablespace be logging by default</string>
+                    </property>
+                </widget>
+                <widget row="2"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Online</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Online</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Should tablespace be online at the time of creation</string>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Permanent</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Permanent</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Should objects in this tablespace be permanent after the end of the session</string>
+                    </property>
+                </widget>
+                <widget row="3"  column="0" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>DefaultStorage</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Default storage</string>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Specify default storage clause (In separate tab)</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget row="2"  column="0" >
+            <class>QButtonGroup</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ExtentGroup</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>&amp;Extent allocation</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="0" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Dictionary</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Dictionary</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Manage tablespace extents using dictionary tables</string>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>LocalAuto</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Local &amp;autoallocation</string>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Specify how space is allocated in the tablespace</string>
+                    </property>
+                </widget>
+                <widget row="2"  column="0" >
+                    <class>QRadioButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>LocalSelect</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>true</bool>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Local &amp;uniform</string>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>The tablespace is locally managed with fixed extent sizes of specified size</string>
+                    </property>
+                </widget>
+                <widget row="3"  column="0" >
+                    <class>toFilesize</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>LocalUniform</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>false</bool>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <spacer row="3"  column="0" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toFilesize</class>
+        <header location="local">tofilesize.h</header>
+        <sizehint>
+            <width>200</width>
+            <height>40</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>1</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+        <signal>valueChanged(void)</signal>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>DefaultStorage</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toStorageTablespaceUI</receiver>
+        <slot>allowDefault(bool)</slot>
+    </connection>
+    <connection>
+        <sender>Permanent</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toStorageTablespaceUI</receiver>
+        <slot>permanentToggle(bool)</slot>
+    </connection>
+    <connection>
+        <sender>Dictionary</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toStorageTablespaceUI</receiver>
+        <slot>dictionaryToggle(bool)</slot>
+    </connection>
+    <connection>
+        <sender>LocalSelect</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toStorageTablespaceUI</receiver>
+        <slot>uniformToggle(bool)</slot>
+    </connection>
+    <slot access="public">permanentToggle(bool)</slot>
+    <slot access="public">dictionaryToggle(bool)</slot>
+    <slot access="public">uniformToggle(bool)</slot>
+    <slot access="public">allowDefault(bool)</slot>
+</connections>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tosyntaxsetup.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosyntaxsetup.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosyntaxsetup.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,361 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "tohighlightedtext.h"
+#include "tosyntaxsetup.h"
+
+#include <stdio.h>
+
+#ifdef TO_KDE
+#  include <kfontdialog.h>
+#else
+#  include <qfontdialog.h>
+#endif
+
+#include <qapplication.h>
+#include <qcheckbox.h>
+#include <qcolordialog.h>
+#include <qfont.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qlistbox.h>
+#include <qlistview.h>
+#include <qspinbox.h>
+
+#include "tosyntaxsetup.moc"
+#include "tosyntaxsetupui.moc"
+
+toSyntaxSetup::toSyntaxSetup(QWidget *parent, const char *name, WFlags fl)
+        : toSyntaxSetupUI(parent, name, fl), toSettingTab("fonts.html"),
+        Analyzer(toSyntaxAnalyzer::defaultAnalyzer())
+{
+    KeywordUpper->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_KEYWORD_UPPER, DEFAULT_KEYWORD_UPPER).isEmpty());
+    SyntaxHighlighting->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_HIGHLIGHT, "Yes").isEmpty());
+    CodeCompletion->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_CODE_COMPLETION, "Yes").isEmpty());
+    CompletionSort->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_COMPLETION_SORT, "Yes").isEmpty());
+    AutoIndent->setChecked(!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_INDENT, "Yes").isEmpty());
+    Extensions->setText(toConfigurationSingle::Instance().globalConfig(CONF_EXTENSIONS, DEFAULT_EXTENSIONS));
+    TabStop->setValue(toMarkedText::defaultTabWidth());
+
+    {
+        QFont font(toStringToFont(toConfigurationSingle::Instance().globalConfig(CONF_CODE, "")));
+        checkFixedWidth(font);
+        CodeExample->setFont(font);
+    }
+
+    TextExample->setFont(toStringToFont(toConfigurationSingle::Instance().globalConfig(CONF_TEXT, "")));
+
+    {
+        QString str = toConfigurationSingle::Instance().globalConfig(CONF_LIST, "");
+        QFont font;
+        if (str.isEmpty())
+        {
+            QWidget *wid = new QListView;
+            font = qApp->font(wid);
+        }
+        else
+        {
+            font = toStringToFont(str);
+        }
+        List = toFontToString(font);
+        ResultExample->setFont(font);
+    }
+    try
+    {
+#define INIT_COL(c)	{ \
+	Colors[Analyzer.typeString(c)] = Analyzer.getColor(c); \
+	SyntaxComponent->insertItem(tr(Analyzer.typeString(c))); \
+	}
+	INIT_COL(toSyntaxAnalyzer::Default);
+	INIT_COL(toSyntaxAnalyzer::Comment);
+	INIT_COL(toSyntaxAnalyzer::Number);
+	INIT_COL(toSyntaxAnalyzer::Keyword);
+	INIT_COL(toSyntaxAnalyzer::String);
+	INIT_COL(toSyntaxAnalyzer::DefaultBg);
+	INIT_COL(toSyntaxAnalyzer::ErrorBg);
+	INIT_COL(toSyntaxAnalyzer::DebugBg);
+    }
+    TOCATCH
+
+    Example->setAnalyzer(Analyzer);
+    Example->setReadOnly(true);
+#ifdef TO_NO_ORACLE
+
+    Example->setText(QString::fromLatin1("create procedure CheckObvious\n"
+                                         "begin\n"
+                                         "  set Quest = 'Great'; -- This variable doesn't exist\n"
+                                         "  if Quest = 'Great' then\n"
+                                         "    call Obvious(true);\n"
+                                         "  end if;\n"
+                                         "end"));
+#else
+
+    Example->setText(QString::fromLatin1("create procedure CheckObvious as\n"
+                                         "begin\n"
+                                         "  Quest:='Great'; -- This variable doesn't exist\n"
+                                         "  if Quest = 'Great' then\n"
+                                         "    Obvious(true);\n"
+                                         "  end if;\n"
+                                         "  HugeNumber := -12345678.90;\n"
+					 "/*\n"
+					 " * multi line comment\n"
+					 " */\n"
+                                         "end;"));
+#endif
+
+    Example->setCurrent(4);
+    std::map<int, QString> Errors;
+    Errors[2] = tr("Unknown variable");
+    Example->setErrors(Errors);
+
+    Current = NULL;
+}
+
+void toSyntaxAnalyzer::readColor(const QColor &def, infoType typ)
+{
+    QCString conf(CONF_COLOR ":");
+    conf += typeString(typ);
+    QString res = toConfigurationSingle::Instance().globalConfig(conf, "");
+    if (res.isEmpty())
+        Colors[typ] = def;
+    else
+    {
+        int r, g, b;
+        if (sscanf(res, "%d,%d,%d", &r, &g, &b) != 3)
+            throw qApp->translate("toSyntaxAnalyzer", "Wrong format of color in setings");
+        QColor col(r, g, b);
+        Colors[typ] = col;
+    }
+}
+
+toSyntaxAnalyzer::infoType toSyntaxAnalyzer::typeString(const QCString &str)
+{
+    if (str == "Default")
+        return Default;
+    if (str == "Comment")
+        return Comment;
+    if (str == "Number")
+        return Number;
+    if (str == "Keyword")
+        return Keyword;
+    if (str == "String")
+        return String;
+    if (str == "Background")
+        return DefaultBg;
+    if (str == "Error background")
+        return ErrorBg;
+    if (str == "Debug background")
+        return DebugBg;
+    throw qApp->translate("toSyntaxAnalyzer", "Unknown type");
+}
+
+QCString toSyntaxAnalyzer::typeString(infoType typ)
+{
+    switch (typ)
+    {
+    case Default:
+        return "Default";
+    case Comment:
+        return "Comment";
+    case Number:
+        return "Number";
+    case Keyword:
+        return "Keyword";
+    case String:
+        return "String";
+    case DefaultBg:
+        return "Background";
+    case ErrorBg:
+        return "Error background";
+    case DebugBg:
+        return "Debug background";
+    }
+    throw qApp->translate("toSyntaxAnalyzer", "Unknown type");
+}
+
+void toSyntaxAnalyzer::updateSettings(void)
+{
+    try
+    {
+        const QColorGroup &cg = qApp->palette().active();
+        readColor(cg.text(), Default);
+        readColor(Qt::green, Comment);
+        readColor(Qt::cyan, Number);
+        readColor(Qt::blue, Keyword);
+        readColor(Qt::red, String);
+        readColor(cg.base(), DefaultBg);
+        readColor(Qt::darkRed, ErrorBg);
+        readColor(Qt::darkGreen, DebugBg);
+    }
+    TOCATCH
+}
+
+void toSyntaxSetup::checkFixedWidth(const QFont &fnt)
+{
+    QFontMetrics mtr(fnt);
+    if (mtr.width(QString::fromLatin1("iiiiiiii")) == mtr.width(QString::fromLatin1("MMMMMMMM")))
+        KeywordUpper->setEnabled(true);
+    else
+    {
+        KeywordUpper->setChecked(false);
+        KeywordUpper->setEnabled(false);
+    }
+}
+
+void toSyntaxSetup::selectFont(void)
+{
+#ifdef TO_KDE
+    QFont font = CodeExample->font();
+    bool ok = KFontDialog::getFont(font, false, this);
+#else
+
+    bool ok = true;
+    QFont font = QFontDialog::getFont (&ok, CodeExample->font(), this);
+#endif
+
+    if (ok)
+    {
+        CodeExample->setFont(font);
+        Example->setFont(font);
+        checkFixedWidth(font);
+    }
+}
+
+void toSyntaxSetup::selectText(void)
+{
+#ifdef TO_KDE
+    QFont font = TextExample->font();
+    bool ok = KFontDialog::getFont(font, false, this);
+#else
+
+    bool ok = true;
+    QFont font = QFontDialog::getFont (&ok, TextExample->font(), this);
+#endif
+
+    if (ok)
+        TextExample->setFont(font);
+}
+
+void toSyntaxSetup::selectResultFont(void)
+{
+#ifdef TO_KDE
+    QFont font = toStringToFont(List);
+    bool ok = KFontDialog::getFont(font, false, this);
+#else
+
+    bool ok = true;
+    QFont font = QFontDialog::getFont (&ok, toStringToFont(List), this);
+#endif
+
+    if (ok)
+    {
+        List = toFontToString(font);
+        ResultExample->setFont(font);
+    }
+}
+
+QCString toSyntaxSetup::color()
+{
+    QString t = Current->text();
+    for (std::map<QCString, QColor>::iterator i = Colors.begin();i != Colors.end();i++)
+        if (qApp->translate("toSyntaxSetup", (*i).first) == t)
+            return (*i).first;
+    throw tr("Unknown color name %1").arg(t);
+}
+
+void toSyntaxSetup::changeLine(QListBoxItem *item)
+{
+    Current = item;
+    if (Current)
+    {
+        QColor col = Colors[color()];
+        ExampleColor->setBackgroundColor(col);
+    }
+}
+
+void toSyntaxSetup::selectColor(void)
+{
+    try
+    {
+        if (Current)
+        {
+            QCString coleng = color();
+            QColor col = QColorDialog::getColor(Colors[coleng]);
+            if (col.isValid())
+            {
+                Colors[coleng] = col;
+                ExampleColor->setBackgroundColor(col);
+                Example->analyzer().Colors[toSyntaxAnalyzer::typeString(coleng)] = col;
+                Example->updateSyntaxColor(toSyntaxAnalyzer::typeString(coleng));
+                Example->update();
+            }
+        }
+    }
+    TOCATCH
+}
+
+void toSyntaxSetup::saveSetting(void)
+{
+    toConfigurationSingle::Instance().globalSetConfig(CONF_TEXT, toFontToString(TextExample->font()));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_CODE, toFontToString(CodeExample->font()));
+    toConfigurationSingle::Instance().globalSetConfig(CONF_LIST, List);
+    bool highlight = SyntaxHighlighting->isChecked();
+    toConfigurationSingle::Instance().globalSetConfig(CONF_HIGHLIGHT, highlight ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_KEYWORD_UPPER, KeywordUpper->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_CODE_COMPLETION, highlight && CodeCompletion->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_COMPLETION_SORT, CompletionSort->isChecked() ? "Yes" : "");
+    toConfigurationSingle::Instance().globalSetConfig(CONF_AUTO_INDENT, AutoIndent->isChecked() ? "Yes" : "");
+    toMarkedText::setDefaultTabWidth(TabStop->value());
+    toConfigurationSingle::Instance().globalSetConfig(CONF_TAB_STOP, QString::number(toMarkedText::defaultTabWidth()));
+    for (std::map<QCString, QColor>::iterator i = Colors.begin();i != Colors.end();i++)
+    {
+        QCString str(CONF_COLOR);
+        str += ":";
+        str += (*i).first;
+        QString res;
+        res.sprintf("%d,%d,%d",
+                    (*i).second.red(),
+                    (*i).second.green(),
+                    (*i).second.blue());
+        toConfigurationSingle::Instance().globalSetConfig(str, res);
+    }
+    toSyntaxAnalyzer::defaultAnalyzer().updateSettings();
+    toConfigurationSingle::Instance().globalSetConfig(CONF_EXTENSIONS, Extensions->text());
+}

Added: kde-extras/tora/branches/upstream/current/src/tosyntaxsetup.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosyntaxsetup.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosyntaxsetup.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,82 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOSYNTAXSETUP_H
+#define TOSYNTAXSETUP_H
+
+#include "config.h"
+#include "tohelp.h"
+#include "tohighlightedtext.h"
+#include "tosyntaxsetupui.h"
+#include "totool.h"
+
+#include <map>
+
+class QFont;
+
+class toSyntaxSetup : public toSyntaxSetupUI, public toSettingTab
+{
+    Q_OBJECT
+
+    QString List;
+    QListBoxItem *Current;
+    std::map<QCString, QColor> Colors;
+    toSyntaxAnalyzer Analyzer;
+    QCString color();
+public:
+    toSyntaxSetup(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+    virtual void saveSetting(void);
+    void checkFixedWidth(const QFont &fnt);
+public slots:
+    virtual void changeLine(QListBoxItem *);
+    virtual void selectColor(void);
+    virtual void selectFont(void);
+    virtual void selectText(void);
+    virtual void selectResultFont(void);
+    virtual void changeUpper(bool val)
+    {
+        Example->setKeywordUpper(val);
+        Example->update();
+    }
+    virtual void changeHighlight(bool val)
+    {
+        Example->setSyntaxColoring(val);
+        Example->update();
+    }
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,244 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'tosyntaxsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:30 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "tosyntaxsetupui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qgroupbox.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qspinbox.h>
+#include <qlistbox.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "tohighlightedtext.h"
+
+/*
+ *  Constructs a toSyntaxSetupUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toSyntaxSetupUI::toSyntaxSetupUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toSyntaxSetupUI" );
+    toSyntaxSetupUILayout = new QGridLayout( this, 1, 1, 0, 6, "toSyntaxSetupUILayout"); 
+
+    Options = new QGroupBox( this, "Options" );
+    Options->setColumnLayout(0, Qt::Vertical );
+    Options->layout()->setSpacing( 6 );
+    Options->layout()->setMargin( 11 );
+    OptionsLayout = new QGridLayout( Options->layout() );
+    OptionsLayout->setAlignment( Qt::AlignTop );
+
+    KeywordUpper = new QCheckBox( Options, "KeywordUpper" );
+
+    OptionsLayout->addMultiCellWidget( KeywordUpper, 1, 1, 0, 2 );
+
+    CodeCompletion = new QCheckBox( Options, "CodeCompletion" );
+
+    OptionsLayout->addMultiCellWidget( CodeCompletion, 2, 2, 0, 2 );
+
+    CompletionSort = new QCheckBox( Options, "CompletionSort" );
+    CompletionSort->setEnabled( FALSE );
+    CompletionSort->setChecked( TRUE );
+
+    OptionsLayout->addMultiCellWidget( CompletionSort, 3, 3, 0, 2 );
+
+    SyntaxHighlighting = new QCheckBox( Options, "SyntaxHighlighting" );
+
+    OptionsLayout->addMultiCellWidget( SyntaxHighlighting, 0, 0, 0, 2 );
+
+    AutoIndent = new QCheckBox( Options, "AutoIndent" );
+
+    OptionsLayout->addMultiCellWidget( AutoIndent, 4, 4, 0, 2 );
+
+    PushButton1 = new QPushButton( Options, "PushButton1" );
+
+    OptionsLayout->addWidget( PushButton1, 7, 2 );
+
+    ResultExample = new QLabel( Options, "ResultExample" );
+
+    OptionsLayout->addWidget( ResultExample, 7, 0 );
+
+    CodeExample = new QLabel( Options, "CodeExample" );
+
+    OptionsLayout->addWidget( CodeExample, 6, 0 );
+
+    PushButton1_2 = new QPushButton( Options, "PushButton1_2" );
+
+    OptionsLayout->addWidget( PushButton1_2, 6, 2 );
+
+    PushButton1_2_2 = new QPushButton( Options, "PushButton1_2_2" );
+
+    OptionsLayout->addWidget( PushButton1_2_2, 5, 2 );
+
+    TextExample = new QLabel( Options, "TextExample" );
+
+    OptionsLayout->addWidget( TextExample, 5, 0 );
+
+    Extensions = new QLineEdit( Options, "Extensions" );
+
+    OptionsLayout->addMultiCellWidget( Extensions, 8, 8, 1, 2 );
+
+    TextLabel1 = new QLabel( Options, "TextLabel1" );
+
+    OptionsLayout->addWidget( TextLabel1, 8, 0 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    OptionsLayout->addItem( Spacer1, 10, 1 );
+
+    TabStop = new QSpinBox( Options, "TabStop" );
+    TabStop->setMinValue( 1 );
+
+    OptionsLayout->addWidget( TabStop, 9, 2 );
+
+    TextLabel1_2 = new QLabel( Options, "TextLabel1_2" );
+
+    OptionsLayout->addMultiCellWidget( TextLabel1_2, 9, 9, 0, 1 );
+
+    toSyntaxSetupUILayout->addWidget( Options, 0, 1 );
+
+    Example = new toHighlightedText( this, "Example" );
+
+    toSyntaxSetupUILayout->addMultiCellWidget( Example, 1, 1, 0, 1 );
+
+    GroupBox2 = new QGroupBox( this, "GroupBox2" );
+    GroupBox2->setColumnLayout(0, Qt::Vertical );
+    GroupBox2->layout()->setSpacing( 6 );
+    GroupBox2->layout()->setMargin( 11 );
+    GroupBox2Layout = new QGridLayout( GroupBox2->layout() );
+    GroupBox2Layout->setAlignment( Qt::AlignTop );
+
+    ExampleColor = new QLabel( GroupBox2, "ExampleColor" );
+
+    GroupBox2Layout->addWidget( ExampleColor, 1, 0 );
+
+    PushButton3 = new QPushButton( GroupBox2, "PushButton3" );
+    PushButton3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)4, (QSizePolicy::SizeType)0, 0, 0, PushButton3->sizePolicy().hasHeightForWidth() ) );
+
+    GroupBox2Layout->addWidget( PushButton3, 1, 1 );
+
+    SyntaxComponent = new QListBox( GroupBox2, "SyntaxComponent" );
+
+    GroupBox2Layout->addMultiCellWidget( SyntaxComponent, 0, 0, 0, 1 );
+
+    toSyntaxSetupUILayout->addWidget( GroupBox2, 0, 0 );
+    languageChange();
+    resize( QSize(548, 527).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( selectResultFont(void) ) );
+    connect( PushButton1_2, SIGNAL( clicked() ), this, SLOT( selectFont(void) ) );
+    connect( SyntaxHighlighting, SIGNAL( toggled(bool) ), this, SLOT( changeHighlight(bool) ) );
+    connect( KeywordUpper, SIGNAL( toggled(bool) ), this, SLOT( changeUpper(bool) ) );
+    connect( PushButton3, SIGNAL( clicked() ), this, SLOT( selectColor(void) ) );
+    connect( SyntaxComponent, SIGNAL( selectionChanged(QListBoxItem*) ), this, SLOT( changeLine(QListBoxItem *) ) );
+    connect( CodeCompletion, SIGNAL( toggled(bool) ), CompletionSort, SLOT( setEnabled(bool) ) );
+    connect( SyntaxHighlighting, SIGNAL( toggled(bool) ), CodeCompletion, SLOT( setEnabled(bool) ) );
+    connect( PushButton1_2_2, SIGNAL( clicked() ), this, SLOT( selectText(void) ) );
+
+    // tab order
+    setTabOrder( SyntaxComponent, PushButton3 );
+    setTabOrder( PushButton3, SyntaxHighlighting );
+    setTabOrder( SyntaxHighlighting, KeywordUpper );
+    setTabOrder( KeywordUpper, CodeCompletion );
+    setTabOrder( CodeCompletion, AutoIndent );
+    setTabOrder( AutoIndent, PushButton1_2_2 );
+    setTabOrder( PushButton1_2_2, PushButton1_2 );
+    setTabOrder( PushButton1_2, PushButton1 );
+    setTabOrder( PushButton1, Extensions );
+    setTabOrder( Extensions, TabStop );
+    setTabOrder( TabStop, Example );
+    setTabOrder( Example, CompletionSort );
+
+    // buddies
+    TextLabel1_2->setBuddy( TabStop );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toSyntaxSetupUI::~toSyntaxSetupUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toSyntaxSetupUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    QToolTip::add( this, QString::null );
+    Options->setTitle( tr( "Options" ) );
+    KeywordUpper->setText( tr( "&Keyword upper" ) );
+    QToolTip::add( KeywordUpper, tr( "Convert all keywords to uppercase when displayingsyntaxhighlighted text.  Only available for monospaced fonts." ) );
+    CodeCompletion->setText( tr( "&Code completion" ) );
+    QToolTip::add( CodeCompletion, tr( "Activate code completion in SQL editors. Not recommended on slow connections." ) );
+    CompletionSort->setText( tr( "&Sort completion rows" ) );
+    QToolTip::add( CompletionSort, tr( "Sort the available completion rows alphabetically or in the order the are." ) );
+    SyntaxHighlighting->setText( tr( "S&yntax highlighting" ) );
+    QToolTip::add( SyntaxHighlighting, tr( "Enable syntax highlighting, or use simple text editor" ) );
+    AutoIndent->setText( tr( "&Indent same as previous line" ) );
+    QToolTip::add( AutoIndent, tr( "Indent a new line in an editor to the same column as the previous line" ) );
+    PushButton1->setText( tr( "Choose" ) );
+    ResultExample->setText( tr( "List example" ) );
+    CodeExample->setText( tr( "Code example" ) );
+    PushButton1_2->setText( tr( "Choose" ) );
+    PushButton1_2_2->setText( tr( "Choose" ) );
+    TextExample->setText( tr( "Text example" ) );
+    TextLabel1->setText( tr( "Filename extensions" ) );
+    TextLabel1_2->setText( tr( "Tab stop width" ) );
+    QToolTip::add( TextLabel1_2, tr( "Number of character width of tabstops" ) );
+    QWhatsThis::add( TextLabel1_2, tr( "Number of character width of tabstops" ) );
+    GroupBox2->setTitle( tr( "Sy&ntax components" ) );
+    ExampleColor->setText( QString::null );
+    PushButton3->setText( tr( "&Pick" ) );
+}
+
+void toSyntaxSetupUI::changeHighlight(bool)
+{
+    qWarning( "toSyntaxSetupUI::changeHighlight(bool): Not implemented yet" );
+}
+
+void toSyntaxSetupUI::changeLine(QListBoxItem*)
+{
+    qWarning( "toSyntaxSetupUI::changeLine(QListBoxItem*): Not implemented yet" );
+}
+
+void toSyntaxSetupUI::changeUpper(bool)
+{
+    qWarning( "toSyntaxSetupUI::changeUpper(bool): Not implemented yet" );
+}
+
+void toSyntaxSetupUI::selectText()
+{
+    qWarning( "toSyntaxSetupUI::selectText(): Not implemented yet" );
+}
+
+void toSyntaxSetupUI::selectColor()
+{
+    qWarning( "toSyntaxSetupUI::selectColor(): Not implemented yet" );
+}
+
+void toSyntaxSetupUI::selectFont()
+{
+    qWarning( "toSyntaxSetupUI::selectFont(): Not implemented yet" );
+}
+
+void toSyntaxSetupUI::selectResultFont()
+{
+    qWarning( "toSyntaxSetupUI::selectResultFont(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,84 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'tosyntaxsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:30 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOSYNTAXSETUPUI_H
+#define TOSYNTAXSETUPUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toHighlightedText;
+class QGroupBox;
+class QCheckBox;
+class QPushButton;
+class QLabel;
+class QLineEdit;
+class QSpinBox;
+class QListBox;
+class QListBoxItem;
+
+class toSyntaxSetupUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toSyntaxSetupUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toSyntaxSetupUI();
+
+    QGroupBox* Options;
+    QCheckBox* KeywordUpper;
+    QCheckBox* CodeCompletion;
+    QCheckBox* CompletionSort;
+    QCheckBox* SyntaxHighlighting;
+    QCheckBox* AutoIndent;
+    QPushButton* PushButton1;
+    QLabel* ResultExample;
+    QLabel* CodeExample;
+    QPushButton* PushButton1_2;
+    QPushButton* PushButton1_2_2;
+    QLabel* TextExample;
+    QLineEdit* Extensions;
+    QLabel* TextLabel1;
+    QSpinBox* TabStop;
+    QLabel* TextLabel1_2;
+    toHighlightedText* Example;
+    QGroupBox* GroupBox2;
+    QLabel* ExampleColor;
+    QPushButton* PushButton3;
+    QListBox* SyntaxComponent;
+
+public slots:
+    virtual void changeHighlight(bool);
+    virtual void changeLine(QListBoxItem *);
+    virtual void changeUpper(bool);
+    virtual void selectText(void);
+    virtual void selectColor(void);
+    virtual void selectFont(void);
+    virtual void selectResultFont(void);
+
+protected:
+    QGridLayout* toSyntaxSetupUILayout;
+    QGridLayout* OptionsLayout;
+    QSpacerItem* Spacer1;
+    QGridLayout* GroupBox2Layout;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOSYNTAXSETUPUI_H

Added: kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tosyntaxsetupui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,444 @@
+<!DOCTYPE UI><UI>
+<class>toSyntaxSetupUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toSyntaxSetupUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>548</width>
+            <height>527</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <property>
+        <name>toolTip</name>
+        <string></string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>0</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="1" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Options</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Options</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>KeywordUpper</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Keyword upper</string>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Convert all keywords to uppercase when displayingsyntaxhighlighted text.  Only available for monospaced fonts.</string>
+                    </property>
+                </widget>
+                <widget row="2"  column="0"  rowspan="1"  colspan="3" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>CodeCompletion</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Code completion</string>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Activate code completion in SQL editors. Not recommended on slow connections.</string>
+                    </property>
+                </widget>
+                <widget row="3"  column="0"  rowspan="1"  colspan="3" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>CompletionSort</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>enabled</name>
+                        <bool>false</bool>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Sort completion rows</string>
+                    </property>
+                    <property stdset="1">
+                        <name>checked</name>
+                        <bool>true</bool>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Sort the available completion rows alphabetically or in the order the are.</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="0"  rowspan="1"  colspan="3" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>SyntaxHighlighting</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>S&amp;yntax highlighting</string>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Enable syntax highlighting, or use simple text editor</string>
+                    </property>
+                </widget>
+                <widget row="4"  column="0"  rowspan="1"  colspan="3" >
+                    <class>QCheckBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>AutoIndent</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Indent same as previous line</string>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Indent a new line in an editor to the same column as the previous line</string>
+                    </property>
+                </widget>
+                <widget row="7"  column="2" >
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>PushButton1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Choose</string>
+                    </property>
+                </widget>
+                <widget row="7"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>ResultExample</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>List example</string>
+                    </property>
+                </widget>
+                <widget row="6"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>CodeExample</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Code example</string>
+                    </property>
+                </widget>
+                <widget row="6"  column="2" >
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>PushButton1_2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Choose</string>
+                    </property>
+                </widget>
+                <widget row="5"  column="2" >
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>PushButton1_2_2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Choose</string>
+                    </property>
+                </widget>
+                <widget row="5"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextExample</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Text example</string>
+                    </property>
+                </widget>
+                <widget row="8"  column="1"  rowspan="1"  colspan="2" >
+                    <class>QLineEdit</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Extensions</cstring>
+                    </property>
+                </widget>
+                <widget row="8"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Filename extensions</string>
+                    </property>
+                </widget>
+                <spacer row="10"  column="1" >
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget row="9"  column="2" >
+                    <class>QSpinBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TabStop</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>minValue</name>
+                        <number>1</number>
+                    </property>
+                </widget>
+                <widget row="9"  column="0"  rowspan="1"  colspan="2" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel1_2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Tab stop width</string>
+                    </property>
+                    <property>
+                        <name>buddy</name>
+                        <cstring>TabStop</cstring>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Number of character width of tabstops</string>
+                    </property>
+                    <property>
+                        <name>whatsThis</name>
+                        <string>Number of character width of tabstops</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget row="1"  column="0"  rowspan="1"  colspan="2" >
+            <class>toHighlightedText</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Example</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="0" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>GroupBox2</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Sy&amp;ntax components</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="1"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>ExampleColor</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string></string>
+                    </property>
+                </widget>
+                <widget row="1"  column="1" >
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>PushButton3</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>4</hsizetype>
+                            <vsizetype>0</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Pick</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="0"  rowspan="1"  colspan="2" >
+                    <class>QListBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>SyntaxComponent</cstring>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toHighlightedText</class>
+        <header location="local">tohighlightedtext.h</header>
+        <sizehint>
+            <width>100</width>
+            <height>100</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toSyntaxSetupUI</receiver>
+        <slot>selectResultFont(void)</slot>
+    </connection>
+    <connection>
+        <sender>PushButton1_2</sender>
+        <signal>clicked()</signal>
+        <receiver>toSyntaxSetupUI</receiver>
+        <slot>selectFont(void)</slot>
+    </connection>
+    <connection>
+        <sender>SyntaxHighlighting</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toSyntaxSetupUI</receiver>
+        <slot>changeHighlight(bool)</slot>
+    </connection>
+    <connection>
+        <sender>KeywordUpper</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>toSyntaxSetupUI</receiver>
+        <slot>changeUpper(bool)</slot>
+    </connection>
+    <connection>
+        <sender>PushButton3</sender>
+        <signal>clicked()</signal>
+        <receiver>toSyntaxSetupUI</receiver>
+        <slot>selectColor(void)</slot>
+    </connection>
+    <connection>
+        <sender>SyntaxComponent</sender>
+        <signal>selectionChanged(QListBoxItem*)</signal>
+        <receiver>toSyntaxSetupUI</receiver>
+        <slot>changeLine(QListBoxItem *)</slot>
+    </connection>
+    <connection>
+        <sender>CodeCompletion</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>CompletionSort</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>SyntaxHighlighting</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>CodeCompletion</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+    <connection>
+        <sender>PushButton1_2_2</sender>
+        <signal>clicked()</signal>
+        <receiver>toSyntaxSetupUI</receiver>
+        <slot>selectText(void)</slot>
+    </connection>
+    <slot access="public">changeHighlight(bool)</slot>
+    <slot access="public">changeLine(QListBoxItem *)</slot>
+    <slot access="public">changeUpper(bool)</slot>
+    <slot access="public">selectText(void)</slot>
+    <slot access="public">selectColor(void)</slot>
+    <slot access="public">selectFont(void)</slot>
+    <slot access="public">selectResultFont(void)</slot>
+</connections>
+<tabstops>
+    <tabstop>SyntaxComponent</tabstop>
+    <tabstop>PushButton3</tabstop>
+    <tabstop>SyntaxHighlighting</tabstop>
+    <tabstop>KeywordUpper</tabstop>
+    <tabstop>CodeCompletion</tabstop>
+    <tabstop>AutoIndent</tabstop>
+    <tabstop>PushButton1_2_2</tabstop>
+    <tabstop>PushButton1_2</tabstop>
+    <tabstop>PushButton1</tabstop>
+    <tabstop>Extensions</tabstop>
+    <tabstop>TabStop</tabstop>
+    <tabstop>Example</tabstop>
+    <tabstop>CompletionSort</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/totableselect.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totableselect.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totableselect.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,88 @@
+#include "utils.h"
+
+#include "toconnection.h"
+#include "toresultcombo.h"
+#include "totableselect.h"
+
+#include <qlabel.h>
+
+#include "totableselect.moc"
+
+void toTableSelect::setup()
+{
+    setTitle(tr("Table selection"));
+    setColumnLayout(1, Vertical);
+    bool mysql = false;
+    try
+    {
+        mysql = toIsMySQL(toCurrentConnection(this));
+    }
+    catch (...)
+    {}
+    QLabel *label = new QLabel(mysql ? tr("Database") : tr("Schema"), this);
+    label->show();
+    Schema = new toResultCombo(this);
+    Schema->show();
+    Schema->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
+    label = new QLabel(tr("Table"), this);
+    label->show();
+    Table = new toResultCombo(this);
+    Table->show();
+    Table->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
+
+    Schema->additionalItem(mysql ? tr("Select database") : tr("Select schema"));
+    Schema->query(toSQL::sql(toSQL::TOSQL_USERLIST));
+    Table->additionalItem(tr("Select table"));
+    // petr vanek 03/01/07 bug #1180847 Error when creating referential constraint
+    Table->setSQL(toSQL::sql("toBrowser:ListTableNames"));
+
+    Schema->refresh();
+    if (!SelectedTable.isNull())
+        setTable(SelectedTable);
+    connect(Schema, SIGNAL(activated(int)), this, SLOT(changeSchema()));
+    connect(Table, SIGNAL(activated(int)), this, SLOT(changeTable()));
+}
+
+toTableSelect::toTableSelect(QWidget *parent, const char *name)
+        : QGroupBox(parent, name)
+{
+    Schema = Table = NULL;
+    QTimer::singleShot(1, this, SLOT(setup()));
+}
+
+void toTableSelect::setTable(const QString &table)
+{
+    if (!Table || !Schema)
+        SelectedTable = table;
+    else
+    {
+        QStringList parts = QStringList::split(".", table);
+        toConnection &conn = toCurrentConnection(this);
+        if (parts.size() > 1)
+        {
+            Schema->setSelected(conn.unQuote(parts[0]));
+            Table->setSelected(conn.unQuote(parts[1]));
+        }
+        else
+            Schema->setSelected(conn.unQuote(table));
+        Table->changeParams(Schema->selected());
+    }
+}
+
+void toTableSelect::changeSchema(void)
+{
+    if (Schema->currentItem() != 0)
+        Table->changeParams(Schema->selected());
+}
+
+void toTableSelect::changeTable(void)
+{
+    if (Table->currentItem() != 0)
+    {
+        toConnection &conn = toCurrentConnection(this);
+        QString table = conn.quote(Schema->selected());
+        table += ".";
+        table += conn.quote(Table->selected());
+        emit selectTable(table);
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/totableselect.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totableselect.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totableselect.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,35 @@
+#ifndef TOTABLESELECT_H
+#define TOTABLESELECT_H
+
+#include "config.h"
+#include "totool.h"
+
+#include <qgroupbox.h>
+
+class toConnection;
+class toResultCombo;
+
+class toTableSelect : public QGroupBox
+{
+    Q_OBJECT
+
+    toResultCombo *Schema;
+    toResultCombo *Table;
+
+    QString SelectedTable;
+public:
+    toTableSelect(QWidget *parent, const char *name);
+    virtual ~toTableSelect()
+    { }
+
+    void setTable(const QString &table);
+signals:
+    void selectTable(const QString &table);
+private slots:
+    void setup(void);
+    void changeSchema(void);
+    void changeTable(void);
+};
+
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/totabwidget.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totabwidget.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totabwidget.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,121 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include <list>
+
+#include "totabwidget.h"
+
+#include <qobject.h>
+#include <qtabwidget.h>
+
+#include "totabwidget.moc"
+
+int toTabBar::insertTab(QTab *newTab, int ix)
+{
+    std::list<barTab>::iterator i = Tabs.begin();
+    if (ix >= 0)
+    {
+        for (int j = 0;j < ix && i != Tabs.end();j++)
+            i++;
+    }
+    else
+        i = Tabs.end();
+    Tabs.insert(i, barTab(newTab, true));
+    return QTabBar::insertTab(newTab, ix);
+}
+
+void toTabBar::removeTab(QTab *tab)
+{
+    for (std::list<barTab>::iterator i = Tabs.begin();i != Tabs.end();i++)
+    {
+        if ((*i).Tab == tab)
+        {
+            QTabBar::removeTab(tab);
+            Tabs.erase(i);
+            return ;
+        }
+    }
+}
+
+void toTabWidget::setTabShown(QWidget *w, bool value)
+{
+    int ix = indexOf(w);
+    if (ix >= 0)
+    {
+        Tabs->setTabShown(ix, value);
+        QShowEvent e;
+        showEvent(&e); // Force an update
+    }
+}
+
+void toTabBar::setTabShown(int ix, bool shown)
+{
+    if (ix < 0)
+        return ;
+
+    std::list<barTab>::iterator i = Tabs.begin();
+    for (int j = 0;j < ix && i != Tabs.end();j++)
+        i++;
+    if (i != Tabs.end())
+        (*i).Shown = shown;
+    layoutTabs();
+}
+
+void toTabBar::layoutTabs()
+{
+    QTabBar::layoutTabs();
+    int offset = 0;
+    for (std::list<barTab>::iterator i = Tabs.begin();i != Tabs.end();i++)
+    {
+        if ((*i).Tab->rect().isValid())
+            (*i).Rect = (*i).Tab->rect();
+        else
+            (*i).Tab->setRect((*i).Rect);
+        if ((*i).Shown)
+        {
+            QRect r = (*i).Tab->rect();
+            r.moveBy(offset - r.left(), 0);
+            (*i).Tab->setRect(r);
+            offset += r.width();
+        }
+        else
+        {
+            QRect r;
+            (*i).Tab->setRect(r);
+        }
+    }
+}


Property changes on: kde-extras/tora/branches/upstream/current/src/totabwidget.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/src/totabwidget.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totabwidget.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totabwidget.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,136 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOTABWIDGET_H
+#define TOTABWIDGET_H
+
+#include "config.h"
+
+#include <qtabbar.h>
+#include <qtabwidget.h>
+#include <list>
+
+/** An extension of the regular tab bar with an extension to be able to hide
+ * tabs without removing them.
+ */
+
+class toTabBar : public QTabBar
+{
+    Q_OBJECT
+
+    struct barTab
+    {
+        QTab *Tab;
+        bool Shown;
+        QRect Rect;
+
+        barTab(QTab *tab, bool shown)
+        {
+            Tab = tab;
+            Shown = shown;
+        }
+    };
+
+    std::list<barTab> Tabs;
+    QTab *copyTab(QTab *tab);
+public:
+    /** Constructor.
+     */
+    toTabBar(QWidget *parent = 0, const char *name = 0)
+            : QTabBar(parent, name)
+    { }
+    /** Reimplemented for internal reasons.
+     */
+    virtual int insertTab(QTab *newTab, int ix = -1);
+    /** Reimplemented for internal reasons.
+     */
+    virtual int addTab(QTab *newTab)
+    {
+        return insertTab(newTab);
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void removeTab(QTab *t);
+
+    /** Reimplemented for internal reasons.
+     */
+    virtual void layoutTabs();
+    /** Specify if a tab is shown.
+     * @param ix Index of the tab to change visibility.
+     * @param shown Show tab if true, hide if false.
+     */
+    virtual void setTabShown(int ix, bool shown);
+};
+
+/** An extension of the regular tab widget with posibility to hide tabs.
+ */
+class toTabWidget: public QTabWidget
+{
+    Q_OBJECT
+    toTabBar *Tabs;
+public:
+    /** Constructor.
+     */
+    toTabWidget(QWidget *parent = 0, const char *name = 0, WFlags f = 0)
+            : QTabWidget(parent, name, f)
+    {
+        setTabBar(Tabs = new toTabBar(this));
+    }
+
+    /** Specify if a tab is shown.
+     * @param w Widget to change visibility.
+     * @param shown Show tab if true, hide if false.
+     */
+    virtual void setTabShown(QWidget *w, bool value);
+
+    /** Specify that a tab is shown.
+     * @param w Tab to show.
+     */
+    virtual void showTab(QWidget *w)
+    {
+        setTabShown(w, true);
+    }
+    /** Specify that a tab is hidden.
+     * @param w Tab to hide.
+     */
+    virtual void hideTab(QWidget *w)
+    {
+        setTabShown(w, false);
+    }
+};
+
+#endif


Property changes on: kde-extras/tora/branches/upstream/current/src/totabwidget.h
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/src/totemplate.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplate.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplate.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,875 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tohelp.h"
+#include "tomarkedtext.h"
+#include "tonoblockquery.h"
+#include "toresultview.h"
+#include "totemplate.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#include <kfiledialog.h>
+#endif
+
+#include <qfiledialog.h>
+#include <qfileinfo.h>
+#include <qheader.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qmessagebox.h>
+#include <qpushbutton.h>
+#include <qsplitter.h>
+#include <qtextview.h>
+#include <qtimer.h>
+#include <qtoolbar.h>
+
+#include "totemplate.moc"
+#include "totemplateaddfileui.moc"
+#include "totemplateeditui.moc"
+#include "totemplatesetupui.moc"
+
+#include "icons/totemplate.xpm"
+
+static std::map<QCString, QString> DefaultText(void)
+{
+    std::map<QCString, QString> def;
+    QString file = toPluginPath();
+
+#if !defined(TO_NO_ORACLE)
+    file += QString::fromLatin1("/sqlfunctions.tpl");
+    def["PL/SQL Functions"] = file;
+    file = toPluginPath();
+    file += QString::fromLatin1("/hints.tpl");
+    def["Optimizer Hints"] = file;
+    file = toPluginPath();
+    file += QString::fromLatin1("/log4plsql.tpl");
+    def["Log4PL/SQL"] = file;
+#endif
+
+    return def;
+}
+
+class toTemplateEdit : public toTemplateEditUI, public toHelpContext
+{
+    std::map<QCString, QString> &TemplateMap;
+    std::map<QCString, QString>::iterator LastTemplate;
+    void connectList(bool conn)
+    {
+        if (conn)
+            connect(Templates, SIGNAL(selectionChanged()), this, SLOT(changeSelection()));
+        else
+            disconnect(Templates, SIGNAL(selectionChanged()), this, SLOT(changeSelection()));
+    }
+    QListViewItem *findLast(void)
+    {
+        QString name = (*LastTemplate).first;
+        return toFindItem(Templates, name);
+    }
+    void allocateItem(void)
+    {
+        QStringList lst = QStringList::split(QString::fromLatin1(":"), Name->text());
+        unsigned int li = 0;
+        QListViewItem *parent = NULL;
+        for (QListViewItem *item = Templates->firstChild();item && li < lst.count();)
+        {
+            if (item->text(0) == lst[li])
+            {
+                li++;
+                parent = item;
+                item = item->firstChild();
+            }
+            else
+                item = item->nextSibling();
+        }
+        while (li < lst.count())
+        {
+            if (parent)
+                parent = new QListViewItem(parent, lst[li]);
+            else
+                parent = new QListViewItem(Templates, lst[li]);
+            li++;
+        }
+    }
+    bool clearUnused(QListViewItem *first, const QCString &pre)
+    {
+        bool ret = false;
+        while (first)
+        {
+            QListViewItem *delitem = first;
+            QCString str = pre;
+            if (!str.isEmpty())
+                str += ":";
+            str += first->text(0).latin1();
+            if (first->firstChild() && clearUnused(first->firstChild(), str))
+                delitem = NULL;
+            if (delitem && TemplateMap.find(str) != TemplateMap.end())
+                delitem = NULL;
+            first = first->nextSibling();
+            if (!delitem)
+                ret = true;
+            else
+                delete delitem;
+        }
+        return ret;
+    }
+public:
+    virtual void updateFromMap(void)
+    {
+        try
+        {
+            while (Templates->firstChild())
+                delete Templates->firstChild();
+            QListViewItem *last = NULL;
+            int lastLevel = 0;
+            QStringList lstCtx;
+            for (std::map<QCString, QString>::iterator i = TemplateMap.begin();i != TemplateMap.end();i++)
+            {
+                QStringList ctx = QStringList::split(QString::fromLatin1(":"), QString::fromLatin1((*i).first));
+                if (last)
+                {
+                    while (last && lastLevel >= int(ctx.count()))
+                    {
+                        last = last->parent();
+                        lastLevel--;
+                    }
+                    while (last && lastLevel >= 0 && !toCompareLists(lstCtx, ctx, (unsigned int)lastLevel))
+                    {
+                        last = last->parent();
+                        lastLevel--;
+                    }
+                }
+                if (lastLevel < 0)
+                    throw qApp->translate("toTemplateEdit", "Internal error, lastLevel < 0");
+                while (lastLevel < int(ctx.count()) - 1)
+                {
+                    if (last)
+                        last = new QListViewItem(last, ctx[lastLevel]);
+                    else
+                        last = new QListViewItem(Templates, ctx[lastLevel]);
+                    last->setOpen(true);
+                    lastLevel++;
+                }
+                if (last)
+                    last = new QListViewItem(last, ctx[lastLevel]);
+                else
+                    last = new QListViewItem(Templates, ctx[lastLevel]);
+                last->setOpen(true);
+                if (i == LastTemplate)
+                    last->setSelected(true);
+                lstCtx = ctx;
+                lastLevel++;
+            }
+        }
+        catch (const QString &str)
+        {
+            toStatusMessage(str);
+            reject();
+        }
+    }
+    toTemplateEdit(std::map<QCString, QString> &pairs, QWidget *parent, const char *name = 0)
+            : toTemplateEditUI(parent, name, true, WStyle_Maximize),
+            toHelpContext(QString::fromLatin1("template.html#editor")),
+            TemplateMap(pairs)
+    {
+        toHelp::connectDialog(this);
+        LastTemplate = TemplateMap.end();
+        updateFromMap();
+        Description->setWrapMode(QextScintilla::WrapWord);
+    }
+    virtual void remove
+        (void)
+    {
+        if (LastTemplate != TemplateMap.end())
+        {
+            QListViewItem *item = findLast();
+            TemplateMap.erase(LastTemplate);
+            LastTemplate = TemplateMap.end();
+            Name->setText(QString::null);
+            Description->setText(QString::null);
+            if (item)
+            {
+                connectList(false);
+                clearUnused(Templates->firstChild(), "");
+                connectList(true);
+            }
+        }
+    }
+    virtual void preview(void)
+    {
+        Preview->setText(Description->text());
+    }
+    QCString name(QListViewItem *item)
+    {
+        QCString str = item->text(0).latin1();
+        for (item = item->parent();item;item = item->parent())
+        {
+            str.prepend(":");
+            str.prepend(item->text(0).latin1());
+        }
+        return str;
+    }
+    virtual void newTemplate(void)
+    {
+        changeSelection();
+        LastTemplate = TemplateMap.end();
+        Description->setText(QString::null);
+        QListViewItem *item = Templates->selectedItem();
+        if (item)
+        {
+            connectList(false);
+            Templates->setSelected(item, false);
+            connectList(true);
+            item = item->parent();
+        }
+        QCString str;
+        if (item)
+        {
+            str = name(item);
+            str += ":";
+        }
+        Name->setText(str);
+    }
+    virtual void changeSelection(void)
+    {
+        bool update = false;
+        if (LastTemplate != TemplateMap.end())
+        {
+            if (Name->text().latin1() != (*LastTemplate).first ||
+                    Description->text() != (*LastTemplate).second)
+            {
+                TemplateMap.erase(LastTemplate);
+                TemplateMap[Name->text().latin1()] = Description->text();
+                allocateItem();
+                update = true;
+            }
+        }
+        else if (!Name->text().isEmpty())
+        {
+            TemplateMap[Name->text().latin1()] = Description->text();
+            allocateItem();
+            update = true;
+        }
+        LastTemplate = TemplateMap.end();
+
+        QListViewItem *item = Templates->selectedItem();
+        if (item)
+        {
+            QCString str = name(item);
+            LastTemplate = TemplateMap.find(str);
+            if (LastTemplate != TemplateMap.end())
+            {
+                Name->setText(QString::fromLatin1((*LastTemplate).first));
+                Description->setText((*LastTemplate).second);
+                Preview->setText((*LastTemplate).second);
+            }
+            else
+            {
+                Name->setText(QString::null);
+                Description->clear();
+                Preview->setText(QString::null);
+            }
+        }
+        else
+            LastTemplate = TemplateMap.end();
+        clearUnused(Templates->firstChild(), "");
+    }
+};
+
+class toTemplateAddFile : public toTemplateAddFileUI
+{
+public:
+    toTemplateAddFile(QWidget *parent, const char *name = 0)
+            : toTemplateAddFileUI(parent, name, true)
+    {
+        OkButton->setEnabled(false);
+        toHelp::connectDialog(this);
+    }
+    virtual void browse(void)
+    {
+        QFileInfo file(Filename->text());
+        QString filename = toOpenFilename(file.dirPath(), QString::fromLatin1("*.tpl"), this);
+        if (!filename.isEmpty())
+            Filename->setText(filename);
+    }
+    virtual void valid(void)
+    {
+        if (Filename->text().isEmpty() || Root->text().isEmpty())
+            OkButton->setEnabled(false);
+        else
+            OkButton->setEnabled(true);
+    }
+};
+
+class toTemplatePrefs : public toTemplateSetupUI, public toSettingTab
+{
+    toTool *Tool;
+public:
+    toTemplatePrefs(toTool *tool, QWidget *parent, const char *name = 0)
+            : toTemplateSetupUI(parent, name), toSettingTab("template.html#setup"), Tool(tool)
+    {
+        std::map<QCString, QString> def = DefaultText();
+
+        int tot = Tool->config("Number", "-1").toInt();
+        {
+            for (int i = 0;i < tot;i++)
+            {
+                QCString num = QString::number(i).latin1();
+                QCString root = Tool->config(num, "").latin1();
+                num += "file";
+                QString file = Tool->config(num, "");
+                new QListViewItem(FileList, root, file);
+                if (def.find(root) != def.end())
+                    def.erase(def.find(root));
+            }
+        }
+        for (std::map<QCString, QString>::iterator i = def.begin();i != def.end();i++)
+            new QListViewItem(FileList, (*i).first, (*i).second);
+    }
+    virtual void saveSetting(void)
+    {
+        int i = 0;
+        for (QListViewItem *item = FileList->firstChild();item;item = item->nextSibling())
+        {
+            QCString nam = QString::number(i).latin1();
+            Tool->setConfig(nam, item->text(0));
+            nam += "file";
+            Tool->setConfig(nam, item->text(1));
+            i++;
+        }
+        Tool->setConfig("Number", QString::number(i));
+    }
+    virtual void addFile(void)
+    {
+        toTemplateAddFile file(this);
+        if (file.exec())
+            new QListViewItem(FileList, file.Root->text(), file.Filename->text());
+    }
+    virtual void editFile(void)
+    {
+        QListViewItem *item = FileList->selectedItem();
+        if (item)
+        {
+            try
+            {
+                QString file = item->text(1);
+                std::map<QCString, QString> pairs;
+                try
+                {
+                    toConfigurationSingle::Instance().loadMap(file, pairs);
+                }
+                catch (...)
+                {
+                    if (TOMessageBox::warning(this,
+                                              qApp->translate("toTemplatePrefs", "Couldn't open file."),
+                                              qApp->translate("toTemplatePrefs", "Couldn't open file. Start on new file?"),
+                                              qApp->translate("toTemplatePrefs", "&Ok"),
+                                              qApp->translate("toTemplatePrefs", "Cancel")) == 1)
+                        return ;
+                }
+                toTemplateEdit edit(pairs, this);
+                if (edit.exec())
+                {
+                    edit.changeSelection();
+                    if (!toConfigurationSingle::Instance().saveMap(file, pairs))
+                        throw qApp->translate("toTemplatePrefs", "Couldn't write file");
+                }
+            }
+            catch (const QString &str)
+            {
+                TOMessageBox::warning(this,
+                                      qApp->translate("toTemplatePrefs", "Couldn't open file"),
+                                      str,
+                                      qApp->translate("toTemplatePrefs", "&Ok"));
+            }
+        }
+    }
+    virtual void delFile(void)
+    {
+        delete FileList->selectedItem();
+    }
+};
+
+class toTemplateTool : public toTool
+{
+    TODock *Dock;
+    toTemplate *Window;
+protected:
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(totemplate_xpm);
+    }
+public:
+    toTemplateTool()
+            : toTool(410, "Project Manager")
+    {
+        Dock = NULL;
+        Window = NULL;
+        toTemplateProvider::setToolKey(key());
+    }
+    virtual const char *menuItem()
+    {
+        return "Project Manager";
+    }
+    void toggleWindow()
+    {
+        if (!Dock || !Window)
+        {
+            Dock = toAllocDock(qApp->translate("toTemplateTool", "Template"), QString::null, *toolbarImage());
+            Window = new toTemplate(Dock);
+        }
+        else if (Dock->isHidden())
+        {
+#ifdef TO_KDE
+            toAttachDock(Dock, Window, QMainWindow::Left);
+#else
+
+            Dock->show();
+#endif
+
+            Window->showResult(true);
+        }
+        else
+        {
+#ifdef TO_KDE
+            toAttachDock(Dock, Window, QMainWindow::Minimized);
+#else
+
+            Dock->hide();
+#endif
+
+            Window->showResult(false);
+        }
+    }
+    virtual QWidget *toolWindow(QWidget *, toConnection &)
+    {
+        toggleWindow();
+        return NULL;
+    }
+    void closeWindow()
+    {
+        Dock = NULL;
+        Window = NULL;
+        toTemplateProvider::setShown(false);
+    }
+    virtual QWidget *configurationTab(QWidget *parent)
+    {
+        return new toTemplatePrefs(this, parent);
+    }
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toTemplateTool TemplateTool;
+
+void toTemplate::hideEvent(QHideEvent *e)
+{
+    toTemplateProvider::setShown(false);
+    QVBox::hideEvent(e);
+}
+
+void toTemplate::showEvent(QShowEvent *e)
+{
+    toTemplateProvider::setShown(true);
+    QVBox::showEvent(e);
+}
+
+QWidget *toTemplate::parentWidget(QListViewItem *item)
+{
+    try
+    {
+        return templateWidget(item)->frame();
+    }
+    catch (...)
+    {
+        return NULL;
+    }
+}
+
+toTemplate *toTemplate::templateWidget(QListView *obj)
+{
+    QObject *lst = obj;
+    while (lst)
+    {
+        toTemplate *tpl = dynamic_cast<toTemplate *>(lst);
+        if (tpl)
+            return tpl;
+        lst = lst->parent();
+    }
+    throw tr("Not a toTemplate parent");
+}
+
+toTemplate *toTemplate::templateWidget(QListViewItem *item)
+{
+    return templateWidget(item->listView());
+}
+
+class toTemplateResult : public QVBox
+{
+    toTemplate *Template;
+public:
+    toTemplateResult(TODock *parent, toTemplate *temp)
+            : QVBox(parent), Template(temp)
+    { }
+    virtual ~toTemplateResult()
+    {
+        Template->closeFrame();
+    }
+};
+
+toTemplate::toTemplate(TODock *parent)
+        : QVBox(parent), toHelpContext(QString::fromLatin1("template.html"))
+{
+    Toolbar = toAllocBar(this, tr("Template Toolbar"));
+
+    List = new toListView(this);
+    List->addColumn(tr("Template"));
+    List->setRootIsDecorated(true);
+    List->setSorting(0);
+    List->setShowSortIndicator(false);
+    List->setTreeStepSize(10);
+    List->setSelectionMode(QListView::Single);
+    List->setResizeMode(QListView::AllColumns);
+    TODock *dock;
+    dock = Result = toAllocDock(tr("Template result"),
+                                QString::null,
+                                *TemplateTool.toolbarImage());
+    Frame = new toTemplateResult(dock, this);
+
+    connect(List, SIGNAL(expanded(QListViewItem *)), this, SLOT(expand(QListViewItem *)));
+    connect(List, SIGNAL(collapsed(QListViewItem *)), this, SLOT(collapse(QListViewItem *)));
+    connect(List, SIGNAL(doubleClicked(QListViewItem *)), this, SLOT(selected(QListViewItem *)));
+    connect(List, SIGNAL(returnPressed(QListViewItem *)), this, SLOT(selected(QListViewItem *)));
+
+    if (toTemplateProvider::Providers)
+        for (std::list<toTemplateProvider *>::iterator i = toTemplateProvider::Providers->begin();
+                i != toTemplateProvider::Providers->end();
+                i++)
+            (*i)->insertItems(List, Toolbar);
+
+    Toolbar->setStretchableWidget(new QLabel(Toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    WidgetExtra = NULL;
+    setWidget(NULL);
+
+    setFocusProxy(List);
+    toAttachDock(parent, this, QMainWindow::Left);
+    toAttachDock((TODock *)Result, Frame, QMainWindow::Bottom);
+}
+
+toTemplate::~toTemplate()
+{
+    TemplateTool.closeWindow();
+    delete Result;
+}
+
+void toTemplate::hideTemplates()
+{
+    TemplateTool.toggleWindow();
+}
+
+void toTemplate::showResult(bool show)
+{
+    if (!Result)
+        return ;
+
+    if (show)
+    {
+#ifdef TO_KDE
+        toAttachDock((TODock *)Result, Frame, QMainWindow::Bottom);
+#else
+
+        Result->show();
+#endif
+
+    }
+    else
+    {
+#ifdef TO_KDE
+        toAttachDock((TODock *)Result, Frame, QMainWindow::Minimized);
+#else
+
+        Result->hide();
+#endif
+
+    }
+}
+
+void toTemplate::closeFrame(void)
+{
+    Result = NULL;
+    Frame = NULL;
+}
+
+void toTemplate::expand(QListViewItem *item)
+{
+    try
+    {
+        toTemplateItem *ti = dynamic_cast<toTemplateItem *>(item);
+        if (ti)
+            ti->expand();
+    }
+    catch (...)
+    {}
+}
+
+void toTemplate::selected(QListViewItem *item)
+{
+    try
+    {
+        toTemplateItem *ti = dynamic_cast<toTemplateItem *>(item);
+        if (ti)
+            ti->selected();
+    }
+    catch (...)
+    {}
+}
+
+QWidget *toTemplate::frame(void)
+{
+    if (Result->isHidden())
+        showResult(true);
+    return Frame;
+}
+
+void toTemplate::collapse(QListViewItem *item)
+{
+    toTemplateItem *ti = dynamic_cast<toTemplateItem *>(item);
+    if (ti)
+        ti->collapse();
+}
+
+
+QWidget *toTemplateItem::selectedWidget(QWidget *)
+{
+    return NULL;
+}
+
+void toTemplateItem::setSelected(bool sel)
+{
+    try
+    {
+        toTemplate *temp = toTemplate::templateWidget(this);
+        if (sel && temp)
+        {
+            QWidget *frame = toTemplate::parentWidget(this);
+            if (frame)
+                temp->setWidget(selectedWidget(frame));
+        }
+    }
+    TOCATCH
+    toResultViewItem::setSelected(sel);
+}
+
+QWidget *toTemplateText::selectedWidget(QWidget *parent)
+{
+    return new QTextView(Note, QString::null, parent);
+}
+
+void toTemplate::setWidget(QWidget *widget)
+{
+    if (!widget)
+        widget = new QTextView(frame());
+
+    if (WidgetExtra != widget)
+    {
+        widget->show();
+        if (WidgetExtra)
+            delete WidgetExtra;
+
+        WidgetExtra = widget;
+    }
+}
+
+class toTextTemplate : toTemplateProvider
+{
+public:
+    toTextTemplate()
+            : toTemplateProvider("Text")
+    { }
+    void addFile(QListView *parent, const QString &root, const QString &file);
+    virtual void insertItems(QListView *parent, QToolBar *toolbar);
+};
+
+void toTextTemplate::insertItems(QListView *parent, QToolBar *)
+{
+    int tot = TemplateTool.config("Number", "-1").toInt();
+    std::map<QCString, QString> def = DefaultText();
+
+    {
+        for (int i = 0;i < tot;i++)
+        {
+            QCString num = QString::number(i).latin1();
+            QCString root = TemplateTool.config(num, "").latin1();
+            num += "file";
+            QString file = TemplateTool.config(num, "");
+            addFile(parent, root, file);
+            if (def.find(root) != def.end())
+                def.erase(def.find(root));
+        }
+    }
+    for (std::map<QCString, QString>::iterator i = def.begin();i != def.end();i++)
+        addFile(parent, (*i).first, (*i).second);
+}
+
+void toTextTemplate::addFile(QListView *parent, const QString &root, const QString &file)
+{
+    std::map<QCString, QString> pairs;
+    try
+    {
+        toConfigurationSingle::Instance().loadMap(file, pairs);
+        toTemplateItem *last = new toTemplateItem(*this, parent, root);
+        int lastLevel = 0;
+        QStringList lstCtx;
+        for (std::map<QCString, QString>::iterator i = pairs.begin();i != pairs.end();i++)
+        {
+            QStringList ctx = QStringList::split(QString::fromLatin1(":"), (*i).first);
+            if (last)
+            {
+                while (last && lastLevel >= int(ctx.count()))
+                {
+                    last = dynamic_cast<toTemplateItem *>(last->parent());
+                    lastLevel--;
+                }
+                while (last && lastLevel >= 0 && !toCompareLists(lstCtx, ctx, (unsigned int)lastLevel))
+                {
+                    last = dynamic_cast<toTemplateItem *>(last->parent());
+                    lastLevel--;
+                }
+            }
+            if (lastLevel < 0)
+                throw qApp->translate("toTemplate", "Internal error, lastLevel < 0");
+            while (lastLevel < int(ctx.count()) - 1)
+            {
+                last = new toTemplateItem(last, ctx[lastLevel]);
+                lastLevel++;
+            }
+            last = new toTemplateText(last, ctx[lastLevel], (*i).second);
+            lstCtx = ctx;
+            lastLevel++;
+        }
+    }
+    TOCATCH
+}
+
+toTemplateSQL::toTemplateSQL(toConnection &conn, toTemplateItem *parent,
+                             const QString &name, const QString &sql)
+        : toTemplateItem(parent, name), Object(this), Connection(&conn), SQL(sql)
+{
+    setExpandable(true);
+}
+
+toTemplateSQL::toTemplateSQL(toTemplateItem *parent,
+                             const QString &name, const QString &sql)
+        : toTemplateItem(parent, name), Object(this), SQL(sql)
+{
+    Connection = NULL;
+    setExpandable(true);
+}
+
+toTemplateSQLObject::toTemplateSQLObject(toTemplateSQL *parent)
+        : Parent(parent)
+{
+    Query = NULL;
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+}
+
+void toTemplateSQL::expand(void)
+{
+    while (firstChild())
+        delete firstChild();
+    Object.expand();
+}
+
+void toTemplateSQLObject::expand(void)
+{
+    try
+    {
+        delete Query;
+        Query = NULL;
+        Query = new toNoBlockQuery(Parent->connection(), toQuery::Background,
+                                   Parent->SQL, Parent->parameters());
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+void toTemplateSQLObject::poll(void)
+{
+    try
+    {
+        if (QApplication::activeModalWidget()) // Template is never in widget
+            return ;
+        if (Query && Query->poll())
+        {
+            toQDescList desc = Query->describe();
+            while (Query->poll() && !Query->eof())
+            {
+                QListViewItem *item = Parent->createChild(Query->readValue());
+                for (unsigned int j = 1;j < desc.size();j++)
+                    item->setText(j, Query->readValue());
+            }
+            if (Query->eof())
+            {
+                delete Query;
+                Query = NULL;
+                Poll.stop();
+            }
+        }
+    }
+    catch (const QString &str)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(str);
+    }
+}
+
+toTemplateSQLObject::~toTemplateSQLObject()
+{
+    delete Query;
+}
+
+static toTextTemplate TextTemplate;

Added: kde-extras/tora/branches/upstream/current/src/totemplate.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplate.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplate.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,334 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOTEMPLATE_H
+#define TOTEMPLATE_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "tohelp.h"
+#include "toresultview.h"
+
+#include <list>
+#include <map>
+
+#include <qvbox.h>
+
+class QListView;
+class QListViewItem;
+class QSplitter;
+class QTextView;
+class QToolBar;
+class toConnection;
+class toListView;
+class toTemplateItem;
+class toTemplateProvider;
+class toNoBlockQuery;
+
+/** Not part of the API.
+ * @internal
+ */
+
+class toTemplate : public QVBox, public toHelpContext
+{
+    Q_OBJECT
+
+    QToolBar *Toolbar;
+    toListView *List;
+    QWidget *WidgetExtra;
+    QWidget *Result;
+    QVBox *Frame;
+public:
+    toTemplate(TODock *parent);
+    virtual ~toTemplate();
+    void setWidget(QWidget *widget);
+    QWidget *widget(void)
+    {
+        return WidgetExtra;
+    }
+    QWidget *frame(void);
+
+    static QWidget *parentWidget(QListViewItem *item);
+    static toTemplate *templateWidget(QListViewItem *item);
+    static toTemplate *templateWidget(QListView *obj);
+    static bool templateShown();
+
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+
+    void closeFrame(void);
+    void showResult(bool show);
+
+    void hideEvent(QHideEvent *);
+    void showEvent(QShowEvent *);
+public slots:
+    void expand(QListViewItem *item);
+    void collapse(QListViewItem *item);
+    void selected(QListViewItem *item);
+    void hideTemplates();
+};
+
+/**
+ * This is the base class of a provider of template items. Usually it is created with
+ * a static object just like the tools. It can also be assumed that a maximum of one
+ * template window will be opened.
+ */
+
+class toTemplateProvider
+{
+    /** List of currently available template providers.
+     */
+    static std::list<toTemplateProvider *> *Providers;
+    static bool Shown;
+    static QCString *ToolKey;
+    ;
+    QCString Name;
+    bool Open;
+public:
+    toTemplateProvider(const QCString &name);
+    virtual ~toTemplateProvider()
+    { }
+
+    /** Get name of this template provider.
+     */
+    const QCString name()
+    {
+        return Name;
+    }
+
+    /** Insert a parent item for this template provider into a list view.
+     * @param parent The list into which to insert the item.
+     * @param toolbar The template toolbar if any buttons are to be added on it.
+     */
+    virtual void insertItems(QListView *parent, QToolBar *toolbar) = 0;
+
+    /** Save settings for this template provider.
+     * @param data Map of data.
+     * @param prefix Prefix of where to save info.
+     */
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Save settings for all template providers.
+     * @param data Map of data.
+     * @param prefix Prefix of where to save info.
+     */
+    static void exportAllData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Import data
+     * @param data Data to read from a map.
+     * @param prefix Prefix to read data from.
+     */
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Import data for all template providers.
+     * @param data Data to read from a map.
+     * @param prefix Prefix to read data from.
+     */
+    static void importAllData(std::map<QCString, QString> &data, const QCString &prefix);
+
+    /** Used internally to indicate if template help is shown.
+     */
+    static void setShown(bool shown);
+    /** Used internally to indicate tool key string
+     */
+    static void setToolKey(const QCString &key);
+
+    friend class toTemplate;
+};
+
+/** This is an item that is contained in a template. It is different in the expand and
+ * collapse methods that are called when this item is expanded or collapsed from the
+ * template widget.
+ */
+class toTemplateItem : public toResultViewItem
+{
+    /** The provider responsible for this item.
+     */
+    toTemplateProvider &Provider;
+public:
+    /** Create an item.
+     * @param prov Provider for this item.
+     * @param parent Parent of this item.
+     * @param name Contents of the first column of the item.
+     */
+    toTemplateItem(toTemplateProvider &prov, QListView *parent, const QString &name)
+            : toResultViewItem(parent, NULL, name), Provider(prov)
+    { }
+    /** Create an item.
+     * @param parent Parent of this item.
+     * @param name Contents of the first column of the item.
+     * @param after The item to put this item after.
+     */
+    toTemplateItem(toTemplateItem *parent, const QString &name, QListViewItem *after = NULL)
+            : toResultViewItem(parent, after, name), Provider(parent->provider())
+    { }
+    /** Get a reference to the provider of this item.
+     * @return Reference to provider.
+     */
+    toTemplateProvider &provider(void)
+    {
+        return Provider;
+    }
+    /** This function is called when the item is expanded and can be used to fill up the
+     * list when needed.
+     */
+    virtual void expand(void)
+    { }
+    /** This function is called when the item is selected by doubleclicking or pressing return.
+     */
+    virtual void selected(void)
+    { }
+    /** This function is called when the item is collapsed.
+     */
+    virtual void collapse(void)
+    { }
+    /** This function can be used to return a widget that is displays extra information for
+     * this item. Return NULL if no widget is to be displayed. The widget will be deleted
+     * when this item is no longer shown.
+     */
+    virtual QWidget *selectedWidget(QWidget *parent);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void setSelected(bool sel);
+};
+
+/** This class represent a template item that have an extra text to describe it if it is
+ * selected.
+ */
+
+class toTemplateText : public toTemplateItem
+{
+    /** The note to display.
+     */
+    const QString Note;
+public:
+    /** Create an item.
+     * @param parent Parent of this item.
+     * @param name Contents of the first column of the item.
+     * @param note Extra text to display if item is selected.
+     */
+    toTemplateText(toTemplateItem *parent, const QString &name, const QString &note)
+            : toTemplateItem(parent, name), Note(note)
+    { }
+    /** Reimplemented for internal reasons.
+     */
+    virtual QWidget *selectedWidget(QWidget *parent);
+};
+
+class toTemplateSQL;
+
+/** Used by toTemplateSQL. Only for internal use.
+ * @internal
+ */
+
+class toTemplateSQLObject : public QObject
+{
+    Q_OBJECT
+
+    toNoBlockQuery *Query;
+    toBackground Poll;
+    toTemplateSQL *Parent;
+    toTemplateSQLObject(toTemplateSQL *parent);
+    virtual ~toTemplateSQLObject();
+    void expand(void);
+
+    friend class toTemplateSQL;
+private slots:
+    void poll(void);
+};
+
+/** This class represent an item that when expanded will execute an SQL statement
+ * and create child items which are the result of the query.
+ */
+
+class toTemplateSQL : public toTemplateItem
+{
+    toTemplateSQLObject Object;
+
+    /** Connection to run statement in
+     */
+    toConnection *Connection;
+    /** Statement to run.
+     */
+    QString SQL;
+protected:
+    /** Create an item.
+     * @param conn Connection to query.
+     * @param parent Parent of this item.
+     * @param name Contents of the first column of the item.
+     * @param sql SQL statement.
+     */
+    toTemplateSQL(toTemplateItem *parent,
+                  const QString &name, const QString &sql);
+public:
+    /** Create an item.
+     * @param conn Connection to query.
+     * @param parent Parent of this item.
+     * @param name Contents of the first column of the item.
+     * @param sql SQL statement.
+     */
+    toTemplateSQL(toConnection &conn, toTemplateItem *parent,
+                  const QString &name, const QString &sql);
+    /** Get connection of this item.
+     * @return Reference to connection.
+     */
+    virtual toConnection &connection()
+    {
+        return *Connection;
+    }
+    /** Create a child of this item.
+     * @param name Name of the child.
+     * @return A newly created item.
+     */
+    virtual toTemplateItem *createChild(const QString &name)
+    {
+        return new toTemplateItem(this, name);
+    }
+    /** Get parameters to pass to query.
+     * @return List of strings to pass as input parameters to query
+     */
+    virtual toQList parameters(void)
+    {
+        toQList ret;
+        return ret;
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void expand(void);
+    friend class toTemplateSQLObject;
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,123 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'totemplateaddfileui.ui'
+**
+** Created: Tue Sep 18 08:21:26 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "totemplateaddfileui.h"
+
+#include <qvariant.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qframe.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toTemplateAddFileUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toTemplateAddFileUI::toTemplateAddFileUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl )
+{
+    if ( !name )
+	setName( "toTemplateAddFileUI" );
+    toTemplateAddFileUILayout = new QGridLayout( this, 1, 1, 11, 6, "toTemplateAddFileUILayout"); 
+
+    Filename = new QLineEdit( this, "Filename" );
+
+    toTemplateAddFileUILayout->addMultiCellWidget( Filename, 3, 3, 0, 2 );
+
+    Browse = new QPushButton( this, "Browse" );
+
+    toTemplateAddFileUILayout->addWidget( Browse, 3, 4 );
+
+    Root = new QLineEdit( this, "Root" );
+
+    toTemplateAddFileUILayout->addMultiCellWidget( Root, 1, 1, 0, 4 );
+
+    Line1 = new QFrame( this, "Line1" );
+    Line1->setFrameStyle( QFrame::HLine | QFrame::Sunken );
+
+    toTemplateAddFileUILayout->addMultiCellWidget( Line1, 4, 4, 0, 1 );
+
+    PushButton2_2 = new QPushButton( this, "PushButton2_2" );
+
+    toTemplateAddFileUILayout->addMultiCellWidget( PushButton2_2, 4, 5, 4, 4 );
+
+    OkButton = new QPushButton( this, "OkButton" );
+    OkButton->setDefault( TRUE );
+
+    toTemplateAddFileUILayout->addMultiCellWidget( OkButton, 4, 5, 2, 2 );
+
+    TextLabel1_2 = new QLabel( this, "TextLabel1_2" );
+
+    toTemplateAddFileUILayout->addMultiCellWidget( TextLabel1_2, 2, 2, 0, 4 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+
+    toTemplateAddFileUILayout->addMultiCellWidget( TextLabel1, 0, 0, 0, 4 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toTemplateAddFileUILayout->addItem( Spacer1, 5, 1 );
+    languageChange();
+    resize( QSize(438, 164).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( OkButton, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton2_2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( Browse, SIGNAL( clicked() ), this, SLOT( browse() ) );
+    connect( Root, SIGNAL( textChanged(const QString&) ), this, SLOT( valid() ) );
+    connect( Filename, SIGNAL( textChanged(const QString&) ), this, SLOT( valid() ) );
+
+    // tab order
+    setTabOrder( Root, Filename );
+    setTabOrder( Filename, Browse );
+    setTabOrder( Browse, OkButton );
+    setTabOrder( OkButton, PushButton2_2 );
+
+    // buddies
+    TextLabel1_2->setBuddy( Root );
+    TextLabel1->setBuddy( Root );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toTemplateAddFileUI::~toTemplateAddFileUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toTemplateAddFileUI::languageChange()
+{
+    setCaption( tr( "Add template file" ) );
+    Browse->setText( tr( "&Browse" ) );
+    PushButton2_2->setText( tr( "Canel" ) );
+    OkButton->setText( tr( "&Ok" ) );
+    TextLabel1_2->setText( tr( "&File" ) );
+    TextLabel1->setText( tr( "&Root" ) );
+}
+
+void toTemplateAddFileUI::browse()
+{
+    qWarning( "toTemplateAddFileUI::browse(): Not implemented yet" );
+}
+
+void toTemplateAddFileUI::valid()
+{
+    qWarning( "toTemplateAddFileUI::valid(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,55 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'totemplateaddfileui.ui'
+**
+** Created: Tue Sep 18 08:21:26 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOTEMPLATEADDFILEUI_H
+#define TOTEMPLATEADDFILEUI_H
+
+#include <qvariant.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QLineEdit;
+class QPushButton;
+class QFrame;
+class QLabel;
+
+class toTemplateAddFileUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toTemplateAddFileUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toTemplateAddFileUI();
+
+    QLineEdit* Filename;
+    QPushButton* Browse;
+    QLineEdit* Root;
+    QFrame* Line1;
+    QPushButton* PushButton2_2;
+    QPushButton* OkButton;
+    QLabel* TextLabel1_2;
+    QLabel* TextLabel1;
+
+public slots:
+    virtual void browse();
+    virtual void valid();
+
+protected:
+    QGridLayout* toTemplateAddFileUILayout;
+    QSpacerItem* Spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOTEMPLATEADDFILEUI_H

Added: kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplateaddfileui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,187 @@
+<!DOCTYPE UI><UI>
+<class>toTemplateAddFileUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toTemplateAddFileUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>438</width>
+            <height>164</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Add template file</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="3"  column="0"  rowspan="1"  colspan="3" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Filename</cstring>
+            </property>
+        </widget>
+        <widget row="3"  column="4" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Browse</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Browse</string>
+            </property>
+        </widget>
+        <widget row="1"  column="0"  rowspan="1"  colspan="5" >
+            <class>QLineEdit</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Root</cstring>
+            </property>
+        </widget>
+        <widget row="4"  column="0"  rowspan="1"  colspan="2" >
+            <class>Line</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Line1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+        </widget>
+        <widget row="4"  column="4"  rowspan="2"  colspan="1" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton2_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Canel</string>
+            </property>
+        </widget>
+        <widget row="4"  column="2"  rowspan="2"  colspan="1" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>OkButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="2"  column="0"  rowspan="1"  colspan="5" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1_2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;File</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Root</cstring>
+            </property>
+        </widget>
+        <widget row="0"  column="0"  rowspan="1"  colspan="5" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Root</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Root</cstring>
+            </property>
+        </widget>
+        <spacer row="5"  column="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>OkButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateAddFileUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2_2</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateAddFileUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>Browse</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateAddFileUI</receiver>
+        <slot>browse()</slot>
+    </connection>
+    <connection>
+        <sender>Root</sender>
+        <signal>textChanged(const QString&amp;)</signal>
+        <receiver>toTemplateAddFileUI</receiver>
+        <slot>valid()</slot>
+    </connection>
+    <connection>
+        <sender>Filename</sender>
+        <signal>textChanged(const QString&amp;)</signal>
+        <receiver>toTemplateAddFileUI</receiver>
+        <slot>valid()</slot>
+    </connection>
+    <slot access="public">browse()</slot>
+    <slot access="public">valid()</slot>
+</connections>
+<tabstops>
+    <tabstop>Root</tabstop>
+    <tabstop>Filename</tabstop>
+    <tabstop>Browse</tabstop>
+    <tabstop>OkButton</tabstop>
+    <tabstop>PushButton2_2</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/totemplateeditui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplateeditui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplateeditui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,233 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'totemplateeditui.ui'
+**
+** Created: Tue Sep 18 08:21:26 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "totemplateeditui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qheader.h>
+#include <qlistview.h>
+#include <qframe.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qtextview.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include <qimage.h>
+#include <qpixmap.h>
+
+#include "tomarkedtext.h"
+static const char* const image0_data[] = { 
+"16 16 4 1",
+". c None",
+"# c #000000",
+"b c #7b7d7b",
+"a c #d5d6d5",
+"................",
+"................",
+".....######.....",
+"...##aaaaaa##...",
+"..#aaaa##aaaa#..",
+"..#aaaa##aaaa#..",
+"...##aaaaaa##...",
+"...#b######b#...",
+"...#b#bb#b#b#...",
+"...#b#bb#b#b#...",
+"...#b#bb#b#b#...",
+"...#b#bb#b#b#...",
+"...#b#bb#b#b#...",
+"...#b#bb#b#b#...",
+"....##bb#bb#....",
+".....######....."};
+
+static const char* const image1_data[] = { 
+"16 16 4 1",
+". c None",
+"# c #000000",
+"a c #00ff00",
+"b c #ffffff",
+"..........####..",
+"......#####a#b#.",
+"......#bbb#a#bb#",
+"......#####a####",
+"########aaaaaaa#",
+"bbbbbb#####a####",
+"b####bbbbb#a#...",
+"bbbbbbbbbb#a#...",
+"b###b###bb###...",
+"bbbbbbbbbb#.....",
+"b######bbb#.....",
+"bbbbbbbbbb#.....",
+"b#####bbbb#.....",
+"bbbbbbbbbb#.....",
+"b##b#####b#.....",
+"bbbbbbbbbb#....."};
+
+
+/*
+ *  Constructs a toTemplateEditUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ *
+ *  The dialog will by default be modeless, unless you set 'modal' to
+ *  TRUE to construct a modal dialog.
+ */
+toTemplateEditUI::toTemplateEditUI( QWidget* parent, const char* name, bool modal, WFlags fl )
+    : QDialog( parent, name, modal, fl ),
+      image0( (const char **) image0_data ),
+      image1( (const char **) image1_data )
+{
+    if ( !name )
+	setName( "toTemplateEditUI" );
+    toTemplateEditUILayout = new QGridLayout( this, 1, 1, 11, 6, "toTemplateEditUILayout"); 
+
+    Templates = new QListView( this, "Templates" );
+    Templates->addColumn( tr( "Template" ) );
+    Templates->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, Templates->sizePolicy().hasHeightForWidth() ) );
+    Templates->setAllColumnsShowFocus( TRUE );
+    Templates->setRootIsDecorated( TRUE );
+
+    toTemplateEditUILayout->addWidget( Templates, 0, 0 );
+
+    Frame3 = new QFrame( this, "Frame3" );
+    Frame3->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)5, 0, 0, Frame3->sizePolicy().hasHeightForWidth() ) );
+    Frame3->setFrameShape( QFrame::StyledPanel );
+    Frame3->setFrameShadow( QFrame::Raised );
+    Frame3Layout = new QGridLayout( Frame3, 1, 1, 11, 6, "Frame3Layout"); 
+
+    Name = new QLineEdit( Frame3, "Name" );
+
+    Frame3Layout->addMultiCellWidget( Name, 1, 1, 0, 2 );
+
+    Description = new toMarkedText( Frame3, "Description" );
+    Description->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, Description->sizePolicy().hasHeightForWidth() ) );
+
+    Frame3Layout->addMultiCellWidget( Description, 3, 3, 0, 2 );
+
+    TextLabel3 = new QLabel( Frame3, "TextLabel3" );
+
+    Frame3Layout->addMultiCellWidget( TextLabel3, 2, 2, 0, 2 );
+
+    Preview = new QTextView( Frame3, "Preview" );
+    Preview->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, 0, 0, Preview->sizePolicy().hasHeightForWidth() ) );
+
+    Frame3Layout->addMultiCellWidget( Preview, 5, 5, 0, 2 );
+
+    PreviewButton = new QPushButton( Frame3, "PreviewButton" );
+
+    Frame3Layout->addMultiCellWidget( PreviewButton, 4, 4, 1, 2 );
+
+    TextLabel2 = new QLabel( Frame3, "TextLabel2" );
+    TextLabel2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, 0, 0, TextLabel2->sizePolicy().hasHeightForWidth() ) );
+
+    Frame3Layout->addWidget( TextLabel2, 0, 0 );
+
+    TrashButton = new QPushButton( Frame3, "TrashButton" );
+    TrashButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, TrashButton->sizePolicy().hasHeightForWidth() ) );
+    TrashButton->setPixmap( image0 );
+
+    Frame3Layout->addWidget( TrashButton, 0, 2 );
+
+    NewButton = new QPushButton( Frame3, "NewButton" );
+    NewButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)1, (QSizePolicy::SizeType)0, 0, 0, NewButton->sizePolicy().hasHeightForWidth() ) );
+    NewButton->setPixmap( image1 );
+
+    Frame3Layout->addWidget( NewButton, 0, 1 );
+
+    TextLabel4 = new QLabel( Frame3, "TextLabel4" );
+    TextLabel4->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)1, 0, 0, TextLabel4->sizePolicy().hasHeightForWidth() ) );
+
+    Frame3Layout->addWidget( TextLabel4, 4, 0 );
+
+    toTemplateEditUILayout->addMultiCellWidget( Frame3, 0, 0, 1, 3 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toTemplateEditUILayout->addMultiCell( Spacer1, 1, 1, 0, 1 );
+
+    PushButton2 = new QPushButton( this, "PushButton2" );
+
+    toTemplateEditUILayout->addWidget( PushButton2, 1, 3 );
+
+    PushButton1 = new QPushButton( this, "PushButton1" );
+    PushButton1->setDefault( TRUE );
+
+    toTemplateEditUILayout->addWidget( PushButton1, 1, 2 );
+    languageChange();
+    resize( QSize(659, 547).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( PushButton1, SIGNAL( clicked() ), this, SLOT( accept() ) );
+    connect( PushButton2, SIGNAL( clicked() ), this, SLOT( reject() ) );
+    connect( PreviewButton, SIGNAL( clicked() ), this, SLOT( preview() ) );
+    connect( TrashButton, SIGNAL( clicked() ), this, SLOT( remove() ) );
+    connect( NewButton, SIGNAL( clicked() ), this, SLOT( newTemplate() ) );
+    connect( Templates, SIGNAL( selectionChanged() ), this, SLOT( changeSelection() ) );
+
+    // buddies
+    TextLabel3->setBuddy( Description );
+    TextLabel2->setBuddy( Name );
+    TextLabel4->setBuddy( Preview );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toTemplateEditUI::~toTemplateEditUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toTemplateEditUI::languageChange()
+{
+    setCaption( tr( "Template editor" ) );
+    Templates->header()->setLabel( 0, tr( "Template" ) );
+    TextLabel3->setText( tr( "&Description" ) );
+    QToolTip::add( TextLabel3, tr( "Description text. Can be in HTML format." ) );
+    PreviewButton->setText( tr( "&Preview" ) );
+    TextLabel2->setText( tr( "&Name" ) );
+    QToolTip::add( TextLabel2, tr( "Name of the template." ) );
+    TrashButton->setText( QString::null );
+    QToolTip::add( TrashButton, tr( "Remove the current template" ) );
+    NewButton->setText( QString::null );
+    QToolTip::add( NewButton, tr( "Add new template" ) );
+    TextLabel4->setText( tr( "Preview" ) );
+    QToolTip::add( TextLabel4, tr( "Preview of the description. Press the button to update" ) );
+    PushButton2->setText( tr( "Cancel" ) );
+    PushButton1->setText( tr( "&Ok" ) );
+}
+
+void toTemplateEditUI::newTemplate()
+{
+    qWarning( "toTemplateEditUI::newTemplate(): Not implemented yet" );
+}
+
+void toTemplateEditUI::changeSelection()
+{
+    qWarning( "toTemplateEditUI::changeSelection(): Not implemented yet" );
+}
+
+void toTemplateEditUI::preview()
+{
+    qWarning( "toTemplateEditUI::preview(): Not implemented yet" );
+}
+
+void toTemplateEditUI::remove()
+{
+    qWarning( "toTemplateEditUI::remove(): Not implemented yet" );
+}
+
+void toTemplateEditUI::updateFromMap()
+{
+    qWarning( "toTemplateEditUI::updateFromMap(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/totemplateeditui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplateeditui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplateeditui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,74 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'totemplateeditui.ui'
+**
+** Created: Tue Sep 18 08:21:26 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOTEMPLATEEDITUI_H
+#define TOTEMPLATEEDITUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qdialog.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toMarkedText;
+class QListView;
+class QListViewItem;
+class QFrame;
+class QLineEdit;
+class QLabel;
+class QTextView;
+class QPushButton;
+
+class toTemplateEditUI : public QDialog
+{
+    Q_OBJECT
+
+public:
+    toTemplateEditUI( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 );
+    ~toTemplateEditUI();
+
+    QListView* Templates;
+    QFrame* Frame3;
+    QLineEdit* Name;
+    toMarkedText* Description;
+    QLabel* TextLabel3;
+    QTextView* Preview;
+    QPushButton* PreviewButton;
+    QLabel* TextLabel2;
+    QPushButton* TrashButton;
+    QPushButton* NewButton;
+    QLabel* TextLabel4;
+    QPushButton* PushButton2;
+    QPushButton* PushButton1;
+
+public slots:
+    virtual void newTemplate();
+    virtual void changeSelection();
+    virtual void preview();
+    virtual void remove();
+    virtual void updateFromMap();
+
+protected:
+    QGridLayout* toTemplateEditUILayout;
+    QSpacerItem* Spacer1;
+    QGridLayout* Frame3Layout;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+    QPixmap image1;
+    QPixmap image2;
+
+};
+
+#endif // TOTEMPLATEEDITUI_H

Added: kde-extras/tora/branches/upstream/current/src/totemplateeditui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplateeditui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplateeditui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,390 @@
+<!DOCTYPE UI><UI>
+<class>toTemplateEditUI</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toTemplateEditUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>659</width>
+            <height>547</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Template editor</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0" >
+            <class>QListView</class>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Template</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Templates</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>7</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>allColumnsShowFocus</name>
+                <bool>true</bool>
+            </property>
+            <property stdset="1">
+                <name>rootIsDecorated</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="0"  column="1"  rowspan="1"  colspan="3" >
+            <class>QFrame</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Frame3</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>7</hsizetype>
+                    <vsizetype>5</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>frameShape</name>
+                <enum>StyledPanel</enum>
+            </property>
+            <property stdset="1">
+                <name>frameShadow</name>
+                <enum>Raised</enum>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="1"  column="0"  rowspan="1"  colspan="3" >
+                    <class>QLineEdit</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Name</cstring>
+                    </property>
+                </widget>
+                <widget row="3"  column="0"  rowspan="1"  colspan="3" >
+                    <class>toMarkedText</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Description</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>7</vsizetype>
+                        </sizepolicy>
+                    </property>
+                </widget>
+                <widget row="2"  column="0"  rowspan="1"  colspan="3" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel3</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Description</string>
+                    </property>
+                    <property>
+                        <name>buddy</name>
+                        <cstring>Description</cstring>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Description text. Can be in HTML format.</string>
+                    </property>
+                </widget>
+                <widget row="5"  column="0"  rowspan="1"  colspan="3" >
+                    <class>QTextView</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>Preview</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>7</vsizetype>
+                        </sizepolicy>
+                    </property>
+                </widget>
+                <widget row="4"  column="1"  rowspan="1"  colspan="2" >
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>PreviewButton</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Preview</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Name</string>
+                    </property>
+                    <property>
+                        <name>buddy</name>
+                        <cstring>Name</cstring>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Name of the template.</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="2" >
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TrashButton</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>0</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string></string>
+                    </property>
+                    <property stdset="1">
+                        <name>pixmap</name>
+                        <pixmap>image0</pixmap>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Remove the current template</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="1" >
+                    <class>QPushButton</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>NewButton</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>0</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string></string>
+                    </property>
+                    <property stdset="1">
+                        <name>pixmap</name>
+                        <pixmap>image1</pixmap>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Add new template</string>
+                    </property>
+                </widget>
+                <widget row="4"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel4</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>7</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Preview</string>
+                    </property>
+                    <property>
+                        <name>buddy</name>
+                        <cstring>Preview</cstring>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Preview of the description. Press the button to update</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <spacer row="1"  column="0"  rowspan="1"  colspan="2" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="1"  column="3" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>Cancel</string>
+            </property>
+        </widget>
+        <widget row="1"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PushButton1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Ok</string>
+            </property>
+            <property stdset="1">
+                <name>default</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toMarkedText</class>
+        <header location="local">tomarkedtext.h</header>
+        <sizehint>
+            <width>100</width>
+            <height>100</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image2</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="424">789cd3d7528808f055d0d2e72a2e492cc94c5648ce482c52d04a29cdcdad8c8eb5ade6523234530022130543251d2e253d856405bffcbc54105b19c856360003103709c4354f324f314f02711341dc14d314b31453b0463480574c190c90c5949513c1002c0a115386f0c1243e316c7af59493207624a18a252581083a8b011d980416c61906b5d65c00e051587d</data>
+    </image>
+    <image>
+        <name>image1</name>
+        <data format="XPM.GZ" length="424">789c8d8ec10ac2300c86ef7d8ad0dc8a740ec48bf8088a47413c24d5a28729e83c88f8ee36e9d8e644f1a387fc3f5fdb140ed6ab05b8c25c6baa8f01c2812ee076b7aaba6fb6f387b1e514d299406947c67a08b03c9ff632639a71ac48a41c63cc912546452fb660c2fbae938c848cfd8e99a563fcf012fa790365b463e5ddd3987b4adfface1b74a2a9aaeb0d3ddda07d4f5fec755f3dfec76bd41fde73665e4fc75efd</data>
+    </image>
+    <image>
+        <name>image2</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+<connections>
+    <connection>
+        <sender>PushButton1</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateEditUI</receiver>
+        <slot>accept()</slot>
+    </connection>
+    <connection>
+        <sender>PushButton2</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateEditUI</receiver>
+        <slot>reject()</slot>
+    </connection>
+    <connection>
+        <sender>PreviewButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateEditUI</receiver>
+        <slot>preview()</slot>
+    </connection>
+    <connection>
+        <sender>TrashButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateEditUI</receiver>
+        <slot>remove()</slot>
+    </connection>
+    <connection>
+        <sender>NewButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateEditUI</receiver>
+        <slot>newTemplate()</slot>
+    </connection>
+    <connection>
+        <sender>Templates</sender>
+        <signal>selectionChanged()</signal>
+        <receiver>toTemplateEditUI</receiver>
+        <slot>changeSelection()</slot>
+    </connection>
+    <slot access="public">newTemplate()</slot>
+    <slot access="public">changeSelection()</slot>
+    <slot access="public">preview()</slot>
+    <slot access="public">remove()</slot>
+    <slot access="public">updateFromMap()</slot>
+</connections>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/totemplateprovider.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplateprovider.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplateprovider.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,104 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "totemplate.h"
+
+std::list<toTemplateProvider *> *toTemplateProvider::Providers;
+bool toTemplateProvider::Shown = false;
+QCString *toTemplateProvider::ToolKey;
+
+toTemplateProvider::toTemplateProvider(const QCString &name)
+        : Name(name)
+{
+    if (!Providers)
+        Providers = new std::list<toTemplateProvider *>;
+    Providers->insert(Providers->end(), this);
+}
+
+void toTemplateProvider::exportAllData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    if (!Providers)
+        return ;
+    for (std::list<toTemplateProvider *>::iterator i = toTemplateProvider::Providers->begin();
+            i != toTemplateProvider::Providers->end();
+            i++)
+        (*i)->exportData(data, prefix + ":" + (*i)->name());
+    if (Shown)
+        data[prefix + ":Shown"] = "Yes";
+}
+
+void toTemplateProvider::importAllData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    if (!Providers)
+        return ;
+    for (std::list<toTemplateProvider *>::iterator i = toTemplateProvider::Providers->begin();
+            i != toTemplateProvider::Providers->end();
+            i++)
+        (*i)->importData(data, prefix + ":" + (*i)->name());
+    if (ToolKey != NULL && data[prefix + ":Shown"] == "Yes")
+    {
+        try
+        {
+            toTool *tool = toTool::tool(*ToolKey);
+            if (tool)
+                tool->createWindow();
+        }
+        catch (...)
+        {}
+    }
+}
+
+void toTemplateProvider::exportData(std::map<QCString, QString> &, const QCString &)
+{}
+
+void toTemplateProvider::importData(std::map<QCString, QString> &, const QCString &)
+{}
+
+void toTemplateProvider::setShown(bool shown)
+{
+    Shown = shown;
+}
+
+void toTemplateProvider::setToolKey(const QCString &key)
+{
+    if (!ToolKey)
+        ToolKey = new QCString;
+
+    (*ToolKey) = key;
+}

Added: kde-extras/tora/branches/upstream/current/src/totemplatesetupui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplatesetupui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplatesetupui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,107 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'totemplatesetupui.ui'
+**
+** Created: Tue Sep 18 08:21:26 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "totemplatesetupui.h"
+
+#include <qvariant.h>
+#include <qheader.h>
+#include <qlistview.h>
+#include <qpushbutton.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toTemplateSetupUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toTemplateSetupUI::toTemplateSetupUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toTemplateSetupUI" );
+    toTemplateSetupUILayout = new QGridLayout( this, 1, 1, 0, 6, "toTemplateSetupUILayout"); 
+
+    FileList = new QListView( this, "FileList" );
+    FileList->addColumn( tr( "Root" ) );
+    FileList->addColumn( tr( "Filename" ) );
+    FileList->setAllColumnsShowFocus( TRUE );
+
+    toTemplateSetupUILayout->addMultiCellWidget( FileList, 0, 0, 0, 4 );
+
+    AddButton = new QPushButton( this, "AddButton" );
+    AddButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, AddButton->sizePolicy().hasHeightForWidth() ) );
+
+    toTemplateSetupUILayout->addWidget( AddButton, 1, 4 );
+
+    RemoveButton = new QPushButton( this, "RemoveButton" );
+    RemoveButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, RemoveButton->sizePolicy().hasHeightForWidth() ) );
+
+    toTemplateSetupUILayout->addWidget( RemoveButton, 1, 0 );
+
+    EditButton = new QPushButton( this, "EditButton" );
+    EditButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, 0, 0, EditButton->sizePolicy().hasHeightForWidth() ) );
+
+    toTemplateSetupUILayout->addWidget( EditButton, 1, 2 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toTemplateSetupUILayout->addItem( Spacer1, 1, 1 );
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
+    toTemplateSetupUILayout->addItem( Spacer2, 1, 3 );
+    languageChange();
+    resize( QSize(526, 448).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( EditButton, SIGNAL( clicked() ), this, SLOT( editFile() ) );
+    connect( RemoveButton, SIGNAL( clicked() ), this, SLOT( delFile() ) );
+    connect( AddButton, SIGNAL( clicked() ), this, SLOT( addFile() ) );
+
+    // tab order
+    setTabOrder( EditButton, FileList );
+    setTabOrder( FileList, AddButton );
+    setTabOrder( AddButton, RemoveButton );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toTemplateSetupUI::~toTemplateSetupUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toTemplateSetupUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    FileList->header()->setLabel( 0, tr( "Root" ) );
+    FileList->header()->setLabel( 1, tr( "Filename" ) );
+    AddButton->setText( tr( "&Add File" ) );
+    RemoveButton->setText( tr( "&Remove File" ) );
+    EditButton->setText( tr( "&Edit File" ) );
+}
+
+void toTemplateSetupUI::addFile()
+{
+    qWarning( "toTemplateSetupUI::addFile(): Not implemented yet" );
+}
+
+void toTemplateSetupUI::editFile()
+{
+    qWarning( "toTemplateSetupUI::editFile(): Not implemented yet" );
+}
+
+void toTemplateSetupUI::delFile()
+{
+    qWarning( "toTemplateSetupUI::delFile(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/totemplatesetupui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplatesetupui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplatesetupui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,52 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'totemplatesetupui.ui'
+**
+** Created: Tue Sep 18 08:21:26 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOTEMPLATESETUPUI_H
+#define TOTEMPLATESETUPUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QListView;
+class QListViewItem;
+class QPushButton;
+
+class toTemplateSetupUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toTemplateSetupUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toTemplateSetupUI();
+
+    QListView* FileList;
+    QPushButton* AddButton;
+    QPushButton* RemoveButton;
+    QPushButton* EditButton;
+
+public slots:
+    virtual void addFile();
+    virtual void editFile();
+    virtual void delFile();
+
+protected:
+    QGridLayout* toTemplateSetupUILayout;
+    QSpacerItem* Spacer1;
+    QSpacerItem* Spacer2;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOTEMPLATESETUPUI_H

Added: kde-extras/tora/branches/upstream/current/src/totemplatesetupui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemplatesetupui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemplatesetupui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,197 @@
+<!DOCTYPE UI><UI>
+<class>toTemplateSetupUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toTemplateSetupUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>526</width>
+            <height>448</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>0</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0"  rowspan="1"  colspan="5" >
+            <class>QListView</class>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Root</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Filename</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>FileList</cstring>
+            </property>
+            <property stdset="1">
+                <name>allColumnsShowFocus</name>
+                <bool>true</bool>
+            </property>
+        </widget>
+        <widget row="1"  column="4" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>AddButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Add File</string>
+            </property>
+        </widget>
+        <widget row="1"  column="0" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>RemoveButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Remove File</string>
+            </property>
+        </widget>
+        <widget row="1"  column="2" >
+            <class>QPushButton</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>EditButton</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>0</hsizetype>
+                    <vsizetype>0</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Edit File</string>
+            </property>
+        </widget>
+        <spacer row="1"  column="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <spacer row="1"  column="3" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Horizontal</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>EditButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateSetupUI</receiver>
+        <slot>editFile()</slot>
+    </connection>
+    <connection>
+        <sender>RemoveButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateSetupUI</receiver>
+        <slot>delFile()</slot>
+    </connection>
+    <connection>
+        <sender>AddButton</sender>
+        <signal>clicked()</signal>
+        <receiver>toTemplateSetupUI</receiver>
+        <slot>addFile()</slot>
+    </connection>
+    <slot access="public">addFile()</slot>
+    <slot access="public">editFile()</slot>
+    <slot access="public">delFile()</slot>
+</connections>
+<tabstops>
+    <tabstop>EditButton</tabstop>
+    <tabstop>FileList</tabstop>
+    <tabstop>AddButton</tabstop>
+    <tabstop>RemoveButton</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/totemporary.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemporary.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemporary.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,214 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "toextract.h"
+#include "tohighlightedtext.h"
+#include "totemporary.h"
+#include "tomain.h"
+#include "toresultextract.h"
+#include "toresultlong.h"
+#include "toresultview.h"
+#include "tosgastatement.h"
+#include "tosql.h"
+#include "totool.h"
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qmenubar.h>
+#include <qheader.h>
+#include <qpopupmenu.h>
+#include <qprogressdialog.h>
+#include <qsplitter.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qworkspace.h>
+
+#include "totemporary.moc"
+
+#include "icons/refresh.xpm"
+#include "icons/totemporary.xpm"
+
+static toSQL SQLListTemporaryObjects("toTemporary:ListTemporaryObjects",
+                                     "SELECT s.sid || ',' || s.serial# \"Session\",\n"
+                                     "       s.username \"User\",\n"
+                                     "       u.TABLESPACE \"Tablespace\",\n"
+                                     "       segtype \"Type\",\n"
+                                     "       substr ( a.sql_text,1,50 ) \"SQL\",\n"
+                                     "       round ( u.blocks * p.value / :siz<int>,2 )||:sizstr<char[50]> \"Size\",\n"
+                                     "       s.sql_address || ':' || s.sql_hash_value \" \"\n"
+                                     "  FROM v$sort_usage u,\n"
+                                     "       v$session s,\n"
+                                     "       v$sqlarea a,\n"
+                                     "       v$parameter p\n"
+                                     " WHERE s.saddr = u.session_addr\n"
+                                     "   AND a.address ( + ) = s.sql_address\n"
+                                     "   AND a.hash_value ( + ) = s.sql_hash_value\n"
+                                     "   AND p.name = 'db_block_size'",
+                                     "Get temporary usage.", "0800");
+
+static toSQL SQLListTemporaryObjects9("toTemporary:ListTemporaryObjects",
+                                      "SELECT s.sid || ',' || s.serial# \"Session\",\n"
+                                      "       s.username \"User\",\n"
+                                      "       u.TABLESPACE \"Tablespace\",\n"
+                                      "       u.segtype \"Type\",\n"
+                                      "       substr ( a.sql_text,1,50 ) \"SQL\",\n"
+                                      "       round ( u.blocks * p.value / :siz<int>,2 )||:sizstr<char[50]> \"Size\",\n"
+                                      "       s.sql_address || ':' || s.sql_hash_value \" \"\n"
+                                      "  FROM v$tempseg_usage u,\n"
+                                      "       v$session s,\n"
+                                      "       v$sqlarea a,\n"
+                                      "       v$parameter p\n"
+                                      " WHERE s.saddr = u.session_addr\n"
+                                      "   AND a.address ( + ) = s.sql_address\n"
+                                      "   AND a.hash_value ( + ) = s.sql_hash_value\n"
+                                      "   AND p.name = 'db_block_size'",
+                                      QString::null,
+                                      "0900");
+
+class toTemporaryTool : public toTool
+{
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(totemporary_xpm);
+    }
+public:
+    toTemporaryTool()
+            : toTool(130, "Temporary Objects")
+    { }
+    virtual const char *menuItem()
+    {
+        return "Temporary Objects";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        return new toTemporary(parent, connection);
+    }
+    virtual bool canHandle(toConnection &conn)
+    {
+        if (!toIsOracle(conn))
+            return false;
+        if (conn.version() < "0800")
+            return false;
+        return true;
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toTemporaryTool TemporaryTool;
+
+toTemporary::toTemporary(QWidget *main, toConnection &connection)
+        : toToolWidget(TemporaryTool, "temporary.html", main, connection)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Temporary Objects"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Refresh list"),
+                    tr("Refresh list"),
+                    this, SLOT(refresh()),
+                    toolbar);
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    QSplitter *splitter = new QSplitter(Vertical, this);
+
+    Objects = new toResultLong(false, false, toQuery::Background, splitter);
+
+    QValueList<int> list;
+    list.append(75);
+    splitter->setSizes(list);
+
+    QString unit = toConfigurationSingle::Instance().globalConfig(CONF_SIZE_UNIT, DEFAULT_SIZE_UNIT);
+    toQList args;
+    toPush(args, toQValue(toSizeDecode(unit)));
+    toPush(args, toQValue(unit));
+
+    Objects->setSelectionMode(QListView::Single);
+    Objects->query(SQLListTemporaryObjects, args);
+    connect(Objects, SIGNAL(selectionChanged(QListViewItem *)),
+            this, SLOT(changeItem(QListViewItem *)));
+
+    Statement = new toSGAStatement(splitter);
+
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    setFocusProxy(Objects);
+}
+
+
+void toTemporary::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"),
+                                 this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Temporary|Refresh")));
+
+            toMainWidget()->menuBar()->insertItem(tr("&Temporary"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+void toTemporary::refresh(void)
+{
+    Objects->refresh();
+}
+
+void toTemporary::changeItem(QListViewItem *item)
+{
+    if (item)
+        Statement->changeAddress(item->text(Objects->columns()));
+}

Added: kde-extras/tora/branches/upstream/current/src/totemporary.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totemporary.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totemporary.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,65 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOTEMPORARY_H
+#define TOTEMPORARY_H
+
+#include "config.h"
+#include "totool.h"
+#include <list>
+
+class QPopupMenu;
+class toResultView;
+class toTask;
+class toSGAStatement;
+
+class toTemporary : public toToolWidget
+{
+    Q_OBJECT
+    toResultView *Objects;
+    toSGAStatement *Statement;
+    QPopupMenu *ToolMenu;
+public:
+    toTemporary(QWidget *parent, toConnection &connection);
+
+public slots:
+    virtual void refresh(void);
+    virtual void windowActivated(QWidget *widget);
+    virtual void changeItem(QListViewItem *item);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/totextview.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totextview.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totextview.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,53 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "totextview.h"
+
+bool toTextView::editSave(bool)
+{
+    QString fn = toSaveFilename(QString::null, QString::fromLatin1("*.html"), this);
+    if (!fn.isEmpty())
+    {
+        if (!toWriteFile(fn, text()))
+            return false;
+        return true;
+    }
+    return false;
+}
+

Added: kde-extras/tora/branches/upstream/current/src/totextview.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totextview.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totextview.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,96 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOTEXTVIEW_H
+#define TOTEXTVIEW_H
+
+#include "config.h"
+
+#include "toeditwidget.h"
+
+#include <qtextview.h>
+
+/** A tora editwidget version of the @ref QTextView widget.
+ */
+
+class toTextView : public QTextView, public toEditWidget
+{
+public:
+    /** See @ref QTextView
+     */
+    toTextView(QWidget *parent = 0, const char *name = 0)
+            : QTextView(parent, name)
+            , toEditWidget(false, true, false,
+                           false, false,
+                           false, true, false,
+                           false, true, false)
+    { }
+    /** See @ref QTextView
+     */
+    toTextView(const QString&text, const QString &context = QString::null,
+               QWidget *parent = 0, const char *name = 0)
+            : QTextView(text, context, parent, name)
+            , toEditWidget(false, true, false,
+                           false, false,
+                           false, true, false,
+                           false, true, false)
+    { }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editCopy(void)
+    {
+        copy();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void editSelectAll(void)
+    {
+        selectAll();
+    }
+    /** Reimplemented for internal reasons.
+     */
+    virtual bool editSave(bool);
+    /** Reimplemented for internal reasons.
+     */
+    virtual void focusInEvent (QFocusEvent *e)
+    {
+        receivedFocus();
+        QTextView::focusInEvent(e);
+    }
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tothread.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tothread.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tothread.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,383 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tomain.h"
+#include "tothread.h"
+
+#include <stdio.h>
+#include <errno.h>
+
+#include <qapplication.h>
+#include <qstring.h>
+
+#ifdef QT_THREAD_SUPPORT
+
+
+void toSemaphore::up(void)
+{
+    Mutex.lock();
+    Value++;
+    if (Value > 0)
+        Condition.wakeOne();
+    Mutex.unlock();
+}
+
+void toSemaphore::down(void)
+{
+    Mutex.lock();
+    while (Value <= 0)
+    {
+        Condition.wait(&Mutex);
+    }
+    Value--;
+    Mutex.unlock();
+}
+
+int toSemaphore::getValue(void)
+{
+    Mutex.lock();
+    int val = Value;
+    Mutex.unlock();
+    return val;
+}
+
+#else
+
+#define SEM_ASSERT(x) if((x)!=0) toStatusMessage(\
+qApp->translate("toSemaphore","The semaphore function \"%1\" failed").arg(QString::fromLatin1( #x )));
+
+void toSemaphore::init(int ival)
+{
+    SEM_ASSERT(sem_init(&Semaphore, 0, ival));
+}
+
+toSemaphore::toSemaphore()
+{
+    init(0);
+}
+
+
+toSemaphore::toSemaphore(int i)
+{
+    init(i);
+}
+
+toSemaphore::~toSemaphore()
+{
+    SEM_ASSERT(sem_destroy(&Semaphore));
+}
+
+void toSemaphore::up()
+{
+    SEM_ASSERT(sem_post(&Semaphore));
+}
+
+void toSemaphore::down()
+{
+    SEM_ASSERT(sem_wait(&Semaphore));
+}
+
+int toSemaphore::getValue()
+{
+    int r;
+    SEM_ASSERT(sem_getvalue(&Semaphore, &r));
+    return r;
+}
+
+#endif
+
+#ifndef WIN32
+
+#include <time.h>
+
+pthread_t toThread::MainThread = pthread_self();
+toThread *toThread::DeleteThread;
+toLock *toThread::Lock;
+
+#define MUTEX_ASSERT(x) if((x)!=0) toStatusMessage(\
+qApp->translate("toLock","The mutex function \"%1\" failed").arg(QString::fromLatin1( #x )));
+
+toLock::toLock(void)
+{
+    MUTEX_ASSERT(pthread_mutex_init(&Mutex, NULL));
+}
+
+toLock::~toLock()
+{
+    MUTEX_ASSERT(pthread_mutex_destroy(&Mutex));
+}
+
+void toLock::lock ()
+{
+    MUTEX_ASSERT(pthread_mutex_lock(&Mutex));
+}
+
+void toLock::unlock()
+{
+    MUTEX_ASSERT(pthread_mutex_unlock(&Mutex));
+}
+
+#define THREAD_ASSERT(x) if((x)!=0) { \
+  throw (qApp->translate("toThread","Thread function \"%1\" failed.").arg(QString::fromLatin1( #x ))); }
+
+void toThread::initAttr()
+{
+    //create the thread detached, so everything is cleaned up
+    //after it's finished.
+    try
+    {
+        THREAD_ASSERT(pthread_attr_init(&ThreadAttr));
+        THREAD_ASSERT(pthread_attr_setdetachstate(&ThreadAttr,
+                      PTHREAD_CREATE_DETACHED));
+    }
+    TOCATCH
+}
+
+toThread::toThread(toTask *t)
+        : Task(t)
+{
+    if (!Lock)
+        Lock = new toLock;
+
+    initAttr();
+}
+
+toThread::~toThread()
+{
+    THREAD_ASSERT(pthread_attr_destroy(&ThreadAttr));
+}
+
+void toThread::start()
+{
+    if (pthread_create(&(Thread),
+                       &(ThreadAttr),
+                       toThreadStartWrapper,
+                       (void *)this) == 0)
+        StartSemaphore.down();
+    else
+        throw qApp->translate("toThread", "Thread function \"%1\" failed.").arg("toThread::start()");
+}
+
+void toThread::startAsync()
+{
+    THREAD_ASSERT(pthread_create(&(Thread),
+                                 &(ThreadAttr),
+                                 toThreadStartWrapper,
+                                 (void *)this));
+}
+
+void *toThreadStartWrapper(void *t)
+{
+    toThread *thread = (toThread*)t;
+    //tell whoever called this->start that we're running
+    sigset_t Sigs;
+    sigfillset(&Sigs);
+#ifndef TO_NO_PTHREADSIGMASK
+
+    sigdelset(&Sigs, SIGHUP);
+    // I hope this signal will cancel subqueries
+    sigdelset(&Sigs, SIGQUIT);
+    sigdelset(&Sigs, SIGALRM);
+    sigdelset(&Sigs, SIGTERM);
+    sigdelset(&Sigs, SIGCHLD);
+    sigdelset(&Sigs, SIGWINCH);
+    sigdelset(&Sigs, SIGSEGV);
+    sigdelset(&Sigs, SIGPIPE);
+    sigdelset(&Sigs, SIGUSR1);
+    pthread_sigmask(SIG_BLOCK, &Sigs, NULL);
+    sigemptyset(&Sigs);
+    sigaddset(&Sigs, SIGINT);
+    pthread_sigmask(SIG_UNBLOCK, &Sigs, NULL);
+#endif
+
+    try
+    {
+        thread->StartSemaphore.up();
+        thread->Task->run();
+    }
+    catch (const QString &exc)
+    {
+        fprintf(stderr, "Unhandled exception in thread:\n%s\n", (const char *)exc);
+    }
+    catch (...)
+    {
+        fprintf(stderr, "Unhandled exception in thread:\nUnknown type\n");
+    }
+    delete thread->Task;
+    toThread::Lock->lock ()
+    ;
+    if (toThread::DeleteThread)
+        delete toThread::DeleteThread;
+    toThread::DeleteThread = thread;
+    toThread::Lock->unlock();
+    return NULL;
+}
+
+bool toThread::mainThread(void)
+{
+    return pthread_equal(MainThread, pthread_self());
+}
+
+#ifdef QT_THREAD_SUPPORT
+class toThreadWrapper : public QThread
+{
+public:
+    static void msleep(int num)
+    {
+        QThread::msleep(num);
+    }
+};
+
+#endif
+
+void toThread::msleep(int msec)
+{
+#ifdef QT_THREAD_SUPPORT
+    toThreadWrapper::msleep(msec);
+#else
+
+    struct timespec req;
+    req.tv_sec = msec / 1000;
+    req.tv_nsec = (msec % 1000) * 1000000;
+    nanosleep(&req, &req);
+#endif
+}
+
+#else
+
+std::list<toThread *> *toThread::Threads;
+toLock *toThread::Lock;
+int toThread::LastID = 0;
+__declspec( thread ) int toThread::ThreadID = 0;
+int toThread::MainThread = -1;
+
+bool toThread::mainThread(void)
+{
+    return MainThread == ThreadID;
+}
+
+toThread::toThread(toTask *task)
+        : Thread(task)
+{
+    if (!Threads)
+        Threads = new std::list<toThread *>;
+    if (!Lock)
+        Lock = new toLock;
+}
+
+toThread::~toThread()
+{}
+
+void toThread::start(void)
+{
+    Thread.start();
+    Thread.StartSemaphore.down();
+    Lock->lock ()
+    ;
+    Threads->insert(Threads->end(), this);
+    Lock->unlock();
+}
+
+void toThread::startAsync(void)
+{
+    Thread.start();
+    Lock->lock ()
+    ;
+    Threads->insert(Threads->end(), this);
+    Lock->unlock();
+}
+
+void toThread::msleep(int msec)
+{
+    taskRunner::msleep(msec);
+}
+
+toThread::taskRunner::taskRunner(toTask *task)
+        : Task(task)
+{}
+
+void toThread::taskRunner::run(void)
+{
+    try
+    {
+        Lock->lock ()
+        ;
+        StartSemaphore.up();
+        toThread::LastID++;
+        toThread::ThreadID = LastID;
+        if (toThread::MainThread==-1)
+          toThread::MainThread=LastID;
+        Lock->unlock();
+        Task->run();
+        Lock->lock ()
+        ;
+        delete Task;
+        Task = NULL;
+        Lock->unlock();
+    }
+    catch (const QString &exc)
+    {
+        fprintf(stderr, "Unhandled exception in thread:\n%s\n", (const char *)exc);
+    }
+    catch (...)
+    {
+        fprintf(stderr, "Unhandled exception in thread:\nUnknown type\n");
+    }
+
+
+    // This is a cludge to clean up finnished threads, there won't be many hanging at least
+
+    Lock->lock ()
+    ;
+    for (std::list<toThread *>::iterator i = toThread::Threads->begin();
+            i != toThread::Threads->end();)
+    {
+        if ((*i)->Thread.finished())
+        {
+            delete (*i);
+            Threads->erase(i);
+            i = Threads->begin();
+        }
+        else
+            i++;
+    }
+    Lock->unlock();
+}
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/tothread.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tothread.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tothread.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,305 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOTHREAD_H
+#define TOTHREAD_H
+
+#include "config.h"
+
+#include <qthread.h>
+
+/** This is an abstract class that defines something that is to be performed by a
+ * thread.
+ */
+class toTask
+{
+public:
+    virtual ~toTask()
+    { }
+    /** This member is called when the class is started.
+     */
+    virtual void run(void) = 0;
+};
+
+#ifndef QT_THREAD_SUPPORT
+#include <semaphore.h>
+
+class toSemaphore
+{
+private:
+    sem_t Semaphore;
+    void init(int val);
+
+    toSemaphore(const toSemaphore &);
+public:
+    toSemaphore();
+    toSemaphore(int val);
+    ~toSemaphore();
+
+    void up();
+    void down();
+    int getValue();
+};
+
+#else
+
+
+/** Encapsulation of pthread semaphores. A semaphore can be raise to any value
+* but will wait till raised above zero when lowered below 0. Can also be implemented
+* without pthreads using Qt multithreaded primitives. Observe that these function
+* different than Qt semaphores.
+*/
+
+class toSemaphore
+{
+private:
+    QMutex Mutex;
+    QWaitCondition Condition;
+
+    int Value;
+public:
+    /** Create semaphore
+    */
+    toSemaphore()
+            : Condition()
+    {
+        Value = 0;
+    }
+    /** Unimplemented copy constructor.
+    */
+    toSemaphore(const toSemaphore &);
+    /** Create semaphore
+    * @param val Value of new semaphore.
+    */
+    toSemaphore(int val)
+            : Condition()
+    {
+        Value = val;
+    }
+
+    /** Increase semaphore value by 1.
+    */
+    void up();
+    /** Decrease semaphore value by 1, wait for it to never go below 0.
+    */
+    void down();
+    /** Get current semaphore value.
+    */
+    int getValue();
+};
+
+#endif
+
+#include <list>
+
+#ifdef WIN32
+
+class toLock
+{
+private:
+    QMutex Mutex;
+public:
+    toLock(void)
+            : Mutex(false)
+    { }
+    toLock(const toLock &);
+
+    void lock (void)
+    {
+        Mutex.lock();
+    }
+    void unlock(void)
+    {
+        Mutex.unlock();
+    }
+};
+
+void *toThreadStartWrapper(void*);
+
+class toThread
+{
+private:
+    /** Not part of the API.
+     */
+
+class taskRunner : public QThread
+    {
+    public:
+        toSemaphore StartSemaphore;
+        toTask *Task;
+        taskRunner(toTask *);
+        virtual void run(void);
+        friend class toThread;
+    }
+    Thread;
+    static std::list<toThread *> *Threads;
+    static toLock *Lock;
+    static int LastID;
+    static __declspec( thread ) int ThreadID;
+    static int MainThread;
+
+    toThread(const toThread &);
+public:
+    toThread(toTask *);
+    ~toThread();
+
+    void start(void);
+    void startAsync(void);
+    static void msleep(int msec);
+    static bool mainThread(void);
+    friend class taskRunner;
+};
+
+#else
+#include <pthread.h>
+#include <signal.h>
+#include <time.h>
+
+/** A wrapper around the pthread mutexfunctions. A lock can only be locked
+*  by one thread at a time and is the basis of most thread synchronisation.
+*/
+
+class toLock
+{
+private:
+    /** Actual pthread mutex of class.
+    */
+    pthread_mutex_t Mutex;
+    toLock(const toLock &);
+public:
+    /** Create lock
+    */
+    toLock(void);
+    ~toLock();
+
+    /** Lock this lock.
+    */
+    void lock (void)
+        ;
+    /** Unlock this lock.
+    */
+    void unlock(void);
+};
+
+/** Used to create new threads of execution. When a thread exits it will delete the
+* thread and task objects so the calling thread must never delete a started thread.
+*/
+
+void *toThreadStartWrapper(void*);
+
+class toThread
+{
+private:
+    static toThread *DeleteThread;
+    static toLock *Lock;
+    /** PThread identifier.
+    */
+    pthread_t Thread;
+    /** Thread attributes.
+    */
+    pthread_attr_t ThreadAttr;
+    /** Task to run in new thread.
+    */
+    toTask *Task;
+    /** Semaphore that is raised when new thread has started running.
+    */
+    toSemaphore StartSemaphore;
+    /** Initialise thread attributes.
+    */
+    void initAttr(void);
+    /** Called when thread is started to execute task. Pointer to @ref toThread
+    * is passed as parameter.
+    */
+    friend void *toThreadStartWrapper(void*);
+    /** Main thread id
+    */
+    static pthread_t MainThread;
+
+    toThread(const toThread &);
+public:
+    /** Create thread.
+    * @param task Task to run.
+    */
+    toThread(toTask *task);
+    ~toThread();
+
+    /** Start thread and wait for other thread to start running.
+    */
+    void start(void);
+    /** Start thread and continue executing this thread until normal scheduling
+    * handles over execution to child thread.
+    */
+    void startAsync(void);
+    /** Sleep in milliseconds.
+    */
+    static void msleep(int msec);
+    /** Returns true if this is the main thread.
+    */
+    static bool mainThread(void);
+};
+
+#endif
+
+/** This is a convenience class that holds a lock for the duration of the scope
+ * of the object. It is very convenient to use if exceptions can be thrown, simply
+ * declare an auto @ref toLocker to hold the lock. If any exception is thrown the
+ * locker will be deallocated and the lock released.
+ */
+
+class toLocker
+{
+private:
+    /** Lock held.
+     */
+    toLock &Lock;
+    toLocker(const toLocker &);
+public:
+    /** Create locker.
+     * @param lock Lock to hold.
+     */
+    toLocker(toLock &lock )
+            : Lock(lock )
+    {
+        Lock.lock();
+    }
+    ~toLocker()
+    {
+        Lock.unlock();
+    }
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/totimer.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totimer.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totimer.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,19 @@
+//
+// C++ Implementation: totimer
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+#include "totimer.h"
+
+toTimer::toTimer(QObject *parent, const char * name): QTimer(parent, name)
+{ }
+
+int toTimer::start(int msec, bool sshot)
+{
+    LastTimer = msec;
+    return QTimer::start(msec, sshot);
+}
+int toTimer::lastTimer(void)
+{
+    return LastTimer;
+}

Added: kde-extras/tora/branches/upstream/current/src/totimer.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totimer.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totimer.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,39 @@
+//
+// C++ Interface: toTimer
+//
+// Description: 
+// A timer descendant which also keep track of the last timer setting sent to it.
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+
+#ifndef TOTIMER_H
+#define TOTIMER_H
+
+#include <qtimer.h>
+
+class toTimer : public QTimer
+{
+    int LastTimer;
+
+public:
+
+    /** Create timer.
+     * @param parent Parent object of timer.
+     * @param name Name of timer.
+     */
+    toTimer(QObject *parent = 0, const char * name = 0);
+
+    /** Start timer.
+     * @param msec Milliseconds to timeout.
+     * @param sshot Set to true if only timeout once.
+     */
+    int start(int msec, bool sshot = false);
+
+    /** Get last timer start timeout.
+     * @return Last timeout in millisecond.
+     */
+    int lastTimer(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/totool.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totool.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totool.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,320 @@
+//
+// C++ Implementation: toTool, toToolWidget, toConnectionWidget
+//
+// Copyright: See COPYING file that comes with this distribution
+//
+
+#include "utils.h"
+
+#include "tobackground.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "totool.h"
+
+#ifndef WIN32
+#include <unistd.h>
+#endif
+
+#include <qapplication.h>
+#include <qfile.h>
+#include <qpixmap.h>
+#include <qregexp.h>
+#include <qstring.h>
+#include <qtimer.h>
+#include <qworkspace.h>
+
+#ifdef WIN32
+#  include "windows/cregistry.h"
+#endif
+
+#include "totool.moc"
+
+// A little magic to get lrefresh to work and get a check on qApp
+
+#undef QT_TRANSLATE_NOOP
+#define QT_TRANSLATE_NOOP(x,y) QTRANS(x,y)
+
+toConnectionWidget::toConnectionWidget(toConnection &conn, QWidget *widget)
+        : Connection(&conn), Widget(widget)
+{
+    Connection->addWidget(Widget);
+}
+
+void toConnectionWidget::setConnection(toConnection &conn)
+{
+    if (Connection)
+        Connection->delWidget(Widget);
+    Connection = &conn;
+    Connection->addWidget(Widget);
+}
+
+toConnectionWidget::toConnectionWidget(QWidget *widget)
+        : Widget(widget)
+{
+    Connection = NULL;
+}
+
+toConnection &toConnectionWidget::connection()
+{
+    if (Connection)
+        return *Connection;
+    QWidget *widget = Widget;
+    if (!widget)
+        throw qApp->translate("toConnectionWidget", "toConnectionWidget not inherited with a QWidget");
+    return toCurrentConnection(widget->parentWidget());
+}
+
+toToolWidget::toToolWidget(toTool &tool, const QString &ctx, QWidget *parent, toConnection &conn, const char *name)
+        : QVBox(parent, name, WDestructiveClose), toHelpContext(ctx), toConnectionWidget(conn, this), Tool(tool)
+{
+    Timer = NULL;
+
+    if (parent)
+    {
+        // Voodoo for making connection changing cascade to sub tools.
+        try
+        {
+            toToolWidget *tool = toCurrentTool(parent);
+            if (tool)
+                connect(tool, SIGNAL(connectionChange()), this, SLOT(parentConnection()));
+        }
+        catch (...)
+        {}
+    }
+}
+
+toConnectionWidget::~toConnectionWidget()
+{
+    if (Connection)
+        Connection->delWidget(Widget);
+}
+
+void toToolWidget::parentConnection(void)
+{
+    try
+    {
+        setConnection(toCurrentConnection(parentWidget()));
+    }
+    TOCATCH
+}
+
+toToolWidget::~toToolWidget()
+{
+    toMainWidget()->toolWidgetRemoved(this);
+}
+
+void toToolWidget::setConnection(toConnection &conn)
+{
+    bool connCap = false;
+    QString name = connection().description();
+    QString capt = caption();
+    if (capt.startsWith(name))
+    {
+        connCap = true;
+        capt = capt.mid(name.length());
+    }
+    toConnectionWidget::setConnection(conn);
+    if (connCap)
+    {
+        capt.prepend(connection().description());
+        setCaption(capt);
+    }
+    emit connectionChange();
+}
+
+toTimer *toToolWidget::timer(void)
+{
+    if (!Timer)
+        Timer = new toTimer(this);
+    return Timer;
+}
+
+void toToolWidget::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    QWidget *par = parentWidget();
+    if (!par)
+        par = this;
+    if (isMaximized() || par->width() >= toMainWidget()->workspace()->width())
+        data[prefix + ":State"] = QString::fromLatin1("Maximized");
+    else if (isMinimized())
+        data[prefix + ":State"] = QString::fromLatin1("Minimized");
+
+    data[prefix + ":X"] = QString::number(par->x());
+    data[prefix + ":Y"] = QString::number(par->y());
+    data[prefix + ":Width"] = QString::number(par->width());
+    data[prefix + ":Height"] = QString::number(par->height());
+}
+
+void toToolWidget::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    QWidget *par = parentWidget();
+    if (!par)
+        par = this;
+    if (data[prefix + ":State"] == QString::fromLatin1("Maximized"))
+    {
+        par->showMaximized();
+        showMaximized();
+    }
+    else if (data[prefix + ":State"] == QString::fromLatin1("Minimized"))
+    {
+        par->showMinimized();
+        showMinimized();
+    }
+    else
+    {
+        par->showNormal();
+        par->setGeometry(data[prefix + ":X"].toInt(),
+                         data[prefix + ":Y"].toInt(),
+                         data[prefix + ":Width"].toInt(),
+                         data[prefix + ":Height"].toInt());
+
+    }
+}
+
+std::map<QCString, toTool *> *toTool::Tools;
+// std::map<QCString, QString> *toTool::Configuration;
+
+
+const char **toTool::pictureXPM(void)
+{
+    return (const char **) NULL;  // compiler warning
+}
+
+toTool::toTool(int priority, const char *name)
+        : Name(name), Priority(priority),ButtonPicture(0)
+{
+    if (!Tools)
+        Tools = new std::map<QCString, toTool *>;
+    Key.sprintf("%05d%s", priority, name);
+    (*Tools)[Key] = this;    
+}
+
+toTool::~toTool()
+{
+    Tools->erase(Key);
+    delete ButtonPicture;
+}
+
+const QPixmap *toTool::toolbarImage()
+{
+    if (!ButtonPicture)
+    {
+        const char **picture = pictureXPM();
+        if (picture)
+            ButtonPicture = new QPixmap(picture);
+    }
+    return ButtonPicture;
+}
+
+void toTool::createWindow(void)
+{
+    toMain *main = (toMain *)qApp->mainWidget();
+    try
+    {
+        if (!canHandle(main->currentConnection()))
+            throw QString("The tool %1 doesn't support the current database").arg(name());
+        QWidget *newWin = toolWindow(main->workspace(), main->currentConnection());
+
+        if (newWin)
+        {
+            const QPixmap *icon = toolbarImage();
+            if (icon)
+                newWin->setIcon(*icon);
+            toToolWidget *tool = dynamic_cast<toToolWidget *>(newWin);
+            if (tool)
+                toToolCaption(tool, name());
+
+            newWin->show();
+            newWin->raise();
+            newWin->setFocus();
+
+            main->windowsMenu();
+
+            if (tool)
+                main->toolWidgetAdded(tool);
+
+            // Maximize window if only window
+            {
+                bool max = true;
+#if QT_VERSION < 0x030200
+
+                for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList().count();i++)
+                {
+                    QWidget *widget = toMainWidget()->workspace()->windowList().at(i);
+#else
+
+                for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).count();i++)
+                {
+                    QWidget *widget = toMainWidget()->workspace()->windowList(QWorkspace::CreationOrder).at(i);
+#endif
+
+                    if (widget && widget != newWin && !widget->isHidden())
+                        max = false;
+                }
+                if (max)
+                    newWin->showMaximized();
+            }
+
+#if QT_VERSION < 0x030100
+            // This is a really ugly workaround for a Qt layout bug
+            QWidget *tmp = NULL;
+            QWidget *tmp2 = NULL;
+            for (unsigned int i = 0;i < toMainWidget()->workspace()->windowList().count();i++)
+            {
+                QWidget *widget = toMainWidget()->workspace()->windowList().at(i);
+                if (newWin != widget)
+                    tmp2 = widget;
+                else
+                    tmp = newWin;
+                if (tmp2 && tmp)
+                    break;
+            }
+            if (tmp2 && tmp)
+            {
+                tmp2->setFocus();
+                tmp->setFocus();
+            }
+#endif
+        }
+    }
+    TOCATCH
+}
+
+
+bool toTool::canHandle(toConnection &conn)
+{
+    return (toIsOracle(conn));
+}
+
+void toTool::customSetup(int)
+{}
+
+QWidget *toTool::configurationTab(QWidget *)
+{
+    return NULL;
+}
+
+toTool *toTool::tool(const QCString &key)
+{
+    if (!Tools)
+        Tools = new std::map<QCString, toTool *>;
+    std::map<QCString, toTool *>::iterator i = Tools->find(key);
+    if (i == Tools->end())
+        return NULL;
+
+    return (*i).second;
+}
+
+void toTool::about(QWidget *)
+{}
+
+ const QString& toTool::config(const QCString &tag,const QCString &def)
+ {
+     return toConfigurationSingle::Instance().config(tag, def, Name);
+ }
+
+  void toTool::setConfig(const QCString &tag,const QString &value)
+  {
+      toConfigurationSingle::Instance().setConfig(tag, value, Name);
+  }

Added: kde-extras/tora/branches/upstream/current/src/totool.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totool.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totool.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,388 @@
+ /*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOTOOL_H
+#define TOTOOL_H
+
+#include "config.h"
+#include "toconfiguration.h"
+
+#include <map>
+
+#include <qobject.h>
+#include <qstring.h>
+#include <qvbox.h>
+
+class toConnection;
+class toTimer;
+
+/**
+ * Abstract baseclass for tools.
+ *
+ * This class is the baseclass of all classes defining tools. It
+ * contains functions for defining the priority and name of the tool,
+ * as well as virtual functions to define it's place in the user
+ * interface. Further it contains methods to access configuration
+ * settings.
+ *
+ * To use this class you create a child which is then instantiated once
+ * which inserts that tool in the global tool map (See @ref tools). You
+ * should never delete a tool unless on exit. Usually tools are instantiated
+ * statically in the global scope.
+ */
+
+class toTool : public QObject
+{
+    Q_OBJECT
+private:
+    /**
+     * Name of the tool.
+     */
+    QCString Name;
+    /**
+     * Key of the tool, this is used for sorting.
+     */
+    QCString Key;
+    /**
+     * Priority, used to determine in which order the tools should be listed.
+     */
+    int Priority;
+    /**
+     * A map of @ref Key to tools. Used to keep track of the different tools
+     * available.
+     */
+    static std::map<QCString, toTool *> *Tools;
+    /**
+     * Contain the pixmap of this tool if any. Used for the toolbar and menu entries.
+     */
+    QPixmap *ButtonPicture;
+
+
+protected:
+    /**
+     * Should return the xpm used to create the @ref ButtonPicture.
+     */
+    virtual const char **pictureXPM(void);
+public:
+    /**
+     * Get the name.
+     *
+     * @return Name of tool.
+     */
+    QCString name() const
+    {
+        return Name;
+    }
+    /**
+     * Get the name.
+     *
+     * @return Name of tool.
+     */
+    QCString key() const
+    {
+        return Key;
+    }
+    /**
+     * Get the priority.
+     *
+     * @return Priority of tool.
+     */
+    int priority() const
+    {
+        return Priority;
+    }
+    /**
+     * This should never be called, but if it is. Erases the tool from the list of
+     * available tools. WARNING: It will not remove any of it's open tools.
+     */
+    ~toTool();
+
+    /**
+     * Create a tool. Remember that usually the main window is not created here.
+     *
+     * @param priority Priority of the created tool.
+     * @param name Name of tool.
+     */
+    toTool(int priority, const char *name);
+    /**
+     * Get the image to display in the toolbar.
+     *
+     * @return Pointer to image in toolbar or NULL if no image should be displayed.
+     */
+    virtual const QPixmap *toolbarImage();
+    /**
+     * Get the name of the menuitem to be displayed in the menu.
+     *
+     * @return A string containing the name of the menuentry or NULL if no menuentry should
+     *         be created.
+     */
+    virtual const char *menuItem()
+    {
+        return NULL;
+    }
+    /**
+     * Get toolbar tip of the toolbar button. Defaults to same as @ref menuItem.
+     *
+     * @return Toolbar tip string.
+     */
+    virtual const char *toolbarTip()
+    {
+        return menuItem();
+    }
+
+    /** Check if the tool can handle a specific connection. Default is to only handle
+     * connections from the provider Oracle.
+     * @return True if connection can be handled.
+     */
+    virtual bool canHandle(toConnection &conn);
+    /**
+     * This function is called as a last step after the main widget is created. It could
+     * be used to insert the tool pretty much anywhere in the user interface if the toolmenu,
+     * toolbar is not sufficient.
+     *
+     * @param toolid The tool menu id that should be used if it inserts a custom menu entry.
+     */
+    virtual void customSetup(int toolid);
+    /**
+     * Create a new tool window.
+     *
+     * @param parent Parent window, which is the worksheet of the main window.
+     * @param connection The database connection that this tool should operate on.
+     */
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection) = 0;
+    /**
+     * Create and return configuration tab for this tool. The returned widget should also
+     * be a childclass of @ref toSettingTab.
+     *
+     * @return A pointer to the widget containing the setup tab for this tool or NULL of
+     * no settings are available.
+     */
+    virtual QWidget *configurationTab(QWidget *parent);
+
+    /** Display an about dialog for this tool.
+     * @param parent The parent widget of the about dialog.
+     */
+    virtual void about(QWidget *parent);
+    /** Indicate whether or not this tool has an about dialog.
+     */
+    virtual bool hasAbout(void)
+    {
+        return false;
+    }
+
+    /**
+     * Get access to the map of tools. Don't modify it. Observe that the index string is not
+     * the name of the tool but an internal key used to get tools sorted in the correct
+     * priority order.
+     *
+     * @see Tools
+     * @return A reference to the tool map.
+     */
+    static std::map<QCString, toTool *> &tools(void)
+    {
+        if (!Tools)
+            Tools = new std::map<QCString, toTool *>;
+        return *Tools;
+    }
+    /**
+     * Get a pointer to the tool with a specified key.
+     *
+     * @see Tools
+     * @return A pointer to the tool or NULL if tool doesn't exist.
+     */
+    static toTool *tool(const QCString &key);
+
+  /**
+   * Get tool specific settings.
+   *
+   * Setting names are hierachical separated by ':' instead of '/' usually used
+   * in filenames. As an example all settings for the tool 'Example' would be
+   * under the 'Example:{settingname}' name.
+   *
+   * @param tag The name of the configuration setting.
+   * @param def Contents of this setting.
+   */
+  const QString &config(const QCString &tag,const QCString &def);
+
+  /**
+   * Change toolspecific setting. Depending on the implementation this can change the
+   * contents on disk or not.
+   *
+   * Setting names are hierachical separated by ':' instead of '/' usually used
+   * in filenames. As an example all settings for the tool 'Example' would be
+   * under the 'Example:{settingname}' name.
+   *
+   * @param tag The name of the configuration setting.
+   * @param def Default value of the setting, if it is not available.
+   */
+  void setConfig(const QCString &tag,const QString &value);
+
+  virtual void closeWindow(toConnection &connection) = 0;
+
+public slots:
+    /**
+     * Create a window of the current tool. This function sets up a toolwindow for
+     * this tool. It calls the @ref toolWindow function to get widget and sets it
+     * up properly.
+     */
+    void createWindow(void);
+
+
+};
+
+#include "tohelp.h"
+
+/**
+ * Abstract baseclass for widgets defining tool settings.
+ */
+
+class toSettingTab : public toHelpContext
+{
+public:
+    /**
+     * Default constructor.
+     * @param ctx Help context for this setting tab.
+     */
+    toSettingTab(const QString &ctx)
+            : toHelpContext(ctx)
+    { }
+    /**
+     * This function is called to save the contents of the widget when
+     * a user has pressed the ok button of the dialog. It should simply
+     * save the values in the dialog to the appropriate configuration
+     * entry using the @ref toTool::setConfig function.
+     */
+    virtual void saveSetting(void) = 0;
+};
+
+/** This class is used to hold connections for @ref toResult classes.
+ * Must be multiply inherited by a widget otherwise it will go kaboom.
+ * It will dynamic cast itself to a QWidget from time to time so if that
+ * doesn't resolve correctly it will not work.
+ */
+class toConnectionWidget
+{
+    toConnection *Connection;
+    QWidget *Widget;
+public:
+    /** Constructor with the connection it should be set to initially.
+     */
+    toConnectionWidget(toConnection &conn, QWidget *widget);
+    /** Constructor without a connection. Will inherit the connection from a parent connection widget.
+     */
+    toConnectionWidget(QWidget *widget);
+    /** Destructor.
+     */
+    virtual ~toConnectionWidget();
+    /** Change connection of the widget.
+     */
+    virtual void setConnection(toConnection &conn);
+    /** Get the connection it is pointed to.
+     */
+    virtual toConnection &connection();
+};
+
+/** Simple baseclass for widgets defining the main tool widget. It is in
+ * no way mandatory and all it does is register the widget in the connetion.
+ */
+class toToolWidget : public QVBox, public toHelpContext, public toConnectionWidget
+{
+    Q_OBJECT
+    toTimer *Timer;
+    toTool &Tool;
+private slots:
+    void parentConnection(void);
+signals:
+    /** Emitted when the connection is changed.
+     */
+    void connectionChange(void);
+public:
+    /** Create widget.
+     * @param ctx Help context for this tool.
+     * @param parent Parent widget.
+     * @param conn Connection of widget.
+     * @param name Name of widget.
+     */
+    toToolWidget(toTool &tool,
+                 const QString &ctx,
+                 QWidget *parent,
+                 toConnection &conn,
+                 const char *name = NULL);
+    ~toToolWidget();
+    /** Get the current connection.
+     * @return Reference to connection.
+     */
+    toConnection &connection()
+    {
+        return toConnectionWidget::connection();
+    }
+    /** Get the tool for this tool widget.
+     * @return Reference to a tool object.
+     */
+    toTool &tool(void)
+    {
+        return Tool;
+    }
+    /** Check if this tool can handle a specific connection.
+     * @param provider Name of connection.
+     * @return True if connection is handled.
+     */
+    virtual bool canHandle(toConnection &conn)
+    {
+        return Tool.canHandle(conn);
+    }
+    /** Change connection of tool.
+     */
+    void setConnection(toConnection &conn);
+    /** Get timer of tool. Used by some results to get update time.
+     * @return Pointer to a timer object.
+     */
+    toTimer *timer(void);
+
+    /** Export data to a map.
+     * @param data A map that can be used to recreate the data of a chart.
+     * @param prefix Prefix to add to the map.
+     */
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    /** Import data
+     * @param data Data to read from a map.
+     * @param prefix Prefix to read data from.
+     */
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/totoolsettingui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totoolsettingui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totoolsettingui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,99 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'totoolsettingui.ui'
+**
+** Created: Tue Sep 18 08:21:30 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "totoolsettingui.h"
+
+#include <qvariant.h>
+#include <qheader.h>
+#include <qlistview.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toToolSettingUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toToolSettingUI::toToolSettingUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toToolSettingUI" );
+    toToolSettingUILayout = new QGridLayout( this, 1, 1, 0, 6, "toToolSettingUILayout"); 
+
+    Enabled = new QListView( this, "Enabled" );
+    Enabled->addColumn( tr( "Tool" ) );
+    Enabled->setSelectionMode( QListView::Multi );
+
+    toToolSettingUILayout->addWidget( Enabled, 2, 0 );
+
+    DefaultTool = new QComboBox( FALSE, this, "DefaultTool" );
+
+    toToolSettingUILayout->addWidget( DefaultTool, 4, 0 );
+
+    TextLabel2 = new QLabel( this, "TextLabel2" );
+
+    toToolSettingUILayout->addWidget( TextLabel2, 3, 0 );
+
+    TextLabel1 = new QLabel( this, "TextLabel1" );
+
+    toToolSettingUILayout->addWidget( TextLabel1, 1, 0 );
+
+    TextLabel3 = new QLabel( this, "TextLabel3" );
+    QFont TextLabel3_font(  TextLabel3->font() );
+    TextLabel3_font.setBold( TRUE );
+    TextLabel3->setFont( TextLabel3_font ); 
+    TextLabel3->setAlignment( int( QLabel::AlignCenter ) );
+
+    toToolSettingUILayout->addWidget( TextLabel3, 0, 0 );
+    languageChange();
+    resize( QSize(592, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( Enabled, SIGNAL( selectionChanged() ), this, SLOT( changeEnable() ) );
+
+    // tab order
+    setTabOrder( Enabled, DefaultTool );
+
+    // buddies
+    TextLabel2->setBuddy( DefaultTool );
+    TextLabel1->setBuddy( Enabled );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toToolSettingUI::~toToolSettingUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toToolSettingUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    Enabled->header()->setLabel( 0, tr( "Tool" ) );
+    TextLabel2->setText( tr( "&Default tool" ) );
+    QToolTip::add( TextLabel2, tr( "Select the default tool to pop up when opening a new connection." ) );
+    TextLabel1->setText( tr( "&Enabled tools" ) );
+    QToolTip::add( TextLabel1, tr( "Select which tools should show up in the menu and toolbar." ) );
+    TextLabel3->setText( tr( "You must restart for any of these changes to have effect." ) );
+}
+
+void toToolSettingUI::changeEnable()
+{
+    qWarning( "toToolSettingUI::changeEnable(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/totoolsettingui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totoolsettingui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totoolsettingui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,50 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'totoolsettingui.ui'
+**
+** Created: Tue Sep 18 08:21:30 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOTOOLSETTINGUI_H
+#define TOTOOLSETTINGUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QListView;
+class QListViewItem;
+class QComboBox;
+class QLabel;
+
+class toToolSettingUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toToolSettingUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toToolSettingUI();
+
+    QListView* Enabled;
+    QComboBox* DefaultTool;
+    QLabel* TextLabel2;
+    QLabel* TextLabel1;
+    QLabel* TextLabel3;
+
+public slots:
+    virtual void changeEnable();
+
+protected:
+    QGridLayout* toToolSettingUILayout;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOTOOLSETTINGUI_H

Added: kde-extras/tora/branches/upstream/current/src/totoolsettingui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totoolsettingui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totoolsettingui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,143 @@
+<!DOCTYPE UI><UI>
+<class>toToolSettingUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toToolSettingUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>592</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <property>
+        <name>layoutMargin</name>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>0</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="2"  column="0" >
+            <class>QListView</class>
+            <column>
+                <property>
+                    <name>text</name>
+                    <string>Tool</string>
+                </property>
+                <property>
+                    <name>clickable</name>
+                    <bool>true</bool>
+                </property>
+                <property>
+                    <name>resizeable</name>
+                    <bool>true</bool>
+                </property>
+            </column>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Enabled</cstring>
+            </property>
+            <property stdset="1">
+                <name>selectionMode</name>
+                <enum>Multi</enum>
+            </property>
+        </widget>
+        <widget row="4"  column="0" >
+            <class>QComboBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>DefaultTool</cstring>
+            </property>
+        </widget>
+        <widget row="3"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel2</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Default tool</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>DefaultTool</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Select the default tool to pop up when opening a new connection.</string>
+            </property>
+        </widget>
+        <widget row="1"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel1</cstring>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>&amp;Enabled tools</string>
+            </property>
+            <property>
+                <name>buddy</name>
+                <cstring>Enabled</cstring>
+            </property>
+            <property>
+                <name>toolTip</name>
+                <string>Select which tools should show up in the menu and toolbar.</string>
+            </property>
+        </widget>
+        <widget row="0"  column="0" >
+            <class>QLabel</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>TextLabel3</cstring>
+            </property>
+            <property stdset="1">
+                <name>font</name>
+                <font>
+                    <bold>1</bold>
+                </font>
+            </property>
+            <property stdset="1">
+                <name>text</name>
+                <string>You must restart for any of these changes to have effect.</string>
+            </property>
+            <property stdset="1">
+                <name>alignment</name>
+                <set>AlignCenter</set>
+            </property>
+            <property>
+                <name>hAlign</name>
+            </property>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>Enabled</sender>
+        <signal>selectionChanged()</signal>
+        <receiver>toToolSettingUI</receiver>
+        <slot>changeEnable()</slot>
+    </connection>
+    <slot access="public">changeEnable()</slot>
+</connections>
+<tabstops>
+    <tabstop>Enabled</tabstop>
+    <tabstop>DefaultTool</tabstop>
+</tabstops>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/totuning.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totuning.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totuning.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,2117 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tomain.h"
+#include "tonoblockquery.h"
+#include "toresultbar.h"
+#include "toresultitem.h"
+#include "toresultline.h"
+#include "toresultlock.h"
+#include "toresultlong.h"
+#include "toresultparam.h"
+#include "toresultpie.h"
+#include "toresultstats.h"
+#include "toresultview.h"
+#include "tosql.h"
+#include "totool.h"
+#include "totuning.h"
+#include "totuningsettingui.h"
+#include "towaitevents.h"
+
+#ifdef TO_KDE
+#  include <kmenubar.h>
+#endif
+
+#include <time.h>
+#include <stdio.h>
+
+#include <qcombobox.h>
+#include <qgrid.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#if QT_VERSION > 0x030000
+#  include <qobjectlist.h>
+#else
+#  include <qobjcoll.h>
+#endif
+#include <qpainter.h>
+#include <qscrollview.h>
+#include <qsplitter.h>
+#include <qtabwidget.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qvbox.h>
+#include <qworkspace.h>
+
+#include "totuning.moc"
+#include "totuningoverviewui.moc"
+#include "totuningsettingui.moc"
+
+#include "icons/refresh.xpm"
+#include "icons/totuning.xpm"
+#include "icons/compile.xpm"
+
+#define CONF_OVERVIEW "Overview"
+#define CONF_FILEIO   "File I/O"
+#define CONF_WAITS    "Wait events"
+#define CONF_CHART    "chart"
+
+static std::list<QCString> TabList(void)
+{
+    std::list<QCString> ret;
+    ret.insert(ret.end(), CONF_OVERVIEW);
+    std::list<QCString> val = toSQL::range("toTuning:Charts");
+    QString last;
+    for (std::list<QCString>::iterator i = val.begin();i != val.end();i++)
+    {
+        QStringList parts = QStringList::split(QString::fromLatin1(":"), QString::fromLatin1(*i));
+        if (parts.count() == 3)
+        {
+            parts.append(parts[2]);
+            parts[2] = QString::fromLatin1("Charts");
+        }
+        if (last != parts[2])
+            ret.insert(ret.end(), parts[2].latin1());
+        last = parts[2];
+    }
+    ret.insert(ret.end(), CONF_WAITS);
+    ret.insert(ret.end(), CONF_FILEIO);
+    return ret;
+}
+
+class toTuningSetup : public toTuningSettingUI, public toSettingTab
+{
+    toTool *Tool;
+public:
+    toTuningSetup(toTool *tool, QWidget* parent = 0, const char* name = 0)
+            : toTuningSettingUI(parent, name), toSettingTab("tuning.html#preferences"), Tool(tool)
+    {
+        std::list<QCString> tabs = TabList();
+        for (std::list<QCString>::iterator i = tabs.begin();i != tabs.end();i++)
+        {
+            QListViewItem *item = new QListViewItem(EnabledTabs, QString::fromLatin1(*i));
+            if (!tool->config(*i, "").isEmpty())
+                item->setSelected(true);
+        }
+        EnabledTabs->setSorting(0);
+    }
+    virtual void saveSetting(void)
+    {
+        for (QListViewItem *item = EnabledTabs->firstChild();item;item = item->nextSibling())
+        {
+            if (item->isSelected() || Tool->config(item->text(0).latin1(), "Undefined") != "Undefined")
+                Tool->setConfig(item->text(0).latin1(), QString::fromLatin1((item->isSelected() ? "Yes" : "")));
+        }
+    }
+};
+
+class toTuningTool : public toTool
+{
+protected:
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(totuning_xpm);
+    }
+public:
+    toTuningTool()
+            : toTool(30, "Server Tuning")
+    { }
+    virtual const char *menuItem()
+    {
+        return "Server Tuning";
+    }
+    virtual QWidget *toolWindow(QWidget *parent, toConnection &connection)
+    {
+        return new toTuning(parent, connection);
+    }
+    virtual QWidget *configurationTab(QWidget *parent)
+    {
+        return new toTuningSetup(this, parent);
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toTuningTool TuningTool;
+
+static toSQL SQLDictionaryMiss("toTuning:Indicators:Important ratios:1DictionaryMiss",
+                               "select sum(getmisses)/sum(gets)*100,' %' from v$rowcache",
+                               "Data dictionary row cache miss ratio (%). < 10%-15%");
+
+static toSQL SQLImportantLibraryCache("toTuning:Indicators:Important ratios:2LibraryCache",
+                                      "select sum(reloads)/sum(pins)*100,' %' from v$librarycache",
+                                      "Library cache (Shared SQL) miss ratio (%). < 1%");
+
+static toSQL SQLDataCache("toTuning:Indicators:Important ratios:3DataCache",
+                          "SELECT (1-SUM(DECODE(statistic#,40,value,0))/SUM(DECODE(statistic#,38,value,39,value,0)))*100,' %'\n"
+                          "  FROM v$sysstat\n"
+                          " WHERE statistic# IN (38,39,40)",
+                          "Data buffer cache hit ratio (%). > 60% - 70%",
+                          "0800");
+
+static toSQL SQLDataCache9("toTuning:Indicators:Important ratios:3DataCache",
+                           "SELECT (1-SUM(DECODE(statistic#,42,value,0))/SUM(DECODE(statistic#,40,value,41,value,0)))*100,' %'\n"
+                           "  FROM v$sysstat\n"
+                           " WHERE statistic# IN (40,41,42)",
+                           "",
+                           "0900");
+
+static toSQL SQLDataCache7("toTuning:Indicators:Important ratios:3DataCache",
+                           "SELECT (1-SUM(DECODE(statistic#,39,value,0))/SUM(DECODE(statistic#,37,value,38,value,0)))*100,' %'\n"
+                           "  FROM v$sysstat\n"
+                           " WHERE statistic# IN (37,38,39)",
+                           "",
+                           "0703");
+
+static toSQL SQLLogRedo("toTuning:Indicators:Redo log contention:1LogSpace",
+                        "select value from v$sysstat where statistic# = 108",
+                        "Redo log space requests. Close to 0",
+                        "0800");
+
+static toSQL SQLLogRedo9("toTuning:Indicators:Redo log contention:1LogSpace",
+                         "select value from v$sysstat where statistic# = 122",
+                         "",
+                         "0900");
+
+static toSQL SQLLogRedo7("toTuning:Indicators:Redo log contention:1LogSpace",
+                         "select value from v$sysstat where statistic# = 94",
+                         "",
+                         "0703");
+
+static toSQL SQLSystemHeadUndo("toTuning:Indicators:RBS contention:1SystemHeadUndo",
+                               "SELECT count/blocks*100,' %'\n"
+                               "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'system undo header') a,\n"
+                               "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (38,39)) b",
+                               "System undo header waits (%). < 1%",
+                               "0800");
+
+static toSQL SQLSystemHeadUndo9("toTuning:Indicators:RBS contention:1SystemHeadUndo",
+                                "SELECT count/blocks*100,' %'\n"
+                                "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'system undo header') a,\n"
+                                "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (40,41)) b",
+                                "",
+                                "0900");
+
+static toSQL SQLSystemHeadUndo7("toTuning:Indicators:RBS contention:1SystemHeadUndo",
+                                "SELECT count/blocks*100,' %'\n"
+                                "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'system undo header') a,\n"
+                                "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (37,38)) b",
+                                "",
+                                "0703");
+
+static toSQL SQLSystemBlockUndo("toTuning:Indicators:RBS contention:2SystemBlockUndo",
+                                "SELECT count/blocks*100,' %'\n"
+                                "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'system undo block') a,\n"
+                                "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (38,39)) b",
+                                "System undo block waits (%). < 1%",
+                                "0800");
+
+static toSQL SQLSystemBlockUndo9("toTuning:Indicators:RBS contention:2SystemBlockUndo",
+                                 "SELECT count/blocks*100,' %'\n"
+                                 "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'system undo block') a,\n"
+                                 "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (40,41)) b",
+                                 "",
+                                 "0900");
+
+static toSQL SQLSystemBlockUndo7("toTuning:Indicators:RBS contention:2SystemBlockUndo",
+                                 "SELECT count/blocks*100,' %'\n"
+                                 "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'system undo block') a,\n"
+                                 "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (37,38)) b",
+                                 "",
+                                 "0703");
+
+static toSQL SQLHeadUndo("toTuning:Indicators:RBS contention:3HeadUndo",
+                         "SELECT count/blocks*100,' %'\n"
+                         "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'undo header') a,\n"
+                         "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (38,39)) b",
+                         "Undo head waits (%). < 1%",
+                         "0800");
+
+static toSQL SQLHeadUndo9("toTuning:Indicators:RBS contention:3HeadUndo",
+                          "SELECT count/blocks*100,' %'\n"
+                          "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'undo header') a,\n"
+                          "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (40,41)) b",
+                          "",
+                          "0900");
+
+static toSQL SQLHeadUndo7("toTuning:Indicators:RBS contention:3HeadUndo",
+                          "SELECT count/blocks*100,' %'\n"
+                          "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'undo header') a,\n"
+                          "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (37,38)) b",
+                          "",
+                          "0703");
+
+static toSQL SQLBlockUndo("toTuning:Indicators:RBS contention:4BlockUndo",
+                          "SELECT count/blocks*100,' %'\n"
+                          "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'undo block') a,\n"
+                          "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (38,39)) b",
+                          "Undo block waits (%). < 1%",
+                          "0800");
+
+static toSQL SQLBlockUndo9("toTuning:Indicators:RBS contention:4BlockUndo",
+                           "SELECT count/blocks*100,' %'\n"
+                           "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'undo block') a,\n"
+                           "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (40,41)) b",
+                           "",
+                           "0900");
+
+static toSQL SQLBlockUndo7("toTuning:Indicators:RBS contention:4BlockUndo",
+                           "SELECT count/blocks*100,' %'\n"
+                           "  FROM (SELECT MAX(count) count FROM v$waitstat WHERE class = 'undo block') a,\n"
+                           "       (SELECT SUM(value) blocks FROM v$sysstat WHERE statistic# IN (37,38)) b",
+                           "",
+                           "0703");
+
+static toSQL SQLTotalWaits("toTuning:Indicators:RBS contention:5TotalWaits",
+                           "select sum(waits)/sum(gets)*100,' %' from v$rollstat",
+                           "Total RBS waits (%). < 1%");
+
+static toSQL SQLBusyRate("toTuning:Indicators:MTS contention:1BusyRate",
+                         "SELECT NVL(SUM(busy)/(SUM(busy)+SUM(idle)),0)*100,' %' FROM v$dispatcher",
+                         "Busy rate for dispatchers (%). < 50%");
+
+static toSQL SQLDispQueue("toTuning:Indicators:MTS contention:2DispQueue",
+                          "SELECT DECODE(NVL(SUM(totalq),0),0, 'No responses', ROUND(SUM(wait)/SUM(totalq),3)) FROM v$queue WHERE type='DISPATCHER'",
+                          "Dispatcher response queues waits (1/100s).");
+
+static toSQL SQLServerQueue("toTuning:Indicators:MTS contention:3ServerQueue",
+                            "SELECT DECODE (NVL(SUM(totalq),0),0, 'No requests', ROUND(SUM(wait)/SUM(totalq),3)) FROM v$queue WHERE type='COMMON'",
+                            "Server request queue waits (1/100s).");
+
+static toSQL SQLOptions("toTuning:Options",
+                        "select parameter \"Parameter\",\n"
+                        "       decode(value,'TRUE','Enabled','Disabled') \"Enabled\"\n"
+                        "  from v$option order by parameter",
+                        "Display options available in database");
+
+static toSQL SQLLicense("toTuning:License",
+                        "select * from v$license",
+                        "Display licenses available for database");
+
+static toSQL SQLChartsPhysical("toTuning:Charts:1BBPhysical I/O",
+                               "select SYSDATE,\n"
+                               "       sum(decode(statistic#,40,value,0)) \"Physical reads\",\n"
+                               "       sum(decode(statistic#,44,value,0)) \"Physical writes\",\n"
+                               "       sum(decode(statistic#,105,value,0)) \"Redo writes\"\n"
+                               "  from v$sysstat where statistic# in (40,44,105)",
+                               "Generate chart of physical I/O of database.",
+                               "0800");
+
+static toSQL SQLChartsPhysical9("toTuning:Charts:1BBPhysical I/O",
+                                "select SYSDATE,\n"
+                                "       sum(decode(statistic#,42,value,0)) \"Physical reads\",\n"
+                                "       sum(decode(statistic#,46,value,0)) \"Physical writes\",\n"
+                                "       sum(decode(statistic#,119,value,0)) \"Redo writes\"\n"
+                                "  from v$sysstat where statistic# in (42,46,119)",
+                                "",
+                                "0900");
+
+static toSQL SQLChartsPhysical7("toTuning:Charts:1BBPhysical I/O",
+                                "select SYSDATE,\n"
+                                "       sum(decode(statistic#,39,value,0)) \"Physical reads\",\n"
+                                "       sum(decode(statistic#,40,value,0)) \"Physical writes\",\n"
+                                "       sum(decode(statistic#,91,value,0)) \"Redo writes\"\n"
+                                "  from v$sysstat where statistic# in (39,40,91)",
+                                "",
+                                "0703");
+
+static toSQL SQLChartsLogical("toTuning:Charts:2BBLogical I/O",
+                              "select SYSDATE,\n"
+                              "       sum(decode(statistic#,38,value,0)) \"Block gets\",\n"
+                              "       sum(decode(statistic#,39,value,0)) \"Consistent gets\",\n"
+                              "       sum(decode(statistic#,41,value,0)) \"Block changes\",\n"
+                              "       sum(decode(statistic#,42,value,0)) \"Consistent changes\"\n"
+                              "  from v$sysstat where statistic# in (38,39,41,42)",
+                              "Generate chart of physical I/O of database.",
+                              "0800");
+
+static toSQL SQLChartsLogical9("toTuning:Charts:2BBLogical I/O",
+                               "select SYSDATE,\n"
+                               "       sum(decode(statistic#,40,value,0)) \"Block gets\",\n"
+                               "       sum(decode(statistic#,41,value,0)) \"Consistent gets\",\n"
+                               "       sum(decode(statistic#,43,value,0)) \"Block changes\",\n"
+                               "       sum(decode(statistic#,44,value,0)) \"Consistent changes\"\n"
+                               "  from v$sysstat where statistic# in (40,41,43,44)",
+                               "",
+                               "0900");
+
+static toSQL SQLChartsLogical7("toTuning:Charts:2BBLogical I/O",
+                               "select SYSDATE,\n"
+                               "       sum(decode(statistic#,37,value,0)) \"Block gets\",\n"
+                               "       sum(decode(statistic#,38,value,0)) \"Consistent gets\",\n"
+                               "       sum(decode(statistic#,43,value,0)) \"Block changes\",\n"
+                               "       sum(decode(statistic#,45,value,0)) \"Consistent changes\"\n"
+                               "  from v$sysstat where statistic# in (37,38,43,45)",
+                               "",
+                               "0703");
+
+static toSQL SQLChartsWait("toTuning:Charts:3BMWait events",
+                           "select sysdate,\n"
+                           "       cpu*10 \"CPU\",\n"
+                           "       parallel*10 \"Parallel execution\",\n"
+                           "       filewrite*10 \"DB File Write\",\n"
+                           "       writecomplete*10 \"Write Complete\",\n"
+                           "       fileread*10 \"DB File Read\",\n"
+                           "       singleread*10 \"DB Single File Read\",\n"
+                           "       control*10 \"Control File I/O\",\n"
+                           "       direct*10 \"Direct I/O\",\n"
+                           "       log*10 \"Log file\",\n"
+                           "       net*10 \"SQL*Net\"\n"
+                           "  from (select SUM(DECODE(SUBSTR(event,1,2),'PX',time_waited,0))-SUM(DECODE(event,'PX Idle Wait',time_waited,0)) parallel,\n"
+                           "               SUM(DECODE(event,'db file parallel write',time_waited,'db file single write',time_waited,0)) filewrite,\n"
+                           "               SUM(DECODE(event,'write complete waits',time_waited,NULL)) writecomplete,\n"
+                           "               SUM(DECODE(event,'db file parallel read',time_waited,'db file sequential read',time_waited,0)) fileread,\n"
+                           "               SUM(DECODE(event,'db file scattered read',time_waited,0)) singleread,\n"
+                           "               SUM(DECODE(SUBSTR(event,1,12),'control file',time_waited,0)) control,\n"
+                           "               SUM(DECODE(SUBSTR(event,1,11),'direct path',time_waited,0)) direct,\n"
+                           "               SUM(DECODE(SUBSTR(event,1,3),'log',time_waited,0)) log,\n"
+                           "               SUM(DECODE(SUBSTR(event,1,7),'SQL*Net',time_waited,0))-SUM(DECODE(event,'SQL*Net message from client',time_waited,0)) net\n"
+                           "          from v$system_event),\n"
+                           "       (select value*10 cpu from v$sysstat where statistic# = 12)",
+                           "Used to generate chart for system wait time.");
+
+static toSQL SQLChartsExecution("toTuning:Charts:6LNExecution",
+                                "select SYSDATE,\n"
+                                "       sum(decode(name,'execute count',value,0)) \"Execute\",\n"
+                                "       sum(decode(name,'parse count (hard)',value,0)) \"Hard parse\",\n"
+                                "       sum(decode(name,'parse count (total)',value,0)) \"Parse\",\n"
+                                "       sum(decode(name,'user calls',value,0)) \"Calls\",\n"
+                                "       sum(decode(name,'user commits',value,0))  \"Commit\",\n"
+                                "       sum(decode(name,'user rollbacks',value,0)) \"Rollbacks\"\n"
+                                "  from v$sysstat where name IN ('execute count','parse count (hard)','parse count (total)','user calls','user commits','user rollbacks')",
+                                "Used to generate chart for execution statistics.",
+                                "0800");
+
+
+static toSQL SQLChartsExecution7("toTuning:Charts:6LNExecution",
+                                 "select SYSDATE,\n"
+                                 "       sum(decode(statistic#,132,value,0)) \"Execute\",\n"
+                                 "       sum(decode(statistic#,131,value,0)) \"Parse\",\n"
+                                 "       sum(decode(statistic#,6,value,0)) \"Calls\",\n"
+                                 "       sum(decode(statistic#,4,value,0))  \"Commit\",\n"
+                                 "       sum(decode(statistic#,5,value,0)) \"Rollbacks\"\n"
+                                 "  from v$sysstat where statistic# in (132,131,4,5,6)",
+                                 "",
+                                 "0703");
+
+static toSQL SQLChartsExecutionPie("toTuning:Charts:8PNExecution Total",
+                                   "select value,decode(name,'execute count','Execute','parse count (hard)','Hard parse','parse count (total)','Parse',\n"
+                                   "                              'user calls','Calls','user commits','Commit','user rollbacks','Rollbacks')\n"
+                                   "  from v$sysstat where name IN ('execute count','parse count (hard)','parse count (total)','user calls','user commits','user rollbacks') order by name",
+                                   "Used to generate pie chart for execution statistics.",
+                                   "0800");
+
+
+static toSQL SQLChartsExecutionPie7("toTuning:Charts:8PNExecution Total",
+                                    "select value,decode(statistic#,132,'Execute',131,'Parse',\n"
+                                    "                              6,'Calls',4,'Commit',5,'Rollbacks')\n"
+                                    "  from v$sysstat where statistic# in (132,131,6,4,5) order by name",
+                                    "",
+                                    "0703");
+
+static toSQL SQLChartsClients("toTuning:Charts:4BAClients",
+                              "select sysdate,\n"
+                              "       sum(decode(decode(type,'BACKGROUND','WHATEVER',status),'ACTIVE',1,0)) \"Active\",\n"
+                              "       sum(decode(status,'INACTIVE',1,0)) \"Inactive\",\n"
+                              "       sum(decode(type,'BACKGROUND',1,0)) \"System\"\n"
+                              "  from v$session where sid not in (select nvl(sid,0) from v$px_process)",
+                              "Chart displaying connected clients");
+
+static toSQL SQLChartsClients8("toTuning:Charts:4BAClients",
+                               "select sysdate,\n"
+                               "       sum(decode(decode(type,'BACKGROUND','WHATEVER',status),'ACTIVE',1,0)) \"Active\",\n"
+                               "       sum(decode(status,'INACTIVE',1,0)) \"Inactive\",\n"
+                               "       sum(decode(type,'BACKGROUND',1,0)) \"System\"\n"
+                               "  from v$session",
+                               "",
+                               "0800");
+
+static toSQL SQLChartsCacheMisses("toTuning:Charts:5CPCache misses",
+                                  "select sysdate,\n"
+                                  "       pread \"Data buffer cache\",read \"Dictionary row cache\",\n"
+                                  "       getmiss \"Library cache\",gets \" \",\n"
+                                  "       reloads \" \",pins \" \"\n"
+                                  "  from (select 100*SUM(DECODE(statistic#,40,value,0)) pread,SUM(DECODE(statistic#,38,value,39,value,0)) read\n"
+                                  "          from v$sysstat where statistic# IN (38,39,40)) \"Data buffer cache\",\n"
+                                  "       (select 100*sum(getmisses) getmiss,sum(gets) gets from v$rowcache) \"Dictionary row cache\",\n"
+                                  "       (select 100*sum(reloads) reloads,sum(pins) pins from v$librarycache) \"Library cache\"\n",
+                                  "Chart display memory allocation. This is really weird to change, especially since the column names "
+                                  "don't correspond exactly to the column data in the chart. Each group of two are divided with each other before drawn.",
+                                  "0800");
+
+static toSQL SQLChartsCacheMisses9("toTuning:Charts:5CPCache misses",
+                                   "select sysdate,\n"
+                                   "       pread \"Data buffer cache\",read \"Dictionary row cache\",\n"
+                                   "       getmiss \"Library cache\",gets \" \",\n"
+                                   "       reloads \" \",pins \" \"\n"
+                                   "  from (select 100*SUM(DECODE(statistic#,42,value,0)) pread,SUM(DECODE(statistic#,40,value,41,value,0)) read\n"
+                                   "          from v$sysstat where statistic# IN (40,41,42)) \"Data buffer cache\",\n"
+                                   "       (select 100*sum(getmisses) getmiss,sum(gets) gets from v$rowcache) \"Dictionary row cache\",\n"
+                                   "       (select 100*sum(reloads) reloads,sum(pins) pins from v$librarycache) \"Library cache\"\n",
+                                   "",
+                                   "0900");
+
+static toSQL SQLChartsCacheMisses7("toTuning:Charts:5CPCache misses",
+                                   "select sysdate,\n"
+                                   "       pread \"Data buffer cache\",read \"Dictionary row cache\",\n"
+                                   "       getmiss \"Library cache\",gets \" \",\n"
+                                   "       reloads \" \",pins \" \"\n"
+                                   "  from (select 100*SUM(DECODE(statistic#,39,value,0)) pread,SUM(DECODE(statistic#,37,value,38,value,0)) read\n"
+                                   "          from v$sysstat where statistic# IN (37,38,39)) \"Data buffer cache\",\n"
+                                   "       (select 100*sum(getmisses) getmiss,sum(gets) gets from v$rowcache) \"Dictionary row cache\",\n"
+                                   "       (select 100*sum(reloads) reloads,sum(pins) pins from v$librarycache) \"Library cache\"\n",
+                                   "",
+                                   "0703");
+
+static toSQL SQLChartsRedo("toTuning:Charts:7BSRedo log I/O",
+                           "select SYSDATE,\n"
+                           "       sum(decode(statistic#,101,value,0))/:unit<int> \"Redo size\",\n"
+                           "       sum(decode(statistic#,103,value,0))/:unit<int> \"Redo wastage\"\n"
+                           "  from v$sysstat where statistic# in (101,103)",
+                           "Used to generate chart for redo I/O statistics.",
+                           "0800");
+
+static toSQL SQLChartsRedo9("toTuning:Charts:7BSRedo log I/O",
+                            "select SYSDATE,\n"
+                            "       sum(decode(statistic#,115,value,0))/:unit<int> \"Redo size\",\n"
+                            "       sum(decode(statistic#,117,value,0))/:unit<int> \"Redo wastage\"\n"
+                            "  from v$sysstat where statistic# in (115,117)",
+                            "",
+                            "0900");
+
+static toSQL SQLChartsRedo7("toTuning:Charts:7BSRedo log I/O",
+                            "select SYSDATE,\n"
+                            "       sum(decode(statistic#,85,value,0))/:unit<int> \"Redo size\",\n"
+                            "       sum(decode(statistic#,89,value,0))/:unit<int> \"Redo wastage\"\n"
+                            "  from v$sysstat where statistic# in (85,89)",
+                            "",
+                            "0703");
+
+static toSQL SQLOverviewArchiveWrite("toTuning:Overview:ArchiveWrite",
+                                     "select sysdate,sum(blocks) from v$archived_log",
+                                     "Archive log write",
+                                     "0800");
+
+static toSQL SQLOverviewArchiveWrite7("toTuning:Overview:ArchiveWrite",
+                                      "select sysdate,0 from sys.dual",
+                                      "",
+                                      "0703");
+
+static toSQL SQLOverviewBufferHit("toTuning:Overview:BufferHit",
+                                  "SELECT SYSDATE,(1-SUM(DECODE(statistic#,40,value,0))/SUM(DECODE(statistic#,38,value,39,value,0)))*100\n"
+                                  "  FROM v$sysstat\n"
+                                  " WHERE statistic# IN (38,39,40)",
+                                  "Buffer hitrate",
+                                  "0800");
+
+static toSQL SQLOverviewBufferHit9("toTuning:Overview:BufferHit",
+                                   "SELECT SYSDATE,(1-SUM(DECODE(statistic#,42,value,0))/SUM(DECODE(statistic#,40,value,41,value,0)))*100\n"
+                                   "  FROM v$sysstat\n"
+                                   " WHERE statistic# IN (40,41,42)",
+                                   "",
+                                   "0900");
+
+static toSQL SQLOverviewBufferHit7("toTuning:Overview:BufferHit",
+                                   "SELECT SYSDATE,(1-SUM(DECODE(statistic#,39,value,0))/SUM(DECODE(statistic#,37,value,38,value,0)))*100\n"
+                                   "  FROM v$sysstat\n"
+                                   " WHERE statistic# IN (37,38,39)",
+                                   "",
+                                   "0703");
+
+static toSQL SQLOverviewClientInput("toTuning:Overview:ClientInput",
+                                    "select sysdate,value/:f1<int>\n"
+                                    "  from v$sysstat where statistic# = 182",
+                                    "Bytes sent to client",
+                                    "0800");
+
+static toSQL SQLOverviewClientInput9("toTuning:Overview:ClientInput",
+                                     "select sysdate,value/:f1<int>\n"
+                                     "  from v$sysstat where statistic# = 223",
+                                     "",
+                                     "0900");
+
+static toSQL SQLOverviewClientInput7("toTuning:Overview:ClientInput",
+                                     "select sysdate,value/:f1<int>\n"
+                                     "  from v$sysstat where statistic# = 134",
+                                     "",
+                                     "0703");
+
+static toSQL SQLOverviewClientOutput("toTuning:Overview:ClientOutput",
+                                     "select sysdate,value/:f1<int>\n"
+                                     "  from v$sysstat where statistic# = 183",
+                                     "Bytes sent from client",
+                                     "0800");
+
+static toSQL SQLOverviewClientOutput9("toTuning:Overview:ClientOutput",
+                                      "select sysdate,value/:f1<int>\n"
+                                      "  from v$sysstat where statistic# = 224",
+                                      "",
+                                      "0900");
+
+static toSQL SQLOverviewClientOutput7("toTuning:Overview:ClientOutput",
+                                      "select sysdate,value/:f1<int>\n"
+                                      "  from v$sysstat where statistic# = 133",
+                                      "",
+                                      "0703");
+
+static toSQL SQLOverviewExecute("toTuning:Overview:Execute",
+                                "select sysdate,value\n"
+                                "  from v$sysstat where statistic# = 181",
+                                "Execute count",
+                                "0800");
+
+static toSQL SQLOverviewExecute9("toTuning:Overview:Execute",
+                                 "select sysdate,value\n"
+                                 "  from v$sysstat where statistic# = 222",
+                                 "",
+                                 "0900");
+
+static toSQL SQLOverviewExecute7("toTuning:Overview:Execute",
+                                 "select sysdate,value\n"
+                                 "  from v$sysstat where statistic# = 132",
+                                 "",
+                                 "0703");
+
+static toSQL SQLOverviewParse("toTuning:Overview:Parse",
+                              "select sysdate,value\n"
+                              "  from v$sysstat where statistic# = 179",
+                              "Parse count",
+                              "0800");
+
+static toSQL SQLOverviewParse9("toTuning:Overview:Parse",
+                               "select sysdate,value\n"
+                               "  from v$sysstat where statistic# = 219",
+                               "",
+                               "0900");
+
+static toSQL SQLOverviewParse7("toTuning:Overview:Parse",
+                               "select sysdate,value\n"
+                               "  from v$sysstat where statistic# = 131",
+                               "",
+                               "0703");
+
+static toSQL SQLOverviewRedoEntries("toTuning:Overview:RedoEntries",
+                                    "select sysdate,value\n"
+                                    "  from v$sysstat where statistic# = 100",
+                                    "Redo entries",
+                                    "0800");
+
+static toSQL SQLOverviewRedoEntries9("toTuning:Overview:RedoEntries",
+                                     "select sysdate,value\n"
+                                     "  from v$sysstat where statistic# = 114",
+                                     "",
+                                     "0900");
+
+static toSQL SQLOverviewRedoEntries7("toTuning:Overview:RedoEntries",
+                                     "select sysdate,value\n"
+                                     "  from v$sysstat where statistic# = 84",
+                                     "",
+                                     "0703");
+
+static toSQL SQLOverviewRedoBlocks("toTuning:Overview:RedoBlocks",
+                                   "select sysdate,value\n"
+                                   "  from v$sysstat where statistic# = 106",
+                                   "Redo blocks written",
+                                   "0800");
+
+static toSQL SQLOverviewRedoBlocks9("toTuning:Overview:RedoBlocks",
+                                    "select sysdate,value\n"
+                                    "  from v$sysstat where statistic# = 120",
+                                    "",
+                                    "0900");
+
+static toSQL SQLOverviewRedoBlocks7("toTuning:Overview:RedoBlocks",
+                                    "select sysdate,value\n"
+                                    "  from v$sysstat where statistic# = 92",
+                                    "",
+                                    "0703");
+
+static toSQL SQLOverviewLogicalRead("toTuning:Overview:LogicalRead",
+                                    "select sysdate,sum(value)\n"
+                                    "  from v$sysstat where statistic# in (38,39)",
+                                    "Blocks read",
+                                    "0800");
+
+static toSQL SQLOverviewLogicalRead9("toTuning:Overview:LogicalRead",
+                                     "select sysdate,sum(value)\n"
+                                     "  from v$sysstat where statistic# in (40,41)",
+                                     "",
+                                     "0900");
+
+static toSQL SQLOverviewLogicalRead7("toTuning:Overview:LogicalRead",
+                                     "select sysdate,sum(value)\n"
+                                     "  from v$sysstat where statistic# in (37,38)",
+                                     "",
+                                     "0703");
+
+static toSQL SQLOverviewLogicalWrite("toTuning:Overview:LogicalWrite",
+                                     "select sysdate,sum(value)\n"
+                                     "  from v$sysstat where statistic# in (41,42)",
+                                     "Blocks written",
+                                     "0800");
+
+static toSQL SQLOverviewLogicalWrite9("toTuning:Overview:LogicalWrite",
+                                      "select sysdate,sum(value)\n"
+                                      "  from v$sysstat where statistic# in (43,44)",
+                                      "",
+                                      "0900");
+
+static toSQL SQLOverviewLogicalWrite7("toTuning:Overview:LogicalWrite",
+                                      "select sysdate,sum(value)\n"
+                                      "  from v$sysstat where statistic# in (43,45)",
+                                      "",
+                                      "0703");
+
+static toSQL SQLOverviewPhysicalRead("toTuning:Overview:PhysicalRead",
+                                     "select sysdate,value\n"
+                                     "  from v$sysstat where statistic# = 40",
+                                     "Blocks physically read",
+                                     "0800");
+
+static toSQL SQLOverviewPhysicalRead9("toTuning:Overview:PhysicalRead",
+                                      "select sysdate,value\n"
+                                      "  from v$sysstat where statistic# = 42",
+                                      "",
+                                      "0900");
+
+static toSQL SQLOverviewPhysicalRead7("toTuning:Overview:PhysicalRead",
+                                      "select sysdate,value\n"
+                                      "  from v$sysstat where statistic# = 39",
+                                      "",
+                                      "0703");
+
+static toSQL SQLOverviewPhysicalWrite("toTuning:Overview:PhysicalWrite",
+                                      "select sysdate,value\n"
+                                      "  from v$sysstat where statistic# = 44",
+                                      "Blocks physically written",
+                                      "0800");
+
+static toSQL SQLOverviewPhysicalWrite9("toTuning:Overview:PhysicalWrite",
+                                       "select sysdate,value\n"
+                                       "  from v$sysstat where statistic# = 46",
+                                       "",
+                                       "0900");
+
+static toSQL SQLOverviewPhysicalWrite7("toTuning:Overview:PhysicalWrite",
+                                       "select sysdate,value\n"
+                                       "  from v$sysstat where statistic# = 40",
+                                       "",
+                                       "0703");
+
+static toSQL SQLOverviewClient("toTuning:Overview:Client",
+                               "select sysdate,\n"
+                               "       sum(decode(status,'INACTIVE',1,0)),\n"
+                               "       sum(decode(status,'ACTIVE',1,0))\n"
+                               "  from v$session\n"
+                               " where type != 'BACKGROUND' and sid not in (select nvl(sid,0) from v$px_process)",
+                               "Information about active/inactive clients");
+
+static toSQL SQLOverviewClient8("toTuning:Overview:Client",
+                                "select sysdate,\n"
+                                "       sum(decode(status,'INACTIVE',1,0)),\n"
+                                "       sum(decode(status,'ACTIVE',1,0))\n"
+                                "  from v$session\n"
+                                " where type != 'BACKGROUND'",
+                                "",
+                                "0800");
+
+static toSQL SQLOverviewSGAUsed("toTuning:Overview:SGAUsed",
+                                "select sysdate,100*(total-free)/total\n"
+                                "  from (select sum(value) total from v$sga where name in ('Fixed Size','Variable Size')),\n"
+                                "       (select bytes free from v$sgastat where pool = 'shared pool' and name = 'free memory')",
+                                "SGA used",
+                                "0800");
+
+static toSQL SQLOverviewSGAUsed7("toTuning:Overview:SGAUsed",
+                                 "select sysdate,100*(total-free)/total\n"
+                                 "  from (select sum(value) total from v$sga where name in ('Fixed Size','Variable Size')),\n"
+                                 "       (select bytes free from v$sgastat where name = 'free memory')",
+                                 "",
+                                 "0703");
+
+static toSQL SQLOverviewTimescale("toTuning:Overview:Timescale",
+                                  "select sysdate,0 from sys.dual",
+                                  "Get timescale of other graphs");
+
+static toSQL SQLOverviewFilespace("toTuning:Overview:Filespace",
+                                  "select sum(bytes)/:f1<int>,'Free'\n"
+                                  "  from sys.dba_free_space\n"
+                                  "union\n"
+                                  "select (total-free)/:f1<int>,'Used'\n"
+                                  "  from (select sum(bytes) free from sys.dba_free_space),\n"
+                                  "       (select sum(bytes) total from sys.dba_data_files)",
+                                  "Filespace used");
+
+void toTuningOverview::setupChart(toResultLine *chart, const QString &title, const QString &postfix, const toSQL &sql)
+{
+    chart->setMinValue(0);
+    chart->showGrid(0);
+    chart->showLegend(false);
+    chart->showAxisLegend(false);
+    chart->setTitle(title);
+    chart->showLast(true);
+    toQList val;
+    if (postfix == QString::fromLatin1("b/s"))
+    {
+        QString unitStr = toConfigurationSingle::Instance().globalConfig(CONF_SIZE_UNIT, DEFAULT_SIZE_UNIT);
+        val.insert(val.end(), toQValue(toSizeDecode(unitStr)));
+        unitStr += QString::fromLatin1("/s");
+        chart->setYPostfix(unitStr);
+    }
+    else
+        chart->setYPostfix(postfix);
+    chart->query(sql, val);
+}
+
+toTuningOverview::toTuningOverview(QWidget *parent, const char *name, WFlags fl)
+        : toTuningOverviewUI(parent, name, fl)
+{
+    BackgroundGroup->setColumnLayout(1, Horizontal);
+
+    setupChart(ArchiveWrite, tr("< Archive write"), " " + tr("blocks/s"), SQLOverviewArchiveWrite);
+    setupChart(BufferHit, tr("Hitrate"), QString::fromLatin1("%"), SQLOverviewBufferHit);
+    BufferHit->setMaxValue(100);
+    BufferHit->setFlow(false);
+    setupChart(ClientInput, tr("< Client input"), QString::fromLatin1("b/s"), SQLOverviewClientInput);
+    setupChart(ClientOutput, tr("Client output >"), QString::fromLatin1("b/s"), SQLOverviewClientOutput);
+    setupChart(ExecuteCount, tr("Executes >"), QString::fromLatin1("/s"), SQLOverviewExecute);
+    setupChart(LogWrite, tr("Log writer >"), " " + tr("blocks/s"), SQLOverviewRedoBlocks);
+    setupChart(LogicalChange, tr("Buffer changed >"), tr(" blocks/s"), SQLOverviewLogicalWrite);
+    setupChart(LogicalRead, tr("< Buffer gets"), tr(" blocks/s"), SQLOverviewLogicalRead);
+    setupChart(ParseCount, tr("Parse >"), QString::fromLatin1("/s"), SQLOverviewParse);
+    setupChart(PhysicalRead, tr("< Physical read"), tr(" blocks/s"), SQLOverviewPhysicalRead);
+    setupChart(PhysicalWrite, tr("Physical write >"), tr(" blocks/s"), SQLOverviewPhysicalWrite);
+    setupChart(RedoEntries, tr("Redo entries >"), QString::fromLatin1("/s"), SQLOverviewRedoEntries);
+    setupChart(Timescale, tr("Timescale"), QString::null, SQLOverviewTimescale);
+    Timescale->showAxisLegend(true);
+    Timescale->showLast(false);
+
+    ClientChart->showGrid(0);
+    ClientChart->showLegend(false);
+    ClientChart->showAxisLegend(false);
+    ClientChart->query(SQLOverviewClient);
+    ClientChart->setFlow(false);
+
+    SharedUsed->showGrid(0);
+    SharedUsed->showLegend(false);
+    SharedUsed->showAxisLegend(false);
+    SharedUsed->query(SQLOverviewSGAUsed);
+    SharedUsed->setFlow(false);
+    SharedUsed->setMaxValue(100);
+    SharedUsed->setYPostfix(QString::fromLatin1("%"));
+    SharedUsed->showLast(true);
+
+    try
+    {
+        toQList val;
+        val.insert(val.end(),
+                   toQValue(toSizeDecode(toConfigurationSingle::Instance().globalConfig(CONF_SIZE_UNIT,
+                                         DEFAULT_SIZE_UNIT))));
+        FileUsed->query(toSQL::string(SQLOverviewFilespace, toCurrentConnection(this)), (const toQList)val);
+    }
+    TOCATCH
+    FileUsed->showLegend(false);
+
+    Done.up();
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+
+    // Will be called later anyway
+    //refresh();
+}
+
+toTuningOverview::~toTuningOverview()
+{
+    if (Done.getValue() == 0)
+    {
+        Quit = true;
+        Done.down();
+    }
+}
+
+void toTuningOverview::stop(void)
+{
+    try
+    {
+        disconnect(toCurrentTool(this)->timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+    }
+    TOCATCH
+
+    ArchiveWrite->stop();
+    BufferHit->stop();
+    ClientInput->stop();
+    ClientOutput->stop();
+    ExecuteCount->stop();
+    LogWrite->stop();
+    LogicalChange->stop();
+    LogicalRead->stop();
+    ParseCount->stop();
+    PhysicalRead->stop();
+    PhysicalWrite->stop();
+    RedoEntries->stop();
+    Timescale->stop();
+    ClientChart->stop();
+    SharedUsed->stop();
+    FileUsed->stop();
+}
+
+void toTuningOverview::start(void)
+{
+    try
+    {
+        connect(toCurrentTool(this)->timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+    }
+    TOCATCH
+
+    ArchiveWrite->start();
+    BufferHit->start();
+    ClientInput->start();
+    ClientOutput->start();
+    ExecuteCount->start();
+    LogWrite->start();
+    LogicalChange->start();
+    LogicalRead->start();
+    ParseCount->start();
+    PhysicalRead->start();
+    PhysicalWrite->start();
+    RedoEntries->start();
+    Timescale->start();
+    ClientChart->start();
+    SharedUsed->start();
+    FileUsed->start();
+}
+
+static toSQL SQLOverviewArchive("toTuning:Overview:Archive",
+                                "select count(1),\n"
+                                "       nvl(sum(blocks*block_size),0)/:f1<int>\n"
+                                "  from v$archived_log where deleted = 'NO'",
+                                "Information about archive logs",
+                                "0800");
+
+static toSQL SQLOverviewArchive7("toTuning:Overview:Archive",
+                                 "select 'N/A',\n"
+                                 "       'N/A'\n"
+                                 "  from sys.dual where 0 != :f1<int>",
+                                 "",
+                                 "0703");
+
+static toSQL SQLOverviewLog("toTuning:Overview:Log",
+                            "select count(1),\n"
+                            "       max(decode(status,'CURRENT',group#,0)),\n"
+                            "       sum(decode(status,'CURRENT',bytes,0))/:f1<int>,\n"
+                            "       sum(bytes)/:f1<int> from v$log\n",
+                            "Information about redo logs");
+
+static toSQL SQLOverviewTablespaces("toTuning:Overview:Tablespaces",
+                                    "select count(1) from v$tablespace",
+                                    "Number of tablespaces",
+                                    "0800");
+
+static toSQL SQLOverviewTablespaces7("toTuning:Overview:Tablespaces",
+                                     "select count(1) from sys.dba_tablespaces",
+                                     "",
+                                     "0703");
+
+static toSQL SQLOverviewSGA("toTuning:Overview:SGA",
+                            "select name,value/:f1<int> from v$sga",
+                            "Information about SGA");
+
+static toSQL SQLOverviewBackground("toTuning:Overview:Background",
+                                   "select substr(name,1,3),count(1) from v$bgprocess where paddr != '00'\n"
+                                   " group by substr(name,1,3) order by substr(name,1,3)",
+                                   "Background processes");
+
+static toSQL SQLOverviewDedicated("toTuning:Overview:Dedicated",
+                                  "select count(1) from v$session\n"
+                                  " where type = 'USER' and server = 'DEDICATED'\n"
+                                  "   and sid not in (select nvl(sid,0) from v$px_process)",
+                                  "Dedicated server process",
+                                  "0801");
+
+static toSQL SQLOverviewDedicated7("toTuning:Overview:Dedicated",
+                                   "select count(1) from v$session where type = 'USER' and server = 'DEDICATED'",
+                                   "",
+                                   "0800");
+
+static toSQL SQLOverviewDispatcher("toTuning:Overview:Dispatcher",
+                                   "select count(1) from v$dispatcher",
+                                   "Dispatcher processes");
+
+static toSQL SQLOverviewParallell("toTuning:Overview:Parallel",
+                                  "select count(1) from v$px_process",
+                                  "Parallel processes",
+                                  "0801");
+
+static toSQL SQLOverviewParallell8("toTuning:Overview:Parallel",
+                                   "select 'N/A' from sys.dual",
+                                   "",
+                                   "0800");
+
+static toSQL SQLOverviewShared("toTuning:Overview:Shared",
+                               "select count(1) from v$shared_server",
+                               "Shared processes");
+
+static toSQL SQLOverviewRound("toTuning:Overview:Roundtime",
+                              "select round(average_wait,2) from v$system_event\n"
+                              " where event in ('SQL*Net message from client',\n"
+                              "                 'SQL*Net message to client') order by event",
+                              "Client roundtime info");
+
+static toSQL SQLOverviewClientTotal("toTuning:Overview:ClientTotal",
+                                    "select count(1),\n"
+                                    "       sum(decode(status,'ACTIVE',1,0))\n"
+                                    "  from v$session\n"
+                                    " where type != 'BACKGROUND' and sid not in (select nvl(sid,0) from v$px_process)",
+                                    "Information about total and active clients",
+                                    "0801");
+
+static toSQL SQLOverviewClientTotal8("toTuning:Overview:ClientTotal",
+                                     "select count(1),\n"
+                                     "       sum(decode(status,'ACTIVE',1,0))\n"
+                                     "  from v$session\n"
+                                     " where type != 'BACKGROUND'",
+                                     "",
+                                     "0800");
+
+static toSQL SQLOverviewDatafiles("toTuning:Overview:Datafiles",
+                                  "select (select count(1) from v$datafile)+(select count(1) from v$tempfile) from dual",
+                                  "Number of datafiles",
+                                  "0800");
+
+static toSQL SQLOverviewDatafiles8("toTuning:Overview:Datafiles",
+                                   "select count(1) from v$datafile",
+                                   "",
+                                   "0800");
+
+static toSQL SQLOverviewDatafiles7("toTuning:Overview:Datafiles",
+                                   "select count(1) from sys.dba_tablespaces",
+                                   "",
+                                   "0703");
+
+void toTuningOverview::overviewQuery::setValue(const QCString &nam, const QString &val)
+{
+    if (Parent.Quit)
+        throw 1;
+    toLocker lock (Parent.Lock)
+        ;
+    Parent.Values[nam] = val;
+}
+
+void toTuningOverview::overviewQuery::run(void)
+{
+    try
+    {
+        toQList val;
+        val.insert(val.end(), toQValue(toSizeDecode(Parent.UnitString)));
+
+        toQList res = toQuery::readQuery(*Parent.Connection, SQLOverviewArchive, val);
+        QString tmp = toShift(res);
+        tmp += QString::fromLatin1("/");
+        tmp += toShift(res);
+        tmp += Parent.UnitString;
+        setValue("ArchiveInfo", tmp);
+
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewRound);
+        tmp = toShift(res);
+        tmp += QString::fromLatin1(" ms");
+        setValue("SendFromClient", tmp);
+        tmp = toShift(res);
+        tmp += QString::fromLatin1(" ms");
+        setValue("SendToClient", tmp);
+
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewClientTotal);
+        tmp = toShift(res);
+        setValue("TotalClient", tmp);
+        tmp = toShift(res);
+        setValue("ActiveClient", tmp);
+
+        int totJob = 0;
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewDedicated);
+        tmp = toShift(res);
+        totJob += tmp.toInt();
+        setValue("DedicatedServer", tmp);
+
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewDispatcher);
+        tmp = toShift(res);
+        totJob += tmp.toInt();
+        setValue("DispatcherServer", tmp);
+
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewShared);
+        tmp = toShift(res);
+        totJob += tmp.toInt();
+        setValue("SharedServer", tmp);
+
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewParallell);
+        tmp = toShift(res);
+        totJob += tmp.toInt();
+        setValue("ParallellServer", tmp);
+
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewBackground);
+        QStringList back;
+        while (!res.empty())
+        {
+            tmp = toShift(res);
+            if (tmp == QString::fromLatin1("DBW"))
+                tmp = QString::fromLatin1("DBWR");
+            else if (tmp == QString::fromLatin1("PMO"))
+                tmp = QString::fromLatin1("PMON");
+            else if (tmp == QString::fromLatin1("ARC"))
+                tmp = QString::fromLatin1("ARCH");
+            else if (tmp == QString::fromLatin1("CKP"))
+                tmp = QString::fromLatin1("CKPT");
+            else if (tmp == QString::fromLatin1("LGW"))
+                tmp = QString::fromLatin1("LGWR");
+            else if (tmp == QString::fromLatin1("LMO"))
+                tmp = QString::fromLatin1("LMON");
+            else if (tmp == QString::fromLatin1("REC"))
+                tmp = QString::fromLatin1("RECO");
+            else if (tmp == QString::fromLatin1("TRW"))
+                tmp = QString::fromLatin1("TRWR");
+            else if (tmp == QString::fromLatin1("SMO"))
+                tmp = QString::fromLatin1("SMON");
+
+            tmp += QString::fromLatin1(": <B>");
+            QString job = toShift(res);
+            totJob += job.toInt();
+            tmp += job;
+            tmp += QString::fromLatin1("</B>");
+            back << tmp;
+        }
+        setValue("Background", back.join(QString::fromLatin1(",")));
+        setValue("TotalProcess", QString::number(totJob));
+
+        double tot = 0;
+        double sql = 0;
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewSGA, val);
+        while (!res.empty())
+        {
+            QString nam = toShift(res);
+            tmp = toShift(res);
+            if (nam == "Database Buffers" || nam == "Redo Buffers")
+                setValue(nam.latin1(), tmp + Parent.UnitString);
+            else if (nam == "Fixed Size" || nam == "Variable Size")
+                sql += tmp.toDouble();
+            tot += tmp.toDouble();
+        }
+        tmp = toQValue::formatNumber(tot);
+        tmp += Parent.UnitString;
+        setValue("SGATotal", tmp);
+        tmp = toQValue::formatNumber(sql);
+        tmp += Parent.UnitString;
+        setValue("SharedSize", tmp);
+
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewLog, val);
+        setValue("RedoFiles", toShift(res));
+        setValue("ActiveRedo", toShift(res));
+        tmp = toShift(res);
+        tmp += QString::fromLatin1("/");
+        tmp += toShift(res);
+        tmp += Parent.UnitString;
+        setValue("RedoSize", tmp);
+
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewTablespaces);
+        setValue("Tablespaces", toShift(res));
+
+        res = toQuery::readQuery(*Parent.Connection, SQLOverviewDatafiles);
+        setValue("Files", toShift(res));
+    }
+    catch (const QString &str)
+    {
+        fprintf(stderr, "Exception occured:\n\n%s\n", (const char *)str.latin1());
+    }
+    catch (int)
+    {}
+    Parent.Done.up();
+}
+
+void toTuningOverview::refresh(void)
+{
+    try
+    {
+        if (Done.getValue() == 1)
+        {
+            Done.down();
+            Quit = false;
+            Connection = &toCurrentConnection(this);
+            UnitString = toConfigurationSingle::Instance().globalConfig(CONF_SIZE_UNIT, DEFAULT_SIZE_UNIT);
+            toThread *thread = new toThread(new overviewQuery(*this));
+            thread->start();
+            Poll.start(500);
+        }
+    }
+    TOCATCH
+}
+
+void toTuningOverview::setValue(QLabel *label, const QCString &nam)
+{
+    toLocker lock (Lock)
+        ;
+    std::map<QCString, QString>::iterator i = Values.find(nam);
+    if (i != Values.end())
+    {
+        label->setText((*i).second);
+        Values.erase(i);
+    }
+}
+
+void toTuningOverview::poll(void)
+{
+    try
+    {
+        setValue(ArchiveInfo, "ArchiveInfo");
+        setValue(SendFromClient, "SendFromClient");
+        setValue(SendToClient, "SendToClient");
+        setValue(TotalClient, "TotalClient");
+        setValue(ActiveClient, "ActiveClient");
+        setValue(DedicatedServer, "DedicatedServer");
+        setValue(DispatcherServer, "DispatcherServer");
+        setValue(SharedServer, "SharedServer");
+        setValue(ParallellServer, "ParallellServer");
+
+        {
+            toLocker lock (Lock)
+                ;
+            std::map<QCString, QString>::iterator i = Values.find("Background");
+            if (i != Values.end())
+            {
+                std::list<QLabel *>::iterator labIt = Backgrounds.begin();
+
+                QStringList lst = QStringList::split(QString::fromLatin1(","), (*i).second);
+                for (unsigned int j = 0;j < lst.count();j++)
+                {
+                    QLabel *label;
+                    if (labIt == Backgrounds.end() || *labIt == NULL)
+                    {
+                        label = new QLabel(BackgroundGroup);
+                        label->show();
+                        if (labIt == Backgrounds.end())
+                        {
+                            Backgrounds.insert(Backgrounds.end(), label);
+                            labIt = Backgrounds.end();
+                        }
+                        else
+                        {
+                            *labIt = label;
+                            labIt++;
+                        }
+                    }
+                    else
+                    {
+                        label = *labIt;
+                        labIt++;
+                    }
+                    label->setText(lst[j]);
+                }
+                while (labIt != Backgrounds.end())
+                {
+                    delete *labIt;
+                    *labIt = NULL;
+                    labIt++;
+                }
+                Values.erase(i);
+            }
+        }
+
+        setValue(TotalProcess, "TotalProcess");
+        setValue(BufferSize, "Database Buffers");
+        setValue(RedoBuffer, "Redo Buffers");
+        setValue(SGATotal, "SGATotal");
+        setValue(SharedSize, "SharedSize");
+        setValue(RedoFiles, "RedoFiles");
+        setValue(ActiveRedo, "ActiveRedo");
+        setValue(RedoSize, "RedoSize");
+
+        std::list<double> &values = FileUsed->values();
+        std::list<double>::iterator j = values.begin();
+        if (j != values.end())
+        {
+            double size = 0;
+            double used = 0;
+            if (j != values.end())
+                used = size = (*j);
+            j++;
+            if (j != values.end())
+                size += (*j);
+            QString tmp = toQValue::formatNumber(used);
+            tmp += QString::fromLatin1("/");
+            tmp += toQValue::formatNumber(size);
+            tmp += UnitString;
+            if (tmp != Filesize->text())
+                Filesize->setText(tmp);
+        }
+
+        setValue(Tablespaces, "Tablespaces");
+        setValue(Files, "Files");
+        if (Done.getValue() == 1)
+            Poll.stop();
+    }
+    TOCATCH
+}
+
+static toSQL SQLLibraryCache("toTuning:LibraryCache",
+                             "SELECT namespace,\n"
+                             "       gets \"Gets\",\n"
+                             "       gethits \"Get Hits\",\n"
+                             "       to_char(trunc(gethitratio*100,\n"
+                             "       1))||'%' \"-Ratio\",\n"
+                             "       pins \"Pins\",\n"
+                             "       pinhits \"Pin Hits\",\n"
+                             "       to_char(trunc(pinhitratio*100,\n"
+                             "       1))||'%' \"-Ratio\"\n"
+                             "  FROM v$librarycache",
+                             "Library cache view");
+
+static toSQL SQLControlFiles("toTuning:ControlFileRecords",
+                             "SELECT type \"Type\",\n"
+                             "       record_size \"Size\",\n"
+                             "       records_total \"Total Records\",\n"
+                             "       records_used \"Used Records\",\n"
+                             "       round(record_size*records_total/:unt<int>,1)||' '||:unitstr<char[101]> \"-Allocated\",\n"
+                             "       to_char(round(records_used/records_total*100,1))||'%' \"-Used\",\n"
+                             "       type \" Sort\"\n"
+                             "  FROM v$controlfile_record_section\n"
+                             "UNION\n"
+                             "SELECT 'TOTAL',\n"
+                             "        round(avg(record_size),1),\n"
+                             "        sum(records_total),\n"
+                             "        sum(records_used),\n"
+                             "        round(sum(record_size*records_total/:unt<int>),1)||' '||:unitstr<char[101]>,\n"
+                             "        to_char(round(sum(record_size*records_used)/sum(record_size*records_total)*100,1))||'%' \"-Used\",\n"
+                             "        'ZZZZZZZZZZZZZ'\n"
+                             "  FROM v$controlfile_record_section\n"
+                             "ORDER BY 7",
+                             "Control file record info");
+
+toTuning::toTuning(QWidget *main, toConnection &connection)
+        : toToolWidget(TuningTool, "tuning.html", main, connection)
+{
+    if (TuningTool.config(CONF_OVERVIEW, "Undefined") == "Undefined")
+    {
+        QString def = QString::null;
+        if (TOMessageBox::warning(toMainWidget(),
+                                  tr("Enable all tuning statistics"),
+                                  tr("Are you sure you want to enable all tuning features.\n"
+                                     "This can put heavy strain on a database and unless you\n"
+                                     "are the DBA you probably don't want this. Selecting\n"
+                                     "no here will give you the option to enable or disable\n"
+                                     "tabs individually as they are needed."),
+                                  tr("Yes"), tr("&No"), QString::null, 1) == 0)
+        {
+            def = "Yes";
+        }
+        std::list<QCString> tabs = TabList();
+        for (std::list<QCString>::iterator i = tabs.begin();i != tabs.end();i++)
+            TuningTool.setConfig(*i, def);
+        toConfigurationSingle::Instance().saveConfig();
+    }
+
+    QToolBar *toolbar = toAllocBar(this, tr("Server Tuning"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Refresh"),
+                    tr("Refresh"),
+                    this, SLOT(refresh(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    new QLabel(tr("Refresh") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Refresh = toRefreshCreate(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    connect(Refresh, SIGNAL(activated(const QString &)), this, SLOT(changeRefresh(const QString &)));
+    toolbar->addSeparator();
+    TabButton = new toPopupButton(QPixmap(const_cast<const char**>(compile_xpm)),
+                                  tr("Enable and disable tuning tabs"),
+                                  tr("Enable and disable tuning tabs"),
+                                  toolbar);
+    TabMenu = new QPopupMenu(TabButton);
+    TabButton->setPopup(TabMenu);
+    connect(TabMenu, SIGNAL(aboutToShow()), this, SLOT(showTabMenu()));
+    connect(TabMenu, SIGNAL(activated(int)), this, SLOT(enableTabMenu(int)));
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+    new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+    Tabs = new QTabWidget(this);
+
+    Overview = new toTuningOverview(this, "overview");
+    Tabs->addTab(Overview, tr("&Overview"));
+
+    try
+    {
+        toRefreshParse(timer());
+        connect(timer(), SIGNAL(timeout()), Overview, SLOT(refresh()));
+    }
+    TOCATCH
+
+    QString unitStr = toConfigurationSingle::Instance().globalConfig(CONF_SIZE_UNIT, DEFAULT_SIZE_UNIT);
+    toQList unit;
+    unit.insert(unit.end(), toQValue(toSizeDecode(unitStr)));
+    {
+        std::list<QCString> val = toSQL::range("toTuning:Charts");
+        for (std::list<QCString>::iterator i = val.begin();i != val.end();i++)
+        {
+            QStringList parts = QStringList::split(QString::fromLatin1(":"), QString::fromLatin1(*i));
+            if (parts.count() == 3)
+            {
+                parts.append(parts[2]);
+                parts[2] = QString::fromLatin1("Charts");
+            }
+            std::map<QCString, QGrid *>::iterator j = Charts.find(QCString(CONF_CHART) + parts[2].latin1());
+            QGrid *cchart;
+            if (j == Charts.end())
+                Charts[QCString(CONF_CHART) + parts[2].latin1()] = cchart = new QGrid(2, Tabs, QCString(CONF_CHART) + parts[2].latin1());
+            else
+                cchart = (*j).second;
+
+            if (parts[3].mid(1, 1) == QString::fromLatin1("B"))
+            {
+                toResultBar *chart = new toResultBar(cchart);
+                chart->setTitle(parts[3].mid(3));
+                toQList par;
+                if (parts[3].mid(2, 1) == QString::fromLatin1("B"))
+                    chart->setYPostfix(tr(" blocks/s"));
+                else if (parts[3].mid(2, 1) == QString::fromLatin1("M"))
+                    chart->setYPostfix(QString::fromLatin1(" ms/s"));
+                else if (parts[3].mid(2, 1) == QString::fromLatin1("S"))
+                {
+                    par = unit;
+                    QString t = unitStr;
+                    t += QString::fromLatin1("/s");
+                    chart->setYPostfix(t);
+                }
+                else if (parts[3].mid(2, 1) == QString::fromLatin1("A"))
+                    chart->setFlow(false);
+                else
+                    chart->setYPostfix(QString::fromLatin1("/s"));
+                chart->query(toSQL::sql(*i), par);
+            }
+            else if (parts[3].mid(1, 1) == QString::fromLatin1("L") || parts[3].mid(1, 1) == QString::fromLatin1("C"))
+            {
+                toResultLine *chart;
+                if (parts[3].mid(1, 1) == QString::fromLatin1("C"))
+                    chart = new toTuningMiss(cchart);
+                else
+                    chart = new toResultLine(cchart);
+                chart->setTitle(parts[3].mid(3));
+                toQList par;
+                if (parts[3].mid(2, 1) == QString::fromLatin1("B"))
+                    chart->setYPostfix(tr(" blocks/s"));
+                else if (parts[3].mid(2, 1) == QString::fromLatin1("S"))
+                {
+                    par = unit;
+                    QString t = unitStr;
+                    t += QString::fromLatin1("/s");
+                    chart->setYPostfix(t);
+                }
+                else if (parts[3].mid(2, 1) == QString::fromLatin1("P"))
+                {
+                    chart->setYPostfix(QString::fromLatin1(" %"));
+                    chart->setMinValue(0);
+                }
+                else
+                    chart->setYPostfix(QString::fromLatin1("/s"));
+                chart->query(toSQL::sql(*i), par);
+            }
+            else if (parts[3].mid(1, 1) == QString::fromLatin1("P"))
+            {
+                toResultPie *chart = new toResultPie(cchart);
+                chart->setTitle(parts[3].mid(3));
+                if (parts[3].mid(2, 1) == QString::fromLatin1("S"))
+                {
+                    chart->query(toSQL::sql(*i), unit);
+                    chart->setPostfix(unitStr);
+                }
+                else
+                    chart->query(toSQL::sql(*i));
+            }
+            else
+                toStatusMessage(tr("Wrong format of name on chart (%1).").arg(*i));
+        }
+    }
+
+    for (std::map<QCString, QGrid *>::iterator k = Charts.begin();k != Charts.end();k++)
+        Tabs->addTab((*k).second, tr((*k).first.mid(strlen(CONF_CHART))));
+
+    FileIO = new toTuningFileIO(this, "fileio");
+    connect(this, SIGNAL(connectionChange()), FileIO, SLOT(changeConnection()));
+
+    Waits = new toWaitEvents(this, "waits");
+    Tabs->addTab(Waits, tr("Wait events"));
+
+    Tabs->addTab(FileIO, tr("&File I/O"));
+
+    Indicators = new toListView(Tabs, "indicators");
+    Indicators->setRootIsDecorated(true);
+    Indicators->addColumn(tr("Indicator"));
+    Indicators->addColumn(tr("Value"));
+    Indicators->addColumn(tr("Reference"));
+    Tabs->addTab(Indicators, tr("&Indicators"));
+
+    Statistics = new toResultStats(Tabs, "stats");
+    Tabs->addTab(Statistics, tr("&Statistics"));
+
+    Parameters = new toResultParam(Tabs, "parameters");
+    Tabs->addTab(Parameters, tr("&Parameters"));
+
+    BlockingLocks = new toResultLock(Tabs, "locks");
+    Tabs->addTab(BlockingLocks, tr("&Blocking locks"));
+
+    LibraryCache = new toResultLong(true, false, toQuery::Background, Tabs, "cache");
+    LibraryCache->setSQL(SQLLibraryCache);
+    Tabs->addTab(LibraryCache, tr("Library C&ache"));
+
+    ControlFiles = new toResultLong(true, false, toQuery::Background, Tabs, "control");
+    ControlFiles->setSQL(SQLControlFiles);
+    Tabs->addTab(ControlFiles, tr("Control Files"));
+
+    Options = new toResultLong(true, false, toQuery::Background, Tabs, "options");
+    Options->setSQL(SQLOptions);
+    Tabs->addTab(Options, tr("Optio&ns"));
+
+    Licenses = new toResultItem(2, true, Tabs, "licenses");
+    Licenses->setSQL(SQLLicense);
+    Tabs->addTab(Licenses, tr("&Licenses"));
+
+    Tabs->setCurrentPage(0);
+
+    LastTab = NULL;
+
+    connect(Tabs, SIGNAL(currentChanged(QWidget *)), this, SLOT(changeTab(QWidget *)));
+    ToolMenu = NULL;
+    connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+            this, SLOT(windowActivated(QWidget *)));
+
+    std::list<QCString> tabs = TabList();
+    for (std::list<QCString>::iterator i = tabs.begin();i != tabs.end();i++)
+        if (TuningTool.config(*i, "").isEmpty())
+            enableTab(*i, false);
+
+    refresh();
+    setFocusProxy(Tabs);
+}
+
+QWidget *toTuning::tabWidget(const QCString &name)
+{
+    QWidget *widget = NULL;
+    if (name == CONF_OVERVIEW)
+    {
+        widget = Overview;
+    }
+    else if (name == CONF_FILEIO)
+    {
+        widget = FileIO;
+    }
+    else if (name == CONF_WAITS)
+    {
+        widget = Waits;
+    }
+    else if (Charts.find(CONF_CHART + name) != Charts.end())
+    {
+        widget = Charts[CONF_CHART + name];
+    }
+    return widget;
+}
+
+void toTuning::showTabMenu(void)
+{
+    int id = 1;
+    TabMenu->clear();
+    std::list<QCString> tab = TabList();
+    for (std::list<QCString>::iterator i = tab.begin();i != tab.end();i++)
+    {
+        id++;
+        TabMenu->insertItem(tr(*i), id);
+        QWidget *widget = tabWidget(*i);
+        if (widget && Tabs->isTabEnabled(widget))
+            TabMenu->setItemChecked(id, true);
+    }
+}
+
+void toTuning::enableTabMenu(int selid)
+{
+    std::list<QCString> tab = TabList();
+    int id = 1;
+    for (std::list<QCString>::iterator i = tab.begin();i != tab.end();i++)
+    {
+        id++;
+        if (selid == id)
+        {
+            QWidget *widget = tabWidget(*i);
+            if (widget)
+                enableTab(*i, !Tabs->isTabEnabled(widget));
+            break;
+        }
+    }
+}
+
+void toTuning::enableTab(const QCString &name, bool enable)
+{
+    QWidget *widget = NULL;
+    if (name == CONF_OVERVIEW)
+    {
+        if (enable)
+            Overview->start();
+        else
+            Overview->stop();
+        widget = Overview;
+    }
+    else if (Charts.find(QCString(CONF_CHART) + name) != Charts.end())
+    {
+        QGrid *chart = Charts[QCString(CONF_CHART) + name];
+        QObjectList *childs = (QObjectList *)chart->children();
+        for (unsigned int i = 0;i < childs->count();i++)
+        {
+            toResultLine *line = dynamic_cast<toResultLine *>(childs->at(i));
+            if (line)
+            {
+                if (enable)
+                    line->start();
+                else
+                    line->stop();
+            }
+            toResultBar *bar = dynamic_cast<toResultBar *>(childs->at(i));
+            if (bar)
+            {
+                if (enable)
+                    bar->start();
+                else
+                    bar->stop();
+            }
+            toResultPie *pie = dynamic_cast<toResultPie *>(childs->at(i));
+            if (pie)
+            {
+                if (enable)
+                    pie->start();
+                else
+                    pie->stop();
+            }
+        }
+        widget = chart;
+    }
+    else if (name == CONF_WAITS)
+    {
+        if (enable)
+            Waits->start();
+        else
+            Waits->stop();
+        widget = Waits;
+    }
+    else if (name == CONF_FILEIO)
+    {
+        if (enable)
+            FileIO->start();
+        else
+            FileIO->stop();
+        widget = FileIO;
+    }
+    if (widget)
+        Tabs->setTabEnabled(widget, enable);
+}
+
+void toTuning::changeTab(QWidget *widget)
+{
+    if (LastTab == widget)
+        return ;
+    refresh();
+}
+
+void toTuning::windowActivated(QWidget *widget)
+{
+    if (widget == this)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)), tr("&Refresh"), this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Tuning|Refresh")));
+            ToolMenu->insertItem(tr("&Change Refresh"), Refresh, SLOT(setFocus(void)),
+                                 toKeySequence(tr("Alt+R", "Tuning|Change refresh")));
+            toMainWidget()->menuBar()->insertItem(tr("&Tuning"), ToolMenu, -1, toToolMenuIndex());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+void toTuning::changeRefresh(const QString &str)
+{
+    try
+    {
+        toRefreshParse(timer(), str);
+    }
+    TOCATCH
+}
+
+void toTuning::refresh(void)
+{
+    LastTab = Tabs->currentPage();
+    if (LastTab == Overview)
+    {
+        Overview->refresh();
+    }
+    else if (LastTab == Indicators)
+    {
+        Indicators->clear();
+        std::list<QCString> val = toSQL::range("toTuning:Indicators");
+        QListViewItem *parent = NULL;
+        QListViewItem *last = NULL;
+        for (std::list<QCString>::iterator i = val.begin();i != val.end();i++)
+        {
+            try
+            {
+                toQList val = toQuery::readQuery(connection(), toSQL::string(*i, connection()));
+                QStringList parts = QStringList::split(QString::fromLatin1(":"), *i);
+                if (!parent || parent->text(0) != parts[2])
+                {
+                    parent = new toResultViewItem(Indicators, NULL, parts[2]);
+                    parent->setOpen(true);
+                    last = NULL;
+                }
+                QStringList dsc = QStringList::split(QString::fromLatin1("."), toSQL::description(*i));
+                QString first = dsc[0];
+                first += QString::fromLatin1(".");
+                last = new toResultViewItem(parent, last, first);
+                QString str;
+                for (toQList::iterator j = val.begin();j != val.end();j++)
+                    str += *j;
+                last->setText(1, str);
+                if (dsc.count() > 1)
+                    last->setText(2, dsc[1]);
+            }
+            TOCATCH
+        }
+    }
+    else if (LastTab == Waits)
+        Waits->refresh();
+    else if (LastTab == Statistics)
+        Statistics->refreshStats();
+    else if (LastTab == Parameters)
+        Parameters->refresh();
+    else if (LastTab == BlockingLocks)
+        BlockingLocks->refresh();
+    else if (LastTab == LibraryCache)
+        LibraryCache->refresh();
+    else if (LastTab == ControlFiles)
+    {
+        QString unit = toConfigurationSingle::Instance().globalConfig(CONF_SIZE_UNIT, DEFAULT_SIZE_UNIT);
+        ControlFiles->changeParams(QString::number(toSizeDecode(unit)), unit);
+    }
+    else if (LastTab == Options)
+        Options->refresh();
+    else if (LastTab == Licenses)
+        Licenses->refresh();
+}
+
+void toTuning::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    toToolWidget::exportData(data, prefix);
+    std::list<QCString> ret = TabList();
+    for (std::list<QCString>::iterator i = ret.begin();i != ret.end();i++)
+    {
+        QWidget *widget = tabWidget(*i);
+        if (widget)
+        {
+            if (!Tabs->isTabEnabled(widget))
+                data[prefix + ":" + *i] = QString::fromLatin1("Disabled");
+        }
+    }
+    data[prefix + ":Current"] = Tabs->currentPage()->name();
+
+    Waits->exportData(data, prefix + ":Waits");
+}
+
+void toTuning::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    toToolWidget::importData(data, prefix);
+    std::list<QCString> ret = TabList();
+    for (std::list<QCString>::iterator i = ret.begin();i != ret.end();i++)
+        enableTab(*i, data[prefix + ":" + (*i)].isEmpty());
+    QWidget *chld = (QWidget *)child(data[prefix + ":Current"]);
+    if (chld)
+        Tabs->showPage(chld);
+    Waits->importData(data, prefix + ":Waits");
+}
+
+static toSQL SQLFileIO("toTuning:FileIO",
+                       "select a.name,b.name,sysdate,\n"
+                       "       c.phyrds,c.phywrts,c.phyblkrd,c.phyblkwrt,\n"
+                       "       c.avgiotim*10,c.miniotim*10,c.maxiortm*10,c.maxiowtm*10\n"
+                       "  from v$tablespace a,v$datafile b,v$filestat c\n"
+                       " where a.ts# = b.ts# and b.file# = c.file#\n"
+                       "union\n",
+                       "select a.name,b.name,sysdate,\n"
+                       "       c.phyrds,c.phywrts,c.phyblkrd,c.phyblkwrt,\n"
+                       "       c.avgiotim*10,c.miniotim*10,c.maxiortm*10,c.maxiowtm*10\n"
+                       "  from v$tablespace a,v$tempfile b,v$tempstat c\n"
+                       " where a.ts# = b.ts# and b.file# = c.file#\n"
+                       " order by 1,2",
+                       "Get file for files and tablespaces. Must have same columns.",
+                       "0801");
+
+static toSQL SQLFileIO8("toTuning:FileIO",
+                        "select a.name,b.name,sysdate,\n"
+                        "       c.phyrds,c.phywrts,c.phyblkrd,c.phyblkwrt,\n"
+                        "       c.avgiotim*10,c.miniotim*10,c.maxiortm*10,c.maxiowtm*10\n"
+                        "  from v$tablespace a,v$datafile b,v$filestat c\n"
+                        " where a.ts# = b.ts# and b.file# = c.file#\n"
+                        " order by a.name",
+                        "",
+                        "0800");
+
+toTuningFileIO::toTuningFileIO(QWidget *parent, const char *name, WFlags fl)
+        : QScrollView(parent, name, fl)
+{
+    try
+    {
+        connect(toCurrentTool(this)->timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+
+        viewport()->setBackgroundColor(qApp->palette().active().background());
+
+        QVBox *Box = new QVBox(this->viewport());
+        addChild(Box);
+
+        QComboBox *combo = new QComboBox(Box);
+        combo->insertItem(tr("File I/O"));
+        combo->insertItem(tr("File timing"));
+        if (toCurrentConnection(this).version() >= "0800")
+        {
+            combo->insertItem(tr("Tablespace I/O"));
+            combo->insertItem(tr("Tablespace timing"));
+        }
+        connect(combo, SIGNAL(activated(int)), this, SLOT(changeCharts(int)));
+
+        FileReads = new QGrid(2, Box);
+        FileTime = new QGrid(2, Box);
+        TablespaceReads = new QGrid(2, Box);
+        TablespaceTime = new QGrid(2, Box);
+
+        FileReads->setFixedWidth(viewport()->width() - 30);
+        FileTime->setFixedWidth(viewport()->width() - 30);
+        TablespaceReads->setFixedWidth(viewport()->width() - 30);
+        TablespaceTime->setFixedWidth(viewport()->width() - 30);
+        changeCharts(0);
+        CurrentStamp = 0;
+        connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+        Query = NULL;
+        refresh();
+    }
+    TOCATCH
+}
+
+toTuningFileIO::~toTuningFileIO()
+{
+    delete Query;
+}
+
+void toTuningFileIO::changeCharts(int val)
+{
+    FileReads->hide();
+    FileTime->hide();
+    TablespaceReads->hide();
+    TablespaceTime->hide();
+    switch (val)
+    {
+    case 0:
+        FileReads->show();
+        break;
+    case 1:
+        FileTime->show();
+        break;
+    case 2:
+        TablespaceReads->show();
+        break;
+    case 3:
+        TablespaceTime->show();
+        break;
+    }
+}
+
+void toTuningFileIO::allocCharts(const QString &name)
+{
+    std::list<QString> labels;
+    labels.insert(labels.end(), tr("Reads"));
+    labels.insert(labels.end(), tr("Blocks Read"));
+    labels.insert(labels.end(), tr("Writes"));
+    labels.insert(labels.end(), tr("Blocks Written"));
+    std::list<QString> labelTime;
+    labelTime.insert(labelTime.end(), tr("Average"));
+    labelTime.insert(labelTime.end(), tr("Minimum"));
+    labelTime.insert(labelTime.end(), tr("Maximum Read"));
+    labelTime.insert(labelTime.end(), tr("Maximum Write"));
+
+    toResultBar *barchart;
+    if (name.startsWith(QString::fromLatin1("tspc:")))
+        barchart = new toResultBar(TablespaceReads);
+    else
+        barchart = new toResultBar(FileReads);
+    ReadsCharts[name] = barchart;
+    barchart->setTitle(name.mid(5));
+    barchart->setMinimumSize(200, 170);
+    barchart->setYPostfix(tr("blocks/s"));
+    barchart->setLabels(labels);
+    barchart->setSQLName(QString::fromLatin1("toTuning:FileIO:Reads:" + name));
+    barchart->show();
+
+    toResultLine *linechart;
+    if (name.startsWith(QString::fromLatin1("tspc:")))
+        linechart = new toResultLine(TablespaceTime);
+    else
+        linechart = new toResultLine(FileTime);
+    TimeCharts[name] = linechart;
+    linechart->setTitle(name.mid(5));
+    linechart->setMinimumSize(200, 170);
+    linechart->setYPostfix(QString::fromLatin1("ms"));
+    linechart->setLabels(labelTime);
+    linechart->setSQLName(QString::fromLatin1("toTuning:FileIO:Time:" + name));
+    linechart->show();
+}
+
+void toTuningFileIO::saveSample(const QString &name, const QString &label,
+                                double reads, double writes,
+                                double readBlk, double writeBlk,
+                                double avgTim, double minTim,
+                                double maxRead, double maxWrite)
+{
+    if (CurrentStamp != LastStamp)
+    {
+
+        std::list<double> vals;
+        vals.insert(vals.end(), reads);
+        vals.insert(vals.end(), writes);
+        vals.insert(vals.end(), readBlk);
+        vals.insert(vals.end(), writeBlk);
+
+        std::list<double> last = LastValues[name];
+        std::list<double> dispVal;
+        if (!last.empty())
+        {
+            std::list<double>::iterator i = vals.begin();
+            std::list<double>::iterator j = last.begin();
+            while (i != vals.end() && j != last.end())
+            {
+                dispVal.insert(dispVal.end(), (*i - *j) / (CurrentStamp - LastStamp));
+                i++;
+                j++;
+            }
+        }
+        LastValues[name] = vals;
+
+        if (ReadsCharts.find(name) == ReadsCharts.end())
+            allocCharts(name);
+
+        if (!dispVal.empty())
+        {
+            toBarChart *chart = ReadsCharts[name];
+            chart->addValues(dispVal, label);
+        }
+
+        vals.clear();
+        vals.insert(vals.end(), avgTim);
+        vals.insert(vals.end(), minTim);
+        vals.insert(vals.end(), maxRead);
+        vals.insert(vals.end(), maxWrite);
+
+        toLineChart *chart = TimeCharts[name];
+        chart->addValues(vals, label);
+    }
+}
+
+void toTuningFileIO::refresh(void)
+{
+    if (!Query)
+    {
+        try
+        {
+            toConnection &conn = toCurrentConnection(this);
+            if (conn.version() < "0800")
+                return ;
+            toQList par;
+            LastStamp = CurrentStamp;
+            CurrentStamp = time(NULL);
+            Query = new toNoBlockQuery(conn, toQuery::Background, toSQL::string(SQLFileIO, conn), par);
+            LastTablespace = QString::null;
+
+            Poll.start(100);
+        }
+        TOCATCH
+    }
+}
+
+void toTuningFileIO::poll(void)
+{
+    try
+    {
+        if (Query && Query->poll())
+        {
+            QString tablespace;
+            QString datafile;
+            QString timestr;
+            while (Query->poll())
+            {
+                if (!Query->eof())
+                {
+                    tablespace = Query->readValueNull();
+                    datafile = Query->readValueNull();
+                    timestr = Query->readValueNull();
+                }
+                else
+                    tablespace = QString::null;
+                if (tablespace != LastTablespace)
+                {
+                    if (!LastTablespace.isNull())
+                    {
+                        QString name = QString::fromLatin1("tspc:");
+                        name += LastTablespace;
+
+                        saveSample(name, timestr,
+                                   TblReads, TblWrites, TblReadBlk, TblWriteBlk,
+                                   TblAvg, TblMin, TblMaxRead, TblMaxWrite);
+                    }
+
+                    TblReads = TblWrites = TblReadBlk = TblWriteBlk = TblAvg = TblMin = TblMaxRead = TblMaxWrite = 0;
+                    LastTablespace = tablespace;
+                }
+                if (Query->eof())
+                    break;
+
+                double reads = Query->readValueNull().toDouble();
+                double writes = Query->readValueNull().toDouble();
+                double readBlk = Query->readValueNull().toDouble();
+                double writeBlk = Query->readValueNull().toDouble();
+                double avgTim = Query->readValueNull().toDouble();
+                double minTim = Query->readValueNull().toDouble();
+                double maxRead = Query->readValueNull().toDouble();
+                double maxWrite = Query->readValueNull().toDouble();
+
+                TblReads += reads;
+                TblWrites += writes;
+                TblReadBlk += readBlk;
+                TblWriteBlk += writeBlk;
+                TblAvg += avgTim;
+                TblMin += minTim;
+                TblMaxRead += maxRead;
+                TblMaxWrite += maxWrite;
+
+                QString name = QString::fromLatin1("file:");
+                name += datafile;
+
+                saveSample(name, timestr,
+                           reads, writes, readBlk, writeBlk,
+                           avgTim, minTim, maxRead, maxWrite);
+            }
+            if (Query->eof())
+            {
+                Poll.stop();
+                delete Query;
+                Query = NULL;
+            }
+        }
+    }
+    TOCATCH
+}
+
+void toTuningFileIO::resizeEvent(QResizeEvent *e)
+{
+    QScrollView::resizeEvent(e);
+
+    FileReads->setFixedWidth(viewport()->width() - 30);
+    FileTime->setFixedWidth(viewport()->width() - 30);
+    TablespaceReads->setFixedWidth(viewport()->width() - 30);
+    TablespaceTime->setFixedWidth(viewport()->width() - 30);
+}
+
+void toTuningFileIO::changeConnection(void)
+{
+    {
+        for (std::map<QString, toBarChart *>::iterator i = ReadsCharts.begin();
+                i != ReadsCharts.end();i++)
+            delete (*i).second;
+    }
+    ReadsCharts.clear();
+    for (std::map<QString, toLineChart *>::iterator i = TimeCharts.begin();
+            i != TimeCharts.end();i++)
+        delete (*i).second;
+    TimeCharts.clear();
+    LastValues.clear();
+    refresh();
+}
+
+toTuningMiss::toTuningMiss(QWidget *parent, const char *name)
+        : toResultLine(parent, name)
+{}
+
+std::list<double> toTuningMiss::transform(std::list<double> &inp)
+{
+    std::list<double> ret;
+    for (std::list<double>::iterator i = inp.begin();i != inp.end();i++)
+    {
+        double first = *i;
+        i++;
+        if (i != inp.end())
+        {
+            double second = *i;
+            if (second == 0)
+                ret.insert(ret.end(), 0);
+            else
+                ret.insert(ret.end(), first / second);
+        }
+    }
+    return ret;
+}
+
+void toTuningFileIO::stop(void)
+{
+    try
+    {
+        disconnect(toCurrentTool(this)->timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+    }
+    TOCATCH
+}
+
+void toTuningFileIO::start(void)
+{
+    try
+    {
+        connect(toCurrentTool(this)->timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+    }
+    TOCATCH
+}

Added: kde-extras/tora/branches/upstream/current/src/totuning.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totuning.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totuning.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,212 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOTUNING_H
+#define TOTUNING_H
+
+#include "config.h"
+#include "tobackground.h"
+#include "toresultline.h"
+//#include "tothread.h"
+#include "totool.h"
+#include "totuningoverviewui.h"
+
+#include <list>
+#include <map>
+
+//#include <qgrid.h>
+#include <qscrollview.h>
+
+class QComboBox;
+class QGrid;
+//class QGridLayout;
+class QLabel;
+class QPopupMenu;
+class QTabWidget;
+class toBarChart;
+class toConnection;
+//class toLegendChart;
+class toListView;
+class toNoBlockQuery;
+//class toPieChart;
+//class toResultChart;
+class toResultItem;
+class toResultLock;
+class toResultLong;
+class toResultParam;
+class toResultStats;
+class toWaitEvents;
+
+class toTuningMiss : public toResultLine
+{
+public:
+    toTuningMiss(QWidget *parent = 0, const char *name = 0);
+    virtual std::list<double> transform(std::list<double> &trans);
+};
+
+class toTuningFileIO : public QScrollView
+{
+    Q_OBJECT
+
+    QGrid *TablespaceTime;
+    QGrid *TablespaceReads;
+    QGrid *FileTime;
+    QGrid *FileReads;
+
+    QString LastTablespace;
+    double TblReads;
+    double TblWrites;
+    double TblReadBlk;
+    double TblWriteBlk;
+    double TblAvg;
+    double TblMin;
+    double TblMaxRead;
+    double TblMaxWrite;
+    toNoBlockQuery *Query;
+
+    time_t CurrentStamp;
+    time_t LastStamp;
+    std::map<QString, toBarChart *> ReadsCharts;
+    std::map<QString, toLineChart *> TimeCharts;
+    std::map<QString, std::list<double> > LastValues;
+    virtual void resizeEvent(QResizeEvent *e);
+
+    void saveSample(const QString &, const QString &,
+                    double reads, double writes,
+                    double readBlk, double writeBlk,
+                    double avgTim, double minTim,
+                    double maxRead, double maxWrite);
+
+    void allocCharts(const QString &);
+
+    toBackground Poll;
+public:
+    toTuningFileIO(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+    ~toTuningFileIO();
+
+    void stop(void);
+    void start(void);
+public slots:
+    void refresh(void);
+    void changeCharts(int val);
+    void changeConnection(void);
+    void poll(void);
+};
+
+class toTuningOverview : public toTuningOverviewUI
+{
+    Q_OBJECT
+
+    bool Quit;
+    toSemaphore Done;
+    std::map<QCString, QString> Values;
+    toConnection *Connection;
+    toLock Lock;
+    QString UnitString;
+
+struct overviewQuery : public toTask
+    {
+        toTuningOverview &Parent;
+        overviewQuery(toTuningOverview &parent)
+                : Parent(parent)
+        { }
+        virtual void run(void);
+        void setValue(const QCString &name, const QString &val);
+    };
+
+    friend struct overviewQuery;
+
+    toBackground Poll;
+
+    std::list<QLabel *> Backgrounds;
+    void setupChart(toResultLine *chart, const QString &, const QString &, const toSQL &sql);
+    void setValue(QLabel *label, const QCString &val);
+public:
+    toTuningOverview(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
+    ~toTuningOverview();
+    void stop(void);
+    void start(void);
+
+public slots:
+    void refresh(void);
+    void poll(void);
+};
+
+class toTuning : public toToolWidget
+{
+    Q_OBJECT
+
+    QPopupMenu *TabMenu;
+    QToolButton *TabButton;
+
+    QPopupMenu *ToolMenu;
+    QTabWidget *Tabs;
+    toListView *Indicators;
+    toResultParam *Parameters;
+    toResultLong *Options;
+    toResultLock *BlockingLocks;
+    toResultItem *Licenses;
+    toResultStats *Statistics;
+    toResultLong *LibraryCache;
+    toResultLong *ControlFiles;
+    toWaitEvents *Waits;
+
+    std::map<QCString, QGrid *> Charts;
+
+    QComboBox *Refresh;
+    toTuningOverview *Overview;
+    toTuningFileIO *FileIO;
+    QWidget *LastTab;
+
+    virtual void enableTab(const QCString &name, bool enable);
+    virtual QWidget *tabWidget(const QCString &name);
+
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+public:
+    toTuning(QWidget *parent, toConnection &connection);
+public slots:
+    virtual void refresh(void);
+    virtual void changeTab(QWidget *widget);
+    virtual void changeRefresh(const QString &str);
+    virtual void windowActivated(QWidget *widget);
+
+    virtual void showTabMenu(void);
+    virtual void enableTabMenu(int);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/totuningoverviewui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totuningoverviewui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totuningoverviewui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,541 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'totuningoverviewui.ui'
+**
+** Created: Tue Sep 18 08:21:26 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "totuningoverviewui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+#include "toresultpie.h"
+#include "toresultline.h"
+#include "toresultbar.h"
+
+/*
+ *  Constructs a toTuningOverviewUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toTuningOverviewUI::toTuningOverviewUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toTuningOverviewUI" );
+    toTuningOverviewUILayout = new QGridLayout( this, 1, 1, 11, 6, "toTuningOverviewUILayout"); 
+
+    RedoEntries = new toResultLine( this, "RedoEntries" );
+
+    toTuningOverviewUILayout->addWidget( RedoEntries, 4, 3 );
+    Spacer1 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toTuningOverviewUILayout->addItem( Spacer1, 0, 1 );
+
+    ClientInput = new toResultLine( this, "ClientInput" );
+
+    toTuningOverviewUILayout->addWidget( ClientInput, 1, 1 );
+
+    PhysicalWrite = new toResultLine( this, "PhysicalWrite" );
+
+    toTuningOverviewUILayout->addWidget( PhysicalWrite, 2, 5 );
+
+    LogicalRead = new toResultLine( this, "LogicalRead" );
+
+    toTuningOverviewUILayout->addWidget( LogicalRead, 1, 3 );
+
+    LogicalChange = new toResultLine( this, "LogicalChange" );
+
+    toTuningOverviewUILayout->addWidget( LogicalChange, 2, 3 );
+
+    PhysicalRead = new toResultLine( this, "PhysicalRead" );
+
+    toTuningOverviewUILayout->addWidget( PhysicalRead, 1, 5 );
+    Spacer6 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toTuningOverviewUILayout->addItem( Spacer6, 0, 5 );
+    Spacer4 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toTuningOverviewUILayout->addItem( Spacer4, 0, 3 );
+
+    ClientOutput = new toResultLine( this, "ClientOutput" );
+
+    toTuningOverviewUILayout->addWidget( ClientOutput, 2, 1 );
+    Spacer10 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toTuningOverviewUILayout->addItem( Spacer10, 3, 3 );
+
+    GroupBox1_4 = new QGroupBox( this, "GroupBox1_4" );
+    GroupBox1_4->setColumnLayout(0, Qt::Vertical );
+    GroupBox1_4->layout()->setSpacing( 6 );
+    GroupBox1_4->layout()->setMargin( 11 );
+    GroupBox1_4Layout = new QGridLayout( GroupBox1_4->layout() );
+    GroupBox1_4Layout->setAlignment( Qt::AlignTop );
+    Spacer14_2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    GroupBox1_4Layout->addItem( Spacer14_2, 3, 0 );
+
+    GroupBox7 = new QGroupBox( GroupBox1_4, "GroupBox7" );
+    GroupBox7->setColumnLayout(0, Qt::Vertical );
+    GroupBox7->layout()->setSpacing( 6 );
+    GroupBox7->layout()->setMargin( 11 );
+    GroupBox7Layout = new QGridLayout( GroupBox7->layout() );
+    GroupBox7Layout->setAlignment( Qt::AlignTop );
+
+    BufferHit = new toResultLine( GroupBox7, "BufferHit" );
+
+    GroupBox7Layout->addWidget( BufferHit, 1, 0 );
+
+    BufferSize = new QLabel( GroupBox7, "BufferSize" );
+    QFont BufferSize_font(  BufferSize->font() );
+    BufferSize_font.setBold( TRUE );
+    BufferSize->setFont( BufferSize_font ); 
+    BufferSize->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox7Layout->addWidget( BufferSize, 0, 0 );
+
+    GroupBox1_4Layout->addWidget( GroupBox7, 2, 0 );
+
+    TextLabel2_2_2_2 = new QLabel( GroupBox1_4, "TextLabel2_2_2_2" );
+    TextLabel2_2_2_2->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1_4Layout->addWidget( TextLabel2_2_2_2, 0, 0 );
+
+    SGATotal = new QLabel( GroupBox1_4, "SGATotal" );
+    QFont SGATotal_font(  SGATotal->font() );
+    SGATotal_font.setBold( TRUE );
+    SGATotal->setFont( SGATotal_font ); 
+    SGATotal->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1_4Layout->addWidget( SGATotal, 1, 0 );
+
+    TextLabel2_2_2_2_2 = new QLabel( GroupBox1_4, "TextLabel2_2_2_2_2" );
+    TextLabel2_2_2_2_2->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1_4Layout->addWidget( TextLabel2_2_2_2_2, 4, 0 );
+
+    RedoBuffer = new QLabel( GroupBox1_4, "RedoBuffer" );
+    QFont RedoBuffer_font(  RedoBuffer->font() );
+    RedoBuffer_font.setBold( TRUE );
+    RedoBuffer->setFont( RedoBuffer_font ); 
+    RedoBuffer->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1_4Layout->addWidget( RedoBuffer, 5, 0 );
+    Spacer14 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    GroupBox1_4Layout->addItem( Spacer14, 8, 0 );
+
+    GroupBox8 = new QGroupBox( GroupBox1_4, "GroupBox8" );
+    GroupBox8->setColumnLayout(0, Qt::Vertical );
+    GroupBox8->layout()->setSpacing( 6 );
+    GroupBox8->layout()->setMargin( 11 );
+    GroupBox8Layout = new QGridLayout( GroupBox8->layout() );
+    GroupBox8Layout->setAlignment( Qt::AlignTop );
+
+    SharedSize = new QLabel( GroupBox8, "SharedSize" );
+    QFont SharedSize_font(  SharedSize->font() );
+    SharedSize_font.setBold( TRUE );
+    SharedSize->setFont( SharedSize_font ); 
+    SharedSize->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox8Layout->addWidget( SharedSize, 0, 0 );
+
+    SharedUsed = new toResultBar( GroupBox8, "SharedUsed" );
+
+    GroupBox8Layout->addWidget( SharedUsed, 1, 0 );
+
+    GroupBox1_4Layout->addWidget( GroupBox8, 7, 0 );
+    Spacer16 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    GroupBox1_4Layout->addItem( Spacer16, 6, 0 );
+
+    toTuningOverviewUILayout->addMultiCellWidget( GroupBox1_4, 0, 8, 4, 4 );
+    Spacer9 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toTuningOverviewUILayout->addItem( Spacer9, 5, 3 );
+
+    ParseCount = new toResultLine( this, "ParseCount" );
+
+    toTuningOverviewUILayout->addWidget( ParseCount, 6, 3 );
+
+    ExecuteCount = new toResultLine( this, "ExecuteCount" );
+
+    toTuningOverviewUILayout->addWidget( ExecuteCount, 7, 3 );
+
+    GroupBox11 = new QGroupBox( this, "GroupBox11" );
+    GroupBox11->setColumnLayout(0, Qt::Vertical );
+    GroupBox11->layout()->setSpacing( 6 );
+    GroupBox11->layout()->setMargin( 11 );
+    GroupBox11Layout = new QGridLayout( GroupBox11->layout() );
+    GroupBox11Layout->setAlignment( Qt::AlignTop );
+
+    ArchiveInfo = new QLabel( GroupBox11, "ArchiveInfo" );
+    QFont ArchiveInfo_font(  ArchiveInfo->font() );
+    ArchiveInfo_font.setBold( TRUE );
+    ArchiveInfo->setFont( ArchiveInfo_font ); 
+    ArchiveInfo->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox11Layout->addWidget( ArchiveInfo, 1, 0 );
+
+    TextLabel2_2_2_2_3_2_2 = new QLabel( GroupBox11, "TextLabel2_2_2_2_3_2_2" );
+    TextLabel2_2_2_2_3_2_2->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox11Layout->addWidget( TextLabel2_2_2_2_3_2_2, 0, 0 );
+
+    toTuningOverviewUILayout->addMultiCellWidget( GroupBox11, 9, 10, 4, 4 );
+
+    GroupBox1_4_2 = new QGroupBox( this, "GroupBox1_4_2" );
+    GroupBox1_4_2->setColumnLayout(0, Qt::Vertical );
+    GroupBox1_4_2->layout()->setSpacing( 6 );
+    GroupBox1_4_2->layout()->setMargin( 11 );
+    GroupBox1_4Layout_2 = new QGridLayout( GroupBox1_4_2->layout() );
+    GroupBox1_4Layout_2->setAlignment( Qt::AlignTop );
+
+    GroupBox9 = new QGroupBox( GroupBox1_4_2, "GroupBox9" );
+    GroupBox9->setColumnLayout(0, Qt::Vertical );
+    GroupBox9->layout()->setSpacing( 6 );
+    GroupBox9->layout()->setMargin( 11 );
+    GroupBox9Layout = new QGridLayout( GroupBox9->layout() );
+    GroupBox9Layout->setAlignment( Qt::AlignTop );
+
+    Filesize = new QLabel( GroupBox9, "Filesize" );
+    QFont Filesize_font(  Filesize->font() );
+    Filesize_font.setBold( TRUE );
+    Filesize->setFont( Filesize_font ); 
+    Filesize->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox9Layout->addWidget( Filesize, 5, 0 );
+
+    Files = new QLabel( GroupBox9, "Files" );
+    QFont Files_font(  Files->font() );
+    Files_font.setBold( TRUE );
+    Files->setFont( Files_font ); 
+    Files->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox9Layout->addWidget( Files, 3, 0 );
+
+    TextLabel2_2_2_2_4 = new QLabel( GroupBox9, "TextLabel2_2_2_2_4" );
+    TextLabel2_2_2_2_4->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox9Layout->addWidget( TextLabel2_2_2_2_4, 4, 0 );
+
+    Tablespaces = new QLabel( GroupBox9, "Tablespaces" );
+    QFont Tablespaces_font(  Tablespaces->font() );
+    Tablespaces_font.setBold( TRUE );
+    Tablespaces->setFont( Tablespaces_font ); 
+    Tablespaces->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox9Layout->addWidget( Tablespaces, 1, 0 );
+
+    TextLabel2_2_2_2_5 = new QLabel( GroupBox9, "TextLabel2_2_2_2_5" );
+    TextLabel2_2_2_2_5->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox9Layout->addWidget( TextLabel2_2_2_2_5, 2, 0 );
+
+    TextLabel2_2_2_2_3 = new QLabel( GroupBox9, "TextLabel2_2_2_2_3" );
+    TextLabel2_2_2_2_3->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox9Layout->addWidget( TextLabel2_2_2_2_3, 0, 0 );
+
+    FileUsed = new toResultPie( GroupBox9, "FileUsed" );
+
+    GroupBox9Layout->addWidget( FileUsed, 6, 0 );
+
+    GroupBox1_4Layout_2->addWidget( GroupBox9, 0, 0 );
+
+    GroupBox10 = new QGroupBox( GroupBox1_4_2, "GroupBox10" );
+    GroupBox10->setColumnLayout(0, Qt::Vertical );
+    GroupBox10->layout()->setSpacing( 6 );
+    GroupBox10->layout()->setMargin( 11 );
+    GroupBox10Layout = new QGridLayout( GroupBox10->layout() );
+    GroupBox10Layout->setAlignment( Qt::AlignTop );
+
+    RedoFiles = new QLabel( GroupBox10, "RedoFiles" );
+    QFont RedoFiles_font(  RedoFiles->font() );
+    RedoFiles_font.setBold( TRUE );
+    RedoFiles->setFont( RedoFiles_font ); 
+    RedoFiles->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox10Layout->addWidget( RedoFiles, 1, 0 );
+
+    TextLabel2_2_2_2_5_2 = new QLabel( GroupBox10, "TextLabel2_2_2_2_5_2" );
+    TextLabel2_2_2_2_5_2->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox10Layout->addWidget( TextLabel2_2_2_2_5_2, 2, 0 );
+
+    TextLabel2_2_2_2_4_2 = new QLabel( GroupBox10, "TextLabel2_2_2_2_4_2" );
+    TextLabel2_2_2_2_4_2->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox10Layout->addWidget( TextLabel2_2_2_2_4_2, 4, 0 );
+
+    TextLabel2_2_2_2_3_2 = new QLabel( GroupBox10, "TextLabel2_2_2_2_3_2" );
+    TextLabel2_2_2_2_3_2->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox10Layout->addWidget( TextLabel2_2_2_2_3_2, 0, 0 );
+
+    RedoSize = new QLabel( GroupBox10, "RedoSize" );
+    QFont RedoSize_font(  RedoSize->font() );
+    RedoSize_font.setBold( TRUE );
+    RedoSize->setFont( RedoSize_font ); 
+    RedoSize->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox10Layout->addWidget( RedoSize, 3, 0 );
+
+    ActiveRedo = new QLabel( GroupBox10, "ActiveRedo" );
+    QFont ActiveRedo_font(  ActiveRedo->font() );
+    ActiveRedo_font.setBold( TRUE );
+    ActiveRedo->setFont( ActiveRedo_font ); 
+    ActiveRedo->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox10Layout->addWidget( ActiveRedo, 5, 0 );
+
+    GroupBox1_4Layout_2->addWidget( GroupBox10, 1, 0 );
+    Spacer21 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    GroupBox1_4Layout_2->addItem( Spacer21, 2, 0 );
+
+    toTuningOverviewUILayout->addMultiCellWidget( GroupBox1_4_2, 0, 10, 6, 6 );
+
+    ProcessGroup = new QGroupBox( this, "ProcessGroup" );
+    ProcessGroup->setColumnLayout(0, Qt::Vertical );
+    ProcessGroup->layout()->setSpacing( 6 );
+    ProcessGroup->layout()->setMargin( 11 );
+    ProcessGroupLayout = new QGridLayout( ProcessGroup->layout() );
+    ProcessGroupLayout->setAlignment( Qt::AlignTop );
+
+    GroupBox5 = new QGroupBox( ProcessGroup, "GroupBox5" );
+    GroupBox5->setColumnLayout(0, Qt::Vertical );
+    GroupBox5->layout()->setSpacing( 6 );
+    GroupBox5->layout()->setMargin( 11 );
+    GroupBox5Layout = new QGridLayout( GroupBox5->layout() );
+    GroupBox5Layout->setAlignment( Qt::AlignTop );
+
+    TextLabel2_5 = new QLabel( GroupBox5, "TextLabel2_5" );
+    TextLabel2_5->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox5Layout->addWidget( TextLabel2_5, 2, 0 );
+
+    ParallellServer = new QLabel( GroupBox5, "ParallellServer" );
+    QFont ParallellServer_font(  ParallellServer->font() );
+    ParallellServer_font.setBold( TRUE );
+    ParallellServer->setFont( ParallellServer_font ); 
+    ParallellServer->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox5Layout->addWidget( ParallellServer, 5, 0 );
+
+    DispatcherServer = new QLabel( GroupBox5, "DispatcherServer" );
+    QFont DispatcherServer_font(  DispatcherServer->font() );
+    DispatcherServer_font.setBold( TRUE );
+    DispatcherServer->setFont( DispatcherServer_font ); 
+    DispatcherServer->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox5Layout->addWidget( DispatcherServer, 7, 0 );
+
+    TextLabel2_3 = new QLabel( GroupBox5, "TextLabel2_3" );
+    TextLabel2_3->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox5Layout->addWidget( TextLabel2_3, 6, 0 );
+
+    SharedServer = new QLabel( GroupBox5, "SharedServer" );
+    QFont SharedServer_font(  SharedServer->font() );
+    SharedServer_font.setBold( TRUE );
+    SharedServer->setFont( SharedServer_font ); 
+    SharedServer->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox5Layout->addWidget( SharedServer, 3, 0 );
+
+    TextLabel2_4 = new QLabel( GroupBox5, "TextLabel2_4" );
+    TextLabel2_4->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox5Layout->addWidget( TextLabel2_4, 4, 0 );
+
+    TextLabel2_2 = new QLabel( GroupBox5, "TextLabel2_2" );
+    TextLabel2_2->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox5Layout->addWidget( TextLabel2_2, 0, 0 );
+
+    DedicatedServer = new QLabel( GroupBox5, "DedicatedServer" );
+    QFont DedicatedServer_font(  DedicatedServer->font() );
+    DedicatedServer_font.setBold( TRUE );
+    DedicatedServer->setFont( DedicatedServer_font ); 
+    DedicatedServer->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox5Layout->addWidget( DedicatedServer, 1, 0 );
+
+    ProcessGroupLayout->addWidget( GroupBox5, 2, 0 );
+
+    TotalProcess = new QLabel( ProcessGroup, "TotalProcess" );
+    QFont TotalProcess_font(  TotalProcess->font() );
+    TotalProcess_font.setBold( TRUE );
+    TotalProcess->setFont( TotalProcess_font ); 
+    TotalProcess->setAlignment( int( QLabel::AlignCenter ) );
+
+    ProcessGroupLayout->addWidget( TotalProcess, 1, 0 );
+
+    TextLabel2_2_2 = new QLabel( ProcessGroup, "TextLabel2_2_2" );
+    TextLabel2_2_2->setAlignment( int( QLabel::AlignCenter ) );
+
+    ProcessGroupLayout->addWidget( TextLabel2_2_2, 0, 0 );
+
+    BackgroundGroup = new QGroupBox( ProcessGroup, "BackgroundGroup" );
+
+    ProcessGroupLayout->addWidget( BackgroundGroup, 3, 0 );
+
+    toTuningOverviewUILayout->addMultiCellWidget( ProcessGroup, 0, 10, 2, 2 );
+
+    ArchiveWrite = new toResultLine( this, "ArchiveWrite" );
+
+    toTuningOverviewUILayout->addWidget( ArchiveWrite, 10, 5 );
+
+    Timescale = new toResultLine( this, "Timescale" );
+    Timescale->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)5, (QSizePolicy::SizeType)7, 0, 0, Timescale->sizePolicy().hasHeightForWidth() ) );
+
+    toTuningOverviewUILayout->addMultiCellWidget( Timescale, 10, 10, 0, 1 );
+    Spacer2 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toTuningOverviewUILayout->addMultiCell( Spacer2, 3, 9, 1, 1 );
+
+    GroupBox1 = new QGroupBox( this, "GroupBox1" );
+    GroupBox1->setColumnLayout(0, Qt::Vertical );
+    GroupBox1->layout()->setSpacing( 6 );
+    GroupBox1->layout()->setMargin( 11 );
+    GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
+    GroupBox1Layout->setAlignment( Qt::AlignTop );
+    Spacer12 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    GroupBox1Layout->addItem( Spacer12, 9, 0 );
+    Spacer13 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    GroupBox1Layout->addItem( Spacer13, 4, 0 );
+
+    TextLabel2 = new QLabel( GroupBox1, "TextLabel2" );
+    TextLabel2->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1Layout->addWidget( TextLabel2, 5, 0 );
+
+    TotalClient = new QLabel( GroupBox1, "TotalClient" );
+    QFont TotalClient_font(  TotalClient->font() );
+    TotalClient_font.setBold( TRUE );
+    TotalClient->setFont( TotalClient_font ); 
+    TotalClient->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1Layout->addWidget( TotalClient, 6, 0 );
+
+    TextLabel4 = new QLabel( GroupBox1, "TextLabel4" );
+    TextLabel4->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1Layout->addWidget( TextLabel4, 7, 0 );
+
+    ActiveClient = new QLabel( GroupBox1, "ActiveClient" );
+    QFont ActiveClient_font(  ActiveClient->font() );
+    ActiveClient_font.setBold( TRUE );
+    ActiveClient->setFont( ActiveClient_font ); 
+    ActiveClient->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1Layout->addWidget( ActiveClient, 8, 0 );
+
+    TextLabel2_6 = new QLabel( GroupBox1, "TextLabel2_6" );
+    TextLabel2_6->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1Layout->addWidget( TextLabel2_6, 0, 0 );
+
+    SendFromClient = new QLabel( GroupBox1, "SendFromClient" );
+    QFont SendFromClient_font(  SendFromClient->font() );
+    SendFromClient_font.setBold( TRUE );
+    SendFromClient->setFont( SendFromClient_font ); 
+    SendFromClient->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1Layout->addWidget( SendFromClient, 3, 0 );
+
+    SendToClient = new QLabel( GroupBox1, "SendToClient" );
+    QFont SendToClient_font(  SendToClient->font() );
+    SendToClient_font.setBold( TRUE );
+    SendToClient->setFont( SendToClient_font ); 
+    SendToClient->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1Layout->addWidget( SendToClient, 1, 0 );
+
+    TextLabel4_2 = new QLabel( GroupBox1, "TextLabel4_2" );
+    TextLabel4_2->setAlignment( int( QLabel::AlignCenter ) );
+
+    GroupBox1Layout->addWidget( TextLabel4_2, 2, 0 );
+
+    ClientChart = new toResultBar( GroupBox1, "ClientChart" );
+
+    GroupBox1Layout->addWidget( ClientChart, 10, 0 );
+
+    toTuningOverviewUILayout->addMultiCellWidget( GroupBox1, 0, 9, 0, 0 );
+    Spacer5 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toTuningOverviewUILayout->addItem( Spacer5, 8, 3 );
+    Spacer7 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toTuningOverviewUILayout->addMultiCell( Spacer7, 7, 9, 5, 5 );
+
+    LogWrite = new toResultLine( this, "LogWrite" );
+
+    toTuningOverviewUILayout->addWidget( LogWrite, 6, 5 );
+    Spacer11 = new QSpacerItem( 20, 20, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    toTuningOverviewUILayout->addMultiCell( Spacer11, 3, 5, 5, 5 );
+    languageChange();
+    resize( QSize(906, 552).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toTuningOverviewUI::~toTuningOverviewUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toTuningOverviewUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    GroupBox1_4->setTitle( tr( "SGA" ) );
+    GroupBox7->setTitle( tr( "Buffer Cache" ) );
+    BufferSize->setText( tr( "TextLabel3" ) );
+    TextLabel2_2_2_2->setText( tr( "Total" ) );
+    SGATotal->setText( tr( "TextLabel3" ) );
+    TextLabel2_2_2_2_2->setText( tr( "Redo Buffer" ) );
+    GroupBox8->setTitle( tr( "Shared Pool" ) );
+    SharedSize->setText( tr( "TextLabel3" ) );
+    GroupBox11->setTitle( tr( "Archive logs" ) );
+    ArchiveInfo->setText( tr( "TextLabel3" ) );
+    TextLabel2_2_2_2_3_2_2->setText( tr( "Files/Size" ) );
+    GroupBox1_4_2->setTitle( tr( "Files" ) );
+    GroupBox9->setTitle( tr( "Datafiles" ) );
+    Filesize->setText( tr( "TextLabel3" ) );
+    Files->setText( tr( "TextLabel3" ) );
+    TextLabel2_2_2_2_4->setText( tr( "Used/Total" ) );
+    Tablespaces->setText( tr( "TextLabel3" ) );
+    TextLabel2_2_2_2_5->setText( tr( "Files" ) );
+    TextLabel2_2_2_2_3->setText( tr( "Tablespaces" ) );
+    GroupBox10->setTitle( tr( "Redo Logs" ) );
+    RedoFiles->setText( tr( "TextLabel3" ) );
+    TextLabel2_2_2_2_5_2->setText( tr( "Active/Total" ) );
+    TextLabel2_2_2_2_4_2->setText( tr( "Active group" ) );
+    TextLabel2_2_2_2_3_2->setText( tr( "Files" ) );
+    RedoSize->setText( tr( "TextLabel3" ) );
+    ActiveRedo->setText( tr( "TextLabel3" ) );
+    ProcessGroup->setTitle( tr( "Processes" ) );
+    GroupBox5->setTitle( tr( "Server" ) );
+    TextLabel2_5->setText( tr( "Shared" ) );
+    ParallellServer->setText( tr( "TextLabel3" ) );
+    DispatcherServer->setText( tr( "TextLabel3" ) );
+    TextLabel2_3->setText( tr( "Dispatchers" ) );
+    SharedServer->setText( tr( "TextLabel3" ) );
+    TextLabel2_4->setText( tr( "Parallel" ) );
+    TextLabel2_2->setText( tr( "Dedicated" ) );
+    DedicatedServer->setText( tr( "TextLabel3" ) );
+    TotalProcess->setText( tr( "TextLabel3" ) );
+    TextLabel2_2_2->setText( tr( "Total" ) );
+    BackgroundGroup->setTitle( tr( "Background" ) );
+    GroupBox1->setTitle( tr( "Clients" ) );
+    TextLabel2->setText( tr( "Total" ) );
+    TotalClient->setText( tr( "TextLabel3" ) );
+    TextLabel4->setText( tr( "Active" ) );
+    ActiveClient->setText( tr( "TextLabel5" ) );
+    TextLabel2_6->setText( tr( "Send to client" ) );
+    SendFromClient->setText( tr( "TextLabel5" ) );
+    SendToClient->setText( tr( "TextLabel3" ) );
+    TextLabel4_2->setText( tr( "Send from client" ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/totuningoverviewui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totuningoverviewui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totuningoverviewui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,137 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'totuningoverviewui.ui'
+**
+** Created: Tue Sep 18 08:21:26 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOTUNINGOVERVIEWUI_H
+#define TOTUNINGOVERVIEWUI_H
+
+#include <qvariant.h>
+#include <qpixmap.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class toResultPie;
+class toResultLine;
+class toResultBar;
+class QGroupBox;
+class QLabel;
+
+class toTuningOverviewUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toTuningOverviewUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toTuningOverviewUI();
+
+    toResultLine* RedoEntries;
+    toResultLine* ClientInput;
+    toResultLine* PhysicalWrite;
+    toResultLine* LogicalRead;
+    toResultLine* LogicalChange;
+    toResultLine* PhysicalRead;
+    toResultLine* ClientOutput;
+    QGroupBox* GroupBox1_4;
+    QGroupBox* GroupBox7;
+    toResultLine* BufferHit;
+    QLabel* BufferSize;
+    QLabel* TextLabel2_2_2_2;
+    QLabel* SGATotal;
+    QLabel* TextLabel2_2_2_2_2;
+    QLabel* RedoBuffer;
+    QGroupBox* GroupBox8;
+    QLabel* SharedSize;
+    toResultBar* SharedUsed;
+    toResultLine* ParseCount;
+    toResultLine* ExecuteCount;
+    QGroupBox* GroupBox11;
+    QLabel* ArchiveInfo;
+    QLabel* TextLabel2_2_2_2_3_2_2;
+    QGroupBox* GroupBox1_4_2;
+    QGroupBox* GroupBox9;
+    QLabel* Filesize;
+    QLabel* Files;
+    QLabel* TextLabel2_2_2_2_4;
+    QLabel* Tablespaces;
+    QLabel* TextLabel2_2_2_2_5;
+    QLabel* TextLabel2_2_2_2_3;
+    toResultPie* FileUsed;
+    QGroupBox* GroupBox10;
+    QLabel* RedoFiles;
+    QLabel* TextLabel2_2_2_2_5_2;
+    QLabel* TextLabel2_2_2_2_4_2;
+    QLabel* TextLabel2_2_2_2_3_2;
+    QLabel* RedoSize;
+    QLabel* ActiveRedo;
+    QGroupBox* ProcessGroup;
+    QGroupBox* GroupBox5;
+    QLabel* TextLabel2_5;
+    QLabel* ParallellServer;
+    QLabel* DispatcherServer;
+    QLabel* TextLabel2_3;
+    QLabel* SharedServer;
+    QLabel* TextLabel2_4;
+    QLabel* TextLabel2_2;
+    QLabel* DedicatedServer;
+    QLabel* TotalProcess;
+    QLabel* TextLabel2_2_2;
+    QGroupBox* BackgroundGroup;
+    toResultLine* ArchiveWrite;
+    toResultLine* Timescale;
+    QGroupBox* GroupBox1;
+    QLabel* TextLabel2;
+    QLabel* TotalClient;
+    QLabel* TextLabel4;
+    QLabel* ActiveClient;
+    QLabel* TextLabel2_6;
+    QLabel* SendFromClient;
+    QLabel* SendToClient;
+    QLabel* TextLabel4_2;
+    toResultBar* ClientChart;
+    toResultLine* LogWrite;
+
+protected:
+    QGridLayout* toTuningOverviewUILayout;
+    QSpacerItem* Spacer1;
+    QSpacerItem* Spacer6;
+    QSpacerItem* Spacer4;
+    QSpacerItem* Spacer10;
+    QSpacerItem* Spacer9;
+    QSpacerItem* Spacer2;
+    QSpacerItem* Spacer5;
+    QSpacerItem* Spacer7;
+    QSpacerItem* Spacer11;
+    QGridLayout* GroupBox1_4Layout;
+    QSpacerItem* Spacer14_2;
+    QSpacerItem* Spacer14;
+    QSpacerItem* Spacer16;
+    QGridLayout* GroupBox7Layout;
+    QGridLayout* GroupBox8Layout;
+    QGridLayout* GroupBox11Layout;
+    QGridLayout* GroupBox1_4Layout_2;
+    QSpacerItem* Spacer21;
+    QGridLayout* GroupBox9Layout;
+    QGridLayout* GroupBox10Layout;
+    QGridLayout* ProcessGroupLayout;
+    QGridLayout* GroupBox5Layout;
+    QGridLayout* GroupBox1Layout;
+    QSpacerItem* Spacer12;
+    QSpacerItem* Spacer13;
+
+protected slots:
+    virtual void languageChange();
+
+private:
+    QPixmap image0;
+
+};
+
+#endif // TOTUNINGOVERVIEWUI_H

Added: kde-extras/tora/branches/upstream/current/src/totuningoverviewui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totuningoverviewui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totuningoverviewui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1538 @@
+<!DOCTYPE UI><UI>
+<class>toTuningOverviewUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toTuningOverviewUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>906</width>
+            <height>552</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="4"  column="3" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>RedoEntries</cstring>
+            </property>
+        </widget>
+        <spacer row="0"  column="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="1"  column="1" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ClientInput</cstring>
+            </property>
+        </widget>
+        <widget row="2"  column="5" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PhysicalWrite</cstring>
+            </property>
+        </widget>
+        <widget row="1"  column="3" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>LogicalRead</cstring>
+            </property>
+        </widget>
+        <widget row="2"  column="3" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>LogicalChange</cstring>
+            </property>
+        </widget>
+        <widget row="1"  column="5" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>PhysicalRead</cstring>
+            </property>
+        </widget>
+        <spacer row="0"  column="5" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer6</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <spacer row="0"  column="3" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer4</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="2"  column="1" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ClientOutput</cstring>
+            </property>
+        </widget>
+        <spacer row="3"  column="3" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer10</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="0"  column="4"  rowspan="9"  colspan="1" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>GroupBox1_4</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>SGA</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <spacer row="3"  column="0" >
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer14_2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget row="2"  column="0" >
+                    <class>QGroupBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>GroupBox7</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>title</name>
+                        <string>Buffer Cache</string>
+                    </property>
+                    <grid>
+                        <property stdset="1">
+                            <name>margin</name>
+                            <number>11</number>
+                        </property>
+                        <property stdset="1">
+                            <name>spacing</name>
+                            <number>6</number>
+                        </property>
+                        <widget row="1"  column="0" >
+                            <class>toResultLine</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>BufferHit</cstring>
+                            </property>
+                        </widget>
+                        <widget row="0"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>BufferSize</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                    </grid>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel2_2_2_2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Total</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>SGATotal</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>font</name>
+                        <font>
+                            <bold>1</bold>
+                        </font>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>TextLabel3</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="4"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel2_2_2_2_2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Redo Buffer</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="5"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>RedoBuffer</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>font</name>
+                        <font>
+                            <bold>1</bold>
+                        </font>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <spacer row="8"  column="0" >
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer14</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget row="7"  column="0" >
+                    <class>QGroupBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>GroupBox8</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>title</name>
+                        <string>Shared Pool</string>
+                    </property>
+                    <grid>
+                        <property stdset="1">
+                            <name>margin</name>
+                            <number>11</number>
+                        </property>
+                        <property stdset="1">
+                            <name>spacing</name>
+                            <number>6</number>
+                        </property>
+                        <widget row="0"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>SharedSize</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="1"  column="0" >
+                            <class>toResultBar</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>SharedUsed</cstring>
+                            </property>
+                        </widget>
+                    </grid>
+                </widget>
+                <spacer row="6"  column="0" >
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer16</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+            </grid>
+        </widget>
+        <spacer row="5"  column="3" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer9</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="6"  column="3" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ParseCount</cstring>
+            </property>
+        </widget>
+        <widget row="7"  column="3" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ExecuteCount</cstring>
+            </property>
+        </widget>
+        <widget row="9"  column="4"  rowspan="2"  colspan="1" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>GroupBox11</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Archive logs</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="1"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>ArchiveInfo</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>font</name>
+                        <font>
+                            <bold>1</bold>
+                        </font>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>TextLabel3</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel2_2_2_2_3_2_2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Files/Size</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget row="0"  column="6"  rowspan="11"  colspan="1" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>GroupBox1_4</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Files</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="0" >
+                    <class>QGroupBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>GroupBox9</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>title</name>
+                        <string>Datafiles</string>
+                    </property>
+                    <grid>
+                        <property stdset="1">
+                            <name>margin</name>
+                            <number>11</number>
+                        </property>
+                        <property stdset="1">
+                            <name>spacing</name>
+                            <number>6</number>
+                        </property>
+                        <widget row="5"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>Filesize</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="3"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>Files</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="4"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2_2_2_2_4</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Used/Total</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="1"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>Tablespaces</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="2"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2_2_2_2_5</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Files</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="0"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2_2_2_2_3</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Tablespaces</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="6"  column="0" >
+                            <class>toResultPie</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>FileUsed</cstring>
+                            </property>
+                        </widget>
+                    </grid>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QGroupBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>GroupBox10</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>title</name>
+                        <string>Redo Logs</string>
+                    </property>
+                    <grid>
+                        <property stdset="1">
+                            <name>margin</name>
+                            <number>11</number>
+                        </property>
+                        <property stdset="1">
+                            <name>spacing</name>
+                            <number>6</number>
+                        </property>
+                        <widget row="1"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>RedoFiles</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="2"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2_2_2_2_5_2</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Active/Total</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="4"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2_2_2_2_4_2</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Active group</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="0"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2_2_2_2_3_2</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Files</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="3"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>RedoSize</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="5"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>ActiveRedo</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                    </grid>
+                </widget>
+                <spacer row="2"  column="0" >
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer21</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+            </grid>
+        </widget>
+        <widget row="0"  column="2"  rowspan="11"  colspan="1" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ProcessGroup</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Processes</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="2"  column="0" >
+                    <class>QGroupBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>GroupBox5</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>title</name>
+                        <string>Server</string>
+                    </property>
+                    <grid>
+                        <property stdset="1">
+                            <name>margin</name>
+                            <number>11</number>
+                        </property>
+                        <property stdset="1">
+                            <name>spacing</name>
+                            <number>6</number>
+                        </property>
+                        <widget row="2"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2_5</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Shared</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="5"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>ParallellServer</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="7"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>DispatcherServer</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="6"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2_3</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Dispatchers</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="3"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>SharedServer</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="4"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2_4</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Parallel</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="0"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>TextLabel2_2</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>Dedicated</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                        <widget row="1"  column="0" >
+                            <class>QLabel</class>
+                            <property stdset="1">
+                                <name>name</name>
+                                <cstring>DedicatedServer</cstring>
+                            </property>
+                            <property stdset="1">
+                                <name>font</name>
+                                <font>
+                                    <bold>1</bold>
+                                </font>
+                            </property>
+                            <property stdset="1">
+                                <name>text</name>
+                                <string>TextLabel3</string>
+                            </property>
+                            <property stdset="1">
+                                <name>alignment</name>
+                                <set>AlignCenter</set>
+                            </property>
+                            <property>
+                                <name>hAlign</name>
+                            </property>
+                        </widget>
+                    </grid>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TotalProcess</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>font</name>
+                        <font>
+                            <bold>1</bold>
+                        </font>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>TextLabel3</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel2_2_2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Total</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="3"  column="0" >
+                    <class>QGroupBox</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>BackgroundGroup</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>title</name>
+                        <string>Background</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget row="10"  column="5" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ArchiveWrite</cstring>
+            </property>
+        </widget>
+        <widget row="10"  column="0"  rowspan="1"  colspan="2" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>Timescale</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>7</vsizetype>
+                </sizepolicy>
+            </property>
+        </widget>
+        <spacer row="3"  column="1"  rowspan="7"  colspan="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer2</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="0"  column="0"  rowspan="10"  colspan="1" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>GroupBox1</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Clients</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <spacer row="9"  column="0" >
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer12</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <spacer row="4"  column="0" >
+                    <property>
+                        <name>name</name>
+                        <cstring>Spacer13</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>orientation</name>
+                        <enum>Vertical</enum>
+                    </property>
+                    <property stdset="1">
+                        <name>sizeType</name>
+                        <enum>Expanding</enum>
+                    </property>
+                    <property>
+                        <name>sizeHint</name>
+                        <size>
+                            <width>20</width>
+                            <height>20</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget row="5"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Total</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="6"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TotalClient</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>font</name>
+                        <font>
+                            <bold>1</bold>
+                        </font>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>TextLabel3</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="7"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel4</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Active</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="8"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>ActiveClient</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>font</name>
+                        <font>
+                            <bold>1</bold>
+                        </font>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>TextLabel5</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel2_6</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Send to client</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="3"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>SendFromClient</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>font</name>
+                        <font>
+                            <bold>1</bold>
+                        </font>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>TextLabel5</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>SendToClient</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>font</name>
+                        <font>
+                            <bold>1</bold>
+                        </font>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>TextLabel3</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="2"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel4_2</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Send from client</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignCenter</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="10"  column="0" >
+                    <class>toResultBar</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>ClientChart</cstring>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <spacer row="8"  column="3" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer5</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <spacer row="7"  column="5"  rowspan="3"  colspan="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer7</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+        <widget row="6"  column="5" >
+            <class>toResultLine</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>LogWrite</cstring>
+            </property>
+        </widget>
+        <spacer row="3"  column="5"  rowspan="3"  colspan="1" >
+            <property>
+                <name>name</name>
+                <cstring>Spacer11</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </grid>
+</widget>
+<customwidgets>
+    <customwidget>
+        <class>toResultPie</class>
+        <header location="local">toresultpie.h</header>
+        <sizehint>
+            <width>80</width>
+            <height>80</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+    <customwidget>
+        <class>toResultLine</class>
+        <header location="local">toresultline.h</header>
+        <sizehint>
+            <width>80</width>
+            <height>40</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+    <customwidget>
+        <class>toResultBar</class>
+        <header location="local">toresultbar.h</header>
+        <sizehint>
+            <width>80</width>
+            <height>40</height>
+        </sizehint>
+        <container>0</container>
+        <sizepolicy>
+            <hordata>5</hordata>
+            <verdata>5</verdata>
+        </sizepolicy>
+        <pixmap>image0</pixmap>
+    </customwidget>
+</customwidgets>
+<images>
+    <image>
+        <name>image0</name>
+        <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+    </image>
+</images>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/totuningsettingui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totuningsettingui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totuningsettingui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,79 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'totuningsettingui.ui'
+**
+** Created: Tue Sep 18 08:21:27 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "totuningsettingui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qgroupbox.h>
+#include <qheader.h>
+#include <qlistview.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toTuningSettingUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toTuningSettingUI::toTuningSettingUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toTuningSettingUI" );
+    toTuningSettingUILayout = new QGridLayout( this, 1, 1, 0, 6, "toTuningSettingUILayout"); 
+
+    ServerTuning = new QGroupBox( this, "ServerTuning" );
+    ServerTuning->setColumnLayout(0, Qt::Vertical );
+    ServerTuning->layout()->setSpacing( 6 );
+    ServerTuning->layout()->setMargin( 11 );
+    ServerTuningLayout = new QGridLayout( ServerTuning->layout() );
+    ServerTuningLayout->setAlignment( Qt::AlignTop );
+
+    EnabledTabs = new QListView( ServerTuning, "EnabledTabs" );
+    EnabledTabs->addColumn( tr( "Available tabs" ) );
+    EnabledTabs->setSelectionMode( QListView::Multi );
+
+    ServerTuningLayout->addWidget( EnabledTabs, 1, 0 );
+
+    TextLabel1 = new QLabel( ServerTuning, "TextLabel1" );
+
+    ServerTuningLayout->addWidget( TextLabel1, 0, 0 );
+
+    toTuningSettingUILayout->addWidget( ServerTuning, 0, 0 );
+    languageChange();
+    resize( QSize(588, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // buddies
+    TextLabel1->setBuddy( EnabledTabs );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toTuningSettingUI::~toTuningSettingUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toTuningSettingUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    ServerTuning->setTitle( tr( "Server tuning" ) );
+    EnabledTabs->header()->setLabel( 0, tr( "Available tabs" ) );
+    TextLabel1->setText( tr( "&Enabled background views" ) );
+    QToolTip::add( TextLabel1, tr( "Select which views collect data in the background that should be run." ) );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/totuningsettingui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totuningsettingui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totuningsettingui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,46 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'totuningsettingui.ui'
+**
+** Created: Tue Sep 18 08:21:27 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOTUNINGSETTINGUI_H
+#define TOTUNINGSETTINGUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QGroupBox;
+class QListView;
+class QListViewItem;
+class QLabel;
+
+class toTuningSettingUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toTuningSettingUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toTuningSettingUI();
+
+    QGroupBox* ServerTuning;
+    QListView* EnabledTabs;
+    QLabel* TextLabel1;
+
+protected:
+    QGridLayout* toTuningSettingUILayout;
+    QGridLayout* ServerTuningLayout;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOTUNINGSETTINGUI_H

Added: kde-extras/tora/branches/upstream/current/src/totuningsettingui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/totuningsettingui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/totuningsettingui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,101 @@
+<!DOCTYPE UI><UI>
+<class>toTuningSettingUI</class>
+<widget>
+    <class>QWidget</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>toTuningSettingUI</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>588</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>Form1</string>
+    </property>
+    <property>
+        <name>layoutMargin</name>
+    </property>
+    <grid>
+        <property stdset="1">
+            <name>margin</name>
+            <number>0</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget row="0"  column="0" >
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>ServerTuning</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Server tuning</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="1"  column="0" >
+                    <class>QListView</class>
+                    <column>
+                        <property>
+                            <name>text</name>
+                            <string>Available tabs</string>
+                        </property>
+                        <property>
+                            <name>clickable</name>
+                            <bool>true</bool>
+                        </property>
+                        <property>
+                            <name>resizeable</name>
+                            <bool>true</bool>
+                        </property>
+                    </column>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>EnabledTabs</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>selectionMode</name>
+                        <enum>Multi</enum>
+                    </property>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>TextLabel1</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>&amp;Enabled background views</string>
+                    </property>
+                    <property>
+                        <name>buddy</name>
+                        <cstring>EnabledTabs</cstring>
+                    </property>
+                    <property>
+                        <name>toolTip</name>
+                        <string>Select which views collect data in the background that should be run.</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+    </grid>
+</widget>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/tovisualize.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tovisualize.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tovisualize.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,246 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tobarchart.h"
+#include "toconf.h"
+#include "tolinechart.h"
+#include "topiechart.h"
+#include "toresultview.h"
+#include "tovisualize.h"
+
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+
+#include "tovisualize.moc"
+
+#include "icons/axis.xpm"
+#include "icons/execute.xpm"
+#include "icons/grid.xpm"
+#include "icons/legend.xpm"
+
+toVisualize::toVisualize(toListView *source, QWidget *parent, const char *name)
+        : QVBox(parent, name), Source(source)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Data visualization"));
+
+    Type = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Type->insertItem(tr("Bar chart"), 0);
+    Type->insertItem(tr("Line chart"), 1);
+    Type->insertItem(tr("Pie chart"), 2);
+
+    toolbar->addSeparator();
+
+    Legend = new QToolButton(toolbar);
+    Legend->setToggleButton(true);
+    Legend->setIconSet(QIconSet(QPixmap(const_cast<const char**>(legend_xpm))));
+    QToolTip::add
+        (Legend, tr("Display legend"));
+    Legend->setOn(true);
+
+    Grid = new QToolButton(toolbar);
+    Grid->setToggleButton(true);
+    Grid->setIconSet(QIconSet(QPixmap(const_cast<const char**>(grid_xpm))));
+    QToolTip::add
+        (Grid, tr("Display grid"));
+    Grid->setOn(true);
+
+    Axis = new QToolButton(toolbar);
+    Axis->setToggleButton(true);
+    Axis->setIconSet(QIconSet(QPixmap(const_cast<const char**>(axis_xpm))));
+    QToolTip::add
+        (Axis, tr("Display axis legend"));
+    Axis->setOn(true);
+
+    QToolTip::add
+        (new QLabel(" " + tr("Title columns") + " ", toolbar),
+                tr("Number of columns to use as title"));
+    Title = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    Title->insertItem(QString::fromLatin1("1"));
+    Title->insertItem(QString::fromLatin1("2"));
+    Title->insertItem(QString::fromLatin1("3"));
+    Title->insertItem(QString::fromLatin1("4"));
+    Title->insertItem(QString::fromLatin1("5"));
+    Title->insertItem(QString::fromLatin1("6"));
+
+    toolbar->addSeparator();
+
+    new QToolButton(QPixmap(const_cast<const char**>(execute_xpm)),
+                    tr("Update chart"),
+                    tr("Update chart"),
+                    this, SLOT(display(void)),
+                    toolbar);
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    Result = new QWidget(this);
+    Result->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+}
+
+void toVisualize::display(void)
+{
+    QWidget *last = Result;
+    switch (Type->currentItem())
+    {
+    case 0:
+        {
+            toBarChart *chart = new toBarChart(this);
+            chart->showLegend(Legend->isOn());
+            int add
+                = 0;
+            int tit = std::max(1, Title->currentText().toInt());
+            if (Source->columnText(0) == QString::fromLatin1("#"))
+                add
+                    = 1;
+            chart->setTitle(Source->columnText(add
+                                              ));
+            chart->showGrid(Grid->isOn() ? 5 : 0);
+            chart->showAxisLegend(Axis->isOn());
+            chart->setSamples();
+
+            std::list<QString> lst;
+            for (int i = tit + add
+                             ;i < Source->columns();i++)
+                    toPush(lst, Source->columnText(i));
+            chart->setLabels(lst);
+
+            for (QListViewItem *item = Source->firstChild();item;item = item->nextSibling())
+            {
+                QString label = item->text(add
+                                          );
+                for (int j = add
+                                 + 1;j < tit + add
+                                ;j++)
+                        {
+                            label += QString::fromLatin1(", ");
+                            label += item->text(j);
+                        }
+                std::list<double> val;
+                for (int i = tit + add
+                                 ;i < Source->columns();i++)
+                    {
+                        toPush(val, item->text(i).toDouble());
+                    }
+                chart->addValues(val, label);
+            }
+            Result = chart;
+        }
+        break;
+    case 1:
+        {
+            toLineChart *chart = new toLineChart(this);
+            chart->showLegend(Legend->isOn());
+            int add
+                = 0;
+            int tit = std::max(1, Title->currentText().toInt());
+            if (Source->columnText(0) == QString::fromLatin1("#"))
+                add
+                    = 1;
+            chart->setTitle(Source->columnText(add
+                                              ));
+            chart->showGrid(Grid->isOn() ? 5 : 0);
+            chart->showAxisLegend(Axis->isOn());
+            chart->setSamples();
+
+            std::list<QString> lst;
+            for (int i = tit + add
+                             ;i < Source->columns();i++)
+                    toPush(lst, Source->columnText(i));
+            chart->setLabels(lst);
+
+            for (QListViewItem *item = Source->firstChild();item;item = item->nextSibling())
+            {
+                QString label = item->text(add
+                                          );
+                for (int j = add
+                                 + 1;j < tit + add
+                                ;j++)
+                        {
+                            label += QString::fromLatin1(", ");
+                            label += item->text(j);
+                        }
+                std::list<double> val;
+                for (int i = tit + add
+                                 ;i < Source->columns();i++)
+                    {
+                        toPush(val, item->text(i).toDouble());
+                    }
+                chart->addValues(val, label);
+            }
+            Result = chart;
+        }
+        break;
+    case 2:
+        {
+            toPieChart *chart = new toPieChart(this);
+            chart->showLegend(Legend->isOn());
+            int add
+                = 0;
+            int tit = std::max(1, Title->currentText().toInt());
+            if (Source->columnText(0) == QString::fromLatin1("#"))
+                add
+                    = 1;
+            chart->setTitle(Source->columnText(add
+                                              ));
+            for (QListViewItem *item = Source->firstChild();item;item = item->nextSibling())
+            {
+                QString label = item->text(add
+                                          );
+                for (int j = add
+                                 + 1;j < tit + add
+                                ;j++)
+                        {
+                            label += QString::fromLatin1(", ");
+                            label += item->text(j);
+                        }
+                chart->addValue(item->text(tit + add
+                                              ).toDouble(), label);
+            }
+            Result = chart;
+        }
+        break;
+    default:
+        Result = new QWidget(this);
+    }
+    Result->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+    Result->show();
+    delete last;
+}

Added: kde-extras/tora/branches/upstream/current/src/tovisualize.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/tovisualize.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/tovisualize.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,77 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOVISUALIZE_H
+#define TOVISUALIZE_H
+
+#include "config.h"
+
+#include <qvbox.h>
+
+#include <algorithm>
+
+class QComboBox;
+class QToolButton;
+class toListView;
+
+/** This widget is used to visualize the data in a toListView into charts.
+ */
+class toVisualize : public QVBox
+{
+    Q_OBJECT
+
+    QComboBox *Type;
+    QComboBox *Title;
+
+    QWidget *Result;
+    toListView *Source;
+
+    QToolButton *Legend;
+    QToolButton *Grid;
+    QToolButton *Axis;
+public:
+    /** Create visualize widget.
+     * @param source Source list view to get data from.
+     */
+    toVisualize(toListView *Source, QWidget *parent, const char *name = NULL);
+public slots:
+    /** Refresh result
+     */
+    void display(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/towaitevents.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/towaitevents.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/towaitevents.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,625 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toconf.h"
+#include "toconnection.h"
+#include "tonoblockquery.h"
+#include "topiechart.h"
+#include "toresultbar.h"
+#include "toresultview.h"
+#include "totool.h"
+#include "towaitevents.h"
+
+#include "towaitevents.moc"
+
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlistview.h>
+#include <qpainter.h>
+#include <qsplitter.h>
+#include <qtoolbar.h>
+
+class toWaitEventsItem : public toResultViewItem
+{
+    int Color;
+public:
+    toWaitEventsItem(QListView *parent, QListViewItem *after, const QString &buf = QString::null)
+            : toResultViewItem(parent, after, QString::null)
+    {
+        Color = 0;
+        setText(1, buf);
+        int num = 1;
+        if (after)
+            num = after->text(0).toInt() + 1;
+        setText(0, QString::number(num));
+    }
+    void setColor(int color)
+    {
+        Color = color;
+    }
+    virtual void paintCell(QPainter * p, const QColorGroup & cg, int column, int width, int align)
+    {
+        if (column == 0)
+        {
+            QString ct = text(column);
+
+            QBrush brush(isSelected() ? toChartBrush(Color) : QBrush(cg.base()));
+
+            p->fillRect(0, 0, width, height(), QBrush(brush.color()));
+            if (brush.style() != QBrush::SolidPattern)
+                p->fillRect(0, 0, width, height(), QBrush(Qt::white, brush.style()));
+        }
+        else
+            QListViewItem::paintCell(p, cg, column, width, align);
+    }
+};
+
+toWaitEvents::toWaitEvents(QWidget *parent, const char *name)
+        : QVBox(parent, name)
+{
+    setup( -1);
+}
+
+toWaitEvents::toWaitEvents(int session, QWidget *parent, const char *name)
+        : QVBox(parent, name)
+{
+    setup(session);
+}
+
+void toWaitEvents::setup(int session)
+{
+    Session = session;
+
+    QToolBar *toolbar = toAllocBar(this, tr("Server Tuning"));
+    new QLabel(tr("Display") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+    QComboBox *type = new QComboBox(toolbar, TO_KDE_TOOLBAR_WIDGET);
+    type->insertItem(tr("Time"));
+    type->insertItem(tr("Count"));
+    connect(type, SIGNAL(activated(int)), this, SLOT(changeType(int)));
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    QSplitter *splitter = new QSplitter(Horizontal, this);
+
+    Types = new QListView(splitter);
+    Types->addColumn(tr("Color"));
+    Types->addColumn(tr("Wait type"));
+    Types->addColumn(tr("Delta (ms/s)"));
+    Types->addColumn(tr("Total (ms)"));
+    Types->addColumn(tr("Delta (1/s)"));
+    Types->addColumn(tr("Total"));
+    Types->setColumnAlignment(2, AlignRight);
+    Types->setColumnAlignment(3, AlignRight);
+    Types->setColumnAlignment(4, AlignRight);
+    Types->setColumnAlignment(5, AlignRight);
+    Types->setAllColumnsShowFocus(true);
+    Types->setSelectionMode(QListView::Multi);
+    Types->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+    QString str = toConfigurationSingle::Instance().globalConfig(CONF_LIST, "");
+    if (!str.isEmpty())
+    {
+        QFont font(toStringToFont(str));
+        Types->setFont(font);
+    }
+
+    QFrame *frame = new QFrame(splitter);
+    QGridLayout *layout = new QGridLayout(frame);
+
+    Delta = new toResultBar(frame);
+    Delta->setTitle(tr("System wait events"));
+    Delta->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+    Delta->showLegend(false);
+    Delta->setYPostfix(" " + tr("ms/s"));
+    Delta->setYPostfix(" " + tr("ms/s"));
+    Delta->setSQLName(QString::fromLatin1("toTuning:WaitEvents"));
+    layout->addMultiCellWidget(Delta, 0, 0, 0, 1);
+
+    DeltaTimes = new toResultBar(frame);
+    DeltaTimes->setTitle(tr("System wait events count"));
+    DeltaTimes->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+    DeltaTimes->showLegend(false);
+    DeltaTimes->setYPostfix(" " + tr("ms/s"));
+    DeltaTimes->hide();
+    DeltaTimes->setYPostfix(" " + tr("waits/s"));
+    DeltaTimes->setSQLName(QString::fromLatin1("toTuning:WaitEventsCount"));
+    layout->addMultiCellWidget(DeltaTimes, 0, 0, 0, 1);
+
+    connect(Types, SIGNAL(selectionChanged()), this, SLOT(changeSelection()));
+    DeltaPie = new toPieChart(frame);
+    DeltaPie->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+    DeltaPie->showLegend(false);
+    layout->addWidget(DeltaPie, 1, 0);
+    AbsolutePie = new toPieChart(frame);
+    AbsolutePie->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+    AbsolutePie->showLegend(false);
+    layout->addWidget(AbsolutePie, 1, 1);
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+    Query = NULL;
+    start();
+    try
+    {
+        connect(toCurrentTool(this), SIGNAL(connectionChange()), this, SLOT(connectionChanged()));
+    }
+    TOCATCH
+
+    QValueList<int> siz;
+    siz << 1 << 2;
+    splitter->setSizes(siz);
+    LastTime = 0;
+
+    First = true;
+    ShowTimes = false;
+}
+
+void toWaitEvents::changeType(int item)
+{
+    ShowTimes = item;
+    if (ShowTimes)
+    {
+        DeltaTimes->show();
+        Delta->hide();
+    }
+    else
+    {
+        DeltaTimes->hide();
+        Delta->show();
+    }
+
+    changeSelection();
+}
+
+void toWaitEvents::setSession(int session)
+{
+    try
+    {
+        Types->clear();
+        Session = session;
+        First = true;
+        Now = QString::null;
+        LastTime = 0;
+        Labels.clear();
+        LastCurrent.clear();
+        Current.clear();
+        CurrentTimes.clear();
+        Relative.clear();
+        RelativeTimes.clear();
+        Enabled.clear();
+        Poll.stop();
+        delete Query;
+        Query = NULL;
+        refresh();
+    }
+    TOCATCH
+}
+
+void toWaitEvents::start(void)
+{
+    try
+    {
+        connect(toCurrentTool(this)->timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+    }
+    TOCATCH
+}
+
+void toWaitEvents::stop(void)
+{
+    try
+    {
+        disconnect(toCurrentTool(this)->timer(), SIGNAL(timeout()), this, SLOT(refresh()));
+    }
+    TOCATCH
+}
+
+void toWaitEvents::changeSelection(void)
+{
+    int count = int(Labels.size());
+
+    bool *enabled = new bool[count];
+    int typ = 0;
+    std::map<QString, int> usedMap;
+    {
+        for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++)
+        {
+            usedMap[*i] = typ;
+            enabled[typ] = false;
+            typ++;
+        }
+    }
+    for (QListViewItem *item = Types->firstChild();item;item = item->nextSibling())
+    {
+        QString txt = item->text(1);
+        if (usedMap.find(txt) == usedMap.end())
+            toStatusMessage(tr("Internal error, can't find (%1) in usedMap").arg(txt));
+        if (item->isSelected())
+            enabled[usedMap[txt]] = true;
+    }
+
+    try
+    {
+        Enabled.clear();
+        int ind = 0;
+        {
+            for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++)
+            {
+                Enabled.insert(Enabled.end(), enabled[ind]);
+                ind++;
+            }
+        }
+
+        Delta->setEnabledCharts(Enabled);
+        DeltaTimes->setEnabledCharts(Enabled);
+
+        std::list<double> absolute;
+        std::list<double> relative;
+        {
+            std::list<double>::iterator i = (ShowTimes ? LastTimes : LastCurrent).begin();
+            std::list<double>::iterator j = (ShowTimes ? RelativeTimes : Relative).begin();
+            std::list<bool>::iterator k = Enabled.begin();
+            while (i != (ShowTimes ? LastTimes : LastCurrent).end() && k != Enabled.end())
+            {
+                if (*k)
+                {
+                    if (j != (ShowTimes ? RelativeTimes : Relative).end())
+                        relative.insert(relative.end(), *j);
+                    absolute.insert(absolute.end(), *i);
+                }
+                else
+                {
+                    if (j != (ShowTimes ? RelativeTimes : Relative).end())
+                        relative.insert(relative.end(), 0);
+                    absolute.insert(absolute.end(), 0);
+                }
+                i++;
+                if (j != (ShowTimes ? RelativeTimes : Relative).end())
+                    j++;
+                k++;
+            }
+        }
+
+        double total = 0;
+        {
+            for (std::list<double>::iterator i = absolute.begin();i != absolute.end();i++)
+                total += *i;
+        }
+        AbsolutePie->setValues(absolute, Labels);
+        AbsolutePie->setTitle(tr("Absolute system wait events\nTotal %1%2").
+                              arg(total / 1000).arg(QString::fromLatin1(ShowTimes ? "" : " s")));
+        total = 0;
+        for (std::list<double>::iterator i = relative.begin();i != relative.end();i++)
+            total += *i;
+        DeltaPie->setValues(relative, Labels);
+        if (total > 0)
+            DeltaPie->setTitle(tr("Delta system wait events\nTotal %1%2").
+                               arg(total).arg(QString::fromLatin1(ShowTimes ? "/s" : " ms/s")));
+
+        else
+            DeltaPie->setTitle(QString::null);
+    }
+    TOCATCH
+    delete[] enabled;
+}
+
+void toWaitEvents::connectionChanged(void)
+{
+    LastCurrent.clear();
+    LastTimes.clear();
+    Labels.clear();
+
+    Relative.clear();
+    RelativeTimes.clear();
+
+    delete Query;
+    Query = NULL;
+    LastTime = 0;
+
+    First = true;
+    refresh();
+}
+
+void toWaitEvents::poll(void)
+{
+    try
+    {
+        if (!toCheckModal(this))
+            return ;
+        if (Query && Query->poll())
+        {
+            while (Query->poll() && !Query->eof())
+            {
+                QString cur = Query->readValueNull();
+                Now = Query->readValueNull();
+                if (First)
+                {
+                    Labels.insert(Labels.end(), cur);
+                    Current.insert(Current.end(), Query->readValueNull().toDouble());
+                    CurrentTimes.insert(CurrentTimes.end(), Query->readValueNull().toDouble());
+                }
+                else
+                {
+                    double val = Query->readValueNull().toDouble();
+                    double tim = Query->readValueNull().toDouble();
+                    std::list<double>::iterator i = Current.begin();
+                    std::list<double>::iterator j = CurrentTimes.begin();
+                    std::list<QString>::iterator k = Labels.begin();
+                    while (i != Current.end() && j != CurrentTimes.end() && k != Labels.end())
+                    {
+                        if (*k == cur)
+                        {
+                            *i = val;
+                            *j = tim;
+                            break;
+                        }
+                        i++;
+                        j++;
+                        k++;
+                    }
+                }
+                Query->readValueNull().toDouble();
+            }
+            if (Query->eof())
+            {
+                std::map<QString, bool> types;
+                QListViewItem *item = NULL;
+                {
+                    for (QListViewItem *ci = Types->firstChild();ci;ci = ci->nextSibling())
+                    {
+                        types[ci->text(1)] = true;
+                        item = ci;
+                    }
+                }
+
+                {
+                    std::list<double>::iterator j = CurrentTimes.begin();
+                    for (std::list<QString>::iterator i = Labels.begin();i != Labels.end();i++, j++)
+                    {
+                        if ((*j) != 0 && types.find(*i) == types.end())
+                        {
+                            item = new toWaitEventsItem(Types, item, *i);
+                            item->setSelected(First && HideMap.find(*i) == HideMap.end());
+                            types[*i] = true;
+                        }
+                    }
+                }
+                if (First)
+                {
+                    Delta->setLabels(Labels);
+                    DeltaTimes->setLabels(Labels);
+                    First = false;
+                }
+
+                time_t now = time(NULL);
+
+                for (QListViewItem *ci = Types->firstChild();ci;ci = ci->nextSibling())
+                {
+                    toWaitEventsItem * item = dynamic_cast<toWaitEventsItem *>(ci);
+                    if (item)
+                    {
+                        int col = 0;
+                        std::list<double>::iterator i = Current.begin();
+                        std::list<double>::iterator j = CurrentTimes.begin();
+                        std::list<QString>::iterator k = Labels.begin();
+                        while (i != Current.end() && j != CurrentTimes.end() && k != Labels.end())
+                        {
+                            if (item->text(1) == *k)
+                            {
+                                item->setColor(col);
+                                item->setText(2, QString::number((*i - item->text(3).toDouble()) / std::max(int(now - LastTime), 1)));
+                                item->setText(3, QString::number(*i));
+                                item->setText(4, QString::number((*j - item->text(5).toDouble()) / std::max(int(now - LastTime), 1)));
+                                item->setText(5, QString::number(*j));
+                                break;
+                            }
+                            col++;
+                            i++;
+                            j++;
+                            k++;
+                        }
+                    }
+                }
+
+                Relative.clear();
+                RelativeTimes.clear();
+
+                std::list<double>::iterator j = LastCurrent.begin();
+                std::list<double>::iterator i = Current.begin();
+                while (i != Current.end() && j != LastCurrent.end())
+                {
+                    Relative.insert(Relative.end(), ((*i) - (*j)) / std::max(int(now - LastTime), 1));
+                    i++;
+                    j++;
+                }
+
+                j = LastTimes.begin();
+                i = CurrentTimes.begin();
+                while (i != CurrentTimes.end() && j != LastTimes.end())
+                {
+                    RelativeTimes.insert(RelativeTimes.end(), ((*i) - (*j)) / std::max(int(now - LastTime), 1));
+                    i++;
+                    j++;
+                }
+
+                LastTime = now;
+                LastTimes = CurrentTimes;
+                LastCurrent = Current;
+
+                if (Relative.begin() != Relative.end())
+                {
+                    Delta->addValues(Relative, Now);
+                    DeltaTimes->addValues(RelativeTimes, Now);
+                }
+
+                changeSelection();
+
+                delete Query;
+                Query = NULL;
+                Poll.stop();
+            }
+        }
+    }
+    catch (const QString &exc)
+    {
+        delete Query;
+        Query = NULL;
+        Poll.stop();
+        toStatusMessage(exc);
+    }
+}
+
+static toSQL SQLSessionWaitEvents("toWaitEvents:Session",
+                                  "SELECT b.name,\n"
+                                  "       SYSDATE,\n"
+                                  "       NVL(a.time_waited,0)*10,\n"
+                                  "       NVL(a.total_waits,0),\n"
+                                  "       NVL(a.time_waited,0)\n"
+                                  "  FROM v$session_event a,\n"
+                                  "       v$event_name b\n"
+                                  " WHERE b.name=a.event(+)\n"
+                                  "   AND a.sid=:sid<int>\n"
+                                  "   AND b.name NOT LIKE'%timer%'\n"
+                                  "   AND b.name NOT IN('rdbms ipc message',\n"
+                                  "                     'SQL*Net message from client')\n"
+                                  " UNION ALL SELECT b.name,\n"
+                                  "       SYSDATE,\n"
+                                  "       NVL(a.time_waited,0)*10,\n"
+                                  "       NVL(a.total_waits,0),\n"
+                                  "       1\n"
+                                  "  FROM v$session_event a,\n"
+                                  "       v$event_name b\n"
+                                  " WHERE b.name=a.event(+)\n"
+                                  "   AND a.sid=:sid<int>\n"
+                                  "   AND (b.name LIKE'%timer%'OR b.name IN('rdbms ipc message',\n"
+                                  "                                         'SQL*Net message from client'))\n"
+                                  " UNION ALL SELECT b.name,\n"
+                                  "       SYSDATE,\n"
+                                  "       NVL(a.VALUE,0)*10,\n"
+                                  "       1,\n"
+                                  "       NVL(a.VALUE,0)\n"
+                                  "  FROM v$sesstat a,\n"
+                                  "       v$statname b\n"
+                                  " WHERE b.name='CPU used by this session'\n"
+                                  "   AND a.sid=:sid<int>\n"
+                                  "   AND a.statistic#=b.statistic#\n"
+                                  " ORDER BY 5 DESC,\n"
+                                  "          3 DESC,\n"
+                                  "          4 DESC",
+                                  "Get all available session wait events");
+
+static toSQL SQLWaitEvents("toWaitEvents:System",
+                           "SELECT b.name,\n"
+                           "       SYSDATE,\n"
+                           "       NVL(a.time_waited,0)*10,\n"
+                           "       NVL(a.total_waits,0),\n"
+                           "       NVL(a.time_waited,0)\n"
+                           "  FROM v$system_event a,\n"
+                           "       v$event_name b\n"
+                           " WHERE b.name=a.event(+)\n"
+                           "   AND b.name NOT LIKE'%timer%'\n"
+                           "   AND b.name NOT IN('rdbms ipc message',\n"
+                           "                     'SQL*Net message from client')\n"
+                           " UNION ALL SELECT b.name,\n"
+                           "       SYSDATE,\n"
+                           "       NVL(a.time_waited,0)*10,\n"
+                           "       NVL(a.total_waits,0),\n"
+                           "       1\n"
+                           "  FROM v$system_event a,\n"
+                           "       v$event_name b\n"
+                           " WHERE b.name=a.event(+)\n"
+                           "   AND (b.name LIKE'%timer%'OR b.name IN('rdbms ipc message',\n"
+                           "                                         'SQL*Net message from client'))\n"
+                           " UNION ALL SELECT s.name,\n"
+                           "       SYSDATE,\n"
+                           "       NVL(s.VALUE,0)*10,\n"
+                           "       1,\n"
+                           "       NVL(s.VALUE,0)\n"
+                           "  FROM v$sysstat s\n"
+                           " WHERE s.name='CPU used by this session'\n"
+                           " ORDER BY 5 DESC,\n"
+                           "          3 DESC,\n"
+                           "          4 DESC",
+                           "Get all available system wait events");
+
+void toWaitEvents::refresh(void)
+{
+    try
+    {
+        if (Query || LastTime == time(NULL))
+            return ;
+
+        toConnection &conn = toCurrentTool(this)->connection();
+        toQList par;
+        QString sql;
+
+        if (Session > 0)
+        {
+            sql = toSQL::string(SQLSessionWaitEvents, conn);
+            par.insert(par.end(), toQValue(Session));
+        }
+        else
+            sql = toSQL::string(SQLWaitEvents, conn);
+        Query = new toNoBlockQuery(conn, sql, par);
+
+        Poll.start(100);
+    }
+    TOCATCH
+}
+
+void toWaitEvents::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    std::map<QCString, QString>::iterator i;
+    int id = 1;
+    while ((i = data.find(prefix + ":" + QString::number(id).latin1())) != data.end())
+    {
+        HideMap[(*i).second] = true;
+        id++;
+    }
+}
+
+void toWaitEvents::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    int id = 1;
+    for (QListViewItem *ci = Types->firstChild();ci;ci = ci->nextSibling())
+    {
+        toWaitEventsItem * item = dynamic_cast<toWaitEventsItem *>(ci);
+        if (!item->isSelected())
+        {
+            data[prefix + ":" + QString::number(id).latin1()] = item->allText(1);
+            id++;
+        }
+    }
+}

Added: kde-extras/tora/branches/upstream/current/src/towaitevents.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/towaitevents.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/towaitevents.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,103 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOWAITEVENTS_H
+#define TOWAITEVENTS_H
+
+#include "config.h"
+#include "tobackground.h"
+
+#include <list>
+#include <map>
+#include <algorithm>
+
+#include <qvbox.h>
+
+class QListView;
+class toNoBlockQuery;
+class toPieChart;
+class toResultBar;
+
+class toWaitEvents : public QVBox
+{
+    Q_OBJECT
+
+    toResultBar *Delta;
+    toResultBar *DeltaTimes;
+    toPieChart *AbsolutePie;
+    toPieChart *DeltaPie;
+    QListView *Types;
+    toNoBlockQuery *Query;
+    toBackground Poll;
+
+    bool First;
+    bool ShowTimes;
+    QString Now;
+    std::list<QString> Labels;
+    time_t LastTime;
+    std::list<double> LastCurrent;
+    std::list<double> LastTimes;
+    std::list<double> Current;
+    std::list<double> CurrentTimes;
+    std::list<double> Relative;
+    std::list<double> RelativeTimes;
+    std::list<bool> Enabled;
+
+    int Session;
+
+    std::map<QString, bool> HideMap;
+
+    void setup(int session);
+public:
+    toWaitEvents(QWidget *parent, const char *name);
+    toWaitEvents(int session, QWidget *parent, const char *name);
+
+    void setSession(int session);
+
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+public slots:
+    virtual void connectionChanged(void);
+    virtual void changeSelection(void);
+    virtual void poll(void);
+    virtual void refresh(void);
+    virtual void start(void);
+    virtual void stop(void);
+    virtual void changeType(int);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toworksheet.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toworksheet.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toworksheet.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,2186 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tochangeconnection.h"
+#include "toconf.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "toparamget.h"
+#include "toresultbar.h"
+#include "toresultcols.h"
+#include "toresultcombo.h"
+#include "toresultlong.h"
+#include "toresultplan.h"
+#include "toresultresources.h"
+#include "toresultstats.h"
+#include "toresultview.h"
+#include "tosession.h"
+#include "tosgatrace.h"
+#include "totabwidget.h"
+#include "totool.h"
+#include "totabwidget.h"
+#include "tovisualize.h"
+#include "toworksheet.h"
+#include "toworksheetsetupui.h"
+#include "toworksheetstatistic.h"
+
+#ifdef TO_KDE
+#include <kfiledialog.h>
+#include <kmenubar.h>
+#endif
+
+#include <qaccel.h>
+#include <qcheckbox.h>
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qfiledialog.h>
+#include <qfileinfo.h>
+#include <qgrid.h>
+#include <qgroupbox.h>
+#include <qheader.h>
+#include <qinputdialog.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qlistview.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qmultilineedit.h>
+#include <qnamespace.h>
+#include <qpixmap.h>
+#include <qprogressdialog.h>
+#include <qpushbutton.h>
+#include <qregexp.h>
+#include <qsplitter.h>
+#include <qtabwidget.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+#include <qworkspace.h>
+
+#include "toworksheet.moc"
+#include "toworksheetsetupui.moc"
+
+#include "icons/clock.xpm"
+#include "icons/recall.xpm"
+#include "icons/describe.xpm"
+#include "icons/eraselog.xpm"
+#include "icons/execute.xpm"
+#include "icons/executeall.xpm"
+#include "icons/executestep.xpm"
+#include "icons/explainplan.xpm"
+#include "icons/filesave.xpm"
+#include "icons/insertsaved.xpm"
+#include "icons/previous.xpm"
+#include "icons/refresh.xpm"
+#include "icons/stop.xpm"
+#include "icons/toworksheet.xpm"
+#include "icons/up.xpm"
+#include "icons/down.xpm"
+
+#ifdef TO_KDE_KACCELMANAGER
+#  include <kaccelmanager.h>
+#endif
+
+#define TO_ID_STATISTICS  (toMain::TO_TOOL_MENU_ID+ 0)
+#define TO_ID_STOP   (toMain::TO_TOOL_MENU_ID+ 1)
+#define TO_ID_PLAN   (toMain::TO_TOOL_MENU_ID+ 2)
+
+#define CONF_AUTO_SAVE    "AutoSave"
+#define CONF_CHECK_SAVE   "CheckSave"
+#define CONF_AUTO_LOAD    "AutoLoad"
+#define CONF_LOG_AT_END   "LogAtEnd"
+#define CONF_LOG_MULTI    "LogMulti"
+#define CONF_STATISTICS   "Statistics"
+#define CONF_TIMED_STATS  "TimedStats"
+#define CONF_NUMBER   "Number"
+#define CONF_MOVE_TO_ERR  "MoveToError"
+#define CONF_HISTORY   "History"
+#define CONF_EXEC_LOG     "ExecLog"
+#define CONF_TOPLEVEL_DESCRIBE "ToplevelDescribe"
+
+class toWorksheetSetup : public toWorksheetSetupUI, public toSettingTab
+{
+    toTool *Tool;
+
+public:
+    toWorksheetSetup(toTool *tool, QWidget* parent = 0, const char* name = 0)
+            : toWorksheetSetupUI(parent, name), toSettingTab("worksheet.html#preferences"), Tool(tool)
+    {
+        if (!tool->config(CONF_AUTO_SAVE, "").isEmpty())
+            AutoSave->setChecked(true);
+        if (!tool->config(CONF_CHECK_SAVE, "Yes").isEmpty())
+            CheckSave->setChecked(true);
+        if (!tool->config(CONF_LOG_AT_END, "Yes").isEmpty())
+            LogAtEnd->setChecked(true);
+        if (!tool->config(CONF_LOG_MULTI, "Yes").isEmpty())
+            LogMulti->setChecked(true);
+        MoveToError->setChecked(!tool->config(CONF_MOVE_TO_ERR, "Yes").isEmpty());
+        if (!tool->config(CONF_STATISTICS, "").isEmpty())
+            Statistics->setChecked(true);
+        TimedStatistics->setChecked(!tool->config(CONF_TIMED_STATS, "Yes").isEmpty());
+        History->setChecked(!tool->config(CONF_HISTORY, "").isEmpty());
+        if (!tool->config(CONF_NUMBER, "Yes").isEmpty())
+            DisplayNumber->setChecked(true);
+        if (!tool->config(CONF_TOPLEVEL_DESCRIBE, "Yes").isEmpty())
+            ToplevelDescribe->setChecked(true);
+        DefaultFile->setText(tool->config(CONF_AUTO_LOAD, ""));
+        ExecLog->setChecked(!tool->config(CONF_EXEC_LOG, "").isEmpty());
+#ifdef TO_NO_ORACLE
+
+        TimedStatistics->hide();
+        MoveToError->hide();
+        Statistics->hide();
+#endif
+
+    }
+    virtual void saveSetting(void)
+    {
+        if (AutoSave->isChecked())
+            Tool->setConfig(CONF_AUTO_SAVE, "Yes");
+        else
+            Tool->setConfig(CONF_AUTO_SAVE, "");
+        if (CheckSave->isChecked())
+            Tool->setConfig(CONF_CHECK_SAVE, "Yes");
+        else
+            Tool->setConfig(CONF_CHECK_SAVE, "");
+        if (LogAtEnd->isChecked())
+            Tool->setConfig(CONF_LOG_AT_END, "Yes");
+        else
+            Tool->setConfig(CONF_LOG_AT_END, "");
+        if (LogMulti->isChecked())
+            Tool->setConfig(CONF_LOG_MULTI, "Yes");
+        else
+            Tool->setConfig(CONF_LOG_MULTI, "");
+        Tool->setConfig(CONF_TOPLEVEL_DESCRIBE, ToplevelDescribe->isChecked() ? "Yes" : "");
+        Tool->setConfig(CONF_MOVE_TO_ERR, MoveToError->isChecked() ? "Yes" : "");
+        Tool->setConfig(CONF_STATISTICS, Statistics->isChecked() ? "Yes" : "");
+        Tool->setConfig(CONF_HISTORY, History->isChecked() ? "Yes" : "");
+        Tool->setConfig(CONF_TIMED_STATS, TimedStatistics->isChecked() ? "Yes" : "");
+        Tool->setConfig(CONF_NUMBER, DisplayNumber->isChecked() ? "Yes" : "");
+        Tool->setConfig(CONF_EXEC_LOG, ExecLog->isChecked() ? "Yes" : "");
+        Tool->setConfig(CONF_AUTO_LOAD, DefaultFile->text());
+    }
+public slots:
+    void chooseFile(void)
+    {
+        QString str = toOpenFilename(DefaultFile->text(), QString::null, this);
+        if (!str.isEmpty())
+            DefaultFile->setText(str);
+    }
+};
+
+class toWorksheetTool : public toTool
+{
+protected:
+    virtual const char **pictureXPM(void)
+    {
+        return const_cast<const char**>(toworksheet_xpm);
+    }
+public:
+    toWorksheetTool()
+            : toTool(10, "SQL Editor")
+    { }
+    virtual const char *menuItem()
+    {
+        return "SQL Editor";
+    }
+    virtual QWidget *toolWindow(QWidget *main, toConnection &connection)
+    {
+        return new toWorksheet(main, connection);
+    }
+    virtual QWidget *configurationTab(QWidget *parent)
+    {
+        return new toWorksheetSetup(this, parent);
+    }
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+    virtual void closeWindow(toConnection &connection){};
+};
+
+static toWorksheetTool WorksheetTool;
+
+class toWorksheetText : public toHighlightedText
+{
+    toWorksheet *Worksheet;
+public:
+    toWorksheetText(toWorksheet *worksheet, QWidget *parent, const char *name = NULL)
+            : toHighlightedText(parent, name), Worksheet(worksheet)
+    { }
+    /** Reimplemented for internal reasons.
+     */
+    virtual void keyPressEvent(QKeyEvent *e)
+    {
+        if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toWorksheet", "Ctrl+Return", "Worksheet|Execute current"))))
+        {
+            Worksheet->execute();
+            e->accept();
+        }
+        else if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toWorksheet", "F8", "Worksheet|Execute all"))))
+        {
+            Worksheet->executeAll();
+            e->accept();
+        }
+        else if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toWorksheet", "F9", "Worksheet|Execute next"))))
+        {
+            Worksheet->executeStep();
+            e->accept();
+        }
+        else if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toWorksheet", "Shift+F9", "Worksheet|Execute newline separated"))))
+        {
+            Worksheet->executeNewline();
+            e->accept();
+        }
+        else if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toWorksheet", "F7", "Worksheet|Execute saved SQL"))))
+        {
+            Worksheet->executeSaved();
+            e->accept();
+        }
+        else if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toWorksheet", "Shift+F7", "Worksheet|Insert saved SQL"))))
+        {
+            Worksheet->insertSaved();
+            e->accept();
+        }
+        else if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toWorksheet", "F4", "Worksheet|Describe under cursor"))))
+        {
+            Worksheet->describe();
+            e->accept();
+        }
+        else if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toWorksheet", "Alt+Up", "Worksheet|Previous log entry"))))
+        {
+            Worksheet->executePreviousLog();
+            e->accept();
+        }
+        else if (toCheckKeyEvent(e, QKeySequence(qApp->translate("toWorksheet", "Alt+Down", "Worksheet|Next log entry"))))
+        {
+            Worksheet->executeNextLog();
+            e->accept();
+        }
+        else
+        {
+            toHighlightedText::keyPressEvent(e);
+        }
+    }
+    virtual bool editSave(bool askfile)
+    {
+        bool ret = toHighlightedText::editSave(askfile);
+        Worksheet->setCaption();
+        return ret;
+    }
+    virtual bool editOpen(QString suggestedFile)
+    {
+        int ret = 1;
+        if (isModified())
+        {
+            ret = TOMessageBox::information(this,
+                                            qApp->translate("toWorksheetText", "Save changes?"),
+                                            qApp->translate("toWorksheetText", "The editor has been changed. Do you want to save them,\n"
+                                                            "discard changes or open file in new worksheet?"),
+                                            qApp->translate("toWorksheetText", "&Save"),
+                                            qApp->translate("toWorksheetText", "&Discard"),
+                                            qApp->translate("toWorksheetText", "&New worksheet"), 0);
+            if (ret < 0)
+                return false;
+            else if (ret == 0)
+            {
+                if (!editSave(false))
+                    return false;
+            }
+        }
+
+        QString fname;
+        if (suggestedFile != QString::null)
+            fname = suggestedFile;
+        else
+        {
+            QFileInfo file(filename());
+            fname = toOpenFilename(file.dirPath(), QString::null, this);
+        }
+        if (fname.isEmpty())
+            return false;
+        try
+        {
+            if (ret == 2)
+                toWorksheet::fileWorksheet(fname);
+            else
+            {
+                openFilename(fname);
+                Worksheet->setCaption();
+            }
+            return true;
+        }
+        TOCATCH
+
+        return false;
+    }
+};
+
+void toWorksheet::viewResources(void)
+{
+    try
+    {
+        QString address = toSQLToAddress(connection(), QueryString);
+
+        Resources->changeParams(address);
+
+        QString sql = toSQL::string(TOSQL_LONGOPS, connection());
+        sql += "   AND b.SQL_Address||':'||b.SQL_Hash_Value = :addr<char[100]>";
+        LongOps->setSQL(sql);
+        LongOps->clearParams();
+        LongOps->changeParams(address);
+    }
+    TOCATCH
+}
+
+#define TOWORKSHEET "toWorksheet:"
+
+void toWorksheet::setup(bool autoLoad)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("SQL worksheet"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(execute_xpm)),
+                    tr("Execute current statement"),
+                    tr("Execute current statement"),
+                    this, SLOT(execute(void)),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(executestep_xpm)),
+                    tr("Step through statements"),
+                    tr("Step through statements"),
+                    this, SLOT(executeStep(void)),
+                    toolbar);
+    new QToolButton(QPixmap(const_cast<const char**>(executeall_xpm)),
+                    tr("Execute all statements"),
+                    tr("Execute all statements"),
+                    this, SLOT(executeAll(void)),
+                    toolbar);
+    toolbar->addSeparator();
+    new QToolButton(QPixmap(const_cast<const char**>(refresh_xpm)),
+                    tr("Reexecute Last Statement"),
+                    tr("Reexecute Last Statement"),
+                    this, SLOT(refreshSetup(void)),
+                    toolbar);
+    RefreshSeconds = 60;
+    connect(&RefreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
+
+    LastLine = LastOffset = -1;
+    LastID = 0;
+
+    if (Light)
+    {
+        Editor = new toWorksheetText(this, this);
+#ifdef TO_KDE_KACCELMANAGER
+        KAcceleratorManager::setNoAccel( Editor );
+#endif
+        Current = Result = new toResultLong(this);
+        Result->hide();
+        connect(Result, SIGNAL(done(void)), this, SLOT(queryDone(void)));
+        connect(Result, SIGNAL(firstResult(const QString &, const toConnection::exception &, bool)),
+                this, SLOT(addLog(const QString &, const toConnection::exception &, bool)));
+        ResultTab = NULL;
+        Plan = NULL;
+        CurrentTab = NULL;
+        Resources = NULL;
+        Statistics = NULL;
+        Logging = NULL;
+        LastLogItem = NULL;
+        StatisticButton = NULL;
+        StatTab = NULL;
+        Columns = NULL;
+        Refresh = NULL;
+        ToolMenu = NULL;
+        Visualize = NULL;
+        WaitChart = IOChart = NULL;
+        toolbar->addSeparator();
+        StopButton = new QToolButton(QPixmap(const_cast<const char**>(stop_xpm)),
+                                     tr("Stop execution"),
+                                     tr("Stop execution"),
+                                     Result, SLOT(stop(void)),
+                                     toolbar);
+        StopButton->setEnabled(false);
+        toolbar->setStretchableWidget(Started = new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+        Started->setAlignment(AlignRight | AlignVCenter | ExpandTabs);
+    }
+    else
+    {
+        QSplitter *splitter = new QSplitter(Vertical, this);
+
+        Editor = new toWorksheetText(this, splitter);
+
+	QValueList<int> list;
+	list.append(75);
+	splitter->setSizes(list);
+
+#ifdef TO_KDE_KACCELMANAGER
+        KAcceleratorManager::setNoAccel( Editor );
+#endif
+        ResultTab = new toTabWidget(splitter);
+        QVBox *box = new QVBox(ResultTab);
+        ResultTab->addTab(box, tr("&Result"));
+
+        Current = Result = new toResultLong(box);
+        connect(Result, SIGNAL(done(void)), this, SLOT(queryDone(void)));
+        connect(Result, SIGNAL(firstResult(const QString &, const toConnection::exception &, bool)),
+                this, SLOT(addLog(const QString &, const toConnection::exception &, bool)));
+
+        bool toplevel = !WorksheetTool.config(CONF_TOPLEVEL_DESCRIBE, "Yes").isEmpty();
+        Columns = new toResultCols(box, "description", toplevel ? WType_TopLevel : 0);
+        Columns->hide();
+
+        ResultTab->setTabEnabled(Columns, false);
+        Plan = new toResultPlan(ResultTab);
+        ResultTab->addTab(Plan, tr("E&xecution plan"));
+
+        ResourceSplitter = new QSplitter(Vertical, ResultTab);
+        Resources = new toResultResources(ResourceSplitter);
+
+        LongOps = new toResultLong(ResourceSplitter);
+
+        Visualize = new toVisualize(Result, ResultTab);
+        ResultTab->addTab(Visualize, tr("&Visualize"));
+        ResultTab->addTab(ResourceSplitter, tr("&Information"));
+        ResultTab->setTabShown(ResourceSplitter, Resources->handled());
+
+        StatTab = new QVBox(ResultTab);
+        {
+            QToolBar *stattool = toAllocBar(StatTab, tr("Worksheet Statistics"));
+            new QToolButton(QPixmap(const_cast<const char**>(filesave_xpm)),
+                            tr("Save statistics for later analysis"),
+                            tr("Save statistics for later analysis"),
+                            this, SLOT(saveStatistics(void)),
+                            stattool);
+            stattool->setStretchableWidget(new QLabel(stattool));
+        }
+        splitter = new QSplitter(Horizontal, StatTab);
+        Statistics = new toResultStats(true, splitter);
+        Statistics->setTabWidget(ResultTab);
+        WaitChart = new toResultBar(splitter);
+        try
+        {
+            WaitChart->setSQL(toSQL::sql(TO_SESSION_WAIT));
+        }
+        catch (...)
+        {}
+        WaitChart->setTitle(tr("Wait states"));
+        WaitChart->setYPostfix(QString::fromLatin1("ms/s"));
+        WaitChart->setSamples( -1);
+        WaitChart->start();
+        connect(Statistics, SIGNAL(sessionChanged(const QString &)),
+                WaitChart, SLOT(changeParams(const QString &)));
+        IOChart = new toResultBar(splitter);
+        try
+        {
+            IOChart->setSQL(toSQL::sql(TO_SESSION_IO));
+        }
+        catch (...)
+        {}
+        IOChart->setTitle(tr("I/O"));
+        IOChart->setYPostfix(tr("blocks/s"));
+        IOChart->setSamples( -1);
+        IOChart->start();
+        connect(Statistics, SIGNAL(sessionChanged(const QString &)),
+                IOChart, SLOT(changeParams(const QString &)));
+        ResultTab->addTab(StatTab, tr("&Statistics"));
+        ResultTab->setTabEnabled(StatTab, false);
+
+        Logging = new toListView(ResultTab);
+        ResultTab->addTab(Logging, tr("&Logging"));
+        Logging->addColumn(tr("SQL"));
+        Logging->addColumn(tr("Result"));
+        Logging->addColumn(tr("Timestamp"));
+        Logging->addColumn(tr("Duration"));
+        Logging->setColumnAlignment(3, AlignRight);
+        Logging->setSelectionMode(QListView::Single);
+        connect(Logging, SIGNAL(selectionChanged(QListViewItem *)), this, SLOT(executeLog()));
+        LastLogItem = NULL;
+
+        toolbar->addSeparator();
+        new QToolButton(QPixmap(const_cast<const char**>(describe_xpm)),
+                        tr("Describe under cursor"),
+                        tr("Describe under cursor"),
+                        this, SLOT(describe(void)),
+                        toolbar);
+        PlanButton = new QToolButton(QPixmap(const_cast<const char**>(explainplan_xpm)),
+                                     tr("Explain plan of current statement"),
+                                     tr("Explain plan of current statement"),
+                                     this, SLOT(explainPlan(void)),
+                                     toolbar);
+        PlanButton->setEnabled(Plan->handled());
+        StopButton = new QToolButton(QPixmap(const_cast<const char**>(stop_xpm)),
+                                     tr("Stop execution"),
+                                     tr("Stop execution"),
+                                     this, SLOT(stop(void)),
+                                     toolbar);
+        StopButton->setEnabled(false);
+        toolbar->addSeparator();
+        new QToolButton(QPixmap(const_cast<const char**>(eraselog_xpm)),
+                        tr("Clear execution log"),
+                        tr("Clear execution log"),
+                        this, SLOT(eraseLogButton(void)),
+                        toolbar);
+
+        toolbar->addSeparator();
+        StatisticButton = new QToolButton(toolbar);
+        StatisticButton->setToggleButton(true);
+        StatisticButton->setIconSet(QIconSet(QPixmap(const_cast<const char**>(clock_xpm))));
+        connect(StatisticButton, SIGNAL(toggled(bool)), this, SLOT(enableStatistic(bool)));
+        QToolTip::add
+            (StatisticButton, tr("Gather session statistic of execution"));
+#ifdef TO_NO_ORACLE
+
+        QLabel *label =
+#endif
+            new QLabel(tr("Refresh") + " ", toolbar, TO_KDE_TOOLBAR_WIDGET);
+        Refresh = toRefreshCreate(toolbar, TO_KDE_TOOLBAR_WIDGET);
+#ifdef TO_NO_ORACLE
+
+        label->hide();
+        Refresh->hide();
+#else
+
+        toolbar->addSeparator();
+#endif
+
+        connect(Refresh, SIGNAL(activated(const QString &)), this, SLOT(changeRefresh(const QString &)));
+        connect(StatisticButton, SIGNAL(toggled(bool)), Refresh, SLOT(setEnabled(bool)));
+        Refresh->setEnabled(false);
+        Refresh->setFocusPolicy(NoFocus);
+
+        new QToolButton(QPixmap(const_cast<const char**>(up_xpm)),
+                        tr("Previous log entry"),
+                        tr("Previous log entry"),
+                        this, SLOT(executePreviousLog()),
+                        toolbar);
+        new QToolButton(QPixmap(const_cast<const char**>(down_xpm)),
+                        tr("Next log entry"),
+                        tr("Next log entry"),
+                        this, SLOT(executeNextLog()),
+                        toolbar);
+        toolbar->addSeparator();
+
+        InsertSavedButton = new toPopupButton(QPixmap(const_cast<const char**>(insertsaved_xpm)),
+                                              tr("Insert current saved SQL"),
+                                              tr("Insert current saved SQL"),
+                                              toolbar);
+        InsertSavedMenu = new QPopupMenu(InsertSavedButton);
+        InsertSavedButton->setPopup(InsertSavedMenu);
+        connect(InsertSavedMenu, SIGNAL(aboutToShow()), this, SLOT(showInsertSaved()));
+        connect(InsertSavedMenu, SIGNAL(activated(int)), this, SLOT(insertSaved(int)));
+
+        SavedButton = new toPopupButton(QPixmap(const_cast<const char**>(recall_xpm)),
+                                        tr("Run current saved SQL"),
+                                        tr("Run current saved SQL"),
+                                        toolbar);
+        SavedMenu = new QPopupMenu(SavedButton);
+        SavedButton->setPopup(SavedMenu);
+        connect(SavedMenu, SIGNAL(aboutToShow()), this, SLOT(showSaved()));
+        connect(SavedMenu, SIGNAL(activated(int)), this, SLOT(executeSaved(int)));
+
+        new QToolButton(QPixmap(const_cast<const char**>(previous_xpm)),
+                        tr("Save last SQL"),
+                        tr("Save last SQL"),
+                        this, SLOT(saveLast(void)),
+                        toolbar);
+
+        toolbar->setStretchableWidget(Started = new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+        Started->setAlignment(AlignRight | AlignVCenter | ExpandTabs);
+
+        Schema = new toResultCombo(toolbar);
+        Schema->setSQL(toSQL::sql(toSQL::TOSQL_USERLIST));
+        if (toIsMySQL(connection()))
+            Schema->setSelected(connection().database());
+        else if (toIsOracle(connection()) || toIsSapDB(connection()))
+            Schema->setSelected(connection().user().upper());
+        else
+            Schema->setSelected(connection().user());
+        connect(Schema, SIGNAL(activated(int)), this, SLOT(changeSchema()));
+        try
+        {
+            Schema->refresh();
+        }
+        catch (...)
+        {}
+
+        new toChangeConnection(toolbar, TO_KDE_TOOLBAR_WIDGET);
+
+        connect(ResultTab, SIGNAL(currentChanged(QWidget *)),
+                this, SLOT(changeResult(QWidget *)));
+
+        if (autoLoad)
+        {
+            Editor->setFilename(WorksheetTool.config(CONF_AUTO_LOAD, ""));
+            if (!Editor->filename().isEmpty())
+            {
+                try
+                {
+                    QCString data = toReadFile(Editor->filename());
+                    Editor->setText(QString::fromLocal8Bit(data));
+                    Editor->setModified(false);
+                }
+                TOCATCH
+            }
+        }
+
+        ToolMenu = NULL;
+        connect(toMainWidget()->workspace(), SIGNAL(windowActivated(QWidget *)),
+                this, SLOT(windowActivated(QWidget *)));
+
+        try
+        {
+            if (connection().provider() == "Oracle")
+            {
+                if (!WorksheetTool.config(CONF_STATISTICS, "").isEmpty())
+                {
+                    show();
+                    StatisticButton->setOn(true);
+                }
+            }
+            else
+            {
+                StatisticButton->setShown(false);
+            }
+        }
+        TOCATCH
+
+        connect(this, SIGNAL(connectionChange()), this, SLOT(connectionChanged()));
+    }
+    Editor->setAnalyzer(connection().analyzer());
+    connect(Editor, SIGNAL(displayMenu(QPopupMenu *)), this, SLOT(displayMenu(QPopupMenu *)));
+
+    connect(&Poll, SIGNAL(timeout()), this, SLOT(poll()));
+    setFocusProxy(Editor);
+}
+
+toWorksheet::toWorksheet(QWidget *main, toConnection &connection, bool autoLoad)
+        : toToolWidget(WorksheetTool, "worksheet.html", main, connection), Light(false)
+{
+    setup(autoLoad);
+}
+
+toWorksheet::toWorksheet(QWidget *main, const char *name, toConnection &connection)
+        : toToolWidget(WorksheetTool, "worksheetlight.html", main, connection, name), Light(true)
+{
+    setup(false);
+}
+
+void toWorksheet::changeRefresh(const QString &str)
+{
+    try
+    {
+        if (!Light && StopButton->isEnabled() && StatisticButton->isOn())
+            toRefreshParse(timer(), str);
+    }
+    TOCATCH
+}
+
+void toWorksheet::windowActivated(QWidget *widget)
+{
+    if (Light)
+        return ;
+
+    QWidget *w = this;
+    while (w && w != widget)
+    {
+        w = w->parentWidget();
+    }
+
+    if (widget == w)
+    {
+        if (!ToolMenu)
+        {
+            ToolMenu = new QPopupMenu(this);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(execute_xpm)),
+                                 tr("&Execute Current"), this, SLOT(execute(void)),
+                                 toKeySequence(tr("Ctrl+Return", "Worksheet|Execute current")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(executestep_xpm)),
+                                 tr("Execute &Next"), this, SLOT(executeStep(void)),
+                                 toKeySequence(tr("F9", "Worksheet|Execute next")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(executeall_xpm)),
+                                 tr("Execute &All"), this, SLOT(executeAll(void)),
+                                 toKeySequence(tr("F8", "Worksheet|Execute all")));
+            ToolMenu->insertItem(tr("Execute &Newline Separated"), this,
+                                 SLOT(executeNewline(void)),
+                                 toKeySequence(tr("Shift+F9", "Worksheet|Execute newline separated")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)),
+                                 tr("&Reexecute Last Statement"), this, SLOT(refresh(void)),
+                                 toKeySequence(tr("F5", "Worksheet|Reexecute last statement")));
+            if (connection().provider() == "Oracle")
+                ToolMenu->insertItem(tr("Check syntax of buffer"),
+                                     this, SLOT(parseAll()),
+                                     toKeySequence(tr("Ctrl+F9", "Worksheet|Check syntax of buffer")));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(describe_xpm)),
+                                 tr("&Describe Under Cursor"), this, SLOT(describe(void)),
+                                 toKeySequence(tr("F4", "Worksheet|Describe under cursor")));
+            ToolMenu->insertItem(tr("&Explain current statement"), this, SLOT(explainPlan(void)),
+                                 toKeySequence(tr("F3", "Worksheet|Explain plan")), TO_ID_PLAN);
+            if (connection().provider() == "Oracle")
+                ToolMenu->insertItem(tr("&Enable Statistics"), this, SLOT(toggleStatistic(void)),
+                                     0, TO_ID_STATISTICS);
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(stop_xpm)),
+                                 tr("&Stop Execution"), Result, SLOT(stop(void)),
+                                 0, TO_ID_STOP);
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(tr("Execute Saved SQL"),
+                                 this, SLOT(executeSaved()),
+                                 toKeySequence(tr("F7", "Worksheet|Execute saved SQL")));
+            ToolMenu->insertItem(tr("Select Saved SQL"),
+                                 this, SLOT(selectSaved()),
+                                 toKeySequence(tr("Ctrl+Shift+S", "Worksheet|Select saved SQL")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(previous_xpm)),
+                                 tr("Save last SQL"),
+                                 this, SLOT(saveLast()));
+            ToolMenu->insertItem(tr("Edit Saved SQL..."),
+                                 this, SLOT(editSaved()));
+            ToolMenu->insertSeparator();
+            ToolMenu->insertItem(tr("Previous Log Entry"), this, SLOT(executePreviousLog()),
+                                 toKeySequence(tr("Alt+Up", "Worksheet|Previous log entry")));
+            ToolMenu->insertItem(tr("Next Log Entry"), this, SLOT(executeNextLog()),
+                                 toKeySequence(tr("Alt+Down", "Worksheet|Next log entry")));
+            ToolMenu->insertItem(QPixmap(const_cast<const char**>(eraselog_xpm)),
+                                 tr("Erase &Log"), this, SLOT(eraseLogButton(void)));
+
+
+            toMainWidget()->menuBar()->insertItem(tr("Edit&or"), ToolMenu, -1, toToolMenuIndex());
+            ToolMenu->setItemEnabled(TO_ID_STOP, StopButton->isEnabled());
+            ToolMenu->setItemChecked(TO_ID_STATISTICS, StatisticButton->isOn());
+            ToolMenu->setItemEnabled(TO_ID_PLAN, Plan->handled());
+        }
+    }
+    else
+    {
+        delete ToolMenu;
+        ToolMenu = NULL;
+    }
+}
+
+void toWorksheet::connectionChanged(void)
+{
+    try
+    {
+        StatisticButton->setShown(connection().provider() == "Oracle");
+        ResultTab->setTabShown(ResourceSplitter, Resources->handled());
+        Editor->setAnalyzer(connection().analyzer());
+        PlanButton->setEnabled(Plan->handled());
+        delete ToolMenu;
+        ToolMenu = NULL;
+        windowActivated(this);
+    }
+    TOCATCH
+}
+
+bool toWorksheet::checkSave(bool input)
+{
+    if (Light)
+        return true;
+    if (Editor->isModified())
+    {
+        if (WorksheetTool.config(CONF_AUTO_SAVE, "").isEmpty() ||
+                Editor->filename().isEmpty())
+        {
+            if (!WorksheetTool.config(CONF_CHECK_SAVE, "Yes").isEmpty())
+            {
+                if (input)
+                {
+                    QString conn;
+                    try
+                    {
+                        conn = connection().description();
+                    }
+                    catch (...)
+                    {
+                        conn += QString::fromLatin1("unknown connection");
+                    }
+                    QString str = tr("Save changes to editor for %1").arg(conn);
+                    if (!Editor->filename().isEmpty())
+                        str += QString::fromLatin1("\n(") + Editor->filename() + QString::fromLatin1(")");
+                    int ret = TOMessageBox::information(this,
+                                                        tr("Save file"),
+                                                        str,
+                                                        tr("&Yes"), tr("&No"), tr("Cancel"), 0, 2);
+                    if (ret == 1)
+                        return true;
+                    else if (ret == 2)
+                        return false;
+                }
+                else
+                    return true;
+            }
+            else
+                return true;
+            if (Editor->filename().isEmpty() && input)
+                Editor->setFilename(toSaveFilename(Editor->filename(), QString::null, this));
+            if (Editor->filename().isEmpty())
+                return false;
+        }
+        if (!toWriteFile(Editor->filename(), Editor->text()))
+            return false;
+        Editor->setModified(false);
+    }
+    return true;
+}
+
+bool toWorksheet::close(bool del)
+{
+    if (checkSave(true))
+    {
+        Result->stop();
+        return QVBox::close(del);
+    }
+    return false;
+}
+
+toWorksheet::~toWorksheet()
+{
+    checkSave(false);
+    eraseLogButton();
+}
+
+#define LARGE_BUFFER 4096
+
+void toWorksheet::changeResult(QWidget *widget)
+{
+    CurrentTab = widget;
+    if (QueryString.length())
+    {
+        if (CurrentTab == Plan)
+            Plan->query(QueryString);
+        else if (CurrentTab == ResourceSplitter)
+            viewResources();
+        else if (CurrentTab == Statistics && Result->running())
+            Statistics->refreshStats(false);
+    }
+}
+
+void toWorksheet::refresh(void)
+{
+    if (!QueryString.isEmpty())
+        query(QueryString, Normal);
+    if (RefreshSeconds > 0)
+        RefreshTimer.start(RefreshSeconds*1000, true);
+}
+
+static QString unQuote(const QString &str)
+{
+    if (str.at(0).latin1() == '\"' && str.at(str.length() - 1).latin1() == '\"')
+        return str.left(str.length() - 1).right(str.length() - 2);
+    return str.upper();
+}
+
+bool toWorksheet::describe(const QString &query)
+{
+    try
+    {
+        QRegExp white(QString::fromLatin1("[ \r\n\t.]+"));
+        QStringList part = QStringList::split(white, query);
+        if (part[0].upper() == QString::fromLatin1("DESC") ||
+                part[0].upper() == QString::fromLatin1("DESCRIBE"))
+        {
+            if (Light)
+                return true;
+            if (toIsOracle(connection()))
+            {
+                if (part.count() == 2)
+                {
+                    Columns->changeParams(unQuote(part[1]));
+                }
+                else if (part.count() == 3)
+                {
+                    Columns->changeParams(unQuote(part[1]), unQuote(part[2]));
+                }
+                else
+                    throw tr("Wrong number of parameters for describe");
+            }
+            else if (connection().provider() == "MySQL")
+            {
+                if (part.count() == 2)
+                {
+                    Columns->changeParams(part[1]);
+                }
+                else
+                    throw tr("Wrong number of parameters for describe");
+            }
+            Current->hide();
+            Columns->show();
+            Current = Columns;
+            return true;
+        }
+        else
+        {
+            if (Light)
+                return false;
+            QWidget *curr = ResultTab->currentPage();
+            Current->hide();
+            Result->show();
+            Current = Result;
+            if (curr == Columns)
+                ResultTab->showPage(Result);
+            return false;
+        }
+    }
+    TOCATCH
+    return false;
+}
+
+void toWorksheet::query(const QString &str, execType type)
+{
+    Result->stop();
+    RefreshTimer.stop();
+
+    QRegExp strq(QString::fromLatin1("'[^']*'"));
+    QString chk = str.lower();
+    chk.replace(strq, QString::fromLatin1(" "));
+    bool code = false;
+    static QRegExp codere(QString::fromLatin1("[^a-z0-9]end\\s+[a-z0-9_-]*;$"), true);
+    static QRegExp codere2(QString::fromLatin1("[^a-z0-9]end;"), true);
+
+    if (codere.match(chk) >= 0 || codere2.match(chk) >= 0)
+        code = true;
+
+    QueryString = str;
+    if (!code && QueryString.length() > 0 && QueryString.at(QueryString.length() - 1) == ';')
+        QueryString.truncate(QueryString.length() - 1);
+
+    bool nobinds = false;
+    chk = str.lower();
+    chk.replace(strq, QString::fromLatin1(" "));
+    chk = chk.simplifyWhiteSpace();
+    chk.replace(QRegExp(QString::fromLatin1(" or replace ")), QString::fromLatin1(" "));
+    if (chk.startsWith(QString::fromLatin1("create trigger ")))
+        nobinds = true;
+
+    if (type == OnlyPlan)
+    {
+        ResultTab->showPage(Plan);
+        Plan->query(str);
+    }
+    else if (!describe(QueryString))
+    {
+
+        toSQLParse::stringTokenizer tokens(str);
+        QString first = tokens.getToken(true).upper();
+        if (first == QString::fromLatin1("REM") ||
+                first == QString::fromLatin1("ASSIGN") ||
+                first == QString::fromLatin1("PROMPT") ||
+                first == QString::fromLatin1("COLUMN") ||
+                first == QString::fromLatin1("SPOOL") ||
+                first == QString::fromLatin1("STORE"))
+        {
+            QString t = tr("Ignoring SQL*Plus command");
+            Timer.start();
+            addLog(QueryString, toConnection::exception(t), false);
+            toStatusMessage(t, true);
+            return ;
+        }
+
+        toQList param;
+        if (!nobinds)
+            try
+            {
+                param = toParamGet::getParam(connection(), this, QueryString);
+            }
+            catch (...)
+            {
+                return ;
+            }
+        toStatusMessage(tr("Processing query"), true);
+
+        if (type == Parse)
+        {
+            try
+            {
+                First = false;
+                Timer.start();
+                connection().parse(QueryString);
+            }
+            catch (const QString &exc)
+            {
+                addLog(QueryString, exc, true);
+            }
+        }
+        else if (type == Direct)
+        {
+            try
+            {
+                First = false;
+                Timer.start();
+                QString buffer;
+                if (WorksheetTool.config(CONF_HISTORY, "").isEmpty() && !Light)
+                {
+                    toQuery query(connection(), toQuery::Long, QueryString, param);
+                    if (query.rowsProcessed() > 0)
+                        buffer = tr("%1 rows processed").arg((int)query.rowsProcessed());
+                    else
+                        buffer = tr("Query executed");
+                }
+                else
+                {
+                    toResultView *query = new toResultView(Current->parentWidget());
+
+                    try
+                    {
+                        query->query(QueryString, param);
+                        if (query->query() && query->query()->rowsProcessed() > 0)
+                            buffer = tr("%1 rows processed").arg((int)query->query()->rowsProcessed());
+                        else
+                            buffer = tr("Query executed");
+                        Current->hide();
+                        Current = query;
+                        Current->show();
+                    }
+                    catch (...)
+                    {
+                        delete query;
+                        throw;
+                    }
+                }
+
+                addLog(QueryString, toConnection::exception(buffer), false);
+            }
+            catch (const QString &exc)
+            {
+                addLog(QueryString, exc, true);
+            }
+        }
+        else
+        {
+            First = false;
+            Timer.start();
+            StopButton->setEnabled(true);
+            Poll.start(1000);
+            QToolTip::add
+                (Started, tr("Duration while query has been running\n\n") + QueryString);
+            if (ToolMenu)
+                ToolMenu->setItemEnabled(TO_ID_STOP, true);
+            Result->setNumberColumn(!WorksheetTool.config(CONF_NUMBER, "Yes").isEmpty());
+            try
+            {
+                saveHistory();
+                Result->setSQL(QString::null);
+                Result->query(QueryString, param);
+                if (Light)
+                    return ;
+                if (CurrentTab == Visualize)
+                    Visualize->display();
+                else if (CurrentTab == Plan)
+                    Plan->query(QueryString);
+                else if (CurrentTab == ResourceSplitter)
+                    viewResources();
+            }
+            catch (const toConnection::exception &exc)
+            {
+                addLog(QueryString, exc, true);
+            }
+            catch (const QString &exc)
+            {
+                addLog(QueryString, exc, true);
+            }
+            if (!Light)
+            {
+                try
+                {
+                    if (StatisticButton->isOn())
+                        toRefreshParse(timer(), Refresh->currentText());
+                }
+                TOCATCH
+            }
+            Result->setSQLName(QueryString.simplifyWhiteSpace().left(40));
+        }
+    }
+}
+
+void toWorksheet::saveHistory(void)
+{
+    if (WorksheetTool.config(CONF_HISTORY, "").isEmpty())
+        return ;
+    if (Result->firstChild() && Current == Result && !Light)
+    {
+        History[LastID] = Result;
+        Result->hide();
+        Result->stop();
+        disconnect(Result, SIGNAL(done(void)), this, SLOT(queryDone(void)));
+        disconnect(Result, SIGNAL(firstResult(const QString &, const toConnection::exception &, bool)),
+                   this, SLOT(addLog(const QString &, const toConnection::exception &, bool)));
+        disconnect(StopButton, SIGNAL(clicked(void)), Result, SLOT(stop(void)));
+
+        Result = new toResultLong(Result->parentWidget());
+        if (StatisticButton->isOn())
+            enableStatistic(true);
+        Result->show();
+        Current = Result;
+        connect(StopButton, SIGNAL(clicked(void)), Result, SLOT(stop(void)));
+        connect(Result, SIGNAL(done(void)), this, SLOT(queryDone(void)));
+        connect(Result, SIGNAL(firstResult(const QString &, const toConnection::exception &, bool)),
+                this, SLOT(addLog(const QString &, const toConnection::exception &, bool)));
+    }
+}
+
+QString toWorksheet::duration(int dur, bool hundreds)
+{
+    char buf[100];
+    if (dur >= 3600000)
+    {
+        if (hundreds)
+            sprintf(buf, "%d:%02d:%02d.%02d", dur / 3600000, (dur / 60000) % 60, (dur / 1000) % 60, (dur / 10) % 100);
+        else
+            sprintf(buf, "%d:%02d:%02d", dur / 3600000, (dur / 60000) % 60, (dur / 1000) % 60);
+    }
+    else
+    {
+        if (hundreds)
+            sprintf(buf, "%d:%02d.%02d", dur / 60000, (dur / 1000) % 60, (dur / 10) % 100);
+        else
+            sprintf(buf, "%d:%02d", dur / 60000, (dur / 1000) % 60);
+    }
+    return QString::fromLatin1(buf);
+}
+
+void toWorksheet::addLog(const QString &sql, const toConnection::exception &result, bool error)
+{
+    QString now;
+    try
+    {
+        now = toNow(connection());
+    }
+    catch (...)
+    {
+        now = QString::fromLatin1("Unknown");
+    }
+    toResultViewItem *item = NULL;
+
+    LastID++;
+
+    int dur = 0;
+    if (!Timer.isNull())
+        dur = Timer.elapsed();
+    First = true;
+
+    if (!Light)
+    {
+        if (WorksheetTool.config(CONF_LOG_MULTI, "Yes").isEmpty())
+        {
+            if (WorksheetTool.config(CONF_LOG_AT_END, "Yes").isEmpty())
+                item = new toResultViewItem(Logging, NULL);
+            else
+                item = new toResultViewItem(Logging, LastLogItem);
+        }
+        else if (WorksheetTool.config(CONF_LOG_AT_END, "Yes").isEmpty())
+            item = new toResultViewMLine(Logging, NULL);
+        else
+            item = new toResultViewMLine(Logging, LastLogItem);
+        item->setText(0, sql);
+
+        LastLogItem = item;
+        item->setText(1, result);
+        item->setText(2, now);
+        if (!WorksheetTool.config(CONF_HISTORY, "").isEmpty())
+            item->setText(4, QString::number(LastID));
+        item->setText(5, QString::number(result.offset()));
+    }
+
+    if (result.offset() >= 0 && LastLine >= 0 && LastOffset >= 0 &&
+            !WorksheetTool.config(CONF_MOVE_TO_ERR, "Yes").isEmpty())
+    {
+        QChar cmp = '\n';
+        int lastnl = 0;
+        int lines = 0;
+        for (int i = 0;i < result.offset();i++)
+        {
+            if (sql.at(i) == cmp)
+            {
+                LastOffset = 0;
+                lastnl = i + 1;
+                lines++;
+            }
+        }
+        Editor->setCursorPosition(LastLine + lines, LastOffset + result.offset() - lastnl);
+        LastLine = LastOffset = -1;
+    }
+
+    QString buf = duration(dur);
+
+    if (!Light)
+    {
+        item->setText(3, buf);
+
+        QListViewItem *last = Logging->currentItem();
+        toResultViewItem *citem = NULL;
+        if (last)
+            citem = dynamic_cast<toResultViewItem *>(last);
+        if (!citem || citem->allText(0) != sql)
+        {
+            disconnect(Logging, SIGNAL(selectionChanged(QListViewItem *)), this, SLOT(executeLog()));
+            Logging->setSelected(item, true);
+            connect(Logging, SIGNAL(selectionChanged(QListViewItem *)), this, SLOT(executeLog()));
+            Logging->ensureItemVisible(item);
+        }
+    }
+
+    {
+        QString str = result;
+        str += "\n" + tr("(Duration %1)").arg(buf);
+        if (error)
+
+            toStatusMessage(str);
+        else
+            toStatusMessage(str, false, false);
+    }
+    if (!Light && !error)
+        changeResult(CurrentTab);
+
+    static QRegExp re(QString::fromLatin1("^[1-9]\\d* rows processed$"));
+    try
+    {
+        if (result.contains(re))
+        {
+            if (!toConfigurationSingle::Instance().globalConfig(CONF_AUTO_COMMIT, "").isEmpty())
+                connection().commit();
+            else
+                toMainWidget()->setNeedCommit(connection());
+        }
+    }
+    TOCATCH
+    saveDefaults();
+}
+
+void toWorksheet::execute(toSQLParse::tokenizer &tokens, int line, int pos, execType type)
+{
+    LastLine = line;
+    LastOffset = pos;
+    int endLine,endCol;
+    if(Editor->lines()<=tokens.line()){
+     endLine=Editor->lines()-1;
+     endCol=Editor->lineLength(Editor->lines()-1);
+    }else{
+      endLine=tokens.line();
+      if(Editor->lineLength(tokens.line())<=tokens.offset())
+        endCol=Editor->lineLength(tokens.line());
+      else{
+        endCol=tokens.offset();
+      }
+    }
+    Editor->setSelection(line, pos, endLine,endCol);
+    QString t = Editor->selectedText();
+
+    bool comment = false;
+    bool multiComment = false;
+    int oline = line;
+    int opos = pos;
+    unsigned int i;
+
+    for (i = 0;i < t.length() - 1;i++)
+    {
+        if (comment)
+        {
+            if (t.at(i).latin1() == '\n')
+                comment = false;
+        }
+        else if (multiComment)
+        {
+            if (t.at(i).latin1() == '*' &&
+                    t.at(i + 1).latin1() == '/')
+            {
+                multiComment = false;
+                i++;
+            }
+        }
+        else if (t.at(i).latin1() == '-' &&
+                 t.at(i + 1).latin1() == '-')
+            comment = true;
+        else if (t.at(i).latin1() == '/' &&
+                 t.at(i + 1).latin1() == '/')
+            comment = true;
+        else if (t.at(i).latin1() == '/' &&
+                 t.at(i + 1).latin1() == '*')
+            multiComment = true;
+        else if (!t.at(i).isSpace() && t.at(i) != '/')
+            break;
+
+        if (t.at(i).latin1() == '\n')
+        {
+            line++;
+            pos = 0;
+        }
+        else
+            pos++;
+    }
+
+    if (line != oline ||
+            pos != opos)
+    {
+        LastLine = line;
+        LastOffset = pos;
+        Editor->setSelection(line, pos, endLine, endCol);
+        t = t.mid(i);
+    }
+    if (t.length())
+        query(t, type);
+}
+
+void toWorksheet::execute()
+{
+    if (Editor->hasSelectedText())
+    {
+        query(Editor->selectedText(), Normal);
+        return ;
+    }
+
+    toSQLParse::editorTokenizer tokens(Editor);
+
+    int cpos, cline;
+    Editor->getCursorPosition(&cline, &cpos);
+
+    int line;
+    int pos;
+    do
+    {
+        line = tokens.line();
+        pos = tokens.offset();
+        toSQLParse::parseStatement(tokens);
+    }
+    while (tokens.line() < cline ||
+            (tokens.line() == cline && tokens.offset() < cpos));
+
+    execute(tokens, line, pos, Normal);
+}
+
+void toWorksheet::explainPlan()
+{
+    if (Editor->hasSelectedText())
+    {
+        query(Editor->selectedText(), OnlyPlan);
+        return ;
+    }
+
+    toSQLParse::editorTokenizer tokens(Editor);
+
+    int cpos, cline;
+    Editor->getCursorPosition(&cline, &cpos);
+
+    int line;
+    int pos;
+    do
+    {
+        line = tokens.line();
+        pos = tokens.offset();
+        toSQLParse::parseStatement(tokens);
+    }
+    while (tokens.line() < cline ||
+            (tokens.line() == cline && tokens.offset() < cpos));
+
+    execute(tokens, line, pos, OnlyPlan);
+}
+
+void toWorksheet::executeStep()
+{
+    toSQLParse::editorTokenizer tokens(Editor);
+
+    int cpos, cline;
+    Editor->getCursorPosition(&cline, &cpos);
+
+    int line;
+    int pos;
+    do
+    {
+        line = tokens.line();
+        pos = tokens.offset();
+        toSQLParse::parseStatement(tokens);
+    }
+    while (tokens.line() < cline ||
+            (tokens.line() == cline && tokens.offset() <= cpos));
+
+    execute(tokens, line, pos, Normal);
+}
+
+void toWorksheet::executeAll()
+{
+    toSQLParse::editorTokenizer tokens(Editor);
+
+    int cpos, cline;
+    Editor->getCursorPosition(&cline, &cpos);
+
+    QProgressDialog dialog(tr("Executing all statements"),
+                           tr("Cancel"),
+                           Editor->lines(),
+                           this,
+                           "Progress",
+                           true);
+    int line;
+    int pos;
+    bool ignore = true;
+    do
+    {
+        line = tokens.line();
+        pos = tokens.offset();
+        dialog.setProgress(line);
+        qApp->processEvents();
+        if (dialog.wasCancelled())
+            break;
+        toSQLParse::parseStatement(tokens);
+
+        if (ignore && (tokens.line() > cline ||
+                       (tokens.line() == cline &&
+                        tokens.offset() >= cpos)))
+        {
+            ignore = false;
+            cline = line;
+            cpos = pos;
+        }
+
+        if (tokens.line() < Editor->lines() && !ignore)
+        {
+            execute(tokens, line, pos, Direct);
+            if (Current)
+            {
+                toResultView *last = dynamic_cast<toResultView *>(Current);
+                if (!WorksheetTool.config(CONF_HISTORY, "").isEmpty() &&
+                        last && last->firstChild())
+                    History[LastID] = last;
+            }
+        }
+    }
+    while (tokens.line() < Editor->lines());
+
+    Editor->setSelection(cline, cpos, tokens.line(), tokens.offset());
+}
+
+void toWorksheet::parseAll()
+{
+    toSQLParse::editorTokenizer tokens(Editor);
+
+    int cpos, cline;
+    Editor->getCursorPosition(&cline, &cpos);
+
+    QProgressDialog dialog(tr("Parsing all statements"),
+                           tr("Cancel"),
+                           Editor->lines(),
+                           this,
+                           "Progress",
+                           true);
+    int line;
+    int pos;
+    bool ignore = true;
+    do
+    {
+        line = tokens.line();
+        pos = tokens.offset();
+        dialog.setProgress(line);
+        qApp->processEvents();
+        if (dialog.wasCancelled())
+            break;
+        toSQLParse::parseStatement(tokens);
+
+        if (ignore && (tokens.line() > cline ||
+                       (tokens.line() == cline &&
+                        tokens.offset() >= cpos)))
+        {
+            ignore = false;
+            cline = line;
+            cpos = pos;
+        }
+
+        if (tokens.line() < Editor->lines() && !ignore)
+        {
+            execute(tokens, line, pos, Parse);
+            if (Current)
+            {
+                toResultView *last = dynamic_cast<toResultView *>(Current);
+                if (!WorksheetTool.config(CONF_HISTORY, "").isEmpty() &&
+                        last && last->firstChild())
+                    History[LastID] = last;
+            }
+        }
+    }
+    while (tokens.line() < Editor->lines());
+
+    Editor->setSelection(cline, cpos, tokens.line(), tokens.offset());
+}
+
+void toWorksheet::eraseLogButton()
+{
+    if (Light)
+        return ;
+    Logging->clear();
+    LastLogItem = NULL;
+    for (std::map<int, QWidget *>::iterator i = History.begin();i != History.end();i++)
+        delete (*i).second;
+    History.clear();
+}
+
+void toWorksheet::queryDone(void)
+{
+    if (!First && !QueryString.isEmpty())
+        addLog(QueryString, toConnection::exception(tr("Aborted")), false);
+    else
+        emit executed();
+    try
+    {
+        timer()->stop();
+    }
+    TOCATCH
+    StopButton->setEnabled(false);
+    Poll.stop();
+    if (ToolMenu)
+        ToolMenu->setItemEnabled(TO_ID_STOP, false);
+    saveDefaults();
+}
+
+void toWorksheet::saveDefaults(void)
+{
+    QListViewItem *item = Result->firstChild();
+    if (item)
+    {
+        QHeader *head = Result->header();
+        for (int i = 0;i < Result->columns();i++)
+        {
+            toResultViewItem *resItem = dynamic_cast<toResultViewItem *>(item);
+            QString str;
+            if (resItem)
+                str = resItem->allText(i);
+            else if (item)
+                str = item->text(i);
+
+            try
+            {
+                toParamGet::setDefault(connection(), head->label(i).lower(), toUnnull(toQValue(str)));
+            }
+            TOCATCH
+        }
+    }
+}
+
+#define ENABLETIMED "ALTER SESSION SET TIMED_STATISTICS = TRUE"
+
+void toWorksheet::enableStatistic(bool ena)
+{
+    if (ena)
+    {
+        Result->setStatistics(Statistics);
+        ResultTab->setTabEnabled(StatTab, true);
+        if (ToolMenu)
+            ToolMenu->setItemChecked(TO_ID_STATISTICS, true);
+        Statistics->clear();
+        if (!WorksheetTool.config(CONF_TIMED_STATS, "Yes").isEmpty())
+        {
+            try
+            {
+                connection().allExecute(QString::fromLatin1(ENABLETIMED));
+                connection().addInit(QString::fromLatin1(ENABLETIMED));
+            }
+            TOCATCH
+        }
+    }
+    else
+    {
+        try
+        {
+            connection().delInit(QString::fromLatin1(ENABLETIMED));
+        }
+        catch (...)
+        {}
+        Result->setStatistics(NULL);
+        ResultTab->setTabEnabled(StatTab, false);
+        if (ToolMenu)
+            ToolMenu->setItemChecked(TO_ID_STATISTICS, false);
+    }
+}
+
+void toWorksheet::executeNewline(void)
+{
+    int cline, epos;
+
+    Editor->getCursorPosition(&cline, &epos);
+
+    if (cline > 0)
+        cline--;
+    while (cline > 0)
+    {
+        QString data = Editor->text(cline).simplifyWhiteSpace();
+        if (data.length() == 0 || data == QString::fromLatin1(" "))
+        {
+            cline++;
+            break;
+        }
+        cline--;
+    }
+
+    while (cline < Editor->lines())
+    {
+        QString data = Editor->text(cline).simplifyWhiteSpace();
+        if (data.length() != 0 && data != QString::fromLatin1(" "))
+            break;
+        cline++;
+    }
+
+    int eline = cline;
+
+    while (eline < Editor->lines())
+    {
+        QString data = Editor->text(eline).simplifyWhiteSpace();
+        if (data.length() == 0 || data == QString::fromLatin1(" "))
+        {
+            eline--;
+            break;
+        }
+        epos = Editor->text(eline).length();
+        eline++;
+    }
+    Editor->setSelection(cline, 0, eline, epos);
+    LastLine = cline;
+    LastOffset = 0;
+    if (Editor->hasSelectedText())
+        query(Editor->selectedText(), Normal);
+}
+
+void toWorksheet::describe(void)
+{
+    if (Light)
+        return ;
+
+    QString owner, table;
+    Editor->tableAtCursor(owner, table);
+
+    if (owner.isNull())
+        Columns->changeParams(table);
+    else
+        Columns->changeParams(owner, table);
+    if (!Columns->isTopLevel())
+        Current->hide();
+    Columns->show();
+    Current = Columns;
+}
+
+void toWorksheet::executeSaved(void)
+{
+    if (Light)
+        return ;
+
+    LastLine = LastOffset = -1;
+
+    if (SavedLast.length() > 0)
+    {
+        try
+        {
+            query(toSQL::string(SavedLast, connection()), Normal);
+        }
+        TOCATCH
+    }
+}
+
+void toWorksheet::insertSaved(void)
+{
+    if (Light)
+        return ;
+
+    LastLine = LastOffset = -1;
+
+    if (InsertSavedLast.length() > 0)
+    {
+        try
+        {
+            Editor->setText(toSQL::string(InsertSavedLast, connection()));
+        }
+        TOCATCH
+    }
+}
+
+void toWorksheet::executeSaved(int id)
+{
+    std::list<QCString> def = toSQL::range(TOWORKSHEET);
+    for (std::list<QCString>::iterator i = def.begin();i != def.end();i++)
+    {
+        id--;
+        if (id == 0)
+        {
+            SavedLast = *i;
+            executeSaved();
+            break;
+        }
+    }
+}
+
+void toWorksheet::insertSaved(int id)
+{
+    std::list<QCString> def = toSQL::range(TOWORKSHEET);
+    for (std::list<QCString>::iterator i = def.begin();i != def.end();i++)
+    {
+        id--;
+        if (id == 0)
+        {
+            InsertSavedLast = *i;
+            insertSaved();
+            break;
+        }
+    }
+}
+
+void toWorksheet::showSaved(void)
+{
+    static QRegExp colon(QString::fromLatin1(":"));
+    std::list<QCString> def = toSQL::range(TOWORKSHEET);
+    SavedMenu->clear();
+    std::map<QString, QPopupMenu *> menues;
+    int id = 0;
+    for (std::list<QCString>::iterator sql = def.begin();sql != def.end();sql++)
+    {
+
+        id++;
+
+        QStringList spl = QStringList::split(colon, QString::fromLatin1(*sql));
+        spl.remove(spl.begin());
+
+        if (spl.count() > 0)
+        {
+            QString name = spl.last();
+            spl.remove(spl.fromLast());
+
+            QPopupMenu *menu;
+            if (spl.count() == 0)
+                menu = SavedMenu;
+            else
+            {
+                QStringList exs = spl;
+                while (exs.count() > 0 && menues.find(exs.join(QString::fromLatin1(":"))) == menues.end())
+                    exs.remove(exs.fromLast());
+                if (exs.count() == 0)
+                    menu = SavedMenu;
+                else
+                    menu = menues[exs.join(QString::fromLatin1(":"))];
+                QString subname = exs.join(QString::fromLatin1(":"));
+                for (unsigned int i = exs.count();i < spl.count();i++)
+                {
+                    QPopupMenu *next = new QPopupMenu(this);
+                    connect(next, SIGNAL(activated(int)), this, SLOT(executeSaved(int)));
+                    if (i != 0)
+                        subname += QString::fromLatin1(":");
+                    subname += spl[i];
+                    menu->insertItem(spl[i], next);
+                    menu = next;
+                    menues[subname] = menu;
+                }
+            }
+            menu->insertItem(name, id);
+        }
+    }
+}
+
+void toWorksheet::showInsertSaved(void)
+{
+    static QRegExp colon(QString::fromLatin1(":"));
+    std::list<QCString> def = toSQL::range(TOWORKSHEET);
+    InsertSavedMenu->clear();
+    std::map<QString, QPopupMenu *> menues;
+    int id = 0;
+    for (std::list<QCString>::iterator sql = def.begin();sql != def.end();sql++)
+    {
+
+        id++;
+
+        QStringList spl = QStringList::split(colon, QString::fromLatin1(*sql));
+        spl.remove(spl.begin());
+
+        if (spl.count() > 0)
+        {
+            QString name = spl.last();
+            spl.remove(spl.fromLast());
+
+            QPopupMenu *menu;
+            if (spl.count() == 0)
+                menu = InsertSavedMenu;
+            else
+            {
+                QStringList exs = spl;
+                while (exs.count() > 0 && menues.find(exs.join(QString::fromLatin1(":"))) == menues.end())
+                    exs.remove(exs.fromLast());
+                if (exs.count() == 0)
+                    menu = InsertSavedMenu;
+                else
+                    menu = menues[exs.join(QString::fromLatin1(":"))];
+                QString subname = exs.join(QString::fromLatin1(":"));
+                for (unsigned int i = exs.count();i < spl.count();i++)
+                {
+                    QPopupMenu *next = new QPopupMenu(this);
+                    connect(next, SIGNAL(activated(int)), this, SLOT(insertSaved(int)));
+                    if (i != 0)
+                        subname += QString::fromLatin1(":");
+                    subname += spl[i];
+                    menu->insertItem(spl[i], next);
+                    menu = next;
+                    menues[subname] = menu;
+                }
+            }
+            menu->insertItem(name, id);
+        }
+    }
+}
+
+
+void toWorksheet::editSaved(void)
+{
+    QCString sql = TOWORKSHEET;
+    sql += "Untitled";
+    toMainWidget()->editSQL(QString::fromLatin1(sql));
+}
+
+void toWorksheet::selectSaved()
+{
+    SavedMenu->popup(SavedButton->mapToGlobal(QPoint(0, SavedButton->height())));
+}
+
+void toWorksheet::insertStatement(const QString &str)
+{
+    QString txt = Editor->text();
+
+    int i = txt.find(str);
+
+    if (i >= 0)
+    {
+        int startCol, endCol;
+        int startRow, endRow;
+        
+        Editor->findPosition(i, startRow, startCol);
+        Editor->findPosition(i + str.length(), endRow, endCol);
+        
+        if (Editor->text(endRow).at(endCol) == ';')
+            endCol++;
+        Editor->setSelection(startRow, startCol, endRow, endCol);
+    }
+    else
+    {
+        QString t = str;
+        if (str.right(1) != ";")
+        {
+            t += ";";
+        }
+
+        Editor->insert(t, true);
+    }
+}
+
+void toWorksheet::executePreviousLog(void)
+{
+    if (Light)
+        return ;
+
+    Result->stop();
+
+    LastLine = LastOffset = -1;
+    saveHistory();
+
+    QListViewItem *item = Logging->currentItem();
+    if (item)
+    {
+        QListViewItem *pt = Logging->firstChild();
+        while (pt && pt->nextSibling() != item)
+            pt = pt->nextSibling();
+
+        if (pt)
+            Logging->setSelected(pt, true);
+    }
+}
+
+void toWorksheet::executeLog(void)
+{
+    if (Light)
+        return ;
+
+    Result->stop();
+
+    LastLine = LastOffset = -1;
+    saveHistory();
+
+    QListViewItem *ci = Logging->currentItem();
+    toResultViewItem *item = dynamic_cast<toResultViewItem *>(ci);
+    if (item)
+    {
+        insertStatement(item->allText(0));
+
+        if (item->text(4).isEmpty())
+        {
+            if (!WorksheetTool.config(CONF_EXEC_LOG, "").isEmpty())
+                query(item->allText(0), Normal);
+        }
+        else
+        {
+            std::map<int, QWidget *>::iterator i = History.find(item->text(4).toInt());
+            QueryString = item->allText(0);
+            changeResult(ResultTab->currentPage());
+            if (i != History.end() && (*i).second)
+            {
+                Current->hide();
+                Current = (*i).second;
+                Current->show();
+            }
+        }
+    }
+}
+
+void toWorksheet::executeNextLog(void)
+{
+    if (Light)
+        return ;
+
+    Result->stop();
+
+    LastLine = LastOffset = -1;
+    saveHistory();
+
+    QListViewItem *item = Logging->currentItem();
+    if (item && item->nextSibling())
+    {
+        toResultViewItem *next = dynamic_cast<toResultViewItem *>(item->nextSibling());
+        if (next)
+            Logging->setSelected(next, true);
+    }
+}
+
+void toWorksheet::poll(void)
+{
+    Started->setText(duration(Timer.elapsed(), false));
+}
+
+void toWorksheet::saveLast(void)
+{
+    if (QueryString.isEmpty())
+    {
+        TOMessageBox::warning(this, tr("No SQL to save"),
+                              tr("You haven't executed any SQL yet"),
+                              tr("&Ok"));
+        return ;
+    }
+    bool ok = false;
+    QCString name = QInputDialog::getText(tr("Enter title"),
+                                          tr("Enter the title in the menu of the saved SQL,\n"
+                                             "submenues are separated by a ':' character."),
+                                          QLineEdit::Normal, QString::null, &ok, this).latin1();
+    if (ok && !name.isEmpty())
+    {
+        try
+        {
+            toSQL::updateSQL(TOWORKSHEET + name,
+                             QueryString,
+                             tr("Undescribed"),
+                             "Any",
+                             connection().provider());
+            toSQL::saveSQL(toConfigurationSingle::Instance().globalConfig(CONF_SQL_FILE, DEFAULT_SQL_FILE));
+        }
+        TOCATCH
+    }
+}
+
+void toWorksheet::saveStatistics(void)
+{
+    std::map<QCString, QString> stat;
+
+    Statistics->exportData(stat, "Stat");
+    IOChart->exportData(stat, "IO");
+    WaitChart->exportData(stat, "Wait");
+    if (Plan->firstChild())
+        Plan->exportData(stat, "Plan");
+    else
+        toStatusMessage(tr("No plan available to save"), false, false);
+    stat["Description"] = QueryString;
+
+    toWorksheetStatistic::saveStatistics(stat);
+}
+
+void toWorksheet::exportData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    Editor->exportData(data, prefix + ":Edit");
+    if (StatisticButton->isOn())
+        data[prefix + ":Stats"] = Refresh->currentText();
+    toToolWidget::exportData(data, prefix);
+}
+
+void toWorksheet::importData(std::map<QCString, QString> &data, const QCString &prefix)
+{
+    Editor->importData(data, prefix + ":Edit");
+    QString stat = data[prefix + ":Stats"];
+    if (stat)
+    {
+        for (int i = 0;i < Refresh->count();i++)
+        {
+            if (Refresh->text(i) == stat)
+            {
+                Refresh->setCurrentItem(i);
+                break;
+            }
+        }
+        StatisticButton->setOn(true);
+    }
+    else
+        StatisticButton->setOn(false);
+
+    toToolWidget::importData(data, prefix);
+    setCaption();
+}
+
+void toWorksheet::setCaption(void)
+{
+    QString name = WorksheetTool.name();
+    if (! Editor->filename().isEmpty())
+    {
+        QFileInfo file(Editor->filename());
+        name += QString::fromLatin1(" ") + file.fileName();
+    }
+    toToolCaption(this, name);
+}
+
+toWorksheet *toWorksheet::fileWorksheet(const QString &file)
+{
+    toWorksheet *worksheet = new toWorksheet(toMainWidget()->workspace(),
+                             toMainWidget()->currentConnection(),
+                             false);
+    worksheet->editor()->openFilename(file);
+    worksheet->setCaption();
+    worksheet->show();
+    toMainWidget()->windowsMenu();
+    return worksheet;
+}
+
+void toWorksheet::refreshSetup(void)
+{
+    bool ok = false;
+    int num = QInputDialog::getInteger(tr("Enter refreshrate"),
+                                       tr("Refresh rate of query in seconds"),
+                                       RefreshSeconds, 0, 1000000, 1, &ok, this);
+    if (ok)
+    {
+        RefreshSeconds = num;
+        RefreshTimer.start(num*1000);
+    }
+    else
+        RefreshTimer.stop();
+}
+
+void toWorksheet::stop(void)
+{
+    RefreshTimer.stop();
+    Result->stop();
+}
+
+void toWorksheet::displayMenu(QPopupMenu *menu)
+{
+    menu->insertSeparator(0);
+    if (!Light)
+    {
+        menu->insertItem(tr("&Explain current statement"), this, SLOT(explainPlan(void)),
+                         toKeySequence(tr("F3", "Worksheet|Explain plan")), TO_ID_PLAN, 0);
+        menu->insertItem(QPixmap(const_cast<const char**>(describe_xpm)),
+                         tr("&Describe Under Cursor"), this, SLOT(describe(void)),
+                         toKeySequence(tr("F4", "Worksheet|Describe under cursor")), 0, 0);
+        menu->insertSeparator(0);
+    }
+    if (connection().provider() == "Oracle")
+        menu->insertItem(tr("Check syntax of buffer"),
+                         this, SLOT(parseAll()),
+                         toKeySequence(tr("Ctrl+F9", "Worksheet|Check syntax of buffer")), 0, 0);
+    menu->insertItem(QPixmap(const_cast<const char**>(refresh_xpm)),
+                     tr("&Reexecute Last Statement"), this, SLOT(refresh(void)),
+                     toKeySequence(tr("F5", "Worksheet|Reexecute last statement")), 0, 0);
+    menu->insertItem(tr("Execute &Newline Separated"), this,
+                     SLOT(executeNewline(void)),
+                     toKeySequence(tr("Shift+F9", "Worksheet|Execute newline separated")), 0, 0);
+    menu->insertItem(QPixmap(const_cast<const char**>(executeall_xpm)),
+                     tr("Execute &All"), this, SLOT(executeAll(void)),
+                     toKeySequence(tr("F8", "Worksheet|Execute all")), 0, 0);
+    menu->insertItem(QPixmap(const_cast<const char**>(executestep_xpm)),
+                     tr("Execute &Next"), this, SLOT(executeStep(void)),
+                     toKeySequence(tr("F9", "Worksheet|Execute next")), 0, 0);
+    menu->insertItem(QPixmap(const_cast<const char**>(execute_xpm)),
+                     tr("&Execute Current"), this, SLOT(execute(void)),
+                     toKeySequence(tr("Ctrl+Return", "Worksheet|Execute current")), 0, 0);
+
+    menu->insertSeparator();
+    if (!Light)
+    {
+        if (connection().provider() == "Oracle")
+            menu->insertItem(tr("&Enable Statistics"), this, SLOT(toggleStatistic(void)),
+                             0, TO_ID_STATISTICS);
+    }
+    menu->insertItem(QPixmap(const_cast<const char**>(stop_xpm)),
+                     tr("&Stop Execution"), Result, SLOT(stop(void)),
+                     0, TO_ID_STOP);
+    if (!Light)
+    {
+        menu->insertSeparator();
+        menu->insertItem(tr("Execute Saved SQL"),
+                         this, SLOT(executeSaved()),
+                         toKeySequence(tr("F7", "Worksheet|Execute saved SQL")));
+        menu->insertItem(tr("Insert Saved SQL"),
+                         this, SLOT(insertSaved()),
+                         toKeySequence(tr("Shift+F7", "Worksheet|Insert saved SQL")));
+        menu->insertItem(tr("Select Saved SQL"),
+                         this, SLOT(selectSaved()),
+                         toKeySequence(tr("Ctrl+Shift+S", "Worksheet|Select saved SQL")));
+        menu->insertItem(QPixmap(const_cast<const char**>(previous_xpm)),
+                         tr("Save last SQL"),
+                         this, SLOT(saveLast()));
+    }
+}
+
+#define CHANGE_CURRENT_SCHEMA QString("ALTER SESSION SET CURRENT_SCHEMA = %1")
+
+void toWorksheet::changeSchema(void)
+{
+    try
+    {
+        QString schema = Schema->selected();
+        toConnection &conn = connection();
+        if (toIsOracle(conn))
+        {
+            /* remove current schema initstring */
+            conn.delInit(QString::fromLatin1(CHANGE_CURRENT_SCHEMA).arg(conn.user()));
+
+            /* set the new one with selected schema */
+            QString sql = QString::fromLatin1(CHANGE_CURRENT_SCHEMA).arg(schema);
+            conn.allExecute(sql);
+
+            conn.addInit(sql);
+        }
+        else if (toIsMySQL(conn))
+        {
+            conn.allExecute(QString("USE %1").arg(schema));
+            conn.setDatabase(schema);
+        }
+        else
+            throw QString("No support for changing schema for this database");
+    }
+    TOCATCH
+}

Added: kde-extras/tora/branches/upstream/current/src/toworksheet.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toworksheet.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toworksheet.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,208 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOWORKSHEET_H
+#define TOWORKSHEET_H
+
+#include "config.h"
+
+#include <map>
+
+#include <qdatetime.h>
+#include <qtimer.h>
+
+#include "toconnection.h"
+#include "tosqlparse.h"
+#include "totool.h"
+
+class QComboBox;
+class QLabel;
+class QPopupMenu;
+class QSplitter;
+class QToolButton;
+class toHighlightedText;
+class toListView;
+class toResultBar;
+class toResultCols;
+class toResultCombo;
+class toResultItem;
+class toResultLong;
+class toResultPlan;
+class toResultStats;
+class toVisualize;
+class toTabWidget;
+
+class toWorksheet : public toToolWidget
+{
+    Q_OBJECT
+
+    bool Light;
+    toHighlightedText *Editor;
+    toTabWidget *ResultTab;
+    toResultLong *Result;
+    toResultPlan *Plan;
+    QWidget *CurrentTab;
+    QString QueryString;
+    toResultItem *Resources;
+    toResultStats *Statistics;
+    toResultBar *WaitChart;
+    toResultBar *IOChart;
+    toListView *Logging;
+    QSplitter *ResourceSplitter;
+    toResultLong *LongOps;
+    toVisualize *Visualize;
+    QListViewItem *LastLogItem;
+    QToolButton *PlanButton;
+    QToolButton *StopButton;
+    QToolButton *StatisticButton;
+    QWidget *StatTab;
+    bool TryStrip;
+    toResultCols *Columns;
+    QComboBox *Refresh;
+    QLabel *Started;
+    toResultCombo *Schema;
+
+    int RefreshSeconds;
+    QTimer RefreshTimer;
+
+    QPopupMenu *SavedMenu;
+    QToolButton *SavedButton;
+    QCString SavedLast;
+
+    QPopupMenu *InsertSavedMenu;
+    QToolButton *InsertSavedButton;
+    QCString InsertSavedLast;
+
+    bool First;
+    QTime Timer;
+    QTimer Poll;
+
+    QWidget *Current;
+    std::map<int, QWidget *> History;
+    int LastID;
+
+    int LastLine;
+    int LastOffset;
+
+    enum execType {
+        Normal,
+        Direct,
+        Parse,
+        OnlyPlan
+    };
+
+    QPopupMenu *ToolMenu;
+
+    QString duration(int, bool hundreds = true);
+    void saveHistory(void);
+    void viewResources(void);
+    void query(const QString &str, execType type);
+    bool checkSave(bool input);
+    void saveDefaults(void);
+    void setup(bool autoLoad);
+
+    void execute(toSQLParse::tokenizer &tokens, int line, int pos, execType type);
+
+    void insertStatement(const QString &);
+public:
+    toWorksheet(QWidget *parent, toConnection &connection, bool autoLoad = true);
+    toWorksheet(QWidget *parent, const char *name, toConnection &connection);
+    virtual ~toWorksheet();
+
+    virtual bool close(bool del);
+
+    toHighlightedText *editor(void)
+    {
+        return Editor;
+    }
+    bool describe(const QString &query);
+
+    virtual bool canHandle(toConnection &)
+    {
+        return true;
+    }
+
+    virtual void exportData(std::map<QCString, QString> &data, const QCString &prefix);
+    virtual void importData(std::map<QCString, QString> &data, const QCString &prefix);
+
+    static toWorksheet *fileWorksheet(const QString &file);
+    void setCaption(void);
+signals:
+    void executed(void);
+public slots:
+    void changeSchema(void);
+    void connectionChanged(void);
+    void refresh();
+    void execute();
+    void parseAll();
+    void executeAll();
+    void executeStep();
+    void executeNewline();
+    void describe();
+    void eraseLogButton();
+    void changeResult(QWidget *widget);
+    void windowActivated(QWidget *w);
+    void queryDone(void);
+    void enableStatistic(bool);
+    void explainPlan(void);
+    void toggleStatistic(void)
+    {
+        StatisticButton->setOn(!StatisticButton->isOn());
+    }
+    void showInsertSaved(void);
+    void showSaved(void);
+    void insertSaved(int index);
+    void insertSaved(void);
+    void executeSaved(int index);
+    void executeSaved(void);
+    void editSaved(void);
+    void selectSaved(void);
+    void executePreviousLog(void);
+    void executeNextLog(void);
+    void executeLog(void);
+    void addLog(const QString &sql, const toConnection::exception &result, bool error);
+    void changeRefresh(const QString &);
+    void saveLast(void);
+    void saveStatistics(void);
+    void refreshSetup(void);
+    void stop(void);
+private slots:
+    void poll(void);
+    void displayMenu(QPopupMenu *menu);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,176 @@
+/****************************************************************************
+** Form implementation generated from reading ui file 'toworksheetsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:27 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#include "toworksheetsetupui.h"
+
+#include <qvariant.h>
+#include <qpushbutton.h>
+#include <qgroupbox.h>
+#include <qcheckbox.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qtooltip.h>
+#include <qwhatsthis.h>
+
+/*
+ *  Constructs a toWorksheetSetupUI as a child of 'parent', with the
+ *  name 'name' and widget flags set to 'f'.
+ */
+toWorksheetSetupUI::toWorksheetSetupUI( QWidget* parent, const char* name, WFlags fl )
+    : QWidget( parent, name, fl )
+{
+    if ( !name )
+	setName( "toWorksheetSetupUI" );
+    toWorksheetSetupUILayout = new QGridLayout( this, 1, 1, 0, 6, "toWorksheetSetupUILayout"); 
+
+    GroupBox1 = new QGroupBox( this, "GroupBox1" );
+    GroupBox1->setColumnLayout(0, Qt::Vertical );
+    GroupBox1->layout()->setSpacing( 6 );
+    GroupBox1->layout()->setMargin( 11 );
+    GroupBox1Layout = new QGridLayout( GroupBox1->layout() );
+    GroupBox1Layout->setAlignment( Qt::AlignTop );
+
+    AutoSave = new QCheckBox( GroupBox1, "AutoSave" );
+
+    GroupBox1Layout->addMultiCellWidget( AutoSave, 0, 0, 0, 2 );
+
+    CheckSave = new QCheckBox( GroupBox1, "CheckSave" );
+
+    GroupBox1Layout->addMultiCellWidget( CheckSave, 1, 1, 0, 2 );
+
+    LogAtEnd = new QCheckBox( GroupBox1, "LogAtEnd" );
+
+    GroupBox1Layout->addMultiCellWidget( LogAtEnd, 2, 2, 0, 2 );
+
+    LogMulti = new QCheckBox( GroupBox1, "LogMulti" );
+
+    GroupBox1Layout->addMultiCellWidget( LogMulti, 3, 3, 0, 2 );
+
+    Statistics = new QCheckBox( GroupBox1, "Statistics" );
+
+    GroupBox1Layout->addMultiCellWidget( Statistics, 4, 4, 0, 2 );
+
+    TimedStatistics = new QCheckBox( GroupBox1, "TimedStatistics" );
+
+    GroupBox1Layout->addMultiCellWidget( TimedStatistics, 5, 5, 0, 2 );
+
+    DisplayNumber = new QCheckBox( GroupBox1, "DisplayNumber" );
+
+    GroupBox1Layout->addMultiCellWidget( DisplayNumber, 6, 6, 0, 2 );
+
+    MoveToError = new QCheckBox( GroupBox1, "MoveToError" );
+
+    GroupBox1Layout->addMultiCellWidget( MoveToError, 7, 7, 0, 2 );
+
+    History = new QCheckBox( GroupBox1, "History" );
+
+    GroupBox1Layout->addMultiCellWidget( History, 8, 8, 0, 2 );
+
+    DefaultFile = new QLineEdit( GroupBox1, "DefaultFile" );
+    DefaultFile->setFrameShape( QLineEdit::LineEditPanel );
+    DefaultFile->setFrameShadow( QLineEdit::Sunken );
+
+    GroupBox1Layout->addWidget( DefaultFile, 11, 1 );
+
+    FileChoose = new QPushButton( GroupBox1, "FileChoose" );
+
+    GroupBox1Layout->addWidget( FileChoose, 11, 2 );
+
+    TextLabel1 = new QLabel( GroupBox1, "TextLabel1" );
+
+    GroupBox1Layout->addWidget( TextLabel1, 11, 0 );
+    Spacer1 = new QSpacerItem( 20, 160, QSizePolicy::Minimum, QSizePolicy::Expanding );
+    GroupBox1Layout->addItem( Spacer1, 12, 1 );
+
+    ExecLog = new QCheckBox( GroupBox1, "ExecLog" );
+
+    GroupBox1Layout->addMultiCellWidget( ExecLog, 9, 9, 0, 2 );
+
+    ToplevelDescribe = new QCheckBox( GroupBox1, "ToplevelDescribe" );
+
+    GroupBox1Layout->addMultiCellWidget( ToplevelDescribe, 10, 10, 0, 2 );
+
+    toWorksheetSetupUILayout->addWidget( GroupBox1, 0, 0 );
+    languageChange();
+    resize( QSize(568, 480).expandedTo(minimumSizeHint()) );
+    clearWState( WState_Polished );
+
+    // signals and slots connections
+    connect( FileChoose, SIGNAL( clicked() ), this, SLOT( chooseFile() ) );
+    connect( History, SIGNAL( toggled(bool) ), ExecLog, SLOT( setEnabled(bool) ) );
+
+    // tab order
+    setTabOrder( AutoSave, CheckSave );
+    setTabOrder( CheckSave, LogAtEnd );
+    setTabOrder( LogAtEnd, LogMulti );
+    setTabOrder( LogMulti, Statistics );
+    setTabOrder( Statistics, TimedStatistics );
+    setTabOrder( TimedStatistics, DisplayNumber );
+    setTabOrder( DisplayNumber, History );
+    setTabOrder( History, ExecLog );
+    setTabOrder( ExecLog, DefaultFile );
+    setTabOrder( DefaultFile, FileChoose );
+
+    // buddies
+    TextLabel1->setBuddy( DefaultFile );
+}
+
+/*
+ *  Destroys the object and frees any allocated resources
+ */
+toWorksheetSetupUI::~toWorksheetSetupUI()
+{
+    // no need to delete child widgets, Qt does it all for us
+}
+
+/*
+ *  Sets the strings of the subwidgets using the current
+ *  language.
+ */
+void toWorksheetSetupUI::languageChange()
+{
+    setCaption( tr( "Form1" ) );
+    QToolTip::add( this, tr( "Automatically save file when closing editor (Without asking any questions)." ) );
+    GroupBox1->setTitle( tr( "SQL Editor" ) );
+    AutoSave->setText( tr( "Auto &save" ) );
+    CheckSave->setText( tr( "Ask about saving &changes" ) );
+    QToolTip::add( CheckSave, tr( "Ask about saving changes when closing worksheet." ) );
+    LogAtEnd->setText( tr( "Add &log entries at end" ) );
+    QToolTip::add( LogAtEnd, tr( "Add newly executed queries at end of log instead of top. Changing this will mess up the log in the windows that are opened." ) );
+    LogMulti->setText( tr( "&Multiple lines in log." ) );
+    QToolTip::add( LogMulti, tr( "Display multiple lines in the SQL column of the logging." ) );
+    Statistics->setText( tr( "&Enable statistics" ) );
+    QToolTip::add( Statistics, tr( "Enable statistic collection per default." ) );
+    TimedStatistics->setText( tr( "Enable &timed statistics" ) );
+    QToolTip::add( TimedStatistics, tr( "Enable timed statistics as well when collecting normal statistics." ) );
+    DisplayNumber->setText( tr( "&Display number column" ) );
+    QToolTip::add( DisplayNumber, tr( "Add a numbering column to the left of the result." ) );
+    MoveToError->setText( tr( "Move &cursor to error" ) );
+    QToolTip::add( MoveToError, tr( "Move the cursor to an error if the error occurs." ) );
+    History->setText( tr( "Save previous results" ) );
+    QToolTip::add( History, tr( "Keep previous results in while editor is open. Will consume lot of memory." ) );
+    FileChoose->setText( tr( "&Browse" ) );
+    TextLabel1->setText( tr( "Default &file" ) );
+    QToolTip::add( TextLabel1, tr( "File to automatically open in a new editor." ) );
+    ExecLog->setText( tr( "Execute directly when selecting in log" ) );
+    QToolTip::add( ExecLog, tr( "Execute a statement when it is\n"
+"			selected in the log, if disabled simply selected\n"
+"			the statement in the log." ) );
+    ToplevelDescribe->setText( tr( "Display column descriptions in own toplevel window." ) );
+    QToolTip::add( ToplevelDescribe, tr( "Execute a statement when it is\n"
+"			selected in the log, if disabled simply selected\n"
+"			the statement in the log." ) );
+}
+
+void toWorksheetSetupUI::chooseFile()
+{
+    qWarning( "toWorksheetSetupUI::chooseFile(): Not implemented yet" );
+}
+

Added: kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,63 @@
+/****************************************************************************
+** Form interface generated from reading ui file 'toworksheetsetupui.ui'
+**
+** Created: Tue Sep 18 08:21:27 2007
+**      by: The User Interface Compiler ($Id: qt/main.cpp   3.3.8   edited Jan 11 14:47 $)
+**
+** WARNING! All changes made in this file will be lost!
+****************************************************************************/
+
+#ifndef TOWORKSHEETSETUPUI_H
+#define TOWORKSHEETSETUPUI_H
+
+#include <qvariant.h>
+#include <qwidget.h>
+
+class QVBoxLayout;
+class QHBoxLayout;
+class QGridLayout;
+class QSpacerItem;
+class QGroupBox;
+class QCheckBox;
+class QLineEdit;
+class QPushButton;
+class QLabel;
+
+class toWorksheetSetupUI : public QWidget
+{
+    Q_OBJECT
+
+public:
+    toWorksheetSetupUI( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+    ~toWorksheetSetupUI();
+
+    QGroupBox* GroupBox1;
+    QCheckBox* AutoSave;
+    QCheckBox* CheckSave;
+    QCheckBox* LogAtEnd;
+    QCheckBox* LogMulti;
+    QCheckBox* Statistics;
+    QCheckBox* TimedStatistics;
+    QCheckBox* DisplayNumber;
+    QCheckBox* MoveToError;
+    QCheckBox* History;
+    QLineEdit* DefaultFile;
+    QPushButton* FileChoose;
+    QLabel* TextLabel1;
+    QCheckBox* ExecLog;
+    QCheckBox* ToplevelDescribe;
+
+public slots:
+    virtual void chooseFile();
+
+protected:
+    QGridLayout* toWorksheetSetupUILayout;
+    QGridLayout* GroupBox1Layout;
+    QSpacerItem* Spacer1;
+
+protected slots:
+    virtual void languageChange();
+
+};
+
+#endif // TOWORKSHEETSETUPUI_H

Added: kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.ui
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.ui	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toworksheetsetupui.ui	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,257 @@
+<!DOCTYPE UI><UI version="3.1" stdsetdef="1">
+<class>toWorksheetSetupUI</class>
+<widget class="QWidget">
+    <property name="name">
+        <cstring>toWorksheetSetupUI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>568</width>
+            <height>480</height>
+        </rect>
+    </property>
+    <property name="caption">
+        <string>Form1</string>
+    </property>
+    <property name="layoutMargin" stdset="0">
+    </property>
+    <property name="toolTip" stdset="0">
+        <string>Automatically save file when closing editor (Without asking any questions).</string>
+    </property>
+    <grid>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>0</number>
+        </property>
+        <property name="spacing">
+            <number>6</number>
+        </property>
+        <widget class="QGroupBox" row="0" column="0">
+            <property name="name">
+                <cstring>GroupBox1</cstring>
+            </property>
+            <property name="title">
+                <string>SQL Editor</string>
+            </property>
+            <grid>
+                <property name="name">
+                    <cstring>unnamed</cstring>
+                </property>
+                <property name="margin">
+                    <number>11</number>
+                </property>
+                <property name="spacing">
+                    <number>6</number>
+                </property>
+                <widget class="QCheckBox" row="0" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>AutoSave</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Auto &amp;save</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="1" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>CheckSave</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Ask about saving &amp;changes</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Ask about saving changes when closing worksheet.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="2" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>LogAtEnd</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Add &amp;log entries at end</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Add newly executed queries at end of log instead of top. Changing this will mess up the log in the windows that are opened.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="3" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>LogMulti</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Multiple lines in log.</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Display multiple lines in the SQL column of the logging.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="4" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>Statistics</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Enable statistics</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Enable statistic collection per default.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="5" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>TimedStatistics</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Enable &amp;timed statistics</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Enable timed statistics as well when collecting normal statistics.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="6" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>DisplayNumber</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Display number column</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Add a numbering column to the left of the result.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="7" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>MoveToError</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Move &amp;cursor to error</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Move the cursor to an error if the error occurs.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="8" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>History</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Save previous results</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Keep previous results in while editor is open. Will consume lot of memory.</string>
+                    </property>
+                </widget>
+                <widget class="QLineEdit" row="11" column="1">
+                    <property name="name">
+                        <cstring>DefaultFile</cstring>
+                    </property>
+                    <property name="frameShape">
+                        <enum>LineEditPanel</enum>
+                    </property>
+                    <property name="frameShadow">
+                        <enum>Sunken</enum>
+                    </property>
+                </widget>
+                <widget class="QPushButton" row="11" column="2">
+                    <property name="name">
+                        <cstring>FileChoose</cstring>
+                    </property>
+                    <property name="text">
+                        <string>&amp;Browse</string>
+                    </property>
+                </widget>
+                <widget class="QLabel" row="11" column="0">
+                    <property name="name">
+                        <cstring>TextLabel1</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Default &amp;file</string>
+                    </property>
+                    <property name="buddy" stdset="0">
+                        <cstring>DefaultFile</cstring>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>File to automatically open in a new editor.</string>
+                    </property>
+                </widget>
+                <spacer row="12" column="1">
+                    <property name="name">
+                        <cstring>Spacer1</cstring>
+                    </property>
+                    <property name="orientation">
+                        <enum>Vertical</enum>
+                    </property>
+                    <property name="sizeType">
+                        <enum>Expanding</enum>
+                    </property>
+                    <property name="sizeHint">
+                        <size>
+                            <width>20</width>
+                            <height>160</height>
+                        </size>
+                    </property>
+                </spacer>
+                <widget class="QCheckBox" row="9" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>ExecLog</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Execute directly when selecting in log</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Execute a statement when it is
+			selected in the log, if disabled simply selected
+			the statement in the log.</string>
+                    </property>
+                </widget>
+                <widget class="QCheckBox" row="10" column="0" rowspan="1" colspan="3">
+                    <property name="name">
+                        <cstring>ToplevelDescribe</cstring>
+                    </property>
+                    <property name="text">
+                        <string>Display column descriptions in own toplevel window.</string>
+                    </property>
+                    <property name="toolTip" stdset="0">
+                        <string>Execute a statement when it is
+			selected in the log, if disabled simply selected
+			the statement in the log.</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+    </grid>
+</widget>
+<connections>
+    <connection>
+        <sender>FileChoose</sender>
+        <signal>clicked()</signal>
+        <receiver>toWorksheetSetupUI</receiver>
+        <slot>chooseFile()</slot>
+    </connection>
+    <connection>
+        <sender>History</sender>
+        <signal>toggled(bool)</signal>
+        <receiver>ExecLog</receiver>
+        <slot>setEnabled(bool)</slot>
+    </connection>
+</connections>
+<tabstops>
+    <tabstop>AutoSave</tabstop>
+    <tabstop>CheckSave</tabstop>
+    <tabstop>LogAtEnd</tabstop>
+    <tabstop>LogMulti</tabstop>
+    <tabstop>Statistics</tabstop>
+    <tabstop>TimedStatistics</tabstop>
+    <tabstop>DisplayNumber</tabstop>
+    <tabstop>History</tabstop>
+    <tabstop>ExecLog</tabstop>
+    <tabstop>DefaultFile</tabstop>
+    <tabstop>FileChoose</tabstop>
+</tabstops>
+<slots>
+    <slot>chooseFile()</slot>
+</slots>
+<layoutdefaults spacing="6" margin="11"/>
+</UI>

Added: kde-extras/tora/branches/upstream/current/src/toworksheetstatistic.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toworksheetstatistic.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toworksheetstatistic.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,329 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "toanalyze.h"
+#include "tobarchart.h"
+#include "toconf.h"
+#include "toresultview.h"
+#include "toworksheetstatistic.h"
+
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qpopupmenu.h>
+#include <qsplitter.h>
+#include <qtoolbar.h>
+#include <qtoolbutton.h>
+#include <qtooltip.h>
+
+#include "toworksheetstatistic.moc"
+
+#include "icons/fileopen.xpm"
+#include "icons/filesave.xpm"
+#include "icons/grid.xpm"
+#include "icons/trash.xpm"
+#include "icons/tree.xpm"
+
+toAnalyze *toWorksheetStatistic::Widget;
+
+toWorksheetStatistic::toWorksheetStatistic(QWidget *parent)
+        : QVBox(parent)
+{
+    QToolBar *toolbar = toAllocBar(this, tr("Server Tuning"));
+
+    new QToolButton(QPixmap(const_cast<const char**>(fileopen_xpm)),
+                    tr("Load statistics from file"),
+                    tr("Load statistics from file"),
+                    this, SLOT(load(void)),
+                    toolbar);
+
+    QToolButton *button = new toPopupButton(QPixmap(const_cast<const char**>(filesave_xpm)),
+                                            tr("Save statistics to file"),
+                                            tr("Save statistics to file"),
+                                            toolbar);
+    SaveMenu = new QPopupMenu(button);
+    button->setPopup(SaveMenu);
+    connect(SaveMenu, SIGNAL(aboutToShow()), this, SLOT(displayMenu()));
+    connect(SaveMenu, SIGNAL(activated(int)), this, SLOT(save(int)));
+
+    toolbar->addSeparator();
+
+    button = new toPopupButton(QPixmap(const_cast<const char**>(trash_xpm)),
+                               tr("Remove statistics"),
+                               tr("Remove statistics"),
+                               toolbar);
+    RemoveMenu = new QPopupMenu(button);
+    button->setPopup(RemoveMenu);
+    connect(RemoveMenu, SIGNAL(aboutToShow()), this, SLOT(displayMenu()));
+    connect(RemoveMenu, SIGNAL(activated(int)), this, SLOT(remove
+            (int)));
+
+    Splitter = new QSplitter(Vertical, this);
+
+    toolbar->addSeparator();
+
+    ShowCharts = new QToolButton(toolbar);
+    ShowCharts->setToggleButton(true);
+    ShowCharts->setIconSet(QIconSet(QPixmap(const_cast<const char**>(grid_xpm))));
+    QToolTip::add
+        (ShowCharts, tr("Display charts"));
+    ShowCharts->setOn(true);
+    connect(ShowCharts, SIGNAL(toggled(bool)), this, SLOT(showCharts(bool)));
+
+    ShowPlans = new QToolButton(toolbar);
+    ShowPlans->setToggleButton(true);
+    ShowPlans->setIconSet(QIconSet(QPixmap(const_cast<const char**>(tree_xpm))));
+    QToolTip::add
+        (ShowPlans, tr("Display execution plans"));
+    ShowPlans->setOn(true);
+    connect(ShowPlans, SIGNAL(toggled(bool)), this, SLOT(showPlans(bool)));
+
+    toolbar->setStretchableWidget(new QLabel(toolbar, TO_KDE_TOOLBAR_WIDGET));
+
+    Dummy = new QWidget(Splitter);
+
+    try
+    {
+        Tool = dynamic_cast<toAnalyze *>(toCurrentTool(this));
+        if (!Widget)
+            Widget = Tool;
+    }
+    TOCATCH
+}
+
+toWorksheetStatistic::~toWorksheetStatistic()
+{
+    if (Widget == Tool)
+        Widget = NULL;
+}
+
+void toWorksheetStatistic::saveStatistics(std::map<QCString, QString> &stats)
+{
+    if (!Widget)
+        toAnalyze::createTool();
+    if (Widget)
+        Widget->worksheet()->addStatistics(stats);
+}
+
+void toWorksheetStatistic::addStatistics(std::map<QCString, QString> &stats)
+{
+    data cur;
+    cur.Top = new QVBox(Splitter);
+    QHBox *box = new QHBox(cur.Top);
+    box->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
+    cur.Label = new QLabel(stats["Description"], box);
+    cur.Label->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred));
+    QCheckBox *check = new QCheckBox(tr("Hide"), box);
+    cur.Charts = new toHideSplitter(Horizontal, cur.Top, this);
+    connect(check, SIGNAL(toggled(bool)), cur.Charts, SLOT(setHidden(bool)));
+    cur.Statistics = new toListView(cur.Charts);
+    cur.Statistics->importData(stats, "Stat");
+    cur.Wait = new toBarChart(cur.Charts);
+    cur.Wait->importData(stats, "Wait");
+    cur.IO = new toBarChart(cur.Charts);
+    cur.IO->importData(stats, "IO");
+    cur.Plan = new toListView(cur.Charts);
+    cur.Plan->importData(stats, "Plan");
+
+    QValueList<int> sizes;
+    sizes << 1 << 1 << 1 << 1;
+    cur.Charts->setSizes(sizes);
+    if (!cur.Plan->firstChild())
+    {
+        delete cur.Plan;
+        cur.Plan = NULL;
+    }
+    else if (!ShowPlans->isOn())
+        cur.Plan->hide();
+    if (!ShowCharts->isOn())
+    {
+        cur.Statistics->hide();
+        cur.Wait->hide();
+        cur.IO->hide();
+    }
+    cur.Top->show();
+    setFocus();
+
+    Open.insert(Open.end(), cur);
+
+    if (Dummy)
+    {
+        delete Dummy;
+        Dummy = NULL;
+    }
+}
+
+void toWorksheetStatistic::showPlans(bool show)
+{
+    for (std::list<data>::iterator i = Open.begin();i != Open.end();i++)
+    {
+        if ((*i).Plan)
+        {
+            if (show)
+            {
+                (*i).Plan->show();
+            }
+            else
+            {
+                (*i).Plan->hide();
+            }
+        }
+    }
+}
+
+void toWorksheetStatistic::showCharts(bool show)
+{
+    for (std::list<data>::iterator i = Open.begin();i != Open.end();i++)
+    {
+        if (show)
+        {
+            (*i).Statistics->show();
+            (*i).Wait->show();
+            (*i).IO->show();
+        }
+        else
+        {
+            (*i).Statistics->hide();
+            (*i).Wait->hide();
+            (*i).IO->hide();
+        }
+    }
+}
+
+void toWorksheetStatistic::save(int selid)
+{
+    int id = 1;
+    for (std::list<data>::iterator i = Open.begin();i != Open.end();i++)
+    {
+        if (selid == id)
+        {
+            QString fn = toSaveFilename(QString::null, QString::fromLatin1("*.stat"), this);
+            if (!fn.isEmpty())
+            {
+                std::map<QCString, QString> stat;
+                (*i).Statistics->exportData(stat, "Stat");
+                (*i).IO->exportData(stat, "IO");
+                (*i).Wait->exportData(stat, "Wait");
+                if ((*i).Plan)
+                    (*i).Plan->exportData(stat, "Plan");
+                stat["Description"] = (*i).Label->text();
+                try
+                {
+                    toConfigurationSingle::Instance().saveMap(fn, stat);
+                }
+                TOCATCH
+            }
+            break;
+        }
+        id++;
+    }
+}
+
+void toWorksheetStatistic::remove
+    (int selid)
+{
+    int id = 1;
+    for (std::list<data>::iterator i = Open.begin();i != Open.end();i++)
+    {
+        if (selid == id)
+        {
+            delete (*i).Top;
+            if (Open.size() == 1)
+            {
+                Dummy = new QWidget(Splitter);
+                Dummy->show();
+            }
+            Open.erase(i);
+            break;
+        }
+        id++;
+    }
+}
+
+void toWorksheetStatistic::load(void)
+{
+    QString filename = toOpenFilename(QString::null, QString::fromLatin1("*.stat"), this);
+    if (!filename.isEmpty())
+    {
+        try
+        {
+            std::map<QCString, QString> ret;
+            toConfigurationSingle::Instance().loadMap(filename, ret);
+            addStatistics(ret);
+        }
+        TOCATCH
+    }
+}
+
+void toWorksheetStatistic::displayMenu(void)
+{
+    SaveMenu->clear();
+    RemoveMenu->clear();
+    int id = 1;
+    for (std::list<data>::iterator i = Open.begin();i != Open.end();i++)
+    {
+        SaveMenu->insertItem((*i).Label->text(), id);
+        RemoveMenu->insertItem((*i).Label->text(), id);
+        id++;
+    }
+}
+
+void toWorksheetStatistic::updateSplitter(void)
+{
+    QValueList<int> sizes = Splitter->sizes();
+
+    int id = 0;
+    for (std::list<data>::iterator i = Open.begin();i != Open.end();i++)
+    {
+        if ((*i).Charts->isHidden())
+            sizes[id] = 0;
+        else
+            sizes[id] = (*i).Charts->height();
+        id++;
+    }
+    Splitter->setSizes(sizes);
+}
+
+void toHideSplitter::setHidden(bool hid)
+{
+    if (hid)
+        hide();
+    else
+        show();
+    StatList->updateSplitter();
+}

Added: kde-extras/tora/branches/upstream/current/src/toworksheetstatistic.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/toworksheetstatistic.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/toworksheetstatistic.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,117 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef TOWORKSHEETSTATISTIC_H
+#define TOWORKSHEETSTATISTIC_H
+
+#include "config.h"
+
+#include <list>
+#include <map>
+
+#include <qsplitter.h>
+#include <qvbox.h>
+
+class QLabel;
+class QPopupMenu;
+class QSplitter;
+class toAnalyze;
+class toBarChart;
+class toListView;
+class toWorksheetStatistic;
+
+class toHideSplitter : public QSplitter
+{
+    Q_OBJECT
+    toWorksheetStatistic *StatList;
+public:
+    toHideSplitter(QSplitter::Orientation o, QWidget *parent, toWorksheetStatistic *statlist)
+            : QSplitter(o, parent), StatList(statlist)
+    { }
+public slots:
+    void setHidden(bool hid);
+};
+
+class toWorksheetStatistic : public QVBox
+{
+    Q_OBJECT
+
+    struct data
+    {
+        QVBox *Top;
+        QLabel *Label;
+        QSplitter *Charts;
+        toListView *Statistics;
+        toBarChart *Wait;
+        toBarChart *IO;
+        toListView *Plan;
+    };
+
+    std::list<data> Open;
+
+    QPopupMenu *SaveMenu;
+    QPopupMenu *RemoveMenu;
+
+    static toAnalyze *Widget;
+    toAnalyze *Tool;
+    QSplitter *Splitter;
+    QWidget *Dummy;
+
+    QToolButton *ShowPlans;
+    QToolButton *ShowCharts;
+public:
+    toWorksheetStatistic(QWidget *parent);
+    ~toWorksheetStatistic();
+
+    static void saveStatistics(std::map<QCString, QString> &stats);
+
+    void addStatistics(std::map<QCString, QString> &stats);
+
+    void updateSplitter(void);
+public slots:
+
+    virtual void showPlans(bool);
+    virtual void showCharts(bool);
+
+    virtual void save(int);
+    virtual void remove
+        (int);
+    virtual void load(void);
+    virtual void displayMenu(void);
+};
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/utils.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/utils.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/utils.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,1544 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#include "utils.h"
+
+#include "tobackground.h"
+#include "toconf.h"
+#include "toconnection.h"
+#include "tohighlightedtext.h"
+#include "tomain.h"
+#include "tonewconnection.h"
+#include "toresult.h"
+#include "tosql.h"
+#include "tothread.h"
+#include "totool.h"
+
+#include <stdlib.h>
+
+#ifdef TO_KDE
+#include <kapp.h>
+#include <kfiledialog.h>
+#include <kio/netaccess.h>
+#include <kmenubar.h>
+#include <kstatusbar.h>
+#include <ktempfile.h>
+#include <kurl.h>
+#endif
+
+#include <qapplication.h>
+#include <qcombobox.h>
+#include <qcstring.h>
+#include <qcursor.h>
+#include <qfile.h>
+#include <qfiledialog.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlistview.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qregexp.h>
+#include <qstatusbar.h>
+#include <qtimer.h>
+#include <qtoolbar.h>
+#include <qtooltip.h>
+#include <qvbox.h>
+#include <qworkspace.h>
+
+#include "utils.moc"
+
+#ifdef WIN32
+#include "windows/cregistry.h"
+#endif
+
+#if defined(Q_OS_MACX)
+#include <sys/param.h>
+#include <CoreServices/CoreServices.h>
+#endif // Q_OS_MACX
+
+
+#define CHUNK_SIZE 31
+
+// A little magic to get lrefresh to work and get a check on qApp
+
+#undef QT_TRANSLATE_NOOP
+#define QT_TRANSLATE_NOOP(x,y) QTRANS(x,y)
+
+static toSQL SQLUserNamesMySQL(toSQL::TOSQL_USERLIST,
+                               "SHOW DATABASES",
+                               "List users in the database",
+                               "3.0",
+                               "MySQL");
+
+static toSQL SQLUserNames(toSQL::TOSQL_USERLIST,
+                          "SELECT UserName FROM sys.All_Users ORDER BY UserName",
+                          "");
+
+static toSQL SQLUserNamesPgSQL(toSQL::TOSQL_USERLIST,
+                               "SELECT nspname AS UserName FROM pg_namespace ORDER BY nspname",
+                               "",
+                               "7.1",
+                               "PostgreSQL");
+
+static toSQL SQLUserNamesSapDB(toSQL::TOSQL_USERLIST,
+                               "SELECT username \"UserName\" FROM users ORDER BY username",
+                               "",
+                               "",
+                               "SapDB");
+
+static toSQL SQLTextPiece("Global:SQLText",
+                          "SELECT SQL_Text\n"
+                          "  FROM V$SQLText_With_Newlines\n"
+                          " WHERE Address||':'||Hash_Value = :f1<char[100]>\n"
+                          " ORDER BY Piece",
+                          "Get text of SQL statement.");
+
+QString toSQLString(toConnection &conn, const QString &address)
+{
+    QString sql;
+
+    toQList vals = toQuery::readQuery(conn, SQLTextPiece, address);
+
+    for (toQList::iterator i = vals.begin();i != vals.end();i++)
+    {
+        sql.append(*i);
+    }
+    if (sql.isEmpty())
+        throw qApp->translate("toSQLString", "SQL Address not found in SGA");
+    return sql;
+}
+
+static toSQL SQLNowMySQL("Global:Now",
+                         "SELECT now()",
+                         "Get current date/time from database",
+                         "3.0",
+                         "MySQL");
+static toSQL SQLNow("Global:Now",
+                    "SELECT TO_CHAR(SYSDATE) FROM sys.DUAL",
+                    "");
+
+static toSQL SQLNowPgSQL("Global:Now",
+                         "SELECT now()",
+                         "",
+                         "7.1",
+                         "PostgreSQL");
+
+QString toNow(toConnection &conn)
+{
+    try
+    {
+        toQList vals = toQuery::readQuery(conn, SQLNow);
+        return toPop(vals);
+    }
+    catch (...)
+    {
+        return qApp->translate("toNow", "Unexpected error");
+    }
+}
+
+QString toSQLStripSpecifier(const QString &sql)
+{
+    QString ret;
+    char inString = 0;
+    for (unsigned int i = 0;i < sql.length();i++)
+    {
+        QChar rc = sql.at(i);
+        char c = rc.latin1();
+        if (inString)
+        {
+            if (c == inString)
+            {
+                inString = 0;
+            }
+            ret += c;
+        }
+        else
+        {
+            switch (c)
+            {
+            case '\'':
+                inString = '\'';
+                ret += rc;
+                break;
+            case '\"':
+                inString = '\"';
+                ret += rc;
+                break;
+            case ':':
+                ret += rc;
+                for (i++;i < sql.length();i++)
+                {
+                    rc = sql.at(i);
+                    c = rc.latin1();
+                    if (!rc.isLetterOrNumber())
+                        break;
+                    ret += rc;
+                }
+                if (c == '<')
+                {
+                    ret += QString::fromLatin1(" ");
+                    for (i++;i < sql.length();i++)
+                    {
+                        rc = sql.at(i);
+                        c = rc.latin1();
+                        ret += QString::fromLatin1(" ");
+                        if (c == '>')
+                        {
+                            i++;
+                            break;
+                        }
+                    }
+                }
+                i--;
+                break;
+            default:
+                ret += rc;
+            }
+        }
+    }
+    return ret;
+}
+
+QString toSQLStripBind(const QString &sql)
+{
+    QString ret;
+    char inString = 0;
+    for (unsigned int i = 0;i < sql.length();i++)
+    {
+        QChar rc = sql.at(i);
+        char c = rc.latin1();
+        if (inString)
+        {
+            if (c == inString)
+            {
+                inString = 0;
+            }
+            ret += rc;
+        }
+        else
+        {
+            switch (char(c))
+            {
+            case '\'':
+                inString = '\'';
+                ret += rc;
+                break;
+            case '\"':
+                inString = '\"';
+                ret += rc;
+                break;
+            case ':':
+                ret += QString::fromLatin1("''");
+                for (i++;i < sql.length();i++)
+                {
+                    rc = sql.at(i);
+                    c = rc.latin1();
+                    if (!rc.isLetterOrNumber())
+                        break;
+                }
+                if (c == '<')
+                {
+                    for (i++;i < sql.length();i++)
+                    {
+                        rc = sql.at(i);
+                        c = rc.latin1();
+                        if (c == '>')
+                        {
+                            i++;
+                            break;
+                        }
+                    }
+                }
+                i--;
+                break;
+            default:
+                ret += rc;
+            }
+        }
+    }
+    return ret;
+}
+
+static toSQL SQLAddress("Global:Address",
+                        "SELECT Address||':'||Hash_Value\n"
+                        "  FROM V$SQLText_With_Newlines\n"
+                        " WHERE SQL_Text LIKE :f1<char[150]>||'%'",
+                        "Get address of an SQL statement");
+
+QString toSQLToAddress(toConnection &conn, const QString &sql)
+{
+    QString search = toSQLStripSpecifier(sql);
+
+    toQList vals = toQuery::readQuery(conn, SQLAddress, search.left(CHUNK_SIZE));
+
+    for (toQList::iterator i = vals.begin();i != vals.end();i++)
+    {
+        if (search == toSQLString(conn, *i))
+            return *i;
+    }
+    throw qApp->translate("toSQLToAddress", "SQL Query not found in SGA");
+}
+
+static std::list<QString> LastMessages;
+
+void toStatusMessage(const QString &str, bool save, bool log)
+{
+#ifndef WIN32
+    if (!toThread::mainThread()){
+        return ;
+    }
+#endif
+    toMain *main = dynamic_cast<toMain *>(qApp->mainWidget());
+    if (main)
+    {
+      if(!str.isEmpty()){
+        int sec = toConfigurationSingle::Instance().globalConfig(CONF_STATUS_MESSAGE, DEFAULT_STATUS_MESSAGE).toInt();
+        if (save || sec == 0)
+            main->statusBar()->message(str.simplifyWhiteSpace());
+        else
+            main->statusBar()->message(str.simplifyWhiteSpace(), sec*1000);
+        if (!save && log)
+        {
+            if (toConfigurationSingle::Instance().globalConfig(CONF_MESSAGE_STATUSBAR, "").isEmpty())
+                main->displayMessage(str);
+            toPush(LastMessages, str);
+            if (int(LastMessages.size()) > toConfigurationSingle::Instance().globalConfig(CONF_STATUS_SAVE,
+                    DEFAULT_STATUS_SAVE).toInt())
+                toShift(LastMessages);
+        }
+        QToolTip::add
+            (main->statusBar(), str);
+      }
+    }
+    
+}
+
+std::list<QString> toStatusMessages(void)
+{
+    return LastMessages;
+}
+
+toMain *toMainWidget(void)
+{
+    return dynamic_cast<toMain *>(qApp->mainWidget());
+}
+
+QComboBox *toRefreshCreate(QWidget *parent, const char *name, const QString &def, QComboBox *item)
+{
+    QComboBox *refresh;
+    if (item)
+        refresh = item;
+    else
+        refresh = new QComboBox(false, parent, name);
+
+    refresh->insertItem(qApp->translate("toRefreshCreate", "None"));
+    refresh->insertItem(qApp->translate("toRefreshCreate", "2 seconds"));
+    refresh->insertItem(qApp->translate("toRefreshCreate", "5 seconds"));
+    refresh->insertItem(qApp->translate("toRefreshCreate", "10 seconds"));
+    refresh->insertItem(qApp->translate("toRefreshCreate", "30 seconds"));
+    refresh->insertItem(qApp->translate("toRefreshCreate", "1 min"));
+    refresh->insertItem(qApp->translate("toRefreshCreate", "5 min"));
+    refresh->insertItem(qApp->translate("toRefreshCreate", "10 min"));
+    QString str;
+    if (def)
+        str = def;
+    else
+        str = toConfigurationSingle::Instance().globalConfig(CONF_REFRESH, DEFAULT_REFRESH);
+    if (str == "2 seconds")
+        refresh->setCurrentItem(1);
+    else if (str == "5 seconds")
+        refresh->setCurrentItem(2);
+    else if (str == "10 seconds")
+        refresh->setCurrentItem(3);
+    else if (str == "30 seconds")
+        refresh->setCurrentItem(4);
+    else if (str == "1 min")
+        refresh->setCurrentItem(5);
+    else if (str == "5 min")
+        refresh->setCurrentItem(6);
+    else if (str == "10 min")
+        refresh->setCurrentItem(7);
+    else
+        refresh->setCurrentItem(0);
+    return refresh;
+}
+
+void toRefreshParse(toTimer *timer, const QString &str)
+{
+    QString t = str;
+    if (t.isEmpty())
+        t = toConfigurationSingle::Instance().globalConfig(CONF_REFRESH, DEFAULT_REFRESH);
+
+    if (t == qApp->translate("toRefreshCreate", "None") || t == "None")
+        timer->stop();
+    else if (t == qApp->translate("toRefreshCreate", "2 seconds") || t == "2 seconds")
+        timer->start(2*1000);
+    else if (t == qApp->translate("toRefreshCreate", "5 seconds") || t == "5 seconds")
+        timer->start(5*1000);
+    else if (t == qApp->translate("toRefreshCreate", "10 seconds") || t == "10 seconds")
+        timer->start(10*1000);
+    else if (t == qApp->translate("toRefreshCreate", "30 seconds") || t == "30 seconds")
+        timer->start(30*1000);
+    else if (t == qApp->translate("toRefreshCreate", "1 min") || t == "1 min")
+        timer->start(60*1000);
+    else if (t == qApp->translate("toRefreshCreate", "5 min") || t == "5 min")
+        timer->start(300*1000);
+    else if (t == qApp->translate("toRefreshCreate", "10 min") || t == "10 min")
+        timer->start(600*1000);
+    else
+        throw qApp->translate("toRefreshParse", "Unknown timer value");
+}
+
+QString toDeepCopy(const QString &str)
+{
+    return str.copy();
+}
+
+#ifdef ENABLE_STYLE
+#  if QT_VERSION < 0x030000
+#    include <qmotifstyle.h>
+#    include <qmotifplusstyle.h>
+#    include <qsgistyle.h>
+#    include <qcdestyle.h>
+#    include <qwindowsstyle.h>
+#    include <qplatinumstyle.h>
+
+void toSetSessionType(const QString &str)
+{
+    if (str == "Motif")
+        qApp->setStyle(new QMotifStyle());
+    else if (str == "Motif Plus")
+        qApp->setStyle(new QMotifPlusStyle());
+    else if (str == "SGI")
+        qApp->setStyle(new QSGIStyle());
+    else if (str == "CDE")
+        qApp->setStyle(new QCDEStyle());
+    else if (str == "Windows")
+        qApp->setStyle(new QWindowsStyle());
+    else if (str == "Platinum")
+        qApp->setStyle(new QPlatinumStyle());
+    else
+        toStatusMessage(qApp->translate("toSetSessionType", "Failed to find style %1").arg(str));
+}
+
+QString toGetSessionType(void)
+{
+    QStyle *style = &qApp->style();
+    if (style->isA("QMotifPlusStyle"))
+        return "Motif Plus";
+    else if (style->isA("QSGIStyle"))
+        return "SGI";
+    else if (style->isA("QCDEStyle"))
+        return "CDE";
+    else if (style->isA("QMotifStyle"))
+        return "Motif";
+    else if (style->isA("QPlatinumStyle"))
+        return "Platinum";
+    else if (style->isA("QWindowsStyle"))
+        return "Windows";
+    toStatusMessage(qApp->translate("toGetSessionType", "Failed to find style match"));
+    return DEFAULT_STYLE;
+}
+
+QStringList toGetSessionTypes(void)
+{
+    QStringList ret;
+    ret << "Motif Plus";
+    ret << "SGI";
+    ret << "CDI";
+    ret << "Motif";
+    ret << "Platinum";
+    ret << "Windows";
+    return ret;
+}
+
+#  else
+#    include <qstylefactory.h>
+#    include <qstyle.h>
+
+QStringList toGetSessionTypes(void)
+{
+    return QStyleFactory::keys();
+}
+
+QString toGetSessionType(void)
+{
+    QStyle *style = &qApp->style();
+
+    // This is probably really slow, but who cares.
+
+    QStringList keys = QStyleFactory::keys();
+    for (unsigned int i = 0;i < keys.size();i++)
+    {
+        QString name = keys[i];
+        QStyle *t = QStyleFactory::create(name);
+        if (!t)
+            continue;
+        if (t->className() == style->className())
+        {
+            delete t;
+            return name;
+        }
+        delete t;
+    }
+
+    // Weird should never get here.
+    return style->className();
+}
+
+void toSetSessionType(const QString &str)
+{
+    QStyle *style = QStyleFactory::create(str);
+    if (style)
+        qApp->setStyle(style);
+    else
+        toStatusMessage(qApp->translate("toSetSessionType", "Failed to find style %1").arg(str));
+}
+
+#  endif
+#endif
+
+QToolBar *toAllocBar(QWidget *parent, const QString &str)
+{
+    QString db;
+    try
+    {
+        db = toCurrentConnection(parent).description(false);
+    }
+    catch (...)
+    {}
+    QString name = str;
+    if (!db.isEmpty() && !toConfigurationSingle::Instance().globalConfig(CONF_DB_TITLE, "Yes").isEmpty())
+    {
+        name += QString::fromLatin1(" ");
+        name += db;
+    }
+    QToolBar *tool;
+#ifdef TO_KDE
+
+    if (parent == toMainWidget())
+        tool = new KToolBar(toMainWidget(), QMainWindow::Top);
+    else
+    {
+#if KDE_VERSION < 220
+        tool = new QToolBar(name, toMainWidget(), parent);
+#else
+
+        tool = new KToolBar(toMainWidget(), parent);
+#endif
+
+    }
+#else
+    if (parent == toMainWidget())
+        tool = new QToolBar(name, toMainWidget());
+    else
+        tool = new QToolBar(name, toMainWidget(), parent);
+#endif
+
+    tool->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed));
+    return tool;
+}
+
+TODock *toAllocDock(const QString &name,
+                    const QString &db,
+#ifdef TO_KDE
+                    const QPixmap &icon
+#else
+                    const QPixmap &
+#endif
+                   )
+{
+    QString str = name;
+    if (!db.isEmpty() && !toConfigurationSingle::Instance().globalConfig(CONF_DB_TITLE, "Yes").isEmpty())
+    {
+        str += QString::fromLatin1(" ");
+        str += db;
+    }
+#ifdef TO_KDE
+    KDockMainWindow *main = (KDockMainWindow *)toMainWidget();
+    return main->createDockWidget(str, icon);
+#else
+#  if QT_VERSION < 0x030000
+
+    if (toConfigurationSingle::Instance().globalConfig(CONF_DOCK_TOOLBAR, "Yes").isEmpty())
+    {
+        QVBox *frm = new QVBox(toMainWidget()->workspace());
+        frm->setCaption(str);
+        return frm;
+    }
+    else
+    {
+        QToolBar *toolbar = toAllocBar(toMainWidget(), name);
+        return toolbar;
+    }
+#  else
+    QDockWindow *dock = new QDockWindow(QDockWindow::InDock, toMainWidget());
+    dock->setNewLine(true);
+    dock->setCloseMode(QDockWindow::Always);
+    return dock;
+#  endif
+#endif
+}
+
+void toAttachDock(TODock *dock, QWidget *container, QMainWindow::ToolBarDock place)
+{
+#ifdef TO_KDE
+    KDockMainWindow *main = dynamic_cast<KDockMainWindow *>(toMainWidget());
+    if (main)
+    {
+        KDockWidget::DockPosition pos = KDockWidget::DockLeft;
+        int pct = 20;
+        switch (place)
+        {
+        case QMainWindow::Top:
+            pos = KDockWidget::DockTop;
+            break;
+        case QMainWindow::Bottom:
+            pct = 80;
+            pos = KDockWidget::DockBottom;
+            break;
+        default:
+            toStatusMessage(qApp->translate("toAttachDock", "Unknown dock position"));
+            break;
+        case QMainWindow::Right:
+            pct = 80;
+            pos = KDockWidget::DockRight;
+            break;
+        case QMainWindow::Left:
+        case QMainWindow::Minimized:
+            break;
+        }
+        KDockWidget *dw = (KDockWidget *)(dock);
+        if (dw)
+        {
+            dw->setWidget(container);
+            if (place == QMainWindow::Minimized)
+                main->makeDockInvisible(dw);
+            else
+                dw->manualDock(main->getMainDockWidget(), pos, pct);
+        }
+    }
+    else
+    {
+        toStatusMessage(qApp->translate("toAttachDock", "Main widget not KDockMainWindow"));
+        return ;
+    }
+#else
+#  if QT_VERSION < 0x030000
+    if (!toConfigurationSingle::Instance().globalConfig(CONF_DOCK_TOOLBAR, "Yes").isEmpty())
+    {
+        QToolBar *bar = (QToolBar *)dock;
+        if (bar)
+        {
+            toMainWidget()->moveToolBar(bar, place);
+            bar->setStretchableWidget(container);
+        }
+    }
+#  else
+    QDockWindow *d = (QDockWindow *)dock;
+    if (d)
+    {
+        toMainWidget()->moveDockWindow(d, place);
+        d->setResizeEnabled(true);
+        d->setWidget(container);
+        container->show();
+    }
+#  endif
+#endif
+}
+
+QString toFontToString(const QFont &fnt)
+{
+#if QT_VERSION >= 0x030000
+    return fnt.toString();
+#else
+#  ifdef TO_FONT_RAW_NAME
+
+    return fnt.rawName();
+#  else
+
+    QStringList lst;
+    lst.insert(lst.end(), fnt.family());
+    lst.insert(lst.end(), QString::number(fnt.pointSize()));
+    lst.insert(lst.end(), QString::number(int(fnt.weight())));
+    lst.insert(lst.end(), QString::number(int(fnt.italic())));
+    lst.insert(lst.end(), QString::number(int(fnt.charSet())));
+    return lst.join("/");
+#  endif
+#endif
+}
+
+QFont toStringToFont(const QString &str)
+{
+    if (str.isEmpty())
+        return QFont(QString::fromLatin1("Courier New"), 12);
+#if QT_VERSION >= 0x030000
+
+    QFont fnt;
+    if (fnt.fromString(str))
+        return fnt;
+#endif
+#ifdef TO_FONT_RAW_NAME
+
+    QFont fnt;
+    fnt.setRawName(str);
+    return fnt;
+#else
+
+    QStringList lst = QStringList::split(QString::fromLatin1("/"), str);
+    if (lst.count() != 5)
+        return QFont(QString::fromLatin1("Courier"), 12);
+    return QFont(lst[0], lst[1].toInt(), lst[2].toInt(),
+                 bool(lst[3].toInt())
+#  if QT_VERSION < 0x030000
+                 , QFont::CharSet(lst[4].toInt())
+#  endif
+                );
+#endif
+}
+
+int toSizeDecode(const QString &str)
+{
+    if (str == QString::fromLatin1("KB"))
+        return 1024;
+    if (str == QString::fromLatin1("MB"))
+        return 1024*1024;
+    return 1;
+}
+
+QString toPluginPath(void)
+{
+    QString str;
+#ifdef WIN32
+
+    CRegistry registry;
+    DWORD siz = 1024;
+    char buffer[1024];
+    try
+    {
+        if (registry.GetStringValue(HKEY_LOCAL_MACHINE,
+                                    "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\TOra",
+                                    "UninstallString",
+                                    buffer, siz))
+        {
+            if (siz > 0)
+            {
+                str = buffer;
+                static QRegExp findQuotes("\"([^\"]*)\"");
+                if (findQuotes.search(str) >= 0)
+                    str = findQuotes.cap(1);
+                int ind = str.findRev('\\');
+                if (ind >= 0)
+                    str = str.mid(0, ind);
+            }
+        }
+    }
+    catch (...)
+    {}
+#elif defined( Q_OS_MACX )
+
+
+
+
+
+    { // MacOS
+        char resourcePath[MAXPATHLEN];
+        memset( &resourcePath[0], 0, MAXPATHLEN );
+        CFBundleRef appBundle = ::CFBundleGetMainBundle();
+        if ( appBundle )
+        {
+            CFURLRef urlRef = CFBundleCopyResourcesDirectoryURL( appBundle );
+            if ( urlRef )
+            {
+                UInt8* _p = (UInt8*) & resourcePath[0];
+                bool isOK = CFURLGetFileSystemRepresentation(
+                                urlRef, TRUE, _p, MAXPATHLEN );
+                if ( !isOK )
+                {
+                    // QMessageBox::warning( 0, "File error",
+                    //     QString( "Unexpected: no file system representation") );
+                }
+            }
+            else
+            {
+                // QMessageBox::warning( 0, "File error",
+                //     QString( "Unexpected: unable to get resource directory") );
+            }
+            CFRelease( urlRef );
+            str = &resourcePath[0];
+        }
+        else
+        {
+            // QMessageBox::warning( 0, "File error",
+            //     QString( "Unexpected: unable to get main bundle") );
+        }
+    } // MacOS
+#else
+    str = toConfigurationSingle::Instance().globalConfig(CONF_PLUGIN_DIR, DEFAULT_PLUGIN_DIR);
+#endif
+
+    return str;
+}
+
+QString toHelpPath(void)
+{
+    QString str = toConfigurationSingle::Instance().globalConfig(CONF_HELP_PATH, "");
+    if (str.isEmpty())
+    {
+        str = toPluginPath();
+        str += QString::fromLatin1("/help/toc.html");
+    }
+    return str;
+}
+
+QString toExpandFile(const QString &file)
+{
+    QString ret(file);
+    QString home;
+#ifdef WIN32
+
+    CRegistry registry;
+    DWORD siz = 1024;
+    char buffer[1024];
+    try
+    {
+        if (registry.GetStringValue(HKEY_CURRENT_USER,
+                                    "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders",
+                                    "Personal",
+                                    buffer, siz))
+        {
+            if (siz > 0)
+                home = buffer;
+        }
+    }
+    catch (...)
+    {}
+#else
+
+    const char *homet = getenv("HOME");
+    if (!homet)
+        home = "";
+    else
+        home = homet;
+#endif
+
+    ret.replace(QRegExp(QString::fromLatin1("\\$HOME")), home);
+    return ret;
+}
+
+QCString toReadFile(const QString &filename)
+{
+    QString expanded = toExpandFile(filename);
+#ifdef TO_KDE
+
+    KURL url(expanded);
+    if (!url.isLocalFile())
+    {
+        QString tmpFile;
+        if (KIO::NetAccess::download(url, tmpFile
+#if KDE_VERSION >= 0x30200
+                                     , toMainWidget()
+#endif
+                                    ))
+        {
+            QFile file(tmpFile);
+            if (!file.open(IO_ReadOnly))
+            {
+                KIO::NetAccess::removeTempFile(tmpFile);
+                throw QT_TRANSLATE_NOOP("toReadFile", "Couldn't open file %1.").arg(filename);
+            }
+
+            int size = file.size();
+
+            char *buf = new char[size + 1];
+            if (file.readBlock(buf, size) == -1)
+            {
+                delete[] buf;
+                KIO::NetAccess::removeTempFile(tmpFile);
+                throw QT_TRANSLATE_NOOP("toReadFile", "Encountered problems read configuration");
+            }
+            buf[size] = 0;
+            QCString ret(buf, size + 1);
+            delete[] buf;
+            KIO::NetAccess::removeTempFile(tmpFile);
+            return ret;
+        }
+        throw QT_TRANSLATE_NOOP("toReadFile", "Couldn't download file");
+    }
+#endif
+    QFile file(expanded);
+    if (!file.open(IO_ReadOnly))
+        throw QT_TRANSLATE_NOOP("toReadFile", "Couldn't open file %1.").arg(filename);
+
+    int size = file.size();
+
+    char *buf = new char[size + 1];
+    if (file.readBlock(buf, size) == -1)
+    {
+        delete[] buf;
+        throw QT_TRANSLATE_NOOP("toReadFile", "Encountered problems read configuration");
+    }
+    buf[size] = 0;
+    QCString ret(buf, size + 1);
+    delete[] buf;
+    return ret;
+}
+
+bool toWriteFile(const QString &filename, const QCString &data)
+{
+    QString expanded = toExpandFile(filename);
+#ifdef TO_KDE
+
+    KURL url(expanded);
+    if (!url.isLocalFile())
+    {
+        KTempFile file;
+        file.file()->writeBlock(data, data.length());
+        if (file.status() != IO_Ok)
+        {
+            TOMessageBox::warning(toMainWidget(), QT_TRANSLATE_NOOP("toWriteFile", "File error"),
+                                  QT_TRANSLATE_NOOP("toWriteFile", "Couldn't write data to tempfile"));
+            file.unlink();
+            return false;
+        }
+        file.close();
+        if (!KIO::NetAccess::upload(file.name(), url
+#if KDE_VERSION >= 0x30200
+                                    , toMainWidget()
+#endif
+                                   ))
+        {
+            file.unlink();
+            TOMessageBox::warning(toMainWidget(), QT_TRANSLATE_NOOP("toWriteFile", "File error"),
+                                  QT_TRANSLATE_NOOP("toWriteFile", "Couldn't upload data to URL"));
+            return false;
+        }
+        file.unlink();
+        toStatusMessage(QT_TRANSLATE_NOOP("toWriteFile", "File saved successfully"), false, false);
+        return true;
+    }
+#endif
+
+    QFile file(expanded);
+    if (!file.open(IO_WriteOnly))
+    {
+        TOMessageBox::warning(toMainWidget(), QT_TRANSLATE_NOOP("toWriteFile", "File error"),
+                              QT_TRANSLATE_NOOP("toWriteFile", "Couldn't open file for writing"));
+        return false;
+    }
+    file.writeBlock(data, data.length());
+    if (file.status() != IO_Ok)
+    {
+        TOMessageBox::warning(toMainWidget(), QT_TRANSLATE_NOOP("toWriteFile", "File error"),
+                              QT_TRANSLATE_NOOP("toWriteFile", "Couldn't write data to file"));
+        return false;
+    }
+    toStatusMessage(QT_TRANSLATE_NOOP("toWriteFile", "File saved successfully"), false, false);
+    return true;
+}
+
+bool toWriteFile(const QString &filename, const QString &data)
+{
+    return toWriteFile(filename, data.local8Bit());
+}
+
+bool toCompareLists(QStringList &lst1, QStringList &lst2, unsigned int len)
+{
+    if (lst1.count() < len || lst2.count() < len)
+        return false;
+    for (unsigned int i = 0;i < len;i++)
+        if (lst1[i] != lst2[i])
+            return false;
+    return true;
+}
+
+static QString GetExtensions(void)
+{
+    static QRegExp repl(QString::fromLatin1("\\s*,\\s*"));
+    QString t = toConfigurationSingle::Instance().globalConfig(CONF_EXTENSIONS, DEFAULT_EXTENSIONS);
+    t.replace(repl, QString::fromLatin1("\n"));
+    return t;
+}
+
+static QString AddExt(QString t, const QString &filter)
+{
+    static QRegExp hasext(QString::fromLatin1("\\.[^\\/]*$"));
+    if (t.isEmpty())
+        return t;
+
+    toConfigurationSingle::Instance().globalSetConfig(CONF_LAST_DIR, t);
+
+    if (hasext.match(t) < 0)
+    {
+        static QRegExp findext(QString::fromLatin1("\\.[^ \t\r\n\\)\\|]*"));
+        int len = 0;
+        int pos = findext.match(filter, 0, &len);
+        if (pos >= 0)
+            t += filter.mid(pos, len);
+        else
+        {
+            QFile file(t);
+            if (!file.exists())
+                t += QString::fromLatin1(".sql");
+        }
+    }
+    return t;
+}
+
+QString toOpenFilename(const QString &filename, const QString &filter, QWidget *parent)
+{
+    QString t = filter;
+    if (t.isEmpty())
+        t = GetExtensions();
+
+    QString dir = filename;
+    if (dir.isNull())
+        dir = toConfigurationSingle::Instance().globalConfig(CONF_LAST_DIR, "");
+
+#ifdef TO_KDE
+
+    KURL url = TOFileDialog::getOpenURL(dir, t, parent);
+    if (url.isEmpty())
+        return QString::null;
+    if (url.isLocalFile())
+        return AddExt(url.path(), t);
+    return AddExt(url.url(), t);
+#else
+
+    return AddExt(TOFileDialog::getOpenFileName(dir, t, parent), t);
+#endif
+}
+
+QString toSaveFilename(const QString &filename, const QString &filter, QWidget *parent)
+{
+    QString t = filter;
+    if (t.isEmpty())
+        t = GetExtensions();
+
+    QString dir = filename;
+    if (dir.isNull())
+        dir = toConfigurationSingle::Instance().globalConfig(CONF_LAST_DIR, "");
+
+#ifdef TO_KDE
+
+    KURL url = TOFileDialog::getSaveURL(dir, t, parent);
+    if (url.hasPass())
+        TOMessageBox::warning(toMainWidget(), qApp->translate("toSaveFilename", "File open password"), url.pass());
+    if (url.isEmpty())
+        return QString::null;
+    if (url.isLocalFile())
+        return AddExt(url.path(), t);
+    return AddExt(url.url(), t);
+#else
+
+    return AddExt(TOFileDialog::getSaveFileName(dir, t, parent), t);
+#endif
+}
+
+void toSetEnv(const QCString &var, const QCString &val)
+{
+#if HAVE_SETENV && !defined(WIN32)
+    setenv(var, val, 1);
+#else
+    // Has a memory leak, but just a minor one.
+
+    char *env = new char[var.length() + val.length() + 2];
+    strcpy(env, var);
+    strcat(env, "=");
+    strcat(env, val);
+    putenv(env);
+#endif
+}
+
+void toUnSetEnv(const QCString &var)
+{
+#if HAVE_SETENV && !defined(WIN32)
+    unsetenv(var);
+#else
+    toSetEnv(var, "");
+#endif
+}
+
+int toToolMenuIndex(void)
+{
+    return toMainWidget()->menuBar()->indexOf(toMain::TO_WINDOWS_MENU);
+}
+
+#define COLORS 2
+
+#define TYPES 7
+
+#define STYLES 5
+
+QBrush toChartBrush(int index)
+{
+    index %= (COLORS * TYPES * STYLES);
+    index = COLORS * TYPES * STYLES - 1 - index;
+    int type = index % TYPES;
+    int color = (index / TYPES) % COLORS;
+    int style = (index / TYPES / COLORS);
+    int r = 0, g = 0, b = 0;
+    int offset = 1;
+    switch (type)
+    {
+    case 6:
+        r = 1;
+        break;
+    case 5:
+        g = 1;
+        break;
+    case 4:
+        b = 1;
+        break;
+    case 3:
+        r = g = 1;
+        break;
+    case 2:
+        r = b = 1;
+        break;
+    case 1:
+        b = g = 1;
+        break;
+    case 0:
+        r = b = g = 1;
+        offset = 0;
+        break;
+    }
+
+    QBrush::BrushStyle rets;
+
+    switch (style)
+    {
+    default:
+        rets = QBrush::SolidPattern;
+        break;
+    case 3:
+        rets = QBrush::BDiagPattern;
+        break;
+    case 2:
+        rets = QBrush::FDiagPattern;
+        break;
+    case 1:
+        rets = QBrush::DiagCrossPattern;
+        break;
+    case 0:
+        rets = QBrush::CrossPattern;
+        break;
+    }
+
+    color += offset;
+
+    return QBrush(QColor(std::min(255, r*color*256 / (COLORS)),
+                         std::min(255, g*color*256 / (COLORS)),
+                         std::min(255, b*color*256 / (COLORS))),
+                  rets);
+}
+
+toToolWidget *toCurrentTool(QObject *cur)
+{
+    while (cur)
+    {
+        toToolWidget *tool = dynamic_cast<toToolWidget *>(cur);
+        if (tool)
+            return tool;
+        cur = cur->parent();
+    }
+    throw qApp->translate("toCurrentTool", "Couldn't find parent tool. Internal error.");
+}
+
+toConnection &toCurrentConnection(QObject *cur)
+{
+    while (cur)
+    {
+        toConnectionWidget *conn = dynamic_cast<toConnectionWidget *>(cur);
+        if (conn)
+            return conn->connection();
+        cur = cur->parent();
+    }
+    throw qApp->translate("toCurrentConnection", "Couldn't find parent connection. Internal error.");
+}
+
+unsigned int toBusy::Count = 0;
+
+static toLock BusyLock;
+
+void toBusy::clear()
+{
+    BusyLock.lock();
+    Count = 0;
+    BusyLock.unlock();
+    qApp->restoreOverrideCursor();
+}
+
+toBusy::toBusy()
+{
+    BusyLock.lock();
+    if (toThread::mainThread())
+    {
+        if (!Count)
+            qApp->setOverrideCursor(Qt::waitCursor);
+        Count++;
+    }
+    BusyLock.unlock();
+}
+
+toBusy::~toBusy()
+{
+    BusyLock.lock();
+    if (toThread::mainThread())
+    {
+        if (Count > 0)
+            Count--;
+        if (!Count)
+            qApp->restoreOverrideCursor();
+    }
+    BusyLock.unlock();
+}
+
+void toReadableColumn(QString &name)
+{
+    bool inWord = false;
+    for (unsigned int i = 0;i < name.length();i++)
+    {
+        if (name.at(i) == '_')
+        {
+            name.ref(i) = ' ';
+            inWord = false;
+        }
+        else if (name.at(i).isSpace())
+        {
+            inWord = false;
+        }
+        else if (name.at(i).isLetter())
+        {
+            if (inWord)
+                name.ref(i) = name.at(i).lower();
+            else
+                name.ref(i) = name.at(i).upper();
+            inWord = true;
+        }
+    }
+}
+
+bool toIsOracle(const toConnection &conn)
+{
+    return conn.provider() == "Oracle";
+}
+
+bool toIsSapDB(const toConnection &conn)
+{
+    return conn.provider() == "SapDB";
+}
+
+bool toIsMySQL(const toConnection &conn)
+{
+    return conn.provider() == "MySQL";
+}
+
+bool toIsPostgreSQL(const toConnection &conn)
+{
+    return conn.provider() == "PostgreSQL";
+}
+
+static QListViewItem *FindItem(QListView *lst, QListViewItem *first, const QString &str)
+{
+    while (first)
+    {
+        QString tmp = first->text(0);
+        if (tmp == str)
+            return first;
+        else
+        {
+            tmp += QString::fromLatin1(":");
+            if (str.startsWith(tmp))
+            {
+                QListViewItem *ret = FindItem(lst, first->firstChild(), str.mid(tmp.length()));
+                if (ret)
+                    return ret;
+            }
+        }
+        first = first->nextSibling();
+    }
+    return NULL;
+}
+
+QListViewItem *toFindItem(QListView *lst, const QString &str)
+{
+    return FindItem(lst, lst->firstChild(), str);
+}
+
+void toToolCaption(toToolWidget *widget, const QString &caption)
+{
+    QString title;
+    if (!toConfigurationSingle::Instance().globalConfig(CONF_DB_TITLE, "Yes").isEmpty())
+    {
+        try
+        {
+            title = widget->connection().description();
+            title += QString::fromLatin1(" ");
+        }
+        catch (...)
+        {}
+    }
+    title += caption;
+
+    widget->setCaption(title);
+    toMainWidget()->windowsMenu();
+}
+
+void toMapExport(std::map<QCString, QString> &data, const QCString &prefix,
+                 std::map<QCString, QString> &src)
+{
+    std::map<QCString, QString>::iterator i = src.begin();
+    if (i != src.end())
+    {
+        data[prefix + ":First"] = QString::fromLatin1((*i).first);
+        QCString key = prefix + ":d:";
+        do
+        {
+            data[key + (*i).first] = (*i).second;
+            i++;
+        }
+        while (i != src.end());
+    }
+}
+
+void toMapImport(std::map<QCString, QString> &data, const QCString &prefix,
+                 std::map<QCString, QString> &dst)
+{
+    dst.clear();
+    std::map<QCString, QString>::iterator i = data.find(prefix + ":First");
+    if (i != data.end())
+    {
+        QCString key = prefix + ":d:";
+        i = data.find(key + (*i).second.latin1());
+        while (i != data.end() && (*i).first.mid(0, key.length()) == key)
+        {
+            QCString t = (*i).first.mid(key.length());
+            if (t.isNull())
+                t = "";
+            dst[t] = (*i).second;
+            i++;
+        }
+    }
+#if 0
+    for (std::map<QCString, QString>::iterator j = dst.begin();j != dst.end();j++)
+        printf("%s=%s\n", (const char *)((*j).first), (const char *)((*j).second));
+#endif
+}
+
+bool toCheckModal(QWidget *widget)
+{
+    QWidget *parent = QApplication::activeModalWidget();
+    if (!parent)
+        return true;
+    while (widget && widget != parent)
+        widget = widget->parentWidget();
+    if (widget == parent)
+        return true;
+    return false;
+}
+
+static bool IndicateEmpty = false;
+
+void toUpdateIndicateEmpty(void)
+{
+    IndicateEmpty = !toConfigurationSingle::Instance().globalConfig(CONF_INDICATE_EMPTY, "").isEmpty();
+}
+
+toQValue toNull(const toQValue &str)
+{
+    if (IndicateEmpty)
+    {
+        if (str.isNull())
+            return str;
+        if (str.toString().length() == 0)
+            return QString::fromLatin1("''");
+    }
+    else if (str.isNull())
+        return QString::fromLatin1("{null}");
+    return str;
+}
+
+toQValue toUnnull(const toQValue &str)
+{
+    if (IndicateEmpty)
+    {
+        if (QString(str) == QString::fromLatin1("''"))
+            return QString::fromLatin1("");
+    }
+    else if (QString(str) == QString::fromLatin1("{null}"))
+        return QString::null;
+    return str;
+}
+
+QString toTranslateMayby(const QString &ctx, const QString &text)
+{
+    if (ctx.contains(QString::fromLatin1(" ")) || ctx.latin1() != ctx.utf8() || text.latin1() != text.utf8() || ctx.isEmpty() || text.isEmpty())
+        return text;
+#ifdef TODEBUG_TRANSLATION
+
+    static std::map<QString, QString> Context;
+    QString t = ctx + QString::fromLatin1(" ") + text;
+    if (Context[t].isEmpty())
+    {
+        Context[t] = text;
+        printf("QT_TRANSLATE_NOOP(\"%s\",\"%s\"),\n", (const char *)ctx.latin1(), (const char *)text.latin1());
+    }
+#endif
+    return QT_TRANSLATE_NOOP(ctx.latin1(), text.latin1());
+}
+
+toPopupButton::toPopupButton(const QIconSet &iconSet, const QString &textLabel,
+                             const QString &grouptext, QToolBar *parent, const char *name)
+        : QToolButton(iconSet, textLabel, grouptext, NULL, NULL, parent, name)
+{
+#if QT_VERSION >= 0x030000
+    connect(this, SIGNAL(clicked()), this, SLOT(click()));
+#endif
+
+    setPopupDelay(0);
+}
+
+toPopupButton::toPopupButton(QWidget *parent, const char *name)
+        : QToolButton(parent, name)
+{
+#if QT_VERSION >= 0x030000
+    connect(this, SIGNAL(clicked()), this, SLOT(click()));
+#endif
+
+    setPopupDelay(0);
+}
+
+void toPopupButton::click(void)
+{
+#if QT_VERSION >= 0x030000
+    openPopup();
+#endif
+}
+
+QString toObfuscate(const QString &str)
+{
+    if (str.isEmpty())
+        return str;
+
+#if QT_VERSION >= 0x030100
+
+    QByteArray arr = qCompress(str.utf8());
+    QString ret = "\002";
+#else
+
+    QByteArray arr = str.utf8();
+    QString ret = "\001";
+#endif
+
+    char buf[100]; // Just to be on the safe side
+    for (unsigned int i = 0;i < arr.size();i++)
+    {
+        sprintf(buf, "%02x", ((unsigned int)arr.at(i)) % 0xff);
+        ret += buf;
+    }
+    return ret;
+}
+
+QString toUnobfuscate(const QString &str)
+{
+    if (str.isEmpty())
+        return str;
+
+    if (str.at(0) != '\001' && str.at(0) != '\002')
+        return str;
+
+    QByteArray arr(int(str.length() / 2));
+    for (unsigned int i = 1;i < str.length();i += 2)
+        arr.at(i / 2) = str.mid(i, 2).toInt(0, 16);
+    if (str.at(0) == '\002')
+    {
+#if QT_VERSION >= 0x030100
+        QByteArray ret = qUncompress(arr);
+        return QString::fromUtf8(ret);
+#else
+
+        toStatusMessage("Tried to unobfuscate obfuscated text from a Qt of version 3.1\n"
+                        "from one with Qt version 3.0.x which won't work");
+        return QString::null;
+#endif
+
+    }
+    else
+        return QString::fromUtf8(arr);
+}
+
+QKeySequence toKeySequence(const QString &key)
+{
+    QKeySequence ret = key;
+    if (key.isEmpty() && ret.isEmpty())
+        printf("Key sequence %s is not valid\n", (const char *)key);
+    return ret;
+}
+
+bool toCheckKeyEvent(QKeyEvent *event, const QKeySequence &key)
+{
+    int state = 0;
+    if (key.count() != 1)
+        return false;
+    int val = key[0];
+    if ((val&Qt::META) == Qt::META)
+        state |= Qt::MetaButton;
+    if ((val&Qt::SHIFT) == Qt::SHIFT)
+        state |= Qt::ShiftButton;
+    if ((val&Qt::CTRL) == Qt::CTRL)
+        state |= Qt::ControlButton;
+    if ((val&Qt::ALT) == Qt::ALT)
+        state |= Qt::AltButton;
+
+    val &= 0xfffff;
+
+    return (event->state() == state && event->key() == val);
+}
+
+int countChars(const QString &source, const char find) {
+    int found = 0;
+    unsigned int i;
+
+    for(i = 0; i < source.length(); i++) {
+        if(source[i] == find)
+            found++;
+    }
+
+    return found;
+}

Added: kde-extras/tora/branches/upstream/current/src/utils.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/utils.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/utils.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,530 @@
+/*****
+*
+* TOra - An Oracle Toolkit for DBA's and developers
+* Copyright (C) 2003-2005 Quest Software, Inc
+* Portions Copyright (C) 2005 Other Contributors
+* 
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation;  only version 2 of
+* the License is valid for this program.
+* 
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+* 
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*
+*      As a special exception, you have permission to link this program
+*      with the Oracle Client libraries and distribute executables, as long
+*      as you follow the requirements of the GNU GPL in regard to all of the
+*      software in the executable aside from Oracle client libraries.
+*
+*      Specifically you are not permitted to link this program with the
+*      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+*      And you are not permitted to distribute binaries compiled against
+*      these libraries without written consent from Quest Software, Inc.
+*      Observe that this does not disallow linking to the Qt Free Edition.
+*
+*      You may link this product with any GPL'd Qt library such as Qt/Free
+*
+* All trademarks belong to their respective owners.
+*
+*****/
+
+#ifndef UTILS_H
+#define UTILS_H
+
+#include "config.h"
+
+#include <list>
+#include <map>
+#include <algorithm>
+
+#include <qmainwindow.h>
+#include <qtoolbutton.h>
+
+#ifdef TO_KDE
+#include <kapp.h>
+#if KDE_VERSION < 220
+#define TOPrinter QPrinter
+#else
+#define TOPrinter KPrinter
+#define TO_HAS_KPRINT
+#endif
+#define TOFileDialog KFileDialog
+#else
+#define TOPrinter QPrinter
+#define TOFileDialog QFileDialog
+#endif
+#define TOMessageBox QMessageBox
+#define TODock QWidget
+
+#ifdef TO_KDE
+#  if KDE_VERSION >= 0x30400
+#    define TO_KDE_KACCELMANAGER
+#  endif
+#endif
+
+#undef TO_DEBUG
+#ifdef TO_DEBUG
+#include <stdio.h>
+static FILE* toraLog=NULL;
+#define TO_DEBUGOUT(x) if(!toraLog) toraLog=fopen("C:\\Temp\\tora.log","a"); fprintf(toraLog,"%s\n",(const char *)x);fflush(toraLog);
+#else
+#define TO_DEBUGOUT(x)
+#endif
+
+#if 0
+/**
+ * The class to use for a printer object.
+ */
+class TOPrinter : public QPrinter
+    {}
+;
+/**
+ * The class to use for a dock widget.
+ */
+class TODock : public QWidget
+    {}
+;
+/**
+ * The class to use for a file dialog.
+ */
+class TOFileDialog : public QFileDialog
+    {}
+;
+/**
+ * The class to use for a messagebox.
+ */
+class TOMessageBox : public QMessageBox
+    {}
+;
+#endif
+
+class QComboBox;
+class QListView;
+class QListViewItem;
+class QToolBar;
+class QWidget;
+class toConnection;
+class toMain;
+class toQValue;
+class toTimer;
+class toToolWidget;
+
+/** Display a message in the statusbar of the main window.
+ * @param str Message to display
+ * @param save If true don't remove the message after a specified interval.
+ * @param log Log message. Will never log saved messages.
+ */
+void toStatusMessage(const QString &str, bool save = false, bool log = true);
+/** Get an address to a SQL statement in the SGA. The address has the form
+ * 'address:hash_value' which are resolved from the v$sqltext_with_newlines
+ * view in Oracle.
+ * @param conn Connection to get address from
+ * @param sql Statement to get address for.
+ * @return String with address in.
+ * @exception QString if address not found.
+ */
+QString toSQLToAddress(toConnection &conn, const QString &sql);
+/** Get the full SQL of an address (See @ref toSQLToAddress) from the
+ * SGA.
+ * @param conn Connection to get address from
+ * @param sql Address of SQL.
+ * @return String with SQL of statement.
+ * @exception QString if address not found.
+ */
+QString toSQLString(toConnection &conn, const QString &address);
+/** Make a column name more readable.
+ * @param col Name of column name, will be modified.
+ */
+void toReadableColumn(QString &col);
+/** Get the current database time in the current sessions dateformat.
+ * @param conn Connection to get address from.
+ * @return String with the current date and time.
+ */
+QString toNow(toConnection &conn);
+/** Set the current session type (Style)
+ * @param str Session to set, can be any of Motif, Motif Plus, SGI, CDE, Windows and Platinum
+ * @exception QString if style not available.
+ */
+void toSetSessionType(const QString &str);
+/** Get current session type (Style)
+ * @return A string describing the current style.
+ * @see toSetSessionType
+ */
+QString toGetSessionType(void);
+/** Get the available styles.
+ */
+QStringList toGetSessionTypes(void);
+/** Create or fill a combobox with refresh intervals.
+ * @param parent Parent of created combobox.
+ * @param name Name of created combobox.
+ * @param def Default value of the combobox.
+ * @param item Combo box to fill. If not specified a new combobox is created.
+ */
+QComboBox *toRefreshCreate(QWidget *parent, const char *name = NULL, const QString &def = QString::null,
+                           QComboBox *item = NULL);
+/** Set a timer with the value from a refresh combobox (See @ref toRefreshCreate).
+ * @param timer Timer to set timeout in.
+ * @param str String from currentText of combobox. If empty, set to default.
+ */
+void toRefreshParse(toTimer *timer, const QString &str = QString::null);
+/** Get information about wether this TOra has plugin support or not.
+ * @return True if plugin support is enabled.
+ */
+bool toMonolithic(void);
+/** Make a deep copy of a string. Usefull when sharing copying strings between threads.
+ * @param str String to copy
+ * @return Copied string.
+ */
+QString toDeepCopy(const QString &str);
+/** Allocate a toolbar. This is needed since Qt and KDE use different toolbars.
+ * @param parent Parent of toolbar.
+ * @param name Name of toolbar.
+ * @return A newly created toolbar.
+ */
+QToolBar *toAllocBar(QWidget *parent, const QString &name);
+/** Allocate a new docked window. This is needed since Qt and KDE docks windows differently
+ * (Qt 2.x doesn't even have support for docked windows). Observe that you must attach a
+ * dock using @ref toAttachDock after allocating it.
+ * @param name Name of window.
+ * @param db Database name or empty if N/A.
+ * @param icon Icon of new dock.
+ * @return A newly allocated fock.
+ */
+TODock *toAllocDock(const QString &name,
+                    const QString &db,
+                    const QPixmap &icon);
+/** Attach a dock to a specified position.
+ * @param dock Dock to attach
+ * @param container Whatever container is supposed to be in the dock window.
+ * @param place Where to place the dock.
+ */
+void toAttachDock(TODock *dock, QWidget *container, QMainWindow::ToolBarDock place);
+/** Decode a size string this basically converts "KB" to 1024, "MB" to 1024KB and
+ * everything else to 1.
+ * @return Multiplier specified by string.
+ */
+int toSizeDecode(const QString &str);
+/**
+ * Check that a key sequence is valid and return same sequence
+ */
+QKeySequence toKeySequence(const QString &keysequence);
+/**
+ * Check if a key sequence and a key event represent the same key and return if that is the case.
+ * Only support single key keysequences.
+ * @param event Key event.
+ * @param key Key sequence.
+ */
+bool toCheckKeyEvent(QKeyEvent *event, const QKeySequence &key);
+
+/** Shift the first value out of a list.
+ * @param lst List to shift value from (Also modified).
+ * @return The first value in the list.
+ */
+template <class T>
+T toShift(std::list<T> &lst)
+{
+    if (lst.begin() == lst.end())
+    {
+        T ret;
+        return ret;
+    }
+    T ret = (*lst.begin());
+    lst.erase(lst.begin());
+    return ret;
+}
+
+/** Push an object to the beginning of a list.
+ * @param lst List to push value in from of.
+ * @param str Object to push.
+ */
+template <class T>
+void toUnShift(std::list<T> &lst, const T &str)
+{
+    lst.insert(lst.begin(), str);
+}
+
+/** Pop the last value out of a list.
+ * @param lst List to pop value from (Also modified).
+ * @return The value in the list of objects.
+ */
+template <class T>
+T toPop(std::list<T> &lst)
+{
+    if (lst.begin() == lst.end())
+    {
+        T ret;
+        return ret;
+    }
+    T ret = (*lst.rbegin());
+    lst.pop_back();
+    return ret;
+}
+
+/** Push an object to the end of a list.
+ * @param lst List to push value in from of.
+ * @param str Object to push.
+ */
+template <class T>
+void toPush(std::list<T> &lst, const T &str)
+{
+    lst.push_back(str);
+}
+
+/** Convert a string representation to a font structure.
+ * @param str String representing the font.
+ * @return Font structure represented by the string.
+ * @see toFontToString
+ */
+QFont toStringToFont(const QString &str);
+/** Convert a font to a string representation.
+ * @param fnt Font to convert.
+ * @return String representation of font.
+ */
+QString toFontToString(const QFont &fnt);
+/** Get the path to the help directory.
+ * @return Path to the help directory.
+ */
+QString toHelpPath(void);
+/** Read file from filename.
+ * @param filename Filename to read file from.
+ * @return Contents of file.
+ * @exception QString describing I/O problem.
+ */
+QCString toReadFile(const QString &filename);
+/** Write file to filename.
+ * @param filename Filename to write file to.
+ * @param data Data to write to file.
+ */
+bool toWriteFile(const QString &filename, const QCString &data);
+/** Write file to filename.
+ * @param filename Filename to write file to.
+ * @param data Data to write to file.
+ */
+bool toWriteFile(const QString &filename, const QString &data);
+/** Compare two string lists.
+ * @param l1 First list to compare.
+ * @param l2 Second list to compare.
+ * @param len Length of lists to compare.
+ * @return True if all first len elements match.
+ */
+bool toCompareLists(QStringList &l1, QStringList &l2, unsigned int len);
+/** Set environment variable.
+ * @param var Variable name to set.
+ * @param val Value to set variable to.
+ */
+void toSetEnv(const QCString &var, const QCString &val);
+/** Delete an environment variable.
+ * @param var Environment variable to delete.
+ */
+void toUnSetEnv(const QCString &var);
+/** Pop up a dialog and choose a file to open.
+ * @param filename Default filename to open.
+ * @param filter Filter of filenames (See @ref QFileDialog)
+ * @param parent Parent of dialog.
+ * @return Selected filename.
+ */
+QString toOpenFilename(const QString &filename, const QString &filter, QWidget *parent);
+/** Pop up a dialog and choose a file to save to.
+ * @param filename Default filename to open.
+ * @param filter Filter of filenames (See @ref QFileDialog)
+ * @param parent Parent of dialog.
+ * @return Selected filename.
+ */
+QString toSaveFilename(const QString &filename, const QString &filter, QWidget *parent);
+
+/** Get index of menu to insert tool specific menu at.
+ * @return Index of the tool menu entry.
+ */
+int toToolMenuIndex(void);
+/** Check if a character is valid for an identifier in Oracle.
+ * @param c Character to check
+ * @return True if it is a valid Oracle identifier.
+ */
+inline bool toIsIdent(QChar c)
+{
+    return c.isLetterOrNumber() || c == '_' || c == '%' || c == '$' || c == '#';
+}
+/** Get installation directory of application (Plugin directory on unix, installation
+ * target on windows).
+ * @return String containing directory
+ */
+QString toPluginPath(void);
+/** Get a list of the latest status messages that have been shown.
+ */
+std::list<QString> toStatusMessages(void);
+/** Get a brush for a chart item.
+ * @param index Indicating which chart item to get color for.
+ */
+QBrush toChartBrush(int index);
+/** Return the connection most closely associated with a widget. Currently connections are
+ * only stored in toToolWidgets.
+ * @return Reference toConnection object closest to the current.
+ */
+toConnection &toCurrentConnection(QObject *widget);
+/** Return the tool widget most closely associated with a widget.
+ * @return Pointer to tool widget.
+ */
+toToolWidget *toCurrentTool(QObject *widget);
+/** Check if this connection is an oracle connection.
+ */
+bool toIsOracle(const toConnection &);
+/** Check if this connection is an sapdb connection.
+ */
+bool toIsSapDB(const toConnection &);
+/** Check if this connection is an MySQL connection.
+ */
+bool toIsMySQL(const toConnection &);
+/** Check if this connection is an PostgreSQL connection.
+ */
+bool toIsPostgreSQL(const toConnection &);
+/** Strip extra bind specifier from an SQL statement. (That means the extra <***> part after
+ * the bind variable.
+ * @param sql The sql to strip.
+ * @return Return a string containing the same statement without qualifiers, which means the
+ *         sql sent to Oracle and available in the SGA.
+ */
+QString toSQLStripSpecifier(const QString &sql);
+/** Strip extra binds and replace with empty strings.
+ * @param sql The sql to strip.
+ * @return Return a string containing the same statement without binds.
+ */
+QString toSQLStripBind(const QString &sql);
+/** Expand filename with $HOME to be replaced with home directory or my documents.
+ */
+QString toExpandFile(const QString &file);
+/** Convert string read by readValue to value read by readValueNull
+ */
+toQValue toUnnull(const toQValue &str);
+/** Convert string read by readValueNull to value to be read by readValue.
+ */
+toQValue toNull(const toQValue &str);
+
+/** Take a string and make it illegible. Some security through obscurity here so you will
+ * need to check the source to see what is actually done.
+ * @param str String to be made unreadable.
+ * @return Obfuscated string.
+ */
+QString toObfuscate(const QString &str);
+/** Unmake the actions of @ref toObfuscate.
+ * @param Obfuscated string.
+ * @return Original string.
+ */
+QString toUnobfuscate(const QString &str);
+/** Check if the current widget is within the active modal widget (Or no modal widget exists)
+ */
+bool toCheckModal(QWidget *widget);
+
+/** Export the contents of a map into another map.
+ * @param data The destination map.
+ * @param prefix Prefix to save map using.
+ * @param src The map to save.
+ */
+void toMapExport(std::map<QCString, QString> &data, const QCString &prefix,
+                 std::map<QCString, QString> &src);
+/** Import the contents of a map from another map.
+ * @param data The source map.
+ * @param prefix Prefix to use for restoring from map.
+ * @param dst The map to save into.
+ */
+void toMapImport(std::map<QCString, QString> &data, const QCString &prefix,
+                 std::map<QCString, QString> &dst);
+
+/** Find an item in a listview.
+ * @param list The list to search for the item.
+ * @param str The string to search for. You can specify parent/child with : in the string.
+ */
+QListViewItem *toFindItem(QListView *list, const QString &str);
+/** Whenever this class is instantiated the window will display a busy cursor. You
+ * can instantiate this function as many time as you want, only when all of them are
+ * destructed the curser will revert back to normal.
+ */
+class toBusy
+{
+    static unsigned int Count;
+public:
+    static void clear(void);
+    toBusy();
+    ~toBusy();
+};
+/**
+ * Set or change title of a tool window.
+ * @param tool Widget of tool.
+ * @param caption Caption to set to the tool.
+ */
+void toToolCaption(toToolWidget *tool, const QString &caption);
+/**
+ * Translate string if the context and text is strictly ASCII7 and the context doesn't
+ * contain any spaces. Otherwise just return the text.
+ * @param context The context of the text.
+ * @param text The text to translate.
+ * @return Translated text if appropriate, or original text otherwise.
+ */
+QString toTranslateMayby(const QString &context, const QString &text);
+
+/**
+ * Count occurrences of char in source.
+ *
+ * @param source The string to search.
+ * @param find The char to find in string
+ * @return Occurrences.
+ */
+int countChars(const QString &source, const char find);
+
+/** Popup toolbutton that works like I think they should under Qt 3.0 as well.
+ * this means they will pop up a tool menu when you click on the button as well.
+ */
+class toPopupButton : public QToolButton
+{
+    Q_OBJECT
+public:
+    /** Create button, same constructor as toolbutton except no slots
+     */
+    toPopupButton(const QIconSet &iconSet, const QString &textLabel,
+                  const QString &grouptext, QToolBar *parent, const char *name = 0);
+    /** Create button somewhere else than in a toolbar.
+     */
+    toPopupButton(QWidget *parent, const char *name = 0);
+private slots:
+    void click(void);
+};
+
+/**
+ * functor for cleanup containers of pointers
+ */
+struct DeleteObject
+{
+    template <typename T>
+    void operator()(const T* ptr) const
+    {
+        delete ptr;
+    }
+};
+
+/* This can't be documented in KDoc, anyway it is an easy way to catch any exception that
+ * might be sent by TOra or OTL and display the message in the statusbar of the main window.
+ */
+#define TOCATCH                                 \
+    catch (const QString &str) {                \
+      toStatusMessage(str);                     \
+    } 
+/* This can't be documented in KDoc, anyway it is an easy way to catch any exception that
+ * might be sent by TOra or OTL and display the message in the statusbar of the main window.
+ */
+#define TOROLLBACK(x)                           \
+    catch (const QString &str) {                \
+      toStatusMessage(str);                     \
+      try {                                     \
+        x.rollback();                           \
+      } catch(...) { }                          \
+    }
+
+#define QTRANS(x,y) (qApp?qApp->translate(x,y):QString::fromLatin1(y))
+
+#endif

Added: kde-extras/tora/branches/upstream/current/src/windows/Makefile
===================================================================
--- kde-extras/tora/branches/upstream/current/src/windows/Makefile	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/windows/Makefile	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,114 @@
+
+#####
+#
+# TOra - An Oracle Toolkit for DBA's and developers
+# Copyright (C) 2003-2005 Quest Software, Inc
+# Portions Copyright (C) 2005 Other Contributors
+# 
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation;  only version 2 of
+# the License is valid for this program.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+#      As a special exception, you have permission to link this program
+#      with the Oracle Client libraries and distribute executables, as long
+#      as you follow the requirements of the GNU GPL in regard to all of the
+#      software in the executable aside from Oracle client libraries.
+#
+#      Specifically you are not permitted to link this program with the
+#      Qt/UNIX, Qt/Windows or Qt Non Commercial products of TrollTech.
+#      And you are not permitted to distribute binaries compiled against
+#      these libraries without written consent from Quest Software, Inc.
+#      Observe that this does not disallow linking to the Qt Free Edition.
+#
+#      You may link this product with any GPL'd Qt library such as Qt/Free
+#
+# All trademarks belong to their respective owners.
+#
+#####
+
+
+# This script only compiles the resources and windows classes in this directory
+
+# C++ Compiler to use
+GCC=g++
+
+# Windows resource compiler
+RC=windres
+
+# Additional defines
+DEFINES=-D_WIN32
+
+# Additional includes needed to compile program
+INCLUDES=
+
+# Comment out this line if you want more output from compile
+.SILENT:
+
+# Additional flags set when using only the precompiler.
+CPPFLAGS_GLOB=
+
+# Additional flags set when compiling.
+CFLAGS_GLOB=-g -O3 -W -Wall -c -w -fno-rtti
+
+############################################################################
+#
+# End of configuration part of Makefile
+#
+############################################################################
+
+SOURCES=\
+	cregistry.cpp
+
+RESOURCES=\
+	tora.rc
+
+	
+default: all
+
+
+CPPFLAGS=$(CPPFLAGS_GLOB) $(DEFINES) $(INCLUDES)
+CFLAGS=$(CFLAGS_GLOB) $(INCLUDES) $(DEFINES)
+
+OBJECTS=$(filter %.o,$(SOURCES:%.cpp=%.o)) $(filter %.o,$(RESOURCES:%.rc=%.o))
+
+DEPENDS=$(filter %.d,$(SOURCES:%.cpp=.depends/%.d))
+
+vpath %.h $(INCLUDE)
+
+.PHONY: all clean
+
+all: $(OBJECTS) 
+
+%.moc: %.h
+	@echo Metacompiling $<
+	$(MOC) -o $@ $<
+
+%.o: %.rc
+	@echo Compiling resources $<
+	$(RC) -o $@ $<
+
+%.o: %.cpp
+	@echo Compiling $<
+	$(GCC) $(CFLAGS) -o $@ -c $<
+
+include $(DEPENDS)
+
+.depends/%.d: %.cpp
+	@echo Making dependencies for $<
+	if [ ! -d .depends ] ; then mkdir -p .depends ; fi
+	$(GCC) -MM -MG $(CPPFLAGS) $< > $@.tmp && \
+		( sed "s/^\(.*\.\)o\([ :]*\)/\1o \
+		$(subst /,\\/,$@)\2/g" < $@.tmp > $@ ; rm -f $@.tmp )
+clean: 
+	@echo Cleaning $(TITLE)
+	-rm -rf *.o

Added: kde-extras/tora/branches/upstream/current/src/windows/config.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/windows/config.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/windows/config.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,305 @@
+/* config.h.  Generated by configure.  */
+/* config.h.in.  Generated from configure.in by autoheader.  */
+
+/* Define to 1 if the `closedir' function returns void instead of `int'. */
+/* #undef CLOSEDIR_VOID */
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+/* #undef CRAY_STACKSEG_END */
+
+/* Define to 1 if using `alloca.c'. */
+/* #undef C_ALLOCA */
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#define HAVE_ALLOCA 1
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#define HAVE_ALLOCA_H 1
+
+/* Define if you have the CoreAudio API */
+/* #undef HAVE_COREAUDIO */
+
+/* Define to 1 if you have the <crt_externs.h> header file. */
+/* #undef HAVE_CRT_EXTERNS_H */
+
+/* Defines if your system has the crypt function */
+/* #undef HAVE_CRYPT */
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define if you have a STL implementation by HP */
+/* #undef HAVE_HP_STL */
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define if you have libjpeg */
+#define HAVE_LIBJPEG 1
+
+/* Define to 1 if you have the `pcre' library (-lpcre). */
+#define HAVE_LIBPCRE 1
+
+/* Define if you have libpng */
+#define HAVE_LIBPNG 1
+
+/* Define if you have a working libpthread */
+#define HAVE_LIBPTHREAD 1
+
+/* Define if you have libz */
+#define HAVE_LIBZ 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define HAVE_LOCALE_H 1
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+   to 0 otherwise. */
+#define HAVE_MALLOC 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define if your system needs _NSGetEnviron to set up the environment */
+/* #undef HAVE_NSGETENVIRON */
+
+/* Define to 1 if you have the <pthread/linuxthreads/pthread.h> header file.
+   */
+/* #undef HAVE_PTHREAD_LINUXTHREADS_PTHREAD_H */
+
+/* Define to 1 if you have the `putenv' function. */
+#define HAVE_PUTENV 1
+
+/* Define if you have the res_init function */
+/* #undef HAVE_RES_INIT */
+
+/* Define to 1 if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define if you have a STL implementation by SGI */
+#define HAVE_SGI_STL 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if stdbool.h conforms to C99. */
+#define HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if `st_blocks' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+
+/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use
+   `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */
+#define HAVE_ST_BLOCKS 1
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/mkdev.h> header file. */
+/* #undef HAVE_SYS_MKDEV_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/sysmacros.h> header file. */
+#define HAVE_SYS_SYSMACROS_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define if you want Xinerama support */
+/* #undef HAVE_XINERAMA */
+
+/* Define to 1 if the system has the type `_Bool'. */
+#define HAVE__BOOL 1
+
+/* Suffix for lib directories */
+#define KDELIBSUFF ""
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
+   */
+/* #undef MAJOR_IN_MKDEV */
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in
+   <sysmacros.h>. */
+/* #undef MAJOR_IN_SYSMACROS */
+
+/* Name of package */
+#define PACKAGE "tora"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+
+/* The size of a `char', as computed by sizeof. */
+/* #undef SIZEOF_CHAR */
+
+/* The size of a `char *', as computed by sizeof. */
+/* #undef SIZEOF_CHAR_P */
+
+/* The size of a `int', as computed by sizeof. */
+/* #undef SIZEOF_INT */
+
+/* The size of a `long', as computed by sizeof. */
+/* #undef SIZEOF_LONG */
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at run-time.
+        STACK_DIRECTION > 0 => grows toward higher addresses
+        STACK_DIRECTION < 0 => grows toward lower addresses
+        STACK_DIRECTION = 0 => direction of growth unknown */
+/* #undef STACK_DIRECTION */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+/* #undef TM_IN_SYS_TIME */
+
+/* True if using monolithic build. */
+#define TOMONOLITHIC 1
+
+/* Define if you have putenv */
+#define HAVE_SETENV 0
+
+/* Define if compiled against Oracle Instant Client */
+/* #undef TO_INSTANT_CLIENT */
+
+/* Define if you have KDE. */
+/* #undef TO_KDE */
+
+/* Define if you do _not_ have Oracle. */
+/* #undef TO_NO_ORACLE */
+
+/* Version number of package */
+#define TOVERSION "1.3.22svn"
+
+/* Define to 1 if the X Window System is missing or not being used. */
+/* #undef X_DISPLAY_MISSING */
+
+/*
+ * jpeg.h needs HAVE_BOOLEAN, when the system uses boolean in system
+ * headers and I'm too lazy to write a configure test as long as only
+ * unixware is related
+ */
+#ifdef _UNIXWARE
+#define HAVE_BOOLEAN
+#endif
+
+
+
+/*
+ * AIX defines FD_SET in terms of bzero, but fails to include <strings.h>
+ * that defines bzero.
+ */
+
+#if defined(_AIX)
+#include <strings.h>
+#endif
+
+
+
+/*
+ * On HP-UX, the declaration of vsnprintf() is needed every time !
+ */
+
+#if !defined(HAVE_VSNPRINTF) || defined(hpux)
+#if __STDC__
+#include <stdarg.h>
+#include <stdlib.h>
+#else
+#include <varargs.h>
+#endif
+#ifdef __cplusplus
+extern "C"
+#endif
+    int vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
+#ifdef __cplusplus
+extern "C"
+#endif
+    int snprintf(char *str, size_t n, char const *fmt, ...);
+#endif
+
+
+
+#if defined(__SVR4) && !defined(__svr4__)
+#define __svr4__ 1
+#endif
+
+
+/* Compatibility define */
+/* #undef ksize_t */
+
+/* Define to rpl_malloc if the replacement function should be used. */
+/* #undef malloc */
+
+/* Define to `unsigned' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* Define the real type of socklen_t */
+/* #undef socklen_t */

Added: kde-extras/tora/branches/upstream/current/src/windows/cregistry.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/src/windows/cregistry.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/windows/cregistry.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,309 @@
+// Registry Access class (updated) by David Overton (david at insomniavisions.com).
+// These will compile either ANSI or UNICODE.
+
+#include "cregistry.h"
+
+// Returns true if the OS is Windows NT or Windows 2000
+bool CRegistry::IsWinNTor2K()
+{
+    OSVERSIONINFO OsVer;
+    GetVersionEx(&OsVer);
+    return (OsVer.dwPlatformId == VER_PLATFORM_WIN32_NT) != 0;
+}
+
+// Creates a key specified by pszSubKey - you can't create
+// keys directly under HKEY_LOCAL_MACHINE in Windows NT or 2000
+// just for an extra bit of info.
+bool CRegistry::CreateKey(HKEY hKeyRoot, LPCTSTR pszSubKey)
+{
+    HKEY hKey;
+    DWORD dwFunc;
+    LONG lRet;
+
+    lRet = RegCreateKeyEx(
+               hKeyRoot,
+               pszSubKey,
+               0,
+               (LPTSTR)NULL,
+               REG_OPTION_NON_VOLATILE,
+               KEY_WRITE,
+               (LPSECURITY_ATTRIBUTES)NULL,
+               &hKey,
+               &dwFunc
+           );
+
+    if (lRet == ERROR_SUCCESS)
+    {
+
+        RegCloseKey(hKey);
+        hKey = (HKEY)NULL;
+
+        return true;
+    }
+
+    SetLastError((DWORD)lRet);
+    return false;
+}
+
+bool CRegistry::DeleteKey(HKEY hKeyRoot, LPCTSTR pszSubKey)
+{
+    DWORD dwRet = ERROR_SUCCESS;
+
+    if (IsWinNTor2K())
+    {
+        // WinNT/2K will not allow you to delete keys which have
+        // subkeys/values inside them. MS's platform SDK tells you
+        // to use the SHDeleteKey function in shlwapi.dll. This dll
+        // is not available on NT platforms without IE 4.0 or later.
+        // Because of this I first attempt to delete the key in the
+        // hope that it is empty. If that is not possible I load shlwapi
+        // and call the function in that. This prevents the app bombing
+        // out if the dll can't be found.
+        if (RegDeleteKey(hKeyRoot, pszSubKey) != ERROR_SUCCESS)
+        {
+
+            HINSTANCE hLibInst = LoadLibrary(_T("shlwapi.dll"));
+
+            if (!hLibInst)
+            {
+                throw ERROR_NO_SHLWAPI_DLL;
+            }
+
+#if defined(UNICODE) || defined(_UNICODE)
+            SHDELKEYPROC DeleteKeyRecursive = (SHDELKEYPROC)GetProcAddress(hLibInst, "SHDeleteKeyW");
+#else
+
+            SHDELKEYPROC DeleteKeyRecursive = (SHDELKEYPROC)GetProcAddress(hLibInst, "SHDeleteKeyA");
+#endif
+
+            if (!DeleteKeyRecursive)
+            {
+                FreeLibrary(hLibInst);
+                throw ERROR_NO_SHDELETEKEY;
+            }
+
+            dwRet = DeleteKeyRecursive(hKeyRoot, pszSubKey);
+
+            FreeLibrary(hLibInst);
+        }
+    }
+    else
+    {
+        // Windows 9x will allow RegDeleteKey to delete keys
+        // even if they have subkeys/values.
+        dwRet = RegDeleteKey(hKeyRoot, pszSubKey);
+    }
+
+    if (dwRet == ERROR_SUCCESS)
+        return true;
+
+    SetLastError(dwRet);
+    return false;
+}
+
+// Deletes a value from a given subkey and root
+bool CRegistry::DeleteValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue)
+{
+    HKEY hKey;
+    LONG lRes;
+
+    if ((lRes = RegOpenKeyEx(hKeyRoot, pszSubKey, 0, KEY_SET_VALUE, &hKey)) != ERROR_SUCCESS)
+    {
+        SetLastError((DWORD)lRes);
+        return false;
+    }
+
+    lRes = RegDeleteValue(hKey, pszValue);
+
+    RegCloseKey(hKey);
+
+    if (lRes == ERROR_SUCCESS)
+        return true;
+
+    SetLastError(lRes);
+    return false;
+}
+
+// Fetch a binary value. If the size specified by rdwSize is too small, rdwSize will
+// be set to the correct size.
+bool CRegistry::GetBinaryValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, PVOID pBuffer, DWORD& rdwSize)
+{
+    HKEY hKey;
+    DWORD dwType = REG_BINARY;
+    DWORD dwSize = rdwSize;
+    LONG lRes = 0;
+
+    if ((lRes = RegOpenKeyEx(hKeyRoot, pszSubKey, 0, KEY_READ, &hKey)) != ERROR_SUCCESS)
+    {
+        SetLastError((DWORD)lRes);
+        return false;
+    }
+
+    lRes = RegQueryValueEx(hKey, pszValue, 0, &dwType, (LPBYTE)pBuffer, &dwSize);
+
+    rdwSize = dwSize;
+    RegCloseKey(hKey);
+
+    if (lRes != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    if (dwType != REG_BINARY)
+    {
+        throw ERROR_WRONG_TYPE;
+    }
+
+    return true;
+}
+
+// Fetch a little endian DWORD from the registry (see platform SDK "Registry Value Types")
+bool CRegistry::GetDWORDValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, DWORD &rdwBuff)
+{
+    HKEY hKey;
+    DWORD dwType = REG_DWORD;
+    DWORD dwSize = sizeof(DWORD);
+    DWORD dwValue = 0;
+    LONG lRes;
+
+    rdwBuff = 0;
+
+    if ((lRes = RegOpenKeyEx(hKeyRoot, pszSubKey, 0, KEY_READ, &hKey)) != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    lRes = RegQueryValueEx(hKey, pszValue, 0, &dwType, (LPBYTE) & dwValue, &dwSize);
+
+    RegCloseKey(hKey);
+
+    if (dwType != REG_DWORD)
+        throw ERROR_WRONG_TYPE;
+
+    if (lRes != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    rdwBuff = dwValue;
+
+    return true;
+}
+
+// Retrieve a string value. If the given buffer for the string is too small (specified
+// by rdwSize), rdwSize is increased to the correct value. If the buffer is bigger than
+// the retrieved string, rdwSize is set to the length of the string (in bytes) including
+// the terminating null.
+bool CRegistry::GetStringValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, LPTSTR pszBuffer, DWORD& rdwSize)
+{
+    HKEY hKey;
+    DWORD dwType = REG_SZ;
+    LONG lRes;
+    DWORD dwBufferSize = rdwSize;
+
+    if (!pszBuffer)
+        throw ERROR_INVALID_BUFFER;
+
+    if ((lRes = RegOpenKeyEx(hKeyRoot, pszSubKey, 0, KEY_READ, &hKey)) != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    lRes = RegQueryValueEx(hKey, pszValue, NULL, &dwType, (unsigned char*)pszBuffer, &dwBufferSize);
+
+    RegCloseKey(hKey);
+    rdwSize = dwBufferSize;
+
+    if (dwType != REG_SZ)
+        throw ERROR_WRONG_TYPE;
+
+
+    if (lRes != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    return true;
+}
+
+// Writes a binary value to the registry
+bool CRegistry::SetBinaryValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, PVOID pData, DWORD dwSize)
+{
+    HKEY hKey;
+    LONG lRes = 0;
+
+    if ((lRes = RegOpenKeyEx(hKeyRoot, pszSubKey, 0, KEY_WRITE, &hKey)) != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    lRes = RegSetValueEx(hKey, pszValue, 0, REG_BINARY, reinterpret_cast<BYTE*>(pData), dwSize);
+
+    RegCloseKey(hKey);
+
+    if (lRes != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    return true;
+}
+
+// Writes a DWORD value to the registry
+bool CRegistry::SetDWORDValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, DWORD dwValue)
+{
+    HKEY hKey;
+    LONG lRes;
+
+    if ((lRes = RegOpenKeyEx(hKeyRoot, pszSubKey, 0, KEY_WRITE, &hKey)) != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    lRes = RegSetValueEx(hKey, pszValue, 0, REG_DWORD, reinterpret_cast<BYTE*>(&dwValue), sizeof(DWORD));
+
+    RegCloseKey(hKey);
+
+    if (lRes != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    return true;
+}
+
+// Writes a string to the registry.
+bool CRegistry::SetStringValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, LPCTSTR pszString)
+{
+    HKEY hKey;
+    LONG lRes;
+    DWORD dwSize = lstrlen(pszString) * sizeof(TCHAR);
+
+    if ((lRes = RegOpenKeyEx(hKeyRoot, pszSubKey, 0, KEY_WRITE, &hKey)) != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    lRes = RegSetValueEx(hKey, pszValue, 0, REG_SZ,
+                         (BYTE*)(pszString), dwSize);
+
+    RegCloseKey(hKey);
+
+    if (lRes != ERROR_SUCCESS)
+    {
+        SetLastError(lRes);
+        return false;
+    }
+
+    return true;
+}


Property changes on: kde-extras/tora/branches/upstream/current/src/windows/cregistry.cpp
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/src/windows/cregistry.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/windows/cregistry.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/windows/cregistry.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,45 @@
+// Registry Access class (updated) by David Overton (david at insomniavisions.com)
+
+// Proper errors are available in this version. The functions call
+// SetLastError if it is a standard windows error. The user defined
+// errors shown below are exceptions. Catch them as shown here:
+
+// try {
+//     pRegistry->SetDWORDValue(...); // whatever
+// }
+// catch(unsigned int error) {
+//     // error is one of the error codes defined below
+// }
+
+#if !defined(__CRegistry_H_)
+#define __CRegistry_H_
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#include <shlwapi.h>
+#include <tchar.h>
+
+const unsigned int ERROR_WRONG_TYPE = 0x01; // Wrong type of data
+const unsigned int ERROR_BUFFER_SIZE = 0x02; // Buffer too small
+const unsigned int ERROR_NO_SHLWAPI_DLL = 0x03; // Only under NT if shlwapi.dll doesn't exist
+const unsigned int ERROR_INVALID_BUFFER = 0x04; // Occurs if buffer invalid (ie no buffer)
+const unsigned int ERROR_NO_SHDELETEKEY = 0x05; // Occurs in NT if no SHDeleteKey fn in shlwapi.dll
+
+typedef DWORD (__stdcall* SHDELKEYPROC)(HKEY, LPCTSTR);
+
+class CRegistry
+{
+    bool IsWinNTor2K();
+public:
+    bool CreateKey(HKEY hKeyRoot, LPCTSTR pszSubKey);
+    bool DeleteKey(HKEY hKeyRoot, LPCTSTR pszSubKey);
+    bool DeleteValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue);
+    bool GetBinaryValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, PVOID pData, DWORD& rdwSize);
+    bool GetDWORDValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, DWORD& rdwBuff);
+    bool GetStringValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, LPTSTR pszBuffer, DWORD& rdwSize);
+    bool SetBinaryValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, PVOID pData, DWORD dwSize);
+    bool SetDWORDValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, DWORD dwValue);
+    bool SetStringValue(HKEY hKeyRoot, LPCTSTR pszSubKey, LPCTSTR pszValue, LPCTSTR pszString);
+};
+
+#endif


Property changes on: kde-extras/tora/branches/upstream/current/src/windows/cregistry.h
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/src/windows/installer/tora.nsi
===================================================================
--- kde-extras/tora/branches/upstream/current/src/windows/installer/tora.nsi	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/windows/installer/tora.nsi	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,97 @@
+; TOra.nsi
+;
+; This script is a basic TOra installer: it remembers the directory, 
+; has uninstall support and (optionally) installs start menu shortcuts.
+;
+; It will install TOra into a directory that the user selects,
+
+;--------------------------------
+
+; The name of the installer
+Name "TOra - Toolkit For Oracle"
+
+; The file to write
+OutFile "TOra Installer.exe"
+
+; The default installation directory
+InstallDir "$PROGRAMFILES\Toolkit For Oracle"
+
+; Registry key to check for directory (so if you install again, it will 
+; overwrite the old one automatically)
+InstallDirRegKey HKCU "Software\Toolkit For Oracle" "Install_Dir"
+
+;--------------------------------
+
+; Pages
+
+Page components
+Page directory
+Page instfiles
+
+UninstPage uninstConfirm
+UninstPage instfiles
+
+;--------------------------------
+
+; The stuff to install
+Section "Toolkit For Oracle (required)"
+
+  SectionIn RO
+
+  ; Set output path to the installation directory.
+  SetOutPath $INSTDIR
+ 
+  ; Put file there
+  File /r files\*.*
+  
+  ; Write the installation path into the registry
+  WriteRegStr HKCU "Software\Toolkit For Oracle" "Install_Dir" "$INSTDIR"
+  
+  ; Write the uninstall keys for Windows
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Toolkit For Oracle" "DisplayName" "Toolkit For Oracle (TOra)"
+  WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Toolkit For Oracle" "UninstallString" '"$INSTDIR\uninstall.exe"'
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Toolkit For Oracle" "NoModify" 1
+  WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Toolkit For Oracle" "NoRepair" 1
+  WriteUninstaller "uninstall.exe"
+  
+SectionEnd
+
+; Optional section (can be disabled by the user)
+Section "Start Menu Shortcuts"
+
+  CreateDirectory "$SMPROGRAMS\Toolkit For Oracle"
+  CreateShortCut "$SMPROGRAMS\Toolkit For Oracle\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
+  CreateShortCut "$SMPROGRAMS\Toolkit For Oracle\TOra.lnk" "$INSTDIR\tora.exe" "" "$INSTDIR\tora.exe" 0
+  
+SectionEnd
+
+;--------------------------------
+
+; Uninstaller
+
+Section "Uninstall"
+  
+  ; Remove registry keys
+  DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Toolkit For Oracle"
+  
+  ; Currently uninstaller preserves all the settings
+  ; uncomment line below if you want otherwise
+  ; DeleteRegKey HKCU "Software\Toolkit For Oracle"
+
+  ; Remove files from directories
+  Delete $INSTDIR\*.*
+  Delete $INSTDIR\help\*.*
+  Delete $INSTDIR\help\api\*.*
+  Delete $INSTDIR\help\images\*.*
+  
+  ; Remove shortcuts, if any
+  Delete "$SMPROGRAMS\Toolkit For Oracle\*.*"
+
+  ; Remove directories used
+  RMDir "$SMPROGRAMS\Toolkit For Oracle"
+  RMDir "$INSTDIR\help\api"
+  RMDir "$INSTDIR\help\images"
+  RMDir "$INSTDIR\help"
+  RMDir "$INSTDIR"
+
+SectionEnd

Added: kde-extras/tora/branches/upstream/current/src/windows/readme.txt
===================================================================
--- kde-extras/tora/branches/upstream/current/src/windows/readme.txt	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/windows/readme.txt	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,83 @@
+TOra - Toolkit for Oracle
+=========================
+Copyright (C) 2003-2005 Quest Software, Inc (http://www.quest.com/)
+Portions Copyright (C) 2005 Other Contributors
+
+For information about license see the LICENSE.txt file. It is distributed 
+under the GPL which basically means that any derivatory work must be 
+released under an open source license as well.
+
+TOra is supported for running with an Oracle 8.1.7 or newer
+client installation. It has been verified to work with Oracle 10g.
+
+In addition, TOra also supports postgres and mysql if your Qt library
+is compiled with that support.
+
+Toolkit for Oracle is a program for Oracle developers and administrators. The
+features that are available so far is (As of version 1.2):
+
+* Handles multiple connections
+* Support Oracle & MySQL
+* Advanced SQL Worksheet
+	* Explain plan
+	* PL/SQL auto indentation
+	* Statement statistics
+	* Error location indication
+	* SQL syntax highlighting
+	* Code completion
+	* Visualization of result
+	* PL/SQL block parsing
+	* Statement statistics comparison
+* Schema browser
+	* Table & view editing
+	* References & dependencies
+	* Reverse engeneering of objects
+	* Tab & tree based browsing
+	* Object & data filtering
+* PL/SQL Editor/Debugger
+	* Breakpoints
+	* Watches
+	* Line stepping
+	* SQL Output viewing
+	* Structure tree parsing
+* Server tuning
+	* Server overview
+	* Tuning charts
+	* Wait state analyzer
+	* I/O by tablespace & file
+	* Performance indicators
+	* Server statistics
+	* Parameter editor (P-file editor)
+* Security manager
+* Storage manager with object & extent viewer
+
+* Session manager
+* Rollback manager with snapshot too old detection
+* SGA and long operations trace
+* Current session information
+
+* PL/SQL profiler
+* Explain plan browser
+* Statistics manager
+* DBMS alert tool
+* Invalid object browser
+* SQL Output viewer
+* Database/schema comparison and search
+* Extract schema objects to SQL script
+
+* Easily extendable
+* Possible to add support for new or older Oracle versions without programming.
+* SQL template help
+* Full UNICODE support
+* Printing of any list, text or chart
+
+For installation instructions se the file INSTALL.
+
+TOra is developed by a community of Open Source developers. The original 
+(pre 1.3.15) development was done by Henrik Johnson of Quest Software, Inc.
+
+The homepage for the TOra project is http://tora.sourceforge.net. If you 
+encounter problems you can find both mailinglists and bugtracking tools 
+from this page.
+
+Oracle is copyright of Oracle Corporation.

Added: kde-extras/tora/branches/upstream/current/src/windows/resource.h
===================================================================
--- kde-extras/tora/branches/upstream/current/src/windows/resource.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/windows/resource.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Developer Studio generated include file.
+// Used by tora.rc
+//
+#define ID_MAIN                         128
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE        105
+#define _APS_NEXT_COMMAND_VALUE         40001
+#define _APS_NEXT_CONTROL_VALUE         1000
+#define _APS_NEXT_SYMED_VALUE           102
+#endif
+#endif


Property changes on: kde-extras/tora/branches/upstream/current/src/windows/resource.h
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/src/windows/tora.ico
===================================================================
(Binary files differ)


Property changes on: kde-extras/tora/branches/upstream/current/src/windows/tora.ico
___________________________________________________________________
Name: svn:executable
   + 
Name: svn:mime-type
   + application/octet-stream

Added: kde-extras/tora/branches/upstream/current/src/windows/tora.rc
===================================================================
--- kde-extras/tora/branches/upstream/current/src/windows/tora.rc	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/src/windows/tora.rc	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,103 @@
+//Microsoft Developer Studio generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS 
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+//#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// English (U.S.) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32 
+//LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+ID_MAIN ICON DISCARDABLE "tora.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO DISCARDABLE
+BEGIN
+IDD_DIALOG1, DIALOG
+BEGIN
+LEFTMARGIN, 7
+RIGHTMARGIN, 179
+TOPMARGIN, 7
+BOTTOMMARGIN, 88
+END
+END
+#endif    // APSTUDIO_INVOKED
+
+#endif    // English (U.S.) resources 
+/////////////////////////////////////////////////////////////////////////////
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Swedish resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SVE)
+#ifdef _WIN32 
+//LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED 
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE DISCARDABLE
+BEGIN
+"resource.h\0"
+END
+
+2 TEXTINCLUDE DISCARDABLE
+BEGIN
+"#include ""afxres.h""\r\n"
+"\0"
+END
+
+3 TEXTINCLUDE DISCARDABLE
+BEGIN
+"\r\n"
+"\0"
+END
+
+#endif    // APSTUDIO_INVOKED
+
+#endif    // Swedish resources 
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED 
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif    // not APSTUDIO_INVOKED
+


Property changes on: kde-extras/tora/branches/upstream/current/src/windows/tora.rc
___________________________________________________________________
Name: svn:executable
   + 

Added: kde-extras/tora/branches/upstream/current/test/Makefile.am
===================================================================
--- kde-extras/tora/branches/upstream/current/test/Makefile.am	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/test/Makefile.am	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1 @@
+SUBDIRS = configuration

Added: kde-extras/tora/branches/upstream/current/test/Makefile.in
===================================================================
--- kde-extras/tora/branches/upstream/current/test/Makefile.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/test/Makefile.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,585 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = test
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/m4/cppunit.m4 \
+	$(top_srcdir)/config/m4/oracle.m4 \
+	$(top_srcdir)/config/m4/pcre.m4 \
+	$(top_srcdir)/config/m4/qtkde.m4 \
+	$(top_srcdir)/config/m4/tora.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_FALSE = @CPPUNIT_FALSE@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CPPUNIT_TRUE = @CPPUNIT_TRUE@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MONO_FALSE = @ENABLE_MONO_FALSE@
+ENABLE_MONO_TRUE = @ENABLE_MONO_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GREP = @GREP@
+HAVE_ORACLE_FALSE = @HAVE_ORACLE_FALSE@
+HAVE_ORACLE_TRUE = @HAVE_ORACLE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISODATE = @ISODATE@
+KDECONFIG = @KDECONFIG@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBXINERAMA = @LIBXINERAMA@
+LIBZ = @LIBZ@
+LIB_DCOP = @LIB_DCOP@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KFILE = @LIB_KFILE@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIO = @LIB_KIO@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+LUPDATE = @LUPDATE@
+MAKEINFO = @MAKEINFO@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+OBJEXT = @OBJEXT@
+ORACLE_CXXFLAGS = @ORACLE_CXXFLAGS@
+ORACLE_LDFLAGS = @ORACLE_LDFLAGS@
+ORACLE_LIBS = @ORACLE_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_LIBS = @PCRE_LIBS@
+QSCINTILLA_CXXFLAGS = @QSCINTILLA_CXXFLAGS@
+QSCINTILLA_LDFLAGS = @QSCINTILLA_LDFLAGS@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TORA_LINK_OTHERS = @TORA_LINK_OTHERS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+SUBDIRS = configuration
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  test/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  test/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+	clean clean-generic clean-libtool clean-recursive ctags \
+	ctags-recursive distclean distclean-generic distclean-libtool \
+	distclean-recursive distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs installdirs-am maintainer-clean \
+	maintainer-clean-generic maintainer-clean-recursive \
+	mostlyclean mostlyclean-generic mostlyclean-libtool \
+	mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
+	uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: kde-extras/tora/branches/upstream/current/test/configuration/Makefile.am
===================================================================
--- kde-extras/tora/branches/upstream/current/test/configuration/Makefile.am	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/test/configuration/Makefile.am	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,35 @@
+AM_CPPFLAGS  = -I$(top_srcdir)/ext/otl $(KDE_INCLUDES) $(QT_INCLUDES) $(LTDLINCL)
+AM_CPPFLAGS  += $(PCRE_CFLAGS) \
+	-DDEFAULT_PLUGIN_DIR=\"$(libdir)\" \
+	-DTOVERSION=\"$(PACKAGE_VERSION)\" \
+	$(ORACLE_CXXFLAGS) \
+	-I$(top_srcdir)/src \
+	$(CPPUNIT_CFLAGS) \
+	$(QSCINTILLA_CXXFLAGS)
+
+AM_LDFLAGS = $(PCRE_LIBS) \
+	$(KDE_LDFLAGS) \
+	$(X_LDFLAGS) \
+	$(QT_LDFLAGS) \
+	$(LIB_KPARTS) \
+	$(LIB_KDEPRINT) \
+	$(LIB_KDECORE) \
+	$(LIB_KDEUI) \
+	$(LIB_KIO) \
+	$(LIB_KFILE) \
+	$(LIB_DCOP) \
+	$(LIB_KHTML) \
+	-lqscintilla \
+	$(CPPUNIT_LIBS) \
+	$(LIBPTHREAD) \
+	$(ORACLE_LDFLAGS) \
+	$(QSCINTILLA_LDFLAGS)
+
+if CPPUNIT
+
+TESTS = ConfigurationTest
+check_PROGRAMS = $(TESTS)
+
+endif
+ConfigurationTest_SOURCES = toconfigurationtest.h toconfigurationtest.cpp tomaintest.cpp 
+

Added: kde-extras/tora/branches/upstream/current/test/configuration/Makefile.in
===================================================================
--- kde-extras/tora/branches/upstream/current/test/configuration/Makefile.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/test/configuration/Makefile.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,643 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+ at CPPUNIT_TRUE@check_PROGRAMS = $(am__EXEEXT_1)
+subdir = test/configuration
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/m4/cppunit.m4 \
+	$(top_srcdir)/config/m4/oracle.m4 \
+	$(top_srcdir)/config/m4/pcre.m4 \
+	$(top_srcdir)/config/m4/qtkde.m4 \
+	$(top_srcdir)/config/m4/tora.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+ at CPPUNIT_TRUE@am__EXEEXT_1 = ConfigurationTest$(EXEEXT)
+am_ConfigurationTest_OBJECTS = toconfigurationtest.$(OBJEXT) \
+	tomaintest.$(OBJEXT)
+ConfigurationTest_OBJECTS = $(am_ConfigurationTest_OBJECTS)
+ConfigurationTest_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(ConfigurationTest_SOURCES)
+DIST_SOURCES = $(ConfigurationTest_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_FALSE = @CPPUNIT_FALSE@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CPPUNIT_TRUE = @CPPUNIT_TRUE@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MONO_FALSE = @ENABLE_MONO_FALSE@
+ENABLE_MONO_TRUE = @ENABLE_MONO_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GREP = @GREP@
+HAVE_ORACLE_FALSE = @HAVE_ORACLE_FALSE@
+HAVE_ORACLE_TRUE = @HAVE_ORACLE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISODATE = @ISODATE@
+KDECONFIG = @KDECONFIG@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBXINERAMA = @LIBXINERAMA@
+LIBZ = @LIBZ@
+LIB_DCOP = @LIB_DCOP@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KFILE = @LIB_KFILE@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIO = @LIB_KIO@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+LUPDATE = @LUPDATE@
+MAKEINFO = @MAKEINFO@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+OBJEXT = @OBJEXT@
+ORACLE_CXXFLAGS = @ORACLE_CXXFLAGS@
+ORACLE_LDFLAGS = @ORACLE_LDFLAGS@
+ORACLE_LIBS = @ORACLE_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_LIBS = @PCRE_LIBS@
+QSCINTILLA_CXXFLAGS = @QSCINTILLA_CXXFLAGS@
+QSCINTILLA_LDFLAGS = @QSCINTILLA_LDFLAGS@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TORA_LINK_OTHERS = @TORA_LINK_OTHERS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+AM_CPPFLAGS = -I$(top_srcdir)/ext/otl $(KDE_INCLUDES) $(QT_INCLUDES) \
+	$(LTDLINCL) $(PCRE_CFLAGS) -DDEFAULT_PLUGIN_DIR=\"$(libdir)\" \
+	-DTOVERSION=\"$(PACKAGE_VERSION)\" $(ORACLE_CXXFLAGS) \
+	-I$(top_srcdir)/src $(CPPUNIT_CFLAGS) $(QSCINTILLA_CXXFLAGS)
+AM_LDFLAGS = $(PCRE_LIBS) \
+	$(KDE_LDFLAGS) \
+	$(X_LDFLAGS) \
+	$(QT_LDFLAGS) \
+	$(LIB_KPARTS) \
+	$(LIB_KDEPRINT) \
+	$(LIB_KDECORE) \
+	$(LIB_KDEUI) \
+	$(LIB_KIO) \
+	$(LIB_KFILE) \
+	$(LIB_DCOP) \
+	$(LIB_KHTML) \
+	-lqscintilla \
+	$(CPPUNIT_LIBS) \
+	$(LIBPTHREAD) \
+	$(ORACLE_LDFLAGS) \
+	$(QSCINTILLA_LDFLAGS)
+
+ at CPPUNIT_TRUE@TESTS = ConfigurationTest
+ConfigurationTest_SOURCES = toconfigurationtest.h toconfigurationtest.cpp tomaintest.cpp 
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  test/configuration/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  test/configuration/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+clean-checkPROGRAMS:
+	@list='$(check_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+ConfigurationTest$(EXEEXT): $(ConfigurationTest_OBJECTS) $(ConfigurationTest_DEPENDENCIES) 
+	@rm -f ConfigurationTest$(EXEEXT)
+	$(CXXLINK) $(ConfigurationTest_LDFLAGS) $(ConfigurationTest_OBJECTS) $(ConfigurationTest_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/toconfigurationtest.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/tomaintest.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+	@failed=0; all=0; xfail=0; xpass=0; skip=0; \
+	srcdir=$(srcdir); export srcdir; \
+	list='$(TESTS)'; \
+	if test -n "$$list"; then \
+	  for tst in $$list; do \
+	    if test -f ./$$tst; then dir=./; \
+	    elif test -f $$tst; then dir=; \
+	    else dir="$(srcdir)/"; fi; \
+	    if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *" $$tst "*) \
+		xpass=`expr $$xpass + 1`; \
+		failed=`expr $$failed + 1`; \
+		echo "XPASS: $$tst"; \
+	      ;; \
+	      *) \
+		echo "PASS: $$tst"; \
+	      ;; \
+	      esac; \
+	    elif test $$? -ne 77; then \
+	      all=`expr $$all + 1`; \
+	      case " $(XFAIL_TESTS) " in \
+	      *" $$tst "*) \
+		xfail=`expr $$xfail + 1`; \
+		echo "XFAIL: $$tst"; \
+	      ;; \
+	      *) \
+		failed=`expr $$failed + 1`; \
+		echo "FAIL: $$tst"; \
+	      ;; \
+	      esac; \
+	    else \
+	      skip=`expr $$skip + 1`; \
+	      echo "SKIP: $$tst"; \
+	    fi; \
+	  done; \
+	  if test "$$failed" -eq 0; then \
+	    if test "$$xfail" -eq 0; then \
+	      banner="All $$all tests passed"; \
+	    else \
+	      banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+	    fi; \
+	  else \
+	    if test "$$xpass" -eq 0; then \
+	      banner="$$failed of $$all tests failed"; \
+	    else \
+	      banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+	    fi; \
+	  fi; \
+	  dashes="$$banner"; \
+	  skipped=""; \
+	  if test "$$skip" -ne 0; then \
+	    skipped="($$skip tests were not run)"; \
+	    test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$skipped"; \
+	  fi; \
+	  report=""; \
+	  if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+	    report="Please report to $(PACKAGE_BUGREPORT)"; \
+	    test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+	      dashes="$$report"; \
+	  fi; \
+	  dashes=`echo "$$dashes" | sed s/./=/g`; \
+	  echo "$$dashes"; \
+	  echo "$$banner"; \
+	  test -z "$$skipped" || echo "$$skipped"; \
+	  test -z "$$report" || echo "$$report"; \
+	  echo "$$dashes"; \
+	  test "$$failed" -eq 0; \
+	else :; fi
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS)
+	$(MAKE) $(AM_MAKEFLAGS) check-TESTS
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-checkPROGRAMS clean-generic clean-libtool \
+	mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+	clean-checkPROGRAMS clean-generic clean-libtool ctags \
+	distclean distclean-compile distclean-generic \
+	distclean-libtool distclean-tags distdir dvi dvi-am html \
+	html-am info info-am install install-am install-data \
+	install-data-am install-exec install-exec-am install-info \
+	install-info-am install-man install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-compile \
+	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+	tags uninstall uninstall-am uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: kde-extras/tora/branches/upstream/current/test/configuration/toconfigurationtest.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/test/configuration/toconfigurationtest.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/test/configuration/toconfigurationtest.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,20 @@
+#include "toconfigurationtest.h"
+
+CPPUNIT_TEST_SUITE_REGISTRATION( toConfigurationTest );
+
+void toConfigurationTest::setUp()
+{
+}
+
+void toConfigurationTest::tearDown()
+{
+}
+
+toConfigurationTest::toConfigurationTest()
+{
+}
+
+void toConfigurationTest::testConfiguration()
+{
+    CPPUNIT_ASSERT( 1 == 1 );
+}

Added: kde-extras/tora/branches/upstream/current/test/configuration/toconfigurationtest.h
===================================================================
--- kde-extras/tora/branches/upstream/current/test/configuration/toconfigurationtest.h	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/test/configuration/toconfigurationtest.h	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,28 @@
+#ifndef CPP_TOCONFIGURATIONTEST_H
+#define CPP_TOCONFIGURATIONTEST_H
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+class toConfigurationTest : public CPPUNIT_NS::TestFixture
+{
+  CPPUNIT_TEST_SUITE( toConfigurationTest );
+  CPPUNIT_TEST( testConfiguration );
+  CPPUNIT_TEST_SUITE_END();
+protected:
+
+public:
+  void			setUp();
+  void			tearDown();
+  toConfigurationTest();
+protected:
+  void			testConfiguration();
+private:
+};
+
+
+#endif

Added: kde-extras/tora/branches/upstream/current/test/configuration/tomaintest.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/test/configuration/tomaintest.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/test/configuration/tomaintest.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,17 @@
+#include <cppunit/CompilerOutputter.h>
+#include <cppunit/ui/text/TestRunner.h>
+#include <cppunit/extensions/TestFactoryRegistry.h>
+#include <iostream>
+using std::cerr;
+
+int main( int argc, char** argv )
+{
+  CppUnit::TextUi::TestRunner runner; // fuer TextUi
+  runner.addTest( CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest() );
+  runner.setOutputter( new CppUnit::CompilerOutputter( &runner.result(), // fuer TextUi
+						       std::cerr ) );        // fuer TextUi 
+
+  bool wasSucessful = runner.run( );
+
+  return wasSucessful ? 0 : 1; 
+}

Added: kde-extras/tora/branches/upstream/current/utils/Makefile.am
===================================================================
--- kde-extras/tora/branches/upstream/current/utils/Makefile.am	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/utils/Makefile.am	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,4 @@
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+
+SUBDIRS = chex

Added: kde-extras/tora/branches/upstream/current/utils/Makefile.in
===================================================================
--- kde-extras/tora/branches/upstream/current/utils/Makefile.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/utils/Makefile.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,590 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = utils
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/m4/cppunit.m4 \
+	$(top_srcdir)/config/m4/oracle.m4 \
+	$(top_srcdir)/config/m4/pcre.m4 \
+	$(top_srcdir)/config/m4/qtkde.m4 \
+	$(top_srcdir)/config/m4/tora.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+	html-recursive info-recursive install-data-recursive \
+	install-exec-recursive install-info-recursive \
+	install-recursive installcheck-recursive installdirs-recursive \
+	pdf-recursive ps-recursive uninstall-info-recursive \
+	uninstall-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_FALSE = @CPPUNIT_FALSE@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CPPUNIT_TRUE = @CPPUNIT_TRUE@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MONO_FALSE = @ENABLE_MONO_FALSE@
+ENABLE_MONO_TRUE = @ENABLE_MONO_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GREP = @GREP@
+HAVE_ORACLE_FALSE = @HAVE_ORACLE_FALSE@
+HAVE_ORACLE_TRUE = @HAVE_ORACLE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISODATE = @ISODATE@
+KDECONFIG = @KDECONFIG@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBXINERAMA = @LIBXINERAMA@
+LIBZ = @LIBZ@
+LIB_DCOP = @LIB_DCOP@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KFILE = @LIB_KFILE@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIO = @LIB_KIO@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+LUPDATE = @LUPDATE@
+MAKEINFO = @MAKEINFO@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+OBJEXT = @OBJEXT@
+ORACLE_CXXFLAGS = @ORACLE_CXXFLAGS@
+ORACLE_LDFLAGS = @ORACLE_LDFLAGS@
+ORACLE_LIBS = @ORACLE_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_LIBS = @PCRE_LIBS@
+QSCINTILLA_CXXFLAGS = @QSCINTILLA_CXXFLAGS@
+QSCINTILLA_LDFLAGS = @QSCINTILLA_LDFLAGS@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TORA_LINK_OTHERS = @TORA_LINK_OTHERS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+SUBDIRS = chex
+all: all-recursive
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  utils/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  utils/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+# This directory's subdirectories are mostly independent; you can cd
+# into them and run `make' without going through this Makefile.
+# To change the values of `make' variables: instead of editing Makefiles,
+# (1) if the variable is set in `config.status', edit `config.status'
+#     (which will cause the Makefiles to be regenerated when you run `make');
+# (2) otherwise, pass the desired values on the `make' command line.
+$(RECURSIVE_TARGETS):
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	target=`echo $@ | sed s/-recursive//`; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    dot_seen=yes; \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done; \
+	if test "$$dot_seen" = "no"; then \
+	  $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+	fi; test -z "$$fail"
+
+mostlyclean-recursive clean-recursive distclean-recursive \
+maintainer-clean-recursive:
+	@failcom='exit 1'; \
+	for f in x $$MAKEFLAGS; do \
+	  case $$f in \
+	    *=* | --[!k]*);; \
+	    *k*) failcom='fail=yes';; \
+	  esac; \
+	done; \
+	dot_seen=no; \
+	case "$@" in \
+	  distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
+	  *) list='$(SUBDIRS)' ;; \
+	esac; \
+	rev=''; for subdir in $$list; do \
+	  if test "$$subdir" = "."; then :; else \
+	    rev="$$subdir $$rev"; \
+	  fi; \
+	done; \
+	rev="$$rev ."; \
+	target=`echo $@ | sed s/-recursive//`; \
+	for subdir in $$rev; do \
+	  echo "Making $$target in $$subdir"; \
+	  if test "$$subdir" = "."; then \
+	    local_target="$$target-am"; \
+	  else \
+	    local_target="$$target"; \
+	  fi; \
+	  (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+	  || eval $$failcom; \
+	done && test -z "$$fail"
+tags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+	done
+ctags-recursive:
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+	done
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
+	  include_option=--etags-include; \
+	  empty_fix=.; \
+	else \
+	  include_option=--include; \
+	  empty_fix=; \
+	fi; \
+	list='$(SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test ! -f $$subdir/TAGS || \
+	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
+	  fi; \
+	done; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+	list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+	  if test "$$subdir" = .; then :; else \
+	    test -d "$(distdir)/$$subdir" \
+	    || $(mkdir_p) "$(distdir)/$$subdir" \
+	    || exit 1; \
+	    distdir=`$(am__cd) $(distdir) && pwd`; \
+	    top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+	    (cd $$subdir && \
+	      $(MAKE) $(AM_MAKEFLAGS) \
+	        top_distdir="$$top_distdir" \
+	        distdir="$$distdir/$$subdir" \
+	        distdir) \
+	      || exit 1; \
+	  fi; \
+	done
+	$(MAKE) $(AM_MAKEFLAGS) \
+	  top_distdir="$(top_distdir)" distdir="$(distdir)" \
+	  dist-hook
+check-am: all-am
+check: check-recursive
+all-am: Makefile
+installdirs: installdirs-recursive
+installdirs-am:
+install: install-recursive
+install-exec: install-exec-recursive
+install-data: install-data-recursive
+uninstall: uninstall-recursive
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-recursive
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-recursive
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-recursive
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool \
+	distclean-tags
+
+dvi: dvi-recursive
+
+dvi-am:
+
+html: html-recursive
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-recursive
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-recursive
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-recursive
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-recursive
+
+pdf-am:
+
+ps: ps-recursive
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+uninstall-info: uninstall-info-recursive
+
+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
+	clean clean-generic clean-libtool clean-recursive ctags \
+	ctags-recursive dist-hook distclean distclean-generic \
+	distclean-libtool distclean-recursive distclean-tags distdir \
+	dvi dvi-am html html-am info info-am install install-am \
+	install-data install-data-am install-exec install-exec-am \
+	install-info install-info-am install-man install-strip \
+	installcheck installcheck-am installdirs installdirs-am \
+	maintainer-clean maintainer-clean-generic \
+	maintainer-clean-recursive mostlyclean mostlyclean-generic \
+	mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+	tags tags-recursive uninstall uninstall-am uninstall-info-am
+
+dist-hook:
+	rm -rf `find $(distdir) -name .svn`
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: kde-extras/tora/branches/upstream/current/utils/chex/Makefile.am
===================================================================
--- kde-extras/tora/branches/upstream/current/utils/chex/Makefile.am	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/utils/chex/Makefile.am	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,2 @@
+bin_PROGRAMS = chex
+chex_SOURCES = chex.cpp

Added: kde-extras/tora/branches/upstream/current/utils/chex/Makefile.in
===================================================================
--- kde-extras/tora/branches/upstream/current/utils/chex/Makefile.in	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/utils/chex/Makefile.in	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,561 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+ at SET_MAKE@
+
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ../..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+bin_PROGRAMS = chex$(EXEEXT)
+subdir = utils/chex
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/config/m4/cppunit.m4 \
+	$(top_srcdir)/config/m4/oracle.m4 \
+	$(top_srcdir)/config/m4/pcre.m4 \
+	$(top_srcdir)/config/m4/qtkde.m4 \
+	$(top_srcdir)/config/m4/tora.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_chex_OBJECTS = chex.$(OBJEXT)
+chex_OBJECTS = $(am_chex_OBJECTS)
+chex_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp = $(SHELL) $(top_srcdir)/config/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
+	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+	$(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
+	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(chex_SOURCES)
+DIST_SOURCES = $(chex_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTSCCONFIG = @ARTSCCONFIG@
+AUTOCONF = @AUTOCONF@
+AUTODIRS = @AUTODIRS@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPPUNIT_CFLAGS = @CPPUNIT_CFLAGS@
+CPPUNIT_CONFIG = @CPPUNIT_CONFIG@
+CPPUNIT_FALSE = @CPPUNIT_FALSE@
+CPPUNIT_LIBS = @CPPUNIT_LIBS@
+CPPUNIT_TRUE = @CPPUNIT_TRUE@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DCOPIDL = @DCOPIDL@
+DCOPIDL2CPP = @DCOPIDL2CPP@
+DCOP_DEPENDENCIES = @DCOP_DEPENDENCIES@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ENABLE_MONO_FALSE = @ENABLE_MONO_FALSE@
+ENABLE_MONO_TRUE = @ENABLE_MONO_TRUE@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+FRAMEWORK_COREAUDIO = @FRAMEWORK_COREAUDIO@
+GREP = @GREP@
+HAVE_ORACLE_FALSE = @HAVE_ORACLE_FALSE@
+HAVE_ORACLE_TRUE = @HAVE_ORACLE_TRUE@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+ISODATE = @ISODATE@
+KDECONFIG = @KDECONFIG@
+KDE_INCLUDES = @KDE_INCLUDES@
+KDE_LDFLAGS = @KDE_LDFLAGS@
+KDE_MT_LDFLAGS = @KDE_MT_LDFLAGS@
+KDE_MT_LIBS = @KDE_MT_LIBS@
+KDE_XSL_STYLESHEET = @KDE_XSL_STYLESHEET@
+LDFLAGS = @LDFLAGS@
+LIBCOMPAT = @LIBCOMPAT@
+LIBCRYPT = @LIBCRYPT@
+LIBDL = @LIBDL@
+LIBJPEG = @LIBJPEG@
+LIBOBJS = @LIBOBJS@
+LIBPNG = @LIBPNG@
+LIBPTHREAD = @LIBPTHREAD@
+LIBRESOLV = @LIBRESOLV@
+LIBS = @LIBS@
+LIBSM = @LIBSM@
+LIBSOCKET = @LIBSOCKET@
+LIBTOOL = @LIBTOOL@
+LIBTOOL_DEPS = @LIBTOOL_DEPS@
+LIBUCB = @LIBUCB@
+LIBUTIL = @LIBUTIL@
+LIBXINERAMA = @LIBXINERAMA@
+LIBZ = @LIBZ@
+LIB_DCOP = @LIB_DCOP@
+LIB_KAB = @LIB_KAB@
+LIB_KABC = @LIB_KABC@
+LIB_KDECORE = @LIB_KDECORE@
+LIB_KDEPRINT = @LIB_KDEPRINT@
+LIB_KDEUI = @LIB_KDEUI@
+LIB_KFILE = @LIB_KFILE@
+LIB_KHTML = @LIB_KHTML@
+LIB_KIO = @LIB_KIO@
+LIB_KPARTS = @LIB_KPARTS@
+LIB_KSPELL = @LIB_KSPELL@
+LIB_KSYCOCA = @LIB_KSYCOCA@
+LIB_POLL = @LIB_POLL@
+LIB_QPE = @LIB_QPE@
+LIB_QT = @LIB_QT@
+LIB_SMB = @LIB_SMB@
+LIB_X11 = @LIB_X11@
+LIB_XEXT = @LIB_XEXT@
+LN_S = @LN_S@
+LRELEASE = @LRELEASE@
+LTLIBOBJS = @LTLIBOBJS@
+LUPDATE = @LUPDATE@
+MAKEINFO = @MAKEINFO@
+MCOPIDL = @MCOPIDL@
+MEINPROC = @MEINPROC@
+MOC = @MOC@
+OBJEXT = @OBJEXT@
+ORACLE_CXXFLAGS = @ORACLE_CXXFLAGS@
+ORACLE_LDFLAGS = @ORACLE_LDFLAGS@
+ORACLE_LIBS = @ORACLE_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PCRE_CFLAGS = @PCRE_CFLAGS@
+PCRE_LIBS = @PCRE_LIBS@
+QSCINTILLA_CXXFLAGS = @QSCINTILLA_CXXFLAGS@
+QSCINTILLA_LDFLAGS = @QSCINTILLA_LDFLAGS@
+QTE_NORTTI = @QTE_NORTTI@
+QT_INCLUDES = @QT_INCLUDES@
+QT_LDFLAGS = @QT_LDFLAGS@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+TORA_LINK_OTHERS = @TORA_LINK_OTHERS@
+UIC = @UIC@
+UIC_TR = @UIC_TR@
+USER_INCLUDES = @USER_INCLUDES@
+USER_LDFLAGS = @USER_LDFLAGS@
+USE_THREADS = @USE_THREADS@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_INCLUDES = @X_INCLUDES@
+X_LDFLAGS = @X_LDFLAGS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+all_includes = @all_includes@
+all_libraries = @all_libraries@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+kde_appsdir = @kde_appsdir@
+kde_bindir = @kde_bindir@
+kde_confdir = @kde_confdir@
+kde_datadir = @kde_datadir@
+kde_htmldir = @kde_htmldir@
+kde_icondir = @kde_icondir@
+kde_includes = @kde_includes@
+kde_libraries = @kde_libraries@
+kde_libs_htmldir = @kde_libs_htmldir@
+kde_libs_prefix = @kde_libs_prefix@
+kde_locale = @kde_locale@
+kde_mimedir = @kde_mimedir@
+kde_moduledir = @kde_moduledir@
+kde_qtver = @kde_qtver@
+kde_servicesdir = @kde_servicesdir@
+kde_servicetypesdir = @kde_servicetypesdir@
+kde_sounddir = @kde_sounddir@
+kde_styledir = @kde_styledir@
+kde_templatesdir = @kde_templatesdir@
+kde_wallpaperdir = @kde_wallpaperdir@
+kde_widgetdir = @kde_widgetdir@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+qt_includes = @qt_includes@
+qt_libraries = @qt_libraries@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+x_includes = @x_includes@
+x_libraries = @x_libraries@
+chex_SOURCES = chex.cpp
+all: all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .lo .o .obj
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  utils/chex/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  utils/chex/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure:  $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+install-binPROGRAMS: $(bin_PROGRAMS)
+	@$(NORMAL_INSTALL)
+	test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  if test -f $$p \
+	     || test -f $$p1 \
+	  ; then \
+	    f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+	   echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+	   $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+	  else :; fi; \
+	done
+
+uninstall-binPROGRAMS:
+	@$(NORMAL_UNINSTALL)
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+	  echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(bindir)/$$f"; \
+	done
+
+clean-binPROGRAMS:
+	@list='$(bin_PROGRAMS)'; for p in $$list; do \
+	  f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+	  echo " rm -f $$p $$f"; \
+	  rm -f $$p $$f ; \
+	done
+chex$(EXEEXT): $(chex_OBJECTS) $(chex_DEPENDENCIES) 
+	@rm -f chex$(EXEEXT)
+	$(CXXLINK) $(chex_LDFLAGS) $(chex_OBJECTS) $(chex_LDADD) $(LIBS)
+
+mostlyclean-compile:
+	-rm -f *.$(OBJEXT)
+
+distclean-compile:
+	-rm -f *.tab.c
+
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/chex.Po at am__quote@
+
+.cpp.o:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ at am__fastdepCXX_TRUE@	if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+.cpp.lo:
+ at am__fastdepCXX_TRUE@	if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+ at am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LTCXXCOMPILE) -c -o $@ $<
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	mkid -fID $$unique
+tags: TAGS
+
+TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+	  test -n "$$unique" || unique=$$empty_fix; \
+	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+	    $$tags $$unique; \
+	fi
+ctags: CTAGS
+CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
+		$(TAGS_FILES) $(LISP)
+	tags=; \
+	here=`pwd`; \
+	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
+	unique=`for i in $$list; do \
+	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+	  done | \
+	  $(AWK) '    { files[$$0] = 1; } \
+	       END { for (i in files) print i; }'`; \
+	test -z "$(CTAGS_ARGS)$$tags$$unique" \
+	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+	     $$tags $$unique
+
+GTAGS:
+	here=`$(am__cd) $(top_builddir) && pwd` \
+	  && cd $(top_srcdir) \
+	  && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+	for dir in "$(DESTDIR)$(bindir)"; do \
+	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+	distclean-libtool distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -rf ./$(DEPDIR)
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+	mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS uninstall-info-am
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+	clean-generic clean-libtool ctags distclean distclean-compile \
+	distclean-generic distclean-libtool distclean-tags distdir dvi \
+	dvi-am html html-am info info-am install install-am \
+	install-binPROGRAMS install-data install-data-am install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-strip installcheck installcheck-am installdirs \
+	maintainer-clean maintainer-clean-generic mostlyclean \
+	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+	pdf pdf-am ps ps-am tags uninstall uninstall-am \
+	uninstall-binPROGRAMS uninstall-info-am
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:

Added: kde-extras/tora/branches/upstream/current/utils/chex/chex.cpp
===================================================================
--- kde-extras/tora/branches/upstream/current/utils/chex/chex.cpp	                        (rev 0)
+++ kde-extras/tora/branches/upstream/current/utils/chex/chex.cpp	2007-11-22 09:20:06 UTC (rev 8032)
@@ -0,0 +1,44 @@
+#include <string>
+#include <iostream>
+#include <sstream>
+#include <fstream>
+#include <iomanip>
+
+std::string global_string = "static const unsigned char tora_toad[] =\n\"";
+
+inline std::string stringify(unsigned char x)
+{
+    std::string s;
+    std::ostringstream o;
+    o << std::hex << std::setw(2) << std::setfill('0') << static_cast<unsigned short>(x);
+    s = o.str();
+   return s;
+ }
+
+std::string readBinaryFile(const std::string& filename)
+{
+    std::ifstream input(filename.c_str(), std::ios::in | std::ios::binary);
+    char c;
+    std::string tmp, rc;
+
+    while (input.get(c)) {
+	tmp = "\\x";
+	tmp += stringify(static_cast<unsigned char>(c));
+	rc.append(tmp);
+    }
+    return rc;
+}
+
+
+int main(int argc, char** argv)
+{
+    std::string s = readBinaryFile(argv[1]);
+    
+    for (size_t i=0; i < s.length(); ++i){
+	if ( ( i>0 ) && ( i%160 == 0 ) )
+	    global_string.append("\"\n\"");
+	global_string.push_back(s[i]);
+    }
+    global_string.append("\"\n;\n");
+    std::cout << global_string;
+}




More information about the pkg-kde-commits mailing list